diff --git a/docs/swapi/figure_src/build_validation_table.py b/docs/swapi/figure_src/build_validation_table.py new file mode 100644 index 000000000..5f7597045 --- /dev/null +++ b/docs/swapi/figure_src/build_validation_table.py @@ -0,0 +1,170 @@ +#!/usr/bin/env python3 +"""Generate the integrator-validation table in `docs/swapi/solar-wind-moments.md`.""" + +import sys +import types +from pathlib import Path + +sys.path.insert(0, str(Path(__file__).resolve().parents[3])) + +import numpy as np +import pandas as pd + +from imap_l3_processing.constants import ( + EV_TO_KELVIN, + PROTON_MASS_KG, + PROTON_MASS_PER_CHARGE_M_P_PER_E, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.forward_model import ( + calculate_integral, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.params import SolarWindParams + +from figure_utils import ( + REPO_ROOT, + bulk_velocity_rtn_from_swapi_angles, + load_swapi_response, + peak_esa_voltage_for_proton_bulk_speed, + run_parallel_map, +) + +_worker_state: types.SimpleNamespace | None = None + +_REFERENCE_INTEGRALS_PATH = ( + REPO_ROOT / "tests" / "test_data" / "swapi" / "reference_integrals.csv" +) +_DOC_PATH = REPO_ROOT / "docs" / "swapi" / "solar-wind-moments.md" +_TABLE_BEGIN = "" + +_BANDS = [ + (r"$\lt 0.1$", 0.0, 0.1), + ("$0.1$ – $1$", 0.1, 1.0), + ("$1$ – $10$", 1.0, 10.0), + ("$10$ – $10^2$", 10.0, 100.0), + ("$10^2$ – $10^3$", 100.0, 1000.0), + ("$10^3$ – $10^4$", 1000.0, 1e4), + ("$10^4$ – $10^5$", 1e4, 1e5), + ("$\\geq 10^5$", 1e5, np.inf), +] + + +def _build_table(rel: np.ndarray, refs_v: np.ndarray) -> str: + lines = [ + "| Reference (Hz) | N | Median | 95% | 99% | Max |", + "|-----------------|-------|---------|---------|---------|---------|", + ] + for label, lo, hi in _BANDS: + mask = (refs_v >= lo) & (refs_v < hi) + n = int(mask.sum()) + if n == 0: + lines.append( + f"| {label:<15s} | {n:>5d} | — | — | — | — |" + ) + continue + band = rel[mask] + med = np.median(band) * 100 + p95 = np.percentile(band, 95) * 100 + p99 = np.percentile(band, 99) * 100 + mx = band.max() * 100 + lines.append( + f"| {label:<15s} | {n:>5d} | {med:>6.2f}% | {p95:>6.2f}% | {p99:>6.2f}% | {mx:>6.2f}% |" + ) + return "\n".join(lines) + + +def _update_doc(table_md: str) -> None: + text = _DOC_PATH.read_text() + begin_idx = text.find(_TABLE_BEGIN) + end_idx = text.find(_TABLE_END) + if begin_idx < 0 or end_idx < 0 or end_idx <= begin_idx: + raise RuntimeError( + f"Could not find '{_TABLE_BEGIN}' / '{_TABLE_END}' markers in {_DOC_PATH}" + ) + begin_line_end = text.find("\n", begin_idx) + 1 + new_text = text[:begin_line_end] + table_md + "\n" + text[end_idx:] + _DOC_PATH.write_text(new_text) + + +def _initialize_worker_state( + rows: list[tuple[float, float, float, float, float]], + peak_voltages: np.ndarray, + swapi_response, +) -> None: + global _worker_state + _worker_state = types.SimpleNamespace( + rows=rows, + peak_voltages=peak_voltages, + swapi_response=swapi_response, + rotation_matrix=np.eye(3), + ) + + +def _process_one(i: int) -> float: + state = _worker_state + bulk_speed, azimuth, elevation, density, temperature_ev = state.rows[i] + sw = SolarWindParams( + density=density, + bulk_velocity_rtn=bulk_velocity_rtn_from_swapi_angles( + bulk_speed, azimuth, elevation + ), + temperature=temperature_ev * EV_TO_KELVIN, + mass=PROTON_MASS_KG, + ) + response_grid = state.swapi_response.get_response_grid( + state.peak_voltages[i], PROTON_MASS_PER_CHARGE_M_P_PER_E + ) + return calculate_integral(sw, response_grid, state.rotation_matrix)[0] + + +def main(): + print("Loading calibration data...") + swapi_response = load_swapi_response() + df = pd.read_csv(_REFERENCE_INTEGRALS_PATH) + references = df["integral"].to_numpy() + rows = [ + ( + float(row.bulk_speed), + float(row.bulk_azimuth), + float(row.bulk_elevation), + float(row.density), + float(row.temperature_ev), + ) + for row in df.itertuples(index=False) + ] + + print(f"Warming passband cache for {len(df)} rows...") + peak_voltages = np.array( + [peak_esa_voltage_for_proton_bulk_speed(r[0]) for r in rows] + ) + swapi_response.warm_cache(peak_voltages) + for unique_voltage in np.unique(peak_voltages): + swapi_response.get_response_grid( + float(unique_voltage), PROTON_MASS_PER_CHARGE_M_P_PER_E + ) + + _initialize_worker_state(rows, peak_voltages, swapi_response) + optimized = np.array( + run_parallel_map(_process_one, len(df), desc="integrals", chunksize=64) + ) + + valid = references > 0 + refs_v = references[valid] + rel = np.abs(optimized[valid] / refs_v - 1.0) + # Cases where both integrators round to ~0 give meaningless ratios; clamp. + rel = np.minimum(rel, 1.0) + + print(f"\nMax |ratio - 1|: {rel.max():.2%}") + print(f"Median |ratio - 1|: {np.median(rel):.2%}") + print(f"95th pct: {np.percentile(rel, 95):.2%}") + print(f"99th pct: {np.percentile(rel, 99):.2%}") + + table_md = _build_table(rel, refs_v) + print() + print(table_md) + _update_doc(table_md) + print(f"\nUpdated {_DOC_PATH.relative_to(REPO_ROOT)}") + + +if __name__ == "__main__": + main() diff --git a/docs/swapi/figure_src/figure_utils.py b/docs/swapi/figure_src/figure_utils.py new file mode 100644 index 000000000..35202e7eb --- /dev/null +++ b/docs/swapi/figure_src/figure_utils.py @@ -0,0 +1,163 @@ +"""Shared helpers for the SWAPI documentation figures.""" + +import multiprocessing +import os +import sys +import time +from pathlib import Path +from typing import Callable, TypeVar + +import numpy as np + +REPO_ROOT = Path(__file__).resolve().parents[3] +sys.path.insert(0, str(REPO_ROOT)) + +from imap_l3_processing.constants import ( + METERS_PER_KILOMETER, + PROTON_CHARGE_COULOMBS, + PROTON_MASS_KG, +) +from imap_l3_processing.swapi.constants import SWAPI_K_FACTOR +from imap_l3_processing.swapi.response.swapi_response import SwapiResponse + +FIGURES_DIR = REPO_ROOT / "docs" / "swapi" / "figures" + +_INSTRUMENT_DATA_DIR = REPO_ROOT / "instrument_team_data" / "swapi" + + +def load_swapi_response() -> SwapiResponse: + return SwapiResponse.from_files( + _INSTRUMENT_DATA_DIR / "imap_swapi_azimuthal-transmission_20260425_v001.csv", + _INSTRUMENT_DATA_DIR / "imap_swapi_central-effective-area_20260425_v001.csv", + _INSTRUMENT_DATA_DIR / "imap_swapi_passband-fit-coefficients_20260425_v001.csv", + ) + + +SWEEP_DURATION_S = 12.0 +BINS_PER_SWEEP = 72 +BIN_PERIOD_S = SWEEP_DURATION_S / BINS_PER_SWEEP +SPIN_PERIOD_S = 15.13 + +COARSE_BIN_INDICES_IN_SWEEP = np.arange(1, 63) + +COARSE_SWEEP_VOLTAGES_MEAN_V = np.array( + [ + 9895.52, 9088.69, 8348.80, 7667.55, 7042.16, 6469.31, 5941.77, 5457.31, + 5013.22, 4603.65, 4230.77, 3886.92, 3569.16, 3278.72, 3011.13, 2766.25, + 2539.54, 2333.83, 2144.24, 1969.31, 1808.74, 1660.86, 1525.75, 1401.82, + 1287.58, 1182.24, 1085.15, 995.55, 914.31, 839.94, 771.70, 709.46, + 651.59, 598.47, 549.91, 505.12, 463.89, 425.92, 391.18, 359.35, + 329.94, 303.02, 278.25, 255.55, 234.77, 215.61, 197.95, 181.82, + 167.04, 153.46, 140.91, 129.50, 118.91, 109.20, 100.30, 92.11, + 84.61, 77.73, 71.40, 65.59, 60.23, 55.34, + ] +) + +# SWAPI→RTN at the first-sweep midpoint of a real SPICE attitude near 2026-01-01; +# spin axis (+Y column) sits ~4° off −R̂_RTN. Per-bin matrices are built by +# spinning this about its own +Y at the nominal IMAP spin period. +ANCHOR_ROTATION_SWAPI_TO_RTN = np.array( + [ + [+0.0705, +0.9157, +0.3955], + [-0.9968, +0.0792, -0.0057], + [-0.0365, -0.3939, +0.9184], + ] +).T +ANCHOR_TIME_S = 0.5 * SWEEP_DURATION_S +# Sign reproduces independent SPICE-derived midpoints across a 5-sweep cycle. +SPIN_OMEGA_RAD_S = -2.0 * np.pi / SPIN_PERIOD_S + + +def compute_per_bin_rotation_matrices( + n_sweeps: int, + bin_indices_in_sweep: np.ndarray = COARSE_BIN_INDICES_IN_SWEEP, +) -> np.ndarray: + """Synthetic per-bin SWAPI→RTN matrices: anchor spun about its spin axis. + + Returns shape (n_sweeps · n_bins, 3, 3) in sweep-major, bin-minor order. + """ + sweep_index = np.repeat(np.arange(n_sweeps), len(bin_indices_in_sweep)) + bin_index = np.tile(bin_indices_in_sweep, n_sweeps) + sample_times_s = sweep_index * SWEEP_DURATION_S + bin_index * BIN_PERIOD_S + + spin_axis = ANCHOR_ROTATION_SWAPI_TO_RTN[:, 1] / np.linalg.norm( + ANCHOR_ROTATION_SWAPI_TO_RTN[:, 1] + ) + delta_phi = SPIN_OMEGA_RAD_S * (sample_times_s - ANCHOR_TIME_S) + + ax, ay, az = spin_axis + K = np.array([[0, -az, ay], [az, 0, -ax], [-ay, ax, 0]]) + sin_dp = np.sin(delta_phi)[:, None, None] + one_minus_cos = (1.0 - np.cos(delta_phi))[:, None, None] + rot = np.eye(3) + sin_dp * K + one_minus_cos * (K @ K) + return rot @ ANCHOR_ROTATION_SWAPI_TO_RTN + + +def peak_esa_voltage_for_proton_bulk_speed(bulk_speed_km_s: float) -> float: + return float( + PROTON_MASS_KG + * (bulk_speed_km_s * METERS_PER_KILOMETER) ** 2 + / (2 * SWAPI_K_FACTOR * PROTON_CHARGE_COULOMBS) + ) + + +_T = TypeVar("_T") + + +def run_parallel_map( + process_one: Callable[[int], _T], + n_items: int, + *, + desc: str, + chunksize: int = 10, +) -> list[_T]: + """Run `process_one(i)` for i in [0, n_items) across forked workers. + + Module-level `_worker_state` is inherited by children via fork — callers + should populate it in the parent before invoking this helper. + """ + if multiprocessing.get_start_method(allow_none=True) != "fork": + multiprocessing.set_start_method("fork", force=True) + n_workers = os.cpu_count() or 1 + print(f"Running {n_items} {desc} across {n_workers} processes...") + start = time.perf_counter() + results: list[_T | None] = [None] * n_items + report_every = max(1, n_items // 20) + with multiprocessing.get_context("fork").Pool(processes=n_workers) as pool: + completed = 0 + for index, value in pool.imap_unordered( + _IndexedCall(process_one), range(n_items), chunksize=chunksize + ): + results[index] = value + completed += 1 + if completed % report_every == 0 or completed == n_items: + elapsed = time.perf_counter() - start + print(f" {desc}: {completed}/{n_items} ({elapsed:.1f}s)") + print(f" {desc} done in {time.perf_counter() - start:.1f}s.") + return results # type: ignore[return-value] + + +class _IndexedCall: + """Picklable wrapper that returns (index, func(index)) for ordered reassembly.""" + + def __init__(self, func: Callable[[int], _T]): + self._func = func + + def __call__(self, index: int): + return index, self._func(index) + + +def bulk_velocity_rtn_from_swapi_angles( + bulk_speed_km_s: float, azimuth_deg: float, elevation_deg: float +) -> np.ndarray: + """Inverse of `bulk_angles_in_instrument_frame` for R = identity (RTN ≡ SWAPI).""" + az = np.radians(azimuth_deg) + el = np.radians(elevation_deg) + horizontal = bulk_speed_km_s * np.cos(el) + return np.array( + [ + -horizontal * np.sin(az), + -horizontal * np.cos(az), + -bulk_speed_km_s * np.sin(el), + ] + ) diff --git a/docs/swapi/figure_src/plot_alpha_peak_finding.py b/docs/swapi/figure_src/plot_alpha_peak_finding.py new file mode 100644 index 000000000..1a8863237 --- /dev/null +++ b/docs/swapi/figure_src/plot_alpha_peak_finding.py @@ -0,0 +1,350 @@ +#!/usr/bin/env python3 +""" +Plot alpha peak-finding walkthrough on real L2 SWAPI spectra. + +Three-panel figure (one per real-data fixture: strong alpha, hot plasma, +cold plasma) illustrating the `get_alpha_peak_indices` peak-finder and the +subsequent Gaussian fit on the count-rate residual: + + Panel top: 5-sweep-averaged observed count rate vs ESA voltage, overlaid + with the frozen proton model and the detected alpha peak region shaded. + Panel bottom: residual (observed − proton model) at the peak bins, with + the fitted Gaussian. + +Spectra are extracted from imap_swapi_l2_sci_20260101_v005.cdf; Stage 1 +proton fits and rotation matrices are pre-computed in the test fixture at +tests/test_data/swapi/alpha_fit_test_spectra.npz. + +Output: docs/swapi/figures/alpha_peak_finding.svg +Usage: python docs/swapi/figure_src/plot_alpha_peak_finding.py +""" + +import sys +from pathlib import Path + +sys.path.insert(0, str(Path(__file__).resolve().parents[3])) + +import matplotlib + +matplotlib.use("Agg") +import matplotlib.pyplot as plt +import numpy as np +import scipy.optimize + +from imap_l3_processing.constants import ( + ALPHA_MASS_PER_CHARGE_M_P_PER_E, + ALPHA_PARTICLE_MASS_KG, + PROTON_MASS_KG, + PROTON_MASS_PER_CHARGE_M_P_PER_E, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.alpha.calculate_alpha_solar_wind_moments import ( + fit_solar_wind_alpha_moments, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.fit_context import ( + build_solar_wind_fit_context, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.forward_model import ( + model_solar_wind_ideal_coincidence_rates, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.proton.fit_model import ( + fit_solar_wind_proton_model, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.params import SolarWindParams +from imap_l3_processing.swapi.response.deadtime import deadtime_factor +from imap_l3_processing.swapi.l3a.science.solar_wind.alpha.utils import ( + esa_voltage_to_alpha_speed, + get_alpha_peak_indices, +) +from imap_l3_processing.swapi.constants import SWAPI_K_FACTOR +from figure_utils import ( + COARSE_BIN_INDICES_IN_SWEEP, + FIGURES_DIR, + REPO_ROOT, + compute_per_bin_rotation_matrices, + load_swapi_response, +) + +_FIXTURE_PATH = ( + REPO_ROOT / "tests" / "test_data" / "swapi" / "alpha_fit_test_spectra.npz" +) + +_N_SWEEPS = 5 +_N_BINS = 62 + +_CASES = [ + ("strong_alpha", "Strong alpha (chunk 384)"), + ("hot_plasma", "Hot plasma (chunk 250)"), + ("cold_plasma", "Cold plasma (chunk 550)"), +] + + +def _load_fixture(data, name): + prefix = f"{name}__" + return {k[len(prefix) :]: data[k] for k in data.files if k.startswith(prefix)} + + +def _plot_case(axes_top, axes_bot, swapi_response, fixture, title): + count_rates = fixture["count_rates"] + voltage_per_sweep = fixture["voltage_per_sweep"] + esa_flat = fixture["esa_flat"] + proton_eff_scale = float(fixture["proton_eff_scale"]) + alpha_eff_scale = float(fixture["alpha_eff_scale"]) + magnetic_field_direction = fixture["b_hat_rtn"] + cr_flat = fixture["cr_flat"] + + swapi_response.warm_cache(esa_flat) + + # Rebuild geometry to match the current forward model — the stored fixture + # rotation matrices use an old convention. + rotation_matrices = compute_per_bin_rotation_matrices( + _N_SWEEPS, COARSE_BIN_INDICES_IN_SWEEP + ) + + proton_ctx = build_solar_wind_fit_context( + count_rate=cr_flat, + esa_voltage=esa_flat, + swapi_response=swapi_response, + central_effective_area_scale=proton_eff_scale, + rotation_matrices=rotation_matrices, + mass_kg=PROTON_MASS_KG, + mass_per_charge_m_p_per_e=PROTON_MASS_PER_CHARGE_M_P_PER_E, + ) + proton_moments_obj = fit_solar_wind_proton_model(proton_ctx) + proton_velocity_rtn = proton_moments_obj.bulk_velocity_rtn_nominal() + proton_sw = SolarWindParams( + density=proton_moments_obj.density.nominal_value, + bulk_velocity_rtn=proton_velocity_rtn, + temperature=proton_moments_obj.temperature.nominal_value, + mass=PROTON_MASS_KG, + ) + proton_true, _ = model_solar_wind_ideal_coincidence_rates(proton_sw, proton_ctx) + proton_true_per_sweep = proton_true.reshape(_N_SWEEPS, _N_BINS) + proton_obs_per_sweep = proton_true_per_sweep * deadtime_factor( + proton_true_per_sweep + ) + proton_bg_avg = proton_obs_per_sweep.mean(axis=0) + count_avg = count_rates.mean(axis=0) + + alpha_moments = fit_solar_wind_alpha_moments( + count_rate=cr_flat, + esa_voltage=esa_flat, + measurement_time=np.zeros(len(esa_flat)), + swapi_response=swapi_response, + proton_moments=proton_moments_obj, + magnetic_field_direction=magnetic_field_direction, + alpha_effective_area_scale=alpha_eff_scale, + proton_effective_area_scale=proton_eff_scale, + rotation_matrices=rotation_matrices, + ) + combined_fit_avg = None + alpha_contribution_avg = None + if np.isfinite(float(alpha_moments.density.nominal_value)): + alpha_ctx = build_solar_wind_fit_context( + count_rate=np.zeros_like(esa_flat), + esa_voltage=esa_flat, + swapi_response=swapi_response, + central_effective_area_scale=alpha_eff_scale, + rotation_matrices=rotation_matrices, + mass_kg=ALPHA_PARTICLE_MASS_KG, + mass_per_charge_m_p_per_e=ALPHA_MASS_PER_CHARGE_M_P_PER_E, + ) + alpha_sw = SolarWindParams( + density=alpha_moments.density.nominal_value, + bulk_velocity_rtn=np.array( + [c.nominal_value for c in alpha_moments.bulk_velocity_rtn] + ), + temperature=alpha_moments.temperature.nominal_value, + mass=ALPHA_PARTICLE_MASS_KG, + ) + alpha_true_fit, _ = model_solar_wind_ideal_coincidence_rates( + alpha_sw, alpha_ctx + ) + combined_true = proton_true + alpha_true_fit + combined_fit = combined_true * deadtime_factor(combined_true) + combined_fit_avg = combined_fit.reshape(_N_SWEEPS, _N_BINS).mean(axis=0) + alpha_contribution_avg = np.maximum(combined_fit_avg - proton_bg_avg, 0.0) + + energies = SWAPI_K_FACTOR * np.abs(voltage_per_sweep) + peak = get_alpha_peak_indices( + count_avg - proton_bg_avg, energies, count_avg.argmax() + ) + peak_idx = np.arange(peak.start, peak.stop) + residual_peak = np.maximum(count_avg[peak_idx] - proton_bg_avg[peak_idx], 0.0) + speed_peak = esa_voltage_to_alpha_speed(voltage_per_sweep[peak_idx]) + has_peak = peak_idx.size > 0 and residual_peak.max(initial=0.0) > 0.0 + + if has_peak: + amplitude_guess = residual_peak.max() + mean_guess = float(speed_peak[int(np.argmax(residual_peak))]) + try: + (A_fit, mu_fit, sigma_fit), _ = scipy.optimize.curve_fit( + lambda v, A, mu, sigma: A + * np.exp(-((v - mu) ** 2) / (2 * sigma**2)), + speed_peak, + residual_peak, + p0=[amplitude_guess, mean_guess, 50.0], + bounds=([0, 0, 0], [np.inf, np.inf, np.inf]), + ) + except RuntimeError: + A_fit, mu_fit, sigma_fit = amplitude_guess, mean_guess, 50.0 + else: + A_fit, mu_fit, sigma_fit = 0.0, 0.0, 1.0 + + abs_voltage = np.abs(voltage_per_sweep) + sort_idx = np.argsort(abs_voltage) + abs_voltage_sorted = abs_voltage[sort_idx] + + axes_top.plot( + abs_voltage_sorted, + count_avg[sort_idx], + ".", + color="tab:blue", + markersize=4, + label="Observed (5-sweep avg)", + zorder=3, + ) + axes_top.plot( + abs_voltage_sorted, + proton_bg_avg[sort_idx], + color="tab:orange", + lw=1.5, + label="Proton model", + zorder=2, + ) + if combined_fit_avg is not None: + axes_top.plot( + abs_voltage_sorted, + combined_fit_avg[sort_idx], + color="tab:purple", + lw=1.5, + linestyle="--", + label="Combined fit (p + α)", + zorder=2, + ) + + if has_peak: + peak_voltages = abs_voltage[peak_idx] + v_lo, v_hi = peak_voltages.min(), peak_voltages.max() + axes_top.axvspan( + v_lo, v_hi, alpha=0.15, color="tab:green", label="Alpha peak", zorder=1 + ) + + axes_top.plot( + abs_voltage[peak_idx], + count_avg[peak_idx], + "o", + color="tab:green", + markersize=5, + markerfacecolor="none", + lw=1.2, + zorder=4, + ) + + axes_top.set_xscale("log") + axes_top.set_yscale("log") + axes_top.set_ylim(bottom=0.5) + axes_top.set_ylabel("Count rate [Hz]") + axes_top.set_title(title, fontsize=10) + axes_top.legend(fontsize=7, loc="upper left") + axes_top.grid(True, which="both", alpha=0.2) + + all_speeds = esa_voltage_to_alpha_speed(voltage_per_sweep) + all_residual = np.maximum(count_avg - proton_bg_avg, 0.0) + + axes_bot.vlines( + all_speeds[sort_idx], + 0, + all_residual[sort_idx], + colors="lightgrey", + linewidth=1.5, + zorder=1, + ) + axes_bot.plot( + all_speeds[sort_idx], + all_residual[sort_idx], + ".", + color="grey", + markersize=3, + zorder=1, + label="Residual (all bins)", + ) + + axes_bot.vlines( + speed_peak, 0, residual_peak, colors="tab:green", linewidth=2, zorder=2 + ) + axes_bot.plot( + speed_peak, + residual_peak, + "o", + color="tab:green", + markersize=5, + zorder=2, + label="Peak bins", + ) + + if has_peak: + v_fine = np.linspace(speed_peak.min() - 50, speed_peak.max() + 50, 200) + gauss_fine = A_fit * np.exp(-((v_fine - mu_fit) ** 2) / (2 * sigma_fit**2)) + axes_bot.plot( + v_fine, + gauss_fine, + color="tab:red", + lw=1.5, + linestyle=":", + label=rf"Gaussian (init. guess): $v_\alpha$={mu_fit:.0f} km/s", + zorder=3, + ) + + if alpha_contribution_avg is not None: + alpha_speed = np.linalg.norm( + [c.nominal_value for c in alpha_moments.bulk_velocity_rtn] + ) + axes_bot.plot( + all_speeds[sort_idx], + alpha_contribution_avg[sort_idx], + color="tab:purple", + lw=1.5, + linestyle="--", + label=rf"Moments fit: $v_\alpha$={alpha_speed:.0f} km/s", + zorder=4, + ) + + axes_bot.set_xlabel(r"$\alpha$ speed [km/s]") + axes_bot.set_ylabel("Residual [Hz]") + axes_bot.legend(fontsize=7, loc="upper right") + axes_bot.grid(True, alpha=0.2) + y_top = max(residual_peak.max(initial=0.0), A_fit) * 1.3 + axes_bot.set_ylim(0, max(y_top, 10)) + + +def main(): + print("Loading calibration data...") + swapi_response = load_swapi_response() + + data = np.load(_FIXTURE_PATH) + n_cases = len(_CASES) + fig, axes = plt.subplots( + 2, + n_cases, + figsize=(4.5 * n_cases, 7), + gridspec_kw={"height_ratios": [2, 1.2]}, + ) + fig.suptitle( + r"Alpha peak-finding on real L2 spectra (imap\_swapi\_l2\_sci\_20260101)", + fontsize=11, + ) + + for col, (case_name, case_title) in enumerate(_CASES): + print(f"Plotting {case_name}...") + fixture = _load_fixture(data, case_name) + _plot_case(axes[0, col], axes[1, col], swapi_response, fixture, case_title) + + fig.tight_layout() + FIGURES_DIR.mkdir(parents=True, exist_ok=True) + out = FIGURES_DIR / "alpha_peak_finding.svg" + fig.savefig(out, bbox_inches="tight") + print(f"Saved {out}") + + +if __name__ == "__main__": + main() diff --git a/docs/swapi/figure_src/plot_calibration_curves.py b/docs/swapi/figure_src/plot_calibration_curves.py new file mode 100644 index 000000000..ba0628877 --- /dev/null +++ b/docs/swapi/figure_src/plot_calibration_curves.py @@ -0,0 +1,79 @@ +#!/usr/bin/env python3 +""" +Plot the SWAPI central effective area and azimuthal transmission calibration curves. + +Output: docs/swapi/figures/calibration_curves.svg +Usage: python docs/swapi/figure_src/plot_calibration_curves.py +""" + +import sys +from pathlib import Path + +sys.path.insert(0, str(Path(__file__).resolve().parents[3])) + +import matplotlib + +matplotlib.use("Agg") +import matplotlib.pyplot as plt +import numpy as np +import pandas as pd + +from imap_l3_processing.swapi.response.swapi_response import SwapiResponse +from figure_utils import FIGURES_DIR, load_swapi_response + +_AREA_CSV = ( + Path(__file__).resolve().parents[3] + / "instrument_team_data" + / "swapi" + / "imap_swapi_central-effective-area_20260425_v001.csv" +) + + +def main(): + swapi_response = load_swapi_response() + + area_df = pd.read_csv(_AREA_CSV) + voltages = area_df["esa_voltage"].to_numpy() + eff_area = area_df["effective_area"].to_numpy() + + transmission = swapi_response._azimuthal_transmission + azimuths = ( + np.arange(len(transmission)) * SwapiResponse.AZIMUTHAL_TRANSMISSION_SPACING_DEG + ) + + fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(10, 4)) + + ax1.plot(voltages, eff_area, color="steelblue", linewidth=1.5) + ax1.set_xscale("log") + ax1.set_xlabel("ESA Voltage ($|V|$) [V]") + ax1.set_ylabel("Central Effective Area $\\mathcal{A}_0(V)$ (cm²)") + ax1.grid(True, which="both", alpha=0.3) + + full_az = np.concatenate([-azimuths[::-1], azimuths]) + full_tx = np.concatenate([transmission[::-1], transmission]) + ax2.semilogy( + full_az, + full_tx, + color="darkorange", + linewidth=1.5, + ) + ax2.set_xlabel(r"Azimuth Angle ($\phi$) [$^\circ$]") + ax2.set_ylabel("Azimuthal Transmission $T(\\phi)$") + ax2.axvspan(-20, 20, alpha=0.12, color="steelblue", label="Sunglasses (SG)") + ax2.axvspan(20, 150, alpha=0.12, color="darkorange", label="Open aperture (OA)") + ax2.axvspan(-150, -20, alpha=0.12, color="darkorange") + ax2.set_xlim(-180, 180) + ax2.set_ylim(1e-5, 1.5e0) + ax2.set_xticks([-150, -90, -20, 0, 20, 90, 150]) + ax2.legend(fontsize=8) + ax2.grid(True, which="both", alpha=0.3) + + fig.tight_layout() + FIGURES_DIR.mkdir(parents=True, exist_ok=True) + out = FIGURES_DIR / "calibration_curves.svg" + fig.savefig(out, bbox_inches="tight") + print(f"Saved {out}") + + +if __name__ == "__main__": + main() diff --git a/docs/swapi/figure_src/plot_fit_accuracy.py b/docs/swapi/figure_src/plot_fit_accuracy.py new file mode 100644 index 000000000..432cf95da --- /dev/null +++ b/docs/swapi/figure_src/plot_fit_accuracy.py @@ -0,0 +1,406 @@ +#!/usr/bin/env python3 +""" +Scatter plots comparing the SWAPI proton-moments fit against ground truth on +**real solar wind conditions** sampled from WIND/SWE 2-min ASCII data. + +Uses the 62 coarse-sweep bins (indices 1..62 of a 72-bin sweep) to show that +the fit recovers (n, T, v_R, v_T, v_N) without fine-sweep coverage. + +Per-bin SWAPI→RTN rotation matrices are generated synthetically by spinning a +single anchor matrix (a real SPICE attitude near 2026-01-01) about its own +spin axis at the nominal SWAPI spin period. + +Synthetic count rates are produced from the SWAPI forward model (5 sweeps per +fit, Poisson noise); the ground truth is read from a CSV produced by +scripts/swapi/sample_wind_solar_wind.py. + +Generate the CSV first: + conda run -n imapL3 python scripts/swapi/sample_wind_solar_wind.py \ + --year 2025 --n 10000 --seed 7 + +Output: docs/swapi/figures/fit_accuracy.svg +Usage: conda run -n imapL3 python docs/swapi/figure_src/plot_fit_accuracy.py +""" + +import sys +from pathlib import Path + +sys.path.insert(0, str(Path(__file__).resolve().parents[3])) + +import types + +import numpy as np +import pandas as pd +from uncertainties import UFloat +import matplotlib + +matplotlib.use("Agg") +import matplotlib.pyplot as plt + +from imap_l3_processing.constants import ( + PROTON_MASS_KG, + PROTON_MASS_PER_CHARGE_M_P_PER_E, +) +from imap_l3_processing.swapi.constants import SWAPI_LIVETIME_S +from figure_utils import ( + COARSE_BIN_INDICES_IN_SWEEP, + COARSE_SWEEP_VOLTAGES_MEAN_V, + REPO_ROOT, + compute_per_bin_rotation_matrices, + load_swapi_response, + run_parallel_map, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.proton.fit_model import ( + fit_solar_wind_proton_model, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.proton.initial_guess import ( + calculate_initial_guess, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.forward_model import ( + model_solar_wind_ideal_coincidence_rates, +) +from imap_l3_processing.swapi.response.deadtime import deadtime_factor +from imap_l3_processing.swapi.l3a.science.solar_wind.fit_context import ( + build_solar_wind_fit_context, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.params import SolarWindParams + +_N_SWEEPS = 5 +_N_BINS = len(COARSE_SWEEP_VOLTAGES_MEAN_V) + +_worker_state: types.SimpleNamespace | None = None + + +def main(): + csv_path = REPO_ROOT / "docs/swapi/figure_src/wind_solar_wind_samples_2025.csv" + ground_truth_params = _load_wind_samples(csv_path) + _initialize_worker_state(ground_truth_params) + data = _run_fits(n_samples=len(ground_truth_params[0])) + _plot_results(data) + + +def _load_wind_samples(csv_path: Path) -> tuple[np.ndarray, ...]: + """Load WIND-derived ground-truth proton parameters from CSV.""" + if not csv_path.exists(): + raise FileNotFoundError( + f"Missing WIND samples CSV: {csv_path}. " + f"Run scripts/swapi/sample_wind_solar_wind.py first." + ) + cols = np.genfromtxt( + csv_path, delimiter=",", names=True, dtype=None, encoding="utf-8" + ) + return ( + cols["v_R_km_s"].astype(float), + cols["proton_temperature_K"].astype(float), + cols["proton_density_cm3"].astype(float), + cols["v_T_km_s"].astype(float), + cols["v_N_km_s"].astype(float), + ) + + +def _initialize_worker_state(ground_truth_params: tuple[np.ndarray, ...]) -> None: + global _worker_state + + print( + f"Using {_N_BINS} coarse-sweep bins, " + f"{COARSE_SWEEP_VOLTAGES_MEAN_V.min():.1f}–{COARSE_SWEEP_VOLTAGES_MEAN_V.max():.1f} V" + ) + + swapi_response = load_swapi_response() + all_esa_voltages = np.tile(COARSE_SWEEP_VOLTAGES_MEAN_V, _N_SWEEPS) + swapi_response.warm_cache(all_esa_voltages) + per_bin_rotation_matrices = compute_per_bin_rotation_matrices( + _N_SWEEPS, COARSE_BIN_INDICES_IN_SWEEP + ) + base_ctx = build_solar_wind_fit_context( + count_rate=np.ones_like(all_esa_voltages), + esa_voltage=all_esa_voltages, + swapi_response=swapi_response, + central_effective_area_scale=1.0, + rotation_matrices=per_bin_rotation_matrices, + mass_kg=PROTON_MASS_KG, + mass_per_charge_m_p_per_e=PROTON_MASS_PER_CHARGE_M_P_PER_E, + ) + _worker_state = types.SimpleNamespace( + ground_truth_params=ground_truth_params, + swapi_response=swapi_response, + all_esa_voltages=all_esa_voltages, + per_bin_rotation_matrices=per_bin_rotation_matrices, + base_ctx=base_ctx, + ) + + +def _run_fits(n_samples: int) -> pd.DataFrame: + rows = run_parallel_map(_process_one, n_samples, desc="fits", chunksize=10) + data = pd.DataFrame(rows) + print(f"Bad-fit flags: {data['bad_flag'].sum()}/{n_samples}") + out_csv = Path("/tmp/fit_accuracy_results.csv") + data.to_csv(out_csv, index=False) + print(f"Saved fit results to {out_csv}") + return data + + +def _process_one(i): + ws = _worker_state + radial_speeds, temperatures, densities, tangential_speeds, normal_speeds = ( + ws.ground_truth_params + ) + radial_speed = float(radial_speeds[i]) + temperature = float(temperatures[i]) + density = float(densities[i]) + tangential_speed = float(tangential_speeds[i]) + normal_speed = float(normal_speeds[i]) + + truth_params = SolarWindParams( + density=density, + bulk_velocity_rtn=np.array([radial_speed, tangential_speed, normal_speed]), + temperature=temperature, + mass=PROTON_MASS_KG, + ) + count_rates, _ = model_solar_wind_ideal_coincidence_rates(truth_params, ws.base_ctx) + count_rates = count_rates * deadtime_factor(count_rates) + count_rates = ( + np.random.default_rng(i) + .poisson(np.maximum(count_rates * SWAPI_LIVETIME_S, 0.0)) + .astype(float) + / SWAPI_LIVETIME_S + ) + + fit_ctx = build_solar_wind_fit_context( + count_rate=count_rates, + esa_voltage=ws.all_esa_voltages, + swapi_response=ws.swapi_response, + central_effective_area_scale=1.0, + rotation_matrices=ws.per_bin_rotation_matrices, + mass_kg=PROTON_MASS_KG, + mass_per_charge_m_p_per_e=PROTON_MASS_PER_CHARGE_M_P_PER_E, + ) + try: + initial_guess = calculate_initial_guess(fit_ctx) + except Exception: + initial_guess = SolarWindParams( + density=float("nan"), + bulk_velocity_rtn=np.array([float("nan")] * 3), + temperature=float("nan"), + mass=PROTON_MASS_KG, + ) + try: + result = fit_solar_wind_proton_model(fit_ctx) + except Exception as e: + print(f" case {i}: fit failed ({type(e).__name__}: {e}); flagging bad") + from imap_l3_processing.swapi.l3a.science.solar_wind.proton.fit_model import ( + ProtonSolarWindFitResult, + ) + from uncertainties import ufloat + + nan_uf = ufloat(float("nan"), float("nan")) + result = ProtonSolarWindFitResult( + density=nan_uf, + temperature=nan_uf, + bulk_velocity_rtn=(nan_uf, nan_uf, nan_uf), + bad_fit_flag=1, + ) + + return { + "true_density": density, + "true_temperature": temperature, + "true_radial_speed": radial_speed, + "true_tangential_speed": tangential_speed, + "true_normal_speed": normal_speed, + "init_density": initial_guess.density, + "init_temperature": initial_guess.temperature, + "init_radial_speed": float(initial_guess.bulk_velocity_rtn[0]), + "init_tangential_speed": float(initial_guess.bulk_velocity_rtn[1]), + "init_normal_speed": float(initial_guess.bulk_velocity_rtn[2]), + "fit_density": _nominal(result.density), + "fit_temperature": _nominal(result.temperature), + "fit_radial_speed": _nominal(result.bulk_velocity_rtn[0]), + "fit_tangential_speed": _nominal(result.bulk_velocity_rtn[1]), + "fit_normal_speed": _nominal(result.bulk_velocity_rtn[2]), + "fit_density_sigma": _sigma(result.density), + "fit_temperature_sigma": _sigma(result.temperature), + "fit_radial_speed_sigma": _sigma(result.bulk_velocity_rtn[0]), + "fit_tangential_speed_sigma": _sigma(result.bulk_velocity_rtn[1]), + "fit_normal_speed_sigma": _sigma(result.bulk_velocity_rtn[2]), + "bad_flag": bool(result.bad_fit_flag), + } + + +def _nominal(x): + return x.nominal_value if isinstance(x, UFloat) else x + + +def _sigma(x): + return x.std_dev if isinstance(x, UFloat) else float("nan") + + +def _plot_results(data: pd.DataFrame) -> None: + n_samples = len(data) + good = ~data["bad_flag"] + n_bad = data["bad_flag"].sum() + + plot_columns = [ + ( + "Density (cm⁻³)", + "true_density", + "init_density", + "fit_density", + "fit_density_sigma", + "log", + ), + ( + "Temperature (K)", + "true_temperature", + "init_temperature", + "fit_temperature", + "fit_temperature_sigma", + "log", + ), + ( + "$v_R$ (km/s)", + "true_radial_speed", + "init_radial_speed", + "fit_radial_speed", + "fit_radial_speed_sigma", + "linear", + ), + ( + "$v_T$ (km/s)", + "true_tangential_speed", + "init_tangential_speed", + "fit_tangential_speed", + "fit_tangential_speed_sigma", + "linear", + ), + ( + "$v_N$ (km/s)", + "true_normal_speed", + "init_normal_speed", + "fit_normal_speed", + "fit_normal_speed_sigma", + "linear", + ), + ] + + fig, axes = plt.subplots(1, 5, figsize=(17, 4)) + fig.suptitle( + f"Initial guess vs. final optimizer vs. WIND ground truth\n" + f"({n_samples} real solar wind cases from WIND/SWE 2-min 2025, " + f"{_N_SWEEPS} sweeps × {_N_BINS} coarse-sweep bins, Poisson noise)", + fontsize=11, + ) + + color_initial_guess = "tab:orange" + color_final_fit = "tab:blue" + + for ax, (label, true_key, init_key, fit_key, fit_sigma_key, scale) in zip( + axes, plot_columns + ): + truth = data[true_key] + init = data[init_key] + fit = data[fit_key] + fit_sigma = data[fit_sigma_key] + + lo = np.nanmin(np.concatenate([truth, init, fit])) + hi = np.nanmax(np.concatenate([truth, init, fit])) + ref = np.linspace(lo, hi, 200) + ax.plot(ref, ref, "k--", lw=0.8, alpha=0.4, zorder=0) + + ax.scatter( + truth[good], + init[good], + s=6, + alpha=0.35, + color=color_initial_guess, + marker="o", + zorder=2, + label="Initial guess", + rasterized=True + ) + ax.errorbar( + truth[good], + fit[good], + yerr=fit_sigma[good], + fmt="^", + markersize=2.5, + color=color_final_fit, + ecolor=color_final_fit, + elinewidth=0.4, + capsize=0, + alpha=0.45, + zorder=3, + label="Final fit", + rasterized=True, + ) + + if n_bad: + ax.scatter( + truth[~good], + init[~good], + s=30, + alpha=0.9, + color=color_initial_guess, + marker="X", + edgecolors="k", + linewidths=0.4, + zorder=4, + rasterized=True + ) + ax.scatter( + truth[~good], + fit[~good], + s=30, + alpha=0.9, + color=color_final_fit, + marker="X", + edgecolors="k", + linewidths=0.4, + zorder=4, + rasterized=True + ) + + ax.set_xlabel(f"True {label}", fontsize=9) + ax.set_ylabel("Estimated", fontsize=9) + ax.set_title(label, fontsize=10) + ax.tick_params(labelsize=8) + ax.grid(True, alpha=0.25) + + if scale == "log": + ax.set_xscale("log") + ax.set_yscale("log") + + ax.annotate( + f"Init {_rmse_label(truth[good], init[good], scale)}\n" + f"Fit {_rmse_label(truth[good], fit[good], scale)}", + xy=(0.04, 0.97), + xycoords="axes fraction", + va="top", + ha="left", + fontsize=6.5, + bbox=dict(boxstyle="round,pad=0.3", fc="white", alpha=0.75), + ) + + axes[0].legend(fontsize=8, loc="lower right", framealpha=0.8) + fig.tight_layout() + + out_dir = REPO_ROOT / "docs" / "swapi" / "figures" + out_dir.mkdir(parents=True, exist_ok=True) + out_path = out_dir / "fit_accuracy.svg" + fig.savefig(out_path, bbox_inches="tight", dpi=200) + print(f"Saved {out_path}") + + +def _rmse_label(truth, estimated, scale): + mask = np.isfinite(estimated) + if scale == "log": + rmse = np.sqrt( + np.mean((np.log10(estimated[mask]) - np.log10(truth[mask])) ** 2) + ) + return f"RMSE log₁₀ = {rmse:.3f}" + else: + rmse = np.sqrt(np.mean((estimated[mask] - truth[mask]) ** 2)) + return f"RMSE = {rmse:.1f} km/s" + + +if __name__ == "__main__": + main() diff --git a/docs/swapi/figure_src/plot_passband_boundaries.py b/docs/swapi/figure_src/plot_passband_boundaries.py new file mode 100644 index 000000000..862d543ee --- /dev/null +++ b/docs/swapi/figure_src/plot_passband_boundaries.py @@ -0,0 +1,160 @@ +import sys +from pathlib import Path + +sys.path.insert(0, str(Path(__file__).resolve().parents[3])) + +import matplotlib + +matplotlib.use("Agg") +import matplotlib.pyplot as plt +import numpy as np + +from imap_l3_processing.swapi.response.passband_grid import PassbandGrid +from imap_l3_processing.swapi.response.swapi_response import SwapiResponse +from figure_utils import FIGURES_DIR, load_swapi_response + +_ELEVATION_DISPLAY_LIMIT_DEG = 15.0 +_ACTIVE_ELEVATION_SAMPLE_COUNT = 300 + + +def main(): + swapi_response = load_swapi_response() + esa_voltages = representative_esa_voltages(swapi_response) + swapi_response.warm_cache(esa_voltages) + + n_columns = len(esa_voltages) + n_rows = 2 + figure, axes = plt.subplots( + n_rows, n_columns, figsize=(5 * n_columns, 4 * n_rows), sharey=True + ) + + last_image = None + for column, esa_voltage in enumerate(esa_voltages): + response_grid = swapi_response.get_response_grid(esa_voltage, 1.0) + central_speed = response_grid.central_speed + + for row, region in enumerate(["open_aperture", "sunglasses"]): + grid = ( + response_grid.oa_passband + if region == "open_aperture" + else response_grid.sg_passband + ) + axis = axes[row, column] + last_image = plot_region_panel( + axis, grid, region, esa_voltage, central_speed + ) + if column == 0: + axis.set_ylabel("Elevation (deg)") + + figure.tight_layout() + colorbar = figure.colorbar(last_image, ax=axes, fraction=0.03, pad=0.02) + colorbar.set_label("Passband value") + + FIGURES_DIR.mkdir(parents=True, exist_ok=True) + output_path = FIGURES_DIR / "passband_boundaries.svg" + figure.savefig(output_path, bbox_inches="tight") + print(f"Saved {output_path}") + + +def representative_esa_voltages(swapi_response: SwapiResponse) -> list[float]: + voltage_limits = swapi_response._passband_esa_voltage_limits + voltage_minimum = min(low for low, _ in voltage_limits.values()) + voltage_maximum = max(high for _, high in voltage_limits.values()) + voltage_geometric_mean = float(np.sqrt(voltage_minimum * voltage_maximum)) + return [voltage_minimum, voltage_geometric_mean, voltage_maximum] + + +def plot_region_panel( + axis, + grid: PassbandGrid, + region: str, + esa_voltage: float, + central_speed: float, +): + label = "Open Aperture (OA)" if region == "open_aperture" else "Sunglasses (SG)" + + elevations, speed_ratios = grid_axis_coordinates(grid, grid.values) + + active_elevations = np.linspace( + grid.elevation_range[0], grid.elevation_range[1], _ACTIVE_ELEVATION_SAMPLE_COUNT + ) + lower_speed_ratios = _vectorized_bracket( + grid, grid.min_boundary, active_elevations, np.minimum + ) + upper_speed_ratios = _vectorized_bracket( + grid, grid.max_boundary, active_elevations, np.maximum + ) + + image = draw_transmission_heatmap( + axis, grid.values, elevations, speed_ratios + ) + draw_integration_window_outline( + axis, active_elevations, lower_speed_ratios, upper_speed_ratios + ) + + axis.set_xlabel("Speed ratio (v / v_central)") + axis.set_title(f"{label} | {esa_voltage:.1f} V ({central_speed:.0f} km/s)") + axis.set_ylim(-_ELEVATION_DISPLAY_LIMIT_DEG, _ELEVATION_DISPLAY_LIMIT_DEG) + return image + + +def grid_axis_coordinates( + grid: PassbandGrid, transmission_values: np.ndarray +) -> tuple[np.ndarray, np.ndarray]: + n_elevations, n_speed_ratios = transmission_values.shape + elevations = grid.min_elevation + np.arange(n_elevations) * grid.elevation_spacing + speed_ratios = ( + grid.min_speed_ratio + np.arange(n_speed_ratios) * grid.speed_ratio_spacing + ) + return elevations, speed_ratios + + +def draw_transmission_heatmap( + axis, + transmission_values: np.ndarray, + elevations: np.ndarray, + speed_ratios: np.ndarray, +): + extent = [speed_ratios[0], speed_ratios[-1], elevations[0], elevations[-1]] + return axis.imshow( + transmission_values, + origin="lower", + aspect="auto", + extent=extent, + cmap="gist_heat", + interpolation="nearest", + ) + + +def _vectorized_bracket( + grid: PassbandGrid, boundary: np.ndarray, elevations: np.ndarray, combine +) -> np.ndarray: + """Per-elevation speed-ratio boundary as `combine` (np.minimum or np.maximum) + of the two grid rows whose elevations bracket each query. Boundaries are + indexed on the grid's uniform elevation axis (same as `interpolate_passband`); + off-grid queries clamp to row 0 / row n-1.""" + n_rows = boundary.shape[0] + last = n_rows - 1 + i_float = (elevations - grid.min_elevation) / grid.elevation_spacing + lower = np.clip(np.floor(i_float).astype(int), 0, last) + upper = np.clip(lower + 1, 0, last) + return combine(boundary[lower], boundary[upper]) + + +def draw_integration_window_outline( + axis, + active_elevations: np.ndarray, + lower_speed_ratios: np.ndarray, + upper_speed_ratios: np.ndarray, +): + closed_x = np.concatenate( + [lower_speed_ratios, upper_speed_ratios[::-1], [lower_speed_ratios[0]]] + ) + closed_y = np.concatenate( + [active_elevations, active_elevations[::-1], [active_elevations[0]]] + ) + axis.plot(closed_x, closed_y, color="tab:blue", linewidth=2.5) + + +if __name__ == "__main__": + main() diff --git a/docs/swapi/figure_src/plot_real_data_fit.py b/docs/swapi/figure_src/plot_real_data_fit.py new file mode 100644 index 000000000..eec174643 --- /dev/null +++ b/docs/swapi/figure_src/plot_real_data_fit.py @@ -0,0 +1,922 @@ +#!/usr/bin/env python3 +""" +Real-data example: SWAPI proton-moments fit on 5 sweeps + averaged sweep. + +Picks a real L2 date/sweep block where the fine-sweep bins (63..71) bracket +the proton peak, fits twice per chunk (full SCIENCE bins vs coarse-only bins), +and overlays both forward-modelled spectra on each sweep's measured count +rate. The 6th column shows the average of the 5 sweeps with the same overlays. + +The script downloads the L2 CDF and SPICE kernels itself via imap-data-access. +The IMAP API key is read from the IMAP_API_KEY environment variable. +WIND/SWE 2-min ground truth at the chunk epoch is fetched the same way as +plot_fit_accuracy.py — cached under ~/.cache/imap_l3/wind_swe_2m/. + +Output: docs/swapi/figures/real_data_fit.svg +Usage: conda run -n imapL3 python docs/swapi/figure_src/plot_real_data_fit.py +""" + +import json +import os +import sys +import urllib.request +from datetime import datetime, timedelta +from pathlib import Path +from urllib.parse import urlparse + +import imap_data_access +import matplotlib +import numpy as np +import requests +import spacepy.pycdf +import spiceypy +from matplotlib.transforms import blended_transform_factory + +matplotlib.use("Agg") +import matplotlib.pyplot as plt + +sys.path.insert(0, str(Path(__file__).resolve().parents[3])) + +from imap_l3_processing.constants import ( + BOLTZMANN_CONSTANT_JOULES_PER_KELVIN, + ONE_SECOND_IN_NANOSECONDS, + PROTON_MASS_KG, + PROTON_MASS_PER_CHARGE_M_P_PER_E, +) +import scipy.optimize + +from imap_l3_processing.swapi.l3a.science.solar_wind.fit_context import ( + build_solar_wind_fit_context, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.forward_model import ( + model_solar_wind_ideal_coincidence_rates, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.proton.fit_model import ( + fit_solar_wind_proton_model, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.params import SolarWindParams +from imap_l3_processing.swapi.l3a.utils import ( + get_spacecraft_velocity_rtn, + get_swapi_geometry, +) +from imap_l3_processing.swapi.response.deadtime import deadtime_factor +from imap_l3_processing.swapi.constants import ( + SWAPI_COARSE_SWEEP_BINS, + SWAPI_FINE_SWEEP_BINS, + SWAPI_K_FACTOR, + SWAPI_L2_K_FACTOR, + SWAPI_SCIENCE_BINS, +) +from imap_l3_processing.utils import SpiceKernelTypes +from figure_utils import FIGURES_DIR, REPO_ROOT, load_swapi_response + +_DOC_PATH = REPO_ROOT / "docs" / "swapi" / "solar-wind-moments.md" +_TABLE_BEGIN = "" + +# 2026-02-01: 5-sweep block at sweep_start=6853, identified by inspecting the +# day's fine-sweep voltages — fine bins span 5..334 V and bracket the ~257 V +# proton peak. 60-second chunk covers 22:50:36 .. 22:51:36 UT. +DATE_YYYYMMDD = "20260201" +SWEEP_START = 6853 +N_SWEEPS = 5 + +WIND_YEAR = 2026 +WIND_CACHE_DIR = Path.home() / ".cache" / "imap_l3" / "wind_swe_2m" +WIND_BASE_URL = "https://spdf.gsfc.nasa.gov/pub/data/wind/swe/ascii/2-min" + + +def main(): + if not os.environ.get("IMAP_API_KEY"): + raise SystemExit( + "IMAP_API_KEY environment variable is not set. " + "Export it before running this script." + ) + cdf_path = _download_l2(DATE_YYYYMMDD) + _furnish_spice_around(DATE_YYYYMMDD) + + sweep_start = SWEEP_START + epoch_ns, count_rate, esa_voltage = _read_5_sweep_block( + cdf_path, sweep_start, N_SWEEPS + ) + chunk_center_ns = int(epoch_ns[0]) + 30 * ONE_SECOND_IN_NANOSECONDS + chunk_center_dt = _tt2000ns_to_datetime(chunk_center_ns) + print( + f"Chunk: {DATE_YYYYMMDD} sweeps {sweep_start}..{sweep_start + N_SWEEPS - 1} " + f"(center {chunk_center_dt.isoformat()} UT)" + ) + + swapi_response = load_swapi_response() + swapi_response.warm_cache(esa_voltage.flatten() / SWAPI_L2_K_FACTOR) + + science_result = _fit_for_bins( + SWAPI_SCIENCE_BINS, count_rate, esa_voltage, epoch_ns, swapi_response + ) + coarse_result = _fit_for_bins( + SWAPI_COARSE_SWEEP_BINS, count_rate, esa_voltage, epoch_ns, swapi_response + ) + + sc_velocity_rtn = get_spacecraft_velocity_rtn(chunk_center_ns) + science_result["bulk_velocity_rtn_sun"] = ( + np.array( + [c.nominal_value for c in science_result["fit_result"].bulk_velocity_rtn] + ) + + sc_velocity_rtn + ) + coarse_result["bulk_velocity_rtn_sun"] = ( + np.array( + [c.nominal_value for c in coarse_result["fit_result"].bulk_velocity_rtn] + ) + + sc_velocity_rtn + ) + + print("\n--- Fit results ---") + print(f" Science bins (1..71, includes fine):") + _print_fit(science_result, sc_velocity_rtn) + print(f" Coarse-only bins (1..62):") + _print_fit(coarse_result, sc_velocity_rtn) + + print("\n--- Bootstrap σ on the all-bins fit (B=300, warm-LM, xtol=1e-3) ---") + boot = _bootstrap_sigmas( + science_result, + B=300, + xtol=1e-3, + seed=42, + sc_velocity_rtn=sc_velocity_rtn, + ) + print( + f" kept {boot['B_kept']}/{boot['B_total']} resamples\n" + f" σ_n = {boot['n_sigma']:.4f} cm^-3 (HC3: {science_result['fit_result'].density.std_dev:.4f})\n" + f" σ_T = {boot['T_sigma']:.3e} K (HC3: {science_result['fit_result'].temperature.std_dev:.3e})\n" + f" σ_vR = {boot['vR_sigma']:.3f} km/s (HC3: {science_result['fit_result'].bulk_velocity_rtn[0].std_dev:.3f})\n" + f" σ_vT = {boot['vT_sigma']:.3f} km/s (HC3: {science_result['fit_result'].bulk_velocity_rtn[1].std_dev:.3f})\n" + f" σ_vN = {boot['vN_sigma']:.3f} km/s (HC3: {science_result['fit_result'].bulk_velocity_rtn[2].std_dev:.3f})" + ) + + wind = _wind_value_at(chunk_center_dt) + print("\n--- WIND/SWE 2-min comparison ---") + if wind is None: + print(" No high-quality WIND/SWE fit within ±2 min of the chunk centre.") + else: + print( + f" WIND/SWE @ {wind['time'].isoformat()}\n" + f" n=({wind['density']:5.3f} ± {wind['density_sigma']:.3f}) cm^-3, " + f"T=({wind['temperature']:.3e} ± {wind['temperature_sigma']:.1e}) K, " + f"|v|={wind['speed']:6.1f} ± {wind['speed_sigma']:.2f} km/s,\n" + f" v_RTN=[{wind['v_R']:7.2f}±{wind['v_R_sigma']:.2f}, " + f"{wind['v_T']:6.2f}±{wind['v_T_sigma']:.2f}, " + f"{wind['v_N']:6.2f}±{wind['v_N_sigma']:.2f}]" + ) + + table_md = _build_intro_table(science_result, coarse_result, boot, wind) + _update_doc(table_md) + print(f"\nUpdated table block in {_DOC_PATH.relative_to(REPO_ROOT)}") + + _make_plot( + epoch_ns, + count_rate, + esa_voltage, + swapi_response, + science_result, + coarse_result, + ) + + +# --------------------------------------------------------------------------- # +# imap-data-access auth + downloads +# --------------------------------------------------------------------------- # + + +def _download_l2(date_yyyymmdd: str) -> Path: + """Find the latest SWAPI L2 file for the given date and download it.""" + matches = imap_data_access.query( + instrument="swapi", + data_level="l2", + descriptor="sci", + start_date=date_yyyymmdd, + end_date=date_yyyymmdd, + version="latest", + ) + if not matches: + raise SystemExit(f"No SWAPI L2 file for {date_yyyymmdd}") + file_name = matches[0]["file_path"].split("/")[-1] + return imap_data_access.download(file_name) + + +def _furnish_spice_around(date_yyyymmdd: str) -> None: + """Download all SPICE kernels covering [D-1, D+2] (and a 90-day lookback + for the IMAP SPK so the reconstructed kernel is included), then furnsh. + + Mirrors the two-query strategy in ~/projects/imap-validation/process_swapi_l3.sh. + """ + if spiceypy.ktotal("ALL") > 5: + return + + target = datetime.strptime(date_yyyymmdd, "%Y%m%d") + start = target - timedelta(days=1) + end = target + timedelta(days=2) + spk_start = target - timedelta(days=90) + + metakernel_url = ( + urlparse(imap_data_access.config["DATA_ACCESS_URL"]) + ._replace(path="metakernel") + .geturl() + ) + j2000 = datetime(2000, 1, 1, 12) + + def query_kernels(types, t0, t1): + params = { + "file_types": [t.value for t in types], + "start_time": str(int((t0 - j2000).total_seconds())), + "end_time": str(int((t1 - j2000).total_seconds())), + "list_files": "true", + } + resp = requests.get(metakernel_url, params=params, timeout=30) + resp.raise_for_status() + return [Path(p).name for p in json.loads(resp.text)] + + imap_spk_types = { + SpiceKernelTypes.EphemerisReconstructed, + SpiceKernelTypes.EphemerisPredicted, + } + non_spk = [t for t in SpiceKernelTypes if t not in imap_spk_types] + + narrow = query_kernels(non_spk, start, end) + spk = query_kernels(list(imap_spk_types), spk_start, end) + + seen = set() + kernels = [] + for k in narrow + spk: + if k not in seen: + seen.add(k) + kernels.append(k) + print(f"Downloading {len(kernels)} SPICE kernel(s)…") + for k in kernels: + path = imap_data_access.download(k) + spiceypy.furnsh(str(path)) + + +# --------------------------------------------------------------------------- # +# L2 reading +# --------------------------------------------------------------------------- # + + +def _read_5_sweep_block( + cdf_path: Path, sweep_start: int, n_sweeps: int +) -> tuple[np.ndarray, np.ndarray, np.ndarray]: + """Return (epoch_tt2000_ns, swp_coin_rate, esa_energy) for the 5-sweep slice.""" + with spacepy.pycdf.CDF(str(cdf_path)) as cdf: + epoch_ns = np.asarray( + cdf.raw_var("epoch")[sweep_start : sweep_start + n_sweeps], dtype=np.int64 + ) + cr = np.asarray( + cdf["swp_coin_rate"][sweep_start : sweep_start + n_sweeps, :], dtype=float + ) + esa = np.asarray( + cdf["esa_energy"][sweep_start : sweep_start + n_sweeps, :], dtype=float + ) + return epoch_ns, cr, esa + + +def _measurement_times_ns(epoch_ns: np.ndarray, bin_slice: slice) -> np.ndarray: + bins = np.arange(bin_slice.start, bin_slice.stop) + dt_per_bin = int((12 / 72) * ONE_SECOND_IN_NANOSECONDS) + return (epoch_ns[:, None] + bins * dt_per_bin).flatten() + + +# --------------------------------------------------------------------------- # +# Fitting +# --------------------------------------------------------------------------- # + + +def _fit_for_bins( + bin_slice: slice, + count_rate: np.ndarray, + esa_voltage: np.ndarray, + epoch_ns: np.ndarray, + swapi_response, +): + cr = count_rate[:, bin_slice].flatten() + voltages = esa_voltage[:, bin_slice].flatten() / SWAPI_L2_K_FACTOR + times = _measurement_times_ns(epoch_ns, bin_slice) + rotation_matrices = get_swapi_geometry(times) + ctx = build_solar_wind_fit_context( + count_rate=cr, + esa_voltage=voltages, + swapi_response=swapi_response, + central_effective_area_scale=1.0, + rotation_matrices=rotation_matrices, + mass_kg=PROTON_MASS_KG, + mass_per_charge_m_p_per_e=PROTON_MASS_PER_CHARGE_M_P_PER_E, + ) + fit_result = fit_solar_wind_proton_model(ctx) + return { + "fit_result": fit_result, + "ctx": ctx, + "bin_slice": bin_slice, + "swapi_response": swapi_response, + } + + +def _bootstrap_sigmas( + result, + B: int = 300, + xtol: float = 1e-3, + seed: int = 42, + sc_velocity_rtn: np.ndarray | None = None, +) -> dict: + """Warm-started LM bootstrap (no basin hopping) for σ on (n, T, v_RTN).""" + ctx = result["ctx"] + fit = result["fit_result"] + state0 = SolarWindParams( + density=fit.density.nominal_value, + bulk_velocity_rtn=np.array([c.nominal_value for c in fit.bulk_velocity_rtn]), + temperature=fit.temperature.nominal_value, + mass=PROTON_MASS_KG, + ).to_vector() + cr = ctx.count_rate + v = ctx.esa_voltage + rm = ctx.rotation_matrices + swapi_response_obj = result["swapi_response"] + + rng = np.random.default_rng(seed) + fits_n, fits_T, fits_vR, fits_vT, fits_vN = [], [], [], [], [] + for _ in range(B): + idx = rng.choice(len(cr), len(cr), replace=True) + ctx_b = build_solar_wind_fit_context( + count_rate=cr[idx], + esa_voltage=v[idx], + swapi_response=swapi_response_obj, + central_effective_area_scale=1.0, + rotation_matrices=rm[idx], + mass_kg=PROTON_MASS_KG, + mass_per_charge_m_p_per_e=PROTON_MASS_PER_CHARGE_M_P_PER_E, + ) + + cache = {} + + def _eval(state): + sw = SolarWindParams.from_vector(state, ctx_b.mass_kg) + ri, ji = model_solar_wind_ideal_coincidence_rates(sw, ctx_b) + df = deadtime_factor(ri) + cache["state"] = state.copy() + cache["r"] = ri * df - ctx_b.count_rate + cache["j"] = ji * np.square(df)[:, None] + + def _residues(state): + if "state" not in cache or not np.array_equal(state, cache["state"]): + _eval(state) + return cache["r"] + + def _jacobian(state): + if "state" not in cache or not np.array_equal(state, cache["state"]): + _eval(state) + return cache["j"] + + try: + raw = scipy.optimize.least_squares( + _residues, + state0.copy(), + jac=_jacobian, + method="lm", + xtol=xtol, + ) + except Exception: + continue + if not raw.success: + continue + sw = SolarWindParams.from_vector(raw.x, ctx_b.mass_kg) + fits_n.append(sw.density) + fits_T.append(sw.temperature) + fits_vR.append(float(sw.bulk_velocity_rtn[0])) + fits_vT.append(float(sw.bulk_velocity_rtn[1])) + fits_vN.append(float(sw.bulk_velocity_rtn[2])) + + arr_n = np.array(fits_n) + arr_T = np.array(fits_T) + arr_vR = np.array(fits_vR) + arr_vT = np.array(fits_vT) + arr_vN = np.array(fits_vN) + if sc_velocity_rtn is not None and len(arr_n): + sun_speed = np.sqrt( + (arr_vR + sc_velocity_rtn[0]) ** 2 + + (arr_vT + sc_velocity_rtn[1]) ** 2 + + (arr_vN + sc_velocity_rtn[2]) ** 2 + ) + sun_speed_sigma = float(np.std(sun_speed, ddof=1)) + else: + sun_speed_sigma = float("nan") + return { + "B_kept": len(fits_n), + "B_total": B, + "n_sigma": float(np.std(arr_n, ddof=1)), + "T_sigma": float(np.std(arr_T, ddof=1)), + "vR_sigma": float(np.std(arr_vR, ddof=1)), + "vT_sigma": float(np.std(arr_vT, ddof=1)), + "vN_sigma": float(np.std(arr_vN, ddof=1)), + "sun_speed_sigma": sun_speed_sigma, + } + + +def _build_intro_table(science_result, coarse_result, boot, wind): + """Build the markdown table consumed by the Introduction section.""" + sci_fit = science_result["fit_result"] + coa_fit = coarse_result["fit_result"] + sci_v_sun = science_result["bulk_velocity_rtn_sun"] + coa_v_sun = coarse_result["bulk_velocity_rtn_sun"] + # Sun-frame |v| uncertainty: SC velocity is treated as deterministic so + # |v_sc + v_sun_offset| inherits std from the SC-frame velocity ufloat. + sci_speed_uf = sum(c**2 for c in sci_fit.bulk_velocity_rtn) ** 0.5 + coa_speed_uf = sum(c**2 for c in coa_fit.bulk_velocity_rtn) ** 0.5 + sci_speed_sun = float(np.linalg.norm(sci_v_sun)) + coa_speed_sun = float(np.linalg.norm(coa_v_sun)) + + if wind is None: + wind_n = wind_T = wind_v = wind_vR = wind_vT = wind_vN = "—" + wind_header = "WIND/SWE 2-min (unavailable)" + else: + wind_t = wind["time"].strftime("%H:%M:%S") + wind_header = f"WIND/SWE 2-min @ {wind_t} UT" + wind_n = f"{wind['density']:.3f} ± {wind['density_sigma']:.3f}" + wind_T = ( + f"$`({wind['temperature'] / 1e4:.3f} \\pm " + f"{wind['temperature_sigma'] / 1e4:.2f})\\times10^{{4}}`$" + ) + wind_v = f"{wind['speed']:.1f} ± {wind['speed_sigma']:.2f}" + wind_vR = f"{wind['v_R']:+.2f} ± {wind['v_R_sigma']:.2f}" + wind_vT = f"{wind['v_T']:+.2f} ± {wind['v_T_sigma']:.2f}" + wind_vN = f"{wind['v_N']:+.2f} ± {wind['v_N_sigma']:.2f}" + + rows = [ + ( + "Density $`n`$ (cm⁻³)", + f"{sci_fit.density.nominal_value:.3f} ± {sci_fit.density.std_dev:.3f}", + f"± {boot['n_sigma']:.3f}", + f"{coa_fit.density.nominal_value:.3f} ± {coa_fit.density.std_dev:.3f}", + wind_n, + ), + ( + "Temperature $`T`$ (K)", + f"$`({sci_fit.temperature.nominal_value / 1e4:.3f} \\pm " + f"{sci_fit.temperature.std_dev / 1e4:.3f})\\times10^{{4}}`$", + f"$`\\pm {boot['T_sigma'] / 1e4:.3f}\\times10^{{4}}`$", + f"$`({coa_fit.temperature.nominal_value / 1e4:.3f} \\pm " + f"{coa_fit.temperature.std_dev / 1e4:.3f})\\times10^{{4}}`$", + wind_T, + ), + ( + "Inertial-frame $`\\lvert v \\rvert`$ (km/s)", + f"{sci_speed_sun:.1f} ± {sci_speed_uf.std_dev:.2f}", + f"± {boot['sun_speed_sigma']:.2f}", + f"{coa_speed_sun:.1f} ± {coa_speed_uf.std_dev:.2f}", + wind_v, + ), + ( + "$`v_{R}`$ (km/s, inertial RTN)", + f"{sci_v_sun[0]:.2f} ± {sci_fit.bulk_velocity_rtn[0].std_dev:.2f}", + f"± {boot['vR_sigma']:.2f}", + f"{coa_v_sun[0]:.2f} ± {coa_fit.bulk_velocity_rtn[0].std_dev:.2f}", + wind_vR, + ), + ( + "$`v_{T}`$ (km/s, inertial RTN)", + f"{sci_v_sun[1]:+.2f} ± {sci_fit.bulk_velocity_rtn[1].std_dev:.2f}", + f"± {boot['vT_sigma']:.2f}", + f"{coa_v_sun[1]:+.2f} ± {coa_fit.bulk_velocity_rtn[1].std_dev:.2f}", + wind_vT, + ), + ( + "$`v_{N}`$ (km/s, inertial RTN)", + f"{sci_v_sun[2]:+.2f} ± {sci_fit.bulk_velocity_rtn[2].std_dev:.2f}", + f"± {boot['vN_sigma']:.2f}", + f"{coa_v_sun[2]:+.2f} ± {coa_fit.bulk_velocity_rtn[2].std_dev:.2f}", + wind_vN, + ), + ] + + header_cells = [ + "Quantity", + "SWAPI all bins (HC3 σ)", + "SWAPI all bins (boot σ)", + "SWAPI coarse only (HC3 σ)", + wind_header, + ] + aligns = ["---", "---:", "---:", "---:", "---:"] + + md = ["| " + " | ".join(header_cells) + " |"] + md.append("|" + "|".join(aligns) + "|") + for row in rows: + md.append("| " + " | ".join(row) + " |") + return "\n".join(md) + + +def _update_doc(table_md: str) -> None: + text = _DOC_PATH.read_text() + begin = text.find(_TABLE_BEGIN) + end = text.find(_TABLE_END) + if begin < 0 or end < 0 or end <= begin: + raise RuntimeError( + f"Could not find '{_TABLE_BEGIN}' / '{_TABLE_END}' markers in {_DOC_PATH}" + ) + line_end = text.find("\n", begin) + 1 + new_text = text[:line_end] + table_md + "\n" + text[end:] + _DOC_PATH.write_text(new_text) + + +def _print_fit(result, sc_velocity_rtn: np.ndarray): + fit = result["fit_result"] + n = fit.density + T = fit.temperature + v_sc = fit.bulk_velocity_rtn + v_sc_nom = np.array([c.nominal_value for c in v_sc]) + v_sun_nom = v_sc_nom + sc_velocity_rtn + # Inertial speed σ ≈ σ on |v_sc| (sc velocity is ~deterministic per epoch). + sun_speed_uf = sum(c**2 for c in v_sc) ** 0.5 + print( + f" n=({n.nominal_value:6.3f} ± {n.std_dev:.3f}) cm^-3, " + f"T=({T.nominal_value:.3e} ± {T.std_dev:.1e}) K, " + f"|v|_sun={float(np.linalg.norm(v_sun_nom)):6.1f} ± {sun_speed_uf.std_dev:.2f} km/s, " + f"v_RTN_sun=[{v_sun_nom[0]:7.2f}±{v_sc[0].std_dev:.2f}, " + f"{v_sun_nom[1]:6.2f}±{v_sc[1].std_dev:.2f}, " + f"{v_sun_nom[2]:6.2f}±{v_sc[2].std_dev:.2f}], " + f"bad_fit={int(fit.bad_fit_flag)}" + ) + + +def _model_rates_with_deadtime( + fit_result, voltages_flat: np.ndarray, rotation_matrices: np.ndarray, swapi_response +) -> np.ndarray: + """Forward-model count rates at the supplied voltages using a fit's params.""" + swapi_response.warm_cache(voltages_flat) + ctx = build_solar_wind_fit_context( + count_rate=np.ones_like(voltages_flat), + esa_voltage=voltages_flat, + swapi_response=swapi_response, + central_effective_area_scale=1.0, + rotation_matrices=rotation_matrices, + mass_kg=PROTON_MASS_KG, + mass_per_charge_m_p_per_e=PROTON_MASS_PER_CHARGE_M_P_PER_E, + ) + sw = SolarWindParams( + density=fit_result.density.nominal_value, + bulk_velocity_rtn=np.array( + [c.nominal_value for c in fit_result.bulk_velocity_rtn] + ), + temperature=fit_result.temperature.nominal_value, + mass=PROTON_MASS_KG, + ) + rate_ideal, _ = model_solar_wind_ideal_coincidence_rates(sw, ctx) + return rate_ideal * deadtime_factor(rate_ideal) + + +# --------------------------------------------------------------------------- # +# WIND value at chunk centre +# --------------------------------------------------------------------------- # + + +def _wind_value_at(target_dt: datetime) -> dict | None: + """Return WIND/SWE 2-min ground truth nearest to `target_dt` (within ±2 min). + + Layout of the ASCII file matches scripts/swapi/sample_wind_solar_wind.py. + """ + asc = WIND_CACHE_DIR / f"wind_swe_2m_sw{WIND_YEAR}.asc" + if not asc.exists(): + WIND_CACHE_DIR.mkdir(parents=True, exist_ok=True) + url = f"{WIND_BASE_URL}/{asc.name}" + print(f"Downloading {url} -> {asc}") + urllib.request.urlretrieve(url, asc) + + data = np.loadtxt(asc, comments=";") + + fdoy_target = ( + target_dt - datetime(target_dt.year, 1, 1) + ).total_seconds() / 86400.0 + 1.0 + year = data[:, 0].astype(int) + fdoy = data[:, 1] + in_year = year == target_dt.year + if not in_year.any(): + return None + + delta = np.abs(fdoy[in_year] - fdoy_target) + idx_in_year = int(np.argmin(delta)) + if delta[idx_in_year] > 2.0 / (60 * 24): # >2 min + return None + row = data[in_year][idx_in_year] + if int(row[2]) != 10: + return None + if any(abs(row[c]) >= 9e4 for c in (3, 5, 7, 9, 11, 21)): + return None + + # WIND/SWE 2-min ASCII layout: each value is followed by its 1σ uncertainty. + # Column indices (0-based): 3 V, 4 σV, 5 Vx, 6 σVx, 7 Vy, 8 σVy, 9 Vz, + # 10 σVz, 11 Wscalar, 12 σWscalar, 21 Np, 22 σNp. + w_th = row[11] + sigma_w = row[12] + T_K = ( + PROTON_MASS_KG + * (w_th * 1e3) ** 2 + / (2.0 * BOLTZMANN_CONSTANT_JOULES_PER_KELVIN) + ) + # Linear-error propagation: T = m·w²/(2k) ⇒ σT = (2T/w)·σw. + sigma_T = T_K * 2.0 * sigma_w / w_th if w_th > 0 else float("nan") + return { + "time": datetime(target_dt.year, 1, 1) + timedelta(days=row[1] - 1), + "speed": float(row[3]), + "speed_sigma": float(row[4]), + "v_R": float(-row[5]), + "v_R_sigma": float(row[6]), + "v_T": float(-row[7]), + "v_T_sigma": float(row[8]), + "v_N": float(row[9]), + "v_N_sigma": float(row[10]), + "temperature": float(T_K), + "temperature_sigma": float(sigma_T), + "density": float(row[21]), + "density_sigma": float(row[22]), + } + + +# --------------------------------------------------------------------------- # +# Plot +# --------------------------------------------------------------------------- # + + +def _make_plot( + epoch_ns: np.ndarray, + count_rate: np.ndarray, + esa_voltage: np.ndarray, + swapi_response, + science_result, + coarse_result, +): + voltages = esa_voltage / SWAPI_L2_K_FACTOR + valid_full = (voltages > 0) & np.isfinite(voltages) + times_full = _measurement_times_ns(epoch_ns, slice(0, 72)) + rotation_full = get_swapi_geometry(times_full) + + voltages_flat = voltages.flatten() + valid_flat = valid_full.flatten() + rotation_valid = rotation_full[valid_flat] + voltages_valid = voltages_flat[valid_flat] + + science_curve_full = np.full_like(voltages_flat, np.nan) + coarse_curve_full = np.full_like(voltages_flat, np.nan) + science_curve_full[valid_flat] = _model_rates_with_deadtime( + science_result["fit_result"], voltages_valid, rotation_valid, swapi_response + ) + coarse_curve_full[valid_flat] = _model_rates_with_deadtime( + coarse_result["fit_result"], voltages_valid, rotation_valid, swapi_response + ) + + science_2d = science_curve_full.reshape(voltages.shape) + coarse_2d = coarse_curve_full.reshape(voltages.shape) + + avg_voltage = np.nanmean(np.where(voltages > 0, voltages, np.nan), axis=0) + + n_sweeps = count_rate.shape[0] + n_panels = n_sweeps + n_rows = n_panels + + fig = plt.figure(figsize=(10.0, 1.55 * n_rows)) + outer = fig.add_gridspec(n_rows, 1, hspace=0.0) + panel_axes: list[tuple] = [] + for i in range(n_panels): + inner = outer[i, 0].subgridspec(1, 2, width_ratios=[1.4, 4.5], wspace=0) + ax_f = fig.add_subplot(inner[0]) + ax_c = fig.add_subplot(inner[1], sharey=ax_f) + panel_axes.append((ax_c, ax_f)) + + color_data = "k" + color_full = "tab:blue" + color_coarse = "tab:orange" + + bin_indices = np.arange(72) + + # Fine sub-axis restricted to V > 100 V: the 3 low-V fine bins (~5–35 V) + # plot at effectively zero rate and would introduce a false drop in the line. + fine_step_lo = SWAPI_FINE_SWEEP_BINS.start + fine_step_hi = SWAPI_FINE_SWEEP_BINS.stop - 1 + fine_dense_step = np.linspace(fine_step_lo, fine_step_hi, 200) + + def _dense_fine(values_per_bin, v_per_bin): + keep = (v_per_bin > 100.0) & np.isfinite(values_per_bin) + if keep.sum() < 2: + return fine_dense_step, np.full_like(fine_dense_step, np.nan) + bins_keep = bin_indices[ + SWAPI_FINE_SWEEP_BINS.start : SWAPI_FINE_SWEEP_BINS.stop + ][keep[SWAPI_FINE_SWEEP_BINS]] + order = np.argsort(bins_keep) + return ( + fine_dense_step, + np.interp( + fine_dense_step, + bins_keep[order], + values_per_bin[bins_keep[order]], + left=np.nan, + right=np.nan, + ), + ) + + def _draw(panel, cr, s_curve, c_curve, v, *, draw_legend=False): + ax_c, ax_f = panel + ok = (v > 0) & np.isfinite(v) + coarse_mask = ok & (bin_indices < SWAPI_FINE_SWEEP_BINS.start) + fine_mask_useful = ( + ok & (bin_indices >= SWAPI_FINE_SWEEP_BINS.start) & (v > 100.0) + ) + + ax_c.semilogy( + bin_indices[coarse_mask], + np.maximum(cr[coarse_mask], 0.1), + "o", + color=color_data, + ms=3, + mfc="none", + mew=0.8, + label="L2 coarse bin" if draw_legend else None, + ) + ax_f.semilogy( + bin_indices[fine_mask_useful], + np.maximum(cr[fine_mask_useful], 0.1), + "o", + color=color_data, + ms=4.0, + mfc=color_data, + mew=0, + label="L2 fine-sweep bin" if draw_legend else None, + ) + + coarse_steps = bin_indices[coarse_mask] + for curve, color, ls, label in ( + (s_curve, color_full, "-", "Fit (bins 1..71, incl. fine sweep)"), + (c_curve, color_coarse, "--", "Fit (bins 1..62, no fine sweep)"), + ): + ax_c.semilogy( + coarse_steps, + np.maximum(curve[coarse_steps], 0.1), + ls, + color=color, + lw=1.4, + label=label if draw_legend else None, + ) + x_dense, y_dense = _dense_fine(curve, v) + ax_f.semilogy( + x_dense, + np.maximum(y_dense, 0.1), + ls, + color=color, + lw=1.4, + ) + + def _peak_centroid(cr, v, peak_slice: slice): + """Sub-bin peak centroid (3-bin count-rate-weighted mean around the + brightest bin in `peak_slice`). Returns (bin_centroid, peak_rate).""" + bins = np.arange(peak_slice.start, peak_slice.stop) + sub_v = v[peak_slice] + sub_cr = cr[peak_slice] + ok = (sub_v > 0) & np.isfinite(sub_v) & np.isfinite(sub_cr) + if ok.sum() < 3: + return None, None + idx_local = int(np.argmax(np.where(ok, sub_cr, -np.inf))) + idx_global = bins[idx_local] + lo = max(peak_slice.start, idx_global - 1) + hi = min(peak_slice.stop, idx_global + 2) + win_bins = np.arange(lo, hi) + weights = np.maximum(cr[lo:hi], 0.0) + if weights.sum() == 0: + return None, None + return ( + float((win_bins * weights).sum() / weights.sum()), + float(cr[idx_global]), + ) + + def _add_peak_markers(panel, cr, v, *, draw_legend=False): + """'+' markers at the coarse-bin peak (purple) and fine-bin peak + (red), each annotated above the marker with E/q and rate.""" + ax_c, ax_f = panel + bin_grid = np.arange(72, dtype=float) + for peak_slice, sub_ax, color, marker_label in ( + (SWAPI_COARSE_SWEEP_BINS, ax_c, "tab:purple", "Coarse-bin peak"), + (SWAPI_FINE_SWEEP_BINS, ax_f, "tab:red", "Fine-bin peak"), + ): + peak_bin, peak_rate = _peak_centroid(cr, v, peak_slice) + if peak_bin is None: + continue + v_region = v[peak_slice] + bins_region = bin_grid[peak_slice] + ok_region = (v_region > 0) & np.isfinite(v_region) + v_at_peak = float( + np.interp(peak_bin, bins_region[ok_region], v_region[ok_region]) + ) + e_over_q_eV = SWAPI_K_FACTOR * v_at_peak + log10_rate = float(np.log10(max(peak_rate, 1.0))) + x_marker = peak_bin + sub_ax.plot( + [x_marker], + [peak_rate], + marker="+", + color=color, + ms=10, + mew=1.6, + zorder=5, + label=marker_label if draw_legend else None, + ) + text_transform = blended_transform_factory( + sub_ax.transData, sub_ax.transAxes + ) + sub_ax.text( + x_marker, + 0.98, + rf"${e_over_q_eV:.4g}\,\frac{{\mathrm{{eV}}}}{{k^*}},\ " + rf"10^{{{log10_rate:.2f}}}\,\mathrm{{Hz}}$", + transform=text_transform, + color=color, + fontsize=10, + va="top", + ha="center", + zorder=5, + clip_on=False, + ) + + panel_titles = [f"Sweep {i + 1}" for i in range(n_sweeps)] + panel_data = list(zip(voltages, count_rate, science_2d, coarse_2d)) + for i, (v, cr, s_curve, c_curve) in enumerate(panel_data): + panel = panel_axes[i] + _draw(panel, cr, s_curve, c_curve, v, draw_legend=(i == 0)) + _add_peak_markers(panel, cr, v, draw_legend=(i == 0)) + panel[1].set_ylabel(f"{panel_titles[i]}\nrate (Hz)", fontsize=9) + + avg_v = np.where(np.isnan(avg_voltage), 0.0, avg_voltage) + + peak = float(np.nanmax(count_rate)) + last_panel_idx = len(panel_axes) - 1 + seam_color = "k" + for i, (ax_c, ax_f) in enumerate(panel_axes): + ax_f.set_xscale("linear") + ax_f.set_xlim(fine_step_hi + 0.5, 65.5) + ax_c.set_xscale("linear") + ax_c.set_xlim(SWAPI_FINE_SWEEP_BINS.start - 0.5, 0.5) + ax_f.set_ylim(max(0.1, peak * 1e-5), peak * 60) + + ax_f.spines["right"].set_visible(True) + ax_f.spines["right"].set_color(seam_color) + ax_f.spines["right"].set_linewidth(1.0) + ax_c.spines["left"].set_visible(False) + ax_c.tick_params(left=False, labelleft=False) + for ax in (ax_f, ax_c): + ax.tick_params(labelsize=8) + ax.grid(True, which="both", alpha=0.25) + is_last = i == last_panel_idx + if is_last: + ax_f.set_xlabel("Fine Steps", fontsize=10) + ax_c.set_xlabel("Coarse Steps", fontsize=10) + ax_f.set_xticks([66, 68, 70, 71]) + ax_f.set_xticklabels(["66", "68", "70", "71"], fontsize=8) + ax_c.set_xticks([1, 10, 20, 30, 40, 50, 60]) + ax_c.set_xticklabels(["1", "10", "20", "30", "40", "50", "60"], fontsize=8) + ax_f.tick_params(labelbottom=True, bottom=True) + ax_c.tick_params(labelbottom=True, bottom=True) + else: + ax_f.tick_params(labelbottom=False) + ax_c.tick_params(labelbottom=False) + + fine_label_bins = [b for b in [66, 68, 70, 71] if avg_v[b] > 0] + coarse_label_bins = [b for b in [1, 5, 10, 20, 30, 40, 50, 60] if avg_v[b] > 0] + ax_c_top, ax_f_top = panel_axes[0] + top_f = ax_f_top.secondary_xaxis("top") + top_f.set_xticks(fine_label_bins) + top_f.set_xticklabels([f"{avg_v[b]:.0f}V" for b in fine_label_bins], fontsize=7) + top_f.tick_params(labelsize=7, pad=1) + top_c = ax_c_top.secondary_xaxis("top") + top_c.set_xticks(coarse_label_bins) + top_c.set_xticklabels([f"{avg_v[b]:.0f}V" for b in coarse_label_bins], fontsize=7) + top_c.set_xlabel("ESA voltage (V)", fontsize=9, labelpad=4) + top_c.tick_params(labelsize=7, pad=1) + + handles, labels = panel_axes[0][0].get_legend_handles_labels() + handles_f, labels_f = panel_axes[0][1].get_legend_handles_labels() + handles += handles_f + labels += labels_f + fig.legend( + handles, + labels, + loc="lower center", + ncol=len(handles), + fontsize=9, + bbox_to_anchor=(0.5, -0.02), + ) + + fig.tight_layout(rect=(0.0, 0.05, 1.0, 1.0)) + FIGURES_DIR.mkdir(parents=True, exist_ok=True) + out = FIGURES_DIR / "real_data_fit.svg" + fig.savefig(out, bbox_inches="tight") + print(f"\nSaved {out}") + + +def _tt2000ns_to_datetime(tt2000_ns: int) -> datetime: + """Convert TT2000 nanoseconds to a UTC datetime via spacepy.""" + return spacepy.pycdf.lib.tt2000_to_datetime(int(tt2000_ns)) + + +if __name__ == "__main__": + main() diff --git a/docs/swapi/figure_src/plot_spectra.py b/docs/swapi/figure_src/plot_spectra.py new file mode 100644 index 000000000..3b2bd58ba --- /dev/null +++ b/docs/swapi/figure_src/plot_spectra.py @@ -0,0 +1,193 @@ +#!/usr/bin/env python3 +""" +Plot ground-truth vs optimized count-rate spectra for several illustrative SW +configurations chosen to exercise the integrator's edges: + - cold (narrow Maxwellian, dynamic-limit speed window collapses to a sliver) + - hot (broad Maxwellian, fills the passband) + - bulk elevation past the SG passband edge (per-region elevation clamping) + - bulk azimuth straddling the SG/OA boundary (multi-region azimuth split) + - fast solar wind (passband shape at high beam energy) + +Each panel sweeps ESA voltage across the proton peak and overlays the dynamic- +limit JIT integrator (calculate_integral) against the fixed-limit, high-resolution +reference integrator (reference_integral_fixed_limits). + +Output: docs/swapi/figures/spectra.svg +Usage: python docs/swapi/figure_src/plot_spectra.py +""" + +import sys +from pathlib import Path + +sys.path.insert(0, str(Path(__file__).resolve().parents[3])) + +import matplotlib + +matplotlib.use("Agg") +import matplotlib.pyplot as plt +import numpy as np + +from imap_l3_processing.constants import ( + PROTON_MASS_KG, + PROTON_MASS_PER_CHARGE_M_P_PER_E, + EV_TO_KELVIN, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.forward_model import ( + calculate_integral, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.params import SolarWindParams +from scripts.swapi.reference_integral import reference_integral_fixed_limits +from figure_utils import ( + FIGURES_DIR, + bulk_velocity_rtn_from_swapi_angles, + load_swapi_response, + peak_esa_voltage_for_proton_bulk_speed, +) + + +# (label, bulk_speed, T_K, bulk_azimuth, bulk_elevation, density) +CASES = [ + ( + "Nominal: 450 km/s, T = 116,045 K, on-axis", + 450, + 10.0 * EV_TO_KELVIN, + 0.0, + 0.0, + 5.0, + ), + ("Cold: 450 km/s, T = 11,605 K, on-axis", 450, 1.0 * EV_TO_KELVIN, 0.0, 0.0, 5.0), + ( + "Hot: 450 km/s, T = 1,160,452 K, on-axis", + 450, + 100.0 * EV_TO_KELVIN, + 0.0, + 0.0, + 5.0, + ), + ( + "Off-axis elevation: $\\theta_b = 9\\degree$ (past SG edge)", + 450, + 10.0 * EV_TO_KELVIN, + 0.0, + 9.0, + 5.0, + ), + ( + "Off-axis azimuth: $\\phi_b = 18\\degree$ (near SG/OA edge)", + 450, + 10.0 * EV_TO_KELVIN, + 18.0, + 0.0, + 5.0, + ), + ( + "Fast SW: 700 km/s, T = 232,090 K, on-axis", + 700, + 20.0 * EV_TO_KELVIN, + 0.0, + 0.0, + 5.0, + ), +] + + +def main(): + print("Loading calibration data...") + swapi_response = load_swapi_response() + + n_voltages = 60 + fig, axes = plt.subplots(2, 3, figsize=(15, 8)) + + rotation_matrix = np.eye(3) + + handles_for_legend = None + for ax, (label, v_b, T_k, az, el, density) in zip(axes.flat, CASES): + v_peak = peak_esa_voltage_for_proton_bulk_speed(v_b) + esa_voltages = np.logspace( + np.log10(0.4 * v_peak), np.log10(2.5 * v_peak), n_voltages + ) + sw = SolarWindParams( + density=density, + bulk_velocity_rtn=bulk_velocity_rtn_from_swapi_angles(v_b, az, el), + temperature=T_k, + mass=PROTON_MASS_KG, + ) + + optimized = np.empty(n_voltages) + reference = np.empty(n_voltages) + swapi_response.warm_cache(esa_voltages) + for i, v in enumerate(esa_voltages): + response_grid = swapi_response.get_response_grid( + float(v), PROTON_MASS_PER_CHARGE_M_P_PER_E, 1.0 + ) + rate, _ = calculate_integral(sw, response_grid, rotation_matrix) + optimized[i] = rate + reference[i] = reference_integral_fixed_limits( + response_grid, sw, rotation_matrix + ) + + (h_ref,) = ax.plot( + esa_voltages, + reference, + "k-", + linewidth=2, + label="Ground truth (fixed limits)", + ) + (h_prod,) = ax.plot( + esa_voltages, + optimized, + "o", + color="tab:orange", + markersize=4, + markerfacecolor="none", + markeredgewidth=1.2, + label="Optimized (dynamic limits)", + ) + h_peak = ax.axvline( + v_peak, + color="gray", + linestyle=":", + linewidth=0.8, + alpha=0.7, + label="$v_b$ central voltage", + ) + if handles_for_legend is None: + handles_for_legend = [h_ref, h_prod, h_peak] + + ax.set_xscale("log") + ax.set_yscale("log") + ax.set_xlabel("ESA voltage (V)") + ax.set_ylabel("Count rate (Hz)") + ax.set_title(label, fontsize=10) + + peak_rate = max(reference.max(), optimized.max(), 1.0) + ax.set_ylim(peak_rate * 1e-6, peak_rate * 3) + ax.grid(True, which="both", alpha=0.3) + + nz = reference > 1.0 + if nz.any(): + rel = np.abs(optimized[nz] - reference[nz]) / reference[nz] + print(f" {label}: max |rel err| above 1 Hz = {rel.max():.2%}") + + fig.suptitle( + "Production vs ground-truth count-rate spectra for representative SW configurations", + fontsize=13, + ) + fig.legend( + handles=handles_for_legend, + loc="lower center", + ncol=3, + bbox_to_anchor=(0.5, -0.01), + fontsize=10, + frameon=False, + ) + fig.tight_layout(rect=[0, 0.03, 1, 1]) + + FIGURES_DIR.mkdir(parents=True, exist_ok=True) + out = FIGURES_DIR / "spectra.svg" + fig.savefig(out, bbox_inches="tight") + print(f"Saved {out}") + + +if __name__ == "__main__": + main() diff --git a/docs/swapi/figure_src/plot_uncertainty_mc.py b/docs/swapi/figure_src/plot_uncertainty_mc.py new file mode 100644 index 000000000..a0d81e173 --- /dev/null +++ b/docs/swapi/figure_src/plot_uncertainty_mc.py @@ -0,0 +1,476 @@ +#!/usr/bin/env python3 +""" +MC validation of the proton-fit Huber–White sandwich uncertainty estimator. + +Holds one typical solar-wind ground truth fixed and varies only the Poisson +seed across many synthetic 5-sweep chunks. The width of the resulting +distribution of fitted parameters is the *true* sampling sigma; the +distribution of per-fit estimated sigmas is what the sandwich estimator +reports. A correctly-calibrated estimator places the histogram of estimated +sigmas (row 2) at the spread of the histogram of fitted parameters (row 1). + +Output: docs/swapi/figures/uncertainty_mc.svg +Usage: conda run -n imapL3 python docs/swapi/figure_src/plot_uncertainty_mc.py +""" + +import sys +from pathlib import Path + +sys.path.insert(0, str(Path(__file__).resolve().parents[3])) + +import types + +import numpy as np +import pandas as pd +import matplotlib + +matplotlib.use("Agg") +import matplotlib.pyplot as plt + +from imap_l3_processing.constants import ( + PROTON_MASS_KG, + PROTON_MASS_PER_CHARGE_M_P_PER_E, +) +from imap_l3_processing.swapi.constants import SWAPI_LIVETIME_S +from figure_utils import ( + COARSE_BIN_INDICES_IN_SWEEP, + COARSE_SWEEP_VOLTAGES_MEAN_V, + FIGURES_DIR, + compute_per_bin_rotation_matrices, + load_swapi_response, + run_parallel_map, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.proton.initial_guess import ( + calculate_initial_guess, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.optimizer import ( + optimize_solar_wind_params, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.proton.basin_hopping import ( + escape_local_minimum, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.uncertainties import ( + derive_uncertainties, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.params import ( + LOG_DENSITY_IDX, + LOG_TEMPERATURE_IDX, + VELOCITY_SLICE, + SolarWindParams, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.forward_model import ( + model_solar_wind_ideal_coincidence_rates, +) +from imap_l3_processing.swapi.response.deadtime import deadtime_factor +from imap_l3_processing.swapi.l3a.science.solar_wind.fit_context import ( + build_solar_wind_fit_context, +) + +_N_SWEEPS = 5 +_N_BINS = len(COARSE_SWEEP_VOLTAGES_MEAN_V) + +# Typical moderate-speed solar-wind ground truth: density 5 cm^-3, T 1e5 K, +# bulk +450 km/s radial with small T/N components. +_TRUTH_DENSITY_CM3 = 5.0 +_TRUTH_TEMPERATURE_K = 1.0e5 +_TRUTH_BULK_RTN_KM_S = np.array([450.0, 5.0, -3.0]) +_N_MC_SAMPLES = 1000 +_LOGNORMAL_REL_SIGMA = 0.01 # 1% relative error in count rates +# Energy-independent Poisson noise floor (Hz), applied alongside the log-normal +# multiplicative case. Models a constant detector dark/leakage rate that the +# proton model does not account for — every bin gets Poisson(floor·τ) counts +# added on top of the signal. +_NOISE_FLOOR_HZ = 10.0 + +_worker_state: types.SimpleNamespace | None = None +_NOISE_KIND: str = "poisson" + + +def main(): + _initialize_worker_state() + poisson_data = _run_fits(_N_MC_SAMPLES, noise_kind="poisson") + poisson_lognormal_floor_data = _run_fits( + _N_MC_SAMPLES, noise_kind="poisson+lognormal+floor" + ) + _plot_results( + [ + ("Poisson noise (counts)", poisson_data), + ( + f"Poisson + {_LOGNORMAL_REL_SIGMA:.0%} log-normal " + f"+ {_NOISE_FLOOR_HZ:g} Hz floor", + poisson_lognormal_floor_data, + ), + ] + ) + + +def _initialize_worker_state() -> None: + global _worker_state + + swapi_response = load_swapi_response() + all_esa_voltages = np.tile(COARSE_SWEEP_VOLTAGES_MEAN_V, _N_SWEEPS) + swapi_response.warm_cache(all_esa_voltages) + per_bin_rotation_matrices = compute_per_bin_rotation_matrices( + _N_SWEEPS, COARSE_BIN_INDICES_IN_SWEEP + ) + base_ctx = build_solar_wind_fit_context( + count_rate=np.ones_like(all_esa_voltages), + esa_voltage=all_esa_voltages, + swapi_response=swapi_response, + central_effective_area_scale=1.0, + rotation_matrices=per_bin_rotation_matrices, + mass_kg=PROTON_MASS_KG, + mass_per_charge_m_p_per_e=PROTON_MASS_PER_CHARGE_M_P_PER_E, + ) + + truth_params = SolarWindParams( + density=_TRUTH_DENSITY_CM3, + bulk_velocity_rtn=_TRUTH_BULK_RTN_KM_S.copy(), + temperature=_TRUTH_TEMPERATURE_K, + mass=PROTON_MASS_KG, + ) + ideal_rates, _ = model_solar_wind_ideal_coincidence_rates(truth_params, base_ctx) + truth_count_rates = ideal_rates * deadtime_factor(ideal_rates) + + _worker_state = types.SimpleNamespace( + swapi_response=swapi_response, + all_esa_voltages=all_esa_voltages, + per_bin_rotation_matrices=per_bin_rotation_matrices, + truth_count_rates=truth_count_rates, + ) + + +def _run_fits(n_samples: int, noise_kind: str) -> pd.DataFrame: + global _NOISE_KIND + _NOISE_KIND = noise_kind + rows = run_parallel_map( + _process_one, n_samples, desc=f"mc-{noise_kind}", chunksize=10 + ) + data = pd.DataFrame(rows) + print(f"Bad-fit flags: {data['bad_flag'].sum()}/{n_samples}") + return data + + +def _process_one(i): + ws = _worker_state + rng = np.random.default_rng(i) + counts = rng.poisson(np.maximum(ws.truth_count_rates * SWAPI_LIVETIME_S, 0.0)) + count_rates = counts.astype(float) / SWAPI_LIVETIME_S + if _NOISE_KIND == "poisson": + pass + elif _NOISE_KIND == "poisson+lognormal+floor": + # Multiplicative log-normal noise on top of Poisson sampling, with + # std-dev ≈ _LOGNORMAL_REL_SIGMA in linear space. Mean-1 correction: + # shift by -σ²/2 in log space. + sigma_log = np.sqrt(np.log1p(_LOGNORMAL_REL_SIGMA**2)) + log_factor = rng.normal(-0.5 * sigma_log**2, sigma_log, count_rates.shape) + count_rates = np.maximum(count_rates * np.exp(log_factor), 0.0) + # Energy-independent Poisson noise floor: every bin gets Poisson(floor·τ) + # counts added — a stand-in for unmodelled detector dark/leakage rate. + # The mean adds 10 Hz to obs at every bin; the variance is √(floor·τ)/τ + # ≈ 8 Hz per bin. The fit's model does not account for this. + floor_counts = rng.poisson( + _NOISE_FLOOR_HZ * SWAPI_LIVETIME_S, size=count_rates.shape + ) + count_rates = count_rates + floor_counts.astype(float) / SWAPI_LIVETIME_S + else: + raise ValueError(f"unknown noise_kind: {_NOISE_KIND}") + + fit_ctx = build_solar_wind_fit_context( + count_rate=count_rates, + esa_voltage=ws.all_esa_voltages, + swapi_response=ws.swapi_response, + central_effective_area_scale=1.0, + rotation_matrices=ws.per_bin_rotation_matrices, + mass_kg=PROTON_MASS_KG, + mass_per_charge_m_p_per_e=PROTON_MASS_PER_CHARGE_M_P_PER_E, + ) + sigma_keys = [ + "fit_density_sigma", + "fit_temperature_sigma", + "fit_radial_speed_sigma", + "fit_tangential_speed_sigma", + "fit_normal_speed_sigma", + ] + nan_row = { + k: float("nan") + for k in [ + "fit_density", + "fit_temperature", + "fit_radial_speed", + "fit_tangential_speed", + "fit_normal_speed", + *sigma_keys, + *(f"ols_{k}" for k in sigma_keys), + ] + } | {"bad_flag": True} + try: + initial_guess = calculate_initial_guess(fit_ctx) + first_result = optimize_solar_wind_params(initial_guess, fit_ctx) + final_result = escape_local_minimum(first_result, fit_ctx) + except Exception as e: + print(f" case {i}: fit failed ({type(e).__name__}: {e})") + return nan_row + + sw = final_result.sw_params + sandwich_n_sigma, sandwich_T_sigma, sandwich_v_cov = derive_uncertainties( + final_result, fit_ctx + ) + ols_n_sigma, ols_T_sigma, ols_v_sigma = _uncorrected_sigmas(final_result) + sandwich_v_sigma = np.sqrt(np.maximum(np.diag(sandwich_v_cov), 0.0)) + + return { + "fit_density": sw.density, + "fit_temperature": sw.temperature, + "fit_radial_speed": float(sw.bulk_velocity_rtn[0]), + "fit_tangential_speed": float(sw.bulk_velocity_rtn[1]), + "fit_normal_speed": float(sw.bulk_velocity_rtn[2]), + "fit_density_sigma": sandwich_n_sigma, + "fit_temperature_sigma": sandwich_T_sigma, + "fit_radial_speed_sigma": float(sandwich_v_sigma[0]), + "fit_tangential_speed_sigma": float(sandwich_v_sigma[1]), + "fit_normal_speed_sigma": float(sandwich_v_sigma[2]), + "ols_fit_density_sigma": ols_n_sigma, + "ols_fit_temperature_sigma": ols_T_sigma, + "ols_fit_radial_speed_sigma": float(ols_v_sigma[0]), + "ols_fit_tangential_speed_sigma": float(ols_v_sigma[1]), + "ols_fit_normal_speed_sigma": float(ols_v_sigma[2]), + "bad_flag": bool(not final_result.success), + } + + +def _uncorrected_sigmas(opt_result) -> tuple[float, float, np.ndarray]: + """Previous uncorrected formula: σ² = (Σr²/(N − K)) · pinv(JᵀJ). Assumes + homoscedastic residuals; replaced by the Huber–White sandwich. Reproduced + here for MC comparison only.""" + J = opt_result.jacobian + n_params = J.shape[1] + n_obs = len(opt_result.residuals) + residual_variance = float(np.sum(opt_result.residuals**2)) / max( + n_obs - n_params, 1 + ) + try: + cov = residual_variance * np.linalg.pinv(J.T @ J) + except np.linalg.LinAlgError: + return float("nan"), float("nan"), np.full(3, float("nan")) + log_n_var = cov[LOG_DENSITY_IDX, LOG_DENSITY_IDX] + log_T_var = cov[LOG_TEMPERATURE_IDX, LOG_TEMPERATURE_IDX] + velocity_cov = cov[VELOCITY_SLICE, VELOCITY_SLICE] + sw = opt_result.sw_params + return ( + float(sw.density * np.sqrt(max(log_n_var, 0.0))), + float(sw.temperature * np.sqrt(max(log_T_var, 0.0))), + np.sqrt(np.maximum(np.diag(velocity_cov), 0.0)), + ) + + +def _plot_results(experiments: list[tuple[str, pd.DataFrame]]) -> None: + columns = [ + ( + "Density (cm⁻³)", + "fit_density", + "fit_density_sigma", + "ols_fit_density_sigma", + _TRUTH_DENSITY_CM3, + ), + ( + "Temperature (K)", + "fit_temperature", + "fit_temperature_sigma", + "ols_fit_temperature_sigma", + _TRUTH_TEMPERATURE_K, + ), + ( + "$v_R$ (km/s)", + "fit_radial_speed", + "fit_radial_speed_sigma", + "ols_fit_radial_speed_sigma", + _TRUTH_BULK_RTN_KM_S[0], + ), + ( + "$v_T$ (km/s)", + "fit_tangential_speed", + "fit_tangential_speed_sigma", + "ols_fit_tangential_speed_sigma", + _TRUTH_BULK_RTN_KM_S[1], + ), + ( + "$v_N$ (km/s)", + "fit_normal_speed", + "fit_normal_speed_sigma", + "ols_fit_normal_speed_sigma", + _TRUTH_BULK_RTN_KM_S[2], + ), + ] + + n_experiments = len(experiments) + fig, axes = plt.subplots(2 * n_experiments, 5, figsize=(17, 6.5 * n_experiments)) + if n_experiments == 1: + axes = np.array([axes[0], axes[1]]).reshape(2, 5) + fig.suptitle( + f"Sandwich-estimator MC validation: one truth\n" + f"(n={_TRUTH_DENSITY_CM3:g} cm⁻³, T={_TRUTH_TEMPERATURE_K:.0e} K, " + f"v_RTN=({_TRUTH_BULK_RTN_KM_S[0]:g}, {_TRUTH_BULK_RTN_KM_S[1]:g}, " + f"{_TRUTH_BULK_RTN_KM_S[2]:g}) km/s, " + f"{_N_SWEEPS} sweeps × {_N_BINS} coarse bins)", + fontsize=11, + ) + + color_fits = "tab:blue" + color_sandwich = "tab:orange" + color_ols = "tab:green" + + for exp_idx, (exp_label, data) in enumerate(experiments): + good = ~data["bad_flag"] + n_good = int(good.sum()) + row_top = 2 * exp_idx + row_bot = 2 * exp_idx + 1 + # Group label on the left margin + fig.text( + 0.005, + 1.0 - (exp_idx + 0.5) / n_experiments, + f"{exp_label}\n(n={n_good} MC samples)", + ha="left", + va="center", + fontsize=10, + rotation=90, + weight="bold", + ) + + for col_idx, ( + label, + fit_key, + sigma_key, + ols_sigma_key, + truth, + ) in enumerate(columns): + fits = data.loc[good, fit_key].to_numpy() + sigmas = data.loc[good, sigma_key].to_numpy() + ols_sigmas = data.loc[good, ols_sigma_key].to_numpy() + empirical_sigma = float(np.nanstd(fits, ddof=1)) + bias = float(np.nanmean(fits)) - truth + + ax_top = axes[row_top, col_idx] + ax_top.hist( + fits, + bins=40, + color=color_fits, + alpha=0.75, + edgecolor="white", + rasterized=True, + ) + ax_top.axvline(truth, color="k", lw=1.0, ls="--", alpha=0.7, label="truth") + ax_top.set_title(label, fontsize=10) + ax_top.set_xlabel(f"Fitted {label}", fontsize=9) + ax_top.set_ylabel("MC count", fontsize=9) + ax_top.tick_params(labelsize=8) + ax_top.grid(True, alpha=0.25) + ax_top.annotate( + f"empirical σ = {_format_sigma(empirical_sigma, label)}\n" + f"bias (mean − truth) = {_format_signed_sigma(bias, label)} " + f"({bias / empirical_sigma:+.2f} σ)", + xy=(0.04, 0.97), + xycoords="axes fraction", + va="top", + ha="left", + fontsize=7.5, + bbox=dict(boxstyle="round,pad=0.3", fc="white", alpha=0.8), + ) + if col_idx == 0: + ax_top.legend(fontsize=7, loc="upper right", framealpha=0.8) + + # Bottom row: histograms of normalized residuals (fit − truth) / σ̂. + # A well-calibrated σ̂ estimator gives a unit Gaussian; a σ̂ that + # understates the true scatter by factor k gives a Gaussian of + # width k. Tells the reader at a glance whether the bars are right. + ax_bot = axes[row_bot, col_idx] + normalized_resid_sandwich = (fits - truth) / sigmas + normalized_resid_ols = (fits - truth) / ols_sigmas + finite_sw = normalized_resid_sandwich[ + np.isfinite(normalized_resid_sandwich) + ] + finite_ols_n = normalized_resid_ols[np.isfinite(normalized_resid_ols)] + x_max = float(np.nanmax(np.abs(np.concatenate([finite_sw, finite_ols_n])))) + x_max = max(x_max, 4.0) # always show at least ±4σ + bins_norm = np.linspace(-x_max, x_max, 51) + ax_bot.hist( + normalized_resid_ols, + bins=bins_norm, + color=color_ols, + alpha=0.6, + edgecolor="white", + label="Uncorrected", + rasterized=True, + ) + ax_bot.hist( + normalized_resid_sandwich, + bins=bins_norm, + color=color_sandwich, + alpha=0.75, + edgecolor="white", + label="HC3 sandwich", + rasterized=True, + ) + # Reference: the unit-σ Gaussian a calibrated estimator should produce. + n_good_finite = max(len(finite_sw), 1) + bin_width = bins_norm[1] - bins_norm[0] + x_ref = np.linspace(-x_max, x_max, 200) + unit_gaussian_pdf = ( + (np.exp(-0.5 * x_ref**2) / np.sqrt(2 * np.pi)) + * n_good_finite + * bin_width + ) + ax_bot.plot( + x_ref, + unit_gaussian_pdf, + color="k", + lw=1.2, + ls="--", + alpha=0.7, + label="N(0, 1) (calibrated)", + ) + sandwich_calibration = float(np.nanstd(finite_sw, ddof=1)) + ols_calibration = float(np.nanstd(finite_ols_n, ddof=1)) + ax_bot.set_xlabel(f"(fit − truth) / σ̂ for {label}", fontsize=9) + ax_bot.set_ylabel("MC count", fontsize=9) + ax_bot.tick_params(labelsize=8) + ax_bot.grid(True, alpha=0.25) + ax_bot.annotate( + f"std of (fit − truth)/σ̂_HC3 = {sandwich_calibration:.2f}\n" + f"std of (fit − truth)/σ̂_uncorrected = {ols_calibration:.2f}", + xy=(0.04, 0.97), + xycoords="axes fraction", + va="top", + ha="left", + fontsize=7.5, + bbox=dict(boxstyle="round,pad=0.3", fc="white", alpha=0.8), + ) + if col_idx == 0: + ax_bot.legend(fontsize=7, loc="upper right", framealpha=0.8) + + fig.tight_layout(rect=(0.03, 0.0, 1.0, 1.0)) + + FIGURES_DIR.mkdir(parents=True, exist_ok=True) + out_path = FIGURES_DIR / "uncertainty_mc.svg" + fig.savefig(out_path, bbox_inches="tight", dpi=200) + print(f"Saved {out_path}") + + +def _format_sigma(value: float, label: str) -> str: + if "Density" in label: + return f"{value:.3f} cm⁻³" + if "Temperature" in label: + return f"{value:.2e} K" + return f"{value:.2f} km/s" + + +def _format_signed_sigma(value: float, label: str) -> str: + if "Density" in label: + return f"{value:+.3f} cm⁻³" + if "Temperature" in label: + return f"{value:+.2e} K" + return f"{value:+.2f} km/s" + + +if __name__ == "__main__": + main() diff --git a/docs/swapi/figure_src/wind_solar_wind_samples_2025.csv b/docs/swapi/figure_src/wind_solar_wind_samples_2025.csv new file mode 100644 index 000000000..447e2e05f --- /dev/null +++ b/docs/swapi/figure_src/wind_solar_wind_samples_2025.csv @@ -0,0 +1,10001 @@ +year,fdoy,fit_flag,proton_bulk_speed_km_s,proton_thermal_speed_km_s,proton_density_cm3,proton_vx_gse_km_s,proton_vy_gse_km_s,proton_vz_gse_km_s,v_R_km_s,v_T_km_s,v_N_km_s,proton_temperature_K +2025,1.115667,10,465.500,50.500,19.7490,-464.600,25.100,16.100,464.600,-25.100,16.100,1.545e+05 +2025,1.131964,10,463.500,40.800,20.3540,-462.400,19.400,24.400,462.400,-19.400,24.400,1.008e+05 +2025,1.134292,10,463.100,44.900,29.2220,-462.000,23.700,21.200,462.000,-23.700,21.200,1.221e+05 +2025,1.145860,10,483.700,44.400,20.3660,-483.500,8.800,-7.700,483.500,-8.800,-7.700,1.194e+05 +2025,1.172596,10,486.200,51.600,36.9210,-484.600,37.100,-13.200,484.600,-37.100,-13.200,1.613e+05 +2025,1.174924,10,483.600,52.900,37.2960,-481.900,40.300,-5.600,481.900,-40.300,-5.600,1.695e+05 +2025,1.181908,10,489.700,50.500,35.4140,-489.000,23.300,-11.600,489.000,-23.300,-11.600,1.545e+05 +2025,1.207408,10,503.700,40.900,23.4970,-503.000,11.800,-23.800,503.000,-11.800,-23.800,1.013e+05 +2025,1.250477,10,509.000,27.900,9.5350,-507.000,-8.300,-43.300,507.000,8.300,-43.300,4.715e+04 +2025,1.273758,10,527.500,37.500,19.4520,-526.900,16.500,-19.700,526.900,-16.500,-19.700,8.518e+04 +2025,1.379540,10,509.900,57.800,17.2160,-509.000,16.200,-26.400,509.000,-16.200,-26.400,2.024e+05 +2025,1.435341,10,521.900,21.100,21.4980,-516.000,38.100,-67.900,516.000,-38.100,-67.900,2.697e+04 +2025,1.436505,10,522.700,22.900,24.5330,-518.700,28.000,-58.400,518.700,-28.000,-58.400,3.177e+04 +2025,1.447018,10,524.600,22.100,21.6700,-522.100,17.000,-48.500,522.100,-17.000,-48.500,2.958e+04 +2025,1.453965,10,519.900,23.500,23.7030,-516.900,14.500,-53.900,516.900,-14.500,-53.900,3.345e+04 +2025,1.456293,10,521.000,25.900,30.2540,-518.200,14.300,-52.700,518.200,-14.300,-52.700,4.063e+04 +2025,1.459786,10,526.200,32.500,31.6900,-524.200,24.200,-39.000,524.200,-24.200,-39.000,6.398e+04 +2025,1.464442,10,532.800,33.600,30.7720,-530.900,23.800,-38.400,530.900,-23.800,-38.400,6.839e+04 +2025,1.465606,10,551.400,23.900,24.8800,-550.700,7.000,-26.800,550.700,-7.000,-26.800,3.460e+04 +2025,1.482993,10,541.800,24.700,38.6230,-540.900,4.500,-29.400,540.900,-4.500,-29.400,3.696e+04 +2025,1.486485,10,544.200,27.200,26.6320,-542.600,-3.600,-41.300,542.600,3.600,-41.300,4.481e+04 +2025,1.493506,10,537.800,28.500,29.0540,-536.400,11.600,-36.800,536.400,-11.600,-36.800,4.920e+04 +2025,1.513258,10,528.100,21.800,30.4110,-527.700,-4.800,-20.600,527.700,4.800,-20.600,2.879e+04 +2025,1.537630,10,514.300,28.000,36.3100,-512.400,-31.500,-31.000,512.400,31.500,-31.000,4.749e+04 +2025,1.538794,10,516.900,27.000,33.7810,-514.900,-31.800,-32.200,514.900,31.800,-32.200,4.416e+04 +2025,1.549270,10,501.000,22.200,22.8840,-499.200,-33.400,-25.700,499.200,33.400,-25.700,2.985e+04 +2025,1.559710,10,521.000,38.100,19.5030,-519.100,-42.100,-16.500,519.100,42.100,-16.500,8.793e+04 +2025,1.565531,10,521.800,45.700,10.1630,-519.900,-41.700,-13.200,519.900,41.700,-13.200,1.265e+05 +2025,1.567859,10,529.300,43.800,10.4660,-527.000,-45.200,-19.700,527.000,45.200,-19.700,1.162e+05 +2025,1.579463,10,501.500,32.300,13.1260,-500.900,-22.600,7.100,500.900,22.600,7.100,6.320e+04 +2025,1.594631,10,489.200,49.900,13.9910,-488.800,4.100,-20.400,488.800,-4.100,-20.400,1.508e+05 +2025,1.606272,10,488.600,38.500,11.5210,-488.100,17.700,-11.200,488.100,-17.700,-11.200,8.979e+04 +2025,1.643448,10,486.600,35.200,10.2910,-486.000,6.000,-23.300,486.000,-6.000,-23.300,7.505e+04 +2025,1.681752,10,537.000,55.700,12.4990,-531.100,-0.200,-79.900,531.100,0.200,-79.900,1.879e+05 +2025,1.692229,10,512.800,27.600,17.3300,-511.500,2.000,-37.200,511.500,-2.000,-37.200,4.614e+04 +2025,1.696885,10,524.800,36.300,32.8760,-521.300,-1.500,-60.200,521.300,1.500,-60.200,7.982e+04 +2025,1.721293,10,528.600,23.300,60.7860,-526.400,-5.700,-47.000,526.400,5.700,-47.000,3.288e+04 +2025,1.727077,10,526.600,23.200,22.6360,-524.100,-7.900,-50.300,524.100,7.900,-50.300,3.260e+04 +2025,1.737553,10,532.000,17.900,18.0090,-530.600,-15.200,-36.100,530.600,15.200,-36.100,1.941e+04 +2025,1.743374,10,531.800,15.900,22.3970,-529.600,-9.500,-47.400,529.600,9.500,-47.400,1.531e+04 +2025,1.770074,10,537.200,17.700,48.2340,-534.800,-18.000,-47.400,534.800,18.000,-47.400,1.898e+04 +2025,1.779350,10,530.000,17.300,33.6910,-528.300,-17.700,-38.800,528.300,17.700,-38.800,1.813e+04 +2025,1.794482,10,527.500,18.900,33.0650,-525.300,-9.700,-47.300,525.300,9.700,-47.300,2.164e+04 +2025,1.850320,10,515.200,14.400,15.4440,-513.500,-11.800,-40.500,513.500,11.800,-40.500,1.256e+04 +2025,1.851484,10,517.400,14.600,17.9910,-515.500,-12.200,-43.500,515.500,12.200,-43.500,1.291e+04 +2025,1.897936,10,512.600,15.100,16.6480,-510.000,-31.800,-41.000,510.000,31.800,-41.000,1.381e+04 +2025,1.916524,10,517.800,13.800,9.0290,-516.200,-29.400,-27.700,516.200,29.400,-27.700,1.154e+04 +2025,1.923472,10,520.900,12.400,8.4740,-519.400,-30.700,-26.300,519.400,30.700,-26.300,9.314e+03 +2025,1.942060,10,531.600,9.200,6.7830,-531.200,-11.900,-17.800,531.200,11.900,-17.800,5.127e+03 +2025,1.968833,10,526.600,9.500,5.9650,-526.400,-6.900,-13.800,526.400,6.900,-13.800,5.467e+03 +2025,1.978109,10,524.800,10.700,5.9390,-524.800,-2.300,-9.400,524.800,2.300,-9.400,6.935e+03 +2025,1.990877,10,518.300,11.300,5.8070,-518.300,0.500,-4.200,518.300,-0.500,-4.200,7.735e+03 +2025,2.000226,10,518.600,15.700,6.0740,-518.600,2.400,-7.200,518.600,-2.400,-7.200,1.493e+04 +2025,2.024598,10,521.600,16.700,15.0110,-521.600,-0.500,1.600,521.600,0.500,1.600,1.689e+04 +2025,2.025762,10,518.200,15.900,12.4590,-518.200,3.200,-0.200,518.200,-3.200,-0.200,1.531e+04 +2025,2.029254,10,521.000,16.400,14.8520,-521.000,-6.200,1.900,521.000,6.200,1.900,1.629e+04 +2025,2.033874,10,521.100,16.500,10.0250,-520.800,-16.300,2.800,520.800,16.300,2.800,1.649e+04 +2025,2.044350,10,510.000,12.800,6.3360,-509.900,-8.000,-1.900,509.900,8.000,-1.900,9.924e+03 +2025,2.052535,10,508.600,13.800,5.8730,-508.500,-8.400,-1.500,508.500,8.400,-1.500,1.154e+04 +2025,2.054863,10,507.800,13.300,6.0300,-507.700,-6.500,-2.500,507.700,6.500,-2.500,1.071e+04 +2025,2.057191,10,507.800,14.000,5.4460,-507.800,-2.700,-3.200,507.800,2.700,-3.200,1.187e+04 +2025,2.069959,10,506.300,11.800,6.0520,-506.200,-8.800,-6.000,506.200,8.800,-6.000,8.434e+03 +2025,2.075743,10,505.900,10.700,5.7970,-505.800,-2.500,-8.000,505.800,2.500,-8.000,6.935e+03 +2025,2.094331,10,506.700,11.000,6.4950,-506.600,-1.400,-8.700,506.600,1.400,-8.700,7.329e+03 +2025,2.102479,10,508.200,10.600,6.2560,-508.000,-6.400,-12.300,508.000,6.400,-12.300,6.806e+03 +2025,2.187272,10,475.200,23.500,8.8030,-473.200,2.900,-42.800,473.200,-2.900,-42.800,3.345e+04 +2025,2.212918,10,499.500,30.900,7.8040,-498.500,-13.900,-29.000,498.500,13.900,-29.000,5.784e+04 +2025,2.224485,10,484.600,21.200,9.3710,-482.600,-22.400,-37.300,482.600,22.400,-37.300,2.722e+04 +2025,2.248930,10,502.600,27.200,7.6280,-501.300,-3.400,-36.100,501.300,3.400,-36.100,4.481e+04 +2025,2.318736,10,569.100,42.800,13.4210,-568.800,-8.000,-17.500,568.800,8.000,-17.500,1.110e+05 +2025,2.360532,10,534.800,47.200,15.8530,-533.100,-36.300,-22.000,533.100,36.300,-22.000,1.349e+05 +2025,2.382613,10,534.700,52.600,16.8320,-532.000,-30.400,-44.500,532.000,30.400,-44.500,1.676e+05 +2025,2.391889,10,516.900,50.300,17.8030,-514.800,-20.100,-42.200,514.800,20.100,-42.200,1.533e+05 +2025,2.395381,10,516.300,51.600,16.6050,-513.500,-20.400,-49.800,513.500,20.400,-49.800,1.613e+05 +2025,2.408185,10,538.200,46.000,11.4520,-537.800,-21.200,1.500,537.800,21.200,1.500,1.282e+05 +2025,2.425682,10,521.900,42.500,7.9280,-521.500,-21.100,1.800,521.500,21.100,1.800,1.094e+05 +2025,2.429174,10,523.100,41.700,10.0170,-522.900,-16.700,-2.900,522.900,16.700,-2.900,1.053e+05 +2025,2.459366,10,528.900,42.000,9.0460,-528.400,21.600,10.600,528.400,-21.600,10.600,1.069e+05 +2025,2.490868,10,519.700,22.000,6.3100,-518.900,27.800,-2.000,518.900,-27.800,-2.000,2.932e+04 +2025,2.524516,10,539.700,18.500,7.1310,-538.900,20.500,19.000,538.900,-20.500,19.000,2.073e+04 +2025,2.568676,10,534.100,32.200,7.7230,-532.100,45.900,5.200,532.100,-45.900,5.200,6.281e+04 +2025,2.593157,10,536.600,22.000,7.6260,-535.000,40.600,7.700,535.000,-40.600,7.700,2.932e+04 +2025,2.607089,10,477.300,25.700,6.4270,-475.800,0.500,37.200,475.800,-0.500,37.200,4.001e+04 +2025,2.622186,10,514.700,28.100,10.3450,-512.100,46.400,23.900,512.100,-46.400,23.900,4.783e+04 +2025,2.679187,10,485.200,22.300,9.0380,-484.200,19.300,-25.300,484.200,-19.300,-25.300,3.012e+04 +2025,2.691991,10,491.000,19.100,9.7220,-490.000,25.300,-18.600,490.000,-25.300,-18.600,2.210e+04 +2025,2.709525,10,534.700,21.500,7.7020,-534.300,8.100,18.000,534.300,-8.100,18.000,2.800e+04 +2025,2.710689,10,527.200,18.100,4.8230,-527.000,1.300,14.800,527.000,-1.300,14.800,1.984e+04 +2025,2.737425,10,492.400,23.300,5.2920,-492.000,-10.100,-15.700,492.000,10.100,-15.700,3.288e+04 +2025,2.742045,10,489.500,23.100,7.3670,-489.000,-13.100,-16.000,489.000,13.100,-16.000,3.232e+04 +2025,2.758305,10,490.100,23.700,7.5020,-489.500,-13.000,-20.100,489.500,13.000,-20.100,3.402e+04 +2025,2.774565,10,486.600,24.500,6.3150,-486.200,-13.500,-13.700,486.200,13.500,-13.700,3.636e+04 +2025,2.787334,10,491.300,21.000,5.9270,-491.100,-12.100,-6.700,491.100,12.100,-6.700,2.671e+04 +2025,2.794318,10,487.000,23.500,6.2580,-486.500,-18.900,-11.800,486.500,18.900,-11.800,3.345e+04 +2025,2.812979,10,485.900,21.500,5.7870,-485.500,-12.700,-12.200,485.500,12.700,-12.200,2.800e+04 +2025,2.848991,10,468.500,35.000,6.2690,-466.700,-23.700,-34.000,466.700,23.700,-34.000,7.420e+04 +2025,2.880457,10,487.200,11.700,9.8560,-487.200,-2.700,-4.200,487.200,2.700,-4.200,8.292e+03 +2025,2.895553,10,481.900,12.300,11.2390,-481.900,1.100,-0.000,481.900,-1.100,-0.000,9.164e+03 +2025,2.901373,10,482.300,12.200,12.1740,-482.300,1.000,-2.300,482.300,-1.000,-2.300,9.016e+03 +2025,2.902500,10,480.900,12.500,11.9900,-480.900,1.900,-1.700,480.900,-1.900,-1.700,9.465e+03 +2025,2.914104,10,483.200,16.800,13.8460,-483.100,10.300,-0.900,483.100,-10.300,-0.900,1.710e+04 +2025,2.930401,10,479.500,13.700,16.9050,-479.400,11.100,-5.100,479.400,-11.100,-5.100,1.137e+04 +2025,3.012901,10,470.400,12.100,16.8460,-470.400,-3.100,-1.400,470.400,3.100,-1.400,8.869e+03 +2025,3.068702,10,465.800,12.200,20.4600,-465.700,-4.700,0.100,465.700,4.700,0.100,9.016e+03 +2025,3.071030,10,467.200,12.200,21.7900,-467.200,-5.700,-2.000,467.200,5.700,-2.000,9.016e+03 +2025,3.097767,10,462.200,13.200,22.0100,-462.100,-6.500,-4.600,462.100,6.500,-4.600,1.055e+04 +2025,3.102423,10,460.000,14.000,26.0930,-459.900,-8.900,-7.400,459.900,8.900,-7.400,1.187e+04 +2025,3.103587,10,461.700,13.000,23.9290,-461.500,-10.000,-4.500,461.500,10.000,-4.500,1.024e+04 +2025,3.110535,10,460.200,12.200,21.3340,-460.100,-6.100,-5.700,460.100,6.100,-5.700,9.016e+03 +2025,3.111699,10,459.500,12.800,23.0080,-459.400,-7.500,-7.400,459.400,7.500,-7.400,9.924e+03 +2025,3.136144,10,452.500,15.500,29.7490,-452.100,-3.300,-16.800,452.100,3.300,-16.800,1.455e+04 +2025,3.144256,10,448.900,14.100,29.0060,-448.700,-8.000,-12.700,448.700,8.000,-12.700,1.204e+04 +2025,3.151203,10,448.500,15.700,35.6380,-447.700,-0.500,-27.100,447.700,0.500,-27.100,1.493e+04 +2025,3.188416,10,441.900,14.400,35.7290,-441.600,-5.800,-15.300,441.600,5.800,-15.300,1.256e+04 +2025,3.215116,10,455.800,29.900,4.2550,-455.700,-7.900,-2.300,455.700,7.900,-2.300,5.415e+04 +2025,3.223265,10,453.800,28.700,4.1930,-453.700,-7.700,-5.800,453.700,7.700,-5.800,4.989e+04 +2025,3.244217,10,456.700,36.600,3.7610,-456.600,-7.600,-7.300,456.600,7.600,-7.300,8.114e+04 +2025,3.256985,10,441.500,21.500,7.2260,-441.300,-1.100,-14.200,441.300,1.100,-14.200,2.800e+04 +2025,3.258149,10,441.800,21.900,7.6730,-441.600,-2.600,-14.400,441.600,2.600,-14.400,2.905e+04 +2025,3.261641,10,442.200,15.400,10.8500,-441.800,-2.500,-19.800,441.800,2.500,-19.800,1.437e+04 +2025,3.269790,10,435.500,15.700,14.4110,-435.100,-1.000,-19.100,435.100,1.000,-19.100,1.493e+04 +2025,3.273282,10,440.300,15.200,10.9970,-439.800,-3.200,-19.800,439.800,3.200,-19.800,1.399e+04 +2025,3.290815,10,430.600,16.300,14.8210,-430.300,1.400,-15.300,430.300,-1.400,-15.300,1.609e+04 +2025,3.318643,10,437.700,14.900,16.1230,-437.300,3.000,-18.400,437.300,-3.000,-18.400,1.345e+04 +2025,3.357020,10,450.500,26.700,9.0330,-449.600,-3.100,-27.800,449.600,3.100,-27.800,4.318e+04 +2025,3.366296,10,440.300,23.400,8.2800,-440.000,5.500,-15.300,440.000,-5.500,-15.300,3.317e+04 +2025,3.373244,10,450.600,30.300,9.7870,-449.700,-23.300,-16.200,449.700,23.300,-16.200,5.561e+04 +2025,3.376736,10,468.700,22.200,7.0080,-467.600,-19.300,-25.900,467.600,19.300,-25.900,2.985e+04 +2025,3.394196,10,463.800,21.600,7.1470,-462.700,-22.800,-20.800,462.700,22.800,-20.800,2.826e+04 +2025,3.401181,10,466.600,20.700,7.1050,-465.700,-15.200,-23.100,465.700,15.200,-23.100,2.596e+04 +2025,3.410456,10,455.500,24.300,5.3850,-454.600,-23.900,-14.600,454.600,23.900,-14.600,3.577e+04 +2025,3.446542,10,450.200,19.100,6.1950,-449.100,-20.500,-24.300,449.100,20.500,-24.300,2.210e+04 +2025,3.498887,10,430.400,18.800,6.6320,-429.600,3.700,-25.700,429.600,-3.700,-25.700,2.141e+04 +2025,3.502379,10,430.700,19.300,6.7690,-430.000,5.100,-24.800,430.000,-5.100,-24.800,2.256e+04 +2025,3.508236,10,428.600,21.400,6.6070,-427.900,2.900,-23.500,427.900,-2.900,-23.500,2.774e+04 +2025,3.512892,10,419.200,20.900,6.4790,-418.800,3.200,-19.000,418.800,-3.200,-19.000,2.646e+04 +2025,3.536100,10,417.500,20.600,6.1270,-416.900,-0.800,-22.200,416.900,0.800,-22.200,2.571e+04 +2025,3.548868,10,417.000,25.200,6.9660,-416.000,-10.800,-25.400,416.000,10.800,-25.400,3.847e+04 +2025,3.616273,10,424.200,24.600,6.6580,-423.900,-1.800,-16.500,423.900,1.800,-16.500,3.666e+04 +2025,3.629005,10,430.800,27.500,7.0810,-430.200,-6.500,-21.300,430.200,6.500,-21.300,4.581e+04 +2025,3.631333,10,425.000,26.400,6.7140,-424.700,-4.400,-17.300,424.700,4.400,-17.300,4.222e+04 +2025,3.665126,10,428.000,34.100,6.4950,-427.400,-19.500,-8.500,427.400,19.500,-8.500,7.044e+04 +2025,3.674402,10,423.800,20.600,5.7660,-423.000,-7.700,-24.600,423.000,7.700,-24.600,2.571e+04 +2025,3.680186,10,426.700,22.100,5.8910,-425.100,-12.700,-33.600,425.100,12.700,-33.600,2.958e+04 +2025,3.688334,10,419.000,23.200,5.8190,-418.400,-2.200,-22.700,418.400,2.200,-22.700,3.260e+04 +2025,3.689498,10,416.100,20.700,5.4660,-415.600,-1.100,-20.300,415.600,1.100,-20.300,2.596e+04 +2025,3.723328,10,407.300,14.100,4.7400,-406.500,5.600,-26.100,406.500,-5.600,-26.100,1.204e+04 +2025,3.724492,10,407.700,14.300,5.0130,-406.800,5.500,-26.500,406.800,-5.500,-26.500,1.239e+04 +2025,3.747736,10,416.400,16.800,5.0580,-415.500,6.000,-27.900,415.500,-6.000,-27.900,1.710e+04 +2025,3.755848,10,416.100,18.400,5.0610,-415.100,4.400,-28.200,415.100,-4.400,-28.200,2.051e+04 +2025,3.760468,10,450.400,21.000,5.2380,-449.500,8.800,-25.900,449.500,-8.800,-25.900,2.671e+04 +2025,3.783712,10,409.400,22.300,7.6260,-408.300,6.200,-29.000,408.300,-6.200,-29.000,3.012e+04 +2025,3.784876,10,409.400,22.500,6.8870,-408.300,9.200,-28.700,408.300,-9.200,-28.700,3.067e+04 +2025,3.786040,10,410.100,23.200,7.8010,-408.600,12.700,-32.500,408.600,-12.700,-32.500,3.260e+04 +2025,3.791824,10,412.400,24.100,6.7110,-411.200,6.900,-31.400,411.200,-6.900,-31.400,3.518e+04 +2025,3.794152,10,414.600,23.200,6.9740,-413.400,8.300,-30.900,413.400,-8.300,-30.900,3.260e+04 +2025,3.808084,10,417.400,20.700,7.0740,-415.900,6.600,-34.400,415.900,-6.600,-34.400,2.596e+04 +2025,3.830201,10,411.600,18.400,7.5510,-410.700,9.000,-26.400,410.700,-9.000,-26.400,2.051e+04 +2025,3.831365,10,405.700,16.600,7.5820,-404.800,6.100,-27.400,404.800,-6.100,-27.400,1.669e+04 +2025,3.832492,10,410.300,19.600,7.2360,-409.600,5.200,-23.400,409.600,-5.200,-23.400,2.327e+04 +2025,3.852244,10,410.400,13.800,5.4560,-409.300,8.500,-29.100,409.300,-8.500,-29.100,1.154e+04 +2025,3.887093,10,401.900,15.000,5.9600,-400.200,6.100,-35.900,400.200,-6.100,-35.900,1.363e+04 +2025,3.889421,10,399.900,13.900,6.1050,-398.400,6.400,-33.700,398.400,-6.400,-33.700,1.170e+04 +2025,3.923105,10,399.300,20.600,5.3750,-397.900,7.100,-33.700,397.900,-7.100,-33.700,2.571e+04 +2025,3.925433,10,400.600,18.700,5.2870,-398.700,7.100,-38.300,398.700,-7.100,-38.300,2.118e+04 +2025,3.928925,10,399.100,17.600,6.7190,-397.300,8.900,-37.300,397.300,-8.900,-37.300,1.876e+04 +2025,3.934709,10,398.700,14.000,6.7880,-397.200,7.800,-33.900,397.200,-7.800,-33.900,1.187e+04 +2025,3.954461,10,403.600,33.300,7.1530,-402.500,-5.800,-28.800,402.500,5.800,-28.800,6.717e+04 +2025,3.968429,10,402.700,38.000,7.9850,-402.100,-8.400,-21.200,402.100,8.400,-21.200,8.747e+04 +2025,3.978869,10,400.700,36.400,8.5150,-400.100,-8.800,-18.800,400.100,8.800,-18.800,8.026e+04 +2025,3.999749,10,420.800,37.900,11.9310,-420.000,-5.400,-24.700,420.000,5.400,-24.700,8.701e+04 +2025,4.002113,10,420.500,37.900,11.9790,-419.800,-11.700,-19.800,419.800,11.700,-19.800,8.701e+04 +2025,4.057951,10,445.300,43.700,14.2950,-444.700,-23.300,-4.700,444.700,23.300,-4.700,1.157e+05 +2025,4.064971,10,443.100,43.800,13.0830,-442.200,-21.000,-20.200,442.200,21.000,-20.200,1.162e+05 +2025,4.077812,10,452.500,39.700,13.4170,-451.200,-22.700,-24.900,451.200,22.700,-24.900,9.547e+04 +2025,4.080140,10,452.000,40.500,13.4340,-450.600,-23.500,-27.300,450.600,23.500,-27.300,9.936e+04 +2025,4.148636,10,491.100,58.900,9.7730,-491.100,2.300,1.100,491.100,-2.300,1.100,2.101e+05 +2025,4.202182,10,525.300,41.800,5.2010,-525.100,-2.100,-16.100,525.100,2.100,-16.100,1.058e+05 +2025,4.230083,10,510.200,59.300,5.5710,-507.000,-3.700,56.700,507.000,3.700,56.700,2.130e+05 +2025,4.259184,10,515.700,61.600,8.0780,-514.200,-4.700,39.100,514.200,4.700,39.100,2.299e+05 +2025,4.282428,10,507.200,58.900,7.2800,-505.900,-8.300,34.800,505.900,8.300,34.800,2.101e+05 +2025,4.285920,10,500.300,60.100,7.9560,-499.700,-0.700,24.400,499.700,0.700,24.400,2.188e+05 +2025,4.303453,10,507.000,52.200,9.7570,-505.900,-2.500,33.300,505.900,2.500,33.300,1.651e+05 +2025,4.304618,10,509.100,52.100,10.2860,-508.100,0.500,32.400,508.100,-0.500,32.400,1.644e+05 +2025,4.319714,10,515.100,42.000,10.6590,-514.500,9.200,23.200,514.500,-9.200,23.200,1.069e+05 +2025,4.332482,10,496.800,43.600,10.0220,-496.200,16.100,18.700,496.200,-16.100,18.700,1.151e+05 +2025,4.335974,10,501.800,45.500,9.6080,-501.100,15.000,22.000,501.100,-15.000,22.000,1.254e+05 +2025,4.356890,10,494.000,40.300,12.3800,-493.200,19.300,20.300,493.200,-19.300,20.300,9.838e+04 +2025,4.359218,10,497.500,47.500,12.6430,-496.400,15.000,29.300,496.400,-15.000,29.300,1.367e+05 +2025,4.363874,10,491.400,48.500,10.1670,-491.100,1.100,18.700,491.100,-1.100,18.700,1.425e+05 +2025,4.456888,10,478.700,46.700,7.5470,-477.200,1.100,-38.500,477.200,-1.100,-38.500,1.321e+05 +2025,4.945456,10,702.100,87.600,1.9630,-701.800,-6.100,-20.900,701.800,6.100,-20.900,4.648e+05 +2025,4.980013,10,721.200,79.600,1.7990,-719.800,25.100,37.400,719.800,-25.100,37.400,3.838e+05 +2025,5.390519,10,579.400,59.400,2.7480,-579.100,-5.900,17.200,579.100,5.900,17.200,2.137e+05 +2025,5.442827,10,575.100,57.400,2.8020,-574.200,-18.600,26.400,574.200,18.600,26.400,1.996e+05 +2025,5.471892,10,596.700,56.100,2.9640,-596.200,-12.700,18.400,596.200,12.700,18.400,1.906e+05 +2025,5.508013,10,573.800,60.500,2.9300,-572.900,5.000,32.300,572.900,-5.000,32.300,2.217e+05 +2025,5.579019,10,610.300,57.300,2.6980,-610.000,4.800,18.500,610.000,-4.800,18.500,1.989e+05 +2025,5.606883,10,593.900,56.200,2.7670,-593.800,0.900,5.400,593.800,-0.900,5.400,1.913e+05 +2025,5.608047,10,590.900,59.400,3.2130,-590.900,-2.200,1.500,590.900,2.200,1.500,2.137e+05 +2025,5.939471,10,571.900,59.400,3.8880,-571.700,10.800,8.800,571.700,-10.800,8.800,2.137e+05 +2025,6.155727,10,577.300,43.800,5.0680,-572.600,68.300,28.500,572.600,-68.300,28.500,1.162e+05 +2025,6.156891,10,581.400,42.500,4.7100,-576.600,69.000,29.100,576.600,-69.000,29.100,1.094e+05 +2025,6.159220,10,557.800,49.200,4.7200,-554.500,56.200,23.000,554.500,-56.200,23.000,1.466e+05 +2025,6.189375,10,555.200,56.500,5.2650,-555.200,5.800,-1.300,555.200,-5.800,-1.300,1.934e+05 +2025,6.221969,10,552.300,56.000,4.7640,-552.200,4.600,5.700,552.200,-4.600,5.700,1.900e+05 +2025,6.414944,10,542.900,53.700,4.9560,-542.700,-14.800,5.900,542.700,14.800,5.900,1.747e+05 +2025,6.446300,10,547.500,48.200,4.6890,-547.000,-12.700,21.200,547.000,12.700,21.200,1.407e+05 +2025,6.474237,10,583.600,47.900,4.0330,-582.900,-5.900,27.000,582.900,5.900,27.000,1.390e+05 +2025,6.482349,10,566.500,49.800,3.8480,-565.700,-0.300,28.300,565.700,0.300,28.300,1.502e+05 +2025,6.518397,10,545.100,53.500,3.4060,-544.500,19.400,-17.000,544.500,-19.400,-17.000,1.734e+05 +2025,6.580019,10,552.100,53.200,3.9750,-552.000,-7.000,-1.100,552.000,7.000,-1.100,1.714e+05 +2025,6.607883,10,539.700,49.100,3.4880,-539.600,2.400,9.200,539.600,-2.400,9.200,1.460e+05 +2025,6.698496,10,550.700,44.900,3.5530,-550.300,-19.200,-6.300,550.300,19.200,-6.300,1.221e+05 +2025,6.711300,10,540.800,44.500,3.5640,-539.600,-6.300,-34.300,539.600,6.300,-34.300,1.200e+05 +2025,6.815918,10,536.300,44.300,3.3260,-536.200,-8.100,-2.400,536.200,8.100,-2.400,1.189e+05 +2025,6.856550,10,538.400,39.400,2.9270,-537.800,-23.900,-7.300,537.800,23.900,-7.300,9.403e+04 +2025,6.876339,10,535.200,39.900,2.9730,-534.500,-21.000,-19.100,534.500,21.000,-19.100,9.643e+04 +2025,6.887980,10,528.400,40.200,3.1230,-527.900,-20.400,5.400,527.900,20.400,5.400,9.789e+04 +2025,7.019298,10,535.300,42.300,3.2010,-534.500,-20.700,-19.200,534.500,20.700,-19.200,1.084e+05 +2025,7.022790,10,554.100,49.000,2.9670,-553.600,-22.900,-7.900,553.600,22.900,-7.900,1.454e+05 +2025,7.027446,10,538.600,41.500,3.2390,-538.200,-22.400,0.400,538.200,22.400,0.400,1.043e+05 +2025,7.029774,10,538.000,41.300,3.1440,-537.400,-23.000,8.900,537.400,23.000,8.900,1.033e+05 +2025,7.119223,10,522.400,39.800,3.0780,-521.700,-9.300,24.000,521.700,9.300,24.000,9.595e+04 +2025,7.144832,10,540.000,38.400,3.0850,-538.500,-8.600,40.300,538.500,8.600,40.300,8.932e+04 +2025,7.204089,10,608.400,54.500,6.3380,-606.800,39.400,-20.100,606.800,-39.400,-20.100,1.799e+05 +2025,7.243593,10,606.100,56.600,6.6570,-605.500,12.400,-24.500,605.500,-12.400,-24.500,1.941e+05 +2025,7.266802,10,582.600,57.900,6.3580,-581.800,29.300,-6.800,581.800,-29.300,-6.800,2.031e+05 +2025,7.273786,10,582.400,60.700,6.0590,-582.000,21.000,-5.400,582.000,-21.000,-5.400,2.232e+05 +2025,7.283098,10,598.500,58.800,6.1830,-598.000,13.600,19.800,598.000,-13.600,19.800,2.094e+05 +2025,7.291210,10,597.900,60.200,6.5140,-597.000,26.600,16.400,597.000,-26.600,16.400,2.195e+05 +2025,7.305142,10,589.700,54.400,5.6780,-587.700,41.300,25.300,587.700,-41.300,25.300,1.793e+05 +2025,7.314418,10,585.200,51.900,6.4040,-582.600,52.500,17.700,582.600,-52.500,17.700,1.632e+05 +2025,7.338936,10,567.700,51.600,5.7210,-565.400,49.800,11.000,565.400,-49.800,11.000,1.613e+05 +2025,7.356323,10,564.700,49.700,5.4390,-561.900,56.100,3.700,561.900,-56.100,3.700,1.496e+05 +2025,7.362144,10,569.000,52.900,5.5540,-566.200,53.700,-16.100,566.200,-53.700,-16.100,1.695e+05 +2025,7.369128,10,568.100,50.800,5.8290,-565.100,54.600,-18.400,565.100,-54.600,-18.400,1.563e+05 +2025,7.392481,10,579.700,49.800,4.9470,-575.300,68.900,-19.700,575.300,-68.900,-19.700,1.502e+05 +2025,7.436606,10,588.600,49.000,4.6560,-584.000,71.700,17.100,584.000,-71.700,17.100,1.454e+05 +2025,7.442426,10,579.500,49.700,4.2480,-574.200,76.700,-15.800,574.200,-76.700,-15.800,1.496e+05 +2025,7.447082,10,560.200,51.200,4.5800,-554.400,78.300,-18.600,554.400,-78.300,-18.600,1.588e+05 +2025,7.464470,10,574.100,51.800,4.4400,-568.400,80.100,-4.200,568.400,-80.100,-4.200,1.625e+05 +2025,7.544715,10,553.400,43.000,4.0380,-549.100,66.300,21.200,549.100,-66.300,21.200,1.120e+05 +2025,8.129534,10,490.500,31.900,2.7060,-490.100,-8.500,16.400,490.100,8.500,16.400,6.164e+04 +2025,8.152815,10,507.000,34.200,3.1070,-506.600,-3.600,19.600,506.600,3.600,19.600,7.085e+04 +2025,8.296901,10,471.400,40.800,3.5130,-469.800,33.900,-18.100,469.800,-33.900,-18.100,1.008e+05 +2025,8.302722,10,479.300,34.000,3.2800,-477.400,31.100,-29.400,477.400,-31.100,-29.400,7.002e+04 +2025,8.311998,10,496.600,36.300,3.1590,-494.800,31.300,-29.700,494.800,-31.300,-29.700,7.982e+04 +2025,8.368963,10,470.800,38.000,3.4370,-470.700,-5.900,-11.000,470.700,5.900,-11.000,8.747e+04 +2025,8.375911,10,470.800,38.200,3.3790,-470.600,-6.600,-10.600,470.600,6.600,-10.600,8.839e+04 +2025,8.528145,10,471.700,34.800,3.1030,-471.300,9.700,17.700,471.300,-9.700,17.700,7.336e+04 +2025,8.726905,10,439.400,43.500,2.7160,-439.400,2.000,-2.800,439.400,-2.000,-2.800,1.146e+05 +2025,8.730360,10,434.400,41.900,3.0860,-434.400,0.700,-0.100,434.400,-0.700,-0.100,1.063e+05 +2025,8.742001,10,427.000,42.900,3.3790,-427.000,0.400,-3.200,427.000,-0.400,-3.200,1.115e+05 +2025,8.749021,10,419.800,37.800,2.9810,-419.200,-2.000,-22.600,419.200,2.000,-22.600,8.655e+04 +2025,8.754842,10,444.200,31.500,3.6380,-443.800,-15.300,-10.800,443.800,15.300,-10.800,6.010e+04 +2025,8.766446,10,443.400,33.900,3.2800,-443.100,-10.900,-14.600,443.100,10.900,-14.600,6.961e+04 +2025,8.898927,10,399.900,23.400,3.2930,-397.800,-16.600,-37.900,397.800,16.600,-37.900,3.317e+04 +2025,8.917588,10,406.700,21.200,2.7970,-405.300,-17.800,-27.900,405.300,17.800,-27.900,2.722e+04 +2025,8.967605,10,408.900,27.600,4.5820,-408.400,-20.100,-5.000,408.400,20.100,-5.000,4.614e+04 +2025,9.001290,10,403.500,27.100,5.5110,-402.100,-31.100,-12.200,402.100,31.100,-12.200,4.449e+04 +2025,9.005909,10,405.400,28.400,5.3890,-404.000,-29.400,-17.100,404.000,29.400,-17.100,4.886e+04 +2025,9.017586,10,398.100,25.900,4.7970,-397.000,-29.500,-6.300,397.000,29.500,-6.300,4.063e+04 +2025,9.036174,10,397.200,29.100,5.5530,-396.300,-26.100,-3.300,396.300,26.100,-3.300,5.129e+04 +2025,9.122204,10,383.500,26.200,5.6200,-381.700,-8.500,-35.700,381.700,8.500,-35.700,4.158e+04 +2025,9.124532,10,382.600,27.200,5.7850,-380.900,-14.000,-32.500,380.900,14.000,-32.500,4.481e+04 +2025,9.125696,10,384.700,28.400,5.4760,-383.000,-20.100,-29.600,383.000,20.100,-29.600,4.886e+04 +2025,9.139628,10,380.500,28.500,5.8570,-379.000,-18.200,-28.600,379.000,18.200,-28.600,4.920e+04 +2025,9.160545,10,381.800,28.000,5.5510,-380.500,-27.200,-15.400,380.500,27.200,-15.400,4.749e+04 +2025,9.219838,10,377.500,27.300,6.5500,-375.000,-28.800,-31.600,375.000,28.800,-31.600,4.515e+04 +2025,9.254759,10,372.600,28.000,7.1730,-370.400,-29.600,-27.500,370.400,29.600,-27.500,4.749e+04 +2025,9.266363,10,369.400,26.900,6.2480,-367.300,-36.300,-15.600,367.300,36.300,-15.600,4.383e+04 +2025,9.268691,10,366.900,28.900,6.3440,-365.000,-34.000,-15.800,365.000,34.000,-15.800,5.059e+04 +2025,9.297719,10,368.100,24.800,6.3170,-366.500,-33.200,-6.000,366.500,33.200,-6.000,3.726e+04 +2025,9.304667,10,363.700,24.400,6.4390,-361.700,-37.400,-3.600,361.700,37.400,-3.600,3.606e+04 +2025,9.317435,10,358.100,24.300,6.4580,-356.000,-38.200,-0.700,356.000,38.200,-0.700,3.577e+04 +2025,9.326747,10,360.300,25.700,6.5030,-358.500,-36.300,-2.400,358.500,36.300,-2.400,4.001e+04 +2025,9.332568,10,356.200,24.300,6.3510,-354.400,-35.800,0.300,354.400,35.800,0.300,3.577e+04 +2025,9.338388,10,358.100,23.700,6.2990,-356.800,-29.500,-0.100,356.800,29.500,-0.100,3.402e+04 +2025,9.349992,10,355.300,24.300,6.9820,-353.500,-35.400,-0.000,353.500,35.400,-0.000,3.577e+04 +2025,9.355776,10,359.900,26.500,7.3200,-358.300,-33.500,-2.300,358.300,33.500,-2.300,4.254e+04 +2025,9.375564,10,353.300,28.900,7.4780,-350.300,-42.600,-16.600,350.300,42.600,-16.600,5.059e+04 +2025,9.379057,10,361.700,21.300,8.8180,-359.500,-37.800,-14.000,359.500,37.800,-14.000,2.748e+04 +2025,9.383749,10,361.800,17.400,8.4470,-359.700,-37.500,-12.000,359.700,37.500,-12.000,1.834e+04 +2025,9.402337,10,373.800,15.000,8.0790,-373.000,-22.600,-8.000,373.000,22.600,-8.000,1.363e+04 +2025,9.409322,10,375.000,15.800,8.0370,-374.400,-18.000,-11.500,374.400,18.000,-11.500,1.512e+04 +2025,9.412777,10,370.200,14.700,8.2320,-369.400,-22.600,-9.300,369.400,22.600,-9.300,1.309e+04 +2025,9.495279,10,385.000,21.300,12.0820,-384.000,-26.000,-11.500,384.000,26.000,-11.500,2.748e+04 +2025,9.498771,10,377.400,17.100,7.3320,-376.700,-4.700,-22.100,376.700,4.700,-22.100,1.771e+04 +2025,9.506919,10,381.600,20.800,8.4310,-381.400,-4.000,-11.900,381.400,4.000,-11.900,2.621e+04 +2025,9.509247,10,381.100,24.700,9.1430,-381.000,-10.200,-4.100,381.000,10.200,-4.100,3.696e+04 +2025,9.517359,10,387.800,22.900,8.4100,-387.800,-2.800,-3.200,387.800,2.800,-3.200,3.177e+04 +2025,9.523179,10,363.200,24.000,8.4410,-360.500,-41.600,-16.100,360.500,41.600,-16.100,3.489e+04 +2025,9.556936,10,353.800,24.500,11.1730,-350.900,-42.400,-14.400,350.900,42.400,-14.400,3.636e+04 +2025,9.586001,10,375.500,28.900,14.5240,-370.700,-43.300,-41.200,370.700,43.300,-41.200,5.059e+04 +2025,9.655807,10,387.800,33.500,7.1310,-387.700,-5.700,-5.000,387.700,5.700,-5.000,6.798e+04 +2025,9.658135,10,383.700,35.300,8.1620,-383.400,-11.200,-8.600,383.400,11.200,-8.600,7.548e+04 +2025,9.660427,10,384.000,35.700,9.5150,-383.600,-17.100,-7.800,383.600,17.100,-7.800,7.720e+04 +2025,9.677887,10,372.600,42.800,11.1410,-371.500,-20.000,-20.400,371.500,20.000,-20.400,1.110e+05 +2025,9.773084,10,386.300,37.400,8.1360,-385.900,-11.500,-15.500,385.900,11.500,-15.500,8.473e+04 +2025,9.775412,10,384.900,38.200,7.9070,-384.500,-10.600,-12.400,384.500,10.600,-12.400,8.839e+04 +2025,9.781232,10,384.300,38.100,7.6730,-384.000,-10.000,-12.200,384.000,10.000,-12.200,8.793e+04 +2025,10.074169,10,403.200,40.800,7.5950,-401.900,-26.400,20.200,401.900,26.400,20.200,1.008e+05 +2025,10.085736,10,411.100,32.300,7.3720,-410.100,-14.000,23.900,410.100,14.000,23.900,6.320e+04 +2025,10.092720,10,410.600,40.700,8.3440,-410.200,-18.100,2.200,410.200,18.100,2.200,1.003e+05 +2025,10.111345,10,427.700,44.200,7.6540,-427.700,4.500,2.100,427.700,-4.500,2.100,1.183e+05 +2025,10.117129,10,410.600,44.100,8.0700,-410.500,-10.400,2.200,410.500,10.400,2.200,1.178e+05 +2025,10.195047,10,404.400,44.600,7.8020,-404.200,-13.100,-2.000,404.200,13.100,-2.000,1.205e+05 +2025,10.267181,10,415.700,40.800,9.0060,-412.500,-5.400,-51.400,412.500,5.400,-51.400,1.008e+05 +2025,10.273001,10,410.800,41.700,8.4650,-407.900,-11.400,-47.400,407.900,11.400,-47.400,1.053e+05 +2025,10.293881,10,409.500,43.100,7.3030,-406.700,-17.400,-44.300,406.700,17.400,-44.300,1.125e+05 +2025,10.319453,10,431.800,60.800,6.3750,-431.000,17.900,18.000,431.000,-17.900,18.000,2.239e+05 +2025,10.347318,10,406.000,48.300,6.3560,-405.700,-9.800,-12.800,405.700,9.800,-12.800,1.413e+05 +2025,10.376455,10,421.200,50.400,6.9210,-420.400,19.600,16.900,420.400,-19.600,16.900,1.539e+05 +2025,10.377619,10,416.900,50.800,6.8310,-416.800,5.200,6.200,416.800,-5.200,6.200,1.563e+05 +2025,10.381111,10,434.100,49.100,6.9670,-433.400,21.200,14.000,433.400,-21.200,14.000,1.460e+05 +2025,10.415959,10,460.300,54.000,6.7860,-457.100,51.800,16.800,457.100,-51.800,16.800,1.766e+05 +2025,10.469505,10,478.800,58.000,6.8860,-476.000,40.200,32.800,476.000,-40.200,32.800,2.038e+05 +2025,10.498533,10,444.800,53.700,5.3650,-443.800,13.300,-26.500,443.800,-13.300,-26.500,1.747e+05 +2025,10.711298,10,430.700,46.700,5.6580,-430.600,-4.200,3.100,430.600,4.200,3.100,1.321e+05 +2025,10.720574,10,437.300,49.400,6.1470,-436.800,7.200,19.600,436.800,-7.200,19.600,1.478e+05 +2025,10.748475,10,436.400,50.300,5.2320,-436.100,2.700,17.800,436.100,-2.700,17.800,1.533e+05 +2025,10.762407,10,433.700,50.600,5.1470,-433.100,4.500,22.400,433.100,-4.500,22.400,1.551e+05 +2025,10.775175,10,422.900,52.000,5.1460,-422.600,11.700,-13.200,422.600,-11.700,-13.200,1.638e+05 +2025,10.897362,10,442.500,42.500,5.7250,-441.800,22.800,12.500,441.800,-22.800,12.500,1.094e+05 +2025,11.541293,10,471.400,50.300,3.7720,-469.700,2.400,-40.200,469.700,-2.400,-40.200,1.533e+05 +2025,11.843542,10,430.100,53.700,4.5150,-429.400,-13.600,-21.700,429.400,13.600,-21.700,1.747e+05 +2025,11.857546,10,432.200,57.100,4.6050,-431.600,-17.400,-14.400,431.600,17.400,-14.400,1.975e+05 +2025,11.973804,10,423.900,55.300,5.0610,-423.500,3.200,-19.900,423.500,-3.200,-19.900,1.852e+05 +2025,12.007488,10,438.900,60.000,3.4400,-438.800,-5.800,-2.600,438.800,5.800,-2.600,2.181e+05 +2025,12.016800,10,426.000,50.000,4.2510,-425.900,-2.800,7.800,425.900,2.800,7.800,1.514e+05 +2025,12.238732,10,411.100,46.400,4.4840,-411.000,5.500,7.700,411.000,-5.500,7.700,1.304e+05 +2025,12.243351,10,414.300,46.700,4.4910,-414.300,4.500,2.900,414.300,-4.500,2.900,1.321e+05 +2025,12.277072,10,416.900,51.100,4.3010,-416.900,6.100,3.000,416.900,-6.100,3.000,1.582e+05 +2025,12.548948,10,381.500,28.000,6.0220,-381.100,-2.800,18.200,381.100,2.800,18.200,4.749e+04 +2025,12.741996,10,375.100,28.800,7.1990,-374.400,-21.300,-7.100,374.400,21.300,-7.100,5.024e+04 +2025,12.747816,10,376.400,29.800,9.8020,-375.800,-21.300,-1.900,375.800,21.300,-1.900,5.379e+04 +2025,12.752436,10,377.400,33.600,6.6860,-376.800,-21.400,7.800,376.800,21.400,7.800,6.839e+04 +2025,12.766368,10,377.600,34.100,6.9580,-377.000,-19.400,7.400,377.000,19.400,7.400,7.044e+04 +2025,12.788557,10,369.600,29.100,8.7210,-368.600,-23.900,13.600,368.600,23.900,13.600,5.129e+04 +2025,12.833845,10,380.900,27.800,8.7010,-380.000,-25.500,1.000,380.000,25.500,1.000,4.681e+04 +2025,12.846613,10,383.800,35.800,11.3630,-382.800,-27.600,1.800,382.800,27.600,1.800,7.763e+04 +2025,12.853598,10,404.000,31.200,12.7590,-403.200,-25.400,7.400,403.200,25.400,7.400,5.896e+04 +2025,12.883826,10,398.000,32.200,13.0510,-396.500,-34.000,-2.800,396.500,34.000,-2.800,6.281e+04 +2025,12.884990,10,399.600,29.700,12.9280,-398.200,-33.000,-2.800,398.200,33.000,-2.800,5.343e+04 +2025,12.896594,10,395.000,31.800,12.5020,-393.400,-32.400,-12.400,393.400,32.400,-12.400,6.125e+04 +2025,12.924495,10,403.900,39.700,10.9310,-403.700,-4.200,10.700,403.700,4.200,10.700,9.547e+04 +2025,13.026784,10,403.300,39.500,13.5400,-402.400,-27.700,-1.200,402.400,27.700,-1.200,9.451e+04 +2025,13.060505,10,402.200,40.100,16.0050,-401.400,-19.000,-15.400,401.400,19.000,-15.400,9.740e+04 +2025,13.067453,10,400.000,39.000,15.1970,-399.100,-25.900,-9.300,399.100,25.900,-9.300,9.213e+04 +2025,13.068617,10,401.400,39.300,14.0570,-400.300,-28.500,-6.700,400.300,28.500,-6.700,9.356e+04 +2025,13.070945,10,406.700,39.400,14.9580,-405.400,-31.500,0.700,405.400,31.500,0.700,9.403e+04 +2025,13.072109,10,402.700,39.200,14.3840,-401.500,-30.900,0.300,401.500,30.900,0.300,9.308e+04 +2025,13.082586,10,386.500,41.700,15.0960,-385.300,-30.500,-4.000,385.300,30.500,-4.000,1.053e+05 +2025,13.125546,10,399.000,36.000,12.4970,-398.100,-24.800,-10.600,398.100,24.800,-10.600,7.850e+04 +2025,13.160431,10,401.100,55.300,17.6630,-401.000,8.100,-3.300,401.000,-8.100,-3.300,1.852e+05 +2025,13.182511,10,411.700,47.100,19.2750,-410.400,32.000,-9.600,410.400,-32.000,-9.600,1.344e+05 +2025,13.338238,10,411.000,53.100,5.3300,-411.000,-2.200,2.000,411.000,2.200,2.000,1.708e+05 +2025,13.344094,10,413.700,53.300,6.0300,-413.000,6.700,22.900,413.000,-6.700,22.900,1.721e+05 +2025,13.370758,10,419.600,56.000,6.3420,-419.400,-8.700,-5.400,419.400,8.700,-5.400,1.900e+05 +2025,13.391747,10,422.400,60.900,6.7270,-422.100,-6.800,-15.500,422.100,6.800,-15.500,2.247e+05 +2025,13.430050,10,416.000,61.500,7.1640,-410.800,65.600,-5.600,410.800,-65.600,-5.600,2.291e+05 +2025,13.481195,10,437.000,57.900,7.1240,-436.200,-7.100,-25.400,436.200,7.100,-25.400,2.031e+05 +2025,13.526556,10,442.000,53.500,5.7860,-440.900,8.800,29.600,440.900,-8.800,29.600,1.734e+05 +2025,13.560349,10,441.700,56.700,6.9210,-441.600,-0.600,5.500,441.600,0.600,5.500,1.947e+05 +2025,13.653291,10,462.300,45.000,4.5670,-459.800,-4.000,-47.700,459.800,4.000,-47.700,1.227e+05 +2025,13.654455,10,465.000,50.300,5.0280,-464.200,-28.300,-2.200,464.200,28.300,-2.200,1.533e+05 +2025,13.747469,10,468.100,41.500,4.9000,-466.500,-37.100,-9.900,466.500,37.100,-9.900,1.043e+05 +2025,13.749797,10,483.500,37.600,4.2740,-482.500,-30.300,8.300,482.500,30.300,8.300,8.564e+04 +2025,13.768421,10,459.300,39.400,4.5470,-457.500,-25.400,31.800,457.500,25.400,31.800,9.403e+04 +2025,13.818402,10,471.600,39.200,4.7260,-470.100,-28.500,25.800,470.100,28.500,25.800,9.308e+04 +2025,13.864854,10,449.100,37.400,5.0020,-447.600,26.500,25.300,447.600,-26.500,25.300,8.473e+04 +2025,13.884606,10,426.400,44.100,3.8080,-426.100,11.600,-10.800,426.100,-11.600,-10.800,1.178e+05 +2025,13.964815,10,444.100,41.000,6.1200,-442.400,-38.300,-6.600,442.400,38.300,-6.600,1.018e+05 +2025,13.988023,10,461.100,40.900,5.5990,-459.600,-36.800,7.900,459.600,36.800,7.900,1.013e+05 +2025,14.096024,10,452.600,45.400,5.5040,-450.800,-38.500,-14.000,450.800,38.500,-14.000,1.249e+05 +2025,14.314718,10,442.700,44.000,7.2810,-440.400,-30.000,-33.900,440.400,30.000,-33.900,1.173e+05 +2025,14.540359,10,481.500,65.700,6.5590,-480.500,29.300,-11.500,480.500,-29.300,-11.500,2.615e+05 +2025,14.727588,10,486.800,55.600,4.9310,-485.300,4.700,-38.300,485.300,-4.700,-38.300,1.873e+05 +2025,15.246239,10,477.800,46.900,5.4640,-476.000,-4.100,41.900,476.000,4.100,41.900,1.332e+05 +2025,15.339180,10,473.100,41.700,4.8180,-467.900,-0.600,69.400,467.900,0.600,69.400,1.053e+05 +2025,15.450782,10,484.700,43.900,5.2930,-478.800,-1.100,75.300,478.800,1.100,75.300,1.167e+05 +2025,15.769146,10,489.200,55.800,5.7110,-488.900,-18.600,4.400,488.900,18.600,4.400,1.886e+05 +2025,15.786679,10,484.600,60.000,6.9020,-482.700,-5.200,-41.900,482.700,5.200,-41.900,2.181e+05 +2025,15.832004,10,483.400,51.600,5.9930,-480.500,36.900,37.600,480.500,-36.900,37.600,1.613e+05 +2025,15.839025,10,505.100,52.200,5.9240,-502.200,39.200,37.400,502.200,-39.200,37.400,1.651e+05 +2025,15.848373,10,477.600,54.200,5.7990,-477.200,-6.600,18.600,477.200,6.600,18.600,1.779e+05 +2025,15.980746,10,519.900,67.300,4.2660,-517.000,36.100,40.400,517.000,-36.100,40.400,2.744e+05 +2025,16.523733,10,454.500,37.700,3.4760,-454.500,-5.400,4.900,454.500,5.400,4.900,8.609e+04 +2025,16.630679,10,434.800,44.000,6.7870,-432.400,-25.900,-37.700,432.400,25.900,-37.700,1.173e+05 +2025,16.670183,10,419.000,35.500,6.1430,-417.200,-15.300,-35.100,417.200,15.300,-35.100,7.634e+04 +2025,16.761923,10,419.200,35.900,6.3780,-418.300,-23.500,13.500,418.300,23.500,13.500,7.807e+04 +2025,16.764251,10,422.200,34.500,6.9660,-420.800,-32.900,-9.900,420.800,32.900,-9.900,7.210e+04 +2025,16.787605,10,422.500,38.200,7.1460,-421.400,-19.200,-24.600,421.400,19.200,-24.600,8.839e+04 +2025,16.894514,10,439.000,47.100,7.8890,-438.800,0.200,11.200,438.800,-0.200,11.200,1.344e+05 +2025,16.966612,10,448.900,43.900,7.0940,-445.300,-14.400,-55.400,445.300,14.400,-55.400,1.167e+05 +2025,16.971231,10,448.700,40.500,7.2010,-445.600,-17.000,-49.800,445.600,17.000,-49.800,9.936e+04 +2025,17.064245,10,456.700,46.100,9.9080,-454.800,-33.700,24.700,454.800,33.700,24.700,1.287e+05 +2025,17.067737,10,433.300,48.900,10.0080,-432.300,-18.600,23.400,432.300,18.600,23.400,1.448e+05 +2025,17.087490,10,451.300,43.900,10.1220,-449.400,-29.100,-30.700,449.400,29.100,-30.700,1.167e+05 +2025,17.139798,10,450.100,53.000,10.6820,-449.200,-10.200,26.600,449.200,10.200,26.600,1.702e+05 +2025,17.224664,10,465.500,44.100,9.0580,-463.100,-12.100,-45.500,463.100,12.100,-45.500,1.178e+05 +2025,17.323462,10,511.700,77.700,9.6330,-511.100,23.300,7.900,511.100,-23.300,7.900,3.657e+05 +2025,17.330410,10,537.100,68.600,7.2210,-536.300,29.000,-6.000,536.300,-29.000,-6.000,2.851e+05 +2025,17.504724,10,571.800,58.900,4.5370,-571.800,1.200,1.400,571.800,-1.200,1.400,2.101e+05 +2025,17.512872,10,561.800,62.400,4.9550,-560.800,19.400,28.700,560.800,-19.400,28.700,2.359e+05 +2025,17.517528,10,568.000,61.300,4.5810,-565.900,27.000,40.300,565.900,-27.000,40.300,2.276e+05 +2025,17.590754,10,553.900,61.000,5.0570,-546.500,49.400,-75.200,546.500,-49.400,-75.200,2.254e+05 +2025,17.635023,10,609.200,63.700,4.7710,-603.300,77.700,32.400,603.300,-77.700,32.400,2.458e+05 +2025,17.760448,10,579.900,58.200,3.9990,-579.500,-4.100,-20.100,579.500,4.100,-20.100,2.052e+05 +2025,17.772125,10,559.600,57.400,3.7270,-559.200,12.400,-15.600,559.200,-12.400,-15.600,1.996e+05 +2025,17.790750,10,573.300,56.300,3.6560,-570.200,5.100,-59.700,570.200,-5.100,-59.700,1.920e+05 +2025,17.803518,10,579.800,56.500,3.3850,-579.600,13.100,-8.400,579.600,-13.100,-8.400,1.934e+05 +2025,17.813994,10,559.200,59.200,3.7150,-559.000,14.100,6.100,559.000,-14.100,6.100,2.123e+05 +2025,17.826835,10,574.500,53.100,3.5110,-573.900,-4.100,-26.000,573.900,4.100,-26.000,1.708e+05 +2025,17.865248,10,543.200,55.100,3.5400,-538.500,71.200,4.300,538.500,-71.200,4.300,1.839e+05 +2025,17.873360,10,574.400,52.000,3.4120,-573.500,-11.300,-29.500,573.500,11.300,-29.500,1.638e+05 +2025,17.877979,10,571.600,56.900,3.4100,-571.300,-8.200,-16.400,571.300,8.200,-16.400,1.961e+05 +2025,17.918647,10,606.500,49.200,2.9620,-602.400,9.300,-70.100,602.400,-9.300,-70.100,1.466e+05 +2025,17.953568,10,601.900,50.300,3.5920,-594.100,94.200,-21.200,594.100,-94.200,-21.200,1.533e+05 +2025,18.134830,10,544.400,49.700,3.6190,-541.000,60.600,-3.200,541.000,-60.600,-3.200,1.496e+05 +2025,18.158111,10,535.000,51.700,3.5200,-533.000,45.800,5.300,533.000,-45.800,5.300,1.619e+05 +2025,18.188340,10,535.600,47.600,3.4880,-534.900,5.500,-28.000,534.900,-5.500,-28.000,1.372e+05 +2025,18.215149,10,547.300,46.400,3.3710,-545.600,4.800,-43.200,545.600,-4.800,-43.200,1.304e+05 +2025,18.223297,10,545.700,49.800,3.4410,-544.800,2.600,-30.700,544.800,-2.600,-30.700,1.502e+05 +2025,18.280189,10,522.200,44.000,3.4330,-521.000,-1.100,-35.600,521.000,1.100,-35.600,1.173e+05 +2025,18.298778,10,564.700,39.500,3.0780,-564.100,-12.500,-20.700,564.100,12.500,-20.700,9.451e+04 +2025,18.306926,10,556.300,39.800,3.0030,-555.700,-10.700,-23.300,555.700,10.700,-23.300,9.595e+04 +2025,18.308090,10,556.100,39.700,3.1950,-555.700,-14.600,-17.700,555.700,14.600,-17.700,9.547e+04 +2025,18.316202,10,554.900,39.900,3.0820,-554.400,-18.200,-16.000,554.400,18.200,-16.000,9.643e+04 +2025,18.327806,10,558.300,41.300,3.3150,-557.900,-18.500,-10.600,557.900,18.500,-10.600,1.033e+05 +2025,18.355779,10,524.400,41.600,2.8690,-524.400,-8.400,3.300,524.400,8.400,3.300,1.048e+05 +2025,18.375531,10,502.000,41.100,3.4560,-500.200,40.200,16.400,500.200,-40.200,16.400,1.023e+05 +2025,18.402268,10,512.200,39.700,3.1390,-511.900,-14.100,-10.300,511.900,14.100,-10.300,9.547e+04 +2025,18.439553,10,502.400,41.800,3.7090,-502.000,-2.000,20.200,502.000,2.000,20.200,1.058e+05 +2025,18.476730,10,543.300,42.700,3.8370,-543.200,-13.200,-2.100,543.200,13.200,-2.100,1.104e+05 +2025,18.480186,10,537.100,38.700,3.7200,-536.600,-19.100,-12.800,536.600,19.100,-12.800,9.072e+04 +2025,18.595352,10,506.100,37.700,3.2910,-505.000,-28.600,-15.200,505.000,28.600,-15.200,8.609e+04 +2025,18.604665,10,511.900,37.000,3.4570,-511.000,-28.600,-8.500,511.000,28.600,-8.500,8.293e+04 +2025,18.623217,10,508.500,35.600,3.1390,-507.500,-27.400,-17.600,507.500,27.400,-17.600,7.677e+04 +2025,18.640713,10,491.900,40.100,3.6620,-491.100,-27.100,-9.100,491.100,27.100,-9.100,9.740e+04 +2025,18.649989,10,496.900,39.700,2.9500,-496.300,-24.500,3.600,496.300,24.500,3.600,9.547e+04 +2025,18.716193,10,504.000,44.000,3.0090,-503.600,-14.000,14.200,503.600,14.000,14.200,1.173e+05 +2025,18.717357,10,511.500,44.000,2.7390,-510.900,-9.300,21.600,510.900,9.300,21.600,1.173e+05 +2025,18.746458,10,485.100,46.400,2.8450,-485.100,-5.700,-3.400,485.100,5.700,-3.400,1.304e+05 +2025,18.802259,10,489.100,44.000,2.5980,-488.200,18.600,-22.600,488.200,-18.600,-22.600,1.173e+05 +2025,18.803423,10,487.400,50.100,3.0840,-486.500,15.100,-25.100,486.500,-15.100,-25.100,1.520e+05 +2025,18.845255,10,496.100,46.800,2.8660,-495.900,-14.800,4.900,495.900,14.800,4.900,1.327e+05 +2025,18.863807,10,496.400,49.000,3.1830,-496.100,-17.200,0.200,496.100,17.200,0.200,1.454e+05 +2025,18.883596,10,483.100,47.600,2.9090,-482.500,-22.300,8.000,482.500,22.300,8.000,1.372e+05 +2025,18.941761,10,520.700,49.100,2.9820,-520.500,-17.100,-0.100,520.500,17.100,-0.100,1.460e+05 +2025,19.010403,10,505.500,44.900,3.0320,-505.100,10.600,19.400,505.100,-10.600,19.400,1.221e+05 +2025,19.060347,10,499.400,44.100,3.2820,-499.200,-16.100,2.700,499.200,16.100,2.700,1.178e+05 +2025,19.138156,10,503.300,45.000,3.3470,-502.500,-12.700,24.700,502.500,12.700,24.700,1.227e+05 +2025,19.263617,10,489.000,41.000,3.8980,-486.300,-3.900,-50.800,486.300,3.900,-50.800,1.018e+05 +2025,19.423999,10,479.600,42.800,4.6930,-476.900,-19.100,-46.900,476.900,19.100,-46.900,1.110e+05 +2025,19.486748,10,503.400,40.500,4.6040,-502.800,-9.700,22.500,502.800,9.700,22.500,9.936e+04 +2025,19.487912,10,493.400,44.600,4.7270,-492.800,-15.400,18.400,492.800,15.400,18.400,1.205e+05 +2025,19.608899,10,476.700,40.200,4.4240,-475.400,-22.500,26.000,475.400,22.500,26.000,9.789e+04 +2025,19.722865,10,495.000,45.300,4.9980,-493.100,-37.100,-23.500,493.100,37.100,-23.500,1.243e+05 +2025,19.784486,10,475.600,46.600,5.6680,-473.000,18.400,-46.200,473.000,-18.400,-46.200,1.315e+05 +2025,19.873971,10,515.100,53.500,5.5400,-514.600,-22.700,1.900,514.600,22.700,1.900,1.734e+05 +2025,19.933336,10,504.600,58.500,7.1140,-502.700,33.100,29.200,502.700,-33.100,29.200,2.073e+05 +2025,19.935664,10,499.100,55.900,6.9560,-497.200,32.900,28.900,497.200,-32.900,28.900,1.893e+05 +2025,19.940357,10,489.800,57.100,6.7240,-487.800,43.700,-11.000,487.800,-43.700,-11.000,1.975e+05 +2025,19.984481,10,509.000,56.000,6.1820,-507.500,-9.700,38.000,507.500,9.700,38.000,1.900e+05 +2025,20.006561,10,524.800,55.200,5.8290,-521.600,34.100,47.100,521.600,-34.100,47.100,1.846e+05 +2025,20.047302,10,509.600,53.500,6.0140,-508.500,-7.900,33.700,508.500,7.900,33.700,1.734e+05 +2025,20.051958,10,510.300,54.600,5.7100,-508.900,-12.400,35.500,508.900,12.400,35.500,1.806e+05 +2025,20.090298,10,536.100,54.400,5.2950,-534.500,-37.000,18.500,534.500,37.000,18.500,1.793e+05 +2025,20.243696,10,563.800,61.000,7.5140,-562.100,-29.400,-32.300,562.100,29.400,-32.300,2.254e+05 +2025,20.298370,10,524.100,64.400,7.3980,-523.500,-15.800,19.700,523.500,15.800,19.700,2.512e+05 +2025,20.303026,10,516.100,69.000,6.0530,-514.100,-31.400,33.200,514.100,31.400,33.200,2.884e+05 +2025,20.492471,10,600.500,73.300,4.3920,-597.900,3.900,-55.000,597.900,-3.900,-55.000,3.255e+05 +2025,20.522736,10,548.900,71.100,3.2510,-548.400,-5.800,-23.200,548.400,5.800,-23.200,3.062e+05 +2025,20.568061,10,605.000,70.000,4.9930,-604.600,24.400,0.400,604.600,-24.400,0.400,2.968e+05 +2025,20.671515,10,593.500,57.100,4.3890,-591.800,34.600,28.100,591.800,-34.600,28.100,1.975e+05 +2025,20.701670,10,600.700,62.200,4.7270,-596.800,60.000,-32.800,596.800,-60.000,-32.800,2.344e+05 +2025,20.709819,10,606.200,54.800,4.1270,-605.600,23.500,14.900,605.600,-23.500,14.900,1.819e+05 +2025,20.737683,10,602.300,50.300,3.8490,-602.300,5.900,1.400,602.300,-5.900,1.400,1.533e+05 +2025,20.744630,10,600.300,55.100,4.3270,-599.900,5.400,-21.400,599.900,-5.400,-21.400,1.839e+05 +2025,20.759763,10,634.600,51.600,4.4150,-633.300,27.600,28.800,633.300,-27.600,28.800,1.613e+05 +2025,20.762091,10,627.500,51.100,4.5260,-627.400,-1.100,7.500,627.400,1.100,7.500,1.582e+05 +2025,20.769075,10,610.000,49.800,4.5060,-610.000,1.000,2.400,610.000,-1.000,2.400,1.502e+05 +2025,20.780679,10,598.200,53.300,3.8470,-596.500,34.900,-27.300,596.500,-34.900,-27.300,1.721e+05 +2025,20.808580,10,600.900,55.200,4.5570,-600.500,4.400,-20.400,600.500,-4.400,-20.400,1.846e+05 +2025,20.814436,10,602.700,52.200,4.3270,-602.500,4.600,-12.900,602.500,-4.600,-12.900,1.651e+05 +2025,20.830696,10,604.700,57.300,3.8510,-602.300,45.200,-27.900,602.300,-45.200,-27.900,1.989e+05 +2025,20.860888,10,613.900,59.000,4.1540,-612.500,27.700,-31.100,612.500,-27.700,-31.100,2.109e+05 +2025,20.866708,10,608.500,60.200,4.3060,-607.500,35.400,-2.300,607.500,-35.400,-2.300,2.195e+05 +2025,20.873692,10,622.400,58.200,4.1310,-621.400,32.300,14.500,621.400,-32.300,14.500,2.052e+05 +2025,20.874856,10,642.900,51.300,3.4150,-641.600,41.000,0.300,641.600,-41.000,0.300,1.594e+05 +2025,20.880640,10,627.400,57.400,3.5840,-627.200,16.300,1.600,627.200,-16.300,1.600,1.996e+05 +2025,20.903884,10,611.100,53.400,3.1660,-610.700,22.000,-5.700,610.700,-22.000,-5.700,1.727e+05 +2025,20.917853,10,604.300,53.900,3.2640,-602.500,32.900,-32.400,602.500,-32.900,-32.400,1.760e+05 +2025,20.923673,10,610.000,52.400,3.8860,-609.500,22.100,9.400,609.500,-22.100,9.400,1.663e+05 +2025,21.060810,10,658.900,54.700,2.1560,-658.000,29.600,-14.500,658.000,-29.600,-14.500,1.812e+05 +2025,21.087547,10,656.700,50.200,2.4880,-655.200,32.700,31.500,655.200,-32.700,31.500,1.526e+05 +2025,21.247456,10,609.400,48.300,2.4180,-608.300,33.000,-17.000,608.300,-33.000,-17.000,1.413e+05 +2025,21.264953,10,605.200,49.200,2.0070,-604.000,34.800,12.100,604.000,-34.800,12.100,1.466e+05 +2025,21.364878,10,576.700,42.800,1.9450,-576.300,20.500,10.900,576.300,-20.500,10.900,1.110e+05 +2025,21.396198,10,577.000,37.200,1.9620,-577.000,7.400,3.700,577.000,-7.400,3.700,8.382e+04 +2025,21.427591,10,562.000,34.700,1.9170,-561.800,10.800,13.500,561.800,-10.800,13.500,7.294e+04 +2025,21.458983,10,559.400,37.300,2.2440,-559.300,-4.100,10.300,559.300,4.100,10.300,8.428e+04 +2025,21.470660,10,574.500,35.200,2.2370,-574.200,-14.200,13.300,574.200,14.200,13.300,7.505e+04 +2025,21.497360,10,580.000,38.800,2.3580,-579.700,-15.600,3.000,579.700,15.600,3.000,9.119e+04 +2025,21.518349,10,563.000,43.100,2.8020,-562.300,-22.300,18.700,562.300,22.300,18.700,1.125e+05 +2025,21.519513,10,568.400,39.200,2.4560,-567.200,-17.900,33.100,567.200,17.900,33.100,9.308e+04 +2025,21.525333,10,569.300,41.400,2.2760,-568.600,-16.400,22.100,568.600,16.400,22.100,1.038e+05 +2025,21.528825,10,564.400,40.100,2.2400,-563.600,-18.400,24.400,563.600,18.400,24.400,9.740e+04 +2025,21.549778,10,561.400,37.300,2.0790,-560.700,-8.700,25.700,560.700,8.700,25.700,8.428e+04 +2025,21.583462,10,537.200,39.600,2.2830,-537.100,6.700,4.200,537.100,-6.700,4.200,9.499e+04 +2025,21.610162,10,531.400,36.100,2.2660,-531.400,2.600,0.200,531.400,-2.600,0.200,7.894e+04 +2025,21.615983,10,529.500,34.700,2.3930,-529.500,3.500,-6.400,529.500,-3.500,-6.400,7.294e+04 +2025,21.621803,10,528.200,34.200,2.3640,-528.000,12.200,-10.900,528.000,-12.200,-10.900,7.085e+04 +2025,21.635808,10,522.200,33.400,2.1860,-522.200,1.000,1.600,522.200,-1.000,1.600,6.757e+04 +2025,21.641628,10,532.000,33.000,2.2870,-532.000,-2.200,-3.400,532.000,2.200,-3.400,6.596e+04 +2025,21.647448,10,517.200,36.200,2.5800,-517.100,-4.600,-3.400,517.100,4.600,-3.400,7.938e+04 +2025,21.649776,10,523.600,36.700,2.1690,-523.600,1.000,2.500,523.600,-1.000,2.500,8.159e+04 +2025,21.668328,10,516.600,36.200,2.3380,-516.600,3.500,3.700,516.600,-3.500,3.700,7.938e+04 +2025,21.672948,10,517.400,36.000,2.2530,-517.400,2.800,4.700,517.400,-2.800,4.700,7.850e+04 +2025,21.679932,10,513.800,35.300,2.2290,-513.800,1.900,7.600,513.800,-1.900,7.600,7.548e+04 +2025,21.692773,10,515.800,35.700,2.3700,-515.700,-0.500,6.400,515.700,0.500,6.400,7.720e+04 +2025,21.695137,10,520.200,33.900,2.3140,-520.200,1.900,3.200,520.200,-1.900,3.200,6.961e+04 +2025,21.729985,10,502.200,41.500,2.3300,-501.800,15.500,-10.000,501.800,-15.500,-10.000,1.043e+05 +2025,21.754467,10,505.000,33.900,2.0190,-504.700,5.800,-16.000,504.700,-5.800,-16.000,6.961e+04 +2025,21.755631,10,504.400,34.100,2.0560,-504.100,5.600,-17.300,504.100,-5.600,-17.300,7.044e+04 +2025,21.760323,10,508.300,35.500,2.1170,-508.000,5.200,-14.100,508.000,-5.200,-14.100,7.634e+04 +2025,21.761487,10,509.300,34.400,2.0960,-509.000,7.300,-17.300,509.000,-7.300,-17.300,7.168e+04 +2025,21.762651,10,507.700,37.400,2.0530,-507.500,8.500,-11.700,507.500,-8.500,-11.700,8.473e+04 +2025,21.767307,10,515.700,38.100,2.4340,-515.300,8.900,-18.900,515.300,-8.900,-18.900,8.793e+04 +2025,21.803283,10,508.900,38.900,2.4860,-508.700,-11.800,-8.100,508.700,11.800,-8.100,9.166e+04 +2025,21.809103,10,497.600,38.800,2.5220,-497.600,-4.800,-3.500,497.600,4.800,-3.500,9.119e+04 +2025,21.819543,10,508.000,29.200,1.9420,-507.800,-10.300,-9.600,507.800,10.300,-9.600,5.165e+04 +2025,21.827655,10,504.900,33.100,2.3310,-504.800,-2.500,-8.100,504.800,2.500,-8.100,6.637e+04 +2025,21.848608,10,501.200,35.700,2.4240,-501.100,4.700,-9.300,501.100,-4.700,-9.300,7.720e+04 +2025,21.877745,10,513.900,33.900,2.4440,-513.800,-3.400,-9.900,513.800,3.400,-9.900,6.961e+04 +2025,21.884693,10,510.300,38.300,2.8330,-510.300,-0.300,-7.900,510.300,0.300,-7.900,8.886e+04 +2025,21.890477,10,506.000,36.400,2.7760,-505.800,-2.100,-10.800,505.800,2.100,-10.800,8.026e+04 +2025,21.902117,10,518.500,35.600,2.0700,-518.400,-11.700,-4.100,518.400,11.700,-4.100,7.677e+04 +2025,21.904445,10,518.800,38.100,2.7070,-518.500,4.800,-16.900,518.500,-4.800,-16.900,8.793e+04 +2025,21.929981,10,516.100,33.500,2.7770,-515.700,-14.500,14.800,515.700,14.500,14.800,6.798e+04 +2025,21.975305,10,494.100,39.100,3.4310,-493.700,-1.100,-19.800,493.700,1.100,-19.800,9.261e+04 +2025,22.038017,10,515.700,38.200,3.4330,-515.500,-14.800,1.900,515.500,14.800,1.900,8.839e+04 +2025,22.044965,10,504.200,43.600,3.9740,-504.000,7.900,-11.500,504.000,-7.900,-11.500,1.151e+05 +2025,22.098511,10,505.700,39.300,3.6200,-505.100,-20.800,11.100,505.100,20.800,11.100,9.356e+04 +2025,22.126520,10,474.300,41.000,3.8970,-474.200,-1.400,12.800,474.200,1.400,12.800,1.018e+05 +2025,22.131177,10,471.100,48.800,3.9540,-471.000,6.300,7.700,471.000,-6.300,7.700,1.443e+05 +2025,22.193889,10,477.100,37.500,4.1740,-476.800,-2.200,15.300,476.800,2.200,15.300,8.518e+04 +2025,22.207821,10,480.500,36.600,4.1830,-480.300,-9.100,9.900,480.300,9.100,9.900,8.114e+04 +2025,22.219461,10,496.300,40.400,4.1350,-496.200,-10.000,3.100,496.200,10.000,3.100,9.887e+04 +2025,22.239286,10,472.500,39.500,4.4800,-472.300,1.400,13.700,472.300,-1.400,13.700,9.451e+04 +2025,22.241614,10,472.800,36.000,4.1800,-472.400,4.200,18.600,472.400,-4.200,18.600,7.850e+04 +2025,22.268278,10,482.600,35.500,4.5820,-482.400,-7.300,-12.500,482.400,7.300,-12.500,7.634e+04 +2025,22.295124,10,474.500,32.200,3.8160,-474.000,8.500,-18.700,474.000,-8.500,-18.700,6.281e+04 +2025,22.333428,10,475.900,40.200,5.1780,-475.700,-12.700,-1.400,475.700,12.700,-1.400,9.789e+04 +2025,22.339284,10,477.500,35.400,5.0190,-477.200,-14.600,8.500,477.200,14.600,8.500,7.591e+04 +2025,22.362529,10,481.400,29.900,3.7200,-481.200,13.400,-7.700,481.200,-13.400,-7.700,5.415e+04 +2025,22.503159,10,464.200,31.000,4.3700,-463.800,-20.200,0.100,463.800,20.200,0.100,5.821e+04 +2025,22.583332,10,471.800,35.100,3.9290,-471.000,-17.900,19.300,471.000,17.900,19.300,7.463e+04 +2025,22.598464,10,465.300,39.100,4.3270,-464.700,-17.300,16.900,464.700,17.300,16.900,9.261e+04 +2025,22.611232,10,454.600,35.300,4.4790,-454.300,-17.300,1.400,454.300,17.300,1.400,7.548e+04 +2025,22.651937,10,454.400,34.700,4.3390,-454.100,-17.400,-0.400,454.100,17.400,-0.400,7.294e+04 +2025,22.770413,10,464.900,37.400,4.8630,-464.500,-11.700,-14.500,464.500,11.700,-14.500,8.473e+04 +2025,22.822795,10,457.400,36.000,4.7210,-457.200,-15.900,3.000,457.200,15.900,3.000,7.850e+04 +2025,22.905296,10,439.400,34.700,4.5160,-439.100,-16.700,-4.300,439.100,16.700,-4.300,7.294e+04 +2025,22.986596,10,436.100,37.000,4.7170,-435.800,-16.400,-3.500,435.800,16.400,-3.500,8.293e+04 +2025,22.997073,10,434.400,36.300,4.4720,-434.300,-8.700,-7.300,434.300,8.700,-7.300,7.982e+04 +2025,23.088886,10,434.700,36.000,3.7400,-434.600,-3.300,-9.900,434.600,3.300,-9.900,7.850e+04 +2025,23.106346,10,428.100,39.100,4.4360,-428.100,0.400,0.300,428.100,-0.400,0.300,9.261e+04 +2025,23.107510,10,428.500,39.200,4.5050,-428.500,1.200,2.000,428.500,-1.200,2.000,9.308e+04 +2025,23.120279,10,422.400,39.700,4.2960,-422.400,1.200,-3.100,422.400,-1.200,-3.100,9.547e+04 +2025,23.124898,10,422.000,35.900,4.2390,-421.800,-2.600,-11.600,421.800,2.600,-11.600,7.807e+04 +2025,23.134174,10,425.300,39.400,4.2920,-425.300,-3.700,-2.900,425.300,3.700,-2.900,9.403e+04 +2025,23.146979,10,421.200,41.200,4.5130,-421.100,-8.900,-2.100,421.100,8.900,-2.100,1.028e+05 +2025,23.152799,10,434.900,36.400,3.9630,-434.800,-8.600,-2.700,434.800,8.600,-2.700,8.026e+04 +2025,23.213292,10,421.100,39.600,4.0300,-421.100,-1.800,-0.900,421.100,1.800,-0.900,9.499e+04 +2025,23.220240,10,421.600,40.000,4.0810,-421.600,-4.300,-2.300,421.600,4.300,-2.300,9.692e+04 +2025,23.223696,10,409.300,50.600,5.1570,-409.300,-3.300,-3.000,409.300,3.300,-3.000,1.551e+05 +2025,23.270330,10,424.000,34.400,4.4780,-423.900,-10.200,-0.100,423.900,10.200,-0.100,7.168e+04 +2025,23.271494,10,423.500,37.600,3.7390,-423.300,-10.900,-5.600,423.300,10.900,-5.600,8.564e+04 +2025,23.283098,10,438.200,31.000,3.3810,-437.500,-6.700,-23.500,437.500,6.700,-23.500,5.821e+04 +2025,23.319110,10,437.600,23.900,3.3840,-437.300,-14.900,-3.300,437.300,14.900,-3.300,3.460e+04 +2025,23.327222,10,438.100,27.300,3.8870,-437.700,-14.000,-12.200,437.700,14.000,-12.200,4.515e+04 +2025,23.335371,10,431.400,29.800,3.8750,-431.300,-9.800,-5.600,431.300,9.800,-5.600,5.379e+04 +2025,23.348139,10,427.400,28.600,3.9720,-427.300,-8.300,-8.000,427.300,8.300,-8.000,4.955e+04 +2025,23.355123,10,425.200,29.600,4.8050,-425.200,-5.900,-5.000,425.200,5.900,-5.000,5.307e+04 +2025,23.366800,10,429.100,30.700,4.2050,-428.900,-10.600,-2.600,428.900,10.600,-2.600,5.709e+04 +2025,23.376112,10,434.400,32.100,4.5630,-434.300,-9.900,-1.200,434.300,9.900,-1.200,6.242e+04 +2025,23.383096,10,436.100,26.300,4.4440,-435.800,-16.300,-2.300,435.800,16.300,-2.300,4.190e+04 +2025,23.384260,10,434.700,28.500,3.8380,-434.600,-10.600,0.400,434.600,10.600,0.400,4.920e+04 +2025,23.386588,10,437.200,26.500,4.3720,-436.900,-15.300,6.300,436.900,15.300,6.300,4.254e+04 +2025,23.429621,10,428.600,30.400,4.1010,-428.400,-6.100,11.600,428.400,6.100,11.600,5.598e+04 +2025,23.437769,10,446.100,33.000,4.2720,-446.000,-6.600,-2.700,446.000,6.600,-2.700,6.596e+04 +2025,23.453993,10,427.900,27.400,3.9600,-427.700,-14.000,-0.100,427.700,14.000,-0.100,4.548e+04 +2025,23.473782,10,438.700,36.800,4.4960,-438.200,-18.900,-8.000,438.200,18.900,-8.000,8.203e+04 +2025,23.497135,10,434.000,36.800,5.6150,-433.700,-14.900,-4.600,433.700,14.900,-4.600,8.203e+04 +2025,23.501791,10,433.200,34.700,5.3710,-433.000,-11.000,-6.100,433.000,11.000,-6.100,7.294e+04 +2025,23.505247,10,441.300,30.200,5.4080,-440.900,-17.700,-5.700,440.900,17.700,-5.700,5.525e+04 +2025,23.518052,10,439.100,31.900,4.6460,-438.700,-17.900,-6.100,438.700,17.900,-6.100,6.164e+04 +2025,23.529655,10,439.200,32.600,5.8370,-438.500,-22.200,-8.000,438.500,22.200,-8.000,6.438e+04 +2025,23.533111,10,438.200,32.800,5.9400,-437.600,-21.100,-6.900,437.600,21.100,-6.900,6.517e+04 +2025,23.534275,10,435.900,32.500,5.9980,-435.300,-23.200,-6.000,435.300,23.200,-6.000,6.398e+04 +2025,23.538931,10,435.300,33.400,6.2320,-434.500,-26.300,0.200,434.500,26.300,0.200,6.757e+04 +2025,23.547080,10,438.300,34.600,6.0800,-437.700,-23.500,-4.500,437.700,23.500,-4.500,7.252e+04 +2025,23.567996,10,437.500,36.900,6.6850,-436.700,-25.600,-5.100,436.700,25.600,-5.100,8.248e+04 +2025,23.615648,10,464.400,43.800,4.9200,-463.700,-14.700,-20.100,463.700,14.700,-20.100,1.162e+05 +2025,23.621468,10,467.300,44.200,4.5380,-466.500,-19.700,-17.100,466.500,19.700,-17.100,1.183e+05 +2025,23.638892,10,468.100,38.800,4.3570,-467.400,-13.800,-21.900,467.400,13.800,-21.900,9.119e+04 +2025,23.649405,10,458.500,41.400,4.1230,-458.400,-5.200,-6.100,458.400,5.200,-6.100,1.038e+05 +2025,23.656353,10,466.600,39.300,4.2530,-466.000,-8.300,-20.200,466.000,8.300,-20.200,9.356e+04 +2025,23.669121,10,472.500,34.500,4.3300,-471.400,-20.300,-25.900,471.400,20.300,-25.900,7.210e+04 +2025,23.671449,10,467.700,34.500,3.8830,-467.000,-14.200,-22.300,467.000,14.200,-22.300,7.210e+04 +2025,23.677232,10,467.600,33.500,3.9020,-466.700,-12.100,-25.100,466.700,12.100,-25.100,6.798e+04 +2025,23.715573,10,460.700,37.100,4.0930,-459.500,-21.700,-25.100,459.500,21.700,-25.100,8.337e+04 +2025,23.732997,10,454.900,35.700,4.9120,-454.300,-18.500,-16.700,454.300,18.500,-16.700,7.720e+04 +2025,23.741145,10,463.500,41.300,4.2600,-463.200,-11.100,-11.200,463.200,11.100,-11.200,1.033e+05 +2025,23.755114,10,452.200,42.300,4.6140,-452.100,8.300,-3.800,452.100,-8.300,-3.800,1.084e+05 +2025,23.763226,10,454.900,39.300,4.6340,-454.800,7.500,-3.400,454.800,-7.500,-3.400,9.356e+04 +2025,23.782941,10,460.400,41.400,5.1160,-460.300,-8.600,-4.900,460.300,8.600,-4.900,1.038e+05 +2025,23.789962,10,466.400,38.200,5.2130,-466.300,0.100,-5.800,466.300,-0.100,-5.800,8.839e+04 +2025,23.799311,10,472.800,41.300,5.3390,-472.500,-4.600,-16.900,472.500,4.600,-16.900,1.033e+05 +2025,23.828339,10,454.400,40.200,4.8820,-453.000,-14.800,-31.200,453.000,14.800,-31.200,9.789e+04 +2025,23.858640,10,464.900,39.400,5.0560,-464.000,-20.900,-19.600,464.000,20.900,-19.600,9.403e+04 +2025,23.870317,10,439.800,38.600,4.5930,-438.900,-18.700,-19.200,438.900,18.700,-19.200,9.025e+04 +2025,23.890033,10,443.800,42.200,4.9620,-443.300,-12.100,-17.400,443.300,12.100,-17.400,1.079e+05 +2025,23.926045,10,442.200,41.800,4.8070,-442.200,-1.500,2.800,442.200,1.500,2.800,1.058e+05 +2025,23.970278,10,459.500,41.000,5.6970,-458.400,30.100,9.300,458.400,-30.100,9.300,1.018e+05 +2025,24.063292,10,466.400,41.200,5.3840,-465.000,36.500,-4.400,465.000,-36.500,-4.400,1.028e+05 +2025,24.071441,10,464.100,40.600,5.2580,-462.500,37.800,-4.200,462.500,-37.800,-4.200,9.985e+04 +2025,24.085445,10,463.000,42.700,5.2670,-461.700,34.700,-4.100,461.700,-34.700,-4.100,1.104e+05 +2025,24.100578,10,458.200,46.100,5.3790,-458.000,12.800,-4.000,458.000,-12.800,-4.000,1.287e+05 +2025,24.113382,10,448.400,44.200,5.0550,-447.400,27.600,-12.200,447.400,-27.600,-12.200,1.183e+05 +2025,24.143574,10,453.000,41.900,5.2250,-451.800,29.900,-13.000,451.800,-29.900,-13.000,1.063e+05 +2025,24.151686,10,446.000,42.500,5.2320,-444.700,33.200,-6.100,444.700,-33.200,-6.100,1.094e+05 +2025,24.154014,10,447.300,45.000,5.7000,-445.700,34.500,-14.900,445.700,-34.500,-14.900,1.227e+05 +2025,24.197084,10,446.700,45.700,5.3150,-445.500,22.700,-23.500,445.500,-22.700,-23.500,1.265e+05 +2025,24.205232,10,446.000,43.300,4.9820,-444.500,30.000,-21.900,444.500,-30.000,-21.900,1.136e+05 +2025,24.212180,10,444.500,41.200,4.9110,-442.700,35.100,-19.000,442.700,-35.100,-19.000,1.028e+05 +2025,24.226112,10,449.400,40.400,5.2300,-449.200,11.600,-7.700,449.200,-11.600,-7.700,9.887e+04 +2025,24.228404,10,446.200,38.800,4.7270,-445.900,14.200,-3.700,445.900,-14.200,-3.700,9.119e+04 +2025,24.235388,10,448.000,40.300,4.5500,-447.300,19.000,-16.800,447.300,-19.000,-16.800,9.838e+04 +2025,24.252921,10,446.800,41.700,4.2140,-445.800,26.200,-15.900,445.800,-26.200,-15.900,1.053e+05 +2025,24.266853,10,444.500,39.900,4.1850,-443.100,30.000,-16.300,443.100,-30.000,-16.300,9.643e+04 +2025,24.281949,10,447.600,40.500,4.1050,-446.800,13.500,-23.600,446.800,-13.500,-23.600,9.936e+04 +2025,24.314615,10,448.000,39.200,4.2600,-447.500,20.900,1.400,447.500,-20.900,1.400,9.308e+04 +2025,24.368052,10,447.700,39.100,3.5470,-447.300,15.400,-12.400,447.300,-15.400,-12.400,9.261e+04 +2025,24.371544,10,450.600,41.800,4.0700,-449.900,14.100,-20.500,449.900,-14.100,-20.500,1.058e+05 +2025,24.377328,10,463.500,37.700,4.0340,-463.100,5.200,-18.400,463.100,-5.200,-18.400,8.609e+04 +2025,24.469214,10,449.000,34.400,3.6600,-448.600,1.100,-20.500,448.600,-1.100,-20.500,7.168e+04 +2025,24.482055,10,452.600,35.500,3.8300,-452.100,6.300,-19.100,452.100,-6.300,-19.100,7.634e+04 +2025,24.492495,10,454.600,38.100,3.8950,-453.300,1.800,-34.000,453.300,-1.800,-34.000,8.793e+04 +2025,24.506463,10,445.400,35.100,4.4420,-443.900,2.900,-36.200,443.900,-2.900,-36.200,7.463e+04 +2025,24.508755,10,458.400,35.100,4.0520,-455.800,6.300,-48.600,455.800,-6.300,-48.600,7.463e+04 +2025,24.537856,10,459.700,39.200,3.7890,-458.300,14.500,-32.400,458.300,-14.500,-32.400,9.308e+04 +2025,24.541311,10,454.200,42.400,3.1100,-453.200,14.100,-25.400,453.200,-14.100,-25.400,1.089e+05 +2025,24.557608,10,445.100,43.800,3.4150,-444.000,25.300,-19.500,444.000,-25.300,-19.500,1.162e+05 +2025,24.569176,10,449.000,40.200,3.8160,-447.800,16.600,-28.700,447.800,-16.600,-28.700,9.789e+04 +2025,24.674994,10,463.300,45.500,3.8130,-462.000,5.500,-34.100,462.000,-5.500,-34.100,1.254e+05 +2025,24.707514,10,443.900,41.800,3.9860,-441.700,13.900,-42.000,441.700,-13.900,-42.000,1.058e+05 +2025,24.720282,10,437.600,42.100,3.7890,-436.500,18.200,-25.600,436.500,-18.200,-25.600,1.074e+05 +2025,24.727266,10,447.200,41.300,3.6860,-445.500,10.300,-37.500,445.500,-10.300,-37.500,1.033e+05 +2025,24.736578,10,440.700,42.200,4.0200,-439.600,15.300,-25.900,439.600,-15.300,-25.900,1.079e+05 +2025,24.786522,10,434.800,40.400,4.5890,-434.200,4.600,-23.400,434.200,-4.600,-23.400,9.887e+04 +2025,24.802746,10,430.800,40.600,4.9050,-430.700,4.200,-11.300,430.700,-4.200,-11.300,9.985e+04 +2025,24.821370,10,442.000,33.100,4.3710,-441.500,12.700,-17.000,441.500,-12.700,-17.000,6.637e+04 +2025,24.837703,10,439.600,35.500,5.1020,-438.500,-1.700,-30.800,438.500,1.700,-30.800,7.634e+04 +2025,24.843523,10,430.900,40.800,4.6080,-430.300,1.600,-22.600,430.300,-1.600,-22.600,1.008e+05 +2025,24.845815,10,417.500,39.100,4.9750,-416.800,24.300,3.100,416.800,-24.300,3.100,9.261e+04 +2025,24.850471,10,431.000,37.100,5.0170,-429.800,2.300,-32.700,429.800,-2.300,-32.700,8.337e+04 +2025,24.874879,10,434.200,34.500,4.9130,-433.000,6.000,-31.600,433.000,-6.000,-31.600,7.210e+04 +2025,24.883028,10,434.500,37.200,5.4520,-430.700,30.500,-48.600,430.700,-30.500,-48.600,8.382e+04 +2025,24.885392,10,429.300,37.700,5.5470,-427.900,18.100,-28.100,427.900,-18.100,-28.100,8.609e+04 +2025,24.893540,10,419.800,36.000,5.5080,-418.500,5.300,-33.200,418.500,-5.300,-33.200,7.850e+04 +2025,24.894704,10,419.700,37.800,5.9770,-418.400,8.100,-30.800,418.400,-8.100,-30.800,8.655e+04 +2025,24.905217,10,421.300,38.000,4.6200,-420.200,5.700,-28.900,420.200,-5.700,-28.900,8.747e+04 +2025,24.906381,10,425.000,40.200,5.0510,-424.200,2.900,-24.800,424.200,-2.900,-24.800,9.789e+04 +2025,24.912165,10,426.600,41.800,4.2800,-425.200,5.500,-33.900,425.200,-5.500,-33.900,1.058e+05 +2025,24.922641,10,434.600,42.400,3.9850,-432.800,11.600,-37.400,432.800,-11.600,-37.400,1.089e+05 +2025,25.045811,10,416.900,36.700,5.3410,-416.600,3.700,-16.300,416.600,-3.700,-16.300,8.159e+04 +2025,25.074948,10,412.200,34.800,5.0020,-411.900,8.500,-14.000,411.900,-8.500,-14.000,7.336e+04 +2025,25.130749,10,405.700,33.300,5.6520,-405.400,12.200,-6.000,405.400,-12.200,-6.000,6.717e+04 +2025,25.155121,10,408.000,27.200,5.5000,-407.500,19.400,4.000,407.500,-19.400,4.000,4.481e+04 +2025,25.157449,10,408.800,27.200,5.3970,-408.400,16.600,4.100,408.400,-16.600,4.100,4.481e+04 +2025,25.165598,10,417.700,31.800,5.3330,-417.500,12.800,3.900,417.500,-12.800,3.900,6.125e+04 +2025,25.173709,10,410.300,28.300,5.8940,-410.100,12.800,1.700,410.100,-12.800,1.700,4.851e+04 +2025,25.178366,10,404.700,28.800,6.0420,-404.500,14.300,-0.600,404.500,-14.300,-0.600,5.024e+04 +2025,25.193462,10,400.200,27.500,5.6080,-399.800,17.800,-2.500,399.800,-17.800,-2.500,4.581e+04 +2025,25.234203,10,392.600,29.500,6.8890,-392.000,18.900,-7.600,392.000,-18.900,-7.600,5.271e+04 +2025,25.244643,10,409.100,28.900,5.9910,-409.100,-1.000,-5.100,409.100,1.000,-5.100,5.059e+04 +2025,25.249299,10,408.200,29.300,6.1130,-408.200,-1.500,-3.900,408.200,1.500,-3.900,5.200e+04 +2025,25.260940,10,406.200,27.900,6.0570,-406.200,-5.300,-3.600,406.200,5.300,-3.600,4.715e+04 +2025,25.283093,10,400.700,29.700,6.4950,-400.700,0.900,-2.000,400.700,-0.900,-2.000,5.343e+04 +2025,25.314412,10,397.900,29.600,6.5900,-397.900,1.600,0.900,397.900,-1.600,0.900,5.307e+04 +2025,25.322561,10,391.500,32.400,6.4770,-391.400,7.400,3.200,391.400,-7.400,3.200,6.359e+04 +2025,25.352789,10,393.000,29.100,6.4290,-393.000,3.000,-3.200,393.000,-3.000,-3.200,5.129e+04 +2025,25.353953,10,393.000,29.200,6.1300,-393.000,4.000,-0.900,393.000,-4.000,-0.900,5.165e+04 +2025,25.360901,10,390.100,29.300,5.9520,-390.100,2.600,1.000,390.100,-2.600,1.000,5.200e+04 +2025,25.371378,10,391.100,30.400,5.9220,-391.100,1.900,-0.100,391.100,-1.900,-0.100,5.598e+04 +2025,25.377198,10,393.000,31.700,5.5280,-392.900,1.200,0.300,392.900,-1.200,0.300,6.087e+04 +2025,25.378362,10,392.200,32.200,5.7290,-392.200,1.600,-0.900,392.200,-1.600,-0.900,6.281e+04 +2025,25.419030,10,383.800,31.200,5.7690,-383.800,1.700,-4.400,383.800,-1.700,-4.400,5.896e+04 +2025,25.422522,10,382.400,31.200,6.0280,-382.400,0.600,-3.900,382.400,-0.600,-3.900,5.896e+04 +2025,25.424851,10,381.900,30.600,5.7910,-381.800,2.400,-4.900,381.800,-2.400,-4.900,5.672e+04 +2025,25.469048,10,385.600,30.200,5.8580,-385.500,1.000,-9.000,385.500,-1.000,-9.000,5.525e+04 +2025,25.502732,10,383.800,29.300,5.7980,-383.700,-0.500,-6.800,383.700,0.500,-6.800,5.200e+04 +2025,25.507388,10,384.600,30.500,5.9450,-384.500,-3.200,-7.100,384.500,3.200,-7.100,5.635e+04 +2025,25.515500,10,381.700,31.000,5.9570,-381.700,-1.800,-7.300,381.700,1.800,-7.300,5.821e+04 +2025,25.538781,10,381.400,30.000,5.3390,-381.400,-4.600,-4.500,381.400,4.600,-4.500,5.452e+04 +2025,25.545765,10,377.700,30.000,5.5480,-377.700,-1.900,-6.200,377.700,1.900,-6.200,5.452e+04 +2025,25.546929,10,379.000,29.900,5.4420,-379.000,-2.500,-5.300,379.000,2.500,-5.300,5.415e+04 +2025,25.581777,10,381.400,31.600,5.2700,-381.100,-9.100,-10.700,381.100,9.100,-10.700,6.049e+04 +2025,25.589926,10,385.400,28.800,5.0120,-385.300,-6.400,-7.600,385.300,6.400,-7.600,5.024e+04 +2025,25.593381,10,384.200,29.900,5.1840,-384.100,-6.900,-6.900,384.100,6.900,-6.900,5.415e+04 +2025,25.609605,10,380.400,32.000,5.3680,-380.200,-5.400,-12.300,380.200,5.400,-12.300,6.203e+04 +2025,25.611933,10,384.000,31.100,5.0860,-383.700,-2.200,-14.300,383.700,2.200,-14.300,5.859e+04 +2025,25.643362,10,375.800,29.400,5.1920,-375.600,-6.000,-12.200,375.600,6.000,-12.200,5.236e+04 +2025,25.650346,10,375.500,29.600,5.3130,-375.400,-5.400,-8.500,375.400,5.400,-8.500,5.307e+04 +2025,25.672390,10,376.300,29.700,4.9320,-376.100,-3.000,-11.300,376.100,3.000,-11.300,5.343e+04 +2025,25.679374,10,374.900,30.700,4.7990,-374.800,-4.900,-8.100,374.800,4.900,-8.100,5.709e+04 +2025,25.742159,10,368.300,30.000,5.1940,-368.200,-7.900,2.500,368.200,7.900,2.500,5.452e+04 +2025,25.749107,10,371.900,30.500,5.5360,-371.800,-8.900,-1.300,371.800,8.900,-1.300,5.635e+04 +2025,25.817712,10,368.300,30.400,5.0350,-368.100,-13.100,-5.000,368.100,13.100,-5.000,5.598e+04 +2025,25.831680,10,366.400,28.700,5.2570,-366.300,-8.000,4.300,366.300,8.000,4.300,4.989e+04 +2025,25.836337,10,368.000,29.400,5.1600,-367.800,-10.900,-4.100,367.800,10.900,-4.100,5.236e+04 +2025,25.846849,10,368.400,29.300,5.2980,-368.100,-11.000,-9.600,368.100,11.000,-9.600,5.200e+04 +2025,25.943282,10,372.900,25.200,5.1840,-372.800,-5.700,-1.600,372.800,5.700,-1.600,3.847e+04 +2025,25.958378,10,371.100,24.800,5.3000,-370.900,-12.300,-4.300,370.900,12.300,-4.300,3.726e+04 +2025,25.992099,10,366.500,24.300,5.7390,-366.400,-6.500,-3.600,366.400,6.500,-3.600,3.577e+04 +2025,25.995591,10,362.200,24.500,5.5080,-361.900,-11.900,-6.800,361.900,11.900,-6.800,3.636e+04 +2025,26.003776,10,363.700,26.700,5.3360,-363.200,-17.800,-2.000,363.200,17.800,-2.000,4.318e+04 +2025,26.014216,10,364.000,27.000,5.0080,-363.700,-15.400,0.600,363.700,15.400,0.600,4.416e+04 +2025,26.020000,10,365.100,26.400,4.9280,-364.800,-14.400,3.200,364.800,14.400,3.200,4.222e+04 +2025,26.021164,10,363.400,26.400,4.9130,-363.100,-15.300,-0.200,363.100,15.300,-0.200,4.222e+04 +2025,26.024656,10,365.700,25.800,4.6710,-365.400,-16.200,-0.100,365.400,16.200,-0.100,4.032e+04 +2025,26.047900,10,368.200,24.700,4.5850,-367.800,-18.100,-5.600,367.800,18.100,-5.600,3.696e+04 +2025,26.072308,10,361.100,24.600,4.7780,-360.600,-18.500,-6.800,360.600,18.500,-6.800,3.666e+04 +2025,26.075801,10,359.800,23.800,4.4930,-359.300,-17.900,-8.600,359.300,17.900,-8.600,3.431e+04 +2025,26.088569,10,359.000,23.900,4.5950,-358.500,-16.400,-9.100,358.500,16.400,-9.100,3.460e+04 +2025,26.096717,10,356.800,23.300,4.6690,-356.300,-16.600,-7.900,356.300,16.600,-7.900,3.288e+04 +2025,26.135057,10,349.300,23.600,5.7390,-348.800,-15.300,-8.600,348.800,15.300,-8.600,3.374e+04 +2025,26.136221,10,348.200,23.800,5.9210,-347.800,-15.400,-7.600,347.800,15.400,-7.600,3.431e+04 +2025,26.137385,10,347.900,23.800,5.6760,-347.400,-15.400,-8.500,347.400,15.400,-8.500,3.431e+04 +2025,26.153682,10,344.600,23.100,5.4040,-344.300,-15.000,-5.200,344.300,15.000,-5.200,3.232e+04 +2025,26.169942,10,342.100,22.800,5.3830,-341.700,-14.400,-6.800,341.700,14.400,-6.800,3.149e+04 +2025,26.179218,10,342.800,23.400,5.5000,-342.400,-16.200,-8.000,342.400,16.200,-8.000,3.317e+04 +2025,26.203663,10,341.900,26.000,5.4620,-341.500,-16.200,-5.700,341.500,16.200,-5.700,4.095e+04 +2025,26.228035,10,339.700,26.000,5.0980,-339.100,-15.700,-9.900,339.100,15.700,-9.900,4.095e+04 +2025,26.237311,10,339.700,25.800,5.6300,-339.200,-15.700,-7.700,339.200,15.700,-7.700,4.032e+04 +2025,26.316356,10,334.100,20.500,5.9000,-333.600,-16.100,-8.300,333.600,16.100,-8.300,2.546e+04 +2025,26.326796,10,327.700,21.900,5.8080,-327.200,-13.000,-12.100,327.200,13.000,-12.100,2.905e+04 +2025,26.357025,10,324.700,21.700,5.6630,-324.000,-16.800,-13.300,324.000,16.800,-13.300,2.852e+04 +2025,26.369793,10,325.100,21.500,5.5720,-324.300,-18.200,-11.800,324.300,18.200,-11.800,2.800e+04 +2025,26.379069,10,323.300,22.200,5.5310,-322.600,-14.900,-14.900,322.600,14.900,-14.900,2.985e+04 +2025,26.393037,10,324.000,20.400,5.5540,-323.400,-15.400,-11.600,323.400,15.400,-11.600,2.521e+04 +2025,26.445382,10,324.700,18.500,5.0980,-324.200,-15.200,-10.200,324.200,15.200,-10.200,2.073e+04 +2025,26.500092,10,315.500,18.400,6.7020,-315.100,-13.700,-7.500,315.100,13.700,-7.500,2.051e+04 +2025,26.508204,10,318.300,18.700,6.4210,-317.800,-14.800,-8.900,317.800,14.800,-8.900,2.118e+04 +2025,26.545380,10,316.700,17.200,6.6330,-316.200,-15.300,-9.400,316.200,15.300,-9.400,1.792e+04 +2025,26.551164,10,316.700,17.800,7.0330,-316.200,-14.600,-10.300,316.200,14.600,-10.300,1.919e+04 +2025,26.552328,10,316.700,17.300,6.6490,-316.100,-15.800,-10.100,316.100,15.800,-10.100,1.813e+04 +2025,26.558149,10,315.500,17.300,6.8580,-315.000,-14.900,-10.200,315.000,14.900,-10.200,1.813e+04 +2025,26.563969,10,313.600,16.600,7.3660,-313.200,-13.000,-8.200,313.200,13.000,-8.200,1.669e+04 +2025,26.569789,10,314.100,16.000,7.2310,-313.600,-15.300,-8.500,313.600,15.300,-8.500,1.551e+04 +2025,26.576773,10,314.300,15.000,6.4140,-313.900,-12.900,-9.900,313.900,12.900,-9.900,1.363e+04 +2025,26.624462,10,316.200,15.400,5.7660,-315.700,-10.800,-12.500,315.700,10.800,-12.500,1.437e+04 +2025,26.640686,10,313.700,15.300,6.1730,-313.100,-14.300,-11.900,313.100,14.300,-11.900,1.418e+04 +2025,26.643014,10,313.000,15.200,6.1990,-312.500,-13.800,-11.400,312.500,13.800,-11.400,1.399e+04 +2025,26.648834,10,312.000,15.500,6.4560,-311.500,-13.000,-11.600,311.500,13.000,-11.600,1.455e+04 +2025,26.668623,10,311.900,16.500,6.8020,-311.000,-18.400,-14.200,311.000,18.400,-14.200,1.649e+04 +2025,26.669787,10,310.400,17.000,6.9690,-309.600,-17.600,-14.700,309.600,17.600,-14.700,1.751e+04 +2025,26.681463,10,311.800,17.200,7.4900,-311.400,-13.200,-11.000,311.400,13.200,-11.000,1.792e+04 +2025,26.682664,10,311.900,16.800,7.4280,-311.500,-12.000,-11.100,311.500,12.000,-11.100,1.710e+04 +2025,26.684992,10,311.500,17.400,7.5650,-311.100,-12.100,-10.600,311.100,12.100,-10.600,1.834e+04 +2025,26.687320,10,311.400,17.300,7.4870,-310.900,-12.500,-10.400,310.900,12.500,-10.400,1.813e+04 +2025,26.704744,10,309.800,17.200,7.3800,-309.200,-14.200,-11.400,309.200,14.200,-11.400,1.792e+04 +2025,26.712856,10,311.400,17.000,7.7540,-311.000,-12.200,-11.400,311.000,12.200,-11.400,1.751e+04 +2025,26.740756,10,307.700,17.800,7.4000,-307.300,-12.000,-10.500,307.300,12.000,-10.500,1.919e+04 +2025,26.766292,10,306.300,18.100,7.7220,-305.900,-12.300,-10.900,305.900,12.300,-10.900,1.984e+04 +2025,26.770948,10,306.300,17.400,7.6560,-305.800,-13.100,-10.400,305.800,13.100,-10.400,1.834e+04 +2025,26.775604,10,306.400,17.700,8.0530,-305.900,-12.400,-12.700,305.900,12.400,-12.700,1.898e+04 +2025,26.795393,10,306.700,16.600,7.8150,-306.200,-13.000,-10.900,306.200,13.000,-10.900,1.669e+04 +2025,26.796557,10,305.600,16.900,7.9580,-305.100,-13.900,-10.800,305.100,13.900,-10.800,1.730e+04 +2025,26.832569,10,304.000,16.800,8.1880,-303.500,-11.200,-12.300,303.500,11.200,-12.300,1.710e+04 +2025,26.833733,10,302.400,16.400,7.8840,-302.000,-10.800,-12.700,302.000,10.800,-12.700,1.629e+04 +2025,26.869745,10,300.500,17.300,7.6690,-300.100,-5.800,-15.600,300.100,5.800,-15.600,1.813e+04 +2025,26.874401,10,300.900,17.800,7.2820,-300.500,-7.900,-13.800,300.500,7.900,-13.800,1.919e+04 +2025,26.895354,10,304.400,16.100,5.9980,-304.000,-8.100,-11.400,304.000,8.100,-11.400,1.570e+04 +2025,26.897646,10,303.500,16.200,6.1620,-303.100,-7.700,-12.100,303.100,7.700,-12.100,1.590e+04 +2025,26.915033,10,296.000,17.600,5.6840,-295.400,-10.600,-14.700,295.400,10.600,-14.700,1.876e+04 +2025,26.917361,10,304.600,16.500,6.3300,-304.200,-10.400,-10.800,304.200,10.400,-10.800,1.649e+04 +2025,26.926674,10,300.900,16.800,6.1470,-300.800,-9.000,-4.600,300.800,9.000,-4.600,1.710e+04 +2025,26.941806,10,299.400,17.900,6.4190,-298.900,-12.700,-11.300,298.900,12.700,-11.300,1.941e+04 +2025,26.948754,10,296.900,18.000,6.1160,-296.500,-10.800,-10.900,296.500,10.800,-10.900,1.963e+04 +2025,26.955701,10,297.200,17.800,6.1190,-296.900,-8.100,-9.900,296.900,8.100,-9.900,1.919e+04 +2025,26.960358,10,296.500,18.000,6.1190,-296.100,-9.100,-10.100,296.100,9.100,-10.100,1.963e+04 +2025,26.962686,10,296.700,18.200,5.9150,-296.400,-9.600,-7.100,296.400,9.600,-7.100,2.006e+04 +2025,26.968469,10,292.300,19.200,5.2020,-292.100,-7.700,-9.800,292.100,7.700,-9.800,2.233e+04 +2025,26.983638,10,293.200,19.800,5.5250,-292.900,-6.900,-10.100,292.900,6.900,-10.100,2.375e+04 +2025,27.004591,10,292.400,18.900,5.7730,-292.000,-8.900,-12.700,292.000,8.900,-12.700,2.164e+04 +2025,27.338123,10,314.500,20.400,22.5130,-314.100,-14.500,-4.700,314.100,14.500,-4.700,2.521e+04 +2025,27.343980,10,311.100,20.700,22.1010,-310.600,-16.800,-1.600,310.600,16.800,-1.600,2.596e+04 +2025,27.353292,10,312.700,19.600,23.4400,-312.200,-18.600,-3.500,312.200,18.600,-3.500,2.327e+04 +2025,27.375336,10,312.100,19.500,23.5950,-311.400,-18.900,-6.300,311.400,18.900,-6.300,2.303e+04 +2025,27.388140,10,310.900,17.500,23.6700,-310.200,-20.300,-3.800,310.200,20.300,-3.800,1.855e+04 +2025,27.390468,10,312.200,17.900,23.8440,-311.600,-18.500,-4.700,311.600,18.500,-4.700,1.941e+04 +2025,27.416149,10,308.200,18.500,24.5660,-307.300,-23.300,-2.000,307.300,23.300,-2.000,2.073e+04 +2025,27.450961,10,306.100,17.400,22.9520,-305.500,-18.900,0.900,305.500,18.900,0.900,1.834e+04 +2025,27.453289,10,307.600,17.900,23.5810,-306.900,-20.200,-1.400,306.900,20.200,-1.400,1.941e+04 +2025,27.462601,10,307.000,18.400,23.2680,-306.400,-19.900,-0.600,306.400,19.900,-0.600,2.051e+04 +2025,27.477697,10,303.000,19.000,20.6130,-301.900,-25.200,2.500,301.900,25.200,2.500,2.187e+04 +2025,27.497449,10,295.400,19.200,20.0710,-294.200,-23.400,13.300,294.200,23.400,13.300,2.233e+04 +2025,27.500942,10,295.700,20.300,19.7460,-294.800,-21.000,9.200,294.800,21.000,9.200,2.496e+04 +2025,27.518402,10,302.200,25.700,29.0410,-301.700,-14.300,-8.600,301.700,14.300,-8.600,4.001e+04 +2025,27.533498,10,306.500,18.700,23.7110,-306.500,-5.900,-1.400,306.500,5.900,-1.400,2.118e+04 +2025,27.547430,10,304.800,18.100,24.1630,-304.500,-10.500,-8.900,304.500,10.500,-8.900,1.984e+04 +2025,27.548594,10,303.500,18.600,23.4760,-303.200,-9.300,-7.900,303.200,9.300,-7.900,2.096e+04 +2025,27.550922,10,304.500,19.000,26.3110,-304.300,-8.900,-4.200,304.300,8.900,-4.200,2.187e+04 +2025,27.559107,10,302.700,19.800,27.9430,-302.500,-7.600,-5.500,302.500,7.600,-5.500,2.375e+04 +2025,27.560271,10,304.100,19.500,27.1440,-303.900,-9.900,-4.300,303.900,9.900,-4.300,2.303e+04 +2025,27.574203,10,299.200,18.300,28.2410,-299.000,-10.200,-3.100,299.000,10.200,-3.100,2.029e+04 +2025,27.607887,10,300.400,18.600,24.4240,-300.200,-11.000,0.200,300.200,11.000,0.200,2.096e+04 +2025,27.621819,10,301.800,19.300,24.7210,-301.700,-6.000,-5.200,301.700,6.000,-5.200,2.256e+04 +2025,27.648519,10,301.100,19.200,18.6470,-300.400,-17.500,-7.700,300.400,17.500,-7.700,2.233e+04 +2025,27.658996,10,299.900,19.100,18.7250,-299.300,-18.300,-4.400,299.300,18.300,-4.400,2.210e+04 +2025,27.688060,10,299.600,18.500,17.8290,-299.100,-16.500,-2.200,299.100,16.500,-2.200,2.073e+04 +2025,27.728765,10,296.400,18.200,18.5880,-296.000,-16.400,2.300,296.000,16.400,2.300,2.006e+04 +2025,27.747353,10,290.300,17.400,15.4960,-289.600,-19.100,6.600,289.600,19.100,6.600,1.834e+04 +2025,27.771834,10,290.000,16.600,17.2610,-289.300,-20.000,3.300,289.300,20.000,3.300,1.669e+04 +2025,27.775363,10,289.000,15.400,16.0860,-288.300,-19.700,-0.600,288.300,19.700,-0.600,1.437e+04 +2025,27.829963,10,292.700,16.900,19.0420,-292.300,-11.800,10.300,292.300,11.800,10.300,1.730e+04 +2025,27.849679,10,300.400,31.800,14.7570,-300.300,4.000,-4.500,300.300,-4.000,-4.500,6.125e+04 +2025,27.865975,10,303.800,30.600,17.3390,-303.400,2.800,-15.300,303.400,-2.800,-15.300,5.672e+04 +2025,27.871795,10,305.100,29.900,19.2760,-304.700,8.700,-13.700,304.700,-8.700,-13.700,5.415e+04 +2025,27.876488,10,306.400,29.500,18.5340,-306.400,5.000,2.000,306.400,-5.000,2.000,5.271e+04 +2025,27.903224,10,300.600,21.600,23.2600,-300.000,8.800,-16.800,300.000,-8.800,-16.800,2.826e+04 +2025,27.906680,10,301.600,21.600,23.0930,-301.300,10.300,-9.200,301.300,-10.300,-9.200,2.826e+04 +2025,27.917156,10,310.100,22.500,27.1360,-309.500,-4.100,19.900,309.500,4.100,19.900,3.067e+04 +2025,27.919484,10,307.700,23.700,26.9660,-307.500,2.300,11.600,307.500,-2.300,11.600,3.402e+04 +2025,27.932289,10,307.300,20.900,25.8470,-306.400,23.600,4.300,306.400,-23.600,4.300,2.646e+04 +2025,27.935781,10,303.900,21.300,26.2330,-303.600,12.300,1.700,303.600,-12.300,1.700,2.748e+04 +2025,27.941637,10,304.800,17.400,17.3480,-304.200,-0.100,-18.200,304.200,0.100,-18.200,1.834e+04 +2025,27.957897,10,304.000,17.600,17.5220,-303.500,2.600,-16.800,303.500,-2.600,-16.800,1.876e+04 +2025,27.964882,10,303.100,20.300,20.1040,-303.000,-1.600,-5.100,303.000,1.600,-5.100,2.496e+04 +2025,27.993910,10,297.600,18.100,18.2860,-297.400,-1.200,-9.800,297.400,1.200,-9.800,1.984e+04 +2025,28.045054,10,285.700,18.400,18.1640,-285.600,-4.100,-5.300,285.600,4.100,-5.300,2.051e+04 +2025,28.050838,10,287.200,18.100,17.8940,-287.000,-5.800,-6.400,287.000,5.800,-6.400,1.984e+04 +2025,28.054330,10,287.800,17.700,18.0250,-287.600,-5.800,-7.500,287.600,5.800,-7.500,1.898e+04 +2025,28.063606,10,289.300,18.300,19.7350,-289.100,-5.000,-7.700,289.100,5.000,-7.700,2.029e+04 +2025,28.088015,10,287.000,21.800,23.2220,-286.800,-4.900,11.800,286.800,4.900,11.800,2.879e+04 +2025,28.091470,10,287.500,20.700,18.9790,-287.400,-4.700,8.500,287.400,4.700,8.500,2.596e+04 +2025,28.092634,10,285.900,20.900,18.3230,-285.800,-4.300,8.800,285.800,4.300,8.800,2.646e+04 +2025,28.118170,10,282.000,20.900,21.2590,-281.800,-9.000,0.600,281.800,9.000,0.600,2.646e+04 +2025,28.120499,10,291.000,21.800,20.5500,-290.700,-10.700,-9.600,290.700,10.700,-9.600,2.879e+04 +2025,28.133339,10,280.000,21.600,21.3590,-279.900,-7.500,5.700,279.900,7.500,5.700,2.826e+04 +2025,28.149563,10,283.100,20.900,21.4400,-282.800,-4.500,11.800,282.800,4.500,11.800,2.646e+04 +2025,28.153055,10,284.300,19.100,19.0180,-284.200,-8.400,1.600,284.200,8.400,1.600,2.210e+04 +2025,28.157711,10,284.600,17.800,21.2620,-284.400,-8.600,-0.600,284.400,8.600,-0.600,1.919e+04 +2025,28.175135,10,287.400,18.600,11.2200,-287.300,-5.800,-2.500,287.300,5.800,-2.500,2.096e+04 +2025,28.200671,10,281.400,18.100,15.5670,-281.100,-3.200,-13.000,281.100,3.200,-13.000,1.984e+04 +2025,28.230900,10,295.400,15.300,10.5260,-295.300,-3.000,-5.300,295.300,3.000,-5.300,1.418e+04 +2025,28.241340,10,294.900,16.700,13.1510,-294.900,-4.600,-1.200,294.900,4.600,-1.200,1.689e+04 +2025,28.259892,10,294.200,14.500,10.8930,-294.200,-4.800,-4.600,294.200,4.800,-4.600,1.274e+04 +2025,28.266876,10,291.400,14.600,12.9780,-291.300,-8.100,-3.300,291.300,8.100,-3.300,1.291e+04 +2025,28.279717,10,295.600,14.500,13.4770,-295.500,-7.200,-7.600,295.500,7.200,-7.600,1.274e+04 +2025,28.282081,10,296.300,14.600,13.5180,-295.900,-9.700,-10.400,295.900,9.700,-10.400,1.291e+04 +2025,28.313449,10,298.500,20.000,7.8260,-298.400,2.900,-7.100,298.400,-2.900,-7.100,2.423e+04 +2025,28.344939,10,312.100,38.300,10.1940,-311.000,23.400,-12.300,311.000,-23.400,-12.300,8.886e+04 +2025,28.361199,10,308.700,17.400,15.6090,-308.300,12.400,-8.100,308.300,-12.400,-8.100,1.834e+04 +2025,28.379788,10,309.100,16.500,15.0120,-308.800,13.400,-2.700,308.800,-13.400,-2.700,1.649e+04 +2025,28.409980,10,306.400,27.300,13.7860,-306.000,-2.100,-15.700,306.000,2.100,-15.700,4.515e+04 +2025,28.416928,10,313.900,25.600,11.4660,-312.700,25.200,-10.300,312.700,-25.200,-10.300,3.970e+04 +2025,28.428568,10,299.300,26.800,9.1250,-298.200,-17.000,-19.800,298.200,17.000,-19.800,4.351e+04 +2025,28.433224,10,300.700,21.200,7.2200,-300.200,-10.800,-13.600,300.200,10.800,-13.600,2.722e+04 +2025,28.463525,10,305.000,19.800,7.4870,-304.500,-8.800,-13.600,304.500,8.800,-13.600,2.375e+04 +2025,28.471637,10,307.000,24.000,7.7390,-306.800,-6.100,-8.900,306.800,6.100,-8.900,3.489e+04 +2025,28.480913,10,309.300,23.500,8.1170,-309.000,-6.200,-12.600,309.000,6.200,-12.600,3.345e+04 +2025,28.486697,10,302.700,23.500,7.5640,-302.300,-7.900,-11.700,302.300,7.900,-11.700,3.345e+04 +2025,28.510051,10,298.200,29.000,8.8990,-297.500,-19.600,-4.700,297.500,19.600,-4.700,5.094e+04 +2025,28.514707,10,309.300,32.100,8.7040,-308.900,-14.700,-5.900,308.900,14.700,-5.900,6.242e+04 +2025,28.547227,10,317.200,26.500,6.9760,-316.900,2.300,-14.300,316.900,-2.300,-14.300,4.254e+04 +2025,28.565888,10,315.500,22.600,7.9120,-314.900,-11.000,-16.500,314.900,11.000,-16.500,3.094e+04 +2025,28.596153,10,320.800,27.900,11.6150,-320.000,-13.100,-18.900,320.000,13.100,-18.900,4.715e+04 +2025,28.614705,10,320.300,25.300,11.3130,-319.700,-11.100,-16.500,319.700,11.100,-16.500,3.877e+04 +2025,28.640277,10,316.800,29.300,11.1490,-316.400,-5.000,-15.400,316.400,5.000,-15.400,5.200e+04 +2025,28.646061,10,307.400,30.200,10.8030,-307.000,-10.800,-11.600,307.000,10.800,-11.600,5.525e+04 +2025,28.651881,10,315.300,33.800,12.0450,-315.100,1.800,-9.200,315.100,-1.800,-9.200,6.920e+04 +2025,28.653045,10,323.000,30.500,10.7310,-321.800,20.900,-17.700,321.800,-20.900,-17.700,5.635e+04 +2025,28.683346,10,331.400,36.300,12.6820,-330.900,13.400,-14.600,330.900,-13.400,-14.600,7.982e+04 +2025,28.692659,10,329.300,29.600,17.5980,-328.900,2.000,-15.900,328.900,-2.000,-15.900,5.307e+04 +2025,28.700771,10,328.600,28.600,16.0590,-328.300,11.300,-9.700,328.300,-11.300,-9.700,4.955e+04 +2025,28.705390,10,326.500,28.900,16.3190,-325.700,18.600,-12.600,325.700,-18.600,-12.600,5.059e+04 +2025,28.728671,10,341.500,30.700,14.4430,-340.800,-13.500,-16.600,340.800,13.500,-16.600,5.709e+04 +2025,28.729835,10,335.300,32.600,14.7550,-335.000,-6.200,-12.800,335.000,6.200,-12.800,6.438e+04 +2025,28.734528,10,336.600,31.900,15.3380,-336.100,17.100,-8.600,336.100,-17.100,-8.600,6.164e+04 +2025,28.777488,10,339.300,29.100,14.0760,-338.300,20.200,-16.100,338.300,-20.200,-16.100,5.129e+04 +2025,28.798441,10,326.500,27.000,13.0330,-326.000,-7.900,-17.200,326.000,7.900,-17.200,4.416e+04 +2025,28.825140,10,324.400,34.100,13.4650,-324.300,6.800,-6.300,324.300,-6.800,-6.300,7.044e+04 +2025,28.827469,10,331.000,35.500,15.2160,-330.600,14.800,-3.800,330.600,-14.800,-3.800,7.634e+04 +2025,28.872793,10,325.500,39.600,14.8960,-325.300,12.200,-5.400,325.300,-12.200,-5.400,9.499e+04 +2025,28.875121,10,329.200,37.500,15.0410,-329.000,9.200,-7.400,329.000,-9.200,-7.400,8.518e+04 +2025,28.880941,10,336.600,38.700,18.1990,-335.600,25.100,-6.000,335.600,-25.100,-6.000,9.072e+04 +2025,28.908841,10,327.100,27.800,16.7680,-326.500,19.500,-6.300,326.500,-19.500,-6.300,4.681e+04 +2025,28.921609,10,325.000,31.400,14.5600,-324.300,20.900,-1.700,324.300,-20.900,-1.700,5.972e+04 +2025,28.925101,10,330.400,30.400,15.2300,-330.000,15.900,-0.200,330.000,-15.900,-0.200,5.598e+04 +2025,28.944926,10,327.900,32.800,13.4560,-327.500,15.000,-3.900,327.500,-15.000,-3.900,6.517e+04 +2025,28.954202,10,330.500,28.000,10.2760,-329.300,-14.500,-23.500,329.300,14.500,-23.500,4.749e+04 +2025,28.978574,10,326.900,21.000,10.3560,-325.600,-17.900,-23.200,325.600,17.900,-23.200,2.671e+04 +2025,29.014586,10,323.900,23.700,12.3300,-323.400,-13.600,-9.700,323.400,13.600,-9.700,3.402e+04 +2025,29.133245,10,318.400,26.500,11.1100,-317.300,-22.900,-13.100,317.300,22.900,-13.100,4.254e+04 +2025,29.136737,10,327.200,25.900,11.4320,-326.500,-19.500,6.900,326.500,19.500,6.900,4.063e+04 +2025,29.191483,10,315.100,22.200,11.9900,-314.400,-20.100,-3.700,314.400,20.100,-3.700,2.985e+04 +2025,29.228623,10,317.200,21.300,11.2030,-316.600,-15.900,-10.400,316.600,15.900,-10.400,2.748e+04 +2025,29.235571,10,317.500,20.500,11.3090,-316.800,-17.100,-9.800,316.800,17.100,-9.800,2.546e+04 +2025,29.291445,10,340.300,33.300,10.6920,-339.600,-2.400,20.700,339.600,2.400,20.700,6.717e+04 +2025,29.299557,10,341.600,33.000,10.7730,-340.600,1.800,25.300,340.600,-1.800,25.300,6.596e+04 +2025,29.313525,10,339.400,35.400,11.0950,-339.300,0.600,8.800,339.300,-0.600,8.800,7.591e+04 +2025,29.329858,10,323.200,46.800,16.3100,-322.300,22.400,6.900,322.300,-22.400,6.900,1.327e+05 +2025,29.347282,10,332.900,37.000,11.8110,-331.400,21.200,22.400,331.400,-21.200,22.400,8.293e+04 +2025,29.349610,10,334.900,36.400,10.8630,-332.800,20.700,31.200,332.800,-20.700,31.200,8.026e+04 +2025,29.353102,10,326.200,40.600,11.6360,-324.500,21.200,25.900,324.500,-21.200,25.900,9.985e+04 +2025,29.376310,10,306.500,44.400,14.1100,-306.100,12.400,8.100,306.100,-12.400,8.100,1.194e+05 +2025,29.378639,10,310.800,45.100,15.3410,-310.500,9.800,11.400,310.500,-9.800,11.400,1.232e+05 +2025,29.382131,10,305.200,45.600,14.1130,-304.800,12.200,6.900,304.800,-12.200,6.900,1.260e+05 +2025,29.387951,10,303.900,43.800,14.7300,-303.900,4.500,-1.000,303.900,-4.500,-1.000,1.162e+05 +2025,29.389115,10,308.900,42.300,14.5960,-308.600,11.700,0.300,308.600,-11.700,0.300,1.084e+05 +2025,29.392571,10,311.400,44.300,13.9250,-310.500,23.500,-4.000,310.500,-23.500,-4.000,1.189e+05 +2025,29.414651,10,308.000,44.000,14.7730,-307.100,21.400,-7.300,307.100,-21.400,-7.300,1.173e+05 +2025,29.472780,10,332.300,37.500,11.9860,-331.300,14.400,21.300,331.300,-14.400,21.300,8.518e+04 +2025,29.490277,10,335.700,35.500,10.7670,-335.400,-1.400,13.400,335.400,1.400,13.400,7.634e+04 +2025,29.519305,10,333.200,35.900,10.7970,-331.500,16.900,29.000,331.500,-16.900,29.000,7.807e+04 +2025,29.525125,10,332.800,34.500,10.5260,-332.400,-4.500,15.200,332.400,4.500,15.200,7.210e+04 +2025,29.539094,10,342.200,33.300,10.1850,-341.500,2.200,22.200,341.500,-2.200,22.200,6.717e+04 +2025,29.596022,10,333.200,31.100,8.5870,-331.500,3.000,33.700,331.500,-3.000,33.700,5.859e+04 +2025,29.604134,10,332.900,32.300,9.6830,-331.900,-11.200,22.300,331.900,11.200,22.300,6.320e+04 +2025,29.641347,10,319.200,31.800,10.3340,-318.200,-7.600,24.000,318.200,7.600,24.000,6.125e+04 +2025,29.662226,10,325.700,31.000,10.6580,-325.300,-15.200,7.400,325.300,15.200,7.400,5.821e+04 +2025,29.679650,10,335.700,30.400,9.8870,-335.500,-10.600,0.700,335.500,10.600,0.700,5.598e+04 +2025,29.739016,10,314.800,34.600,10.5000,-313.000,0.400,33.000,313.000,-0.400,33.000,7.252e+04 +2025,29.765789,10,316.400,24.200,12.7900,-316.200,-4.600,12.000,316.200,4.600,12.000,3.547e+04 +2025,29.778557,10,307.300,26.600,14.5130,-307.100,-2.800,9.400,307.100,2.800,9.400,4.286e+04 +2025,29.783213,10,325.300,23.200,16.5710,-325.100,-7.500,4.300,325.100,7.500,4.300,3.260e+04 +2025,29.791325,10,310.400,21.800,18.3620,-310.200,4.900,6.700,310.200,-4.900,6.700,2.879e+04 +2025,29.794817,10,307.500,22.400,18.6510,-307.500,0.800,5.800,307.500,-0.800,5.800,3.039e+04 +2025,29.816897,10,317.500,22.700,18.8860,-317.400,1.600,8.400,317.400,-1.600,8.400,3.121e+04 +2025,29.823845,10,313.000,19.600,16.9640,-312.900,1.500,6.700,312.900,-1.500,6.700,2.327e+04 +2025,29.851745,10,303.700,18.000,19.3660,-303.700,0.600,1.400,303.700,-0.600,1.400,1.963e+04 +2025,29.852909,10,292.600,20.700,20.3120,-292.600,-4.400,-5.600,292.600,4.400,-5.600,2.596e+04 +2025,29.855237,10,302.600,20.500,20.3120,-302.600,-3.800,0.200,302.600,3.800,0.200,2.546e+04 +2025,29.856401,10,303.000,18.800,17.4050,-303.000,-3.900,0.100,303.000,3.900,0.100,2.141e+04 +2025,29.859857,10,303.500,21.100,18.4920,-303.500,-3.300,0.100,303.500,3.300,0.100,2.697e+04 +2025,29.884265,10,287.500,17.700,14.6150,-287.300,-5.300,-10.200,287.300,5.300,-10.200,1.898e+04 +2025,29.898270,10,289.200,17.800,15.3390,-288.900,-6.100,-11.000,288.900,6.100,-11.000,1.919e+04 +2025,29.907618,10,286.600,18.200,14.1240,-286.200,1.000,-13.300,286.200,-1.000,-13.300,2.006e+04 +2025,29.915730,10,288.700,17.700,13.6160,-288.500,-1.800,-10.700,288.500,1.800,-10.700,1.898e+04 +2025,29.922678,10,289.600,15.900,14.2670,-289.300,-2.900,-12.900,289.300,2.900,-12.900,1.531e+04 +2025,29.928498,10,292.200,13.400,14.1800,-291.900,-4.700,-11.700,291.900,4.700,-11.700,1.088e+04 +2025,29.938938,10,288.400,12.600,12.9200,-288.000,-3.800,-14.600,288.000,3.800,-14.600,9.617e+03 +2025,29.950578,10,291.400,13.700,12.8100,-291.100,-7.200,-10.900,291.100,7.200,-10.900,1.137e+04 +2025,29.965674,10,290.300,14.500,15.2860,-289.900,-12.000,-9.700,289.900,12.000,-9.700,1.274e+04 +2025,29.970294,10,293.300,13.000,15.4330,-293.100,-6.400,-9.300,293.100,6.400,-9.300,1.024e+04 +2025,29.976114,10,291.100,13.400,17.5920,-290.700,-8.400,-13.100,290.700,8.400,-13.100,1.088e+04 +2025,29.985390,10,298.800,12.800,15.2930,-298.400,-9.900,-13.300,298.400,9.900,-13.300,9.924e+03 +2025,30.002851,10,312.100,23.700,11.3160,-311.900,-12.600,2.700,311.900,12.600,2.700,3.402e+04 +2025,30.009835,10,312.300,22.800,9.8850,-311.700,-18.600,4.600,311.700,18.600,4.600,3.149e+04 +2025,30.012127,10,313.100,23.900,9.4030,-312.500,-18.300,8.100,312.500,18.300,8.100,3.460e+04 +2025,30.014455,10,314.200,23.400,9.8880,-313.500,-19.100,7.500,313.500,19.100,7.500,3.317e+04 +2025,30.016783,10,314.200,24.000,9.8750,-313.400,-20.200,9.500,313.400,20.200,9.500,3.489e+04 +2025,30.020238,10,316.100,23.000,9.9870,-315.600,-16.300,7.000,315.600,16.300,7.000,3.204e+04 +2025,30.024895,10,320.100,21.600,15.0170,-319.200,-6.500,23.600,319.200,6.500,23.600,2.826e+04 +2025,30.029514,10,315.700,18.300,14.2520,-315.000,-11.200,18.200,315.000,11.200,18.200,2.029e+04 +2025,30.037663,10,312.800,19.600,13.9350,-312.100,-17.900,12.400,312.100,17.900,12.400,2.327e+04 +2025,30.056360,10,310.200,18.900,15.3590,-309.200,-19.100,17.100,309.200,19.100,17.100,2.164e+04 +2025,30.109869,10,309.600,20.200,19.7480,-307.900,-28.200,15.900,307.900,28.200,15.900,2.472e+04 +2025,30.125038,10,311.100,19.500,26.0530,-309.800,-23.900,15.700,309.800,23.900,15.700,2.303e+04 +2025,30.130822,10,303.700,21.400,17.9370,-303.100,-17.000,8.500,303.100,17.000,8.500,2.774e+04 +2025,30.137806,10,303.500,20.800,17.2420,-302.900,-16.400,8.800,302.900,16.400,8.800,2.621e+04 +2025,30.178438,10,302.500,22.900,18.8150,-301.900,-16.400,10.700,301.900,16.400,10.700,3.177e+04 +2025,30.187714,10,295.800,23.700,17.3880,-295.200,-16.100,10.600,295.200,16.100,10.600,3.402e+04 +2025,30.213286,10,304.600,24.700,23.3540,-303.900,-13.900,15.000,303.900,13.900,15.000,3.696e+04 +2025,30.215614,10,302.400,25.400,22.5700,-301.700,-14.600,15.000,301.700,14.600,15.000,3.908e+04 +2025,30.228382,10,301.100,24.200,22.4080,-300.600,-11.000,13.200,300.600,11.000,13.200,3.547e+04 +2025,30.234203,10,305.100,24.200,24.9060,-304.300,-16.200,13.600,304.300,16.200,13.600,3.547e+04 +2025,30.235330,10,303.100,24.400,25.4940,-302.200,-19.200,12.700,302.200,19.200,12.700,3.606e+04 +2025,30.250463,10,300.700,24.300,27.4950,-300.200,-11.000,13.700,300.200,11.000,13.700,3.577e+04 +2025,30.262103,10,303.500,24.600,27.6690,-302.800,-17.700,10.400,302.800,17.700,10.400,3.666e+04 +2025,30.273707,10,304.500,26.400,22.1260,-303.300,-26.000,5.300,303.300,26.000,5.300,4.222e+04 +2025,30.279491,10,303.300,27.000,23.6220,-302.100,-25.500,8.200,302.100,25.500,8.200,4.416e+04 +2025,30.291095,10,298.000,26.300,24.1390,-296.900,-15.100,21.600,296.900,15.100,21.600,4.190e+04 +2025,30.301571,10,297.300,27.300,23.7030,-296.600,-14.200,15.900,296.600,14.200,15.900,4.515e+04 +2025,30.305063,10,297.800,27.400,23.1610,-297.000,-15.900,15.100,297.000,15.900,15.100,4.548e+04 +2025,30.317868,10,297.600,25.000,22.9860,-297.000,-16.700,10.100,297.000,16.700,10.100,3.786e+04 +2025,30.332964,10,295.000,26.400,25.0930,-294.200,-20.400,6.400,294.200,20.400,6.400,4.222e+04 +2025,30.384072,10,297.000,26.300,25.1050,-296.300,-20.300,7.300,296.300,20.300,7.300,4.190e+04 +2025,30.436380,10,291.100,24.900,23.5750,-290.600,-17.100,1.800,290.600,17.100,1.800,3.756e+04 +2025,30.459697,10,284.700,22.900,27.5280,-284.000,-20.000,0.600,284.000,20.000,0.600,3.177e+04 +2025,30.486470,10,290.000,19.000,20.5860,-289.600,-15.200,2.300,289.600,15.200,2.300,2.187e+04 +2025,30.493454,10,293.700,22.800,21.6670,-292.900,-21.800,1.900,292.900,21.800,1.900,3.149e+04 +2025,30.495782,10,291.300,24.600,22.3430,-290.300,-22.300,6.400,290.300,22.300,6.400,3.666e+04 +2025,30.498110,10,290.900,24.700,22.4250,-289.900,-23.300,4.800,289.900,23.300,4.800,3.696e+04 +2025,30.503894,10,295.400,24.200,23.7120,-294.500,-23.200,4.600,294.500,23.200,4.600,3.547e+04 +2025,30.513170,10,294.900,26.900,28.2320,-293.200,-29.800,11.100,293.200,29.800,11.100,4.383e+04 +2025,30.514334,10,297.600,26.900,31.2580,-296.200,-28.000,9.500,296.200,28.000,9.500,4.383e+04 +2025,30.551510,10,289.000,25.400,31.4430,-288.000,-21.300,12.900,288.000,21.300,12.900,3.908e+04 +2025,30.559659,10,290.800,24.900,34.4400,-289.200,-28.200,9.400,289.200,28.200,9.400,3.756e+04 +2025,30.572499,10,294.400,28.100,31.6490,-292.900,-28.600,8.200,292.900,28.600,8.200,4.783e+04 +2025,30.584140,10,292.100,26.900,30.0210,-290.900,-26.400,5.300,290.900,26.400,5.300,4.383e+04 +2025,30.596908,10,288.600,27.000,33.5630,-287.500,-25.000,3.900,287.500,25.000,3.900,4.416e+04 +2025,30.600400,10,288.100,28.000,31.8550,-286.800,-27.800,2.900,286.800,27.800,2.900,4.749e+04 +2025,30.609676,10,290.100,27.100,27.8560,-288.800,-26.900,1.100,288.800,26.900,1.100,4.449e+04 +2025,30.621316,10,294.500,29.200,27.9170,-293.400,-25.400,1.400,293.400,25.400,1.400,5.165e+04 +2025,30.644633,10,293.800,29.400,37.4740,-291.600,-33.800,9.900,291.600,33.800,9.900,5.236e+04 +2025,30.655073,10,306.300,19.900,38.0250,-305.300,-18.000,18.000,305.300,18.000,18.000,2.399e+04 +2025,30.667841,10,294.200,27.300,46.8570,-292.400,-29.500,11.800,292.400,29.500,11.800,4.515e+04 +2025,30.677117,10,296.500,28.300,47.8390,-294.300,-33.200,13.800,294.300,33.200,13.800,4.851e+04 +2025,30.678281,10,297.300,28.000,48.3700,-294.900,-36.100,9.400,294.900,36.100,9.400,4.749e+04 +2025,30.708510,10,304.600,22.900,47.8680,-304.000,-17.700,1.400,304.000,17.700,1.400,3.177e+04 +2025,30.753834,10,321.400,24.700,47.9010,-321.400,-1.200,-4.100,321.400,1.200,-4.100,3.696e+04 +2025,30.778243,10,329.500,24.600,25.7060,-329.300,-9.200,-8.300,329.300,9.200,-8.300,3.666e+04 +2025,30.785227,10,315.200,24.800,24.3490,-314.600,-18.000,0.400,314.600,18.000,0.400,3.726e+04 +2025,30.792247,10,319.800,28.300,21.6220,-319.700,-7.300,-1.300,319.700,7.300,-1.300,4.851e+04 +2025,30.800359,10,325.300,27.400,30.0350,-324.900,-11.200,-13.000,324.900,11.200,-13.000,4.548e+04 +2025,30.817747,10,330.600,39.600,32.4240,-330.300,-11.100,-7.800,330.300,11.100,-7.800,9.499e+04 +2025,30.945609,10,339.500,37.100,24.2020,-339.200,-7.700,-14.000,339.200,7.700,-14.000,8.337e+04 +2025,30.972309,10,350.800,33.700,26.9100,-349.000,-3.400,-34.700,349.000,3.400,-34.700,6.879e+04 +2025,30.982785,10,360.100,36.300,27.2790,-357.000,3.000,-47.200,357.000,-3.000,-47.200,7.982e+04 +2025,31.036295,10,319.600,30.500,19.8950,-318.700,-7.400,-22.400,318.700,7.400,-22.400,5.635e+04 +2025,31.088676,10,326.000,28.900,25.1640,-324.800,-13.900,-24.600,324.800,13.900,-24.600,5.059e+04 +2025,31.113085,10,316.100,35.600,21.6230,-315.700,-14.200,-6.100,315.700,14.200,-6.100,7.677e+04 +2025,31.117704,10,330.500,35.500,21.9070,-329.100,-10.100,-28.500,329.100,10.100,-28.500,7.634e+04 +2025,31.137457,10,324.000,25.800,25.8940,-322.700,-11.000,-26.500,322.700,11.000,-26.500,4.032e+04 +2025,31.140949,10,324.700,25.200,23.6660,-323.700,-11.100,-22.600,323.700,11.100,-22.600,3.847e+04 +2025,31.166594,10,317.700,30.900,25.2150,-316.800,-11.600,-21.000,316.800,11.600,-21.000,5.784e+04 +2025,31.167758,10,320.400,31.400,25.3420,-319.200,-10.300,-26.100,319.200,10.300,-26.100,5.972e+04 +2025,31.201406,10,325.300,25.800,25.9810,-323.700,-16.200,-27.600,323.700,16.200,-27.600,4.032e+04 +2025,31.222431,10,323.700,32.500,26.2660,-321.500,-17.200,-33.200,321.500,17.200,-33.200,6.398e+04 +2025,31.235199,10,329.900,33.600,26.3870,-328.100,-14.500,-31.200,328.100,14.500,-31.200,6.839e+04 +2025,31.237527,10,327.000,34.000,25.9870,-325.600,-18.900,-24.600,325.600,18.900,-24.600,7.002e+04 +2025,31.238691,10,327.000,34.500,26.6800,-325.600,-19.500,-22.500,325.600,19.500,-22.500,7.210e+04 +2025,31.242183,10,326.800,33.900,27.6210,-325.300,-17.800,-26.300,325.300,17.800,-26.300,6.961e+04 +2025,31.252623,10,326.800,30.400,24.0700,-326.000,-6.000,-22.800,326.000,6.000,-22.800,5.598e+04 +2025,31.260772,10,314.900,33.100,25.0290,-314.400,-14.500,-10.000,314.400,14.500,-10.000,6.637e+04 +2025,31.280633,10,328.500,33.600,23.9060,-327.500,-20.100,-16.400,327.500,20.100,-16.400,6.839e+04 +2025,31.286453,10,314.300,34.000,22.3240,-313.400,-22.000,-9.400,313.400,22.000,-9.400,7.002e+04 +2025,31.292237,10,327.300,32.300,24.7020,-326.000,-12.700,-26.100,326.000,12.700,-26.100,6.320e+04 +2025,31.295729,10,325.200,31.600,23.1710,-324.200,-17.800,-19.900,324.200,17.800,-19.900,6.049e+04 +2025,31.316645,10,295.500,33.600,20.6850,-295.300,-3.100,11.800,295.300,3.100,11.800,6.839e+04 +2025,31.341017,10,295.300,32.300,14.9020,-295.100,-5.000,11.400,295.100,5.000,11.400,6.320e+04 +2025,31.342181,10,291.600,31.900,15.0560,-291.300,-2.100,11.700,291.300,2.100,11.700,6.164e+04 +2025,31.349165,10,291.100,32.700,16.1570,-290.900,-4.400,11.200,290.900,4.400,11.200,6.477e+04 +2025,31.351493,10,294.600,33.600,16.2680,-294.300,-5.300,12.200,294.300,5.300,12.200,6.839e+04 +2025,31.434066,10,309.100,34.000,15.8490,-308.700,-14.100,8.200,308.700,14.100,8.200,7.002e+04 +2025,31.435230,10,308.800,33.400,16.6190,-308.300,-15.400,8.800,308.300,15.400,8.800,6.757e+04 +2025,31.449162,10,317.800,39.200,18.8360,-317.600,-10.000,-4.800,317.600,10.000,-4.800,9.308e+04 +2025,31.474698,10,323.700,37.400,14.6050,-323.200,14.200,-9.600,323.200,-14.200,-9.600,8.473e+04 +2025,31.488667,10,341.300,37.300,17.1120,-339.400,20.100,-29.800,339.400,-20.100,-29.800,8.428e+04 +2025,31.495615,10,341.000,35.800,13.4260,-339.200,21.000,-27.800,339.200,-21.000,-27.800,7.763e+04 +2025,31.497943,10,344.600,33.400,14.1180,-342.800,24.600,-24.600,342.800,-24.600,-24.600,6.757e+04 +2025,31.526971,10,349.800,44.200,16.6810,-346.900,23.300,-38.300,346.900,-23.300,-38.300,1.183e+05 +2025,31.637481,10,349.200,37.700,18.3120,-343.200,-34.800,-54.100,343.200,34.800,-54.100,8.609e+04 +2025,31.646830,10,358.600,42.200,22.7100,-352.900,-35.100,-53.100,352.900,35.100,-53.100,1.079e+05 +2025,31.680514,10,362.700,36.100,23.9500,-355.900,-40.300,-57.500,355.900,40.300,-57.500,7.894e+04 +2025,31.692118,10,358.400,31.400,25.3730,-350.100,-40.400,-64.700,350.100,40.400,-64.700,5.972e+04 +2025,31.700266,10,353.600,38.100,22.2180,-346.000,-42.400,-59.400,346.000,42.400,-59.400,8.793e+04 +2025,31.830420,10,357.800,35.200,29.9560,-355.400,-34.300,-23.400,355.400,34.300,-23.400,7.505e+04 +2025,31.836240,10,355.000,33.400,29.4160,-352.500,-35.100,-23.500,352.500,35.100,-23.500,6.757e+04 +2025,31.854864,10,373.700,34.500,32.0530,-371.100,-25.000,-36.400,371.100,25.000,-36.400,7.210e+04 +2025,31.869924,10,360.800,31.500,28.0080,-358.000,-15.100,-42.200,358.000,15.100,-42.200,6.010e+04 +2025,32.144235,10,417.200,57.600,8.9840,-413.800,37.100,-38.400,413.800,-37.100,-38.400,2.010e+05 +2025,32.145399,10,414.000,56.400,9.2260,-411.100,28.900,-39.600,411.100,-28.900,-39.600,1.927e+05 +2025,32.194216,10,405.400,58.000,8.4580,-403.400,13.200,-37.800,403.400,-13.200,-37.800,2.038e+05 +2025,32.245324,10,434.800,57.300,8.4860,-434.600,-3.500,-12.900,434.600,3.500,-12.900,1.989e+05 +2025,32.281336,10,454.200,57.600,10.0130,-454.100,-3.900,-9.400,454.100,3.900,-9.400,2.010e+05 +2025,32.291776,10,467.000,58.600,8.7510,-466.900,2.300,5.700,466.900,-2.300,5.700,2.080e+05 +2025,32.312802,10,483.000,53.500,6.8330,-482.800,-0.800,14.700,482.800,0.800,14.700,1.734e+05 +2025,32.569799,10,649.200,70.200,7.4480,-644.000,56.700,59.300,644.000,-56.700,59.300,2.985e+05 +2025,32.648807,10,645.500,74.600,7.6460,-637.400,69.500,74.300,637.400,-69.500,74.300,3.371e+05 +2025,32.698824,10,625.600,73.700,8.3190,-623.700,24.500,42.800,623.700,-24.500,42.800,3.290e+05 +2025,32.704644,10,637.700,74.600,8.4020,-637.100,23.300,16.000,637.100,-23.300,16.000,3.371e+05 +2025,32.761681,10,628.300,76.700,8.1810,-627.700,23.100,15.800,627.700,-23.100,15.800,3.563e+05 +2025,32.816282,10,616.300,86.800,8.5650,-614.200,33.000,38.800,614.200,-33.000,38.800,4.564e+05 +2025,32.834870,10,632.400,90.900,11.4130,-626.100,61.300,64.400,626.100,-61.300,64.400,5.005e+05 +2025,32.880194,10,653.400,80.500,6.6250,-651.900,26.100,36.300,651.900,-26.100,36.300,3.925e+05 +2025,32.895290,10,681.600,72.400,4.8110,-679.200,48.300,30.900,679.200,-48.300,30.900,3.175e+05 +2025,32.989831,10,674.900,51.300,2.7010,-674.300,-17.100,-21.100,674.300,17.100,-21.100,1.594e+05 +2025,33.000198,10,708.900,51.300,3.5360,-708.800,-8.600,-7.600,708.800,8.600,-7.600,1.594e+05 +2025,33.048687,10,676.200,54.900,3.1480,-676.200,-8.300,3.200,676.200,8.300,3.200,1.826e+05 +2025,33.063783,10,640.300,61.700,3.2590,-640.000,-11.900,-13.600,640.000,11.900,-13.600,2.306e+05 +2025,33.066111,10,635.700,56.600,3.3020,-635.000,-15.200,-26.600,635.000,15.200,-26.600,1.941e+05 +2025,33.068439,10,638.900,66.600,3.3820,-637.000,33.300,-35.800,637.000,-33.300,-35.800,2.687e+05 +2025,33.100959,10,672.200,49.900,3.0320,-671.500,-31.200,-4.000,671.500,31.200,-4.000,1.508e+05 +2025,33.128823,10,658.000,48.100,3.0130,-657.000,-36.800,1.300,657.000,36.800,1.300,1.401e+05 +2025,33.175312,10,667.700,41.700,2.9360,-667.000,-29.000,6.700,667.000,29.000,6.700,1.053e+05 +2025,33.182296,10,659.000,39.500,3.2600,-658.400,-26.500,10.600,658.400,26.500,10.600,9.451e+04 +2025,33.243917,10,632.400,46.600,3.3310,-631.200,-34.600,17.200,631.200,34.600,17.200,1.315e+05 +2025,33.263706,10,646.000,45.700,3.3610,-644.800,-36.200,16.500,644.800,36.200,16.500,1.265e+05 +2025,33.295062,10,648.900,46.100,3.9970,-647.100,-48.200,11.200,647.100,48.200,11.200,1.287e+05 +2025,33.311322,10,645.100,33.500,3.5390,-644.000,-34.100,18.700,644.000,34.100,18.700,6.798e+04 +2025,33.335730,10,638.800,27.000,3.0390,-637.900,-15.900,30.500,637.900,15.900,30.500,4.416e+04 +2025,33.392731,10,645.000,44.700,4.6950,-643.500,-40.400,-15.600,643.500,40.400,-15.600,1.210e+05 +2025,33.402043,10,645.700,43.100,5.3740,-644.200,-43.400,2.000,644.200,43.400,2.000,1.125e+05 +2025,33.406699,10,645.300,40.600,4.8970,-643.700,-45.400,-9.700,643.700,45.400,-9.700,9.985e+04 +2025,33.407863,10,645.100,40.900,5.0450,-643.600,-44.000,-4.900,643.600,44.000,-4.900,1.013e+05 +2025,33.411319,10,642.700,41.000,4.8750,-641.500,-37.700,-5.600,641.500,37.700,-5.600,1.018e+05 +2025,33.426415,10,647.900,40.100,5.0930,-646.700,-27.700,-28.300,646.700,27.700,-28.300,9.740e+04 +2025,33.427543,10,645.900,40.200,5.0040,-644.500,-30.300,-29.600,644.500,30.300,-29.600,9.789e+04 +2025,33.428707,10,645.500,40.700,5.0750,-644.300,-28.400,-28.200,644.300,28.400,-28.200,1.003e+05 +2025,33.429871,10,641.300,40.000,5.1710,-639.400,-38.600,-31.200,639.400,38.600,-31.200,9.692e+04 +2025,33.456643,10,615.400,38.400,5.4580,-611.600,-65.400,-18.600,611.600,65.400,-18.600,8.932e+04 +2025,33.458935,10,620.100,43.000,5.2930,-615.300,-74.100,-21.300,615.300,74.100,-21.300,1.120e+05 +2025,33.463591,10,602.600,41.900,4.5610,-597.300,-68.400,-41.900,597.300,68.400,-41.900,1.063e+05 +2025,33.467083,10,627.200,35.400,3.9320,-623.400,-62.300,-29.300,623.400,62.300,-29.300,7.591e+04 +2025,33.477486,10,606.500,30.700,5.1110,-604.000,-54.600,1.600,604.000,54.600,1.600,5.709e+04 +2025,33.517027,10,603.100,35.500,6.4650,-599.500,-63.800,-17.400,599.500,63.800,-17.400,7.634e+04 +2025,33.534415,10,591.500,34.600,5.7330,-588.100,-63.000,0.200,588.100,63.000,0.200,7.252e+04 +2025,33.539107,10,586.100,32.900,5.9770,-583.300,-57.000,6.300,583.300,57.000,6.300,6.557e+04 +2025,33.543763,10,589.100,31.100,5.8540,-587.300,-45.400,7.300,587.300,45.400,7.300,5.859e+04 +2025,33.562388,10,579.800,27.500,5.6800,-577.800,-46.200,15.000,577.800,46.200,15.000,4.581e+04 +2025,33.572864,10,570.300,34.200,5.9050,-569.100,-30.400,20.000,569.100,30.400,20.000,7.085e+04 +2025,33.591416,10,571.600,37.700,5.8110,-570.800,-29.200,5.300,570.800,29.200,5.300,8.609e+04 +2025,33.592580,10,580.300,34.500,5.6970,-579.700,-26.300,5.400,579.700,26.300,5.400,7.210e+04 +2025,33.597236,10,578.100,36.700,5.6580,-577.800,-18.200,6.100,577.800,18.200,6.100,8.159e+04 +2025,33.603056,10,583.100,36.700,6.3780,-582.700,-7.700,19.300,582.700,7.700,19.300,8.159e+04 +2025,33.611168,10,579.100,31.100,12.7520,-578.700,-15.600,-13.800,578.700,15.600,-13.800,5.859e+04 +2025,33.618152,10,579.500,25.800,11.4070,-579.200,-18.500,-7.900,579.200,18.500,-7.900,4.032e+04 +2025,33.627464,10,575.300,26.500,11.2810,-575.000,-16.400,-8.000,575.000,16.400,-8.000,4.254e+04 +2025,33.643725,10,569.200,26.800,11.5830,-568.900,-11.000,-14.300,568.900,11.000,-14.300,4.351e+04 +2025,33.656529,10,545.200,30.300,9.6790,-543.800,-5.800,-38.600,543.800,5.800,-38.600,5.561e+04 +2025,33.680901,10,562.000,16.200,7.2280,-561.800,-3.100,15.100,561.800,3.100,15.100,1.590e+04 +2025,33.687885,10,565.900,13.800,6.1960,-565.700,3.400,12.900,565.700,-3.400,12.900,1.154e+04 +2025,33.704218,10,553.100,13.400,7.5110,-552.800,4.400,18.700,552.800,-4.400,18.700,1.088e+04 +2025,33.729754,10,547.300,15.100,7.5600,-546.900,13.900,15.400,546.900,-13.900,15.400,1.381e+04 +2025,33.777406,10,544.700,21.900,6.2880,-544.400,14.200,8.700,544.400,-14.200,8.700,2.905e+04 +2025,33.792502,10,549.100,15.200,5.4610,-548.900,8.500,12.800,548.900,-8.500,12.800,1.399e+04 +2025,33.801815,10,550.000,13.900,4.7540,-549.600,13.600,18.000,549.600,-13.600,18.000,1.170e+04 +2025,33.849431,10,538.100,18.000,7.4540,-537.700,11.700,15.700,537.700,-11.700,15.700,1.963e+04 +2025,33.859907,10,537.000,16.900,6.8550,-536.700,10.400,14.500,536.700,-10.400,14.500,1.730e+04 +2025,33.864527,10,539.400,18.800,7.6840,-539.000,12.000,15.800,539.000,-12.000,15.800,2.141e+04 +2025,33.865691,10,539.400,18.400,7.5070,-539.100,10.000,15.800,539.100,-10.000,15.800,2.051e+04 +2025,33.884243,10,534.500,18.400,1.6490,-534.400,11.800,-4.500,534.400,-11.800,-4.500,2.051e+04 +2025,33.920364,10,523.400,14.200,1.7920,-523.300,2.200,-8.500,523.300,-2.200,-8.500,1.221e+04 +2025,33.955212,10,519.800,11.700,1.5780,-519.700,4.800,-8.300,519.700,-4.800,-8.300,8.292e+03 +2025,33.958741,10,524.400,12.800,1.5030,-524.300,4.400,-8.000,524.300,-4.400,-8.000,9.924e+03 +2025,33.962233,10,521.800,17.700,1.2660,-521.700,8.200,2.000,521.700,-8.200,2.000,1.898e+04 +2025,33.991261,10,517.700,17.000,1.8040,-517.600,2.000,-12.100,517.600,-2.000,-12.100,1.751e+04 +2025,33.992425,10,516.700,15.300,1.2430,-516.700,3.300,-4.500,516.700,-3.300,-4.500,1.418e+04 +2025,34.037713,10,519.400,18.400,1.5430,-519.400,-1.800,0.100,519.400,1.800,0.100,2.051e+04 +2025,34.070306,10,512.700,18.400,2.0420,-512.600,2.500,-9.500,512.600,-2.500,-9.500,2.051e+04 +2025,34.171395,10,497.600,65.400,0.9670,-497.500,11.300,-1.000,497.500,-11.300,-1.000,2.591e+05 +2025,34.716561,10,475.500,28.700,1.6800,-474.800,-20.900,15.600,474.800,20.900,15.600,4.989e+04 +2025,34.741006,10,465.800,26.000,1.7540,-464.300,-21.500,31.200,464.300,21.500,31.200,4.095e+04 +2025,35.308362,10,431.100,46.500,6.1210,-430.100,28.400,5.100,430.100,-28.400,5.100,1.310e+05 +2025,35.310690,10,458.200,34.500,5.6540,-457.900,-3.700,17.500,457.900,3.700,17.500,7.210e+04 +2025,35.321203,10,453.500,33.900,5.4690,-453.400,-3.200,11.400,453.400,3.200,11.400,6.961e+04 +2025,35.367691,10,438.700,35.900,5.5500,-438.400,-9.600,11.300,438.400,9.600,11.300,7.807e+04 +2025,35.418799,10,439.900,35.600,5.2710,-439.600,-10.700,14.000,439.600,10.700,14.000,7.677e+04 +2025,35.437350,10,440.500,39.200,6.2630,-439.400,-8.200,29.300,439.400,8.200,29.300,9.308e+04 +2025,35.537457,10,429.400,28.600,4.7810,-429.100,-15.400,8.400,429.100,15.400,8.400,4.955e+04 +2025,35.583909,10,411.200,29.600,4.5790,-411.100,-8.700,1.300,411.100,8.700,1.300,5.307e+04 +2025,35.587401,10,413.000,29.300,4.7220,-412.900,-9.900,2.600,412.900,9.900,2.600,5.200e+04 +2025,35.593185,10,423.100,26.700,4.2840,-422.800,-15.200,4.700,422.800,15.200,4.700,4.318e+04 +2025,35.599005,10,414.900,26.500,4.4190,-414.500,-14.800,-11.600,414.500,14.800,-11.600,4.254e+04 +2025,35.611773,10,430.100,31.600,4.3560,-429.800,-15.000,7.900,429.800,15.000,7.900,6.049e+04 +2025,35.623413,10,402.300,26.500,4.4830,-402.200,-9.900,-0.700,402.200,9.900,-0.700,4.254e+04 +2025,35.659425,10,402.100,24.700,3.9920,-401.100,-12.700,-25.000,401.100,12.700,-25.000,3.696e+04 +2025,35.673394,10,430.100,24.300,4.4850,-428.800,-8.900,-32.000,428.800,8.900,-32.000,3.577e+04 +2025,35.679250,10,413.100,23.500,4.2490,-412.000,-13.300,-26.900,412.000,13.300,-26.900,3.345e+04 +2025,35.710570,10,401.100,18.500,4.1080,-400.300,-21.100,-12.300,400.300,21.100,-12.300,2.073e+04 +2025,35.722210,10,387.300,19.700,4.3720,-386.500,-16.400,-17.100,386.500,16.400,-17.100,2.351e+04 +2025,35.725702,10,389.200,21.100,4.5030,-389.100,-1.000,-3.100,389.100,1.000,-3.100,2.697e+04 +2025,35.729195,10,400.500,19.300,4.5560,-400.000,-17.400,-9.300,400.000,17.400,-9.300,2.256e+04 +2025,35.750147,10,410.100,20.900,4.2950,-409.000,-20.200,-22.700,409.000,20.200,-22.700,2.646e+04 +2025,35.780339,10,386.300,21.100,4.8130,-385.100,-10.800,-28.200,385.100,10.800,-28.200,2.697e+04 +2025,35.790815,10,400.100,23.700,5.6270,-399.500,-13.600,-18.100,399.500,13.600,-18.100,3.402e+04 +2025,35.809367,10,396.200,24.400,4.9970,-395.800,-9.200,-17.300,395.800,9.200,-17.300,3.606e+04 +2025,35.826827,10,388.900,20.100,4.3220,-387.700,-16.200,-26.000,387.700,16.200,-26.000,2.447e+04 +2025,35.830320,10,392.100,23.100,5.1280,-391.600,-13.600,-13.800,391.600,13.600,-13.800,3.232e+04 +2025,35.831520,10,388.800,21.200,4.5730,-387.200,-15.300,-30.800,387.200,15.300,-30.800,2.722e+04 +2025,35.835012,10,385.500,25.400,4.8070,-384.300,-5.100,-29.900,384.300,5.100,-29.900,3.908e+04 +2025,35.838504,10,387.200,23.200,4.4900,-385.700,-4.800,-34.200,385.700,4.800,-34.200,3.260e+04 +2025,35.840832,10,411.500,22.200,4.8430,-410.400,-16.700,-24.900,410.400,16.700,-24.900,2.985e+04 +2025,35.846652,10,393.400,22.500,4.8540,-391.100,-12.200,-40.500,391.100,12.200,-40.500,3.067e+04 +2025,35.858256,10,388.400,24.300,4.6370,-386.300,11.900,-38.900,386.300,-11.900,-38.900,3.577e+04 +2025,35.956980,10,386.900,27.300,5.5820,-386.000,-1.700,-25.800,386.000,1.700,-25.800,4.515e+04 +2025,35.958144,10,385.000,28.800,5.4920,-384.700,-1.400,-15.800,384.700,1.400,-15.800,5.024e+04 +2025,35.959308,10,389.100,29.400,5.5520,-388.800,-5.700,-13.600,388.800,5.700,-13.600,5.236e+04 +2025,35.966256,10,406.900,25.900,6.4910,-406.900,-6.300,-0.800,406.900,6.300,-0.800,4.063e+04 +2025,35.968584,10,398.500,25.500,6.4670,-398.500,-1.800,-0.800,398.500,1.800,-0.800,3.939e+04 +2025,35.974404,10,405.400,30.300,8.3030,-404.700,-15.600,-16.400,404.700,15.600,-16.400,5.561e+04 +2025,35.981388,10,396.700,28.500,6.2570,-396.700,-1.400,2.700,396.700,1.400,2.700,4.920e+04 +2025,35.984880,10,406.900,25.600,6.4570,-406.400,-16.800,-11.300,406.400,16.800,-11.300,3.970e+04 +2025,35.986044,10,417.600,24.400,6.3630,-416.600,-20.100,-21.800,416.600,20.100,-21.800,3.606e+04 +2025,35.989536,10,417.500,24.300,5.9690,-416.800,-19.100,-13.300,416.800,19.100,-13.300,3.577e+04 +2025,36.003432,10,384.300,24.700,6.0540,-383.600,-1.000,-23.200,383.600,1.000,-23.200,3.696e+04 +2025,36.008088,10,385.200,25.900,6.0800,-384.800,-2.400,-17.900,384.800,2.400,-17.900,4.063e+04 +2025,36.013872,10,386.300,24.800,6.7720,-384.500,26.700,-26.300,384.500,-26.700,-26.300,3.726e+04 +2025,36.022020,10,397.400,27.300,7.0620,-395.200,15.600,-38.700,395.200,-15.600,-38.700,4.515e+04 +2025,36.041845,10,397.600,26.500,7.1060,-395.400,17.600,-38.000,395.400,-17.600,-38.000,4.254e+04 +2025,36.058069,10,394.800,26.900,7.3050,-393.500,-13.900,-28.700,393.500,13.900,-28.700,4.383e+04 +2025,36.060397,10,379.800,26.200,6.6490,-378.500,7.800,-30.800,378.500,-7.800,-30.800,4.158e+04 +2025,36.061561,10,382.700,25.600,6.6410,-381.000,7.600,-35.100,381.000,-7.600,-35.100,3.970e+04 +2025,36.070873,10,379.900,26.000,6.3660,-379.300,-7.900,-21.000,379.300,7.900,-21.000,4.095e+04 +2025,36.092990,10,378.500,25.900,6.4490,-376.900,4.600,-34.300,376.900,-4.600,-34.300,4.063e+04 +2025,36.116198,10,375.900,25.600,6.9160,-375.200,18.200,-12.900,375.200,-18.200,-12.900,3.970e+04 +2025,36.122018,10,379.800,29.600,7.1780,-379.700,5.200,-6.400,379.700,-5.200,-6.400,5.307e+04 +2025,36.158066,10,393.400,26.100,7.2930,-392.000,-14.100,-30.400,392.000,14.100,-30.400,4.126e+04 +2025,36.162722,10,392.500,26.100,7.5080,-391.800,-20.400,-12.000,391.800,20.400,-12.000,4.126e+04 +2025,36.182475,10,395.800,26.800,8.2310,-394.200,-0.200,-35.500,394.200,0.200,-35.500,4.351e+04 +2025,36.213867,10,402.400,28.900,7.5150,-402.000,-12.700,-12.900,402.000,12.700,-12.900,5.059e+04 +2025,36.220815,10,401.700,32.300,6.5080,-401.100,6.200,-22.000,401.100,-6.200,-22.000,6.320e+04 +2025,36.238312,10,398.500,30.700,6.4800,-397.800,1.400,-22.800,397.800,-1.400,-22.800,5.709e+04 +2025,36.278944,10,406.800,50.600,5.1930,-405.700,15.100,24.800,405.700,-15.100,24.800,1.551e+05 +2025,36.511495,10,396.000,35.200,10.3740,-395.900,3.300,-8.700,395.900,-3.300,-8.700,7.505e+04 +2025,36.538195,10,398.900,34.800,8.5030,-398.900,2.400,-4.100,398.900,-2.400,-4.100,7.336e+04 +2025,36.561512,10,392.600,33.700,7.4640,-392.600,-1.100,2.400,392.600,1.100,2.400,6.879e+04 +2025,36.566132,10,398.800,36.900,7.5830,-398.700,3.000,-6.500,398.700,-3.000,-6.500,8.248e+04 +2025,36.567296,10,399.100,36.200,7.9460,-399.100,2.300,-3.400,399.100,-2.300,-3.400,7.938e+04 +2025,36.581228,10,385.500,41.600,9.7270,-385.200,5.400,-15.100,385.200,-5.400,-15.100,1.048e+05 +2025,36.596324,10,369.200,28.400,8.1240,-367.600,-18.500,-29.300,367.600,18.500,-29.300,4.886e+04 +2025,36.610329,10,381.200,25.500,6.9930,-380.400,-15.300,-19.400,380.400,15.300,-19.400,3.939e+04 +2025,36.637029,10,371.300,24.900,6.8780,-370.000,-20.300,-23.700,370.000,20.300,-23.700,3.756e+04 +2025,36.648633,10,370.400,26.200,7.4590,-369.300,-16.800,-23.500,369.300,16.800,-23.500,4.158e+04 +2025,36.671877,10,379.500,27.000,7.5240,-378.700,-15.300,-19.300,378.700,15.300,-19.300,4.416e+04 +2025,36.685809,10,383.100,23.300,7.1000,-382.000,-19.700,-21.200,382.000,19.700,-21.200,3.288e+04 +2025,36.686973,10,385.100,23.700,7.2720,-384.000,-20.100,-20.300,384.000,20.100,-20.300,3.402e+04 +2025,36.718438,10,387.400,23.000,7.4750,-386.600,-17.500,-18.100,386.600,17.500,-18.100,3.204e+04 +2025,36.726587,10,387.100,23.400,7.4890,-386.500,-16.100,-15.000,386.500,16.100,-15.000,3.317e+04 +2025,36.727751,10,384.200,23.400,7.2830,-383.700,-13.700,-12.700,383.700,13.700,-12.700,3.317e+04 +2025,36.734698,10,390.900,23.700,7.7740,-390.200,-16.700,-15.700,390.200,16.700,-15.700,3.402e+04 +2025,36.762599,10,385.800,30.200,8.4710,-384.600,-21.900,-21.700,384.600,21.900,-21.700,5.525e+04 +2025,36.764927,10,387.400,32.300,8.5170,-385.800,-23.500,-26.200,385.800,23.500,-26.200,6.320e+04 +2025,36.766091,10,385.700,29.600,8.2320,-384.000,-24.800,-25.900,384.000,24.800,-25.900,5.307e+04 +2025,36.775439,10,383.100,29.500,8.4230,-382.500,-20.100,-9.800,382.500,20.100,-9.800,5.271e+04 +2025,36.780096,10,383.800,30.900,8.3130,-383.100,-19.900,-12.100,383.100,19.900,-12.100,5.784e+04 +2025,36.781223,10,379.000,31.100,8.1900,-377.800,-23.500,-18.000,377.800,23.500,-18.000,5.859e+04 +2025,36.782387,10,382.400,31.900,8.7530,-381.300,-22.700,-18.100,381.300,22.700,-18.100,6.164e+04 +2025,36.787043,10,376.000,30.900,8.6080,-374.700,-22.100,-20.900,374.700,22.100,-20.900,5.784e+04 +2025,36.788207,10,377.000,30.000,8.2860,-376.200,-21.800,-11.600,376.200,21.800,-11.600,5.452e+04 +2025,36.789371,10,376.200,31.700,8.5370,-375.600,-18.700,-9.200,375.600,18.700,-9.200,6.087e+04 +2025,36.792864,10,388.200,30.700,7.6160,-387.600,-19.800,-9.000,387.600,19.800,-9.000,5.709e+04 +2025,36.802139,10,387.800,30.400,8.3130,-387.200,-19.500,-11.000,387.200,19.500,-11.000,5.598e+04 +2025,36.823055,10,385.600,31.200,8.7760,-384.600,-19.400,-19.900,384.600,19.400,-19.900,5.896e+04 +2025,36.827712,10,387.500,32.700,9.4540,-386.800,-18.800,-12.000,386.800,18.800,-12.000,6.477e+04 +2025,36.846300,10,380.900,31.700,9.1420,-380.100,-21.300,-14.400,380.100,21.300,-14.400,6.087e+04 +2025,36.857903,10,387.200,30.900,9.0660,-385.300,-14.700,-34.800,385.300,14.700,-34.800,5.784e+04 +2025,36.878856,10,387.700,29.100,9.1790,-387.200,-10.400,-16.700,387.200,10.400,-16.700,5.129e+04 +2025,36.924216,10,385.900,31.200,7.7220,-385.500,-14.600,-10.000,385.500,14.600,-10.000,5.896e+04 +2025,36.936984,10,384.600,36.900,9.1270,-382.500,-29.000,-27.900,382.500,29.000,-27.900,8.248e+04 +2025,36.948625,10,393.400,30.100,6.7090,-392.200,-24.800,-18.700,392.200,24.800,-18.700,5.488e+04 +2025,36.956736,10,395.600,31.300,8.2870,-395.000,-20.900,-6.200,395.000,20.900,-6.200,5.934e+04 +2025,37.029961,10,393.800,32.900,7.8100,-392.600,-17.900,-25.100,392.600,17.900,-25.100,6.557e+04 +2025,37.095038,10,388.500,34.000,8.9890,-388.200,-12.600,-7.700,388.200,12.600,-7.700,7.002e+04 +2025,37.107806,10,392.700,32.400,9.6710,-392.200,-19.200,-7.600,392.200,19.200,-7.600,6.359e+04 +2025,37.122938,10,402.700,30.500,9.7760,-402.400,-12.700,8.500,402.400,12.700,8.500,5.635e+04 +2025,37.310165,10,423.500,76.600,5.8910,-422.200,23.100,-23.500,422.200,-23.100,-23.500,3.554e+05 +2025,37.635729,10,490.500,63.100,2.7120,-489.000,29.300,24.300,489.000,-29.300,24.300,2.412e+05 +2025,38.002945,10,463.400,58.400,2.6000,-462.600,26.200,6.800,462.600,-26.200,6.800,2.066e+05 +2025,38.014621,10,472.400,49.500,2.7410,-471.800,22.900,8.200,471.800,-22.900,8.200,1.484e+05 +2025,38.099413,10,472.800,51.700,2.3030,-472.200,17.500,14.900,472.200,-17.500,14.900,1.619e+05 +2025,38.100577,10,473.400,49.300,2.2870,-472.800,15.400,17.600,472.800,-15.400,17.600,1.472e+05 +2025,38.113418,10,487.300,53.100,3.0400,-483.800,20.600,54.500,483.800,-20.600,54.500,1.708e+05 +2025,38.114582,10,448.800,48.200,2.5010,-448.100,21.900,13.000,448.100,-21.900,13.000,1.407e+05 +2025,38.186606,10,441.500,52.500,2.5940,-441.000,13.100,-16.000,441.000,-13.100,-16.000,1.670e+05 +2025,38.449350,10,411.100,44.100,3.4520,-410.700,4.400,16.200,410.700,-4.400,16.200,1.178e+05 +2025,38.566735,10,350.400,45.800,3.9090,-349.900,-5.600,-17.700,349.900,5.600,-17.700,1.271e+05 +2025,38.578375,10,391.200,36.400,3.2220,-390.900,-13.700,-4.100,390.900,13.700,-4.100,8.026e+04 +2025,38.612023,10,380.000,37.800,3.9950,-380.000,-5.000,-1.300,380.000,5.000,-1.300,8.655e+04 +2025,38.623664,10,378.800,36.400,3.7710,-378.700,-2.400,6.700,378.700,2.400,6.700,8.026e+04 +2025,38.639960,10,382.700,31.900,3.9210,-382.500,-2.500,12.700,382.500,2.500,12.700,6.164e+04 +2025,38.642288,10,385.800,30.400,3.8270,-385.500,-3.900,13.500,385.500,3.900,13.500,5.598e+04 +2025,38.644580,10,386.400,32.000,4.0180,-386.300,-3.900,11.600,386.300,3.900,11.600,6.203e+04 +2025,38.820093,10,360.100,40.300,3.5410,-359.700,-13.200,-9.000,359.700,13.200,-9.000,9.838e+04 +2025,38.846902,10,367.300,30.900,3.6830,-367.200,-10.100,-2.300,367.200,10.100,-2.300,5.784e+04 +2025,38.848029,10,366.100,32.300,3.7360,-366.000,-8.500,-3.000,366.000,8.500,-3.000,6.320e+04 +2025,38.961995,10,350.700,31.000,4.8860,-349.600,-26.600,-6.300,349.600,26.600,-6.300,5.821e+04 +2025,38.973635,10,355.900,22.900,5.5290,-354.700,-29.000,-5.300,354.700,29.000,-5.300,3.177e+04 +2025,38.979419,10,351.500,21.400,5.1370,-350.100,-27.000,-14.500,350.100,27.000,-14.500,2.774e+04 +2025,38.998044,10,346.100,22.000,4.7270,-344.400,-29.500,-17.700,344.400,29.500,-17.700,2.932e+04 +2025,39.017869,10,347.900,24.200,5.2290,-346.500,-29.700,-10.700,346.500,29.700,-10.700,3.547e+04 +2025,39.044569,10,348.700,23.100,5.3670,-346.500,-27.600,-28.300,346.500,27.600,-28.300,3.232e+04 +2025,39.050389,10,348.600,25.000,5.8970,-347.000,-29.200,-17.100,347.000,29.200,-17.100,3.786e+04 +2025,39.093349,10,354.700,21.000,6.5300,-353.300,-30.000,-11.500,353.300,30.000,-11.500,2.671e+04 +2025,39.127033,10,345.100,17.300,7.1340,-344.100,-24.100,-9.800,344.100,24.100,-9.800,1.813e+04 +2025,39.139801,10,354.300,16.600,6.8830,-353.000,-28.600,-7.800,353.000,28.600,-7.800,1.669e+04 +2025,39.147949,10,354.800,18.200,6.5860,-353.900,-24.800,-6.900,353.900,24.800,-6.900,2.006e+04 +2025,39.152605,10,352.600,18.400,6.5060,-352.200,-16.700,5.500,352.200,16.700,5.500,2.051e+04 +2025,39.153769,10,352.000,19.800,6.3160,-350.900,-27.800,-4.300,350.900,27.800,-4.300,2.375e+04 +2025,39.167701,10,354.700,19.700,7.0240,-354.100,-19.500,6.800,354.100,19.500,6.800,2.351e+04 +2025,39.179305,10,355.000,20.200,8.4520,-354.200,-22.800,2.900,354.200,22.800,2.900,2.472e+04 +2025,39.218882,10,354.500,15.200,9.3810,-353.200,-28.800,6.700,353.200,28.800,6.700,1.399e+04 +2025,39.332775,10,353.200,22.900,9.8700,-349.400,-45.800,-23.800,349.400,45.800,-23.800,3.177e+04 +2025,39.380428,10,352.200,22.100,9.3030,-348.200,-52.100,-8.600,348.200,52.100,-8.600,2.958e+04 +2025,39.454817,10,350.600,22.300,10.5630,-347.800,-44.100,-0.800,347.800,44.100,-0.800,3.012e+04 +2025,39.455981,10,351.700,21.500,11.4600,-348.600,-46.600,-0.700,348.600,46.600,-0.700,2.800e+04 +2025,39.458309,10,353.700,27.500,12.1050,-350.200,-48.900,-5.500,350.200,48.900,-5.500,4.581e+04 +2025,39.482681,10,345.800,19.900,10.4610,-343.600,-38.000,4.600,343.600,38.000,4.600,2.399e+04 +2025,39.486173,10,349.900,22.100,9.8240,-347.400,-41.500,4.300,347.400,41.500,4.300,2.958e+04 +2025,39.526841,10,346.800,24.700,9.5210,-344.100,-43.100,-1.400,344.100,43.100,-1.400,3.696e+04 +2025,39.543065,10,345.400,23.100,11.6290,-342.100,-47.000,-6.700,342.100,47.000,-6.700,3.232e+04 +2025,39.564090,10,347.200,25.100,10.2960,-345.600,-33.300,4.700,345.600,33.300,4.700,3.816e+04 +2025,39.617527,10,330.600,19.500,5.7770,-323.400,-68.000,8.900,323.400,68.000,8.900,2.303e+04 +2025,39.646554,10,321.700,19.800,6.6280,-313.000,-74.400,-0.200,313.000,74.400,-0.200,2.375e+04 +2025,39.653539,10,319.100,19.000,5.2180,-312.000,-66.700,3.400,312.000,66.700,3.400,2.187e+04 +2025,39.658195,10,322.700,19.200,5.6430,-314.700,-71.700,0.400,314.700,71.700,0.400,2.233e+04 +2025,39.665179,10,325.800,17.800,6.6140,-316.900,-75.400,-5.300,316.900,75.400,-5.300,1.919e+04 +2025,39.667507,10,330.000,18.000,6.9030,-320.700,-77.700,-5.300,320.700,77.700,-5.300,1.963e+04 +2025,39.674491,10,326.600,19.600,7.0170,-317.000,-78.400,-5.100,317.000,78.400,-5.100,2.327e+04 +2025,39.681439,10,325.000,19.300,6.7840,-315.100,-79.600,-4.400,315.100,79.600,-4.400,2.256e+04 +2025,39.723307,10,305.000,19.800,5.6670,-299.900,-55.900,3.600,299.900,55.900,3.600,2.375e+04 +2025,39.805916,10,363.400,29.900,10.4820,-356.700,-64.400,-25.600,356.700,64.400,-25.600,5.415e+04 +2025,39.830325,10,340.200,29.700,11.4360,-331.800,-61.300,-43.000,331.800,61.300,-43.000,5.343e+04 +2025,39.905841,10,340.500,32.400,12.1500,-334.200,-65.200,2.200,334.200,65.200,2.200,6.359e+04 +2025,39.915153,10,337.700,34.300,10.0590,-334.500,-46.300,5.600,334.500,46.300,5.600,7.126e+04 +2025,39.927994,10,338.300,25.000,8.5620,-329.800,-65.200,-37.700,329.800,65.200,-37.700,3.786e+04 +2025,39.930322,10,335.700,24.000,8.7080,-328.000,-63.300,-33.800,328.000,63.300,-33.800,3.489e+04 +2025,39.939598,10,330.600,20.000,7.4420,-321.700,-69.500,-30.900,321.700,69.500,-30.900,2.423e+04 +2025,40.060475,10,351.900,22.700,12.5060,-347.600,-41.400,-36.500,347.600,41.400,-36.500,3.121e+04 +2025,40.067459,10,345.300,25.400,12.8020,-341.800,-38.300,-31.600,341.800,38.300,-31.600,3.908e+04 +2025,40.072079,10,341.600,23.200,12.7860,-338.300,-39.000,-26.900,338.300,39.000,-26.900,3.260e+04 +2025,40.093105,10,354.800,31.400,19.2530,-352.300,-29.400,-29.500,352.300,29.400,-29.500,5.972e+04 +2025,40.107036,10,359.100,33.200,22.1450,-357.900,-25.700,-16.000,357.900,25.700,-16.000,6.677e+04 +2025,40.109365,10,359.900,34.800,23.2660,-358.700,-24.000,-17.500,358.700,24.000,-17.500,7.336e+04 +2025,40.145377,10,372.500,39.100,34.5080,-371.600,-24.400,-7.800,371.600,24.400,-7.800,9.261e+04 +2025,40.187209,10,365.000,34.800,21.0820,-362.100,-31.700,-32.700,362.100,31.700,-32.700,7.336e+04 +2025,40.196521,10,366.500,36.500,30.1260,-366.200,-0.300,-13.300,366.200,0.300,-13.300,8.070e+04 +2025,40.213945,10,354.300,31.500,34.8390,-353.500,-11.000,-21.300,353.500,11.000,-21.300,6.010e+04 +2025,40.250030,10,354.300,30.000,31.2060,-352.800,-9.500,-31.100,352.800,9.500,-31.100,5.452e+04 +2025,40.280186,10,379.600,36.600,30.7320,-377.500,-39.600,-2.800,377.500,39.600,-2.800,8.114e+04 +2025,40.296519,10,377.700,36.900,30.1840,-375.800,-36.600,-8.500,375.800,36.600,-8.500,8.248e+04 +2025,40.297683,10,377.200,37.100,30.9400,-375.200,-37.000,-8.300,375.200,37.000,-8.300,8.337e+04 +2025,40.302339,10,376.000,33.900,29.9220,-374.600,-31.500,-9.800,374.600,31.500,-9.800,6.961e+04 +2025,40.313943,10,383.800,31.100,24.6890,-382.000,-37.300,-1.400,382.000,37.300,-1.400,5.859e+04 +2025,40.315071,10,385.000,33.800,24.9560,-382.400,-44.200,-0.400,382.400,44.200,-0.400,6.920e+04 +2025,40.325547,10,379.000,31.100,33.0170,-377.300,-36.300,-0.500,377.300,36.300,-0.500,5.859e+04 +2025,40.365015,10,385.000,45.000,39.9460,-382.400,-42.200,-15.200,382.400,42.200,-15.200,1.227e+05 +2025,40.376655,10,385.000,32.100,29.5050,-383.100,-38.900,-2.000,383.100,38.900,-2.000,6.242e+04 +2025,40.410448,10,391.200,37.300,29.5100,-390.600,-21.400,5.300,390.600,21.400,5.300,8.428e+04 +2025,40.420888,10,406.100,45.000,33.8810,-406.100,-2.100,0.100,406.100,2.100,0.100,1.227e+05 +2025,40.437148,10,397.200,39.000,28.5860,-396.000,-31.200,-1.400,396.000,31.200,-1.400,9.213e+04 +2025,40.447625,10,396.700,38.900,28.5360,-395.900,-23.800,2.500,395.900,23.800,2.500,9.166e+04 +2025,40.468614,10,398.800,47.000,32.0220,-398.700,-6.700,-3.800,398.700,6.700,-3.800,1.338e+05 +2025,40.482546,10,405.700,40.200,24.0380,-405.200,-15.100,-14.500,405.200,15.100,-14.500,9.789e+04 +2025,40.484874,10,411.000,34.800,23.8040,-410.400,-11.800,-19.400,410.400,11.800,-19.400,7.336e+04 +2025,40.490657,10,403.900,39.000,22.5120,-403.400,-18.500,-8.400,403.400,18.500,-8.400,9.213e+04 +2025,40.491821,10,404.900,38.400,20.5580,-404.400,-18.000,-10.800,404.400,18.000,-10.800,8.932e+04 +2025,40.695199,10,430.400,53.200,15.7570,-429.700,-10.300,-21.200,429.700,10.300,-21.200,1.714e+05 +2025,40.708004,10,448.000,59.200,20.1610,-447.500,1.600,20.800,447.500,-1.600,20.800,2.123e+05 +2025,40.788212,10,516.700,83.500,12.0590,-506.000,103.800,-12.800,506.000,-103.800,-12.800,4.223e+05 +2025,41.085911,10,598.400,55.900,4.7740,-597.500,-10.400,31.900,597.500,10.400,31.900,1.893e+05 +2025,41.119595,10,591.900,48.500,4.2350,-591.000,-9.700,31.200,591.000,9.700,31.200,1.425e+05 +2025,41.126580,10,582.400,54.600,2.8980,-581.300,30.500,-19.800,581.300,-30.500,-19.800,1.806e+05 +2025,41.160336,10,591.400,49.500,3.5830,-590.800,-7.100,25.600,590.800,7.100,25.600,1.484e+05 +2025,41.239345,10,583.300,48.400,4.0400,-583.100,-13.800,4.100,583.100,13.800,4.100,1.419e+05 +2025,41.311442,10,586.000,47.300,4.5470,-585.100,-13.400,-30.300,585.100,13.400,-30.300,1.355e+05 +2025,41.354511,10,570.900,49.900,2.9680,-569.200,36.100,-26.100,569.200,-36.100,-26.100,1.508e+05 +2025,41.455636,10,589.400,44.300,3.3950,-585.500,4.600,-67.600,585.500,-4.600,-67.600,1.189e+05 +2025,41.562582,10,577.600,52.300,5.6880,-573.700,44.100,-50.200,573.700,-44.100,-50.200,1.657e+05 +2025,41.578842,10,592.500,55.000,4.9930,-588.400,42.500,55.300,588.400,-42.500,55.300,1.832e+05 +2025,41.579969,10,554.300,52.700,5.3870,-552.100,34.200,35.400,552.100,-34.200,35.400,1.682e+05 +2025,41.625294,10,534.200,45.100,4.1930,-533.300,27.200,12.900,533.300,-27.200,12.900,1.232e+05 +2025,41.748498,10,566.600,56.700,4.4410,-566.000,-9.800,24.900,566.000,9.800,24.900,1.947e+05 +2025,41.756646,10,571.300,54.800,4.8810,-570.600,3.600,28.100,570.600,-3.600,28.100,1.819e+05 +2025,41.768287,10,568.100,60.200,5.1450,-568.100,2.800,-5.900,568.100,-2.800,-5.900,2.195e+05 +2025,41.769451,10,599.700,54.600,5.0710,-597.800,24.100,41.800,597.800,-24.100,41.800,1.806e+05 +2025,41.797314,10,567.000,54.100,4.2100,-565.400,30.200,29.900,565.400,-30.200,29.900,1.773e+05 +2025,42.075825,10,580.100,55.800,6.1880,-579.900,-2.400,15.600,579.900,2.400,15.600,1.886e+05 +2025,42.092162,10,582.000,46.700,4.5180,-581.400,-6.500,25.100,581.400,6.500,25.100,1.321e+05 +2025,42.387607,10,595.000,45.600,4.0560,-593.500,17.200,-39.200,593.500,-17.200,-39.200,1.260e+05 +2025,42.598094,10,541.400,49.300,4.2670,-540.100,7.600,37.100,540.100,-7.600,37.100,1.472e+05 +2025,42.601587,10,533.300,46.500,4.2800,-532.800,-20.700,-9.100,532.800,20.700,-9.100,1.310e+05 +2025,42.617851,10,534.700,46.600,4.5460,-533.100,30.500,27.700,533.100,-30.500,27.700,1.315e+05 +2025,42.628366,10,528.300,48.100,4.4470,-527.000,15.600,35.000,527.000,-15.600,35.000,1.401e+05 +2025,42.640045,10,524.700,43.700,4.3850,-523.300,-3.600,38.100,523.300,3.600,38.100,1.157e+05 +2025,42.678395,10,544.800,49.200,4.7280,-542.500,49.700,-0.800,542.500,-49.700,-0.800,1.466e+05 +2025,42.687673,10,536.600,50.500,4.8430,-535.000,41.200,-4.100,535.000,-41.200,-4.100,1.545e+05 +2025,42.701609,10,518.000,52.200,4.4250,-517.700,14.800,11.300,517.700,-14.800,11.300,1.651e+05 +2025,42.719074,10,542.200,53.900,4.8550,-541.800,-21.600,-4.200,541.800,21.600,-4.200,1.760e+05 +2025,42.721402,10,549.200,47.200,4.4780,-548.500,-24.900,9.200,548.500,24.900,9.200,1.349e+05 +2025,42.722566,10,552.900,47.900,4.8450,-552.100,-25.100,16.100,552.100,25.100,16.100,1.390e+05 +2025,42.743561,10,538.600,44.900,4.7450,-536.800,30.700,30.700,536.800,-30.700,30.700,1.221e+05 +2025,42.745889,10,542.800,46.900,4.7360,-540.600,26.400,41.600,540.600,-26.400,41.600,1.332e+05 +2025,42.750546,10,517.900,50.700,4.4500,-517.000,28.100,9.700,517.000,-28.100,9.700,1.557e+05 +2025,42.791152,10,531.800,46.200,4.3380,-529.700,38.400,27.300,529.700,-38.400,27.300,1.293e+05 +2025,42.793481,10,517.400,48.500,4.4570,-517.200,-15.600,-0.000,517.200,15.600,-0.000,1.425e+05 +2025,42.806324,10,553.100,49.800,4.8340,-549.800,57.500,18.300,549.800,-57.500,18.300,1.502e+05 +2025,42.813310,10,538.600,47.200,4.3370,-536.100,51.900,-2.300,536.100,-51.900,-2.300,1.349e+05 +2025,42.847039,10,524.500,46.800,4.4370,-521.900,50.100,-11.400,521.900,-50.100,-11.400,1.327e+05 +2025,42.852824,10,524.100,45.400,4.3750,-522.200,43.100,-11.500,522.200,-43.100,-11.500,1.249e+05 +2025,42.865595,10,525.200,44.600,4.4150,-523.500,16.800,-38.800,523.500,-16.800,-38.800,1.205e+05 +2025,42.986538,10,510.200,46.700,3.8740,-509.400,4.500,-27.900,509.400,-4.500,-27.900,1.321e+05 +2025,43.034130,10,533.600,47.300,5.6710,-532.000,20.500,-36.500,532.000,-20.500,-36.500,1.355e+05 +2025,43.035294,10,528.100,44.300,4.7610,-526.800,-34.200,12.200,526.800,34.200,12.200,1.189e+05 +2025,43.170246,10,535.900,51.100,4.4850,-535.400,-6.800,23.500,535.400,6.800,23.500,1.582e+05 +2025,43.186546,10,544.500,49.200,4.3630,-543.300,-6.300,35.800,543.300,6.300,35.800,1.466e+05 +2025,43.277181,10,542.200,53.800,4.4930,-539.500,32.000,-43.400,539.500,-32.000,-43.400,1.753e+05 +2025,43.283003,10,546.400,55.000,4.7550,-543.100,48.600,-34.700,543.100,-48.600,-34.700,1.832e+05 +2025,43.307417,10,549.600,55.400,4.7350,-549.300,-6.800,16.700,549.300,6.800,16.700,1.859e+05 +2025,43.309782,10,555.700,57.700,4.2310,-554.500,0.800,-35.200,554.500,-0.800,-35.200,2.017e+05 +2025,43.345912,10,557.700,58.300,4.4430,-557.400,9.000,15.300,557.400,-9.000,15.300,2.059e+05 +2025,43.367961,10,551.500,56.900,4.5700,-550.200,26.900,-28.500,550.200,-26.900,-28.500,1.961e+05 +2025,43.402818,10,554.100,55.200,4.1480,-552.300,18.900,-40.100,552.300,-18.900,-40.100,1.846e+05 +2025,43.450591,10,574.300,51.500,2.8600,-573.800,15.500,-18.700,573.800,-15.500,-18.700,1.607e+05 +2025,43.466818,10,578.600,55.100,3.7360,-577.600,29.100,17.100,577.600,-29.100,17.100,1.839e+05 +2025,43.528527,10,534.100,49.100,3.5800,-533.900,11.000,9.800,533.900,-11.000,9.800,1.460e+05 +2025,43.663406,10,488.300,36.800,3.9650,-487.400,-7.500,28.900,487.400,7.500,28.900,8.203e+04 +2025,43.664570,10,485.300,36.200,3.9300,-484.200,-9.800,30.900,484.200,9.800,30.900,7.938e+04 +2025,43.666899,10,488.500,35.800,3.6380,-487.300,-13.700,32.400,487.300,13.700,32.400,7.763e+04 +2025,43.669228,10,491.900,36.500,3.6630,-491.200,-9.200,24.900,491.200,9.200,24.900,8.070e+04 +2025,43.676214,10,483.300,34.400,3.8440,-482.500,13.400,24.600,482.500,-13.400,24.600,7.168e+04 +2025,43.680871,10,489.400,35.900,3.9400,-488.700,4.700,26.300,488.700,-4.700,26.300,7.807e+04 +2025,43.704194,10,489.300,38.400,4.2740,-488.000,-14.100,31.900,488.000,14.100,31.900,8.932e+04 +2025,43.740324,10,485.800,36.800,4.5080,-483.900,-41.400,11.500,483.900,41.400,11.500,8.203e+04 +2025,44.020452,10,467.100,37.600,4.9830,-464.700,-44.600,-16.200,464.700,44.600,-16.200,8.564e+04 +2025,44.353301,10,452.400,52.200,6.8550,-450.600,-36.200,17.700,450.600,36.200,17.700,1.651e+05 +2025,44.389359,10,497.800,41.800,6.3100,-496.000,-3.500,-42.400,496.000,3.500,-42.400,1.058e+05 +2025,44.392852,10,483.200,38.300,5.6940,-480.700,-34.200,-35.400,480.700,34.200,-35.400,8.886e+04 +2025,44.399801,10,464.300,38.700,5.6200,-461.800,-14.100,-46.400,461.800,14.100,-46.400,9.072e+04 +2025,44.414901,10,458.300,36.300,5.6090,-456.100,-24.500,37.000,456.100,24.500,37.000,7.982e+04 +2025,44.544140,10,468.000,41.700,6.2380,-466.400,-38.600,0.500,466.400,38.600,0.500,1.053e+05 +2025,44.547633,10,483.200,42.700,6.3620,-481.300,-26.900,-33.700,481.300,26.900,-33.700,1.104e+05 +2025,44.573248,10,468.600,44.600,6.0870,-466.400,-25.200,-37.500,466.400,25.200,-37.500,1.205e+05 +2025,44.610579,10,464.300,42.700,5.4830,-462.800,-37.500,7.400,462.800,37.500,7.400,1.104e+05 +2025,44.641907,10,435.200,46.400,4.1040,-435.000,-8.500,-8.800,435.000,8.500,-8.800,1.304e+05 +2025,44.655842,10,450.100,40.200,5.7500,-448.800,-33.100,9.300,448.800,33.100,9.300,9.789e+04 +2025,44.661663,10,449.800,40.600,6.0100,-448.500,-27.300,21.400,448.500,27.300,21.400,9.985e+04 +2025,44.861816,10,500.700,53.300,5.3880,-499.900,18.800,20.800,499.900,-18.800,20.800,1.721e+05 +2025,44.935022,10,506.600,49.400,5.7680,-503.900,21.200,-47.700,503.900,-21.200,-47.700,1.478e+05 +2025,45.381647,10,517.200,54.600,6.3710,-514.400,-2.000,-53.900,514.400,2.000,-53.900,1.806e+05 +2025,45.452671,10,512.900,48.500,5.2640,-511.700,-28.200,22.300,511.700,28.200,22.300,1.425e+05 +2025,45.459620,10,504.100,51.700,5.2410,-503.400,-23.200,12.700,503.400,23.200,12.700,1.619e+05 +2025,45.612037,10,557.900,49.900,6.0900,-557.300,-26.000,2.100,557.300,26.000,2.100,1.508e+05 +2025,45.631757,10,534.800,53.900,7.6070,-533.800,-31.100,-9.400,533.800,31.100,-9.400,1.760e+05 +2025,45.637579,10,540.700,57.000,7.6680,-539.800,-27.500,14.500,539.800,27.500,14.500,1.968e+05 +2025,45.679457,10,532.000,53.000,7.6040,-530.000,20.700,41.100,530.000,-20.700,41.100,1.702e+05 +2025,45.688808,10,532.500,52.600,7.9830,-531.100,-8.900,38.000,531.100,8.900,38.000,1.676e+05 +2025,45.689973,10,533.200,50.800,7.6630,-531.900,-20.800,29.800,531.900,20.800,29.800,1.563e+05 +2025,45.976139,10,568.400,57.300,7.4380,-563.800,43.500,-58.000,563.800,-43.500,-58.000,1.989e+05 +2025,46.150605,10,540.200,51.000,6.3370,-540.000,-14.000,6.800,540.000,14.000,6.800,1.576e+05 +2025,46.158755,10,543.300,47.900,5.1940,-542.900,-10.800,18.400,542.900,10.800,18.400,1.390e+05 +2025,46.166942,10,530.000,52.000,5.6350,-529.800,-5.000,13.900,529.800,5.000,13.900,1.638e+05 +2025,46.180950,10,545.600,52.300,5.8560,-544.200,-3.800,38.500,544.200,3.800,38.500,1.657e+05 +2025,46.206528,10,530.700,55.900,5.2670,-530.700,5.900,-5.500,530.700,-5.900,-5.500,1.893e+05 +2025,46.208821,10,525.900,51.300,4.9400,-525.600,17.600,1.000,525.600,-17.600,1.000,1.594e+05 +2025,46.251864,10,531.800,52.600,5.6070,-531.600,10.400,13.800,531.600,-10.400,13.800,1.676e+05 +2025,46.253028,10,536.200,49.800,5.5580,-535.900,0.600,17.100,535.900,-0.600,17.100,1.502e+05 +2025,46.289195,10,552.400,51.300,5.9570,-551.000,-11.700,-37.000,551.000,11.700,-37.000,1.594e+05 +2025,46.290359,10,556.000,50.300,5.8430,-554.300,-17.900,-39.200,554.300,17.900,-39.200,1.533e+05 +2025,46.307788,10,549.500,49.400,5.7640,-548.400,-33.400,-11.300,548.400,33.400,-11.300,1.478e+05 +2025,46.333293,10,544.800,51.400,6.0460,-544.500,-15.800,9.900,544.500,15.800,9.900,1.600e+05 +2025,46.399659,10,567.100,48.400,5.8630,-564.800,-15.800,-48.000,564.800,15.800,-48.000,1.419e+05 +2025,46.408938,10,560.800,52.100,5.7950,-559.800,-27.500,-19.100,559.800,27.500,-19.100,1.644e+05 +2025,46.410102,10,566.500,54.500,5.2600,-564.700,-4.100,-44.900,564.700,4.100,-44.900,1.799e+05 +2025,46.420581,10,564.900,48.200,5.1260,-563.700,-36.000,-9.200,563.700,36.000,-9.200,1.407e+05 +2025,46.434516,10,565.400,53.300,4.7900,-564.600,-28.900,7.400,564.600,28.900,7.400,1.721e+05 +2025,46.539196,10,615.200,70.400,5.3990,-612.800,36.500,-41.000,612.800,-36.500,-41.000,3.002e+05 +2025,46.615931,10,631.700,70.100,4.1920,-629.900,25.100,-39.900,629.900,-25.100,-39.900,2.977e+05 +2025,46.628775,10,581.800,64.200,4.3390,-580.600,36.900,-2.300,580.600,-36.900,-2.300,2.497e+05 +2025,46.643948,10,604.300,62.200,4.4080,-603.900,-0.600,-23.500,603.900,0.600,-23.500,2.344e+05 +2025,46.646276,10,604.100,62.800,4.4010,-604.000,5.800,-10.000,604.000,-5.800,-10.000,2.389e+05 +2025,46.647441,10,602.700,67.500,4.3940,-601.800,15.800,-28.200,601.800,-15.800,-28.200,2.760e+05 +2025,46.653262,10,596.100,62.700,4.7880,-595.800,5.700,-19.500,595.800,-5.700,-19.500,2.381e+05 +2025,46.660248,10,615.400,60.100,4.2060,-614.700,3.500,-29.500,614.700,-3.500,-29.500,2.188e+05 +2025,46.661413,10,602.600,61.900,5.0430,-602.400,-1.900,-15.400,602.400,1.900,-15.400,2.321e+05 +2025,46.667198,10,651.400,68.000,5.0250,-649.300,27.000,-44.300,649.300,-27.000,-44.300,2.801e+05 +2025,46.753247,10,652.900,70.100,5.5170,-647.200,78.900,-34.200,647.200,-78.900,-34.200,2.977e+05 +2025,46.760233,10,623.700,71.400,4.8090,-621.200,55.400,-7.700,621.200,-55.400,-7.700,3.088e+05 +2025,46.796072,10,646.100,67.000,5.7430,-641.000,79.600,-17.100,641.000,-79.600,-17.100,2.719e+05 +2025,46.816993,10,641.000,67.000,5.1250,-640.400,22.600,-16.500,640.400,-22.600,-16.500,2.719e+05 +2025,46.821651,10,654.900,68.400,5.3740,-654.600,17.300,-8.800,654.600,-17.300,-8.800,2.834e+05 +2025,46.827436,10,639.500,64.500,4.5600,-638.900,16.000,-23.900,638.900,-16.000,-23.900,2.520e+05 +2025,46.830929,10,642.700,64.600,4.8290,-641.900,21.800,-24.800,641.900,-21.800,-24.800,2.528e+05 +2025,46.892419,10,630.900,62.800,4.6310,-629.700,31.100,22.100,629.700,-31.100,22.100,2.389e+05 +2025,47.014672,10,632.900,52.800,2.6170,-632.100,31.300,9.300,632.100,-31.300,9.300,1.689e+05 +2025,47.049565,10,583.600,66.900,3.3590,-583.200,19.900,-8.600,583.200,-19.900,-8.600,2.711e+05 +2025,47.135616,10,609.400,48.800,3.7640,-608.500,-13.400,-29.600,608.500,13.400,-29.600,1.443e+05 +2025,47.139109,10,596.600,48.700,3.5550,-596.200,-22.500,-0.800,596.200,22.500,-0.800,1.437e+05 +2025,47.235601,10,595.600,48.000,3.8240,-593.900,-17.300,-42.300,593.900,17.300,-42.300,1.396e+05 +2025,47.339153,10,585.200,43.000,3.7570,-583.600,-30.400,30.800,583.600,30.400,30.800,1.120e+05 +2025,47.371681,10,550.800,52.700,3.9970,-549.800,-0.600,-33.900,549.800,0.600,-33.900,1.682e+05 +2025,47.391547,10,572.700,51.300,4.1110,-569.400,32.900,-50.900,569.400,-32.900,-50.900,1.594e+05 +2025,47.397369,10,558.400,52.200,4.2200,-557.200,-3.200,-36.700,557.200,3.200,-36.700,1.651e+05 +2025,47.476433,10,557.000,51.300,4.6070,-555.000,30.700,-34.800,555.000,-30.700,-34.800,1.594e+05 +2025,47.547311,10,559.300,52.500,4.5050,-558.700,-21.800,14.400,558.700,21.800,14.400,1.670e+05 +2025,47.557826,10,582.900,47.800,4.4710,-582.100,-19.500,21.900,582.100,19.500,21.900,1.384e+05 +2025,47.563648,10,566.000,52.200,4.4620,-565.400,-18.400,18.800,565.400,18.400,18.800,1.651e+05 +2025,47.782357,10,559.400,62.900,5.0080,-558.600,1.500,-30.200,558.600,-1.500,-30.200,2.397e+05 +2025,47.800913,10,542.300,54.600,4.4930,-541.100,16.100,-32.600,541.100,-16.100,-32.600,1.806e+05 +2025,48.517257,10,487.000,38.300,3.5470,-486.100,-20.700,20.100,486.100,20.700,20.100,8.886e+04 +2025,48.699908,10,500.500,37.700,4.3960,-499.100,9.400,37.000,499.100,-9.400,37.000,8.609e+04 +2025,48.730217,10,492.500,37.000,4.4930,-491.200,23.600,26.900,491.200,-23.600,26.900,8.293e+04 +2025,48.736038,10,492.500,36.300,4.4240,-491.100,-9.900,36.300,491.100,9.900,36.300,7.982e+04 +2025,48.744188,10,501.500,35.800,3.8840,-499.200,-45.200,14.500,499.200,45.200,14.500,7.763e+04 +2025,48.746517,10,493.200,37.600,4.3770,-491.600,9.200,38.000,491.600,-9.200,38.000,8.564e+04 +2025,48.758087,10,484.000,40.500,4.2060,-482.200,-35.700,20.000,482.200,35.700,20.000,9.936e+04 +2025,48.795272,10,508.800,35.500,3.9390,-506.700,-23.200,39.500,506.700,23.200,39.500,7.634e+04 +2025,48.832640,10,490.300,30.700,3.3630,-488.700,14.700,35.500,488.700,-14.700,35.500,5.709e+04 +2025,49.033775,10,483.300,33.700,4.3350,-481.000,-44.600,13.200,481.000,44.600,13.200,6.879e+04 +2025,49.145476,10,490.600,27.900,3.7230,-489.100,-33.400,18.100,489.100,33.400,18.100,4.715e+04 +2025,49.193213,10,445.500,29.600,3.9350,-445.000,-4.300,-20.200,445.000,4.300,-20.200,5.307e+04 +2025,49.221120,10,451.800,26.500,4.0090,-450.600,15.200,-30.200,450.600,-15.200,-30.200,4.254e+04 +2025,49.316448,10,482.500,26.500,3.7930,-481.200,29.800,20.100,481.200,-29.800,20.100,4.254e+04 +2025,49.870334,10,474.900,32.400,4.8890,-474.000,-10.400,-26.800,474.000,10.400,-26.800,6.359e+04 +2025,49.881977,10,469.100,55.000,4.9850,-468.700,18.000,-8.700,468.700,-18.000,-8.700,1.832e+05 +2025,49.893584,10,486.200,37.600,4.8630,-485.900,-5.200,-17.400,485.900,5.200,-17.400,8.564e+04 +2025,49.894748,10,472.300,36.700,5.0330,-471.800,11.600,-18.500,471.800,-11.600,-18.500,8.159e+04 +2025,49.952855,10,493.900,36.100,4.4310,-492.500,10.400,-34.800,492.500,-10.400,-34.800,7.894e+04 +2025,49.972575,10,479.400,35.000,5.0880,-478.300,-12.900,-28.800,478.300,12.900,-28.800,7.420e+04 +2025,49.980725,10,489.100,34.500,5.4820,-488.400,-4.100,-26.500,488.400,4.100,-26.500,7.210e+04 +2025,50.038905,10,468.200,47.800,7.1700,-467.900,-16.400,3.000,467.900,16.400,3.000,1.384e+05 +2025,50.042398,10,477.000,53.100,7.2700,-476.400,-0.100,-23.700,476.400,0.100,-23.700,1.708e+05 +2025,50.064410,10,514.600,49.600,6.5220,-513.700,11.400,-29.100,513.700,-11.400,-29.100,1.490e+05 +2025,50.081839,10,518.000,56.800,6.6780,-517.500,20.900,-7.900,517.500,-20.900,-7.900,1.954e+05 +2025,50.091153,10,526.700,49.500,6.4300,-526.500,10.000,7.500,526.500,-10.000,7.500,1.484e+05 +2025,50.109819,10,518.400,51.500,5.3760,-518.000,12.800,15.500,518.000,-12.800,15.500,1.607e+05 +2025,50.162067,10,509.100,49.700,5.8750,-509.100,0.900,-4.200,509.100,-0.900,-4.200,1.496e+05 +2025,50.209877,10,494.300,43.500,5.3530,-494.300,4.400,-2.600,494.300,-4.400,-2.600,1.146e+05 +2025,50.236620,10,496.900,39.700,5.9100,-496.600,-13.100,-9.400,496.600,13.100,-9.400,9.547e+04 +2025,50.238949,10,503.700,37.100,5.7140,-502.000,1.200,-42.100,502.000,-1.200,-42.100,8.337e+04 +2025,50.251683,10,501.800,40.400,5.4680,-501.600,-13.000,2.200,501.600,13.000,2.200,9.887e+04 +2025,50.269112,10,511.100,40.800,5.7860,-509.700,-9.900,-36.200,509.700,9.900,-36.200,1.008e+05 +2025,50.271440,10,503.400,38.400,5.9360,-501.600,-5.400,-42.700,501.600,5.400,-42.700,8.932e+04 +2025,50.292434,10,502.100,37.600,5.8930,-500.100,-1.200,-44.800,500.100,1.200,-44.800,8.564e+04 +2025,50.314593,10,486.700,45.000,6.7940,-484.300,30.700,-37.200,484.300,-30.700,-37.200,1.227e+05 +2025,50.315757,10,487.300,47.300,6.7320,-485.600,28.700,-29.300,485.600,-28.700,-29.300,1.355e+05 +2025,50.316921,10,487.000,48.100,7.7370,-484.400,40.400,-29.800,484.400,-40.400,-29.800,1.401e+05 +2025,50.422729,10,489.000,43.000,6.4330,-487.600,27.100,26.300,487.600,-27.100,26.300,1.120e+05 +2025,50.426222,10,492.900,44.800,6.4400,-491.400,23.000,31.400,491.400,-23.000,31.400,1.216e+05 +2025,50.458750,10,495.700,47.400,7.0160,-495.700,-1.500,8.700,495.700,1.500,8.700,1.361e+05 +2025,50.541270,10,471.600,43.800,7.1270,-470.800,24.300,12.000,470.800,-24.300,12.000,1.162e+05 +2025,50.557607,10,468.500,46.100,6.5010,-467.900,6.600,-23.000,467.900,-6.600,-23.000,1.287e+05 +2025,50.584423,10,472.300,41.700,6.1210,-472.100,14.300,4.000,472.100,-14.300,4.000,1.053e+05 +2025,50.587916,10,473.500,44.400,6.0430,-473.500,8.500,-0.200,473.500,-8.500,-0.200,1.194e+05 +2025,50.630850,10,455.100,43.700,6.0050,-454.500,23.400,0.400,454.500,-23.400,0.400,1.157e+05 +2025,50.851996,10,450.800,44.200,6.0260,-449.900,3.800,-27.800,449.900,-3.800,-27.800,1.183e+05 +2025,50.884524,10,460.000,41.500,5.7470,-458.900,5.600,-31.200,458.900,-5.600,-31.200,1.043e+05 +2025,50.901952,10,457.100,39.600,5.4360,-454.500,19.000,-44.800,454.500,-19.000,-44.800,9.499e+04 +2025,50.961332,10,463.500,43.900,5.7850,-460.700,19.700,-46.800,460.700,-19.700,-46.800,1.167e+05 +2025,51.007759,10,448.800,45.700,4.4370,-448.200,3.600,-23.200,448.200,-3.600,-23.200,1.265e+05 +2025,51.285776,10,463.800,64.900,2.3590,-457.700,58.600,-47.400,457.700,-58.600,-47.400,2.551e+05 +2025,51.491751,10,426.300,45.400,1.8940,-422.500,24.000,-51.700,422.500,-24.000,-51.700,1.249e+05 +2025,51.496408,10,412.900,44.000,1.9620,-410.400,30.100,-33.500,410.400,-30.100,-33.500,1.173e+05 +2025,51.520822,10,413.300,41.400,1.9750,-411.200,17.500,-38.200,411.200,-17.500,-38.200,1.038e+05 +2025,51.525479,10,412.200,38.300,1.7670,-409.500,23.400,-41.000,409.500,-23.400,-41.000,8.886e+04 +2025,51.588280,10,430.400,29.900,3.3640,-429.100,30.800,-12.900,429.100,-30.800,-12.900,5.415e+04 +2025,51.681352,10,413.000,21.600,3.1420,-412.000,27.000,-9.200,412.000,-27.000,-9.200,2.826e+04 +2025,51.686009,10,409.700,25.500,3.2250,-408.600,28.900,-7.700,408.600,-28.900,-7.700,3.939e+04 +2025,51.689502,10,416.600,19.800,3.4980,-415.200,32.300,-10.300,415.200,-32.300,-10.300,2.375e+04 +2025,51.733600,10,417.600,20.500,3.0810,-416.600,23.900,-17.600,416.600,-23.900,-17.600,2.546e+04 +2025,51.748736,10,401.000,21.400,3.1730,-400.600,16.700,-8.500,400.600,-16.700,-8.500,2.774e+04 +2025,51.749900,10,402.700,21.000,3.4790,-402.500,13.300,-2.100,402.500,-13.300,-2.100,2.671e+04 +2025,51.756922,10,412.100,23.500,3.1430,-411.600,17.500,-9.600,411.600,-17.500,-9.600,3.345e+04 +2025,51.809316,10,412.000,21.200,3.6270,-411.700,14.400,-3.900,411.700,-14.400,-3.900,2.722e+04 +2025,51.817430,10,409.100,21.300,3.5900,-409.000,10.000,-3.100,409.000,-10.000,-3.100,2.748e+04 +2025,51.826745,10,405.700,20.900,3.6200,-405.600,9.300,0.700,405.600,-9.300,0.700,2.646e+04 +2025,51.833731,10,404.200,19.900,3.9360,-404.200,5.300,-0.800,404.200,-5.300,-0.800,2.399e+04 +2025,51.839516,10,405.100,20.000,3.9710,-405.000,7.500,-1.800,405.000,-7.500,-1.800,2.423e+04 +2025,51.847666,10,407.600,19.500,4.0150,-407.600,5.800,-3.900,407.600,-5.800,-3.900,2.303e+04 +2025,51.858145,10,404.400,27.300,3.5020,-404.300,9.300,0.400,404.300,-9.300,0.400,4.515e+04 +2025,51.865131,10,405.900,27.900,3.9220,-405.700,9.900,6.300,405.700,-9.900,6.300,4.715e+04 +2025,51.869788,10,397.300,21.800,3.5150,-397.100,10.000,-6.100,397.100,-10.000,-6.100,2.879e+04 +2025,51.967554,10,383.500,39.900,3.4060,-381.000,-13.500,-41.900,381.000,13.500,-41.900,9.643e+04 +2025,52.228069,10,368.900,26.000,2.8910,-366.700,-26.500,-30.100,366.700,26.500,-30.100,4.095e+04 +2025,52.527080,10,328.900,21.200,3.2000,-328.300,-18.800,7.300,328.300,18.800,7.300,2.722e+04 +2025,52.529408,10,338.500,22.700,4.0400,-337.500,-26.600,-2.900,337.500,26.600,-2.900,3.121e+04 +2025,52.548074,10,328.900,20.000,3.7700,-328.100,-24.000,-2.800,328.100,24.000,-2.800,2.423e+04 +2025,52.564338,10,327.200,18.900,3.1780,-326.700,-17.200,5.000,326.700,17.200,5.000,2.164e+04 +2025,52.607308,10,333.000,18.800,3.7590,-331.500,-28.300,-14.700,331.500,28.300,-14.700,2.141e+04 +2025,52.707330,10,328.300,21.900,4.4400,-327.100,-27.000,6.300,327.100,27.000,6.300,2.905e+04 +2025,52.713115,10,332.800,20.300,4.4760,-331.900,-23.300,8.500,331.900,23.300,8.500,2.496e+04 +2025,52.720101,10,330.900,20.400,4.5460,-330.000,-23.300,8.200,330.000,23.300,8.200,2.521e+04 +2025,52.723594,10,327.600,20.300,4.6370,-326.800,-21.800,4.500,326.800,21.800,4.500,2.496e+04 +2025,52.768929,10,326.300,19.300,4.3480,-325.400,-24.400,-5.000,325.400,24.400,-5.000,2.256e+04 +2025,52.772422,10,325.100,20.400,4.7280,-324.200,-23.800,-3.300,324.200,23.800,-3.300,2.521e+04 +2025,52.796945,10,319.800,19.500,4.6130,-318.800,-24.900,-0.300,318.800,24.900,-0.300,2.303e+04 +2025,52.803931,10,318.800,19.900,4.7200,-317.900,-24.400,2.500,317.900,24.400,2.500,2.399e+04 +2025,52.828309,10,323.900,20.400,4.5630,-322.600,-28.200,-1.800,322.600,28.200,-1.800,2.521e+04 +2025,52.858508,10,328.600,19.700,5.2290,-327.700,-25.000,1.600,327.700,25.000,1.600,2.351e+04 +2025,52.864329,10,319.300,19.900,4.7590,-317.700,-21.900,-23.800,317.700,21.900,-23.800,2.399e+04 +2025,52.882995,10,332.200,24.900,5.4360,-331.100,-9.300,-25.000,331.100,9.300,-25.000,3.756e+04 +2025,52.885323,10,332.200,24.600,5.7120,-331.200,-8.000,-25.100,331.200,8.000,-25.100,3.666e+04 +2025,52.887652,10,330.600,25.400,5.5970,-329.600,-1.900,-24.900,329.600,1.900,-24.900,3.908e+04 +2025,52.899295,10,330.900,25.000,5.7680,-329.900,-9.800,-23.500,329.900,9.800,-23.500,3.786e+04 +2025,52.902752,10,329.600,23.800,5.6780,-328.500,-10.400,-24.700,328.500,10.400,-24.700,3.431e+04 +2025,52.907409,10,332.900,24.000,5.7430,-332.000,-11.700,-22.000,332.000,11.700,-22.000,3.489e+04 +2025,52.928330,10,325.200,19.100,5.6040,-323.400,-11.300,-33.000,323.400,11.300,-33.000,2.210e+04 +2025,52.965588,10,324.700,25.700,6.2340,-323.200,1.800,-30.300,323.200,-1.800,-30.300,4.001e+04 +2025,53.020384,10,331.900,23.300,6.6000,-330.800,-12.700,-24.500,330.800,12.700,-24.500,3.288e+04 +2025,53.025005,10,327.000,27.500,7.2500,-326.000,-13.100,-22.000,326.000,13.100,-22.000,4.581e+04 +2025,53.062153,10,319.300,27.500,5.9190,-318.700,-18.100,-6.200,318.700,18.100,-6.200,4.581e+04 +2025,53.116767,10,319.500,25.100,7.1810,-319.400,-8.600,-0.800,319.400,8.600,-0.800,3.816e+04 +2025,53.117931,10,323.800,24.900,7.5160,-323.500,-11.800,2.200,323.500,11.800,2.200,3.756e+04 +2025,53.216825,10,316.000,26.600,6.9030,-315.700,-10.000,-7.800,315.700,10.000,-7.800,4.286e+04 +2025,53.231925,10,320.400,25.400,7.4490,-320.100,-11.900,-8.700,320.100,11.900,-8.700,3.908e+04 +2025,53.247061,10,318.100,25.300,6.9370,-318.000,-6.700,-5.600,318.000,6.700,-5.600,3.877e+04 +2025,53.250554,10,317.700,23.800,7.0240,-317.600,-7.600,-3.200,317.600,7.600,-3.200,3.431e+04 +2025,53.251718,10,319.200,26.500,7.2590,-319.000,-7.400,-6.000,319.000,7.400,-6.000,4.254e+04 +2025,53.362292,10,319.100,26.600,7.5250,-317.400,-19.000,-26.900,317.400,19.000,-26.900,4.286e+04 +2025,53.375063,10,312.000,24.600,7.0500,-309.900,-21.600,-29.200,309.900,21.600,-29.200,3.666e+04 +2025,53.386669,10,314.300,25.200,6.8790,-313.400,-22.700,-5.300,313.400,22.700,-5.300,3.847e+04 +2025,53.388998,10,309.700,24.600,7.1940,-308.500,-23.000,-14.100,308.500,23.000,-14.100,3.666e+04 +2025,53.394820,10,308.700,24.800,6.8120,-307.100,-18.900,-24.500,307.100,18.900,-24.500,3.726e+04 +2025,53.434370,10,310.700,27.900,7.3460,-309.900,-20.400,-11.400,309.900,20.400,-11.400,4.715e+04 +2025,53.437863,10,310.700,29.100,7.1610,-310.000,-20.200,-7.200,310.000,20.200,-7.200,5.129e+04 +2025,53.504120,10,311.300,25.200,9.1830,-310.200,-22.100,-14.900,310.200,22.100,-14.900,3.847e+04 +2025,53.536720,10,304.500,30.800,7.8620,-304.400,1.000,-4.800,304.400,-1.000,-4.800,5.746e+04 +2025,53.544834,10,315.500,32.500,10.3710,-314.300,-15.700,-23.300,314.300,15.700,-23.300,6.398e+04 +2025,53.545998,10,315.000,31.700,9.9100,-314.100,-14.600,-18.300,314.100,14.600,-18.300,6.087e+04 +2025,53.587805,10,323.400,27.100,7.8800,-322.900,-16.900,-5.700,322.900,16.900,-5.700,4.449e+04 +2025,53.619350,10,308.200,25.500,7.8290,-307.600,-18.500,2.200,307.600,18.500,2.200,3.939e+04 +2025,53.622843,10,309.500,28.400,7.8640,-309.100,-15.500,-0.500,309.100,15.500,-0.500,4.886e+04 +2025,53.630993,10,309.300,28.700,8.4800,-309.000,-13.800,0.600,309.000,13.800,0.600,4.989e+04 +2025,53.632158,10,312.600,26.900,8.2370,-312.100,-17.600,-0.800,312.100,17.600,-0.800,4.383e+04 +2025,53.636815,10,307.900,28.600,8.0760,-307.800,-8.600,-0.200,307.800,8.600,-0.200,4.955e+04 +2025,53.700742,10,318.100,28.800,11.6430,-318.100,-3.700,-0.900,318.100,3.700,-0.900,5.024e+04 +2025,53.772784,10,316.400,26.200,15.2280,-316.100,-14.400,-1.700,316.100,14.400,-1.700,4.158e+04 +2025,53.782098,10,312.800,27.200,14.7970,-312.300,-16.300,0.900,312.300,16.300,0.900,4.481e+04 +2025,53.783299,10,311.700,27.900,15.4190,-311.200,-16.800,0.900,311.200,16.800,0.900,4.715e+04 +2025,53.784463,10,316.000,26.100,16.4270,-315.400,-20.000,1.300,315.400,20.000,1.300,4.126e+04 +2025,53.796143,10,313.300,26.800,16.8980,-312.600,-20.800,-1.100,312.600,20.800,-1.100,4.351e+04 +2025,53.806658,10,314.400,26.400,16.4540,-313.700,-19.900,-7.800,313.700,19.900,-7.800,4.222e+04 +2025,53.829944,10,312.900,25.800,15.7210,-312.000,-21.200,-11.500,312.000,21.200,-11.500,4.032e+04 +2025,53.832236,10,312.000,26.600,15.5530,-311.200,-20.500,-8.000,311.200,20.500,-8.000,4.286e+04 +2025,53.847336,10,309.300,26.500,15.3530,-308.300,-22.800,-8.700,308.300,22.800,-8.700,4.254e+04 +2025,53.869385,10,310.900,19.000,12.7790,-310.500,-15.600,-0.000,310.500,15.600,-0.000,2.187e+04 +2025,53.876371,10,311.500,24.100,15.4180,-310.700,-18.200,-11.300,310.700,18.200,-11.300,3.518e+04 +2025,53.888014,10,308.400,21.400,11.4540,-308.000,-15.200,2.100,308.000,15.200,2.100,2.774e+04 +2025,53.890343,10,308.800,20.800,11.5780,-308.500,-13.900,2.100,308.500,13.900,2.100,2.621e+04 +2025,53.945029,10,309.400,25.400,11.7070,-308.900,-17.300,-5.500,308.900,17.300,-5.500,3.908e+04 +2025,53.970571,10,308.200,24.300,12.3980,-307.200,-22.900,-7.900,307.200,22.900,-7.900,3.577e+04 +2025,53.981086,10,306.600,26.600,12.0540,-306.000,-19.500,-2.100,306.000,19.500,-2.100,4.286e+04 +2025,54.024166,10,306.300,23.100,11.3880,-305.800,-17.600,0.200,305.800,17.600,0.200,3.232e+04 +2025,54.048507,10,310.600,25.500,13.3770,-310.200,-16.400,-3.700,310.200,16.400,-3.700,3.939e+04 +2025,54.055493,10,303.700,26.100,13.4600,-302.900,-19.900,9.500,302.900,19.900,9.500,4.126e+04 +2025,54.057822,10,303.000,25.000,13.3890,-302.300,-20.400,3.000,302.300,20.400,3.000,3.786e+04 +2025,54.087003,10,295.800,30.800,15.3340,-295.700,-5.200,6.600,295.700,5.200,6.600,5.746e+04 +2025,54.092824,10,295.800,33.600,16.5170,-295.700,-2.200,5.900,295.700,2.200,5.900,6.839e+04 +2025,54.102139,10,307.300,26.300,16.6470,-307.200,-3.500,-5.600,307.200,3.500,-5.600,4.190e+04 +2025,54.104467,10,306.600,24.400,16.6120,-306.500,-3.100,-5.900,306.500,3.100,-5.900,3.606e+04 +2025,54.123023,10,302.300,27.100,16.0610,-301.800,-18.000,-0.300,301.800,18.000,-0.300,4.449e+04 +2025,54.126516,10,312.800,25.000,16.0590,-312.700,4.200,-1.500,312.700,-4.200,-1.500,3.786e+04 +2025,54.131137,10,313.500,27.100,15.6710,-313.500,2.000,-1.800,313.500,-2.000,-1.800,4.449e+04 +2025,54.147401,10,311.900,23.800,15.5700,-311.900,1.700,3.700,311.900,-1.700,3.700,3.431e+04 +2025,54.169523,10,313.800,23.700,15.4820,-313.800,-1.900,-1.200,313.800,1.900,-1.200,3.402e+04 +2025,54.170688,10,313.900,23.800,15.6450,-313.900,-3.600,-1.800,313.900,3.600,-1.800,3.431e+04 +2025,54.176546,10,315.200,23.900,16.4740,-315.100,-5.500,-1.900,315.100,5.500,-1.900,3.460e+04 +2025,54.188189,10,313.100,24.400,16.7220,-313.000,-7.400,-3.100,313.000,7.400,-3.100,3.606e+04 +2025,54.212603,10,313.400,24.700,15.5310,-313.400,1.000,-4.200,313.400,-1.000,-4.200,3.696e+04 +2025,54.219552,10,315.700,24.900,15.9560,-315.600,7.100,-4.600,315.600,-7.100,-4.600,3.756e+04 +2025,54.226502,10,316.200,25.300,14.9560,-316.000,6.000,-9.700,316.000,-6.000,-9.700,3.877e+04 +2025,54.229994,10,314.100,22.600,13.4850,-314.000,4.200,-6.700,314.000,-4.200,-6.700,3.094e+04 +2025,54.231159,10,313.200,24.500,15.5550,-313.000,6.200,-10.100,313.000,-6.200,-10.100,3.636e+04 +2025,54.259102,10,300.200,27.200,15.3160,-299.900,-14.600,0.600,299.900,14.600,0.600,4.481e+04 +2025,54.291775,10,310.300,22.400,10.4700,-310.300,-1.100,-4.600,310.300,1.100,-4.600,3.039e+04 +2025,54.306839,10,319.600,33.800,8.1830,-318.600,4.900,-25.100,318.600,-4.900,-25.100,6.920e+04 +2025,54.326559,10,313.800,35.800,8.0370,-313.400,-0.700,-15.800,313.400,0.700,-15.800,7.763e+04 +2025,54.328888,10,313.200,36.500,7.8910,-312.900,0.400,-14.000,312.900,-0.400,-14.000,8.070e+04 +2025,54.349845,10,309.900,34.300,7.9300,-309.600,-1.000,-11.700,309.600,1.000,-11.700,7.126e+04 +2025,54.405659,10,306.100,38.200,7.8200,-306.000,-4.000,-4.700,306.000,4.000,-4.700,8.839e+04 +2025,54.424252,10,309.300,38.200,7.5710,-309.200,-5.500,-9.200,309.200,5.500,-9.200,8.839e+04 +2025,54.445245,10,307.600,37.000,7.6360,-307.500,-7.400,-3.200,307.500,7.400,-3.200,8.293e+04 +2025,54.448775,10,307.900,37.800,7.7480,-307.800,-7.400,-4.600,307.800,7.400,-4.600,8.655e+04 +2025,54.541846,10,315.600,35.800,8.6290,-314.200,7.300,-28.400,314.200,-7.300,-28.400,7.763e+04 +2025,54.774491,10,329.300,44.000,11.8480,-328.900,-2.500,-16.000,328.900,2.500,-16.000,1.173e+05 +2025,54.789590,10,326.600,45.200,12.0090,-326.600,-4.500,-2.800,326.600,4.500,-2.800,1.238e+05 +2025,54.814041,10,331.300,46.500,12.6800,-331.100,-10.000,-8.200,331.100,10.000,-8.200,1.310e+05 +2025,54.818698,10,329.900,45.100,12.3880,-329.300,-15.000,-13.000,329.300,15.000,-13.000,1.232e+05 +2025,54.950193,10,347.200,33.800,17.0910,-345.900,-17.100,23.900,345.900,17.100,23.900,6.920e+04 +2025,54.959507,10,350.100,34.100,16.8280,-348.800,-12.900,27.500,348.800,12.900,27.500,7.044e+04 +2025,55.079213,10,338.100,38.700,23.5650,-336.500,-26.400,-19.700,336.500,26.400,-19.700,9.072e+04 +2025,55.145542,10,341.400,37.800,21.5570,-340.000,-18.400,-23.900,340.000,18.400,-23.900,8.655e+04 +2025,55.148999,10,339.500,33.900,28.7150,-338.400,-22.700,-17.100,338.400,22.700,-17.100,6.961e+04 +2025,55.162934,10,332.700,37.900,20.2470,-330.100,-39.500,-13.800,330.100,39.500,-13.800,8.701e+04 +2025,55.186220,10,347.500,34.900,24.7670,-345.600,-34.600,-11.900,345.600,34.600,-11.900,7.378e+04 +2025,55.192078,10,349.800,31.800,23.6200,-348.000,-33.800,-7.400,348.000,33.800,-7.400,6.125e+04 +2025,55.194407,10,340.000,31.100,24.0640,-338.000,-36.300,-3.200,338.000,36.300,-3.200,5.859e+04 +2025,55.206050,10,337.500,33.700,24.9240,-335.700,-34.000,-2.700,335.700,34.000,-2.700,6.879e+04 +2025,55.256006,10,322.300,33.300,21.3230,-321.000,-28.600,0.800,321.000,28.600,0.800,6.717e+04 +2025,55.280493,10,324.900,28.400,20.1660,-324.200,-21.600,-1.300,324.200,21.600,-1.300,4.886e+04 +2025,55.282821,10,329.000,30.800,22.4520,-328.500,-17.500,-6.100,328.500,17.500,-6.100,5.746e+04 +2025,55.285150,10,317.700,27.100,17.8930,-316.600,-26.700,-0.800,316.600,26.700,-0.800,4.449e+04 +2025,55.293337,10,321.200,26.100,19.5680,-320.200,-23.200,-8.300,320.200,23.200,-8.300,4.126e+04 +2025,55.351407,10,348.700,27.800,33.1090,-348.700,-1.000,-5.800,348.700,1.000,-5.800,4.681e+04 +2025,55.377058,10,365.300,36.500,40.5510,-364.600,-5.900,-22.200,364.600,5.900,-22.200,8.070e+04 +2025,55.386409,10,357.700,38.200,39.8950,-356.500,-10.600,-27.500,356.500,10.600,-27.500,8.839e+04 +2025,55.398088,10,352.900,39.800,38.6580,-351.900,-7.100,-24.800,351.900,7.100,-24.800,9.595e+04 +2025,55.438766,10,361.400,40.900,32.6530,-360.800,0.200,-20.300,360.800,-0.200,-20.300,1.013e+05 +2025,55.449209,10,355.100,40.200,28.8850,-354.800,-5.100,-15.700,354.800,5.100,-15.700,9.789e+04 +2025,55.457323,10,352.400,37.500,27.7630,-351.100,-8.400,-28.500,351.100,8.400,-28.500,8.518e+04 +2025,55.509717,10,356.200,33.600,26.9160,-354.700,-14.800,-28.100,354.700,14.800,-28.100,6.839e+04 +2025,55.514374,10,376.200,32.000,24.4610,-372.100,3.200,-55.000,372.100,-3.200,-55.000,6.203e+04 +2025,55.517867,10,352.700,32.600,25.8670,-351.300,-20.500,-23.100,351.300,20.500,-23.100,6.438e+04 +2025,55.542281,10,340.100,38.500,19.0170,-339.200,-23.100,-5.400,339.200,23.100,-5.400,8.979e+04 +2025,55.549231,10,349.100,34.400,14.4060,-347.500,-30.400,-13.400,347.500,30.400,-13.400,7.168e+04 +2025,55.577174,10,341.900,33.200,15.0890,-340.600,-29.900,3.300,340.600,29.900,3.300,6.677e+04 +2025,55.594602,10,355.100,30.500,11.8530,-353.600,-28.200,-14.400,353.600,28.200,-14.400,5.635e+04 +2025,55.601552,10,351.100,32.000,12.8130,-349.800,-29.800,-6.600,349.800,29.800,-6.600,6.203e+04 +2025,55.609702,10,349.500,33.300,11.6940,-348.400,-27.900,-6.500,348.400,27.900,-6.500,6.717e+04 +2025,55.611994,10,352.700,34.300,11.4670,-351.700,-26.200,-5.900,351.700,26.200,-5.900,7.126e+04 +2025,55.657439,10,356.200,33.900,10.9970,-355.200,-22.300,-14.900,355.200,22.300,-14.900,6.961e+04 +2025,55.671447,10,361.600,34.100,12.6110,-361.500,-10.600,1.000,361.500,10.600,1.000,7.044e+04 +2025,55.672611,10,361.500,35.400,13.5580,-361.300,-10.800,-3.500,361.300,10.800,-3.500,7.591e+04 +2025,55.724896,10,362.700,34.900,14.0930,-361.900,-18.000,-16.200,361.900,18.000,-16.200,7.378e+04 +2025,55.748146,10,394.100,38.000,18.1290,-393.300,-22.200,-13.100,393.300,22.200,-13.100,8.747e+04 +2025,55.750475,10,397.100,37.900,18.3660,-396.200,-19.500,-17.900,396.200,19.500,-17.900,8.701e+04 +2025,55.752803,10,397.500,36.900,18.0920,-396.600,-22.300,-15.800,396.600,22.300,-15.800,8.248e+04 +2025,55.833068,10,443.500,58.200,14.3860,-442.800,25.600,-4.500,442.800,-25.600,-4.500,2.052e+05 +2025,55.844747,10,435.700,51.400,23.8170,-434.900,24.900,4.000,434.900,-24.900,4.000,1.600e+05 +2025,55.848240,10,436.400,54.100,21.8300,-435.700,23.600,-4.800,435.700,-23.600,-4.800,1.773e+05 +2025,56.028526,10,411.000,50.000,15.3470,-409.900,11.000,-27.900,409.900,-11.000,-27.900,1.514e+05 +2025,56.034384,10,417.300,47.300,17.1170,-415.900,14.500,-30.600,415.900,-14.500,-30.600,1.355e+05 +2025,56.053013,10,414.200,45.200,18.2510,-411.300,-5.200,-48.400,411.300,5.200,-48.400,1.238e+05 +2025,56.160021,10,382.000,39.300,12.0650,-379.200,2.800,-45.600,379.200,-2.800,-45.600,9.356e+04 +2025,56.204155,10,385.400,32.600,19.5460,-384.200,-1.700,-30.900,384.200,1.700,-30.900,6.438e+04 +2025,56.213470,10,384.100,31.200,19.6660,-382.800,-3.200,-31.400,382.800,3.200,-31.400,5.896e+04 +2025,56.233300,10,376.700,31.400,17.0360,-374.900,-10.200,-35.700,374.900,10.200,-35.700,5.972e+04 +2025,56.269321,10,369.400,40.800,23.8860,-367.300,-18.500,-34.800,367.300,18.500,-34.800,1.008e+05 +2025,56.286712,10,360.600,32.300,20.2270,-358.000,-25.200,-35.600,358.000,25.200,-35.600,6.320e+04 +2025,56.361228,10,378.700,19.900,13.2260,-377.900,-2.700,-23.900,377.900,2.700,-23.900,2.399e+04 +2025,56.417116,10,370.300,21.000,13.3190,-367.300,-8.500,-46.300,367.300,8.500,-46.300,2.671e+04 +2025,56.433416,10,368.100,14.900,9.6950,-366.100,-13.100,-36.100,366.100,13.100,-36.100,1.345e+04 +2025,56.632259,10,368.200,37.500,7.4570,-367.900,15.400,-3.000,367.900,-15.400,-3.000,8.518e+04 +2025,56.841580,10,368.400,49.600,5.7760,-368.300,-0.100,4.900,368.300,0.100,4.900,1.490e+05 +2025,56.866103,10,358.200,36.100,6.1690,-358.200,-3.300,-1.800,358.200,3.300,-1.800,7.894e+04 +2025,57.210375,10,397.800,49.300,15.9790,-397.600,-2.900,-10.900,397.600,2.900,-10.900,1.472e+05 +2025,57.245341,10,405.500,45.000,19.3830,-405.300,-5.500,-10.400,405.300,5.500,-10.400,1.227e+05 +2025,57.248834,10,406.500,45.000,19.0000,-406.400,-5.800,-7.000,406.400,5.800,-7.000,1.227e+05 +2025,59.131997,10,613.700,69.100,7.0530,-612.600,-7.700,36.300,612.600,7.700,36.300,2.892e+05 +2025,59.501374,10,765.700,72.000,4.8790,-758.000,84.000,-69.200,758.000,-84.000,-69.200,3.140e+05 +2025,59.628066,10,721.200,87.700,4.2460,-713.400,95.400,-45.800,713.400,-95.400,-45.800,4.659e+05 +2025,59.891127,10,720.700,61.200,3.2390,-720.500,4.300,13.400,720.500,-4.300,13.400,2.269e+05 +2025,60.041250,10,696.500,53.800,2.6400,-696.100,-21.300,-2.700,696.100,21.300,-2.700,1.753e+05 +2025,60.057441,10,724.200,62.300,2.7230,-723.700,-25.700,3.100,723.700,25.700,3.100,2.351e+05 +2025,60.117985,10,715.700,62.200,4.2540,-713.900,16.300,-48.000,713.900,-16.300,-48.000,2.344e+05 +2025,60.141963,10,716.000,68.000,4.7780,-713.700,51.800,26.500,713.700,-51.800,26.500,2.801e+05 +2025,60.173727,10,715.700,64.400,4.6790,-715.200,18.700,17.000,715.200,-18.700,17.000,2.512e+05 +2025,60.798269,10,667.700,63.700,2.9260,-667.200,3.400,24.600,667.200,-3.400,24.600,2.458e+05 +2025,60.813405,10,665.800,62.400,2.6710,-665.300,9.300,23.600,665.300,-9.300,23.600,2.359e+05 +2025,60.820391,10,679.900,64.400,2.4630,-679.400,9.800,26.100,679.400,-9.800,26.100,2.512e+05 +2025,60.833235,10,661.700,61.400,2.3250,-660.900,24.300,20.500,660.900,-24.300,20.500,2.284e+05 +2025,61.004206,10,596.700,49.800,2.4780,-596.700,5.700,-3.800,596.700,-5.700,-3.800,1.502e+05 +2025,61.612630,10,511.200,34.200,5.8170,-510.800,-8.700,-18.100,510.800,8.700,-18.100,7.085e+04 +2025,61.623072,10,507.000,35.100,6.2010,-506.400,-9.900,-24.300,506.400,9.900,-24.300,7.463e+04 +2025,61.628894,10,509.700,35.900,6.4840,-509.100,-14.000,-22.300,509.100,14.000,-22.300,7.807e+04 +2025,61.632350,10,508.100,33.900,5.8600,-507.500,-11.700,-21.900,507.500,11.700,-21.900,6.961e+04 +2025,61.646322,10,505.100,32.200,5.4140,-504.700,-9.700,-19.000,504.700,9.700,-19.000,6.281e+04 +2025,61.657965,10,505.600,37.500,6.3500,-504.700,2.900,-31.000,504.700,-2.900,-31.000,8.518e+04 +2025,61.660294,10,503.300,38.600,6.4920,-502.400,-24.000,-17.800,502.400,24.000,-17.800,9.025e+04 +2025,61.664987,10,507.200,33.500,5.6440,-507.000,-9.700,-13.000,507.000,9.700,-13.000,6.798e+04 +2025,61.667316,10,507.300,31.000,5.1870,-506.400,-6.600,-29.400,506.400,6.600,-29.400,5.821e+04 +2025,61.683616,10,511.500,35.200,5.2420,-510.800,-13.100,-24.300,510.800,13.100,-24.300,7.505e+04 +2025,61.690565,10,509.500,37.400,5.3960,-508.900,-15.900,-18.200,508.900,15.900,-18.200,8.473e+04 +2025,61.691730,10,509.000,40.700,5.3460,-508.400,-10.600,-21.900,508.400,10.600,-21.900,1.003e+05 +2025,61.695223,10,503.500,36.900,5.5000,-502.700,-12.900,-24.600,502.700,12.900,-24.600,8.248e+04 +2025,61.731243,10,498.200,33.200,4.6690,-497.600,-15.500,-19.600,497.600,15.500,-19.600,6.677e+04 +2025,61.784874,10,468.400,34.300,4.3790,-467.900,20.700,1.700,467.900,-20.700,1.700,7.126e+04 +2025,61.793024,10,484.300,39.800,4.8170,-483.900,-9.400,-17.800,483.900,9.400,-17.800,9.595e+04 +2025,61.794189,10,497.600,36.500,4.3790,-496.900,-11.900,-23.500,496.900,11.900,-23.500,8.070e+04 +2025,61.797682,10,478.000,44.800,5.2230,-476.200,41.000,-2.800,476.200,-41.000,-2.800,1.216e+05 +2025,61.915131,10,489.800,29.600,3.3550,-488.300,-21.900,-31.600,488.300,21.900,-31.600,5.307e+04 +2025,61.967525,10,496.500,41.500,4.7740,-496.100,-15.500,10.400,496.100,15.500,10.400,1.043e+05 +2025,62.117466,10,495.600,42.500,4.3300,-495.200,-15.600,-13.900,495.200,15.600,-13.900,1.094e+05 +2025,62.129110,10,486.200,46.500,4.3240,-485.900,-17.800,-0.200,485.900,17.800,-0.200,1.310e+05 +2025,62.132566,10,486.000,46.400,4.5250,-485.300,-11.300,22.800,485.300,11.300,22.800,1.304e+05 +2025,62.153451,10,470.900,61.500,5.1590,-465.200,70.600,18.200,465.200,-70.600,18.200,2.291e+05 +2025,62.245322,10,506.600,37.500,4.2160,-505.800,-25.900,-6.700,505.800,25.900,-6.700,8.518e+04 +2025,62.252272,10,464.600,44.400,4.7800,-462.700,3.800,-42.300,462.700,-3.800,-42.300,1.194e+05 +2025,62.272101,10,496.200,39.800,4.0210,-494.600,-18.200,-35.700,494.600,18.200,-35.700,9.595e+04 +2025,62.273266,10,492.200,45.400,3.7560,-491.300,-23.700,-17.800,491.300,23.700,-17.800,1.249e+05 +2025,62.319875,10,475.000,37.300,3.7690,-472.900,-21.200,-39.200,472.900,21.200,-39.200,8.428e+04 +2025,62.324532,10,479.800,36.600,4.3780,-477.100,-4.300,-50.500,477.100,4.300,-50.500,8.114e+04 +2025,62.373324,10,483.600,49.000,4.7060,-480.900,-13.800,-49.700,480.900,13.800,-49.700,1.454e+05 +2025,62.375652,10,521.600,38.400,4.1420,-521.400,-13.600,7.900,521.400,13.600,7.900,8.932e+04 +2025,62.412910,10,493.900,25.000,3.6040,-492.700,-34.500,-3.200,492.700,34.500,-3.200,3.786e+04 +2025,62.468724,10,487.400,31.700,3.6240,-485.800,-37.200,-11.900,485.800,37.200,-11.900,6.087e+04 +2025,62.686340,10,474.500,59.300,4.9050,-474.500,2.200,-7.000,474.500,-2.200,-7.000,2.130e+05 +2025,62.806082,10,492.800,48.800,4.6550,-492.600,5.900,10.600,492.600,-5.900,10.600,1.443e+05 +2025,62.987605,10,511.800,49.500,5.4870,-510.100,-19.200,-36.000,510.100,19.200,-36.000,1.484e+05 +2025,63.018968,10,500.200,52.000,4.6670,-499.000,-22.100,-26.300,499.000,22.100,-26.300,1.638e+05 +2025,63.071435,10,488.300,54.300,3.9200,-487.800,-15.500,-16.400,487.800,15.500,-16.400,1.786e+05 +2025,63.133034,10,473.100,64.700,5.5800,-472.200,29.300,2.200,472.200,-29.300,2.200,2.536e+05 +2025,63.148207,10,467.300,63.000,4.8620,-465.000,19.500,-41.500,465.000,-19.500,-41.500,2.404e+05 +2025,63.176114,10,515.900,67.200,4.5220,-513.600,35.500,31.900,513.600,-35.500,31.900,2.735e+05 +2025,63.476142,10,498.800,50.300,2.1620,-498.500,-7.600,13.200,498.500,7.600,13.200,1.533e+05 +2025,63.719410,10,501.700,48.100,3.5540,-499.900,-21.800,-37.000,499.900,21.800,-37.000,1.401e+05 +2025,63.733345,10,492.000,48.400,5.1830,-488.800,-38.900,-41.300,488.800,38.900,-41.300,1.419e+05 +2025,63.785666,10,482.700,59.500,6.0060,-480.400,-37.400,-30.100,480.400,37.400,-30.100,2.144e+05 +2025,63.943939,10,487.200,49.800,5.0310,-485.000,-19.700,41.600,485.000,19.700,41.600,1.502e+05 +2025,63.952053,10,487.200,52.600,6.0250,-484.100,-24.400,48.800,484.100,24.400,48.800,1.676e+05 +2025,64.247532,10,434.100,35.200,7.7990,-432.400,-27.600,26.500,432.400,27.600,26.500,7.505e+04 +2025,64.273184,10,470.600,38.100,8.3290,-469.700,-22.200,18.100,469.700,22.200,18.100,8.793e+04 +2025,64.287155,10,458.000,34.300,7.8120,-456.600,-32.700,15.500,456.600,32.700,15.500,7.126e+04 +2025,64.291776,10,461.000,35.300,8.5300,-459.400,-36.700,8.800,459.400,36.700,8.800,7.548e+04 +2025,64.305711,10,447.000,38.400,8.1740,-444.800,-40.200,18.000,444.800,40.200,18.000,8.932e+04 +2025,64.323103,10,450.000,34.200,8.1890,-448.300,-38.800,1.100,448.300,38.800,1.100,7.085e+04 +2025,64.346426,10,442.200,33.200,7.5530,-441.600,-4.300,22.600,441.600,4.300,22.600,6.677e+04 +2025,64.360434,10,451.600,32.100,9.3310,-450.600,-24.100,17.900,450.600,24.100,17.900,6.242e+04 +2025,64.362763,10,445.100,32.500,9.2100,-444.000,-21.500,22.800,444.000,21.500,22.800,6.398e+04 +2025,64.363927,10,442.900,32.600,8.7880,-442.000,-26.000,11.800,442.000,26.000,11.800,6.438e+04 +2025,64.370913,10,435.600,31.600,8.5920,-434.400,-21.900,23.100,434.400,21.900,23.100,6.049e+04 +2025,64.433676,10,438.800,33.200,8.0370,-436.700,-41.600,12.300,436.700,41.600,12.300,6.677e+04 +2025,64.437169,10,430.800,34.300,8.1860,-428.900,-40.200,-0.400,428.900,40.200,-0.400,7.126e+04 +2025,64.442991,10,437.300,33.800,8.5860,-435.200,-41.600,-6.800,435.200,41.600,-6.800,6.920e+04 +2025,64.462784,10,437.700,31.200,8.2750,-435.800,-36.300,-16.300,435.800,36.300,-16.300,5.896e+04 +2025,64.492947,10,438.400,30.200,7.7260,-436.400,-41.600,-5.100,436.400,41.600,-5.100,5.525e+04 +2025,64.502225,10,429.100,30.000,7.7440,-427.000,-41.900,-7.900,427.000,41.900,-7.900,5.452e+04 +2025,64.523219,10,433.500,30.200,7.0040,-431.200,-43.200,8.900,431.200,43.200,8.900,5.525e+04 +2025,64.604648,10,434.100,27.900,7.1730,-432.900,-26.800,17.800,432.900,26.800,17.800,4.715e+04 +2025,64.625642,10,419.400,37.500,8.3960,-418.800,-6.800,19.600,418.800,6.800,19.600,8.518e+04 +2025,64.630299,10,421.000,36.700,8.8680,-420.600,-15.800,9.100,420.600,15.800,9.100,8.159e+04 +2025,64.644270,10,409.600,39.300,9.3080,-409.000,11.300,-19.000,409.000,-11.300,-19.000,9.356e+04 +2025,64.754734,10,423.400,38.600,9.8400,-423.000,15.600,-9.500,423.000,-15.600,-9.500,9.025e+04 +2025,64.782641,10,423.600,40.700,10.0640,-423.300,-8.200,-14.800,423.300,8.200,-14.800,1.003e+05 +2025,64.815241,10,424.000,41.700,9.2560,-423.800,-11.200,-7.500,423.800,11.200,-7.500,1.053e+05 +2025,64.821099,10,445.000,43.700,9.3990,-444.900,-9.200,1.200,444.900,9.200,1.200,1.157e+05 +2025,64.836235,10,429.000,47.800,9.2720,-429.000,-5.000,3.300,429.000,5.000,3.300,1.384e+05 +2025,64.849043,10,432.800,43.800,9.6390,-432.500,13.500,-10.000,432.500,-13.500,-10.000,1.162e+05 +2025,64.859485,10,425.800,45.700,9.2770,-425.800,0.300,3.700,425.800,-0.300,3.700,1.265e+05 +2025,64.875712,10,430.500,46.100,9.3500,-430.000,17.200,-10.600,430.000,-17.200,-10.600,1.287e+05 +2025,64.879205,10,428.600,43.600,9.1530,-427.900,24.300,-8.400,427.900,-24.300,-8.400,1.151e+05 +2025,64.887355,10,431.400,44.400,9.1330,-430.800,22.000,-4.600,430.800,-22.000,-4.600,1.194e+05 +2025,64.890848,10,442.600,43.900,9.3880,-441.900,23.100,-9.700,441.900,-23.100,-9.700,1.167e+05 +2025,64.897834,10,424.500,44.700,9.3700,-423.900,22.100,5.600,423.900,-22.100,5.600,1.210e+05 +2025,64.898998,10,429.900,42.600,8.9860,-429.200,24.000,4.700,429.200,-24.000,4.700,1.099e+05 +2025,64.924685,10,433.600,42.600,9.1810,-432.700,27.200,5.200,432.700,-27.200,5.200,1.099e+05 +2025,64.928178,10,438.400,49.000,9.4220,-438.200,-1.400,11.500,438.200,1.400,11.500,1.454e+05 +2025,64.976934,10,431.500,45.200,8.6630,-431.300,-12.500,-0.300,431.300,12.500,-0.300,1.238e+05 +2025,64.986248,10,439.800,43.900,9.0670,-439.400,-14.100,-12.800,439.400,14.100,-12.800,1.167e+05 +2025,64.990905,10,436.000,42.000,8.4590,-435.000,28.000,-5.900,435.000,-28.000,-5.900,1.069e+05 +2025,64.993234,10,429.800,40.800,8.3650,-429.000,22.800,-12.000,429.000,-22.800,-12.000,1.008e+05 +2025,65.025944,10,434.300,39.800,8.1750,-433.600,24.300,-2.400,433.600,-24.300,-2.400,9.595e+04 +2025,65.027108,10,432.800,42.500,9.1830,-431.900,27.500,-5.600,431.900,-27.500,-5.600,1.094e+05 +2025,65.034094,10,428.700,43.900,8.7620,-427.400,31.200,-12.800,427.400,-31.200,-12.800,1.167e+05 +2025,65.049193,10,416.100,45.200,8.4390,-415.400,20.600,-10.300,415.400,-20.600,-10.300,1.238e+05 +2025,65.079356,10,422.200,43.600,8.4430,-421.400,23.100,-11.400,421.400,-23.100,-11.400,1.151e+05 +2025,65.131786,10,410.500,43.800,7.1290,-410.000,13.700,-15.800,410.000,-13.700,-15.800,1.162e+05 +2025,65.166570,10,431.500,44.000,8.2440,-431.200,-10.300,12.500,431.200,10.300,12.500,1.173e+05 +2025,65.172392,10,424.800,41.800,8.0730,-424.600,-10.300,3.400,424.600,10.300,3.400,1.058e+05 +2025,65.173556,10,433.400,48.100,8.6690,-432.900,-3.500,20.900,432.900,3.500,20.900,1.401e+05 +2025,65.294608,10,422.800,42.600,7.0020,-422.000,-11.000,23.500,422.000,11.000,23.500,1.099e+05 +2025,65.296936,10,420.300,43.000,7.6710,-419.900,-18.500,4.600,419.900,18.500,4.600,1.120e+05 +2025,65.298137,10,427.000,42.000,7.3280,-426.400,-12.400,18.500,426.400,12.400,18.500,1.069e+05 +2025,65.299301,10,424.500,42.500,7.5370,-423.900,-8.300,21.500,423.900,8.300,21.500,1.094e+05 +2025,65.330701,10,409.500,42.300,7.2420,-409.200,-6.400,14.200,409.200,6.400,14.200,1.084e+05 +2025,65.345764,10,443.300,38.600,6.6640,-441.700,13.400,-35.200,441.700,-13.400,-35.200,9.025e+04 +2025,65.586667,10,404.400,27.100,5.1520,-403.500,-27.800,-4.300,403.500,27.800,-4.300,4.449e+04 +2025,65.678575,10,393.600,41.300,5.8540,-392.400,-4.200,30.900,392.400,4.200,30.900,1.033e+05 +2025,65.719216,10,402.600,42.200,6.1780,-401.500,-30.400,-1.200,401.500,30.400,-1.200,1.079e+05 +2025,65.763459,10,436.300,36.000,5.7880,-434.900,-18.500,29.300,434.900,18.500,29.300,7.850e+04 +2025,65.850636,10,394.200,23.400,5.7590,-391.700,-44.200,-1.100,391.700,44.200,-1.100,3.317e+04 +2025,65.873850,10,401.900,21.900,5.4320,-399.900,-34.700,-18.800,399.900,34.700,-18.800,2.905e+04 +2025,65.902885,10,398.200,22.800,5.9450,-396.100,-37.600,-17.200,396.100,37.600,-17.200,3.149e+04 +2025,65.906414,10,399.200,24.000,6.1200,-397.100,-40.100,-8.500,397.100,40.100,-8.500,3.489e+04 +2025,65.913400,10,394.300,23.900,6.1240,-392.100,-41.500,4.600,392.100,41.500,4.600,3.460e+04 +2025,65.962264,10,398.900,24.000,6.0500,-396.800,-40.000,-5.700,396.800,40.000,-5.700,3.489e+04 +2025,65.963429,10,400.700,24.400,6.3850,-398.500,-42.100,-2.300,398.500,42.100,-2.300,3.606e+04 +2025,65.968086,10,398.100,26.000,6.4520,-395.500,-45.200,5.000,395.500,45.200,5.000,4.095e+04 +2025,65.999449,10,392.800,25.200,6.1200,-390.200,-43.600,8.000,390.200,43.600,8.000,3.847e+04 +2025,66.079750,10,398.700,40.300,6.6660,-397.300,-27.000,20.500,397.300,27.000,20.500,9.838e+04 +2025,66.127523,10,395.300,38.200,7.7800,-393.900,16.300,29.000,393.900,-16.300,29.000,8.839e+04 +2025,66.185593,10,377.600,39.600,6.8180,-377.400,5.000,-11.200,377.400,-5.000,-11.200,9.499e+04 +2025,66.192615,10,402.400,34.800,6.8260,-401.100,-7.100,31.600,401.100,7.100,31.600,7.336e+04 +2025,66.198437,10,387.700,35.300,6.8350,-386.800,-18.300,19.500,386.800,18.300,19.500,7.548e+04 +2025,66.212445,10,389.800,35.400,7.7790,-387.400,-36.700,-21.300,387.400,36.700,-21.300,7.591e+04 +2025,66.217102,10,384.700,35.400,7.3160,-382.600,-35.400,-18.800,382.600,35.400,-18.800,7.591e+04 +2025,66.256616,10,407.100,37.100,6.4320,-406.700,-8.800,16.300,406.700,8.800,16.300,8.337e+04 +2025,66.258908,10,388.700,35.800,7.2820,-388.100,-7.600,21.900,388.100,7.600,21.900,7.763e+04 +2025,66.295038,10,386.700,38.000,7.2920,-384.600,-37.500,-14.700,384.600,37.500,-14.700,8.747e+04 +2025,66.690611,10,402.000,39.200,8.4020,-401.900,-9.600,3.700,401.900,9.600,3.700,9.308e+04 +2025,66.697597,10,414.800,37.000,9.6800,-414.000,-17.400,-21.000,414.000,17.400,-21.000,8.293e+04 +2025,66.704583,10,398.400,33.500,9.6650,-397.200,-23.000,-21.400,397.200,23.000,-21.400,6.798e+04 +2025,66.709204,10,396.000,34.000,9.2560,-395.200,-19.400,-16.500,395.200,19.400,-16.500,7.002e+04 +2025,66.721974,10,401.200,34.700,9.3930,-400.400,-18.600,-17.200,400.400,18.600,-17.200,7.294e+04 +2025,66.748681,10,399.400,36.300,10.2380,-399.300,-10.200,1.500,399.300,10.200,1.500,7.982e+04 +2025,66.773204,10,394.100,35.800,9.6090,-393.700,-9.000,-15.900,393.700,9.000,-15.900,7.763e+04 +2025,66.798782,10,388.400,44.200,9.6130,-388.200,-3.600,-11.600,388.200,3.600,-11.600,1.183e+05 +2025,66.802275,10,389.600,44.600,9.5790,-389.400,-7.300,-8.900,389.400,7.300,-8.900,1.205e+05 +2025,66.820831,10,404.100,38.600,10.0330,-402.900,-26.400,-17.800,402.900,26.400,-17.800,9.025e+04 +2025,66.831273,10,405.000,35.700,10.9420,-403.700,-29.800,-12.200,403.700,29.800,-12.200,7.720e+04 +2025,66.833602,10,391.900,37.500,9.7580,-390.800,-22.200,-18.500,390.800,22.200,-18.500,8.518e+04 +2025,66.834766,10,394.200,38.500,9.9670,-393.600,-13.600,-15.800,393.600,13.600,-15.800,8.979e+04 +2025,66.851067,10,394.400,37.300,10.6020,-393.400,-13.000,-24.100,393.400,13.000,-24.100,8.428e+04 +2025,66.855724,10,397.500,35.800,10.9610,-396.400,-19.500,-21.700,396.400,19.500,-21.700,7.763e+04 +2025,66.856888,10,392.400,37.100,11.0420,-391.400,-11.600,-24.400,391.400,11.600,-24.400,8.337e+04 +2025,66.866239,10,387.200,38.800,10.9820,-387.000,0.200,-13.900,387.000,-0.200,-13.900,9.119e+04 +2025,66.870896,10,389.800,36.100,11.2610,-389.300,-16.400,-11.600,389.300,16.400,-11.600,7.894e+04 +2025,66.880211,10,389.400,37.100,11.4580,-388.800,-18.100,-10.400,388.800,18.100,-10.400,8.337e+04 +2025,66.909209,10,401.200,35.700,11.9690,-400.600,-22.500,2.100,400.600,22.500,2.100,7.720e+04 +2025,66.938280,10,391.300,35.900,11.8960,-390.700,-5.400,-21.900,390.700,5.400,-21.900,7.807e+04 +2025,66.992894,10,394.100,35.200,12.4860,-393.200,-13.000,-23.600,393.200,13.000,-23.600,7.505e+04 +2025,67.010395,10,397.000,34.700,13.7440,-396.000,-26.800,-8.600,396.000,26.800,-8.600,7.294e+04 +2025,67.065044,10,411.200,31.200,25.4220,-410.700,-13.000,-14.000,410.700,13.000,-14.000,5.896e+04 +2025,67.074322,10,402.000,34.600,22.5390,-401.200,-22.400,-10.500,401.200,22.400,-10.500,7.252e+04 +2025,67.081272,10,402.600,35.300,23.9760,-401.600,-25.400,-10.400,401.600,25.400,-10.400,7.548e+04 +2025,67.095244,10,406.500,28.100,23.5940,-406.100,-18.900,-2.900,406.100,18.900,-2.900,4.783e+04 +2025,67.096408,10,415.200,31.000,26.2140,-414.800,-19.700,3.900,414.800,19.700,3.900,5.821e+04 +2025,67.103430,10,418.100,27.200,26.1290,-417.800,-17.000,-0.100,417.800,17.000,-0.100,4.481e+04 +2025,67.117438,10,416.300,29.800,30.8660,-415.900,-17.400,-4.000,415.900,17.400,-4.000,5.379e+04 +2025,67.133750,10,402.100,30.100,25.0710,-401.700,-18.900,1.000,401.700,18.900,1.000,5.488e+04 +2025,67.143016,10,409.600,30.400,25.0010,-408.800,-24.900,-0.400,408.800,24.900,-0.400,5.598e+04 +2025,67.173179,10,414.000,32.800,30.6010,-413.100,-25.700,-7.800,413.100,25.700,-7.800,6.517e+04 +2025,67.195338,10,416.900,29.700,31.9020,-415.200,-34.200,-15.400,415.200,34.200,-15.400,5.343e+04 +2025,67.209346,10,414.500,25.800,34.6160,-413.800,-23.800,-6.000,413.800,23.800,-6.000,4.032e+04 +2025,67.265087,10,430.600,38.900,16.5860,-429.900,-10.700,-21.500,429.900,10.700,-21.500,9.166e+04 +2025,67.294231,10,468.900,52.500,10.9990,-468.100,19.800,-19.700,468.100,-19.800,-19.700,1.670e+05 +2025,67.301253,10,466.100,54.000,10.9160,-465.300,15.300,-23.500,465.300,-15.300,-23.500,1.766e+05 +2025,67.465166,10,459.800,34.900,6.3150,-459.600,9.700,4.000,459.600,-9.700,4.000,7.378e+04 +2025,67.474480,10,467.200,34.300,6.0120,-467.100,8.200,-1.000,467.100,-8.200,-1.000,7.126e+04 +2025,67.480338,10,465.300,35.000,5.8450,-465.200,8.100,-1.600,465.200,-8.100,-1.600,7.420e+04 +2025,67.481503,10,464.400,34.400,5.7110,-464.300,7.900,-1.400,464.300,-7.900,-1.400,7.168e+04 +2025,67.516359,10,454.200,51.900,3.9090,-452.600,16.600,-34.500,452.600,-16.600,-34.500,1.632e+05 +2025,67.527966,10,419.700,56.400,5.9760,-418.600,6.900,-29.800,418.600,-6.900,-29.800,1.927e+05 +2025,67.616308,10,405.300,34.100,16.6370,-403.100,-31.900,27.600,403.100,31.900,27.600,7.044e+04 +2025,67.618636,10,408.600,34.400,17.3440,-406.400,-30.700,28.800,406.400,30.700,28.800,7.168e+04 +2025,67.620965,10,405.300,36.400,18.9250,-403.200,-29.000,28.900,403.200,29.000,28.900,8.026e+04 +2025,67.630316,10,400.900,37.400,20.6110,-398.400,-30.000,32.100,398.400,30.000,32.100,8.473e+04 +2025,67.645452,10,413.300,37.700,21.9890,-410.400,-39.200,29.500,410.400,39.200,29.500,8.609e+04 +2025,67.811766,10,584.900,99.800,6.1570,-574.500,84.200,70.800,574.500,-84.200,70.800,6.033e+05 +2025,67.902473,10,432.500,53.800,15.0000,-431.500,-27.800,-9.700,431.500,27.800,-9.700,1.753e+05 +2025,67.907166,10,437.100,53.600,13.9210,-435.500,-21.200,-30.400,435.500,21.200,-30.400,1.740e+05 +2025,68.020067,10,499.600,81.000,9.0890,-497.500,26.500,-38.100,497.500,-26.500,-38.100,3.974e+05 +2025,68.042153,10,524.900,71.800,9.4070,-517.900,85.800,-3.400,517.900,-85.800,-3.400,3.123e+05 +2025,68.346872,10,627.300,119.900,5.6620,-623.500,60.400,-34.700,623.500,-60.400,-34.700,8.708e+05 +2025,68.949508,10,596.200,75.400,1.9300,-596.100,4.000,8.800,596.100,-4.000,8.800,3.444e+05 +2025,68.955329,10,614.100,76.200,1.8820,-613.800,10.400,16.300,613.800,-10.400,16.300,3.517e+05 +2025,69.230905,10,604.500,65.100,2.2650,-604.400,-13.800,-1.000,604.400,13.800,-1.000,2.567e+05 +2025,69.264706,10,603.100,64.500,2.1560,-602.800,-18.700,8.700,602.800,18.700,8.700,2.520e+05 +2025,69.621820,10,540.000,62.000,3.1410,-538.800,15.400,33.000,538.800,-15.400,33.000,2.328e+05 +2025,69.751058,10,503.600,56.000,2.8080,-502.000,-3.500,39.400,502.000,3.500,39.400,1.900e+05 +2025,69.766194,10,498.000,51.700,2.6590,-497.200,1.100,28.300,497.200,-1.100,28.300,1.619e+05 +2025,69.903400,10,528.900,59.000,2.4340,-527.900,-25.300,-19.300,527.900,25.300,-19.300,2.109e+05 +2025,70.139645,10,516.300,62.200,2.1040,-516.000,-14.700,9.500,516.000,14.700,9.500,2.344e+05 +2025,70.143138,10,508.100,62.900,2.1320,-507.800,-16.000,-4.900,507.800,16.000,-4.900,2.397e+05 +2025,70.168680,10,489.600,59.300,2.2370,-488.600,-28.600,-13.400,488.600,28.600,-13.400,2.130e+05 +2025,70.179123,10,498.200,57.000,2.1950,-497.500,-24.500,-6.200,497.500,24.500,-6.200,1.968e+05 +2025,70.246653,10,473.300,63.000,2.2800,-472.200,-29.300,12.400,472.200,29.300,12.400,2.404e+05 +2025,70.359481,10,526.600,51.200,1.9010,-525.300,-19.600,30.100,525.300,19.600,30.100,1.588e+05 +2025,70.360646,10,514.100,54.800,1.9930,-512.000,-29.100,37.400,512.000,29.100,37.400,1.819e+05 +2025,70.366431,10,512.300,55.900,2.0390,-511.300,-30.000,-11.300,511.300,30.000,-11.300,1.893e+05 +2025,70.367595,10,502.600,64.500,2.5680,-501.300,-20.400,-29.100,501.300,20.400,-29.100,2.520e+05 +2025,70.403689,10,495.000,56.000,1.8850,-491.100,-39.500,48.300,491.100,39.500,48.300,1.900e+05 +2025,70.613155,10,438.900,56.400,2.3220,-435.600,-51.900,-12.100,435.600,51.900,-12.100,1.927e+05 +2025,70.618940,10,472.900,61.800,2.7380,-469.000,-34.000,50.800,469.000,34.000,50.800,2.313e+05 +2025,70.624761,10,440.500,52.900,2.7560,-438.500,-33.900,25.200,438.500,33.900,25.200,1.695e+05 +2025,70.649139,10,456.200,51.600,2.1180,-452.200,-48.200,37.100,452.200,48.200,37.100,1.613e+05 +2025,71.942681,10,558.300,49.100,5.0630,-556.700,-18.800,-36.900,556.700,18.800,-36.900,1.460e+05 +2025,71.956652,10,552.400,44.000,4.4750,-551.800,-26.100,-8.100,551.800,26.100,-8.100,1.173e+05 +2025,71.972916,10,555.700,47.000,4.8180,-555.000,-16.800,-22.200,555.000,16.800,-22.200,1.338e+05 +2025,71.985724,10,559.300,45.400,5.1910,-558.300,-18.300,-29.100,558.300,18.300,-29.100,1.249e+05 +2025,72.093858,10,531.800,56.300,5.8110,-531.200,2.300,-25.400,531.200,-2.300,-25.400,1.920e+05 +2025,72.115943,10,565.700,48.900,5.5590,-565.000,-9.500,-26.900,565.000,9.500,-26.900,1.448e+05 +2025,72.133481,10,561.800,59.000,5.4390,-561.600,-13.800,9.100,561.600,13.800,9.100,2.109e+05 +2025,72.148616,10,561.600,52.600,6.1680,-560.400,1.700,-37.900,560.400,-1.700,-37.900,1.676e+05 +2025,72.152109,10,569.400,53.400,5.2110,-568.500,1.000,-31.500,568.500,-1.000,-31.500,1.727e+05 +2025,72.204357,10,536.600,48.000,5.1080,-535.600,-3.300,32.700,535.600,3.300,32.700,1.396e+05 +2025,72.251948,10,547.000,46.900,5.3290,-544.900,-5.400,-47.100,544.900,5.400,-47.100,1.332e+05 +2025,72.361320,10,511.300,45.100,6.1110,-509.700,12.000,-39.800,509.700,-12.000,-39.800,1.232e+05 +2025,72.374164,10,508.800,43.800,5.4250,-507.700,-25.000,21.900,507.700,25.000,21.900,1.162e+05 +2025,72.378821,10,550.100,54.800,5.3360,-549.000,-34.100,-0.800,549.000,34.100,-0.800,1.819e+05 +2025,72.385843,10,507.100,47.100,5.8400,-506.600,-23.100,5.500,506.600,23.100,5.500,1.344e+05 +2025,72.396322,10,508.600,43.400,5.7480,-507.600,-24.500,20.700,507.600,24.500,20.700,1.141e+05 +2025,72.403308,10,523.000,46.100,5.6290,-520.900,9.200,-45.800,520.900,-9.200,-45.800,1.287e+05 +2025,72.404472,10,528.500,48.500,5.6980,-527.100,-13.300,-36.800,527.100,13.300,-36.800,1.425e+05 +2025,72.417207,10,531.100,48.700,5.7110,-527.900,21.400,-53.500,527.900,-21.400,-53.500,1.437e+05 +2025,72.419535,10,530.600,52.300,6.3670,-528.900,-10.100,41.400,528.900,10.100,41.400,1.657e+05 +2025,72.434635,10,522.600,47.300,5.2210,-521.800,-17.000,-24.900,521.800,17.000,-24.900,1.355e+05 +2025,72.438092,10,530.500,48.500,6.0900,-528.200,20.800,-44.700,528.200,-20.800,-44.700,1.425e+05 +2025,72.456720,10,541.100,47.800,7.0050,-539.300,-10.400,-42.100,539.300,10.400,-42.100,1.384e+05 +2025,72.482372,10,557.600,46.900,6.1560,-554.900,21.000,-50.100,554.900,-21.000,-50.100,1.332e+05 +2025,72.491686,10,533.600,48.900,6.6560,-532.800,-28.600,-6.600,532.800,28.600,-6.600,1.448e+05 +2025,72.494015,10,527.200,45.900,6.1370,-525.700,-15.300,-37.100,525.700,15.300,-37.100,1.276e+05 +2025,72.520685,10,515.900,49.200,6.2600,-514.100,7.600,41.600,514.100,-7.600,41.600,1.466e+05 +2025,72.536948,10,521.800,44.700,5.4750,-520.200,-10.700,39.600,520.200,10.700,39.600,1.210e+05 +2025,72.538113,10,524.500,46.700,6.2320,-523.200,-19.500,31.500,523.200,19.500,31.500,1.321e+05 +2025,72.542770,10,514.600,47.700,6.8070,-513.800,-15.400,23.700,513.800,15.400,23.700,1.378e+05 +2025,72.543934,10,528.700,48.600,6.3070,-527.200,-22.200,32.600,527.200,22.200,32.600,1.431e+05 +2025,72.595127,10,495.400,49.300,5.3150,-495.400,-2.500,-1.800,495.400,2.500,-1.800,1.472e+05 +2025,72.625327,10,532.400,46.900,6.7710,-530.900,-22.800,32.600,530.900,22.800,32.600,1.332e+05 +2025,72.802119,10,537.300,45.600,4.9310,-535.600,-1.700,-42.200,535.600,1.700,-42.200,1.260e+05 +2025,72.844034,10,535.200,49.600,5.8290,-534.600,-23.300,-5.400,534.600,23.300,-5.400,1.490e+05 +2025,72.925499,10,544.300,49.800,5.1290,-540.400,22.800,-60.600,540.400,-22.800,-60.600,1.502e+05 +2025,73.015078,10,549.600,51.100,5.5020,-548.300,-9.200,-36.300,548.300,9.200,-36.300,1.582e+05 +2025,73.018571,10,555.400,49.800,5.2920,-552.500,18.600,-53.100,552.500,-18.600,-53.100,1.502e+05 +2025,73.064998,10,551.000,54.900,5.2980,-550.700,-16.500,6.800,550.700,16.500,6.800,1.826e+05 +2025,73.079006,10,525.600,55.500,4.5600,-525.100,12.500,-16.700,525.100,-12.500,-16.700,1.866e+05 +2025,73.098835,10,544.200,54.000,5.3240,-543.900,-16.400,-6.800,543.900,16.400,-6.800,1.766e+05 +2025,73.124414,10,538.300,53.100,5.7100,-538.100,-7.200,14.400,538.100,7.200,14.400,1.708e+05 +2025,73.137185,10,543.000,50.100,5.3730,-542.600,-11.300,19.200,542.600,11.300,19.200,1.520e+05 +2025,73.149956,10,537.900,56.100,6.4530,-536.300,19.600,36.400,536.300,-19.600,36.400,1.906e+05 +2025,73.231421,10,519.500,47.200,5.7610,-519.200,-9.900,12.900,519.200,9.900,12.900,1.349e+05 +2025,73.316414,10,569.700,55.200,4.1880,-567.400,12.300,-49.700,567.400,-12.300,-49.700,1.846e+05 +2025,73.319907,10,545.400,55.500,4.4040,-541.600,38.500,50.800,541.600,-38.500,50.800,1.866e+05 +2025,73.333842,10,531.700,52.800,4.4570,-531.300,-3.600,20.400,531.300,3.600,20.400,1.689e+05 +2025,73.376921,10,555.100,53.800,4.4740,-554.300,-4.700,28.700,554.300,4.700,28.700,1.753e+05 +2025,73.378086,10,556.200,50.100,4.1370,-555.900,-9.200,13.600,555.900,9.200,13.600,1.520e+05 +2025,73.399043,10,544.400,51.400,4.3770,-543.900,-2.100,-23.400,543.900,2.100,-23.400,1.600e+05 +2025,73.429242,10,580.400,50.600,4.4560,-576.400,50.300,-45.600,576.400,-50.300,-45.600,1.551e+05 +2025,73.436192,10,563.200,45.900,4.1710,-559.800,37.300,-49.600,559.800,-37.300,-49.600,1.276e+05 +2025,73.455949,10,534.300,52.100,4.1220,-533.500,19.600,21.000,533.500,-19.600,21.000,1.644e+05 +2025,73.481636,10,560.000,49.200,4.2020,-559.800,12.900,10.400,559.800,-12.900,10.400,1.466e+05 +2025,73.551349,10,598.900,54.600,4.9260,-597.500,28.400,-30.600,597.500,-28.400,-30.600,1.806e+05 +2025,73.558371,10,576.400,54.700,5.1330,-575.400,14.300,-30.100,575.400,-14.300,-30.100,1.812e+05 +2025,73.570051,10,559.100,57.000,5.2640,-558.900,6.800,-13.100,558.900,-6.800,-13.100,1.968e+05 +2025,73.584059,10,566.500,56.500,5.0070,-564.700,28.600,-34.700,564.700,-28.600,-34.700,1.934e+05 +2025,73.594537,10,561.700,53.400,4.4310,-560.300,22.000,-33.200,560.300,-22.000,-33.200,1.727e+05 +2025,73.600359,10,560.200,52.000,4.7230,-560.100,-2.700,-11.600,560.100,2.700,-11.600,1.638e+05 +2025,73.606144,10,577.000,52.500,4.8620,-576.700,-9.600,17.800,576.700,9.600,17.800,1.670e+05 +2025,73.678294,10,560.300,52.500,4.9030,-559.200,18.000,30.100,559.200,-18.000,30.100,1.670e+05 +2025,73.695758,10,545.100,57.700,4.6030,-544.700,15.800,13.300,544.700,-15.800,13.300,2.017e+05 +2025,73.791122,10,560.000,51.400,5.7120,-556.100,50.300,-43.800,556.100,-50.300,-43.800,1.600e+05 +2025,73.798108,10,553.800,47.900,4.6410,-551.200,28.600,-45.100,551.200,-28.600,-45.100,1.390e+05 +2025,73.799235,10,564.900,47.000,4.8580,-563.000,7.600,-46.600,563.000,-7.600,-46.600,1.338e+05 +2025,73.800400,10,566.900,48.100,4.8710,-566.400,-15.200,-17.700,566.400,15.200,-17.700,1.401e+05 +2025,73.829435,10,578.600,47.000,4.5140,-575.700,29.900,-50.100,575.700,-29.900,-50.100,1.338e+05 +2025,73.832927,10,537.900,50.000,4.7370,-537.700,7.700,9.700,537.700,-7.700,9.700,1.514e+05 +2025,73.836420,10,537.600,48.100,4.3850,-535.400,36.900,31.600,535.400,-36.900,31.600,1.401e+05 +2025,73.895764,10,527.200,54.400,3.8740,-526.900,18.500,2.000,526.900,-18.500,2.000,1.793e+05 +2025,73.905042,10,535.900,49.100,4.8320,-532.800,46.900,-33.400,532.800,-46.900,-33.400,1.460e+05 +2025,73.936441,10,531.500,47.500,4.4370,-531.000,0.100,22.100,531.000,-0.100,22.100,1.367e+05 +2025,73.942227,10,540.200,49.800,4.7830,-539.900,-16.100,-10.600,539.900,16.100,-10.600,1.502e+05 +2025,73.950377,10,521.600,50.000,4.3890,-521.500,-0.000,3.500,521.500,0.000,3.500,1.514e+05 +2025,73.962020,10,545.000,51.600,4.5630,-544.000,3.200,-33.900,544.000,-3.200,-33.900,1.613e+05 +2025,73.970134,10,565.200,51.500,4.0380,-564.300,-14.700,-28.500,564.300,14.700,-28.500,1.607e+05 +2025,73.994548,10,516.700,52.200,4.6790,-514.500,46.400,8.100,514.500,-46.400,8.100,1.651e+05 +2025,74.014377,10,527.600,48.900,4.6490,-524.000,56.700,-23.100,524.000,-56.700,-23.100,1.448e+05 +2025,74.015541,10,535.500,48.100,4.3740,-531.100,63.000,-28.500,531.100,-63.000,-28.500,1.401e+05 +2025,74.030677,10,516.300,50.500,4.0320,-513.700,52.100,5.600,513.700,-52.100,5.600,1.545e+05 +2025,74.096934,10,518.400,44.900,3.3280,-518.200,-14.500,0.100,518.200,14.500,0.100,1.221e+05 +2025,74.145798,10,542.500,44.800,3.7260,-541.800,-16.200,-21.600,541.800,16.200,-21.600,1.216e+05 +2025,74.148127,10,544.900,45.900,3.4540,-544.300,-17.800,-16.900,544.300,17.800,-16.900,1.276e+05 +2025,74.468056,10,533.000,48.300,2.6980,-532.800,2.700,16.300,532.800,-2.700,16.300,1.413e+05 +2025,74.492543,10,564.800,48.300,2.8970,-563.900,-17.400,-26.700,563.900,17.400,-26.700,1.413e+05 +2025,74.601842,10,545.900,43.800,2.6830,-545.100,-11.200,-28.900,545.100,11.200,-28.900,1.162e+05 +2025,74.663405,10,540.400,47.400,2.7650,-539.000,36.800,12.800,539.000,-36.800,12.800,1.361e+05 +2025,74.698261,10,526.100,37.600,2.8860,-524.300,39.300,20.500,524.300,-39.300,20.500,8.564e+04 +2025,74.718054,10,528.700,37.200,2.6490,-527.200,24.600,31.600,527.200,-24.600,31.600,8.382e+04 +2025,74.726241,10,522.300,40.200,2.8900,-520.400,33.700,28.700,520.400,-33.700,28.700,9.789e+04 +2025,74.735555,10,525.900,37.500,2.8470,-524.200,31.200,30.100,524.200,-31.200,30.100,8.518e+04 +2025,75.281176,10,447.600,35.600,3.2650,-446.800,-12.800,-23.700,446.800,12.800,-23.700,7.677e+04 +2025,75.283505,10,446.100,37.200,3.0160,-445.900,-8.600,-11.200,445.900,8.600,-11.200,8.382e+04 +2025,75.294020,10,454.600,35.200,3.8120,-454.200,-7.800,-16.400,454.200,7.800,-16.400,7.505e+04 +2025,75.333570,10,448.600,32.700,4.0640,-447.800,-8.300,-25.600,447.800,8.300,-25.600,6.477e+04 +2025,75.361404,10,457.800,34.100,3.7880,-457.100,-7.200,-24.900,457.100,7.200,-24.900,7.044e+04 +2025,75.384690,10,436.300,29.600,3.8370,-435.700,-15.500,-17.600,435.700,15.500,-17.600,5.307e+04 +2025,75.388183,10,434.200,31.100,3.6220,-433.700,-10.400,-18.600,433.700,10.400,-18.600,5.859e+04 +2025,75.512546,10,424.000,28.200,3.7840,-422.800,1.400,31.400,422.800,-1.400,31.400,4.817e+04 +2025,75.539325,10,437.100,30.000,4.4490,-436.600,-16.400,-13.100,436.600,16.400,-13.100,5.452e+04 +2025,75.540489,10,447.900,32.800,4.3140,-447.500,-15.100,-12.800,447.500,15.100,-12.800,6.517e+04 +2025,75.542854,10,441.400,29.200,4.1240,-440.300,-2.800,-32.000,440.300,2.800,-32.000,5.165e+04 +2025,75.555661,10,428.400,30.200,4.2760,-427.500,-10.200,-25.100,427.500,10.200,-25.100,5.525e+04 +2025,75.567304,10,425.700,28.800,4.1590,-424.800,-8.800,-27.000,424.800,8.800,-27.000,5.024e+04 +2025,75.583568,10,422.900,28.000,4.2650,-421.400,23.000,27.400,421.400,-23.000,27.400,4.749e+04 +2025,75.584733,10,424.100,27.900,4.3500,-422.800,21.500,25.800,422.800,-21.500,25.800,4.715e+04 +2025,75.587025,10,422.700,28.100,4.3410,-421.200,20.200,29.000,421.200,-20.200,29.000,4.783e+04 +2025,75.609074,10,411.200,29.000,4.6110,-410.500,1.700,23.700,410.500,-1.700,23.700,5.094e+04 +2025,75.617224,10,407.500,31.000,4.1750,-407.200,-4.400,13.800,407.200,4.400,13.800,5.821e+04 +2025,75.631232,10,413.700,30.300,4.3520,-413.400,-14.800,2.400,413.400,14.800,2.400,5.561e+04 +2025,75.635889,10,419.600,29.700,4.1960,-419.200,-15.500,9.100,419.200,15.500,9.100,5.343e+04 +2025,75.648733,10,416.100,28.300,4.3460,-415.500,-13.600,18.600,415.500,13.600,18.600,4.851e+04 +2025,75.651061,10,417.700,28.700,4.2400,-417.200,-19.700,6.100,417.200,19.700,6.100,4.989e+04 +2025,75.653390,10,414.700,28.800,4.3800,-414.000,-13.600,19.100,414.000,13.600,19.100,5.024e+04 +2025,75.667325,10,416.300,27.200,4.2420,-415.500,-21.200,13.500,415.500,21.200,13.500,4.481e+04 +2025,75.668489,10,415.900,27.400,4.0750,-415.100,-18.400,16.900,415.100,18.400,16.900,4.548e+04 +2025,75.670818,10,415.900,28.100,4.3910,-415.400,-19.600,-1.400,415.400,19.600,-1.400,4.783e+04 +2025,75.671982,10,417.000,29.400,4.8560,-416.500,-8.900,19.200,416.500,8.900,19.200,5.236e+04 +2025,75.681260,10,424.800,30.600,4.7270,-423.900,0.900,27.600,423.900,-0.900,27.600,5.672e+04 +2025,75.700981,10,419.300,30.100,4.4620,-419.000,-5.600,16.100,419.000,5.600,16.100,5.488e+04 +2025,75.712623,10,409.200,31.200,4.5330,-408.900,-9.400,10.400,408.900,9.400,10.400,5.896e+04 +2025,75.728924,10,422.900,31.500,4.3710,-422.400,-14.000,-16.200,422.400,14.000,-16.200,6.010e+04 +2025,75.750936,10,422.800,32.300,4.3690,-422.200,-4.600,21.500,422.200,4.600,21.500,6.320e+04 +2025,75.755593,10,418.500,29.300,4.0280,-418.100,-12.600,12.400,418.100,12.600,12.400,5.200e+04 +2025,75.787029,10,410.400,28.300,4.6260,-408.700,18.400,-32.900,408.700,-18.400,-32.900,4.851e+04 +2025,75.791687,10,405.800,31.200,3.3890,-405.500,-8.100,-14.200,405.500,8.100,-14.200,5.896e+04 +2025,75.794015,10,416.800,30.000,4.2060,-416.400,-17.700,-4.400,416.400,17.700,-4.400,5.452e+04 +2025,75.795179,10,413.200,29.000,4.6890,-412.900,-15.200,1.000,412.900,15.200,1.000,5.094e+04 +2025,75.807987,10,409.100,27.400,4.5680,-407.900,5.000,-30.700,407.900,-5.000,-30.700,4.548e+04 +2025,75.812644,10,409.000,30.700,4.9240,-408.100,-0.000,-27.600,408.100,0.000,-27.600,5.709e+04 +2025,75.845135,10,420.400,30.000,5.3560,-419.700,-6.100,22.500,419.700,6.100,22.500,5.452e+04 +2025,75.859071,10,426.700,27.700,4.8530,-425.900,-5.700,24.600,425.900,5.700,24.600,4.648e+04 +2025,75.862563,10,435.900,29.800,5.0920,-435.200,-17.300,17.900,435.200,17.300,17.900,5.379e+04 +2025,75.912629,10,417.300,30.000,5.8060,-416.200,2.200,-29.900,416.200,-2.200,-29.900,5.452e+04 +2025,75.917286,10,413.600,28.700,5.4630,-412.700,1.500,-27.000,412.700,-1.500,-27.000,4.989e+04 +2025,75.926564,10,399.800,28.800,5.1680,-399.300,-5.700,-19.100,399.300,5.700,-19.100,5.024e+04 +2025,75.934714,10,402.100,29.100,5.2790,-401.800,-10.500,-12.200,401.800,10.500,-12.200,5.129e+04 +2025,75.945156,10,394.400,29.700,5.3040,-394.100,-4.500,-13.100,394.100,4.500,-13.100,5.343e+04 +2025,75.970807,10,419.300,27.000,5.1090,-418.600,-17.900,-17.200,418.600,17.900,-17.200,4.416e+04 +2025,75.971972,10,411.600,28.500,5.5810,-410.700,-10.400,-24.300,410.700,10.400,-24.300,4.920e+04 +2025,75.974300,10,414.900,26.700,5.3470,-414.300,-13.900,-19.100,414.300,13.900,-19.100,4.318e+04 +2025,75.984815,10,403.300,27.300,5.4070,-402.500,-3.000,-26.100,402.500,3.000,-26.100,4.515e+04 +2025,75.998787,10,402.500,27.500,5.4440,-401.900,-4.100,-22.300,401.900,4.100,-22.300,4.581e+04 +2025,76.019708,10,395.400,27.300,4.9740,-395.100,-12.900,6.300,395.100,12.900,6.300,4.515e+04 +2025,76.024365,10,398.300,27.300,5.3590,-398.000,-17.400,-2.900,398.000,17.400,-2.900,4.515e+04 +2025,76.025530,10,399.400,26.600,5.0500,-399.000,-18.100,1.000,399.000,18.100,1.000,4.286e+04 +2025,76.027822,10,397.100,27.400,5.3100,-396.700,-16.800,-1.800,396.700,16.800,-1.800,4.548e+04 +2025,76.055729,10,400.900,29.500,5.4740,-400.300,-9.600,20.000,400.300,9.600,20.000,5.271e+04 +2025,76.080216,10,398.300,27.600,5.5330,-397.400,-25.200,-6.200,397.400,25.200,-6.200,4.614e+04 +2025,76.087238,10,406.900,28.200,5.5930,-406.100,-22.400,-13.500,406.100,22.400,-13.500,4.817e+04 +2025,76.122094,10,391.400,32.800,4.6120,-391.000,-11.500,12.600,391.000,11.500,12.600,6.517e+04 +2025,76.123258,10,395.900,28.900,6.3650,-394.900,-17.700,22.500,394.900,17.700,22.500,5.059e+04 +2025,76.137194,10,412.100,25.500,5.7640,-411.600,-19.600,-5.600,411.600,19.600,-5.600,3.939e+04 +2025,76.165137,10,411.500,29.300,6.6260,-410.800,-11.500,-21.400,410.800,11.500,-21.400,5.200e+04 +2025,76.166301,10,409.300,28.500,5.4690,-408.600,-17.400,-15.800,408.600,17.400,-15.800,4.920e+04 +2025,76.172159,10,399.800,28.200,6.1200,-399.200,-19.700,-10.700,399.200,19.700,-10.700,4.817e+04 +2025,76.174488,10,377.700,27.300,5.6900,-376.700,-9.400,25.900,376.700,9.400,25.900,4.515e+04 +2025,76.179145,10,389.100,26.200,5.9180,-388.500,-21.900,3.600,388.500,21.900,3.600,4.158e+04 +2025,76.180309,10,385.400,26.800,6.0920,-384.800,-20.100,6.700,384.800,20.100,6.700,4.351e+04 +2025,76.196646,10,408.500,26.500,6.2850,-407.800,-18.700,-15.700,407.800,18.700,-15.700,4.254e+04 +2025,76.204796,10,405.400,27.500,6.6690,-404.600,-20.400,-15.300,404.600,20.400,-15.300,4.581e+04 +2025,76.207088,10,405.100,26.700,6.3760,-404.300,-10.100,-23.100,404.300,10.100,-23.100,4.318e+04 +2025,76.223352,10,396.000,28.500,5.7540,-395.100,-23.800,-13.100,395.100,23.800,-13.100,4.920e+04 +2025,76.239580,10,388.200,26.000,5.4820,-387.200,-18.700,-20.100,387.200,18.700,-20.100,4.095e+04 +2025,76.266359,10,389.900,32.800,6.9820,-389.000,-19.200,20.100,389.000,19.200,20.100,6.517e+04 +2025,76.267523,10,393.500,34.300,7.4260,-392.200,-18.800,25.900,392.200,18.800,25.900,7.126e+04 +2025,76.298959,10,381.100,31.300,6.6840,-380.700,-17.600,-2.900,380.700,17.600,-2.900,5.934e+04 +2025,76.316351,10,381.200,33.700,6.9880,-380.700,-6.800,-17.700,380.700,6.800,-17.700,6.879e+04 +2025,76.321008,10,399.900,30.600,7.2230,-399.000,0.100,-26.800,399.000,-0.100,-26.800,5.672e+04 +2025,76.327958,10,391.200,32.900,7.3620,-390.200,-28.100,-3.200,390.200,28.100,-3.200,6.557e+04 +2025,76.333779,10,389.200,30.000,6.4020,-388.100,-27.200,-10.000,388.100,27.200,-10.000,5.452e+04 +2025,76.336108,10,385.000,34.200,7.5310,-384.100,-24.900,-5.100,384.100,24.900,-5.100,7.085e+04 +2025,76.390830,10,393.800,35.000,7.9360,-393.400,3.000,17.200,393.400,-3.000,17.200,7.420e+04 +2025,76.391994,10,390.600,35.600,7.5960,-390.500,-1.200,12.300,390.500,1.200,12.300,7.677e+04 +2025,76.394323,10,395.800,36.200,8.1290,-395.400,-15.500,9.400,395.400,15.500,9.400,7.938e+04 +2025,76.398980,10,390.300,42.000,8.6510,-390.000,-12.900,-2.500,390.000,12.900,-2.500,1.069e+05 +2025,76.408258,10,410.600,32.400,7.3790,-409.800,-25.200,-3.100,409.800,25.200,-3.100,6.359e+04 +2025,76.416371,10,405.100,32.700,8.0660,-404.700,-14.600,9.000,404.700,14.600,9.000,6.477e+04 +2025,76.423357,10,404.400,32.000,7.4050,-403.800,-21.200,-9.100,403.800,21.200,-9.100,6.203e+04 +2025,76.440822,10,391.800,32.800,7.4340,-391.300,-17.400,4.300,391.300,17.400,4.300,6.517e+04 +2025,76.445479,10,388.500,35.600,7.5710,-388.200,-2.300,14.000,388.200,2.300,14.000,7.677e+04 +2025,76.455994,10,401.900,29.500,7.5310,-401.300,-16.900,-13.400,401.300,16.900,-13.400,5.271e+04 +2025,76.466509,10,405.600,28.800,7.3600,-405.200,-17.500,2.300,405.200,17.500,2.300,5.024e+04 +2025,76.473495,10,405.900,29.100,7.3720,-405.600,-15.600,3.200,405.600,15.600,3.200,5.129e+04 +2025,76.495544,10,401.200,32.100,8.8270,-400.900,-3.900,16.500,400.900,3.900,16.500,6.242e+04 +2025,76.515264,10,408.300,30.100,7.8100,-407.500,-13.900,-20.500,407.500,13.900,-20.500,5.488e+04 +2025,76.522250,10,407.400,30.500,7.8850,-406.800,-16.400,-14.300,406.800,16.400,-14.300,5.635e+04 +2025,76.524578,10,404.400,28.900,7.3410,-403.700,-20.800,-11.900,403.700,20.800,-11.900,5.059e+04 +2025,76.536221,10,406.100,32.700,7.7420,-405.700,-15.300,-6.700,405.700,15.300,-6.700,6.477e+04 +2025,76.550157,10,402.100,33.700,8.6480,-401.600,-19.800,-1.000,401.600,19.800,-1.000,6.879e+04 +2025,76.559471,10,396.000,37.600,7.8520,-395.400,-11.100,-18.400,395.400,11.100,-18.400,8.564e+04 +2025,76.561800,10,402.500,35.300,8.7370,-402.100,-10.600,-15.000,402.100,10.600,-15.000,7.548e+04 +2025,76.568749,10,396.000,32.500,7.8400,-395.700,-8.000,-13.400,395.700,8.000,-13.400,6.398e+04 +2025,76.573406,10,388.200,33.100,7.7190,-387.900,-11.200,-11.300,387.900,11.200,-11.300,6.637e+04 +2025,76.583849,10,394.400,34.000,7.9000,-393.600,-0.900,-24.000,393.600,0.900,-24.000,7.002e+04 +2025,76.594291,10,397.000,29.300,6.9160,-396.400,-11.900,-19.200,396.400,11.900,-19.200,5.200e+04 +2025,76.615321,10,378.600,32.700,7.5280,-378.100,-20.000,-3.900,378.100,20.000,-3.900,6.477e+04 +2025,76.654908,10,377.900,37.400,8.3650,-377.600,6.900,12.900,377.600,-6.900,12.900,8.473e+04 +2025,76.669971,10,377.200,39.000,8.2630,-377.200,-0.700,7.800,377.200,0.700,7.800,9.213e+04 +2025,76.680413,10,385.000,40.400,8.8100,-384.800,-6.800,-9.900,384.800,6.800,-9.900,9.887e+04 +2025,76.686235,10,391.100,41.400,9.1980,-390.900,-13.500,1.700,390.900,13.500,1.700,1.038e+05 +2025,76.694385,10,402.000,38.500,8.9060,-401.400,-20.000,6.000,401.400,20.000,6.000,8.979e+04 +2025,76.695549,10,402.800,38.800,9.2570,-402.400,-18.300,3.400,402.400,18.300,3.400,9.119e+04 +2025,76.722364,10,388.600,38.500,8.6900,-388.100,-16.100,12.600,388.100,16.100,12.600,8.979e+04 +2025,76.727022,10,391.100,38.100,9.5170,-390.600,-8.100,19.400,390.600,8.100,19.400,8.793e+04 +2025,76.736300,10,404.300,43.000,9.3170,-404.000,-12.100,-9.600,404.000,12.100,-9.600,1.120e+05 +2025,76.765298,10,394.300,42.400,9.8700,-394.000,-11.700,8.100,394.000,11.700,8.100,1.089e+05 +2025,76.768791,10,384.300,39.800,9.7240,-384.200,-10.400,2.600,384.200,10.400,2.600,9.595e+04 +2025,76.772284,10,390.600,39.100,9.4760,-390.400,-12.600,-5.200,390.400,12.600,-5.200,9.261e+04 +2025,76.780434,10,392.700,40.800,9.3510,-392.400,-3.000,-13.300,392.400,3.000,-13.300,1.008e+05 +2025,76.799063,10,383.800,37.500,8.9530,-383.800,-6.000,3.100,383.800,6.000,3.100,8.518e+04 +2025,76.806085,10,384.700,34.700,7.3750,-383.900,-23.900,-5.600,383.900,23.900,-5.600,7.294e+04 +2025,76.828171,10,381.200,35.400,9.2330,-380.700,0.600,20.000,380.700,-0.600,20.000,7.591e+04 +2025,76.840942,10,384.100,36.500,9.0300,-383.600,12.900,16.500,383.600,-12.900,16.500,8.070e+04 +2025,76.859498,10,396.800,34.900,8.3950,-395.700,20.000,22.100,395.700,-20.000,22.100,7.378e+04 +2025,76.868812,10,389.500,32.100,8.3870,-388.900,-1.400,22.200,388.900,1.400,22.200,6.242e+04 +2025,76.873469,10,384.800,36.000,8.9860,-384.000,-6.700,24.600,384.000,6.700,24.600,7.850e+04 +2025,76.882784,10,389.200,39.600,9.0400,-389.100,-5.500,6.500,389.100,5.500,6.500,9.499e+04 +2025,76.901340,10,384.800,37.500,7.6740,-384.200,-10.900,-18.000,384.200,10.900,-18.000,8.518e+04 +2025,76.931538,10,395.700,35.000,8.1160,-395.000,-24.200,-1.700,395.000,24.200,-1.700,7.420e+04 +2025,76.956025,10,381.600,34.000,7.5900,-380.700,-16.700,19.100,380.700,16.700,19.100,7.002e+04 +2025,77.008309,10,374.900,34.800,7.4940,-374.800,-9.800,2.700,374.800,9.800,2.700,7.336e+04 +2025,77.043275,10,398.700,27.200,7.5200,-398.200,-18.800,1.100,398.200,18.800,1.100,4.481e+04 +2025,77.046767,10,398.700,31.500,8.0570,-398.300,-16.000,-9.500,398.300,16.000,-9.500,6.010e+04 +2025,77.050260,10,402.600,29.000,7.7820,-401.900,-20.500,-12.300,401.900,20.500,-12.300,5.094e+04 +2025,77.060775,10,395.900,29.100,7.6260,-394.600,-21.000,-23.800,394.600,21.000,-23.800,5.129e+04 +2025,77.061940,10,388.000,32.600,8.0320,-386.900,-17.800,-22.100,386.900,17.800,-22.100,6.438e+04 +2025,77.090975,10,397.800,27.700,7.6110,-397.100,-17.500,-16.100,397.100,17.500,-16.100,4.648e+04 +2025,77.108366,10,389.000,30.600,7.9120,-388.300,-17.900,-14.100,388.300,17.900,-14.100,5.672e+04 +2025,77.124667,10,395.300,28.500,7.8210,-394.700,-19.500,-9.000,394.700,19.500,-9.000,4.920e+04 +2025,77.128159,10,400.000,29.200,7.9770,-399.400,-21.700,-6.500,399.400,21.700,-6.500,5.165e+04 +2025,77.140930,10,400.000,25.900,7.4600,-399.300,-23.300,-5.300,399.300,23.300,-5.300,4.063e+04 +2025,77.166472,10,398.300,28.100,7.8800,-397.600,-18.800,-14.200,397.600,18.800,-14.200,4.783e+04 +2025,77.187393,10,405.300,28.100,7.7590,-404.600,-14.100,-19.300,404.600,14.100,-19.300,4.783e+04 +2025,77.276972,10,415.000,27.600,6.2210,-413.800,-16.800,-26.300,413.800,16.800,-26.300,4.614e+04 +2025,77.281629,10,388.600,30.900,6.4680,-387.900,-23.400,-1.700,387.900,23.400,-1.700,5.784e+04 +2025,77.466644,10,410.800,38.100,5.3110,-409.500,-30.500,-10.100,409.500,30.500,-10.100,8.793e+04 +2025,77.602868,10,376.200,40.000,5.0160,-375.500,18.300,14.400,375.500,-18.300,14.400,9.692e+04 +2025,77.640017,10,421.900,38.200,7.1640,-419.900,-10.300,-39.200,419.900,10.300,-39.200,8.839e+04 +2025,77.659773,10,389.500,54.500,4.9170,-389.400,-8.100,-4.300,389.400,8.100,-4.300,1.799e+05 +2025,77.873896,10,383.800,57.500,0.9810,-378.600,-58.700,-23.300,378.600,58.700,-23.300,2.003e+05 +2025,78.127495,10,429.200,74.500,1.3730,-425.300,-43.100,-38.300,425.300,43.100,-38.300,3.362e+05 +2025,78.150817,10,439.200,65.300,1.9240,-436.100,-2.800,-51.900,436.100,2.800,-51.900,2.583e+05 +2025,78.169482,10,448.800,42.100,2.6560,-446.800,-11.100,-41.400,446.800,11.100,-41.400,1.074e+05 +2025,78.207868,10,444.800,33.500,5.6760,-440.500,-0.600,-61.500,440.500,0.600,-61.500,6.798e+04 +2025,78.245053,10,466.700,40.400,8.1580,-466.000,-21.900,11.800,466.000,21.900,11.800,9.887e+04 +2025,78.246217,10,478.200,40.900,8.3530,-477.000,-9.300,33.000,477.000,9.300,33.000,1.013e+05 +2025,78.253240,10,458.000,50.000,10.4610,-457.000,0.200,-30.200,457.000,-0.200,-30.200,1.514e+05 +2025,78.261390,10,468.400,48.700,9.1980,-466.500,16.900,-39.300,466.500,-16.900,-39.300,1.437e+05 +2025,78.295082,10,443.800,52.200,7.7730,-443.300,20.800,-3.900,443.300,-20.800,-3.900,1.651e+05 +2025,78.314802,10,460.900,50.100,8.3360,-460.400,-7.500,-21.300,460.400,7.500,-21.300,1.520e+05 +2025,78.324116,10,458.400,52.100,9.1520,-458.200,7.100,-11.900,458.200,-7.100,-11.900,1.644e+05 +2025,78.326445,10,466.500,58.500,9.6970,-466.500,1.200,-4.900,466.500,-1.200,-4.900,2.073e+05 +2025,78.331102,10,448.500,52.000,9.1490,-447.600,24.300,-14.600,447.600,-24.300,-14.600,1.638e+05 +2025,78.336924,10,452.600,52.200,8.0080,-452.000,10.600,-20.200,452.000,-10.600,-20.200,1.651e+05 +2025,78.441637,10,462.800,46.300,9.4000,-461.900,14.700,23.700,461.900,-14.700,23.700,1.299e+05 +2025,78.483407,10,467.900,49.600,10.2640,-467.700,6.000,-12.800,467.700,-6.000,-12.800,1.490e+05 +2025,78.497378,10,470.500,49.500,9.9780,-468.800,38.100,13.000,468.800,-38.100,13.000,1.484e+05 +2025,78.502072,10,465.600,48.300,10.2140,-463.300,44.300,10.300,463.300,-44.300,10.300,1.413e+05 +2025,78.524230,10,469.400,50.700,9.4030,-468.700,12.000,21.600,468.700,-12.000,21.600,1.557e+05 +2025,78.570657,10,491.100,47.800,8.3680,-490.900,-12.200,-0.300,490.900,12.200,-0.300,1.384e+05 +2025,78.575314,10,478.600,44.800,7.3490,-478.600,4.100,-0.700,478.600,-4.100,-0.700,1.216e+05 +2025,78.581135,10,485.200,45.500,8.0650,-484.800,2.900,-18.300,484.800,-2.900,-18.300,1.254e+05 +2025,78.593979,10,460.500,46.800,8.5520,-460.300,5.700,-14.100,460.300,-5.700,-14.100,1.327e+05 +2025,78.595143,10,456.200,47.500,9.0820,-456.200,1.300,4.000,456.200,-1.300,4.000,1.367e+05 +2025,78.610316,10,465.000,44.400,7.6740,-464.100,26.500,11.400,464.100,-26.500,11.400,1.194e+05 +2025,78.628981,10,458.400,46.900,8.2650,-457.700,12.700,23.200,457.700,-12.700,23.200,1.332e+05 +2025,78.708044,10,460.700,52.800,7.4540,-458.800,21.500,-36.300,458.800,-21.500,-36.300,1.689e+05 +2025,78.722016,10,484.700,51.200,7.5020,-484.200,7.600,19.200,484.200,-7.600,19.200,1.588e+05 +2025,79.051186,10,472.400,53.200,4.1540,-471.300,25.900,-20.800,471.300,-25.900,-20.800,1.714e+05 +2025,79.102416,10,467.900,44.100,4.0900,-464.500,43.100,-36.800,464.500,-43.100,-36.800,1.178e+05 +2025,79.136071,10,456.600,50.700,4.6620,-455.000,30.100,-23.600,455.000,-30.100,-23.600,1.557e+05 +2025,79.154700,10,454.900,45.500,4.0640,-451.600,45.800,-30.600,451.600,-45.800,-30.600,1.254e+05 +2025,79.159358,10,457.000,42.700,3.5080,-454.600,36.700,-28.700,454.600,-36.700,-28.700,1.104e+05 +2025,79.176786,10,453.200,39.600,3.4570,-451.200,24.000,-35.700,451.200,-24.000,-35.700,9.499e+04 +2025,79.180279,10,451.900,42.300,3.6600,-449.300,23.900,-41.800,449.300,-23.900,-41.800,1.084e+05 +2025,79.204656,10,450.900,40.500,4.8050,-448.800,12.800,-41.700,448.800,-12.800,-41.700,9.936e+04 +2025,79.208113,10,441.700,46.200,4.6810,-440.300,20.200,-29.100,440.300,-20.200,-29.100,1.293e+05 +2025,79.230307,10,442.900,42.700,4.6400,-441.400,5.900,-35.700,441.400,-5.900,-35.700,1.104e+05 +2025,79.236129,10,439.600,45.600,5.0150,-438.100,9.800,-35.000,438.100,-9.800,-35.000,1.260e+05 +2025,79.241950,10,434.500,38.500,4.2820,-433.100,12.200,-32.700,433.100,-12.200,-32.700,8.979e+04 +2025,79.266364,10,428.500,34.900,4.0160,-427.200,10.600,-31.900,427.200,-10.600,-31.900,7.378e+04 +2025,79.296527,10,437.100,44.000,4.8570,-435.800,10.600,-31.800,435.800,-10.600,-31.800,1.173e+05 +2025,79.298856,10,433.700,40.300,4.6000,-432.800,7.100,-27.900,432.800,-7.100,-27.900,9.838e+04 +2025,79.300020,10,435.200,43.500,4.8810,-434.100,10.300,-27.900,434.100,-10.300,-27.900,1.146e+05 +2025,79.304677,10,437.100,43.300,5.1810,-436.300,7.600,-25.600,436.300,-7.600,-25.600,1.136e+05 +2025,79.309334,10,435.800,43.900,5.2530,-434.700,9.000,-29.600,434.700,-9.000,-29.600,1.167e+05 +2025,79.330365,10,431.600,40.900,4.9480,-431.000,8.600,-21.600,431.000,-8.600,-21.600,1.013e+05 +2025,79.331529,10,429.500,42.000,5.1920,-428.900,8.100,-21.000,428.900,-8.100,-21.000,1.069e+05 +2025,79.339679,10,430.300,40.800,5.1380,-429.700,7.400,-21.600,429.700,-7.400,-21.600,1.008e+05 +2025,79.366385,10,414.600,34.100,4.3260,-414.300,11.400,-12.200,414.300,-11.400,-12.200,7.044e+04 +2025,79.377992,10,414.400,34.800,4.5820,-414.000,12.100,-11.800,414.000,-12.100,-11.800,7.336e+04 +2025,79.443266,10,412.800,36.800,5.1780,-412.600,6.500,-9.400,412.600,-6.500,-9.400,8.203e+04 +2025,79.460694,10,409.100,35.700,4.8780,-409.000,-4.700,-10.100,409.000,4.700,-10.100,7.720e+04 +2025,79.481579,10,416.600,35.600,5.9850,-416.500,3.400,-6.000,416.500,-3.400,-6.000,7.677e+04 +2025,79.483871,10,413.500,36.900,5.6140,-413.400,8.000,-4.600,413.400,-8.000,-4.600,8.248e+04 +2025,79.485035,10,414.500,34.400,5.4920,-414.400,6.200,-4.500,414.400,-6.200,-4.500,7.168e+04 +2025,79.489692,10,411.700,35.200,5.5120,-411.600,4.600,-5.400,411.600,-4.600,-5.400,7.505e+04 +2025,79.496678,10,413.800,33.700,5.8860,-413.700,8.100,-4.100,413.700,-8.100,-4.100,6.879e+04 +2025,79.523494,10,413.100,34.200,5.4050,-412.800,-6.800,-12.600,412.800,6.800,-12.600,7.085e+04 +2025,79.529315,10,425.600,34.900,8.5230,-425.500,5.000,-7.300,425.500,-5.000,-7.300,7.378e+04 +2025,79.547908,10,419.700,33.600,7.9980,-419.500,6.400,-12.000,419.500,-6.400,-12.000,6.839e+04 +2025,79.573413,10,403.500,32.400,5.4480,-403.300,1.400,-9.500,403.300,-1.400,-9.500,6.359e+04 +2025,79.576906,10,403.500,33.700,5.7380,-403.300,3.200,-10.500,403.300,-3.200,-10.500,6.879e+04 +2025,79.578070,10,403.000,33.500,5.7940,-402.900,2.800,-10.000,402.900,-2.800,-10.000,6.798e+04 +2025,79.788699,10,379.900,31.400,5.1490,-379.500,0.700,-17.200,379.500,-0.700,-17.200,5.972e+04 +2025,79.792192,10,394.700,27.500,5.5590,-394.300,6.700,-17.000,394.300,-6.700,-17.000,4.581e+04 +2025,79.810893,10,384.200,24.400,4.6640,-383.600,-7.000,-20.500,383.600,7.000,-20.500,3.606e+04 +2025,79.853863,10,369.600,22.500,4.3170,-369.500,-3.600,-8.100,369.500,3.600,-8.100,3.067e+04 +2025,79.861977,10,381.500,26.300,4.7330,-381.300,-4.400,-12.900,381.300,4.400,-12.900,4.190e+04 +2025,79.865470,10,378.500,20.800,3.9060,-378.000,-9.400,-16.000,378.000,9.400,-16.000,2.621e+04 +2025,79.879441,10,380.800,23.700,4.3050,-380.400,-7.700,-15.300,380.400,7.700,-15.300,3.402e+04 +2025,79.896870,10,385.400,25.500,5.1540,-385.300,-3.500,-8.400,385.300,3.500,-8.400,3.939e+04 +2025,79.906184,10,385.100,24.000,6.0350,-384.900,-3.600,-9.700,384.900,3.600,-9.700,3.489e+04 +2025,79.907348,10,385.800,24.700,5.9700,-385.600,-4.300,-10.000,385.600,4.300,-10.000,3.696e+04 +2025,79.918955,10,382.400,25.700,5.5840,-382.200,-7.100,-12.100,382.200,7.100,-12.100,4.001e+04 +2025,79.939840,10,382.100,25.700,5.3700,-381.700,-9.500,-14.200,381.700,9.500,-14.200,4.001e+04 +2025,79.962034,10,377.200,23.800,5.5780,-376.900,-9.300,-12.300,376.900,9.300,-12.300,3.431e+04 +2025,79.970184,10,379.300,22.800,5.5640,-378.900,-8.900,-13.800,378.900,8.900,-13.800,3.149e+04 +2025,79.991142,10,378.500,21.000,5.5800,-378.200,-5.800,-13.900,378.200,5.800,-13.900,2.671e+04 +2025,80.014319,10,375.500,21.300,5.5300,-375.200,-6.500,-12.300,375.200,6.500,-12.300,2.748e+04 +2025,80.016647,10,376.700,21.400,5.7610,-376.500,-7.100,-12.500,376.500,7.100,-12.500,2.774e+04 +2025,80.017811,10,377.600,21.400,5.8360,-377.400,-6.500,-12.000,377.400,6.500,-12.000,2.774e+04 +2025,80.028254,10,375.800,20.700,5.9810,-375.600,-6.100,-12.100,375.600,6.100,-12.100,2.596e+04 +2025,80.030582,10,374.700,21.100,5.9940,-374.400,-6.700,-11.800,374.400,6.700,-11.800,2.697e+04 +2025,80.039897,10,375.400,21.100,6.1400,-375.100,-7.500,-12.100,375.100,7.500,-12.100,2.697e+04 +2025,80.057398,10,374.900,21.000,5.6710,-374.500,-12.900,-12.600,374.500,12.900,-12.600,2.671e+04 +2025,80.062091,10,378.600,21.200,6.1280,-378.400,-6.400,-7.600,378.400,6.400,-7.600,2.722e+04 +2025,80.063256,10,379.600,20.500,6.5750,-379.500,-5.900,-8.500,379.500,5.900,-8.500,2.546e+04 +2025,80.066749,10,380.200,19.500,6.7640,-380.000,-6.400,-7.800,380.000,6.400,-7.800,2.303e+04 +2025,80.069077,10,380.800,18.800,6.5100,-380.700,-5.700,-8.300,380.700,5.700,-8.300,2.141e+04 +2025,80.070241,10,382.400,18.400,6.9360,-382.200,-5.000,-9.000,382.200,5.000,-9.000,2.051e+04 +2025,80.072570,10,383.200,18.700,7.3420,-383.000,-6.000,-8.500,383.000,6.000,-8.500,2.118e+04 +2025,80.109719,10,427.700,36.800,18.7750,-425.800,-19.000,-34.900,425.800,19.000,-34.900,8.203e+04 +2025,80.169171,10,420.900,24.600,23.2280,-417.100,-21.700,-52.000,417.100,21.700,-52.000,3.666e+04 +2025,80.184270,10,418.600,32.600,20.3110,-415.000,-22.900,-49.500,415.000,22.900,-49.500,6.438e+04 +2025,80.188928,10,418.900,34.200,21.9040,-414.800,-28.900,-50.300,414.800,28.900,-50.300,7.085e+04 +2025,80.191256,10,419.400,33.900,20.8470,-415.700,-25.200,-49.500,415.700,25.200,-49.500,6.961e+04 +2025,80.210977,10,417.500,26.200,19.5670,-413.700,-18.600,-53.300,413.700,18.600,-53.300,4.158e+04 +2025,80.236591,10,408.100,25.900,19.9160,-404.300,-22.300,-50.600,404.300,22.300,-50.600,4.063e+04 +2025,80.248234,10,407.200,25.100,23.4560,-403.400,-18.300,-52.900,403.400,18.300,-52.900,3.816e+04 +2025,80.254056,10,406.900,23.600,25.0380,-402.900,-26.400,-50.500,402.900,26.400,-50.500,3.374e+04 +2025,80.255220,10,404.600,23.800,25.6670,-400.200,-26.600,-53.500,400.200,26.600,-53.500,3.431e+04 +2025,80.257549,10,401.400,24.500,25.4370,-397.100,-22.600,-53.500,397.100,22.600,-53.500,3.636e+04 +2025,80.261042,10,401.700,25.800,24.7150,-397.400,-23.500,-53.700,397.400,23.500,-53.700,4.032e+04 +2025,80.262206,10,404.500,30.200,20.0680,-399.500,-25.800,-57.600,399.500,25.800,-57.600,5.525e+04 +2025,80.295934,10,400.700,25.400,24.0230,-396.700,-22.900,-52.300,396.700,22.900,-52.300,3.908e+04 +2025,80.304048,10,390.200,30.300,20.7870,-385.600,-28.500,-52.600,385.600,28.500,-52.600,5.561e+04 +2025,80.314490,10,387.500,27.600,24.5200,-382.800,-21.000,-56.800,382.800,21.000,-56.800,4.614e+04 +2025,80.321476,10,384.200,25.100,22.5560,-378.400,-27.400,-60.600,378.400,27.400,-60.600,3.816e+04 +2025,80.323805,10,386.700,24.400,25.4850,-381.400,-27.500,-57.300,381.400,27.500,-57.300,3.606e+04 +2025,80.331955,10,383.100,28.700,21.9020,-377.700,-28.900,-57.200,377.700,28.900,-57.200,4.989e+04 +2025,80.362300,10,385.100,27.300,20.8500,-380.900,-29.500,-47.900,380.900,29.500,-47.900,4.515e+04 +2025,80.411091,10,381.500,27.400,17.8790,-378.900,-23.700,-37.600,378.900,23.700,-37.600,4.548e+04 +2025,80.426227,10,381.500,26.600,23.4840,-379.400,-33.200,-22.100,379.400,33.200,-22.100,4.286e+04 +2025,80.435578,10,385.400,30.600,20.3410,-383.800,-25.400,-24.600,383.800,25.400,-24.600,5.672e+04 +2025,80.455371,10,397.900,23.100,11.6060,-396.200,-27.700,-24.700,396.200,27.700,-24.700,3.232e+04 +2025,80.505327,10,381.200,22.500,10.9740,-379.900,-24.300,-20.100,379.900,24.300,-20.100,3.067e+04 +2025,80.519299,10,382.300,23.400,11.5470,-381.100,-26.300,-15.400,381.100,26.300,-15.400,3.317e+04 +2025,80.539128,10,382.000,22.900,13.4620,-381.300,-22.100,-2.800,381.300,22.100,-2.800,3.177e+04 +2025,80.550771,10,390.000,23.900,15.3240,-389.400,-17.900,13.500,389.400,17.900,13.500,3.460e+04 +2025,80.554264,10,398.800,25.100,15.0910,-398.300,-16.200,11.600,398.300,16.200,11.600,3.816e+04 +2025,80.567035,10,402.800,23.300,34.5560,-401.300,-14.700,31.300,401.300,14.700,31.300,3.288e+04 +2025,80.585591,10,411.200,26.400,42.2650,-410.400,-21.700,14.100,410.400,21.700,14.100,4.222e+04 +2025,80.608841,10,414.200,25.400,47.5670,-413.800,-18.000,-7.800,413.800,18.000,-7.800,3.908e+04 +2025,80.624013,10,411.000,30.400,45.8930,-410.700,-5.400,-13.400,410.700,5.400,-13.400,5.598e+04 +2025,80.649592,10,416.000,28.000,80.3880,-414.100,-17.100,-35.700,414.100,17.100,-35.700,4.749e+04 +2025,80.675133,10,423.100,41.300,90.7100,-423.100,1.000,-2.300,423.100,-1.000,-2.300,1.033e+05 +2025,80.679754,10,427.800,40.600,67.3410,-426.800,-6.500,-28.700,426.800,6.500,-28.700,9.985e+04 +2025,80.682083,10,426.200,52.600,66.2210,-425.300,-14.500,-23.300,425.300,14.500,-23.300,1.676e+05 +2025,80.686740,10,421.700,47.300,62.2190,-421.300,-9.200,-14.500,421.300,9.200,-14.500,1.355e+05 +2025,80.691397,10,415.300,51.800,65.7130,-415.000,-9.200,-13.200,415.000,9.200,-13.200,1.625e+05 +2025,80.696055,10,418.000,55.900,72.2390,-417.600,-15.200,-8.800,417.600,15.200,-8.800,1.893e+05 +2025,80.705369,10,433.100,52.500,51.1010,-430.100,34.000,38.000,430.100,-34.000,38.000,1.670e+05 +2025,81.062445,10,496.200,62.700,15.2620,-491.400,16.900,-66.500,491.400,-16.900,-66.500,2.381e+05 +2025,81.545303,10,465.700,43.600,7.7730,-457.000,-42.900,-78.500,457.000,42.900,-78.500,1.151e+05 +2025,81.582451,10,472.100,38.000,12.1380,-462.900,-14.300,-91.700,462.900,14.300,-91.700,8.747e+04 +2025,81.647616,10,470.800,29.200,8.9640,-463.300,-25.000,-79.900,463.300,25.000,-79.900,5.165e+04 +2025,81.659186,10,474.600,32.200,9.2750,-465.300,-35.600,-86.400,465.300,35.600,-86.400,6.281e+04 +2025,81.660350,10,472.100,32.000,9.1810,-462.200,-37.000,-88.800,462.200,37.000,-88.800,6.203e+04 +2025,81.669665,10,446.300,45.100,7.5110,-441.200,-15.000,-65.900,441.200,15.000,-65.900,1.232e+05 +2025,81.684800,10,442.900,46.400,8.7570,-438.800,-23.700,-55.400,438.800,23.700,-55.400,1.304e+05 +2025,81.738212,10,491.500,38.200,3.5300,-489.300,-29.000,-35.200,489.300,29.000,-35.200,8.839e+04 +2025,81.809271,10,494.300,26.700,3.2310,-493.000,-15.400,-32.100,493.000,15.400,-32.100,4.318e+04 +2025,81.810435,10,493.700,27.500,3.2600,-492.400,-16.500,-32.200,492.400,16.500,-32.200,4.581e+04 +2025,81.883713,10,473.400,22.100,2.8380,-472.700,-13.700,-21.800,472.700,13.700,-21.800,2.958e+04 +2025,81.892991,10,471.000,23.100,2.8550,-470.400,-15.900,-16.200,470.400,15.900,-16.200,3.232e+04 +2025,81.899977,10,471.000,22.400,3.2070,-470.400,-18.900,-16.200,470.400,18.900,-16.200,3.039e+04 +2025,81.915040,10,463.800,22.700,3.0040,-462.900,-20.800,-20.000,462.900,20.800,-20.000,3.121e+04 +2025,81.937162,10,467.700,23.000,3.5840,-466.800,-23.200,-18.100,466.800,23.200,-18.100,3.204e+04 +2025,81.961649,10,458.700,22.200,3.3870,-457.600,-24.800,-19.600,457.600,24.800,-19.600,2.985e+04 +2025,81.962813,10,455.600,22.200,3.1180,-454.400,-24.500,-21.700,454.400,24.500,-21.700,2.985e+04 +2025,81.973255,10,458.000,22.600,3.1660,-457.200,-20.200,-20.000,457.200,20.200,-20.000,3.094e+04 +2025,81.976748,10,454.700,22.200,3.0620,-453.800,-23.200,-16.800,453.800,23.200,-16.800,2.985e+04 +2025,82.012769,10,462.900,25.200,3.5140,-461.700,-28.200,-16.400,461.700,28.200,-16.400,3.847e+04 +2025,82.037256,10,455.900,26.300,3.9530,-455.200,-22.100,-14.800,455.200,22.100,-14.800,4.190e+04 +2025,82.050099,10,458.600,28.100,4.3590,-457.600,-27.700,-11.100,457.600,27.700,-11.100,4.783e+04 +2025,82.064071,10,454.900,30.800,4.2220,-453.400,-34.600,-14.500,453.400,34.600,-14.500,5.746e+04 +2025,82.073349,10,451.700,22.000,4.2380,-450.800,-28.300,-8.700,450.800,28.300,-8.700,2.932e+04 +2025,82.096562,10,449.200,26.400,4.6880,-448.800,-20.300,0.000,448.800,20.300,0.000,4.222e+04 +2025,82.120976,10,438.700,25.000,4.7790,-438.000,-22.700,-7.700,438.000,22.700,-7.700,3.786e+04 +2025,82.261675,10,426.900,30.500,6.0220,-426.600,-14.600,-5.700,426.600,14.600,-5.700,5.635e+04 +2025,82.272117,10,423.300,32.300,6.3350,-423.100,-13.600,-3.200,423.100,13.600,-3.200,6.320e+04 +2025,82.276774,10,424.300,31.600,6.1930,-424.000,-14.500,-2.700,424.000,14.500,-2.700,6.049e+04 +2025,82.293111,10,424.500,31.400,6.4820,-424.100,-18.100,-2.900,424.100,18.100,-2.900,5.972e+04 +2025,82.338482,10,420.400,30.200,6.8640,-419.900,-20.500,-0.600,419.900,20.500,-0.600,5.525e+04 +2025,82.339647,10,420.000,31.200,6.7440,-419.500,-20.800,0.900,419.500,20.800,0.900,5.896e+04 +2025,82.340811,10,420.400,30.800,6.6360,-419.900,-21.400,1.800,419.900,21.400,1.800,5.746e+04 +2025,82.422349,10,416.700,34.800,7.0360,-416.300,-15.300,6.300,416.300,15.300,6.300,7.336e+04 +2025,82.429298,10,417.100,33.100,6.9230,-416.500,-19.800,6.700,416.500,19.800,6.700,6.637e+04 +2025,82.439740,10,418.200,32.300,6.4590,-417.600,-21.700,5.800,417.600,21.700,5.800,6.320e+04 +2025,82.461789,10,418.200,36.400,6.6090,-417.700,-18.700,6.700,417.700,18.700,6.700,8.026e+04 +2025,82.486276,10,415.900,33.500,7.6450,-415.300,-22.600,1.700,415.300,22.600,1.700,6.798e+04 +2025,82.489769,10,420.400,35.100,8.3590,-419.700,-23.600,0.800,419.700,23.600,0.800,7.463e+04 +2025,82.500248,10,418.500,31.400,8.0470,-417.700,-25.100,5.100,417.700,25.100,5.100,5.972e+04 +2025,82.521132,10,416.500,37.700,8.1030,-416.400,-0.100,6.300,416.400,0.100,6.300,8.609e+04 +2025,82.583968,10,415.000,38.400,7.3790,-414.800,-8.800,9.300,414.800,8.800,9.300,8.932e+04 +2025,82.630431,10,412.100,36.600,6.0520,-411.900,-7.500,10.000,411.900,7.500,10.000,8.114e+04 +2025,82.644403,10,412.000,39.400,5.9530,-411.900,-6.200,7.800,411.900,6.200,7.800,9.403e+04 +2025,82.828289,10,387.100,30.500,9.6540,-385.400,-23.000,27.300,385.400,23.000,27.300,5.635e+04 +2025,82.832909,10,388.700,30.500,10.2780,-387.200,-19.100,27.400,387.200,19.100,27.400,5.635e+04 +2025,82.839895,10,387.900,31.300,10.6360,-386.100,-27.700,24.900,386.100,27.700,24.900,5.934e+04 +2025,82.844552,10,386.500,29.400,9.9050,-384.600,-21.400,32.300,384.600,21.400,32.300,5.236e+04 +2025,83.026037,10,397.300,34.900,21.9400,-393.800,-52.100,8.900,393.800,52.100,8.900,7.378e+04 +2025,83.092365,10,392.700,35.700,29.9360,-387.800,-61.600,-2.600,387.800,61.600,-2.600,7.720e+04 +2025,83.101643,10,394.500,38.300,29.8040,-390.400,-56.500,3.500,390.400,56.500,3.500,8.886e+04 +2025,83.157566,10,386.800,30.500,25.0320,-383.800,-47.200,-7.700,383.800,47.200,-7.700,5.635e+04 +2025,83.161059,10,389.100,26.300,17.6810,-387.100,-32.500,-21.800,387.100,32.500,-21.800,4.190e+04 +2025,83.162223,10,392.500,26.900,17.5760,-390.400,-32.700,-23.300,390.400,32.700,-23.300,4.383e+04 +2025,83.168008,10,397.500,31.500,21.3870,-395.700,-35.600,-13.200,395.700,35.600,-13.200,6.010e+04 +2025,83.169173,10,394.500,28.900,17.8770,-392.600,-34.200,-17.000,392.600,34.200,-17.000,5.059e+04 +2025,83.180779,10,397.600,28.000,20.1670,-396.300,-21.200,-23.700,396.300,21.200,-23.700,4.749e+04 +2025,83.222694,10,407.500,34.900,21.7500,-406.700,-17.700,-17.900,406.700,17.700,-17.900,7.378e+04 +2025,83.235538,10,410.900,36.700,15.8380,-410.100,-15.300,-20.200,410.100,15.300,-20.200,8.159e+04 +2025,83.312235,10,429.700,26.200,11.4270,-429.600,-6.700,-5.000,429.600,6.700,-5.000,4.158e+04 +2025,83.321513,10,430.600,31.500,10.5250,-430.500,-1.800,-9.400,430.500,1.800,-9.400,6.010e+04 +2025,83.325006,10,427.300,27.800,12.0720,-427.000,-7.300,-12.400,427.000,7.300,-12.400,4.681e+04 +2025,83.330791,10,425.200,24.600,10.4550,-424.800,-10.000,-13.900,424.800,10.000,-13.900,3.666e+04 +2025,83.355169,10,410.800,32.400,11.1270,-410.600,-13.200,-4.600,410.600,13.200,-4.600,6.359e+04 +2025,83.360990,10,412.500,34.600,12.8680,-412.400,-10.100,-3.800,412.400,10.100,-3.800,7.252e+04 +2025,83.459883,10,407.400,38.300,11.6820,-405.700,-4.500,-36.700,405.700,4.500,-36.700,8.886e+04 +2025,83.473891,10,412.100,43.300,13.1940,-410.300,-4.600,-38.700,410.300,4.600,-38.700,1.136e+05 +2025,83.499542,10,407.000,49.200,14.9030,-405.200,23.500,-30.100,405.200,-23.500,-30.100,1.466e+05 +2025,83.506491,10,404.900,52.500,16.2510,-403.200,23.000,-28.700,403.200,-23.000,-28.700,1.670e+05 +2025,83.514605,10,401.600,50.900,14.9050,-399.900,29.600,-21.800,399.900,-29.600,-21.800,1.569e+05 +2025,83.516933,10,403.700,51.100,14.6220,-402.400,19.700,-25.400,402.400,-19.700,-25.400,1.582e+05 +2025,83.534325,10,397.900,50.100,15.6320,-396.600,24.200,-19.600,396.600,-24.200,-19.600,1.520e+05 +2025,83.542475,10,395.500,47.400,16.0930,-394.400,23.100,-17.400,394.400,-23.100,-17.400,1.361e+05 +2025,83.555282,10,402.500,47.900,13.8370,-402.000,12.400,-17.000,402.000,-12.400,-17.000,1.390e+05 +2025,83.565761,10,399.200,48.100,13.7210,-398.700,14.900,-15.300,398.700,-14.900,-15.300,1.401e+05 +2025,83.572710,10,401.700,48.100,14.1260,-401.400,13.000,-11.000,401.400,-13.000,-11.000,1.401e+05 +2025,83.573875,10,400.900,46.700,14.0890,-400.500,12.600,-12.800,400.500,-12.600,-12.800,1.321e+05 +2025,83.602873,10,399.800,52.100,12.6300,-399.000,20.200,-14.900,399.000,-20.200,-14.900,1.644e+05 +2025,83.641367,10,390.400,51.400,12.2410,-389.100,30.400,-5.100,389.100,-30.400,-5.100,1.600e+05 +2025,83.655339,10,394.500,53.900,11.6340,-393.200,31.400,-1.800,393.200,-31.400,-1.800,1.760e+05 +2025,83.678552,10,389.700,51.500,11.7310,-388.700,28.300,-1.600,388.700,-28.300,-1.600,1.607e+05 +2025,83.777408,10,384.300,53.900,10.8890,-383.600,23.200,1.500,383.600,-23.200,1.500,1.760e+05 +2025,83.815794,10,383.900,51.500,10.6020,-383.000,25.900,6.400,383.000,-25.900,6.400,1.607e+05 +2025,83.865822,10,378.500,48.300,11.3900,-378.400,9.600,4.300,378.400,-9.600,4.300,1.413e+05 +2025,83.971701,10,370.800,31.600,9.7960,-370.600,2.700,8.500,370.600,-2.700,8.500,6.049e+04 +2025,83.974029,10,380.300,30.300,8.8030,-380.300,-2.400,1.800,380.300,2.400,1.800,5.561e+04 +2025,83.976322,10,373.500,32.800,10.3490,-373.400,-1.100,9.200,373.400,1.100,9.200,6.517e+04 +2025,83.987965,10,376.000,29.600,9.8050,-376.000,-1.500,0.500,376.000,1.500,0.500,5.307e+04 +2025,84.005429,10,378.500,29.600,9.9090,-378.400,-5.400,-4.100,378.400,5.400,-4.100,5.307e+04 +2025,84.020492,10,382.000,29.200,10.3080,-382.000,-5.300,3.000,382.000,5.300,3.000,5.165e+04 +2025,84.029770,10,381.200,29.900,10.6370,-380.900,-2.500,13.500,380.900,2.500,13.500,5.415e+04 +2025,84.033263,10,378.000,26.100,10.1030,-377.600,-4.600,15.400,377.600,4.600,15.400,4.126e+04 +2025,84.035592,10,379.000,26.400,9.2540,-378.600,-4.600,15.900,378.600,4.600,15.900,4.222e+04 +2025,84.047198,10,361.900,27.300,8.7900,-361.600,-2.800,12.700,361.600,2.800,12.700,4.515e+04 +2025,84.049527,10,364.400,26.600,9.5320,-364.400,-3.400,-0.800,364.400,3.400,-0.800,4.286e+04 +2025,84.072849,10,367.100,26.000,7.8730,-367.000,-10.600,-4.600,367.000,10.600,-4.600,4.095e+04 +2025,84.074050,10,371.000,26.200,7.8180,-370.800,-10.200,-5.900,370.800,10.200,-5.900,4.158e+04 +2025,84.076379,10,368.100,26.700,7.8990,-367.900,-11.600,-3.500,367.900,11.600,-3.500,4.318e+04 +2025,84.110107,10,372.800,30.500,9.7660,-372.700,8.700,2.600,372.700,-8.700,2.600,5.635e+04 +2025,84.111271,10,369.700,25.600,8.8970,-369.600,5.000,6.400,369.600,-5.000,6.400,3.970e+04 +2025,84.113600,10,372.000,27.200,8.8440,-371.900,8.400,3.100,371.900,-8.400,3.100,4.481e+04 +2025,84.157734,10,382.000,29.800,9.1300,-381.500,12.700,13.400,381.500,-12.700,13.400,5.379e+04 +2025,84.164757,10,371.400,31.400,7.2040,-371.300,3.200,3.900,371.300,-3.200,3.900,5.972e+04 +2025,84.174107,10,369.400,29.200,8.6520,-369.400,2.200,4.800,369.400,-2.200,4.800,5.165e+04 +2025,84.188079,10,368.700,33.500,9.7400,-368.500,5.700,9.400,368.500,-5.700,9.400,6.798e+04 +2025,84.199686,10,370.100,28.400,8.4590,-370.100,1.700,8.000,370.100,-1.700,8.000,4.886e+04 +2025,84.314879,10,367.000,29.600,9.4160,-366.800,-9.900,-6.300,366.800,9.900,-6.300,5.307e+04 +2025,84.317207,10,366.900,30.500,9.5440,-366.700,-9.200,8.300,366.700,9.200,8.300,5.635e+04 +2025,84.319500,10,380.000,27.800,9.5230,-379.200,-10.700,21.900,379.200,10.700,21.900,4.681e+04 +2025,84.327650,10,375.700,31.500,8.7850,-375.300,-15.200,11.000,375.300,15.200,11.000,6.010e+04 +2025,84.348571,10,366.400,29.600,9.1170,-366.000,-13.300,-10.000,366.000,13.300,-10.000,5.307e+04 +2025,84.387065,10,370.400,29.100,8.9530,-370.100,-11.100,-11.000,370.100,11.100,-11.000,5.129e+04 +2025,84.388230,10,370.800,30.400,9.1220,-370.500,-9.400,-10.800,370.500,9.400,-10.800,5.598e+04 +2025,84.392887,10,370.000,27.900,9.2570,-369.600,-12.300,-14.100,369.600,12.300,-14.100,4.715e+04 +2025,84.394051,10,368.700,27.000,9.1360,-368.200,-12.100,-15.000,368.200,12.100,-15.000,4.416e+04 +2025,84.397544,10,369.300,27.200,9.6470,-368.800,-12.100,-13.700,368.800,12.100,-13.700,4.481e+04 +2025,84.403329,10,369.100,27.300,8.8040,-368.300,-13.400,-19.700,368.300,13.400,-19.700,4.515e+04 +2025,84.416100,10,379.000,28.700,11.4720,-378.700,13.600,2.000,378.700,-13.600,2.000,4.989e+04 +2025,84.435821,10,380.800,27.400,11.6610,-380.800,2.100,1.500,380.800,-2.100,1.500,4.548e+04 +2025,84.441642,10,379.900,26.400,11.3080,-379.800,3.700,2.700,379.800,-3.700,2.700,4.222e+04 +2025,84.446299,10,379.400,29.100,12.0990,-379.400,2.500,3.800,379.400,-2.500,3.800,5.129e+04 +2025,84.461472,10,375.700,28.000,10.2820,-375.600,7.200,3.200,375.600,-7.200,3.200,4.749e+04 +2025,84.475480,10,376.100,25.600,11.0290,-376.000,3.500,4.300,376.000,-3.500,4.300,3.970e+04 +2025,84.488251,10,375.800,24.700,11.2970,-375.700,3.700,7.100,375.700,-3.700,7.100,3.696e+04 +2025,84.489415,10,374.900,27.200,11.1400,-374.800,5.100,7.900,374.800,-5.100,7.900,4.481e+04 +2025,84.491744,10,373.600,27.500,10.9790,-373.500,5.300,5.000,373.500,-5.300,5.000,4.581e+04 +2025,84.501022,10,369.700,25.200,11.1610,-369.500,7.900,8.300,369.500,-7.900,8.300,3.847e+04 +2025,84.507971,10,374.100,25.200,10.7740,-373.900,6.200,7.000,373.900,-6.200,7.000,3.847e+04 +2025,84.510300,10,372.500,25.700,9.6280,-372.300,9.600,9.200,372.300,-9.600,9.200,4.001e+04 +2025,84.521906,10,368.100,25.200,10.9500,-368.100,-0.500,3.800,368.100,0.500,3.800,3.847e+04 +2025,84.526563,10,365.600,22.700,9.6780,-365.300,-3.800,12.900,365.300,3.800,12.900,3.121e+04 +2025,84.562766,10,362.900,18.200,7.1520,-362.500,-7.500,13.700,362.500,7.500,13.700,2.006e+04 +2025,84.570916,10,360.500,18.900,6.5210,-360.500,-5.900,5.000,360.500,5.900,5.000,2.164e+04 +2025,84.611558,10,366.000,20.300,8.7250,-365.800,-10.300,6.500,365.800,10.300,6.500,2.496e+04 +2025,84.620836,10,362.200,19.600,8.3180,-362.100,-9.300,2.100,362.100,9.300,2.100,2.327e+04 +2025,84.634807,10,364.700,20.700,8.5570,-364.500,-13.200,1.400,364.500,13.200,1.400,2.596e+04 +2025,84.649979,10,363.200,23.500,9.2090,-362.800,-16.400,-1.500,362.800,16.400,-1.500,3.345e+04 +2025,84.663951,10,374.000,22.600,9.6730,-373.700,-9.600,-9.000,373.700,9.600,-9.000,3.094e+04 +2025,84.665115,10,368.300,25.900,8.6660,-368.100,-9.200,-7.800,368.100,9.200,-7.800,4.063e+04 +2025,84.666280,10,369.600,25.600,8.5550,-369.300,-9.800,-9.300,369.300,9.800,-9.300,3.970e+04 +2025,84.679087,10,371.100,27.900,10.3190,-370.900,-9.700,-7.400,370.900,9.700,-7.400,4.715e+04 +2025,84.683744,10,366.900,25.500,9.7840,-366.600,-12.000,-8.600,366.600,12.000,-8.600,3.939e+04 +2025,84.690693,10,369.600,26.100,10.2330,-369.300,-12.000,-7.500,369.300,12.000,-7.500,4.126e+04 +2025,84.715071,10,365.200,26.200,11.0130,-364.900,-10.300,-7.500,364.900,10.300,-7.500,4.158e+04 +2025,84.716235,10,364.400,26.400,10.5510,-364.200,-10.000,-3.000,364.200,10.000,-3.000,4.222e+04 +2025,84.719728,10,366.900,25.300,10.5670,-366.600,-15.200,0.400,366.600,15.200,0.400,3.877e+04 +2025,84.744214,10,368.800,25.100,9.9630,-368.500,-11.700,-9.200,368.500,11.700,-9.200,3.816e+04 +2025,84.751236,10,376.400,25.700,11.4140,-375.900,-18.700,-3.700,375.900,18.700,-3.700,4.001e+04 +2025,84.772194,10,377.200,26.100,12.3620,-376.800,-18.100,3.100,376.800,18.100,3.100,4.126e+04 +2025,84.786129,10,378.100,26.500,13.3330,-377.400,-20.500,-10.600,377.400,20.500,-10.600,4.254e+04 +2025,84.798900,10,381.300,26.900,12.2530,-380.800,-16.600,-12.100,380.800,16.600,-12.100,4.383e+04 +2025,84.807013,10,385.300,29.200,9.6510,-385.100,-10.700,-3.700,385.100,10.700,-3.700,5.165e+04 +2025,84.809342,10,382.700,29.500,10.4250,-382.500,-11.300,-4.800,382.500,11.300,-4.800,5.271e+04 +2025,84.810506,10,384.700,27.000,10.9670,-384.500,-12.200,-6.500,384.500,12.200,-6.500,4.416e+04 +2025,84.812835,10,381.000,27.000,12.7350,-380.400,-20.000,-7.600,380.400,20.000,-7.600,4.416e+04 +2025,84.813999,10,381.400,28.200,13.0210,-381.000,-17.000,-6.200,381.000,17.000,-6.200,4.817e+04 +2025,84.848965,10,393.800,23.300,14.3740,-393.800,-4.700,-2.100,393.800,4.700,-2.100,3.288e+04 +2025,84.879236,10,391.700,24.600,17.8270,-391.100,-18.100,12.300,391.100,18.100,12.300,3.666e+04 +2025,84.880401,10,391.200,24.500,18.0860,-390.500,-18.900,13.300,390.500,18.900,13.300,3.636e+04 +2025,84.883894,10,385.000,25.200,16.8950,-384.400,-18.900,10.200,384.400,18.900,10.200,3.847e+04 +2025,84.926864,10,376.200,21.700,18.1560,-375.800,-10.200,15.200,375.800,10.200,15.200,2.852e+04 +2025,84.940908,10,389.300,25.100,19.6570,-388.500,-14.700,19.300,388.500,14.700,19.300,3.816e+04 +2025,84.950222,10,390.800,28.800,21.9100,-390.100,-17.900,16.400,390.100,17.900,16.400,5.024e+04 +2025,84.956080,10,387.700,32.700,19.0280,-387.200,-14.800,12.200,387.200,14.800,12.200,6.477e+04 +2025,84.959573,10,391.700,32.500,21.8960,-391.300,-13.700,10.000,391.300,13.700,10.000,6.398e+04 +2025,84.965395,10,394.400,31.700,22.3150,-393.900,-15.200,13.000,393.900,15.200,13.000,6.087e+04 +2025,84.966559,10,395.600,31.100,23.9540,-395.000,-17.300,13.000,395.000,17.300,13.000,5.859e+04 +2025,84.979330,10,388.400,38.700,19.0950,-388.000,-11.600,12.600,388.000,11.600,12.600,9.072e+04 +2025,84.997886,10,386.700,33.600,23.4210,-386.100,-16.000,12.600,386.100,16.000,12.600,6.839e+04 +2025,85.017643,10,381.300,33.000,27.0650,-381.000,-12.600,10.500,381.000,12.600,10.500,6.596e+04 +2025,85.030486,10,379.600,28.800,18.8280,-379.300,-14.800,7.100,379.300,14.800,7.100,5.024e+04 +2025,85.046823,10,374.500,25.400,21.1410,-373.900,-20.800,2.500,373.900,20.800,2.500,3.908e+04 +2025,85.049152,10,376.500,25.800,19.4380,-375.800,-19.900,9.900,375.800,19.900,9.900,4.032e+04 +2025,85.058466,10,372.600,26.300,20.3180,-372.100,-18.300,4.400,372.100,18.300,4.400,4.190e+04 +2025,85.060795,10,390.000,35.100,14.0870,-389.600,-7.500,15.500,389.600,7.500,15.500,7.463e+04 +2025,85.103765,10,368.600,26.100,15.9720,-367.300,-30.400,-3.900,367.300,30.400,-3.900,4.126e+04 +2025,85.104893,10,372.100,27.600,15.6800,-370.200,-36.900,-1.400,370.200,36.900,-1.400,4.614e+04 +2025,85.106057,10,379.100,28.100,17.6840,-376.800,-41.500,5.800,376.800,41.500,5.800,4.783e+04 +2025,85.191015,10,374.700,42.100,10.1280,-374.200,-16.800,10.000,374.200,16.800,10.000,1.074e+05 +2025,85.199128,10,375.500,40.600,10.1850,-375.300,-11.600,0.400,375.300,11.600,0.400,9.985e+04 +2025,85.313193,10,405.400,46.900,19.9480,-401.300,-53.300,22.400,401.300,53.300,22.400,1.332e+05 +2025,85.364423,10,397.400,50.400,29.3890,-392.900,-59.300,5.500,392.900,59.300,5.500,1.539e+05 +2025,85.370244,10,379.900,43.700,31.8200,-374.400,-63.200,-11.600,374.400,63.200,-11.600,1.157e+05 +2025,85.371409,10,380.600,44.100,37.6860,-373.400,-73.100,-8.000,373.400,73.100,-8.000,1.178e+05 +2025,85.429624,10,397.500,44.700,28.4820,-393.200,-58.200,-3.700,393.200,58.200,-3.700,1.210e+05 +2025,85.441267,10,408.300,45.200,34.3840,-403.200,-64.200,-0.200,403.200,64.200,-0.200,1.238e+05 +2025,85.450581,10,406.600,46.900,31.2470,-402.600,-53.900,17.300,402.600,53.900,17.300,1.332e+05 +2025,85.454038,10,412.400,48.200,34.2460,-407.500,-58.700,23.600,407.500,58.700,23.600,1.407e+05 +2025,85.459859,10,405.500,45.800,38.9840,-401.400,-57.000,6.700,401.400,57.000,6.700,1.271e+05 +2025,85.487730,10,404.700,47.100,28.3410,-401.500,-48.400,-13.600,401.500,48.400,-13.600,1.344e+05 +2025,85.933183,10,670.100,97.700,9.7000,-662.300,84.000,-57.700,662.300,-84.000,-57.700,5.782e+05 +2025,85.985467,10,595.000,85.200,8.4440,-592.500,54.000,8.100,592.500,-54.000,8.100,4.397e+05 +2025,86.177067,10,818.300,107.200,5.2180,-815.300,69.700,-6.600,815.300,-69.700,-6.600,6.961e+05 +2025,86.292224,10,835.100,98.200,5.9090,-822.600,143.900,-5.400,822.600,-143.900,-5.400,5.841e+05 +2025,86.321586,10,823.200,108.100,5.0760,-816.900,101.400,11.100,816.900,-101.400,11.100,7.078e+05 +2025,86.331773,10,790.600,97.700,4.4070,-789.800,35.300,-2.900,789.800,-35.300,-2.900,5.782e+05 +2025,86.425609,10,776.200,97.200,4.3320,-775.500,33.500,-7.100,775.500,-33.500,-7.100,5.723e+05 +2025,86.523883,10,793.500,93.200,3.0330,-788.600,70.300,-53.000,788.600,-70.300,-53.000,5.262e+05 +2025,86.529523,10,790.500,83.100,2.9390,-785.200,84.300,-35.300,785.200,-84.300,-35.300,4.183e+05 +2025,86.538582,10,794.700,89.800,3.3130,-789.900,87.200,5.800,789.900,-87.200,5.800,4.885e+05 +2025,86.944305,10,758.500,86.100,2.3070,-758.500,9.800,-0.600,758.500,-9.800,-0.600,4.490e+05 +2025,87.006594,10,769.600,64.700,1.9090,-767.400,33.100,-48.700,767.400,-33.100,-48.700,2.536e+05 +2025,87.282060,10,683.000,61.900,2.1880,-682.200,-6.000,-30.800,682.200,6.000,-30.800,2.321e+05 +2025,87.291193,10,682.700,62.600,2.8500,-682.000,1.300,-31.000,682.000,-1.300,-31.000,2.374e+05 +2025,87.293485,10,693.400,63.500,2.7520,-692.600,-4.100,-32.800,692.600,4.100,-32.800,2.442e+05 +2025,87.398636,10,658.900,58.800,2.2750,-658.600,-17.000,12.400,658.600,17.000,12.400,2.094e+05 +2025,87.587107,10,643.200,45.700,2.5570,-640.300,11.300,-60.900,640.300,-11.300,-60.900,1.265e+05 +2025,87.591764,10,634.800,44.100,2.6820,-632.300,1.500,-56.100,632.300,-1.500,-56.100,1.178e+05 +2025,87.595257,10,637.200,45.400,2.5330,-635.400,-31.400,-36.700,635.400,31.400,-36.700,1.249e+05 +2025,87.610429,10,620.900,45.700,2.7160,-619.600,-5.400,40.200,619.600,5.400,40.200,1.265e+05 +2025,87.611593,10,614.600,43.500,2.3210,-613.500,-1.800,36.800,613.500,1.800,36.800,1.146e+05 +2025,87.625565,10,623.700,50.300,2.6350,-622.700,-12.500,32.900,622.700,12.500,32.900,1.533e+05 +2025,87.640700,10,621.600,46.000,2.5940,-620.900,-28.900,5.800,620.900,28.900,5.800,1.282e+05 +2025,87.646485,10,622.500,45.600,2.6270,-621.700,-29.500,-12.400,621.700,29.500,-12.400,1.260e+05 +2025,87.651143,10,616.100,48.100,2.6200,-615.800,-16.800,11.200,615.800,16.800,11.200,1.401e+05 +2025,87.654599,10,602.900,48.100,2.4580,-602.700,-15.400,3.800,602.700,15.400,3.800,1.401e+05 +2025,87.668534,10,614.800,48.100,2.5830,-614.400,-24.000,-4.800,614.400,24.000,-4.800,1.401e+05 +2025,87.672027,10,647.900,52.000,2.3590,-647.400,-23.900,5.500,647.400,23.900,5.500,1.638e+05 +2025,87.686035,10,644.400,59.100,3.0990,-644.100,-2.300,19.800,644.100,2.300,19.800,2.116e+05 +2025,87.696550,10,625.000,54.800,3.3950,-624.900,12.100,6.700,624.900,-12.100,6.700,1.819e+05 +2025,87.698879,10,622.100,54.900,3.3970,-621.400,28.100,-4.100,621.400,-28.100,-4.100,1.826e+05 +2025,87.710522,10,645.500,53.100,2.7980,-643.700,23.400,-41.300,643.700,-23.400,-41.300,1.708e+05 +2025,87.724457,10,666.800,51.400,2.6640,-665.500,0.900,-41.900,665.500,-0.900,-41.900,1.600e+05 +2025,87.725585,10,659.700,56.700,3.5230,-658.100,9.000,-44.700,658.100,-9.000,-44.700,1.947e+05 +2025,87.736027,10,633.100,53.600,2.8690,-632.400,-25.100,-16.100,632.400,25.100,-16.100,1.740e+05 +2025,87.737191,10,661.800,51.600,3.2410,-660.900,-34.200,4.200,660.900,34.200,4.200,1.613e+05 +2025,87.762733,10,641.500,44.000,1.9560,-639.900,5.400,-46.000,639.900,-5.400,-46.000,1.173e+05 +2025,87.774376,10,611.000,51.100,3.0460,-609.500,17.200,-40.100,609.500,-17.200,-40.100,1.582e+05 +2025,87.783690,10,618.500,50.900,3.5390,-618.200,-19.400,1.800,618.200,19.400,1.800,1.569e+05 +2025,87.824295,10,618.000,46.700,3.3510,-615.800,51.100,-8.000,615.800,-51.100,-8.000,1.321e+05 +2025,87.847618,10,612.700,47.700,3.4420,-612.100,19.600,19.000,612.100,-19.600,19.000,1.378e+05 +2025,87.849983,10,614.900,46.000,3.2810,-614.000,27.800,19.900,614.000,-27.800,19.900,1.282e+05 +2025,87.856968,10,620.100,43.200,3.1520,-619.100,24.800,24.800,619.100,-24.800,24.800,1.130e+05 +2025,87.858133,10,615.300,43.400,3.2710,-614.300,26.200,23.300,614.300,-26.200,23.300,1.141e+05 +2025,87.904595,10,615.500,56.600,3.1710,-615.500,-0.400,0.300,615.500,0.400,0.300,1.941e+05 +2025,87.922024,10,632.700,50.100,3.2270,-632.200,-23.600,-11.000,632.200,23.600,-11.000,1.520e+05 +2025,87.974453,10,598.300,50.100,2.9090,-597.500,4.900,-30.500,597.500,-4.900,-30.500,1.520e+05 +2025,87.989553,10,604.500,49.500,2.8550,-604.000,-2.100,-25.100,604.000,2.100,-25.100,1.484e+05 +2025,87.997667,10,609.500,46.700,2.8290,-607.900,-1.800,-44.700,607.900,1.800,-44.700,1.321e+05 +2025,88.003452,10,616.800,47.400,2.8100,-616.300,4.000,24.700,616.300,-4.000,24.700,1.361e+05 +2025,88.008109,10,604.800,47.700,3.0140,-604.500,-13.500,-11.600,604.500,13.500,-11.600,1.378e+05 +2025,88.047732,10,582.400,44.700,2.6320,-581.200,27.500,26.000,581.200,-27.500,26.000,1.210e+05 +2025,88.061667,10,605.200,46.600,2.6240,-605.000,-13.900,5.400,605.000,13.900,5.400,1.315e+05 +2025,88.069817,10,605.500,47.700,2.8400,-605.200,-6.100,16.500,605.200,6.100,16.500,1.378e+05 +2025,88.070981,10,605.300,46.800,2.6980,-604.900,-3.700,21.900,604.900,3.700,21.900,1.327e+05 +2025,88.082588,10,621.800,46.600,2.4600,-621.300,3.000,23.700,621.300,-3.000,23.700,1.315e+05 +2025,88.083752,10,592.100,45.100,2.6060,-591.600,-5.200,23.400,591.600,5.200,23.400,1.232e+05 +2025,88.086081,10,609.400,49.000,2.7350,-608.800,2.700,27.200,608.800,-2.700,27.200,1.454e+05 +2025,88.090702,10,609.500,43.500,2.7910,-609.000,-6.800,23.700,609.000,6.800,23.700,1.146e+05 +2025,88.108166,10,586.200,43.200,2.6200,-585.300,24.400,20.000,585.300,-24.400,20.000,1.130e+05 +2025,88.110495,10,584.800,42.700,2.5680,-584.400,1.000,19.000,584.400,-1.000,19.000,1.104e+05 +2025,88.112823,10,587.800,49.500,2.6610,-587.600,-0.200,12.900,587.600,0.200,12.900,1.484e+05 +2025,88.124466,10,598.200,45.500,2.7330,-598.000,-15.100,-3.200,598.000,15.100,-3.200,1.254e+05 +2025,88.137346,10,592.700,45.400,2.8830,-592.400,-16.300,-9.600,592.400,16.300,-9.600,1.249e+05 +2025,88.142003,10,611.300,45.900,2.8400,-611.000,-19.300,-6.200,611.000,19.300,-6.200,1.276e+05 +2025,88.183809,10,575.200,40.100,2.5610,-575.000,-16.100,1.200,575.000,16.100,1.200,9.740e+04 +2025,88.245444,10,554.200,42.200,2.6220,-552.800,30.200,-25.300,552.800,-30.200,-25.300,1.079e+05 +2025,88.276771,10,561.500,43.100,2.6810,-560.800,-19.500,-19.000,560.800,19.500,-19.000,1.125e+05 +2025,88.312974,10,557.300,40.900,2.6280,-556.800,-16.600,-16.300,556.800,16.600,-16.300,1.013e+05 +2025,88.343173,10,545.100,45.400,2.3370,-544.800,-13.000,-13.300,544.800,13.000,-13.300,1.249e+05 +2025,88.367550,10,540.800,46.800,2.9480,-540.300,-8.200,-20.300,540.300,8.200,-20.300,1.327e+05 +2025,88.371043,10,546.800,44.500,2.9810,-546.300,-13.600,-17.100,546.300,13.600,-17.100,1.200e+05 +2025,88.372207,10,543.200,45.000,2.9520,-542.900,-9.500,-15.000,542.900,9.500,-15.000,1.227e+05 +2025,88.379230,10,535.200,45.700,2.5220,-534.900,10.700,-15.600,534.900,-10.700,-15.600,1.265e+05 +2025,88.389708,10,538.500,42.000,2.9330,-537.900,-13.200,-19.900,537.900,13.200,-19.900,1.069e+05 +2025,88.408337,10,560.600,44.400,3.1870,-560.100,-17.100,-14.000,560.100,17.100,-14.000,1.194e+05 +2025,88.419944,10,532.900,39.300,2.9020,-532.000,-10.500,-28.500,532.000,10.500,-28.500,9.356e+04 +2025,88.426893,10,526.400,39.500,2.7860,-525.700,0.600,-28.300,525.700,-0.600,-28.300,9.451e+04 +2025,88.459421,10,522.300,39.900,2.6760,-521.700,-8.500,-23.800,521.700,8.500,-23.800,9.643e+04 +2025,88.480415,10,516.200,40.700,2.4020,-516.100,9.100,-3.700,516.100,-9.100,-3.700,1.003e+05 +2025,88.495551,10,524.300,40.000,2.8920,-523.300,3.400,-32.200,523.300,-3.400,-32.200,9.692e+04 +2025,88.507157,10,523.700,39.900,3.0190,-523.200,-1.700,-20.700,523.200,1.700,-20.700,9.643e+04 +2025,88.537356,10,516.800,38.200,2.8020,-516.500,-14.200,-13.400,516.500,14.200,-13.400,8.839e+04 +2025,88.575815,10,519.400,37.700,3.4420,-518.700,-20.400,-18.200,518.700,20.400,-18.200,8.609e+04 +2025,88.599137,10,518.200,37.900,3.4050,-517.900,-15.800,-4.300,517.900,15.800,-4.300,8.701e+04 +2025,88.602593,10,511.600,37.900,3.4730,-510.900,-17.900,-19.300,510.900,17.900,-19.300,8.701e+04 +2025,88.604922,10,516.700,36.800,3.4740,-516.300,-17.600,-8.900,516.300,17.600,-8.900,8.203e+04 +2025,88.615364,10,516.500,34.400,3.7390,-516.000,-20.200,-10.900,516.000,20.200,-10.900,7.168e+04 +2025,88.656042,10,521.100,41.500,4.2350,-520.300,-26.100,-12.500,520.300,26.100,-12.500,1.043e+05 +2025,88.659535,10,513.300,42.700,4.3020,-512.900,-19.100,-6.500,512.900,19.100,-6.500,1.104e+05 +2025,88.663028,10,511.700,35.700,4.1920,-511.200,-20.000,-6.800,511.200,20.000,-6.800,7.720e+04 +2025,88.668813,10,500.200,36.300,3.9070,-498.600,-26.500,-30.400,498.600,26.500,-30.400,7.982e+04 +2025,88.671141,10,500.800,34.500,3.6080,-500.200,-22.000,-9.500,500.200,22.000,-9.500,7.210e+04 +2025,88.678127,10,499.900,32.200,3.6080,-499.100,-23.000,-17.700,499.100,23.000,-17.700,6.281e+04 +2025,88.685113,10,503.300,32.100,3.7920,-502.700,-20.800,-14.000,502.700,20.800,-14.000,6.242e+04 +2025,88.773417,10,503.700,30.000,3.7180,-502.100,-24.300,-31.500,502.100,24.300,-31.500,5.452e+04 +2025,88.788553,10,518.100,25.000,3.5580,-517.500,-15.000,-19.600,517.500,15.000,-19.600,3.786e+04 +2025,88.789717,10,522.600,24.900,3.3360,-522.000,-17.900,-18.600,522.000,17.900,-18.600,3.756e+04 +2025,88.878167,10,513.800,26.500,3.6150,-513.200,-20.600,-9.700,513.200,20.600,-9.700,4.254e+04 +2025,88.890975,10,508.300,24.400,3.6070,-507.600,-22.600,-13.700,507.600,22.600,-13.700,3.606e+04 +2025,88.956212,10,476.000,36.600,3.5140,-474.900,-17.700,-27.600,474.900,17.700,-27.600,8.114e+04 +2025,88.963197,10,477.000,40.400,3.3830,-476.300,-8.700,-25.400,476.300,8.700,-25.400,9.887e+04 +2025,88.972475,10,476.600,37.500,3.6300,-474.800,-8.900,-40.700,474.800,8.900,-40.700,8.518e+04 +2025,88.996853,10,476.100,36.700,3.1760,-474.500,6.100,-38.900,474.500,-6.100,-38.900,8.159e+04 +2025,89.010824,10,481.200,37.800,3.9600,-480.200,-11.400,-29.000,480.200,11.400,-29.000,8.655e+04 +2025,89.013153,10,484.500,40.900,3.7580,-483.600,-17.600,-25.100,483.600,17.600,-25.100,1.013e+05 +2025,89.031709,10,479.900,39.800,4.2570,-478.600,-14.700,-32.000,478.600,14.700,-32.000,9.595e+04 +2025,89.032873,10,483.200,35.200,3.8350,-481.900,-19.900,-27.800,481.900,19.900,-27.800,7.505e+04 +2025,89.036366,10,480.700,39.100,4.0560,-479.500,-19.800,-28.200,479.500,19.800,-28.200,9.261e+04 +2025,89.037530,10,480.600,35.600,3.7390,-479.800,-23.300,-14.800,479.800,23.300,-14.800,7.677e+04 +2025,89.050264,10,496.100,36.900,4.0130,-494.900,-19.100,-27.500,494.900,19.100,-27.500,8.248e+04 +2025,89.057250,10,498.400,34.300,3.7070,-496.800,-20.900,-34.200,496.800,20.900,-34.200,7.126e+04 +2025,89.058414,10,503.900,35.000,3.8940,-502.400,-19.900,-32.400,502.400,19.900,-32.400,7.420e+04 +2025,89.066564,10,501.300,32.400,4.1100,-500.000,-21.500,-29.600,500.000,21.500,-29.600,6.359e+04 +2025,89.100365,10,491.500,34.500,4.5100,-490.800,-22.700,-10.100,490.800,22.700,-10.100,7.210e+04 +2025,89.149157,10,473.900,37.100,4.1680,-473.400,-22.200,-4.900,473.400,22.200,-4.900,8.337e+04 +2025,89.164292,10,460.500,37.100,4.9690,-459.300,-1.300,-33.600,459.300,1.300,-33.600,8.337e+04 +2025,89.188815,10,476.700,34.100,3.8020,-476.200,-19.400,-9.900,476.200,19.400,-9.900,7.044e+04 +2025,89.205116,10,471.000,33.400,4.0680,-470.500,-19.500,-12.100,470.500,19.500,-12.100,6.757e+04 +2025,89.212065,10,467.000,34.800,4.0080,-466.700,-15.300,-7.000,466.700,15.300,-7.000,7.336e+04 +2025,89.223672,10,474.900,36.400,4.0320,-473.900,-26.400,-13.600,473.900,26.400,-13.600,8.026e+04 +2025,89.265514,10,469.800,33.700,4.7410,-468.700,-20.500,-25.300,468.700,20.500,-25.300,6.879e+04 +2025,89.301461,10,471.600,34.400,4.5960,-470.600,-25.300,-15.100,470.600,25.300,-15.100,7.168e+04 +2025,89.328240,10,470.600,32.200,4.0520,-469.000,4.400,-37.800,469.000,-4.400,-37.800,6.281e+04 +2025,89.411997,10,441.600,32.500,4.1830,-440.400,19.200,-26.400,440.400,-19.200,-26.400,6.398e+04 +2025,89.417818,10,454.700,36.900,4.5700,-452.800,-12.100,-40.300,452.800,12.100,-40.300,8.248e+04 +2025,89.426005,10,451.300,34.500,4.7810,-449.900,20.400,-29.400,449.900,-20.400,-29.400,7.210e+04 +2025,89.430662,10,443.900,35.700,4.2200,-442.900,7.200,-29.500,442.900,-7.200,-29.500,7.720e+04 +2025,89.436520,10,453.100,32.500,4.3320,-450.700,4.000,-45.700,450.700,-4.000,-45.700,6.398e+04 +2025,89.438849,10,443.000,32.700,4.2900,-441.200,2.800,-40.400,441.200,-2.800,-40.400,6.477e+04 +2025,89.445834,10,456.300,29.500,4.6820,-455.000,-1.600,-33.700,455.000,1.600,-33.700,5.271e+04 +2025,89.455149,10,446.900,32.200,4.6310,-445.800,-17.500,-26.100,445.800,17.500,-26.100,6.281e+04 +2025,89.470212,10,460.300,33.400,5.8190,-459.200,-17.600,-26.200,459.200,17.600,-26.200,6.757e+04 +2025,89.473705,10,459.500,33.500,5.7590,-458.500,-19.800,-23.000,458.500,19.800,-23.000,6.798e+04 +2025,89.477198,10,446.600,32.600,4.9580,-445.700,-20.800,-19.100,445.700,20.800,-19.100,6.438e+04 +2025,89.478326,10,447.800,31.300,5.1850,-446.900,-22.500,-16.900,446.900,22.500,-16.900,5.934e+04 +2025,89.487640,10,456.800,34.300,5.0420,-456.000,-24.100,-12.900,456.000,24.100,-12.900,7.126e+04 +2025,89.495754,10,452.700,32.000,4.5110,-451.800,-25.000,-14.300,451.800,25.000,-14.300,6.203e+04 +2025,89.525989,10,454.400,31.500,4.8230,-453.500,-22.800,-17.400,453.500,22.800,-17.400,6.010e+04 +2025,89.538760,10,436.700,49.400,5.6910,-435.900,-14.200,-21.800,435.900,14.200,-21.800,1.478e+05 +2025,89.541089,10,435.400,34.600,5.0760,-434.800,-15.700,-15.000,434.800,15.700,-15.000,7.252e+04 +2025,89.574780,10,445.200,35.600,4.6500,-444.700,-20.800,-7.700,444.700,20.800,-7.700,7.677e+04 +2025,89.578310,10,440.500,34.900,4.8640,-440.000,-19.500,-8.700,440.000,19.500,-8.700,7.378e+04 +2025,89.636525,10,458.000,29.500,4.7980,-457.200,-25.200,-11.800,457.200,25.200,-11.800,5.271e+04 +2025,89.648131,10,447.800,34.300,5.1420,-446.900,-25.400,-10.400,446.900,25.400,-10.400,7.126e+04 +2025,89.695904,10,452.500,31.700,4.6330,-451.800,-17.300,-18.700,451.800,17.300,-18.700,6.087e+04 +2025,89.697068,10,458.100,35.800,5.3760,-458.000,-9.700,-3.500,458.000,9.700,-3.500,7.763e+04 +2025,89.706382,10,461.500,28.700,4.6540,-460.600,-25.400,-14.800,460.600,25.400,-14.800,4.989e+04 +2025,89.713368,10,451.600,29.200,4.7040,-450.800,-27.100,-3.200,450.800,27.100,-3.200,5.165e+04 +2025,89.730832,10,445.800,27.800,4.4530,-444.900,-28.300,0.800,444.900,28.300,0.800,4.681e+04 +2025,89.733161,10,440.900,27.700,4.4000,-439.800,-30.600,-6.500,439.800,30.600,-6.500,4.648e+04 +2025,89.735453,10,436.800,31.900,4.7770,-435.800,-28.500,-7.400,435.800,28.500,-7.400,6.164e+04 +2025,89.740110,10,435.100,29.700,4.1260,-434.000,-28.000,-10.700,434.000,28.000,-10.700,5.343e+04 +2025,89.793667,10,422.900,36.600,4.4650,-422.600,-12.400,-9.900,422.600,12.400,-9.900,8.114e+04 +2025,89.806475,10,432.000,36.600,4.6800,-431.300,-20.000,-16.400,431.300,20.000,-16.400,8.114e+04 +2025,89.815789,10,443.700,36.100,4.6600,-443.000,-21.600,-9.800,443.000,21.600,-9.800,7.894e+04 +2025,89.818118,10,439.800,37.100,4.5110,-439.300,-21.400,-1.700,439.300,21.400,-1.700,8.337e+04 +2025,89.827396,10,411.400,43.500,5.1740,-410.000,10.100,-32.500,410.000,-10.100,-32.500,1.146e+05 +2025,89.916974,10,423.000,44.400,5.5640,-422.800,-11.400,-5.500,422.800,11.400,-5.500,1.194e+05 +2025,89.922759,10,411.500,40.200,4.5360,-410.600,-10.900,-24.400,410.600,10.900,-24.400,9.789e+04 +2025,89.926252,10,444.700,36.500,4.5590,-444.300,-13.600,-12.000,444.300,13.600,-12.000,8.070e+04 +2025,89.930909,10,432.700,37.500,4.5480,-431.800,-17.000,-21.000,431.800,17.000,-21.000,8.518e+04 +2025,89.976316,10,439.000,34.600,5.0920,-438.100,-27.100,-9.600,438.100,27.100,-9.600,7.252e+04 +2025,89.990324,10,413.900,36.400,4.6170,-412.300,-31.600,-19.900,412.300,31.600,-19.900,8.026e+04 +2025,89.996145,10,414.500,36.600,4.8180,-413.200,-28.600,-17.700,413.200,28.600,-17.700,8.114e+04 +2025,89.998474,10,423.100,37.900,5.0800,-422.100,-24.000,-15.400,422.100,24.000,-15.400,8.701e+04 +2025,90.004295,10,418.500,35.800,4.7700,-417.300,-26.300,-16.200,417.300,26.300,-16.200,7.763e+04 +2025,90.120652,10,407.600,42.800,5.6220,-407.600,3.000,-3.700,407.600,-3.000,-3.700,1.110e+05 +2025,90.199824,10,415.000,34.700,5.1120,-413.500,-30.300,-19.200,413.500,30.300,-19.200,7.294e+04 +2025,90.247414,10,426.200,30.900,5.5860,-425.800,-18.300,-6.500,425.800,18.300,-6.500,5.784e+04 +2025,90.256729,10,432.900,32.400,5.7810,-432.800,-7.800,3.800,432.800,7.800,3.800,6.359e+04 +2025,90.263715,10,404.700,40.500,6.4070,-402.500,-25.500,-33.700,402.500,25.500,-33.700,9.936e+04 +2025,90.368465,10,413.600,19.300,4.6470,-411.300,-41.700,-12.500,411.300,41.700,-12.500,2.256e+04 +2025,90.376651,10,418.500,17.300,4.9330,-416.900,-36.300,-5.500,416.900,36.300,-5.500,1.813e+04 +2025,90.389459,10,419.300,18.900,4.7950,-418.000,-32.200,1.500,418.000,32.200,1.500,2.164e+04 +2025,90.392952,10,419.600,18.500,4.2600,-418.700,-27.200,5.700,418.700,27.200,5.700,2.073e+04 +2025,90.395280,10,419.500,18.900,4.7960,-418.300,-30.800,4.300,418.300,30.800,4.300,2.164e+04 +2025,90.438214,10,451.900,21.200,6.4960,-450.400,-32.600,-15.700,450.400,32.600,-15.700,2.722e+04 +2025,90.445199,10,451.000,20.500,6.1440,-449.500,-34.600,-14.000,449.500,34.600,-14.000,2.546e+04 +2025,90.743078,10,490.100,56.200,3.2000,-488.600,-35.500,-11.300,488.600,35.500,-11.300,1.913e+05 +2025,90.773240,10,501.000,48.700,2.5800,-498.800,-38.500,26.500,498.800,38.500,26.500,1.437e+05 +2025,91.216327,10,409.700,25.000,4.7000,-407.400,-43.100,-5.500,407.400,43.100,-5.500,3.786e+04 +2025,91.424554,10,404.100,25.200,5.0610,-402.300,-36.400,-11.300,402.300,36.400,-11.300,3.847e+04 +2025,91.673459,10,404.900,24.100,5.0080,-403.200,-9.500,-35.400,403.200,9.500,-35.400,3.518e+04 +2025,91.689796,10,415.700,21.900,4.4710,-413.800,-31.800,-22.900,413.800,31.800,-22.900,2.905e+04 +2025,91.804989,10,446.200,56.900,13.1070,-444.700,-10.400,34.700,444.700,10.400,34.700,1.961e+05 +2025,91.960603,10,430.000,59.600,10.7500,-428.700,0.600,33.600,428.700,-0.600,33.600,2.152e+05 +2025,91.962932,10,445.500,56.600,10.2220,-440.600,28.400,59.400,440.600,-28.400,59.400,1.941e+05 +2025,91.973410,10,445.100,57.200,11.0390,-443.700,5.900,34.200,443.700,-5.900,34.200,1.982e+05 +2025,92.007248,10,425.800,54.700,10.6870,-419.700,72.200,-2.500,419.700,-72.200,-2.500,1.812e+05 +2025,92.049089,10,421.300,56.000,9.5590,-419.200,17.900,38.000,419.200,-17.900,38.000,1.900e+05 +2025,92.063025,10,416.400,53.100,10.9530,-415.800,-6.200,22.500,415.800,6.200,22.500,1.708e+05 +2025,92.065353,10,420.900,52.100,10.1650,-420.500,-15.300,12.600,420.500,15.300,12.600,1.644e+05 +2025,92.129389,10,420.400,44.500,9.1070,-416.700,13.700,53.700,416.700,-13.700,53.700,1.200e+05 +2025,92.132882,10,441.400,45.700,9.3320,-438.800,-2.700,47.500,438.800,2.700,47.500,1.265e+05 +2025,92.353880,10,455.300,26.800,8.3230,-453.100,-31.800,30.900,453.100,31.800,30.900,4.351e+04 +2025,92.376038,10,456.400,35.700,8.9930,-454.800,-30.200,23.600,454.800,30.200,23.600,7.720e+04 +2025,92.397032,10,471.700,31.200,9.7890,-468.600,-53.600,-7.900,468.600,53.600,-7.900,5.896e+04 +2025,92.398196,10,471.800,29.000,9.7970,-469.300,-47.300,-6.400,469.300,47.300,-6.400,5.094e+04 +2025,92.424866,10,451.300,25.300,6.6330,-450.400,-25.400,-13.500,450.400,25.400,-13.500,3.877e+04 +2025,92.427195,10,448.600,27.800,7.2920,-447.900,-23.400,-8.400,447.900,23.400,-8.400,4.681e+04 +2025,92.438838,10,450.100,29.800,8.6400,-449.300,-27.100,0.400,449.300,27.100,0.400,5.379e+04 +2025,92.465616,10,451.900,25.900,7.7340,-451.300,-22.500,-4.100,451.300,22.500,-4.100,4.063e+04 +2025,92.492468,10,457.900,27.600,7.4990,-456.700,-31.400,-12.000,456.700,31.400,-12.000,4.614e+04 +2025,92.493632,10,456.500,25.600,7.9700,-455.000,-33.100,-15.800,455.000,33.100,-15.800,3.970e+04 +2025,92.551702,10,449.100,25.800,7.1430,-447.700,-28.600,-22.800,447.700,28.600,-22.800,4.032e+04 +2025,92.562180,10,450.600,27.200,8.5050,-449.200,-31.900,-16.700,449.200,31.900,-16.700,4.481e+04 +2025,92.569130,10,448.200,26.500,9.2550,-447.100,-24.000,-19.500,447.100,24.000,-19.500,4.254e+04 +2025,92.574951,10,443.100,27.800,11.2090,-441.500,-13.100,-34.200,441.500,13.100,-34.200,4.681e+04 +2025,92.580773,10,442.900,27.700,11.1990,-441.200,-13.000,-37.400,441.200,13.000,-37.400,4.648e+04 +2025,92.581937,10,445.000,28.600,11.6870,-443.300,-10.500,-37.600,443.300,10.500,-37.600,4.955e+04 +2025,92.590051,10,440.900,26.700,11.4310,-439.300,-13.900,-35.100,439.300,13.900,-35.100,4.318e+04 +2025,92.594708,10,443.000,27.000,11.6790,-440.600,-11.100,-44.800,440.600,11.100,-44.800,4.416e+04 +2025,92.624943,10,443.000,26.200,9.8740,-441.900,-16.800,-26.800,441.900,16.800,-26.800,4.158e+04 +2025,92.633130,10,440.600,26.600,9.1830,-439.400,-12.400,-30.600,439.400,12.400,-30.600,4.286e+04 +2025,92.648302,10,447.300,21.000,7.7100,-446.200,-27.100,-16.100,446.200,27.100,-16.100,2.671e+04 +2025,92.670387,10,446.000,21.900,8.0000,-444.800,-28.800,-16.600,444.800,28.800,-16.600,2.905e+04 +2025,92.691272,10,440.200,25.200,10.4960,-439.300,-21.100,-19.600,439.300,21.100,-19.600,3.847e+04 +2025,92.720379,10,434.600,26.100,11.9250,-433.800,-19.600,-17.800,433.800,19.600,-17.800,4.126e+04 +2025,92.725036,10,433.300,23.900,8.1740,-432.500,-23.800,-10.700,432.500,23.800,-10.700,3.460e+04 +2025,92.741373,10,430.400,24.700,8.9840,-429.200,-19.800,-24.600,429.200,19.800,-24.600,3.696e+04 +2025,92.746066,10,433.000,24.900,9.5380,-431.800,-21.400,-23.300,431.800,21.400,-23.300,3.756e+04 +2025,92.782086,10,434.200,20.400,6.3630,-433.500,-14.700,-17.800,433.500,14.700,-17.800,2.521e+04 +2025,92.783251,10,430.600,21.300,6.3070,-430.100,-13.100,-18.000,430.100,13.100,-18.000,2.748e+04 +2025,92.820471,10,437.600,20.100,4.9480,-437.000,-9.600,-20.200,437.000,9.600,-20.200,2.447e+04 +2025,92.829786,10,431.100,21.800,5.7760,-429.700,-21.500,-26.900,429.700,21.500,-26.900,2.879e+04 +2025,92.843830,10,435.600,28.400,5.8000,-434.300,-20.200,-26.600,434.300,20.200,-26.600,4.886e+04 +2025,92.978779,10,422.600,41.000,5.5530,-422.300,-7.300,-12.200,422.300,7.300,-12.200,1.018e+05 +2025,92.989221,10,446.700,36.400,7.7790,-446.400,-4.200,-15.300,446.400,4.200,-15.300,8.026e+04 +2025,92.998499,10,480.600,31.500,5.5210,-479.500,-17.000,-28.000,479.500,17.000,-28.000,6.010e+04 +2025,93.005485,10,459.800,38.100,3.7680,-459.500,13.500,-10.000,459.500,-13.500,-10.000,8.793e+04 +2025,93.054422,10,450.800,32.600,6.7790,-450.500,-11.300,-10.600,450.500,11.300,-10.600,6.438e+04 +2025,93.181185,10,438.800,31.500,8.2900,-435.400,-7.300,-53.500,435.400,7.300,-53.500,6.010e+04 +2025,93.188134,10,433.000,34.800,8.2550,-430.600,-15.800,-42.700,430.600,15.800,-42.700,7.336e+04 +2025,93.189298,10,437.900,35.100,9.1120,-435.500,-16.100,-43.100,435.500,16.100,-43.100,7.463e+04 +2025,93.191627,10,422.000,32.800,7.0350,-418.500,10.400,-53.100,418.500,-10.400,-53.100,6.517e+04 +2025,93.206763,10,441.900,32.900,8.3140,-441.600,-2.500,17.000,441.600,2.500,17.000,6.557e+04 +2025,93.207927,10,440.700,31.600,8.4390,-440.000,15.000,19.400,440.000,-15.000,19.400,6.049e+04 +2025,93.219570,10,453.600,36.000,7.5700,-453.100,-21.400,4.300,453.100,21.400,4.300,7.850e+04 +2025,93.238126,10,442.500,36.200,8.8840,-441.700,-18.800,-17.200,441.700,18.800,-17.200,7.938e+04 +2025,93.243911,10,449.700,37.200,9.0880,-442.700,32.500,-71.800,442.700,-32.500,-71.800,8.382e+04 +2025,93.250860,10,455.900,42.700,7.7210,-453.300,-14.200,-47.000,453.300,14.200,-47.000,1.104e+05 +2025,93.257846,10,439.300,44.900,8.9310,-435.900,-10.100,-54.200,435.900,10.100,-54.200,1.221e+05 +2025,93.268324,10,443.100,42.500,7.8560,-441.600,-15.500,-33.400,441.600,15.500,-33.400,1.094e+05 +2025,93.289354,10,451.900,38.500,6.9850,-451.900,-3.500,0.600,451.900,3.500,0.600,8.979e+04 +2025,93.319662,10,450.900,36.200,7.3660,-450.900,0.400,1.800,450.900,-0.400,1.800,7.938e+04 +2025,93.331232,10,456.300,34.500,9.0870,-455.400,-0.100,-28.400,455.400,0.100,-28.400,7.210e+04 +2025,93.353281,10,456.800,32.900,8.9260,-453.800,21.400,-48.000,453.800,-21.400,-48.000,6.557e+04 +2025,93.363760,10,449.400,42.200,9.4820,-448.900,9.400,-20.000,448.900,-9.400,-20.000,1.079e+05 +2025,93.380096,10,448.300,38.600,9.8190,-446.500,2.600,-40.200,446.500,-2.600,-40.200,9.025e+04 +2025,93.383589,10,441.300,37.300,8.7310,-440.100,3.000,-33.000,440.100,-3.000,-33.000,8.428e+04 +2025,93.410405,10,434.600,32.600,10.1620,-434.000,14.800,-16.900,434.000,-14.800,-16.900,6.438e+04 +2025,93.415062,10,436.300,38.400,9.1460,-435.400,-1.400,-26.700,435.400,1.400,-26.700,8.932e+04 +2025,93.440603,10,448.400,40.600,10.6790,-446.500,-3.900,-40.900,446.500,3.900,-40.900,9.985e+04 +2025,93.461524,10,431.100,35.500,9.2380,-430.300,-8.600,-24.300,430.300,8.600,-24.300,7.634e+04 +2025,93.489504,10,423.300,40.200,9.9080,-423.300,4.800,-6.700,423.300,-4.800,-6.700,9.789e+04 +2025,93.503475,10,420.400,38.900,9.0570,-419.700,20.000,-13.100,419.700,-20.000,-13.100,9.166e+04 +2025,93.512790,10,430.300,37.100,8.6650,-430.200,4.600,0.400,430.200,-4.600,0.400,8.337e+04 +2025,93.517447,10,428.400,36.200,8.8580,-428.400,6.600,1.200,428.400,-6.600,1.200,7.938e+04 +2025,93.531346,10,429.100,36.500,8.8690,-429.000,2.300,4.500,429.000,-2.300,4.500,8.070e+04 +2025,93.533674,10,425.800,35.400,8.4250,-425.800,-2.100,4.200,425.800,2.100,4.200,7.591e+04 +2025,93.549938,10,430.800,41.800,11.4380,-430.100,21.700,-10.500,430.100,-21.700,-10.500,1.058e+05 +2025,93.556924,10,430.200,42.500,10.8500,-430.000,3.200,-11.300,430.000,-3.200,-11.300,1.094e+05 +2025,93.559252,10,429.800,40.800,9.3360,-429.500,-4.100,-14.500,429.500,4.100,-14.500,1.008e+05 +2025,93.573260,10,428.600,42.200,11.0420,-428.500,-1.900,-9.300,428.500,1.900,-9.300,1.079e+05 +2025,93.616375,10,417.700,44.700,12.6190,-417.100,13.500,-17.000,417.100,-13.500,-17.000,1.210e+05 +2025,93.655852,10,449.600,46.700,14.9060,-449.300,-11.700,-9.400,449.300,11.700,-9.400,1.321e+05 +2025,93.667494,10,447.100,46.200,14.8590,-446.600,-15.100,-13.900,446.600,15.100,-13.900,1.293e+05 +2025,93.689689,10,452.000,46.700,13.1720,-451.700,-12.600,-7.500,451.700,12.600,-7.500,1.321e+05 +2025,93.690853,10,458.900,44.200,14.8840,-458.900,-5.900,-3.800,458.900,5.900,-3.800,1.183e+05 +2025,93.693182,10,449.400,45.900,14.6050,-449.000,-13.800,-11.300,449.000,13.800,-11.300,1.276e+05 +2025,93.699003,10,456.800,45.900,14.8760,-455.800,-13.600,-27.000,455.800,13.600,-27.000,1.276e+05 +2025,93.708317,10,438.300,46.800,14.6320,-438.000,-13.700,-9.800,438.000,13.700,-9.800,1.327e+05 +2025,93.730366,10,449.700,42.100,16.9060,-449.600,-1.000,9.800,449.600,1.000,9.800,1.074e+05 +2025,93.757109,10,447.400,42.000,15.8630,-446.900,-6.300,18.200,446.900,6.300,18.200,1.069e+05 +2025,93.760601,10,451.700,37.300,14.8560,-451.400,0.800,16.400,451.400,-0.800,16.400,8.428e+04 +2025,93.808410,10,451.800,34.000,16.0910,-451.400,-12.700,11.900,451.400,12.700,11.900,7.002e+04 +2025,93.810739,10,450.300,32.400,16.3160,-450.000,-13.700,8.300,450.000,13.700,8.300,6.359e+04 +2025,93.821181,10,442.300,38.100,17.3930,-442.100,-13.000,9.100,442.100,13.000,9.100,8.793e+04 +2025,93.840901,10,446.500,30.500,21.1660,-445.200,-33.800,3.100,445.200,33.800,3.100,5.635e+04 +2025,93.851380,10,447.400,31.700,20.7670,-445.600,-40.100,-2.200,445.600,40.100,-2.200,6.087e+04 +2025,93.892203,10,456.400,48.800,21.9580,-456.300,1.800,-9.700,456.300,-1.800,-9.700,1.443e+05 +2025,93.898025,10,459.300,51.000,18.3900,-459.100,-0.600,-13.900,459.100,0.600,-13.900,1.576e+05 +2025,93.916617,10,459.500,46.200,22.9880,-459.400,-0.300,-11.400,459.400,0.300,-11.400,1.293e+05 +2025,93.929351,10,475.900,52.300,16.9690,-475.800,8.000,-3.700,475.800,-8.000,-3.700,1.657e+05 +2025,93.931680,10,486.200,53.200,22.2880,-486.100,-3.300,11.400,486.100,3.300,11.400,1.714e+05 +2025,93.934009,10,490.900,50.400,21.9040,-490.700,-3.700,14.300,490.700,3.700,14.300,1.539e+05 +2025,93.957258,10,458.700,57.900,11.3450,-458.300,-11.800,14.300,458.300,11.800,14.300,2.031e+05 +2025,93.959587,10,458.700,53.200,8.7460,-458.300,-13.600,11.800,458.300,13.600,11.800,1.714e+05 +2025,93.973522,10,464.200,51.100,7.6680,-463.900,-14.900,8.300,463.900,14.900,8.300,1.582e+05 +2025,93.978179,10,465.600,45.800,7.7280,-465.200,-13.900,12.900,465.200,13.900,12.900,1.271e+05 +2025,93.994406,10,454.900,47.000,7.5470,-454.500,-19.300,5.800,454.500,19.300,5.800,1.338e+05 +2025,93.996735,10,435.400,48.100,7.4080,-435.100,-12.900,8.100,435.100,12.900,8.100,1.401e+05 +2025,94.007177,10,435.200,42.500,7.1770,-434.700,-19.700,5.000,434.700,19.700,5.000,1.094e+05 +2025,94.024642,10,450.800,59.900,8.3680,-450.100,-18.600,14.200,450.100,18.600,14.200,2.173e+05 +2025,94.044471,10,470.100,43.800,8.4330,-469.300,-27.800,-1.500,469.300,27.800,-1.500,1.162e+05 +2025,94.051457,10,482.900,54.000,10.1460,-482.300,-23.300,-3.300,482.300,23.300,-3.300,1.766e+05 +2025,94.057278,10,492.400,47.700,11.2930,-492.000,-10.900,-16.600,492.000,10.900,-16.600,1.378e+05 +2025,94.060771,10,480.000,51.500,11.8310,-479.400,-21.600,-13.100,479.400,21.600,-13.100,1.607e+05 +2025,94.070086,10,467.500,48.800,9.7120,-466.700,-25.800,7.000,466.700,25.800,7.000,1.443e+05 +2025,94.108398,10,520.900,69.100,9.0590,-520.900,-0.800,-2.900,520.900,0.800,-2.900,2.892e+05 +2025,94.117712,10,524.900,63.400,7.7160,-524.800,1.000,-10.300,524.800,-1.000,-10.300,2.435e+05 +2025,94.118877,10,525.500,64.900,8.6460,-525.400,6.500,-9.300,525.400,-6.500,-9.300,2.551e+05 +2025,94.120041,10,527.400,63.400,7.4170,-527.300,10.700,-4.300,527.300,-10.700,-4.300,2.435e+05 +2025,94.122370,10,526.800,66.100,9.2680,-526.400,18.600,-7.800,526.400,-18.600,-7.800,2.647e+05 +2025,94.225883,10,471.900,52.200,7.6340,-468.600,-11.100,-54.600,468.600,11.100,-54.600,1.651e+05 +2025,94.296868,10,474.100,59.300,6.9330,-471.700,-41.800,-22.300,471.700,41.800,-22.300,2.130e+05 +2025,94.316661,10,477.700,48.000,9.5020,-474.900,-47.500,-19.600,474.900,47.500,-19.600,1.396e+05 +2025,94.406239,10,504.800,52.900,8.7130,-502.900,-29.800,-32.400,502.900,29.800,-32.400,1.695e+05 +2025,94.438731,10,504.600,80.300,5.9700,-504.200,-3.100,20.700,504.200,3.100,20.700,3.906e+05 +2025,94.898335,10,548.900,71.700,5.5580,-546.900,-36.600,-29.500,546.900,36.600,-29.500,3.114e+05 +2025,94.899499,10,553.600,65.900,5.4710,-548.900,-17.000,-69.600,548.900,17.000,-69.600,2.631e+05 +2025,95.075235,10,610.400,88.100,3.8690,-608.900,-22.700,-36.400,608.900,22.700,-36.400,4.701e+05 +2025,95.114348,10,669.600,111.100,4.1120,-668.400,35.600,-18.500,668.400,-35.600,-18.500,7.477e+05 +2025,96.668243,10,627.700,74.600,1.8130,-627.600,-1.900,-5.500,627.600,1.900,-5.500,3.371e+05 +2025,97.450829,10,540.400,57.700,2.5070,-540.100,-15.800,9.300,540.100,15.800,9.300,2.017e+05 +2025,97.545136,10,551.100,46.400,3.1600,-550.800,-18.500,-6.000,550.800,18.500,-6.000,1.304e+05 +2025,97.583485,10,546.500,45.700,2.6800,-545.900,-21.500,-14.100,545.900,21.500,-14.100,1.265e+05 +2025,97.585813,10,566.800,46.500,2.9860,-566.100,-15.900,-22.700,566.100,15.900,-22.700,1.310e+05 +2025,97.645192,10,538.900,39.800,2.9600,-537.000,-32.800,-30.600,537.000,32.800,-30.600,9.595e+04 +2025,97.652141,10,537.200,41.700,3.0250,-535.500,-32.400,-28.200,535.500,32.400,-28.200,1.053e+05 +2025,97.655634,10,543.400,42.700,3.1090,-541.100,-31.000,-39.400,541.100,31.000,-39.400,1.104e+05 +2025,97.656798,10,548.800,42.700,3.4080,-547.100,-28.500,-32.800,547.100,28.500,-32.800,1.104e+05 +2025,97.667241,10,538.400,40.000,2.9610,-537.300,-30.500,-16.200,537.300,30.500,-16.200,9.692e+04 +2025,97.670733,10,530.800,46.000,3.4750,-528.500,-25.500,-42.900,528.500,25.500,-42.900,1.282e+05 +2025,97.731131,10,493.400,54.500,3.7630,-490.500,-15.900,-50.800,490.500,15.900,-50.800,1.799e+05 +2025,97.741610,10,537.400,47.200,3.2620,-534.400,-11.500,-56.300,534.400,11.500,-56.300,1.349e+05 +2025,97.759038,10,522.800,49.400,3.2950,-520.800,-35.100,-29.300,520.800,35.100,-29.300,1.478e+05 +2025,97.854437,10,501.100,40.500,3.7980,-499.200,-31.900,-30.200,499.200,31.900,-30.200,9.936e+04 +2025,97.856729,10,503.200,37.900,3.6230,-501.300,-31.900,-29.400,501.300,31.900,-29.400,8.701e+04 +2025,97.857893,10,503.700,41.800,3.9420,-501.800,-29.400,-33.000,501.800,29.400,-33.000,1.058e+05 +2025,97.870664,10,513.900,39.300,3.8540,-512.500,-29.900,-23.300,512.500,29.900,-23.300,9.356e+04 +2025,97.871829,10,511.600,41.600,3.9980,-510.400,-30.300,-16.800,510.400,30.300,-16.800,1.048e+05 +2025,97.890421,10,509.600,36.500,3.5000,-507.800,-24.200,-35.900,507.800,24.200,-35.900,8.070e+04 +2025,97.904392,10,515.100,38.900,3.5200,-513.700,-25.900,-28.900,513.700,25.900,-28.900,9.166e+04 +2025,97.905557,10,516.200,36.000,3.6150,-514.000,-30.100,-36.200,514.000,30.100,-36.200,7.850e+04 +2025,97.919565,10,506.300,35.400,3.6970,-503.800,-33.600,-36.800,503.800,33.600,-36.800,7.591e+04 +2025,97.937065,10,473.100,55.400,3.9690,-471.400,-18.200,-35.800,471.400,18.200,-35.800,1.859e+05 +2025,98.012672,10,444.300,41.000,3.4650,-443.700,-6.700,-23.000,443.700,6.700,-23.000,1.018e+05 +2025,98.013836,10,441.600,38.900,3.4340,-441.100,-8.400,-20.000,441.100,8.400,-20.000,9.166e+04 +2025,98.020822,10,454.500,45.600,3.3070,-453.900,-2.700,-23.000,453.900,2.700,-23.000,1.260e+05 +2025,98.033665,10,450.600,43.000,3.3830,-449.900,-6.800,-22.800,449.900,6.800,-22.800,1.120e+05 +2025,98.058043,10,497.900,41.500,3.8330,-496.300,-31.600,-25.500,496.300,31.600,-25.500,1.043e+05 +2025,98.103378,10,500.000,44.600,4.9460,-497.400,-43.500,-26.400,497.400,43.500,-26.400,1.205e+05 +2025,98.105706,10,492.800,42.600,4.7830,-490.500,-43.600,-19.000,490.500,43.600,-19.000,1.099e+05 +2025,98.112655,10,492.700,49.700,4.7040,-490.100,-41.800,-28.100,490.100,41.800,-28.100,1.496e+05 +2025,98.266197,10,490.100,68.100,7.4160,-486.900,29.800,-48.300,486.900,-29.800,-48.300,2.809e+05 +2025,98.297669,10,499.000,56.700,8.9000,-498.600,7.000,-19.600,498.600,-7.000,-19.600,1.947e+05 +2025,98.303454,10,501.600,68.000,6.5600,-501.200,6.400,-17.800,501.200,-6.400,-17.800,2.801e+05 +2025,98.306947,10,496.100,63.300,6.4490,-495.600,5.200,-22.500,495.600,-5.200,-22.500,2.427e+05 +2025,98.322047,10,487.900,59.300,6.8630,-487.200,19.900,-17.600,487.200,-19.900,-17.600,2.130e+05 +2025,98.335982,10,494.600,56.500,7.4870,-493.900,-4.500,-25.700,493.900,4.500,-25.700,1.934e+05 +2025,98.353446,10,516.800,45.300,6.6650,-515.800,-8.400,-30.900,515.800,8.400,-30.900,1.243e+05 +2025,98.363961,10,509.300,50.700,6.2050,-508.500,-3.600,-28.300,508.500,3.600,-28.300,1.557e+05 +2025,98.369783,10,511.100,50.000,6.5730,-510.500,-3.300,-23.900,510.500,3.300,-23.900,1.514e+05 +2025,98.372111,10,511.100,50.800,6.3310,-510.800,0.400,-17.100,510.800,-0.400,-17.100,1.563e+05 +2025,98.377969,10,515.700,49.700,5.2650,-514.500,-12.200,-33.300,514.500,12.200,-33.300,1.496e+05 +2025,98.407040,10,479.900,56.900,5.6140,-479.200,7.700,-23.900,479.200,-7.700,-23.900,1.961e+05 +2025,98.412825,10,485.800,53.400,5.4070,-485.600,8.300,-10.900,485.600,-8.300,-10.900,1.727e+05 +2025,98.416318,10,484.200,53.700,5.2040,-483.500,20.400,-14.700,483.500,-20.400,-14.700,1.747e+05 +2025,98.444188,10,509.300,54.100,4.3990,-508.900,-20.400,-7.700,508.900,20.400,-7.700,1.773e+05 +2025,98.446517,10,511.100,50.300,4.5230,-510.600,-22.100,-4.000,510.600,22.100,-4.000,1.533e+05 +2025,98.451174,10,512.500,47.000,4.6190,-512.200,-8.700,14.800,512.200,8.700,14.800,1.338e+05 +2025,98.520922,10,552.100,59.400,5.6030,-543.200,-25.800,-95.400,543.200,25.800,-95.400,2.137e+05 +2025,98.590743,10,512.400,47.600,5.4280,-510.500,-27.200,35.200,510.500,27.200,35.200,1.372e+05 +2025,98.604678,10,504.900,47.000,5.0570,-503.200,-32.700,25.700,503.200,32.700,25.700,1.338e+05 +2025,98.638551,10,513.700,49.400,5.7230,-511.900,-4.400,43.000,511.900,4.400,43.000,1.478e+05 +2025,98.639716,10,517.800,51.500,5.3520,-516.100,-5.700,41.300,516.100,5.700,41.300,1.607e+05 +2025,98.665294,10,508.400,69.100,6.6260,-508.200,12.300,5.500,508.200,-12.300,5.500,2.892e+05 +2025,98.726965,10,521.200,71.200,6.9140,-518.300,51.600,20.100,518.300,-51.600,20.100,3.071e+05 +2025,98.745630,10,529.300,65.300,7.1010,-527.400,45.100,-2.500,527.400,-45.100,-2.500,2.583e+05 +2025,98.761930,10,536.600,60.600,9.3080,-535.600,22.500,-24.600,535.600,-22.500,-24.600,2.224e+05 +2025,98.813013,10,547.500,58.100,5.2620,-544.600,-35.300,-43.700,544.600,35.300,-43.700,2.045e+05 +2025,99.813541,10,564.600,61.600,2.5490,-558.500,-4.000,82.600,558.500,4.000,82.600,2.299e+05 +2025,100.360577,10,503.300,48.700,3.1800,-499.800,-38.500,44.600,499.800,38.500,44.600,1.437e+05 +2025,100.362906,10,502.700,47.000,2.8350,-499.900,-42.700,31.000,499.900,42.700,31.000,1.338e+05 +2025,100.397725,10,487.300,43.700,3.3170,-485.200,-19.000,41.500,485.200,19.000,41.500,1.157e+05 +2025,100.402383,10,492.800,42.900,3.2530,-490.800,-19.700,38.800,490.800,19.700,38.800,1.115e+05 +2025,100.430289,10,482.600,43.200,3.4070,-481.200,-16.000,33.200,481.200,16.000,33.200,1.130e+05 +2025,100.443024,10,488.600,45.700,3.6610,-486.900,-12.500,38.600,486.900,12.500,38.600,1.265e+05 +2025,100.456959,10,477.000,46.400,3.6200,-476.000,-19.700,24.100,476.000,19.700,24.100,1.304e+05 +2025,100.476788,10,479.600,36.800,3.8340,-478.400,-16.300,30.100,478.400,16.300,30.100,8.203e+04 +2025,100.539551,10,483.900,35.200,3.4840,-482.800,-13.400,30.300,482.800,13.400,30.300,7.505e+04 +2025,100.543044,10,487.000,34.200,3.3420,-486.000,-12.700,28.900,486.000,12.700,28.900,7.085e+04 +2025,100.554687,10,482.600,36.500,3.6750,-481.300,-10.200,33.600,481.300,10.200,33.600,8.070e+04 +2025,100.559344,10,486.200,40.500,4.1700,-484.700,-21.100,33.000,484.700,21.100,33.000,9.936e+04 +2025,100.566330,10,494.500,38.100,3.6420,-493.200,-12.900,33.400,493.200,12.900,33.400,8.793e+04 +2025,100.567494,10,496.400,40.300,4.1380,-495.000,-17.600,32.500,495.000,17.600,32.500,9.838e+04 +2025,100.579173,10,488.200,34.100,3.4030,-487.300,-26.400,9.700,487.300,26.400,9.700,7.044e+04 +2025,100.587360,10,491.300,38.400,3.7860,-490.400,-20.200,22.300,490.400,20.200,22.300,8.932e+04 +2025,100.595510,10,482.900,36.300,3.7580,-481.600,-17.000,30.000,481.600,17.000,30.000,7.982e+04 +2025,100.700260,10,460.900,39.700,4.5950,-457.700,-0.500,-54.400,457.700,0.500,-54.400,9.547e+04 +2025,100.735115,10,458.900,39.300,4.5650,-455.800,13.200,-50.900,455.800,-13.200,-50.900,9.356e+04 +2025,100.736280,10,462.700,39.200,4.4280,-459.400,14.100,-53.500,459.400,-14.100,-53.500,9.308e+04 +2025,100.821236,10,458.600,36.300,4.2790,-456.400,-34.500,-27.900,456.400,34.500,-27.900,7.982e+04 +2025,100.822400,10,450.900,37.400,4.9870,-448.800,-34.100,-26.400,448.800,34.100,-26.400,8.473e+04 +2025,100.845613,10,455.300,35.300,4.1680,-451.200,1.600,-61.300,451.200,-1.600,-61.300,7.548e+04 +2025,100.875848,10,464.400,31.400,4.5820,-460.200,18.600,-60.100,460.200,-18.600,-60.100,5.972e+04 +2025,100.896733,10,469.800,32.500,4.5630,-465.600,12.900,-61.300,465.600,-12.900,-61.300,6.398e+04 +2025,100.968882,10,455.300,37.500,4.9240,-451.900,-38.300,40.000,451.900,38.300,40.000,8.518e+04 +2025,101.007231,10,453.500,39.700,5.1850,-450.600,-47.200,19.500,450.600,47.200,19.500,9.547e+04 +2025,101.583119,10,473.400,63.300,4.9380,-469.400,43.300,43.900,469.400,-43.300,43.900,2.427e+05 +2025,101.593562,10,472.900,63.400,4.3880,-469.700,33.100,44.300,469.700,-33.100,44.300,2.435e+05 +2025,101.628417,10,471.100,59.500,4.1370,-468.700,4.300,46.800,468.700,-4.300,46.800,2.144e+05 +2025,101.633074,10,480.700,60.400,3.6970,-478.000,11.200,49.600,478.000,-11.200,49.600,2.210e+05 +2025,101.642425,10,467.400,55.200,3.9850,-464.200,12.000,53.800,464.200,-12.000,53.800,1.846e+05 +2025,101.872627,10,457.600,56.900,3.6490,-455.200,-31.300,-35.200,455.200,31.300,-35.200,1.961e+05 +2025,102.326374,10,407.300,36.400,3.0990,-399.400,-34.900,71.900,399.400,34.900,71.900,8.026e+04 +2025,102.331031,10,408.700,34.500,3.0710,-403.200,-38.700,54.900,403.200,38.700,54.900,7.210e+04 +2025,102.334524,10,404.600,34.400,2.9500,-397.600,-43.000,61.400,397.600,43.000,61.400,7.168e+04 +2025,102.688176,10,488.400,58.600,7.3670,-488.300,6.500,-11.400,488.300,-6.500,-11.400,2.080e+05 +2025,102.739478,10,478.400,55.700,8.4140,-477.800,-18.200,17.000,477.800,18.200,17.000,1.879e+05 +2025,102.876719,10,516.900,64.300,5.5190,-516.100,9.400,-27.900,516.100,-9.400,-27.900,2.504e+05 +2025,102.946613,10,510.500,54.100,4.6510,-510.400,2.200,-11.100,510.400,-2.200,-11.100,1.773e+05 +2025,103.039756,10,535.500,51.500,6.0670,-534.400,20.200,-27.100,534.400,-20.200,-27.100,1.607e+05 +2025,103.050198,10,536.700,52.200,6.2720,-534.400,43.400,-22.300,534.400,-43.400,-22.300,1.651e+05 +2025,103.051362,10,533.700,48.600,6.2880,-531.500,43.500,-21.400,531.500,-43.500,-21.400,1.431e+05 +2025,103.102482,10,538.600,54.400,5.0960,-538.500,12.300,4.700,538.500,-12.300,4.700,1.793e+05 +2025,103.124531,10,522.000,48.800,5.0790,-521.200,2.300,-28.600,521.200,-2.300,-28.600,1.443e+05 +2025,103.129188,10,517.100,48.400,5.2930,-515.800,5.100,-36.600,515.800,-5.100,-36.600,1.419e+05 +2025,103.152401,10,538.100,48.200,5.2460,-537.900,-1.600,-12.200,537.900,1.600,-12.200,1.407e+05 +2025,103.158223,10,529.400,50.000,5.5650,-528.000,16.600,-35.300,528.000,-16.600,-35.300,1.514e+05 +2025,103.184965,10,538.900,44.300,4.6880,-538.400,1.000,-23.400,538.400,-1.000,-23.400,1.189e+05 +2025,103.261772,10,527.700,48.000,4.2140,-527.700,2.800,-2.200,527.700,-2.800,-2.200,1.396e+05 +2025,103.378164,10,527.800,40.700,3.9040,-526.800,9.800,-30.900,526.800,-9.800,-30.900,1.003e+05 +2025,103.527047,10,491.700,40.800,4.2080,-491.200,9.400,-19.400,491.200,-9.400,-19.400,1.008e+05 +2025,103.557428,10,482.700,41.300,3.9050,-482.500,2.700,-13.700,482.500,-2.700,-13.700,1.033e+05 +2025,103.707476,10,454.900,31.600,3.8200,-454.500,-7.700,-19.300,454.500,7.700,-19.300,6.049e+04 +2025,103.771475,10,451.800,30.400,4.9180,-451.000,-4.100,-26.100,451.000,4.100,-26.100,5.598e+04 +2025,103.772603,10,449.800,30.300,4.9520,-449.100,-1.500,-25.900,449.100,1.500,-25.900,5.561e+04 +2025,103.776095,10,449.800,31.200,4.8200,-449.100,2.700,-25.300,449.100,-2.700,-25.300,5.896e+04 +2025,103.777260,10,456.300,31.700,4.8740,-455.500,1.200,-26.600,455.500,-1.200,-26.600,6.087e+04 +2025,103.778424,10,457.000,30.700,4.7460,-456.200,3.000,-27.100,456.200,-3.000,-27.100,5.709e+04 +2025,103.824959,10,432.400,36.600,5.4510,-431.500,-23.800,-11.900,431.500,23.800,-11.900,8.114e+04 +2025,103.844752,10,432.100,34.800,5.0180,-431.400,-14.700,-18.000,431.400,14.700,-18.000,7.336e+04 +2025,103.877243,10,427.800,34.300,5.9030,-426.400,-28.300,-18.500,426.400,28.300,-18.500,7.126e+04 +2025,103.879571,10,425.100,34.300,5.6270,-423.900,-24.700,-18.800,423.900,24.700,-18.800,7.126e+04 +2025,103.956451,10,439.200,33.300,5.9340,-437.600,-15.400,35.000,437.600,15.400,35.000,6.717e+04 +2025,103.996000,10,427.900,35.000,6.3080,-426.400,-20.100,29.600,426.400,20.100,29.600,7.420e+04 +2025,103.998329,10,437.700,41.100,6.7030,-436.200,-36.000,-1.000,436.200,36.000,-1.000,1.023e+05 +2025,104.010008,10,439.500,44.200,5.2500,-437.800,-27.700,26.600,437.800,27.700,26.600,1.183e+05 +2025,104.031002,10,405.200,46.200,5.4860,-405.000,-2.600,11.900,405.000,2.600,11.900,1.293e+05 +2025,104.041444,10,459.400,42.200,7.1870,-458.200,-18.400,-27.500,458.200,18.400,-27.500,1.079e+05 +2025,104.058872,10,439.400,40.300,7.3180,-437.800,-36.700,-9.900,437.800,36.700,-9.900,9.838e+04 +2025,104.061164,10,421.200,43.700,6.5270,-419.600,-26.500,26.300,419.600,26.500,26.300,1.157e+05 +2025,104.096093,10,437.600,37.800,7.2770,-436.500,-22.600,-22.100,436.500,22.600,-22.100,8.655e+04 +2025,104.141537,10,452.500,33.100,7.3960,-451.300,-26.200,-20.100,451.300,26.200,-20.100,6.637e+04 +2025,104.148522,10,459.600,34.200,7.9980,-458.600,-14.100,-27.400,458.600,14.100,-27.400,7.085e+04 +2025,104.155472,10,451.500,33.100,6.7040,-450.900,-16.600,-16.900,450.900,16.600,-16.900,6.637e+04 +2025,104.157800,10,451.100,33.200,6.5780,-450.600,-15.000,-14.100,450.600,15.000,-14.100,6.677e+04 +2025,104.178685,10,424.700,33.500,6.7080,-423.700,-15.400,24.700,423.700,15.400,24.700,6.798e+04 +2025,104.192693,10,438.400,49.400,6.9860,-438.400,-2.600,3.500,438.400,2.600,3.500,1.478e+05 +2025,104.197350,10,440.600,39.400,5.6320,-440.500,-8.900,1.400,440.500,8.900,1.400,9.403e+04 +2025,104.210193,10,438.400,39.300,5.7820,-438.200,-11.600,3.400,438.200,11.600,3.400,9.356e+04 +2025,104.212522,10,444.400,39.200,5.9300,-444.200,-11.600,-0.000,444.200,11.600,-0.000,9.308e+04 +2025,104.218380,10,436.200,41.000,6.0620,-435.900,-13.300,8.200,435.900,13.300,8.200,1.018e+05 +2025,104.264842,10,436.200,38.000,5.2630,-435.900,-17.200,4.600,435.900,17.200,4.600,8.747e+04 +2025,104.267170,10,433.000,38.300,5.3080,-432.800,-13.000,2.500,432.800,13.000,2.500,8.886e+04 +2025,104.269499,10,439.000,37.600,5.2040,-438.800,-14.600,1.700,438.800,14.600,1.700,8.564e+04 +2025,104.270663,10,442.900,37.300,5.5260,-442.600,-15.100,0.800,442.600,15.100,0.800,8.428e+04 +2025,104.313778,10,450.500,35.700,4.7980,-450.400,0.600,-11.600,450.400,-0.600,-11.600,7.720e+04 +2025,104.339428,10,427.300,38.400,5.3850,-427.300,-6.000,3.400,427.300,6.000,3.400,8.932e+04 +2025,104.361441,10,428.500,34.500,4.6190,-428.300,-3.100,11.700,428.300,3.100,11.700,7.210e+04 +2025,104.375376,10,432.000,35.300,4.5710,-431.900,-4.800,0.100,431.900,4.800,0.100,7.548e+04 +2025,104.380033,10,435.000,39.500,4.7370,-434.900,-7.600,-4.500,434.900,7.600,-4.500,9.451e+04 +2025,104.382361,10,440.700,39.400,4.6890,-440.600,-7.300,-4.900,440.600,7.300,-4.900,9.403e+04 +2025,104.474267,10,435.100,35.700,4.7560,-434.800,-11.700,13.600,434.800,11.700,13.600,7.720e+04 +2025,104.497589,10,436.500,37.000,5.2110,-436.200,-13.100,-10.800,436.200,13.100,-10.800,8.293e+04 +2025,104.503411,10,440.800,37.900,5.3250,-440.300,-21.400,1.700,440.300,21.400,1.700,8.701e+04 +2025,104.518510,10,449.000,33.900,5.1000,-448.700,-16.400,3.700,448.700,16.400,3.700,6.961e+04 +2025,104.831412,10,395.400,32.700,5.3740,-394.900,-8.400,-18.200,394.900,8.400,-18.200,6.477e+04 +2025,104.869870,10,406.600,30.500,5.4010,-405.000,-5.100,-35.600,405.000,5.100,-35.600,5.635e+04 +2025,104.895412,10,395.300,31.700,4.9590,-394.500,-12.600,-20.400,394.500,12.600,-20.400,6.087e+04 +2025,104.957120,10,387.700,28.100,5.2040,-387.000,-19.600,-12.900,387.000,19.600,-12.900,4.783e+04 +2025,104.964105,10,396.900,26.400,5.3080,-396.100,-20.800,-11.400,396.100,20.800,-11.400,4.222e+04 +2025,104.997761,10,401.800,28.000,5.6120,-400.900,-26.100,-7.600,400.900,26.100,-7.600,4.749e+04 +2025,104.998925,10,401.600,26.400,5.2050,-400.800,-25.200,-8.100,400.800,25.200,-8.100,4.222e+04 +2025,105.001253,10,399.200,26.800,5.2930,-398.100,-27.700,-11.200,398.100,27.700,-11.200,4.351e+04 +2025,105.005911,10,395.900,28.900,5.1610,-394.800,-22.200,-19.200,394.800,22.200,-19.200,5.059e+04 +2025,105.011732,10,399.600,28.800,5.2550,-397.400,-31.000,-27.900,397.400,31.000,-27.900,5.024e+04 +2025,105.017554,10,396.800,27.300,5.1220,-395.000,-29.500,-23.500,395.000,29.500,-23.500,4.515e+04 +2025,105.081590,10,446.400,45.300,3.3260,-445.200,5.600,-32.800,445.200,-5.600,-32.800,1.243e+05 +2025,105.088539,10,439.400,50.500,4.3660,-438.800,4.700,-22.500,438.800,-4.700,-22.500,1.545e+05 +2025,105.132855,10,423.900,50.500,4.0650,-423.600,3.400,-17.200,423.600,-3.400,-17.200,1.545e+05 +2025,105.176989,10,431.700,43.200,3.6800,-431.400,4.900,-15.200,431.400,-4.900,-15.200,1.130e+05 +2025,105.185139,10,431.300,45.000,4.2590,-431.100,5.300,-11.100,431.100,-5.300,-11.100,1.227e+05 +2025,105.206060,10,416.800,45.600,3.8510,-416.000,-1.700,-24.300,416.000,1.700,-24.300,1.260e+05 +2025,105.254815,10,408.300,44.900,4.6960,-407.600,6.700,-23.600,407.600,-6.700,-23.600,1.221e+05 +2025,105.538793,10,399.200,28.300,6.2460,-398.200,-13.300,-25.100,398.200,13.300,-25.100,4.851e+04 +2025,105.604030,10,374.500,25.200,6.4560,-372.800,-12.000,-34.100,372.800,12.000,-34.100,3.847e+04 +2025,105.607523,10,376.800,25.300,6.8380,-374.500,-13.300,-39.700,374.500,13.300,-39.700,3.877e+04 +2025,105.777255,10,510.400,43.000,31.9310,-498.100,-33.500,-106.600,498.100,33.500,-106.600,1.120e+05 +2025,105.859883,10,531.200,98.800,21.1150,-528.600,51.200,-10.300,528.600,-51.200,-10.300,5.913e+05 +2025,105.888918,10,581.200,80.600,26.1080,-576.900,-37.200,59.200,576.900,37.200,59.200,3.935e+05 +2025,105.890082,10,580.600,83.900,26.6760,-577.900,-34.000,44.400,577.900,34.000,44.400,4.264e+05 +2025,105.908674,10,605.800,56.600,45.2050,-601.000,-44.200,62.500,601.000,44.200,62.500,1.941e+05 +2025,105.914495,10,603.300,61.900,47.1100,-598.800,-47.000,56.900,598.800,47.000,56.900,2.321e+05 +2025,105.915660,10,608.200,64.500,33.4870,-604.100,-36.100,60.300,604.100,36.100,60.300,2.520e+05 +2025,105.924974,10,599.400,64.300,37.2270,-595.800,-45.400,47.500,595.800,45.400,47.500,2.504e+05 +2025,105.988973,10,602.300,37.500,11.3610,-596.600,76.000,32.400,596.600,-76.000,32.400,8.518e+04 +2025,105.995959,10,581.900,38.100,13.8810,-580.600,32.400,20.300,580.600,-32.400,20.300,8.793e+04 +2025,105.998287,10,570.500,37.400,11.3630,-569.400,33.100,11.700,569.400,-33.100,11.700,8.473e+04 +2025,106.013423,10,606.200,26.300,10.9080,-605.400,23.700,20.300,605.400,-23.700,20.300,4.190e+04 +2025,106.015752,10,575.700,23.700,12.4150,-573.800,46.400,8.800,573.800,-46.400,8.800,3.402e+04 +2025,106.018080,10,583.600,22.400,12.2850,-581.900,43.100,7.900,581.900,-43.100,7.900,3.039e+04 +2025,106.034417,10,589.800,26.000,15.5810,-588.800,-5.800,33.300,588.800,5.800,33.300,4.095e+04 +2025,106.037946,10,602.500,39.100,11.5010,-600.700,4.300,46.300,600.700,-4.300,46.300,9.261e+04 +2025,106.055410,10,609.000,51.600,11.9070,-606.300,16.400,54.400,606.300,-16.400,54.400,1.613e+05 +2025,106.072802,10,598.100,45.500,15.5560,-596.200,23.200,41.200,596.200,-23.200,41.200,1.254e+05 +2025,106.079788,10,593.200,46.800,19.7170,-591.000,12.700,50.200,591.000,-12.700,50.200,1.327e+05 +2025,106.083244,10,596.100,43.500,19.1560,-594.200,13.600,45.600,594.200,-13.600,45.600,1.146e+05 +2025,106.084409,10,597.700,43.800,17.1140,-595.900,13.100,44.300,595.900,-13.100,44.300,1.162e+05 +2025,106.089066,10,604.900,41.500,13.2070,-603.500,5.500,40.800,603.500,-5.500,40.800,1.043e+05 +2025,106.096051,10,598.400,42.500,16.7040,-595.800,11.000,54.600,595.800,-11.000,54.600,1.094e+05 +2025,106.153175,10,600.900,37.300,12.0400,-600.600,-1.300,20.300,600.600,1.300,20.300,8.428e+04 +2025,106.164781,10,606.300,39.200,12.2660,-606.100,-5.400,14.400,606.100,5.400,14.400,9.308e+04 +2025,106.171730,10,605.500,37.700,12.5110,-605.300,-2.100,17.200,605.300,2.100,17.200,8.609e+04 +2025,106.179881,10,603.100,39.600,11.5910,-602.600,-11.900,21.400,602.600,11.900,21.400,9.499e+04 +2025,106.181008,10,604.100,37.100,12.8760,-603.800,-6.000,18.100,603.800,6.000,18.100,8.337e+04 +2025,106.183337,10,602.900,39.900,13.3440,-602.800,-1.400,13.400,602.800,1.400,13.400,9.643e+04 +2025,106.190323,10,602.800,38.700,12.9460,-602.600,-2.200,15.100,602.600,2.200,15.100,9.072e+04 +2025,106.226343,10,593.000,34.200,12.5400,-592.400,-0.000,27.100,592.400,0.000,27.100,7.085e+04 +2025,106.236785,10,592.400,36.000,13.9380,-591.700,-0.100,29.700,591.700,0.100,29.700,7.850e+04 +2025,106.250720,10,591.300,39.300,11.0950,-590.500,-8.700,29.100,590.500,8.700,29.100,9.356e+04 +2025,106.264656,10,593.800,37.500,10.0220,-593.700,-0.400,10.300,593.700,0.400,10.300,8.518e+04 +2025,106.273970,10,585.500,35.600,13.1680,-585.300,-4.700,10.700,585.300,4.700,10.700,7.677e+04 +2025,106.293726,10,544.700,32.000,21.5900,-543.200,-6.700,39.000,543.200,6.700,39.000,6.203e+04 +2025,106.313447,10,563.500,26.800,14.6740,-563.200,-5.800,18.200,563.200,5.800,18.200,4.351e+04 +2025,106.340189,10,560.000,32.000,24.0950,-559.900,7.300,5.900,559.900,-7.300,5.900,6.203e+04 +2025,106.344883,10,555.700,30.500,19.4110,-554.900,18.400,23.600,554.900,-18.400,23.600,5.635e+04 +2025,106.346047,10,557.300,34.400,27.2860,-556.600,14.100,24.700,556.600,-14.100,24.700,7.168e+04 +2025,106.372826,10,538.900,33.400,18.2820,-538.100,3.200,28.100,538.100,-3.200,28.100,6.757e+04 +2025,106.377483,10,537.000,37.800,19.7360,-536.200,-6.500,28.900,536.200,6.500,28.900,8.655e+04 +2025,106.389089,10,531.500,35.000,15.9450,-531.100,-0.800,21.800,531.100,0.800,21.800,7.420e+04 +2025,106.409974,10,531.200,31.500,16.0800,-530.000,-34.800,6.600,530.000,34.800,6.600,6.010e+04 +2025,106.416960,10,529.700,28.000,13.0650,-529.000,-22.900,14.700,529.000,22.900,14.700,4.749e+04 +2025,106.429767,10,520.800,26.700,13.7020,-520.500,-17.400,-0.400,520.500,17.400,-0.400,4.318e+04 +2025,106.436753,10,524.700,26.700,15.1060,-524.400,-15.600,7.700,524.400,15.600,7.700,4.318e+04 +2025,106.464768,10,525.100,29.500,7.7750,-524.200,-11.500,28.000,524.200,11.500,28.000,5.271e+04 +2025,106.469426,10,525.400,21.100,5.2500,-524.600,-21.600,20.300,524.600,21.600,20.300,2.697e+04 +2025,106.493839,10,523.700,19.700,4.4500,-523.400,-16.500,10.200,523.400,16.500,10.200,2.351e+04 +2025,106.495004,10,525.100,18.800,4.2490,-524.700,-17.300,12.500,524.700,17.300,12.500,2.141e+04 +2025,106.510067,10,515.300,16.200,4.2010,-515.100,-11.700,4.800,515.100,11.700,4.800,1.590e+04 +2025,106.543868,10,509.400,26.500,8.7560,-508.700,-24.800,-9.500,508.700,24.800,-9.500,4.254e+04 +2025,106.545032,10,515.000,29.800,8.8780,-514.200,-26.100,-9.500,514.200,26.100,-9.500,5.379e+04 +2025,106.550853,10,529.100,29.800,8.6680,-528.100,-32.100,-4.100,528.100,32.100,-4.100,5.379e+04 +2025,106.564861,10,511.900,28.100,9.1490,-511.800,5.700,-11.300,511.800,-5.700,-11.300,4.783e+04 +2025,106.579961,10,500.000,26.700,8.5630,-499.800,-2.400,-14.800,499.800,2.400,-14.800,4.318e+04 +2025,106.599681,10,502.200,30.500,5.9700,-501.600,10.600,-22.600,501.600,-10.600,-22.600,5.635e+04 +2025,106.672849,10,483.800,30.000,2.4590,-482.500,-16.200,-31.200,482.500,16.200,-31.200,5.452e+04 +2025,106.705486,10,497.200,28.300,2.4210,-491.400,34.300,-67.600,491.400,-34.300,-67.600,4.851e+04 +2025,106.757879,10,473.100,38.400,4.1910,-470.300,-33.600,-39.600,470.300,33.600,-39.600,8.932e+04 +2025,106.767157,10,481.700,37.600,2.5900,-479.300,-24.600,-41.400,479.300,24.600,-41.400,8.564e+04 +2025,106.783420,10,467.800,40.900,3.6380,-464.300,-3.600,-56.900,464.300,3.600,-56.900,1.013e+05 +2025,106.835922,10,465.900,29.500,13.8050,-464.500,-6.600,-35.000,464.500,6.600,-35.000,5.271e+04 +2025,106.837086,10,473.400,25.700,13.7680,-471.900,-7.700,-37.500,471.900,7.700,-37.500,4.001e+04 +2025,106.878892,10,465.100,37.700,19.8260,-462.200,-2.200,-52.200,462.200,2.200,-52.200,8.609e+04 +2025,106.888170,10,463.900,38.500,19.0210,-460.300,-16.500,-55.300,460.300,16.500,-55.300,8.979e+04 +2025,106.903305,10,461.900,37.400,11.4360,-458.600,-13.300,-53.500,458.600,13.300,-53.500,8.473e+04 +2025,106.910327,10,460.500,37.700,10.3400,-457.200,-14.500,-53.800,457.200,14.500,-53.800,8.609e+04 +2025,106.911492,10,466.600,37.000,10.4180,-463.900,-12.600,-48.500,463.900,12.600,-48.500,8.293e+04 +2025,106.912656,10,465.400,36.100,11.2750,-462.800,-8.900,-48.300,462.800,8.900,-48.300,7.894e+04 +2025,106.913820,10,468.600,37.100,8.4670,-466.300,-6.000,-46.200,466.300,6.000,-46.200,8.337e+04 +2025,106.928956,10,485.800,16.600,8.6880,-485.800,-1.600,-0.400,485.800,1.600,-0.400,1.669e+04 +2025,106.932413,10,478.800,17.600,10.3050,-478.800,-0.100,-4.300,478.800,0.100,-4.300,1.876e+04 +2025,106.945220,10,480.400,19.100,13.0400,-480.400,-4.900,-4.700,480.400,4.900,-4.700,2.210e+04 +2025,106.949877,10,478.800,28.800,28.1470,-478.100,-17.900,-17.600,478.100,17.900,-17.600,5.024e+04 +2025,106.957991,10,478.100,32.300,19.8880,-477.800,-6.500,-14.800,477.800,6.500,-14.800,6.320e+04 +2025,106.959155,10,477.200,31.500,18.9520,-476.900,-8.600,-13.000,476.900,8.600,-13.000,6.010e+04 +2025,106.989390,10,487.500,23.100,8.2780,-487.100,-18.900,-3.400,487.100,18.900,-3.400,3.232e+04 +2025,107.001069,10,494.200,24.900,7.5880,-493.800,-20.200,-1.500,493.800,20.200,-1.500,3.756e+04 +2025,107.003398,10,491.700,24.300,7.7930,-491.300,-20.800,-1.400,491.300,20.800,-1.400,3.577e+04 +2025,107.008091,10,489.700,24.400,7.7770,-489.200,-22.900,0.000,489.200,22.900,0.000,3.606e+04 +2025,107.030177,10,488.000,25.100,10.4550,-486.300,-40.100,6.600,486.300,40.100,6.600,3.816e+04 +2025,107.046477,10,502.600,31.800,6.3360,-502.300,-15.000,8.500,502.300,15.000,8.500,6.125e+04 +2025,107.049970,10,503.600,34.700,4.8360,-503.500,-0.600,12.000,503.500,0.600,12.000,7.294e+04 +2025,107.051097,10,501.900,34.600,4.5870,-501.700,-4.700,13.000,501.700,4.700,13.000,7.252e+04 +2025,107.114006,10,505.000,39.600,32.5150,-504.800,3.600,12.900,504.800,-3.600,12.900,9.499e+04 +2025,107.153519,10,494.200,44.600,21.8750,-494.000,0.000,16.600,494.000,-0.000,16.600,1.205e+05 +2025,107.159340,10,492.300,39.200,12.8250,-492.200,-0.500,11.100,492.200,0.500,11.100,9.308e+04 +2025,107.167454,10,480.800,38.000,12.2220,-480.700,-10.000,6.000,480.700,10.000,6.000,8.747e+04 +2025,107.190740,10,473.700,34.800,7.9030,-473.300,-18.500,5.800,473.300,18.500,5.800,7.336e+04 +2025,107.204748,10,476.400,38.200,7.0370,-475.900,-17.000,12.500,475.900,17.000,12.500,8.839e+04 +2025,107.283847,10,461.900,32.000,5.2810,-461.100,-27.800,2.100,461.100,27.800,2.100,6.203e+04 +2025,107.290832,10,448.000,31.100,6.5860,-447.200,-26.600,-3.400,447.200,26.600,-3.400,5.859e+04 +2025,107.340897,10,452.000,21.100,4.1180,-450.200,-27.700,30.200,450.200,27.700,30.200,2.697e+04 +2025,107.357161,10,462.000,29.800,3.3430,-462.000,-4.300,0.900,462.000,4.300,0.900,5.379e+04 +2025,107.362946,10,426.600,36.900,3.5640,-422.200,-57.000,22.200,422.200,57.000,22.200,8.248e+04 +2025,107.365274,10,467.000,22.300,5.0440,-466.800,-15.800,-0.700,466.800,15.800,-0.700,3.012e+04 +2025,107.385067,10,469.300,18.000,3.6780,-468.500,18.600,18.400,468.500,-18.600,18.400,1.963e+04 +2025,107.414102,10,462.300,25.800,3.1490,-461.800,-5.700,21.600,461.800,5.700,21.600,4.032e+04 +2025,107.415230,10,463.500,26.200,3.2230,-463.000,-3.400,22.200,463.000,3.400,22.200,4.158e+04 +2025,107.418723,10,463.000,21.200,3.1090,-462.600,-0.200,18.200,462.600,0.200,18.200,2.722e+04 +2025,107.447794,10,454.400,21.800,3.6650,-454.000,-6.600,18.900,454.000,6.600,18.900,2.879e+04 +2025,107.512885,10,450.300,38.900,11.1880,-448.800,32.200,18.300,448.800,-32.200,18.300,9.166e+04 +2025,107.516378,10,445.600,26.300,13.5790,-444.800,23.800,11.500,444.800,-23.800,11.500,4.190e+04 +2025,107.521035,10,445.100,25.500,17.2330,-444.800,12.300,10.400,444.800,-12.300,10.400,3.939e+04 +2025,107.524528,10,446.400,25.100,16.7730,-446.100,11.700,10.800,446.100,-11.700,10.800,3.816e+04 +2025,107.530349,10,444.000,26.900,15.5700,-443.800,10.600,8.800,443.800,-10.600,8.800,4.383e+04 +2025,107.548978,10,441.800,24.900,15.6880,-441.600,3.000,12.000,441.600,-3.000,12.000,3.756e+04 +2025,107.557128,10,443.200,23.500,19.2450,-443.000,7.600,12.100,443.000,-7.600,12.100,3.345e+04 +2025,107.559420,10,442.300,22.400,18.9230,-442.100,5.200,11.600,442.100,-5.200,11.600,3.039e+04 +2025,107.586126,10,438.400,22.800,13.9950,-438.100,10.600,12.200,438.100,-10.600,12.200,3.149e+04 +2025,107.587290,10,437.100,22.300,12.5000,-436.800,12.600,11.400,436.800,-12.600,11.400,3.012e+04 +2025,107.597769,10,436.800,24.200,14.0490,-436.400,13.900,13.000,436.400,-13.900,13.000,3.547e+04 +2025,107.601262,10,437.100,23.600,15.0880,-436.700,14.000,13.000,436.700,-14.000,13.000,3.374e+04 +2025,107.602426,10,439.900,24.100,13.7540,-439.300,15.600,14.700,439.300,-15.600,14.700,3.518e+04 +2025,107.624621,10,436.400,26.400,9.9980,-435.600,17.200,21.200,435.600,-17.200,21.200,4.222e+04 +2025,107.626949,10,441.500,25.500,9.6710,-440.400,21.000,24.300,440.400,-21.000,24.300,3.939e+04 +2025,107.636264,10,436.900,25.500,8.8820,-436.100,13.300,22.700,436.100,-13.300,22.700,3.939e+04 +2025,107.643249,10,438.200,26.400,9.4600,-437.500,15.500,20.000,437.500,-15.500,20.000,4.222e+04 +2025,107.645578,10,436.100,26.700,9.6490,-435.400,14.100,18.900,435.400,-14.100,18.900,4.318e+04 +2025,107.649071,10,434.000,30.300,10.9930,-433.600,9.300,17.100,433.600,-9.300,17.100,5.561e+04 +2025,107.653728,10,437.400,26.400,11.6440,-436.400,10.800,27.100,436.400,-10.800,27.100,4.222e+04 +2025,107.672284,10,436.900,26.900,13.7930,-435.700,17.700,26.700,435.700,-17.700,26.700,4.383e+04 +2025,107.675777,10,432.100,26.200,19.9050,-431.500,15.400,17.100,431.500,-15.400,17.100,4.158e+04 +2025,107.679233,10,434.200,26.200,21.9200,-433.500,17.700,16.500,433.500,-17.700,16.500,4.158e+04 +2025,107.688548,10,444.600,23.100,20.1010,-443.600,26.800,11.300,443.600,-26.800,11.300,3.232e+04 +2025,107.701355,10,430.800,27.100,15.1090,-430.200,15.200,17.100,430.200,-15.200,17.100,4.449e+04 +2025,107.750291,10,437.000,23.200,13.3840,-435.900,23.900,18.400,435.900,-23.900,18.400,3.260e+04 +2025,107.783983,10,433.500,22.900,13.9390,-432.900,22.000,10.700,432.900,-22.000,10.700,3.177e+04 +2025,107.789805,10,431.500,21.200,14.2340,-430.900,20.100,5.700,430.900,-20.100,5.700,2.722e+04 +2025,107.795626,10,435.300,21.700,14.2010,-434.700,20.000,9.900,434.700,-20.000,9.900,2.852e+04 +2025,107.800283,10,434.200,21.800,13.5740,-433.600,20.800,8.300,433.600,-20.800,8.300,2.879e+04 +2025,107.829463,10,423.500,23.500,17.0660,-423.400,7.900,4.300,423.400,-7.900,4.300,3.345e+04 +2025,107.831792,10,423.500,24.400,16.3480,-423.400,9.500,6.000,423.400,-9.500,6.000,3.606e+04 +2025,107.834120,10,416.700,23.700,16.1800,-416.600,9.900,-0.100,416.600,-9.900,-0.100,3.402e+04 +2025,107.842271,10,416.300,24.500,15.0080,-416.200,7.100,5.300,416.200,-7.100,5.300,3.636e+04 +2025,107.851548,10,422.000,22.600,15.8390,-421.700,3.700,14.000,421.700,-3.700,14.000,3.094e+04 +2025,107.855041,10,423.300,23.400,15.1710,-423.100,2.900,13.100,423.100,-2.900,13.100,3.317e+04 +2025,107.881711,10,423.800,20.500,16.0070,-423.700,2.200,9.400,423.700,-2.200,9.400,2.546e+04 +2025,107.898011,10,432.900,16.100,12.7260,-432.800,7.500,7.500,432.800,-7.500,7.500,1.570e+04 +2025,107.918931,10,433.500,16.500,12.2010,-433.400,4.100,7.000,433.400,-4.100,7.000,1.649e+04 +2025,107.921260,10,434.000,16.600,12.8340,-433.900,3.800,8.700,433.900,-3.800,8.700,1.669e+04 +2025,107.936359,10,428.900,14.300,11.3250,-428.700,-3.100,9.800,428.700,3.100,9.800,1.239e+04 +2025,107.959572,10,426.400,15.300,10.9380,-426.100,-12.500,8.800,426.100,12.500,8.800,1.418e+04 +2025,107.984058,10,421.100,20.200,9.2940,-420.700,-17.300,7.200,420.700,17.300,7.200,2.472e+04 +2025,108.007308,10,420.800,23.700,11.9320,-420.700,-7.500,7.600,420.700,7.500,7.600,3.402e+04 +2025,108.008436,10,422.900,24.200,11.6440,-422.800,-11.400,4.900,422.800,11.400,4.900,3.547e+04 +2025,108.014257,10,422.900,25.800,10.6470,-422.300,-19.500,10.300,422.300,19.500,10.300,4.032e+04 +2025,108.028192,10,426.600,19.700,13.9650,-425.800,-16.400,21.800,425.800,16.400,21.800,2.351e+04 +2025,108.045656,10,425.300,15.800,14.7450,-424.700,-20.300,10.700,424.700,20.300,10.700,1.512e+04 +2025,108.053806,10,427.900,16.200,15.2220,-426.900,-27.100,13.200,426.900,27.100,13.200,1.590e+04 +2025,108.067778,10,426.900,23.600,10.6190,-425.800,1.200,-31.300,425.800,-1.200,-31.300,3.374e+04 +2025,108.074764,10,427.800,21.100,12.0440,-426.100,-36.700,5.900,426.100,36.700,5.900,2.697e+04 +2025,108.085170,10,416.400,21.600,6.3970,-414.800,-34.000,-12.900,414.800,34.000,-12.900,2.826e+04 +2025,108.094484,10,413.900,31.300,8.9510,-412.400,-34.300,9.100,412.400,34.300,9.100,5.934e+04 +2025,108.095648,10,420.900,28.800,9.2000,-418.700,-42.800,7.800,418.700,42.800,7.800,5.024e+04 +2025,108.101470,10,425.600,27.000,9.7170,-422.900,-47.900,-0.800,422.900,47.900,-0.800,4.416e+04 +2025,108.214333,10,444.300,42.200,7.2290,-443.800,-12.200,-17.400,443.800,12.200,-17.400,1.079e+05 +2025,108.324868,10,467.000,51.900,6.8990,-464.400,10.300,-47.400,464.400,-10.300,-47.400,1.632e+05 +2025,108.335383,10,459.800,52.600,6.8910,-459.100,0.500,-23.900,459.100,-0.500,-23.900,1.676e+05 +2025,108.380790,10,473.200,54.700,7.1590,-468.100,68.700,-12.100,468.100,-68.700,-12.100,1.812e+05 +2025,108.400510,10,459.100,56.100,6.8760,-456.700,43.900,17.200,456.700,-43.900,17.200,1.906e+05 +2025,108.419139,10,449.400,52.200,6.3630,-449.300,8.200,7.600,449.300,-8.200,7.600,1.651e+05 +2025,108.421467,10,455.900,54.700,6.4640,-455.400,14.800,16.300,455.400,-14.800,16.300,1.812e+05 +2025,108.433146,10,448.300,54.300,6.6640,-448.000,11.300,8.800,448.000,-11.300,8.800,1.786e+05 +2025,108.461126,10,442.000,53.300,6.5210,-441.500,19.500,8.800,441.500,-19.500,8.800,1.721e+05 +2025,108.487795,10,449.500,51.700,6.1510,-447.200,44.200,10.200,447.200,-44.200,10.200,1.619e+05 +2025,108.507588,10,450.800,47.100,5.8670,-448.500,-5.800,-45.100,448.500,5.800,-45.100,1.344e+05 +2025,108.513409,10,440.400,48.400,6.3510,-439.700,-8.100,-23.600,439.700,8.100,-23.600,1.419e+05 +2025,108.601859,10,458.900,43.400,5.2050,-457.600,3.600,-34.700,457.600,-3.600,-34.700,1.141e+05 +2025,108.604188,10,452.000,42.600,5.0780,-451.000,-2.300,-29.100,451.000,2.300,-29.100,1.099e+05 +2025,108.607680,10,453.000,40.700,4.7110,-452.200,0.100,-26.600,452.200,-0.100,-26.600,1.003e+05 +2025,108.650832,10,433.200,42.300,5.0980,-433.200,-2.200,-1.300,433.200,2.200,-1.300,1.084e+05 +2025,108.672917,10,437.600,41.100,5.2550,-437.600,-2.200,-1.600,437.600,2.200,-1.600,1.023e+05 +2025,108.720580,10,443.800,48.600,4.6450,-443.400,16.700,-8.500,443.400,-16.700,-8.500,1.431e+05 +2025,108.733424,10,448.500,45.400,4.9690,-448.000,18.600,-8.400,448.000,-18.600,-8.400,1.249e+05 +2025,108.748596,10,420.300,44.400,4.2610,-419.500,23.900,-10.400,419.500,-23.900,-10.400,1.194e+05 +2025,108.762568,10,425.700,45.800,4.5380,-425.000,18.200,-14.700,425.000,-18.200,-14.700,1.271e+05 +2025,108.769517,10,437.200,44.300,4.2680,-436.700,13.700,-16.600,436.700,-13.700,-16.600,1.189e+05 +2025,108.782288,10,423.200,38.800,4.3730,-422.700,16.300,-11.700,422.700,-16.300,-11.700,9.119e+04 +2025,108.784580,10,423.300,39.800,4.4070,-422.800,17.000,-14.300,422.800,-17.000,-14.300,9.595e+04 +2025,108.791566,10,425.400,32.700,4.1300,-424.900,15.600,-11.800,424.900,-15.600,-11.800,6.477e+04 +2025,108.854292,10,408.500,23.600,5.5050,-407.600,-25.900,6.800,407.600,25.900,6.800,3.374e+04 +2025,108.879870,10,405.400,25.600,6.2400,-404.500,-11.500,24.300,404.500,11.500,24.300,3.970e+04 +2025,108.925241,10,402.500,26.600,7.0280,-401.600,-26.400,6.500,401.600,26.400,6.500,4.286e+04 +2025,108.935683,10,402.400,28.400,7.1310,-401.300,-29.300,8.200,401.300,29.300,8.200,4.886e+04 +2025,108.960133,10,396.400,27.800,7.1460,-395.500,-25.500,-6.300,395.500,25.500,-6.300,4.681e+04 +2025,108.962462,10,394.000,29.500,7.0270,-393.300,-21.500,-9.700,393.300,21.500,-9.700,5.271e+04 +2025,108.995026,10,399.500,27.300,7.0390,-398.700,-17.800,-17.100,398.700,17.800,-17.100,4.515e+04 +2025,109.049675,10,386.000,22.700,6.3960,-385.400,-15.400,-16.900,385.400,15.400,-16.900,3.121e+04 +2025,109.053168,10,387.100,23.900,6.7560,-386.200,-18.800,-17.000,386.200,18.800,-17.000,3.460e+04 +2025,109.102032,10,404.100,31.500,8.8960,-404.000,-8.400,6.900,404.000,8.400,6.900,6.010e+04 +2025,109.125281,10,410.300,33.700,8.5330,-409.600,-0.000,23.600,409.600,0.000,23.600,6.879e+04 +2025,109.132267,10,405.700,29.500,8.6690,-404.800,-8.600,25.200,404.800,8.600,25.200,5.271e+04 +2025,109.228866,10,400.700,33.700,8.4980,-400.600,-11.400,-2.200,400.600,11.400,-2.200,6.879e+04 +2025,109.237016,10,408.500,33.300,8.4800,-408.400,-7.700,-1.200,408.400,7.700,-1.200,6.717e+04 +2025,109.247531,10,405.800,31.700,8.2180,-405.700,-10.500,-2.400,405.700,10.500,-2.400,6.087e+04 +2025,109.255681,10,397.400,31.900,8.5480,-397.200,-12.500,2.100,397.200,12.500,2.100,6.164e+04 +2025,109.281295,10,395.000,34.600,8.6880,-394.600,-16.200,5.600,394.600,16.200,5.600,7.252e+04 +2025,109.283624,10,396.700,32.600,8.2680,-396.500,-13.600,2.500,396.500,13.600,2.500,6.438e+04 +2025,109.310293,10,390.800,37.300,8.6730,-390.100,-16.000,16.400,390.100,16.000,16.400,8.428e+04 +2025,109.323100,10,389.000,37.500,9.0410,-388.600,-14.400,8.900,388.600,14.400,8.900,8.518e+04 +2025,109.326593,10,406.100,34.900,8.4660,-406.000,-10.200,4.100,406.000,10.200,4.100,7.378e+04 +2025,109.338236,10,393.800,35.100,8.9580,-393.700,-3.400,-5.700,393.700,3.400,-5.700,7.463e+04 +2025,109.342893,10,395.100,34.100,8.9290,-395.100,-7.000,-3.900,395.100,7.000,-3.900,7.044e+04 +2025,109.355628,10,398.400,36.600,10.7800,-398.400,-6.100,-2.300,398.400,6.100,-2.300,8.114e+04 +2025,109.366070,10,389.700,33.700,8.4860,-389.500,-12.600,-1.800,389.500,12.600,-1.800,6.879e+04 +2025,109.432398,10,385.300,36.000,8.4670,-385.000,0.700,-14.900,385.000,-0.700,-14.900,7.850e+04 +2025,109.487047,10,396.900,33.100,8.5950,-396.200,-22.600,8.200,396.200,22.600,8.200,6.637e+04 +2025,109.503347,10,397.300,35.200,9.4770,-397.000,-15.200,-1.700,397.000,15.200,-1.700,7.505e+04 +2025,109.553303,10,381.600,41.400,10.1220,-380.900,-15.700,15.500,380.900,15.700,15.500,1.038e+05 +2025,109.587103,10,391.000,36.900,11.8490,-389.800,-17.000,25.800,389.800,17.000,25.800,8.248e+04 +2025,109.594089,10,395.900,34.400,11.0870,-395.200,-17.000,17.300,395.200,17.000,17.300,7.168e+04 +2025,109.599911,10,389.700,33.800,11.1890,-389.000,-21.400,10.200,389.000,21.400,10.200,6.920e+04 +2025,109.641716,10,393.300,35.100,10.0880,-393.000,-15.400,1.500,393.000,15.400,1.500,7.463e+04 +2025,109.642880,10,396.400,34.100,10.1000,-396.200,-13.600,-0.400,396.200,13.600,-0.400,7.044e+04 +2025,109.644044,10,394.200,33.500,9.9750,-393.800,-17.000,1.700,393.800,17.000,1.700,6.798e+04 +2025,109.695345,10,380.800,32.200,9.6120,-380.200,-21.200,-1.500,380.200,21.200,-1.500,6.281e+04 +2025,109.701130,10,383.400,33.700,10.9210,-382.800,-19.700,-6.300,382.800,19.700,-6.300,6.879e+04 +2025,109.780120,10,368.100,34.700,11.1690,-367.800,-9.400,-12.000,367.800,9.400,-12.000,7.294e+04 +2025,109.796347,10,362.600,29.400,12.6440,-362.500,-6.600,-6.700,362.500,6.600,-6.700,5.236e+04 +2025,109.805662,10,364.600,27.900,11.9410,-364.000,-19.600,-9.000,364.000,19.600,-9.000,4.715e+04 +2025,109.840517,10,364.900,29.700,13.0750,-364.100,-24.200,-0.300,364.100,24.200,-0.300,5.343e+04 +2025,109.856745,10,370.900,27.000,12.5430,-370.600,-14.800,-7.000,370.600,14.800,-7.000,4.416e+04 +2025,109.866059,10,364.100,30.300,13.5410,-363.900,-12.600,5.100,363.900,12.600,5.100,5.561e+04 +2025,109.877738,10,378.300,29.200,15.0420,-378.100,-8.900,-9.100,378.100,8.900,-9.100,5.165e+04 +2025,109.895239,10,377.200,29.700,15.8160,-377.000,-4.800,-9.800,377.000,4.800,-9.800,5.343e+04 +2025,109.910411,10,378.200,31.700,14.9000,-378.000,-12.700,-0.100,378.000,12.700,-0.100,6.087e+04 +2025,109.949888,10,374.700,24.900,13.1730,-374.100,-20.800,5.900,374.100,20.800,5.900,3.756e+04 +2025,109.953381,10,374.200,25.100,12.9220,-373.500,-20.800,5.500,373.500,20.800,5.500,3.816e+04 +2025,109.975466,10,388.800,22.600,16.4200,-388.200,17.200,-13.500,388.200,-17.200,-13.500,3.094e+04 +2025,109.976630,10,388.900,24.000,16.2470,-388.500,15.700,-10.900,388.500,-15.700,-10.900,3.489e+04 +2025,110.012832,10,391.400,26.700,17.7620,-390.800,15.500,-16.300,390.800,-15.500,-16.300,4.318e+04 +2025,110.055766,10,410.000,38.800,6.1710,-408.000,25.600,31.400,408.000,-25.600,31.400,9.119e+04 +2025,110.083745,10,432.000,51.300,7.4440,-427.200,62.300,-15.200,427.200,-62.300,-15.200,1.594e+05 +2025,110.087238,10,438.400,49.600,6.8870,-436.400,38.300,-17.300,436.400,-38.300,-17.300,1.490e+05 +2025,110.091932,10,450.700,48.200,6.7380,-448.800,38.700,-11.900,448.800,-38.700,-11.900,1.407e+05 +2025,110.100082,10,422.200,54.600,7.2120,-420.200,24.000,33.000,420.200,-24.000,33.000,1.806e+05 +2025,110.110560,10,395.500,50.100,7.0780,-391.100,58.100,-4.900,391.100,-58.100,-4.900,1.520e+05 +2025,110.124532,10,394.700,51.200,7.4870,-393.000,35.500,7.600,393.000,-35.500,7.600,1.588e+05 +2025,110.137303,10,403.000,47.400,6.5190,-400.600,23.100,37.400,400.600,-23.100,37.400,1.361e+05 +2025,110.264101,10,409.000,39.600,9.2540,-408.800,-5.600,-7.800,408.800,5.600,-7.800,9.499e+04 +2025,110.286259,10,403.700,38.500,9.1270,-403.100,-13.000,16.400,403.100,13.000,16.400,8.979e+04 +2025,110.289788,10,402.300,41.400,9.3000,-401.600,-14.900,18.200,401.600,14.900,18.200,1.038e+05 +2025,110.328174,10,399.800,40.000,10.2300,-399.200,-9.500,18.800,399.200,9.500,18.800,9.692e+04 +2025,110.329338,10,396.300,40.400,9.9520,-395.800,-9.900,16.500,395.800,9.900,16.500,9.887e+04 +2025,110.371180,10,396.500,39.200,10.2030,-396.000,-14.200,13.400,396.000,14.200,13.400,9.308e+04 +2025,110.373508,10,393.200,40.400,9.7310,-393.000,-13.600,4.400,393.000,13.600,4.400,9.887e+04 +2025,110.382859,10,395.500,36.800,10.6350,-394.400,13.600,26.500,394.400,-13.600,26.500,8.203e+04 +2025,110.406145,10,403.700,35.400,10.0690,-403.400,-16.500,-0.000,403.400,16.500,-0.000,7.591e+04 +2025,110.420116,10,396.900,40.800,9.9840,-396.500,-15.400,6.100,396.500,15.400,6.100,1.008e+05 +2025,110.434015,10,399.000,40.900,10.7480,-398.300,-16.200,17.200,398.300,16.200,17.200,1.013e+05 +2025,110.441001,10,390.600,44.000,13.2350,-389.800,-7.900,22.900,389.800,7.900,22.900,1.173e+05 +2025,110.443329,10,391.700,38.900,10.0130,-391.200,-8.600,17.700,391.200,8.600,17.700,9.166e+04 +2025,110.477058,10,394.600,39.300,10.0040,-393.700,-21.700,16.200,393.700,21.700,16.200,9.356e+04 +2025,110.505073,10,386.900,38.300,10.5140,-386.200,-18.200,12.100,386.200,18.200,12.100,8.886e+04 +2025,110.523702,10,384.100,39.200,10.7130,-383.700,-17.700,-1.700,383.700,17.700,-1.700,9.308e+04 +2025,110.530651,10,391.500,39.000,10.1520,-390.800,-22.100,-4.200,390.800,22.100,-4.200,9.213e+04 +2025,110.583008,10,395.500,39.600,11.1270,-394.600,-25.900,-6.100,394.600,25.900,-6.100,9.499e+04 +2025,110.587665,10,392.300,39.800,11.7220,-391.200,-28.200,0.900,391.200,28.200,0.900,9.595e+04 +2025,110.614480,10,386.200,40.400,13.1990,-385.300,-26.800,-4.100,385.300,26.800,-4.100,9.887e+04 +2025,110.622630,10,389.800,38.300,12.0640,-389.300,-19.600,-2.800,389.300,19.600,-2.800,8.886e+04 +2025,110.634200,10,384.000,38.900,13.6240,-383.000,-27.300,2.000,383.000,27.300,2.000,9.166e+04 +2025,110.690122,10,389.300,42.300,16.5570,-387.700,-35.100,3.000,387.700,35.100,3.000,1.084e+05 +2025,110.734256,10,400.000,43.000,21.3370,-398.200,-38.100,0.600,398.200,38.100,0.600,1.120e+05 +2025,110.735420,10,401.000,44.000,21.3610,-399.300,-36.400,4.400,399.300,36.400,4.400,1.173e+05 +2025,110.774969,10,390.400,33.800,25.9260,-387.800,-39.200,22.200,387.800,39.200,22.200,6.920e+04 +2025,110.778426,10,400.800,30.900,28.1490,-397.700,-41.300,27.300,397.700,41.300,27.300,5.784e+04 +2025,110.779590,10,398.500,32.600,28.0340,-395.800,-36.700,27.700,395.800,36.700,27.700,6.438e+04 +2025,110.785412,10,399.400,37.400,28.3040,-396.700,-32.900,32.000,396.700,32.900,32.000,8.473e+04 +2025,110.792361,10,391.700,34.000,24.1570,-388.600,-44.500,21.500,388.600,44.500,21.500,7.002e+04 +2025,110.849302,10,388.800,34.600,32.4610,-384.000,-54.300,27.500,384.000,54.300,27.500,7.252e+04 +2025,110.865529,10,384.400,35.700,34.5200,-379.600,-55.400,23.500,379.600,55.400,23.500,7.720e+04 +2025,110.881793,10,398.200,37.500,35.9940,-393.400,-60.600,13.500,393.400,60.600,13.500,8.518e+04 +2025,110.888779,10,404.300,37.200,31.9680,-400.700,-54.000,5.500,400.700,54.000,5.500,8.382e+04 +2025,110.892272,10,393.900,37.000,34.5890,-389.800,-56.100,11.300,389.800,56.100,11.300,8.293e+04 +2025,110.929602,10,391.400,37.600,32.9660,-387.100,-58.300,-0.100,387.100,58.300,-0.100,8.564e+04 +2025,110.942409,10,389.800,43.700,38.5350,-384.500,-63.900,6.400,384.500,63.900,6.400,1.157e+05 +2025,110.951723,10,391.800,40.500,38.3590,-386.500,-63.600,7.200,386.500,63.600,7.200,9.936e+04 +2025,110.969115,10,400.900,41.400,30.7010,-395.800,-63.800,3.600,395.800,63.800,3.600,1.038e+05 +2025,110.970279,10,397.400,41.100,30.1510,-391.700,-67.100,5.400,391.700,67.100,5.400,1.023e+05 +2025,110.977229,10,408.900,45.400,26.9240,-404.400,-60.600,-6.000,404.400,60.600,-6.000,1.249e+05 +2025,110.984214,10,412.800,45.000,24.6740,-407.800,-63.000,-12.700,407.800,63.000,-12.700,1.227e+05 +2025,111.008737,10,400.100,41.000,19.7020,-396.400,-51.100,16.800,396.400,51.100,16.800,1.018e+05 +2025,111.015723,10,396.600,41.100,19.6490,-393.300,-46.600,19.800,393.300,46.600,19.800,1.023e+05 +2025,111.021544,10,398.200,47.000,18.7440,-394.900,-46.100,22.200,394.900,46.100,22.200,1.338e+05 +2025,111.058765,10,428.500,58.000,25.2550,-425.900,-45.800,-13.400,425.900,45.800,-13.400,2.038e+05 +2025,111.064551,10,419.800,51.800,19.1420,-418.900,-27.900,4.300,418.900,27.900,4.300,1.625e+05 +2025,111.258878,10,476.200,89.000,14.8410,-475.400,18.200,-21.800,475.400,-18.200,-21.800,4.798e+05 +2025,111.845898,10,672.900,79.000,3.2590,-672.800,4.400,-12.200,672.800,-4.400,-12.200,3.780e+05 +2025,111.916556,10,658.600,75.400,3.2440,-656.500,13.500,-50.900,656.500,-13.500,-50.900,3.444e+05 +2025,111.966330,10,696.200,78.500,3.6080,-693.200,55.000,-32.500,693.200,-55.000,-32.500,3.733e+05 +2025,111.975389,10,690.700,80.900,3.6280,-689.400,40.000,-17.200,689.400,-40.000,-17.200,3.964e+05 +2025,111.990088,10,664.400,80.700,3.4940,-662.600,32.100,-36.100,662.600,-32.100,-36.100,3.945e+05 +2025,112.136534,10,647.100,54.400,3.0240,-646.800,17.900,-11.100,646.800,-17.900,-11.100,1.793e+05 +2025,112.478582,10,618.800,57.600,2.8330,-618.600,4.800,-17.000,618.600,-4.800,-17.000,2.010e+05 +2025,112.479746,10,620.500,57.400,2.7920,-620.100,5.600,-20.100,620.100,-5.600,-20.100,1.996e+05 +2025,112.492553,10,624.300,57.400,2.9620,-624.100,1.800,-17.800,624.100,-1.800,-17.800,1.996e+05 +2025,112.513583,10,626.900,56.900,3.1060,-626.600,18.200,-9.000,626.600,-18.200,-9.000,1.961e+05 +2025,112.575145,10,647.300,61.900,3.7200,-646.500,17.700,-27.200,646.500,-17.700,-27.200,2.321e+05 +2025,112.578638,10,640.500,62.200,3.5610,-640.100,14.900,-16.600,640.100,-14.900,-16.600,2.344e+05 +2025,112.584459,10,632.000,57.900,3.2700,-631.600,21.700,-4.400,631.600,-21.700,-4.400,2.031e+05 +2025,112.589117,10,628.300,58.600,3.2520,-627.600,30.900,-4.100,627.600,-30.900,-4.100,2.080e+05 +2025,112.619279,10,649.700,55.800,3.1390,-649.500,8.300,-14.100,649.500,-8.300,-14.100,1.886e+05 +2025,112.628557,10,633.400,60.200,3.3900,-632.900,12.100,-22.600,632.900,-12.100,-22.600,2.195e+05 +2025,112.644857,10,654.800,58.600,3.3560,-654.700,7.200,-9.100,654.700,-7.200,-9.100,2.080e+05 +2025,112.649551,10,608.700,58.500,3.2220,-608.000,28.300,-5.100,608.000,-28.300,-5.100,2.073e+05 +2025,112.722865,10,661.400,54.800,3.8120,-660.300,23.000,-30.000,660.300,-23.000,-30.000,1.819e+05 +2025,112.726321,10,655.700,52.500,2.9970,-654.600,29.600,-24.700,654.600,-29.600,-24.700,1.670e+05 +2025,112.758958,10,643.200,49.900,3.1850,-642.400,20.200,-26.700,642.400,-20.200,-26.700,1.508e+05 +2025,112.971949,10,566.800,46.800,3.2400,-566.400,-3.100,-19.900,566.400,3.100,-19.900,1.327e+05 +2025,112.973113,10,567.900,44.800,3.4180,-567.700,-3.400,-17.500,567.700,3.400,-17.500,1.216e+05 +2025,112.990541,10,559.400,46.300,3.0390,-558.800,0.700,-26.000,558.800,-0.700,-26.000,1.299e+05 +2025,113.003275,10,555.700,46.600,3.3390,-555.400,-0.400,-15.800,555.400,0.400,-15.800,1.315e+05 +2025,113.047518,10,564.900,47.100,3.2610,-564.600,1.200,-16.200,564.600,-1.200,-16.200,1.344e+05 +2025,113.056833,10,542.500,45.300,3.7290,-542.400,-7.700,-9.500,542.400,7.700,-9.500,1.243e+05 +2025,113.068439,10,537.800,45.800,3.3350,-537.600,-5.600,13.800,537.600,5.600,13.800,1.271e+05 +2025,113.082374,10,520.000,44.400,3.3300,-519.400,-7.400,23.700,519.400,7.400,23.700,1.194e+05 +2025,113.111445,10,543.900,30.000,3.1250,-542.900,3.600,-32.300,542.900,-3.600,-32.300,5.452e+04 +2025,113.118467,10,545.500,35.300,3.2690,-545.200,-8.200,-16.300,545.200,8.200,-16.300,7.548e+04 +2025,113.123125,10,538.800,38.800,3.7560,-538.100,-8.200,-25.500,538.100,8.200,-25.500,9.119e+04 +2025,113.131275,10,551.700,36.400,3.1130,-551.200,-18.100,-14.900,551.200,18.100,-14.900,8.026e+04 +2025,113.148739,10,511.900,40.900,3.9270,-511.000,-12.700,-27.700,511.000,12.700,-27.700,1.013e+05 +2025,113.162674,10,484.100,46.500,3.7180,-484.100,-0.600,-8.800,484.100,0.600,-8.800,1.310e+05 +2025,113.194037,10,535.500,35.200,3.5320,-534.600,-29.000,-8.400,534.600,29.000,-8.400,7.505e+04 +2025,113.220852,10,520.600,35.500,3.4020,-519.300,-36.000,-6.700,519.300,36.000,-6.700,7.634e+04 +2025,113.230203,10,524.500,35.100,3.4740,-523.200,-36.300,-2.700,523.200,36.300,-2.700,7.463e+04 +2025,113.258146,10,510.600,40.200,3.9980,-509.300,-28.300,-24.000,509.300,28.300,-24.000,9.789e+04 +2025,113.276702,10,479.300,45.600,3.5620,-478.900,-13.500,-11.600,478.900,13.500,-11.600,1.260e+05 +2025,113.284816,10,492.600,44.600,4.0160,-492.200,-10.900,17.100,492.200,10.900,17.100,1.205e+05 +2025,113.318616,10,478.200,40.800,3.3170,-477.600,-22.200,4.500,477.600,22.200,4.500,1.008e+05 +2025,113.485001,10,482.800,40.500,4.9540,-480.600,-42.900,-17.000,480.600,42.900,-17.000,9.936e+04 +2025,113.507122,10,498.900,44.600,4.6180,-495.700,-36.400,-42.700,495.700,36.400,-42.700,1.205e+05 +2025,113.508287,10,496.100,42.100,4.2300,-493.400,-37.500,-35.800,493.400,37.500,-35.800,1.074e+05 +2025,113.526988,10,485.900,43.100,4.3700,-483.400,-47.300,-14.000,483.400,47.300,-14.000,1.125e+05 +2025,113.572323,10,519.400,40.800,4.6280,-516.700,-34.600,-39.900,516.700,34.600,-39.900,1.008e+05 +2025,113.580436,10,485.700,41.600,4.0810,-483.300,-48.100,-2.300,483.300,48.100,-2.300,1.048e+05 +2025,113.879367,10,534.700,65.100,3.6160,-534.100,-7.800,-24.900,534.100,7.800,-24.900,2.567e+05 +2025,113.906073,10,526.600,64.300,3.9420,-525.900,-2.000,-28.200,525.900,2.000,-28.200,2.504e+05 +2025,114.193544,10,529.400,43.000,2.6580,-524.200,-38.600,-63.000,524.200,38.600,-63.000,1.120e+05 +2025,114.212136,10,516.700,44.600,2.7290,-515.600,-33.000,1.400,515.600,33.000,1.400,1.205e+05 +2025,114.227272,10,528.500,63.800,2.7510,-525.200,-46.600,-35.400,525.200,46.600,-35.400,2.466e+05 +2025,114.230801,10,511.200,44.400,2.7480,-510.200,-15.000,28.700,510.200,15.000,28.700,1.194e+05 +2025,114.498406,10,541.900,84.900,4.4250,-539.500,-9.100,49.500,539.500,9.100,49.500,4.366e+05 +2025,114.984969,10,506.300,67.700,4.0460,-505.100,-12.300,33.000,505.100,12.300,33.000,2.776e+05 +2025,115.047841,10,498.600,69.900,3.6910,-497.400,19.000,-29.200,497.400,-19.000,-29.200,2.960e+05 +2025,115.955585,10,504.100,41.900,3.4530,-501.900,-47.500,-4.800,501.900,47.500,-4.800,1.063e+05 +2025,115.957914,10,507.200,44.300,3.7080,-505.100,-46.000,-4.700,505.100,46.000,-4.700,1.189e+05 +2025,115.960242,10,504.700,43.200,3.4810,-502.400,-41.800,-24.300,502.400,41.800,-24.300,1.130e+05 +2025,115.961407,10,508.600,42.100,3.5620,-506.700,-39.700,-18.500,506.700,39.700,-18.500,1.074e+05 +2025,116.055678,10,459.100,53.500,3.3670,-456.800,-9.300,-44.900,456.800,9.300,-44.900,1.734e+05 +2025,116.530563,10,474.500,44.100,4.2200,-472.600,-10.000,-41.000,472.600,10.000,-41.000,1.178e+05 +2025,116.563054,10,464.400,43.000,4.5470,-463.900,-21.100,-4.800,463.900,21.100,-4.800,1.120e+05 +2025,116.564218,10,467.000,42.400,4.1020,-466.700,-16.000,-0.900,466.700,16.000,-0.900,1.089e+05 +2025,116.619012,10,455.200,44.000,4.9150,-454.300,-27.800,4.500,454.300,27.800,4.500,1.173e+05 +2025,116.742135,10,431.200,34.600,3.8080,-428.600,-45.300,14.600,428.600,45.300,14.600,7.252e+04 +2025,116.862057,10,429.500,29.400,3.5980,-428.100,-33.500,-6.000,428.100,33.500,-6.000,5.236e+04 +2025,117.499723,10,388.500,36.600,5.6240,-382.200,-13.000,-68.200,382.200,13.000,-68.200,8.114e+04 +2025,117.733672,10,423.500,44.500,8.1870,-423.200,-6.100,-16.600,423.200,6.100,-16.600,1.200e+05 +2025,117.754702,10,428.800,43.400,8.6500,-427.900,-3.200,-27.100,427.900,3.200,-27.100,1.141e+05 +2025,117.759359,10,432.700,44.500,9.0080,-431.900,-4.200,-26.500,431.900,4.200,-26.500,1.200e+05 +2025,117.766345,10,433.500,46.600,9.4320,-433.300,1.000,-13.900,433.300,-1.000,-13.900,1.315e+05 +2025,117.776787,10,428.500,44.900,9.6060,-428.100,-4.100,-19.500,428.100,4.100,-19.500,1.221e+05 +2025,117.790758,10,420.700,41.200,7.6320,-419.700,-1.500,-28.600,419.700,1.500,-28.600,1.028e+05 +2025,117.805821,10,433.600,40.900,7.1280,-433.600,3.100,-1.800,433.600,-3.100,-1.800,1.013e+05 +2025,117.831399,10,410.000,40.800,8.2510,-407.900,14.700,-38.900,407.900,-14.700,-38.900,1.008e+05 +2025,117.870948,10,405.300,42.800,9.0860,-404.900,3.300,-18.000,404.900,-3.300,-18.000,1.110e+05 +2025,117.895362,10,423.500,43.900,7.6330,-422.800,15.300,18.600,422.800,-15.300,18.600,1.167e+05 +2025,117.904676,10,428.300,43.800,7.8560,-427.200,20.800,22.800,427.200,-20.800,22.800,1.162e+05 +2025,117.927998,10,427.100,45.100,7.9460,-426.600,15.700,11.500,426.600,-15.700,11.500,1.232e+05 +2025,117.950047,10,428.600,43.500,6.7050,-427.300,25.000,21.900,427.300,-25.000,21.900,1.146e+05 +2025,117.993089,10,396.100,42.000,7.3200,-392.000,56.500,-5.800,392.000,-56.500,-5.800,1.069e+05 +2025,118.012955,10,440.700,44.100,6.0940,-438.400,34.100,-28.600,438.400,-34.100,-28.600,1.178e+05 +2025,118.029255,10,409.200,43.600,7.1820,-409.100,-3.000,-8.500,409.100,3.000,-8.500,1.151e+05 +2025,118.196767,10,413.500,37.500,4.7270,-413.300,-4.200,-12.000,413.300,4.200,-12.000,8.518e+04 +2025,118.197931,10,416.100,38.100,4.5300,-415.700,-2.900,-20.000,415.700,2.900,-20.000,8.793e+04 +2025,118.364388,10,432.500,36.500,5.3280,-431.700,17.100,20.300,431.700,-17.100,20.300,8.070e+04 +2025,118.395788,10,382.000,40.800,5.2990,-381.900,-10.500,3.000,381.900,10.500,3.000,1.008e+05 +2025,118.416817,10,423.700,31.800,5.3140,-423.400,-15.900,1.900,423.400,15.900,1.900,6.125e+04 +2025,118.436574,10,424.400,37.300,5.5390,-423.800,-3.000,21.800,423.800,3.000,21.800,8.428e+04 +2025,118.514581,10,384.500,27.200,4.7880,-383.400,-7.800,-27.200,383.400,7.800,-27.200,4.481e+04 +2025,118.566865,10,370.300,24.400,4.4530,-369.300,-5.200,-27.400,369.300,5.200,-27.400,3.606e+04 +2025,118.669250,10,368.200,24.200,5.1220,-367.300,-4.800,-24.800,367.300,4.800,-24.800,3.547e+04 +2025,118.694864,10,367.800,22.200,4.8570,-366.700,1.900,-28.100,366.700,-1.900,-28.100,2.985e+04 +2025,118.737797,10,368.000,23.600,5.5180,-367.400,-12.500,-18.200,367.400,12.500,-18.200,3.374e+04 +2025,118.770469,10,367.500,23.800,6.0420,-366.900,-19.000,8.800,366.900,19.000,8.800,3.431e+04 +2025,118.790299,10,377.700,28.200,5.9900,-376.800,-22.500,14.300,376.800,22.500,14.300,4.817e+04 +2025,118.820534,10,361.900,22.600,5.1040,-360.800,-26.500,7.100,360.800,26.500,7.100,3.094e+04 +2025,118.868233,10,368.700,25.900,6.4180,-368.000,-21.400,4.300,368.000,21.400,4.300,4.063e+04 +2025,118.869397,10,371.000,25.200,6.1920,-370.400,-20.600,6.400,370.400,20.600,6.400,3.847e+04 +2025,118.876420,10,385.800,25.600,5.7900,-384.700,-26.100,13.000,384.700,26.100,13.000,3.970e+04 +2025,118.885734,10,378.900,25.900,6.2540,-378.100,-24.300,0.700,378.100,24.300,0.700,4.063e+04 +2025,118.908983,10,367.600,20.700,5.1720,-366.600,-22.100,-15.400,366.600,22.100,-15.400,2.596e+04 +2025,118.912476,10,362.100,23.600,6.4300,-361.300,-21.900,-8.500,361.300,21.900,-8.500,3.374e+04 +2025,118.913640,10,365.200,21.000,5.6180,-364.300,-24.200,-10.100,364.300,24.200,-10.100,2.671e+04 +2025,118.932196,10,371.500,20.500,5.6940,-370.300,-24.800,-15.800,370.300,24.800,-15.800,2.546e+04 +2025,118.940346,10,375.400,22.400,6.1300,-374.200,-24.000,-18.200,374.200,24.000,-18.200,3.039e+04 +2025,118.948460,10,373.200,20.800,5.2860,-372.100,-25.600,-11.800,372.100,25.600,-11.800,2.621e+04 +2025,118.958975,10,375.600,23.100,5.1610,-374.800,-20.500,-12.800,374.800,20.500,-12.800,3.232e+04 +2025,118.995141,10,371.300,21.700,5.5980,-370.500,-21.400,-12.300,370.500,21.400,-12.300,2.852e+04 +2025,118.999798,10,372.000,22.000,5.9610,-371.000,-25.900,-10.900,371.000,25.900,-10.900,2.932e+04 +2025,119.070710,10,359.100,21.800,6.0710,-358.000,-26.600,6.500,358.000,26.600,6.500,2.879e+04 +2025,119.090467,10,392.700,20.300,5.7850,-391.400,-31.400,-3.100,391.400,31.400,-3.100,2.496e+04 +2025,119.128816,10,376.600,22.000,5.7370,-375.600,-26.200,-9.100,375.600,26.200,-9.100,2.932e+04 +2025,119.134637,10,379.500,21.100,5.7610,-377.900,-34.800,2.200,377.900,34.800,2.200,2.697e+04 +2025,119.135801,10,380.300,20.700,5.5460,-378.400,-36.800,7.900,378.400,36.800,7.900,2.596e+04 +2025,119.198527,10,406.500,41.200,7.2050,-405.500,-15.800,-23.200,405.500,15.800,-23.200,1.028e+05 +2025,119.226507,10,417.300,36.900,8.2530,-416.100,-30.200,8.300,416.100,30.200,8.300,8.248e+04 +2025,119.292798,10,407.600,40.500,9.0110,-406.300,-0.900,32.500,406.300,0.900,32.500,9.936e+04 +2025,119.296291,10,405.500,39.800,8.8940,-404.900,-15.300,-13.600,404.900,15.300,-13.600,9.595e+04 +2025,119.338279,10,406.300,39.000,7.9410,-405.800,-16.100,-12.400,405.800,16.100,-12.400,9.213e+04 +2025,119.339443,10,410.200,40.900,8.8160,-409.800,-12.700,-14.300,409.800,12.700,-14.300,1.013e+05 +2025,119.494148,10,404.000,44.800,11.6170,-403.600,-17.700,-1.000,403.600,17.700,-1.000,1.216e+05 +2025,119.508119,10,412.100,42.200,9.9300,-411.900,-10.800,6.100,411.900,10.800,6.100,1.079e+05 +2025,119.519799,10,410.800,44.800,9.5010,-408.900,39.700,-2.200,408.900,-39.700,-2.200,1.216e+05 +2025,119.525620,10,421.000,44.000,9.2560,-420.700,-12.200,10.800,420.700,12.200,10.800,1.173e+05 +2025,119.584926,10,413.300,45.500,9.7020,-412.900,-9.600,14.900,412.900,9.600,14.900,1.254e+05 +2025,119.594240,10,399.200,43.900,9.2220,-398.700,3.300,-18.300,398.700,-3.300,-18.300,1.167e+05 +2025,119.598898,10,401.400,45.800,9.3680,-400.000,25.500,-21.800,400.000,-25.500,-21.800,1.271e+05 +2025,119.664134,10,405.100,46.200,9.3860,-404.800,-15.000,5.300,404.800,15.000,5.300,1.293e+05 +2025,119.668791,10,407.300,48.000,9.7770,-406.800,-5.400,-18.400,406.800,5.400,-18.400,1.396e+05 +2025,119.686183,10,398.600,44.300,9.6700,-398.200,-16.600,2.500,398.200,16.600,2.500,1.189e+05 +2025,119.694333,10,424.600,47.100,10.8380,-423.300,-16.200,29.000,423.300,16.200,29.000,1.344e+05 +2025,119.707140,10,424.900,47.400,9.1420,-424.200,-25.400,-0.100,424.200,25.400,-0.100,1.361e+05 +2025,119.733992,10,419.400,47.300,8.6360,-419.100,-11.500,8.800,419.100,11.500,8.800,1.355e+05 +2025,119.757241,10,421.900,48.000,8.1490,-421.900,-6.300,-3.600,421.900,6.300,-3.600,1.396e+05 +2025,119.775797,10,436.900,51.700,8.9500,-435.200,2.900,-38.000,435.200,-2.900,-38.000,1.619e+05 +2025,119.786239,10,435.100,54.700,8.1020,-432.600,33.500,-32.200,432.600,-33.500,-32.200,1.812e+05 +2025,119.787403,10,434.600,50.700,7.3190,-433.900,-3.500,-24.400,433.900,3.500,-24.400,1.557e+05 +2025,119.790896,10,423.200,51.600,8.5060,-422.600,-7.200,-20.600,422.600,7.200,-20.600,1.613e+05 +2025,119.801374,10,419.800,44.700,6.9200,-419.600,13.200,1.700,419.600,-13.200,1.700,1.210e+05 +2025,119.802539,10,424.000,45.200,6.1280,-423.900,9.200,-7.600,423.900,-9.200,-7.600,1.238e+05 +2025,119.824624,10,431.500,48.300,7.7690,-428.000,21.700,-50.300,428.000,-21.700,-50.300,1.413e+05 +2025,119.868757,10,422.500,48.500,9.2940,-422.000,11.600,-17.600,422.000,-11.600,-17.600,1.425e+05 +2025,119.869921,10,424.800,49.200,9.4000,-423.100,16.100,-34.200,423.100,-16.100,-34.200,1.466e+05 +2025,119.912891,10,427.000,43.300,9.2170,-426.900,0.700,-10.100,426.900,-0.700,-10.100,1.136e+05 +2025,119.924497,10,431.300,44.100,10.2000,-430.500,-4.200,-26.200,430.500,4.200,-26.200,1.178e+05 +2025,119.927990,10,427.700,41.700,9.6280,-427.200,-7.500,-18.600,427.200,7.500,-18.600,1.053e+05 +2025,119.933811,10,427.600,40.800,8.3050,-427.200,-8.500,-16.300,427.200,8.500,-16.300,1.008e+05 +2025,119.979182,10,424.900,39.900,7.1480,-424.900,-0.600,-0.100,424.900,0.600,-0.100,9.643e+04 +2025,120.019896,10,428.700,47.500,7.7370,-427.600,16.800,-25.400,427.600,-16.800,-25.400,1.367e+05 +2025,120.023389,10,425.300,48.300,7.7330,-423.600,14.100,-34.600,423.600,-14.100,-34.600,1.413e+05 +2025,120.025717,10,428.700,54.000,7.7260,-427.000,14.500,-35.400,427.000,-14.500,-35.400,1.766e+05 +2025,120.052459,10,444.400,49.600,8.8190,-442.400,10.000,-40.500,442.400,-10.000,-40.500,1.490e+05 +2025,120.067559,10,442.100,50.900,7.3750,-440.000,14.900,-40.900,440.000,-14.900,-40.900,1.569e+05 +2025,120.071052,10,436.700,48.900,8.1070,-433.200,21.000,-50.300,433.200,-21.000,-50.300,1.448e+05 +2025,120.074545,10,452.300,45.200,8.1250,-450.900,18.200,-30.600,450.900,-18.200,-30.600,1.238e+05 +2025,120.078001,10,438.400,49.200,7.9250,-436.800,7.400,-36.300,436.800,-7.400,-36.300,1.466e+05 +2025,120.095465,10,443.800,46.200,7.0830,-443.600,8.700,-11.300,443.600,-8.700,-11.300,1.293e+05 +2025,120.103652,10,441.100,44.800,7.1480,-441.000,4.300,-9.900,441.000,-4.300,-9.900,1.216e+05 +2025,120.118824,10,444.900,43.200,6.8120,-444.700,8.400,-11.300,444.700,-8.400,-11.300,1.130e+05 +2025,120.169980,10,428.700,40.500,6.2450,-428.600,4.300,-10.800,428.600,-4.300,-10.800,9.936e+04 +2025,120.171144,10,428.600,39.300,6.0510,-428.400,3.800,-10.400,428.400,-3.800,-10.400,9.356e+04 +2025,120.172308,10,427.600,38.100,6.1100,-427.400,4.400,-12.000,427.400,-4.400,-12.000,8.793e+04 +2025,120.178093,10,425.600,38.900,6.6110,-425.300,4.000,-14.900,425.300,-4.000,-14.900,9.166e+04 +2025,120.197923,10,425.800,40.400,7.2050,-425.500,0.000,-14.900,425.500,-0.000,-14.900,9.887e+04 +2025,120.208401,10,421.300,40.300,7.1950,-420.700,3.000,-21.700,420.700,-3.000,-21.700,9.838e+04 +2025,120.237545,10,428.000,36.100,6.3310,-428.000,1.200,-5.000,428.000,-1.200,-5.000,7.894e+04 +2025,120.239874,10,427.500,40.100,7.4290,-427.400,-5.000,-5.800,427.400,5.000,-5.800,9.740e+04 +2025,120.245695,10,430.300,37.600,7.2540,-430.300,-2.600,-0.300,430.300,2.600,-0.300,8.564e+04 +2025,120.253845,10,426.500,38.100,7.2040,-426.500,1.300,-3.000,426.500,-1.300,-3.000,8.793e+04 +2025,120.273565,10,416.300,33.900,7.4190,-415.900,-8.400,15.000,415.900,8.400,15.000,6.961e+04 +2025,120.300344,10,423.000,33.200,7.8090,-422.400,-16.800,15.800,422.400,16.800,15.800,6.677e+04 +2025,120.322538,10,411.200,35.000,7.5580,-410.400,-23.900,7.100,410.400,23.900,7.100,7.420e+04 +2025,120.331852,10,430.700,35.200,7.4760,-430.100,-10.500,-19.900,430.100,10.500,-19.900,7.505e+04 +2025,120.336509,10,426.400,34.600,7.3710,-425.800,-13.700,-18.100,425.800,13.700,-18.100,7.252e+04 +2025,120.345787,10,425.200,34.400,7.3160,-424.600,-14.400,-16.800,424.600,14.400,-16.800,7.168e+04 +2025,120.346952,10,421.200,34.700,7.4830,-420.700,-18.100,-11.400,420.700,18.100,-11.400,7.294e+04 +2025,120.358558,10,428.400,35.000,8.0860,-427.600,-16.500,-20.500,427.600,16.500,-20.500,7.420e+04 +2025,120.407422,10,419.400,37.500,9.0430,-418.300,-29.400,7.200,418.300,29.400,7.200,8.518e+04 +2025,120.416773,10,429.700,35.300,8.4810,-429.100,-17.700,14.100,429.100,17.700,14.100,7.548e+04 +2025,120.424959,10,409.800,36.100,8.4830,-409.300,-20.100,2.500,409.300,20.100,2.500,7.894e+04 +2025,120.441259,10,419.700,34.500,8.9810,-418.900,-24.400,-8.200,418.900,24.400,-8.200,7.210e+04 +2025,120.451701,10,420.500,35.600,8.9710,-419.700,-24.700,5.500,419.700,24.700,5.500,7.677e+04 +2025,120.458651,10,421.900,38.200,9.5300,-421.200,-13.800,-18.100,421.200,13.800,-18.100,8.839e+04 +2025,120.473750,10,416.200,35.000,9.6080,-415.400,-23.700,9.800,415.400,23.700,9.800,7.420e+04 +2025,120.516865,10,416.100,36.900,9.6720,-415.500,-22.300,3.500,415.500,22.300,3.500,8.248e+04 +2025,120.518029,10,416.700,37.100,10.0870,-415.900,-24.400,7.500,415.900,24.400,7.500,8.337e+04 +2025,120.543680,10,423.700,37.700,10.3350,-423.000,-18.200,-14.600,423.000,18.200,-14.600,8.609e+04 +2025,120.552958,10,423.000,36.000,9.7770,-422.200,-23.700,-12.500,422.200,23.700,-12.500,7.850e+04 +2025,120.561072,10,418.500,37.400,10.2600,-417.700,-19.100,-17.500,417.700,19.100,-17.500,8.473e+04 +2025,120.580828,10,406.300,34.500,9.8310,-405.900,-6.900,-15.500,405.900,6.900,-15.500,7.210e+04 +2025,120.598293,10,408.400,35.200,8.0730,-408.200,-6.000,-8.800,408.200,6.000,-8.800,7.505e+04 +2025,120.619286,10,422.000,35.300,13.0560,-421.300,-22.000,10.200,421.300,22.000,10.200,7.548e+04 +2025,120.625144,10,429.000,33.100,12.5620,-428.200,-24.500,8.700,428.200,24.500,8.700,6.637e+04 +2025,120.640280,10,429.900,28.300,12.9120,-429.300,-19.000,11.400,429.300,19.000,11.400,4.851e+04 +2025,120.644937,10,426.200,33.000,12.3340,-425.400,-25.700,6.200,425.400,25.700,6.200,6.596e+04 +2025,120.651886,10,429.700,33.100,12.5030,-429.000,-24.500,-2.200,429.000,24.500,-2.200,6.637e+04 +2025,120.653051,10,430.200,34.000,12.3360,-429.300,-26.700,0.500,429.300,26.700,0.500,7.002e+04 +2025,120.687870,10,419.300,34.500,12.5050,-418.800,-19.000,-3.500,418.800,19.000,-3.500,7.210e+04 +2025,120.745029,10,424.600,35.200,15.0820,-423.800,-24.900,1.700,423.800,24.900,1.700,7.505e+04 +2025,120.772863,10,438.000,32.500,16.6450,-437.000,-27.200,12.600,437.000,27.200,12.600,6.398e+04 +2025,120.776319,10,426.300,31.600,15.3880,-425.700,-19.300,11.500,425.700,19.300,11.500,6.049e+04 +2025,120.784469,10,419.400,32.600,14.5130,-418.600,-20.700,17.800,418.600,20.700,17.800,6.438e+04 +2025,120.801933,10,445.400,31.500,16.0160,-442.800,-40.700,25.300,442.800,40.700,25.300,6.010e+04 +2025,120.853016,10,444.100,31.100,24.8380,-443.300,-23.400,13.800,443.300,23.400,13.800,5.859e+04 +2025,120.874046,10,440.000,32.300,14.4810,-439.000,-29.100,-5.700,439.000,29.100,-5.700,6.320e+04 +2025,120.875210,10,439.000,31.000,14.2230,-438.100,-27.200,-9.800,438.100,27.200,-9.800,5.821e+04 +2025,120.877539,10,443.000,35.100,15.4710,-441.800,-25.200,-21.300,441.800,25.200,-21.300,7.463e+04 +2025,120.883360,10,451.700,35.600,14.5480,-450.800,-11.400,-25.800,450.800,11.400,-25.800,7.677e+04 +2025,120.890382,10,454.100,31.100,13.4350,-453.300,1.800,-28.300,453.300,-1.800,-28.300,5.859e+04 +2025,120.893875,10,450.200,34.300,12.1940,-449.500,-3.200,-25.900,449.500,3.200,-25.900,7.126e+04 +2025,120.915960,10,438.700,33.300,16.8310,-438.400,11.400,-11.100,438.400,-11.400,-11.100,6.717e+04 +2025,120.918289,10,437.300,35.400,17.1160,-436.800,17.800,-10.800,436.800,-17.800,-10.800,7.591e+04 +2025,120.927603,10,432.500,40.000,18.3650,-432.300,11.400,1.200,432.300,-11.400,1.200,9.692e+04 +2025,120.929931,10,436.200,37.000,22.0010,-436.000,3.300,9.900,436.000,-3.300,9.900,8.293e+04 +2025,121.000844,10,458.700,36.100,25.7570,-458.700,1.500,-0.600,458.700,-1.500,-0.600,7.894e+04 +2025,121.007793,10,463.700,42.800,16.7850,-463.700,6.300,-0.800,463.700,-6.300,-0.800,1.110e+05 +2025,121.008957,10,461.600,46.400,16.1900,-461.500,3.600,9.000,461.500,-3.600,9.000,1.304e+05 +2025,121.012450,10,464.400,42.800,16.3020,-464.200,6.700,10.600,464.200,-6.700,10.600,1.110e+05 +2025,121.018235,10,448.600,44.000,13.9710,-448.400,-6.600,10.400,448.400,6.600,10.400,1.173e+05 +2025,121.022892,10,447.500,48.500,11.3670,-447.300,-10.500,8.900,447.300,10.500,8.900,1.425e+05 +2025,121.029878,10,455.100,56.900,7.1330,-454.300,19.700,16.600,454.300,-19.700,16.600,1.961e+05 +2025,121.058985,10,467.600,65.600,4.1500,-467.300,8.200,14.700,467.300,-8.200,14.700,2.607e+05 +2025,121.071792,10,463.400,63.700,4.6680,-462.800,4.400,22.100,462.800,-4.400,22.100,2.458e+05 +2025,121.230026,10,441.200,27.900,26.8150,-441.100,-1.900,6.600,441.100,1.900,6.600,4.715e+04 +2025,121.233519,10,439.100,31.900,19.8520,-439.100,1.800,8.200,439.100,-1.800,8.200,6.164e+04 +2025,121.245199,10,435.400,36.700,15.1380,-435.400,-3.100,2.800,435.400,3.100,2.800,8.159e+04 +2025,121.247527,10,434.300,33.200,18.3160,-434.300,-1.100,3.100,434.300,1.100,3.100,6.677e+04 +2025,121.256878,10,431.900,28.400,26.5690,-431.900,1.700,0.600,431.900,-1.700,0.600,4.886e+04 +2025,121.260371,10,432.300,27.700,25.8960,-432.300,3.300,0.300,432.300,-3.300,0.300,4.648e+04 +2025,121.272014,10,427.400,30.200,24.7130,-427.400,0.300,0.100,427.400,-0.300,0.100,5.525e+04 +2025,121.298683,10,429.700,36.100,12.3800,-429.100,-21.000,-8.700,429.100,21.000,-8.700,7.894e+04 +2025,121.341798,10,418.800,37.700,12.3350,-418.600,-12.600,-5.300,418.600,12.600,-5.300,8.609e+04 +2025,121.358135,10,448.100,39.400,16.6810,-447.400,-7.900,-22.700,447.400,7.900,-22.700,9.403e+04 +2025,121.366285,10,443.000,37.700,17.7970,-443.000,0.400,-6.400,443.000,-0.400,-6.400,8.609e+04 +2025,121.390662,10,456.900,39.000,11.2880,-456.000,-26.400,10.600,456.000,26.400,10.600,9.213e+04 +2025,121.484969,10,427.500,45.200,10.5800,-426.500,22.000,19.300,426.500,-22.000,19.300,1.238e+05 +2025,121.515131,10,428.300,45.900,9.1310,-428.100,-9.100,7.100,428.100,9.100,7.100,1.276e+05 +2025,121.690866,10,486.700,50.500,12.1530,-484.100,15.300,-48.200,484.100,-15.300,-48.200,1.545e+05 +2025,121.696651,10,470.800,45.500,11.7850,-467.900,-15.100,-49.700,467.900,15.100,-49.700,1.254e+05 +2025,121.731580,10,451.300,44.200,11.2370,-450.500,-26.800,2.900,450.500,26.800,2.900,1.183e+05 +2025,121.746679,10,446.000,47.200,12.0320,-445.100,-23.300,14.500,445.100,23.300,14.500,1.349e+05 +2025,121.750136,10,447.600,44.300,12.1550,-447.000,-24.000,2.000,447.000,24.000,2.000,1.189e+05 +2025,121.755957,10,448.900,42.600,10.4830,-448.400,-19.800,3.400,448.400,19.800,3.400,1.099e+05 +2025,121.772221,10,464.000,45.400,10.6070,-462.700,-22.300,26.100,462.700,22.300,26.100,1.249e+05 +2025,121.774549,10,448.000,49.400,10.7510,-446.300,-21.800,31.600,446.300,21.800,31.600,1.478e+05 +2025,121.878170,10,461.400,45.000,10.3560,-459.700,-17.500,-36.000,459.700,17.500,-36.000,1.227e+05 +2025,122.177209,10,587.200,71.300,5.1480,-581.600,77.900,20.800,581.600,-77.900,20.800,3.079e+05 +2025,122.520019,10,616.000,68.100,4.5100,-610.500,-12.500,-81.800,610.500,12.500,-81.800,2.809e+05 +2025,122.555020,10,583.200,78.200,5.6700,-575.000,17.100,-96.300,575.000,-17.100,-96.300,3.704e+05 +2025,123.612224,10,775.700,96.300,1.7470,-772.700,0.500,-68.300,772.700,-0.500,-68.300,5.617e+05 +2025,123.941206,10,727.100,90.300,1.3680,-721.300,19.500,-89.500,721.300,-19.500,-89.500,4.939e+05 +2025,124.511633,10,606.800,70.600,4.6890,-604.300,-47.300,-28.800,604.300,47.300,-28.800,3.019e+05 +2025,124.553474,10,615.500,64.300,4.0930,-613.500,-44.500,-20.500,613.500,44.500,-20.500,2.504e+05 +2025,124.661679,10,619.600,64.000,4.5750,-617.300,-45.000,29.900,617.300,45.000,29.900,2.481e+05 +2025,124.694170,10,622.700,67.400,4.1920,-620.800,-47.600,11.300,620.800,47.600,11.300,2.752e+05 +2025,124.746453,10,602.700,69.900,4.0510,-599.300,5.500,-63.400,599.300,-5.500,-63.400,2.960e+05 +2025,124.776725,10,627.900,71.300,4.0340,-626.300,-33.700,28.500,626.300,33.700,28.500,3.079e+05 +2025,124.789568,10,634.300,63.700,3.8730,-631.900,-31.900,-45.000,631.900,31.900,-45.000,2.458e+05 +2025,124.793061,10,636.100,68.600,4.4580,-633.400,-33.000,-49.000,633.400,33.000,-49.000,2.851e+05 +2025,125.592813,10,802.900,84.300,2.0990,-801.200,-0.900,-52.200,801.200,0.900,-52.200,4.305e+05 +2025,126.356873,10,609.400,68.700,2.8090,-609.100,12.000,-12.500,609.100,-12.000,-12.500,2.859e+05 +2025,126.377866,10,627.700,61.800,3.1320,-627.200,-19.100,-14.500,627.200,19.100,-14.500,2.313e+05 +2025,126.411522,10,627.200,63.600,3.2710,-626.800,-21.400,6.000,626.800,21.400,6.000,2.450e+05 +2025,126.446450,10,610.500,61.700,2.7620,-609.700,3.600,29.500,609.700,-3.600,29.500,2.306e+05 +2025,126.604684,10,599.100,58.600,2.4630,-598.700,-19.600,-7.300,598.700,19.600,-7.300,2.080e+05 +2025,126.769813,10,623.400,65.300,2.9880,-622.400,-6.300,-35.200,622.400,6.300,-35.200,2.583e+05 +2025,126.784916,10,637.400,66.900,2.1190,-636.900,-17.700,16.300,636.900,17.700,16.300,2.711e+05 +2025,126.888449,10,611.000,58.400,2.0500,-610.800,-14.800,3.600,610.800,14.800,3.600,2.066e+05 +2025,126.952571,10,595.700,65.000,2.0920,-594.300,36.900,16.400,594.300,-36.900,16.400,2.559e+05 +2025,126.954900,10,643.600,53.900,1.9390,-643.600,-6.000,-2.400,643.600,6.000,-2.400,1.760e+05 +2025,126.963052,10,612.400,56.000,2.1230,-612.200,-14.100,11.400,612.200,14.100,11.400,1.900e+05 +2025,126.964216,10,621.300,57.000,1.9820,-621.100,-7.000,16.800,621.100,7.000,16.800,1.968e+05 +2025,126.985251,10,608.100,56.400,2.2030,-607.400,-6.100,-28.300,607.400,6.100,-28.300,1.927e+05 +2025,127.038856,10,619.700,55.000,2.0280,-618.300,3.900,-41.500,618.300,-3.900,-41.500,1.832e+05 +2025,127.123976,10,581.600,47.900,2.0160,-576.800,51.700,-54.000,576.800,-51.700,-54.000,1.390e+05 +2025,127.158912,10,574.400,42.500,1.8660,-573.600,-13.400,27.400,573.600,13.400,27.400,1.094e+05 +2025,127.162406,10,582.700,48.300,2.1070,-581.900,-8.600,29.700,581.900,8.600,29.700,1.413e+05 +2025,127.213718,10,585.800,44.700,2.1280,-583.900,-25.300,-39.500,583.900,25.300,-39.500,1.210e+05 +2025,127.241703,10,586.100,46.700,2.3540,-583.800,-15.100,-49.800,583.800,15.100,-49.800,1.321e+05 +2025,127.327988,10,555.400,47.900,2.4000,-554.700,-14.800,-22.600,554.700,14.800,-22.600,1.390e+05 +2025,127.907343,10,470.300,36.800,3.0050,-466.800,-56.800,-5.700,466.800,56.800,-5.700,8.203e+04 +2025,128.064774,10,456.600,30.200,3.0750,-453.800,-47.300,-18.100,453.800,47.300,-18.100,5.525e+04 +2025,128.067103,10,462.500,29.700,2.9230,-459.300,-54.900,-1.500,459.300,54.900,-1.500,5.343e+04 +2025,128.093887,10,466.100,34.300,3.3390,-462.700,-6.800,56.200,462.700,6.800,56.200,7.126e+04 +2025,128.168490,10,484.500,34.800,3.8390,-481.900,-48.000,-16.500,481.900,48.000,-16.500,7.336e+04 +2025,129.078975,10,470.400,32.700,5.4100,-468.600,-4.500,40.700,468.600,4.500,40.700,6.477e+04 +2025,129.134945,10,488.400,39.200,6.3710,-488.000,-8.700,18.600,488.000,8.700,18.600,9.308e+04 +2025,129.369272,10,426.600,34.800,6.3740,-425.500,-17.000,25.300,425.500,17.000,25.300,7.336e+04 +2025,129.433358,10,458.700,36.200,7.6250,-456.600,-42.600,9.600,456.600,42.600,9.600,7.938e+04 +2025,129.469495,10,450.400,36.600,7.1840,-449.300,-30.300,4.600,449.300,30.300,4.600,8.114e+04 +2025,129.511491,10,454.700,35.700,7.3460,-452.600,-39.900,17.000,452.600,39.900,17.000,7.720e+04 +2025,129.560437,10,439.600,38.400,9.0900,-437.800,-39.200,5.100,437.800,39.200,5.100,8.932e+04 +2025,129.588422,10,463.300,15.800,5.2940,-462.100,-33.900,-1.100,462.100,33.900,-1.100,1.512e+04 +2025,129.654873,10,451.100,38.300,7.4050,-450.400,-19.300,-14.900,450.400,19.300,-14.900,8.886e+04 +2025,129.656038,10,451.500,35.900,7.3410,-450.700,-18.300,-19.500,450.700,18.300,-19.500,7.807e+04 +2025,129.677036,10,437.400,39.500,7.6580,-436.000,-35.100,-1.300,436.000,35.100,-1.300,9.451e+04 +2025,129.679365,10,439.600,36.000,7.7710,-437.900,-38.200,-9.600,437.900,38.200,-9.600,7.850e+04 +2025,129.682858,10,436.400,36.000,7.3980,-435.100,-31.600,-10.900,435.100,31.600,-10.900,7.850e+04 +2025,129.721324,10,431.000,34.000,7.2880,-429.900,-24.900,-17.000,429.900,24.900,-17.000,7.002e+04 +2025,129.725982,10,440.900,34.600,7.2500,-439.500,-33.000,-11.100,439.500,33.000,-11.100,7.252e+04 +2025,129.762119,10,451.200,36.600,8.3690,-450.100,-29.400,-11.900,450.100,29.400,-11.900,8.114e+04 +2025,129.769107,10,439.900,34.700,7.0320,-438.400,-35.800,-3.900,438.400,35.800,-3.900,7.294e+04 +2025,129.778459,10,419.600,36.700,8.3710,-417.300,-40.700,17.100,417.300,40.700,17.100,8.159e+04 +2025,129.787776,10,421.100,37.400,8.5670,-420.300,-13.200,-23.100,420.300,13.200,-23.100,8.473e+04 +2025,129.805280,10,426.000,37.800,8.2350,-424.300,-34.700,-16.600,424.300,34.700,-16.600,8.655e+04 +2025,129.842545,10,426.400,38.200,8.8520,-424.900,-29.700,-19.000,424.900,29.700,-19.000,8.839e+04 +2025,129.856556,10,434.800,31.800,7.4570,-433.500,-19.300,-27.100,433.500,19.300,-27.100,6.125e+04 +2025,129.858885,10,432.300,33.800,7.8040,-430.700,-26.600,-26.800,430.700,26.600,-26.800,6.920e+04 +2025,129.948627,10,426.800,36.300,7.4440,-425.700,-24.500,17.200,425.700,24.500,17.200,7.982e+04 +2025,129.974283,10,445.000,37.700,8.3810,-443.500,-11.000,34.800,443.500,11.000,34.800,8.609e+04 +2025,129.989459,10,433.300,39.500,8.9040,-432.400,-4.100,27.300,432.400,4.100,27.300,9.451e+04 +2025,130.009256,10,442.800,38.000,8.1270,-442.500,-2.400,15.300,442.500,2.400,15.300,8.747e+04 +2025,130.072214,10,486.300,59.300,6.8690,-483.400,50.800,15.500,483.400,-50.800,15.500,2.130e+05 +2025,130.080365,10,504.300,52.500,5.9440,-504.200,8.500,-3.600,504.200,-8.500,-3.600,1.670e+05 +2025,130.086188,10,505.700,54.600,6.0900,-505.500,15.400,-0.400,505.500,-15.400,-0.400,1.806e+05 +2025,130.089682,10,514.200,58.900,6.2170,-513.200,26.900,18.500,513.200,-26.900,18.500,2.101e+05 +2025,130.095541,10,503.800,58.000,5.7880,-501.600,46.400,10.000,501.600,-46.400,10.000,2.038e+05 +2025,130.487225,10,506.200,57.900,5.9790,-501.900,62.500,20.000,501.900,-62.500,20.000,2.031e+05 +2025,130.874251,10,459.600,48.400,4.1640,-458.700,3.900,-28.100,458.700,-3.900,-28.100,1.419e+05 +2025,130.896413,10,463.900,50.400,4.0120,-463.300,1.500,-22.300,463.300,-1.500,-22.300,1.539e+05 +2025,130.904565,10,456.900,47.800,3.9420,-455.800,3.000,-32.200,455.800,-3.000,-32.200,1.384e+05 +2025,131.086451,10,428.000,44.000,6.0980,-426.300,-17.800,-33.900,426.300,17.800,-33.900,1.173e+05 +2025,131.087616,10,427.700,43.600,5.9610,-426.100,-16.000,-34.200,426.100,16.000,-34.200,1.151e+05 +2025,131.201848,10,404.100,43.500,6.8400,-402.100,-13.100,-37.300,402.100,13.100,-37.300,1.146e+05 +2025,131.229833,10,420.100,38.300,6.2710,-417.900,-17.100,-39.300,417.900,17.100,-39.300,8.886e+04 +2025,131.246173,10,405.300,42.200,5.7510,-404.900,-16.600,-7.000,404.900,16.600,-7.000,1.079e+05 +2025,131.305601,10,434.000,45.700,7.1080,-432.900,30.600,-5.800,432.900,-30.600,-5.800,1.265e+05 +2025,131.333586,10,425.500,44.600,6.8690,-423.800,-10.900,-36.100,423.800,10.900,-36.100,1.205e+05 +2025,131.356913,10,412.400,44.400,7.5380,-411.600,-24.200,-8.400,411.600,24.200,-8.400,1.194e+05 +2025,131.395379,10,432.100,47.100,7.9620,-429.800,-27.000,-35.000,429.800,27.000,-35.000,1.344e+05 +2025,131.400037,10,431.400,44.400,7.9420,-428.900,-13.600,-44.100,428.900,13.600,-44.100,1.194e+05 +2025,131.405860,10,438.900,48.800,7.6600,-435.600,-11.000,-52.800,435.600,11.000,-52.800,1.443e+05 +2025,131.836045,10,449.500,30.900,11.5200,-447.900,0.300,-37.600,447.900,-0.300,-37.600,5.784e+04 +2025,131.844197,10,442.800,37.100,11.1590,-441.500,-5.000,-33.500,441.500,5.000,-33.500,8.337e+04 +2025,131.878005,10,445.900,30.400,11.9650,-445.900,-3.400,2.900,445.900,3.400,2.900,5.598e+04 +2025,131.881499,10,451.600,31.300,10.3670,-451.100,-9.900,-19.400,451.100,9.900,-19.400,5.934e+04 +2025,131.882663,10,450.600,30.900,10.6950,-449.600,-9.200,-28.600,449.600,9.200,-28.600,5.784e+04 +2025,131.890815,10,464.300,33.700,11.7360,-464.100,-4.100,-10.200,464.100,4.100,-10.200,6.879e+04 +2025,131.895473,10,441.300,31.800,12.0120,-439.900,-16.300,-31.000,439.900,16.300,-31.000,6.125e+04 +2025,131.915343,10,464.400,28.300,11.5390,-462.300,44.000,0.400,462.300,-44.000,0.400,4.851e+04 +2025,131.916508,10,462.900,25.700,11.6180,-461.000,42.100,4.600,461.000,-42.100,4.600,4.001e+04 +2025,131.918837,10,456.400,25.200,10.3450,-454.700,39.800,-2.800,454.700,-39.800,-2.800,3.847e+04 +2025,131.952608,10,453.300,13.800,9.1480,-452.500,27.000,0.900,452.500,-27.000,0.900,1.154e+04 +2025,132.015566,10,453.600,18.300,6.9140,-452.500,28.600,12.300,452.500,-28.600,12.300,2.029e+04 +2025,132.016730,10,455.700,16.200,6.5780,-454.400,32.700,9.000,454.400,-32.700,9.000,1.590e+04 +2025,132.022553,10,456.300,15.300,6.3980,-455.400,25.100,14.000,455.400,-25.100,14.000,1.418e+04 +2025,132.029577,10,457.400,15.900,6.4930,-456.300,28.100,12.400,456.300,-28.100,12.400,1.531e+04 +2025,132.051739,10,453.100,14.700,6.6170,-452.300,21.400,14.800,452.300,-21.400,14.800,1.309e+04 +2025,132.054068,10,454.400,16.400,6.0910,-453.900,20.600,8.200,453.900,-20.600,8.200,1.629e+04 +2025,132.062220,10,451.600,15.400,6.5200,-451.000,20.900,10.900,451.000,-20.900,10.900,1.437e+04 +2025,132.112332,10,441.500,15.300,8.0570,-441.300,12.600,1.800,441.300,-12.600,1.800,1.418e+04 +2025,132.118154,10,424.300,15.200,7.8270,-424.100,2.400,-12.000,424.100,-2.400,-12.000,1.399e+04 +2025,132.139152,10,442.600,18.900,8.8520,-442.400,12.800,-2.800,442.400,-12.800,-2.800,2.164e+04 +2025,132.169467,10,414.300,22.000,10.9210,-411.200,2.400,-50.100,411.200,-2.400,-50.100,2.932e+04 +2025,132.170631,10,415.900,20.600,10.6650,-414.100,-0.900,-38.400,414.100,0.900,-38.400,2.571e+04 +2025,132.177618,10,414.600,24.600,10.4060,-413.500,-8.300,-29.300,413.500,8.300,-29.300,3.666e+04 +2025,132.213755,10,450.300,18.900,6.3000,-449.900,-7.900,-14.900,449.900,7.900,-14.900,2.164e+04 +2025,132.237082,10,443.000,20.300,6.9210,-441.300,38.500,-7.300,441.300,-38.500,-7.300,2.496e+04 +2025,132.273219,10,425.100,25.500,6.9260,-425.100,0.200,-2.100,425.100,-0.200,-2.100,3.939e+04 +2025,132.287193,10,425.300,22.000,7.9500,-423.700,-14.000,-33.700,423.700,14.000,-33.700,2.932e+04 +2025,132.326860,10,411.100,32.800,7.3190,-409.000,13.300,-39.600,409.000,-13.300,-39.600,6.517e+04 +2025,132.400298,10,388.100,29.100,8.5310,-386.700,6.800,-33.100,386.700,-6.800,-33.100,5.129e+04 +2025,132.486583,10,400.700,27.600,10.3040,-399.400,23.200,-22.900,399.400,-23.200,-22.900,4.614e+04 +2025,132.509874,10,396.700,25.300,9.9420,-395.400,23.100,-23.400,395.400,-23.100,-23.400,3.877e+04 +2025,132.513367,10,396.000,26.000,10.6090,-394.600,26.400,-20.800,394.600,-26.400,-20.800,4.095e+04 +2025,132.515696,10,395.100,27.400,10.7770,-393.800,24.100,-20.100,393.800,-24.100,-20.100,4.548e+04 +2025,132.528543,10,396.000,26.800,9.7880,-394.500,28.800,-19.000,394.500,-28.800,-19.000,4.351e+04 +2025,132.542517,10,394.000,25.700,9.6770,-392.700,25.900,-18.800,392.700,-25.900,-18.800,4.001e+04 +2025,132.559985,10,394.800,26.600,9.9130,-394.200,16.300,-15.800,394.200,-16.300,-15.800,4.286e+04 +2025,132.587970,10,391.000,27.800,10.0890,-390.700,5.700,-12.400,390.700,-5.700,-12.400,4.681e+04 +2025,132.610133,10,385.200,24.000,9.3130,-384.500,9.000,-21.300,384.500,-9.000,-21.300,3.489e+04 +2025,132.613627,10,385.300,24.400,9.4720,-384.700,7.200,-21.300,384.700,-7.200,-21.300,3.606e+04 +2025,132.643941,10,382.300,21.800,9.0330,-382.100,13.300,-3.200,382.100,-13.300,-3.200,2.879e+04 +2025,132.656751,10,385.500,21.000,10.0800,-385.100,6.400,-15.300,385.100,-6.400,-15.300,2.671e+04 +2025,132.666103,10,384.200,27.100,10.8500,-384.000,6.200,-11.400,384.000,-6.200,-11.400,4.449e+04 +2025,132.688230,10,379.900,23.500,10.2890,-379.500,16.400,3.100,379.500,-16.400,3.100,3.345e+04 +2025,132.689394,10,376.100,25.600,9.6360,-375.800,13.700,-2.700,375.800,-13.700,-2.700,3.970e+04 +2025,132.702240,10,374.600,23.100,10.2920,-374.500,1.600,-6.000,374.500,-1.600,-6.000,3.232e+04 +2025,132.705734,10,374.500,23.200,10.2070,-374.400,3.900,-6.400,374.400,-3.900,-6.400,3.260e+04 +2025,132.712721,10,378.600,23.000,9.1010,-378.600,6.100,-2.300,378.600,-6.100,-2.300,3.204e+04 +2025,132.719708,10,374.900,20.100,10.0810,-374.800,2.300,-6.700,374.800,-2.300,-6.700,2.447e+04 +2025,132.720873,10,372.600,20.300,10.4920,-372.600,3.400,-4.500,372.600,-3.400,-4.500,2.496e+04 +2025,132.733719,10,369.100,19.400,10.3250,-368.500,-8.800,-17.700,368.500,8.800,-17.700,2.280e+04 +2025,132.738377,10,380.000,19.400,7.4480,-378.900,29.000,2.400,378.900,-29.000,2.400,2.280e+04 +2025,132.740707,10,380.900,20.100,7.9310,-380.000,25.000,6.000,380.000,-25.000,6.000,2.447e+04 +2025,132.775679,10,371.200,21.300,8.9840,-370.700,18.700,4.400,370.700,-18.700,4.400,2.748e+04 +2025,132.818803,10,377.200,25.100,14.0270,-375.800,-0.400,33.500,375.800,0.400,33.500,3.816e+04 +2025,132.835106,10,369.900,24.600,13.1490,-369.700,6.100,12.600,369.700,-6.100,12.600,3.666e+04 +2025,132.844422,10,367.600,23.800,12.4310,-367.100,11.800,15.500,367.100,-11.800,15.500,3.431e+04 +2025,132.846788,10,366.200,23.000,11.6300,-365.800,13.200,11.300,365.800,-13.200,11.300,3.204e+04 +2025,132.856104,10,368.200,25.500,13.1070,-367.500,13.600,18.100,367.500,-13.600,18.100,3.939e+04 +2025,132.861963,10,365.200,24.000,12.3870,-365.000,6.500,10.900,365.000,-6.500,10.900,3.489e+04 +2025,132.881760,10,367.800,24.300,12.6180,-367.500,-10.600,11.100,367.500,10.600,11.100,3.577e+04 +2025,132.882925,10,362.600,23.900,11.8250,-362.400,0.000,10.500,362.400,-0.000,10.500,3.460e+04 +2025,132.900429,10,387.600,23.300,11.8650,-385.800,-31.800,18.300,385.800,31.800,18.300,3.288e+04 +2025,132.910910,10,383.100,22.300,11.2190,-381.500,-31.800,13.400,381.500,31.800,13.400,3.012e+04 +2025,132.912075,10,383.200,22.300,12.1670,-381.600,-33.300,10.800,381.600,33.300,10.800,3.012e+04 +2025,132.931872,10,373.100,23.900,10.2210,-371.900,3.900,28.800,371.900,-3.900,28.800,3.460e+04 +2025,132.940060,10,387.800,26.000,11.2630,-385.800,-39.000,7.600,385.800,39.000,7.600,4.095e+04 +2025,132.964515,10,371.600,23.900,10.2680,-370.900,-9.500,22.000,370.900,9.500,22.000,3.460e+04 +2025,132.965680,10,381.900,26.300,11.4050,-380.300,-6.800,34.500,380.300,6.800,34.500,4.190e+04 +2025,133.006511,10,393.700,30.000,11.0670,-392.100,20.500,29.800,392.100,-20.500,29.800,5.452e+04 +2025,133.062445,10,380.600,22.700,9.9550,-380.100,1.000,19.100,380.100,-1.000,19.100,3.121e+04 +2025,133.065939,10,382.100,22.600,10.2830,-381.800,-10.400,12.400,381.800,10.400,12.400,3.094e+04 +2025,133.078785,10,388.500,23.000,10.9160,-387.800,-7.800,21.200,387.800,7.800,21.200,3.204e+04 +2025,133.113758,10,403.900,32.100,13.3990,-403.600,-14.300,3.800,403.600,14.300,3.800,6.242e+04 +2025,133.146401,10,397.400,37.200,14.8640,-397.300,-2.100,8.200,397.300,2.100,8.200,8.382e+04 +2025,133.159211,10,391.900,35.000,16.2150,-390.400,33.700,-6.700,390.400,-33.700,-6.700,7.420e+04 +2025,133.163869,10,395.700,35.100,16.3940,-393.800,37.700,-9.800,393.800,-37.700,-9.800,7.463e+04 +2025,133.166198,10,396.100,37.900,16.4960,-394.300,37.300,-6.600,394.300,-37.300,-6.600,8.701e+04 +2025,133.167363,10,395.200,38.000,16.2550,-393.600,35.300,-8.300,393.600,-35.300,-8.300,8.747e+04 +2025,133.168527,10,396.200,34.900,16.8100,-394.700,32.800,-9.100,394.700,-32.800,-9.100,7.378e+04 +2025,133.169692,10,397.900,37.500,17.5070,-395.800,38.800,-10.800,395.800,-38.800,-10.800,8.518e+04 +2025,133.242002,10,399.000,37.300,13.9200,-398.800,-2.100,11.600,398.800,2.100,11.600,8.428e+04 +2025,133.244331,10,405.300,33.200,12.8790,-405.100,3.900,9.100,405.100,-3.900,9.100,6.677e+04 +2025,133.285126,10,392.300,28.800,11.9260,-391.700,-10.000,19.300,391.700,10.000,19.300,5.024e+04 +2025,133.328251,10,396.500,29.500,13.2910,-396.200,-13.800,-5.000,396.200,13.800,-5.000,5.271e+04 +2025,133.362022,10,404.900,28.500,11.7700,-404.600,-14.500,1.800,404.600,14.500,1.800,4.920e+04 +2025,133.365552,10,411.500,27.500,12.2880,-411.000,-15.100,-11.900,411.000,15.100,-11.900,4.581e+04 +2025,133.397031,10,422.100,26.700,11.2410,-421.900,-11.600,4.800,421.900,11.600,4.800,4.318e+04 +2025,133.406347,10,415.900,27.400,11.6660,-415.400,-20.200,-8.300,415.400,20.200,-8.300,4.548e+04 +2025,133.451837,10,381.900,28.100,11.3730,-381.400,-17.700,7.100,381.400,17.700,7.100,4.783e+04 +2025,133.498455,10,385.000,30.400,12.2050,-384.300,-12.000,19.300,384.300,12.000,19.300,5.598e+04 +2025,133.527605,10,400.800,29.700,12.3320,-400.600,-5.100,11.600,400.600,5.100,11.600,5.343e+04 +2025,133.534592,10,392.900,29.600,10.0760,-391.900,2.800,27.100,391.900,-2.800,27.100,5.307e+04 +2025,133.541579,10,384.800,35.500,13.1780,-384.500,-12.600,-5.000,384.500,12.600,-5.000,7.634e+04 +2025,133.557883,10,382.700,34.500,13.9930,-382.600,-7.400,8.400,382.600,7.400,8.400,7.210e+04 +2025,133.561413,10,378.300,32.100,11.9990,-378.100,-10.800,1.500,378.100,10.800,1.500,6.242e+04 +2025,133.575387,10,380.200,49.700,14.4960,-377.800,20.500,37.300,377.800,-20.500,37.300,1.496e+05 +2025,133.584703,10,373.200,35.900,13.1510,-373.100,-4.100,7.300,373.100,4.100,7.300,7.807e+04 +2025,133.591691,10,369.400,37.100,12.3370,-369.300,-5.800,3.800,369.300,5.800,3.800,8.337e+04 +2025,133.596349,10,369.200,37.400,13.1940,-368.100,12.900,25.100,368.100,-12.900,25.100,8.473e+04 +2025,133.601007,10,367.900,36.300,13.1440,-367.200,7.600,22.300,367.200,-7.600,22.300,7.982e+04 +2025,133.603336,10,372.500,38.100,14.6620,-371.600,9.700,23.800,371.600,-9.700,23.800,8.793e+04 +2025,133.613853,10,387.400,36.700,13.1980,-386.900,7.300,17.500,386.900,-7.300,17.500,8.159e+04 +2025,133.617347,10,378.200,45.300,14.4510,-378.200,2.300,-6.800,378.200,-2.300,-6.800,1.243e+05 +2025,133.653520,10,365.700,35.100,12.4620,-365.100,-8.100,20.000,365.100,8.100,20.000,7.463e+04 +2025,133.659343,10,372.300,33.000,12.2010,-371.900,-16.000,6.000,371.900,16.000,6.000,6.596e+04 +2025,133.662837,10,374.100,32.700,12.1590,-373.800,-16.100,-2.300,373.800,16.100,-2.300,6.477e+04 +2025,133.669824,10,376.200,32.800,11.7900,-375.900,-15.900,-2.500,375.900,15.900,-2.500,6.517e+04 +2025,133.695480,10,383.200,38.300,13.2110,-382.500,-6.700,-21.200,382.500,6.700,-21.200,8.886e+04 +2025,133.707125,10,387.100,35.000,11.9960,-386.500,-17.900,-13.800,386.500,17.900,-13.800,7.420e+04 +2025,133.822523,10,375.200,46.000,4.6150,-373.100,1.500,-40.400,373.100,-1.500,-40.400,1.282e+05 +2025,133.833040,10,373.100,50.000,5.2030,-371.600,12.800,-30.800,371.600,-12.800,-30.800,1.514e+05 +2025,133.834205,10,370.300,47.900,4.7990,-368.700,1.200,-34.500,368.700,-1.200,-34.500,1.390e+05 +2025,133.993927,10,389.000,44.500,8.7790,-388.400,-3.200,-21.900,388.400,3.200,-21.900,1.200e+05 +2025,134.003244,10,375.800,46.200,9.0680,-375.000,-10.400,-22.700,375.000,10.400,-22.700,1.293e+05 +2025,134.005573,10,377.000,48.000,9.2510,-375.800,-12.000,-26.600,375.800,12.000,-26.600,1.396e+05 +2025,134.027699,10,389.300,46.100,9.0790,-387.700,-9.800,-34.300,387.700,9.800,-34.300,1.287e+05 +2025,134.032357,10,374.500,52.000,9.3400,-372.400,39.200,-6.100,372.400,-39.200,-6.100,1.638e+05 +2025,134.045203,10,383.300,51.600,9.0200,-383.100,-7.200,-6.100,383.100,7.200,-6.100,1.613e+05 +2025,134.061543,10,384.100,49.400,9.1630,-384.000,0.600,-8.400,384.000,-0.600,-8.400,1.478e+05 +2025,134.069695,10,390.500,50.900,9.4300,-390.400,-7.800,-6.000,390.400,7.800,-6.000,1.569e+05 +2025,134.072024,10,393.200,50.400,9.0290,-393.100,-10.300,-3.200,393.100,10.300,-3.200,1.539e+05 +2025,134.077847,10,400.300,47.900,8.4300,-400.200,-6.300,-9.300,400.200,6.300,-9.300,1.390e+05 +2025,134.083669,10,388.800,46.900,9.7730,-388.800,-5.800,-5.200,388.800,5.800,-5.200,1.332e+05 +2025,134.089492,10,388.700,49.000,8.8270,-388.100,-9.400,-20.500,388.100,9.400,-20.500,1.454e+05 +2025,134.102338,10,384.300,47.900,9.7550,-383.600,-6.400,-21.900,383.600,6.400,-21.900,1.390e+05 +2025,134.105832,10,384.700,51.700,10.9350,-382.800,-1.000,-37.600,382.800,1.000,-37.600,1.619e+05 +2025,134.122135,10,383.200,47.700,8.9720,-380.700,-2.700,-43.500,380.700,2.700,-43.500,1.378e+05 +2025,134.158272,10,371.600,43.500,9.6810,-371.600,-0.300,-4.600,371.600,0.300,-4.600,1.146e+05 +2025,134.188623,10,376.300,42.900,9.2650,-375.600,-16.700,-16.500,375.600,16.700,-16.500,1.115e+05 +2025,134.190952,10,382.000,41.300,9.9800,-381.200,-19.200,-17.500,381.200,19.200,-17.500,1.033e+05 +2025,134.238735,10,377.700,38.100,8.9320,-376.900,-13.300,-21.700,376.900,13.300,-21.700,8.793e+04 +2025,134.271378,10,376.400,38.600,9.0950,-375.400,-22.500,-17.700,375.400,22.500,-17.700,9.025e+04 +2025,134.274872,10,375.500,39.700,9.5320,-374.300,-22.800,-19.000,374.300,22.800,-19.000,9.547e+04 +2025,134.281859,10,366.100,40.300,10.0460,-365.800,-12.800,-10.200,365.800,12.800,-10.200,9.838e+04 +2025,134.286517,10,360.400,40.700,10.5780,-360.400,2.900,-1.300,360.400,-2.900,-1.300,1.003e+05 +2025,134.293504,10,371.900,40.200,9.9290,-371.300,-18.300,-11.500,371.300,18.300,-11.500,9.789e+04 +2025,134.298199,10,364.700,41.500,10.2420,-364.300,-15.500,-7.100,364.300,15.500,-7.100,1.043e+05 +2025,134.306350,10,372.500,40.400,10.6650,-371.300,-18.500,-23.800,371.300,18.500,-23.800,9.887e+04 +2025,134.316831,10,368.400,43.100,10.3350,-368.100,-16.300,-5.300,368.100,16.300,-5.300,1.125e+05 +2025,134.347146,10,369.000,39.500,10.1310,-368.900,7.100,-1.600,368.900,-7.100,-1.600,9.451e+04 +2025,134.349475,10,367.400,38.600,10.0950,-367.300,-0.800,6.700,367.300,0.800,6.700,9.025e+04 +2025,134.373966,10,380.100,40.800,10.7420,-379.900,-7.300,-8.600,379.900,7.300,-8.600,1.008e+05 +2025,134.375131,10,378.400,40.800,10.1840,-378.200,-11.400,-6.000,378.200,11.400,-6.000,1.008e+05 +2025,134.398422,10,398.400,38.600,10.8790,-397.800,-14.000,-17.300,397.800,14.000,-17.300,9.025e+04 +2025,134.413560,10,384.300,43.900,9.8840,-384.200,-10.200,-1.200,384.200,10.200,-1.200,1.167e+05 +2025,134.415890,10,398.600,42.400,10.2930,-398.300,-13.900,1.100,398.300,13.900,1.100,1.089e+05 +2025,134.418219,10,394.600,44.900,10.1900,-394.400,-12.100,-0.000,394.400,12.100,-0.000,1.221e+05 +2025,134.422913,10,395.600,39.500,10.2460,-395.400,-13.900,-1.000,395.400,13.900,-1.000,9.451e+04 +2025,134.434595,10,401.400,41.100,10.6450,-400.900,-17.600,-9.200,400.900,17.600,-9.200,1.023e+05 +2025,134.450898,10,390.300,42.400,10.9320,-389.800,-17.100,-12.000,389.800,17.100,-12.000,1.089e+05 +2025,134.477683,10,413.700,37.700,9.5610,-411.600,-25.700,-32.200,411.600,25.700,-32.200,8.609e+04 +2025,134.484706,10,421.600,36.400,9.8130,-420.600,-26.300,-13.300,420.600,26.300,-13.300,8.026e+04 +2025,134.487035,10,423.800,35.700,9.2100,-422.500,-16.400,-28.600,422.500,16.400,-28.600,7.720e+04 +2025,134.552322,10,409.100,47.900,12.2320,-407.300,-35.300,16.000,407.300,35.300,16.000,1.390e+05 +2025,134.563967,10,409.000,40.200,10.5580,-406.900,-40.100,7.700,406.900,40.100,7.700,9.789e+04 +2025,134.573320,10,407.300,37.000,9.7730,-405.400,-38.800,6.000,405.400,38.800,6.000,8.293e+04 +2025,134.575649,10,408.500,37.100,10.6250,-406.500,-39.900,4.300,406.500,39.900,4.300,8.337e+04 +2025,134.591953,10,413.100,35.400,10.3610,-411.100,-40.700,2.600,411.100,40.700,2.600,7.591e+04 +2025,134.625760,10,414.500,29.700,10.1070,-411.500,-49.800,-5.200,411.500,49.800,-5.200,5.343e+04 +2025,134.661897,10,398.000,34.300,12.3210,-394.400,-50.500,17.600,394.400,50.500,17.600,7.126e+04 +2025,134.681730,10,396.800,35.000,10.8360,-392.600,-53.200,22.100,392.600,53.200,22.100,7.420e+04 +2025,134.684059,10,397.000,29.600,13.0430,-392.400,-58.100,16.700,392.400,58.100,16.700,5.307e+04 +2025,134.688718,10,412.400,27.900,10.4380,-408.500,-56.800,6.900,408.500,56.800,6.900,4.715e+04 +2025,134.706222,10,404.400,28.000,12.8250,-399.800,-60.400,3.100,399.800,60.400,3.100,4.749e+04 +2025,134.717867,10,403.500,29.900,14.4810,-399.000,-60.200,1.000,399.000,60.200,1.000,5.415e+04 +2025,134.730713,10,389.400,28.900,11.4310,-384.300,-61.400,12.700,384.300,61.400,12.700,5.059e+04 +2025,134.740030,10,388.100,30.300,11.7800,-383.600,-56.500,15.600,383.600,56.500,15.600,5.561e+04 +2025,134.751675,10,386.300,30.100,11.6350,-381.800,-57.800,12.800,381.800,57.800,12.800,5.488e+04 +2025,134.752840,10,384.200,29.800,11.4490,-379.900,-55.600,13.800,379.900,55.600,13.800,5.379e+04 +2025,134.765650,10,380.700,27.400,10.9380,-376.500,-55.300,8.400,376.500,55.300,8.400,4.548e+04 +2025,134.772637,10,379.400,28.700,11.6460,-375.000,-57.600,2.500,375.000,57.600,2.500,4.989e+04 +2025,134.786648,10,380.700,32.300,10.2250,-374.900,-64.400,14.700,374.900,64.400,14.700,6.320e+04 +2025,134.787812,10,376.700,31.400,10.7990,-371.700,-60.500,8.200,371.700,60.500,8.200,5.972e+04 +2025,134.906704,10,429.000,52.600,7.4950,-428.100,-27.800,6.100,428.100,27.800,6.100,1.676e+05 +2025,134.968497,10,430.400,43.300,6.4440,-430.000,-17.400,2.700,430.000,17.400,2.700,1.136e+05 +2025,135.241290,10,472.300,57.200,6.3500,-471.600,23.000,-8.100,471.600,-23.000,-8.100,1.982e+05 +2025,135.243619,10,480.200,59.700,6.6800,-479.800,14.900,-12.200,479.800,-14.900,-12.200,2.159e+05 +2025,135.245984,10,478.800,58.200,6.9340,-478.600,9.700,-11.600,478.600,-9.700,-11.600,2.052e+05 +2025,135.491956,10,437.100,49.100,5.6650,-435.800,22.000,-25.800,435.800,-22.000,-25.800,1.460e+05 +2025,135.532715,10,431.700,47.000,5.5820,-431.100,21.400,-8.500,431.100,-21.400,-8.500,1.338e+05 +2025,135.535044,10,436.800,47.200,5.7060,-435.900,23.200,-14.100,435.900,-23.200,-14.100,1.349e+05 +2025,135.630681,10,438.400,39.500,6.0530,-438.200,7.800,-11.700,438.200,-7.800,-11.700,9.451e+04 +2025,135.637669,10,437.700,40.400,5.5980,-437.400,8.400,-12.400,437.400,-8.400,-12.400,9.887e+04 +2025,135.648149,10,435.500,40.300,5.6910,-435.400,1.700,-7.800,435.400,-1.700,-7.800,9.838e+04 +2025,135.656301,10,432.800,37.600,5.6570,-432.500,6.300,-15.100,432.500,-6.300,-15.100,8.564e+04 +2025,135.672604,10,436.200,35.300,5.4340,-435.700,-5.800,-20.200,435.700,5.800,-20.200,7.548e+04 +2025,135.673769,10,435.700,36.100,5.3490,-435.200,-6.700,-19.900,435.200,6.700,-19.900,7.894e+04 +2025,135.679628,10,436.700,34.300,5.3090,-436.000,-7.700,-23.900,436.000,7.700,-23.900,7.126e+04 +2025,135.706449,10,429.400,37.500,4.7270,-428.900,-0.000,-22.400,428.900,0.000,-22.400,8.518e+04 +2025,135.720423,10,420.200,43.400,6.1410,-419.900,5.300,-14.500,419.900,-5.300,-14.500,1.141e+05 +2025,135.723916,10,428.700,37.000,5.5550,-428.400,4.600,-17.300,428.400,-4.600,-17.300,8.293e+04 +2025,135.732068,10,429.800,30.900,4.7630,-429.200,-6.400,-21.200,429.200,6.400,-21.200,5.784e+04 +2025,135.740220,10,432.900,33.800,5.3930,-431.800,-4.000,-31.100,431.800,4.000,-31.100,6.920e+04 +2025,135.748408,10,436.300,35.900,5.9950,-435.100,10.200,-29.500,435.100,-10.200,-29.500,7.807e+04 +2025,135.755395,10,424.300,38.500,6.2710,-424.300,-1.600,-8.200,424.300,1.600,-8.200,8.979e+04 +2025,135.767077,10,423.100,35.000,5.8810,-423.000,0.800,-6.000,423.000,-0.800,-6.000,7.420e+04 +2025,135.779886,10,425.900,36.600,5.5500,-425.900,3.800,-7.700,425.900,-3.800,-7.700,8.114e+04 +2025,135.781051,10,426.100,36.500,5.5990,-426.000,2.500,-8.700,426.000,-2.500,-8.700,8.070e+04 +2025,135.782215,10,426.500,37.200,5.5730,-426.300,2.100,-13.400,426.300,-2.100,-13.400,8.382e+04 +2025,135.784544,10,429.500,33.300,5.7200,-429.100,2.600,-19.800,429.100,-2.600,-19.800,6.717e+04 +2025,135.897650,10,428.900,32.700,7.9830,-428.500,-8.000,-17.800,428.500,8.000,-17.800,6.477e+04 +2025,135.958242,10,416.600,34.100,7.4980,-416.600,-0.400,-4.100,416.600,0.400,-4.100,7.044e+04 +2025,135.962900,10,416.200,34.700,7.6180,-416.200,0.300,-5.100,416.200,-0.300,-5.100,7.294e+04 +2025,135.976911,10,420.200,34.900,8.2520,-420.100,-2.000,-6.900,420.100,2.000,-6.900,7.378e+04 +2025,135.993214,10,416.900,34.700,8.1900,-416.900,-0.300,-5.500,416.900,0.300,-5.500,7.294e+04 +2025,136.020035,10,415.900,38.900,8.6940,-415.900,0.300,-4.600,415.900,-0.300,-4.600,9.166e+04 +2025,136.031717,10,414.900,36.300,8.6980,-414.800,0.800,-4.900,414.800,-0.800,-4.900,7.982e+04 +2025,136.043362,10,411.900,35.200,8.4410,-411.800,3.900,-1.900,411.800,-3.900,-1.900,7.505e+04 +2025,136.050349,10,415.600,33.400,9.8400,-415.600,1.000,-2.500,415.600,-1.000,-2.500,6.757e+04 +2025,136.055007,10,420.100,37.200,10.7020,-420.000,-2.300,-9.400,420.000,2.300,-9.400,8.382e+04 +2025,136.076005,10,413.500,35.200,10.1750,-413.400,-3.400,-7.700,413.400,3.400,-7.700,7.505e+04 +2025,136.077170,10,413.600,35.500,10.3630,-413.500,-2.900,-8.900,413.500,2.900,-8.900,7.634e+04 +2025,136.085322,10,413.200,35.700,10.3080,-413.000,-3.500,-10.000,413.000,3.500,-10.000,7.720e+04 +2025,136.093473,10,417.300,30.300,9.9440,-416.900,10.400,14.600,416.900,-10.400,14.600,5.561e+04 +2025,136.112142,10,411.400,32.100,9.7800,-411.300,11.300,4.600,411.300,-11.300,4.600,6.242e+04 +2025,136.117965,10,414.000,28.300,8.9520,-414.000,5.100,-2.300,414.000,-5.100,-2.300,4.851e+04 +2025,136.150608,10,408.200,35.200,11.6860,-408.200,2.500,-1.300,408.200,-2.500,-1.300,7.505e+04 +2025,136.152938,10,408.500,34.700,12.1130,-408.500,1.500,-0.500,408.500,-1.500,-0.500,7.294e+04 +2025,136.156431,10,413.700,33.300,10.7320,-413.600,3.400,-6.600,413.600,-3.400,-6.600,6.717e+04 +2025,136.157596,10,414.500,33.600,10.6670,-414.500,2.800,-6.500,414.500,-2.800,-6.500,6.839e+04 +2025,136.187910,10,408.400,36.400,12.5310,-408.400,2.500,-3.900,408.400,-2.500,-3.900,8.026e+04 +2025,136.189075,10,406.200,37.000,12.9000,-406.200,2.200,0.800,406.200,-2.200,0.800,8.293e+04 +2025,136.224047,10,409.100,35.600,12.2180,-409.000,-1.000,-10.000,409.000,1.000,-10.000,7.677e+04 +2025,136.225212,10,407.600,36.100,12.0210,-407.500,-2.400,-7.700,407.500,2.400,-7.700,7.894e+04 +2025,136.231034,10,410.100,38.600,10.4640,-410.100,3.600,-2.700,410.100,-3.600,-2.700,9.025e+04 +2025,136.235692,10,413.000,36.100,11.2860,-412.900,2.200,-9.900,412.900,-2.200,-9.900,7.894e+04 +2025,136.241551,10,411.300,35.100,11.5460,-411.300,3.100,-2.300,411.300,-3.100,-2.300,7.463e+04 +2025,136.250868,10,410.800,36.100,11.4300,-410.700,4.600,-6.700,410.700,-4.600,-6.700,7.894e+04 +2025,136.316154,10,388.900,40.500,12.9290,-388.900,5.000,6.100,388.900,-5.000,6.100,9.936e+04 +2025,136.320813,10,396.400,39.600,13.7900,-396.400,-0.500,-0.400,396.400,0.500,-0.400,9.499e+04 +2025,136.349962,10,408.700,36.100,12.4670,-408.300,1.300,-18.700,408.300,-1.300,-18.700,7.894e+04 +2025,136.351127,10,416.500,39.200,13.1820,-416.300,3.200,-12.600,416.300,-3.200,-12.600,9.308e+04 +2025,136.368595,10,409.300,37.800,11.8650,-409.000,-0.800,-16.700,409.000,0.800,-16.700,8.655e+04 +2025,136.377948,10,409.500,36.100,11.4940,-409.300,0.000,-13.300,409.300,-0.000,-13.300,7.894e+04 +2025,136.389593,10,413.400,35.600,11.4150,-413.000,-2.600,-16.200,413.000,2.600,-16.200,7.677e+04 +2025,136.404732,10,410.200,33.000,10.2500,-410.000,1.300,-11.100,410.000,-1.300,-11.100,6.596e+04 +2025,136.415213,10,408.700,32.300,10.3350,-408.400,0.500,-13.600,408.400,-0.500,-13.600,6.320e+04 +2025,136.446728,10,404.800,39.500,12.4310,-404.600,-5.000,-10.200,404.600,5.000,-10.200,9.451e+04 +2025,136.501498,10,406.800,42.500,13.7390,-406.500,-9.300,-10.000,406.500,9.300,-10.000,1.094e+05 +2025,136.534141,10,405.000,47.500,15.4220,-404.800,-9.900,3.000,404.800,9.900,3.000,1.367e+05 +2025,136.536470,10,409.200,45.100,14.8410,-408.900,-15.300,-3.300,408.900,15.300,-3.300,1.232e+05 +2025,136.538799,10,410.300,45.900,14.8930,-410.100,-14.000,-3.200,410.100,14.000,-3.200,1.276e+05 +2025,136.555139,10,415.000,48.700,12.7320,-414.700,-10.700,-9.800,414.700,10.700,-9.800,1.437e+05 +2025,136.837246,10,419.300,38.600,15.2720,-414.200,-41.700,-50.700,414.200,41.700,-50.700,9.025e+04 +2025,136.840740,10,419.200,38.800,13.9240,-415.600,-30.900,-45.500,415.600,30.900,-45.500,9.119e+04 +2025,136.859409,10,415.000,42.200,14.4750,-410.100,-26.600,-57.600,410.100,26.600,-57.600,1.079e+05 +2025,136.862903,10,416.400,40.500,13.3470,-411.300,-26.600,-59.700,411.300,26.600,-59.700,9.936e+04 +2025,136.889723,10,441.700,51.000,7.5210,-436.800,19.700,-62.800,436.800,-19.700,-62.800,1.576e+05 +2025,136.897875,10,426.000,50.300,9.9030,-424.700,3.100,-32.400,424.700,-3.100,-32.400,1.533e+05 +2025,137.127543,10,468.200,47.600,14.3890,-463.200,-62.200,-27.700,463.200,62.200,-27.700,1.372e+05 +2025,137.129872,10,453.800,47.600,22.4810,-445.500,-81.100,-30.900,445.500,81.100,-30.900,1.372e+05 +2025,137.153199,10,466.800,57.300,28.3670,-457.800,-88.800,21.100,457.800,88.800,21.100,1.989e+05 +2025,137.185806,10,506.500,45.800,14.4410,-506.400,-5.100,-11.000,506.400,5.100,-11.000,1.271e+05 +2025,137.198652,10,504.700,45.500,13.0070,-504.400,-10.500,-14.600,504.400,10.500,-14.600,1.254e+05 +2025,137.202146,10,502.900,50.300,10.7900,-502.600,-4.100,-17.000,502.600,4.100,-17.000,1.533e+05 +2025,137.719378,10,719.200,77.800,7.5930,-709.600,98.900,-62.700,709.600,-98.900,-62.700,3.666e+05 +2025,137.720507,10,712.500,83.300,6.7100,-699.700,115.500,-68.300,699.700,-115.500,-68.300,4.203e+05 +2025,137.721635,10,698.500,84.600,7.6960,-691.200,84.800,-53.800,691.200,-84.800,-53.800,4.335e+05 +2025,137.879247,10,753.300,79.000,4.3460,-752.000,0.900,44.500,752.000,-0.900,44.500,3.780e+05 +2025,137.906686,10,716.000,78.700,4.7410,-701.200,107.000,97.200,701.200,-107.000,97.200,3.752e+05 +2025,137.942313,10,754.800,64.200,3.5530,-754.200,13.400,-25.100,754.200,-13.400,-25.100,2.497e+05 +2025,138.241599,10,725.100,79.300,3.9310,-724.300,35.800,-2.600,724.300,-35.800,-2.600,3.809e+05 +2025,138.292838,10,717.100,82.400,4.8290,-712.000,63.400,-57.500,712.000,-63.400,-57.500,4.113e+05 +2025,138.329266,10,738.800,78.100,4.2920,-738.200,25.400,-11.500,738.200,-25.400,-11.500,3.695e+05 +2025,138.387420,10,690.000,82.500,4.1360,-687.900,46.900,-27.000,687.900,-46.900,-27.000,4.123e+05 +2025,138.747625,10,634.200,63.200,4.0300,-631.900,30.500,44.600,631.900,-30.500,44.600,2.419e+05 +2025,138.748789,10,630.000,60.400,3.8980,-628.900,12.400,35.900,628.900,-12.400,35.900,2.210e+05 +2025,138.762800,10,633.600,57.600,3.7730,-633.500,-9.400,-4.100,633.500,9.400,-4.100,2.010e+05 +2025,138.773281,10,628.800,58.100,3.6690,-627.100,21.300,40.800,627.100,-21.300,40.800,2.045e+05 +2025,138.783761,10,614.200,56.500,3.3190,-614.200,-5.700,-1.900,614.200,5.700,-1.900,1.934e+05 +2025,138.831580,10,628.300,53.100,3.5490,-628.300,-6.300,-4.300,628.300,6.300,-4.300,1.708e+05 +2025,138.832744,10,630.800,60.400,3.7540,-629.700,-6.100,36.500,629.700,6.100,36.500,2.210e+05 +2025,138.871174,10,610.700,57.300,3.7100,-610.600,0.800,12.200,610.600,-0.800,12.200,1.989e+05 +2025,138.882855,10,611.200,57.000,3.4780,-609.200,35.700,35.200,609.200,-35.700,35.200,1.968e+05 +2025,138.901524,10,651.800,50.100,2.8490,-650.200,5.800,-44.900,650.200,-5.800,-44.900,1.520e+05 +2025,138.903853,10,647.800,61.000,3.7230,-646.100,19.700,-41.600,646.100,-19.700,-41.600,2.254e+05 +2025,138.913206,10,653.500,52.300,3.1370,-652.900,3.500,-26.700,652.900,-3.500,-26.700,1.657e+05 +2025,138.922522,10,608.600,45.800,3.0780,-608.100,8.500,23.600,608.100,-8.500,23.600,1.271e+05 +2025,138.924851,10,607.000,45.400,2.9150,-606.300,10.700,26.700,606.300,-10.700,26.700,1.249e+05 +2025,138.931839,10,604.900,53.800,2.8480,-604.000,4.200,33.600,604.000,-4.200,33.600,1.753e+05 +2025,138.936497,10,615.300,51.400,2.9500,-614.700,-4.400,27.800,614.700,4.400,27.800,1.600e+05 +2025,138.938826,10,625.900,54.600,3.0750,-625.800,-12.200,1.700,625.800,12.200,1.700,1.806e+05 +2025,138.963317,10,595.900,49.300,3.0060,-594.600,22.500,32.400,594.600,-22.500,32.400,1.472e+05 +2025,138.972634,10,605.900,43.700,2.7430,-604.600,13.600,37.800,604.600,-13.600,37.800,1.157e+05 +2025,139.027439,10,584.000,49.900,2.1200,-583.600,-20.600,-10.600,583.600,20.600,-10.600,1.508e+05 +2025,139.074057,10,587.700,40.100,2.0380,-585.400,-27.300,43.900,585.400,27.300,43.900,9.740e+04 +2025,139.096220,10,583.000,46.000,2.1750,-580.800,-3.400,-50.500,580.800,3.400,-50.500,1.282e+05 +2025,139.236108,10,584.200,48.100,2.5190,-580.900,31.000,-53.200,580.900,-31.000,-53.200,1.401e+05 +2025,139.237273,10,580.500,45.300,2.5450,-577.300,31.300,-52.700,577.300,-31.300,-52.700,1.243e+05 +2025,139.378363,10,538.400,52.900,2.3610,-537.300,27.100,-20.800,537.300,-27.100,-20.800,1.695e+05 +2025,139.381857,10,550.200,55.200,2.8080,-549.200,-32.500,-8.700,549.200,32.500,-8.700,1.846e+05 +2025,139.568363,10,520.300,41.300,3.4130,-519.200,-32.900,8.900,519.200,32.900,8.900,1.033e+05 +2025,139.578880,10,505.700,42.400,3.6060,-504.400,-31.100,-18.100,504.400,31.100,-18.100,1.089e+05 +2025,139.598677,10,509.200,42.200,3.2240,-508.100,-33.600,1.300,508.100,33.600,1.300,1.079e+05 +2025,139.606865,10,506.600,39.700,3.5610,-505.000,-36.600,-16.300,505.000,36.600,-16.300,9.547e+04 +2025,139.619675,10,523.200,45.000,4.1760,-521.300,-44.900,-0.600,521.300,44.900,-0.600,1.227e+05 +2025,139.626662,10,510.200,39.500,4.0730,-509.300,-29.600,-0.900,509.300,29.600,-0.900,9.451e+04 +2025,139.660470,10,489.700,38.700,3.6440,-489.000,-24.200,-8.700,489.000,24.200,-8.700,9.072e+04 +2025,139.674481,10,487.800,39.600,3.9440,-486.800,-24.800,-16.500,486.800,24.800,-16.500,9.499e+04 +2025,139.701265,10,483.500,46.400,4.3040,-482.200,-25.100,-23.800,482.200,25.100,-23.800,1.304e+05 +2025,139.725756,10,486.200,40.100,4.0570,-484.000,-33.100,-33.000,484.000,33.100,-33.000,9.740e+04 +2025,139.740932,10,482.000,44.900,4.3790,-480.500,-27.300,-26.400,480.500,27.300,-26.400,1.221e+05 +2025,139.767716,10,485.100,43.700,4.1580,-482.800,-40.000,-25.500,482.800,40.000,-25.500,1.157e+05 +2025,139.794537,10,496.400,43.300,3.9520,-493.000,-31.400,-48.300,493.000,31.400,-48.300,1.136e+05 +2025,139.809712,10,507.400,42.200,4.3140,-504.400,-38.500,-39.400,504.400,38.500,-39.400,1.079e+05 +2025,139.835368,10,528.000,44.000,4.0980,-525.700,-47.400,-14.700,525.700,47.400,-14.700,1.173e+05 +2025,139.865646,10,529.000,39.800,4.5350,-525.700,-23.000,-54.200,525.700,23.000,-54.200,9.595e+04 +2025,140.003206,10,494.300,51.100,5.7500,-493.100,-29.400,17.500,493.100,29.400,17.500,1.582e+05 +2025,140.050989,10,486.900,48.400,5.6420,-484.700,-30.700,35.000,484.700,30.700,35.000,1.419e+05 +2025,140.053318,10,477.800,51.700,6.1980,-476.600,-26.200,21.400,476.600,26.200,21.400,1.619e+05 +2025,140.056848,10,475.800,52.500,5.1000,-474.200,-35.800,-14.200,474.200,35.800,-14.200,1.670e+05 +2025,140.077846,10,483.900,49.800,6.1480,-480.400,-57.600,-4.000,480.400,57.600,-4.000,1.502e+05 +2025,140.080175,10,500.700,50.400,6.3370,-497.500,-52.500,-19.900,497.500,52.500,-19.900,1.539e+05 +2025,140.125628,10,483.800,50.900,6.4570,-483.400,-5.600,19.900,483.400,5.600,19.900,1.569e+05 +2025,140.158271,10,497.500,54.300,6.8060,-495.700,-37.700,20.300,495.700,37.700,20.300,1.786e+05 +2025,140.165258,10,503.000,55.800,7.1650,-500.600,-49.100,4.600,500.600,49.100,4.600,1.886e+05 +2025,140.167588,10,476.900,52.400,6.8900,-475.900,-27.900,13.000,475.900,27.900,13.000,1.663e+05 +2025,140.174575,10,483.400,53.500,6.9230,-481.400,-43.800,1.900,481.400,43.800,1.900,1.734e+05 +2025,140.183891,10,471.500,53.000,6.3530,-471.400,3.500,10.500,471.400,-3.500,10.500,1.702e+05 +2025,140.201395,10,485.300,54.500,6.8700,-484.900,17.200,-5.600,484.900,-17.200,-5.600,1.799e+05 +2025,140.250379,10,507.000,53.700,5.7150,-506.300,-23.200,-12.800,506.300,23.200,-12.800,1.747e+05 +2025,140.441544,10,549.900,63.300,5.8790,-547.600,-14.800,48.100,547.600,14.800,48.100,2.427e+05 +2025,141.050121,10,602.700,71.500,4.3850,-602.200,11.400,-21.200,602.200,-11.400,-21.200,3.097e+05 +2025,141.290233,10,655.700,61.700,2.8490,-655.300,-8.600,-20.200,655.300,8.600,-20.200,2.306e+05 +2025,141.547887,10,644.000,54.600,2.1670,-642.300,-40.900,-24.400,642.300,40.900,-24.400,1.806e+05 +2025,141.750333,10,593.800,64.300,2.6130,-590.500,50.800,36.200,590.500,-50.800,36.200,2.504e+05 +2025,142.351923,10,557.600,60.900,4.3970,-556.200,-27.100,-28.600,556.200,27.100,-28.600,2.247e+05 +2025,142.355417,10,538.600,58.300,4.4550,-537.800,-20.400,-21.600,537.800,20.400,-21.600,2.059e+05 +2025,142.358947,10,529.900,54.200,4.4570,-528.900,-23.000,-23.100,528.900,23.000,-23.100,1.779e+05 +2025,142.568745,10,508.200,57.500,4.2160,-505.500,51.700,-12.200,505.500,-51.700,-12.200,2.003e+05 +2025,143.359171,10,524.100,57.500,3.8010,-522.000,-25.500,-38.900,522.000,25.500,-38.900,2.003e+05 +2025,143.757842,10,488.300,43.900,3.4840,-486.300,-42.600,-6.800,486.300,42.600,-6.800,1.167e+05 +2025,144.851443,10,401.500,25.000,6.0510,-399.300,-41.200,-8.200,399.300,41.200,-8.200,3.786e+04 +2025,144.856101,10,400.800,24.700,5.9340,-398.700,-41.000,1.400,398.700,41.000,1.400,3.696e+04 +2025,144.975029,10,449.600,45.700,8.3340,-449.500,-3.300,10.100,449.500,3.300,10.100,1.265e+05 +2025,144.985510,10,442.500,41.100,6.7370,-441.600,-15.800,-24.100,441.600,15.800,-24.100,1.023e+05 +2025,145.004142,10,439.000,38.800,7.0780,-438.600,-17.300,-9.900,438.600,17.300,-9.900,9.119e+04 +2025,145.006471,10,446.800,40.200,7.6400,-446.300,-20.200,-4.900,446.300,20.200,-4.900,9.789e+04 +2025,145.007636,10,455.800,44.400,7.5290,-455.200,-20.000,13.800,455.200,20.000,13.800,1.194e+05 +2025,145.022811,10,440.200,44.200,7.9940,-439.800,-11.200,-15.300,439.800,11.200,-15.300,1.183e+05 +2025,145.034456,10,457.600,46.500,8.6650,-457.500,-8.100,-2.500,457.500,8.100,-2.500,1.310e+05 +2025,145.042644,10,443.700,46.700,8.7880,-443.500,-2.900,-14.500,443.500,2.900,-14.500,1.321e+05 +2025,145.055454,10,464.000,48.000,9.1790,-463.800,-6.300,-14.500,463.800,6.300,-14.500,1.396e+05 +2025,145.058948,10,465.700,44.800,8.0820,-465.500,-12.400,1.800,465.500,12.400,1.800,1.216e+05 +2025,145.067100,10,457.400,45.300,9.0150,-457.200,-10.200,-11.300,457.200,10.200,-11.300,1.243e+05 +2025,145.070593,10,463.100,45.400,8.9150,-462.900,-12.900,-8.400,462.900,12.900,-8.400,1.249e+05 +2025,145.096249,10,455.700,48.300,9.2530,-455.400,5.500,-17.300,455.400,-5.500,-17.300,1.413e+05 +2025,145.106766,10,449.700,47.800,8.7540,-447.300,36.100,-28.700,447.300,-36.100,-28.700,1.384e+05 +2025,145.110260,10,458.700,48.000,9.7500,-456.500,37.200,-26.100,456.500,-37.200,-26.100,1.396e+05 +2025,145.116083,10,455.500,46.400,9.7190,-455.000,-1.400,-21.700,455.000,1.400,-21.700,1.304e+05 +2025,145.141702,10,444.500,54.900,9.3060,-443.500,25.700,-15.100,443.500,-25.700,-15.100,1.826e+05 +2025,145.155713,10,440.600,48.900,9.4620,-439.300,24.300,-23.300,439.300,-24.300,-23.300,1.448e+05 +2025,145.188356,10,442.300,49.500,10.9070,-442.100,6.400,-11.400,442.100,-6.400,-11.400,1.484e+05 +2025,145.244327,10,450.300,42.000,10.3760,-449.400,1.300,-29.400,449.400,-1.300,-29.400,1.069e+05 +2025,145.493792,10,410.500,43.300,9.2690,-409.500,29.100,-3.600,409.500,-29.100,-3.600,1.136e+05 +2025,145.499614,10,425.700,39.900,7.6940,-424.400,32.800,7.400,424.400,-32.800,7.400,9.643e+04 +2025,145.505473,10,416.600,42.700,9.1970,-415.300,32.600,1.900,415.300,-32.600,1.900,1.104e+05 +2025,145.526435,10,394.800,36.400,9.1080,-394.400,-12.600,13.100,394.400,12.600,13.100,8.026e+04 +2025,145.528800,10,379.900,40.200,8.2090,-379.900,-1.600,4.300,379.900,1.600,4.300,9.789e+04 +2025,145.529965,10,388.800,37.200,7.9330,-388.600,-12.200,3.800,388.600,12.200,3.800,8.382e+04 +2025,145.541610,10,392.000,37.300,8.4740,-391.300,-18.600,13.800,391.300,18.600,13.800,8.428e+04 +2025,145.631351,10,367.400,37.400,7.5150,-367.300,2.000,3.600,367.300,-2.000,3.600,8.473e+04 +2025,145.680334,10,381.400,37.300,7.3010,-381.200,-14.000,-0.800,381.200,14.000,-0.800,8.428e+04 +2025,145.868042,10,374.000,38.800,5.4180,-372.800,24.600,-16.600,372.800,-24.600,-16.600,9.119e+04 +2025,145.988134,10,382.900,34.200,4.7210,-381.600,-0.200,-30.800,381.600,0.200,-30.800,7.085e+04 +2025,145.991628,10,380.700,37.500,4.8060,-379.300,4.100,-32.700,379.300,-4.100,-32.700,8.518e+04 +2025,146.026564,10,398.100,26.800,5.8380,-395.300,37.300,-28.800,395.300,-37.300,-28.800,4.351e+04 +2025,146.094216,10,395.300,40.900,5.7940,-389.000,26.200,-65.700,389.000,-26.200,-65.700,1.013e+05 +2025,146.154808,10,403.700,43.300,7.0090,-403.300,-15.400,-6.600,403.300,15.400,-6.600,1.136e+05 +2025,146.256267,10,462.000,49.200,6.4570,-459.400,44.500,-20.200,459.400,-44.500,-20.200,1.466e+05 +2025,146.264419,10,450.800,41.700,6.4550,-449.500,23.600,-24.700,449.500,-23.600,-24.700,1.053e+05 +2025,146.358855,10,453.700,47.600,5.9310,-453.000,11.000,-21.200,453.000,-11.000,-21.200,1.372e+05 +2025,146.435787,10,452.200,49.300,5.2080,-450.400,-31.400,25.800,450.400,31.400,25.800,1.472e+05 +2025,146.561702,10,452.200,34.900,12.3050,-451.500,14.600,-18.900,451.500,-14.600,-18.900,7.378e+04 +2025,146.574548,10,455.800,34.800,12.4220,-455.200,18.700,-13.800,455.200,-18.700,-13.800,7.336e+04 +2025,146.583864,10,457.800,33.200,11.5760,-457.300,16.000,-15.400,457.300,-16.000,-15.400,6.677e+04 +2025,146.592016,10,459.100,32.800,12.0990,-458.500,18.500,-13.400,458.500,-18.500,-13.400,6.517e+04 +2025,146.600168,10,454.000,33.200,12.2650,-453.600,12.300,-14.000,453.600,-12.300,-14.000,6.677e+04 +2025,146.604826,10,455.500,31.900,12.3500,-455.100,15.900,-14.100,455.100,-15.900,-14.100,6.164e+04 +2025,146.615306,10,453.400,32.700,11.6860,-453.000,14.200,-15.100,453.000,-14.200,-15.100,6.477e+04 +2025,146.649151,10,458.100,32.600,9.9160,-458.000,3.300,-7.300,458.000,-3.300,-7.300,6.438e+04 +2025,146.668948,10,453.400,30.700,9.3370,-453.000,13.100,-13.400,453.000,-13.100,-13.400,5.709e+04 +2025,146.677099,10,450.100,30.600,9.3640,-449.700,12.800,-13.300,449.700,-12.800,-13.300,5.672e+04 +2025,146.694604,10,448.900,29.600,8.8510,-448.700,6.900,-13.800,448.700,-6.900,-13.800,5.307e+04 +2025,146.702756,10,446.100,29.400,9.1490,-445.800,8.500,-12.200,445.800,-8.500,-12.200,5.236e+04 +2025,146.705085,10,447.600,29.100,8.7240,-447.300,8.400,-12.000,447.300,-8.400,-12.000,5.129e+04 +2025,146.712108,10,449.000,29.200,9.0510,-448.800,7.700,-9.100,448.800,-7.700,-9.100,5.165e+04 +2025,146.722589,10,446.500,29.200,9.3090,-446.300,6.300,-8.400,446.300,-6.300,-8.400,5.165e+04 +2025,146.728412,10,444.200,29.100,9.0190,-444.100,5.300,-7.500,444.100,-5.300,-7.500,5.129e+04 +2025,146.731905,10,442.500,29.000,8.9950,-442.300,6.900,-9.000,442.300,-6.900,-9.000,5.094e+04 +2025,146.756360,10,446.100,28.300,8.7770,-445.900,9.200,-9.300,445.900,-9.200,-9.300,4.851e+04 +2025,146.780852,10,443.500,26.400,8.4220,-443.300,8.000,-10.400,443.300,-8.000,-10.400,4.222e+04 +2025,146.783217,10,442.900,27.000,9.0300,-442.700,9.100,-8.400,442.700,-9.100,-8.400,4.416e+04 +2025,146.817025,10,442.200,27.000,8.6960,-442.000,7.600,-11.200,442.000,-7.600,-11.200,4.416e+04 +2025,146.824012,10,442.700,28.800,8.4580,-442.100,18.800,-13.900,442.100,-18.800,-13.900,5.024e+04 +2025,146.826341,10,441.300,27.800,7.9270,-441.100,7.400,-9.700,441.100,-7.400,-9.700,4.681e+04 +2025,146.832163,10,440.300,26.000,7.6630,-439.900,13.400,-13.800,439.900,-13.400,-13.800,4.095e+04 +2025,146.837986,10,442.200,25.800,7.7460,-442.100,9.700,-7.400,442.100,-9.700,-7.400,4.032e+04 +2025,146.839151,10,439.100,26.300,8.4480,-439.000,9.400,-7.200,439.000,-9.400,-7.200,4.190e+04 +2025,146.860148,10,437.100,26.500,7.3810,-436.900,12.900,-8.300,436.900,-12.900,-8.300,4.254e+04 +2025,146.862477,10,436.200,26.000,7.4090,-436.000,11.600,-9.100,436.000,-11.600,-9.100,4.095e+04 +2025,146.863642,10,436.700,25.000,7.4370,-436.500,11.400,-9.100,436.500,-11.400,-9.100,3.786e+04 +2025,146.881146,10,436.800,24.400,7.3370,-436.700,7.700,-6.900,436.700,-7.700,-6.900,3.606e+04 +2025,146.884640,10,436.200,24.400,7.4300,-436.100,8.600,-6.800,436.100,-8.600,-6.800,3.606e+04 +2025,146.893992,10,432.000,24.700,7.2200,-431.700,2.100,-13.700,431.700,-2.100,-13.700,3.696e+04 +2025,146.930093,10,437.700,24.100,5.7600,-437.500,9.300,-5.000,437.500,-9.300,-5.000,3.518e+04 +2025,146.944104,10,430.100,22.100,7.4530,-430.000,7.200,-7.300,430.000,-7.200,-7.300,2.958e+04 +2025,146.946433,10,428.400,23.300,6.9960,-428.300,5.400,-5.300,428.300,-5.400,-5.300,3.288e+04 +2025,146.962736,10,428.200,23.400,6.5590,-428.100,0.700,-8.200,428.100,-0.700,-8.200,3.317e+04 +2025,146.986063,10,427.400,22.600,6.3500,-427.200,0.600,-11.100,427.200,-0.600,-11.100,3.094e+04 +2025,146.995379,10,426.000,22.400,5.9970,-425.800,0.200,-12.400,425.800,-0.200,-12.400,3.039e+04 +2025,147.001202,10,424.000,21.700,6.7140,-423.900,1.100,-9.500,423.900,-1.100,-9.500,2.852e+04 +2025,147.016377,10,422.500,21.900,7.1930,-422.400,0.500,-9.100,422.400,-0.500,-9.100,2.905e+04 +2025,147.023364,10,420.700,22.400,7.1570,-420.600,-1.500,-10.300,420.600,1.500,-10.300,3.039e+04 +2025,147.080499,10,423.300,20.400,6.3200,-422.800,-4.600,-19.500,422.800,4.600,-19.500,2.521e+04 +2025,147.097967,10,417.600,21.800,5.9890,-417.300,-2.800,-16.700,417.300,2.800,-16.700,2.879e+04 +2025,147.124788,10,415.900,19.100,6.6150,-415.600,-7.400,-13.800,415.600,7.400,-13.800,2.210e+04 +2025,147.163290,10,422.100,22.200,5.2740,-421.600,-10.300,-18.400,421.600,10.300,-18.400,2.985e+04 +2025,147.188946,10,421.800,20.900,5.4300,-421.500,-10.300,-13.800,421.500,10.300,-13.800,2.646e+04 +2025,147.220389,10,423.400,23.500,5.7210,-423.100,-5.600,-14.800,423.100,5.600,-14.800,3.345e+04 +2025,147.222718,10,425.700,22.300,5.8250,-425.300,-6.000,-17.600,425.300,6.000,-17.600,3.012e+04 +2025,147.235527,10,424.500,20.700,6.4520,-424.200,-7.700,-15.300,424.200,7.700,-15.300,2.596e+04 +2025,147.275158,10,419.500,21.800,5.6300,-418.800,-11.800,-22.500,418.800,11.800,-22.500,2.879e+04 +2025,147.291498,10,418.900,19.700,6.1790,-418.200,-12.700,-20.600,418.200,12.700,-20.600,2.351e+04 +2025,147.292662,10,419.800,21.100,6.3870,-419.100,-13.000,-22.200,419.100,13.000,-22.200,2.697e+04 +2025,147.293827,10,420.000,21.900,6.3870,-419.300,-10.500,-22.300,419.300,10.500,-22.300,2.905e+04 +2025,147.297320,10,419.300,21.300,6.6630,-418.600,-12.400,-20.200,418.600,12.400,-20.200,2.748e+04 +2025,147.298521,10,420.500,21.700,6.5640,-419.800,-12.500,-22.100,419.800,12.500,-22.100,2.852e+04 +2025,147.315989,10,424.000,20.800,6.7430,-423.000,-14.300,-26.100,423.000,14.300,-26.100,2.621e+04 +2025,147.368430,10,416.600,24.300,11.3590,-415.700,-24.500,-11.900,415.700,24.500,-11.900,3.577e+04 +2025,147.378947,10,424.700,27.500,15.0760,-424.100,-14.900,-17.800,424.100,14.900,-17.800,4.581e+04 +2025,147.397616,10,427.800,25.800,18.5960,-427.000,-10.500,-24.200,427.000,10.500,-24.200,4.032e+04 +2025,147.431387,10,429.200,26.700,19.4390,-428.600,-8.500,-21.200,428.600,8.500,-21.200,4.318e+04 +2025,147.508356,10,429.600,27.600,22.1530,-428.500,-5.000,-29.800,428.500,5.000,-29.800,4.614e+04 +2025,147.526988,10,430.600,26.100,21.9180,-429.100,-6.100,-36.000,429.100,6.100,-36.000,4.126e+04 +2025,147.528153,10,428.600,26.800,22.5800,-426.900,-6.900,-36.800,426.900,6.900,-36.800,4.351e+04 +2025,147.535176,10,423.500,27.600,25.4620,-421.800,-10.200,-36.700,421.800,10.200,-36.700,4.614e+04 +2025,147.549151,10,420.900,25.500,29.4800,-418.700,-13.200,-40.300,418.700,13.200,-40.300,3.939e+04 +2025,147.551480,10,422.400,25.500,29.8730,-420.300,-12.800,-40.000,420.300,12.800,-40.000,3.939e+04 +2025,147.558467,10,423.900,25.900,30.7280,-421.800,-14.300,-39.300,421.800,14.300,-39.300,4.063e+04 +2025,147.566619,10,427.600,26.900,28.2380,-425.600,-17.000,-37.100,425.600,17.000,-37.100,4.383e+04 +2025,147.568984,10,425.800,26.300,29.3990,-423.800,-18.000,-37.400,423.800,18.000,-37.400,4.190e+04 +2025,147.579465,10,425.600,26.600,28.0000,-423.800,-18.800,-34.200,423.800,18.800,-34.200,4.286e+04 +2025,147.588781,10,432.700,25.800,28.2970,-431.000,-18.900,-32.400,431.000,18.900,-32.400,4.032e+04 +2025,147.592275,10,432.600,26.700,28.5960,-431.100,-18.700,-31.500,431.100,18.700,-31.500,4.318e+04 +2025,147.600463,10,434.800,28.500,27.7190,-433.200,-17.500,-33.800,433.200,17.500,-33.800,4.920e+04 +2025,147.605121,10,433.700,28.200,27.2030,-432.000,-16.700,-34.500,432.000,16.700,-34.500,4.817e+04 +2025,147.612108,10,435.800,27.900,28.4900,-433.900,-19.400,-35.800,433.900,19.400,-35.800,4.715e+04 +2025,147.619095,10,432.200,28.700,27.0630,-430.400,-20.700,-33.800,430.400,20.700,-33.800,4.989e+04 +2025,147.630741,10,433.200,28.400,27.4480,-431.200,-20.800,-35.000,431.200,20.800,-35.000,4.886e+04 +2025,147.634234,10,431.600,28.000,26.6370,-429.600,-22.000,-35.300,429.600,22.000,-35.300,4.749e+04 +2025,147.651739,10,425.000,27.400,31.4520,-423.500,-14.900,-32.200,423.500,14.900,-32.200,4.548e+04 +2025,147.694863,10,411.500,28.100,35.2530,-410.100,-13.900,-30.900,410.100,13.900,-30.900,4.783e+04 +2025,147.729872,10,420.700,31.000,34.3150,-419.100,-21.700,-29.900,419.100,21.700,-29.900,5.821e+04 +2025,147.743846,10,431.400,29.100,36.1600,-429.300,-29.300,-30.600,429.300,29.300,-30.600,5.129e+04 +2025,147.749669,10,447.800,30.300,28.9120,-446.000,-26.400,-29.900,446.000,26.400,-29.900,5.561e+04 +2025,147.772959,10,436.100,30.100,22.5190,-433.600,-26.500,-38.300,433.600,26.500,-38.300,5.488e+04 +2025,147.790463,10,454.700,33.600,29.5160,-453.600,-26.100,-18.900,453.600,26.100,-18.900,6.839e+04 +2025,147.792792,10,459.700,37.400,17.8040,-458.500,-29.900,-14.400,458.500,29.900,-14.400,8.473e+04 +2025,147.904732,10,530.900,66.800,8.9580,-530.400,-21.200,6.300,530.400,21.200,6.300,2.703e+05 +2025,148.136728,10,607.400,78.500,6.2420,-605.100,-5.000,-52.100,605.100,5.000,-52.100,3.733e+05 +2025,148.146045,10,616.200,80.900,6.3410,-614.100,-1.800,-49.900,614.100,1.800,-49.900,3.964e+05 +2025,148.245139,10,578.100,86.400,7.6270,-576.400,37.900,-22.800,576.400,-37.900,-22.800,4.522e+05 +2025,148.985453,10,448.500,49.100,24.8140,-439.900,-86.300,10.800,439.900,86.300,10.800,1.460e+05 +2025,149.002920,10,463.400,46.000,23.6200,-461.000,-40.900,-23.500,461.000,40.900,-23.500,1.282e+05 +2025,149.044916,10,589.900,118.000,7.3060,-577.100,118.800,28.200,577.100,-118.800,28.200,8.434e+05 +2025,149.213409,10,671.500,105.700,5.7850,-665.500,34.800,-82.700,665.500,-34.800,-82.700,6.768e+05 +2025,149.337541,10,680.800,80.100,5.9000,-673.300,74.900,67.600,673.300,-74.900,67.600,3.886e+05 +2025,149.443586,10,693.600,95.400,6.7150,-693.400,13.100,6.100,693.400,-13.100,6.100,5.513e+05 +2025,149.536130,10,693.200,75.200,5.5260,-686.000,83.500,54.800,686.000,-83.500,54.800,3.425e+05 +2025,149.648798,10,698.500,86.300,5.7500,-696.400,4.100,-53.900,696.400,-4.100,-53.900,4.511e+05 +2025,149.755389,10,743.800,81.700,4.2940,-743.500,1.200,-20.500,743.500,-1.200,-20.500,4.043e+05 +2025,149.824461,10,791.200,77.700,4.2040,-789.800,37.100,-30.400,789.800,-37.100,-30.400,3.657e+05 +2025,149.826717,10,797.200,73.000,4.0120,-795.300,36.300,-41.200,795.300,-36.300,-41.200,3.228e+05 +2025,149.830101,10,794.700,80.300,4.1800,-793.900,26.300,-26.700,793.900,-26.300,-26.700,3.906e+05 +2025,149.833522,10,784.100,84.800,4.5950,-782.700,34.700,-32.000,782.700,-34.700,-32.000,4.356e+05 +2025,149.890075,10,736.700,77.100,4.5780,-731.400,85.900,22.300,731.400,-85.900,22.300,3.601e+05 +2025,149.893423,10,740.900,73.200,4.0600,-735.400,76.000,47.800,735.400,-76.000,47.800,3.246e+05 +2025,149.982982,10,731.200,69.700,3.6330,-729.300,18.000,-48.500,729.300,-18.000,-48.500,2.943e+05 +2025,149.985239,10,712.700,63.300,4.1000,-712.500,6.700,-12.500,712.500,-6.700,-12.500,2.427e+05 +2025,149.988623,10,731.900,66.700,3.6900,-728.300,42.900,-58.500,728.300,-42.900,-58.500,2.695e+05 +2025,150.047614,10,685.700,61.000,2.3570,-684.800,34.600,10.600,684.800,-34.600,10.600,2.254e+05 +2025,150.104893,10,737.600,59.700,3.1100,-736.000,-15.900,-45.500,736.000,15.900,-45.500,2.159e+05 +2025,150.110498,10,729.600,60.700,3.0500,-728.100,-20.400,-43.000,728.100,20.400,-43.000,2.232e+05 +2025,150.113955,10,746.600,68.200,3.5160,-744.800,-13.200,-50.000,744.800,13.200,-50.000,2.817e+05 +2025,150.131095,10,723.200,67.900,3.2800,-722.000,-14.200,38.500,722.000,14.200,38.500,2.793e+05 +2025,150.158643,10,703.600,87.300,3.5410,-703.400,8.800,-13.700,703.400,-8.800,-13.700,4.617e+05 +2025,150.162064,10,728.200,68.100,3.2760,-726.800,-6.000,43.700,726.800,6.000,43.700,2.809e+05 +2025,150.180187,10,732.000,70.300,3.1720,-731.700,-14.200,-13.700,731.700,14.200,-13.700,2.994e+05 +2025,150.199438,10,742.500,72.300,3.3140,-742.000,-25.500,0.200,742.000,25.500,0.200,3.166e+05 +2025,150.207371,10,767.800,72.400,3.1260,-766.900,-28.000,-26.700,766.900,28.000,-26.700,3.175e+05 +2025,150.256027,10,761.500,72.700,2.8540,-754.900,77.000,64.100,754.900,-77.000,64.100,3.201e+05 +2025,150.296749,10,753.200,75.100,3.0680,-751.800,-8.400,44.700,751.800,8.400,44.700,3.416e+05 +2025,150.590647,10,760.500,83.300,2.7650,-758.900,-18.200,-44.500,758.900,18.200,-44.500,4.203e+05 +2025,150.819075,10,750.600,75.400,2.1090,-749.200,-40.500,-22.000,749.200,40.500,-22.000,3.444e+05 +2025,151.014862,10,758.300,70.700,2.0600,-756.600,-49.800,0.800,756.600,49.800,0.800,3.028e+05 +2025,151.588029,10,638.200,69.300,2.1930,-635.500,-17.800,-55.400,635.500,17.800,-55.400,2.909e+05 +2025,151.650950,10,655.800,62.900,2.1980,-654.600,-34.500,-20.800,654.600,34.500,-20.800,2.397e+05 +2025,151.662631,10,640.700,71.800,2.5800,-638.300,54.100,12.200,638.300,-54.100,12.200,3.123e+05 +2025,151.670783,10,642.100,61.900,2.1120,-641.400,-1.200,31.000,641.400,1.200,31.000,2.321e+05 +2025,151.681264,10,629.900,62.600,2.2850,-628.600,-34.100,-22.100,628.600,34.100,-22.100,2.374e+05 +2025,151.698732,10,635.600,64.800,2.2940,-635.100,-16.700,18.400,635.100,16.700,18.400,2.544e+05 +2025,151.722059,10,633.400,62.900,1.9960,-633.400,0.700,3.200,633.400,-0.700,3.200,2.397e+05 +2025,151.726717,10,628.100,73.500,2.8400,-627.200,33.300,-3.000,627.200,-33.300,-3.000,3.272e+05 +2025,151.746550,10,645.200,63.200,2.5040,-642.800,54.900,-5.000,642.800,-54.900,-5.000,2.419e+05 +2025,151.752373,10,639.400,62.300,2.4850,-637.200,53.400,-7.400,637.200,-53.400,-7.400,2.351e+05 +2025,151.866241,10,666.300,60.500,3.1980,-663.700,-6.100,-58.100,663.700,6.100,-58.100,2.217e+05 +2025,151.892880,10,670.400,63.700,3.1380,-669.700,4.800,-28.500,669.700,-4.800,-28.500,2.458e+05 +2025,151.948340,10,733.500,67.100,3.9360,-733.100,11.100,18.900,733.100,-11.100,18.900,2.727e+05 +2025,151.958603,10,713.100,68.000,3.9650,-713.000,-8.100,-2.700,713.000,8.100,-2.700,2.801e+05 +2025,151.973341,10,704.100,68.600,4.2240,-702.700,0.600,-44.200,702.700,-0.600,-44.200,2.851e+05 +2025,151.988043,10,712.800,61.200,3.9670,-711.700,-6.600,-38.700,711.700,6.600,-38.700,2.269e+05 +2025,152.059443,10,691.200,65.600,4.3860,-691.100,2.500,-8.300,691.100,-2.500,-8.300,2.607e+05 +2025,152.064101,10,687.000,69.700,4.5220,-686.400,22.400,19.500,686.400,-22.400,19.500,2.943e+05 +2025,152.071089,10,675.500,69.900,3.8960,-675.200,14.300,10.000,675.200,-14.300,10.000,2.960e+05 +2025,152.074582,10,678.900,70.500,4.2420,-678.400,14.300,20.100,678.400,-14.300,20.100,3.011e+05 +2025,152.083862,10,663.800,80.800,3.2290,-663.000,-0.100,-33.100,663.000,0.100,-33.100,3.955e+05 +2025,152.099983,10,694.000,69.000,3.9870,-692.900,3.300,38.600,692.900,-3.300,38.600,2.884e+05 +2025,152.150531,10,669.400,63.200,4.5790,-668.900,-22.900,-10.600,668.900,22.900,-10.600,2.419e+05 +2025,152.154024,10,680.700,66.300,4.5530,-679.200,36.800,26.400,679.200,-36.800,26.400,2.663e+05 +2025,152.168872,10,689.400,61.900,4.8150,-687.700,-17.700,-45.300,687.700,17.700,-45.300,2.321e+05 +2025,152.224769,10,997.200,127.700,13.4970,-969.200,135.400,-191.400,969.200,-135.400,-191.400,9.878e+05 +2025,152.643816,10,987.000,65.300,1.2340,-986.300,-37.000,-3.600,986.300,37.000,-3.600,2.583e+05 +2025,152.744184,10,907.600,36.800,7.5970,-901.100,-105.100,-26.300,901.100,105.100,-26.300,8.203e+04 +2025,152.760014,10,901.200,42.200,5.6500,-894.400,-101.800,-43.600,894.400,101.800,-43.600,1.079e+05 +2025,152.772460,10,926.500,46.500,8.1730,-918.400,-122.400,-6.400,918.400,122.400,-6.400,1.310e+05 +2025,153.030366,10,827.400,24.300,1.9690,-817.000,-128.500,22.500,817.000,128.500,22.500,3.577e+04 +2025,153.058534,10,787.100,13.800,1.8280,-783.400,-70.600,29.600,783.400,70.600,29.600,1.154e+04 +2025,153.089030,10,801.000,63.700,0.5680,-799.200,-49.700,18.600,799.200,49.700,18.600,2.458e+05 +2025,153.098055,10,809.500,51.600,0.5890,-807.400,-46.400,33.500,807.400,46.400,33.500,1.613e+05 +2025,153.109336,10,820.900,42.700,1.1970,-818.700,-34.300,48.800,818.700,34.300,48.800,1.104e+05 +2025,153.126258,10,823.100,48.500,2.9920,-814.500,-92.400,74.500,814.500,92.400,74.500,1.425e+05 +2025,153.136411,10,845.000,41.700,5.8200,-833.900,-101.400,91.400,833.900,101.400,91.400,1.053e+05 +2025,153.140960,10,846.800,38.900,6.2170,-837.000,-98.400,82.300,837.000,98.400,82.300,9.166e+04 +2025,153.250607,10,709.400,15.100,0.5880,-705.700,-14.800,71.200,705.700,14.800,71.200,1.381e+04 +2025,153.252936,10,711.300,12.800,0.6410,-707.300,-11.000,74.700,707.300,11.000,74.700,9.924e+03 +2025,153.254064,10,709.300,13.400,0.5330,-704.900,-10.600,77.900,704.900,10.600,77.900,1.088e+04 +2025,153.295259,10,754.900,30.900,4.8690,-752.800,-55.800,-2.200,752.800,55.800,-2.200,5.784e+04 +2025,153.305412,10,722.000,31.700,3.1950,-720.000,-48.200,22.700,720.000,48.200,22.700,6.087e+04 +2025,153.329394,10,708.900,25.300,4.4790,-707.200,-39.200,30.300,707.200,39.200,30.300,3.877e+04 +2025,153.336345,10,714.000,29.100,3.9000,-711.200,-54.400,30.500,711.200,54.400,30.500,5.129e+04 +2025,153.417716,10,728.200,18.800,2.2530,-725.900,-57.900,7.800,725.900,57.900,7.800,2.141e+04 +2025,153.443736,10,707.500,17.500,3.0950,-704.900,-60.100,5.400,704.900,60.100,5.400,1.855e+04 +2025,153.450505,10,718.500,16.500,3.0310,-714.600,-74.700,-0.400,714.600,74.700,-0.400,1.649e+04 +2025,153.472013,10,720.100,12.900,3.6320,-714.700,-87.100,-11.200,714.700,87.100,-11.200,1.008e+04 +2025,153.475433,10,720.900,12.900,3.7790,-717.400,-71.300,4.700,717.400,71.300,4.700,1.008e+04 +2025,153.479946,10,733.000,14.500,5.5870,-727.900,-86.200,-9.300,727.900,86.200,-9.300,1.274e+04 +2025,153.485587,10,700.200,14.100,4.5410,-697.600,-58.200,16.300,697.600,58.200,16.300,1.204e+04 +2025,153.499306,10,707.300,15.600,2.9600,-703.600,-71.700,12.800,703.600,71.700,12.800,1.474e+04 +2025,153.505093,10,725.900,17.600,2.7720,-721.100,-83.400,-0.000,721.100,83.400,-0.000,1.876e+04 +2025,153.514263,10,685.200,14.600,2.8480,-681.300,-68.600,25.900,681.300,68.600,25.900,1.291e+04 +2025,153.551382,10,703.000,15.200,3.8330,-699.500,-68.100,16.400,699.500,68.100,16.400,1.399e+04 +2025,153.595270,10,650.800,17.700,5.7260,-648.500,-47.000,27.800,648.500,47.000,27.800,1.898e+04 +2025,153.601093,10,636.500,15.000,6.9580,-633.800,-45.000,38.000,633.800,45.000,38.000,1.363e+04 +2025,153.653533,10,653.500,12.900,3.0730,-652.200,-41.900,4.900,652.200,41.900,4.900,1.008e+04 +2025,153.654697,10,663.400,14.700,3.5770,-661.400,-51.000,-3.900,661.400,51.000,-3.900,1.309e+04 +2025,153.660520,10,654.000,11.600,3.7590,-652.500,-45.300,-3.200,652.500,45.300,-3.200,8.151e+03 +2025,153.662885,10,653.200,11.700,3.0540,-651.700,-43.500,-0.500,651.700,43.500,-0.500,8.292e+03 +2025,153.665214,10,655.700,12.600,3.4830,-654.300,-43.700,-4.800,654.300,43.700,-4.800,9.617e+03 +2025,153.678024,10,647.600,10.900,3.7140,-646.200,-42.500,2.100,646.200,42.500,2.100,7.197e+03 +2025,153.683847,10,623.200,12.300,3.8470,-622.200,-30.100,18.700,622.200,30.100,18.700,9.164e+03 +2025,153.685011,10,628.100,12.300,2.9560,-627.000,-35.700,10.700,627.000,35.700,10.700,9.164e+03 +2025,153.695528,10,620.700,22.000,2.6450,-618.900,-21.200,42.000,618.900,21.200,42.000,2.932e+04 +2025,153.704844,10,589.500,16.700,1.4520,-587.400,2.000,49.300,587.400,-2.000,49.300,1.689e+04 +2025,153.714161,10,595.000,11.300,2.4520,-592.800,-1.200,51.500,592.800,1.200,51.500,7.735e+03 +2025,153.784141,10,588.900,17.100,2.1810,-587.200,-40.800,18.300,587.200,40.800,18.300,1.771e+04 +2025,153.805103,10,597.000,10.200,1.8150,-594.900,-47.500,-13.400,594.900,47.500,-13.400,6.302e+03 +2025,153.826101,10,595.500,13.700,2.1620,-593.700,-44.800,-12.200,593.700,44.800,-12.200,1.137e+04 +2025,153.840075,10,640.100,25.500,3.0060,-638.900,-33.000,-20.300,638.900,33.000,-20.300,3.939e+04 +2025,153.856415,10,651.000,23.600,2.8290,-646.900,-42.800,-58.400,646.900,42.800,-58.400,3.374e+04 +2025,153.885565,10,647.300,15.900,3.4070,-640.100,-75.200,-60.900,640.100,75.200,-60.900,1.531e+04 +2025,153.897210,10,643.100,17.000,2.9040,-639.700,-35.000,-56.300,639.700,35.000,-56.300,1.751e+04 +2025,153.901868,10,639.600,19.900,3.2900,-636.000,-49.500,-45.300,636.000,49.500,-45.300,2.399e+04 +2025,153.903033,10,646.600,20.600,3.3220,-640.800,-69.800,-51.200,640.800,69.800,-51.200,2.571e+04 +2025,153.990190,10,597.200,23.100,3.2120,-592.200,-42.300,-63.900,592.200,42.300,-63.900,3.232e+04 +2025,153.991355,10,611.200,20.000,3.5860,-604.100,-37.800,-85.200,604.100,37.800,-85.200,2.423e+04 +2025,153.997177,10,584.900,20.200,3.2850,-581.200,-38.000,-53.700,581.200,38.000,-53.700,2.472e+04 +2025,154.331689,10,573.500,17.800,3.4200,-572.200,-13.900,-37.000,572.200,13.900,-37.000,1.919e+04 +2025,154.382964,10,571.800,20.800,4.1130,-570.200,-11.700,-40.800,570.200,11.700,-40.800,2.621e+04 +2025,154.392317,10,567.400,24.800,3.3140,-566.300,-4.500,-34.300,566.300,4.500,-34.300,3.726e+04 +2025,154.405127,10,563.800,32.600,3.2010,-563.200,-20.100,-16.700,563.200,20.100,-16.700,6.438e+04 +2025,154.410950,10,576.200,36.400,2.4120,-575.500,-27.200,-0.400,575.500,27.200,-0.400,8.026e+04 +2025,154.449415,10,591.600,54.400,1.6830,-589.700,24.300,-40.400,589.700,-24.300,-40.400,1.793e+05 +2025,154.504221,10,601.800,58.900,1.9740,-599.900,20.800,-42.900,599.900,-20.800,-42.900,2.101e+05 +2025,154.507715,10,597.000,58.800,1.9390,-595.900,23.100,-28.300,595.900,-23.100,-28.300,2.094e+05 +2025,154.515867,10,592.900,56.400,1.9440,-592.500,22.700,-4.300,592.500,-22.700,-4.300,1.927e+05 +2025,154.566014,10,636.400,37.400,2.5680,-632.200,-15.200,-71.700,632.200,15.200,-71.700,8.473e+04 +2025,154.586976,10,593.900,62.400,2.2010,-592.600,17.600,-35.900,592.600,-17.600,-35.900,2.359e+05 +2025,154.589305,10,603.700,59.900,2.4550,-602.700,19.900,-29.000,602.700,-19.900,-29.000,2.173e+05 +2025,154.620784,10,599.200,60.500,2.2580,-598.600,25.900,3.300,598.600,-25.900,3.300,2.217e+05 +2025,154.626643,10,601.200,65.300,2.4390,-597.600,49.400,-43.400,597.600,-49.400,-43.400,2.583e+05 +2025,154.628972,10,596.700,56.900,2.4340,-593.500,55.300,-25.700,593.500,-55.300,-25.700,1.961e+05 +2025,154.631301,10,594.000,59.600,2.8270,-590.500,51.200,-39.000,590.500,-51.200,-39.000,2.152e+05 +2025,154.668566,10,584.900,54.800,2.8970,-583.500,40.300,1.800,583.500,-40.300,1.800,1.819e+05 +2025,154.698916,10,579.200,67.700,3.2910,-578.500,23.500,-16.400,578.500,-23.500,-16.400,2.776e+05 +2025,154.900597,10,579.800,48.600,4.9910,-579.800,4.200,-6.000,579.800,-4.200,-6.000,1.431e+05 +2025,154.984516,10,564.200,49.900,6.0700,-564.100,-3.300,4.500,564.100,3.300,4.500,1.508e+05 +2025,155.664093,10,658.300,83.800,7.8480,-654.100,-45.700,-59.300,654.100,45.700,-59.300,4.254e+05 +2025,155.673373,10,696.900,70.800,4.7840,-692.800,-48.500,-58.800,692.800,48.500,-58.800,3.036e+05 +2025,155.725558,10,747.800,37.900,4.3150,-746.200,45.500,17.500,746.200,-45.500,17.500,8.701e+04 +2025,155.766244,10,798.000,53.100,3.7160,-797.800,13.300,12.900,797.800,-13.300,12.900,1.708e+05 +2025,155.789899,10,783.900,53.000,4.9270,-783.900,-5.900,2.800,783.900,5.900,2.800,1.702e+05 +2025,155.791027,10,787.000,50.400,4.9420,-786.900,-6.500,4.700,786.900,6.500,4.700,1.539e+05 +2025,155.813698,10,790.400,45.000,4.2820,-790.200,-20.000,3.100,790.200,20.000,3.100,1.227e+05 +2025,155.824980,10,775.000,46.900,5.2090,-774.700,19.700,6.100,774.700,-19.700,6.100,1.332e+05 +2025,155.834041,10,774.700,45.500,5.5320,-774.300,24.400,2.200,774.300,-24.400,2.200,1.254e+05 +2025,155.840846,10,773.500,47.500,5.5440,-773.100,24.500,-1.000,773.100,-24.500,-1.000,1.367e+05 +2025,155.849835,10,769.600,39.400,4.0990,-769.200,24.200,-4.100,769.200,-24.200,-4.100,9.403e+04 +2025,155.866793,10,753.900,37.600,4.4810,-753.700,5.800,19.100,753.700,-5.800,19.100,8.564e+04 +2025,155.931279,10,736.900,40.100,5.6030,-736.600,-18.200,10.700,736.600,18.200,10.700,9.740e+04 +2025,155.950457,10,733.700,40.900,4.8910,-733.600,-2.400,7.700,733.600,2.400,7.700,1.013e+05 +2025,155.962866,10,746.400,43.300,4.2580,-746.400,1.100,-4.800,746.400,-1.100,-4.800,1.136e+05 +2025,155.967415,10,742.700,40.500,3.8590,-742.700,-5.800,1.500,742.700,5.800,1.500,9.936e+04 +2025,155.982117,10,746.800,42.300,3.5140,-746.700,-12.700,0.900,746.700,12.700,0.900,1.084e+05 +2025,156.004753,10,732.800,36.100,2.5480,-732.700,-5.100,-10.000,732.700,5.100,-10.000,7.894e+04 +2025,156.014906,10,730.800,33.800,2.4890,-730.700,4.300,-13.100,730.700,-4.300,-13.100,6.920e+04 +2025,156.029608,10,730.500,28.400,2.1500,-730.400,5.800,-10.000,730.400,-5.800,-10.000,4.886e+04 +2025,156.038670,10,717.700,35.600,1.7390,-717.600,8.100,-9.200,717.600,-8.100,-9.200,7.677e+04 +2025,156.040926,10,717.400,34.400,1.6160,-717.300,5.300,-9.500,717.300,-5.300,-9.500,7.168e+04 +2025,156.078118,10,701.200,32.700,1.9370,-701.000,13.100,-7.800,701.000,-13.100,-7.800,6.477e+04 +2025,156.130886,10,708.300,41.500,2.7150,-708.200,0.200,8.300,708.200,-0.200,8.300,1.043e+05 +2025,156.131978,10,703.300,44.700,2.6830,-703.200,3.700,8.100,703.200,-3.700,8.100,1.210e+05 +2025,156.137655,10,701.500,46.800,2.7770,-701.400,0.600,6.400,701.400,-0.600,6.400,1.327e+05 +2025,156.190059,10,676.300,50.600,3.1940,-676.300,8.600,-1.300,676.300,-8.600,-1.300,1.551e+05 +2025,156.205198,10,658.000,47.000,4.4760,-657.900,-4.600,-5.600,657.900,4.600,-5.600,1.338e+05 +2025,156.265790,10,659.300,47.800,6.2220,-659.200,9.100,2.200,659.200,-9.100,2.200,1.384e+05 +2025,156.276270,10,682.800,47.900,4.9980,-682.700,11.500,3.200,682.700,-11.500,3.200,1.390e+05 +2025,156.301926,10,679.100,48.300,4.4000,-678.900,15.100,-8.300,678.900,-15.100,-8.300,1.413e+05 +2025,156.310078,10,677.400,50.400,4.1800,-677.000,20.200,-11.300,677.000,-20.200,-11.300,1.539e+05 +2025,156.329766,10,673.200,47.300,4.3670,-672.600,26.800,-10.500,672.600,-26.800,-10.500,1.355e+05 +2025,156.330894,10,674.600,47.000,4.2180,-673.900,30.400,-9.300,673.900,-30.400,-9.300,1.338e+05 +2025,156.335552,10,669.500,48.700,4.3920,-668.700,32.000,-4.300,668.700,-32.000,-4.300,1.437e+05 +2025,156.350655,10,666.100,48.600,3.6750,-665.500,24.400,-14.100,665.500,-24.400,-14.100,1.431e+05 +2025,156.371544,10,645.900,54.400,2.9110,-645.900,-5.300,0.900,645.900,5.300,0.900,1.793e+05 +2025,156.384317,10,660.800,52.500,3.3400,-660.600,6.600,-12.100,660.600,-6.600,-12.100,1.670e+05 +2025,156.385482,10,663.400,53.100,3.0120,-663.200,12.800,-9.700,663.200,-12.800,-9.700,1.708e+05 +2025,156.478426,10,562.900,51.000,3.1160,-562.700,14.700,-1.600,562.700,-14.700,-1.600,1.576e+05 +2025,156.506374,10,582.300,45.200,2.3250,-581.800,23.900,-3.800,581.800,-23.900,-3.800,1.238e+05 +2025,156.578612,10,611.400,38.000,5.9560,-611.300,2.700,5.900,611.300,-2.700,5.900,8.747e+04 +2025,156.625266,10,595.200,44.500,5.2760,-594.900,2.000,17.100,594.900,-2.000,17.100,1.200e+05 +2025,156.627595,10,595.000,48.300,3.7590,-595.000,2.000,9.200,595.000,-2.000,9.200,1.413e+05 +2025,156.660238,10,554.800,61.800,3.0870,-554.800,2.400,5.400,554.800,-2.400,5.400,2.313e+05 +2025,156.685894,10,593.600,63.600,3.1180,-593.300,10.900,14.700,593.300,-10.900,14.700,2.450e+05 +2025,156.710385,10,603.500,55.300,3.1570,-603.500,-4.500,4.300,603.500,4.500,4.300,1.852e+05 +2025,156.738370,10,601.600,38.900,5.9190,-601.300,12.500,12.100,601.300,-12.500,12.100,9.166e+04 +2025,156.786152,10,597.400,40.900,4.3140,-597.200,16.500,0.300,597.200,-16.500,0.300,1.013e+05 +2025,156.802491,10,579.000,34.700,3.6600,-578.700,19.200,-1.200,578.700,-19.200,-1.200,7.294e+04 +2025,156.803656,10,580.300,29.600,3.3250,-580.100,14.500,3.800,580.100,-14.500,3.800,5.307e+04 +2025,156.807149,10,561.600,40.300,3.6500,-561.200,21.000,-0.600,561.200,-21.000,-0.600,9.838e+04 +2025,156.817630,10,577.300,39.100,4.6850,-577.000,15.200,4.800,577.000,-15.200,4.800,9.261e+04 +2025,156.819959,10,581.400,43.900,4.4530,-581.100,17.300,1.000,581.100,-17.300,1.000,1.167e+05 +2025,156.845615,10,589.100,48.800,5.0110,-589.000,9.800,8.800,589.000,-9.800,8.800,1.443e+05 +2025,156.849109,10,592.300,42.000,3.4670,-591.600,3.400,27.100,591.600,-3.400,27.100,1.069e+05 +2025,156.859589,10,576.700,43.000,5.6520,-576.400,20.900,3.700,576.400,-20.900,3.700,1.120e+05 +2025,156.864248,10,582.100,42.000,5.7830,-581.800,17.800,2.000,581.800,-17.800,2.000,1.069e+05 +2025,156.891068,10,558.300,52.800,4.5000,-557.900,20.300,-2.200,557.900,-20.300,-2.200,1.689e+05 +2025,156.894598,10,556.300,49.300,4.7050,-556.100,15.400,-0.300,556.100,-15.400,-0.300,1.472e+05 +2025,156.915560,10,562.700,49.900,3.3820,-562.700,4.200,-6.700,562.700,-4.200,-6.700,1.508e+05 +2025,156.928369,10,536.600,53.400,2.9290,-535.800,29.000,5.700,535.800,-29.000,5.700,1.727e+05 +2025,156.975023,10,531.300,52.600,3.2210,-531.100,12.700,0.600,531.100,-12.700,0.600,1.676e+05 +2025,156.977352,10,540.600,45.400,2.6740,-540.000,-21.900,-11.000,540.000,21.900,-11.000,1.249e+05 +2025,156.989034,10,538.500,48.600,2.8180,-538.000,-19.900,7.200,538.000,19.900,7.200,1.431e+05 +2025,156.994857,10,534.400,43.700,2.9250,-534.100,-18.000,2.400,534.100,18.000,2.400,1.157e+05 +2025,157.006502,10,530.900,47.500,3.3550,-530.700,10.100,13.200,530.700,-10.100,13.200,1.367e+05 +2025,157.007667,10,527.900,47.200,3.1490,-527.700,6.800,13.200,527.700,-6.800,13.200,1.349e+05 +2025,157.023970,10,519.000,45.900,2.7230,-518.600,3.000,18.700,518.600,-3.000,18.700,1.276e+05 +2025,157.034487,10,525.600,42.600,2.5950,-525.300,-5.700,15.600,525.300,5.700,15.600,1.099e+05 +2025,157.042639,10,521.800,47.500,2.8160,-521.700,-6.300,-1.200,521.700,6.300,-1.200,1.367e+05 +2025,157.058979,10,554.100,49.200,2.9300,-552.800,-20.000,32.300,552.800,20.000,32.300,1.466e+05 +2025,157.061308,10,548.900,46.700,2.7580,-547.400,-18.400,37.200,547.400,18.400,37.200,1.321e+05 +2025,157.093951,10,519.300,37.200,2.8900,-519.000,-0.100,17.900,519.000,0.100,17.900,8.382e+04 +2025,157.098609,10,519.400,35.100,2.3590,-519.000,1.000,21.600,519.000,-1.000,21.600,7.463e+04 +2025,157.114913,10,516.200,42.400,2.7360,-516.000,-10.500,9.800,516.000,10.500,9.800,1.089e+05 +2025,157.138240,10,510.600,46.600,2.8600,-509.800,0.900,28.900,509.800,-0.900,28.900,1.315e+05 +2025,157.156872,10,536.300,46.700,2.8900,-536.000,-18.200,0.100,536.000,18.200,0.100,1.321e+05 +2025,157.159201,10,554.300,46.300,2.6910,-554.300,4.100,5.200,554.300,-4.100,5.200,1.299e+05 +2025,157.175541,10,499.900,41.000,2.5820,-499.500,-7.600,19.600,499.500,7.600,19.600,1.018e+05 +2025,157.181364,10,501.900,42.100,2.8540,-501.200,-12.200,22.900,501.200,12.200,22.900,1.074e+05 +2025,157.189552,10,501.300,43.400,2.7210,-501.000,-11.700,12.300,501.000,11.700,12.300,1.141e+05 +2025,157.194210,10,508.800,43.900,2.7820,-508.400,-21.200,-0.800,508.400,21.200,-0.800,1.167e+05 +2025,157.196539,10,499.100,42.700,2.8390,-499.000,-7.400,-0.800,499.000,7.400,-0.800,1.104e+05 +2025,157.268812,10,479.200,35.600,2.6620,-479.200,-0.500,1.500,479.200,0.500,1.500,7.677e+04 +2025,157.290975,10,470.900,39.600,2.7310,-470.400,7.900,19.400,470.400,-7.900,19.400,9.499e+04 +2025,157.329441,10,472.400,36.500,3.0940,-472.300,-5.800,6.500,472.300,5.800,6.500,8.070e+04 +2025,157.367907,10,473.400,36.600,3.7690,-473.400,-8.900,-3.300,473.400,8.900,-3.300,8.114e+04 +2025,157.372565,10,469.000,37.900,3.6730,-468.900,-7.400,3.200,468.900,7.400,3.200,8.701e+04 +2025,157.373729,10,473.500,36.400,3.8510,-473.400,-9.000,-5.000,473.400,9.000,-5.000,8.026e+04 +2025,157.457648,10,459.800,32.900,4.0780,-458.500,6.600,33.100,458.500,-6.600,33.100,6.557e+04 +2025,157.465837,10,466.600,34.600,4.5280,-465.400,9.800,31.200,465.400,-9.800,31.200,7.252e+04 +2025,157.469330,10,466.600,34.500,4.7270,-465.600,7.600,29.200,465.600,-7.600,29.200,7.210e+04 +2025,157.484505,10,475.100,39.500,4.1570,-472.800,0.100,46.000,472.800,-0.100,46.000,9.451e+04 +2025,157.487999,10,474.300,34.600,4.2940,-473.000,0.100,35.400,473.000,-0.100,35.400,7.252e+04 +2025,157.513619,10,459.300,42.500,4.7060,-459.200,-5.500,-0.200,459.200,5.500,-0.200,1.094e+05 +2025,157.531087,10,450.000,35.900,4.3470,-448.800,22.700,23.800,448.800,-22.700,23.800,7.807e+04 +2025,157.541604,10,463.300,33.800,4.0150,-462.400,7.400,28.800,462.400,-7.400,28.800,6.920e+04 +2025,157.548627,10,439.900,36.600,4.4610,-439.200,14.000,20.000,439.200,-14.000,20.000,8.114e+04 +2025,157.577777,10,458.700,38.200,4.5220,-458.200,-1.300,21.900,458.200,1.300,21.900,8.839e+04 +2025,157.617371,10,449.700,38.700,4.9790,-448.900,0.100,26.300,448.900,-0.100,26.300,9.072e+04 +2025,157.641863,10,436.200,35.500,4.9330,-435.400,-7.300,23.800,435.400,7.300,23.800,7.634e+04 +2025,157.644228,10,443.300,36.300,4.6350,-442.600,-6.300,23.500,442.600,6.300,23.500,7.982e+04 +2025,157.647722,10,441.500,37.400,4.9440,-440.700,-9.300,24.200,440.700,9.300,24.200,8.473e+04 +2025,157.652380,10,450.700,39.300,4.2430,-450.300,-7.400,17.300,450.300,7.400,17.300,9.356e+04 +2025,157.665190,10,437.800,33.700,4.5350,-437.300,-19.500,6.500,437.300,19.500,6.500,6.879e+04 +2025,157.669848,10,442.600,35.000,4.7600,-442.100,-16.900,10.600,442.100,16.900,10.600,7.420e+04 +2025,157.681529,10,436.200,36.600,4.5460,-435.900,-14.900,2.900,435.900,14.900,2.900,8.114e+04 +2025,157.687352,10,441.000,33.900,4.2020,-440.500,-22.100,4.000,440.500,22.100,4.000,6.961e+04 +2025,157.706021,10,443.300,33.400,5.2730,-442.800,-21.100,2.000,442.800,21.100,2.000,6.757e+04 +2025,157.708350,10,447.400,35.200,6.0100,-446.800,-22.100,9.600,446.800,22.100,9.600,7.505e+04 +2025,157.764284,10,440.200,31.100,5.2060,-438.200,-39.600,13.400,438.200,39.600,13.400,5.859e+04 +2025,157.770107,10,437.600,31.100,6.2170,-436.400,-30.500,12.300,436.400,30.500,12.300,5.859e+04 +2025,157.780624,10,436.400,31.600,6.0860,-435.100,-31.200,13.000,435.100,31.200,13.000,6.049e+04 +2025,157.788775,10,436.200,30.900,6.5670,-434.800,-32.400,14.300,434.800,32.400,14.300,5.784e+04 +2025,157.795763,10,431.600,31.900,6.1400,-430.500,-31.100,5.400,430.500,31.100,5.400,6.164e+04 +2025,157.807408,10,431.000,31.700,6.2790,-430.600,-20.200,-1.000,430.600,20.200,-1.000,6.087e+04 +2025,157.812066,10,426.500,29.500,6.1320,-425.500,-28.900,0.900,425.500,28.900,0.900,5.271e+04 +2025,157.813230,10,424.900,30.500,6.1270,-423.700,-30.600,5.600,423.700,30.600,5.600,5.635e+04 +2025,157.819053,10,425.800,30.000,5.9890,-424.700,-29.600,6.300,424.700,29.600,6.300,5.452e+04 +2025,157.821382,10,423.700,29.900,6.2770,-422.500,-31.300,4.700,422.500,31.300,4.700,5.415e+04 +2025,157.823711,10,425.800,29.900,6.1370,-424.600,-32.000,2.300,424.600,32.000,2.300,5.415e+04 +2025,157.826040,10,425.100,29.100,6.0040,-423.800,-31.700,4.800,423.800,31.700,4.800,5.129e+04 +2025,157.845910,10,421.200,31.400,6.5610,-419.800,-31.100,15.600,419.800,31.100,15.600,5.972e+04 +2025,157.882046,10,404.400,24.200,5.4800,-402.000,-42.800,9.600,402.000,42.800,9.600,3.547e+04 +2025,157.910031,10,397.500,20.900,4.8490,-395.000,-41.400,17.200,395.000,41.400,17.200,2.646e+04 +2025,157.942674,10,392.200,20.200,5.1880,-388.900,-44.100,26.100,388.900,44.100,26.100,2.472e+04 +2025,157.955484,10,398.000,26.800,5.7270,-395.000,-40.300,28.200,395.000,40.300,28.200,4.351e+04 +2025,157.957813,10,397.800,24.200,5.7290,-394.600,-41.500,29.100,394.600,41.500,29.100,3.547e+04 +2025,157.967166,10,393.900,24.300,5.8240,-390.800,-41.000,27.600,390.800,41.000,27.600,3.577e+04 +2025,157.969495,10,393.200,23.500,5.7610,-390.000,-42.100,25.900,390.000,42.100,25.900,3.345e+04 +2025,158.009089,10,418.000,23.200,9.3330,-414.700,-48.300,20.300,414.700,48.300,20.300,3.260e+04 +2025,158.021935,10,418.800,23.100,9.3420,-414.400,-53.900,27.500,414.400,53.900,27.500,3.232e+04 +2025,158.033616,10,405.900,21.000,9.1720,-402.200,-52.000,16.300,402.200,52.000,16.300,2.671e+04 +2025,158.052285,10,409.100,22.200,12.0670,-405.100,-55.800,11.700,405.100,55.800,11.700,2.985e+04 +2025,158.065095,10,400.300,20.900,10.4130,-395.600,-58.200,17.600,395.600,58.200,17.600,2.646e+04 +2025,158.079069,10,397.100,19.400,11.7130,-392.900,-55.800,14.800,392.900,55.800,14.800,2.280e+04 +2025,158.082563,10,397.300,18.700,11.1770,-393.100,-56.100,11.500,393.100,56.100,11.500,2.118e+04 +2025,158.083728,10,395.300,18.900,10.7680,-391.400,-54.900,8.700,391.400,54.900,8.700,2.164e+04 +2025,158.105890,10,398.000,18.900,11.3050,-394.000,-55.300,10.100,394.000,55.300,10.100,2.164e+04 +2025,158.119864,10,392.400,16.400,10.5190,-387.900,-58.700,5.500,387.900,58.700,5.500,1.629e+04 +2025,158.135040,10,387.600,18.800,10.4870,-383.600,-55.600,0.000,383.600,55.600,0.000,2.141e+04 +2025,158.136204,10,388.200,18.300,10.5930,-384.100,-55.700,2.100,384.100,55.700,2.100,2.029e+04 +2025,158.150179,10,387.700,17.200,9.2830,-383.500,-55.900,-12.300,383.500,55.900,-12.300,1.792e+04 +2025,158.167646,10,391.500,23.400,14.0900,-388.300,-49.000,-9.400,388.300,49.000,-9.400,3.317e+04 +2025,158.171140,10,390.900,20.900,15.8650,-387.900,-47.300,-10.900,387.900,47.300,-10.900,2.646e+04 +2025,158.174670,10,393.700,22.800,15.9490,-390.600,-49.400,-6.200,390.600,49.400,-6.200,3.149e+04 +2025,158.180493,10,390.300,24.500,13.9800,-387.300,-46.800,-13.800,387.300,46.800,-13.800,3.636e+04 +2025,158.185187,10,393.900,18.700,10.9440,-391.200,-45.800,-5.700,391.200,45.800,-5.700,2.118e+04 +2025,158.193339,10,396.800,19.700,12.4370,-394.200,-44.700,3.100,394.200,44.700,3.100,2.351e+04 +2025,158.241121,10,396.600,29.500,20.0170,-395.000,-35.400,8.700,395.000,35.400,8.700,5.271e+04 +2025,158.252766,10,396.200,35.000,20.6970,-393.800,-35.100,-25.000,393.800,35.100,-25.000,7.420e+04 +2025,158.272600,10,400.500,21.700,10.9700,-400.200,-15.400,-3.800,400.200,15.400,-3.800,2.852e+04 +2025,158.316888,10,416.400,34.500,12.8960,-414.700,-36.800,8.000,414.700,36.800,8.000,7.210e+04 +2025,158.351897,10,410.500,36.500,13.0710,-410.000,-20.600,0.100,410.000,20.600,0.100,8.070e+04 +2025,158.371694,10,418.300,20.000,7.6300,-418.100,-13.200,1.700,418.100,13.200,1.700,2.423e+04 +2025,158.372858,10,420.900,17.400,6.3120,-420.800,-10.400,0.800,420.800,10.400,0.800,1.834e+04 +2025,158.377517,10,422.300,14.800,6.1840,-422.200,-9.100,-3.900,422.200,9.100,-3.900,1.327e+04 +2025,158.378681,10,423.400,15.200,6.1060,-423.200,-10.500,-2.900,423.200,10.500,-2.900,1.399e+04 +2025,158.381010,10,418.400,18.000,6.7570,-418.300,-9.800,1.000,418.300,9.800,1.000,1.963e+04 +2025,158.408995,10,422.900,29.600,7.2890,-422.900,2.300,0.800,422.900,-2.300,0.800,5.307e+04 +2025,158.436980,10,411.900,30.700,14.0850,-411.400,-18.200,6.900,411.400,18.200,6.900,5.709e+04 +2025,158.452119,10,412.900,31.300,14.7200,-412.100,-22.800,13.500,412.100,22.800,13.500,5.934e+04 +2025,158.468459,10,423.600,29.300,10.4040,-423.300,-10.300,10.100,423.300,10.300,10.100,5.200e+04 +2025,158.483634,10,433.200,22.600,7.6990,-433.100,3.000,8.000,433.100,-3.000,8.000,3.094e+04 +2025,158.509290,10,422.300,13.900,4.9130,-422.200,-6.600,-2.000,422.200,6.600,-2.000,1.170e+04 +2025,158.525594,10,425.300,15.700,5.1680,-425.200,-10.400,2.200,425.200,10.400,2.200,1.493e+04 +2025,158.529087,10,428.100,15.600,5.0630,-427.800,-7.000,15.000,427.800,7.000,15.000,1.474e+04 +2025,158.571047,10,421.300,16.200,5.9030,-421.200,-7.800,-8.100,421.200,7.800,-8.100,1.590e+04 +2025,158.582729,10,431.000,15.200,5.5530,-430.600,-16.800,7.400,430.600,16.800,7.400,1.399e+04 +2025,158.594374,10,417.200,15.200,5.7640,-417.200,-6.600,0.700,417.200,6.600,0.700,1.399e+04 +2025,158.595538,10,417.600,15.800,6.1140,-417.500,-6.400,-4.200,417.500,6.400,-4.200,1.512e+04 +2025,158.597868,10,415.200,15.600,6.1260,-415.200,-4.200,-5.000,415.200,4.200,-5.000,1.474e+04 +2025,158.604855,10,420.500,14.900,5.8310,-420.400,-8.700,-2.900,420.400,8.700,-2.900,1.345e+04 +2025,158.609513,10,421.200,17.100,6.0580,-420.800,-7.800,-16.600,420.800,7.800,-16.600,1.771e+04 +2025,158.623523,10,417.800,15.300,6.4450,-417.500,-13.700,8.600,417.500,13.700,8.600,1.418e+04 +2025,158.644521,10,426.800,14.900,5.4150,-425.800,-21.500,18.500,425.800,21.500,18.500,1.345e+04 +2025,158.655002,10,428.500,16.500,7.4630,-427.800,-23.300,-1.500,427.800,23.300,-1.500,1.649e+04 +2025,158.659660,10,414.900,16.700,7.2720,-414.400,-13.900,15.900,414.400,13.900,15.900,1.689e+04 +2025,158.693467,10,431.800,17.000,8.5950,-430.900,-28.000,-1.200,430.900,28.000,-1.200,1.751e+04 +2025,158.710935,10,427.500,17.800,7.5610,-426.500,-22.000,18.900,426.500,22.000,18.900,1.919e+04 +2025,158.728439,10,428.000,18.800,7.7370,-426.800,-29.200,14.600,426.800,29.200,14.600,2.141e+04 +2025,158.825241,10,428.800,23.500,10.7230,-427.600,-31.200,-4.500,427.600,31.200,-4.500,3.345e+04 +2025,158.861377,10,438.600,25.000,8.6820,-438.300,-15.300,-1.500,438.300,15.300,-1.500,3.786e+04 +2025,158.888161,10,429.500,17.900,9.5660,-428.900,-22.900,5.600,428.900,22.900,5.600,1.941e+04 +2025,158.892820,10,430.400,17.200,7.3780,-430.000,-17.000,-0.600,430.000,17.000,-0.600,1.792e+04 +2025,158.942967,10,430.300,22.300,5.3150,-430.200,-4.800,1.900,430.200,4.800,1.900,3.012e+04 +2025,158.949954,10,434.400,18.600,5.2810,-434.100,-3.600,15.000,434.100,3.600,15.000,2.096e+04 +2025,158.952283,10,433.700,23.500,6.1280,-433.700,-2.400,6.100,433.700,2.400,6.100,3.345e+04 +2025,158.970952,10,432.800,28.800,6.1430,-432.800,-2.000,0.800,432.800,2.000,0.800,5.024e+04 +2025,158.990786,10,430.200,22.400,6.9670,-430.200,3.100,3.100,430.200,-3.100,3.100,3.039e+04 +2025,159.009418,10,438.300,23.200,9.2390,-437.700,14.800,18.300,437.700,-14.800,18.300,3.260e+04 +2025,159.023392,10,439.600,23.400,10.8810,-439.100,12.800,16.200,439.100,-12.800,16.200,3.317e+04 +2025,159.029215,10,436.800,30.600,9.7850,-436.200,15.000,17.600,436.200,-15.000,17.600,5.672e+04 +2025,159.049048,10,429.200,23.500,10.8540,-428.600,12.900,19.400,428.600,-12.900,19.400,3.345e+04 +2025,159.094538,10,426.700,24.700,8.9140,-425.400,21.700,25.100,425.400,-21.700,25.100,3.696e+04 +2025,159.102690,10,420.600,25.500,9.1460,-419.400,18.800,25.600,419.400,-18.800,25.600,3.939e+04 +2025,159.138826,10,430.100,22.200,8.7110,-429.400,13.100,19.900,429.400,-13.100,19.900,2.985e+04 +2025,159.143521,10,425.800,22.100,9.9650,-425.200,5.200,21.600,425.200,-5.200,21.600,2.958e+04 +2025,159.148179,10,422.100,18.900,8.8470,-420.400,13.400,35.600,420.400,-13.400,35.600,2.164e+04 +2025,159.171470,10,419.000,18.100,9.1120,-415.400,25.600,48.300,415.400,-25.600,48.300,1.984e+04 +2025,159.191266,10,427.700,24.600,11.8850,-426.000,17.900,33.700,426.000,-17.900,33.700,3.666e+04 +2025,159.197125,10,430.800,22.900,10.6500,-429.300,19.100,30.000,429.300,-19.100,30.000,3.177e+04 +2025,159.200619,10,428.600,31.800,11.4000,-428.000,13.100,19.200,428.000,-13.100,19.200,6.125e+04 +2025,159.212264,10,433.400,33.000,9.9540,-432.600,19.800,15.600,432.600,-19.800,15.600,6.596e+04 +2025,159.214593,10,425.600,27.100,10.6370,-424.800,14.000,22.400,424.800,-14.000,22.400,4.449e+04 +2025,159.216959,10,426.900,26.900,11.0160,-426.200,15.300,20.600,426.200,-15.300,20.600,4.383e+04 +2025,159.228604,10,418.800,23.800,9.8400,-417.900,7.200,27.000,417.900,-7.200,27.000,3.431e+04 +2025,159.249602,10,416.400,25.500,9.4280,-415.500,5.000,27.500,415.500,-5.000,27.500,3.939e+04 +2025,159.257753,10,418.200,28.500,9.3730,-417.700,5.600,19.700,417.700,-5.600,19.700,4.920e+04 +2025,159.274056,10,431.100,33.700,11.2280,-429.400,14.200,36.100,429.400,-14.200,36.100,6.879e+04 +2025,159.311394,10,420.700,31.500,11.9160,-420.100,13.100,18.700,420.100,-13.100,18.700,6.010e+04 +2025,159.331227,10,425.500,30.200,10.0700,-424.900,6.200,21.300,424.900,-6.200,21.300,5.525e+04 +2025,159.337050,10,423.200,31.300,9.6300,-422.400,3.800,24.200,422.400,-3.800,24.200,5.934e+04 +2025,159.348695,10,422.000,34.700,11.1620,-421.300,7.900,22.900,421.300,-7.900,22.900,7.294e+04 +2025,159.362706,10,411.500,31.700,10.8560,-410.500,16.700,24.300,410.500,-16.700,24.300,6.087e+04 +2025,159.368528,10,413.300,33.500,10.9720,-412.200,15.500,26.000,412.200,-15.500,26.000,6.798e+04 +2025,159.412817,10,419.900,34.400,11.5550,-419.300,13.800,18.100,419.300,-13.800,18.100,7.168e+04 +2025,159.457105,10,429.700,42.700,19.2500,-428.300,17.100,29.200,428.300,-17.100,29.200,1.104e+05 +2025,159.469951,10,422.400,43.400,17.9770,-421.800,9.700,20.400,421.800,-9.700,20.400,1.141e+05 +2025,159.479268,10,422.900,43.900,16.0540,-421.800,12.400,27.800,421.800,-12.400,27.800,1.167e+05 +2025,159.481597,10,421.200,41.900,16.5410,-420.400,8.500,23.700,420.400,-8.500,23.700,1.063e+05 +2025,159.509582,10,413.800,44.800,18.8770,-413.000,10.900,23.800,413.000,-10.900,23.800,1.216e+05 +2025,159.511911,10,417.800,44.600,18.7490,-417.000,10.400,23.900,417.000,-10.400,23.900,1.205e+05 +2025,159.513075,10,416.100,44.600,19.4060,-415.200,8.700,25.200,415.200,-8.700,25.200,1.205e+05 +2025,159.515404,10,418.800,45.600,19.1900,-418.300,2.700,20.700,418.300,-2.700,20.700,1.260e+05 +2025,159.521227,10,416.500,45.600,19.5760,-416.100,3.000,18.500,416.100,-3.000,18.500,1.260e+05 +2025,159.524721,10,417.600,44.100,17.4210,-416.900,8.600,23.000,416.900,-8.600,23.000,1.178e+05 +2025,159.545719,10,421.900,47.500,22.6090,-421.100,-1.000,24.900,421.100,1.000,24.900,1.367e+05 +2025,159.548048,10,424.100,47.000,21.9650,-423.200,4.000,28.200,423.200,-4.000,28.200,1.338e+05 +2025,159.550377,10,424.400,47.200,19.0010,-423.900,-7.100,19.600,423.900,7.100,19.600,1.349e+05 +2025,159.573704,10,420.200,48.300,21.9120,-419.400,-8.900,23.500,419.400,8.900,23.500,1.413e+05 +2025,159.711263,10,427.000,45.000,22.9910,-426.700,8.400,14.200,426.700,-8.400,14.200,1.227e+05 +2025,159.719414,10,438.500,45.800,23.6040,-437.700,14.800,21.900,437.700,-14.800,21.900,1.271e+05 +2025,159.720615,10,436.600,45.800,22.5310,-435.800,14.600,21.400,435.800,-14.600,21.400,1.271e+05 +2025,159.724109,10,436.200,47.700,23.1590,-435.600,17.400,15.600,435.600,-17.400,15.600,1.378e+05 +2025,159.732260,10,433.700,44.900,21.3900,-432.500,8.200,31.800,432.500,-8.200,31.800,1.221e+05 +2025,159.735754,10,429.800,44.800,22.9930,-429.200,11.100,19.200,429.200,-11.100,19.200,1.216e+05 +2025,159.736918,10,430.400,44.800,22.2770,-429.500,7.000,26.700,429.500,-7.000,26.700,1.216e+05 +2025,159.743906,10,429.200,42.700,21.3710,-428.600,-2.200,22.600,428.600,2.200,22.600,1.104e+05 +2025,159.747436,10,432.400,42.400,20.5390,-432.000,-1.800,19.800,432.000,1.800,19.800,1.089e+05 +2025,159.752094,10,434.100,42.100,20.4700,-433.900,-1.900,12.300,433.900,1.900,12.300,1.074e+05 +2025,159.775421,10,430.400,40.500,20.3970,-430.000,-7.500,14.900,430.000,7.500,14.900,9.936e+04 +2025,159.782408,10,434.000,39.700,19.2600,-433.700,-8.000,13.900,433.700,8.000,13.900,9.547e+04 +2025,159.783572,10,432.800,39.100,19.5550,-432.600,-8.900,10.100,432.600,8.900,10.100,9.261e+04 +2025,159.798711,10,423.100,42.100,18.9070,-423.100,0.700,2.600,423.100,-0.700,2.600,1.074e+05 +2025,159.831391,10,431.100,40.200,16.7550,-431.100,4.400,-2.600,431.100,-4.400,-2.600,9.789e+04 +2025,159.858211,10,429.300,41.300,12.8100,-429.200,2.800,-3.700,429.200,-2.800,-3.700,1.033e+05 +2025,160.023756,10,458.400,54.200,13.8520,-457.200,18.800,-26.000,457.200,-18.800,-26.000,1.779e+05 +2025,160.112333,10,469.100,61.900,14.0500,-468.200,0.700,-27.700,468.200,-0.700,-27.700,2.321e+05 +2025,160.119320,10,473.300,49.900,12.7050,-472.300,-8.800,-28.300,472.300,8.800,-28.300,1.508e+05 +2025,160.134459,10,471.800,45.400,11.6720,-471.300,6.800,-20.600,471.300,-6.800,-20.600,1.249e+05 +2025,160.135624,10,475.600,42.100,10.8230,-475.300,-9.500,-15.100,475.300,9.500,-15.100,1.074e+05 +2025,160.136788,10,477.600,43.500,11.0330,-477.200,-3.900,-18.000,477.200,3.900,-18.000,1.146e+05 +2025,160.165974,10,467.000,43.300,9.5330,-466.800,-2.900,-14.100,466.800,2.900,-14.100,1.136e+05 +2025,160.167139,10,465.500,45.100,9.5230,-465.100,-0.900,-19.600,465.100,0.900,-19.600,1.232e+05 +2025,160.193959,10,489.700,43.100,11.5320,-487.400,16.900,-43.500,487.400,-16.900,-43.500,1.125e+05 +2025,160.209098,10,485.600,45.100,11.1890,-483.800,15.400,-38.500,483.800,-15.400,-38.500,1.232e+05 +2025,160.211427,10,497.100,42.200,10.8140,-494.300,14.100,-50.800,494.300,-14.100,-50.800,1.079e+05 +2025,160.231260,10,494.900,47.900,11.1950,-492.600,0.800,-47.900,492.600,-0.800,-47.900,1.390e+05 +2025,160.237083,10,486.900,46.800,9.2350,-485.200,-4.000,-39.900,485.200,4.000,-39.900,1.327e+05 +2025,160.265068,10,489.900,56.700,10.0700,-487.700,15.200,-44.000,487.700,-15.200,-44.000,1.947e+05 +2025,160.294218,10,496.000,53.200,9.3050,-493.100,10.500,-52.800,493.100,-10.500,-52.800,1.714e+05 +2025,160.295382,10,499.300,56.300,9.5460,-496.600,13.700,-49.500,496.600,-13.700,-49.500,1.920e+05 +2025,160.422425,10,493.500,70.700,7.9530,-489.100,20.300,-62.300,489.100,-20.300,-62.300,3.028e+05 +2025,160.484254,10,501.100,56.500,7.2120,-499.800,16.300,-31.700,499.800,-16.300,-31.700,1.934e+05 +2025,160.494735,10,501.600,60.000,9.7460,-497.100,-15.700,-65.100,497.100,15.700,-65.100,2.181e+05 +2025,160.569338,10,496.500,55.400,11.2630,-493.900,-4.200,-50.000,493.900,4.200,-50.000,1.859e+05 +2025,160.577490,10,488.700,57.500,10.2220,-485.800,28.800,-45.100,485.800,-28.800,-45.100,2.003e+05 +2025,160.601981,10,507.600,56.700,10.2570,-502.400,37.300,-62.500,502.400,-37.300,-62.500,1.947e+05 +2025,160.620650,10,482.700,55.600,10.3270,-481.400,11.800,-34.500,481.400,-11.800,-34.500,1.873e+05 +2025,160.691758,10,490.600,50.000,8.3780,-489.100,10.900,-36.900,489.100,-10.900,-36.900,1.514e+05 +2025,160.698745,10,490.900,50.800,8.1790,-489.300,13.700,-36.700,489.300,-13.700,-36.700,1.563e+05 +2025,160.720908,10,477.500,49.700,8.2110,-475.100,27.100,-39.600,475.100,-27.100,-39.600,1.496e+05 +2025,160.725566,10,485.700,48.900,7.7020,-483.400,23.100,-41.700,483.400,-23.100,-41.700,1.448e+05 +2025,160.811850,10,487.500,42.000,5.6670,-487.300,2.100,-15.800,487.300,-2.100,-15.800,1.069e+05 +2025,160.814215,10,490.800,40.100,5.7120,-490.500,1.000,-18.600,490.500,-1.000,-18.600,9.740e+04 +2025,160.821202,10,476.400,39.900,5.3130,-474.300,41.500,-18.500,474.300,-41.500,-18.500,9.643e+04 +2025,160.822367,10,482.400,42.600,5.6740,-482.200,1.300,-14.500,482.200,-1.300,-14.500,1.099e+05 +2025,160.823531,10,482.400,43.300,5.8920,-482.100,1.100,-15.800,482.100,-1.100,-15.800,1.136e+05 +2025,160.928412,10,475.700,37.500,5.9260,-475.200,12.700,-17.600,475.200,-12.700,-17.600,8.518e+04 +2025,160.950610,10,460.600,37.500,6.3060,-460.300,8.200,-15.900,460.300,-8.200,-15.900,8.518e+04 +2025,160.951775,10,462.200,37.000,6.4230,-461.800,13.200,-14.700,461.800,-13.200,-14.700,8.293e+04 +2025,160.965749,10,458.700,38.500,6.4490,-458.500,-2.200,-14.800,458.500,2.200,-14.800,8.979e+04 +2025,160.971572,10,454.600,38.200,7.0960,-454.600,-4.400,-1.400,454.600,4.400,-1.400,8.839e+04 +2025,160.984418,10,457.100,37.100,6.1190,-456.700,-14.500,-11.600,456.700,14.500,-11.600,8.337e+04 +2025,161.003051,10,466.800,39.900,6.3750,-466.300,-12.600,-18.300,466.300,12.600,-18.300,9.643e+04 +2025,161.013531,10,468.000,39.600,6.7610,-467.600,-17.400,-4.800,467.600,17.400,-4.800,9.499e+04 +2025,161.015860,10,457.000,37.200,6.6090,-456.600,-18.600,-3.200,456.600,18.600,-3.200,8.382e+04 +2025,161.022884,10,454.500,38.000,5.5980,-454.300,-13.300,2.300,454.300,13.300,2.300,8.747e+04 +2025,161.031036,10,448.600,38.300,5.4750,-448.600,-1.300,-0.300,448.600,1.300,-0.300,8.886e+04 +2025,161.046175,10,453.300,38.200,6.1330,-452.800,-6.100,-20.200,452.800,6.100,-20.200,8.839e+04 +2025,161.092792,10,439.500,37.400,5.6390,-439.500,-2.400,-0.400,439.500,2.400,-0.400,8.473e+04 +2025,161.097487,10,438.100,38.500,5.4210,-438.000,-6.500,-7.100,438.000,6.500,-7.100,8.979e+04 +2025,161.098651,10,438.600,40.700,5.5780,-438.500,-6.200,-7.200,438.500,6.200,-7.200,1.003e+05 +2025,161.106803,10,436.900,38.200,5.2550,-436.800,-9.300,-3.400,436.800,9.300,-3.400,8.839e+04 +2025,161.110333,10,433.900,38.900,5.1650,-433.800,-9.400,-4.900,433.800,9.400,-4.900,9.166e+04 +2025,161.116155,10,438.500,34.300,5.1650,-438.300,-11.900,-0.800,438.300,11.900,-0.800,7.126e+04 +2025,161.117320,10,436.900,32.900,5.0450,-436.400,-21.400,1.200,436.400,21.400,1.200,6.557e+04 +2025,161.121978,10,436.000,30.900,5.0670,-435.700,-14.000,10.100,435.700,14.000,10.100,5.784e+04 +2025,161.130130,10,440.300,32.100,4.9260,-439.900,-17.300,6.100,439.900,17.300,6.100,6.242e+04 +2025,161.132459,10,440.200,31.800,4.8470,-439.800,-16.300,5.700,439.800,16.300,5.700,6.125e+04 +2025,161.158115,10,437.900,30.900,4.3000,-437.500,-18.700,0.500,437.500,18.700,0.500,5.784e+04 +2025,161.166267,10,462.600,31.400,4.8130,-461.700,-16.400,-22.700,461.700,16.400,-22.700,5.972e+04 +2025,161.187264,10,467.800,35.100,4.9140,-467.400,-17.200,1.700,467.400,17.200,1.700,7.463e+04 +2025,161.225730,10,452.500,41.100,4.5920,-452.100,14.200,-14.600,452.100,-14.200,-14.600,1.023e+05 +2025,161.265361,10,422.700,38.000,5.5990,-422.500,-7.400,6.700,422.500,7.400,6.700,8.747e+04 +2025,161.266525,10,424.600,37.800,5.6370,-424.500,-7.300,6.600,424.500,7.300,6.600,8.655e+04 +2025,161.271220,10,428.400,37.000,5.0790,-428.100,-15.700,-3.900,428.100,15.700,-3.900,8.293e+04 +2025,161.279371,10,434.500,38.400,5.8850,-434.000,-21.000,-4.500,434.000,21.000,-4.500,8.932e+04 +2025,161.280536,10,433.600,37.200,5.3560,-433.100,-21.100,0.000,433.100,21.100,0.000,8.382e+04 +2025,161.330647,10,435.500,35.700,5.1290,-434.600,-27.900,0.600,434.600,27.900,0.600,7.720e+04 +2025,161.348151,10,428.400,35.300,4.8500,-427.800,-22.400,0.000,427.800,22.400,0.000,7.548e+04 +2025,161.355139,10,443.200,39.300,5.3550,-442.500,-17.100,-17.700,442.500,17.100,-17.700,9.356e+04 +2025,161.356303,10,446.700,38.500,5.1580,-446.000,-15.400,-19.400,446.000,15.400,-19.400,8.979e+04 +2025,161.420425,10,434.400,33.400,4.7730,-434.000,-19.400,3.000,434.000,19.400,3.000,6.757e+04 +2025,161.425083,10,432.200,32.400,4.7370,-431.700,-18.600,9.300,431.700,18.600,9.300,6.359e+04 +2025,161.434436,10,425.700,29.700,4.3760,-425.200,-17.300,10.100,425.200,17.300,10.100,5.343e+04 +2025,161.447246,10,425.600,35.400,4.6120,-425.400,-10.100,-4.200,425.400,10.100,-4.200,7.591e+04 +2025,161.453068,10,426.800,32.500,4.5760,-426.500,-17.500,0.400,426.500,17.500,0.400,6.398e+04 +2025,161.474030,10,425.900,36.200,5.1120,-425.900,-8.300,-0.700,425.900,8.300,-0.700,7.938e+04 +2025,161.491534,10,428.700,39.600,5.4490,-428.500,-14.600,-0.300,428.500,14.600,-0.300,9.499e+04 +2025,161.496192,10,425.100,35.000,4.8430,-424.900,-15.400,-0.500,424.900,15.400,-0.500,7.420e+04 +2025,161.509038,10,420.600,35.800,4.9780,-420.500,1.600,11.500,420.500,-1.600,11.500,7.763e+04 +2025,161.511368,10,418.900,35.300,4.8900,-418.800,4.900,6.900,418.800,-4.900,6.900,7.548e+04 +2025,161.519519,10,418.400,34.900,4.7660,-418.400,-4.400,2.600,418.400,4.400,2.600,7.378e+04 +2025,161.546303,10,418.800,40.800,5.1990,-418.500,-3.800,-15.700,418.500,3.800,-15.700,1.008e+05 +2025,161.549797,10,415.800,40.400,4.8510,-415.600,-12.100,-6.600,415.600,12.100,-6.600,9.887e+04 +2025,161.602310,10,434.700,33.400,4.7380,-433.700,-22.400,-18.800,433.700,22.400,-18.800,6.757e+04 +2025,161.610462,10,415.500,43.200,4.9460,-415.300,-9.800,-7.200,415.300,9.800,-7.200,1.130e+05 +2025,161.617449,10,434.000,36.500,5.3670,-432.800,-19.900,-26.200,432.800,19.900,-26.200,8.070e+04 +2025,161.652421,10,450.300,37.200,5.5440,-449.500,-15.200,-21.100,449.500,15.200,-21.100,8.382e+04 +2025,161.658244,10,444.100,35.700,5.3900,-443.200,-21.100,-19.900,443.200,21.100,-19.900,7.720e+04 +2025,161.661774,10,429.600,32.900,5.6640,-428.500,-17.400,-26.200,428.500,17.400,-26.200,6.557e+04 +2025,161.667596,10,443.500,38.600,6.0770,-442.300,-16.900,-27.700,442.300,16.900,-27.700,9.025e+04 +2025,161.669925,10,447.700,34.200,5.7400,-446.600,-3.200,-30.900,446.600,3.200,-30.900,7.085e+04 +2025,161.689722,10,443.200,37.800,5.3800,-442.300,-8.200,-28.000,442.300,8.200,-28.000,8.655e+04 +2025,161.690886,10,443.800,38.700,5.2800,-443.100,-4.600,-24.700,443.100,4.600,-24.700,9.072e+04 +2025,161.725858,10,428.600,41.200,5.8260,-427.900,-24.800,-3.200,427.900,24.800,-3.200,1.028e+05 +2025,161.743362,10,450.100,30.100,5.2580,-449.300,-25.100,-6.700,449.300,25.100,-6.700,5.488e+04 +2025,161.749221,10,455.400,29.900,5.9730,-453.800,-37.300,-10.900,453.800,37.300,-10.900,5.415e+04 +2025,161.752715,10,455.700,33.300,6.9610,-454.100,-36.900,-12.900,454.100,36.900,-12.900,6.717e+04 +2025,161.805191,10,439.400,40.400,7.9470,-438.100,-21.500,-25.900,438.100,21.500,-25.900,9.887e+04 +2025,161.820330,10,433.400,37.100,7.3680,-432.300,-29.000,-11.100,432.300,29.000,-11.100,8.337e+04 +2025,161.851809,10,415.000,27.200,7.4810,-412.300,-44.400,-16.000,412.300,44.400,-16.000,4.481e+04 +2025,161.865783,10,428.900,29.100,5.0350,-426.100,-48.200,-8.300,426.100,48.200,-8.300,5.129e+04 +2025,161.919424,10,437.800,39.900,5.8820,-436.200,-20.300,-32.300,436.200,20.300,-32.300,9.643e+04 +2025,161.956762,10,432.300,47.000,7.2620,-431.200,-14.400,-26.500,431.200,14.400,-26.500,1.338e+05 +2025,161.970736,10,444.500,43.700,6.5330,-442.800,-4.700,-38.400,442.800,4.700,-38.400,1.157e+05 +2025,161.978888,10,466.500,47.000,6.1950,-466.200,5.100,-14.200,466.200,-5.100,-14.200,1.338e+05 +2025,161.983546,10,452.100,47.800,8.1280,-451.000,-7.700,-30.200,451.000,7.700,-30.200,1.384e+05 +2025,162.022011,10,447.800,42.500,6.6210,-447.400,-11.500,-15.800,447.400,11.500,-15.800,1.094e+05 +2025,162.061642,10,431.400,48.500,7.8470,-430.300,-2.400,-31.200,430.300,2.400,-31.200,1.425e+05 +2025,162.101309,10,442.200,43.200,7.2470,-442.200,-1.100,-4.300,442.200,1.100,-4.300,1.130e+05 +2025,162.102473,10,442.100,44.000,7.3980,-442.100,1.400,-3.300,442.100,-1.400,-3.300,1.173e+05 +2025,162.177076,10,427.000,46.700,7.6290,-427.000,-4.400,-2.200,427.000,4.400,-2.200,1.321e+05 +2025,162.186392,10,438.600,43.200,7.4390,-438.300,-5.700,-16.800,438.300,5.700,-16.800,1.130e+05 +2025,162.189922,10,431.100,43.800,7.6820,-431.000,-1.200,-7.000,431.000,1.200,-7.000,1.162e+05 +2025,162.192251,10,433.900,43.500,7.3660,-433.700,1.100,-12.300,433.700,-1.100,-12.300,1.146e+05 +2025,162.194580,10,439.800,42.300,6.8910,-439.800,2.100,-1.100,439.800,-2.100,-1.100,1.084e+05 +2025,162.209719,10,435.600,39.000,7.2750,-435.500,5.800,7.300,435.500,-5.800,7.300,9.213e+04 +2025,162.210883,10,435.500,40.300,7.2880,-435.500,3.500,3.200,435.500,-3.500,3.200,9.838e+04 +2025,162.243527,10,438.400,41.400,7.2240,-438.300,-6.700,-8.000,438.300,6.700,-8.000,1.038e+05 +2025,162.259866,10,429.100,42.800,7.6710,-426.400,6.000,-47.400,426.400,-6.000,-47.400,1.110e+05 +2025,162.296003,10,433.100,44.400,7.4720,-432.900,0.300,-11.000,432.900,-0.300,-11.000,1.194e+05 +2025,162.311142,10,435.500,42.300,7.7310,-435.400,8.200,-5.800,435.400,-8.200,-5.800,1.084e+05 +2025,162.312306,10,433.300,43.100,7.9330,-433.100,13.500,-3.400,433.100,-13.500,-3.400,1.125e+05 +2025,162.323952,10,434.200,39.800,7.5860,-433.000,-11.900,-30.800,433.000,11.900,-30.800,9.595e+04 +2025,162.325153,10,438.700,39.900,8.1090,-437.500,-12.300,-30.200,437.500,12.300,-30.200,9.643e+04 +2025,162.341456,10,444.900,41.600,7.5100,-444.300,-3.800,-21.600,444.300,3.800,-21.600,1.048e+05 +2025,162.350808,10,429.200,42.100,6.7700,-429.100,-0.800,-3.500,429.100,0.800,-3.500,1.074e+05 +2025,162.369441,10,449.900,44.800,7.9980,-449.300,-4.500,-23.400,449.300,4.500,-23.400,1.216e+05 +2025,162.371770,10,438.800,41.400,6.5840,-438.300,-10.400,-18.000,438.300,10.400,-18.000,1.038e+05 +2025,162.374135,10,429.800,40.700,7.0520,-429.600,-8.700,-10.200,429.600,8.700,-10.200,1.003e+05 +2025,162.413729,10,440.700,39.800,7.9400,-439.600,-12.800,-27.800,439.600,12.800,-27.800,9.595e+04 +2025,162.416058,10,442.700,41.700,8.0080,-442.000,-10.200,-22.400,442.000,10.200,-22.400,1.053e+05 +2025,162.430068,10,416.200,42.700,8.2270,-415.000,-18.800,-24.800,415.000,18.800,-24.800,1.104e+05 +2025,162.482545,10,420.600,34.000,6.2070,-419.600,-21.500,-19.000,419.600,21.500,-19.000,7.002e+04 +2025,162.505835,10,420.900,36.200,4.9110,-420.600,-15.000,-9.500,420.600,15.000,-9.500,7.938e+04 +2025,162.507000,10,421.900,37.100,5.1050,-421.600,-13.400,-8.200,421.600,13.400,-8.200,8.337e+04 +2025,162.575816,10,427.900,44.400,6.4070,-427.800,-1.800,12.400,427.800,1.800,12.400,1.194e+05 +2025,162.663228,10,460.800,52.400,9.2880,-460.100,-24.400,-1.500,460.100,24.400,-1.500,1.663e+05 +2025,162.734374,10,476.700,55.200,11.7110,-476.600,9.000,-5.300,476.600,-9.000,-5.300,1.846e+05 +2025,162.746019,10,466.700,57.800,12.5980,-466.100,14.100,-19.200,466.100,-14.100,-19.200,2.024e+05 +2025,162.747183,10,473.000,59.200,13.1210,-471.300,-5.100,-39.300,471.300,5.100,-39.300,2.123e+05 +2025,162.757700,10,458.400,57.100,11.9670,-458.000,-2.300,-18.800,458.000,2.300,-18.800,1.975e+05 +2025,162.760030,10,465.800,60.400,13.4690,-465.400,15.000,-9.600,465.400,-15.000,-9.600,2.210e+05 +2025,162.803153,10,466.100,53.400,12.0740,-465.200,-22.600,-17.800,465.200,22.600,-17.800,1.727e+05 +2025,162.819457,10,464.900,53.000,11.1070,-464.100,-18.000,-20.000,464.100,18.000,-20.000,1.702e+05 +2025,162.841619,10,475.300,45.000,10.0980,-474.200,-18.000,-25.900,474.200,18.000,-25.900,1.227e+05 +2025,162.843948,10,471.800,47.900,11.0940,-470.400,-20.600,-30.100,470.400,20.600,-30.100,1.390e+05 +2025,162.848606,10,463.700,51.300,11.6700,-461.600,-26.400,-35.600,461.600,26.400,-35.600,1.594e+05 +2025,162.864946,10,471.500,41.000,11.5960,-470.200,-16.700,-30.300,470.200,16.700,-30.300,1.018e+05 +2025,162.924410,10,484.400,35.800,10.1680,-482.600,-16.600,-37.700,482.600,16.600,-37.700,7.763e+04 +2025,162.927904,10,505.200,36.100,10.8390,-504.000,-1.300,-35.800,504.000,1.300,-35.800,7.894e+04 +2025,162.969863,10,461.000,28.600,10.0670,-459.600,-20.400,-29.600,459.600,20.400,-29.600,4.955e+04 +2025,162.993190,10,466.300,27.300,10.2810,-464.100,-21.300,-39.200,464.100,21.300,-39.200,4.515e+04 +2025,163.004835,10,457.000,28.300,9.1560,-455.000,-26.900,-33.200,455.000,26.900,-33.200,4.851e+04 +2025,163.015352,10,455.100,28.700,10.0570,-453.600,-28.800,-22.200,453.600,28.800,-22.200,4.989e+04 +2025,163.020010,10,465.200,28.700,10.6500,-463.600,-34.400,-17.700,463.600,34.400,-17.700,4.989e+04 +2025,163.023504,10,463.300,26.900,10.5040,-461.600,-34.600,-18.900,461.600,34.600,-18.900,4.383e+04 +2025,163.031656,10,464.400,27.100,10.6620,-463.000,-34.900,-8.200,463.000,34.900,-8.200,4.449e+04 +2025,163.043301,10,466.600,28.200,10.2600,-465.000,-34.600,-17.700,465.000,34.600,-17.700,4.817e+04 +2025,163.099308,10,458.600,37.200,8.8730,-456.600,-41.500,-9.400,456.600,41.500,-9.400,8.382e+04 +2025,163.109788,10,480.400,40.200,8.5960,-474.700,-10.000,-73.100,474.700,10.000,-73.100,9.789e+04 +2025,163.117940,10,477.000,38.700,7.4430,-471.400,-23.300,-69.600,471.400,23.300,-69.600,9.072e+04 +2025,163.120269,10,473.800,35.800,7.7240,-468.200,-24.900,-67.900,468.200,24.900,-67.900,7.763e+04 +2025,163.130750,10,464.000,32.400,7.2470,-459.000,-10.500,-67.400,459.000,10.500,-67.400,6.359e+04 +2025,163.135408,10,480.800,37.100,9.2040,-473.100,6.000,-85.300,473.100,-6.000,-85.300,8.337e+04 +2025,163.136572,10,479.300,39.200,9.6490,-472.800,12.800,-77.700,472.800,-12.800,-77.700,9.308e+04 +2025,163.152912,10,466.200,38.800,8.4550,-458.400,-21.300,-81.800,458.400,21.300,-81.800,9.119e+04 +2025,163.196036,10,481.700,31.600,8.9080,-474.500,0.100,-82.900,474.500,-0.100,-82.900,6.049e+04 +2025,163.204188,10,488.400,34.000,11.6570,-479.900,-3.300,-90.600,479.900,3.300,-90.600,7.002e+04 +2025,163.212339,10,477.200,31.600,10.1420,-470.000,-0.500,-82.700,470.000,0.500,-82.700,6.049e+04 +2025,163.220491,10,483.200,32.800,11.6620,-474.700,-3.900,-90.100,474.700,3.900,-90.100,6.517e+04 +2025,163.221692,10,483.100,32.100,11.2110,-474.300,-5.500,-91.800,474.300,5.500,-91.800,6.242e+04 +2025,163.254335,10,442.600,22.300,10.4480,-438.400,-21.300,-57.200,438.400,21.300,-57.200,3.012e+04 +2025,163.256664,10,443.500,20.000,10.2690,-439.600,-23.500,-53.900,439.600,23.500,-53.900,2.423e+04 +2025,163.279990,10,450.000,27.500,8.3810,-444.200,-7.700,-71.700,444.200,7.700,-71.700,4.581e+04 +2025,163.321950,10,422.400,25.500,10.3950,-419.600,-16.400,-45.900,419.600,16.400,-45.900,3.939e+04 +2025,163.324279,10,411.900,24.100,12.5700,-409.800,-19.000,-36.900,409.800,19.000,-36.900,3.518e+04 +2025,163.344112,10,438.300,22.200,23.6240,-437.200,-13.000,-27.400,437.200,13.000,-27.400,2.985e+04 +2025,163.367439,10,425.500,19.300,22.3670,-422.000,-8.000,-54.200,422.000,8.000,-54.200,2.256e+04 +2025,163.379084,10,416.500,25.500,23.6090,-415.000,-11.000,-32.500,415.000,11.000,-32.500,3.939e+04 +2025,163.397753,10,421.600,21.500,16.5710,-421.100,6.200,-20.100,421.100,-6.200,-20.100,2.800e+04 +2025,163.402411,10,426.200,21.600,16.1890,-425.600,11.700,-19.200,425.600,-11.700,-19.200,2.826e+04 +2025,163.450229,10,416.300,38.400,12.8270,-415.400,-7.400,-26.600,415.400,7.400,-26.600,8.932e+04 +2025,163.487531,10,398.700,35.500,10.8050,-397.100,-5.900,-35.400,397.100,5.900,-35.400,7.634e+04 +2025,163.500340,10,413.500,34.100,11.7750,-412.500,-14.300,-24.500,412.500,14.300,-24.500,7.044e+04 +2025,163.508492,10,417.600,39.300,14.0740,-416.000,-22.000,-30.400,416.000,22.000,-30.400,9.356e+04 +2025,163.528325,10,407.200,28.800,11.2110,-406.100,-1.500,-29.200,406.100,1.500,-29.200,5.024e+04 +2025,163.534148,10,411.500,25.500,10.3330,-410.600,-0.400,-26.800,410.600,0.400,-26.800,3.939e+04 +2025,163.563298,10,422.000,36.700,8.6870,-419.400,-17.800,-44.000,419.400,17.800,-44.000,8.159e+04 +2025,163.574943,10,404.700,29.100,12.5120,-402.600,1.100,-40.800,402.600,-1.100,-40.800,5.129e+04 +2025,163.611116,10,421.000,26.500,7.6930,-420.300,-13.000,-19.500,420.300,13.000,-19.500,4.254e+04 +2025,163.630950,10,414.900,26.000,12.9520,-414.700,-2.200,-13.900,414.700,2.200,-13.900,4.095e+04 +2025,163.644924,10,404.200,25.400,12.7030,-403.500,-3.600,-23.800,403.500,3.600,-23.800,3.908e+04 +2025,163.654240,10,407.500,24.800,12.1070,-407.000,0.100,-21.400,407.000,-0.100,-21.400,3.726e+04 +2025,163.678732,10,427.700,24.600,11.0130,-427.500,-4.200,-12.500,427.500,4.200,-12.500,3.666e+04 +2025,163.689212,10,437.700,26.900,7.5290,-437.300,-0.400,-17.900,437.300,0.400,-17.900,4.383e+04 +2025,163.697364,10,431.200,26.000,7.2690,-431.000,1.400,-12.300,431.000,-1.400,-12.300,4.095e+04 +2025,163.700894,10,435.300,30.400,8.2620,-434.900,-5.200,-17.900,434.900,5.200,-17.900,5.598e+04 +2025,163.709046,10,434.900,32.300,8.4090,-434.500,-7.600,-17.600,434.500,7.600,-17.600,6.320e+04 +2025,163.819785,10,484.000,39.300,11.7300,-483.500,-21.800,-1.900,483.500,21.800,-1.900,9.356e+04 +2025,163.833759,10,471.500,29.400,12.5040,-471.300,-13.900,4.100,471.300,13.900,4.100,5.236e+04 +2025,163.851264,10,458.600,35.400,11.8170,-458.500,-9.000,3.300,458.500,9.000,3.300,7.591e+04 +2025,163.852428,10,464.600,34.100,11.9490,-464.400,-11.700,7.800,464.400,11.700,7.800,7.044e+04 +2025,163.857086,10,464.800,27.500,9.4360,-464.700,-1.300,12.100,464.700,1.300,12.100,4.581e+04 +2025,163.858251,10,464.300,27.000,9.6950,-464.100,-4.200,12.100,464.100,4.200,12.100,4.416e+04 +2025,163.885071,10,427.000,24.900,12.1010,-427.000,-5.300,0.900,427.000,5.300,0.900,3.756e+04 +2025,163.900247,10,457.800,16.400,13.2060,-456.700,-23.500,20.100,456.700,23.500,20.100,1.629e+04 +2025,163.901411,10,457.100,16.000,13.7560,-456.200,-21.100,18.500,456.200,21.100,18.500,1.551e+04 +2025,163.906069,10,456.200,15.400,15.1060,-455.300,-23.000,16.900,455.300,23.000,16.900,1.437e+04 +2025,163.911892,10,456.900,14.900,14.5470,-456.200,-20.700,14.800,456.200,20.700,14.800,1.345e+04 +2025,163.936383,10,455.700,14.900,11.7240,-454.800,-26.900,11.700,454.800,26.900,11.700,1.345e+04 +2025,163.938712,10,454.500,15.300,12.0780,-453.500,-27.000,11.900,453.500,27.000,11.900,1.418e+04 +2025,163.963167,10,450.500,15.300,13.0040,-450.200,-14.600,7.100,450.200,14.600,7.100,1.418e+04 +2025,163.966661,10,445.300,14.800,12.9260,-444.900,-15.700,9.200,444.900,15.700,9.200,1.327e+04 +2025,163.997011,10,451.100,14.900,13.1960,-450.700,-17.600,-1.600,450.700,17.600,-1.600,1.345e+04 +2025,164.000505,10,447.000,16.000,12.6620,-446.700,-14.500,0.000,446.700,14.500,0.000,1.551e+04 +2025,164.001669,10,455.400,12.900,10.1390,-455.000,-17.100,-0.300,455.000,17.100,-0.300,1.008e+04 +2025,164.003998,10,446.200,14.000,10.8100,-446.100,-8.500,-3.500,446.100,8.500,-3.500,1.187e+04 +2025,164.014479,10,441.900,14.500,10.3790,-441.900,-6.300,-1.400,441.900,6.300,-1.400,1.274e+04 +2025,164.068120,10,436.800,19.400,6.7040,-436.700,0.100,-8.600,436.700,-0.100,-8.600,2.280e+04 +2025,164.082130,10,444.800,19.800,6.1480,-444.700,-6.000,-5.400,444.700,6.000,-5.400,2.375e+04 +2025,164.085624,10,435.900,21.600,6.9420,-435.900,-3.100,-5.200,435.900,3.100,-5.200,2.826e+04 +2025,164.101927,10,422.900,17.000,6.2410,-422.800,3.800,-11.600,422.800,-3.800,-11.600,1.751e+04 +2025,164.118267,10,425.100,15.700,6.3950,-425.000,-3.000,-10.900,425.000,3.000,-10.900,1.493e+04 +2025,164.119432,10,423.000,15.500,5.9920,-422.700,-0.400,-14.600,422.700,0.400,-14.600,1.455e+04 +2025,164.124090,10,420.900,16.300,6.1280,-420.500,4.100,-16.900,420.500,-4.100,-16.900,1.609e+04 +2025,164.152075,10,414.400,13.500,7.5620,-414.300,-0.900,-9.300,414.300,0.900,-9.300,1.104e+04 +2025,164.171872,10,409.900,19.100,9.4920,-409.700,3.900,-14.200,409.700,-3.900,-14.200,2.210e+04 +2025,164.183553,10,406.300,24.500,11.1650,-405.800,-4.400,-18.100,405.800,4.400,-18.100,3.636e+04 +2025,164.195199,10,405.300,17.400,9.7540,-404.600,-2.600,-25.100,404.600,2.600,-25.100,1.834e+04 +2025,164.198692,10,411.700,23.900,9.6360,-410.900,-5.900,-24.600,410.900,5.900,-24.600,3.460e+04 +2025,164.199857,10,402.900,24.600,7.1000,-402.200,-1.000,-24.100,402.200,1.000,-24.100,3.666e+04 +2025,164.245346,10,422.600,15.600,6.8520,-421.900,-21.700,-8.200,421.900,21.700,-8.200,1.474e+04 +2025,164.358415,10,455.300,39.800,10.4630,-452.400,-49.700,-12.100,452.400,49.700,-12.100,9.595e+04 +2025,164.360744,10,457.900,41.500,9.7140,-455.200,-45.800,-18.700,455.200,45.800,-18.700,1.043e+05 +2025,164.450521,10,424.400,36.300,11.7460,-423.000,-15.900,-30.300,423.000,15.900,-30.300,7.982e+04 +2025,164.457509,10,425.200,33.700,10.7530,-423.800,-22.000,-27.900,423.800,22.000,-27.900,6.879e+04 +2025,164.526289,10,404.300,48.000,11.4720,-403.600,-21.800,-4.600,403.600,21.800,-4.600,1.396e+05 +2025,164.551945,10,392.700,46.000,12.0370,-391.700,14.600,-24.000,391.700,-14.600,-24.000,1.282e+05 +2025,164.555438,10,395.400,46.700,12.0020,-394.900,12.500,-13.900,394.900,-12.500,-13.900,1.321e+05 +2025,164.568284,10,394.200,47.400,13.6630,-393.500,-3.800,-22.700,393.500,3.800,-22.700,1.361e+05 +2025,164.577601,10,398.600,42.400,11.0090,-398.300,-2.100,-15.600,398.300,2.100,-15.600,1.089e+05 +2025,164.639393,10,399.800,41.200,10.5690,-398.100,13.100,-34.800,398.100,-13.100,-34.800,1.028e+05 +2025,164.717525,10,421.100,26.400,20.9700,-420.800,14.200,-5.800,420.800,-14.200,-5.800,4.222e+04 +2025,164.719854,10,420.800,26.500,20.3750,-420.700,9.200,-4.500,420.700,-9.200,-4.500,4.254e+04 +2025,164.722183,10,415.800,25.500,15.9000,-415.500,8.700,-12.700,415.500,-8.700,-12.700,3.939e+04 +2025,164.728006,10,421.800,28.700,10.5710,-421.100,1.800,-23.700,421.100,-1.800,-23.700,4.989e+04 +2025,164.743144,10,412.600,26.500,13.4460,-412.400,1.700,-13.000,412.400,-1.700,-13.000,4.254e+04 +2025,164.770001,10,411.300,24.700,15.4130,-410.900,-9.200,-14.700,410.900,9.200,-14.700,3.696e+04 +2025,164.778153,10,412.200,25.000,15.7300,-411.700,-13.500,-15.700,411.700,13.500,-15.700,3.786e+04 +2025,164.780482,10,411.500,25.100,16.7360,-410.900,-13.000,-16.500,410.900,13.000,-16.500,3.816e+04 +2025,164.781647,10,411.400,26.100,15.9810,-410.900,-12.700,-16.300,410.900,12.700,-16.300,4.126e+04 +2025,164.789798,10,417.900,31.700,17.2070,-417.600,-12.800,-9.900,417.600,12.800,-9.900,6.087e+04 +2025,164.802644,10,416.000,39.400,17.7510,-415.400,-15.700,-14.200,415.400,15.700,-14.200,9.403e+04 +2025,164.811961,10,415.600,41.300,17.2470,-415.100,-15.600,-14.900,415.100,15.600,-14.900,1.033e+05 +2025,164.813125,10,418.300,39.900,15.4360,-417.700,-17.700,-14.800,417.700,17.700,-14.800,9.643e+04 +2025,164.818948,10,418.500,41.600,16.0870,-418.000,-17.000,-13.400,418.000,17.000,-13.400,1.048e+05 +2025,164.828264,10,424.200,39.600,18.4130,-424.100,-9.900,-0.900,424.100,9.900,-0.900,9.499e+04 +2025,164.831758,10,421.500,42.000,16.6090,-421.000,-17.800,-9.400,421.000,17.800,-9.400,1.069e+05 +2025,164.835251,10,426.000,41.900,18.2560,-425.700,-14.900,-4.700,425.700,14.900,-4.700,1.063e+05 +2025,164.849262,10,420.200,39.400,15.3080,-420.100,0.500,-6.200,420.100,-0.500,-6.200,9.403e+04 +2025,164.855084,10,443.400,46.300,19.0880,-443.000,-18.100,3.600,443.000,18.100,3.600,1.299e+05 +2025,164.870260,10,439.200,47.600,19.6470,-439.000,-12.700,4.600,439.000,12.700,4.600,1.372e+05 +2025,164.944862,10,417.800,41.700,13.8300,-415.900,-38.800,6.300,415.900,38.800,6.300,1.053e+05 +2025,164.947191,10,425.000,43.000,14.2440,-422.800,-42.200,9.700,422.800,42.200,9.700,1.120e+05 +2025,165.014807,10,434.400,42.800,21.7600,-430.900,-54.800,6.400,430.900,54.800,6.400,1.110e+05 +2025,165.021794,10,448.300,33.500,21.4830,-445.400,-32.300,39.500,445.400,32.300,39.500,6.798e+04 +2025,165.041627,10,437.500,34.600,20.8880,-433.300,-44.500,40.700,433.300,44.500,40.700,7.252e+04 +2025,165.046285,10,446.100,38.500,24.8590,-441.800,-50.700,34.300,441.800,50.700,34.300,8.979e+04 +2025,165.049779,10,438.400,38.600,23.1770,-434.400,-53.300,25.600,434.400,53.300,25.600,9.025e+04 +2025,165.050943,10,443.500,38.500,26.0520,-440.100,-46.900,29.000,440.100,46.900,29.000,8.979e+04 +2025,165.119760,10,448.400,75.000,15.2030,-447.700,23.300,7.600,447.700,-23.300,7.600,3.407e+05 +2025,165.213030,10,438.100,67.900,12.6510,-438.000,-4.300,-6.600,438.000,4.300,-6.600,2.793e+05 +2025,165.399572,10,512.600,57.600,9.2180,-512.000,24.800,-6.900,512.000,-24.800,-6.900,2.010e+05 +2025,165.401902,10,515.200,57.800,8.8670,-515.100,-0.500,-6.100,515.100,0.500,-6.100,2.024e+05 +2025,165.420534,10,517.800,53.900,8.7640,-515.000,50.300,-20.300,515.000,-50.300,-20.300,1.760e+05 +2025,165.449684,10,516.900,55.500,8.7870,-516.600,19.300,-0.900,516.600,-19.300,-0.900,1.866e+05 +2025,165.462530,10,508.500,53.800,8.1770,-506.100,42.700,-24.300,506.100,-42.700,-24.300,1.753e+05 +2025,165.488186,10,550.700,54.800,7.5730,-546.400,28.200,62.000,546.400,-28.200,62.000,1.819e+05 +2025,165.513805,10,529.500,52.000,7.2680,-528.900,6.100,-23.700,528.900,-6.100,-23.700,1.638e+05 +2025,165.532474,10,517.900,53.600,6.7970,-517.700,8.400,-10.500,517.700,-8.400,-10.500,1.740e+05 +2025,165.534803,10,522.500,52.100,6.5130,-522.300,4.900,-13.500,522.300,-4.900,-13.500,1.644e+05 +2025,165.626910,10,511.900,52.100,5.7380,-510.600,23.900,27.900,510.600,-23.900,27.900,1.644e+05 +2025,165.652566,10,532.100,43.900,5.9190,-531.200,-10.700,-29.000,531.200,10.700,-29.000,1.167e+05 +2025,165.703841,10,503.500,48.500,5.8030,-502.000,6.600,38.000,502.000,-6.600,38.000,1.425e+05 +2025,165.767962,10,515.200,46.000,6.8140,-514.600,-15.600,19.200,514.600,15.600,19.200,1.282e+05 +2025,165.811122,10,497.400,46.000,6.1990,-497.100,-6.300,18.100,497.100,6.300,18.100,1.282e+05 +2025,165.839107,10,503.700,45.700,8.0580,-502.700,3.100,31.500,502.700,-3.100,31.500,1.265e+05 +2025,165.867092,10,496.600,49.100,7.5790,-496.300,-2.500,-17.600,496.300,2.500,-17.600,1.460e+05 +2025,165.937037,10,499.400,44.900,7.3660,-498.700,-3.500,-27.300,498.700,3.500,-27.300,1.221e+05 +2025,165.951011,10,489.300,49.700,7.6050,-488.900,12.700,-17.300,488.900,-12.700,-17.300,1.496e+05 +2025,165.962656,10,520.300,46.800,7.3720,-519.300,2.800,-31.000,519.300,-2.800,-31.000,1.327e+05 +2025,165.967314,10,516.000,44.900,6.8620,-515.000,6.700,-31.800,515.000,-6.700,-31.800,1.221e+05 +2025,166.149235,10,560.800,53.700,5.4010,-560.600,-14.800,-2.300,560.600,14.800,-2.300,1.747e+05 +2025,166.167868,10,537.300,56.100,5.3610,-537.200,-7.900,-6.800,537.200,7.900,-6.800,1.906e+05 +2025,166.173727,10,557.800,52.000,4.9060,-557.100,-8.900,-26.900,557.100,8.900,-26.900,1.638e+05 +2025,166.642376,10,486.300,50.300,4.6060,-485.500,-3.900,-27.300,485.500,3.900,-27.300,1.533e+05 +2025,167.203167,10,464.900,49.500,6.0770,-462.700,-34.400,28.700,462.700,34.400,28.700,1.484e+05 +2025,167.288251,10,478.100,47.300,6.8530,-473.800,-53.500,-34.900,473.800,53.500,-34.900,1.355e+05 +2025,167.547103,10,496.700,59.400,3.7020,-496.400,-13.800,-8.700,496.400,13.800,-8.700,2.137e+05 +2025,167.569229,10,501.400,64.900,4.0560,-501.000,-16.200,8.400,501.000,16.200,8.400,2.551e+05 +2025,167.655513,10,507.400,69.100,4.8970,-506.900,-7.800,-21.600,506.900,7.800,-21.600,2.892e+05 +2025,167.678840,10,499.500,67.000,4.0750,-498.700,-3.000,28.300,498.700,3.000,28.300,2.719e+05 +2025,167.877063,10,555.800,68.700,4.9760,-551.400,69.700,-4.600,551.400,-69.700,-4.600,2.859e+05 +2025,168.025140,10,497.400,56.700,5.0190,-496.200,-24.800,-24.500,496.200,24.800,-24.500,1.947e+05 +2025,168.177839,10,485.600,43.600,5.0090,-485.000,-20.400,14.100,485.000,20.400,14.100,1.151e+05 +2025,168.244289,10,473.900,53.700,6.4250,-473.200,-8.900,-23.900,473.200,8.900,-23.900,1.747e+05 +2025,168.336396,10,500.300,49.400,5.8420,-499.300,-7.400,31.700,499.300,7.400,31.700,1.478e+05 +2025,168.673345,10,472.000,54.500,5.2820,-471.700,1.500,15.900,471.700,-1.500,15.900,1.799e+05 +2025,168.701330,10,481.800,45.300,4.2540,-480.800,-25.800,-17.300,480.800,25.800,-17.300,1.243e+05 +2025,168.947335,10,495.700,54.300,4.7870,-493.100,35.700,35.800,493.100,-35.700,35.800,1.786e+05 +2025,169.067391,10,491.200,41.600,3.5200,-490.100,-30.900,-13.200,490.100,30.900,-13.200,1.048e+05 +2025,169.110551,10,510.700,40.800,3.6110,-509.900,-23.800,15.800,509.900,23.800,15.800,1.008e+05 +2025,169.130384,10,484.700,43.900,4.1600,-484.100,-21.700,12.200,484.100,21.700,12.200,1.167e+05 +2025,169.917347,10,551.800,85.000,2.9740,-551.600,13.400,1.300,551.600,-13.400,1.300,4.376e+05 +2025,169.924334,10,541.500,82.000,3.1110,-541.400,10.300,-2.900,541.400,-10.300,-2.900,4.073e+05 +2025,170.005960,10,558.800,77.300,2.6150,-558.400,-0.900,20.100,558.400,0.900,20.100,3.619e+05 +2025,170.156330,10,540.200,70.700,2.5190,-539.500,-3.000,26.900,539.500,3.000,26.900,3.028e+05 +2025,170.746270,10,555.400,64.600,3.6700,-555.100,17.900,1.900,555.100,-17.900,1.900,2.528e+05 +2025,170.926990,10,523.100,62.900,3.1550,-521.800,-33.900,-12.800,521.800,33.900,-12.800,2.397e+05 +2025,171.076195,10,515.800,65.200,3.9470,-515.100,-1.000,-27.000,515.100,1.000,-27.000,2.575e+05 +2025,171.631166,10,584.700,69.500,2.2810,-580.400,17.700,69.000,580.400,-17.700,69.000,2.926e+05 +2025,171.751258,10,540.900,63.800,2.2930,-537.500,41.100,44.500,537.500,-41.100,44.500,2.466e+05 +2025,171.753587,10,538.500,60.700,2.2590,-535.000,40.400,45.900,535.000,-40.400,45.900,2.232e+05 +2025,172.485780,10,547.700,57.300,3.5450,-544.300,-13.500,59.600,544.300,13.500,59.600,1.989e+05 +2025,172.632656,10,549.800,57.600,3.6960,-547.900,-16.900,42.100,547.900,16.900,42.100,2.010e+05 +2025,172.830879,10,525.600,46.500,3.5780,-524.800,-11.400,-27.400,524.800,11.400,-27.400,1.310e+05 +2025,173.052429,10,535.900,53.900,3.5170,-535.900,-2.700,0.400,535.900,2.700,0.400,1.760e+05 +2025,173.068733,10,536.000,59.700,3.8400,-536.000,5.800,-0.600,536.000,-5.800,-0.600,2.159e+05 +2025,173.094389,10,540.800,55.700,3.9030,-540.600,-3.600,14.400,540.600,3.600,14.400,1.879e+05 +2025,173.264592,10,530.100,59.200,3.7910,-529.900,-5.400,-10.300,529.900,5.400,-10.300,2.123e+05 +2025,173.627196,10,523.400,41.500,2.4640,-521.500,-23.100,-37.700,521.500,23.100,-37.700,1.043e+05 +2025,173.676143,10,482.400,53.400,2.9080,-476.400,59.000,-47.900,476.400,-59.000,-47.900,1.727e+05 +2025,173.993256,10,499.200,39.800,3.2380,-498.100,-30.400,-14.500,498.100,30.400,-14.500,9.595e+04 +2025,174.043404,10,482.900,51.400,3.5630,-478.200,-8.400,-67.000,478.200,8.400,-67.000,1.600e+05 +2025,174.422310,10,463.300,30.300,3.4900,-460.700,-35.600,-33.400,460.700,35.600,-33.400,5.561e+04 +2025,174.509759,10,453.700,29.100,3.8720,-451.900,-32.100,-24.700,451.900,32.100,-24.700,5.129e+04 +2025,174.510923,10,453.200,28.000,4.2110,-451.200,-29.200,-30.800,451.200,29.200,-30.800,4.749e+04 +2025,174.549425,10,441.400,40.100,4.3580,-441.000,-0.400,-18.300,441.000,0.400,-18.300,9.740e+04 +2025,174.583196,10,443.100,40.300,4.5440,-441.800,-16.100,-30.400,441.800,16.100,-30.400,9.838e+04 +2025,174.584361,10,447.400,39.200,4.3580,-446.200,-14.300,-29.500,446.200,14.300,-29.500,9.308e+04 +2025,174.596043,10,440.800,39.800,4.4030,-439.700,-19.200,-24.300,439.700,19.200,-24.300,9.595e+04 +2025,174.603030,10,446.100,45.700,4.4910,-445.400,-13.200,-21.100,445.400,13.200,-21.100,1.265e+05 +2025,174.617040,10,438.100,39.800,4.4320,-437.600,7.200,-19.100,437.600,-7.200,-19.100,9.595e+04 +2025,174.619369,10,464.700,42.500,4.5950,-463.900,-23.700,-12.500,463.900,23.700,-12.500,1.094e+05 +2025,174.631014,10,435.200,39.700,4.1040,-435.000,-10.200,-8.300,435.000,10.200,-8.300,9.547e+04 +2025,174.632179,10,435.700,44.000,4.0200,-435.500,-10.700,-7.700,435.500,10.700,-7.700,1.173e+05 +2025,174.636873,10,435.100,37.200,4.3030,-434.900,-9.500,-8.000,434.900,9.500,-8.000,8.382e+04 +2025,174.640367,10,436.200,38.500,4.6530,-436.100,-7.600,-8.800,436.100,7.600,-8.800,8.979e+04 +2025,174.643860,10,429.000,38.000,4.1060,-428.900,-10.800,1.700,428.900,10.800,1.700,8.747e+04 +2025,174.692843,10,427.600,38.900,4.0110,-427.200,10.900,-15.100,427.200,-10.900,-15.100,9.166e+04 +2025,174.704488,10,425.500,37.500,3.8350,-425.100,-11.000,-14.200,425.100,11.000,-14.200,8.518e+04 +2025,174.793101,10,421.400,39.500,4.5310,-420.900,4.400,-19.800,420.900,-4.400,-19.800,9.451e+04 +2025,174.814062,10,427.200,35.200,3.8490,-425.400,7.400,-37.800,425.400,-7.400,-37.800,7.505e+04 +2025,174.821086,10,429.700,37.200,4.2030,-428.100,-18.800,-32.400,428.100,18.800,-32.400,8.382e+04 +2025,174.879385,10,424.300,39.000,4.6910,-423.800,15.700,-13.800,423.800,-15.700,-13.800,9.213e+04 +2025,174.924838,10,435.500,28.100,4.5550,-432.100,3.700,-54.000,432.100,-3.700,-54.000,4.783e+04 +2025,174.993618,10,419.100,24.600,4.4430,-416.000,-28.800,-41.800,416.000,28.800,-41.800,3.666e+04 +2025,174.995947,10,413.500,22.900,4.7410,-410.600,-25.000,-41.700,410.600,25.000,-41.700,3.177e+04 +2025,175.012286,10,414.600,21.900,4.4690,-411.200,-18.500,-49.500,411.200,18.500,-49.500,2.905e+04 +2025,175.084560,10,407.900,24.500,5.2220,-406.800,-28.800,-5.600,406.800,28.800,-5.600,3.636e+04 +2025,175.093876,10,411.900,24.000,5.4480,-410.700,-32.000,-4.400,410.700,32.000,-4.400,3.489e+04 +2025,175.098534,10,423.300,23.000,4.9800,-421.000,-38.000,-22.800,421.000,38.000,-22.800,3.204e+04 +2025,175.107887,10,433.800,21.200,5.7750,-431.600,-33.100,-28.100,431.600,33.100,-28.100,2.722e+04 +2025,175.128848,10,413.500,23.400,5.2730,-411.600,-33.000,-21.000,411.600,33.000,-21.000,3.317e+04 +2025,175.133506,10,405.500,29.800,5.7730,-405.100,-15.000,-9.900,405.100,15.000,-9.900,5.379e+04 +2025,175.152175,10,410.300,28.100,5.0360,-408.900,-29.400,-14.700,408.900,29.400,-14.700,4.783e+04 +2025,175.156833,10,413.000,25.100,5.4900,-411.100,-31.000,-24.500,411.100,31.000,-24.500,3.816e+04 +2025,175.166186,10,406.800,27.300,5.9470,-405.900,-27.300,-2.700,405.900,27.300,-2.700,4.515e+04 +2025,175.177831,10,417.400,26.600,5.8970,-414.700,-34.200,-31.900,414.700,34.200,-31.900,4.286e+04 +2025,175.196500,10,405.000,21.700,5.5360,-401.000,-15.600,-54.800,401.000,15.600,-54.800,2.852e+04 +2025,175.202323,10,402.400,22.700,5.3450,-399.100,-25.400,-45.000,399.100,25.400,-45.000,3.121e+04 +2025,175.216297,10,425.200,26.200,6.9830,-423.500,-36.000,-13.600,423.500,36.000,-13.600,4.158e+04 +2025,175.226778,10,425.700,24.300,6.4310,-423.600,-37.000,-21.500,423.600,37.000,-21.500,3.577e+04 +2025,175.231436,10,428.500,22.300,6.3880,-426.400,-33.300,-26.800,426.400,33.300,-26.800,3.012e+04 +2025,175.248940,10,419.500,27.600,7.4910,-418.300,-19.900,-23.700,418.300,19.900,-23.700,4.614e+04 +2025,175.252434,10,407.300,24.600,7.1420,-406.000,-21.700,-25.100,406.000,21.700,-25.100,3.666e+04 +2025,175.257092,10,430.100,29.600,10.3150,-429.700,-10.400,-17.200,429.700,10.400,-17.200,5.307e+04 +2025,175.260622,10,432.100,28.600,12.9880,-431.700,-6.400,-15.300,431.700,6.400,-15.300,4.955e+04 +2025,175.266444,10,434.500,23.700,14.0410,-434.100,1.300,-18.000,434.100,-1.300,-18.000,3.402e+04 +2025,175.267609,10,434.800,23.700,14.2890,-434.500,-0.000,-17.400,434.500,0.000,-17.400,3.402e+04 +2025,175.268773,10,434.100,23.500,14.2210,-433.700,-1.700,-17.400,433.700,1.700,-17.400,3.345e+04 +2025,175.311897,10,432.800,21.800,14.8120,-432.400,0.500,-17.400,432.400,-0.500,-17.400,2.879e+04 +2025,175.320049,10,430.500,21.800,14.1870,-430.100,-0.100,-17.900,430.100,0.100,-17.900,2.879e+04 +2025,175.331731,10,424.500,22.300,14.5560,-423.800,-1.000,-23.700,423.800,1.000,-23.700,3.012e+04 +2025,175.339882,10,426.400,23.800,15.8100,-425.800,-1.300,-21.900,425.800,1.300,-21.900,3.431e+04 +2025,175.360880,10,421.800,23.700,15.8550,-421.100,-5.200,-23.900,421.100,5.200,-23.900,3.402e+04 +2025,175.370196,10,417.200,23.600,15.8860,-416.900,0.200,-17.500,416.900,-0.200,-17.500,3.374e+04 +2025,175.381842,10,423.900,23.400,18.1710,-423.600,-2.700,-16.500,423.600,2.700,-16.500,3.317e+04 +2025,175.401675,10,424.400,22.300,19.0090,-424.000,-3.600,-18.400,424.000,3.600,-18.400,3.012e+04 +2025,175.428495,10,427.000,22.400,18.3540,-426.400,-10.200,-19.500,426.400,10.200,-19.500,3.039e+04 +2025,175.429660,10,424.600,24.500,19.4020,-424.000,-8.600,-21.400,424.000,8.600,-21.400,3.636e+04 +2025,175.437812,10,422.000,24.600,19.6610,-421.400,-6.400,-22.700,421.400,6.400,-22.700,3.666e+04 +2025,175.464632,10,427.300,31.700,9.6450,-426.500,-5.500,-24.800,426.500,5.500,-24.800,6.087e+04 +2025,175.478607,10,431.500,35.300,9.6480,-430.400,-9.200,-29.000,430.400,9.200,-29.000,7.548e+04 +2025,175.484466,10,425.200,35.100,10.7720,-424.400,-6.300,-25.300,424.400,6.300,-25.300,7.463e+04 +2025,175.490288,10,428.200,33.900,11.0230,-427.300,-6.800,-26.300,427.300,6.800,-26.300,6.961e+04 +2025,175.510122,10,430.700,36.300,10.0770,-429.600,-16.500,-26.600,429.600,16.500,-26.600,7.982e+04 +2025,175.531083,10,433.600,38.400,9.4610,-432.400,-6.700,-31.100,432.400,6.700,-31.100,8.932e+04 +2025,175.546222,10,433.900,36.500,9.1220,-432.900,-13.900,-27.200,432.900,13.900,-27.200,8.070e+04 +2025,175.585889,10,444.900,37.800,9.2980,-443.200,-17.300,-35.200,443.200,17.300,-35.200,8.655e+04 +2025,175.587053,10,443.100,38.000,10.6370,-441.500,-18.400,-32.800,441.500,18.400,-32.800,8.747e+04 +2025,175.643023,10,436.300,39.900,8.2170,-435.000,-13.200,-30.900,435.000,13.200,-30.900,9.643e+04 +2025,175.647681,10,437.200,39.500,8.0410,-435.700,-4.500,-35.600,435.700,4.500,-35.600,9.451e+04 +2025,175.652339,10,437.500,40.000,8.4560,-435.300,-26.300,-34.400,435.300,26.300,-34.400,9.692e+04 +2025,175.672173,10,441.300,36.300,9.0460,-439.500,-4.600,-39.700,439.500,4.600,-39.700,7.982e+04 +2025,175.675666,10,443.700,38.300,9.0010,-441.900,-4.800,-39.500,441.900,4.800,-39.500,8.886e+04 +2025,175.680325,10,440.200,33.800,8.3700,-437.900,2.800,-44.800,437.900,-2.800,-44.800,6.920e+04 +2025,175.681489,10,441.700,35.300,8.6870,-439.500,3.600,-43.800,439.500,-3.600,-43.800,7.548e+04 +2025,175.696628,10,452.000,42.000,9.9170,-450.900,15.400,-26.900,450.900,-15.400,-26.900,1.069e+05 +2025,175.736258,10,445.400,40.800,8.9250,-444.500,10.300,-27.900,444.500,-10.300,-27.900,1.008e+05 +2025,175.750269,10,453.400,39.800,9.0590,-452.000,0.300,-35.100,452.000,-0.300,-35.100,9.595e+04 +2025,175.754927,10,449.400,42.400,9.4990,-448.200,2.800,-32.200,448.200,-2.800,-32.200,1.089e+05 +2025,175.757256,10,447.700,42.600,9.8150,-446.700,0.400,-30.000,446.700,-0.400,-30.000,1.099e+05 +2025,175.781748,10,456.300,42.100,9.4300,-455.500,-15.200,-22.400,455.500,15.200,-22.400,1.074e+05 +2025,175.782912,10,454.500,43.200,9.6250,-454.000,-12.300,-17.200,454.000,12.300,-17.200,1.130e+05 +2025,175.795722,10,456.500,43.100,9.3980,-455.600,-13.500,-23.500,455.600,13.500,-23.500,1.125e+05 +2025,175.814391,10,458.300,41.100,8.5400,-458.100,-2.100,-12.800,458.100,2.100,-12.800,1.023e+05 +2025,175.827237,10,455.500,38.900,8.4450,-455.400,2.000,-7.500,455.400,-2.000,-7.500,9.166e+04 +2025,175.834224,10,456.300,38.300,8.3590,-456.100,0.800,-13.500,456.100,-0.800,-13.500,8.886e+04 +2025,175.836553,10,458.600,42.800,8.7360,-458.400,-1.300,-12.700,458.400,1.300,-12.700,1.110e+05 +2025,175.848198,10,453.900,40.100,7.5440,-453.700,-0.500,-12.600,453.700,0.500,-12.600,9.740e+04 +2025,175.852856,10,455.500,40.300,8.0940,-455.500,-0.100,-7.300,455.500,0.100,-7.300,9.838e+04 +2025,175.875019,10,440.800,43.300,7.7660,-440.200,1.200,-22.300,440.200,-1.200,-22.300,1.136e+05 +2025,175.879677,10,438.400,45.000,6.2630,-437.500,-0.600,-29.200,437.500,0.600,-29.200,1.227e+05 +2025,175.898345,10,439.600,41.400,6.2790,-439.100,-7.800,-20.200,439.100,7.800,-20.200,1.038e+05 +2025,175.920471,10,446.200,42.800,7.0040,-445.500,1.700,-24.500,445.500,-1.700,-24.500,1.110e+05 +2025,175.925166,10,441.900,40.800,7.1280,-441.000,3.600,-28.400,441.000,-3.600,-28.400,1.008e+05 +2025,176.418340,10,409.000,23.400,8.0800,-407.000,-36.900,-17.700,407.000,36.900,-17.700,3.317e+04 +2025,176.432351,10,408.500,23.400,8.3290,-406.300,-41.400,-8.300,406.300,41.400,-8.300,3.317e+04 +2025,176.437009,10,409.200,25.200,8.2310,-407.000,-38.800,-17.100,407.000,38.800,-17.100,3.847e+04 +2025,176.440503,10,409.900,24.700,8.1800,-407.600,-38.700,-18.900,407.600,38.700,-18.900,3.696e+04 +2025,176.442832,10,411.200,24.400,8.3290,-408.700,-42.400,-16.600,408.700,42.400,-16.600,3.606e+04 +2025,176.478968,10,422.300,31.100,10.2410,-418.900,-41.000,-33.100,418.900,41.000,-33.100,5.859e+04 +2025,176.480133,10,418.000,31.800,10.1600,-414.600,-41.500,-33.100,414.600,41.500,-33.100,6.125e+04 +2025,176.666675,10,444.100,33.500,16.9360,-438.800,-67.600,-6.400,438.800,67.600,-6.400,6.798e+04 +2025,176.710964,10,420.700,34.200,17.6730,-415.900,-61.400,-14.400,415.900,61.400,-14.400,7.085e+04 +2025,176.719115,10,415.900,35.600,14.4610,-411.200,-62.100,-5.300,411.200,62.100,-5.300,7.677e+04 +2025,176.723773,10,423.200,37.700,13.2700,-419.000,-57.500,-14.500,419.000,57.500,-14.500,8.609e+04 +2025,176.730761,10,429.000,37.400,16.0030,-424.300,-59.800,-20.900,424.300,59.800,-20.900,8.473e+04 +2025,176.921998,10,564.600,92.200,10.3790,-563.800,30.300,-7.400,563.800,-30.300,-7.400,5.149e+05 +2025,176.982626,10,597.700,79.800,11.2430,-592.800,45.700,60.700,592.800,-45.700,60.700,3.857e+05 +2025,177.530172,10,711.900,96.500,3.9110,-705.500,40.700,86.400,705.500,-40.700,86.400,5.641e+05 +2025,177.531336,10,753.200,75.300,3.2050,-743.600,41.200,112.500,743.600,-41.200,112.500,3.435e+05 +2025,177.597059,10,669.000,91.500,3.7240,-657.800,116.400,-36.500,657.800,-116.400,-36.500,5.071e+05 +2025,177.600553,10,696.300,80.000,3.5740,-694.800,33.300,-29.600,694.800,-33.300,-29.600,3.877e+05 +2025,177.642839,10,729.100,83.600,3.9330,-720.900,56.000,93.800,720.900,-56.000,93.800,4.233e+05 +2025,177.649754,10,704.800,78.400,4.6160,-696.000,85.000,-70.900,696.000,-85.000,-70.900,3.723e+05 +2025,177.907513,10,713.600,66.300,3.6700,-712.600,2.100,-37.900,712.600,-2.100,-37.900,2.663e+05 +2025,177.919995,10,729.000,70.500,3.7630,-724.600,42.500,-67.700,724.600,-42.500,-67.700,3.011e+05 +2025,177.943868,10,736.200,77.600,4.0470,-734.600,29.900,37.600,734.600,-29.900,37.600,3.648e+05 +2025,177.958607,10,733.300,76.200,3.6410,-728.600,59.800,-57.200,728.600,-59.800,-57.200,3.517e+05 +2025,178.008499,10,728.000,71.700,3.2180,-724.400,12.400,-71.600,724.400,-12.400,-71.600,3.114e+05 +2025,178.010719,10,723.500,84.100,3.3210,-720.200,53.900,-43.800,720.200,-53.900,-43.800,4.284e+05 +2025,178.016396,10,747.300,77.100,3.0800,-745.700,29.000,40.900,745.700,-29.000,40.900,3.601e+05 +2025,178.017524,10,747.600,73.700,2.8580,-745.800,34.800,38.800,745.800,-34.800,38.800,3.290e+05 +2025,178.023129,10,771.800,88.200,2.8620,-769.400,42.300,-44.000,769.400,-42.300,-44.000,4.712e+05 +2025,178.025421,10,716.900,74.300,2.8000,-715.600,35.700,24.200,715.600,-35.700,24.200,3.344e+05 +2025,178.119639,10,731.100,64.400,2.8860,-731.000,-1.300,-8.400,731.000,1.300,-8.400,2.512e+05 +2025,178.129792,10,726.300,60.900,2.7310,-725.300,34.500,13.400,725.300,-34.500,13.400,2.247e+05 +2025,178.142202,10,735.700,67.800,2.8050,-733.200,54.500,26.200,733.200,-54.500,26.200,2.784e+05 +2025,178.147842,10,724.100,60.300,2.7230,-722.900,36.700,21.600,722.900,-36.700,21.600,2.203e+05 +2025,178.159196,10,742.800,59.500,2.5110,-741.700,-16.000,-37.800,741.700,16.000,-37.800,2.144e+05 +2025,178.168258,10,717.100,65.600,2.7810,-714.100,64.700,9.900,714.100,-64.700,9.900,2.607e+05 +2025,178.189729,10,726.500,60.400,2.4450,-724.900,-7.000,-46.800,724.900,7.000,-46.800,2.210e+05 +2025,178.190857,10,719.100,60.700,2.3970,-719.000,-4.600,-15.900,719.000,4.600,-15.900,2.232e+05 +2025,178.228231,10,738.400,62.400,2.5550,-732.300,69.100,-64.600,732.300,-69.100,-64.600,2.359e+05 +2025,178.240677,10,746.400,62.600,2.7240,-744.400,2.900,-55.300,744.400,-2.900,-55.300,2.374e+05 +2025,178.289259,10,722.000,62.700,2.7060,-721.900,-1.000,8.200,721.900,1.000,8.200,2.381e+05 +2025,178.924325,10,704.300,53.400,1.8180,-703.800,-5.800,-25.600,703.800,5.800,-25.600,1.727e+05 +2025,179.053624,10,651.800,50.700,1.9320,-651.700,12.300,5.800,651.700,-12.300,5.800,1.557e+05 +2025,179.059446,10,647.600,49.800,1.9690,-647.400,15.100,-0.400,647.400,-15.100,-0.400,1.502e+05 +2025,179.064105,10,641.600,47.800,1.8640,-641.300,17.300,2.400,641.300,-17.300,2.400,1.384e+05 +2025,179.090925,10,634.000,52.200,1.7090,-633.600,6.900,19.400,633.600,-6.900,19.400,1.651e+05 +2025,179.094419,10,659.400,58.100,2.2810,-657.900,39.000,21.100,657.900,-39.000,21.100,2.045e+05 +2025,179.355564,10,621.500,55.800,2.9630,-619.500,48.900,-4.800,619.500,-48.900,-4.800,1.886e+05 +2025,179.370739,10,617.500,50.700,2.9060,-615.500,49.300,1.500,615.500,-49.300,1.500,1.557e+05 +2025,179.417356,10,641.000,53.000,3.1740,-640.800,-10.800,-12.500,640.800,10.800,-12.500,1.702e+05 +2025,179.422051,10,635.900,52.300,2.9670,-634.900,25.000,-26.200,634.900,-25.000,-26.200,1.657e+05 +2025,179.436025,10,626.300,55.000,3.2000,-625.800,16.100,-18.300,625.800,-16.100,-18.300,1.832e+05 +2025,179.441848,10,620.800,56.300,2.6870,-620.600,16.600,-2.600,620.600,-16.600,-2.600,1.920e+05 +2025,179.453529,10,612.400,54.900,2.7090,-611.800,22.000,-16.500,611.800,-22.000,-16.500,1.826e+05 +2025,179.466339,10,630.500,55.900,2.9080,-630.300,1.300,-13.500,630.300,-1.300,-13.500,1.893e+05 +2025,179.519980,10,645.700,58.200,2.5860,-645.600,-4.200,-4.600,645.600,4.200,-4.600,2.052e+05 +2025,179.532790,10,635.200,50.800,2.5470,-634.800,-19.800,9.900,634.800,19.800,9.900,1.563e+05 +2025,179.558410,10,601.400,50.900,2.6490,-601.400,-7.300,6.200,601.400,7.300,6.200,1.569e+05 +2025,179.563068,10,608.500,48.000,2.7810,-608.200,-17.600,2.500,608.200,17.600,2.500,1.396e+05 +2025,179.607429,10,596.300,46.800,2.7450,-596.100,-12.000,-7.900,596.100,12.000,-7.900,1.327e+05 +2025,179.615580,10,594.500,44.100,2.7460,-594.300,-14.100,7.400,594.300,14.100,7.400,1.178e+05 +2025,179.617909,10,604.900,45.100,2.9020,-604.500,-16.800,12.400,604.500,16.800,12.400,1.232e+05 +2025,179.626061,10,618.200,46.900,3.0200,-617.700,-23.800,10.000,617.700,23.800,10.000,1.332e+05 +2025,179.634249,10,612.100,44.700,2.8460,-610.400,1.800,45.300,610.400,-1.800,45.300,1.210e+05 +2025,179.644730,10,608.200,41.900,2.6070,-607.600,-25.700,6.200,607.600,25.700,6.200,1.063e+05 +2025,179.649388,10,615.900,44.600,2.5800,-615.300,-23.800,11.100,615.300,23.800,11.100,1.205e+05 +2025,179.654046,10,590.200,43.200,2.7250,-589.900,-13.500,11.800,589.900,13.500,11.800,1.130e+05 +2025,179.700663,10,575.300,48.600,2.4240,-573.400,14.300,44.800,573.400,-14.300,44.800,1.431e+05 +2025,179.708851,10,580.900,43.400,2.7150,-580.800,-10.200,2.100,580.800,10.200,2.100,1.141e+05 +2025,179.722825,10,607.700,42.800,2.4900,-607.200,-18.900,17.000,607.200,18.900,17.000,1.110e+05 +2025,179.744987,10,588.300,44.600,2.8040,-587.600,-10.200,28.800,587.600,10.200,28.800,1.205e+05 +2025,179.762491,10,582.600,42.800,2.3310,-582.200,-17.800,-6.600,582.200,17.800,-6.600,1.110e+05 +2025,179.798628,10,647.400,47.200,2.3180,-647.200,-10.800,13.500,647.200,10.800,13.500,1.349e+05 +2025,179.819626,10,609.200,45.600,2.2180,-608.700,-21.800,7.500,608.700,21.800,7.500,1.260e+05 +2025,179.820790,10,614.000,42.600,2.1000,-613.400,-24.000,10.100,613.400,24.000,10.100,1.099e+05 +2025,179.827778,10,590.900,43.300,2.2320,-590.500,-16.400,16.800,590.500,16.400,16.800,1.136e+05 +2025,179.835929,10,585.700,41.200,2.1900,-584.500,-7.500,36.000,584.500,7.500,36.000,1.028e+05 +2025,179.875559,10,575.800,40.900,2.2640,-574.400,40.100,-1.300,574.400,-40.100,-1.300,1.013e+05 +2025,179.909367,10,610.100,47.400,2.6220,-609.600,-12.700,21.800,609.600,12.700,21.800,1.361e+05 +2025,179.911733,10,599.000,48.200,2.6780,-598.600,-15.400,13.100,598.600,15.400,13.100,1.407e+05 +2025,179.953655,10,588.500,42.600,2.3350,-588.200,-18.200,-4.400,588.200,18.200,-4.400,1.099e+05 +2025,179.974690,10,578.100,42.700,2.5240,-577.500,-18.900,18.700,577.500,18.900,18.700,1.104e+05 +2025,179.979348,10,576.800,42.600,2.4800,-576.100,-20.600,18.900,576.100,20.600,18.900,1.099e+05 +2025,180.020142,10,588.700,47.600,2.5680,-588.300,-20.200,8.600,588.300,20.200,8.600,1.372e+05 +2025,180.021343,10,576.500,49.200,2.6200,-576.000,-5.000,23.400,576.000,5.000,23.400,1.466e+05 +2025,180.030659,10,560.700,38.500,2.3350,-560.300,-21.200,4.600,560.300,21.200,4.600,8.979e+04 +2025,180.035317,10,569.400,42.100,2.5550,-569.000,-22.000,0.800,569.000,22.000,0.800,1.074e+05 +2025,180.057443,10,554.600,42.400,2.5370,-554.200,-20.300,-1.100,554.200,20.300,-1.100,1.089e+05 +2025,180.060937,10,557.900,46.000,2.7720,-557.800,-11.200,4.200,557.800,11.200,4.200,1.282e+05 +2025,180.069088,10,575.300,43.900,2.6140,-574.800,-19.900,-12.000,574.800,19.900,-12.000,1.167e+05 +2025,180.118071,10,565.300,39.100,2.6390,-564.800,-12.800,-18.700,564.800,12.800,-18.700,9.261e+04 +2025,180.122765,10,572.600,43.500,2.7160,-571.800,-22.700,20.500,571.800,22.700,20.500,1.146e+05 +2025,180.155372,10,535.600,33.800,1.8060,-535.300,19.400,-3.900,535.300,-19.400,-3.900,6.920e+04 +2025,180.158865,10,537.000,32.400,2.1500,-536.700,14.800,-10.300,536.700,-14.800,-10.300,6.359e+04 +2025,180.183393,10,530.800,30.900,2.1990,-530.600,15.100,1.900,530.600,-15.100,1.900,5.784e+04 +2025,180.186887,10,532.000,33.400,1.8750,-531.900,12.700,1.500,531.900,-12.700,1.500,6.757e+04 +2025,180.202025,10,533.400,34.600,2.0220,-533.400,3.700,2.800,533.400,-3.700,2.800,7.252e+04 +2025,180.212543,10,535.700,31.900,1.9870,-535.400,-17.800,6.500,535.400,17.800,6.500,6.164e+04 +2025,180.241692,10,541.000,30.700,1.5810,-540.700,-14.100,-12.100,540.700,14.100,-12.100,5.709e+04 +2025,180.275463,10,536.200,33.400,1.5520,-536.100,-8.500,-0.700,536.100,8.500,-0.700,6.757e+04 +2025,180.282487,10,544.100,32.100,1.3200,-544.000,2.000,-10.100,544.000,-2.000,-10.100,6.242e+04 +2025,180.298790,10,538.900,33.200,1.4610,-538.700,8.300,-11.100,538.700,-8.300,-11.100,6.677e+04 +2025,180.299955,10,535.600,30.600,1.5500,-535.400,6.300,-10.700,535.400,-6.300,-10.700,5.672e+04 +2025,180.312801,10,533.100,28.900,1.5300,-533.000,2.100,-12.600,533.000,-2.100,-12.600,5.059e+04 +2025,180.316294,10,533.700,32.200,1.5300,-533.400,-2.800,-16.500,533.400,2.800,-16.500,6.281e+04 +2025,180.324446,10,528.600,32.200,1.4010,-528.500,-2.500,-5.800,528.500,2.500,-5.800,6.281e+04 +2025,180.326775,10,529.500,30.000,1.4280,-529.400,-7.500,-6.500,529.400,7.500,-6.500,5.452e+04 +2025,180.330269,10,524.200,30.600,1.4700,-524.200,2.900,1.300,524.200,-2.900,1.300,5.672e+04 +2025,180.368771,10,519.600,26.900,1.5630,-519.300,9.100,-13.600,519.300,-9.100,-13.600,4.383e+04 +2025,180.387403,10,532.300,27.700,1.3750,-531.500,16.500,-25.400,531.500,-16.500,-25.400,4.648e+04 +2025,180.407237,10,545.700,26.300,1.6020,-543.800,-44.200,-11.800,543.800,44.200,-11.800,4.190e+04 +2025,181.203552,10,502.900,40.100,3.0940,-499.700,42.700,-37.600,499.700,-42.700,-37.600,9.740e+04 +2025,181.271168,10,472.100,52.500,3.2170,-470.200,-20.800,-36.800,470.200,20.800,-36.800,1.670e+05 +2025,181.281648,10,477.400,54.200,3.7050,-476.200,16.100,-30.900,476.200,-16.100,-30.900,1.779e+05 +2025,181.349264,10,497.500,50.600,3.9560,-495.800,13.200,-39.200,495.800,-13.200,-39.200,1.551e+05 +2025,181.350428,10,504.900,49.300,3.6740,-503.300,18.600,-34.700,503.300,-18.600,-34.700,1.472e+05 +2025,181.351593,10,495.100,48.700,2.9840,-494.000,16.700,-29.100,494.000,-16.700,-29.100,1.437e+05 +2025,181.369097,10,518.800,48.200,3.4510,-517.100,-8.000,-41.200,517.100,8.000,-41.200,1.407e+05 +2025,181.456546,10,460.700,47.300,3.4760,-460.500,-8.700,-10.200,460.500,8.700,-10.200,1.355e+05 +2025,181.507821,10,487.500,52.500,4.2600,-485.700,-41.200,-8.800,485.700,41.200,-8.800,1.670e+05 +2025,181.515973,10,476.100,51.200,4.2740,-474.500,-38.600,2.500,474.500,38.600,2.500,1.588e+05 +2025,181.542793,10,480.300,49.900,4.1400,-478.600,-39.600,7.400,478.600,39.600,7.400,1.508e+05 +2025,181.546323,10,485.500,51.200,3.9960,-483.900,-38.400,-0.100,483.900,38.400,-0.100,1.588e+05 +2025,181.547488,10,481.200,51.900,4.2280,-480.000,-33.600,5.200,480.000,33.600,5.200,1.632e+05 +2025,181.548652,10,475.700,51.300,4.3420,-473.900,-40.200,-4.000,473.900,40.200,-4.000,1.594e+05 +2025,181.552146,10,479.700,51.700,4.3690,-478.500,-29.900,15.500,478.500,29.900,15.500,1.619e+05 +2025,181.594105,10,505.700,56.200,4.2900,-503.200,31.800,-39.400,503.200,-31.800,-39.400,1.913e+05 +2025,181.721183,10,502.200,57.300,4.0570,-502.200,-3.200,5.800,502.200,3.200,5.800,1.989e+05 +2025,181.767836,10,503.800,78.800,2.9860,-503.300,14.300,17.800,503.300,-14.300,17.800,3.761e+05 +2025,181.775988,10,495.900,78.800,3.1350,-495.600,5.900,15.300,495.600,-5.900,15.300,3.761e+05 +2025,181.781811,10,502.600,77.400,3.1930,-502.600,-2.700,3.100,502.600,2.700,3.100,3.629e+05 +2025,181.808631,10,502.400,75.900,3.3160,-502.300,-1.100,7.900,502.300,1.100,7.900,3.490e+05 +2025,182.041827,10,539.900,64.800,4.2240,-538.800,16.100,-29.200,538.800,-16.100,-29.200,2.544e+05 +2025,182.077964,10,519.700,71.600,4.3440,-517.600,47.100,2.700,517.600,-47.100,2.700,3.105e+05 +2025,182.132733,10,543.700,75.700,3.8460,-543.100,6.500,-23.500,543.100,-6.500,-23.500,3.471e+05 +2025,182.142049,10,521.200,73.300,3.4220,-520.800,6.400,-20.700,520.800,-6.400,-20.700,3.255e+05 +2025,182.154895,10,523.200,69.800,3.2870,-522.200,-5.200,-30.900,522.200,5.200,-30.900,2.951e+05 +2025,182.284339,10,507.000,55.100,2.6090,-505.400,38.600,-9.700,505.400,-38.600,-9.700,1.839e+05 +2025,182.610770,10,458.000,52.000,2.2200,-457.900,-10.300,3.900,457.900,10.300,3.900,1.638e+05 +2025,182.777479,10,465.500,47.600,2.1100,-464.600,-27.400,-8.000,464.600,27.400,-8.000,1.372e+05 +2025,182.838107,10,484.200,40.100,2.1290,-483.200,-30.300,7.600,483.200,30.300,7.600,9.740e+04 +2025,182.845094,10,477.700,40.800,2.0150,-476.400,-35.300,-6.900,476.400,35.300,-6.900,1.008e+05 +2025,182.982690,10,442.000,36.500,2.8430,-441.900,-12.300,-3.700,441.900,12.300,-3.700,8.070e+04 +2025,183.034002,10,419.100,29.300,2.7380,-418.200,-28.000,-5.600,418.200,28.000,-5.600,5.200e+04 +2025,183.088771,10,408.400,29.400,3.1350,-406.800,-27.600,-22.900,406.800,27.600,-22.900,5.236e+04 +2025,183.123743,10,408.800,35.200,4.9350,-408.100,-23.800,-3.900,408.100,23.800,-3.900,7.505e+04 +2025,183.131931,10,408.800,31.500,6.0130,-408.100,-22.900,-2.400,408.100,22.900,-2.400,6.010e+04 +2025,183.154094,10,412.200,26.200,5.7860,-411.800,-18.300,-2.900,411.800,18.300,-2.900,4.158e+04 +2025,183.191395,10,397.600,25.800,4.0930,-396.100,-35.100,-3.600,396.100,35.100,-3.600,4.032e+04 +2025,183.203040,10,395.800,24.300,4.1260,-394.700,-29.100,0.700,394.700,29.100,0.700,3.577e+04 +2025,183.222874,10,387.500,23.200,3.9080,-386.600,-23.300,-11.900,386.600,23.300,-11.900,3.260e+04 +2025,183.292818,10,406.600,24.400,7.6230,-406.500,-9.700,1.700,406.500,9.700,1.700,3.606e+04 +2025,183.297476,10,406.400,23.300,8.5080,-406.300,-7.000,3.500,406.300,7.000,3.500,3.288e+04 +2025,183.327790,10,405.600,22.300,9.0580,-405.600,-6.200,2.800,405.600,6.200,2.800,3.012e+04 +2025,183.344094,10,388.400,24.700,4.9000,-387.700,-21.700,-10.600,387.700,21.700,-10.600,3.696e+04 +2025,183.373243,10,375.100,23.200,4.6860,-374.400,-11.900,-18.600,374.400,11.900,-18.600,3.260e+04 +2025,183.379102,10,380.900,26.000,5.5610,-380.500,-8.400,-15.400,380.500,8.400,-15.400,4.095e+04 +2025,183.384925,10,384.800,24.700,7.0940,-384.700,-1.600,-8.800,384.700,1.600,-8.800,3.696e+04 +2025,183.416403,10,382.100,22.500,8.2040,-382.100,-3.200,-3.300,382.100,3.200,-3.300,3.067e+04 +2025,183.445517,10,388.300,19.500,10.4120,-388.300,-6.000,-3.200,388.300,6.000,-3.200,2.303e+04 +2025,183.465350,10,388.300,21.900,9.3470,-388.200,-11.500,-0.100,388.200,11.500,-0.100,2.905e+04 +2025,183.502651,10,377.500,22.800,9.1510,-377.400,-11.800,0.200,377.400,11.800,0.200,3.149e+04 +2025,183.525978,10,375.400,19.800,10.9090,-375.000,-17.100,-2.600,375.000,17.100,-2.600,2.375e+04 +2025,183.527143,10,375.000,19.700,12.3050,-374.700,-15.300,-0.900,374.700,15.300,-0.900,2.351e+04 +2025,183.530636,10,379.900,22.200,9.9110,-379.500,-18.000,0.200,379.500,18.000,0.200,2.985e+04 +2025,183.542318,10,379.600,23.400,9.4020,-379.100,-18.900,3.000,379.100,18.900,3.000,3.317e+04 +2025,183.543482,10,379.700,21.900,8.8540,-379.400,-16.400,5.000,379.400,16.400,5.000,2.905e+04 +2025,183.549305,10,382.700,22.200,9.8670,-382.200,-18.100,4.600,382.200,18.100,4.600,2.985e+04 +2025,183.569138,10,383.900,21.100,11.8670,-383.500,-17.200,2.700,383.500,17.200,2.700,2.697e+04 +2025,183.570303,10,379.600,19.500,11.8870,-379.200,-16.400,1.000,379.200,16.400,1.000,2.303e+04 +2025,183.601745,10,367.400,17.400,12.1620,-367.000,-15.400,-0.500,367.000,15.400,-0.500,1.834e+04 +2025,183.604074,10,368.400,17.600,13.1870,-368.000,-16.100,3.000,368.000,16.100,3.000,1.876e+04 +2025,183.614591,10,361.900,15.900,12.4870,-361.300,-20.800,4.600,361.300,20.800,4.600,1.531e+04 +2025,183.620413,10,361.500,13.800,15.9390,-360.800,-22.200,6.900,360.800,22.200,6.900,1.154e+04 +2025,183.623907,10,358.400,16.500,16.4440,-357.400,-25.500,9.400,357.400,25.500,9.400,1.649e+04 +2025,183.627400,10,358.500,17.200,17.2860,-357.600,-24.700,5.800,357.600,24.700,5.800,1.792e+04 +2025,183.662409,10,357.900,11.500,13.4690,-356.900,-27.600,0.500,356.900,27.600,0.500,8.011e+03 +2025,183.700838,10,349.800,16.000,13.3300,-348.800,-26.900,0.800,348.800,26.900,0.800,1.551e+04 +2025,183.714849,10,354.800,19.400,15.8580,-353.800,-27.100,6.300,353.800,27.100,6.300,2.280e+04 +2025,183.723037,10,355.600,15.200,17.0420,-354.500,-27.900,4.800,354.500,27.900,4.800,1.399e+04 +2025,183.728859,10,354.000,13.300,16.6210,-353.200,-23.900,4.200,353.200,23.900,4.200,1.071e+04 +2025,183.753351,10,351.700,15.800,17.1890,-350.800,-24.500,4.700,350.800,24.500,4.700,1.512e+04 +2025,183.767361,10,352.300,16.200,17.1300,-351.500,-24.000,5.700,351.500,24.000,5.700,1.590e+04 +2025,183.797639,10,347.100,19.700,16.9650,-346.100,-26.700,5.700,346.100,26.700,5.700,2.351e+04 +2025,183.801132,10,351.200,20.000,16.3160,-350.100,-27.500,7.400,350.100,27.500,7.400,2.423e+04 +2025,183.811613,10,352.800,19.500,13.8800,-351.300,-29.500,12.500,351.300,29.500,12.500,2.303e+04 +2025,183.819801,10,351.600,19.000,14.8060,-350.500,-25.200,12.400,350.500,25.200,12.400,2.187e+04 +2025,183.850115,10,352.800,16.400,15.5160,-351.500,-29.900,-1.300,351.500,29.900,-1.300,1.629e+04 +2025,183.858267,10,346.400,13.700,17.2980,-345.000,-31.100,-1.300,345.000,31.100,-1.300,1.137e+04 +2025,183.862925,10,348.100,13.800,16.4900,-346.700,-31.500,1.500,346.700,31.500,1.500,1.154e+04 +2025,183.873406,10,348.200,14.100,19.0200,-346.900,-30.500,-3.000,346.900,30.500,-3.000,1.204e+04 +2025,183.886216,10,344.300,15.200,21.5770,-343.500,-21.700,-8.600,343.500,21.700,-8.600,1.399e+04 +2025,183.892075,10,351.500,16.200,22.3040,-349.900,-33.400,-2.700,349.900,33.400,-2.700,1.590e+04 +2025,183.902592,10,353.100,17.100,25.1880,-351.800,-30.100,-5.500,351.800,30.100,-5.500,1.771e+04 +2025,183.906085,10,353.300,18.800,22.4830,-352.500,-23.200,-4.700,352.500,23.200,-4.700,2.141e+04 +2025,183.920060,10,353.300,18.500,29.8140,-351.800,-28.400,-14.000,351.800,28.400,-14.000,2.073e+04 +2025,183.946880,10,354.300,17.700,25.9320,-353.400,-24.200,-7.400,353.400,24.200,-7.400,1.898e+04 +2025,183.981852,10,369.100,19.600,35.0560,-368.200,-26.300,2.800,368.200,26.300,2.800,2.327e+04 +2025,184.001685,10,361.700,19.500,40.5070,-360.600,-28.100,2.400,360.600,28.100,2.400,2.303e+04 +2025,184.006343,10,361.800,18.700,39.0600,-360.900,-25.300,7.600,360.900,25.300,7.600,2.118e+04 +2025,184.026176,10,356.900,18.200,38.7150,-355.900,-25.300,6.400,355.900,25.300,6.400,2.006e+04 +2025,184.043644,10,356.300,19.000,35.0770,-355.400,-24.000,8.800,355.400,24.000,8.800,2.187e+04 +2025,184.047138,10,356.500,19.200,33.2830,-355.300,-26.900,10.500,355.300,26.900,10.500,2.233e+04 +2025,184.056490,10,354.900,19.200,35.4660,-353.900,-26.300,6.400,353.900,26.300,6.400,2.233e+04 +2025,184.059984,10,352.600,20.500,35.2570,-351.500,-27.600,5.000,351.500,27.600,5.000,2.546e+04 +2025,184.076287,10,344.900,21.400,22.2740,-344.800,-8.800,2.200,344.800,8.800,2.200,2.774e+04 +2025,184.082109,10,349.600,20.600,25.0490,-349.500,-7.200,-0.300,349.500,7.200,-0.300,2.571e+04 +2025,184.096084,10,348.200,20.900,18.9480,-348.000,-7.900,4.300,348.000,7.900,4.300,2.646e+04 +2025,184.098449,10,341.900,20.100,20.7360,-341.800,-9.800,2.700,341.800,9.800,2.700,2.447e+04 +2025,184.142774,10,347.300,24.000,19.9680,-347.200,3.100,5.800,347.200,-3.100,5.800,3.489e+04 +2025,184.149761,10,350.700,23.700,20.3730,-350.400,7.900,12.200,350.400,-7.900,12.200,3.402e+04 +2025,184.181239,10,338.000,24.400,21.4470,-337.600,-1.000,15.500,337.600,1.000,15.500,3.606e+04 +2025,184.206859,10,368.000,26.700,22.4210,-366.800,-12.400,27.100,366.800,12.400,27.100,4.318e+04 +2025,184.212718,10,370.000,28.300,30.4820,-368.200,-15.400,32.800,368.200,15.400,32.800,4.851e+04 +2025,184.225528,10,360.600,19.700,12.8460,-360.600,-4.400,3.700,360.600,4.400,3.700,2.351e+04 +2025,184.246526,10,367.700,17.900,11.8910,-367.600,-4.700,5.800,367.600,4.700,5.800,1.941e+04 +2025,184.251184,10,362.100,18.400,20.7370,-361.800,-0.300,14.500,361.800,0.300,14.500,2.051e+04 +2025,184.254677,10,367.300,17.500,14.0970,-367.200,-3.100,7.500,367.200,3.100,7.500,1.855e+04 +2025,184.255842,10,365.400,17.400,14.3290,-365.300,-2.300,8.100,365.300,2.300,8.100,1.834e+04 +2025,184.266323,10,365.100,19.000,23.7810,-365.000,-3.600,8.000,365.000,3.600,8.000,2.187e+04 +2025,184.275639,10,364.700,14.400,22.4250,-364.600,-1.600,6.000,364.600,1.600,6.000,1.256e+04 +2025,184.294308,10,362.700,16.700,29.0180,-362.600,-3.700,9.500,362.600,3.700,9.500,1.689e+04 +2025,184.340961,10,370.200,22.600,16.3170,-370.000,-9.600,6.200,370.000,9.600,6.200,3.094e+04 +2025,184.344455,10,371.300,22.300,15.2670,-371.000,-11.500,6.300,371.000,11.500,6.300,3.012e+04 +2025,184.350278,10,371.500,22.900,16.0220,-371.200,-11.800,7.500,371.200,11.800,7.500,3.177e+04 +2025,184.373604,10,383.300,21.700,13.7240,-382.600,-22.600,2.800,382.600,22.600,2.800,2.852e+04 +2025,184.377098,10,384.100,21.400,13.5230,-383.400,-22.900,3.100,383.400,22.900,3.100,2.774e+04 +2025,184.379427,10,381.500,24.000,19.1040,-380.900,-21.900,-3.300,380.900,21.900,-3.300,3.489e+04 +2025,184.394602,10,388.300,24.100,50.0530,-388.300,-4.300,3.300,388.300,4.300,3.300,3.518e+04 +2025,184.400425,10,380.400,21.100,59.9900,-380.400,1.100,-5.800,380.400,-1.100,-5.800,2.697e+04 +2025,184.402754,10,380.400,26.400,59.8580,-380.300,-2.100,-7.300,380.300,2.100,-7.300,4.222e+04 +2025,184.408577,10,385.500,19.000,36.7330,-385.300,-11.100,-4.000,385.300,11.100,-4.000,2.187e+04 +2025,184.448207,10,400.200,22.000,27.1610,-398.500,-14.800,33.800,398.500,14.800,33.800,2.932e+04 +2025,184.450536,10,399.100,22.100,24.9280,-397.200,-15.000,36.500,397.200,15.000,36.500,2.958e+04 +2025,184.459888,10,392.800,22.400,24.9270,-390.600,-25.800,32.600,390.600,25.800,32.600,3.039e+04 +2025,184.468040,10,379.200,25.700,40.6580,-378.700,-16.800,-10.400,378.700,16.800,-10.400,4.001e+04 +2025,184.513493,10,379.400,18.400,24.0450,-379.200,-9.400,-3.300,379.200,9.400,-3.300,2.051e+04 +2025,184.515822,10,377.300,20.000,24.3320,-377.100,-9.400,-4.900,377.100,9.400,-4.900,2.423e+04 +2025,184.534491,10,388.300,22.800,34.3500,-387.100,-13.700,28.000,387.100,13.700,28.000,3.149e+04 +2025,184.560147,10,386.000,26.900,21.4370,-385.000,-15.000,24.100,385.000,15.000,24.100,4.383e+04 +2025,184.561311,10,386.200,26.500,21.2670,-385.400,-13.800,21.800,385.400,13.800,21.800,4.254e+04 +2025,184.571792,10,387.300,26.900,22.9430,-386.400,-16.500,19.700,386.400,16.500,19.700,4.383e+04 +2025,184.576450,10,384.400,27.100,13.4520,-383.800,-12.900,16.100,383.800,12.900,16.100,4.449e+04 +2025,184.586967,10,388.000,27.900,16.6020,-387.600,-8.500,16.200,387.600,8.500,16.200,4.715e+04 +2025,184.588132,10,385.400,28.000,16.9180,-385.000,-10.000,15.300,385.000,10.000,15.300,4.749e+04 +2025,184.602106,10,383.900,27.700,14.3370,-383.200,-11.000,20.900,383.200,11.000,20.900,4.648e+04 +2025,184.654582,10,381.600,25.400,15.5050,-380.700,-17.600,18.800,380.700,17.600,18.800,3.908e+04 +2025,184.659240,10,380.800,26.800,17.3560,-379.700,-21.300,20.100,379.700,21.300,20.100,4.351e+04 +2025,184.687225,10,390.400,25.100,12.2850,-388.900,-14.900,30.400,388.900,14.900,30.400,3.816e+04 +2025,185.054486,10,350.700,50.100,7.1150,-349.000,14.000,30.800,349.000,-14.000,30.800,1.520e+05 +2025,185.646757,10,371.900,26.700,7.9560,-371.400,16.700,-7.500,371.400,-16.700,-7.500,4.318e+04 +2025,185.650250,10,367.800,27.200,6.0180,-367.600,12.200,-3.300,367.600,-12.200,-3.300,4.481e+04 +2025,185.652579,10,371.600,27.700,6.7310,-371.400,12.000,-1.700,371.400,-12.000,-1.700,4.648e+04 +2025,185.663060,10,376.200,30.400,8.0440,-376.200,2.300,-7.700,376.200,-2.300,-7.700,5.598e+04 +2025,185.667718,10,374.800,29.200,6.8810,-374.700,6.400,-6.200,374.700,-6.400,-6.200,5.165e+04 +2025,185.679363,10,372.100,28.900,7.2720,-372.100,3.100,3.600,372.100,-3.100,3.600,5.059e+04 +2025,185.723724,10,379.100,23.800,8.5740,-378.500,-18.000,-9.700,378.500,18.000,-9.700,3.431e+04 +2025,185.733040,10,380.200,27.300,10.3370,-379.600,-20.900,-4.000,379.600,20.900,-4.000,4.515e+04 +2025,185.834463,10,368.800,32.300,10.8900,-368.100,-19.200,9.800,368.100,19.200,9.800,6.320e+04 +2025,185.839121,10,374.000,32.000,9.9990,-373.500,-19.500,1.600,373.500,19.500,1.600,6.203e+04 +2025,185.848473,10,400.600,25.400,9.9370,-400.200,-4.400,-16.800,400.200,4.400,-16.800,3.908e+04 +2025,185.857790,10,373.800,24.000,10.1630,-373.300,-19.100,-4.400,373.300,19.100,-4.400,3.489e+04 +2025,186.057141,10,408.500,40.600,12.5420,-407.000,7.500,-33.200,407.000,-7.500,-33.200,9.985e+04 +2025,186.080468,10,409.000,38.000,13.9330,-407.400,10.100,-34.500,407.400,-10.100,-34.500,8.747e+04 +2025,186.123628,10,438.200,37.100,14.0910,-436.000,28.300,-33.900,436.000,-28.300,-33.900,8.337e+04 +2025,186.135273,10,436.800,35.400,13.4070,-435.700,21.800,-23.800,435.700,-21.800,-23.800,7.591e+04 +2025,186.143461,10,432.900,35.700,13.0830,-431.300,19.500,-32.000,431.300,-19.500,-32.000,7.720e+04 +2025,186.146955,10,428.400,33.400,12.5310,-426.800,18.800,-33.100,426.800,-18.800,-33.100,6.757e+04 +2025,186.148119,10,428.400,32.900,12.0900,-427.000,10.400,-33.200,427.000,-10.400,-33.200,6.557e+04 +2025,186.176104,10,392.900,34.100,12.5330,-392.800,-4.800,-7.000,392.800,4.800,-7.000,7.044e+04 +2025,186.195901,10,396.900,38.800,11.9640,-396.700,-9.800,-10.200,396.700,9.800,-10.200,9.119e+04 +2025,186.197065,10,388.500,37.900,12.3430,-388.400,-6.700,-8.700,388.400,6.700,-8.700,8.701e+04 +2025,186.200559,10,394.800,37.900,12.3080,-394.100,-5.700,-22.900,394.100,5.700,-22.900,8.701e+04 +2025,186.215734,10,415.300,36.200,10.2390,-412.100,14.100,-49.600,412.100,-14.100,-49.600,7.938e+04 +2025,186.521203,10,447.800,67.000,6.9840,-441.400,54.700,-51.200,441.400,-54.700,-51.200,2.719e+05 +2025,186.614474,10,432.200,56.100,9.1320,-431.800,-15.500,-9.700,431.800,15.500,-9.700,1.906e+05 +2025,186.708909,10,434.700,52.200,10.8200,-433.100,-21.100,-30.300,433.100,21.100,-30.300,1.651e+05 +2025,186.727578,10,441.300,43.600,9.2720,-439.700,-20.300,-31.700,439.700,20.300,-31.700,1.151e+05 +2025,186.799851,10,430.900,32.300,8.3740,-429.100,-36.100,-16.600,429.100,36.100,-16.600,6.320e+04 +2025,186.858114,10,443.200,39.500,6.2190,-441.400,-30.800,-24.700,441.400,30.800,-24.700,9.451e+04 +2025,186.869795,10,443.100,39.500,6.6690,-440.500,-36.500,-30.500,440.500,36.500,-30.500,9.451e+04 +2025,186.870960,10,444.700,40.800,7.0170,-442.500,-27.500,-34.900,442.500,27.500,-34.900,1.008e+05 +2025,186.923436,10,449.200,47.100,8.3640,-449.000,-13.800,3.300,449.000,13.800,3.300,1.344e+05 +2025,187.008556,10,454.100,53.400,10.2310,-453.000,-9.400,-29.600,453.000,9.400,-29.600,1.727e+05 +2025,187.010885,10,455.300,50.900,10.3410,-454.100,-1.200,-33.600,454.100,1.200,-33.600,1.569e+05 +2025,187.230070,10,445.100,53.800,8.9460,-444.700,14.400,-11.900,444.700,-14.400,-11.900,1.753e+05 +2025,187.235893,10,448.700,54.600,9.2510,-448.200,9.600,-19.200,448.200,-9.600,-19.200,1.806e+05 +2025,187.237057,10,440.800,54.100,8.6360,-440.400,7.700,-17.700,440.400,-7.700,-17.700,1.773e+05 +2025,187.358277,10,427.200,34.700,9.5690,-425.500,-25.400,-28.500,425.500,25.400,-28.500,7.294e+04 +2025,187.366465,10,426.000,33.600,9.3150,-424.000,-28.200,-31.200,424.000,28.200,-31.200,6.839e+04 +2025,187.389792,10,422.900,35.100,10.2940,-420.900,-31.000,-26.700,420.900,31.000,-26.700,7.463e+04 +2025,187.399108,10,423.400,36.600,10.4560,-421.500,-31.800,-22.900,421.500,31.800,-22.900,8.114e+04 +2025,187.429422,10,430.000,32.800,10.4800,-427.800,-24.300,-35.900,427.800,24.300,-35.900,6.517e+04 +2025,187.430587,10,430.500,32.300,10.2580,-428.600,-25.700,-31.100,428.600,25.700,-31.100,6.320e+04 +2025,187.438739,10,435.900,35.100,13.0210,-433.600,-39.900,-20.400,433.600,39.900,-20.400,7.463e+04 +2025,187.444561,10,427.500,32.900,10.9150,-424.700,-41.600,-25.700,424.700,41.600,-25.700,6.557e+04 +2025,187.466724,10,412.800,23.400,9.3260,-409.700,-40.300,-29.600,409.700,40.300,-29.600,3.317e+04 +2025,187.474875,10,398.700,20.400,6.0880,-397.100,-36.600,-0.600,397.100,36.600,-0.600,2.521e+04 +2025,187.483063,10,422.300,29.500,8.8810,-419.800,-42.700,18.600,419.800,42.700,18.600,5.271e+04 +2025,187.515707,10,408.400,35.900,10.2310,-408.300,-0.500,8.400,408.300,0.500,8.400,7.807e+04 +2025,187.525023,10,409.400,34.900,12.7910,-409.300,2.700,7.500,409.300,-2.700,7.500,7.378e+04 +2025,187.530845,10,410.300,37.400,11.1800,-410.300,1.300,2.500,410.300,-1.300,2.500,8.473e+04 +2025,187.532010,10,413.300,38.000,11.5480,-413.300,1.000,5.200,413.300,-1.000,5.200,8.747e+04 +2025,187.536668,10,406.800,38.100,10.3570,-406.700,1.800,8.700,406.700,-1.800,8.700,8.793e+04 +2025,187.541363,10,405.300,39.000,9.0490,-405.200,-1.400,8.100,405.200,1.400,8.100,9.213e+04 +2025,187.546021,10,405.000,36.800,9.3310,-404.500,-19.200,-3.600,404.500,19.200,-3.600,8.203e+04 +2025,187.553008,10,418.100,20.400,7.9180,-418.100,-2.900,-2.300,418.100,2.900,-2.300,2.521e+04 +2025,187.554172,10,415.300,27.100,8.6670,-415.300,-2.300,4.700,415.300,2.300,4.700,4.449e+04 +2025,187.558830,10,419.000,20.200,7.8230,-419.000,-0.800,-0.500,419.000,0.800,-0.500,2.472e+04 +2025,187.578664,10,421.800,22.700,7.6210,-421.800,1.300,5.800,421.800,-1.300,5.800,3.121e+04 +2025,187.580993,10,414.000,22.300,7.4270,-413.900,-0.600,7.700,413.900,0.600,7.700,3.012e+04 +2025,187.582157,10,416.500,22.100,7.9960,-416.400,-0.100,8.800,416.400,0.100,8.800,2.958e+04 +2025,187.605448,10,411.600,16.400,7.4970,-411.300,-14.800,7.300,411.300,14.800,7.300,1.629e+04 +2025,187.606612,10,412.100,16.500,7.3750,-411.800,-11.100,7.700,411.800,11.100,7.700,1.649e+04 +2025,187.614800,10,414.000,16.000,6.4360,-413.700,-10.800,8.000,413.700,10.800,8.000,1.551e+04 +2025,187.636963,10,405.100,20.700,6.8800,-404.700,-18.100,0.300,404.700,18.100,0.300,2.596e+04 +2025,187.687109,10,401.200,20.600,8.6180,-400.900,-14.500,-5.300,400.900,14.500,-5.300,2.571e+04 +2025,187.758218,10,424.400,27.900,9.9130,-421.000,-26.100,-47.200,421.000,26.100,-47.200,4.715e+04 +2025,187.759382,10,411.600,24.800,10.3200,-408.200,-23.700,-46.600,408.200,23.700,-46.600,3.726e+04 +2025,187.778051,10,405.600,28.200,10.3670,-403.400,-4.000,-42.000,403.400,4.000,-42.000,4.817e+04 +2025,187.893448,10,424.300,41.600,8.1020,-420.400,-41.500,-39.100,420.400,41.500,-39.100,1.048e+05 +2025,187.970416,10,458.500,29.000,10.6760,-456.100,-14.200,-45.100,456.100,14.200,-45.100,5.094e+04 +2025,188.083484,10,420.700,52.200,15.7670,-417.700,-48.300,13.800,417.700,48.300,13.800,1.651e+05 +2025,188.387789,10,553.200,61.400,5.1100,-552.500,9.900,24.900,552.500,-9.900,24.900,2.284e+05 +2025,188.428584,10,537.000,67.000,5.4870,-535.800,-22.400,-27.500,535.800,22.400,-27.500,2.719e+05 +2025,188.430913,10,544.700,61.400,5.5740,-544.100,-21.400,-14.600,544.100,21.400,-14.600,2.284e+05 +2025,188.441430,10,572.400,59.600,4.9750,-570.100,-17.900,-47.000,570.100,17.900,-47.000,2.152e+05 +2025,188.450746,10,553.800,68.100,6.0230,-553.400,2.600,20.300,553.400,-2.600,20.300,2.809e+05 +2025,188.482225,10,550.300,62.100,6.2210,-550.300,-8.000,5.200,550.300,8.000,5.200,2.336e+05 +2025,188.507881,10,591.900,60.800,6.1340,-590.400,-32.100,-29.000,590.400,32.100,-29.000,2.239e+05 +2025,188.513704,10,610.300,64.200,6.7610,-609.200,-26.100,-26.400,609.200,26.100,-26.400,2.497e+05 +2025,188.534701,10,554.300,62.300,7.1440,-554.100,-13.400,3.900,554.100,13.400,3.900,2.351e+05 +2025,188.541689,10,581.000,58.100,6.0000,-580.400,-21.000,16.800,580.400,21.000,16.800,2.045e+05 +2025,188.549840,10,565.700,59.200,5.8740,-564.700,-30.800,-15.500,564.700,30.800,-15.500,2.123e+05 +2025,188.661779,10,614.600,60.600,5.8950,-611.400,16.000,-60.600,611.400,-16.000,-60.600,2.224e+05 +2025,188.706067,10,559.200,57.500,5.4600,-558.600,-18.400,-18.800,558.600,18.400,-18.800,2.003e+05 +2025,188.764366,10,626.900,64.400,4.4370,-624.600,18.500,-50.300,624.600,-18.500,-50.300,2.512e+05 +2025,188.772554,10,594.400,68.400,4.1160,-592.200,0.700,-51.100,592.200,-0.700,-51.100,2.834e+05 +2025,189.108302,10,527.800,61.600,4.7990,-527.400,7.100,-19.300,527.400,-7.100,-19.300,2.299e+05 +2025,189.215584,10,535.200,51.200,4.7180,-534.900,-8.300,16.100,534.900,8.300,16.100,1.588e+05 +2025,189.241203,10,538.800,48.300,4.8250,-534.000,-22.700,-68.300,534.000,22.700,-68.300,1.413e+05 +2025,189.254049,10,531.500,49.300,4.7990,-530.700,-16.100,-24.900,530.700,16.100,-24.900,1.472e+05 +2025,189.362496,10,549.400,50.200,5.6780,-542.200,48.700,-74.500,542.200,-48.700,-74.500,1.526e+05 +2025,189.404455,10,530.300,49.200,5.3120,-525.700,18.400,-67.000,525.700,-18.400,-67.000,1.466e+05 +2025,189.444085,10,526.100,56.600,4.4250,-525.800,-2.900,-18.000,525.800,2.900,-18.000,1.941e+05 +2025,189.587467,10,557.700,70.800,3.6320,-552.100,53.700,-58.000,552.100,-53.700,-58.000,3.036e+05 +2025,189.604972,10,563.700,67.100,3.4950,-557.900,66.200,-46.600,557.900,-66.200,-46.600,2.727e+05 +2025,189.680738,10,571.600,62.700,2.9930,-570.100,22.400,-34.300,570.100,-22.400,-34.300,2.381e+05 +2025,190.048036,10,519.700,40.900,2.6080,-519.100,7.500,-24.100,519.100,-7.500,-24.100,1.013e+05 +2025,190.050365,10,520.700,43.000,2.6470,-520.100,5.500,-26.300,520.100,-5.500,-26.300,1.120e+05 +2025,190.121474,10,512.700,46.400,2.8600,-512.600,-3.500,-9.000,512.600,3.500,-9.000,1.304e+05 +2025,191.044868,10,392.200,34.900,4.2890,-391.500,-16.900,-17.800,391.500,16.900,-17.800,7.378e+04 +2025,191.063537,10,389.000,34.600,4.0870,-388.400,-10.900,-18.900,388.400,10.900,-18.900,7.252e+04 +2025,191.084499,10,397.000,34.300,4.5940,-396.100,-22.100,-15.300,396.100,22.100,-15.300,7.126e+04 +2025,191.092650,10,399.700,35.700,4.4650,-399.100,-20.700,-10.200,399.100,20.700,-10.200,7.720e+04 +2025,191.096144,10,392.300,34.700,4.5760,-391.000,-20.900,-24.300,391.000,20.900,-24.300,7.294e+04 +2025,191.127659,10,397.400,31.900,4.4950,-396.100,-21.500,-24.600,396.100,21.500,-24.600,6.164e+04 +2025,191.512353,10,377.900,22.300,9.7840,-376.900,-21.200,-18.300,376.900,21.200,-18.300,3.012e+04 +2025,191.581133,10,377.900,20.700,10.2010,-376.300,-25.300,-25.100,376.300,25.300,-25.100,2.596e+04 +2025,191.584626,10,379.000,20.900,10.3490,-377.500,-23.400,-24.000,377.500,23.400,-24.000,2.646e+04 +2025,191.690136,10,367.500,22.200,12.4840,-365.600,-34.000,-14.500,365.600,34.000,-14.500,2.985e+04 +2025,191.745858,10,353.700,23.500,12.2220,-351.400,-37.000,-15.500,351.400,37.000,-15.500,3.345e+04 +2025,191.751645,10,356.300,24.600,12.7390,-354.100,-37.000,-14.200,354.100,37.000,-14.200,3.666e+04 +2025,191.794665,10,356.000,25.000,14.5140,-353.000,-44.600,-12.000,353.000,44.600,-12.000,3.786e+04 +2025,191.802818,10,356.400,24.800,14.5730,-353.400,-44.800,-11.000,353.400,44.800,-11.000,3.726e+04 +2025,191.806312,10,355.300,25.300,14.2510,-352.200,-47.000,-6.400,352.200,47.000,-6.400,3.877e+04 +2025,191.812136,10,353.500,24.700,13.3970,-353.200,-12.800,-6.200,353.200,12.800,-6.200,3.696e+04 +2025,191.819124,10,357.000,25.900,13.9970,-353.700,-48.500,-7.500,353.700,48.500,-7.500,4.063e+04 +2025,191.821453,10,353.800,25.000,14.6090,-350.400,-48.600,-3.000,350.400,48.600,-3.000,3.786e+04 +2025,191.838924,10,354.300,24.900,15.5420,-351.600,-43.200,-8.700,351.600,43.200,-8.700,3.756e+04 +2025,191.861016,10,359.300,21.600,14.4130,-356.300,-44.200,-11.800,356.300,44.200,-11.800,2.826e+04 +2025,191.873828,10,358.800,22.200,14.5380,-355.700,-44.800,-14.100,355.700,44.800,-14.100,2.985e+04 +2025,191.883145,10,349.200,24.800,16.6020,-346.900,-39.500,1.800,346.900,39.500,1.800,3.726e+04 +2025,191.891298,10,355.800,24.200,17.1630,-353.100,-43.700,-6.200,353.100,43.700,-6.200,3.547e+04 +2025,191.900616,10,353.200,23.900,16.7680,-350.600,-42.500,-7.100,350.600,42.500,-7.100,3.460e+04 +2025,191.916921,10,354.600,23.900,18.2550,-352.000,-42.700,-8.500,352.000,42.700,-8.500,3.460e+04 +2025,191.939050,10,352.900,23.900,20.9020,-349.800,-45.700,-7.900,349.800,45.700,-7.900,3.460e+04 +2025,191.946039,10,355.900,23.900,21.0030,-353.100,-42.700,-10.700,353.100,42.700,-10.700,3.460e+04 +2025,191.969296,10,355.200,24.700,19.7470,-352.100,-45.400,-10.700,352.100,45.400,-10.700,3.696e+04 +2025,191.984437,10,355.800,24.100,24.0550,-352.800,-46.000,-7.700,352.800,46.000,-7.700,3.518e+04 +2025,192.054282,10,357.100,24.900,19.2700,-353.100,-53.200,-6.400,353.100,53.200,-6.400,3.756e+04 +2025,192.063611,10,361.800,26.200,19.2580,-359.000,-44.300,-8.200,359.000,44.300,-8.200,4.158e+04 +2025,192.099669,10,362.200,25.600,16.1900,-358.100,-53.800,-10.000,358.100,53.800,-10.000,3.970e+04 +2025,192.128786,10,362.100,26.700,18.2450,-357.700,-54.800,-12.100,357.700,54.800,-12.100,4.318e+04 +2025,192.134609,10,357.500,25.500,18.9740,-353.000,-55.400,-12.600,353.000,55.400,-12.600,3.939e+04 +2025,192.149750,10,357.400,24.100,20.5720,-353.200,-54.400,-6.000,353.200,54.400,-6.000,3.518e+04 +2025,192.154409,10,357.400,24.300,20.8820,-353.200,-53.800,-6.200,353.200,53.800,-6.200,3.577e+04 +2025,192.166056,10,349.500,27.100,19.5490,-344.500,-58.800,-2.700,344.500,58.800,-2.700,4.449e+04 +2025,192.181197,10,357.300,26.300,21.8940,-352.900,-55.700,-5.400,352.900,55.700,-5.400,4.190e+04 +2025,192.198631,10,354.400,27.900,23.3780,-348.000,-67.200,1.000,348.000,67.200,1.000,4.715e+04 +2025,192.199796,10,352.000,28.200,25.4630,-345.800,-65.600,0.800,345.800,65.600,0.800,4.817e+04 +2025,192.206784,10,352.300,27.100,22.2470,-346.200,-65.600,-2.200,346.200,65.600,-2.200,4.449e+04 +2025,192.210278,10,365.100,34.100,17.1640,-361.100,-52.100,-14.100,361.100,52.100,-14.100,7.044e+04 +2025,192.240523,10,384.300,47.700,13.0070,-383.300,-27.900,-2.300,383.300,27.900,-2.300,1.378e+05 +2025,192.263817,10,388.300,51.000,12.5340,-387.200,-24.500,-14.900,387.200,24.500,-14.900,1.576e+05 +2025,192.487364,10,449.600,46.100,13.7700,-449.400,3.800,11.800,449.400,-3.800,11.800,1.287e+05 +2025,192.748109,10,491.000,67.300,10.7360,-481.200,84.600,48.500,481.200,-84.600,48.500,2.744e+05 +2025,192.756262,10,500.000,66.200,11.4150,-489.600,85.000,55.900,489.600,-85.000,55.900,2.655e+05 +2025,192.809801,10,461.300,65.500,11.9230,-461.200,11.600,1.200,461.200,-11.600,1.200,2.599e+05 +2025,192.813295,10,485.900,66.300,11.8280,-484.000,9.300,41.000,484.000,-9.300,41.000,2.663e+05 +2025,192.913422,10,485.900,61.500,11.8830,-479.700,62.200,46.100,479.700,-62.200,46.100,2.291e+05 +2025,193.014713,10,471.300,54.200,10.4190,-469.500,27.300,-30.800,469.500,-27.300,-30.800,1.779e+05 +2025,193.036806,10,437.200,34.700,9.9820,-430.500,75.600,-12.700,430.500,-75.600,-12.700,7.294e+04 +2025,193.093875,10,493.000,57.100,10.7470,-489.100,28.800,-55.200,489.100,-28.800,-55.200,1.975e+05 +2025,193.102028,10,445.900,53.300,10.7860,-443.100,27.600,-41.400,443.100,-27.600,-41.400,1.721e+05 +2025,193.118334,10,449.200,55.100,10.2320,-448.200,29.600,4.600,448.200,-29.600,4.600,1.839e+05 +2025,193.163684,10,440.500,55.800,11.9830,-439.200,9.300,-32.000,439.200,-9.300,-32.000,1.886e+05 +2025,193.303410,10,472.300,47.300,8.5970,-466.800,-21.900,-68.700,466.800,21.900,-68.700,1.355e+05 +2025,193.310399,10,462.600,55.300,8.8830,-456.500,-23.500,-71.500,456.500,23.500,-71.500,1.852e+05 +2025,193.744609,10,528.000,59.700,7.5180,-527.000,-24.200,-22.900,527.000,24.200,-22.900,2.159e+05 +2025,193.993743,10,599.600,77.300,9.4610,-596.800,-5.900,-56.800,596.800,5.900,-56.800,3.619e+05 +2025,194.055435,10,589.300,68.600,8.1170,-588.200,-28.500,-19.500,588.200,28.500,-19.500,2.851e+05 +2025,194.095035,10,571.100,56.700,7.5370,-570.300,16.600,24.300,570.300,-16.600,24.300,1.947e+05 +2025,194.098529,10,581.100,57.300,7.9290,-579.200,25.000,39.200,579.200,-25.000,39.200,1.989e+05 +2025,194.193961,10,644.000,74.500,7.4860,-642.900,28.500,23.600,642.900,-28.500,23.600,3.362e+05 +2025,194.229957,10,632.100,88.300,5.8990,-626.600,81.600,-16.600,626.600,-81.600,-16.600,4.723e+05 +2025,194.292632,10,643.100,75.500,5.1790,-638.400,68.300,-36.300,638.400,-68.300,-36.300,3.453e+05 +2025,194.310066,10,665.900,74.600,4.5480,-664.800,33.900,-15.900,664.800,-33.900,-15.900,3.371e+05 +2025,194.358473,10,656.000,69.000,3.4250,-653.500,57.000,2.800,653.500,-57.000,2.800,2.884e+05 +2025,194.366626,10,678.600,70.300,5.4320,-670.000,107.800,6.700,670.000,-107.800,6.700,2.994e+05 +2025,194.371212,10,665.300,69.100,4.5720,-655.100,115.100,-13.400,655.100,-115.100,-13.400,2.892e+05 +2025,194.559492,10,581.300,47.900,3.2410,-581.200,4.300,12.600,581.200,-4.300,12.600,1.390e+05 +2025,194.624678,10,624.200,51.000,4.2660,-618.500,61.400,-57.100,618.500,-61.400,-57.100,1.576e+05 +2025,194.732957,10,607.200,52.500,4.1840,-605.900,2.800,-39.300,605.900,-2.800,-39.300,1.670e+05 +2025,194.749262,10,597.600,50.300,3.9830,-597.500,-5.900,5.100,597.500,5.900,5.100,1.533e+05 +2025,194.752757,10,591.400,51.500,4.1070,-589.600,36.100,28.400,589.600,-36.100,28.400,1.607e+05 +2025,194.753921,10,589.700,52.100,4.0020,-588.300,30.200,27.300,588.300,-30.200,27.300,1.644e+05 +2025,194.764403,10,598.400,50.700,4.6060,-594.400,67.400,12.600,594.400,-67.400,12.600,1.557e+05 +2025,194.771392,10,598.400,51.600,4.2760,-595.700,44.600,35.200,595.700,-44.600,35.200,1.613e+05 +2025,194.778380,10,591.700,48.300,4.1010,-589.200,41.600,34.100,589.200,-41.600,34.100,1.413e+05 +2025,194.794649,10,599.000,49.900,4.3930,-594.900,68.700,-9.500,594.900,-68.700,-9.500,1.508e+05 +2025,194.844694,10,604.200,46.700,3.9600,-601.200,57.800,14.700,601.200,-57.800,14.700,1.321e+05 +2025,194.845859,10,605.400,45.800,3.4310,-602.400,57.400,18.900,602.400,-57.400,18.900,1.271e+05 +2025,194.862165,10,600.700,49.400,4.1390,-600.000,-1.900,28.400,600.000,1.900,28.400,1.478e+05 +2025,194.901764,10,599.200,48.300,3.7620,-597.700,8.900,-41.700,597.700,-8.900,-41.700,1.413e+05 +2025,194.921527,10,596.900,50.100,4.1780,-594.300,30.400,-46.300,594.300,-30.400,-46.300,1.520e+05 +2025,194.927351,10,591.200,50.800,4.3420,-588.700,53.700,9.600,588.700,-53.700,9.600,1.563e+05 +2025,194.942492,10,622.900,46.500,3.8440,-619.300,58.000,-32.000,619.300,-58.000,-32.000,1.310e+05 +2025,194.964621,10,619.700,49.700,3.8460,-616.400,61.500,-15.800,616.400,-61.500,-15.800,1.496e+05 +2025,195.043747,10,588.700,41.600,3.4990,-588.200,-24.000,-3.400,588.200,24.000,-3.400,1.048e+05 +2025,195.065876,10,549.400,44.300,3.2880,-549.100,-13.000,-14.000,549.100,13.000,-14.000,1.189e+05 +2025,195.089170,10,560.400,55.000,4.4970,-560.300,-7.300,-2.400,560.300,7.300,-2.400,1.832e+05 +2025,195.112464,10,533.500,43.800,4.2160,-529.500,59.500,-25.700,529.500,-59.500,-25.700,1.162e+05 +2025,195.125276,10,534.900,43.200,4.0000,-534.700,-6.000,-14.000,534.700,6.000,-14.000,1.130e+05 +2025,195.129934,10,527.500,45.100,3.9660,-523.800,34.600,-51.400,523.800,-34.600,-51.400,1.232e+05 +2025,195.134593,10,531.300,43.900,3.7040,-528.700,39.300,-35.400,528.700,-39.300,-35.400,1.167e+05 +2025,195.174156,10,565.200,38.100,4.1350,-562.700,-8.500,-52.700,562.700,8.500,-52.700,8.793e+04 +2025,195.179980,10,538.300,42.100,3.6280,-537.200,-9.800,-33.000,537.200,9.800,-33.000,1.074e+05 +2025,195.193956,10,525.500,40.600,4.1920,-523.900,0.600,-41.000,523.900,-0.600,-41.000,9.985e+04 +2025,195.197450,10,534.400,42.900,4.4200,-531.400,45.400,-33.900,531.400,-45.400,-33.900,1.115e+05 +2025,195.225403,10,527.900,39.500,3.9500,-527.500,-12.800,17.900,527.500,12.800,17.900,9.451e+04 +2025,195.227732,10,529.700,42.200,4.0690,-529.000,3.300,27.500,529.000,-3.300,27.500,1.079e+05 +2025,195.262636,10,557.800,39.200,4.1190,-554.500,32.400,-50.600,554.500,-32.400,-50.600,9.308e+04 +2025,195.476830,10,510.400,39.400,3.9400,-509.200,-21.500,-27.300,509.200,21.500,-27.300,9.403e+04 +2025,195.481489,10,521.600,40.400,4.2840,-520.100,-36.200,-14.500,520.100,36.200,-14.500,9.887e+04 +2025,195.508241,10,525.100,40.100,4.7980,-523.600,-38.900,-8.300,523.600,38.900,-8.300,9.740e+04 +2025,195.544310,10,524.600,39.300,4.3090,-523.100,-37.300,-13.500,523.100,37.300,-13.500,9.356e+04 +2025,195.548969,10,527.300,37.000,4.3320,-525.300,-45.500,-7.200,525.300,45.500,-7.200,8.293e+04 +2025,195.576921,10,513.700,39.000,3.8370,-511.800,-33.000,-30.400,511.800,33.000,-30.400,9.213e+04 +2025,195.582744,10,534.300,35.200,4.3360,-532.800,-36.800,16.500,532.800,36.800,16.500,7.505e+04 +2025,195.594391,10,522.700,33.400,4.5540,-521.300,-35.400,13.200,521.300,35.400,13.200,6.757e+04 +2025,195.700341,10,524.700,40.900,4.5810,-522.100,-45.600,24.200,522.100,45.600,24.200,1.013e+05 +2025,195.808584,10,538.100,41.600,3.3980,-536.800,-20.800,31.100,536.800,20.800,31.100,1.048e+05 +2025,195.872642,10,519.100,53.900,5.3730,-516.500,-49.600,-15.200,516.500,49.600,-15.200,1.760e+05 +2025,195.984380,10,556.700,60.700,6.9550,-555.400,-32.500,21.400,555.400,32.500,21.400,2.232e+05 +2025,196.063542,10,572.500,76.300,4.3770,-571.300,2.800,-37.200,571.300,-2.800,-37.200,3.526e+05 +2025,196.342959,10,764.800,81.700,1.0160,-753.900,82.600,99.000,753.900,-82.600,99.000,4.043e+05 +2025,196.767815,10,626.800,77.500,2.2820,-626.500,-19.400,2.300,626.500,19.400,2.300,3.638e+05 +2025,196.895895,10,622.400,74.300,1.8570,-621.900,-25.600,-1.200,621.900,25.600,-1.200,3.344e+05 +2025,197.277732,10,594.100,64.900,3.0870,-591.600,4.000,54.600,591.600,-4.000,54.600,2.551e+05 +2025,197.306812,10,597.200,76.700,2.5500,-591.800,24.500,-76.400,591.800,-24.500,-76.400,3.563e+05 +2025,197.856291,10,588.600,63.100,2.5590,-580.900,67.700,66.300,580.900,-67.700,66.300,2.412e+05 +2025,198.129846,10,675.500,72.500,1.6540,-666.200,38.800,-104.200,666.200,-38.800,-104.200,3.184e+05 +2025,198.808568,10,659.400,73.400,1.4490,-656.800,-53.800,22.300,656.800,53.800,22.300,3.263e+05 +2025,199.368493,10,577.200,60.500,2.3440,-574.900,-27.400,42.700,574.900,27.400,42.700,2.217e+05 +2025,199.540794,10,567.000,61.400,2.4750,-558.200,50.700,85.900,558.200,-50.700,85.900,2.284e+05 +2025,199.552441,10,571.900,62.000,2.3620,-564.000,48.700,81.400,564.000,-48.700,81.400,2.328e+05 +2025,199.639756,10,548.100,50.900,3.0360,-547.100,-24.400,-21.100,547.100,24.400,-21.100,1.569e+05 +2025,199.943594,10,542.200,46.900,2.7780,-541.300,-27.500,-17.600,541.300,27.500,-17.600,1.332e+05 +2025,199.978498,10,539.500,47.300,2.7970,-538.300,-27.900,22.700,538.300,27.900,22.700,1.355e+05 +2025,200.027415,10,534.000,49.000,3.0560,-533.300,-27.700,-6.200,533.300,27.700,-6.200,1.454e+05 +2025,200.048380,10,514.400,50.000,2.7090,-513.900,-2.600,-22.400,513.900,2.600,-22.400,1.514e+05 +2025,200.093766,10,530.800,50.900,3.0050,-528.500,-25.100,42.300,528.500,25.100,42.300,1.569e+05 +2025,200.104249,10,535.300,52.600,3.0870,-533.300,-26.000,39.100,533.300,26.000,39.100,1.676e+05 +2025,200.248561,10,531.600,56.700,3.1080,-531.300,-5.300,-17.000,531.300,5.300,-17.000,1.947e+05 +2025,200.384794,10,528.500,50.800,2.4860,-528.500,-8.700,2.500,528.500,8.700,2.500,1.563e+05 +2025,200.426723,10,524.800,50.200,2.6740,-524.800,-0.500,6.100,524.800,0.500,6.100,1.526e+05 +2025,200.449980,10,528.700,47.900,2.6720,-528.700,-1.900,-3.400,528.700,1.900,-3.400,1.390e+05 +2025,200.459298,10,519.900,47.600,2.9180,-519.900,0.100,-5.900,519.900,-0.100,-5.900,1.372e+05 +2025,200.494202,10,518.200,50.800,2.9080,-516.300,36.100,-25.900,516.300,-36.100,-25.900,1.563e+05 +2025,200.501190,10,514.300,48.500,2.7800,-513.300,19.800,-24.900,513.300,-19.800,-24.900,1.425e+05 +2025,200.512837,10,516.000,49.900,2.7820,-515.800,11.900,-10.200,515.800,-11.900,-10.200,1.508e+05 +2025,200.536131,10,509.200,43.400,2.4910,-509.100,4.100,-7.700,509.100,-4.100,-7.700,1.141e+05 +2025,200.544284,10,509.300,46.100,2.4770,-508.400,16.200,-26.700,508.400,-16.200,-26.700,1.287e+05 +2025,200.550107,10,511.000,40.700,2.5340,-510.900,7.200,-1.000,510.900,-7.200,-1.000,1.003e+05 +2025,200.595494,10,478.600,35.500,2.2900,-478.200,-7.200,17.200,478.200,7.200,17.200,7.634e+04 +2025,200.618752,10,467.000,35.800,3.1370,-466.100,-20.400,21.300,466.100,20.400,21.300,7.763e+04 +2025,200.625740,10,465.000,39.100,3.3420,-464.200,-17.700,20.700,464.200,17.700,20.700,9.261e+04 +2025,200.626904,10,458.200,38.800,3.1500,-457.700,-14.800,16.500,457.700,14.800,16.500,9.119e+04 +2025,200.654857,10,460.300,32.900,3.7820,-459.400,-1.700,29.000,459.400,1.700,29.000,6.557e+04 +2025,200.685139,10,462.200,30.200,3.5450,-461.200,-4.900,30.900,461.200,4.900,30.900,5.525e+04 +2025,200.720043,10,459.600,33.600,3.7810,-457.800,-22.700,34.500,457.800,22.700,34.500,6.839e+04 +2025,200.729360,10,467.900,31.600,3.1130,-467.200,-23.600,9.100,467.200,23.600,9.100,6.049e+04 +2025,200.734019,10,460.900,35.300,3.5220,-460.400,-20.200,10.000,460.400,20.200,10.000,7.548e+04 +2025,200.753818,10,449.400,39.600,4.1600,-449.300,-10.200,4.500,449.300,10.200,4.500,9.499e+04 +2025,200.761971,10,452.200,33.300,4.1120,-451.300,-24.800,15.300,451.300,24.800,15.300,6.717e+04 +2025,200.775947,10,466.300,35.700,4.5260,-465.000,-29.400,18.900,465.000,29.400,18.900,7.720e+04 +2025,200.802699,10,454.700,32.500,4.1390,-453.900,-19.900,18.900,453.900,19.900,18.900,6.398e+04 +2025,200.806193,10,469.000,33.300,4.0690,-468.500,-14.800,16.800,468.500,14.800,16.800,6.717e+04 +2025,200.808522,10,450.200,31.500,4.5680,-449.800,-17.800,3.300,449.800,17.800,3.300,6.010e+04 +2025,200.812016,10,458.700,31.100,4.2700,-458.100,-19.100,13.700,458.100,19.100,13.700,5.859e+04 +2025,200.846957,10,448.000,34.000,4.2030,-447.900,-10.900,0.400,447.900,10.900,0.400,7.002e+04 +2025,200.871416,10,440.100,30.400,4.3890,-439.400,-21.600,-10.200,439.400,21.600,-10.200,5.598e+04 +2025,200.879568,10,439.400,30.100,4.3200,-438.700,-19.300,-13.700,438.700,19.300,-13.700,5.488e+04 +2025,200.880733,10,441.000,30.600,4.3140,-440.400,-18.700,-13.500,440.400,18.700,-13.500,5.672e+04 +2025,200.892344,10,447.400,32.900,4.1620,-446.700,-19.100,-16.000,446.700,19.100,-16.000,6.557e+04 +2025,200.917967,10,444.800,32.600,4.1160,-444.300,-19.300,-6.000,444.300,19.300,-6.000,6.438e+04 +2025,200.950541,10,446.300,36.600,3.9010,-446.300,-4.800,-6.600,446.300,4.800,-6.600,8.114e+04 +2025,200.969176,10,456.900,37.200,4.8110,-456.800,-2.700,-9.700,456.800,2.700,-9.700,8.382e+04 +2025,200.993635,10,446.200,32.400,4.3100,-445.700,-20.300,5.700,445.700,20.300,5.700,6.359e+04 +2025,201.006446,10,435.200,37.300,4.4700,-434.900,-16.900,2.300,434.900,16.900,2.300,8.428e+04 +2025,201.033197,10,434.100,36.800,3.4160,-433.800,-8.100,13.000,433.800,8.100,13.000,8.203e+04 +2025,201.083279,10,417.700,33.900,4.5800,-417.100,-19.500,12.800,417.100,19.500,12.800,6.961e+04 +2025,201.110031,10,426.200,34.300,4.7890,-425.900,-10.900,10.800,425.900,10.900,10.800,7.126e+04 +2025,201.174089,10,415.600,34.600,4.1170,-415.500,3.200,-7.700,415.500,-3.200,-7.700,7.252e+04 +2025,201.181077,10,410.500,32.300,4.1890,-410.400,9.500,-8.000,410.400,-9.500,-8.000,6.320e+04 +2025,201.197346,10,411.400,31.900,4.0610,-411.400,1.500,-2.600,411.400,-1.500,-2.600,6.164e+04 +2025,201.224134,10,412.500,34.100,4.6290,-412.400,2.400,-7.000,412.400,-2.400,-7.000,7.044e+04 +2025,201.256709,10,419.800,31.800,4.7000,-419.700,-5.400,-8.200,419.700,5.400,-8.200,6.125e+04 +2025,201.306791,10,412.200,31.600,4.9740,-411.600,-21.000,3.900,411.600,21.000,3.900,6.049e+04 +2025,201.309120,10,411.900,35.400,5.1410,-411.200,-23.500,3.300,411.200,23.500,3.300,7.591e+04 +2025,201.337036,10,428.200,27.900,5.1270,-427.900,-16.400,-3.000,427.900,16.400,-3.000,4.715e+04 +2025,201.351012,10,418.400,31.900,5.1520,-418.100,-14.000,7.500,418.100,14.000,7.500,6.164e+04 +2025,201.362659,10,421.100,28.400,5.5730,-420.700,-12.500,-11.000,420.700,12.500,-11.000,4.886e+04 +2025,201.371977,10,417.400,28.200,5.7030,-417.200,-12.800,-6.700,417.200,12.800,-6.700,4.817e+04 +2025,201.375471,10,418.400,30.100,6.1220,-418.000,-16.800,7.900,418.000,16.800,7.900,5.488e+04 +2025,201.380130,10,418.000,31.800,6.2230,-417.500,-16.300,15.000,417.500,16.300,15.000,6.125e+04 +2025,201.424352,10,403.700,31.500,5.5520,-402.900,7.800,-23.600,402.900,-7.800,-23.600,6.010e+04 +2025,201.446481,10,415.500,31.200,5.4420,-415.100,-18.800,-2.200,415.100,18.800,-2.200,5.896e+04 +2025,201.482550,10,416.700,30.000,6.2000,-415.900,-25.700,-0.100,415.900,25.700,-0.100,5.452e+04 +2025,201.497691,10,414.200,28.700,6.0790,-413.200,-28.100,0.900,413.200,28.100,0.900,4.989e+04 +2025,201.503514,10,411.200,28.600,6.1610,-410.300,-26.200,7.900,410.300,26.200,7.900,4.955e+04 +2025,201.504679,10,410.900,29.800,5.9630,-410.100,-25.200,5.300,410.100,25.200,5.300,5.379e+04 +2025,201.510503,10,407.700,29.900,5.7040,-406.800,-21.800,15.800,406.800,21.800,15.800,5.415e+04 +2025,201.517491,10,415.000,33.800,5.3610,-414.400,-22.000,5.600,414.400,22.000,5.600,6.920e+04 +2025,201.523314,10,401.100,31.800,5.8430,-400.500,-17.700,10.600,400.500,17.700,10.600,6.125e+04 +2025,201.530302,10,403.300,32.900,6.1150,-402.700,-21.500,-0.800,402.700,21.500,-0.800,6.557e+04 +2025,201.582677,10,410.800,29.900,5.5380,-410.000,-24.600,4.400,410.000,24.600,4.400,5.415e+04 +2025,201.586171,10,409.200,29.900,5.7020,-408.500,-23.700,-2.500,408.500,23.700,-2.500,5.415e+04 +2025,201.632722,10,384.400,29.900,5.1970,-384.000,-14.300,7.900,384.000,14.300,7.900,5.415e+04 +2025,201.643205,10,418.700,31.900,5.2850,-418.500,-15.100,-1.200,418.500,15.100,-1.200,6.164e+04 +2025,201.661840,10,411.300,30.600,4.5310,-411.000,-15.000,7.200,411.000,15.000,7.200,5.672e+04 +2025,201.673486,10,421.800,27.600,5.3380,-421.500,-14.900,2.500,421.500,14.900,2.500,4.614e+04 +2025,201.686261,10,416.300,27.900,5.0450,-415.900,-15.100,-8.200,415.900,15.100,-8.200,4.715e+04 +2025,201.696744,10,411.200,28.500,5.6520,-410.800,-18.400,-0.400,410.800,18.400,-0.400,4.920e+04 +2025,201.707226,10,415.000,26.000,5.4720,-414.800,-13.000,-1.700,414.800,13.000,-1.700,4.095e+04 +2025,201.713049,10,414.800,29.400,6.1900,-414.400,-17.900,0.100,414.400,17.900,0.100,5.236e+04 +2025,201.714214,10,404.700,28.900,6.1450,-404.400,-16.300,-6.600,404.400,16.300,-6.600,5.059e+04 +2025,201.720037,10,405.400,29.000,6.1790,-404.800,-11.800,-19.800,404.800,11.800,-19.800,5.094e+04 +2025,201.724696,10,412.900,28.900,6.0380,-412.600,-14.600,4.300,412.600,14.600,4.300,5.059e+04 +2025,201.729355,10,407.300,24.100,5.0120,-407.200,-11.000,0.300,407.200,11.000,0.300,3.518e+04 +2025,201.816670,10,392.900,30.800,5.8160,-392.700,-12.500,-3.000,392.700,12.500,-3.000,5.746e+04 +2025,201.820164,10,378.800,24.700,4.0250,-378.500,-14.100,-1.300,378.500,14.100,-1.300,3.696e+04 +2025,201.830646,10,378.400,31.800,5.4430,-378.200,-10.500,3.200,378.200,10.500,3.200,6.125e+04 +2025,201.831811,10,374.700,32.100,5.7350,-374.500,-11.200,2.900,374.500,11.200,2.900,6.242e+04 +2025,201.905150,10,374.000,23.200,3.9090,-374.000,-5.900,-3.600,374.000,5.900,-3.600,3.260e+04 +2025,201.907479,10,375.700,22.800,3.6870,-375.600,-5.300,-4.800,375.600,5.300,-4.800,3.149e+04 +2025,201.909772,10,373.800,22.800,3.8070,-373.800,-3.400,-2.600,373.800,3.400,-2.600,3.149e+04 +2025,201.926078,10,376.700,25.700,3.6910,-376.500,-9.000,-3.500,376.500,9.000,-3.500,4.001e+04 +2025,201.927243,10,375.500,25.700,3.7100,-375.400,-7.700,-6.400,375.400,7.700,-6.400,4.001e+04 +2025,202.115849,10,395.600,25.800,4.0010,-395.600,-0.000,-3.300,395.600,0.000,-3.300,4.032e+04 +2025,202.119343,10,395.500,24.300,4.0840,-395.500,-3.300,-2.600,395.500,3.300,-2.600,3.577e+04 +2025,202.147259,10,392.000,26.600,4.0620,-391.900,-9.000,-3.900,391.900,9.000,-3.900,4.286e+04 +2025,202.182200,10,388.600,25.900,4.0220,-388.400,-9.800,-5.200,388.400,9.800,-5.200,4.063e+04 +2025,202.214811,10,393.700,24.600,3.6720,-393.600,-8.600,-4.700,393.600,8.600,-4.700,3.666e+04 +2025,202.221763,10,394.200,24.000,3.7100,-393.900,-14.800,-5.500,393.900,14.800,-5.500,3.489e+04 +2025,202.232245,10,394.400,23.400,3.6130,-394.000,-17.100,-7.300,394.000,17.100,-7.300,3.317e+04 +2025,202.252045,10,397.400,27.000,3.7480,-396.700,-21.000,-9.400,396.700,21.000,-9.400,4.416e+04 +2025,202.359160,10,370.800,29.600,4.5830,-370.400,-16.200,-7.200,370.400,16.200,-7.200,5.307e+04 +2025,202.416193,10,374.600,30.700,4.3920,-374.300,-13.800,-6.900,374.300,13.800,-6.900,5.709e+04 +2025,202.438323,10,376.100,30.400,4.2830,-375.600,-16.200,-10.700,375.600,16.200,-10.700,5.598e+04 +2025,202.444146,10,373.200,32.300,4.8000,-372.600,-17.800,-11.900,372.600,17.800,-11.900,6.320e+04 +2025,202.449933,10,372.300,31.000,4.3240,-371.900,-15.400,-8.400,371.900,15.400,-8.400,5.821e+04 +2025,202.461580,10,379.100,32.000,4.6400,-378.700,-15.800,-10.600,378.700,15.800,-10.600,6.203e+04 +2025,202.470898,10,371.500,31.500,5.0180,-370.900,-18.100,-9.500,370.900,18.100,-9.500,6.010e+04 +2025,202.477886,10,371.200,31.600,4.8670,-370.400,-21.700,-10.200,370.400,21.700,-10.200,6.049e+04 +2025,202.490697,10,370.300,32.300,4.9380,-369.400,-21.200,-13.700,369.400,21.200,-13.700,6.320e+04 +2025,202.496521,10,372.500,32.000,5.1240,-371.800,-20.800,-10.300,371.800,20.800,-10.300,6.203e+04 +2025,202.539614,10,374.400,30.500,4.7650,-373.800,-21.000,-6.500,373.800,21.000,-6.500,5.635e+04 +2025,202.590824,10,369.100,30.100,5.2400,-367.800,-28.000,-14.100,367.800,28.000,-14.100,5.488e+04 +2025,202.635045,10,373.500,30.900,6.2700,-373.000,-17.100,-9.700,373.000,17.100,-9.700,5.784e+04 +2025,202.645528,10,371.800,31.200,6.4720,-371.100,-17.200,-14.200,371.100,17.200,-14.200,5.896e+04 +2025,202.649022,10,372.700,31.800,6.4150,-372.000,-17.500,-15.500,372.000,17.500,-15.500,6.125e+04 +2025,202.708421,10,378.000,29.000,8.0220,-376.800,-20.900,-22.200,376.800,20.900,-22.200,5.094e+04 +2025,202.761924,10,367.200,26.000,8.4550,-365.700,-17.600,-29.300,365.700,17.600,-29.300,4.095e+04 +2025,202.841123,10,368.600,22.300,9.4350,-366.100,-21.400,-36.900,366.100,21.400,-36.900,3.012e+04 +2025,202.856264,10,377.600,29.500,11.0860,-375.400,-21.600,-34.100,375.400,21.600,-34.100,5.271e+04 +2025,202.887674,10,361.900,26.800,11.5220,-360.500,-20.400,-25.200,360.500,20.400,-25.200,4.351e+04 +2025,202.941214,10,350.700,25.500,14.2610,-350.100,-10.000,-17.000,350.100,10.000,-17.000,3.939e+04 +2025,202.948202,10,348.700,24.800,13.7540,-348.200,-7.400,-17.300,348.200,7.400,-17.300,3.726e+04 +2025,202.966837,10,349.500,27.800,14.3550,-348.900,-10.700,-18.400,348.900,10.700,-18.400,4.681e+04 +2025,202.977319,10,349.600,27.200,13.5410,-348.700,-12.100,-20.800,348.700,12.100,-20.800,4.481e+04 +2025,202.983142,10,351.400,27.000,13.7860,-350.700,-11.700,-19.600,350.700,11.700,-19.600,4.416e+04 +2025,202.985472,10,351.000,27.500,14.9920,-350.400,-10.300,-17.800,350.400,10.300,-17.800,4.581e+04 +2025,202.987801,10,349.300,26.700,14.4160,-348.500,-13.500,-19.400,348.500,13.500,-19.400,4.318e+04 +2025,202.997082,10,343.800,26.100,12.4340,-342.800,-14.600,-21.200,342.800,14.600,-21.200,4.126e+04 +2025,203.021541,10,343.700,25.300,11.8200,-342.400,-13.400,-26.500,342.400,13.400,-26.500,3.877e+04 +2025,203.023870,10,343.900,24.600,11.4850,-342.800,-12.000,-24.300,342.800,12.000,-24.300,3.666e+04 +2025,203.036682,10,344.500,23.800,12.1030,-343.400,-10.300,-24.800,343.400,10.300,-24.800,3.431e+04 +2025,203.155408,10,356.400,24.000,24.3190,-355.800,-4.200,-20.700,355.800,4.200,-20.700,3.489e+04 +2025,203.161231,10,350.100,21.200,24.4860,-349.900,-3.900,-11.500,349.900,3.900,-11.500,2.722e+04 +2025,203.163561,10,348.700,20.700,22.1580,-348.500,-6.700,-8.900,348.500,6.700,-8.900,2.596e+04 +2025,203.178702,10,349.900,12.900,11.3150,-349.600,-11.400,-6.900,349.600,11.400,-6.900,1.008e+04 +2025,203.219430,10,349.500,14.900,10.7310,-349.000,-18.300,-1.700,349.000,18.300,-1.700,1.345e+04 +2025,203.284616,10,346.100,15.700,10.5380,-345.600,-15.400,-10.000,345.600,15.400,-10.000,1.493e+04 +2025,203.290439,10,346.900,17.000,10.6430,-346.500,-12.300,-9.800,346.500,12.300,-9.800,1.751e+04 +2025,203.312569,10,361.300,22.800,13.0680,-361.200,-3.700,-5.700,361.200,3.700,-5.700,3.149e+04 +2025,203.334698,10,358.500,15.300,11.8260,-358.100,-9.300,-13.400,358.100,9.300,-13.400,1.418e+04 +2025,203.335862,10,357.900,15.500,12.1890,-357.500,-10.900,-12.200,357.500,10.900,-12.200,1.455e+04 +2025,203.339357,10,353.000,15.800,10.7200,-352.500,-14.100,-10.500,352.500,14.100,-10.500,1.512e+04 +2025,203.356791,10,346.600,16.100,12.0310,-346.100,-19.000,-5.600,346.100,19.000,-5.600,1.570e+04 +2025,203.360285,10,348.500,16.600,11.3480,-347.900,-19.000,-4.100,347.900,19.000,-4.100,1.669e+04 +2025,203.364943,10,343.100,20.200,13.4710,-342.700,-13.700,7.700,342.700,13.700,7.700,2.472e+04 +2025,203.394024,10,337.600,25.600,25.0360,-337.100,-16.200,9.000,337.100,16.200,9.000,3.970e+04 +2025,203.401013,10,339.300,25.600,26.3220,-338.200,-26.600,-5.600,338.200,26.600,-5.600,3.970e+04 +2025,203.420812,10,347.600,24.000,20.0810,-347.000,-20.700,-6.800,347.000,20.700,-6.800,3.489e+04 +2025,203.432459,10,348.100,18.400,18.2130,-347.300,-22.700,-5.700,347.300,22.700,-5.700,2.051e+04 +2025,203.433624,10,348.400,18.600,17.9940,-347.800,-20.700,-6.900,347.800,20.700,-6.900,2.096e+04 +2025,203.462741,10,356.100,20.400,21.9910,-354.900,-29.200,-1.400,354.900,29.200,-1.400,2.521e+04 +2025,203.472059,10,355.200,19.500,22.7270,-353.900,-29.800,0.300,353.900,29.800,0.300,2.303e+04 +2025,203.475553,10,355.700,26.000,29.7230,-353.800,-34.400,-13.600,353.800,34.400,-13.600,4.095e+04 +2025,203.487200,10,353.300,27.300,34.5000,-351.200,-37.000,-10.600,351.200,37.000,-10.600,4.515e+04 +2025,203.496481,10,356.100,25.500,26.2620,-354.200,-36.500,5.200,354.200,36.500,5.200,3.939e+04 +2025,203.509293,10,367.700,28.400,16.1040,-366.200,-26.800,-19.500,366.200,26.800,-19.500,4.886e+04 +2025,203.511622,10,370.900,30.700,19.1650,-369.700,-25.200,-13.600,369.700,25.200,-13.600,5.709e+04 +2025,203.520940,10,383.600,32.000,23.5240,-383.300,-2.700,-14.600,383.300,2.700,-14.600,6.203e+04 +2025,203.522104,10,379.700,31.100,20.7660,-379.100,-11.500,-17.500,379.100,11.500,-17.500,5.859e+04 +2025,203.526763,10,383.100,32.600,22.0220,-382.500,-10.800,-16.800,382.500,10.800,-16.800,6.438e+04 +2025,203.553514,10,391.600,22.100,28.2090,-390.200,-13.100,-30.500,390.200,13.100,-30.500,2.958e+04 +2025,203.561667,10,390.300,23.400,30.7720,-389.000,-14.400,-27.600,389.000,14.400,-27.600,3.317e+04 +2025,203.569820,10,392.400,28.000,28.9980,-391.400,-15.500,-23.000,391.400,15.500,-23.000,4.749e+04 +2025,203.582632,10,397.200,34.400,32.2070,-396.000,-18.600,-24.900,396.000,18.600,-24.900,7.168e+04 +2025,203.707216,10,409.800,51.900,23.9740,-406.300,-35.900,-40.100,406.300,35.900,-40.100,1.632e+05 +2025,204.064595,10,531.100,71.000,17.1990,-529.900,27.600,24.000,529.900,-27.600,24.000,3.054e+05 +2025,204.156533,10,546.200,88.200,14.1370,-541.800,66.500,-16.500,541.800,-66.500,-16.500,4.712e+05 +2025,204.160027,10,539.400,89.100,13.7180,-534.300,71.200,-21.100,534.300,-71.200,-21.100,4.809e+05 +2025,204.207779,10,552.700,82.800,9.6590,-551.800,9.300,30.300,551.800,-9.300,30.300,4.153e+05 +2025,204.626850,10,652.300,83.500,4.1390,-652.300,2.000,-9.000,652.300,-2.000,-9.000,4.223e+05 +2025,205.198022,10,662.400,68.000,3.0120,-660.900,-29.900,-33.100,660.900,29.900,-33.100,2.801e+05 +2025,205.273545,10,666.100,63.700,2.3540,-665.000,-25.300,28.200,665.000,25.300,28.200,2.458e+05 +2025,205.310706,10,656.700,64.900,2.7480,-653.300,10.600,65.800,653.300,-10.600,65.800,2.551e+05 +2025,205.365046,10,631.400,78.700,2.5850,-630.600,-7.800,31.600,630.600,7.800,31.600,3.752e+05 +2025,205.516201,10,684.900,53.000,2.0030,-682.200,14.200,60.100,682.200,-14.200,60.100,1.702e+05 +2025,205.529013,10,673.700,71.800,2.3580,-671.400,-19.700,51.500,671.400,19.700,51.500,3.123e+05 +2025,205.582552,10,659.200,54.800,2.2840,-654.900,23.700,-71.500,654.900,-23.700,-71.500,1.819e+05 +2025,205.750230,10,656.000,58.000,2.5650,-653.900,-46.800,-22.400,653.900,46.800,-22.400,2.038e+05 +2025,205.757182,10,655.200,53.000,2.3710,-650.900,4.400,74.600,650.900,-4.400,74.600,1.702e+05 +2025,205.983023,10,616.600,48.200,2.5480,-615.200,-38.400,18.200,615.200,38.400,18.200,1.407e+05 +2025,205.985353,10,593.900,44.900,2.4270,-592.600,-38.200,3.200,592.600,38.200,3.200,1.221e+05 +2025,206.038892,10,615.400,45.200,2.3180,-613.900,-42.100,-4.700,613.900,42.100,-4.700,1.238e+05 +2025,206.066845,10,612.100,47.300,2.5540,-610.300,-15.300,43.100,610.300,15.300,43.100,1.355e+05 +2025,206.147172,10,584.500,48.600,2.6480,-583.600,-28.900,-14.000,583.600,28.900,-14.000,1.431e+05 +2025,206.212358,10,582.300,52.600,2.8660,-582.000,-9.000,18.100,582.000,9.000,18.100,1.676e+05 +2025,206.290320,10,560.300,49.100,2.6910,-559.700,-15.300,20.100,559.700,15.300,20.100,1.460e+05 +2025,206.403259,10,582.500,50.100,2.9110,-581.300,-3.500,37.200,581.300,3.500,37.200,1.520e+05 +2025,206.510374,10,551.900,47.300,2.7570,-551.700,-13.700,5.300,551.700,13.700,5.300,1.355e+05 +2025,206.540620,10,560.000,51.900,2.9170,-559.000,-9.900,31.200,559.000,9.900,31.200,1.632e+05 +2025,206.622111,10,551.700,49.800,2.9860,-550.600,-33.800,-5.800,550.600,33.800,-5.800,1.502e+05 +2025,206.657052,10,540.700,49.500,2.8740,-538.800,44.700,-1.700,538.800,-44.700,-1.700,1.484e+05 +2025,206.671028,10,542.200,46.400,2.7840,-539.800,49.800,10.100,539.800,-49.800,10.100,1.304e+05 +2025,206.847952,10,558.300,50.200,3.0260,-557.700,-25.700,-7.000,557.700,25.700,-7.000,1.526e+05 +2025,206.870081,10,591.500,48.300,3.2290,-590.600,-28.400,-16.600,590.600,28.400,-16.600,1.413e+05 +2025,206.877033,10,569.300,52.500,3.2280,-568.500,-31.100,-1.400,568.500,31.100,-1.400,1.670e+05 +2025,206.922456,10,559.000,56.200,3.1620,-558.000,-34.400,2.600,558.000,34.400,2.600,1.913e+05 +2025,206.945750,10,568.300,44.800,3.3210,-567.400,-33.000,1.700,567.400,33.000,1.700,1.216e+05 +2025,207.005113,10,548.500,48.100,3.7690,-547.300,-29.100,20.100,547.300,29.100,20.100,1.401e+05 +2025,207.067970,10,530.100,52.700,3.3140,-529.400,-27.000,-0.900,529.400,27.000,-0.900,1.682e+05 +2025,207.095922,10,525.300,49.800,3.3020,-524.300,-18.800,-25.300,524.300,18.800,-25.300,1.502e+05 +2025,207.113356,10,540.200,50.100,3.1880,-539.100,-31.900,-12.200,539.100,31.900,-12.200,1.520e+05 +2025,207.115686,10,539.800,49.100,2.9680,-538.200,-37.400,-17.700,538.200,37.400,-17.700,1.460e+05 +2025,207.173920,10,563.900,48.300,3.1760,-562.500,-35.100,-19.400,562.500,35.100,-19.400,1.413e+05 +2025,207.178579,10,541.600,47.200,3.0560,-539.900,-39.800,-16.300,539.900,39.800,-16.300,1.349e+05 +2025,207.212319,10,529.000,44.900,2.9340,-527.200,-41.400,-14.200,527.200,41.400,-14.200,1.221e+05 +2025,207.320599,10,538.700,51.800,3.3350,-537.200,-36.800,-16.100,537.200,36.800,-16.100,1.625e+05 +2025,207.324093,10,533.900,51.400,3.8350,-532.700,-30.800,-16.500,532.700,30.800,-16.500,1.600e+05 +2025,207.348515,10,547.800,52.500,4.3640,-545.000,-47.500,-26.900,545.000,47.500,-26.900,1.670e+05 +2025,207.425349,10,578.200,51.200,4.4330,-575.600,-23.800,-49.700,575.600,23.800,-49.700,1.588e+05 +2025,207.432337,10,581.000,58.400,5.6450,-577.400,-26.500,-59.000,577.400,26.500,-59.000,2.066e+05 +2025,207.619743,10,533.300,45.600,3.4680,-530.900,-43.000,-27.500,530.900,43.000,-27.500,1.260e+05 +2025,207.693082,10,538.000,31.300,8.6220,-536.800,35.200,-7.800,536.800,-35.200,-7.800,5.934e+04 +2025,207.735010,10,525.000,24.000,2.5980,-524.300,-7.600,-26.000,524.300,7.600,-26.000,3.489e+04 +2025,207.748950,10,540.700,25.900,2.6160,-538.200,28.600,-43.800,538.200,-28.600,-43.800,4.063e+04 +2025,207.761762,10,540.600,27.900,2.8260,-539.400,24.400,-27.300,539.400,-24.400,-27.300,4.715e+04 +2025,207.762926,10,538.500,26.200,2.9550,-536.800,24.900,-35.000,536.800,-24.900,-35.000,4.158e+04 +2025,207.775738,10,529.700,34.200,2.9900,-528.400,23.100,-29.200,528.400,-23.100,-29.200,7.085e+04 +2025,207.779232,10,532.800,32.100,2.6130,-531.300,25.600,-30.100,531.300,-25.600,-30.100,6.242e+04 +2025,207.877030,10,490.600,28.800,1.3550,-490.400,13.400,-5.400,490.400,-13.400,-5.400,5.024e+04 +2025,207.946875,10,478.500,35.700,2.6270,-477.800,-23.900,-9.400,477.800,23.900,-9.400,7.720e+04 +2025,207.982944,10,483.800,34.100,1.4890,-483.400,-11.800,-16.100,483.400,11.800,-16.100,7.044e+04 +2025,207.987603,10,482.400,28.000,1.5640,-482.200,-2.700,-13.200,482.200,2.700,-13.200,4.749e+04 +2025,208.016720,10,483.600,36.800,1.0390,-482.900,-15.000,-22.600,482.900,15.000,-22.600,8.203e+04 +2025,208.027202,10,480.000,31.900,1.3150,-479.900,-1.800,4.300,479.900,1.800,4.300,6.164e+04 +2025,208.172716,10,496.600,23.900,1.6870,-496.600,-1.800,-4.400,496.600,1.800,-4.400,3.460e+04 +2025,208.176210,10,490.900,22.500,1.6080,-490.900,-2.500,-6.400,490.900,2.500,-6.400,3.067e+04 +2025,208.236738,10,458.400,17.700,2.2820,-457.900,-11.800,-16.400,457.900,11.800,-16.400,1.898e+04 +2025,208.275136,10,460.100,19.100,2.9020,-459.700,-12.600,-13.100,459.700,12.600,-13.100,2.210e+04 +2025,208.298430,10,463.200,20.400,2.4470,-462.200,-29.700,-4.100,462.200,29.700,-4.100,2.521e+04 +2025,208.312407,10,470.400,25.600,2.7700,-469.500,-24.200,-17.200,469.500,24.200,-17.200,3.970e+04 +2025,208.319395,10,447.300,19.700,3.3600,-446.400,-7.700,-26.000,446.400,7.700,-26.000,2.351e+04 +2025,208.365946,10,458.900,22.800,3.5220,-457.700,-26.200,-20.600,457.700,26.200,-20.600,3.149e+04 +2025,208.404345,10,433.900,16.100,4.1570,-431.100,-48.100,-6.600,431.100,48.100,-6.600,1.570e+04 +2025,208.436956,10,439.500,15.700,3.0030,-438.500,-29.300,-8.600,438.500,29.300,-8.600,1.493e+04 +2025,208.438121,10,440.900,15.500,3.2210,-440.100,-26.300,-7.200,440.100,26.300,-7.200,1.455e+04 +2025,208.446274,10,429.800,15.600,3.2640,-428.600,-30.300,-10.300,428.600,30.300,-10.300,1.474e+04 +2025,208.452097,10,442.500,19.800,2.4770,-441.900,-18.500,-14.700,441.900,18.500,-14.700,2.375e+04 +2025,208.483507,10,461.200,25.300,2.8420,-460.700,-5.200,-20.200,460.700,5.200,-20.200,3.877e+04 +2025,208.518412,10,451.700,22.900,3.0280,-451.100,-8.300,-21.500,451.100,8.300,-21.500,3.177e+04 +2025,208.542870,10,449.800,16.500,2.9350,-449.400,-4.200,-16.700,449.400,4.200,-16.700,1.649e+04 +2025,208.559176,10,458.200,16.900,3.1070,-458.000,-2.500,-13.900,458.000,2.500,-13.900,1.730e+04 +2025,208.567329,10,460.600,17.300,3.1360,-460.500,2.600,-9.300,460.500,-2.600,-9.300,1.813e+04 +2025,208.582470,10,451.600,15.400,2.7580,-451.300,-3.700,-13.400,451.300,3.700,-13.400,1.437e+04 +2025,208.594117,10,449.100,16.600,3.8170,-448.600,-12.600,-17.900,448.600,12.600,-17.900,1.669e+04 +2025,208.604599,10,448.400,17.700,4.2410,-448.100,-12.400,-11.700,448.100,12.400,-11.700,1.898e+04 +2025,208.632515,10,443.700,14.800,3.9390,-443.500,-12.500,-5.500,443.500,12.500,-5.500,1.327e+04 +2025,208.652315,10,434.900,18.300,5.1820,-434.600,-12.200,-10.400,434.600,12.200,-10.400,2.029e+04 +2025,208.665126,10,433.600,18.200,6.6180,-433.200,-5.900,-16.600,433.200,5.900,-16.600,2.006e+04 +2025,208.679102,10,433.100,18.800,7.0930,-432.700,5.600,-18.400,432.700,-5.600,-18.400,2.141e+04 +2025,208.687255,10,438.400,17.800,6.8490,-438.100,7.000,-14.700,438.100,-7.000,-14.700,1.919e+04 +2025,208.712842,10,432.000,16.700,7.7990,-431.600,8.600,-17.900,431.600,-8.600,-17.900,1.689e+04 +2025,208.719830,10,434.200,15.900,7.3650,-433.600,9.700,-21.400,433.600,-9.700,-21.400,1.531e+04 +2025,208.746618,10,430.300,14.100,6.7590,-430.000,3.300,-16.100,430.000,-3.300,-16.100,1.204e+04 +2025,208.750112,10,428.000,14.000,6.8400,-427.700,4.500,-15.400,427.700,-4.500,-15.400,1.187e+04 +2025,208.765253,10,424.500,14.000,6.9580,-424.200,5.000,-15.000,424.200,-5.000,-15.000,1.187e+04 +2025,208.803651,10,424.100,17.900,5.8570,-423.800,11.200,-9.600,423.800,-11.200,-9.600,1.941e+04 +2025,208.805981,10,424.200,18.300,5.6260,-423.900,13.600,-11.400,423.900,-13.600,-11.400,2.029e+04 +2025,208.840885,10,424.900,14.900,5.0010,-424.200,16.100,-18.900,424.200,-16.100,-18.900,1.345e+04 +2025,208.853697,10,423.700,15.900,5.3050,-423.300,12.800,-14.300,423.300,-12.800,-14.300,1.531e+04 +2025,208.857191,10,423.300,15.900,5.2760,-422.800,14.900,-13.500,422.800,-14.900,-13.500,1.531e+04 +2025,208.871167,10,423.000,16.900,4.8090,-422.600,10.700,-14.200,422.600,-10.700,-14.200,1.730e+04 +2025,208.880485,10,421.200,17.400,4.8460,-420.800,12.300,-13.700,420.800,-12.300,-13.700,1.834e+04 +2025,208.910766,10,406.600,16.800,4.5940,-406.400,10.100,-9.400,406.400,-10.100,-9.400,1.710e+04 +2025,208.917755,10,410.600,17.300,4.7120,-410.500,8.800,-0.500,410.500,-8.800,-0.500,1.813e+04 +2025,208.953823,10,404.300,15.900,3.7540,-404.200,10.300,-3.900,404.200,-10.300,-3.900,1.531e+04 +2025,208.970129,10,407.000,15.900,3.7190,-407.000,0.900,1.000,407.000,-0.900,1.000,1.531e+04 +2025,208.975952,10,404.300,16.200,3.7310,-404.200,0.100,3.600,404.200,-0.100,3.600,1.590e+04 +2025,208.995752,10,401.100,22.100,3.0370,-400.900,9.700,-7.700,400.900,-9.700,-7.700,2.958e+04 +2025,209.000411,10,400.700,17.400,3.5340,-400.700,-2.400,-4.500,400.700,2.400,-4.500,1.834e+04 +2025,209.007399,10,401.100,17.700,3.7140,-401.000,-6.100,-3.000,401.000,6.100,-3.000,1.898e+04 +2025,209.010893,10,399.800,20.000,3.7830,-399.700,-4.500,-7.800,399.700,4.500,-7.800,2.423e+04 +2025,209.023668,10,402.300,19.900,4.5840,-402.000,14.700,-3.800,402.000,-14.700,-3.800,2.399e+04 +2025,209.024833,10,404.000,19.800,3.7960,-399.200,61.700,-6.400,399.200,-61.700,-6.400,2.375e+04 +2025,209.028327,10,409.600,19.500,4.2920,-409.200,17.900,-4.600,409.200,-17.900,-4.600,2.303e+04 +2025,209.035315,10,402.200,20.000,4.5780,-401.500,20.400,-11.300,401.500,-20.400,-11.300,2.423e+04 +2025,209.041138,10,399.300,20.500,4.3820,-398.800,16.200,-9.300,398.800,-16.200,-9.300,2.546e+04 +2025,209.045797,10,402.700,19.800,4.5240,-402.200,19.200,-7.800,402.200,-19.200,-7.800,2.375e+04 +2025,209.046962,10,403.500,20.500,4.5350,-403.000,17.900,-9.000,403.000,-17.900,-9.000,2.546e+04 +2025,209.053950,10,398.400,19.800,3.9660,-398.300,10.300,-2.600,398.300,-10.300,-2.600,2.375e+04 +2025,209.063267,10,402.500,27.000,3.4690,-401.800,14.400,-17.800,401.800,-14.400,-17.800,4.416e+04 +2025,209.087726,10,411.000,24.400,3.7730,-410.300,8.700,-22.500,410.300,-8.700,-22.500,3.606e+04 +2025,209.090055,10,411.500,23.000,3.7750,-410.700,8.400,-24.300,410.700,-8.400,-24.300,3.204e+04 +2025,209.097043,10,410.600,24.600,4.0760,-410.300,7.500,-15.100,410.300,-7.500,-15.100,3.666e+04 +2025,209.158699,10,409.200,27.500,4.1370,-409.100,3.300,-9.100,409.100,-3.300,-9.100,4.581e+04 +2025,209.172675,10,403.800,27.000,3.9050,-403.600,6.500,-10.900,403.600,-6.500,-10.900,4.416e+04 +2025,209.188981,10,409.500,29.000,4.1320,-409.400,-1.800,-6.200,409.400,1.800,-6.200,5.094e+04 +2025,209.191310,10,407.000,27.100,4.2090,-406.800,0.300,-11.200,406.800,-0.300,-11.200,4.449e+04 +2025,209.223922,10,401.000,26.800,3.5840,-400.900,2.800,-10.800,400.900,-2.800,-10.800,4.351e+04 +2025,209.296060,10,413.400,26.200,4.7130,-413.200,13.800,2.700,413.200,-13.800,2.700,4.158e+04 +2025,209.320518,10,399.100,26.900,4.0730,-399.100,1.600,-3.300,399.100,-1.600,-3.300,4.383e+04 +2025,209.332165,10,399.700,27.900,4.3870,-399.400,11.900,-10.400,399.400,-11.900,-10.400,4.715e+04 +2025,209.336824,10,398.100,26.800,4.2820,-397.600,15.500,-14.400,397.600,-15.500,-14.400,4.351e+04 +2025,209.337989,10,398.700,26.100,4.4290,-398.400,12.700,-7.900,398.400,-12.700,-7.900,4.126e+04 +2025,209.361283,10,412.600,27.700,4.3580,-412.400,-9.300,9.400,412.400,9.300,9.400,4.648e+04 +2025,209.367106,10,408.000,28.300,4.8580,-408.000,-4.200,2.900,408.000,4.200,2.900,4.851e+04 +2025,209.369436,10,408.100,26.900,4.6120,-408.100,-3.700,5.400,408.100,3.700,5.400,4.383e+04 +2025,209.379881,10,402.200,28.200,4.7290,-401.900,13.200,-5.300,401.900,-13.200,-5.300,4.817e+04 +2025,209.425268,10,395.800,33.300,4.1450,-395.400,-1.500,-16.900,395.400,1.500,-16.900,6.717e+04 +2025,209.426433,10,398.200,28.600,4.3400,-398.200,2.700,-5.400,398.200,-2.700,-5.400,4.955e+04 +2025,209.434586,10,393.900,28.900,3.9100,-393.900,4.800,-2.000,393.900,-4.800,-2.000,5.059e+04 +2025,209.484667,10,396.500,20.600,3.5440,-394.800,-6.700,-35.700,394.800,6.700,-35.700,2.571e+04 +2025,209.500973,10,397.900,20.900,3.5990,-396.000,-5.100,-37.900,396.000,5.100,-37.900,2.646e+04 +2025,209.502138,10,397.300,22.000,3.8460,-395.600,-4.800,-36.500,395.600,4.800,-36.500,2.932e+04 +2025,209.510291,10,397.200,21.800,3.6310,-395.300,-0.500,-38.100,395.300,0.500,-38.100,2.879e+04 +2025,209.512584,10,395.800,23.100,3.6540,-394.000,-0.600,-37.400,394.000,0.600,-37.400,3.232e+04 +2025,209.516078,10,397.300,21.800,3.6280,-395.400,0.100,-38.800,395.400,-0.100,-38.800,2.879e+04 +2025,209.523066,10,394.700,22.300,3.8740,-392.700,1.800,-38.700,392.700,-1.800,-38.700,3.012e+04 +2025,209.525395,10,393.200,22.900,3.8730,-391.400,0.800,-38.300,391.400,-0.800,-38.300,3.177e+04 +2025,209.534713,10,393.600,24.800,3.7870,-392.000,-2.600,-35.000,392.000,2.600,-35.000,3.726e+04 +2025,209.535877,10,391.900,22.500,3.7400,-390.000,0.100,-38.700,390.000,-0.100,-38.700,3.067e+04 +2025,209.567324,10,393.900,21.800,3.7900,-392.300,-5.000,-35.900,392.300,5.000,-35.900,2.879e+04 +2025,209.606887,10,398.000,21.700,4.1620,-395.200,-18.800,-43.300,395.200,18.800,-43.300,2.852e+04 +2025,209.634839,10,384.700,23.400,3.8840,-382.200,-22.000,-38.000,382.200,22.000,-38.000,3.317e+04 +2025,209.639498,10,390.500,23.700,3.9430,-387.800,-13.600,-43.400,387.800,13.600,-43.400,3.402e+04 +2025,209.688378,10,391.800,20.900,3.8640,-389.100,-23.800,-39.500,389.100,23.800,-39.500,2.646e+04 +2025,209.727941,10,396.500,28.000,4.8020,-393.700,-23.200,-41.100,393.700,23.200,-41.100,4.749e+04 +2025,209.729106,10,399.600,30.500,3.7500,-397.800,-22.300,-31.000,397.800,22.300,-31.000,5.635e+04 +2025,209.740753,10,390.900,25.500,4.1940,-388.700,-16.400,-38.700,388.700,16.400,-38.700,3.939e+04 +2025,209.745412,10,391.700,23.200,3.8630,-388.800,-25.100,-40.500,388.800,25.100,-40.500,3.260e+04 +2025,210.021335,10,407.100,29.100,8.7820,-404.700,-41.600,-14.300,404.700,41.600,-14.300,5.129e+04 +2025,210.101626,10,396.300,24.400,8.7920,-393.500,-46.300,9.700,393.500,46.300,9.700,3.606e+04 +2025,210.102791,10,396.400,25.100,9.2720,-393.400,-47.600,9.900,393.400,47.600,9.900,3.816e+04 +2025,210.107449,10,397.000,24.000,8.8780,-393.900,-49.400,6.600,393.900,49.400,6.600,3.489e+04 +2025,210.127249,10,411.200,32.400,15.0950,-410.700,-17.400,10.900,410.700,17.400,10.900,6.359e+04 +2025,210.135402,10,405.700,31.100,16.6250,-405.400,-10.000,10.600,405.400,10.000,10.600,5.859e+04 +2025,210.156366,10,404.200,29.500,15.5760,-404.200,-4.400,-2.200,404.200,4.400,-2.200,5.271e+04 +2025,210.157531,10,406.300,27.900,17.8310,-406.200,-3.600,2.700,406.200,3.600,2.700,4.715e+04 +2025,210.166849,10,412.400,26.100,18.5760,-412.300,-0.800,8.500,412.300,0.800,8.500,4.126e+04 +2025,210.169178,10,411.100,25.100,19.6910,-411.000,-1.900,6.500,411.000,1.900,6.500,3.816e+04 +2025,210.176166,10,408.000,28.800,16.4270,-408.000,3.000,4.700,408.000,-3.000,4.700,5.024e+04 +2025,210.177331,10,410.000,30.000,15.2550,-410.000,2.700,4.700,410.000,-2.700,4.700,5.452e+04 +2025,210.188942,10,404.300,27.700,16.3530,-404.300,3.900,4.000,404.300,-3.900,4.000,4.648e+04 +2025,210.192436,10,403.000,30.000,14.9990,-403.000,1.400,1.400,403.000,-1.400,1.400,5.452e+04 +2025,210.205247,10,399.800,22.400,19.5060,-399.800,3.800,3.000,399.800,-3.800,3.000,3.039e+04 +2025,210.211071,10,400.400,23.200,18.8800,-400.400,-1.200,-3.200,400.400,1.200,-3.200,3.260e+04 +2025,210.214565,10,400.200,23.200,18.2830,-400.200,-2.300,-0.500,400.200,2.300,-0.500,3.260e+04 +2025,210.240152,10,396.400,24.600,17.1290,-396.400,-2.500,0.600,396.400,2.500,0.600,3.666e+04 +2025,210.244810,10,395.800,24.500,16.6490,-395.800,-5.300,3.100,395.800,5.300,3.100,3.636e+04 +2025,210.320516,10,372.500,32.900,7.4960,-372.300,-6.200,-11.300,372.300,6.200,-11.300,6.557e+04 +2025,210.327467,10,380.700,31.400,9.7890,-380.700,-4.700,-2.000,380.700,4.700,-2.000,5.972e+04 +2025,210.328632,10,379.500,30.900,9.4420,-379.400,-1.900,-3.500,379.400,1.900,-3.500,5.784e+04 +2025,210.344938,10,378.900,31.100,9.8330,-378.900,-4.500,-4.500,378.900,4.500,-4.500,5.859e+04 +2025,210.362408,10,379.300,24.900,8.3030,-379.100,-10.000,-0.300,379.100,10.000,-0.300,3.756e+04 +2025,210.364738,10,379.500,23.800,8.7930,-379.300,-12.400,-2.200,379.300,12.400,-2.200,3.431e+04 +2025,210.377513,10,378.200,27.000,8.0700,-378.200,-5.800,-2.500,378.200,5.800,-2.500,4.416e+04 +2025,210.381007,10,384.000,25.800,7.3430,-384.000,-3.500,-0.300,384.000,3.500,-0.300,4.032e+04 +2025,210.384501,10,383.900,23.800,6.5610,-383.800,-5.200,-2.200,383.800,5.200,-2.200,3.431e+04 +2025,210.457877,10,363.000,17.200,6.5990,-362.600,-15.200,-6.200,362.600,15.200,-6.200,1.792e+04 +2025,210.484628,10,362.300,17.300,6.6250,-361.500,-21.600,-11.800,361.500,21.600,-11.800,1.813e+04 +2025,210.495111,10,361.400,16.800,6.5330,-360.700,-19.400,-11.600,360.700,19.400,-11.600,1.710e+04 +2025,210.497440,10,361.700,16.700,6.5120,-360.900,-19.100,-12.700,360.900,19.100,-12.700,1.689e+04 +2025,210.498605,10,362.900,16.700,6.6830,-362.100,-22.300,-10.000,362.100,22.300,-10.000,1.689e+04 +2025,210.520698,10,359.400,17.300,6.1520,-358.500,-21.200,-14.600,358.500,21.200,-14.600,1.813e+04 +2025,210.521862,10,357.400,15.900,6.6050,-356.400,-21.100,-14.900,356.400,21.100,-14.900,1.531e+04 +2025,210.539333,10,360.300,15.000,7.1710,-359.100,-25.000,-15.400,359.100,25.000,-15.400,1.363e+04 +2025,210.541662,10,359.200,14.500,6.9030,-358.100,-25.000,-14.500,358.100,25.000,-14.500,1.274e+04 +2025,210.546321,10,358.000,14.900,7.3200,-356.900,-27.200,-9.500,356.900,27.200,-9.500,1.345e+04 +2025,210.560297,10,358.500,15.100,6.9320,-357.400,-27.400,-9.100,357.400,27.400,-9.100,1.381e+04 +2025,210.573108,10,358.700,15.500,7.1610,-357.400,-27.600,-12.900,357.400,27.600,-12.900,1.455e+04 +2025,210.591743,10,357.800,15.900,7.5710,-356.700,-24.600,-11.900,356.700,24.600,-11.900,1.531e+04 +2025,210.638294,10,361.100,16.500,9.0240,-360.500,-21.400,1.500,360.500,21.400,1.500,1.649e+04 +2025,210.666247,10,348.500,13.000,10.1850,-347.500,-24.600,-9.900,347.500,24.600,-9.900,1.024e+04 +2025,210.670905,10,348.100,12.900,12.4330,-346.900,-27.800,-7.300,346.900,27.800,-7.300,1.008e+04 +2025,210.673235,10,349.200,12.700,11.9110,-348.100,-27.100,-3.600,348.100,27.100,-3.600,9.770e+03 +2025,210.694163,10,353.500,13.600,13.2750,-352.100,-28.900,-12.600,352.100,28.900,-12.600,1.120e+04 +2025,210.695328,10,348.800,13.500,12.5830,-347.600,-28.600,-6.100,347.600,28.600,-6.100,1.104e+04 +2025,210.698822,10,346.700,12.800,13.8530,-345.500,-29.000,-7.000,345.500,29.000,-7.000,9.924e+03 +2025,210.712798,10,347.600,13.000,13.9350,-346.100,-30.800,-8.300,346.100,30.800,-8.300,1.024e+04 +2025,210.736055,10,353.100,13.300,13.2670,-351.600,-31.100,-6.400,351.600,31.100,-6.400,1.071e+04 +2025,210.748867,10,357.700,16.600,13.3800,-356.200,-31.900,-7.600,356.200,31.900,-7.600,1.669e+04 +2025,211.375145,10,364.000,23.100,10.5060,-359.400,-54.300,20.200,359.400,54.300,20.200,3.232e+04 +2025,211.397274,10,369.500,24.900,11.3240,-366.400,-41.500,23.100,366.400,41.500,23.100,3.756e+04 +2025,211.403098,10,380.100,24.000,12.7510,-377.300,-35.000,30.900,377.300,35.000,30.900,3.489e+04 +2025,211.407756,10,371.800,19.100,10.5170,-368.500,-39.100,29.600,368.500,39.100,29.600,2.210e+04 +2025,211.734852,10,465.100,65.500,2.7250,-462.800,3.900,45.800,462.800,-3.900,45.800,2.599e+05 +2025,212.383260,10,444.300,52.900,6.6430,-444.200,-1.800,-6.500,444.200,1.800,-6.500,1.695e+05 +2025,212.483351,10,418.100,50.500,7.1510,-417.500,16.000,-16.600,417.500,-16.000,-16.600,1.545e+05 +2025,212.584642,10,436.400,36.100,4.6020,-435.400,-16.200,-25.300,435.400,16.200,-25.300,7.894e+04 +2025,212.656816,10,408.600,43.800,6.2870,-408.600,1.300,-6.700,408.600,-1.300,-6.700,1.162e+05 +2025,212.726661,10,452.100,49.300,3.6790,-448.700,54.500,-10.900,448.700,-54.500,-10.900,1.472e+05 +2025,212.732485,10,443.500,47.500,4.2480,-440.300,53.600,-4.900,440.300,-53.600,-4.900,1.367e+05 +2025,212.737144,10,450.400,50.800,4.7790,-446.700,57.500,-4.000,446.700,-57.500,-4.000,1.563e+05 +2025,212.744132,10,439.300,51.400,5.4010,-435.600,56.300,10.000,435.600,-56.300,10.000,1.600e+05 +2025,212.755779,10,441.100,46.900,5.3550,-436.400,64.100,7.200,436.400,-64.100,7.200,1.332e+05 +2025,212.761602,10,441.600,52.700,4.6420,-438.000,55.800,7.200,438.000,-55.800,7.200,1.682e+05 +2025,212.767426,10,436.400,53.500,5.9030,-434.400,39.300,13.600,434.400,-39.300,13.600,1.734e+05 +2025,212.811648,10,449.500,49.200,6.0130,-444.900,64.400,3.300,444.900,-64.400,3.300,1.466e+05 +2025,212.816306,10,456.200,49.800,6.0900,-450.400,72.700,-4.800,450.400,-72.700,-4.800,1.502e+05 +2025,212.834905,10,405.800,59.700,4.2870,-404.700,28.700,-3.700,404.700,-28.700,-3.700,2.159e+05 +2025,212.910610,10,444.000,43.500,5.0320,-443.900,-10.200,3.600,443.900,10.200,3.600,1.146e+05 +2025,213.044477,10,435.100,50.700,4.8820,-432.500,22.900,-41.800,432.500,-22.900,-41.800,1.557e+05 +2025,213.089864,10,448.600,48.000,5.6790,-448.300,-5.600,-15.700,448.300,5.600,-15.700,1.396e+05 +2025,213.091029,10,460.800,45.200,6.3980,-458.600,-7.800,-44.300,458.600,7.800,-44.300,1.238e+05 +2025,213.110792,10,473.400,41.100,5.4540,-470.800,1.200,-49.900,470.800,-1.200,-49.900,1.023e+05 +2025,213.230719,10,457.100,43.400,5.7430,-456.200,-11.500,-26.200,456.200,11.500,-26.200,1.141e+05 +2025,213.233049,10,456.200,42.300,6.0910,-455.500,-16.200,-20.100,455.500,16.200,-20.100,1.084e+05 +2025,213.235378,10,445.300,44.200,5.6930,-444.900,17.200,8.000,444.900,-17.200,8.000,1.183e+05 +2025,213.260965,10,465.100,43.000,6.4740,-462.700,-16.000,-43.900,462.700,16.000,-43.900,1.120e+05 +2025,213.277271,10,462.000,46.800,6.2760,-460.900,-20.900,-23.200,460.900,20.900,-23.200,1.327e+05 +2025,213.278436,10,462.800,44.800,5.5240,-461.600,-20.700,-26.100,461.600,20.700,-26.100,1.216e+05 +2025,213.280765,10,461.900,46.300,5.6050,-460.500,-14.900,-33.000,460.500,14.900,-33.000,1.299e+05 +2025,213.285387,10,470.800,44.100,6.3820,-469.000,-17.500,-37.200,469.000,17.500,-37.200,1.178e+05 +2025,213.515924,10,513.100,49.300,4.2430,-507.600,36.500,-65.400,507.600,-36.500,-65.400,1.472e+05 +2025,213.534523,10,503.500,46.300,4.9290,-501.100,-1.400,-48.800,501.100,1.400,-48.800,1.299e+05 +2025,213.583404,10,497.900,50.100,5.7060,-497.800,-9.800,-4.800,497.800,9.800,-4.800,1.520e+05 +2025,213.584568,10,499.900,47.500,5.1300,-499.500,-16.900,8.500,499.500,16.900,8.500,1.367e+05 +2025,213.595051,10,470.700,50.300,5.2860,-467.200,29.900,-49.100,467.200,-29.900,-49.100,1.533e+05 +2025,213.642803,10,499.400,43.800,4.9600,-498.600,-25.200,-12.800,498.600,25.200,-12.800,1.162e+05 +2025,213.654450,10,495.400,43.900,4.8130,-494.800,-22.400,-1.600,494.800,22.400,-1.600,1.167e+05 +2025,213.718471,10,491.900,48.800,5.5670,-491.000,26.300,13.800,491.000,-26.300,13.800,1.443e+05 +2025,213.886077,10,509.700,48.500,5.7230,-508.700,-27.800,-15.700,508.700,27.800,-15.700,1.425e+05 +2025,213.978052,10,505.600,50.800,4.4410,-500.800,65.900,-22.600,500.800,-65.900,-22.600,1.563e+05 +2025,214.008334,10,504.600,51.400,4.9370,-499.300,72.600,-4.600,499.300,-72.600,-4.600,1.600e+05 +2025,214.016487,10,495.500,53.300,5.1080,-493.200,37.700,29.400,493.200,-37.700,29.400,1.721e+05 +2025,214.069990,10,492.400,49.900,3.8120,-491.700,-14.500,-20.800,491.700,14.500,-20.800,1.508e+05 +2025,214.092119,10,486.100,60.400,4.8000,-484.500,30.600,-24.500,484.500,-30.600,-24.500,2.210e+05 +2025,214.153848,10,500.100,44.100,4.3740,-496.000,63.800,-2.500,496.000,-63.800,-2.500,1.178e+05 +2025,214.166623,10,498.600,50.000,4.8610,-495.500,54.400,13.900,495.500,-54.400,13.900,1.514e+05 +2025,214.207351,10,516.400,53.900,4.3140,-515.900,-5.300,-20.400,515.900,5.300,-20.400,1.760e+05 +2025,214.313302,10,489.500,58.100,3.4910,-488.300,34.100,5.100,488.300,-34.100,5.100,2.045e+05 +2025,214.608952,10,493.000,48.700,3.3670,-492.200,15.000,25.100,492.200,-15.000,25.100,1.437e+05 +2025,214.746349,10,513.900,49.500,3.5050,-513.200,-27.900,4.200,513.200,27.900,4.200,1.484e+05 +2025,214.752172,10,494.900,46.500,3.0530,-493.600,-32.900,-11.500,493.600,32.900,-11.500,1.310e+05 +2025,214.767313,10,487.800,49.600,3.4130,-486.700,-32.100,-8.000,486.700,32.100,-8.000,1.490e+05 +2025,214.797559,10,528.100,42.000,3.2200,-525.300,-38.000,-38.500,525.300,38.000,-38.500,1.069e+05 +2025,214.818523,10,476.600,48.500,3.5550,-474.900,-39.000,-13.000,474.900,39.000,-13.000,1.425e+05 +2025,214.876722,10,506.300,45.100,3.4060,-504.900,-36.900,7.600,504.900,36.900,7.600,1.232e+05 +2025,214.881381,10,487.200,46.000,3.4580,-485.300,-42.600,-6.300,485.300,42.600,-6.300,1.282e+05 +2025,214.886039,10,490.500,42.600,3.2930,-488.100,-39.400,-26.800,488.100,39.400,-26.800,1.099e+05 +2025,214.896521,10,485.700,47.800,3.2140,-483.500,-44.600,-11.900,483.500,44.600,-11.900,1.384e+05 +2025,214.908168,10,487.100,47.600,3.5800,-484.500,-35.900,-34.900,484.500,35.900,-34.900,1.372e+05 +2025,214.983836,10,492.400,45.700,3.5360,-490.600,-25.500,33.000,490.600,25.500,33.000,1.265e+05 +2025,214.990824,10,484.200,43.200,3.6740,-482.400,-37.300,18.900,482.400,37.300,18.900,1.130e+05 +2025,214.995483,10,497.700,44.100,3.8100,-495.500,-46.100,1.200,495.500,46.100,1.200,1.178e+05 +2025,215.007130,10,487.900,39.500,3.9240,-484.900,-36.900,-38.600,484.900,36.900,-38.600,9.451e+04 +2025,216.936007,10,453.800,47.600,5.9810,-452.100,31.500,-23.200,452.100,-31.500,-23.200,1.372e+05 +2025,216.961630,10,462.600,47.000,5.6080,-458.700,31.600,-50.600,458.700,-31.600,-50.600,1.338e+05 +2025,217.069873,10,457.300,45.400,4.8780,-456.900,-14.300,-12.100,456.900,14.300,-12.100,1.249e+05 +2025,217.072203,10,460.500,49.700,5.7510,-459.700,-24.600,-13.800,459.700,24.600,-13.800,1.496e+05 +2025,217.109473,10,459.700,46.800,5.9900,-457.300,15.300,-44.400,457.300,-15.300,-44.400,1.327e+05 +2025,217.110637,10,461.500,48.500,5.7200,-459.500,12.100,-41.700,459.500,-12.100,-41.700,1.425e+05 +2025,217.135096,10,454.000,48.000,5.2490,-452.200,23.200,-33.900,452.200,-23.200,-33.900,1.396e+05 +2025,217.470346,10,443.400,48.900,5.3810,-443.400,2.100,-6.500,443.400,-2.100,-6.500,1.448e+05 +2025,217.641446,10,442.500,38.400,5.0620,-442.400,-4.400,2.100,442.400,4.400,2.100,8.932e+04 +2025,217.780008,10,462.600,36.200,4.6890,-462.400,-4.200,-10.900,462.400,4.200,-10.900,7.938e+04 +2025,217.782337,10,462.400,36.500,4.9360,-462.200,-5.900,-10.900,462.200,5.900,-10.900,8.070e+04 +2025,218.036095,10,414.300,34.900,5.0120,-413.900,-10.100,-14.000,413.900,10.100,-14.000,7.378e+04 +2025,218.055895,10,417.500,32.500,5.1130,-416.500,-9.600,-26.900,416.500,9.600,-26.900,6.398e+04 +2025,218.062883,10,418.600,32.000,5.0950,-418.000,-12.100,-18.100,418.000,12.100,-18.100,6.203e+04 +2025,218.069835,10,411.800,37.100,5.8140,-411.500,-5.700,-15.800,411.500,5.700,-15.800,8.337e+04 +2025,218.075658,10,432.300,31.500,4.9310,-432.000,-2.100,-14.000,432.000,2.100,-14.000,6.010e+04 +2025,218.116386,10,416.500,32.500,4.3080,-415.500,-11.500,-26.300,415.500,11.500,-26.300,6.398e+04 +2025,218.121045,10,419.300,31.500,5.0510,-418.800,-15.100,-14.200,418.800,15.100,-14.200,6.010e+04 +2025,218.228161,10,392.000,43.100,4.4160,-392.000,-6.500,-2.100,392.000,6.500,-2.100,1.125e+05 +2025,218.337569,10,407.600,34.000,4.7900,-406.500,-19.400,-22.900,406.500,19.400,-22.900,7.002e+04 +2025,218.349216,10,413.100,32.400,4.7110,-412.200,-15.500,-22.100,412.200,15.500,-22.100,6.359e+04 +2025,218.360863,10,423.100,31.300,5.4080,-422.100,-15.300,-25.400,422.100,15.300,-25.400,5.934e+04 +2025,218.371345,10,413.400,31.100,4.4370,-412.100,-20.400,-25.600,412.100,20.400,-25.600,5.859e+04 +2025,218.378334,10,420.800,30.800,4.8310,-419.500,-17.400,-28.200,419.500,17.400,-28.200,5.746e+04 +2025,218.810179,10,373.800,23.200,5.8220,-373.600,-10.500,-8.200,373.600,10.500,-8.200,3.260e+04 +2025,218.812509,10,371.500,20.900,5.3430,-371.000,-8.700,-15.800,371.000,8.700,-15.800,2.646e+04 +2025,218.829979,10,373.900,20.700,6.0550,-373.800,-1.200,-5.800,373.800,1.200,-5.800,2.596e+04 +2025,218.831144,10,373.700,21.800,6.1760,-373.700,-0.800,-6.900,373.700,0.800,-6.900,2.879e+04 +2025,218.853273,10,396.000,24.500,5.4930,-394.800,-5.400,-30.100,394.800,5.400,-30.100,3.636e+04 +2025,218.862591,10,398.400,25.900,5.3850,-397.300,-7.200,-28.800,397.300,7.200,-28.800,4.063e+04 +2025,218.868414,10,397.400,22.400,5.5410,-396.200,-8.100,-29.500,396.200,8.100,-29.500,3.039e+04 +2025,218.890507,10,384.100,23.700,5.6170,-382.800,-2.100,-31.900,382.800,2.100,-31.900,3.402e+04 +2025,218.910307,10,378.100,32.800,5.5640,-377.200,-19.800,-17.600,377.200,19.800,-17.600,6.517e+04 +2025,218.912636,10,381.400,32.700,5.6330,-380.100,-19.700,-24.200,380.100,19.700,-24.200,6.477e+04 +2025,219.500480,10,380.500,12.400,8.0650,-380.300,3.900,-10.600,380.300,-3.900,-10.600,9.314e+03 +2025,219.502810,10,381.000,12.600,8.2490,-380.800,4.700,-12.200,380.800,-4.700,-12.200,9.617e+03 +2025,219.506304,10,378.200,12.800,8.0900,-378.000,3.900,-12.100,378.000,-3.900,-12.100,9.924e+03 +2025,219.519115,10,375.500,13.300,8.4180,-375.300,1.200,-12.400,375.300,-1.200,-12.400,1.071e+04 +2025,219.527232,10,374.700,12.900,8.5100,-374.400,1.100,-13.600,374.400,-1.100,-13.600,1.008e+04 +2025,219.544702,10,376.200,14.000,9.0100,-376.100,2.500,-10.700,376.100,-2.500,-10.700,1.187e+04 +2025,219.577313,10,372.000,15.800,9.0830,-372.000,1.400,-6.300,372.000,-1.400,-6.300,1.512e+04 +2025,219.579643,10,371.900,14.900,9.2270,-371.800,2.000,-7.100,371.800,-2.000,-7.100,1.345e+04 +2025,219.585466,10,370.200,14.600,8.7650,-370.200,2.000,-6.400,370.200,-2.000,-6.400,1.291e+04 +2025,219.595948,10,369.500,15.600,7.7260,-369.400,-0.000,-6.100,369.400,0.000,-6.100,1.474e+04 +2025,219.606430,10,368.600,13.600,8.5310,-368.500,0.300,-9.000,368.500,-0.300,-9.000,1.120e+04 +2025,219.608760,10,368.300,15.100,8.9290,-368.200,-0.000,-5.500,368.200,0.000,-5.500,1.381e+04 +2025,219.615711,10,368.600,14.300,8.4390,-368.500,0.800,-6.800,368.500,-0.800,-6.800,1.239e+04 +2025,219.634346,10,365.400,15.500,7.4340,-365.300,2.200,-4.500,365.300,-2.200,-4.500,1.455e+04 +2025,219.636676,10,363.800,15.900,7.6310,-363.800,2.200,-5.000,363.800,-2.200,-5.000,1.531e+04 +2025,219.658805,10,362.100,16.400,8.0130,-362.100,2.200,-4.000,362.100,-2.200,-4.000,1.629e+04 +2025,219.684428,10,362.200,17.700,6.8700,-362.200,2.200,-0.500,362.200,-2.200,-0.500,1.898e+04 +2025,219.685593,10,362.400,16.800,7.5530,-362.400,1.900,-0.300,362.400,-1.900,-0.300,1.710e+04 +2025,219.687922,10,363.800,17.800,7.3840,-363.800,1.500,-0.100,363.800,-1.500,-0.100,1.919e+04 +2025,219.692581,10,361.900,17.600,7.8930,-361.900,0.900,-0.700,361.900,-0.900,-0.700,1.876e+04 +2025,219.712344,10,357.900,17.700,8.0110,-357.900,-0.100,2.000,357.900,0.100,2.000,1.898e+04 +2025,219.725156,10,357.600,17.400,8.3760,-357.600,-3.300,1.500,357.600,3.300,1.500,1.834e+04 +2025,219.734474,10,354.600,17.500,8.1400,-354.600,-4.100,3.400,354.600,4.100,3.400,1.855e+04 +2025,219.739132,10,352.400,17.300,8.3030,-352.300,-3.500,3.000,352.300,3.500,3.000,1.813e+04 +2025,219.765884,10,352.400,16.700,8.4970,-352.400,-6.200,2.600,352.400,6.200,2.600,1.689e+04 +2025,219.778696,10,353.800,17.700,8.7680,-353.800,-5.900,-0.300,353.800,5.900,-0.300,1.898e+04 +2025,219.795001,10,347.600,17.900,9.4060,-347.400,-11.900,4.000,347.400,11.900,4.000,1.941e+04 +2025,219.799660,10,347.600,17.700,9.2650,-347.400,-11.500,7.800,347.400,11.500,7.800,1.898e+04 +2025,219.801989,10,348.900,17.400,9.1420,-348.700,-11.000,6.100,348.700,11.000,6.100,1.834e+04 +2025,219.848577,10,344.300,20.200,9.8470,-344.000,-11.800,0.800,344.000,11.800,0.800,2.472e+04 +2025,219.855529,10,344.500,21.800,9.9480,-344.400,-7.700,3.600,344.400,7.700,3.600,2.879e+04 +2025,219.896257,10,337.200,20.700,10.7950,-336.900,-15.100,0.600,336.900,15.100,0.600,2.596e+04 +2025,219.903245,10,333.600,21.100,10.9160,-333.200,-15.800,-5.900,333.200,15.800,-5.900,2.697e+04 +2025,219.909069,10,333.600,20.400,11.0870,-333.100,-16.000,-8.500,333.100,16.000,-8.500,2.521e+04 +2025,219.931198,10,339.200,21.100,10.2590,-338.100,-26.000,-10.200,338.100,26.000,-10.200,2.697e+04 +2025,219.938186,10,337.200,22.500,11.4020,-336.500,-20.300,-7.000,336.500,20.300,-7.000,3.067e+04 +2025,219.953327,10,334.000,22.500,11.3060,-333.500,-12.700,-13.800,333.500,12.700,-13.800,3.067e+04 +2025,219.982444,10,331.600,22.900,10.5250,-331.200,-11.800,-12.800,331.200,11.800,-12.800,3.177e+04 +2025,219.984774,10,331.100,23.700,10.2070,-330.700,-11.400,-11.500,330.700,11.400,-11.500,3.402e+04 +2025,220.032490,10,338.100,24.400,12.8880,-337.600,-17.500,-6.500,337.600,17.500,-6.500,3.606e+04 +2025,220.039442,10,340.800,23.800,14.1610,-340.200,-19.600,-7.400,340.200,19.600,-7.400,3.431e+04 +2025,220.080170,10,347.600,24.500,12.9540,-345.900,-28.100,-19.400,345.900,28.100,-19.400,3.636e+04 +2025,220.207085,10,339.600,24.600,13.2250,-337.100,-41.000,-1.300,337.100,41.000,-1.300,3.666e+04 +2025,220.215202,10,338.700,23.700,14.5330,-336.100,-41.500,-9.000,336.100,41.500,-9.000,3.402e+04 +2025,220.236166,10,338.200,22.400,15.6420,-335.600,-40.200,-11.700,335.600,40.200,-11.700,3.039e+04 +2025,220.238496,10,337.700,22.600,15.2440,-334.900,-40.700,-13.200,334.900,40.700,-13.200,3.094e+04 +2025,220.240825,10,337.300,22.600,15.3750,-334.600,-40.300,-12.600,334.600,40.300,-12.600,3.094e+04 +2025,220.254801,10,336.100,24.200,15.2300,-333.200,-42.800,-13.000,333.200,42.800,-13.000,3.547e+04 +2025,220.259460,10,338.000,23.400,15.0680,-335.500,-39.100,-12.500,335.500,39.100,-12.500,3.317e+04 +2025,220.265284,10,337.200,23.500,15.4320,-334.500,-40.000,-13.600,334.500,40.000,-13.600,3.345e+04 +2025,220.281590,10,338.600,25.100,16.2250,-335.800,-43.500,-3.100,335.800,43.500,-3.100,3.816e+04 +2025,220.310707,10,343.200,28.300,15.0260,-340.200,-42.200,-15.200,340.200,42.200,-15.200,4.851e+04 +2025,220.381681,10,348.100,30.900,16.2700,-343.900,-52.400,-13.000,343.900,52.400,-13.000,5.784e+04 +2025,220.392163,10,340.900,29.100,16.0670,-336.100,-51.800,-22.700,336.100,51.800,-22.700,5.129e+04 +2025,220.397986,10,341.500,28.300,15.7050,-336.400,-56.100,-15.900,336.400,56.100,-15.900,4.851e+04 +2025,220.424738,10,343.800,29.800,17.3570,-339.400,-54.400,-1.000,339.400,54.400,-1.000,5.379e+04 +2025,220.427067,10,345.500,30.000,18.1040,-341.100,-54.700,-0.100,341.100,54.700,-0.100,5.452e+04 +2025,220.450361,10,343.500,33.600,18.5680,-338.900,-55.600,-7.800,338.900,55.600,-7.800,6.839e+04 +2025,220.485302,10,367.000,37.100,21.9030,-365.200,-33.700,14.500,365.200,33.700,14.500,8.337e+04 +2025,220.492291,10,348.800,34.000,18.0230,-345.000,-50.600,-8.600,345.000,50.600,-8.600,7.002e+04 +2025,220.495785,10,362.800,36.000,22.7090,-358.900,-53.000,0.100,358.900,53.000,0.100,7.850e+04 +2025,220.502736,10,361.600,36.800,22.2080,-356.900,-55.400,-17.800,356.900,55.400,-17.800,8.203e+04 +2025,220.507395,10,364.900,33.100,20.5980,-359.000,-63.800,-14.600,359.000,63.800,-14.600,6.637e+04 +2025,220.515548,10,369.500,36.600,21.5870,-364.300,-48.900,-37.800,364.300,48.900,-37.800,8.114e+04 +2025,220.519042,10,365.300,62.700,18.2740,-363.200,-20.300,-33.800,363.200,20.300,-33.800,2.381e+05 +2025,220.611017,10,409.800,55.100,19.9940,-407.500,-36.400,-23.400,407.500,36.400,-23.400,1.839e+05 +2025,220.613346,10,406.000,54.200,18.6780,-404.300,-34.800,-12.500,404.300,34.800,-12.500,1.779e+05 +2025,220.615675,10,404.800,53.600,16.3810,-402.500,-40.900,-12.400,402.500,40.900,-12.400,1.740e+05 +2025,220.628487,10,401.700,51.600,15.2470,-398.500,-48.800,-14.800,398.500,48.800,-14.800,1.613e+05 +2025,220.637768,10,393.200,48.400,17.1780,-388.600,-42.600,-42.100,388.600,42.600,-42.100,1.419e+05 +2025,220.654074,10,407.600,56.100,17.7200,-405.000,-46.500,-3.000,405.000,46.500,-3.000,1.906e+05 +2025,220.673837,10,412.500,57.700,18.3640,-410.600,-38.200,-10.100,410.600,38.200,-10.100,2.017e+05 +2025,220.709942,10,416.800,61.000,15.4020,-415.600,-30.700,4.700,415.600,30.700,4.700,2.254e+05 +2025,220.711107,10,419.400,66.300,16.9770,-418.300,-29.300,11.300,418.300,29.300,11.300,2.663e+05 +2025,220.789105,10,456.300,71.600,18.5670,-455.700,-10.300,19.900,455.700,10.300,19.900,3.105e+05 +2025,220.801917,10,458.900,70.600,17.3310,-458.100,7.100,26.600,458.100,-7.100,26.600,3.019e+05 +2025,220.817058,10,464.100,65.900,17.1040,-459.600,42.800,47.800,459.600,-42.800,47.800,2.631e+05 +2025,220.835693,10,456.400,72.400,17.3720,-456.100,8.800,-12.000,456.100,-8.800,-12.000,3.175e+05 +2025,220.911325,10,499.600,83.400,21.2150,-489.200,87.000,51.500,489.200,-87.000,51.500,4.213e+05 +2025,221.019604,10,459.800,58.800,15.1590,-459.500,-18.000,2.500,459.500,18.000,2.500,2.094e+05 +2025,221.035910,10,457.600,54.800,16.9530,-457.400,-6.900,12.900,457.400,6.900,12.900,1.819e+05 +2025,221.039404,10,463.000,56.900,17.6070,-462.800,-0.800,14.900,462.800,0.800,14.900,1.961e+05 +2025,221.044063,10,460.000,54.500,18.6210,-459.400,4.900,23.200,459.400,-4.900,23.200,1.799e+05 +2025,221.070851,10,454.100,52.500,16.0400,-452.600,16.900,33.000,452.600,-16.900,33.000,1.670e+05 +2025,221.092944,10,459.000,55.600,14.9820,-458.100,6.100,28.100,458.100,-6.100,28.100,1.873e+05 +2025,221.108085,10,456.800,55.200,13.8350,-452.800,20.300,56.200,452.800,-20.300,56.200,1.846e+05 +2025,221.129013,10,462.800,55.400,12.2290,-457.600,28.500,63.000,457.600,-28.500,63.000,1.859e+05 +2025,221.142989,10,464.100,56.800,12.3280,-461.400,13.700,48.000,461.400,-13.700,48.000,1.954e+05 +2025,221.153471,10,445.900,55.300,11.2210,-443.500,23.300,39.700,443.500,-23.300,39.700,1.852e+05 +2025,221.167448,10,472.000,62.700,13.5020,-464.800,53.400,62.800,464.800,-53.400,62.800,2.381e+05 +2025,221.173271,10,464.100,54.700,9.9260,-461.300,23.200,45.000,461.300,-23.200,45.000,1.812e+05 +2025,221.193071,10,492.300,62.300,10.8480,-490.900,20.000,30.500,490.900,-20.000,30.500,2.351e+05 +2025,221.295491,10,501.500,57.500,8.7590,-499.700,37.000,20.900,499.700,-37.000,20.900,2.003e+05 +2025,221.311797,10,478.600,67.400,8.0650,-467.000,100.900,-27.800,467.000,-100.900,-27.800,2.752e+05 +2025,221.563226,10,472.300,64.200,9.1200,-470.600,10.700,-39.700,470.600,-10.700,-39.700,2.497e+05 +2025,221.742515,10,512.700,68.900,6.9510,-510.800,37.500,-24.200,510.800,-37.500,-24.200,2.876e+05 +2025,221.807702,10,548.100,56.300,5.3420,-548.000,-4.800,1.200,548.000,4.800,1.200,1.920e+05 +2025,221.835618,10,563.700,58.900,5.7130,-563.200,13.200,-21.000,563.200,-13.200,-21.000,2.101e+05 +2025,221.849594,10,567.100,62.400,4.9450,-565.800,29.700,-25.600,565.800,-29.700,-25.600,2.359e+05 +2025,221.853088,10,579.200,54.900,4.6540,-576.700,46.800,-26.600,576.700,-46.800,-26.600,1.826e+05 +2025,221.854253,10,573.100,54.000,4.8990,-569.500,51.000,-38.200,569.500,-51.000,-38.200,1.766e+05 +2025,221.919440,10,575.300,52.200,4.7360,-574.700,-3.400,-25.400,574.700,3.400,-25.400,1.651e+05 +2025,221.921769,10,578.800,50.600,4.4380,-578.200,-4.200,-25.600,578.200,4.200,-25.600,1.551e+05 +2025,221.940404,10,593.800,53.200,4.9740,-590.000,61.400,-27.300,590.000,-61.400,-27.300,1.714e+05 +2025,221.971815,10,573.000,55.200,4.4700,-570.100,53.900,20.300,570.100,-53.900,20.300,1.846e+05 +2025,221.979968,10,574.300,52.600,4.5860,-571.900,40.200,33.200,571.900,-40.200,33.200,1.676e+05 +2025,221.988120,10,585.200,46.600,4.0100,-584.100,7.000,35.700,584.100,-7.000,35.700,1.315e+05 +2025,222.046319,10,584.000,45.600,4.2040,-581.400,17.000,-51.800,581.400,-17.000,-51.800,1.260e+05 +2025,222.052142,10,562.900,49.900,4.3880,-560.800,22.900,-42.200,560.800,-22.900,-42.200,1.508e+05 +2025,222.087083,10,593.300,46.000,4.2900,-589.200,53.000,-45.000,589.200,-53.000,-45.000,1.282e+05 +2025,222.102188,10,579.800,57.700,3.8890,-578.600,4.400,-36.100,578.600,-4.400,-36.100,2.017e+05 +2025,222.322170,10,620.600,46.700,4.1500,-619.300,5.500,39.400,619.300,-5.500,39.400,1.321e+05 +2025,222.357111,10,568.400,51.800,3.9910,-567.300,12.800,34.200,567.300,-12.800,34.200,1.625e+05 +2025,222.536366,10,554.100,47.100,4.1950,-553.300,-11.600,27.800,553.300,11.600,27.800,1.344e+05 +2025,222.539860,10,559.600,46.100,4.2420,-559.000,-4.800,26.500,559.000,4.800,26.500,1.287e+05 +2025,222.550342,10,564.100,48.400,4.3940,-562.000,26.100,41.200,562.000,-26.100,41.200,1.419e+05 +2025,222.598095,10,544.800,49.100,3.6740,-541.900,55.500,-7.800,541.900,-55.500,-7.800,1.460e+05 +2025,222.600424,10,551.000,48.600,4.0830,-546.900,60.100,-30.400,546.900,-60.100,-30.400,1.431e+05 +2025,222.652762,10,589.300,48.200,4.8100,-588.700,-17.200,-20.600,588.700,17.200,-20.600,1.407e+05 +2025,222.677221,10,535.000,54.500,3.9660,-533.900,18.800,-28.500,533.900,-18.800,-28.500,1.799e+05 +2025,222.692362,10,585.200,50.200,4.6560,-580.300,51.700,-54.600,580.300,-51.700,-54.600,1.526e+05 +2025,222.719150,10,548.300,46.100,4.4410,-545.200,52.100,26.700,545.200,-52.100,26.700,1.287e+05 +2025,222.734254,10,543.100,47.800,3.9490,-543.100,-4.100,2.000,543.100,4.100,2.000,1.384e+05 +2025,222.788995,10,528.300,47.500,4.4490,-528.300,-6.500,-0.900,528.300,6.500,-0.900,1.367e+05 +2025,222.790159,10,522.500,49.300,4.2490,-522.400,4.700,-9.500,522.400,-4.700,-9.500,1.472e+05 +2025,222.814618,10,524.500,46.600,4.3180,-523.500,30.000,12.300,523.500,-30.000,12.300,1.315e+05 +2025,222.819277,10,521.500,52.900,5.0520,-521.500,3.200,-4.300,521.500,-3.200,-4.300,1.695e+05 +2025,222.862334,10,557.600,43.400,3.7340,-556.900,-24.000,14.300,556.900,24.000,14.300,1.141e+05 +2025,223.007848,10,536.000,55.700,3.9490,-535.700,8.000,15.900,535.700,-8.000,15.900,1.879e+05 +2025,223.032271,10,558.400,57.400,4.5580,-555.600,20.900,-51.600,555.600,-20.900,-51.600,1.996e+05 +2025,223.034600,10,543.400,54.700,4.1200,-540.800,18.600,-50.300,540.800,-18.600,-50.300,1.812e+05 +2025,223.071834,10,530.500,53.700,4.1280,-529.800,24.100,12.800,529.800,-24.100,12.800,1.747e+05 +2025,223.103281,10,531.700,54.000,5.1280,-531.200,10.200,-19.200,531.200,-10.200,-19.200,1.766e+05 +2025,223.146375,10,546.500,53.700,4.4190,-545.900,4.000,-24.800,545.900,-4.000,-24.800,1.747e+05 +2025,223.152198,10,529.100,52.600,4.2110,-529.000,9.600,-3.000,529.000,-9.600,-3.000,1.676e+05 +2025,223.181279,10,529.300,48.600,3.9120,-529.100,15.100,-6.200,529.100,-15.100,-6.200,1.431e+05 +2025,223.242972,10,521.100,61.400,4.5300,-520.300,28.000,8.700,520.300,-28.000,8.700,2.284e+05 +2025,223.277876,10,548.600,50.200,4.2030,-548.300,-16.600,-5.700,548.300,16.600,-5.700,1.526e+05 +2025,223.289523,10,534.400,45.500,3.7670,-533.800,-21.400,-14.900,533.800,21.400,-14.900,1.254e+05 +2025,223.358204,10,499.500,47.500,3.4910,-499.200,0.200,-17.700,499.200,-0.200,-17.700,1.367e+05 +2025,223.367522,10,507.300,49.100,4.0280,-506.400,9.900,-27.800,506.400,-9.900,-27.800,1.460e+05 +2025,223.379169,10,519.000,41.300,3.5180,-518.400,-23.600,11.200,518.400,23.600,11.200,1.033e+05 +2025,223.384956,10,521.900,43.400,3.8910,-519.900,-3.900,-45.600,519.900,3.900,-45.600,1.141e+05 +2025,223.425720,10,515.100,40.900,4.2420,-513.300,4.900,-43.400,513.300,-4.900,-43.400,1.013e+05 +2025,223.431544,10,527.400,40.700,4.2370,-525.800,-25.600,-30.700,525.800,25.600,-30.700,1.003e+05 +2025,223.455966,10,512.300,40.400,2.8280,-511.100,-21.200,-27.600,511.100,21.200,-27.600,9.887e+04 +2025,223.464119,10,530.000,46.100,4.8150,-528.800,-29.600,19.100,528.800,29.600,19.100,1.287e+05 +2025,223.478095,10,525.800,43.300,4.6760,-524.000,7.100,-43.100,524.000,-7.100,-43.100,1.136e+05 +2025,223.488577,10,516.800,44.500,4.5680,-515.500,7.900,-35.600,515.500,-7.900,-35.600,1.200e+05 +2025,223.525848,10,513.500,45.600,5.1810,-512.600,-9.300,28.800,512.600,9.300,28.800,1.260e+05 +2025,223.550270,10,512.300,47.600,4.8310,-511.400,15.600,25.400,511.400,-15.600,25.400,1.372e+05 +2025,223.553764,10,511.300,43.800,4.7220,-510.600,-25.400,-0.500,510.600,25.400,-0.500,1.162e+05 +2025,223.568905,10,499.600,46.700,4.4420,-498.800,-15.600,-22.400,498.800,15.600,-22.400,1.321e+05 +2025,223.585174,10,501.000,46.300,4.4950,-500.600,-11.800,15.900,500.600,11.800,15.900,1.299e+05 +2025,223.606138,10,524.200,49.000,5.4280,-523.200,-7.300,30.800,523.200,7.300,30.800,1.454e+05 +2025,223.608468,10,510.500,45.400,4.9010,-509.800,3.700,25.900,509.800,-3.700,25.900,1.249e+05 +2025,223.609632,10,509.800,47.200,4.9660,-509.300,-9.900,19.400,509.300,9.900,19.400,1.349e+05 +2025,223.610797,10,504.300,43.600,4.6260,-504.100,-11.000,10.300,504.100,11.000,10.300,1.151e+05 +2025,223.623609,10,537.100,45.400,4.9760,-536.300,-25.900,14.700,536.300,25.900,14.700,1.249e+05 +2025,223.634091,10,533.400,46.000,5.1970,-532.700,-8.200,26.900,532.700,8.200,26.900,1.282e+05 +2025,223.665501,10,512.800,47.700,4.8730,-511.100,32.500,27.100,511.100,-32.500,27.100,1.378e+05 +2025,223.678313,10,504.500,50.900,4.7350,-504.000,-10.500,-20.500,504.000,10.500,-20.500,1.569e+05 +2025,223.682971,10,509.500,48.200,3.8580,-509.100,1.100,-19.700,509.100,-1.100,-19.700,1.407e+05 +2025,223.700442,10,506.300,46.800,4.9210,-505.400,-7.500,-29.400,505.400,7.500,-29.400,1.327e+05 +2025,223.703936,10,528.400,47.300,5.1780,-526.900,-23.600,-31.800,526.900,23.600,-31.800,1.355e+05 +2025,223.706265,10,518.900,44.300,4.6010,-517.700,-17.000,-31.000,517.700,17.000,-31.000,1.189e+05 +2025,223.716748,10,503.000,45.000,4.2900,-502.900,-8.500,1.400,502.900,8.500,1.400,1.227e+05 +2025,223.744700,10,494.800,49.000,4.5890,-494.700,6.200,-7.900,494.700,-6.200,-7.900,1.454e+05 +2025,223.878568,10,531.900,48.200,5.4250,-530.200,27.200,-31.700,530.200,-27.200,-31.700,1.407e+05 +2025,223.880897,10,525.400,46.100,5.4140,-523.800,21.900,-35.300,523.800,-21.900,-35.300,1.287e+05 +2025,223.885556,10,535.500,46.300,4.9960,-533.800,30.500,-30.800,533.800,-30.500,-30.800,1.299e+05 +2025,223.915801,10,529.900,46.700,5.1740,-528.800,-30.200,15.700,528.800,30.200,15.700,1.321e+05 +2025,223.923954,10,517.900,47.800,5.7840,-516.700,-35.400,2.600,516.700,35.400,2.600,1.384e+05 +2025,223.927448,10,519.500,48.500,5.9560,-518.000,-37.900,-10.800,518.000,37.900,-10.800,1.425e+05 +2025,223.937894,10,545.700,46.200,5.7690,-544.600,-32.100,11.400,544.600,32.100,11.400,1.293e+05 +2025,223.964682,10,525.700,49.500,6.1620,-523.500,-21.700,-43.100,523.500,21.700,-43.100,1.484e+05 +2025,223.968176,10,527.000,46.900,5.7930,-526.200,-21.000,19.700,526.200,21.000,19.700,1.332e+05 +2025,223.975164,10,516.400,50.300,5.9520,-514.500,-43.900,-6.900,514.500,43.900,-6.900,1.533e+05 +2025,224.152125,10,553.700,45.300,4.9000,-551.100,45.400,-28.000,551.100,-45.400,-28.000,1.243e+05 +2025,224.185864,10,532.700,51.300,5.2860,-529.500,-7.000,-58.200,529.500,7.000,-58.200,1.594e+05 +2025,224.219604,10,526.900,53.100,4.3730,-525.300,-28.500,-30.000,525.300,28.500,-30.000,1.708e+05 +2025,224.220769,10,526.900,52.800,4.2200,-525.300,-25.600,-30.900,525.300,25.600,-30.900,1.689e+05 +2025,224.221934,10,526.600,53.900,4.5000,-525.000,-27.300,-30.700,525.000,27.300,-30.700,1.760e+05 +2025,224.224263,10,528.600,52.500,4.2650,-526.900,-28.500,-30.200,526.900,28.500,-30.200,1.670e+05 +2025,224.705646,10,677.800,45.300,2.5590,-669.600,92.600,-50.800,669.600,-92.600,-50.800,1.243e+05 +2025,225.450398,10,521.300,39.600,3.1690,-518.600,20.000,-49.400,518.600,-20.000,-49.400,9.499e+04 +2025,225.478351,10,519.800,42.300,3.2000,-518.200,-40.000,-8.400,518.200,40.000,-8.400,1.084e+05 +2025,225.479515,10,528.700,41.600,2.9080,-527.200,-39.100,-2.000,527.200,39.100,-2.000,1.048e+05 +2025,225.483010,10,512.400,49.000,2.0880,-511.600,-3.200,-28.200,511.600,3.200,-28.200,1.454e+05 +2025,225.584265,10,520.000,44.700,3.5510,-518.800,-34.400,-0.500,518.800,34.400,-0.500,1.210e+05 +2025,225.607559,10,506.600,45.000,3.9150,-505.900,-19.400,16.400,505.900,19.400,16.400,1.227e+05 +2025,225.608724,10,517.600,48.900,3.6870,-516.300,27.200,25.800,516.300,-27.200,25.800,1.448e+05 +2025,225.619206,10,546.100,42.900,4.0250,-545.200,-28.100,-13.600,545.200,28.100,-13.600,1.115e+05 +2025,225.665757,10,527.400,46.100,2.9850,-527.200,-5.900,12.900,527.200,5.900,12.900,1.287e+05 +2025,225.668086,10,513.100,44.000,3.9520,-509.000,28.100,-58.400,509.000,-28.100,-58.400,1.173e+05 +2025,225.691344,10,518.400,49.300,3.5950,-517.700,-19.400,18.800,517.700,19.400,18.800,1.472e+05 +2025,225.692509,10,505.600,43.900,3.6660,-505.200,-8.800,18.800,505.200,8.800,18.800,1.167e+05 +2025,225.753073,10,516.800,41.400,3.3690,-516.400,-11.200,18.100,516.400,11.200,18.100,1.038e+05 +2025,225.758896,10,503.200,42.000,3.5600,-502.500,0.100,26.700,502.500,-0.100,26.700,1.069e+05 +2025,225.762391,10,499.000,42.100,3.5470,-498.300,-2.500,26.000,498.300,2.500,26.000,1.074e+05 +2025,225.799624,10,497.200,44.100,3.5340,-496.300,-29.900,-3.900,496.300,29.900,-3.900,1.178e+05 +2025,225.939316,10,480.300,41.400,3.6720,-479.500,-25.100,11.900,479.500,25.100,11.900,1.038e+05 +2025,225.973092,10,484.900,41.100,3.5990,-484.100,-10.900,25.800,484.100,10.900,25.800,1.023e+05 +2025,226.030089,10,493.700,36.400,3.2360,-493.100,-16.400,17.000,493.100,16.400,17.000,8.026e+04 +2025,226.068488,10,496.400,44.000,3.2660,-495.900,-19.700,9.200,495.900,19.700,9.200,1.173e+05 +2025,226.076641,10,514.900,36.000,3.4370,-514.400,8.100,23.200,514.400,-8.100,23.200,7.850e+04 +2025,226.106923,10,483.000,38.700,3.4020,-482.300,-23.900,10.200,482.300,23.900,10.200,9.072e+04 +2025,226.161664,10,484.400,41.900,3.9520,-483.700,-24.200,9.900,483.700,24.200,9.900,1.063e+05 +2025,226.165122,10,482.500,36.500,3.7350,-481.800,-24.500,11.500,481.800,24.500,11.500,8.070e+04 +2025,226.332766,10,471.500,42.100,3.9210,-471.300,-13.700,-0.200,471.300,13.700,-0.200,1.074e+05 +2025,226.337425,10,462.600,44.000,4.2710,-462.400,-9.100,-11.000,462.400,9.100,-11.000,1.173e+05 +2025,226.378153,10,469.800,44.700,4.1850,-469.300,0.600,-21.000,469.300,-0.600,-21.000,1.210e+05 +2025,226.389800,10,472.300,44.300,4.1160,-468.600,58.900,3.000,468.600,-58.900,3.000,1.189e+05 +2025,226.431693,10,458.500,50.100,3.9800,-458.400,5.900,6.000,458.400,-5.900,6.000,1.520e+05 +2025,226.498008,10,468.900,41.300,4.7130,-467.900,23.200,18.800,467.900,-23.200,18.800,1.033e+05 +2025,226.503831,10,462.200,44.700,4.4900,-461.500,23.500,8.300,461.500,-23.500,8.300,1.210e+05 +2025,226.504996,10,458.800,43.100,4.5690,-457.900,19.700,22.800,457.900,-19.700,22.800,1.125e+05 +2025,226.543431,10,462.500,43.100,3.8390,-462.500,2.600,3.100,462.500,-2.600,3.100,1.125e+05 +2025,226.551584,10,456.500,49.300,4.0280,-456.400,10.200,-4.700,456.400,-10.200,-4.700,1.472e+05 +2025,226.556243,10,459.900,43.400,4.2950,-459.700,13.700,-3.900,459.700,-13.700,-3.900,1.141e+05 +2025,226.602794,10,479.600,41.100,4.1230,-479.500,-11.500,-4.900,479.500,11.500,-4.900,1.023e+05 +2025,226.605123,10,470.900,39.600,4.3260,-470.800,-10.300,-3.300,470.800,10.300,-3.300,9.499e+04 +2025,226.805342,10,461.500,41.600,4.5820,-458.200,46.800,-27.600,458.200,-46.800,-27.600,1.048e+05 +2025,226.816989,10,464.500,38.400,4.0220,-461.300,54.200,0.400,461.300,-54.200,0.400,8.932e+04 +2025,226.825142,10,444.600,49.600,3.8780,-443.200,34.700,-4.700,443.200,-34.700,-4.700,1.490e+05 +2025,226.960138,10,444.200,46.400,5.0150,-444.000,-2.500,14.000,444.000,2.500,14.000,1.304e+05 +2025,226.997408,10,443.000,42.000,4.0770,-442.600,-10.000,16.000,442.600,10.000,16.000,1.069e+05 +2025,227.048655,10,448.500,41.400,4.1210,-447.600,-0.300,29.300,447.600,0.300,29.300,1.038e+05 +2025,227.062595,10,465.200,38.000,4.0510,-464.900,-16.600,7.300,464.900,16.600,7.300,8.747e+04 +2025,227.084724,10,442.800,39.100,3.7610,-442.400,-14.900,8.600,442.400,14.900,8.600,9.261e+04 +2025,227.110311,10,440.900,42.400,4.2320,-440.500,-16.700,-5.300,440.500,16.700,-5.300,1.089e+05 +2025,227.244178,10,448.200,31.000,3.0880,-447.700,-19.300,4.500,447.700,19.300,4.500,5.821e+04 +2025,227.262813,10,440.900,36.300,3.4570,-440.500,-18.000,-5.000,440.500,18.000,-5.000,7.982e+04 +2025,227.407163,10,439.700,34.000,3.2960,-438.800,-26.200,-7.900,438.800,26.200,-7.900,7.002e+04 +2025,227.458373,10,446.400,53.300,4.1380,-443.600,30.500,39.400,443.600,-30.500,39.400,1.721e+05 +2025,227.493278,10,452.300,41.500,3.4940,-452.100,-3.800,-10.300,452.100,3.800,-10.300,1.043e+05 +2025,227.660921,10,414.500,35.300,3.8530,-411.800,39.600,26.000,411.800,-39.600,26.000,7.548e+04 +2025,227.982196,10,407.200,35.500,4.8230,-406.700,-19.800,3.000,406.700,19.800,3.000,7.634e+04 +2025,227.983361,10,407.500,31.900,4.3250,-407.100,-14.300,10.900,407.100,14.300,10.900,6.164e+04 +2025,228.012478,10,377.300,37.700,4.8120,-376.300,0.200,28.200,376.300,-0.200,28.200,8.609e+04 +2025,228.306966,10,399.100,27.800,4.5620,-399.000,-6.700,-1.700,399.000,6.700,-1.700,4.681e+04 +2025,228.310460,10,392.200,29.800,4.9980,-392.000,-8.300,-6.100,392.000,8.300,-6.100,5.379e+04 +2025,228.340706,10,389.700,30.100,4.6340,-389.600,-8.300,-7.100,389.600,8.300,-7.100,5.488e+04 +2025,228.369787,10,352.300,29.100,4.5980,-351.100,24.400,15.400,351.100,-24.400,15.400,5.129e+04 +2025,228.394245,10,352.000,32.600,4.8890,-351.800,-7.500,11.500,351.800,7.500,11.500,6.438e+04 +2025,228.395410,10,355.200,31.700,5.1160,-354.900,-7.200,12.700,354.900,7.200,12.700,6.087e+04 +2025,228.400069,10,359.600,32.400,4.9900,-359.000,-10.300,17.800,359.000,10.300,17.800,6.359e+04 +2025,228.416338,10,339.200,32.800,4.8280,-338.400,21.800,7.600,338.400,-21.800,7.600,6.517e+04 +2025,228.422162,10,345.400,31.100,4.7520,-344.100,25.700,17.400,344.100,-25.700,17.400,5.859e+04 +2025,228.539760,10,364.400,26.500,5.3250,-363.800,-6.100,-20.200,363.800,6.100,-20.200,4.254e+04 +2025,228.560689,10,364.900,27.100,5.6030,-364.500,-10.700,-13.400,364.500,10.700,-13.400,4.449e+04 +2025,228.564183,10,362.200,26.600,5.6500,-361.700,-14.600,-11.800,361.700,14.600,-11.800,4.286e+04 +2025,228.597923,10,359.300,27.100,5.8250,-358.200,-0.700,27.900,358.200,0.700,27.900,4.449e+04 +2025,228.602582,10,365.100,25.900,5.8750,-364.500,-9.900,20.200,364.500,9.900,20.200,4.063e+04 +2025,228.609570,10,364.100,25.500,6.6590,-363.600,1.300,18.300,363.600,-1.300,18.300,3.939e+04 +2025,228.611899,10,359.700,27.000,5.9310,-356.300,45.400,20.400,356.300,-45.400,20.400,4.416e+04 +2025,228.616558,10,364.700,24.000,6.4400,-364.100,5.900,20.300,364.100,-5.900,20.300,3.489e+04 +2025,228.629370,10,352.900,27.400,5.7270,-351.400,22.200,25.000,351.400,-22.200,25.000,4.548e+04 +2025,228.631699,10,353.300,27.200,5.2370,-351.500,28.500,20.900,351.500,-28.500,20.900,4.481e+04 +2025,228.675957,10,360.200,26.300,5.2370,-360.000,-10.100,7.200,360.000,10.100,7.200,4.190e+04 +2025,228.698050,10,362.700,22.500,4.7760,-362.400,-9.500,-12.500,362.400,9.500,-12.500,3.067e+04 +2025,228.701544,10,363.900,22.200,4.7000,-363.500,-11.000,-12.100,363.500,11.000,-12.100,2.985e+04 +2025,228.714356,10,361.400,24.200,5.2780,-361.200,-7.300,-9.600,361.200,7.300,-9.600,3.547e+04 +2025,228.723673,10,365.600,21.400,4.6870,-365.400,-6.600,-10.600,365.400,6.600,-10.600,2.774e+04 +2025,228.738778,10,350.300,25.100,5.0570,-350.000,-4.900,-13.700,350.000,4.900,-13.700,3.816e+04 +2025,228.790024,10,344.400,26.900,5.2840,-344.400,-0.800,0.900,344.400,0.800,0.900,4.383e+04 +2025,228.852882,10,336.500,27.600,6.6090,-336.000,12.900,14.600,336.000,-12.900,14.600,4.614e+04 +2025,228.871517,10,338.800,27.000,6.1970,-338.500,2.300,12.700,338.500,-2.300,12.700,4.416e+04 +2025,228.887786,10,334.500,25.100,6.0780,-333.800,15.900,13.200,333.800,-15.900,13.200,3.816e+04 +2025,228.909916,10,329.700,30.600,6.1170,-329.500,5.000,9.100,329.500,-5.000,9.100,5.672e+04 +2025,228.922691,10,353.300,23.900,5.7580,-353.200,-8.900,1.800,353.200,8.900,1.800,3.460e+04 +2025,228.938997,10,335.300,25.500,5.8370,-334.300,23.100,14.100,334.300,-23.100,14.100,3.939e+04 +2025,228.963456,10,334.700,23.400,5.9820,-333.600,25.000,12.000,333.600,-25.000,12.000,3.317e+04 +2025,228.977432,10,329.700,22.800,5.6010,-328.900,21.200,8.100,328.900,-21.200,8.100,3.149e+04 +2025,228.983256,10,327.700,23.700,5.5140,-326.900,21.100,8.600,326.900,-21.100,8.600,3.402e+04 +2025,229.000726,10,330.700,24.100,5.6770,-329.700,22.400,12.600,329.700,-22.400,12.600,3.518e+04 +2025,229.043784,10,344.300,28.000,5.8510,-343.400,2.600,25.400,343.400,-2.600,25.400,4.749e+04 +2025,229.131064,10,332.900,24.000,5.5150,-332.800,-10.100,4.200,332.800,10.100,4.200,3.489e+04 +2025,229.157815,10,350.500,23.900,5.7770,-349.400,-0.400,27.300,349.400,0.400,27.300,3.460e+04 +2025,229.163639,10,314.100,20.400,4.8530,-314.000,-3.200,3.700,314.000,3.200,3.700,2.521e+04 +2025,229.190427,10,331.900,22.900,5.5320,-331.500,-13.400,9.500,331.500,13.400,9.500,3.177e+04 +2025,229.193921,10,336.400,23.000,5.7890,-336.000,-14.800,-5.400,336.000,14.800,-5.400,3.204e+04 +2025,229.225368,10,335.700,24.600,5.6640,-335.300,-15.600,-0.200,335.300,15.600,-0.200,3.666e+04 +2025,229.226533,10,336.600,23.600,5.2530,-336.300,-13.100,-4.900,336.300,13.100,-4.900,3.374e+04 +2025,229.244003,10,335.400,23.600,5.2220,-335.100,-10.700,-10.200,335.100,10.700,-10.200,3.374e+04 +2025,229.252120,10,339.400,30.900,5.3490,-339.300,-8.100,3.600,339.300,8.100,3.600,5.784e+04 +2025,229.253284,10,342.600,22.600,5.5420,-342.100,-15.300,11.900,342.100,15.300,11.900,3.094e+04 +2025,229.288226,10,330.100,19.300,3.2720,-329.700,-15.600,-2.500,329.700,15.600,-2.500,2.256e+04 +2025,229.307989,10,349.100,20.100,5.3880,-348.600,2.500,-19.300,348.600,-2.500,-19.300,2.447e+04 +2025,229.335942,10,323.400,24.600,5.1900,-323.200,-1.400,-11.600,323.200,1.400,-11.600,3.666e+04 +2025,229.337107,10,326.000,21.700,5.3080,-325.700,-11.300,-8.900,325.700,11.300,-8.900,2.852e+04 +2025,229.348754,10,320.900,21.600,5.1390,-320.700,-11.200,-6.500,320.700,11.200,-6.500,2.826e+04 +2025,229.362694,10,321.600,20.100,5.4760,-321.400,-9.900,-5.000,321.400,9.900,-5.000,2.447e+04 +2025,229.399928,10,321.400,24.000,5.2680,-321.100,-14.300,0.200,321.100,14.300,0.200,3.489e+04 +2025,229.434869,10,323.500,26.400,6.6990,-323.200,-9.900,11.400,323.200,9.900,11.400,4.222e+04 +2025,229.472139,10,322.000,27.200,8.3420,-321.500,-6.600,16.700,321.500,6.600,16.700,4.481e+04 +2025,229.482622,10,325.200,27.400,7.9620,-324.700,-8.300,16.500,324.700,8.300,16.500,4.548e+04 +2025,229.522185,10,320.900,26.700,8.5810,-320.200,-10.800,17.800,320.200,10.800,17.800,4.318e+04 +2025,229.529173,10,316.200,26.700,8.6910,-315.600,-9.400,16.400,315.600,9.400,16.400,4.318e+04 +2025,229.580384,10,332.500,26.400,9.3880,-332.000,-13.600,13.000,332.000,13.600,13.000,4.222e+04 +2025,229.581549,10,334.300,27.300,8.9370,-333.800,-13.300,12.900,333.800,13.300,12.900,4.515e+04 +2025,229.586207,10,331.700,27.800,9.4440,-331.000,-13.100,17.900,331.000,13.100,17.900,4.681e+04 +2025,229.601312,10,306.900,27.800,8.7880,-306.600,-11.300,5.300,306.600,11.300,5.300,4.681e+04 +2025,229.609465,10,308.100,26.700,8.4120,-307.800,-13.300,6.000,307.800,13.300,6.000,4.318e+04 +2025,229.610630,10,307.300,27.300,8.6970,-306.900,-13.100,5.800,306.900,13.100,5.800,4.515e+04 +2025,229.661840,10,315.400,29.500,10.4420,-315.200,-10.900,4.900,315.200,10.900,4.900,5.271e+04 +2025,229.681639,10,312.100,29.000,11.6220,-311.500,-12.100,15.300,311.500,12.100,15.300,5.094e+04 +2025,229.706098,10,313.900,29.500,11.2410,-313.700,-10.900,4.100,313.700,10.900,4.100,5.271e+04 +2025,229.715379,10,309.000,29.400,10.8660,-308.800,-11.500,4.700,308.800,11.500,4.700,5.236e+04 +2025,229.743332,10,308.800,26.100,9.9310,-308.400,-14.600,2.000,308.400,14.600,2.000,4.126e+04 +2025,229.757308,10,307.200,28.300,10.2670,-306.800,-15.100,3.700,306.800,15.100,3.700,4.851e+04 +2025,229.786389,10,310.400,26.200,10.9940,-309.700,-20.800,6.200,309.700,20.800,6.200,4.158e+04 +2025,229.791048,10,307.900,27.200,9.8890,-307.700,-11.400,-1.300,307.700,11.400,-1.300,4.481e+04 +2025,229.801530,10,314.000,29.600,11.2270,-313.600,-16.900,1.400,313.600,16.900,1.400,5.307e+04 +2025,229.824824,10,323.200,27.300,10.7510,-322.600,-19.000,-2.800,322.600,19.000,-2.800,4.515e+04 +2025,229.842295,10,316.000,25.800,13.1110,-315.700,-12.600,-3.300,315.700,12.600,-3.300,4.032e+04 +2025,229.843460,10,321.700,21.700,10.2970,-321.500,-9.500,0.500,321.500,9.500,0.500,2.852e+04 +2025,229.859766,10,325.900,22.900,9.6510,-325.700,-8.500,-1.600,325.700,8.500,-1.600,3.177e+04 +2025,229.900494,10,323.100,22.500,10.7490,-322.500,-19.100,-5.100,322.500,19.100,-5.100,3.067e+04 +2025,229.901658,10,322.400,23.400,11.6060,-321.700,-20.200,-5.900,321.700,20.200,-5.900,3.317e+04 +2025,229.910976,10,321.300,22.400,11.3660,-320.600,-20.700,-5.200,320.600,20.700,-5.200,3.039e+04 +2025,229.919093,10,319.700,22.000,11.0520,-318.900,-22.700,-5.800,318.900,22.700,-5.800,2.932e+04 +2025,229.933069,10,316.800,22.900,11.4420,-316.200,-20.000,-3.000,316.200,20.000,-3.000,3.177e+04 +2025,229.936563,10,317.800,22.100,11.0020,-317.000,-22.600,-2.600,317.000,22.600,-2.600,2.958e+04 +2025,230.015726,10,311.200,20.800,9.5150,-310.600,-18.300,-6.100,310.600,18.300,-6.100,2.621e+04 +2025,230.048338,10,307.000,22.100,9.7890,-306.400,-18.400,-6.300,306.400,18.400,-6.300,2.958e+04 +2025,230.049503,10,307.300,22.100,9.2180,-306.700,-18.100,-4.600,306.700,18.100,-4.600,2.958e+04 +2025,230.065772,10,301.500,21.300,9.3250,-300.700,-21.100,-4.800,300.700,21.100,-4.800,2.748e+04 +2025,230.075090,10,311.800,21.000,8.7610,-311.200,-14.900,-9.700,311.200,14.900,-9.700,2.671e+04 +2025,230.112324,10,301.400,20.400,8.4230,-300.200,-27.000,0.600,300.200,27.000,0.600,2.521e+04 +2025,230.130959,10,304.200,20.000,9.0940,-302.800,-29.900,-3.300,302.800,29.900,-3.300,2.423e+04 +2025,230.140277,10,304.100,22.600,8.5590,-303.200,-23.800,1.500,303.200,23.800,1.500,3.094e+04 +2025,230.142606,10,305.800,22.100,10.0120,-304.600,-26.800,-3.300,304.600,26.800,-3.300,2.958e+04 +2025,230.160040,10,306.800,19.000,8.6990,-305.300,-29.800,-4.400,305.300,29.800,-4.400,2.187e+04 +2025,230.171687,10,305.000,19.200,8.9740,-303.600,-29.200,-6.800,303.600,29.200,-6.800,2.233e+04 +2025,230.189122,10,308.900,19.400,10.7000,-307.000,-33.800,4.000,307.000,33.800,4.000,2.280e+04 +2025,230.206592,10,305.200,18.500,10.3160,-303.500,-32.200,2.700,303.500,32.200,2.700,2.073e+04 +2025,230.220568,10,300.200,20.500,11.4740,-299.000,-25.400,-9.700,299.000,25.400,-9.700,2.546e+04 +2025,230.236874,10,305.200,21.100,11.5590,-304.100,-23.200,-12.400,304.100,23.200,-12.400,2.697e+04 +2025,230.249650,10,305.000,21.100,10.3870,-303.900,-24.900,-4.200,303.900,24.900,-4.200,2.697e+04 +2025,230.267120,10,309.200,20.900,9.9500,-308.100,-26.000,0.300,308.100,26.000,0.300,2.646e+04 +2025,230.278767,10,306.900,22.600,11.9280,-305.400,-30.000,-3.100,305.400,30.000,-3.100,3.094e+04 +2025,230.368413,10,328.100,26.300,18.3790,-325.300,-42.300,3.800,325.300,42.300,3.800,4.190e+04 +2025,230.374237,10,336.100,27.400,15.0050,-334.000,-36.900,4.600,334.000,36.900,4.600,4.548e+04 +2025,230.394000,10,329.900,25.200,20.8990,-327.400,-37.900,13.300,327.400,37.900,13.300,3.847e+04 +2025,230.413800,10,331.900,25.800,23.9300,-329.000,-41.400,12.600,329.000,41.400,12.600,4.032e+04 +2025,230.418459,10,332.000,25.700,23.7600,-329.300,-40.000,12.700,329.300,40.000,12.700,4.001e+04 +2025,230.432399,10,331.400,26.800,25.3910,-328.400,-41.400,15.200,328.400,41.400,15.200,4.351e+04 +2025,230.442881,10,336.700,29.700,22.4690,-334.100,-38.600,15.000,334.100,38.600,15.000,5.343e+04 +2025,230.459187,10,332.900,25.800,18.3110,-330.400,-39.200,11.900,330.400,39.200,11.900,4.032e+04 +2025,230.466175,10,333.000,28.700,21.6900,-330.600,-34.800,20.100,330.600,34.800,20.100,4.989e+04 +2025,230.467340,10,332.700,29.300,22.7730,-330.400,-33.500,20.400,330.400,33.500,20.400,5.200e+04 +2025,230.473164,10,335.300,27.000,20.0430,-334.000,-26.600,12.700,334.000,26.600,12.700,4.416e+04 +2025,230.477786,10,336.600,30.500,24.0650,-334.400,-33.000,19.000,334.400,33.000,19.000,5.635e+04 +2025,230.488268,10,336.100,26.700,18.3180,-333.700,-36.700,16.600,333.700,36.700,16.600,4.318e+04 +2025,230.489433,10,336.200,26.000,18.1870,-334.000,-34.600,15.900,334.000,34.600,15.900,4.095e+04 +2025,230.505739,10,331.100,25.400,17.3350,-328.400,-39.100,15.400,328.400,39.100,15.400,3.908e+04 +2025,230.510398,10,335.900,24.100,16.6150,-333.200,-39.900,13.300,333.200,39.900,13.300,3.518e+04 +2025,230.516221,10,335.600,28.900,20.1750,-332.400,-45.800,7.800,332.400,45.800,7.800,5.059e+04 +2025,230.559315,10,333.600,22.200,20.1730,-331.100,-37.300,16.300,331.100,37.300,16.300,2.985e+04 +2025,230.583738,10,340.900,19.400,19.7820,-339.100,-33.500,9.000,339.100,33.500,9.000,2.280e+04 +2025,230.593055,10,338.900,21.000,20.4650,-337.200,-32.800,10.000,337.200,32.800,10.000,2.671e+04 +2025,230.601208,10,340.700,23.500,17.9190,-338.700,-36.900,7.600,338.700,36.900,7.600,3.345e+04 +2025,230.611690,10,355.300,22.900,14.2680,-353.700,-33.100,6.200,353.700,33.100,6.200,3.177e+04 +2025,230.616349,10,353.400,19.300,17.7400,-352.700,-14.700,16.500,352.700,14.700,16.500,2.256e+04 +2025,230.625631,10,354.100,27.900,23.0530,-352.900,-29.100,1.400,352.900,29.100,1.400,4.715e+04 +2025,230.643101,10,392.200,32.300,21.4720,-392.000,-9.600,4.500,392.000,9.600,4.500,6.320e+04 +2025,230.659407,10,381.300,32.600,20.5650,-381.100,-12.700,5.100,381.100,12.700,5.100,6.438e+04 +2025,230.709453,10,390.700,27.800,20.1530,-390.200,-15.800,10.400,390.200,15.800,10.400,4.681e+04 +2025,230.712911,10,389.000,29.800,20.9780,-388.600,-14.500,9.000,388.600,14.500,9.000,5.379e+04 +2025,230.715240,10,388.800,27.600,20.1130,-388.500,-13.000,7.800,388.500,13.000,7.800,4.614e+04 +2025,230.719899,10,390.700,29.900,19.6840,-390.500,-9.800,9.000,390.500,9.800,9.000,5.415e+04 +2025,230.726887,10,390.400,30.500,19.5180,-390.200,-10.200,9.300,390.200,10.200,9.300,5.635e+04 +2025,230.733875,10,388.100,29.800,19.3190,-387.800,-9.200,10.100,387.800,9.200,10.100,5.379e+04 +2025,230.739699,10,386.100,27.900,18.7360,-385.800,-9.600,8.300,385.800,9.600,8.300,4.715e+04 +2025,230.740863,10,385.100,26.900,18.8710,-384.900,-10.700,5.600,384.900,10.700,5.600,4.383e+04 +2025,230.754840,10,365.700,29.100,21.0250,-365.600,-7.700,6.700,365.600,7.700,6.700,5.129e+04 +2025,230.776933,10,344.900,21.200,18.3650,-344.800,-0.700,-6.500,344.800,0.700,-6.500,2.722e+04 +2025,230.780427,10,346.700,20.600,19.4020,-346.600,-3.300,-4.900,346.600,3.300,-4.900,2.571e+04 +2025,230.793239,10,346.400,17.900,23.3620,-346.200,-7.000,-9.000,346.200,7.000,-9.000,1.941e+04 +2025,230.796733,10,346.400,18.100,20.2550,-346.200,-8.200,-9.300,346.200,8.200,-9.300,1.984e+04 +2025,230.817698,10,340.300,18.600,23.6600,-339.800,-16.000,-6.200,339.800,16.000,-6.200,2.096e+04 +2025,230.824686,10,334.100,19.800,23.0390,-333.700,-14.000,-8.000,333.700,14.000,-8.000,2.375e+04 +2025,230.831674,10,332.300,20.000,23.6150,-332.000,-10.900,-8.400,332.000,10.900,-8.400,2.423e+04 +2025,230.834003,10,331.800,18.800,21.4630,-331.300,-13.300,-10.900,331.300,13.300,-10.900,2.141e+04 +2025,230.853803,10,331.100,19.700,20.8960,-330.700,-16.900,-4.600,330.700,16.900,-4.600,2.351e+04 +2025,230.856133,10,330.400,19.300,21.3720,-330.000,-15.700,-4.300,330.000,15.700,-4.300,2.256e+04 +2025,230.861956,10,333.500,19.100,20.2340,-333.000,-15.700,-6.700,333.000,15.700,-6.700,2.210e+04 +2025,230.871237,10,334.200,20.200,26.5010,-333.700,-16.900,-5.200,333.700,16.900,-5.200,2.472e+04 +2025,230.896861,10,334.900,16.800,25.4160,-334.700,-11.100,5.200,334.700,11.100,5.200,1.710e+04 +2025,230.915459,10,347.500,19.700,41.6380,-346.400,-15.500,23.400,346.400,15.500,23.400,2.351e+04 +2025,230.971328,10,373.000,28.100,42.5570,-372.600,-18.200,3.000,372.600,18.200,3.000,4.783e+04 +2025,230.984140,10,358.600,25.200,37.8770,-357.500,-27.800,1.900,357.500,27.800,1.900,3.847e+04 +2025,231.000446,10,354.500,22.200,27.8380,-353.500,-17.000,20.000,353.500,17.000,20.000,2.985e+04 +2025,231.019081,10,351.800,20.200,27.6050,-350.600,-19.700,19.900,350.600,19.700,19.900,2.472e+04 +2025,231.034222,10,358.500,22.700,28.1930,-357.400,-24.600,14.600,357.400,24.600,14.600,3.121e+04 +2025,231.051656,10,365.500,24.900,34.6960,-363.700,-34.300,10.900,363.700,34.300,10.900,3.756e+04 +2025,231.078444,10,392.400,36.800,21.4550,-392.100,-9.800,-13.100,392.100,9.800,-13.100,8.203e+04 +2025,231.088890,10,386.100,37.200,20.5840,-385.900,-8.300,-7.600,385.900,8.300,-7.600,8.382e+04 +2025,231.095878,10,390.800,34.800,31.1110,-390.700,-6.800,-4.300,390.700,6.800,-4.300,7.336e+04 +2025,231.098207,10,391.000,36.700,25.2980,-390.800,-9.400,-8.000,390.800,9.400,-8.000,8.159e+04 +2025,231.102866,10,390.900,35.700,29.5910,-390.700,-9.400,-8.800,390.700,9.400,-8.800,7.720e+04 +2025,231.109854,10,387.700,34.600,30.8530,-387.400,-9.500,-12.900,387.400,9.500,-12.900,7.252e+04 +2025,231.127325,10,385.900,33.200,28.9520,-385.800,-7.900,4.600,385.800,7.900,4.600,6.677e+04 +2025,231.133148,10,384.900,34.400,27.8000,-384.800,-6.100,-0.500,384.800,6.100,-0.500,7.168e+04 +2025,231.140137,10,375.100,35.500,16.9350,-374.500,-19.200,-8.600,374.500,19.200,-8.600,7.634e+04 +2025,231.170419,10,376.000,38.300,14.8780,-375.800,-8.300,-10.400,375.800,8.300,-10.400,8.886e+04 +2025,231.233276,10,376.400,43.300,16.7840,-376.400,-2.300,2.400,376.400,2.300,2.400,1.136e+05 +2025,231.234441,10,380.300,44.400,15.9140,-380.300,-4.000,-4.600,380.300,4.000,-4.600,1.194e+05 +2025,231.248381,10,389.500,46.000,12.6110,-389.400,3.800,-3.700,389.400,-3.800,-3.700,1.282e+05 +2025,231.261193,10,388.300,47.400,12.9400,-388.300,1.700,-3.100,388.300,-1.700,-3.100,1.361e+05 +2025,231.275169,10,375.800,43.900,12.6030,-375.800,-2.200,-3.800,375.800,2.200,-3.800,1.167e+05 +2025,231.296098,10,371.200,41.300,16.4270,-370.200,-20.000,-18.000,370.200,20.000,-18.000,1.033e+05 +2025,231.306580,10,373.800,38.800,12.9840,-372.900,-20.200,-16.500,372.900,20.200,-16.500,9.119e+04 +2025,231.307745,10,361.900,38.200,13.7330,-361.000,-22.500,-13.600,361.000,22.500,-13.600,8.839e+04 +2025,231.335661,10,397.000,47.700,12.1790,-396.400,-12.400,-19.700,396.400,12.400,-19.700,1.378e+05 +2025,231.358955,10,390.900,43.100,13.8700,-389.100,-11.400,-36.000,389.100,11.400,-36.000,1.125e+05 +2025,231.405543,10,411.500,45.400,15.2440,-409.900,-10.800,-35.000,409.900,10.800,-35.000,1.249e+05 +2025,231.419520,10,406.000,44.000,13.7000,-403.200,-34.800,-33.300,403.200,34.800,-33.300,1.173e+05 +2025,231.423014,10,405.300,44.800,15.6080,-402.300,-32.500,-36.900,402.300,32.500,-36.900,1.216e+05 +2025,231.433460,10,409.200,48.100,17.7360,-406.200,-25.200,-42.900,406.200,25.200,-42.900,1.401e+05 +2025,231.435789,10,406.800,44.000,15.4460,-403.300,-26.300,-46.100,403.300,26.300,-46.100,1.173e+05 +2025,231.481176,10,429.400,52.700,22.2370,-423.200,-33.300,-64.900,423.200,33.300,-64.900,1.682e+05 +2025,231.807585,10,680.700,87.900,5.2990,-666.400,119.600,-70.000,666.400,-119.600,-70.000,4.680e+05 +2025,232.327005,10,615.200,56.700,2.9020,-613.800,29.600,-28.700,613.800,-29.600,-28.700,1.947e+05 +2025,232.375922,10,610.200,51.600,2.4950,-609.400,-18.300,-24.600,609.400,18.300,-24.600,1.613e+05 +2025,232.378252,10,601.200,54.800,2.8150,-600.900,-13.600,13.100,600.900,13.600,13.100,1.819e+05 +2025,232.403839,10,617.000,58.500,3.0140,-615.500,33.800,27.400,615.500,-33.800,27.400,2.073e+05 +2025,232.471355,10,612.900,52.500,2.9610,-612.500,-17.600,11.100,612.500,17.600,11.100,1.670e+05 +2025,232.573776,10,591.700,53.600,2.8920,-589.600,30.900,-38.400,589.600,-30.900,-38.400,1.740e+05 +2025,232.581929,10,598.300,52.200,2.9580,-595.600,49.900,-26.400,595.600,-49.900,-26.400,1.651e+05 +2025,232.583093,10,614.700,45.700,2.7010,-611.700,58.600,-17.400,611.700,-58.600,-17.400,1.265e+05 +2025,232.662220,10,594.400,53.000,2.7970,-592.000,35.300,-40.000,592.000,-35.300,-40.000,1.702e+05 +2025,232.718126,10,581.400,52.400,2.8370,-581.100,-14.400,11.300,581.100,14.400,11.300,1.663e+05 +2025,232.737926,10,596.700,53.500,3.4190,-595.700,-22.700,24.700,595.700,22.700,24.700,1.734e+05 +2025,232.770501,10,582.100,53.200,3.2580,-579.800,43.400,-28.000,579.800,-43.400,-28.000,1.714e+05 +2025,232.798454,10,563.000,52.700,3.1790,-562.400,3.300,24.500,562.400,-3.300,24.500,1.682e+05 +2025,232.895016,10,569.300,46.400,2.7470,-567.200,49.000,0.200,567.200,-49.000,0.200,1.304e+05 +2025,233.137165,10,499.000,46.700,2.3410,-497.400,-22.200,-33.700,497.400,22.200,-33.700,1.321e+05 +2025,233.152270,10,504.300,33.500,3.0590,-502.700,-31.600,-24.000,502.700,31.600,-24.000,6.798e+04 +2025,233.154599,10,499.400,32.300,2.9630,-497.800,-34.500,-20.100,497.800,34.500,-20.100,6.320e+04 +2025,233.159258,10,504.200,29.500,2.8920,-503.200,-23.400,-23.100,503.200,23.400,-23.100,5.271e+04 +2025,233.163917,10,502.700,30.700,3.0200,-501.700,-23.100,-22.400,501.700,23.100,-22.400,5.709e+04 +2025,233.194163,10,511.500,25.600,2.9320,-510.400,-27.200,-19.500,510.400,27.200,-19.500,3.970e+04 +2025,233.400205,10,483.600,29.700,3.1400,-482.600,-26.100,-16.900,482.600,26.100,-16.900,5.343e+04 +2025,233.404864,10,485.600,35.900,4.2240,-483.700,-30.100,-31.100,483.700,30.100,-31.100,7.807e+04 +2025,233.413017,10,474.900,32.200,4.1470,-473.200,-30.000,-25.700,473.200,30.000,-25.700,6.281e+04 +2025,233.418804,10,468.700,30.500,3.8940,-467.700,-26.800,-14.900,467.700,26.800,-14.900,5.635e+04 +2025,233.442098,10,496.100,32.100,3.8920,-495.600,-21.900,-3.000,495.600,21.900,-3.000,6.242e+04 +2025,233.465392,10,504.900,26.600,3.5760,-503.400,-29.600,-25.400,503.400,29.600,-25.400,4.286e+04 +2025,233.489851,10,465.900,32.500,3.2960,-463.400,-32.800,-34.400,463.400,32.800,-34.400,6.398e+04 +2025,233.502663,10,459.300,33.700,3.2630,-457.800,-30.400,-21.000,457.800,30.400,-21.000,6.879e+04 +2025,233.695858,10,455.400,39.100,3.4120,-452.800,3.400,-48.800,452.800,-3.400,-48.800,9.261e+04 +2025,233.697023,10,454.800,38.900,3.3150,-452.400,14.600,-44.400,452.400,-14.600,-44.400,9.166e+04 +2025,233.702846,10,463.000,39.500,3.4400,-461.000,22.500,-36.800,461.000,-22.500,-36.800,9.451e+04 +2025,233.726104,10,452.800,39.400,3.2710,-452.500,4.500,-15.700,452.500,-4.500,-15.700,9.403e+04 +2025,233.758716,10,459.700,40.200,4.2250,-458.000,-32.700,-22.000,458.000,32.700,-22.000,9.789e+04 +2025,233.766868,10,467.100,26.700,3.1930,-465.600,-32.400,-18.400,465.600,32.400,-18.400,4.318e+04 +2025,233.768033,10,467.700,30.100,3.6170,-466.100,-30.700,-23.500,466.100,30.700,-23.500,5.488e+04 +2025,233.783174,10,475.800,32.300,4.1720,-474.200,-35.100,-17.400,474.200,35.100,-17.400,6.320e+04 +2025,233.793656,10,469.800,35.000,3.5310,-468.500,-31.900,-13.200,468.500,31.900,-13.200,7.420e+04 +2025,233.798315,10,473.000,35.500,4.2860,-472.000,-29.600,-4.700,472.000,29.600,-4.700,7.634e+04 +2025,233.799480,10,471.900,37.100,3.7270,-471.600,-14.200,6.700,471.600,14.200,6.700,8.337e+04 +2025,233.802974,10,470.900,32.000,3.9150,-469.700,-33.600,-2.600,469.700,33.600,-2.600,6.203e+04 +2025,233.917041,10,507.900,53.600,4.6370,-505.900,-23.200,-38.500,505.900,23.200,-38.500,1.740e+05 +2025,233.936841,10,529.200,43.600,4.3290,-528.900,15.100,-7.300,528.900,-15.100,-7.300,1.151e+05 +2025,233.968252,10,519.200,48.500,5.2570,-519.000,-2.500,-14.900,519.000,2.500,-14.900,1.425e+05 +2025,234.053203,10,521.900,53.500,4.1920,-519.900,17.200,-41.800,519.900,-17.200,-41.800,1.734e+05 +2025,234.066014,10,535.600,56.000,4.0200,-531.700,29.500,-57.700,531.700,-29.500,-57.700,1.900e+05 +2025,234.081119,10,534.900,53.200,4.0210,-533.000,16.800,-41.800,533.000,-16.800,-41.800,1.714e+05 +2025,234.103248,10,542.300,57.000,3.4520,-539.500,44.100,-33.500,539.500,-44.100,-33.500,1.968e+05 +2025,234.110237,10,535.300,47.900,3.1320,-534.100,20.700,-28.900,534.100,-20.700,-28.900,1.390e+05 +2025,234.177790,10,560.500,51.100,3.6330,-560.200,4.800,18.200,560.200,-4.800,18.200,1.582e+05 +2025,234.190565,10,551.400,54.700,4.4210,-551.000,5.800,20.700,551.000,-5.800,20.700,1.812e+05 +2025,234.198718,10,542.200,48.900,3.9270,-542.100,8.100,0.600,542.100,-8.100,0.600,1.448e+05 +2025,234.203377,10,538.600,45.100,3.1880,-538.400,8.200,-13.000,538.400,-8.200,-13.000,1.232e+05 +2025,234.209200,10,539.900,43.100,3.3710,-539.700,6.200,-12.300,539.700,-6.200,-12.300,1.125e+05 +2025,234.210365,10,538.800,46.700,3.5000,-538.500,6.400,-17.900,538.500,-6.400,-17.900,1.321e+05 +2025,234.226671,10,533.200,51.000,2.8320,-532.600,18.000,-17.400,532.600,-18.000,-17.400,1.576e+05 +2025,234.238281,10,548.300,48.500,3.2080,-548.200,10.300,-2.900,548.200,-10.300,-2.900,1.425e+05 +2025,234.244105,10,540.900,54.400,3.5580,-540.800,11.800,-6.800,540.800,-11.800,-6.800,1.793e+05 +2025,234.275551,10,531.200,47.300,3.7820,-531.100,9.900,-4.800,531.100,-9.900,-4.800,1.355e+05 +2025,234.287162,10,532.500,49.000,3.9080,-531.700,-4.500,-27.700,531.700,4.500,-27.700,1.454e+05 +2025,234.308126,10,531.600,46.500,3.7590,-531.600,2.600,-8.600,531.600,-2.600,-8.600,1.310e+05 +2025,234.365160,10,537.600,51.000,2.6240,-537.500,4.900,-4.400,537.500,-4.900,-4.400,1.576e+05 +2025,234.382631,10,527.800,45.400,2.1990,-527.700,5.300,-5.700,527.700,-5.300,-5.700,1.249e+05 +2025,234.391948,10,526.800,44.400,2.7600,-526.700,8.600,-3.800,526.700,-8.600,-3.800,1.194e+05 +2025,234.432677,10,510.100,46.000,2.1660,-510.000,10.000,-1.000,510.000,-10.000,-1.000,1.282e+05 +2025,234.441994,10,504.700,45.700,2.8330,-504.700,-0.800,4.900,504.700,0.800,4.900,1.265e+05 +2025,234.447818,10,487.700,45.500,2.5330,-487.700,3.200,-6.600,487.700,-3.200,-6.600,1.254e+05 +2025,234.450147,10,489.400,44.200,2.4090,-489.400,3.400,2.100,489.400,-3.400,2.100,1.183e+05 +2025,234.469911,10,494.500,44.600,2.0950,-494.400,11.400,-1.400,494.400,-11.400,-1.400,1.205e+05 +2025,234.531604,10,545.900,48.500,3.0050,-545.700,-0.200,13.300,545.700,0.200,13.300,1.425e+05 +2025,234.535098,10,537.800,54.000,3.3490,-537.800,-5.100,4.100,537.800,5.100,4.100,1.766e+05 +2025,234.559556,10,549.700,39.100,3.2530,-549.600,10.500,-3.200,549.600,-10.500,-3.200,9.261e+04 +2025,234.594497,10,544.600,43.400,3.8700,-544.600,5.900,2.900,544.600,-5.900,2.900,1.141e+05 +2025,234.604943,10,537.900,45.800,3.1720,-537.700,14.500,-2.300,537.700,-14.500,-2.300,1.271e+05 +2025,234.609602,10,541.900,42.400,2.9680,-541.800,9.100,-5.400,541.800,-9.100,-5.400,1.089e+05 +2025,234.627072,10,533.000,47.700,3.9310,-532.900,8.800,-1.900,532.900,-8.800,-1.900,1.378e+05 +2025,234.639884,10,523.600,46.500,3.6030,-522.800,17.900,-22.400,522.800,-17.900,-22.400,1.310e+05 +2025,234.653824,10,518.600,48.800,3.6000,-518.300,15.900,-11.800,518.300,-15.900,-11.800,1.443e+05 +2025,234.659647,10,521.000,46.900,3.6580,-520.600,12.300,-17.800,520.600,-12.300,-17.800,1.332e+05 +2025,234.664306,10,520.500,41.600,3.8770,-520.200,11.700,-12.100,520.200,-11.700,-12.100,1.048e+05 +2025,234.744634,10,519.000,44.800,3.0600,-518.900,8.700,-7.100,518.900,-8.700,-7.100,1.216e+05 +2025,234.750457,10,520.200,42.100,3.2500,-520.000,7.500,-11.800,520.000,-7.500,-11.800,1.074e+05 +2025,234.755116,10,521.400,42.900,3.2660,-521.100,5.200,-17.500,521.100,-5.200,-17.500,1.115e+05 +2025,234.756281,10,518.600,41.800,3.2620,-518.500,7.600,-7.700,518.500,-7.600,-7.700,1.058e+05 +2025,234.757446,10,522.700,43.900,3.3060,-522.500,11.400,-7.900,522.500,-11.400,-7.900,1.167e+05 +2025,234.776081,10,521.900,43.300,3.1080,-521.900,2.800,-6.000,521.900,-2.800,-6.000,1.136e+05 +2025,234.791186,10,523.300,43.200,3.3170,-523.200,11.800,-4.300,523.200,-11.800,-4.300,1.130e+05 +2025,234.801668,10,521.300,42.500,3.2410,-521.200,11.000,-4.600,521.200,-11.000,-4.600,1.094e+05 +2025,234.805162,10,520.400,40.100,3.1440,-520.200,13.200,1.600,520.200,-13.200,1.600,9.740e+04 +2025,234.830786,10,512.400,43.800,3.3020,-512.300,8.000,4.400,512.300,-8.000,4.400,1.162e+05 +2025,234.968111,10,509.000,43.900,3.6050,-509.000,-7.100,4.700,509.000,7.100,4.700,1.167e+05 +2025,235.001888,10,520.900,40.700,4.1690,-520.400,0.300,21.300,520.400,-0.300,21.300,1.003e+05 +2025,235.010041,10,514.500,47.400,3.6150,-513.900,13.200,22.600,513.900,-13.200,22.600,1.361e+05 +2025,235.011206,10,501.200,44.200,3.8500,-501.100,3.600,8.900,501.100,-3.600,8.900,1.183e+05 +2025,235.021688,10,524.600,41.400,3.9040,-524.200,0.300,19.800,524.200,-0.300,19.800,1.038e+05 +2025,235.022853,10,498.800,43.700,4.1210,-498.800,-3.500,2.300,498.800,3.500,2.300,1.157e+05 +2025,235.041452,10,492.300,41.500,4.1840,-492.100,10.100,-5.500,492.100,-10.100,-5.500,1.043e+05 +2025,235.054263,10,494.300,41.500,3.7510,-493.900,17.600,-4.900,493.900,-17.600,-4.900,1.043e+05 +2025,235.056593,10,487.900,40.900,4.0270,-487.800,8.800,-7.400,487.800,-8.800,-7.400,1.013e+05 +2025,235.091497,10,489.200,38.400,3.4780,-488.800,14.300,-13.900,488.800,-14.300,-13.900,8.932e+04 +2025,235.104309,10,482.500,41.200,3.3400,-482.400,9.500,-0.300,482.400,-9.500,-0.300,1.028e+05 +2025,235.106639,10,483.400,41.000,3.4460,-483.300,6.000,-6.400,483.300,-6.000,-6.400,1.018e+05 +2025,235.112462,10,483.500,39.500,3.4380,-483.400,8.100,-1.900,483.400,-8.100,-1.900,9.451e+04 +2025,235.117121,10,485.500,38.200,3.4450,-485.500,5.700,-5.900,485.500,-5.700,-5.900,8.839e+04 +2025,235.205566,10,478.500,40.400,3.6560,-478.500,-2.900,-2.800,478.500,2.900,-2.800,9.887e+04 +2025,235.206730,10,490.000,41.200,3.6610,-490.000,-2.500,5.800,490.000,2.500,5.800,1.028e+05 +2025,235.209060,10,483.700,37.200,2.9020,-483.600,-3.500,4.400,483.600,3.500,4.400,8.382e+04 +2025,235.216012,10,494.600,38.500,3.1520,-494.500,-4.900,10.500,494.500,4.900,10.500,8.979e+04 +2025,235.227659,10,485.200,44.900,4.0550,-485.000,-9.800,6.000,485.000,9.800,6.000,1.221e+05 +2025,235.276540,10,491.900,39.300,3.1210,-491.700,-14.400,0.200,491.700,14.400,0.200,9.356e+04 +2025,235.437197,10,466.300,36.300,2.9390,-466.300,-4.200,4.000,466.300,4.200,4.000,7.982e+04 +2025,235.451173,10,460.500,38.700,2.7550,-460.500,-5.800,-2.200,460.500,5.800,-2.200,9.072e+04 +2025,235.465150,10,462.100,35.700,3.2200,-461.800,-0.000,16.300,461.800,0.000,16.300,7.720e+04 +2025,235.468607,10,465.200,33.500,3.1650,-465.100,-0.300,8.700,465.100,0.300,8.700,6.798e+04 +2025,235.469772,10,459.600,33.600,3.0520,-459.400,-1.300,13.400,459.400,1.300,13.400,6.839e+04 +2025,235.475596,10,458.800,36.700,2.7190,-458.800,-2.100,-0.200,458.800,2.100,-0.200,8.159e+04 +2025,235.487243,10,472.600,35.400,3.7670,-472.300,-14.700,-8.500,472.300,14.700,-8.500,7.591e+04 +2025,235.497725,10,459.600,39.900,3.2240,-459.600,2.000,-2.300,459.600,-2.000,-2.300,9.643e+04 +2025,235.501219,10,460.300,37.000,3.4230,-460.200,-5.700,3.200,460.200,5.700,3.200,8.293e+04 +2025,235.522147,10,455.900,35.300,3.2650,-455.700,-13.500,-3.700,455.700,13.500,-3.700,7.548e+04 +2025,235.533795,10,458.600,34.900,3.5050,-458.400,-12.700,-7.600,458.400,12.700,-7.600,7.378e+04 +2025,235.559381,10,445.700,34.600,2.8860,-445.700,-3.400,-0.800,445.700,3.400,-0.800,7.252e+04 +2025,235.565205,10,448.900,33.400,3.0170,-448.900,-2.000,1.000,448.900,2.000,1.000,6.757e+04 +2025,235.596652,10,441.500,35.200,2.9890,-441.300,0.600,-11.100,441.300,-0.600,-11.100,7.505e+04 +2025,235.598981,10,438.500,35.000,3.0390,-438.400,-8.800,0.300,438.400,8.800,0.300,7.420e+04 +2025,235.607134,10,442.200,35.200,3.0230,-442.100,-8.400,0.400,442.100,8.400,0.400,7.505e+04 +2025,235.618781,10,444.000,36.400,3.4400,-444.000,-7.900,-1.500,444.000,7.900,-1.500,8.026e+04 +2025,235.653685,10,439.500,33.900,3.2500,-439.400,-9.400,-4.100,439.400,9.400,-4.100,6.961e+04 +2025,235.669991,10,441.600,31.700,3.2010,-441.500,-9.700,5.400,441.500,9.700,5.400,6.087e+04 +2025,235.722366,10,433.300,33.700,3.3160,-433.300,-3.600,2.100,433.300,3.600,2.100,6.879e+04 +2025,235.723531,10,435.100,34.300,3.2590,-435.000,-3.600,2.900,435.000,3.600,2.900,7.126e+04 +2025,235.738672,10,440.100,28.100,3.2880,-439.700,-16.000,6.500,439.700,16.000,6.500,4.783e+04 +2025,235.750283,10,426.600,29.500,3.8420,-426.300,-14.600,5.300,426.300,14.600,5.300,5.271e+04 +2025,235.752612,10,429.500,30.000,3.8310,-429.200,-13.300,8.300,429.200,13.300,8.300,5.452e+04 +2025,235.766589,10,433.800,29.100,3.5500,-433.600,-12.900,1.200,433.600,12.900,1.200,5.129e+04 +2025,235.770083,10,429.000,26.600,3.1320,-428.800,-14.300,4.100,428.800,14.300,4.100,4.286e+04 +2025,235.792212,10,422.800,31.400,3.6470,-422.500,-15.400,4.100,422.500,15.400,4.100,5.972e+04 +2025,235.802695,10,419.500,31.000,3.4600,-419.400,-9.600,4.900,419.400,9.600,4.900,5.821e+04 +2025,235.814342,10,420.600,32.400,3.5320,-420.500,-8.600,4.900,420.500,8.600,4.900,6.359e+04 +2025,235.844588,10,421.800,32.500,3.5520,-421.700,-1.400,10.800,421.700,1.400,10.800,6.398e+04 +2025,235.857399,10,423.800,29.600,3.2820,-423.600,-12.200,7.100,423.600,12.200,7.100,5.307e+04 +2025,235.880693,10,420.600,28.200,3.5440,-420.600,-7.600,5.000,420.600,7.600,5.000,4.817e+04 +2025,235.903951,10,410.400,33.800,3.6930,-410.300,-7.400,0.600,410.300,7.400,0.600,6.920e+04 +2025,235.945844,10,408.600,30.400,3.9710,-408.600,-2.800,4.600,408.600,2.800,4.600,5.598e+04 +2025,235.977291,10,409.200,27.900,4.3870,-409.200,3.900,5.500,409.200,-3.900,5.500,4.715e+04 +2025,236.044771,10,404.700,31.700,4.7140,-404.500,-11.200,-0.600,404.500,11.200,-0.600,6.087e+04 +2025,236.050595,10,403.800,32.900,4.7010,-403.600,-12.200,-1.000,403.600,12.200,-1.000,6.557e+04 +2025,236.052924,10,404.300,31.200,4.9030,-404.000,-14.100,-0.100,404.000,14.100,-0.100,5.896e+04 +2025,236.072724,10,402.300,28.900,4.7030,-402.100,-10.900,-5.100,402.100,10.900,-5.100,5.059e+04 +2025,236.093653,10,406.200,27.100,5.7280,-405.900,-6.700,-13.900,405.900,6.700,-13.900,4.449e+04 +2025,236.102970,10,433.900,27.100,5.0620,-433.600,-7.500,14.300,433.600,7.500,14.300,4.449e+04 +2025,236.104135,10,426.200,29.600,5.4410,-425.800,-13.300,13.300,425.800,13.300,13.300,5.307e+04 +2025,236.155382,10,413.800,33.000,4.8750,-413.700,-7.700,2.500,413.700,7.700,2.500,6.596e+04 +2025,236.170523,10,429.800,34.300,5.7120,-429.500,-11.300,12.200,429.500,11.300,12.200,7.126e+04 +2025,236.175182,10,428.500,32.200,5.3210,-428.100,-14.000,12.100,428.100,14.000,12.100,6.281e+04 +2025,236.193781,10,424.100,33.200,6.4320,-423.700,-10.700,14.000,423.700,10.700,14.000,6.677e+04 +2025,236.200769,10,426.000,30.400,6.2180,-425.600,-5.600,17.200,425.600,5.600,17.200,5.598e+04 +2025,236.203099,10,423.500,31.600,6.3390,-423.000,-5.000,19.000,423.000,5.000,19.000,6.049e+04 +2025,236.205428,10,424.100,32.600,6.0330,-423.700,-7.400,16.200,423.700,7.400,16.200,6.438e+04 +2025,236.212416,10,424.400,32.800,6.2380,-423.900,-9.900,17.200,423.900,9.900,17.200,6.517e+04 +2025,236.213581,10,425.700,32.000,6.0830,-425.300,-10.300,15.700,425.300,10.300,15.700,6.203e+04 +2025,236.224063,10,425.500,29.300,6.4470,-425.100,-9.900,15.400,425.100,9.900,15.400,5.200e+04 +2025,236.236839,10,433.000,28.200,6.1150,-432.700,-13.500,7.900,432.700,13.500,7.900,4.817e+04 +2025,236.251980,10,427.300,35.600,7.1280,-427.000,-11.500,11.700,427.000,11.500,11.700,7.677e+04 +2025,236.263627,10,430.000,31.200,6.0220,-429.600,-14.000,12.500,429.600,14.000,12.500,5.896e+04 +2025,236.300861,10,426.500,30.700,6.0160,-426.000,-14.600,13.300,426.000,14.600,13.300,5.709e+04 +2025,236.316002,10,414.200,32.100,6.2070,-414.000,-7.700,-11.300,414.000,7.700,-11.300,6.242e+04 +2025,236.326485,10,414.800,33.300,6.0510,-414.800,-6.600,-1.800,414.800,6.600,-1.800,6.717e+04 +2025,236.334601,10,416.100,32.700,6.1780,-415.700,-17.000,8.700,415.700,17.000,8.700,6.477e+04 +2025,236.336931,10,419.900,33.500,6.2020,-419.500,-15.400,9.300,419.500,15.400,9.300,6.798e+04 +2025,236.369506,10,408.000,31.000,6.0560,-407.600,-16.200,-7.100,407.600,16.200,-7.100,5.821e+04 +2025,236.373000,10,409.800,30.800,6.0970,-409.400,-16.800,-8.300,409.400,16.800,-8.300,5.746e+04 +2025,236.379988,10,406.600,33.500,6.7680,-406.300,-14.800,-6.700,406.300,14.800,-6.700,6.798e+04 +2025,236.489398,10,378.400,20.500,5.1050,-376.700,-35.600,-4.100,376.700,35.600,-4.100,2.546e+04 +2025,236.520845,10,376.000,24.900,4.8330,-374.300,-36.200,0.200,374.300,36.200,0.200,3.756e+04 +2025,236.524339,10,373.900,26.300,5.4000,-372.100,-36.500,-3.200,372.100,36.500,-3.200,4.190e+04 +2025,236.618607,10,367.000,21.800,7.1700,-364.700,-41.100,-6.500,364.700,41.100,-6.500,2.879e+04 +2025,236.740828,10,379.400,18.500,9.3910,-376.400,-46.400,12.500,376.400,46.400,12.500,2.073e+04 +2025,236.745487,10,377.100,20.400,8.3420,-373.000,-54.500,9.900,373.000,54.500,9.900,2.521e+04 +2025,236.775769,10,395.800,24.400,6.2440,-394.300,-30.700,16.400,394.300,30.700,16.400,3.606e+04 +2025,236.783922,10,401.400,28.500,6.7190,-399.900,-34.600,8.800,399.900,34.600,8.800,4.920e+04 +2025,236.842121,10,408.500,26.200,7.0010,-406.400,-27.500,30.600,406.400,27.500,30.600,4.158e+04 +2025,236.884014,10,398.300,28.100,7.5990,-396.800,-34.500,-1.700,396.800,34.500,-1.700,4.783e+04 +2025,237.291370,10,377.200,31.100,7.9860,-375.900,-31.300,2.100,375.900,31.300,2.100,5.859e+04 +2025,237.328604,10,385.100,37.200,9.0740,-384.400,-23.300,-3.600,384.400,23.300,-3.600,8.382e+04 +2025,237.462508,10,423.900,40.900,8.5220,-423.400,-1.200,20.700,423.400,1.200,20.700,1.013e+05 +2025,237.573046,10,417.600,48.400,12.4630,-417.600,0.700,1.400,417.600,-0.700,1.400,1.419e+05 +2025,237.600999,10,413.600,53.500,9.6800,-413.600,1.700,-0.500,413.600,-1.700,-0.500,1.734e+05 +2025,237.602163,10,414.400,52.000,10.1980,-414.400,1.900,-0.500,414.400,-1.900,-0.500,1.638e+05 +2025,237.940910,10,408.000,43.500,9.5070,-406.500,33.800,8.500,406.500,-33.800,8.500,1.146e+05 +2025,237.942075,10,409.500,42.100,9.1360,-408.300,30.900,5.000,408.300,-30.900,5.000,1.074e+05 +2025,238.007225,10,420.200,45.400,10.3480,-420.200,1.800,-4.200,420.200,-1.800,-4.200,1.249e+05 +2025,238.035178,10,427.800,43.500,8.9500,-427.700,2.200,-9.400,427.700,-2.200,-9.400,1.146e+05 +2025,238.036343,10,422.400,48.400,9.3910,-422.300,-0.400,-10.200,422.300,0.400,-10.200,1.419e+05 +2025,238.274963,10,428.700,44.400,7.7730,-428.000,23.900,10.100,428.000,-23.900,10.100,1.194e+05 +2025,238.341278,10,421.400,43.200,8.6470,-419.700,38.200,1.800,419.700,-38.200,1.800,1.130e+05 +2025,238.342443,10,421.200,42.300,8.2020,-419.500,37.300,3.200,419.500,-37.300,3.200,1.084e+05 +2025,238.345937,10,411.300,44.600,8.7260,-410.500,27.200,0.600,410.500,-27.200,0.600,1.205e+05 +2025,238.356419,10,409.300,42.800,8.9950,-408.700,22.500,-1.700,408.700,-22.500,-1.700,1.110e+05 +2025,238.357584,10,402.600,40.900,8.9470,-402.200,18.300,-1.100,402.200,-18.300,-1.100,1.013e+05 +2025,238.383208,10,419.100,37.200,9.5850,-419.000,5.300,6.600,419.000,-5.300,6.600,8.382e+04 +2025,238.385537,10,416.900,37.200,9.7170,-416.900,5.500,2.700,416.900,-5.500,2.700,8.382e+04 +2025,238.398312,10,410.300,42.600,10.4540,-410.000,14.100,0.500,410.000,-14.100,0.500,1.099e+05 +2025,238.499569,10,411.500,37.500,10.4400,-410.200,3.200,31.600,410.200,-3.200,31.600,8.518e+04 +2025,238.501899,10,414.500,38.100,11.0730,-413.900,-0.200,22.400,413.900,0.200,22.400,8.793e+04 +2025,238.514710,10,410.300,37.100,11.2970,-409.900,-2.500,17.400,409.900,2.500,17.400,8.337e+04 +2025,238.517040,10,409.500,37.400,10.9620,-408.500,-0.300,27.800,408.500,0.300,27.800,8.473e+04 +2025,238.539133,10,385.700,38.900,10.8640,-384.400,31.500,-4.100,384.400,-31.500,-4.100,9.166e+04 +2025,238.543792,10,395.000,36.900,10.5440,-393.000,39.300,5.000,393.000,-39.300,5.000,8.248e+04 +2025,238.555439,10,391.600,36.000,9.5450,-391.300,-7.600,12.600,391.300,7.600,12.600,7.850e+04 +2025,238.563592,10,388.400,35.300,9.1660,-388.000,-9.700,15.300,388.000,9.700,15.300,7.548e+04 +2025,238.631072,10,370.000,29.500,7.2090,-369.700,-12.800,8.100,369.700,12.800,8.100,5.271e+04 +2025,238.638060,10,371.300,30.200,7.7710,-370.800,-14.100,14.200,370.800,14.100,14.200,5.525e+04 +2025,238.652037,10,375.600,30.800,8.0420,-374.800,-18.600,14.500,374.800,18.600,14.500,5.746e+04 +2025,238.670672,10,374.400,30.200,6.9530,-374.200,-10.300,3.600,374.200,10.300,3.600,5.525e+04 +2025,238.683483,10,385.300,32.800,6.5580,-385.000,1.600,-13.500,385.000,-1.600,-13.500,6.517e+04 +2025,238.689307,10,369.300,32.800,8.1880,-369.200,-0.800,2.600,369.200,0.800,2.600,6.517e+04 +2025,238.725412,10,340.400,33.300,7.8190,-340.300,-7.900,4.300,340.300,7.900,4.300,6.717e+04 +2025,238.773092,10,336.100,25.700,7.5400,-335.400,-22.400,-1.200,335.400,22.400,-1.200,4.001e+04 +2025,238.789398,10,373.000,28.900,8.6220,-372.500,-4.100,18.900,372.500,4.100,18.900,5.059e+04 +2025,238.796386,10,362.500,25.900,8.1890,-362.100,-16.500,-1.300,362.100,16.500,-1.300,4.063e+04 +2025,238.870891,10,361.800,41.200,7.9740,-361.700,-5.900,7.500,361.700,5.900,7.500,1.028e+05 +2025,238.989619,10,375.300,39.100,7.3560,-374.400,-7.200,24.000,374.400,7.200,24.000,9.261e+04 +2025,239.019865,10,388.500,29.400,7.0220,-387.900,-20.600,1.500,387.900,20.600,1.500,5.236e+04 +2025,239.579725,10,368.400,33.800,8.3510,-366.900,-6.500,-32.200,366.900,6.500,-32.200,6.920e+04 +2025,239.661181,10,391.900,35.000,8.9950,-390.100,28.100,26.100,390.100,-28.100,26.100,7.420e+04 +2025,239.663511,10,392.000,34.400,8.7790,-390.600,22.800,24.600,390.600,-22.800,24.600,7.168e+04 +2025,239.664675,10,394.600,34.100,8.4130,-393.300,24.500,20.500,393.300,-24.500,20.500,7.044e+04 +2025,239.692628,10,377.900,34.300,7.4880,-377.200,-13.000,-18.600,377.200,13.000,-18.600,7.126e+04 +2025,239.697287,10,373.100,34.000,7.5250,-372.600,-12.200,-13.600,372.600,12.200,-13.600,7.002e+04 +2025,239.700781,10,376.000,33.800,7.0460,-375.300,-15.000,-17.000,375.300,15.000,-17.000,6.920e+04 +2025,239.796214,10,373.300,34.300,6.8170,-372.900,-17.100,-0.500,372.900,17.100,-0.500,7.126e+04 +2025,239.799709,10,370.000,33.700,7.0620,-369.000,-12.200,-23.400,369.000,12.200,-23.400,6.879e+04 +2025,239.869555,10,383.200,38.000,7.9330,-382.800,-5.800,-18.000,382.800,5.800,-18.000,8.747e+04 +2025,240.022022,10,375.500,38.200,7.0890,-374.400,25.600,12.200,374.400,-25.600,12.200,8.839e+04 +2025,240.035962,10,387.900,38.900,7.2440,-385.400,42.200,12.900,385.400,-42.200,12.900,9.166e+04 +2025,240.109303,10,389.400,36.700,6.7280,-388.900,-9.600,-16.800,388.900,9.600,-16.800,8.159e+04 +2025,240.167538,10,368.600,38.900,7.0530,-366.800,23.800,-27.400,366.800,-23.800,-27.400,9.166e+04 +2025,240.174526,10,372.100,39.100,6.8780,-371.800,6.700,-13.700,371.800,-6.700,-13.700,9.261e+04 +2025,240.207102,10,383.000,40.700,7.1450,-382.400,-3.100,-20.500,382.400,3.100,-20.500,1.003e+05 +2025,240.209431,10,398.400,36.700,7.6130,-397.300,1.500,-30.700,397.300,-1.500,-30.700,8.159e+04 +2025,240.236183,10,403.700,43.500,6.6590,-403.000,-3.400,-23.300,403.000,3.400,-23.300,1.146e+05 +2025,240.237348,10,404.800,46.600,6.7470,-404.100,2.100,-24.000,404.100,-2.100,-24.000,1.315e+05 +2025,240.272289,10,403.500,39.300,6.8820,-402.100,3.800,-33.000,402.100,-3.800,-33.000,9.356e+04 +2025,240.293217,10,395.500,51.200,7.0280,-394.700,22.200,-12.400,394.700,-22.200,-12.400,1.588e+05 +2025,240.313017,10,383.500,38.900,7.3340,-382.200,5.700,-31.800,382.200,-5.700,-31.800,9.166e+04 +2025,240.331616,10,416.300,31.700,6.6120,-413.700,45.900,-6.700,413.700,-45.900,-6.700,6.087e+04 +2025,240.332780,10,412.800,31.100,6.9140,-409.300,52.400,-10.400,409.300,-52.400,-10.400,5.859e+04 +2025,240.338604,10,406.900,33.700,7.1090,-404.300,45.200,-8.500,404.300,-45.200,-8.500,6.879e+04 +2025,240.349086,10,394.300,35.200,6.7590,-391.700,44.000,-9.000,391.700,-44.000,-9.000,7.505e+04 +2025,240.383991,10,390.800,36.500,7.8870,-389.300,31.100,16.300,389.300,-31.100,16.300,8.070e+04 +2025,240.386320,10,396.700,38.300,7.4790,-394.800,33.600,18.300,394.800,-33.600,18.300,8.886e+04 +2025,240.404955,10,378.400,36.000,8.3680,-376.500,32.300,19.500,376.500,-32.300,19.500,7.850e+04 +2025,240.416602,10,388.200,35.600,8.1140,-385.800,40.800,11.500,385.800,-40.800,11.500,7.677e+04 +2025,240.417767,10,388.200,37.200,8.1880,-385.800,41.300,12.800,385.800,-41.300,12.800,8.382e+04 +2025,240.418932,10,390.200,34.900,7.6520,-387.400,45.200,12.000,387.400,-45.200,12.000,7.378e+04 +2025,240.436402,10,391.600,38.400,6.3980,-391.400,7.100,-7.600,391.400,-7.100,-7.600,8.932e+04 +2025,240.456202,10,392.200,37.800,6.1560,-391.900,-2.700,-15.500,391.900,2.700,-15.500,8.655e+04 +2025,240.472472,10,393.600,36.200,6.4350,-392.600,-3.500,-27.000,392.600,3.500,-27.000,7.938e+04 +2025,240.502754,10,402.700,34.200,5.6880,-400.700,-0.600,-39.600,400.700,0.600,-39.600,7.085e+04 +2025,240.503919,10,384.100,34.300,5.3470,-383.800,-9.800,-11.300,383.800,9.800,-11.300,7.126e+04 +2025,240.509742,10,393.000,40.000,5.6840,-392.900,8.200,1.700,392.900,-8.200,1.700,9.692e+04 +2025,240.520188,10,399.000,38.800,5.7140,-399.000,-0.100,-5.700,399.000,0.100,-5.700,9.119e+04 +2025,240.528341,10,396.300,39.400,6.2840,-396.200,2.800,-9.200,396.200,-2.800,-9.200,9.403e+04 +2025,240.535330,10,399.800,37.800,6.2340,-399.700,0.300,-9.100,399.700,-0.300,-9.100,8.655e+04 +2025,240.550471,10,396.200,36.700,5.7870,-394.600,-2.200,-35.200,394.600,2.200,-35.200,8.159e+04 +2025,240.557459,10,403.200,36.900,5.5600,-402.200,-9.100,-27.300,402.200,9.100,-27.300,8.248e+04 +2025,240.564447,10,396.100,38.800,6.2200,-394.300,3.900,-37.400,394.300,-3.900,-37.400,9.119e+04 +2025,240.573729,10,397.400,38.900,5.9730,-396.900,-0.100,-20.000,396.900,0.100,-20.000,9.166e+04 +2025,240.578387,10,408.400,34.300,5.8000,-406.700,5.600,-36.500,406.700,-5.600,-36.500,7.126e+04 +2025,240.586540,10,405.100,34.200,5.8350,-404.200,-2.400,-26.700,404.200,2.400,-26.700,7.085e+04 +2025,240.599352,10,401.100,36.000,5.4170,-400.900,-5.000,-10.200,400.900,5.000,-10.200,7.850e+04 +2025,240.605176,10,402.300,39.100,6.9180,-402.100,-7.500,-11.900,402.100,7.500,-11.900,9.261e+04 +2025,240.624939,10,384.300,38.200,6.1190,-384.200,-5.700,-5.900,384.200,5.700,-5.900,8.839e+04 +2025,240.627269,10,382.300,38.200,5.0940,-382.300,0.200,-5.900,382.300,-0.200,-5.900,8.839e+04 +2025,240.628433,10,386.800,34.700,4.9600,-386.800,-6.800,-2.100,386.800,6.800,-2.100,7.294e+04 +2025,240.643575,10,376.500,37.400,4.5980,-376.200,13.000,-6.900,376.200,-13.000,-6.900,8.473e+04 +2025,240.829819,10,386.300,39.500,5.3270,-385.900,11.300,-13.500,385.900,-11.300,-13.500,9.451e+04 +2025,240.843795,10,390.000,38.600,5.6240,-390.000,2.400,4.900,390.000,-2.400,4.900,9.025e+04 +2025,240.844960,10,399.100,40.500,6.0090,-399.000,-5.400,-7.800,399.000,5.400,-7.800,9.936e+04 +2025,240.856571,10,397.300,35.800,5.7420,-397.100,-9.700,-10.100,397.100,9.700,-10.100,7.763e+04 +2025,240.863559,10,404.000,37.900,6.1680,-403.000,-8.700,-26.500,403.000,8.700,-26.500,8.701e+04 +2025,240.893841,10,387.200,39.000,5.8750,-387.100,8.500,2.800,387.100,-8.500,2.800,9.213e+04 +2025,241.132425,10,423.700,34.200,4.3320,-421.300,-3.200,-44.800,421.300,3.200,-44.800,7.085e+04 +2025,241.138248,10,407.700,38.400,4.3660,-403.800,20.800,-52.500,403.800,-20.800,-52.500,8.932e+04 +2025,241.231352,10,421.900,40.900,4.6180,-417.700,56.100,18.200,417.700,-56.100,18.200,1.013e+05 +2025,241.232517,10,422.300,39.000,4.7820,-418.100,58.400,9.800,418.100,-58.400,9.800,9.213e+04 +2025,241.237176,10,403.400,43.600,4.7020,-400.400,41.400,26.300,400.400,-41.400,26.300,1.151e+05 +2025,241.256940,10,400.300,42.200,4.5920,-399.300,5.800,26.800,399.300,-5.800,26.800,1.079e+05 +2025,241.276740,10,401.900,40.400,4.7110,-401.400,-5.500,19.500,401.400,5.500,19.500,9.887e+04 +2025,241.298833,10,404.200,42.400,4.4480,-403.700,-11.500,14.400,403.700,11.500,14.400,1.089e+05 +2025,241.428043,10,391.500,42.000,4.7920,-390.700,-11.300,-21.100,390.700,11.300,-21.100,1.069e+05 +2025,241.556088,10,385.700,42.000,5.5270,-383.300,43.100,-0.300,383.300,-43.100,-0.300,1.069e+05 +2025,242.588526,10,377.100,42.400,6.6790,-375.900,-5.000,30.400,375.900,5.000,30.400,1.089e+05 +2025,242.860886,10,356.900,21.600,6.7750,-355.200,-29.300,18.500,355.200,29.300,18.500,2.826e+04 +2025,242.863215,10,364.000,20.900,7.1990,-360.900,-47.300,7.200,360.900,47.300,7.200,2.646e+04 +2025,242.900449,10,368.800,20.300,6.9430,-365.900,-46.200,-1.800,365.900,46.200,-1.800,2.496e+04 +2025,242.910932,10,368.500,19.700,7.3310,-365.900,-42.800,9.700,365.900,42.800,9.700,2.351e+04 +2025,242.924908,10,369.800,18.900,6.6880,-367.100,-42.800,14.100,367.100,42.800,14.100,2.164e+04 +2025,242.960978,10,387.000,42.600,7.3550,-386.400,-17.500,-14.400,386.400,17.500,-14.400,1.099e+05 +2025,243.051752,10,393.000,51.900,11.8790,-392.000,16.300,-22.600,392.000,-16.300,-22.600,1.632e+05 +2025,243.133246,10,404.500,51.100,13.0420,-403.400,18.100,-24.000,403.400,-18.100,-24.000,1.582e+05 +2025,243.139069,10,400.300,44.300,9.8320,-399.600,17.600,-14.400,399.600,-17.600,-14.400,1.189e+05 +2025,243.153009,10,400.700,50.000,11.6070,-400.000,18.400,-13.600,400.000,-18.400,-13.600,1.514e+05 +2025,243.161162,10,406.500,46.400,11.4120,-406.000,17.800,-8.500,406.000,-17.800,-8.500,1.304e+05 +2025,243.247313,10,407.400,49.300,7.6440,-407.300,-5.800,-6.500,407.300,5.800,-6.500,1.472e+05 +2025,243.253137,10,405.500,52.900,8.0590,-405.300,-6.100,-10.500,405.300,6.100,-10.500,1.695e+05 +2025,243.256631,10,410.700,51.100,7.7500,-410.400,-3.900,-14.400,410.400,3.900,-14.400,1.582e+05 +2025,243.285712,10,409.300,46.000,7.6240,-409.300,-3.800,0.400,409.300,3.800,0.400,1.282e+05 +2025,243.296195,10,406.100,48.800,7.5670,-405.800,7.500,11.600,405.800,-7.500,11.600,1.443e+05 +2025,243.304348,10,406.600,50.400,7.9950,-405.900,-4.300,-22.700,405.900,4.300,-22.700,1.539e+05 +2025,243.319489,10,426.900,48.400,7.4810,-425.100,11.000,-38.100,425.100,-11.000,-38.100,1.419e+05 +2025,243.326477,10,432.800,41.100,5.9640,-431.400,7.300,-34.100,431.400,-7.300,-34.100,1.023e+05 +2025,243.347405,10,434.900,54.000,6.9810,-434.300,21.100,-2.300,434.300,-21.100,-2.300,1.766e+05 +2025,243.383475,10,438.200,53.600,7.1290,-437.800,10.800,-17.300,437.800,-10.800,-17.300,1.740e+05 +2025,243.402110,10,435.600,51.100,6.0790,-435.300,9.800,-14.200,435.300,-9.800,-14.200,1.582e+05 +2025,243.412593,10,436.700,54.300,7.4060,-435.400,33.100,-3.900,435.400,-33.100,-3.900,1.786e+05 +2025,243.414922,10,430.300,53.500,6.8760,-428.100,41.600,11.500,428.100,-41.600,11.500,1.734e+05 +2025,243.425405,10,427.300,53.200,7.5450,-426.100,25.200,-20.100,426.100,-25.200,-20.100,1.714e+05 +2025,243.433521,10,436.600,48.100,6.2230,-435.300,18.200,-28.400,435.300,-18.200,-28.400,1.401e+05 +2025,243.445168,10,451.000,56.100,5.4980,-448.300,27.000,-41.200,448.300,-27.000,-41.200,1.906e+05 +2025,243.551084,10,444.000,45.000,5.2270,-443.800,11.100,8.700,443.800,-11.100,8.700,1.227e+05 +2025,243.553413,10,444.400,47.700,4.8220,-444.200,10.400,5.700,444.200,-10.400,5.700,1.378e+05 +2025,243.625553,10,447.700,44.800,5.7880,-447.600,6.200,-4.500,447.600,-6.200,-4.500,1.216e+05 +2025,243.626717,10,450.500,43.600,5.7760,-450.400,3.300,-11.500,450.400,-3.300,-11.500,1.151e+05 +2025,243.667482,10,435.200,45.600,5.9850,-434.800,18.100,-3.000,434.800,-18.100,-3.000,1.260e+05 +2025,243.670976,10,441.100,45.900,6.1480,-440.700,13.400,-14.500,440.700,-13.400,-14.500,1.276e+05 +2025,243.674470,10,442.900,45.400,6.4820,-442.000,15.400,-24.000,442.000,-15.400,-24.000,1.249e+05 +2025,243.710576,10,440.400,45.900,5.3850,-440.200,10.100,-11.400,440.200,-10.100,-11.400,1.276e+05 +2025,243.782715,10,480.800,39.100,5.3900,-480.700,5.600,-6.900,480.700,-5.600,-6.900,9.261e+04 +2025,243.787373,10,470.300,38.800,5.5490,-469.900,1.200,-19.400,469.900,-1.200,-19.400,9.119e+04 +2025,243.792032,10,469.900,37.100,4.7800,-469.900,0.300,-6.200,469.900,-0.300,-6.200,8.337e+04 +2025,244.043428,10,450.200,34.600,3.9590,-449.700,-11.400,-19.300,449.700,11.400,-19.300,7.252e+04 +2025,244.236661,10,429.100,35.700,4.0660,-427.300,-6.300,-38.700,427.300,6.300,-38.700,7.720e+04 +2025,244.335588,10,423.600,33.800,4.2880,-423.200,-5.700,-19.500,423.200,5.700,-19.500,6.920e+04 +2025,244.426363,10,424.100,29.900,5.1250,-424.000,-6.100,-0.600,424.000,6.100,-0.600,5.415e+04 +2025,244.440340,10,418.900,36.600,5.0290,-418.800,-7.100,-2.100,418.800,7.100,-2.100,8.114e+04 +2025,244.460103,10,420.600,28.500,4.6360,-420.300,-8.200,-12.300,420.300,8.200,-12.300,4.920e+04 +2025,244.461268,10,416.000,31.000,4.8120,-415.700,-7.600,-16.100,415.700,7.600,-16.100,5.821e+04 +2025,244.500868,10,388.000,36.200,5.2270,-387.800,7.500,8.800,387.800,-7.500,8.800,7.938e+04 +2025,244.564855,10,397.400,33.200,5.1340,-397.400,-4.700,2.400,397.400,4.700,2.400,6.677e+04 +2025,244.682417,10,426.000,30.300,4.7700,-426.000,-5.100,-0.100,426.000,5.100,-0.100,5.561e+04 +2025,244.698686,10,417.200,33.800,5.6300,-417.000,-8.100,-7.700,417.000,8.100,-7.700,6.920e+04 +2025,244.706839,10,375.900,44.700,4.3350,-375.400,16.900,-9.300,375.400,-16.900,-9.300,1.210e+05 +2025,244.717322,10,413.300,32.100,5.2120,-413.100,-11.000,-8.900,413.100,11.000,-8.900,6.242e+04 +2025,244.720816,10,399.300,35.500,5.3930,-397.500,9.000,-36.900,397.500,-9.000,-36.900,7.634e+04 +2025,244.733628,10,409.000,34.100,5.3540,-408.800,-11.400,-6.200,408.800,11.400,-6.200,7.044e+04 +2025,244.740616,10,382.100,35.000,5.2930,-382.000,-2.700,-8.300,382.000,2.700,-8.300,7.420e+04 +2025,244.768533,10,388.600,38.800,7.1540,-388.500,-4.700,-6.500,388.500,4.700,-6.500,9.119e+04 +2025,244.812755,10,395.100,37.200,6.1920,-394.500,-11.000,-18.700,394.500,11.000,-18.700,8.382e+04 +2025,244.813920,10,398.500,35.700,5.4490,-398.000,-10.400,-16.900,398.000,10.400,-16.900,7.720e+04 +2025,244.820908,10,401.100,32.900,5.4710,-400.700,-13.700,-13.400,400.700,13.700,-13.400,6.557e+04 +2025,245.073103,10,577.600,76.700,19.5930,-575.600,-47.000,-9.200,575.600,47.000,-9.200,3.563e+05 +2025,245.283807,10,598.000,59.100,18.3840,-597.100,31.900,6.900,597.100,-31.900,6.900,2.116e+05 +2025,245.291924,10,593.300,63.400,14.7150,-592.400,31.500,-3.100,592.400,-31.500,-3.100,2.435e+05 +2025,245.300077,10,608.900,69.200,12.9370,-606.700,51.700,1.300,606.700,-51.700,1.300,2.901e+05 +2025,245.381570,10,592.000,37.700,8.1520,-586.100,61.000,-57.700,586.100,-61.000,-57.700,8.609e+04 +2025,245.389687,10,592.700,61.200,8.8210,-591.600,33.300,-14.400,591.600,-33.300,-14.400,2.269e+05 +2025,245.459533,10,574.000,20.400,14.0880,-573.700,-3.100,18.900,573.700,3.100,18.900,2.521e+04 +2025,245.468851,10,574.900,16.500,13.9990,-574.600,-6.400,15.700,574.600,6.400,15.700,1.649e+04 +2025,245.477004,10,570.900,16.700,10.4300,-570.500,-2.400,23.600,570.500,2.400,23.600,1.689e+04 +2025,245.482827,10,562.900,18.200,9.9180,-562.100,-2.400,29.300,562.100,2.400,29.300,2.006e+04 +2025,245.493273,10,557.000,16.900,7.7360,-556.700,3.500,17.400,556.700,-3.500,17.400,1.730e+04 +2025,245.497932,10,563.300,14.700,7.4310,-563.100,1.400,13.000,563.100,-1.400,13.000,1.309e+04 +2025,245.537496,10,563.100,14.600,5.8670,-563.100,-4.300,2.900,563.100,4.300,2.900,1.291e+04 +2025,245.556131,10,571.200,12.900,5.7710,-571.100,-3.600,-8.900,571.100,3.600,-8.900,1.008e+04 +2025,245.595695,10,586.300,15.500,4.5760,-585.700,3.600,-26.700,585.700,-3.600,-26.700,1.455e+04 +2025,245.596860,10,579.300,15.200,4.3420,-578.900,2.800,-20.100,578.900,-2.800,-20.100,1.399e+04 +2025,245.602683,10,582.100,13.000,4.3080,-581.600,-2.400,-25.200,581.600,2.400,-25.200,1.024e+04 +2025,245.788891,10,548.100,19.600,13.9040,-545.600,-9.300,-50.600,545.600,9.300,-50.600,2.327e+04 +2025,245.798209,10,560.800,17.700,15.1220,-558.000,1.700,-56.100,558.000,-1.700,-56.100,1.898e+04 +2025,245.823796,10,569.000,17.600,12.9800,-566.300,5.300,-54.700,566.300,-5.300,-54.700,1.876e+04 +2025,245.835443,10,563.900,13.800,8.3650,-562.100,4.700,-44.000,562.100,-4.700,-44.000,1.154e+04 +2025,245.899466,10,554.200,14.200,5.6630,-551.800,29.700,-41.600,551.800,-29.700,-41.600,1.221e+04 +2025,245.912278,10,555.600,13.100,4.5010,-553.900,22.600,-37.900,553.900,-22.600,-37.900,1.040e+04 +2025,245.921595,10,548.100,13.400,3.5220,-546.000,26.400,-39.200,546.000,-26.400,-39.200,1.088e+04 +2025,245.958830,10,543.200,12.800,2.9970,-541.600,6.800,-40.100,541.600,-6.800,-40.100,9.924e+03 +2025,245.964653,10,542.700,14.100,3.4800,-541.400,6.900,-36.700,541.400,-6.900,-36.700,1.204e+04 +2025,246.025146,10,542.400,13.800,4.0910,-541.000,-16.400,-35.200,541.000,16.400,-35.200,1.154e+04 +2025,246.043781,10,536.100,13.600,3.7900,-534.800,8.200,-36.600,534.800,-8.200,-36.600,1.120e+04 +2025,246.061252,10,537.300,13.100,3.2860,-536.700,-12.200,-21.100,536.700,12.200,-21.100,1.040e+04 +2025,246.064746,10,532.700,12.700,2.5740,-532.300,-10.000,-18.400,532.300,10.000,-18.400,9.770e+03 +2025,246.070569,10,526.900,13.900,2.5620,-525.400,-0.100,-40.300,525.400,0.100,-40.300,1.170e+04 +2025,246.072863,10,531.100,14.800,2.5330,-530.600,-7.800,-20.200,530.600,7.800,-20.200,1.327e+04 +2025,246.079851,10,531.800,14.700,2.3740,-531.700,2.200,-10.100,531.700,-2.200,-10.100,1.309e+04 +2025,246.081016,10,532.600,14.600,2.3270,-532.600,-0.200,-7.800,532.600,0.200,-7.800,1.291e+04 +2025,246.108969,10,539.400,15.200,3.2020,-537.500,-23.800,-38.400,537.500,23.800,-38.400,1.399e+04 +2025,246.114792,10,536.100,11.800,2.6640,-535.000,-24.800,-22.400,535.000,24.800,-22.400,8.434e+03 +2025,246.120616,10,536.000,16.200,3.0160,-535.000,-21.300,-26.300,535.000,21.300,-26.300,1.590e+04 +2025,246.126403,10,532.800,15.600,3.2070,-531.900,-19.700,-23.800,531.900,19.700,-23.800,1.474e+04 +2025,246.128732,10,526.600,16.100,2.5930,-526.500,-6.400,-11.800,526.500,6.400,-11.800,1.570e+04 +2025,246.132227,10,528.300,14.500,2.3940,-527.100,-22.000,-26.900,527.100,22.000,-26.900,1.274e+04 +2025,246.133391,10,528.400,17.200,2.3930,-526.800,-14.600,-38.000,526.800,14.600,-38.000,1.792e+04 +2025,246.139215,10,529.500,12.900,2.4790,-528.400,-26.600,-21.400,528.400,26.600,-21.400,1.008e+04 +2025,246.166003,10,521.700,14.200,2.1520,-521.500,-9.500,-13.900,521.500,9.500,-13.900,1.221e+04 +2025,246.189261,10,526.200,14.000,2.5110,-524.300,-21.400,-39.800,524.300,21.400,-39.800,1.187e+04 +2025,246.216050,10,522.400,14.800,2.3390,-521.500,-25.700,-17.200,521.500,25.700,-17.200,1.327e+04 +2025,246.223002,10,529.100,14.600,2.1190,-527.800,-23.400,-28.600,527.800,23.400,-28.600,1.291e+04 +2025,246.242802,10,522.600,17.300,2.1230,-522.300,-0.400,-18.100,522.300,0.400,-18.100,1.813e+04 +2025,246.250955,10,518.000,18.500,1.9860,-517.800,9.100,6.700,517.800,-9.100,6.700,2.073e+04 +2025,246.259108,10,516.000,15.900,1.8720,-515.900,-1.600,8.100,515.900,1.600,8.100,1.531e+04 +2025,246.270755,10,514.300,15.300,1.8390,-513.800,-18.600,13.700,513.800,18.600,13.700,1.418e+04 +2025,246.282366,10,511.400,16.500,1.6530,-511.200,-11.500,8.000,511.200,11.500,8.000,1.649e+04 +2025,246.289354,10,513.900,17.900,1.9580,-513.500,-18.400,8.000,513.500,18.400,8.000,1.941e+04 +2025,246.303330,10,500.300,18.800,1.8280,-499.700,-3.100,23.500,499.700,3.100,23.500,2.141e+04 +2025,246.310319,10,505.800,16.600,1.7540,-504.900,-6.200,29.100,504.900,6.200,29.100,1.669e+04 +2025,246.346389,10,512.400,15.900,1.7780,-511.700,-26.000,7.400,511.700,26.000,7.400,1.531e+04 +2025,246.353377,10,506.300,15.700,1.7760,-505.500,-21.800,16.100,505.500,21.800,16.100,1.493e+04 +2025,246.358036,10,505.900,14.100,1.5960,-505.300,-22.100,11.300,505.300,22.100,11.300,1.204e+04 +2025,246.373141,10,494.700,16.600,2.1680,-494.300,-16.300,6.500,494.300,16.300,6.500,1.669e+04 +2025,246.391776,10,490.100,17.500,2.3150,-489.900,-11.900,6.800,489.900,11.900,6.800,1.855e+04 +2025,246.416235,10,485.600,19.000,2.3590,-485.600,0.100,-5.200,485.600,-0.100,-5.200,2.187e+04 +2025,246.420894,10,483.300,15.100,2.6390,-483.200,-10.400,2.800,483.200,10.400,2.800,1.381e+04 +2025,246.451140,10,478.900,16.300,3.5220,-478.800,-11.500,0.700,478.800,11.500,0.700,1.609e+04 +2025,246.452305,10,472.400,16.900,4.2370,-472.400,-1.400,-4.500,472.400,1.400,-4.500,1.730e+04 +2025,246.461623,10,461.900,17.600,6.0220,-461.500,0.900,-17.400,461.500,-0.900,-17.400,1.876e+04 +2025,246.476764,10,461.900,16.300,5.2060,-461.800,4.800,-9.900,461.800,-4.800,-9.900,1.609e+04 +2025,246.500022,10,468.400,14.400,3.3190,-468.200,-13.600,0.600,468.200,13.600,0.600,1.256e+04 +2025,246.518657,10,469.200,16.500,3.0340,-468.800,-18.900,-5.100,468.800,18.900,-5.100,1.649e+04 +2025,246.522151,10,475.300,18.500,2.2640,-475.100,-13.400,3.500,475.100,13.400,3.500,2.073e+04 +2025,246.527975,10,474.100,15.700,2.1640,-473.700,-18.300,5.600,473.700,18.300,5.600,1.493e+04 +2025,246.538421,10,466.100,18.000,2.5340,-465.600,-15.900,15.100,465.600,15.900,15.100,1.963e+04 +2025,246.540750,10,471.000,12.900,2.3690,-469.900,-14.300,28.300,469.900,14.300,28.300,1.008e+04 +2025,246.547739,10,461.000,18.600,3.8900,-460.100,-17.900,21.600,460.100,17.900,21.600,2.096e+04 +2025,246.548903,10,461.900,18.000,3.9730,-461.100,-22.900,15.600,461.100,22.900,15.600,1.963e+04 +2025,246.580351,10,459.800,19.100,2.5860,-459.500,-2.200,-15.100,459.500,2.200,-15.100,2.210e+04 +2025,246.586138,10,467.900,16.100,1.8130,-467.800,-5.900,-3.700,467.800,5.900,-3.700,1.570e+04 +2025,246.590797,10,465.200,18.100,1.9180,-465.100,-4.700,-9.500,465.100,4.700,-9.500,1.984e+04 +2025,246.591962,10,468.800,13.400,1.6320,-468.700,-4.000,-8.800,468.700,4.000,-8.800,1.088e+04 +2025,246.598950,10,460.300,15.400,2.0380,-460.200,-0.400,-10.000,460.200,0.400,-10.000,1.437e+04 +2025,246.602444,10,463.100,16.800,2.1290,-462.900,-0.000,-15.800,462.900,0.000,-15.800,1.710e+04 +2025,246.612926,10,470.400,14.700,1.5200,-470.200,-5.700,-10.500,470.200,5.700,-10.500,1.309e+04 +2025,246.621079,10,462.500,15.100,1.8080,-462.200,0.900,-16.000,462.200,-0.900,-16.000,1.381e+04 +2025,246.653655,10,470.000,18.300,2.1710,-469.900,-9.400,-3.800,469.900,9.400,-3.800,2.029e+04 +2025,246.657149,10,472.800,18.900,2.2510,-472.700,-5.900,-7.100,472.700,5.900,-7.100,2.164e+04 +2025,246.682773,10,465.900,18.700,1.5240,-465.900,-2.100,1.500,465.900,2.100,1.500,2.118e+04 +2025,246.695548,10,460.000,15.900,1.5560,-459.900,-2.500,4.300,459.900,2.500,4.300,1.531e+04 +2025,246.716513,10,461.800,17.500,1.8440,-461.700,-10.100,2.900,461.700,10.100,2.900,1.855e+04 +2025,246.718843,10,463.000,17.100,1.7770,-462.900,-9.100,-0.300,462.900,9.100,-0.300,1.771e+04 +2025,246.738607,10,455.300,18.400,1.8240,-455.200,-6.900,1.300,455.200,6.900,1.300,2.051e+04 +2025,246.749089,10,462.800,17.000,1.8140,-462.300,-14.400,-13.200,462.300,14.400,-13.200,1.751e+04 +2025,246.764230,10,459.100,15.100,1.8720,-458.600,9.000,19.200,458.600,-9.000,19.200,1.381e+04 +2025,246.785195,10,462.100,16.200,1.8740,-460.600,11.500,34.400,460.600,-11.500,34.400,1.590e+04 +2025,246.786324,10,461.600,17.500,1.9540,-460.400,8.100,33.100,460.400,-8.100,33.100,1.855e+04 +2025,246.787488,10,462.800,15.300,1.8440,-461.600,-8.600,31.900,461.600,8.600,31.900,1.418e+04 +2025,246.823594,10,455.000,14.500,1.9020,-454.200,2.500,28.000,454.200,-2.500,28.000,1.274e+04 +2025,246.832912,10,452.100,17.200,1.8870,-451.800,-5.100,16.700,451.800,5.100,16.700,1.792e+04 +2025,246.835242,10,452.700,20.100,1.7960,-452.600,2.600,6.000,452.600,-2.600,6.000,2.447e+04 +2025,246.872476,10,437.600,22.500,2.0690,-437.300,-0.500,15.700,437.300,0.500,15.700,3.067e+04 +2025,246.877135,10,433.500,20.100,1.9790,-432.200,-2.300,32.800,432.200,2.300,32.800,2.447e+04 +2025,246.879464,10,441.500,18.500,2.0680,-441.300,-6.000,13.000,441.300,6.000,13.000,2.073e+04 +2025,246.905052,10,439.900,13.700,2.3710,-439.700,-2.800,11.100,439.700,2.800,11.100,1.137e+04 +2025,246.920193,10,448.200,15.500,2.3580,-448.100,-11.100,3.300,448.100,11.100,3.300,1.455e+04 +2025,246.921357,10,441.900,18.300,2.4840,-441.700,-1.000,9.500,441.700,1.000,9.500,2.029e+04 +2025,246.924852,10,438.100,13.500,2.1470,-438.100,-1.000,7.800,438.100,1.000,7.800,1.104e+04 +2025,246.948109,10,454.300,14.800,2.7540,-453.600,-20.400,-13.800,453.600,20.400,-13.800,1.327e+04 +2025,247.048201,10,454.000,9.100,3.3650,-453.400,-15.700,-15.500,453.400,15.700,-15.500,5.016e+03 +2025,247.138976,10,472.200,50.000,0.6440,-472.100,4.800,-2.200,472.100,-4.800,-2.200,1.514e+05 +2025,247.377597,10,469.800,43.600,1.4830,-469.300,-2.100,22.300,469.300,2.100,22.300,1.151e+05 +2025,247.391537,10,459.900,40.600,2.6090,-459.100,3.500,26.500,459.100,-3.500,26.500,9.985e+04 +2025,247.449737,10,456.400,42.100,2.4890,-456.100,-4.900,14.300,456.100,4.900,14.300,1.074e+05 +2025,247.450901,10,457.700,43.000,2.4690,-457.500,-4.600,13.200,457.500,4.600,13.200,1.120e+05 +2025,247.460219,10,458.400,41.300,2.2930,-458.000,-7.300,16.400,458.000,7.300,16.400,1.033e+05 +2025,247.481184,10,481.000,49.300,2.5130,-479.500,12.900,-35.500,479.500,-12.900,-35.500,1.472e+05 +2025,248.265619,10,418.500,44.500,2.2460,-417.600,-9.400,-25.700,417.600,9.400,-25.700,1.200e+05 +2025,248.297030,10,416.300,44.500,2.3340,-414.800,-12.700,-33.100,414.800,12.700,-33.100,1.200e+05 +2025,248.309842,10,414.200,42.000,2.5690,-412.400,37.100,-6.600,412.400,-37.100,-6.600,1.069e+05 +2025,248.362218,10,410.300,41.300,2.5560,-410.100,0.300,10.400,410.100,-0.300,10.400,1.033e+05 +2025,248.466969,10,413.400,39.700,3.8560,-411.000,7.400,-44.100,411.000,-7.400,-44.100,9.547e+04 +2025,248.511192,10,408.700,38.100,3.5670,-408.300,-4.600,-18.200,408.300,4.600,-18.200,8.793e+04 +2025,248.514686,10,407.400,37.900,3.5480,-407.000,-3.000,-19.200,407.000,3.000,-19.200,8.701e+04 +2025,248.942973,10,452.800,41.000,10.0480,-452.100,8.500,-22.900,452.100,-8.500,-22.900,1.018e+05 +2025,248.952290,10,451.100,37.300,9.9040,-450.300,12.700,-22.700,450.300,-12.700,-22.700,8.428e+04 +2025,248.961608,10,436.700,46.700,10.0260,-436.200,-21.300,4.200,436.200,21.300,4.200,1.321e+05 +2025,248.969761,10,435.300,44.700,9.9580,-434.700,-24.000,-3.900,434.700,24.000,-3.900,1.210e+05 +2025,248.970926,10,433.200,45.000,9.8580,-432.500,-25.100,-5.100,432.500,25.100,-5.100,1.227e+05 +2025,248.991854,10,426.500,53.100,9.5520,-424.000,-40.700,-22.800,424.000,40.700,-22.800,1.708e+05 +2025,249.060535,10,447.000,46.500,9.9090,-446.400,-21.600,-1.200,446.400,21.600,-1.200,1.310e+05 +2025,249.079134,10,446.600,46.000,10.6010,-445.400,-32.600,-0.200,445.400,32.600,-0.200,1.282e+05 +2025,249.083793,10,453.600,49.000,10.9190,-452.500,-32.000,4.200,452.500,32.000,4.200,1.454e+05 +2025,249.094276,10,459.100,52.000,11.7290,-458.200,-27.000,6.400,458.200,27.000,6.400,1.638e+05 +2025,249.110582,10,441.200,54.200,11.7970,-440.200,-19.800,-22.100,440.200,19.800,-22.100,1.779e+05 +2025,249.117570,10,442.300,49.300,10.8730,-441.400,-9.300,-25.300,441.400,9.300,-25.300,1.472e+05 +2025,249.136169,10,444.400,50.200,10.5740,-443.600,12.600,-24.400,443.600,-12.600,-24.400,1.526e+05 +2025,249.167616,10,466.300,54.500,9.1100,-466.100,-2.000,-11.900,466.100,2.000,-11.900,1.799e+05 +2025,249.282850,10,542.000,78.400,10.1930,-541.200,28.100,-4.700,541.200,-28.100,-4.700,3.723e+05 +2025,249.285180,10,557.300,68.100,9.5440,-549.200,75.400,57.100,549.200,-75.400,57.100,2.809e+05 +2025,249.287509,10,564.500,63.000,8.0920,-557.800,70.500,50.000,557.800,-70.500,50.000,2.404e+05 +2025,249.308438,10,522.100,66.300,8.8260,-517.300,70.900,-5.900,517.300,-70.900,-5.900,2.663e+05 +2025,249.339849,10,553.500,64.600,8.4180,-552.700,25.100,-16.800,552.700,-25.100,-16.800,2.528e+05 +2025,249.344508,10,524.500,69.400,7.5700,-523.900,24.600,0.800,523.900,-24.600,0.800,2.917e+05 +2025,249.388730,10,535.100,61.600,7.9420,-533.200,18.800,41.300,533.200,-18.800,41.300,2.299e+05 +2025,249.687843,10,650.800,94.900,9.0730,-647.900,-40.900,46.100,647.900,40.900,46.100,5.455e+05 +2025,249.706479,10,660.800,86.700,7.8470,-658.500,-51.300,17.500,658.500,51.300,17.500,4.553e+05 +2025,249.712302,10,659.100,80.000,7.4960,-656.200,-43.100,43.500,656.200,43.100,43.500,3.877e+05 +2025,249.813232,10,620.400,66.000,0.6970,-617.900,-3.500,-54.800,617.900,3.500,-54.800,2.639e+05 +2025,250.345035,10,531.700,52.300,0.1430,-531.300,18.300,10.700,531.300,-18.300,10.700,1.657e+05 +2025,251.064283,10,584.200,34.100,2.2920,-579.900,64.500,-29.300,579.900,-64.500,-29.300,7.044e+04 +2025,251.073601,10,579.200,34.600,2.0410,-574.500,68.900,-26.100,574.500,-68.900,-26.100,7.252e+04 +2025,251.550771,10,498.700,43.400,0.8140,-497.700,-23.100,-20.100,497.700,23.100,-20.100,1.141e+05 +2025,251.639216,10,498.800,45.400,0.9290,-495.700,22.800,49.900,495.700,-22.800,49.900,1.249e+05 +2025,251.712521,10,567.800,33.400,2.0030,-566.500,-16.200,-33.800,566.500,16.200,-33.800,6.757e+04 +2025,251.839402,10,498.200,41.800,3.4730,-497.400,24.800,14.600,497.400,-24.800,14.600,1.058e+05 +2025,252.310750,10,475.700,53.900,3.2540,-475.300,19.900,-5.300,475.300,-19.900,-5.300,1.760e+05 +2025,252.337502,10,492.100,64.100,3.8170,-491.900,-4.500,-15.900,491.900,4.500,-15.900,2.489e+05 +2025,252.368949,10,489.300,54.200,3.1760,-486.400,50.000,17.600,486.400,-50.000,17.600,1.779e+05 +2025,252.635450,10,491.500,50.100,4.8150,-490.300,-10.800,-31.600,490.300,10.800,-31.600,1.520e+05 +2025,252.782132,10,487.700,48.900,4.0190,-486.900,-10.200,26.800,486.900,10.200,26.800,1.448e+05 +2025,253.080046,10,517.800,46.800,3.9600,-516.800,-30.300,-11.300,516.800,30.300,-11.300,1.327e+05 +2025,253.291879,10,559.000,43.500,2.2880,-557.800,37.400,-4.100,557.800,-37.400,-4.100,1.146e+05 +2025,253.373336,10,527.300,43.900,2.3850,-525.600,39.800,13.700,525.600,-39.800,13.700,1.167e+05 +2025,253.383819,10,531.600,47.300,2.4500,-529.800,36.000,24.600,529.800,-36.000,24.600,1.355e+05 +2025,253.488534,10,506.300,38.200,2.5610,-505.300,16.400,28.200,505.300,-16.400,28.200,8.839e+04 +2025,253.639839,10,494.100,43.600,3.0620,-492.700,26.800,24.600,492.700,-26.800,24.600,1.151e+05 +2025,253.675909,10,495.100,43.000,3.6680,-493.800,30.800,18.700,493.800,-30.800,18.700,1.120e+05 +2025,253.682897,10,498.400,42.300,3.4040,-495.400,48.600,-24.900,495.400,-48.600,-24.900,1.084e+05 +2025,254.018045,10,471.700,33.300,2.1000,-471.100,-23.100,-6.500,471.100,23.100,-6.500,6.717e+04 +2025,254.029692,10,466.200,32.200,2.1680,-465.900,-10.400,-11.200,465.900,10.400,-11.200,6.281e+04 +2025,254.156574,10,478.900,26.000,2.2000,-477.800,-33.100,1.300,477.800,33.100,1.300,4.095e+04 +2025,254.219432,10,459.200,24.800,2.3470,-458.000,-33.000,-5.600,458.000,33.000,-5.600,3.726e+04 +2025,254.235702,10,457.800,26.300,2.9030,-456.300,-35.900,-4.500,456.300,35.900,-4.500,4.190e+04 +2025,254.241526,10,458.600,27.200,2.8890,-456.900,-37.500,-13.400,456.900,37.500,-13.400,4.481e+04 +2025,254.251972,10,461.100,26.400,2.8820,-459.300,-39.900,-1.100,459.300,39.900,-1.100,4.222e+04 +2025,254.349736,10,439.900,24.700,2.6630,-439.000,-24.500,-15.000,439.000,24.500,-15.000,3.696e+04 +2025,254.383513,10,439.700,25.900,3.0660,-438.600,-16.900,-26.300,438.600,16.900,-26.300,4.063e+04 +2025,254.407936,10,432.000,24.300,2.8900,-431.700,-13.800,11.000,431.700,13.800,11.000,3.577e+04 +2025,254.426571,10,426.000,26.900,2.9240,-425.800,-9.900,-4.500,425.800,9.900,-4.500,4.383e+04 +2025,254.427736,10,430.100,24.100,2.7480,-429.800,-16.300,-3.200,429.800,16.300,-3.200,3.518e+04 +2025,254.444006,10,430.100,25.200,2.7120,-429.500,19.800,-12.200,429.500,-19.800,-12.200,3.847e+04 +2025,254.466135,10,431.800,25.400,2.9790,-431.400,-18.400,-1.300,431.400,18.400,-1.300,3.908e+04 +2025,254.468465,10,433.400,24.100,3.1100,-432.600,-26.800,-5.400,432.600,26.800,-5.400,3.518e+04 +2025,254.481277,10,431.000,22.900,3.2220,-430.600,-18.400,-6.900,430.600,18.400,-6.900,3.177e+04 +2025,254.488229,10,429.000,25.500,3.3860,-428.600,-18.200,-3.900,428.600,18.200,-3.900,3.939e+04 +2025,254.511523,10,427.200,22.600,3.3240,-426.700,-19.500,0.200,426.700,19.500,0.200,3.094e+04 +2025,254.516182,10,421.900,22.900,3.3920,-421.800,-6.700,7.500,421.800,6.700,7.500,3.177e+04 +2025,254.526664,10,420.600,28.200,3.7160,-420.500,2.300,4.000,420.500,-2.300,4.000,4.817e+04 +2025,254.528994,10,422.400,21.400,3.4410,-422.100,-11.200,8.600,422.100,11.200,8.600,2.774e+04 +2025,254.540605,10,425.700,22.200,3.5800,-425.000,-22.600,8.100,425.000,22.600,8.100,2.985e+04 +2025,254.553416,10,427.200,21.700,3.8020,-426.400,-20.700,13.300,426.400,20.700,13.300,2.852e+04 +2025,254.558075,10,423.900,21.300,3.6640,-423.300,-21.200,8.700,423.300,21.200,8.700,2.748e+04 +2025,254.587157,10,421.100,22.100,3.7570,-420.200,-25.300,12.000,420.200,25.300,12.000,2.958e+04 +2025,254.588321,10,421.400,21.500,3.7400,-420.400,-26.400,12.000,420.400,26.400,12.000,2.800e+04 +2025,254.601133,10,421.500,23.200,3.5250,-421.100,-13.900,-11.000,421.100,13.900,-11.000,3.260e+04 +2025,254.630251,10,426.200,22.400,3.5110,-425.400,-25.800,5.500,425.400,25.800,5.500,3.039e+04 +2025,254.653509,10,428.800,23.400,3.9390,-428.300,-22.000,2.500,428.300,22.000,2.500,3.317e+04 +2025,254.674474,10,420.100,22.200,3.5740,-419.700,-18.000,-6.300,419.700,18.000,-6.300,2.985e+04 +2025,254.676803,10,422.700,21.100,3.6710,-422.200,-21.000,-7.900,422.200,21.000,-7.900,2.697e+04 +2025,254.752401,10,416.400,23.500,3.4870,-415.700,-24.600,-1.200,415.700,24.600,-1.200,3.345e+04 +2025,254.760554,10,428.400,21.600,3.3350,-426.900,-34.600,9.600,426.900,34.600,9.600,2.826e+04 +2025,254.771036,10,420.900,21.200,3.4980,-420.100,-25.700,-3.700,420.100,25.700,-3.700,2.722e+04 +2025,254.775695,10,415.400,22.000,3.5280,-414.700,-23.200,-0.900,414.700,23.200,-0.900,2.932e+04 +2025,254.787306,10,418.000,21.100,3.4740,-417.000,-27.900,3.500,417.000,27.900,3.500,2.697e+04 +2025,254.809436,10,418.800,24.200,3.7640,-418.300,-17.000,-8.300,418.300,17.000,-8.300,3.547e+04 +2025,254.835060,10,406.700,20.600,3.1900,-406.200,-19.100,-5.800,406.200,19.100,-5.800,2.571e+04 +2025,254.836224,10,405.400,20.600,3.2350,-404.800,-19.600,-6.500,404.800,19.600,-6.500,2.571e+04 +2025,254.852494,10,422.100,21.200,4.2460,-421.300,-24.500,5.900,421.300,24.500,5.900,2.722e+04 +2025,254.858318,10,418.300,19.200,4.2470,-417.300,-27.600,5.500,417.300,27.600,5.500,2.233e+04 +2025,254.883942,10,410.800,25.800,3.7600,-410.200,-22.800,-0.600,410.200,22.800,-0.600,4.032e+04 +2025,255.141127,10,398.800,19.100,4.4150,-397.800,-26.900,5.800,397.800,26.900,5.800,2.210e+04 +2025,255.156268,10,407.600,21.300,4.3200,-406.700,-26.700,-5.200,406.700,26.700,-5.200,2.748e+04 +2025,255.238890,10,410.000,18.200,4.7750,-409.700,-15.100,-9.100,409.700,15.100,-9.100,2.006e+04 +2025,255.242384,10,387.100,20.600,4.0520,-386.000,-13.100,25.500,386.000,13.100,25.500,2.571e+04 +2025,255.355289,10,378.600,20.700,3.7740,-377.800,-20.100,12.500,377.800,20.100,12.500,2.596e+04 +2025,255.434417,10,380.100,20.200,4.2670,-379.400,-14.000,18.100,379.400,14.000,18.100,2.472e+04 +2025,255.476311,10,379.600,18.100,4.1290,-379.400,-10.000,10.100,379.400,10.000,10.100,1.984e+04 +2025,255.494947,10,385.600,22.100,5.2050,-385.300,-14.200,8.600,385.300,14.200,8.600,2.958e+04 +2025,255.504228,10,395.000,19.300,5.0330,-394.400,-19.600,-10.100,394.400,19.600,-10.100,2.256e+04 +2025,255.505393,10,394.700,20.200,5.1020,-394.100,-19.600,-9.700,394.100,19.600,-9.700,2.472e+04 +2025,255.514674,10,371.900,20.900,5.0750,-371.500,-11.300,-14.500,371.500,11.300,-14.500,2.646e+04 +2025,255.521662,10,381.800,21.400,4.9920,-380.400,0.500,-32.600,380.400,-0.500,-32.600,2.774e+04 +2025,255.574039,10,396.300,20.400,4.6430,-396.000,-16.500,-4.600,396.000,16.500,-4.600,2.521e+04 +2025,255.656698,10,405.700,19.800,4.4320,-405.100,-20.700,-5.400,405.100,20.700,-5.400,2.375e+04 +2025,255.659027,10,406.900,19.900,4.5190,-406.500,-18.900,-1.000,406.500,18.900,-1.000,2.399e+04 +2025,255.661357,10,408.300,20.400,4.4390,-407.900,-17.300,6.300,407.900,17.300,6.300,2.521e+04 +2025,255.668345,10,409.000,22.200,5.0650,-408.200,-18.300,-18.700,408.200,18.300,-18.700,2.985e+04 +2025,255.675333,10,406.500,22.200,4.7060,-405.900,-19.700,-10.300,405.900,19.700,-10.300,2.985e+04 +2025,255.690438,10,403.300,25.100,5.0680,-402.700,-23.100,-0.000,402.700,23.100,-0.000,3.816e+04 +2025,255.695097,10,394.100,22.600,4.2060,-393.500,-22.600,-1.700,393.500,22.600,-1.700,3.094e+04 +2025,255.738155,10,396.900,22.900,5.2370,-395.500,-24.100,-23.500,395.500,24.100,-23.500,3.177e+04 +2025,255.745144,10,398.800,20.300,5.3510,-397.300,-29.800,-15.600,397.300,29.800,-15.600,2.496e+04 +2025,255.746309,10,400.300,20.100,5.0910,-398.900,-28.600,-17.000,398.900,28.600,-17.000,2.447e+04 +2025,255.750967,10,392.600,20.300,5.1250,-391.000,-27.600,-23.400,391.000,27.600,-23.400,2.496e+04 +2025,255.752132,10,388.800,21.300,5.0410,-387.200,-24.300,-25.500,387.200,24.300,-25.500,2.748e+04 +2025,255.770768,10,388.100,21.800,5.3700,-387.000,-26.500,-13.500,387.000,26.500,-13.500,2.879e+04 +2025,255.788202,10,378.600,21.000,5.0230,-377.800,-25.400,-3.500,377.800,25.400,-3.500,2.671e+04 +2025,255.830060,10,383.600,20.000,5.3450,-382.200,-26.700,-18.500,382.200,26.700,-18.500,2.423e+04 +2025,255.868495,10,374.800,19.400,4.5900,-374.100,-23.400,-2.400,374.100,23.400,-2.400,2.280e+04 +2025,255.875484,10,380.700,19.100,3.9110,-380.100,-19.800,8.200,380.100,19.800,8.200,2.210e+04 +2025,255.973247,10,367.800,18.700,3.7240,-367.200,-20.500,-3.200,367.200,20.500,-3.200,2.118e+04 +2025,255.983730,10,367.300,18.700,3.8120,-366.700,-21.300,-6.300,366.700,21.300,-6.300,2.118e+04 +2025,255.994176,10,367.600,18.600,5.1940,-366.600,-23.000,-14.400,366.600,23.000,-14.400,2.096e+04 +2025,256.025623,10,366.000,16.300,6.6700,-364.800,-15.100,-25.100,364.800,15.100,-25.100,1.609e+04 +2025,256.081493,10,362.500,16.300,4.6160,-362.100,-16.400,-5.600,362.100,16.400,-5.600,1.609e+04 +2025,256.083823,10,363.800,16.100,4.6550,-363.300,-18.700,-5.500,363.300,18.700,-5.500,1.570e+04 +2025,256.087317,10,360.100,16.300,4.6200,-359.600,-16.600,-6.400,359.600,16.600,-6.400,1.609e+04 +2025,256.091939,10,361.800,16.300,4.6440,-361.300,-18.100,-6.300,361.300,18.100,-6.300,1.609e+04 +2025,256.095433,10,363.600,16.500,4.8230,-363.000,-18.700,-9.800,363.000,18.700,-9.800,1.649e+04 +2025,256.108245,10,362.900,15.500,4.5630,-362.500,-17.200,-1.300,362.500,17.200,-1.300,1.455e+04 +2025,256.111740,10,362.400,16.100,4.4180,-361.900,-18.700,-1.500,361.900,18.700,-1.500,1.570e+04 +2025,256.131540,10,359.400,15.800,4.6420,-359.000,-15.500,0.400,359.000,15.500,0.400,1.512e+04 +2025,256.137363,10,362.000,16.800,4.9800,-361.700,-14.800,-0.600,361.700,14.800,-0.600,1.710e+04 +2025,256.148974,10,358.600,15.900,4.2090,-358.100,-18.900,-2.300,358.100,18.900,-2.300,1.531e+04 +2025,256.210632,10,360.300,16.300,4.1840,-359.400,-25.000,-3.100,359.400,25.000,-3.100,1.609e+04 +2025,256.218785,10,357.900,15.300,4.0340,-357.200,-23.100,-1.400,357.200,23.100,-1.400,1.418e+04 +2025,256.237420,10,359.100,15.400,3.6610,-358.300,-24.100,1.900,358.300,24.100,1.900,1.437e+04 +2025,256.247867,10,357.000,14.800,3.7860,-356.000,-26.600,-2.000,356.000,26.600,-2.000,1.327e+04 +2025,256.251361,10,357.000,15.800,4.0100,-356.000,-27.000,-6.100,356.000,27.000,-6.100,1.512e+04 +2025,256.258349,10,360.200,16.100,3.9880,-359.000,-28.400,-3.400,359.000,28.400,-3.400,1.570e+04 +2025,256.268832,10,348.000,15.700,3.8180,-347.900,-0.400,8.700,347.900,0.400,8.700,1.493e+04 +2025,256.283973,10,354.400,16.600,4.3000,-353.500,-24.200,-7.200,353.500,24.200,-7.200,1.669e+04 +2025,256.286302,10,353.500,16.400,4.2500,-352.600,-24.700,-7.400,352.600,24.700,-7.400,1.629e+04 +2025,256.300279,10,349.100,16.700,4.3060,-348.400,-21.800,-7.100,348.400,21.800,-7.100,1.689e+04 +2025,256.320043,10,349.300,16.400,4.0520,-348.500,-22.400,-3.700,348.500,22.400,-3.700,1.629e+04 +2025,256.321208,10,347.900,15.900,3.8970,-347.100,-21.900,-4.000,347.100,21.900,-4.000,1.531e+04 +2025,256.330526,10,352.800,17.200,4.2450,-352.100,-21.400,1.100,352.100,21.400,1.100,1.792e+04 +2025,256.337514,10,349.600,18.200,4.5750,-348.700,-23.600,-4.600,348.700,23.600,-4.600,2.006e+04 +2025,256.386396,10,341.700,18.400,4.3620,-340.700,-25.300,-3.000,340.700,25.300,-3.000,2.051e+04 +2025,256.387561,10,342.300,19.400,4.5360,-341.400,-24.800,-2.200,341.400,24.800,-2.200,2.280e+04 +2025,256.423631,10,363.200,21.600,6.7610,-362.700,-14.100,-11.900,362.700,14.100,-11.900,2.826e+04 +2025,256.428290,10,363.500,21.400,6.9250,-363.000,-15.000,-12.900,363.000,15.000,-12.900,2.774e+04 +2025,256.434113,10,364.700,21.900,7.3380,-364.100,-14.400,-14.800,364.100,14.400,-14.800,2.905e+04 +2025,256.436443,10,366.000,21.500,7.1130,-365.500,-13.900,-14.100,365.500,13.900,-14.100,2.800e+04 +2025,256.437607,10,364.700,25.400,6.4940,-364.300,-12.200,-14.200,364.300,12.200,-14.200,3.908e+04 +2025,256.472476,10,355.700,20.300,4.9030,-354.800,-21.200,-14.900,354.800,21.200,-14.900,2.496e+04 +2025,256.473641,10,356.900,21.600,4.7740,-356.200,-20.800,-7.200,356.200,20.800,-7.200,2.826e+04 +2025,256.484123,10,348.300,20.000,5.1140,-347.900,-16.400,-1.900,347.900,16.400,-1.900,2.423e+04 +2025,256.488782,10,353.400,21.300,5.7050,-352.600,-22.000,-8.800,352.600,22.000,-8.800,2.748e+04 +2025,256.495771,10,359.600,19.400,5.0840,-358.800,-24.500,-6.300,358.800,24.500,-6.300,2.280e+04 +2025,256.515534,10,357.300,20.500,4.9400,-356.200,-24.600,-11.700,356.200,24.600,-11.700,2.546e+04 +2025,256.517864,10,360.700,18.700,4.1670,-359.600,-27.400,-7.600,359.600,27.400,-7.600,2.118e+04 +2025,256.529511,10,347.500,20.400,4.8660,-347.000,-18.000,-2.200,347.000,18.000,-2.200,2.521e+04 +2025,256.735521,10,357.200,20.900,5.1690,-354.600,-40.800,-13.800,354.600,40.800,-13.800,2.646e+04 +2025,256.747168,10,340.300,19.800,5.9280,-338.000,-31.800,-24.400,338.000,31.800,-24.400,2.375e+04 +2025,256.786732,10,339.600,21.100,7.4340,-338.100,-27.300,-16.800,338.100,27.300,-16.800,2.697e+04 +2025,256.796050,10,345.100,20.900,8.0500,-343.400,-28.100,-19.100,343.400,28.100,-19.100,2.646e+04 +2025,256.799544,10,344.700,21.100,8.0290,-343.000,-28.800,-18.600,343.000,28.800,-18.600,2.697e+04 +2025,256.851884,10,348.800,20.700,10.1310,-346.600,-30.800,-24.300,346.600,30.800,-24.300,2.596e+04 +2025,256.864696,10,350.900,21.500,10.1030,-348.900,-31.300,-21.200,348.900,31.300,-21.200,2.800e+04 +2025,256.890283,10,349.700,20.400,10.6400,-347.400,-27.700,-28.000,347.400,27.700,-28.000,2.521e+04 +2025,256.910084,10,351.900,16.500,13.7100,-350.100,-21.100,-28.700,350.100,21.100,-28.700,1.649e+04 +2025,256.921694,10,347.400,14.300,12.9060,-345.800,-21.600,-24.400,345.800,21.600,-24.400,1.239e+04 +2025,256.939165,10,349.100,15.200,13.2810,-347.700,-22.200,-22.000,347.700,22.200,-22.000,1.399e+04 +2025,256.946153,10,346.300,15.100,13.1650,-344.800,-20.800,-24.500,344.800,20.800,-24.500,1.381e+04 +2025,256.947318,10,346.500,15.200,12.7630,-345.000,-20.500,-25.700,345.000,20.500,-25.700,1.399e+04 +2025,256.961295,10,345.900,19.100,11.2230,-344.200,-22.600,-25.500,344.200,22.600,-25.500,2.210e+04 +2025,256.965917,10,351.600,17.900,13.0720,-349.700,-22.800,-28.100,349.700,22.800,-28.100,1.941e+04 +2025,257.012506,10,352.900,32.700,10.3450,-350.100,-34.900,-26.900,350.100,34.900,-26.900,6.477e+04 +2025,257.013670,10,351.000,31.600,10.9380,-348.000,-38.600,-25.700,348.000,38.600,-25.700,6.049e+04 +2025,257.032269,10,364.900,30.600,16.9760,-362.900,-23.800,-28.900,362.900,23.800,-28.900,5.672e+04 +2025,257.038093,10,358.800,31.600,14.7260,-356.100,-29.900,-32.900,356.100,29.900,-32.900,6.049e+04 +2025,257.056728,10,349.600,31.600,13.7160,-347.000,-37.300,-21.500,347.000,37.300,-21.500,6.049e+04 +2025,257.062552,10,362.500,33.100,16.4620,-360.200,-30.400,-27.700,360.200,30.400,-27.700,6.637e+04 +2025,257.212692,10,344.200,36.000,17.4020,-340.100,-40.700,-33.700,340.100,40.700,-33.700,7.850e+04 +2025,257.258080,10,345.200,37.300,17.5900,-340.700,-44.200,-33.600,340.700,44.200,-33.600,8.428e+04 +2025,257.282503,10,339.900,34.500,19.8730,-334.600,-45.400,-38.600,334.600,45.400,-38.600,7.210e+04 +2025,257.316243,10,339.300,35.200,18.1150,-334.400,-44.100,-37.200,334.400,44.100,-37.200,7.505e+04 +2025,257.325561,10,339.000,32.500,18.1600,-334.100,-41.800,-39.500,334.100,41.800,-39.500,6.398e+04 +2025,257.334842,10,340.800,34.100,18.9140,-335.700,-47.600,-34.500,335.700,47.600,-34.500,7.044e+04 +2025,257.341831,10,337.600,32.700,17.6360,-332.100,-49.100,-35.700,332.100,49.100,-35.700,6.477e+04 +2025,257.356972,10,336.800,31.800,18.2330,-331.800,-46.000,-35.600,331.800,46.000,-35.600,6.125e+04 +2025,257.365125,10,333.600,30.600,17.0170,-328.200,-48.300,-34.900,328.200,48.300,-34.900,5.672e+04 +2025,257.369784,10,331.800,29.700,16.7990,-326.000,-50.500,-35.700,326.000,50.500,-35.700,5.343e+04 +2025,257.405854,10,327.300,27.700,18.6610,-320.700,-51.500,-40.400,320.700,51.500,-40.400,4.648e+04 +2025,257.414007,10,325.000,29.000,19.6490,-318.900,-48.800,-39.200,318.900,48.800,-39.200,5.094e+04 +2025,257.471042,10,323.500,24.200,17.2250,-316.800,-57.500,-31.200,316.800,57.500,-31.200,3.547e+04 +2025,257.474537,10,323.300,25.600,17.2470,-316.500,-56.500,-34.000,316.500,56.500,-34.000,3.970e+04 +2025,257.475701,10,321.500,26.300,17.6380,-314.700,-56.300,-33.700,314.700,56.300,-33.700,4.190e+04 +2025,257.480360,10,321.100,25.900,18.3640,-314.500,-53.200,-37.200,314.500,53.200,-37.200,4.063e+04 +2025,257.481525,10,319.500,29.400,20.5890,-315.600,-34.100,-36.700,315.600,34.100,-36.700,5.236e+04 +2025,257.490843,10,319.500,29.900,20.6640,-315.600,-38.400,-32.100,315.600,38.400,-32.100,5.415e+04 +2025,257.494300,10,322.100,26.900,21.0760,-317.900,-41.500,-31.300,317.900,41.500,-31.300,4.383e+04 +2025,257.508277,10,318.200,23.800,19.4510,-311.300,-53.600,-37.700,311.300,53.600,-37.700,3.431e+04 +2025,257.509442,10,315.700,23.400,18.8500,-309.300,-52.300,-35.200,309.300,52.300,-35.200,3.317e+04 +2025,257.510606,10,317.900,24.400,18.6440,-311.900,-49.900,-35.400,311.900,49.900,-35.400,3.606e+04 +2025,257.524583,10,318.600,27.200,18.4670,-312.800,-46.200,-38.700,312.800,46.200,-38.700,4.481e+04 +2025,257.528077,10,321.400,28.100,19.2620,-316.800,-42.000,-34.400,316.800,42.000,-34.400,4.783e+04 +2025,257.545511,10,325.900,27.600,20.8430,-321.600,-42.000,-31.900,321.600,42.000,-31.900,4.614e+04 +2025,257.547841,10,321.800,27.400,18.4700,-317.600,-41.800,-30.100,317.600,41.800,-30.100,4.548e+04 +2025,257.555994,10,327.000,25.800,19.9870,-323.100,-39.100,-31.000,323.100,39.100,-31.000,4.032e+04 +2025,257.580453,10,340.300,27.800,30.5870,-335.800,-43.600,-34.000,335.800,43.600,-34.000,4.681e+04 +2025,257.581618,10,340.700,27.800,30.4510,-336.100,-43.800,-34.400,336.100,43.800,-34.400,4.681e+04 +2025,257.611864,10,334.100,28.500,30.9580,-326.600,-50.400,-49.000,326.600,50.400,-49.000,4.920e+04 +2025,257.620017,10,345.600,27.600,31.7870,-338.200,-60.200,-38.400,338.200,60.200,-38.400,4.614e+04 +2025,257.632793,10,356.800,25.500,38.8490,-350.300,-53.300,-42.100,350.300,53.300,-42.100,3.939e+04 +2025,257.637452,10,353.800,26.500,43.9360,-346.000,-61.500,-41.100,346.000,61.500,-41.100,4.254e+04 +2025,257.639781,10,350.700,27.000,42.7680,-342.900,-59.900,-42.800,342.900,59.900,-42.800,4.416e+04 +2025,257.708427,10,359.400,28.800,54.2760,-351.400,-65.800,-37.300,351.400,65.800,-37.300,5.024e+04 +2025,257.767791,10,373.600,36.100,43.6270,-369.800,-49.800,-18.700,369.800,49.800,-18.700,7.894e+04 +2025,257.791086,10,378.900,35.800,44.8960,-377.400,-29.600,-17.300,377.400,29.600,-17.300,7.763e+04 +2025,257.794580,10,382.600,34.400,43.4980,-381.100,-27.000,-21.700,381.100,27.000,-21.700,7.168e+04 +2025,258.452068,10,665.000,100.700,7.3050,-654.900,57.000,100.500,654.900,-57.000,100.500,6.142e+05 +2025,258.916488,10,744.300,63.000,2.4060,-744.000,-11.700,14.400,744.000,11.700,14.400,2.404e+05 +2025,258.952670,10,773.700,70.200,2.6210,-771.500,41.100,40.700,771.500,-41.100,40.700,2.985e+05 +2025,258.957184,10,742.000,71.000,2.4980,-741.600,13.200,-20.700,741.600,-13.200,-20.700,3.054e+05 +2025,258.976403,10,754.600,63.500,2.7140,-751.800,33.000,-56.300,751.800,-33.000,-56.300,2.442e+05 +2025,258.977531,10,754.200,61.100,2.6650,-750.500,48.600,-56.300,750.500,-48.600,-56.300,2.261e+05 +2025,259.039776,10,777.300,64.400,2.4940,-777.000,-21.600,-0.900,777.000,21.600,-0.900,2.512e+05 +2025,259.085021,10,751.300,76.000,3.3040,-751.300,1.900,1.100,751.300,-1.900,1.100,3.499e+05 +2025,259.139294,10,768.200,62.500,2.7800,-767.900,-21.000,-3.300,767.900,21.000,-3.300,2.366e+05 +2025,259.150578,10,747.100,61.000,2.6130,-744.800,51.500,26.800,744.800,-51.500,26.800,2.254e+05 +2025,259.159605,10,727.500,76.300,2.6830,-726.700,29.700,13.000,726.700,-29.700,13.000,3.526e+05 +2025,259.176567,10,748.000,62.400,2.4970,-747.000,17.300,35.500,747.000,-17.300,35.500,2.359e+05 +2025,259.188980,10,743.200,68.700,1.6030,-741.500,41.600,27.400,741.500,-41.600,27.400,2.859e+05 +2025,259.194658,10,743.000,62.000,2.4230,-740.000,49.300,-45.500,740.000,-49.300,-45.500,2.328e+05 +2025,259.208199,10,736.500,67.300,2.7440,-733.900,47.000,-39.600,733.900,-47.000,-39.600,2.744e+05 +2025,259.223997,10,752.200,64.900,2.9000,-750.600,5.000,-49.800,750.600,-5.000,-49.800,2.551e+05 +2025,259.342880,10,721.400,62.800,2.0890,-719.900,33.300,-34.100,719.900,-33.300,-34.100,2.389e+05 +2025,259.344008,10,744.800,55.300,2.2220,-744.600,-17.400,-0.600,744.600,17.400,-0.600,1.852e+05 +2025,259.414150,10,730.300,51.500,2.3350,-729.900,-26.600,-1.200,729.900,26.600,-1.200,1.607e+05 +2025,259.416407,10,725.200,47.800,2.2810,-724.800,-23.700,-0.700,724.800,23.700,-0.700,1.384e+05 +2025,259.465365,10,747.000,51.400,2.4160,-743.500,-5.700,-71.900,743.500,5.700,-71.900,1.600e+05 +2025,259.489062,10,724.400,55.000,2.1250,-722.700,4.300,-48.900,722.700,-4.300,-48.900,1.832e+05 +2025,259.493575,10,706.800,68.200,2.3100,-706.000,7.100,-32.800,706.000,-7.100,-32.800,2.817e+05 +2025,259.552507,10,769.900,51.600,2.2800,-769.300,-18.500,26.200,769.300,18.500,26.200,1.613e+05 +2025,259.582028,10,728.000,60.000,2.5400,-726.300,-19.000,-45.400,726.300,19.000,-45.400,2.181e+05 +2025,259.613951,10,734.900,61.800,2.2610,-734.000,-27.400,-22.800,734.000,27.400,-22.800,2.313e+05 +2025,259.719038,10,726.700,69.800,2.6890,-724.900,35.500,36.800,724.900,-35.500,36.800,2.951e+05 +2025,259.732579,10,714.400,61.900,2.5020,-713.300,-0.400,-40.400,713.300,0.400,-40.400,2.321e+05 +2025,259.798645,10,734.300,56.100,2.5220,-733.600,6.100,31.400,733.600,-6.100,31.400,1.906e+05 +2025,259.862346,10,699.700,51.100,2.1110,-698.800,-8.300,-34.700,698.800,8.300,-34.700,1.582e+05 +2025,259.863510,10,699.800,47.700,2.0540,-698.800,-13.300,-35.500,698.800,13.300,-35.500,1.378e+05 +2025,259.875996,10,685.100,43.700,1.9910,-684.200,-20.200,-29.000,684.200,20.200,-29.000,1.157e+05 +2025,259.895543,10,700.900,50.700,1.9640,-700.500,-22.700,8.600,700.500,22.700,8.600,1.557e+05 +2025,259.899001,10,685.100,49.300,1.9920,-684.600,-23.800,-10.700,684.600,23.800,-10.700,1.472e+05 +2025,259.915017,10,699.000,49.200,2.0060,-698.300,-27.800,-13.400,698.300,27.800,-13.400,1.466e+05 +2025,259.963065,10,662.800,53.700,2.1500,-662.800,6.500,3.100,662.800,-6.500,3.100,1.747e+05 +2025,260.114017,10,675.500,43.800,2.0990,-673.400,-29.300,-43.700,673.400,29.300,-43.700,1.162e+05 +2025,260.119805,10,657.900,51.800,2.0950,-657.200,9.100,28.100,657.200,-9.100,28.100,1.625e+05 +2025,260.148852,10,661.600,48.200,1.8860,-660.400,-13.200,37.500,660.400,13.200,37.500,1.407e+05 +2025,260.170947,10,664.700,58.300,2.7130,-662.400,21.300,50.000,662.400,-21.300,50.000,2.059e+05 +2025,260.174441,10,663.500,46.300,2.0660,-661.600,25.600,42.500,661.600,-25.600,42.500,1.299e+05 +2025,260.179101,10,665.700,51.800,2.3990,-663.300,29.000,47.400,663.300,-29.000,47.400,1.625e+05 +2025,260.182595,10,683.300,53.900,1.7490,-681.300,1.400,-51.700,681.300,-1.400,-51.700,1.760e+05 +2025,260.190712,10,672.600,54.100,2.1620,-670.600,19.300,-47.200,670.600,-19.300,-47.200,1.773e+05 +2025,260.203489,10,709.000,52.300,2.0850,-706.500,19.500,-56.900,706.500,-19.500,-56.900,1.657e+05 +2025,260.206874,10,674.100,51.700,2.0930,-670.100,71.600,-16.300,670.100,-71.600,-16.300,1.619e+05 +2025,260.225329,10,684.200,46.800,1.8730,-683.900,-21.500,-5.600,683.900,21.500,-5.600,1.327e+05 +2025,260.277345,10,669.700,50.000,2.3140,-669.600,-11.700,-1.200,669.600,11.700,-1.200,1.514e+05 +2025,260.278510,10,664.400,42.700,1.7480,-663.200,5.700,39.800,663.200,-5.700,39.800,1.104e+05 +2025,260.288957,10,640.100,47.300,2.2450,-638.300,23.400,-42.000,638.300,-23.400,-42.000,1.355e+05 +2025,260.305191,10,661.400,47.500,1.6780,-659.800,39.900,-21.200,659.800,-39.900,-21.200,1.367e+05 +2025,260.307521,10,638.300,53.900,1.8980,-638.200,-0.900,9.500,638.200,0.900,9.500,1.760e+05 +2025,260.323755,10,654.900,53.800,2.2500,-654.200,1.200,30.800,654.200,-1.200,30.800,1.753e+05 +2025,260.326085,10,633.000,52.500,1.6920,-632.500,20.800,-17.100,632.500,-20.800,-17.100,1.670e+05 +2025,260.333074,10,653.400,58.300,2.1950,-653.200,4.000,-16.100,653.200,-4.000,-16.100,2.059e+05 +2025,260.402744,10,630.700,45.600,2.0920,-628.000,57.200,-8.100,628.000,-57.200,-8.100,1.260e+05 +2025,260.421344,10,643.900,38.400,1.5350,-643.700,-6.800,13.000,643.700,6.800,13.000,8.932e+04 +2025,260.438780,10,622.900,55.000,1.9280,-622.100,29.000,12.500,622.100,-29.000,12.500,1.832e+05 +2025,260.496911,10,625.300,44.400,1.7870,-625.200,-4.000,-10.200,625.200,4.000,-10.200,1.194e+05 +2025,260.528325,10,626.500,45.800,1.6980,-626.300,-8.400,-10.600,626.300,8.400,-10.600,1.271e+05 +2025,260.560867,10,638.200,50.100,1.6200,-636.900,6.700,-39.000,636.900,-6.700,-39.000,1.520e+05 +2025,260.582962,10,634.200,47.400,1.8060,-634.000,-12.600,5.000,634.000,12.600,5.000,1.361e+05 +2025,260.606258,10,623.600,48.300,1.8100,-623.200,-10.900,-20.100,623.200,10.900,-20.100,1.413e+05 +2025,260.631847,10,619.400,47.200,1.7160,-619.100,-0.700,20.000,619.100,0.700,20.000,1.349e+05 +2025,260.645788,10,605.700,48.800,1.8370,-605.600,6.600,-10.100,605.600,-6.600,-10.100,1.443e+05 +2025,260.681825,10,604.500,47.000,1.8090,-604.500,-2.700,2.200,604.500,2.700,2.200,1.338e+05 +2025,260.688777,10,599.700,47.800,1.8260,-599.700,-0.800,-2.100,599.700,0.800,-2.100,1.384e+05 +2025,260.699260,10,602.800,45.900,1.8230,-602.800,-3.100,8.200,602.800,3.100,8.200,1.276e+05 +2025,260.755062,10,600.400,42.100,1.8740,-599.800,-10.700,-25.100,599.800,10.700,-25.100,1.074e+05 +2025,260.767875,10,581.700,43.100,1.7690,-581.700,6.600,-3.600,581.700,-6.600,-3.600,1.125e+05 +2025,260.773699,10,582.300,43.600,1.6970,-581.700,8.500,-24.100,581.700,-8.500,-24.100,1.151e+05 +2025,260.779486,10,599.400,44.800,2.0850,-599.100,-9.600,-15.500,599.100,9.600,-15.500,1.216e+05 +2025,260.838782,10,571.000,43.400,1.7710,-570.200,2.900,-30.000,570.200,-2.900,-30.000,1.141e+05 +2025,260.874891,10,559.500,34.100,2.1120,-559.100,18.900,4.900,559.100,-18.900,4.900,7.044e+04 +2025,260.888832,10,571.000,35.200,2.2140,-570.700,6.600,18.200,570.700,-6.600,18.200,7.505e+04 +2025,260.900480,10,560.600,38.300,2.2290,-559.500,3.500,-34.000,559.500,-3.500,-34.000,8.886e+04 +2025,260.905103,10,559.300,39.400,2.2220,-558.000,6.000,-37.800,558.000,-6.000,-37.800,9.403e+04 +2025,260.991153,10,574.900,38.700,2.4990,-574.600,-14.900,10.200,574.600,14.900,10.200,9.072e+04 +2025,261.040002,10,539.500,35.800,2.1980,-539.100,-18.100,-12.200,539.100,18.100,-12.200,7.763e+04 +2025,261.087686,10,546.300,37.900,2.4340,-545.500,-19.200,-20.800,545.500,19.200,-20.800,8.701e+04 +2025,261.088851,10,540.400,34.900,2.1970,-539.000,-16.100,-34.700,539.000,16.100,-34.700,7.378e+04 +2025,261.096968,10,522.000,38.700,1.8750,-521.500,1.300,-22.800,521.500,-1.300,-22.800,9.072e+04 +2025,261.099298,10,518.600,42.300,1.8370,-518.600,3.200,-1.800,518.600,-3.200,-1.800,1.084e+05 +2025,261.114404,10,522.000,32.700,1.8300,-521.000,-2.200,-32.300,521.000,2.200,-32.300,6.477e+04 +2025,261.128345,10,529.300,36.000,1.9260,-527.600,-13.600,-40.200,527.600,13.600,-40.200,7.850e+04 +2025,261.136499,10,561.900,39.600,2.2490,-560.600,-13.800,-36.200,560.600,13.800,-36.200,9.499e+04 +2025,261.178359,10,555.400,39.600,2.4790,-555.000,-19.100,-3.800,555.000,19.100,-3.800,9.499e+04 +2025,261.190007,10,537.100,38.900,2.6720,-536.800,-15.100,-12.000,536.800,15.100,-12.000,9.166e+04 +2025,261.192301,10,542.900,40.100,2.7190,-542.400,-21.800,-11.700,542.400,21.800,-11.700,9.740e+04 +2025,261.194630,10,546.800,39.500,2.6340,-546.600,-11.100,-6.000,546.600,11.100,-6.000,9.451e+04 +2025,261.201619,10,540.600,38.700,2.7980,-539.900,-20.900,-17.800,539.900,20.900,-17.800,9.072e+04 +2025,261.227208,10,549.500,42.100,2.4190,-547.900,32.900,-25.400,547.900,-32.900,-25.400,1.074e+05 +2025,261.241186,10,538.200,41.800,2.2020,-538.200,4.200,-5.900,538.200,-4.200,-5.900,1.058e+05 +2025,261.245845,10,538.200,41.200,2.4150,-538.000,15.600,2.400,538.000,-15.600,2.400,1.028e+05 +2025,261.258621,10,545.000,36.700,2.5980,-544.400,26.800,-2.000,544.400,-26.800,-2.000,8.159e+04 +2025,261.277222,10,548.000,42.600,2.1480,-547.900,-9.200,-7.000,547.900,9.200,-7.000,1.099e+05 +2025,261.292328,10,547.600,43.900,2.7760,-547.300,18.200,-6.200,547.300,-18.200,-6.200,1.167e+05 +2025,261.309800,10,524.100,47.700,2.1340,-522.500,6.300,-39.600,522.500,-6.300,-39.600,1.378e+05 +2025,261.323741,10,534.800,39.600,2.5130,-533.300,11.500,-38.200,533.300,-11.500,-38.200,9.499e+04 +2025,261.328400,10,543.600,40.600,2.7490,-542.300,31.300,-19.200,542.300,-31.300,-19.200,9.985e+04 +2025,261.336554,10,530.800,40.100,2.5010,-529.800,21.200,-23.800,529.800,-21.200,-23.800,9.740e+04 +2025,261.363271,10,533.800,39.200,2.5390,-532.300,-9.900,-38.200,532.300,9.900,-38.200,9.308e+04 +2025,261.376084,10,534.200,36.200,2.6620,-533.000,6.000,-35.000,533.000,-6.000,-35.000,7.938e+04 +2025,261.378414,10,536.300,37.900,2.6680,-535.400,0.900,-30.400,535.400,-0.900,-30.400,8.701e+04 +2025,261.407461,10,530.800,44.000,2.6810,-529.700,6.300,-34.600,529.700,-6.300,-34.600,1.173e+05 +2025,261.416780,10,530.200,40.600,2.9470,-528.900,13.500,-33.400,528.900,-13.500,-33.400,9.985e+04 +2025,261.420274,10,525.000,39.300,2.6310,-524.000,10.900,-29.400,524.000,-10.900,-29.400,9.356e+04 +2025,261.443497,10,527.000,41.500,2.7760,-526.400,12.900,-20.700,526.400,-12.900,-20.700,1.043e+05 +2025,261.450486,10,526.600,44.800,2.7320,-526.300,1.800,-17.100,526.300,-1.800,-17.100,1.216e+05 +2025,261.451651,10,527.400,42.300,2.6800,-527.000,2.400,-19.100,527.000,-2.400,-19.100,1.084e+05 +2025,261.478405,10,544.400,38.600,2.8080,-544.300,-7.700,-7.400,544.300,7.700,-7.400,9.025e+04 +2025,261.493547,10,524.000,39.300,2.6670,-523.800,5.600,-10.400,523.800,-5.600,-10.400,9.356e+04 +2025,261.499335,10,524.800,40.800,2.8940,-524.800,8.000,-2.000,524.800,-8.000,-2.000,1.008e+05 +2025,261.512148,10,533.000,38.200,2.6240,-532.900,2.200,-5.700,532.900,-2.200,-5.700,8.839e+04 +2025,261.517972,10,527.900,41.700,2.9610,-526.900,25.400,-21.300,526.900,-25.400,-21.300,1.053e+05 +2025,261.527254,10,526.700,41.700,2.8100,-525.400,22.800,-28.300,525.400,-22.800,-28.300,1.053e+05 +2025,261.531876,10,535.400,39.200,2.8450,-534.200,19.400,-29.800,534.200,-19.400,-29.800,9.308e+04 +2025,261.538865,10,539.000,43.200,2.7240,-539.000,5.800,3.000,539.000,-5.800,3.000,1.130e+05 +2025,261.544689,10,531.400,39.100,2.7900,-531.400,5.400,2.600,531.400,-5.400,2.600,9.261e+04 +2025,261.554008,10,519.800,39.000,2.5280,-519.500,11.300,-14.900,519.500,-11.300,-14.900,9.213e+04 +2025,261.576102,10,520.600,39.100,2.7160,-520.200,14.300,-14.500,520.200,-14.300,-14.500,9.261e+04 +2025,261.580762,10,529.800,40.800,3.0140,-529.000,22.500,-16.300,529.000,-22.500,-16.300,1.008e+05 +2025,261.601692,10,516.600,36.900,2.5020,-516.200,12.800,-16.300,516.200,-12.800,-16.300,8.248e+04 +2025,261.608644,10,514.000,39.800,2.4120,-513.500,8.300,-21.300,513.500,-8.300,-21.300,9.595e+04 +2025,261.626080,10,518.100,39.200,2.7050,-517.600,-1.500,-23.000,517.600,1.500,-23.000,9.308e+04 +2025,261.631904,10,518.600,39.100,2.6300,-518.300,-3.300,-18.700,518.300,3.300,-18.700,9.261e+04 +2025,261.643552,10,516.200,38.800,2.5900,-515.900,-5.000,-17.200,515.900,5.000,-17.200,9.119e+04 +2025,261.651705,10,546.000,30.100,2.3200,-545.900,2.600,-1.100,545.900,-2.600,-1.100,5.488e+04 +2025,261.662152,10,531.700,31.800,2.4840,-531.600,-5.200,-2.300,531.600,5.200,-2.300,6.125e+04 +2025,261.665647,10,540.600,29.200,2.1840,-540.500,-7.400,-3.900,540.500,7.400,-3.900,5.165e+04 +2025,261.676130,10,534.700,29.100,2.3060,-534.600,-9.200,-5.600,534.600,9.200,-5.600,5.129e+04 +2025,261.678460,10,534.900,29.000,2.3550,-534.700,-10.000,-5.800,534.700,10.000,-5.800,5.094e+04 +2025,261.695859,10,531.900,28.700,2.3380,-531.500,-13.700,-13.800,531.500,13.700,-13.800,4.989e+04 +2025,261.701683,10,530.000,30.800,2.3410,-529.600,-9.400,-18.400,529.600,9.400,-18.400,5.746e+04 +2025,261.704013,10,519.900,30.900,2.5450,-519.500,-12.900,-12.700,519.500,12.900,-12.700,5.784e+04 +2025,261.728437,10,515.100,33.300,2.6430,-514.600,-12.300,-19.200,514.600,12.300,-19.200,6.717e+04 +2025,261.769169,10,517.700,31.400,3.0320,-517.400,-7.800,-14.800,517.400,7.800,-14.800,5.972e+04 +2025,261.774957,10,524.600,34.800,2.9410,-524.400,-4.800,-14.500,524.400,4.800,-14.500,7.336e+04 +2025,261.777286,10,529.800,35.800,2.9780,-529.400,-3.000,-19.900,529.400,3.000,-19.900,7.763e+04 +2025,261.778451,10,511.100,36.400,2.7320,-510.900,-7.400,-11.900,510.900,7.400,-11.900,8.026e+04 +2025,261.809828,10,505.700,33.800,2.5990,-505.500,-9.400,-13.000,505.500,9.400,-13.000,6.920e+04 +2025,261.841241,10,493.600,32.700,2.5930,-493.200,0.500,-19.900,493.200,-0.500,-19.900,6.477e+04 +2025,261.859878,10,493.200,31.800,2.5150,-493.000,-1.900,-13.300,493.000,1.900,-13.300,6.125e+04 +2025,261.904032,10,512.600,30.800,2.5570,-512.200,-15.000,-11.200,512.200,15.000,-11.200,5.746e+04 +2025,261.910984,10,511.100,35.300,2.5910,-511.000,-6.000,-6.900,511.000,6.000,-6.900,7.548e+04 +2025,261.917973,10,511.000,30.500,2.6550,-510.800,-10.400,-9.500,510.800,10.400,-9.500,5.635e+04 +2025,261.921468,10,513.500,34.100,2.6300,-513.400,-5.400,-8.300,513.400,5.400,-8.300,7.044e+04 +2025,261.933116,10,518.400,31.400,2.8190,-518.300,-1.700,-11.300,518.300,1.700,-11.300,5.972e+04 +2025,261.937775,10,505.100,34.100,3.0270,-504.900,-9.100,-12.000,504.900,9.100,-12.000,7.044e+04 +2025,261.954046,10,510.800,31.900,2.8530,-510.700,-2.300,-6.300,510.700,2.300,-6.300,6.164e+04 +2025,261.964493,10,475.800,29.800,2.2320,-475.500,-13.100,-7.500,475.500,13.100,-7.500,5.379e+04 +2025,261.993576,10,462.700,26.800,2.1720,-462.700,-4.800,-3.900,462.700,4.800,-3.900,4.351e+04 +2025,262.027283,10,460.200,27.600,2.4780,-460.200,-4.100,-6.200,460.200,4.100,-6.200,4.614e+04 +2025,262.033107,10,456.900,32.300,2.3240,-456.900,-3.900,-0.200,456.900,3.900,-0.200,6.320e+04 +2025,262.042426,10,447.700,30.700,2.2360,-447.500,-8.200,-8.100,447.500,8.200,-8.100,5.709e+04 +2025,262.051708,10,446.400,30.300,2.2200,-446.300,-10.900,-3.400,446.300,10.900,-3.400,5.561e+04 +2025,262.073803,10,439.000,30.500,2.4040,-438.800,-12.400,-1.900,438.800,12.400,-1.900,5.635e+04 +2025,262.114498,10,438.100,26.200,2.6690,-437.900,-12.300,-4.300,437.900,12.300,-4.300,4.158e+04 +2025,262.235456,10,430.000,30.800,2.9740,-429.900,-6.900,-1.200,429.900,6.900,-1.200,5.746e+04 +2025,262.340071,10,424.800,23.600,3.5690,-424.700,5.600,2.700,424.700,-5.600,2.700,3.374e+04 +2025,262.351719,10,424.400,24.900,3.3340,-424.400,-5.400,-1.000,424.400,5.400,-1.000,3.756e+04 +2025,262.369155,10,418.200,26.700,3.6040,-418.200,-4.100,-0.100,418.200,4.100,-0.100,4.318e+04 +2025,262.372649,10,415.300,25.500,3.7110,-415.200,-6.400,-0.300,415.200,6.400,-0.300,3.939e+04 +2025,262.376144,10,415.500,26.800,3.7120,-415.400,-6.700,0.500,415.400,6.700,0.500,4.351e+04 +2025,262.384297,10,412.900,27.200,3.7800,-412.800,-8.200,1.800,412.800,8.200,1.800,4.481e+04 +2025,262.387792,10,412.200,27.600,3.9330,-412.100,-6.900,1.600,412.100,6.900,1.600,4.614e+04 +2025,262.393579,10,413.000,27.900,3.8020,-412.900,-6.800,1.300,412.900,6.800,1.300,4.715e+04 +2025,262.423828,10,413.700,26.100,3.6810,-413.700,-4.400,3.100,413.700,4.400,3.100,4.126e+04 +2025,262.426158,10,413.700,25.500,3.6600,-413.700,-5.800,2.900,413.700,5.800,2.900,3.939e+04 +2025,262.438934,10,416.400,25.300,3.6830,-416.300,-10.500,1.300,416.300,10.500,1.300,3.877e+04 +2025,262.564552,10,403.400,29.300,4.0980,-403.000,-16.200,3.300,403.000,16.200,3.300,5.200e+04 +2025,262.566881,10,402.000,30.000,3.6230,-401.800,-13.200,2.700,401.800,13.200,2.700,5.452e+04 +2025,262.579658,10,396.900,28.100,4.3870,-396.800,-9.900,1.600,396.800,9.900,1.600,4.783e+04 +2025,262.584317,10,395.600,30.000,4.4570,-395.400,-7.400,5.300,395.400,7.400,5.300,5.452e+04 +2025,262.626141,10,397.200,30.100,4.6180,-397.100,-10.500,4.800,397.100,10.500,4.800,5.488e+04 +2025,262.648236,10,396.600,27.800,4.5230,-396.400,-10.000,4.800,396.400,10.000,4.800,4.681e+04 +2025,262.654060,10,393.600,28.600,4.8020,-393.500,-9.100,5.500,393.500,9.100,5.500,4.955e+04 +2025,262.688968,10,389.300,27.400,4.8960,-389.100,-11.800,4.400,389.100,11.800,4.400,4.548e+04 +2025,262.697085,10,393.800,24.800,4.6410,-393.600,-9.500,6.200,393.600,9.500,6.200,3.726e+04 +2025,262.700580,10,394.400,25.300,4.6550,-394.300,-9.400,5.200,394.300,9.400,5.200,3.877e+04 +2025,262.706367,10,388.900,28.000,4.9670,-388.700,-12.400,2.800,388.700,12.400,2.800,4.749e+04 +2025,262.709862,10,389.100,27.900,4.9720,-388.900,-11.500,4.800,388.900,11.500,4.800,4.715e+04 +2025,262.713356,10,393.100,24.800,4.7820,-392.900,-11.000,3.900,392.900,11.000,3.900,3.726e+04 +2025,262.714521,10,391.800,24.700,4.6110,-391.600,-11.700,3.500,391.600,11.700,3.500,3.696e+04 +2025,262.715686,10,388.800,26.900,4.9920,-388.600,-11.800,4.000,388.600,11.800,4.000,4.383e+04 +2025,262.740110,10,386.800,26.800,4.6600,-386.700,-6.100,3.200,386.700,6.100,3.200,4.351e+04 +2025,262.772689,10,386.900,27.000,5.1080,-386.700,-12.600,5.100,386.700,12.600,5.100,4.416e+04 +2025,262.831985,10,384.200,27.200,4.8920,-384.100,-8.000,7.200,384.100,8.000,7.200,4.481e+04 +2025,262.948283,10,375.200,27.000,5.7410,-375.100,-8.100,4.800,375.100,8.100,4.800,4.416e+04 +2025,263.036662,10,369.700,25.600,5.8700,-369.500,-10.800,7.700,369.500,10.800,7.700,3.970e+04 +2025,263.042487,10,369.300,26.600,6.0700,-369.200,-9.200,5.300,369.200,9.200,5.300,4.286e+04 +2025,263.295978,10,357.100,22.800,5.4090,-357.000,-1.200,-2.300,357.000,1.200,-2.300,3.149e+04 +2025,263.357604,10,354.000,22.900,5.6170,-353.200,-24.000,-1.400,353.200,24.000,-1.400,3.177e+04 +2025,263.405289,10,355.000,23.100,6.0600,-354.300,-22.000,-0.600,354.300,22.000,-0.600,3.232e+04 +2025,263.492504,10,358.900,24.500,6.8270,-358.300,-20.900,-5.300,358.300,20.900,-5.300,3.636e+04 +2025,263.526211,10,346.800,24.300,6.4900,-346.500,-14.500,-1.300,346.500,14.500,-1.300,3.577e+04 +2025,263.530833,10,348.500,21.900,6.5240,-348.100,-16.800,3.800,348.100,16.800,3.800,2.905e+04 +2025,263.542482,10,351.400,22.900,6.5920,-350.900,-17.700,-6.600,350.900,17.700,-6.600,3.177e+04 +2025,263.548306,10,348.400,28.000,5.7810,-348.300,-9.300,0.900,348.300,9.300,0.900,4.749e+04 +2025,263.554130,10,347.700,26.400,6.3120,-347.400,-12.600,-0.900,347.400,12.600,-0.900,4.222e+04 +2025,263.583214,10,344.900,20.800,6.9230,-344.200,-15.700,-14.800,344.200,15.700,-14.800,2.621e+04 +2025,263.593660,10,353.100,20.700,8.1980,-352.400,-22.400,1.400,352.400,22.400,1.400,2.596e+04 +2025,263.601814,10,355.000,20.600,6.8940,-354.300,-22.200,3.000,354.300,22.200,3.000,2.571e+04 +2025,263.634356,10,351.100,21.400,8.5440,-350.400,-22.100,0.500,350.400,22.100,0.500,2.774e+04 +2025,263.645967,10,343.000,23.200,7.8960,-342.500,-18.100,0.600,342.500,18.100,0.600,3.260e+04 +2025,263.656450,10,341.300,24.000,7.4750,-341.200,-11.400,-1.000,341.200,11.400,-1.000,3.489e+04 +2025,263.662275,10,337.500,27.800,7.2840,-337.500,-4.000,-5.700,337.500,4.000,-5.700,4.681e+04 +2025,263.665769,10,336.100,27.600,7.7180,-336.100,-3.100,-4.500,336.100,3.100,-4.500,4.614e+04 +2025,263.669263,10,343.900,24.000,7.8070,-343.700,-10.900,1.100,343.700,10.900,1.100,3.489e+04 +2025,263.693651,10,342.400,20.900,7.9480,-341.900,-17.200,3.900,341.900,17.200,3.900,2.646e+04 +2025,263.694816,10,343.500,20.900,8.1620,-343.000,-17.000,4.500,343.000,17.000,4.500,2.646e+04 +2025,263.697146,10,342.900,21.800,7.8610,-342.400,-17.700,3.000,342.400,17.700,3.000,2.879e+04 +2025,263.706464,10,341.900,22.100,7.9840,-341.400,-18.100,3.900,341.400,18.100,3.900,2.958e+04 +2025,263.718076,10,344.600,20.500,8.0750,-344.200,-17.000,-1.300,344.200,17.000,-1.300,2.546e+04 +2025,263.757643,10,350.100,21.000,7.6530,-349.800,-13.500,-3.400,349.800,13.500,-3.400,2.671e+04 +2025,263.768089,10,347.600,19.700,7.9390,-347.300,-13.900,-3.700,347.300,13.900,-3.700,2.351e+04 +2025,263.775078,10,343.200,21.900,8.2850,-342.900,-13.900,-4.800,342.900,13.900,-4.800,2.905e+04 +2025,263.776243,10,341.500,21.900,8.6920,-341.300,-12.300,-1.500,341.300,12.300,-1.500,2.905e+04 +2025,263.783196,10,343.100,19.800,7.9510,-342.800,-15.600,-4.500,342.800,15.600,-4.500,2.375e+04 +2025,263.797173,10,343.300,21.100,8.3500,-342.900,-17.200,-2.300,342.900,17.200,-2.300,2.697e+04 +2025,263.819268,10,339.000,20.400,9.1460,-338.200,-21.500,-6.200,338.200,21.500,-6.200,2.521e+04 +2025,263.833210,10,337.700,24.400,9.1450,-337.300,-16.600,-4.400,337.300,16.600,-4.400,3.606e+04 +2025,263.837869,10,338.900,22.200,9.4800,-338.200,-18.100,-10.900,338.200,18.100,-10.900,2.985e+04 +2025,263.846022,10,339.600,22.300,9.7020,-339.200,-15.800,-8.700,339.200,15.800,-8.700,3.012e+04 +2025,263.862293,10,338.000,23.000,9.7950,-337.300,-18.200,11.100,337.300,18.200,11.100,3.204e+04 +2025,263.872740,10,337.300,21.200,10.6060,-336.900,-17.600,-1.400,336.900,17.600,-1.400,2.722e+04 +2025,263.875070,10,340.100,20.800,10.3850,-339.600,-17.000,-4.500,339.600,17.000,-4.500,2.621e+04 +2025,263.876235,10,341.400,21.500,10.2500,-341.000,-15.800,-5.100,341.000,15.800,-5.100,2.800e+04 +2025,263.877399,10,342.000,20.600,10.2490,-341.600,-15.700,-4.800,341.600,15.700,-4.800,2.571e+04 +2025,263.880857,10,342.000,20.600,10.1480,-341.500,-16.900,-5.800,341.500,16.900,-5.800,2.571e+04 +2025,263.896000,10,342.400,20.800,9.8610,-341.800,-18.600,8.200,341.800,18.600,8.200,2.621e+04 +2025,263.901824,10,342.800,20.700,9.5250,-342.200,-20.200,1.200,342.200,20.200,1.200,2.596e+04 +2025,263.934402,10,345.200,20.100,9.7590,-344.600,-20.400,-1.600,344.600,20.400,-1.600,2.447e+04 +2025,263.950673,10,334.900,19.300,10.2670,-334.700,-7.900,8.500,334.700,7.900,8.500,2.256e+04 +2025,263.969273,10,333.100,19.600,12.8710,-333.100,-0.800,-3.700,333.100,0.800,-3.700,2.327e+04 +2025,263.976262,10,331.400,18.700,13.3070,-331.400,2.100,-2.700,331.400,-2.100,-2.700,2.118e+04 +2025,263.977427,10,331.400,18.600,13.2910,-331.400,2.400,-2.900,331.400,-2.400,-2.900,2.096e+04 +2025,263.978592,10,330.900,18.600,13.3080,-330.900,2.500,-3.100,330.900,-2.500,-3.100,2.096e+04 +2025,263.982050,10,332.800,18.300,13.0540,-332.800,-0.100,1.000,332.800,0.100,1.000,2.029e+04 +2025,263.997192,10,335.000,19.700,12.2230,-335.000,-3.200,-5.000,335.000,3.200,-5.000,2.351e+04 +2025,264.012298,10,334.300,20.200,13.6930,-334.300,-1.500,-1.000,334.300,1.500,-1.000,2.472e+04 +2025,264.028605,10,336.000,20.100,12.8470,-336.000,-2.900,2.000,336.000,2.900,2.000,2.447e+04 +2025,264.037887,10,336.800,20.100,12.3770,-336.800,-2.600,0.100,336.800,2.600,0.100,2.447e+04 +2025,264.048334,10,335.400,19.600,12.2490,-335.400,-1.100,-0.400,335.400,1.100,-0.400,2.327e+04 +2025,264.050664,10,336.000,20.300,12.3800,-336.000,-2.100,-0.000,336.000,2.100,-0.000,2.496e+04 +2025,264.056488,10,335.000,20.200,12.3270,-335.000,-2.800,-0.500,335.000,2.800,-0.500,2.472e+04 +2025,264.073924,10,333.100,19.400,13.8210,-333.100,3.800,-1.800,333.100,-3.800,-1.800,2.280e+04 +2025,264.090231,10,331.700,20.000,14.2530,-331.700,0.700,2.000,331.700,-0.700,2.000,2.423e+04 +2025,264.127432,10,333.100,18.400,13.7750,-333.100,-0.300,-1.400,333.100,0.300,-1.400,2.051e+04 +2025,264.166963,10,329.500,17.900,14.6000,-329.500,-2.700,-3.000,329.500,2.700,-3.000,1.941e+04 +2025,264.177446,10,330.900,15.200,15.0990,-330.800,-4.400,-2.600,330.800,4.400,-2.600,1.399e+04 +2025,264.229753,10,336.400,17.900,15.8810,-336.300,-6.400,-5.200,336.300,6.400,-5.200,1.941e+04 +2025,264.259966,10,331.100,18.100,17.5360,-330.900,-7.400,-5.800,330.900,7.400,-5.800,1.984e+04 +2025,264.275108,10,331.500,17.600,17.8600,-331.400,-6.500,-4.900,331.400,6.500,-4.900,1.876e+04 +2025,264.276273,10,332.500,17.800,18.3250,-332.400,-6.400,-5.800,332.400,6.400,-5.800,1.919e+04 +2025,264.291415,10,328.100,18.100,19.1250,-327.900,-8.400,-3.700,327.900,8.400,-3.700,1.984e+04 +2025,264.293745,10,327.600,18.300,19.7360,-327.400,-8.900,-4.300,327.400,8.900,-4.300,2.029e+04 +2025,264.315804,10,319.100,18.000,20.0630,-318.500,-11.900,-16.100,318.500,11.900,-16.100,1.963e+04 +2025,264.328580,10,318.000,18.200,20.6220,-317.400,-11.400,-16.300,317.400,11.400,-16.300,2.006e+04 +2025,264.343723,10,319.300,18.500,18.9860,-318.900,-2.800,-15.300,318.900,2.800,-15.300,2.073e+04 +2025,264.356499,10,325.800,18.400,16.9270,-325.600,-11.200,-6.100,325.600,11.200,-6.100,2.051e+04 +2025,264.394902,10,327.500,16.500,18.6680,-327.000,-16.200,-10.100,327.000,16.200,-10.100,1.649e+04 +2025,264.398396,10,329.800,18.100,19.9160,-328.700,-20.400,-16.000,328.700,20.400,-16.000,1.984e+04 +2025,264.429773,10,325.500,14.800,20.9880,-325.100,-16.700,-3.400,325.100,16.700,-3.400,1.327e+04 +2025,264.430938,10,324.400,15.100,20.4040,-324.000,-15.900,-2.300,324.000,15.900,-2.300,1.381e+04 +2025,264.450703,10,325.500,15.800,21.5230,-325.000,-17.800,-3.500,325.000,17.800,-3.500,1.512e+04 +2025,264.453033,10,328.000,15.500,20.9070,-327.500,-18.300,-5.300,327.500,18.300,-5.300,1.455e+04 +2025,264.460022,10,326.900,15.700,22.5750,-326.300,-17.100,-9.500,326.300,17.100,-9.500,1.493e+04 +2025,264.475128,10,325.100,16.600,20.9950,-324.500,-16.300,-8.200,324.500,16.300,-8.200,1.669e+04 +2025,264.525106,10,317.200,17.000,20.4490,-317.000,-8.900,-5.200,317.000,8.900,-5.200,1.751e+04 +2025,264.528600,10,321.800,19.000,18.4600,-321.400,-10.200,-12.100,321.400,10.200,-12.100,2.187e+04 +2025,264.543706,10,319.900,20.800,20.4180,-319.500,-12.900,-8.600,319.500,12.900,-8.600,2.621e+04 +2025,264.549530,10,321.100,21.100,19.6280,-320.600,-15.400,-8.700,320.600,15.400,-8.700,2.697e+04 +2025,264.557684,10,316.100,22.400,20.1950,-316.000,-9.400,-4.100,316.000,9.400,-4.100,3.039e+04 +2025,264.593720,10,318.200,19.000,22.2260,-318.100,-2.700,-6.500,318.100,2.700,-6.500,2.187e+04 +2025,264.620474,10,317.600,15.700,24.4380,-317.400,-8.500,-6.700,317.400,8.500,-6.700,1.493e+04 +2025,264.622804,10,315.500,15.700,24.4220,-315.200,-9.400,-7.600,315.200,9.400,-7.600,1.493e+04 +2025,264.635580,10,316.600,18.400,23.8140,-316.300,-11.500,-10.000,316.300,11.500,-10.000,2.051e+04 +2025,264.643734,10,316.100,19.200,23.0140,-315.800,-7.100,-11.700,315.800,7.100,-11.700,2.233e+04 +2025,264.676275,10,312.600,18.600,22.2510,-312.000,-13.600,-13.300,312.000,13.600,-13.300,2.096e+04 +2025,264.679770,10,311.600,19.500,23.0430,-310.900,-14.500,-14.000,310.900,14.500,-14.000,2.303e+04 +2025,264.687923,10,311.100,19.300,19.4450,-310.200,-20.300,-12.300,310.200,20.300,-12.300,2.256e+04 +2025,264.699535,10,306.800,15.900,20.9990,-305.500,-24.900,-13.600,305.500,24.900,-13.600,1.531e+04 +2025,264.706524,10,304.500,16.000,20.1260,-303.200,-24.300,-13.400,303.200,24.300,-13.400,1.551e+04 +2025,264.707689,10,305.400,16.200,20.0880,-304.100,-25.100,-13.900,304.100,25.100,-13.900,1.590e+04 +2025,264.710018,10,306.100,16.400,20.3410,-304.500,-27.500,-14.900,304.500,27.500,-14.900,1.629e+04 +2025,264.723996,10,301.700,15.000,18.0940,-300.400,-21.000,-18.300,300.400,21.000,-18.300,1.363e+04 +2025,264.780926,10,299.000,16.400,20.2090,-297.000,-29.400,-19.600,297.000,29.400,-19.600,1.629e+04 +2025,264.789080,10,293.700,17.100,21.6130,-291.400,-29.400,-21.200,291.400,29.400,-21.200,1.771e+04 +2025,264.798398,10,294.800,15.500,20.0350,-292.000,-34.400,-20.200,292.000,34.400,-20.200,1.455e+04 +2025,264.803021,10,294.700,15.900,20.6590,-291.900,-34.800,-20.900,291.900,34.800,-20.900,1.531e+04 +2025,264.821658,10,295.400,16.600,21.6380,-293.000,-32.800,-17.900,293.000,32.800,-17.900,1.669e+04 +2025,264.828611,10,296.200,16.200,22.4340,-293.700,-34.400,-18.100,293.700,34.400,-18.100,1.590e+04 +2025,264.869306,10,305.500,16.100,24.8060,-303.100,-34.600,-16.500,303.100,34.600,-16.500,1.570e+04 +2025,264.879790,10,304.600,17.400,24.5370,-302.300,-33.100,-17.300,302.300,33.100,-17.300,1.834e+04 +2025,264.897225,10,308.200,16.800,28.6560,-306.000,-34.000,-13.700,306.000,34.000,-13.700,1.710e+04 +2025,264.901885,10,308.200,16.800,28.1660,-305.900,-33.800,-15.500,305.900,33.800,-15.500,1.710e+04 +2025,264.905379,10,310.400,15.000,27.3620,-308.200,-34.100,-14.200,308.200,34.100,-14.200,1.363e+04 +2025,264.966968,10,312.300,16.400,20.8090,-309.600,-41.100,-3.100,309.600,41.100,-3.100,1.629e+04 +2025,264.976287,10,311.900,16.900,20.4340,-309.200,-40.000,-7.800,309.200,40.000,-7.800,1.730e+04 +2025,265.004242,10,316.300,20.300,24.1780,-315.700,-15.900,-9.700,315.700,15.900,-9.700,2.496e+04 +2025,265.017019,10,321.100,18.500,38.8230,-320.900,-11.100,-1.100,320.900,11.100,-1.100,2.073e+04 +2025,265.033290,10,316.400,24.000,16.3590,-315.600,-21.900,-3.400,315.600,21.900,-3.400,3.489e+04 +2025,265.051891,10,315.000,28.000,18.3300,-313.600,-29.100,-0.800,313.600,29.100,-0.800,4.749e+04 +2025,265.070491,10,330.000,31.200,16.3480,-329.700,-9.500,-9.100,329.700,9.500,-9.100,5.896e+04 +2025,265.080938,10,330.500,28.200,20.4410,-330.300,-8.800,-8.400,330.300,8.800,-8.400,4.817e+04 +2025,265.082103,10,330.100,28.000,20.9830,-329.900,-8.600,-8.000,329.900,8.600,-8.000,4.749e+04 +2025,265.090257,10,332.000,28.300,19.1640,-331.800,-11.400,0.200,331.800,11.400,0.200,4.851e+04 +2025,265.107692,10,330.100,31.000,16.8440,-329.400,-6.300,-20.500,329.400,6.300,-20.500,5.821e+04 +2025,265.114681,10,328.400,31.400,15.9770,-327.700,-8.800,-19.600,327.700,8.800,-19.600,5.972e+04 +2025,265.168153,10,331.800,32.600,22.5980,-330.900,-24.600,1.400,330.900,24.600,1.400,6.438e+04 +2025,265.170483,10,335.600,33.500,22.6480,-334.600,-25.800,-3.200,334.600,25.800,-3.200,6.798e+04 +2025,265.177472,10,331.500,32.600,21.4160,-330.500,-25.700,-3.400,330.500,25.700,-3.400,6.438e+04 +2025,265.222827,10,338.600,34.300,22.2720,-336.900,-28.100,-19.900,336.900,28.100,-19.900,7.126e+04 +2025,265.240263,10,348.400,37.500,25.4230,-347.600,-24.200,4.800,347.600,24.200,4.800,8.518e+04 +2025,265.306548,10,357.400,34.700,14.5110,-356.500,-25.700,4.500,356.500,25.700,4.500,7.294e+04 +2025,265.328643,10,383.700,46.200,20.9870,-382.900,-23.200,7.900,382.900,23.200,7.900,1.293e+05 +2025,265.334431,10,361.600,36.300,20.2260,-360.500,-25.800,12.400,360.500,25.800,12.400,7.982e+04 +2025,265.363515,10,370.800,36.600,24.6980,-367.700,-46.800,10.800,367.700,46.800,10.800,8.114e+04 +2025,265.483308,10,400.100,68.200,15.9770,-398.400,-2.000,-36.600,398.400,2.000,-36.600,2.817e+05 +2025,265.506568,10,415.400,68.700,16.8470,-415.100,-3.100,12.700,415.100,3.100,12.700,2.859e+05 +2025,265.512356,10,406.100,64.300,17.6580,-405.600,-11.100,17.500,405.600,11.100,17.500,2.504e+05 +2025,265.521675,10,430.200,68.600,19.3530,-429.200,-18.400,24.100,429.200,18.400,24.100,2.851e+05 +2025,265.528627,10,418.300,72.000,21.1920,-417.300,-16.800,-23.700,417.300,16.800,-23.700,3.140e+05 +2025,265.547228,10,419.500,60.900,16.8690,-419.200,1.100,-15.800,419.200,-1.100,-15.800,2.247e+05 +2025,265.548393,10,415.200,64.200,18.0320,-414.900,-13.900,-8.600,414.900,13.900,-8.600,2.497e+05 +2025,265.564664,10,441.200,72.700,15.1340,-440.600,8.300,22.000,440.600,-8.300,22.000,3.201e+05 +2025,265.800719,10,515.300,82.400,10.0630,-512.200,14.500,-54.200,512.200,-14.500,-54.200,4.113e+05 +2025,265.822851,10,529.600,104.900,11.3950,-518.800,95.900,-46.600,518.800,-95.900,-46.600,6.666e+05 +2025,265.840286,10,544.200,79.800,9.3070,-543.500,21.800,-16.100,543.500,-21.800,-16.100,3.857e+05 +2025,265.887971,10,537.400,72.700,8.6330,-535.800,16.300,-39.000,535.800,-16.300,-39.000,3.201e+05 +2025,266.062402,10,522.800,67.900,8.5960,-522.400,13.000,12.700,522.400,-13.000,12.700,2.793e+05 +2025,266.067025,10,519.100,70.900,9.3210,-519.000,11.000,1.600,519.000,-11.000,1.600,3.045e+05 +2025,266.391426,10,590.000,65.400,4.0170,-589.600,7.000,20.700,589.600,-7.000,20.700,2.591e+05 +2025,266.401909,10,568.700,66.000,4.7500,-568.600,10.800,-6.300,568.600,-10.800,-6.300,2.639e+05 +2025,266.404239,10,564.000,72.000,4.5110,-561.800,48.200,-13.000,561.800,-48.200,-13.000,3.140e+05 +2025,266.530985,10,614.500,73.200,4.3460,-609.400,-15.500,77.600,609.400,15.500,77.600,3.246e+05 +2025,266.568186,10,574.000,53.200,3.7960,-572.400,33.800,-26.100,572.400,-33.800,-26.100,1.714e+05 +2025,266.594940,10,566.500,48.700,3.7370,-564.600,31.500,-33.500,564.600,-31.500,-33.500,1.437e+05 +2025,266.646119,10,559.300,45.700,3.7310,-558.700,-13.600,23.200,558.700,13.600,23.200,1.265e+05 +2025,266.654237,10,568.100,52.500,3.9600,-567.700,-6.300,19.400,567.700,6.300,19.400,1.670e+05 +2025,266.677496,10,556.900,49.900,3.6200,-556.700,-14.500,-0.200,556.700,14.500,-0.200,1.508e+05 +2025,266.678661,10,551.300,53.800,3.6800,-551.100,-11.900,1.600,551.100,11.900,1.600,1.753e+05 +2025,266.682156,10,592.700,53.800,3.7530,-591.400,28.100,28.000,591.400,-28.100,28.000,1.753e+05 +2025,266.687943,10,605.400,55.000,4.3510,-605.200,3.100,12.100,605.200,-3.100,12.100,1.832e+05 +2025,266.720522,10,564.300,57.500,4.6000,-560.600,58.900,24.900,560.600,-58.900,24.900,2.003e+05 +2025,266.756558,10,552.800,58.400,3.5730,-550.300,39.300,-34.900,550.300,-39.300,-34.900,2.066e+05 +2025,266.813562,10,564.800,48.300,3.7220,-564.300,-16.500,14.900,564.300,16.500,14.900,1.413e+05 +2025,266.833327,10,554.300,50.500,3.8250,-554.000,-7.900,14.900,554.000,7.900,14.900,1.545e+05 +2025,266.834492,10,558.000,51.300,3.7240,-557.500,-5.700,20.700,557.500,5.700,20.700,1.594e+05 +2025,266.850726,10,585.700,46.600,3.5390,-585.500,-8.200,-12.000,585.500,8.200,-12.000,1.315e+05 +2025,266.858880,10,575.900,52.200,3.3450,-575.500,-12.400,18.200,575.500,12.400,18.200,1.651e+05 +2025,266.862375,10,574.000,49.100,3.5980,-572.700,6.300,37.700,572.700,-6.300,37.700,1.460e+05 +2025,266.883305,10,560.500,50.600,3.2940,-559.800,-7.900,-25.400,559.800,7.900,-25.400,1.551e+05 +2025,266.962367,10,531.500,49.500,2.9240,-531.000,-6.400,22.700,531.000,6.400,22.700,1.484e+05 +2025,266.976308,10,551.700,46.600,2.6930,-550.700,-15.600,29.400,550.700,15.600,29.400,1.315e+05 +2025,266.984462,10,537.000,46.800,2.8450,-536.100,-10.600,-29.500,536.100,10.600,-29.500,1.327e+05 +2025,267.012381,10,536.600,52.200,2.9710,-535.900,-0.500,-27.200,535.900,0.500,-27.200,1.651e+05 +2025,267.100762,10,536.900,46.000,2.9350,-536.400,-20.800,8.000,536.400,20.800,8.000,1.282e+05 +2025,267.101926,10,543.600,43.200,3.0320,-543.100,-16.900,15.700,543.100,16.900,15.700,1.130e+05 +2025,267.125186,10,563.100,45.000,2.3460,-562.700,-19.100,9.500,562.700,19.100,9.500,1.227e+05 +2025,267.134469,10,546.200,40.300,2.3940,-545.800,-18.800,8.400,545.800,18.800,8.400,9.838e+04 +2025,267.143751,10,567.000,45.800,3.0230,-566.100,-20.700,22.800,566.100,20.700,22.800,1.271e+05 +2025,267.156564,10,552.400,44.400,2.7210,-552.000,5.100,20.700,552.000,-5.100,20.700,1.194e+05 +2025,267.160058,10,539.300,45.300,2.7490,-538.200,8.700,33.400,538.200,-8.700,33.400,1.243e+05 +2025,267.189142,10,579.100,41.200,2.5120,-578.700,-21.500,4.800,578.700,21.500,4.800,1.028e+05 +2025,267.206578,10,552.000,45.100,3.1400,-551.500,-23.300,-1.000,551.500,23.300,-1.000,1.232e+05 +2025,267.208908,10,568.500,47.500,2.9740,-567.900,-22.600,10.100,567.900,22.600,10.100,1.367e+05 +2025,267.213567,10,553.100,46.100,2.9710,-552.100,-12.100,30.300,552.100,12.100,30.300,1.287e+05 +2025,267.217025,10,557.500,42.600,2.8740,-556.500,-20.900,24.900,556.500,20.900,24.900,1.099e+05 +2025,267.329794,10,519.000,40.300,2.6150,-518.800,12.400,-7.100,518.800,-12.400,-7.100,9.838e+04 +2025,267.371654,10,559.200,39.700,3.3470,-558.600,-26.200,-2.000,558.600,26.200,-2.000,9.547e+04 +2025,267.379808,10,566.900,33.000,2.9390,-565.900,-28.800,-17.000,565.900,28.800,-17.000,6.596e+04 +2025,267.383303,10,555.400,37.400,3.2260,-554.600,-27.600,7.300,554.600,27.600,7.300,8.473e+04 +2025,267.405398,10,532.000,34.900,2.9250,-531.300,-18.800,-21.900,531.300,18.800,-21.900,7.378e+04 +2025,267.406563,10,533.000,37.500,2.9770,-532.300,-26.300,4.000,532.300,26.300,4.000,8.518e+04 +2025,267.420504,10,531.900,35.800,3.1760,-531.400,-15.200,-19.600,531.400,15.200,-19.600,7.763e+04 +2025,267.433281,10,515.200,42.900,2.5930,-514.900,9.300,14.100,514.900,-9.300,14.100,1.115e+05 +2025,267.450716,10,513.700,45.300,2.8280,-513.100,13.200,-19.900,513.100,-13.200,-19.900,1.243e+05 +2025,267.472812,10,523.300,33.700,3.2950,-521.800,19.200,-34.700,521.800,-19.200,-34.700,6.879e+04 +2025,267.475141,10,528.100,36.300,3.4900,-526.700,18.100,-34.300,526.700,-18.100,-34.300,7.982e+04 +2025,267.483295,10,508.700,37.700,3.1180,-508.500,8.400,-13.100,508.500,-8.400,-13.100,8.609e+04 +2025,267.508884,10,503.000,31.900,2.9950,-502.600,19.300,6.800,502.600,-19.300,6.800,6.164e+04 +2025,267.510049,10,507.500,38.400,3.2640,-507.100,-2.500,20.000,507.100,2.500,20.000,8.932e+04 +2025,267.529815,10,522.800,34.400,3.2740,-521.900,-27.200,15.400,521.900,27.200,15.400,7.168e+04 +2025,267.540262,10,507.500,42.700,3.1850,-505.800,9.100,40.000,505.800,-9.100,40.000,1.104e+05 +2025,267.554240,10,507.800,36.200,3.1860,-506.900,5.100,-29.100,506.900,-5.100,-29.100,7.938e+04 +2025,267.574005,10,544.800,32.500,2.9300,-543.400,-37.900,8.900,543.400,37.900,8.900,6.398e+04 +2025,267.618195,10,514.800,39.000,3.2020,-513.500,-3.600,36.400,513.500,3.600,36.400,9.213e+04 +2025,267.623983,10,515.800,38.000,3.2300,-514.900,-12.800,26.300,514.900,12.800,26.300,8.747e+04 +2025,267.630972,10,508.600,38.700,3.1250,-508.300,-9.500,15.400,508.300,9.500,15.400,9.072e+04 +2025,267.644913,10,522.200,41.900,2.8570,-521.500,1.300,28.200,521.500,-1.300,28.200,1.063e+05 +2025,267.649573,10,546.600,41.000,3.6590,-545.000,-17.200,38.300,545.000,17.200,38.300,1.018e+05 +2025,267.654232,10,536.200,40.300,3.5850,-535.100,-11.900,32.100,535.100,11.900,32.100,9.838e+04 +2025,267.684444,10,542.800,37.300,3.4230,-541.200,-16.700,-37.700,541.200,16.700,-37.700,8.428e+04 +2025,267.705411,10,518.200,36.400,3.3010,-517.800,-19.000,2.600,517.800,19.000,2.600,8.026e+04 +2025,267.719352,10,515.900,35.800,3.4060,-515.100,-25.200,-14.200,515.100,25.200,-14.200,7.763e+04 +2025,267.757719,10,503.800,35.500,3.2210,-503.300,-21.700,3.700,503.300,21.700,3.700,7.634e+04 +2025,267.762342,10,523.600,36.700,3.5590,-522.700,-29.100,-5.600,522.700,29.100,-5.600,8.159e+04 +2025,267.777484,10,482.000,34.300,3.0670,-481.900,-4.200,-2.500,481.900,4.200,-2.500,7.126e+04 +2025,267.784473,10,489.900,31.300,3.2330,-489.700,-13.100,5.300,489.700,13.100,5.300,5.934e+04 +2025,267.914678,10,519.400,37.900,3.6570,-518.800,-11.200,23.900,518.800,11.200,23.900,8.701e+04 +2025,267.920502,10,501.300,36.400,3.8550,-501.000,-13.200,10.800,501.000,13.200,10.800,8.026e+04 +2025,267.937901,10,504.600,35.100,3.7720,-504.300,-17.100,8.900,504.300,17.100,8.900,7.463e+04 +2025,267.948385,10,495.300,31.600,3.1470,-494.500,-22.700,-18.700,494.500,22.700,-18.700,6.049e+04 +2025,268.020494,10,525.600,41.800,3.8080,-525.300,-14.500,10.800,525.300,14.500,10.800,1.058e+05 +2025,268.043754,10,509.000,37.700,3.2670,-508.700,-18.000,5.200,508.700,18.000,5.200,8.609e+04 +2025,268.061190,10,513.100,41.000,3.8170,-512.800,-12.600,12.600,512.800,12.600,12.600,1.018e+05 +2025,268.085615,10,490.900,40.900,3.6870,-490.900,2.500,-3.900,490.900,-2.500,-3.900,1.013e+05 +2025,268.100758,10,495.800,40.800,4.0090,-495.700,-11.100,-7.300,495.700,11.100,-7.300,1.008e+05 +2025,268.108875,10,544.000,40.100,4.1220,-543.700,7.700,17.800,543.700,-7.700,17.800,9.740e+04 +2025,268.114663,10,500.400,46.000,4.3030,-500.400,-2.900,4.100,500.400,2.900,4.100,1.282e+05 +2025,268.132098,10,511.400,42.900,4.6230,-511.200,-15.900,5.300,511.200,15.900,5.300,1.115e+05 +2025,268.135593,10,507.500,38.400,3.8970,-507.000,-17.000,-11.900,507.000,17.000,-11.900,8.932e+04 +2025,268.169336,10,544.800,40.700,4.1260,-544.600,-11.500,4.700,544.600,11.500,4.700,1.003e+05 +2025,268.196091,10,497.300,40.800,4.1590,-496.900,-14.900,-12.800,496.900,14.900,-12.800,1.008e+05 +2025,268.214655,10,499.500,43.500,4.2330,-497.500,41.200,17.400,497.500,-41.200,17.400,1.146e+05 +2025,268.233256,10,492.300,43.200,4.2590,-492.100,-10.100,-6.600,492.100,10.100,-6.600,1.130e+05 +2025,268.236750,10,517.400,45.300,4.6630,-516.600,-16.300,-23.800,516.600,16.300,-23.800,1.243e+05 +2025,268.241409,10,524.600,47.100,4.5180,-524.200,-13.600,16.000,524.200,13.600,16.000,1.344e+05 +2025,268.270493,10,488.400,41.900,4.0070,-488.100,-14.100,-8.300,488.100,14.100,-8.300,1.063e+05 +2025,268.271658,10,497.700,43.300,4.4990,-497.500,-15.900,1.300,497.500,15.900,1.300,1.136e+05 +2025,268.280940,10,502.100,43.200,3.8620,-501.800,-14.000,8.800,501.800,14.000,8.800,1.130e+05 +2025,268.312354,10,506.300,41.900,4.4680,-505.100,-12.300,-33.400,505.100,12.300,-33.400,1.063e+05 +2025,268.387922,10,500.200,41.000,4.4270,-499.700,-21.000,-1.700,499.700,21.000,-1.700,1.018e+05 +2025,269.236746,10,456.500,38.500,3.2640,-455.600,-16.000,23.600,455.600,16.000,23.600,8.979e+04 +2025,269.323961,10,441.700,35.400,3.6090,-441.600,-8.800,7.200,441.600,8.800,7.200,7.591e+04 +2025,269.376305,10,438.200,31.700,3.3800,-437.900,-9.400,14.700,437.900,9.400,14.700,6.087e+04 +2025,269.413470,10,445.100,33.800,3.7520,-444.200,9.600,-27.500,444.200,-9.600,-27.500,6.920e+04 +2025,269.418130,10,454.400,30.000,2.8540,-454.000,-0.900,-20.100,454.000,0.900,-20.100,5.452e+04 +2025,269.461155,10,463.400,34.800,3.7290,-462.000,13.200,33.900,462.000,-13.200,33.900,7.336e+04 +2025,269.476298,10,440.300,34.200,3.3810,-439.900,-12.300,15.000,439.900,12.300,15.000,7.085e+04 +2025,269.483250,10,430.900,34.600,3.5800,-430.600,-6.700,13.400,430.600,6.700,13.400,7.252e+04 +2025,269.487910,10,428.300,35.400,3.6790,-428.300,-3.200,2.400,428.300,3.200,2.400,7.591e+04 +2025,269.520452,10,432.500,39.000,3.9030,-432.500,-1.000,1.100,432.500,1.000,1.100,9.213e+04 +2025,269.521617,10,435.900,37.500,3.7740,-435.900,-1.000,-2.100,435.900,1.000,-2.100,8.518e+04 +2025,269.533228,10,427.700,36.000,3.7770,-427.600,4.600,6.200,427.600,-4.600,6.200,7.850e+04 +2025,269.534393,10,426.900,35.100,3.7410,-426.700,8.300,8.300,426.700,-8.300,8.300,7.463e+04 +2025,269.544876,10,429.100,38.200,3.8620,-429.000,6.900,-5.900,429.000,-6.900,-5.900,8.839e+04 +2025,269.546041,10,429.400,38.300,3.8640,-429.200,7.900,-9.200,429.200,-7.900,-9.200,8.886e+04 +2025,269.553030,10,430.700,36.000,3.6660,-430.300,12.400,-15.100,430.300,-12.400,-15.100,7.850e+04 +2025,269.601843,10,422.700,32.600,3.7820,-422.600,9.400,1.400,422.600,-9.400,1.400,6.438e+04 +2025,269.609996,10,423.400,31.900,3.9100,-423.300,5.400,-6.000,423.300,-5.400,-6.000,6.164e+04 +2025,269.611161,10,422.300,31.300,3.8920,-422.300,-0.400,4.200,422.300,0.400,4.200,5.934e+04 +2025,269.634421,10,433.600,32.900,4.2270,-433.500,-4.800,-7.900,433.500,4.800,-7.900,6.557e+04 +2025,269.644868,10,419.100,31.600,3.7380,-419.100,1.500,-1.400,419.100,-1.500,-1.400,6.049e+04 +2025,269.690222,10,418.200,31.300,4.0910,-418.200,-2.000,4.300,418.200,2.000,4.300,5.934e+04 +2025,269.709988,10,416.500,30.800,4.2300,-416.400,-6.300,1.300,416.400,6.300,1.300,5.746e+04 +2025,269.719306,10,413.500,33.700,4.1940,-413.500,3.500,-2.400,413.500,-3.500,-2.400,6.879e+04 +2025,269.773944,10,418.300,30.500,4.0590,-418.200,-5.700,-2.100,418.200,5.700,-2.100,5.635e+04 +2025,269.785555,10,421.800,32.300,5.2100,-421.800,-6.200,-5.700,421.800,6.200,-5.700,6.320e+04 +2025,269.786720,10,417.500,29.100,4.7810,-417.400,-6.500,-5.200,417.400,6.500,-5.200,5.129e+04 +2025,269.801863,10,412.100,29.400,5.1000,-412.100,-6.200,-5.300,412.100,6.200,-5.300,5.236e+04 +2025,269.805357,10,414.300,28.200,5.1090,-414.200,-6.700,-5.000,414.200,6.700,-5.000,4.817e+04 +2025,269.827452,10,415.000,30.700,5.3580,-415.000,-2.000,-4.200,415.000,2.000,-4.200,5.709e+04 +2025,269.906514,10,418.800,25.700,6.4330,-418.700,-6.100,-1.900,418.700,6.100,-1.900,4.001e+04 +2025,269.909972,10,416.400,25.100,5.9480,-416.400,-5.500,-1.100,416.400,5.500,-1.100,3.816e+04 +2025,269.915796,10,413.800,26.000,6.7570,-413.800,-7.700,1.900,413.800,7.700,1.900,4.095e+04 +2025,269.929774,10,413.200,24.700,5.5540,-413.100,-6.800,1.000,413.100,6.800,1.000,3.696e+04 +2025,269.946045,10,403.200,24.800,5.9710,-402.600,-3.700,-20.700,402.600,3.700,-20.700,3.726e+04 +2025,269.948375,10,405.400,24.600,6.2480,-405.100,-7.200,-13.900,405.100,7.200,-13.900,3.666e+04 +2025,269.949540,10,411.500,24.400,5.9040,-411.400,-5.700,-3.600,411.400,5.700,-3.600,3.606e+04 +2025,269.958822,10,413.000,26.800,6.2330,-412.900,-3.200,8.200,412.900,3.200,8.200,4.351e+04 +2025,269.976258,10,414.000,24.900,6.2340,-414.000,0.100,2.600,414.000,-0.100,2.600,3.756e+04 +2025,270.037920,10,404.900,26.000,6.0720,-404.700,-12.900,2.500,404.700,12.900,2.500,4.095e+04 +2025,270.106499,10,382.400,31.100,6.7890,-382.300,-9.100,3.700,382.300,9.100,3.700,5.859e+04 +2025,270.109994,10,379.300,31.000,6.6540,-379.200,-5.400,1.400,379.200,5.400,1.400,5.821e+04 +2025,270.121642,10,382.600,29.400,7.2560,-382.400,1.700,-12.400,382.400,-1.700,-12.400,5.236e+04 +2025,270.125100,10,381.000,30.900,7.4610,-380.800,1.400,-12.700,380.800,-1.400,-12.700,5.784e+04 +2025,270.134418,10,385.100,29.300,6.6700,-384.500,-16.500,14.600,384.500,16.500,14.600,5.200e+04 +2025,270.143737,10,379.100,30.300,7.3660,-378.800,-9.500,-10.600,378.800,9.500,-10.600,5.561e+04 +2025,270.151854,10,380.600,30.800,7.2280,-380.000,-13.200,-16.500,380.000,13.200,-16.500,5.746e+04 +2025,270.191385,10,382.700,29.100,7.4440,-382.000,-6.100,-21.400,382.000,6.100,-21.400,5.129e+04 +2025,270.249554,10,386.400,30.900,8.2610,-386.000,-12.700,-10.800,386.000,12.700,-10.800,5.784e+04 +2025,270.258836,10,393.600,30.500,7.9420,-393.000,-10.400,-18.600,393.000,10.400,-18.600,5.635e+04 +2025,270.262294,10,389.600,32.200,8.3370,-389.100,-13.600,-13.500,389.100,13.600,-13.500,6.281e+04 +2025,270.271612,10,393.700,30.800,8.1630,-393.500,-10.900,-2.800,393.500,10.900,-2.800,5.746e+04 +2025,270.293708,10,388.500,30.400,8.2490,-388.000,-18.100,-7.900,388.000,18.100,-7.900,5.598e+04 +2025,270.294872,10,386.700,30.400,7.6800,-386.400,-14.400,-5.100,386.400,14.400,-5.100,5.598e+04 +2025,270.296037,10,384.300,31.900,8.2960,-383.900,-16.800,-1.400,383.900,16.800,-1.400,6.164e+04 +2025,270.312308,10,391.500,30.400,8.3030,-391.300,-13.400,1.200,391.300,13.400,1.200,5.598e+04 +2025,270.327415,10,385.700,32.600,8.2350,-385.200,-19.500,-0.100,385.200,19.500,-0.100,6.438e+04 +2025,270.328579,10,385.000,30.400,8.1380,-384.700,-15.300,3.600,384.700,15.300,3.600,5.598e+04 +2025,270.340228,10,379.700,29.400,7.9220,-379.200,-16.900,-10.300,379.200,16.900,-10.300,5.236e+04 +2025,270.358828,10,385.600,29.600,8.0580,-384.900,-20.400,-9.300,384.900,20.400,-9.300,5.307e+04 +2025,270.372770,10,381.000,29.400,7.8520,-380.400,-18.800,-10.400,380.400,18.800,-10.400,5.236e+04 +2025,270.457656,10,372.400,29.200,6.7790,-371.600,-7.700,24.000,371.600,7.700,24.000,5.165e+04 +2025,270.473927,10,361.000,29.200,7.2710,-360.600,-12.000,9.700,360.600,12.000,9.700,5.165e+04 +2025,270.505304,10,386.000,32.100,9.2990,-384.900,-27.600,-9.500,384.900,27.600,-9.500,6.242e+04 +2025,270.507634,10,386.300,33.000,9.2640,-385.400,-25.300,-8.900,385.400,25.300,-8.900,6.596e+04 +2025,270.516953,10,372.000,29.900,8.5770,-371.900,2.900,3.300,371.900,-2.900,3.300,5.415e+04 +2025,270.518117,10,362.100,32.000,8.4980,-361.800,-13.600,4.000,361.800,13.600,4.000,6.203e+04 +2025,270.658806,10,372.400,33.000,10.9190,-371.100,-27.700,14.000,371.100,27.700,14.000,6.596e+04 +2025,270.670418,10,372.600,30.300,11.6720,-371.700,-24.500,8.800,371.700,24.500,8.800,5.561e+04 +2025,270.671583,10,372.800,30.500,11.0690,-372.000,-22.700,9.300,372.000,22.700,9.300,5.635e+04 +2025,270.684359,10,373.500,30.500,11.7750,-372.600,-25.500,3.900,372.600,25.500,3.900,5.635e+04 +2025,270.685524,10,372.500,30.500,11.3810,-371.600,-26.200,5.400,371.600,26.200,5.400,5.635e+04 +2025,270.714608,10,370.700,27.000,10.6770,-370.400,-14.400,4.200,370.400,14.400,4.200,4.416e+04 +2025,270.719267,10,373.900,29.000,10.3210,-373.500,-17.500,2.300,373.500,17.500,2.300,5.094e+04 +2025,270.723927,10,375.300,29.900,12.4290,-374.500,-23.000,1.900,374.500,23.000,1.900,5.415e+04 +2025,270.733209,10,372.100,31.300,13.0160,-371.200,-25.700,-0.700,371.200,25.700,-0.700,5.934e+04 +2025,270.746022,10,359.900,31.300,13.3490,-359.000,-24.700,2.100,359.000,24.700,2.100,5.934e+04 +2025,270.753010,10,362.600,31.200,12.8910,-361.900,-21.500,2.900,361.900,21.500,2.900,5.896e+04 +2025,270.756468,10,356.800,31.500,13.3150,-356.300,-17.000,-0.800,356.300,17.000,-0.800,6.010e+04 +2025,270.769245,10,357.600,35.400,12.4790,-357.200,-16.600,-1.700,357.200,16.600,-1.700,7.591e+04 +2025,270.775069,10,358.100,34.000,12.7420,-357.400,-21.200,-4.100,357.400,21.200,-4.100,7.002e+04 +2025,270.779728,10,369.500,32.800,13.4380,-367.200,-38.100,14.000,367.200,38.100,14.000,6.517e+04 +2025,270.790175,10,366.000,32.600,14.1760,-364.800,-29.800,-1.200,364.800,29.800,-1.200,6.438e+04 +2025,270.857625,10,378.900,26.600,13.7030,-378.100,-25.000,6.500,378.100,25.000,6.500,4.286e+04 +2025,270.861119,10,379.100,24.900,12.2920,-378.700,-16.300,5.300,378.700,16.300,5.300,3.756e+04 +2025,270.913463,10,369.100,21.800,11.4180,-366.500,-42.000,10.200,366.500,42.000,10.200,2.879e+04 +2025,270.918123,10,364.000,22.400,12.4000,-361.200,-43.000,14.100,361.200,43.000,14.100,3.039e+04 +2025,270.957617,10,390.200,45.900,15.8870,-390.100,2.900,10.300,390.100,-2.900,10.300,1.276e+05 +2025,270.986701,10,397.300,43.400,15.1450,-397.000,17.500,2.000,397.000,-17.500,2.000,1.141e+05 +2025,271.028562,10,421.600,44.100,13.6430,-421.000,20.700,-4.000,421.000,-20.700,-4.000,1.178e+05 +2025,271.035551,10,414.800,41.100,13.8600,-413.700,29.100,-7.500,413.700,-29.100,-7.500,1.023e+05 +2025,271.050657,10,411.800,43.700,15.1020,-411.600,6.900,-9.500,411.600,-6.900,-9.500,1.157e+05 +2025,271.113448,10,406.700,43.500,16.0320,-406.200,20.200,3.200,406.200,-20.200,3.200,1.146e+05 +2025,271.222760,10,412.300,39.600,13.2450,-412.200,-7.900,4.500,412.200,7.900,4.500,9.499e+04 +2025,271.237866,10,415.600,43.300,15.7860,-415.000,-21.000,6.100,415.000,21.000,6.100,1.136e+05 +2025,271.240195,10,412.600,43.500,14.3820,-412.200,-16.200,5.100,412.200,16.200,5.100,1.146e+05 +2025,271.350635,10,409.400,30.100,10.5430,-409.100,-16.300,-5.800,409.100,16.300,-5.800,5.488e+04 +2025,271.370401,10,424.200,31.400,11.3420,-423.400,4.600,26.600,423.400,-4.600,26.600,5.972e+04 +2025,271.382012,10,390.700,30.600,9.4670,-390.700,-6.000,-5.800,390.700,6.000,-5.800,5.672e+04 +2025,271.425074,10,417.500,32.500,10.9120,-416.700,-25.300,-1.800,416.700,25.300,-1.800,6.398e+04 +2025,271.434357,10,408.800,34.400,10.9060,-407.600,-28.200,-12.500,407.600,28.200,-12.500,7.168e+04 +2025,271.466899,10,397.800,32.700,10.8550,-394.700,-23.100,-43.800,394.700,23.100,-43.800,6.477e+04 +2025,271.468064,10,406.700,32.400,11.1830,-402.400,-24.800,-53.400,402.400,24.800,-53.400,6.359e+04 +2025,271.478511,10,418.600,26.600,9.1250,-414.100,-49.200,-37.100,414.100,49.200,-37.100,4.286e+04 +2025,271.484335,10,419.800,28.700,9.5630,-415.500,-47.400,-36.100,415.500,47.400,-36.100,4.989e+04 +2025,271.499477,10,421.700,28.900,11.5750,-417.900,-42.800,-36.600,417.900,42.800,-36.600,5.059e+04 +2025,271.534349,10,414.000,30.000,9.7220,-409.500,-43.200,-43.400,409.500,43.200,-43.400,5.452e+04 +2025,271.606423,10,402.000,22.800,8.1150,-397.900,-41.900,-39.000,397.900,41.900,-39.000,3.149e+04 +2025,271.620400,10,426.500,32.200,13.9110,-419.700,-20.600,-72.800,419.700,20.600,-72.800,6.281e+04 +2025,271.628518,10,414.700,27.900,13.3500,-405.700,-48.400,-71.300,405.700,48.400,-71.300,4.715e+04 +2025,271.656437,10,399.400,30.300,7.8250,-397.400,-24.900,-32.300,397.400,24.900,-32.300,5.561e+04 +2025,271.680826,10,395.000,27.400,7.9040,-393.800,-2.600,-30.800,393.800,2.600,-30.800,4.548e+04 +2025,271.688979,10,401.900,25.200,7.9400,-400.300,-11.900,-33.900,400.300,11.900,-33.900,3.847e+04 +2025,271.698298,10,404.000,26.700,8.2690,-402.100,-16.700,-35.100,402.100,16.700,-35.100,4.318e+04 +2025,271.766877,10,400.800,23.700,8.6170,-400.700,1.000,-8.200,400.700,-1.000,-8.200,3.402e+04 +2025,271.795961,10,373.900,48.100,11.8690,-373.200,22.300,3.200,373.200,-22.300,3.200,1.401e+05 +2025,272.123857,10,408.400,19.000,3.0500,-407.100,-19.500,-26.400,407.100,19.500,-26.400,2.187e+04 +2025,272.128516,10,412.400,17.400,2.7480,-411.400,-14.200,-24.800,411.400,14.200,-24.800,1.834e+04 +2025,272.150611,10,401.100,16.000,2.8940,-400.400,-16.100,-17.200,400.400,16.100,-17.200,1.551e+04 +2025,272.211073,10,400.300,17.200,4.3430,-399.200,-13.100,-27.400,399.200,13.100,-27.400,1.792e+04 +2025,272.228509,10,402.600,19.700,4.9840,-401.000,-12.100,-33.900,401.000,12.100,-33.900,2.351e+04 +2025,272.229674,10,402.200,18.700,4.7210,-400.600,-7.200,-35.400,400.600,7.200,-35.400,2.118e+04 +2025,272.232003,10,403.000,19.400,4.7370,-401.700,-6.600,-31.800,401.700,6.600,-31.800,2.280e+04 +2025,272.321549,10,400.900,14.000,4.1410,-398.200,33.600,-32.200,398.200,-33.600,-32.200,1.187e+04 +2025,272.381974,10,390.600,13.300,9.6650,-388.700,-4.900,-38.300,388.700,4.900,-38.300,1.071e+04 +2025,272.412223,10,387.300,12.700,9.4020,-385.400,-2.500,-38.100,385.400,2.500,-38.100,9.770e+03 +2025,272.419212,10,388.300,11.900,8.3450,-386.200,-10.600,-38.400,386.200,10.600,-38.400,8.578e+03 +2025,272.425000,10,385.400,11.700,9.4400,-383.200,-14.500,-39.200,383.200,14.500,-39.200,8.292e+03 +2025,272.427329,10,386.800,11.800,9.2600,-384.600,-5.900,-40.500,384.600,5.900,-40.500,8.434e+03 +2025,272.434318,10,388.400,13.800,9.7490,-386.300,-5.200,-39.900,386.300,5.200,-39.900,1.154e+04 +2025,272.436648,10,388.000,14.700,9.5610,-386.100,-5.900,-38.300,386.100,5.900,-38.300,1.309e+04 +2025,272.551747,10,379.700,15.900,11.5450,-377.400,-11.200,-40.400,377.400,11.200,-40.400,1.531e+04 +2025,272.569183,10,385.200,18.400,14.0800,-382.800,-2.200,-42.900,382.800,2.200,-42.900,2.051e+04 +2025,272.573842,10,387.300,18.100,14.0750,-385.100,-1.500,-41.000,385.100,1.500,-41.000,1.984e+04 +2025,272.602890,10,382.200,19.900,13.7550,-380.400,-3.300,-36.200,380.400,3.300,-36.200,2.399e+04 +2025,272.606384,10,368.300,20.300,13.4440,-367.300,-14.300,-23.100,367.300,14.300,-23.100,2.496e+04 +2025,272.609879,10,372.500,19.200,12.8120,-371.100,-7.600,-31.300,371.100,7.600,-31.300,2.233e+04 +2025,272.634303,10,382.900,19.600,12.2230,-381.700,-0.100,-30.500,381.700,0.100,-30.500,2.327e+04 +2025,272.644787,10,394.000,21.400,13.1500,-392.700,-10.100,-30.800,392.700,10.100,-30.800,2.774e+04 +2025,272.693599,10,386.200,19.400,11.5550,-384.900,-13.500,-28.400,384.900,13.500,-28.400,2.280e+04 +2025,272.700588,10,385.800,18.500,10.3110,-384.400,-8.200,-31.100,384.400,8.200,-31.100,2.073e+04 +2025,272.756390,10,385.100,18.300,11.9850,-384.700,1.800,-16.200,384.700,-1.800,-16.200,2.029e+04 +2025,272.768002,10,391.300,19.000,13.0310,-391.300,2.000,-5.600,391.300,-2.000,-5.600,2.187e+04 +2025,272.804075,10,379.700,16.200,8.0660,-378.600,8.400,-28.300,378.600,-8.400,-28.300,1.590e+04 +2025,272.814558,10,382.900,16.700,7.8770,-381.700,8.700,-28.900,381.700,-8.700,-28.900,1.689e+04 +2025,272.828499,10,391.800,22.600,10.5480,-391.400,12.000,-12.600,391.400,-12.000,-12.600,3.094e+04 +2025,272.872653,10,402.000,24.600,13.3940,-401.500,21.600,1.500,401.500,-21.600,1.500,3.666e+04 +2025,272.944763,10,382.100,49.400,21.6110,-382.000,-4.100,7.300,382.000,4.100,7.300,1.478e+05 +2025,272.959869,10,384.100,49.100,21.3700,-384.000,-4.100,5.200,384.000,4.100,5.200,1.460e+05 +2025,273.007554,10,409.700,49.700,23.0670,-408.900,-15.500,19.200,408.900,15.500,19.200,1.496e+05 +2025,273.034309,10,414.100,57.300,23.5620,-413.900,-4.200,13.300,413.900,4.200,13.300,1.989e+05 +2025,273.068016,10,428.300,46.600,33.3410,-428.200,-7.700,-5.200,428.200,7.700,-5.200,1.315e+05 +2025,273.073804,10,429.200,43.300,28.9140,-429.200,-2.000,2.200,429.200,2.000,2.200,1.136e+05 +2025,273.095899,10,419.900,28.000,46.0060,-419.800,-1.800,-8.600,419.800,1.800,-8.600,4.749e+04 +2025,273.105217,10,425.100,29.700,50.5800,-424.900,1.500,-12.800,424.900,-1.500,-12.800,5.343e+04 +2025,273.121488,10,417.600,30.000,56.2120,-417.100,-2.400,-21.300,417.100,2.400,-21.300,5.452e+04 +2025,273.144785,10,427.300,48.600,19.8590,-427.300,-2.800,-0.900,427.300,2.800,-0.900,1.431e+05 +2025,273.154067,10,446.600,45.400,12.0750,-445.700,-10.200,25.000,445.700,10.200,25.000,1.249e+05 +2025,273.431950,10,456.500,61.200,15.5300,-455.200,-27.600,-20.000,455.200,27.600,-20.000,2.269e+05 +2025,273.436573,10,452.000,61.400,16.5600,-450.900,-29.400,10.300,450.900,29.400,10.300,2.284e+05 +2025,273.597063,10,570.800,77.400,9.0960,-570.200,4.800,-26.100,570.200,-4.800,-26.100,3.629e+05 +2025,273.598228,10,556.300,77.500,8.5780,-555.400,2.400,-32.500,555.400,-2.400,-32.500,3.638e+05 +2025,273.816413,10,650.000,71.400,5.4540,-649.400,3.200,29.400,649.400,-3.200,29.400,3.088e+05 +2025,273.864098,10,656.600,74.900,6.1560,-651.900,42.800,65.800,651.900,-42.800,65.800,3.398e+05 +2025,273.881534,10,634.200,72.400,5.0640,-631.900,42.700,33.100,631.900,-42.700,33.100,3.175e+05 +2025,274.137577,10,771.900,83.500,3.7540,-770.000,11.200,53.400,770.000,-11.200,53.400,4.223e+05 +2025,274.155631,10,714.600,86.500,3.5350,-714.400,-12.200,-10.700,714.400,12.200,-10.700,4.532e+05 +2025,274.747580,10,750.900,89.800,2.5630,-749.600,-22.100,38.700,749.600,22.100,38.700,4.885e+05 +2025,276.416809,10,739.700,67.000,1.8490,-734.800,39.300,-76.000,734.800,-39.300,-76.000,2.719e+05 +2025,276.429258,10,779.800,64.300,1.9530,-776.200,34.500,-66.400,776.200,-34.500,-66.400,2.504e+05 +2025,276.676673,10,670.500,48.100,1.6590,-670.500,-2.200,-5.500,670.500,2.200,-5.500,1.401e+05 +2025,276.768512,10,615.100,46.400,1.8620,-613.500,-38.300,-20.200,613.500,38.300,-20.200,1.304e+05 +2025,276.938285,10,619.100,49.300,2.3100,-616.600,-48.800,-25.800,616.600,48.800,-25.800,1.472e+05 +2025,277.131283,10,603.400,66.100,2.0780,-603.300,-11.800,-1.100,603.300,11.800,-1.100,2.647e+05 +2025,277.145224,10,631.200,64.000,2.2130,-630.300,-33.900,-0.900,630.300,33.900,-0.900,2.481e+05 +2025,277.280089,10,598.100,54.800,1.7590,-596.200,43.100,20.700,596.200,-43.100,20.700,1.819e+05 +2025,277.281254,10,596.700,52.300,1.5470,-593.900,54.700,19.900,593.900,-54.700,19.900,1.657e+05 +2025,277.291738,10,600.000,49.000,1.7830,-596.400,63.500,17.100,596.400,-63.500,17.100,1.454e+05 +2025,277.346339,10,622.400,62.300,1.8860,-622.300,-3.400,10.300,622.300,3.400,10.300,2.351e+05 +2025,277.357987,10,619.900,68.200,1.8050,-616.100,54.600,41.200,616.100,-54.600,41.200,2.817e+05 +2025,277.367306,10,620.800,59.400,1.6900,-620.000,6.700,30.600,620.000,-6.700,30.600,2.137e+05 +2025,277.492852,10,634.100,59.700,1.9410,-633.900,-9.400,8.800,633.900,9.400,8.800,2.159e+05 +2025,277.550985,10,615.800,53.400,1.8250,-610.200,52.400,-64.400,610.200,-52.400,-64.400,1.727e+05 +2025,277.630047,10,610.200,53.300,1.2270,-610.100,-4.900,-5.100,610.100,4.900,-5.100,1.721e+05 +2025,277.653271,10,622.200,54.000,1.3200,-622.100,2.100,-8.000,622.100,-2.100,-8.000,1.766e+05 +2025,277.843975,10,590.100,52.800,1.1900,-590.100,1.600,-6.500,590.100,-1.600,-6.500,1.689e+05 +2025,278.290431,10,478.000,51.200,1.2380,-477.900,-6.100,-2.500,477.900,6.100,-2.500,1.588e+05 +2025,278.499699,10,462.900,59.100,2.7120,-462.700,-5.200,9.200,462.700,5.200,9.200,2.116e+05 +2025,278.500864,10,479.100,46.600,2.1510,-478.100,-31.100,-1.000,478.100,31.100,-1.000,1.315e+05 +2025,278.520666,10,477.900,47.000,2.2710,-477.200,-26.000,0.600,477.200,26.000,0.600,1.338e+05 +2025,278.536937,10,482.200,46.400,2.2550,-481.200,-31.400,-6.800,481.200,31.400,-6.800,1.304e+05 +2025,278.557867,10,476.200,50.300,2.2330,-475.400,-26.000,-8.600,475.400,26.000,-8.600,1.533e+05 +2025,278.562527,10,477.500,51.000,2.3770,-477.000,-16.400,-13.700,477.000,16.400,-13.700,1.576e+05 +2025,278.564856,10,480.600,50.600,2.4580,-480.000,-18.500,-13.300,480.000,18.500,-13.300,1.551e+05 +2025,278.578798,10,474.900,45.500,2.1000,-473.900,-15.100,-27.600,473.900,15.100,-27.600,1.254e+05 +2025,278.582292,10,469.700,45.500,1.9900,-468.500,-22.100,-24.400,468.500,22.100,-24.400,1.254e+05 +2025,278.584622,10,483.600,45.800,1.9390,-483.100,-7.700,-21.600,483.100,7.700,-21.600,1.271e+05 +2025,278.595069,10,472.100,47.400,2.1320,-470.800,-25.800,-24.100,470.800,25.800,-24.100,1.361e+05 +2025,278.596234,10,474.000,47.300,2.2180,-472.900,-25.500,-20.900,472.900,25.500,-20.900,1.355e+05 +2025,278.652036,10,446.800,50.300,2.4550,-445.600,-32.700,5.600,445.600,32.700,5.600,1.533e+05 +2025,278.655530,10,445.200,51.800,2.5110,-444.000,-31.400,7.700,444.000,31.400,7.700,1.625e+05 +2025,278.657860,10,446.800,50.400,2.5510,-445.700,-31.900,1.500,445.700,31.900,1.500,1.539e+05 +2025,278.682285,10,443.000,49.200,2.5350,-441.600,-34.400,7.300,441.600,34.400,7.300,1.466e+05 +2025,278.727604,10,423.900,50.300,2.5770,-423.400,-19.600,-4.600,423.400,19.600,-4.600,1.533e+05 +2025,278.857846,10,431.300,48.000,2.5710,-431.000,-12.900,-7.900,431.000,12.900,-7.900,1.396e+05 +2025,278.866000,10,439.200,43.600,2.5650,-438.600,-20.900,-9.700,438.600,20.900,-9.700,1.151e+05 +2025,278.883436,10,439.800,36.500,1.9970,-439.700,-5.000,-6.900,439.700,5.000,-6.900,8.070e+04 +2025,278.974110,10,440.000,29.300,1.9350,-439.700,-15.900,-4.100,439.700,15.900,-4.100,5.200e+04 +2025,279.015971,10,441.100,39.000,2.5080,-440.000,11.200,-29.300,440.000,-11.200,-29.300,9.213e+04 +2025,279.020594,10,445.400,39.500,2.3910,-443.900,10.600,-35.200,443.900,-10.600,-35.200,9.451e+04 +2025,279.033407,10,452.700,31.900,2.2450,-452.000,-25.000,7.600,452.000,25.000,7.600,6.164e+04 +2025,279.072938,10,426.300,49.900,1.8210,-425.700,-17.200,-16.200,425.700,17.200,-16.200,1.508e+05 +2025,279.077597,10,417.400,52.900,2.8330,-416.400,-16.000,-24.400,416.400,16.000,-24.400,1.695e+05 +2025,279.104352,10,449.500,36.500,2.4950,-447.900,-27.800,-25.900,447.900,27.800,-25.900,8.070e+04 +2025,279.113634,10,418.900,46.900,2.7040,-417.600,-16.400,-29.100,417.600,16.400,-29.100,1.332e+05 +2025,279.270595,10,395.100,47.300,2.4640,-394.700,10.800,-12.900,394.700,-10.800,-12.900,1.355e+05 +2025,279.555432,10,426.500,39.000,3.3520,-425.900,-22.100,-5.500,425.900,22.100,-5.500,9.213e+04 +2025,279.634531,10,405.400,53.100,3.9070,-405.100,-15.000,7.900,405.100,15.000,7.900,1.708e+05 +2025,279.780971,10,426.500,42.700,2.9270,-425.000,-33.500,-9.100,425.000,33.500,-9.100,1.104e+05 +2025,279.835646,10,420.100,42.400,2.8490,-417.900,-41.700,12.000,417.900,41.700,12.000,1.089e+05 +2025,279.890283,10,426.200,41.900,2.7880,-423.200,-50.200,3.500,423.200,50.200,3.500,1.063e+05 +2025,280.236711,10,437.100,18.500,1.5490,-430.000,-78.600,3.800,430.000,78.600,3.800,2.073e+04 +2025,280.326258,10,424.900,19.400,1.7880,-416.400,-68.100,50.500,416.400,68.100,50.500,2.280e+04 +2025,280.337870,10,414.900,17.100,1.7000,-407.400,-67.200,41.000,407.400,67.200,41.000,1.771e+04 +2025,280.341364,10,421.900,18.800,1.6910,-414.800,-70.300,32.100,414.800,70.300,32.100,2.141e+04 +2025,280.358800,10,396.900,16.900,1.6590,-390.900,-64.000,25.300,390.900,64.000,25.300,1.730e+04 +2025,280.362295,10,402.700,18.500,1.7330,-394.900,-70.100,36.400,394.900,70.100,36.400,2.073e+04 +2025,280.422793,10,424.800,36.700,2.0100,-421.200,-52.600,15.500,421.200,52.600,15.500,8.159e+04 +2025,280.426251,10,434.600,34.500,1.9000,-430.200,-56.000,24.600,430.200,56.000,24.600,7.210e+04 +2025,280.516926,10,424.500,35.300,2.4330,-422.200,-41.000,14.300,422.200,41.000,14.300,7.548e+04 +2025,280.522751,10,414.400,37.400,2.9590,-412.700,-31.600,20.000,412.700,31.600,20.000,8.473e+04 +2025,280.580847,10,399.200,52.200,2.1140,-397.900,-3.700,32.200,397.900,3.700,32.200,1.651e+05 +2025,280.735514,10,414.100,17.100,2.5480,-412.400,-37.200,-3.800,412.400,37.200,-3.800,1.771e+04 +2025,280.768056,10,416.200,22.400,3.0140,-415.100,-29.600,-0.500,415.100,29.600,-0.500,3.039e+04 +2025,280.771551,10,414.200,17.500,2.8470,-413.100,-30.500,0.300,413.100,30.500,0.300,1.855e+04 +2025,280.776210,10,408.100,20.400,2.9520,-407.500,-22.000,4.100,407.500,22.000,4.100,2.521e+04 +2025,280.798269,10,414.300,21.700,3.7640,-413.800,-19.800,-2.500,413.800,19.800,-2.500,2.852e+04 +2025,280.802928,10,415.300,22.100,4.1450,-414.900,-16.000,-5.600,414.900,16.000,-5.600,2.958e+04 +2025,280.804093,10,412.500,21.800,4.3520,-412.300,-13.800,-0.600,412.300,13.800,-0.600,2.879e+04 +2025,280.883156,10,410.100,20.100,5.3600,-409.200,-22.000,-17.800,409.200,22.000,-17.800,2.447e+04 +2025,280.886650,10,407.900,19.800,5.4530,-407.100,-19.600,-15.600,407.100,19.600,-15.600,2.375e+04 +2025,280.888980,10,409.000,19.400,5.5400,-408.400,-19.600,-10.600,408.400,19.600,-10.600,2.280e+04 +2025,280.893603,10,406.100,20.900,5.3750,-405.400,-20.000,-15.500,405.400,20.000,-15.500,2.646e+04 +2025,280.907545,10,386.800,26.600,4.0260,-386.600,-9.700,-7.600,386.600,9.700,-7.600,4.286e+04 +2025,280.913369,10,403.100,20.500,4.4830,-402.600,-17.000,-10.500,402.600,17.000,-10.500,2.546e+04 +2025,280.916863,10,401.500,21.100,4.4120,-400.900,-18.100,-14.500,400.900,18.100,-14.500,2.697e+04 +2025,280.934299,10,405.800,20.600,5.5530,-405.000,-16.300,-18.000,405.000,16.300,-18.000,2.571e+04 +2025,280.935464,10,410.400,20.000,6.1690,-410.000,-18.300,-4.500,410.000,18.300,-4.500,2.423e+04 +2025,281.013362,10,405.300,13.100,4.8460,-404.500,-13.800,-21.400,404.500,13.800,-21.400,1.040e+04 +2025,281.021480,10,404.700,13.500,5.0560,-403.800,-14.800,-23.500,403.800,14.800,-23.500,1.104e+04 +2025,281.097085,10,394.900,14.200,4.6240,-394.500,-3.600,-17.700,394.500,3.600,-17.700,1.221e+04 +2025,281.112191,10,395.000,13.900,4.5650,-394.100,-6.600,-25.400,394.100,6.600,-25.400,1.170e+04 +2025,281.118015,10,397.900,13.800,4.1360,-396.400,-11.600,-32.200,396.400,11.600,-32.200,1.154e+04 +2025,281.119144,10,397.100,14.100,4.1380,-395.700,-11.000,-31.700,395.700,11.000,-31.700,1.204e+04 +2025,281.229621,10,393.400,16.700,5.1990,-393.300,8.600,-1.800,393.300,-8.600,-1.800,1.689e+04 +2025,281.237738,10,390.000,12.400,6.6180,-389.600,-10.800,-14.300,389.600,10.800,-14.300,9.314e+03 +2025,281.240068,10,391.600,13.000,5.8500,-391.100,-10.400,-15.600,391.100,10.400,-15.600,1.024e+04 +2025,281.241233,10,393.200,15.000,6.1370,-392.500,-10.800,-20.300,392.500,10.800,-20.300,1.363e+04 +2025,281.288918,10,384.100,14.300,5.7150,-383.500,-5.300,-20.700,383.500,5.300,-20.700,1.239e+04 +2025,281.312178,10,373.900,17.800,4.2570,-373.600,-0.800,-13.900,373.600,0.800,-13.900,1.919e+04 +2025,281.362121,10,381.000,15.500,3.9850,-379.700,-5.000,-31.100,379.700,5.000,-31.100,1.455e+04 +2025,281.385381,10,383.400,12.700,3.8390,-382.100,-8.800,-29.700,382.100,8.800,-29.700,9.770e+03 +2025,281.402853,10,370.100,12.800,4.0460,-369.500,-15.100,-15.500,369.500,15.100,-15.500,9.924e+03 +2025,281.440055,10,381.300,12.800,3.2820,-380.600,-13.600,-18.400,380.600,13.600,-18.400,9.924e+03 +2025,281.441220,10,378.500,12.300,3.1580,-377.600,-13.600,-22.500,377.600,13.600,-22.500,9.164e+03 +2025,281.447044,10,380.300,12.600,2.7460,-379.200,-14.300,-26.100,379.200,14.300,-26.100,9.617e+03 +2025,281.473726,10,377.800,13.600,2.9180,-376.900,-13.800,-22.700,376.900,13.800,-22.700,1.120e+04 +2025,281.480715,10,383.300,14.000,2.6860,-382.600,-6.100,-23.400,382.600,6.100,-23.400,1.187e+04 +2025,281.488869,10,383.300,13.300,2.7520,-382.500,-12.300,-22.100,382.500,12.300,-22.100,1.071e+04 +2025,281.559815,10,367.800,17.400,3.4970,-367.200,-12.300,-17.200,367.200,12.300,-17.200,1.834e+04 +2025,281.574885,10,368.700,16.000,4.3130,-367.600,-14.600,-24.200,367.600,14.600,-24.200,1.551e+04 +2025,281.580709,10,367.200,13.500,3.4360,-366.700,-10.400,-15.200,366.700,10.400,-15.200,1.104e+04 +2025,281.581874,10,365.600,13.700,3.3890,-365.200,-9.500,-14.300,365.200,9.500,-14.300,1.137e+04 +2025,281.583039,10,366.600,14.100,3.6390,-366.200,-10.600,-12.900,366.200,10.600,-12.900,1.204e+04 +2025,281.635383,10,377.000,13.000,5.5880,-376.800,-10.900,-5.700,376.800,10.900,-5.700,1.024e+04 +2025,281.648160,10,383.200,12.700,5.5580,-383.100,-8.300,4.500,383.100,8.300,4.500,9.770e+03 +2025,281.719069,10,366.800,13.100,7.4560,-365.500,-25.400,-17.000,365.500,25.400,-17.000,1.040e+04 +2025,281.742330,10,369.300,13.200,8.6580,-367.200,-29.500,-26.600,367.200,29.500,-26.600,1.055e+04 +2025,281.746989,10,370.000,12.900,7.9560,-367.700,-28.400,-29.600,367.700,28.400,-29.600,1.008e+04 +2025,281.758601,10,358.400,11.400,8.5400,-356.600,-30.100,-20.400,356.600,30.100,-20.400,7.872e+03 +2025,281.764425,10,360.800,12.500,9.1240,-359.100,-26.300,-22.900,359.100,26.300,-22.900,9.465e+03 +2025,281.774908,10,360.700,12.800,8.8740,-359.200,-25.800,-20.000,359.200,25.800,-20.000,9.924e+03 +2025,281.806249,10,361.700,12.200,8.3370,-359.900,-28.300,-20.800,359.900,28.300,-20.800,9.016e+03 +2025,281.807414,10,361.400,11.500,8.2020,-359.700,-27.800,-21.800,359.700,27.800,-21.800,8.011e+03 +2025,281.816733,10,361.100,11.800,8.8870,-359.600,-27.900,-18.700,359.600,27.900,-18.700,8.434e+03 +2025,281.817897,10,361.900,11.800,8.7500,-360.400,-28.100,-17.200,360.400,28.100,-17.200,8.434e+03 +2025,281.906242,10,350.200,12.500,11.2860,-348.800,-21.300,-22.300,348.800,21.300,-22.300,9.465e+03 +2025,281.909737,10,349.800,12.100,11.0180,-348.400,-21.600,-22.500,348.400,21.600,-22.500,8.869e+03 +2025,281.910902,10,350.900,12.400,11.6210,-349.400,-21.600,-23.100,349.400,21.600,-23.100,9.314e+03 +2025,281.928338,10,348.800,12.100,11.2360,-347.200,-18.200,-27.800,347.200,18.200,-27.800,8.869e+03 +2025,281.953928,10,344.600,12.000,10.0790,-343.200,-15.800,-27.500,343.200,15.800,-27.500,8.723e+03 +2025,281.958587,10,347.200,12.000,10.0590,-345.300,-14.600,-32.700,345.300,14.600,-32.700,8.723e+03 +2025,281.967869,10,344.100,12.800,11.4810,-342.100,-12.900,-34.500,342.100,12.900,-34.500,9.924e+03 +2025,281.980682,10,340.300,11.500,9.8060,-338.800,-10.100,-30.700,338.800,10.100,-30.700,8.011e+03 +2025,281.984177,10,339.800,12.600,10.1290,-338.300,-9.200,-29.900,338.300,9.200,-29.900,9.617e+03 +2025,282.058544,10,337.200,11.600,10.3550,-336.000,-13.300,-25.400,336.000,13.300,-25.400,8.151e+03 +2025,282.070192,10,336.800,12.100,9.9410,-335.800,-14.300,-21.600,335.800,14.300,-21.600,8.869e+03 +2025,282.127160,10,339.400,13.500,8.1830,-338.000,2.600,-30.400,338.000,-2.600,-30.400,1.104e+04 +2025,282.143431,10,337.900,15.600,7.7130,-336.100,18.300,-29.200,336.100,-18.300,-29.200,1.474e+04 +2025,282.156208,10,335.300,14.600,7.5160,-334.300,8.200,-24.500,334.300,-8.200,-24.500,1.291e+04 +2025,282.186457,10,357.600,20.200,5.3390,-357.200,11.800,-11.500,357.200,-11.800,-11.500,2.472e+04 +2025,282.221329,10,338.900,20.300,8.8140,-337.900,2.800,-25.000,337.900,-2.800,-25.000,2.496e+04 +2025,282.266649,10,339.600,15.100,9.3250,-338.400,-6.400,-27.600,338.400,6.400,-27.600,1.381e+04 +2025,282.289909,10,348.900,18.000,6.0010,-348.400,6.300,-16.100,348.400,-6.300,-16.100,1.963e+04 +2025,282.309675,10,348.700,19.100,6.0080,-348.300,5.900,-14.400,348.300,-5.900,-14.400,2.210e+04 +2025,282.312005,10,350.900,18.100,6.1430,-350.300,9.200,-18.100,350.300,-9.200,-18.100,1.984e+04 +2025,282.322452,10,349.800,19.300,5.8570,-349.200,8.000,-18.300,349.200,-8.000,-18.300,2.256e+04 +2025,282.368972,10,383.100,26.800,11.9660,-378.200,13.400,-59.200,378.200,-13.400,-59.200,4.351e+04 +2025,282.409669,10,367.000,25.100,11.8120,-362.500,2.200,-57.600,362.500,-2.200,-57.600,3.816e+04 +2025,282.521273,10,382.600,32.100,13.3170,-377.400,3.400,-62.500,377.400,-3.400,-62.500,6.242e+04 +2025,282.694505,10,334.200,38.400,6.7380,-333.200,-8.500,-23.700,333.200,8.500,-23.700,8.932e+04 +2025,282.718931,10,338.100,37.500,6.1510,-337.700,-2.200,-15.800,337.700,2.200,-15.800,8.518e+04 +2025,283.006099,10,319.600,30.600,7.4960,-319.500,5.400,-6.000,319.500,-5.400,-6.000,5.672e+04 +2025,283.179295,10,311.400,37.400,5.9450,-311.100,-5.800,-10.200,311.100,5.800,-10.200,8.473e+04 +2025,283.261853,10,323.300,30.500,7.9280,-320.200,-40.500,-18.600,320.200,40.500,-18.600,5.635e+04 +2025,283.265347,10,327.300,30.600,7.2190,-324.700,-39.600,-10.500,324.700,39.600,-10.500,5.672e+04 +2025,283.343245,10,325.800,50.000,8.1160,-325.700,7.400,-3.800,325.700,-7.400,-3.800,1.514e+05 +2025,283.374623,10,364.400,33.300,9.1960,-362.200,-27.100,-28.800,362.200,27.100,-28.800,6.717e+04 +2025,283.386235,10,365.500,29.100,8.2670,-363.700,-17.500,-30.900,363.700,17.500,-30.900,5.129e+04 +2025,283.407166,10,347.000,36.600,9.5700,-343.100,-40.500,-31.800,343.100,40.500,-31.800,8.114e+04 +2025,283.428096,10,350.800,28.900,9.8430,-348.100,-41.000,-15.100,348.100,41.000,-15.100,5.059e+04 +2025,283.435086,10,353.400,29.900,9.8170,-351.300,-37.700,-9.100,351.300,37.700,-9.100,5.415e+04 +2025,283.458346,10,350.800,24.100,7.9780,-348.400,-30.800,-27.300,348.400,30.800,-27.300,3.518e+04 +2025,283.462969,10,341.500,23.700,7.6340,-339.700,-23.100,-26.600,339.700,23.100,-26.600,3.402e+04 +2025,283.467628,10,342.300,24.300,7.6250,-340.200,-27.200,-27.100,340.200,27.200,-27.100,3.577e+04 +2025,283.488559,10,341.500,25.800,6.9950,-340.300,-18.800,-22.100,340.300,18.800,-22.100,4.032e+04 +2025,283.604824,10,343.700,19.200,7.6080,-342.400,-27.700,-11.000,342.400,27.700,-11.000,2.233e+04 +2025,283.680392,10,359.000,40.300,4.7360,-358.900,-9.300,0.400,358.900,9.300,0.400,9.838e+04 +2025,283.681557,10,356.000,36.100,4.6100,-355.700,-13.300,-1.600,355.700,13.300,-1.600,7.894e+04 +2025,283.689674,10,364.400,38.600,4.9630,-364.300,-6.700,-7.000,364.300,6.700,-7.000,9.025e+04 +2025,283.748971,10,341.500,14.000,6.6620,-339.900,-32.500,-8.600,339.900,32.500,-8.600,1.187e+04 +2025,283.787338,10,338.600,14.800,6.2280,-337.200,-30.600,1.100,337.200,30.600,1.100,1.327e+04 +2025,283.795492,10,342.800,13.600,6.7570,-341.000,-34.700,3.300,341.000,34.700,3.300,1.120e+04 +2025,283.797821,10,342.300,13.300,6.3800,-340.500,-34.300,4.100,340.500,34.300,4.100,1.071e+04 +2025,283.798986,10,340.800,14.100,7.0230,-339.000,-34.600,4.300,339.000,34.600,4.300,1.204e+04 +2025,283.811763,10,339.000,15.900,6.7120,-336.900,-36.700,10.600,336.900,36.700,10.600,1.531e+04 +2025,283.814093,10,340.700,18.300,7.4190,-338.900,-33.100,10.800,338.900,33.100,10.800,2.029e+04 +2025,283.816422,10,344.000,15.800,7.4160,-341.600,-40.500,6.700,341.600,40.500,6.700,1.512e+04 +2025,283.821082,10,350.200,15.200,7.3990,-347.700,-41.000,4.400,347.700,41.000,4.400,1.399e+04 +2025,283.828071,10,338.300,15.600,7.0740,-336.900,-29.300,11.000,336.900,29.300,11.000,1.474e+04 +2025,283.838518,10,347.800,22.900,8.7700,-347.000,-19.500,12.700,347.000,19.500,12.700,3.177e+04 +2025,283.839683,10,344.200,23.900,9.9730,-343.300,-20.800,13.400,343.300,20.800,13.400,3.460e+04 +2025,283.845470,10,348.800,26.400,9.7300,-347.600,-22.300,18.200,347.600,22.300,18.200,4.222e+04 +2025,283.873390,10,338.300,38.400,5.2430,-337.900,0.100,14.300,337.900,-0.100,14.300,8.932e+04 +2025,283.964065,10,358.300,22.000,8.5840,-357.600,-6.000,21.500,357.600,6.000,21.500,2.932e+04 +2025,284.039634,10,364.400,19.600,12.6250,-363.400,12.500,24.500,363.400,-12.500,24.500,2.327e+04 +2025,284.071012,10,352.900,19.300,14.1510,-352.700,8.100,8.800,352.700,-8.100,8.800,2.256e+04 +2025,284.090777,10,359.100,31.800,14.7340,-357.900,13.400,25.100,357.900,-13.400,25.100,6.125e+04 +2025,284.102389,10,361.800,23.400,13.0340,-361.300,5.600,16.700,361.300,-5.600,16.700,3.317e+04 +2025,284.107049,10,362.800,23.600,11.8610,-362.500,6.500,11.200,362.500,-6.500,11.200,3.374e+04 +2025,284.117532,10,360.900,26.600,15.3780,-360.800,4.600,2.200,360.800,-4.600,2.200,4.286e+04 +2025,284.148910,10,368.000,28.700,17.4730,-368.000,6.100,-1.100,368.000,-6.100,-1.100,4.989e+04 +2025,284.162852,10,372.000,30.200,28.4370,-371.900,10.100,-1.100,371.900,-10.100,-1.100,5.525e+04 +2025,284.171005,10,372.200,27.100,26.7380,-371.800,16.900,1.600,371.800,-16.900,1.600,4.449e+04 +2025,284.194266,10,364.200,28.000,25.5140,-363.900,14.500,-1.500,363.900,-14.500,-1.500,4.749e+04 +2025,284.198889,10,365.000,25.300,25.5480,-364.700,13.900,-0.400,364.700,-13.900,-0.400,3.877e+04 +2025,284.215160,10,363.200,25.600,23.3300,-362.900,14.600,-5.400,362.900,-14.600,-5.400,3.970e+04 +2025,284.224479,10,364.000,23.800,30.3560,-363.800,10.800,0.700,363.800,-10.800,0.700,3.431e+04 +2025,284.311659,10,371.300,33.700,15.0700,-371.300,0.800,3.100,371.300,-0.800,3.100,6.879e+04 +2025,284.723246,10,406.300,23.000,12.1980,-401.500,-61.100,13.600,401.500,61.100,13.600,3.204e+04 +2025,284.724411,10,406.100,22.500,12.5030,-401.100,-61.700,14.400,401.100,61.700,14.400,3.067e+04 +2025,284.729034,10,403.900,23.000,11.3020,-398.000,-66.400,18.100,398.000,66.400,18.100,3.204e+04 +2025,284.736023,10,392.900,23.700,13.6010,-388.100,-57.800,20.100,388.100,57.800,20.100,3.402e+04 +2025,284.737187,10,392.400,23.400,13.5910,-387.700,-56.400,22.600,387.700,56.400,22.600,3.317e+04 +2025,284.745341,10,393.500,24.300,12.5120,-387.800,-61.300,25.900,387.800,61.300,25.900,3.577e+04 +2025,284.820874,10,418.500,43.800,28.3080,-413.900,-60.400,-14.100,413.900,60.400,-14.100,1.162e+05 +2025,284.858075,10,422.100,47.000,22.8960,-418.000,-56.700,13.400,418.000,56.700,13.400,1.338e+05 +2025,284.895277,10,462.100,57.500,15.8940,-460.700,-23.700,-27.000,460.700,23.700,-27.000,2.003e+05 +2025,285.417305,10,771.700,63.900,3.3660,-768.700,5.500,-67.800,768.700,-5.500,-67.800,2.473e+05 +2025,285.426332,10,765.200,58.500,3.0030,-759.100,82.300,-51.500,759.100,-82.300,-51.500,2.073e+05 +2025,285.443259,10,758.900,58.400,2.9810,-758.500,-8.500,21.500,758.500,8.500,21.500,2.066e+05 +2025,285.450066,10,753.800,57.600,3.0240,-750.800,17.700,-64.000,750.800,-17.700,-64.000,2.010e+05 +2025,285.502010,10,749.400,58.600,3.3010,-747.100,-5.300,-58.400,747.100,5.300,-58.400,2.080e+05 +2025,285.839302,10,700.800,78.400,3.0320,-698.000,18.600,-58.900,698.000,-18.600,-58.900,3.723e+05 +2025,285.842687,10,720.200,74.500,3.0730,-716.800,20.000,-66.200,716.800,-20.000,-66.200,3.362e+05 +2025,285.909993,10,721.900,72.000,2.9530,-707.600,142.700,-9.700,707.600,-142.700,-9.700,3.140e+05 +2025,286.102154,10,708.300,75.300,3.3440,-701.900,89.500,-31.900,701.900,-89.500,-31.900,3.435e+05 +2025,286.103283,10,713.300,67.100,2.8450,-704.900,103.900,-32.700,704.900,-103.900,-32.700,2.727e+05 +2025,286.140812,10,737.400,65.600,2.8440,-731.900,78.800,42.800,731.900,-78.800,42.800,2.607e+05 +2025,286.141941,10,750.700,80.000,3.2520,-745.300,64.600,63.100,745.300,-64.600,63.100,3.877e+05 +2025,286.166038,10,713.700,65.000,2.7740,-713.400,-17.900,-6.800,713.400,17.900,-6.800,2.559e+05 +2025,286.182019,10,716.200,62.000,2.8030,-715.800,-19.000,13.200,715.800,19.000,13.200,2.328e+05 +2025,286.327186,10,694.000,67.400,3.0900,-693.800,-14.700,-8.300,693.800,14.700,-8.300,2.752e+05 +2025,286.361694,10,702.300,69.000,3.4360,-700.400,49.300,-14.700,700.400,-49.300,-14.700,2.884e+05 +2025,286.380258,10,704.300,66.800,3.2370,-703.600,29.600,11.100,703.600,-29.600,11.100,2.703e+05 +2025,286.388267,10,688.700,69.200,3.1510,-687.200,35.200,-28.100,687.200,-35.200,-28.100,2.901e+05 +2025,286.400716,10,717.900,65.800,3.4060,-715.400,18.000,-58.200,715.400,-18.000,-58.200,2.623e+05 +2025,286.408615,10,717.200,66.100,3.3100,-714.500,23.400,-57.800,714.500,-23.400,-57.800,2.647e+05 +2025,286.426706,10,719.900,64.400,3.2030,-719.400,16.800,21.000,719.400,-16.800,21.000,2.512e+05 +2025,286.437991,10,719.400,64.100,3.1360,-718.900,21.100,18.000,718.900,-21.100,18.000,2.489e+05 +2025,286.472098,10,697.000,69.400,3.7390,-696.700,4.400,-19.200,696.700,-4.400,-19.200,2.917e+05 +2025,286.575187,10,692.100,59.100,3.5210,-690.900,35.000,22.000,690.900,-35.000,22.000,2.116e+05 +2025,286.629825,10,683.000,54.200,2.5530,-681.800,0.500,39.700,681.800,-0.500,39.700,1.779e+05 +2025,286.643803,10,681.500,57.700,2.9390,-681.300,-11.000,10.500,681.300,11.000,10.500,2.017e+05 +2025,286.700370,10,689.200,60.400,2.9340,-685.700,69.700,-2.000,685.700,-69.700,-2.000,2.210e+05 +2025,286.811975,10,669.200,56.600,2.4620,-669.200,-7.600,4.400,669.200,7.600,4.400,1.941e+05 +2025,286.814305,10,669.800,56.900,2.6350,-669.400,-14.900,-16.700,669.400,14.900,-16.700,1.961e+05 +2025,286.853764,10,672.100,53.900,2.3010,-671.600,-11.200,22.100,671.600,11.200,22.100,1.760e+05 +2025,287.047527,10,671.300,71.900,2.7350,-671.200,-0.100,14.700,671.200,0.100,14.700,3.131e+05 +2025,287.051022,10,699.500,64.000,2.2820,-699.500,2.100,6.300,699.500,-2.100,6.300,2.481e+05 +2025,287.073663,10,708.800,67.100,2.5360,-708.500,21.300,6.900,708.500,-21.300,6.900,2.727e+05 +2025,287.079342,10,727.200,61.500,2.6260,-726.800,20.500,11.800,726.800,-20.500,11.800,2.291e+05 +2025,287.118109,10,695.200,60.300,2.4260,-695.100,11.300,-5.100,695.100,-11.300,-5.100,2.203e+05 +2025,287.143626,10,704.700,63.400,2.3840,-704.300,24.600,0.200,704.300,-24.600,0.200,2.435e+05 +2025,287.145956,10,691.500,62.700,2.3300,-691.200,19.200,-3.800,691.200,-19.200,-3.800,2.381e+05 +2025,287.300333,10,614.800,56.000,2.7240,-614.600,0.800,-18.400,614.600,-0.800,-18.400,1.900e+05 +2025,287.328180,10,639.500,43.900,2.9330,-639.400,-3.600,12.400,639.400,3.600,12.400,1.167e+05 +2025,287.342122,10,596.300,47.200,2.4360,-596.200,6.200,-5.500,596.200,-6.200,-5.500,1.349e+05 +2025,287.350276,10,595.800,46.000,2.6070,-595.700,-0.900,-12.300,595.700,0.900,-12.300,1.282e+05 +2025,287.357228,10,593.700,45.800,2.6700,-593.300,-14.700,-17.300,593.300,14.700,-17.300,1.271e+05 +2025,287.383983,10,599.800,43.200,2.8330,-599.200,-25.900,-11.300,599.200,25.900,-11.300,1.130e+05 +2025,287.386313,10,599.800,44.800,2.8330,-599.100,-24.800,-12.900,599.100,24.800,-12.900,1.216e+05 +2025,287.392101,10,598.000,49.200,3.3430,-597.400,-16.400,-23.700,597.400,16.400,-23.700,1.466e+05 +2025,287.417691,10,575.200,54.000,2.6880,-574.200,21.300,-26.100,574.200,-21.300,-26.100,1.766e+05 +2025,287.428174,10,580.000,45.900,2.8470,-579.800,-5.100,-14.100,579.800,5.100,-14.100,1.276e+05 +2025,287.431669,10,574.500,45.300,2.6320,-574.200,-5.400,-15.600,574.200,5.400,-15.600,1.243e+05 +2025,287.463047,10,569.800,43.600,2.5950,-569.500,-4.300,-16.600,569.500,4.300,-16.600,1.151e+05 +2025,287.468834,10,568.600,44.800,2.5160,-567.900,-5.000,-28.700,567.900,5.000,-28.700,1.216e+05 +2025,287.496754,10,580.600,44.800,3.1390,-580.300,-16.000,0.200,580.300,16.000,0.200,1.216e+05 +2025,287.511861,10,600.200,41.000,3.4830,-599.100,-28.600,-20.800,599.100,28.600,-20.800,1.018e+05 +2025,287.542110,10,581.000,48.600,4.0850,-580.200,-27.000,-13.800,580.200,27.000,-13.800,1.431e+05 +2025,287.590924,10,557.600,45.900,3.1730,-556.000,-4.100,-42.100,556.000,4.100,-42.100,1.276e+05 +2025,287.596712,10,542.800,45.300,3.5280,-542.300,24.500,-2.700,542.300,-24.500,-2.700,1.243e+05 +2025,287.618807,10,543.900,41.800,3.2370,-543.800,-5.900,9.400,543.800,5.900,9.400,1.058e+05 +2025,287.640903,10,544.100,50.900,3.0580,-542.500,31.900,-25.800,542.500,-31.900,-25.800,1.569e+05 +2025,287.646727,10,558.700,47.400,3.5760,-558.500,9.300,11.700,558.500,-9.300,11.700,1.361e+05 +2025,287.680434,10,585.600,45.300,3.6630,-584.500,-33.000,-11.800,584.500,33.000,-11.800,1.243e+05 +2025,287.687423,10,562.200,43.700,3.9230,-561.700,-23.300,-5.700,561.700,23.300,-5.700,1.157e+05 +2025,287.694412,10,555.300,44.900,3.5280,-555.200,-1.100,7.900,555.200,1.100,7.900,1.221e+05 +2025,287.706024,10,561.500,43.700,3.8500,-561.100,-20.400,-7.200,561.100,20.400,-7.200,1.157e+05 +2025,287.717636,10,559.100,41.900,3.3720,-558.000,-25.000,-25.400,558.000,25.000,-25.400,1.063e+05 +2025,287.724589,10,568.000,38.100,3.2390,-567.200,-30.300,-6.200,567.200,30.300,-6.200,8.793e+04 +2025,287.758332,10,581.300,40.500,3.6890,-580.400,-30.300,-9.700,580.400,30.300,-9.700,9.936e+04 +2025,287.761827,10,572.900,38.200,3.4440,-572.100,-27.700,-8.000,572.100,27.700,-8.000,8.839e+04 +2025,287.775768,10,569.700,38.100,3.3140,-569.100,-26.500,-6.300,569.100,26.500,-6.300,8.793e+04 +2025,287.810641,10,579.400,40.500,4.1270,-578.600,-25.500,-14.400,578.600,25.500,-14.400,9.936e+04 +2025,287.846678,10,543.600,42.000,3.7760,-542.300,-23.000,-29.600,542.300,23.000,-29.600,1.069e+05 +2025,287.857161,10,542.800,42.800,3.8160,-541.400,-24.000,-29.500,541.400,24.000,-29.500,1.110e+05 +2025,287.869938,10,556.300,42.400,3.8880,-554.700,-20.900,-36.600,554.700,20.900,-36.600,1.089e+05 +2025,287.873433,10,562.800,41.500,3.6980,-561.200,-32.300,-25.500,561.200,32.300,-25.500,1.043e+05 +2025,287.885045,10,562.400,43.200,4.2840,-560.200,-21.700,-43.600,560.200,21.700,-43.600,1.130e+05 +2025,287.897821,10,555.600,40.900,3.7830,-554.900,-25.300,-9.800,554.900,25.300,-9.800,1.013e+05 +2025,287.898986,10,558.600,41.000,3.8590,-558.400,-17.000,1.100,558.400,17.000,1.100,1.018e+05 +2025,287.964108,10,566.200,48.400,4.1160,-564.600,32.400,-28.300,564.600,-32.400,-28.300,1.419e+05 +2025,287.966438,10,560.000,44.300,4.0080,-558.400,28.300,-32.100,558.400,-28.300,-32.100,1.189e+05 +2025,287.971097,10,561.900,44.200,3.8410,-560.300,24.700,-35.300,560.300,-24.700,-35.300,1.183e+05 +2025,287.997815,10,562.400,39.400,3.3070,-560.800,15.500,-40.100,560.800,-15.500,-40.100,9.403e+04 +2025,288.014087,10,562.000,46.300,3.8100,-560.900,0.600,-34.600,560.900,-0.600,-34.600,1.299e+05 +2025,288.015252,10,563.800,44.800,3.3960,-562.800,20.600,-25.600,562.800,-20.600,-25.600,1.216e+05 +2025,288.022241,10,562.300,46.500,3.3170,-561.400,24.400,-21.600,561.400,-24.400,-21.600,1.310e+05 +2025,288.032724,10,556.900,48.000,3.7970,-556.300,5.700,-25.400,556.300,-5.700,-25.400,1.396e+05 +2025,288.037347,10,561.600,46.900,3.7440,-560.600,12.100,-31.100,560.600,-12.100,-31.100,1.332e+05 +2025,288.050124,10,565.200,46.300,3.6940,-563.300,31.200,-32.800,563.300,-31.200,-32.800,1.299e+05 +2025,288.052454,10,552.600,48.900,3.3590,-552.100,11.500,-20.800,552.100,-11.500,-20.800,1.448e+05 +2025,288.103597,10,559.700,48.200,3.1210,-559.600,-1.100,-12.400,559.600,1.100,-12.400,1.407e+05 +2025,288.138470,10,548.700,44.700,3.5860,-547.900,28.400,-9.900,547.900,-28.400,-9.900,1.210e+05 +2025,288.152448,10,543.900,44.700,3.1230,-543.200,27.900,5.600,543.200,-27.900,5.600,1.210e+05 +2025,288.161766,10,541.300,45.500,3.2760,-540.300,23.300,-23.500,540.300,-23.300,-23.500,1.254e+05 +2025,288.181496,10,555.200,42.700,3.2550,-553.400,45.100,-6.300,553.400,-45.100,-6.300,1.104e+05 +2025,288.210544,10,555.100,43.400,3.3810,-553.900,37.400,1.700,553.900,-37.400,1.700,1.141e+05 +2025,288.218698,10,546.500,47.200,3.6080,-544.900,39.200,-15.500,544.900,-39.200,-15.500,1.349e+05 +2025,288.246618,10,582.200,44.900,3.6050,-580.900,36.700,11.300,580.900,-36.700,11.300,1.221e+05 +2025,288.290772,10,545.300,45.900,3.5250,-543.200,41.000,-23.200,543.200,-41.000,-23.200,1.276e+05 +2025,288.308209,10,539.300,47.100,3.3810,-537.100,42.500,-23.500,537.100,-42.500,-23.500,1.344e+05 +2025,288.309373,10,530.200,46.700,3.2190,-529.500,24.600,-12.500,529.500,-24.600,-12.500,1.321e+05 +2025,288.312868,10,533.700,40.900,3.1670,-531.000,46.400,-27.100,531.000,-46.400,-27.100,1.013e+05 +2025,288.337293,10,538.400,39.100,3.0120,-535.600,46.600,-28.700,535.600,-46.600,-28.700,9.261e+04 +2025,288.344246,10,529.800,45.100,2.9080,-528.100,38.900,-16.600,528.100,-38.900,-16.600,1.232e+05 +2025,288.348905,10,530.100,38.400,2.7610,-529.000,34.200,-2.100,529.000,-34.200,-2.100,8.932e+04 +2025,288.402415,10,527.900,38.500,2.5920,-527.300,13.800,-21.600,527.300,-13.800,-21.600,8.979e+04 +2025,288.414027,10,525.600,36.900,2.5260,-525.000,14.100,-19.600,525.000,-14.100,-19.600,8.248e+04 +2025,288.432592,10,527.100,36.400,2.5700,-526.600,13.300,-18.300,526.600,-13.300,-18.300,8.026e+04 +2025,288.464006,10,519.500,39.300,3.3800,-519.400,5.900,-7.600,519.400,-5.900,-7.600,9.356e+04 +2025,288.484900,10,519.200,40.000,3.1680,-519.100,8.300,-7.300,519.100,-8.300,-7.300,9.692e+04 +2025,288.517479,10,515.700,36.400,3.1600,-515.500,3.700,-11.500,515.500,-3.700,-11.500,8.026e+04 +2025,288.518644,10,516.800,35.700,3.0770,-516.700,6.000,-9.600,516.700,-6.000,-9.600,7.720e+04 +2025,288.526798,10,508.400,40.000,3.3280,-508.300,3.400,-10.400,508.300,-3.400,-10.400,9.692e+04 +2025,288.546528,10,512.400,36.500,3.3810,-512.100,6.500,-13.300,512.100,-6.500,-13.300,8.070e+04 +2025,288.569752,10,506.800,38.400,3.1790,-506.500,1.900,-17.300,506.500,-1.900,-17.300,8.932e+04 +2025,288.597671,10,512.800,40.000,3.9280,-512.500,6.800,-16.700,512.500,-6.800,-16.700,9.692e+04 +2025,288.608155,10,511.700,39.300,4.0500,-511.400,8.800,-16.300,511.400,-8.800,-16.300,9.356e+04 +2025,288.617474,10,504.700,39.000,4.2320,-504.400,10.700,-14.800,504.400,-10.700,-14.800,9.213e+04 +2025,288.624426,10,507.800,38.000,4.0940,-507.500,11.800,-13.800,507.500,-11.800,-13.800,8.747e+04 +2025,288.641862,10,506.100,38.000,4.0750,-505.800,11.400,-13.100,505.800,-11.400,-13.100,8.747e+04 +2025,288.646522,10,502.900,37.500,4.0410,-502.800,7.400,-9.700,502.800,-7.400,-9.700,8.518e+04 +2025,288.660463,10,501.900,38.300,4.1300,-501.600,10.400,-14.500,501.600,-10.400,-14.500,8.886e+04 +2025,288.668617,10,500.600,38.100,4.1090,-500.500,9.600,-8.300,500.500,-9.600,-8.300,8.793e+04 +2025,288.677899,10,499.500,39.500,4.1350,-499.400,8.600,-9.300,499.400,-8.600,-9.300,9.451e+04 +2025,288.680229,10,498.000,40.400,4.0270,-497.900,6.700,-10.300,497.900,-6.700,-10.300,9.887e+04 +2025,288.697665,10,496.400,35.300,3.9110,-496.200,7.200,-9.200,496.200,-7.200,-9.200,7.548e+04 +2025,288.706984,10,497.500,35.900,3.7780,-497.400,7.200,-7.100,497.400,-7.200,-7.100,7.807e+04 +2025,288.709277,10,496.100,34.700,3.7790,-495.900,8.000,-10.400,495.900,-8.000,-10.400,7.294e+04 +2025,288.737196,10,494.800,34.800,3.8450,-494.700,5.000,-8.100,494.700,-5.000,-8.100,7.336e+04 +2025,288.744185,10,490.900,34.800,3.8380,-490.800,6.400,-7.200,490.800,-6.400,-7.200,7.336e+04 +2025,288.745350,10,492.500,35.700,3.8460,-492.400,7.700,-7.800,492.400,-7.700,-7.800,7.720e+04 +2025,288.748808,10,491.500,34.600,3.5060,-491.400,4.900,-7.200,491.400,-4.900,-7.200,7.252e+04 +2025,288.754633,10,491.800,33.600,3.9300,-491.700,7.300,-3.800,491.700,-7.300,-3.800,6.839e+04 +2025,288.765116,10,491.500,33.000,3.4580,-491.500,4.800,-4.500,491.500,-4.800,-4.500,6.596e+04 +2025,288.782552,10,495.400,34.600,3.5140,-495.400,5.300,3.500,495.400,-5.300,3.500,7.252e+04 +2025,288.783681,10,493.600,34.500,3.6320,-493.500,5.900,4.000,493.500,-5.900,4.000,7.210e+04 +2025,288.791834,10,498.100,36.400,3.4050,-498.100,6.900,-0.800,498.100,-6.900,-0.800,8.026e+04 +2025,288.794164,10,493.400,35.100,3.1400,-493.400,5.100,1.300,493.400,-5.100,1.300,7.463e+04 +2025,288.796457,10,488.400,34.700,2.7570,-488.400,3.100,-0.900,488.400,-3.100,-0.900,7.294e+04 +2025,288.797622,10,488.500,35.000,3.0460,-488.400,5.300,-1.700,488.400,-5.300,-1.700,7.420e+04 +2025,288.806941,10,495.900,38.400,3.4450,-495.900,5.000,-1.900,495.900,-5.000,-1.900,8.932e+04 +2025,288.822047,10,493.100,36.000,3.3340,-493.100,3.000,5.000,493.100,-3.000,5.000,7.850e+04 +2025,288.823212,10,485.700,36.900,3.3120,-485.700,4.800,-2.000,485.700,-4.800,-2.000,8.248e+04 +2025,288.829036,10,483.300,36.100,3.0050,-483.300,3.100,0.300,483.300,-3.100,0.300,7.894e+04 +2025,288.831366,10,479.300,34.100,2.8330,-479.300,2.600,-0.800,479.300,-2.600,-0.800,7.044e+04 +2025,288.853462,10,475.300,41.500,3.0020,-475.200,0.900,-5.700,475.200,-0.900,-5.700,1.043e+05 +2025,288.870898,10,474.500,35.500,2.9300,-474.500,0.200,1.400,474.500,-0.200,1.400,7.634e+04 +2025,288.873228,10,472.700,35.100,2.8300,-472.700,1.300,1.200,472.700,-1.300,1.200,7.463e+04 +2025,288.920877,10,445.700,35.900,4.3500,-445.500,10.300,-12.500,445.500,-10.300,-12.500,7.807e+04 +2025,288.928994,10,474.300,32.900,4.0600,-474.300,-0.100,3.700,474.300,0.100,3.700,6.557e+04 +2025,288.946467,10,474.200,26.900,3.7330,-474.200,7.100,1.600,474.200,-7.100,1.600,4.383e+04 +2025,288.969727,10,450.900,29.900,4.9930,-450.900,6.000,-5.700,450.900,-6.000,-5.700,5.415e+04 +2025,288.974350,10,451.000,32.400,5.2020,-450.900,7.200,-6.900,450.900,-7.200,-6.900,6.359e+04 +2025,288.979009,10,454.400,33.000,5.6250,-454.300,7.800,-6.900,454.300,-7.800,-6.900,6.596e+04 +2025,288.985999,10,454.500,32.500,5.5280,-454.400,7.000,-4.200,454.400,-7.000,-4.200,6.398e+04 +2025,289.023201,10,468.400,29.600,3.9650,-468.400,2.100,-3.100,468.400,-2.100,-3.100,5.307e+04 +2025,289.090616,10,462.300,26.500,4.1970,-462.300,3.600,-6.400,462.300,-3.600,-6.400,4.254e+04 +2025,289.095275,10,451.700,28.100,4.9750,-451.600,7.600,-10.100,451.600,-7.600,-10.100,4.783e+04 +2025,289.099934,10,462.000,26.400,4.3670,-461.900,4.700,-5.300,461.900,-4.700,-5.300,4.222e+04 +2025,289.105722,10,457.900,33.800,5.9790,-457.800,1.600,-9.100,457.800,-1.600,-9.100,6.920e+04 +2025,289.109217,10,459.600,32.800,6.0430,-459.500,2.300,-7.200,459.500,-2.300,-7.200,6.517e+04 +2025,289.115005,10,458.600,32.700,6.0300,-458.500,1.600,-6.900,458.500,-1.600,-6.900,6.477e+04 +2025,289.135972,10,450.600,31.200,5.9110,-450.600,3.700,-6.200,450.600,-3.700,-6.200,5.896e+04 +2025,289.154536,10,456.600,31.700,6.6730,-456.600,-1.000,-6.400,456.600,1.000,-6.400,6.087e+04 +2025,289.155701,10,455.200,32.900,6.4650,-455.100,1.300,-7.200,455.100,-1.300,-7.200,6.557e+04 +2025,289.167313,10,455.200,30.900,6.4080,-455.100,-3.300,-8.000,455.100,3.300,-8.000,5.784e+04 +2025,289.185914,10,449.600,30.100,5.4530,-449.500,-3.100,-11.200,449.500,3.100,-11.200,5.488e+04 +2025,289.201057,10,449.200,28.900,5.7490,-449.100,-4.800,-11.100,449.100,4.800,-11.100,5.059e+04 +2025,289.211504,10,443.300,31.000,6.0760,-443.100,-1.500,-13.400,443.100,1.500,-13.400,5.821e+04 +2025,289.252201,10,430.300,31.200,5.1970,-429.700,-0.600,-22.800,429.700,0.600,-22.800,5.896e+04 +2025,289.267307,10,424.500,29.500,5.2200,-424.400,-1.200,-9.500,424.400,1.200,-9.500,5.271e+04 +2025,289.270802,10,428.300,28.900,5.2180,-428.200,-1.300,-10.600,428.200,1.300,-10.600,5.059e+04 +2025,289.276626,10,427.100,30.000,5.5270,-426.900,-2.800,-10.100,426.900,2.800,-10.100,5.452e+04 +2025,289.291696,10,423.900,31.100,5.7810,-423.700,-9.400,-11.000,423.700,9.400,-11.000,5.859e+04 +2025,289.312663,10,422.600,30.600,6.1390,-422.200,-11.700,-14.100,422.200,11.700,-14.100,5.672e+04 +2025,289.316122,10,422.300,30.700,6.0900,-421.900,-10.300,-15.400,421.900,10.300,-15.400,5.709e+04 +2025,289.357983,10,436.200,27.200,5.2830,-436.000,-11.000,-9.800,436.000,11.000,-9.800,4.481e+04 +2025,289.373126,10,419.600,31.900,5.5300,-419.200,-14.100,-12.500,419.200,14.100,-12.500,6.164e+04 +2025,289.392855,10,443.200,30.100,3.8290,-442.700,-18.600,-8.300,442.700,18.600,-8.300,5.488e+04 +2025,289.412621,10,440.900,25.300,4.6450,-440.700,-11.200,-8.600,440.700,11.200,-8.600,3.877e+04 +2025,289.427728,10,440.100,26.700,5.0550,-439.600,-15.400,-15.100,439.600,15.400,-15.100,4.318e+04 +2025,289.461436,10,429.900,31.900,5.9960,-429.300,-18.500,-11.300,429.300,18.500,-11.300,6.164e+04 +2025,289.474249,10,427.400,29.900,5.3540,-426.900,-12.100,-15.700,426.900,12.100,-15.700,5.415e+04 +2025,289.485861,10,426.600,29.600,5.3500,-426.000,-15.000,-15.300,426.000,15.000,-15.300,5.307e+04 +2025,289.497509,10,420.300,28.800,5.3530,-419.800,-13.800,-15.900,419.800,13.800,-15.900,5.024e+04 +2025,289.499839,10,424.000,29.500,5.2200,-423.500,-14.200,-14.900,423.500,14.200,-14.900,5.271e+04 +2025,289.506792,10,426.900,28.100,5.0700,-426.600,-11.600,-9.800,426.600,11.600,-9.800,4.783e+04 +2025,289.550946,10,425.700,28.100,5.0910,-425.000,-18.200,-16.900,425.000,18.200,-16.900,4.783e+04 +2025,289.563760,10,429.600,25.900,5.9570,-429.000,-8.500,-22.500,429.000,8.500,-22.500,4.063e+04 +2025,289.564924,10,427.800,27.100,5.5530,-427.200,-9.500,-19.100,427.200,9.500,-19.100,4.449e+04 +2025,289.568419,10,429.100,27.700,5.7130,-428.500,-10.100,-20.900,428.500,10.100,-20.900,4.648e+04 +2025,289.573042,10,423.200,27.400,5.9120,-422.400,-11.000,-22.100,422.400,11.000,-22.100,4.548e+04 +2025,289.593973,10,413.300,24.700,5.4030,-412.300,-15.000,-24.400,412.300,15.000,-24.400,3.696e+04 +2025,289.599797,10,414.600,23.500,5.5000,-413.900,-9.700,-21.800,413.900,9.700,-21.800,3.345e+04 +2025,289.609079,10,412.000,23.700,5.1650,-411.200,-7.300,-25.800,411.200,7.300,-25.800,3.402e+04 +2025,289.620728,10,414.100,22.500,5.4620,-413.300,-4.300,-25.700,413.300,4.300,-25.700,3.067e+04 +2025,289.621892,10,415.900,26.000,5.7220,-415.200,-5.400,-23.500,415.200,5.400,-23.500,4.095e+04 +2025,289.623057,10,413.600,25.900,5.5480,-412.700,-7.700,-26.300,412.700,7.700,-26.300,4.063e+04 +2025,289.649776,10,394.500,29.000,5.5440,-394.100,-8.800,-17.100,394.100,8.800,-17.100,5.094e+04 +2025,289.662552,10,391.900,28.100,5.6110,-391.500,-7.000,-16.000,391.500,7.000,-16.000,4.783e+04 +2025,289.676494,10,393.300,27.900,5.3760,-392.800,-8.400,-18.700,392.800,8.400,-18.700,4.715e+04 +2025,289.686978,10,389.500,27.900,5.5140,-389.000,-7.900,-18.000,389.000,7.900,-18.000,4.715e+04 +2025,289.699754,10,398.400,26.500,5.4430,-397.900,-8.800,-17.600,397.900,8.800,-17.600,4.254e+04 +2025,289.702084,10,398.300,27.600,5.3570,-397.600,-4.500,-21.600,397.600,4.500,-21.600,4.614e+04 +2025,289.717227,10,385.800,28.400,5.9410,-385.600,-6.600,-9.500,385.600,6.600,-9.500,4.886e+04 +2025,289.728839,10,394.000,28.000,6.3620,-393.600,-11.500,-14.200,393.600,11.500,-14.200,4.749e+04 +2025,289.760216,10,394.500,28.500,7.4420,-393.700,5.800,-23.700,393.700,-5.800,-23.700,4.920e+04 +2025,289.772993,10,392.100,29.500,7.5690,-391.500,9.500,-19.600,391.500,-9.500,-19.600,5.271e+04 +2025,289.776488,10,396.100,29.900,8.2030,-395.700,6.200,-16.500,395.700,-6.200,-16.500,5.415e+04 +2025,289.785770,10,395.300,27.500,8.0320,-395.000,-0.300,-16.400,395.000,0.300,-16.400,4.581e+04 +2025,289.798583,10,392.500,29.100,7.8980,-392.100,4.100,-15.900,392.100,-4.100,-15.900,5.129e+04 +2025,289.799748,10,393.400,28.900,8.0990,-393.100,2.500,-14.600,393.100,-2.500,-14.600,5.059e+04 +2025,289.821843,10,406.900,21.800,7.7850,-405.800,-13.400,-25.800,405.800,13.400,-25.800,2.879e+04 +2025,289.825338,10,406.400,20.800,8.0290,-405.500,-12.900,-23.500,405.500,12.900,-23.500,2.621e+04 +2025,289.828833,10,404.100,20.600,8.1810,-403.200,-13.700,-22.300,403.200,13.700,-22.300,2.571e+04 +2025,289.831162,10,405.400,20.400,8.0080,-404.400,-14.000,-24.500,404.400,14.000,-24.500,2.521e+04 +2025,289.835785,10,400.100,22.500,7.9340,-399.000,-13.700,-26.200,399.000,13.700,-26.200,3.067e+04 +2025,289.840445,10,396.900,23.900,8.4790,-395.900,-12.800,-24.800,395.900,12.800,-24.800,3.460e+04 +2025,289.846269,10,412.500,24.700,9.8870,-412.100,-10.000,-14.800,412.100,10.000,-14.800,3.696e+04 +2025,289.855551,10,410.300,29.200,7.2270,-409.600,-1.800,-23.900,409.600,1.800,-23.900,5.165e+04 +2025,289.856716,10,403.600,26.700,8.2860,-402.300,-3.600,-31.400,402.300,3.600,-31.400,4.318e+04 +2025,289.861375,10,398.800,31.600,8.9600,-398.100,-4.000,-23.000,398.100,4.000,-23.000,6.049e+04 +2025,289.862540,10,420.300,31.900,6.0120,-419.700,-9.600,-19.400,419.700,9.600,-19.400,6.164e+04 +2025,289.866035,10,423.000,23.400,6.3330,-422.700,-8.300,-12.700,422.700,8.300,-12.700,3.317e+04 +2025,289.871859,10,421.500,25.900,7.0720,-421.200,-13.800,-9.100,421.200,13.800,-9.100,4.063e+04 +2025,289.873024,10,423.100,24.500,6.8270,-422.500,-19.000,-12.100,422.500,19.000,-12.100,3.636e+04 +2025,289.874152,10,423.900,26.900,7.2110,-423.300,-18.000,-10.700,423.300,18.000,-10.700,4.383e+04 +2025,289.914812,10,421.000,25.200,12.2440,-420.600,-13.100,-12.100,420.600,13.100,-12.100,3.847e+04 +2025,289.941567,10,425.900,22.200,14.5310,-425.600,-15.100,-10.400,425.600,15.100,-10.400,2.985e+04 +2025,289.943897,10,425.200,22.100,14.9000,-424.800,-15.600,-8.800,424.800,15.600,-8.800,2.958e+04 +2025,289.954380,10,417.700,21.700,15.1920,-417.500,-10.600,-8.800,417.500,10.600,-8.800,2.852e+04 +2025,289.964828,10,419.900,21.800,13.9600,-419.700,-10.600,-7.300,419.700,10.600,-7.300,2.879e+04 +2025,289.977605,10,415.700,22.700,14.6950,-415.500,-9.600,-10.500,415.500,9.600,-10.500,3.121e+04 +2025,290.022961,10,393.900,17.400,20.2740,-393.600,-5.300,-12.800,393.600,5.300,-12.800,1.834e+04 +2025,290.035737,10,394.900,17.900,21.3830,-394.500,-10.600,-14.000,394.500,10.600,-14.000,1.941e+04 +2025,290.041525,10,394.000,18.700,21.8220,-393.600,-10.300,-13.700,393.600,10.300,-13.700,2.118e+04 +2025,290.046185,10,394.000,18.300,22.3780,-393.500,-11.000,-15.700,393.500,11.000,-15.700,2.029e+04 +2025,290.093870,10,391.800,16.400,23.2870,-391.500,-7.000,-13.200,391.500,7.000,-13.200,1.629e+04 +2025,290.113636,10,390.100,15.500,20.2190,-389.900,-6.500,-12.200,389.900,6.500,-12.200,1.455e+04 +2025,290.118296,10,389.500,15.500,20.6890,-389.200,-7.300,-13.000,389.200,7.300,-13.000,1.455e+04 +2025,290.121790,10,389.700,15.600,20.2460,-389.400,-7.100,-14.200,389.400,7.100,-14.200,1.474e+04 +2025,290.125285,10,388.700,15.600,20.3750,-388.300,-7.900,-15.600,388.300,7.900,-15.600,1.474e+04 +2025,290.139190,10,386.900,15.700,20.6820,-386.500,-8.300,-16.800,386.500,8.300,-16.800,1.493e+04 +2025,290.140355,10,387.300,15.700,20.7140,-386.900,-7.800,-16.300,386.900,7.800,-16.300,1.493e+04 +2025,290.149674,10,385.000,15.400,21.6440,-384.700,-7.800,-13.500,384.700,7.800,-13.500,1.437e+04 +2025,290.156626,10,386.700,15.400,20.8870,-386.300,-8.600,-15.100,386.300,8.600,-15.100,1.437e+04 +2025,290.196158,10,382.700,16.300,26.0980,-381.900,-14.700,-18.800,381.900,14.700,-18.800,1.609e+04 +2025,290.208971,10,389.800,17.100,21.5630,-388.900,-17.800,-19.700,388.900,17.800,-19.700,1.771e+04 +2025,290.219418,10,391.400,18.300,22.4810,-390.700,-14.900,-17.500,390.700,14.900,-17.500,2.029e+04 +2025,290.222913,10,392.300,18.000,22.5310,-391.600,-15.100,-18.700,391.600,15.100,-18.700,1.963e+04 +2025,290.248502,10,392.500,17.300,27.1830,-391.800,-13.900,-19.800,391.800,13.900,-19.800,1.813e+04 +2025,290.258950,10,390.900,17.700,29.3460,-390.100,-13.400,-19.400,390.100,13.400,-19.400,1.898e+04 +2025,290.263609,10,390.000,16.400,31.5130,-389.100,-15.100,-21.800,389.100,15.100,-21.800,1.629e+04 +2025,290.274056,10,389.200,16.200,30.6910,-388.600,-11.500,-19.600,388.600,11.500,-19.600,1.590e+04 +2025,290.289162,10,390.800,16.600,33.1720,-389.800,-14.100,-22.800,389.800,14.100,-22.800,1.669e+04 +2025,290.318247,10,391.200,18.500,51.5060,-389.500,-13.200,-34.000,389.500,13.200,-34.000,2.073e+04 +2025,290.322906,10,390.200,18.200,51.6110,-388.600,-11.700,-33.100,388.600,11.700,-33.100,2.006e+04 +2025,290.334518,10,391.000,18.300,50.1220,-389.500,-15.800,-30.300,389.500,15.800,-30.300,2.029e+04 +2025,290.338013,10,389.600,18.400,51.3080,-388.000,-16.300,-31.800,388.000,16.300,-31.800,2.051e+04 +2025,290.341507,10,389.500,18.400,51.0620,-387.800,-13.500,-33.400,387.800,13.500,-33.400,2.051e+04 +2025,290.351991,10,384.900,18.900,53.4090,-383.300,-14.500,-31.400,383.300,14.500,-31.400,2.164e+04 +2025,290.355449,10,384.600,18.600,52.9550,-383.200,-13.800,-29.900,383.200,13.800,-29.900,2.096e+04 +2025,290.375215,10,385.100,19.400,51.6940,-384.200,-13.300,-23.500,384.200,13.300,-23.500,2.280e+04 +2025,290.378709,10,383.700,18.800,57.4700,-382.900,-12.700,-20.800,382.900,12.700,-20.800,2.141e+04 +2025,290.383332,10,385.700,18.600,59.0670,-384.700,-13.600,-24.700,384.700,13.600,-24.700,2.096e+04 +2025,290.401933,10,390.100,19.500,59.9940,-389.700,-8.800,-14.700,389.700,8.800,-14.700,2.303e+04 +2025,290.414747,10,393.200,21.500,18.7330,-393.100,1.900,-11.500,393.100,-1.900,-11.500,2.800e+04 +2025,290.428688,10,389.900,30.600,24.1390,-389.000,-9.800,-24.800,389.000,9.800,-24.800,5.672e+04 +2025,290.450784,10,391.700,20.500,13.2680,-391.400,9.500,-11.700,391.400,-9.500,-11.700,2.546e+04 +2025,290.543789,10,390.400,27.400,23.7020,-390.000,11.700,-13.000,390.000,-11.700,-13.000,4.548e+04 +2025,290.558859,10,395.000,25.800,16.1420,-394.800,11.000,-4.300,394.800,-11.000,-4.300,4.032e+04 +2025,290.577497,10,378.300,20.100,19.7160,-377.700,9.500,-18.000,377.700,-9.500,-18.000,2.447e+04 +2025,290.598428,10,397.400,22.100,33.5670,-397.400,-0.400,-2.200,397.400,0.400,-2.200,2.958e+04 +2025,290.600757,10,400.000,21.200,29.9020,-399.900,10.000,-1.800,399.900,-10.000,-1.800,2.722e+04 +2025,290.633264,10,411.400,24.700,34.4410,-411.400,5.200,1.200,411.400,-5.200,1.200,3.696e+04 +2025,290.643747,10,412.800,24.000,35.1110,-412.700,5.500,4.000,412.700,-5.500,4.000,3.489e+04 +2025,290.667008,10,404.200,27.600,34.8580,-404.100,-9.400,6.000,404.100,9.400,6.000,4.614e+04 +2025,290.668172,10,404.400,26.000,34.3350,-404.200,-9.700,8.200,404.200,9.700,8.200,4.095e+04 +2025,290.676290,10,406.500,25.100,35.7240,-406.400,-6.800,3.100,406.400,6.800,3.100,3.816e+04 +2025,290.678620,10,407.500,25.500,36.0520,-407.400,-8.200,5.500,407.400,8.200,5.500,3.939e+04 +2025,290.703045,10,397.100,26.400,23.4130,-397.000,-1.700,3.200,397.000,1.700,3.200,4.222e+04 +2025,290.713492,10,387.200,24.800,22.5080,-387.100,-7.200,0.000,387.100,7.200,0.000,3.726e+04 +2025,290.714657,10,385.000,24.100,22.2570,-384.900,-8.900,0.600,384.900,8.900,0.600,3.518e+04 +2025,290.715822,10,384.200,24.400,22.1580,-384.000,-11.100,0.600,384.000,11.100,0.600,3.606e+04 +2025,290.728635,10,384.600,24.700,23.1620,-384.500,-8.500,1.200,384.500,8.500,1.200,3.696e+04 +2025,290.735588,10,383.900,24.500,23.2310,-383.700,-10.100,3.600,383.700,10.100,3.600,3.636e+04 +2025,290.741412,10,384.300,23.900,22.5670,-384.200,-10.600,3.500,384.200,10.600,3.500,3.460e+04 +2025,290.753024,10,385.200,26.300,24.6350,-385.200,-0.200,-1.900,385.200,0.200,-1.900,4.190e+04 +2025,290.776248,10,381.300,27.200,23.1140,-381.200,-7.700,-6.100,381.200,7.700,-6.100,4.481e+04 +2025,290.805333,10,380.600,26.000,18.7920,-380.200,-3.300,-16.900,380.200,3.300,-16.900,4.095e+04 +2025,290.819274,10,383.700,23.300,14.7430,-382.400,-16.000,-28.200,382.400,16.000,-28.200,3.288e+04 +2025,290.821604,10,383.500,23.300,16.1440,-382.200,-18.700,-25.200,382.200,18.700,-25.200,3.288e+04 +2025,290.863466,10,376.900,20.100,16.6870,-376.300,-4.800,-20.700,376.300,4.800,-20.700,2.447e+04 +2025,290.868125,10,371.700,19.800,19.3650,-371.000,-3.900,-23.000,371.000,3.900,-23.000,2.375e+04 +2025,290.913408,10,375.300,21.000,12.3180,-375.000,3.700,-13.200,375.000,-3.700,-13.200,2.671e+04 +2025,290.926222,10,377.000,21.100,8.0960,-376.800,-9.500,-8.900,376.800,9.500,-8.900,2.697e+04 +2025,290.929716,10,375.200,21.900,8.1160,-375.200,-1.900,-6.600,375.200,1.900,-6.600,2.905e+04 +2025,290.943658,10,385.300,20.700,7.4210,-385.000,-12.800,-9.500,385.000,12.800,-9.500,2.596e+04 +2025,290.944823,10,386.600,20.900,6.8290,-386.300,-12.200,-7.200,386.300,12.200,-7.200,2.646e+04 +2025,290.950647,10,387.200,20.000,7.1220,-387.000,-11.600,-6.400,387.000,11.600,-6.400,2.423e+04 +2025,290.956471,10,387.900,18.700,5.5370,-387.500,-15.700,-7.800,387.500,15.700,-7.800,2.118e+04 +2025,291.000662,10,410.800,21.800,6.5530,-410.000,-19.300,15.400,410.000,19.300,15.400,2.879e+04 +2025,291.002956,10,407.100,21.300,5.3920,-406.600,-18.500,8.500,406.600,18.500,8.500,2.748e+04 +2025,291.004121,10,409.500,21.000,6.9110,-409.000,-18.000,11.100,409.000,18.000,11.100,2.671e+04 +2025,291.023887,10,408.300,27.000,14.4570,-407.900,-3.400,17.500,407.900,3.400,17.500,4.416e+04 +2025,291.034334,10,408.600,27.000,16.0260,-408.600,-0.900,4.500,408.600,0.900,4.500,4.416e+04 +2025,291.037828,10,410.700,28.100,18.2280,-410.600,-7.000,5.200,410.600,7.000,5.200,4.783e+04 +2025,291.047111,10,403.300,20.300,11.7410,-403.100,-12.200,-0.700,403.100,12.200,-0.700,2.496e+04 +2025,291.054100,10,403.200,20.500,12.1940,-403.000,-9.300,-7.700,403.000,9.300,-7.700,2.546e+04 +2025,291.056429,10,401.800,20.800,14.2410,-401.500,-8.700,-12.500,401.500,8.700,-12.500,2.621e+04 +2025,291.058759,10,401.000,20.800,12.3140,-400.700,-3.500,-14.500,400.700,3.500,-14.500,2.621e+04 +2025,291.075030,10,395.900,29.400,31.0440,-395.900,-0.900,-1.600,395.900,0.900,-1.600,5.236e+04 +2025,291.076195,10,397.600,29.900,30.0640,-397.600,-1.100,-1.800,397.600,1.100,-1.800,5.415e+04 +2025,291.082020,10,391.300,32.500,26.4700,-391.300,-3.700,3.300,391.300,3.700,3.300,6.398e+04 +2025,291.089009,10,397.500,29.900,35.7710,-397.400,-4.200,-2.400,397.400,4.200,-2.400,5.415e+04 +2025,291.098291,10,397.100,28.500,29.5900,-397.100,-3.800,-0.700,397.100,3.800,-0.700,4.920e+04 +2025,291.105244,10,393.400,31.600,30.4990,-393.400,3.800,-2.200,393.400,-3.800,-2.200,6.049e+04 +2025,291.106408,10,394.600,30.800,31.9730,-394.600,3.400,-2.900,394.600,-3.400,-2.900,5.746e+04 +2025,291.109903,10,398.000,29.500,33.5130,-397.900,5.800,-1.400,397.900,-5.800,-1.400,5.271e+04 +2025,291.126211,10,390.000,27.600,32.4320,-389.800,-2.900,-9.800,389.800,2.900,-9.800,4.614e+04 +2025,291.164541,10,388.300,25.300,54.5240,-387.100,-31.000,-3.000,387.100,31.000,-3.000,3.877e+04 +2025,291.220345,10,380.400,26.000,48.9630,-379.200,-25.700,-16.700,379.200,25.700,-16.700,4.095e+04 +2025,291.223839,10,378.600,28.000,40.8470,-377.700,-26.400,-7.100,377.700,26.400,-7.100,4.749e+04 +2025,291.235451,10,398.200,17.000,28.7620,-397.100,-25.100,15.900,397.100,25.100,15.900,1.751e+04 +2025,291.251759,10,398.200,19.300,29.8840,-397.500,-20.900,12.300,397.500,20.900,12.300,2.256e+04 +2025,291.259877,10,395.700,19.500,30.1550,-393.500,-37.000,18.800,393.500,37.000,18.800,2.303e+04 +2025,291.270324,10,399.900,21.300,27.9070,-398.100,-34.700,15.100,398.100,34.700,15.100,2.748e+04 +2025,291.285431,10,407.800,25.700,40.8490,-406.400,-22.700,25.100,406.400,22.700,25.100,4.001e+04 +2025,291.286595,10,400.300,20.700,35.4900,-397.000,-25.600,44.600,397.000,25.600,44.600,2.596e+04 +2025,291.287760,10,400.300,19.000,31.5890,-396.300,-31.500,47.600,396.300,31.500,47.600,2.187e+04 +2025,291.295878,10,392.100,17.100,22.5830,-387.700,-41.300,42.300,387.700,41.300,42.300,1.771e+04 +2025,291.315680,10,406.300,36.700,18.7020,-402.100,-18.400,55.300,402.100,18.400,55.300,8.159e+04 +2025,291.317973,10,411.100,31.700,14.8220,-408.000,-7.900,50.500,408.000,7.900,50.500,6.087e+04 +2025,291.338904,10,415.700,27.800,13.8060,-412.800,-9.200,48.000,412.800,9.200,48.000,4.681e+04 +2025,291.431873,10,463.300,57.600,10.5520,-457.600,65.600,30.300,457.600,-65.600,30.300,2.010e+05 +2025,291.569070,10,481.600,48.500,13.1400,-476.200,-61.100,38.200,476.200,61.100,38.200,1.425e+05 +2025,291.573730,10,478.900,49.300,10.3750,-473.700,-60.700,35.100,473.700,60.700,35.100,1.472e+05 +2025,291.636522,10,503.900,60.100,10.4820,-503.600,7.800,15.400,503.600,-7.800,15.400,2.188e+05 +2025,291.645841,10,513.900,61.100,11.9500,-513.800,8.900,8.800,513.800,-8.900,8.800,2.261e+05 +2025,291.666735,10,529.100,60.100,11.7180,-528.800,14.300,10.900,528.800,-14.300,10.900,2.188e+05 +2025,291.685299,10,517.400,50.700,11.7980,-516.300,25.900,19.800,516.300,-25.900,19.800,1.557e+05 +2025,291.689959,10,508.800,50.600,10.8970,-507.100,33.900,22.400,507.100,-33.900,22.400,1.551e+05 +2025,291.691123,10,511.500,50.700,11.0290,-509.500,37.500,24.100,509.500,-37.500,24.100,1.557e+05 +2025,291.722537,10,539.100,48.000,8.6690,-538.200,26.000,18.000,538.200,-26.000,18.000,1.396e+05 +2025,291.832979,10,521.200,69.400,8.2300,-520.300,29.600,6.600,520.300,-29.600,6.600,2.917e+05 +2025,291.842261,10,513.400,61.800,12.7930,-511.900,31.900,23.800,511.900,-31.900,23.800,2.313e+05 +2025,291.845756,10,510.400,62.600,11.7620,-509.500,22.500,19.400,509.500,-22.500,19.400,2.374e+05 +2025,291.953868,10,497.900,52.400,15.1940,-497.000,8.000,-29.000,497.000,-8.000,-29.000,1.663e+05 +2025,292.015495,10,483.700,62.500,13.6900,-483.700,-2.000,-7.200,483.700,2.000,-7.200,2.366e+05 +2025,292.018990,10,484.100,60.300,14.5390,-484.000,-1.600,-10.400,484.000,1.600,-10.400,2.203e+05 +2025,292.032932,10,475.500,62.900,14.3330,-475.300,0.600,-10.800,475.300,-0.600,-10.800,2.397e+05 +2025,292.034096,10,474.500,63.200,14.1250,-474.500,-1.200,-8.300,474.500,1.200,-8.300,2.419e+05 +2025,292.042214,10,470.900,69.800,14.0790,-470.800,6.300,-7.200,470.800,-6.300,-7.200,2.951e+05 +2025,292.109666,10,500.200,69.900,8.4660,-498.500,39.700,-10.600,498.500,-39.700,-10.600,2.960e+05 +2025,292.127102,10,503.000,69.200,10.1330,-501.900,26.400,-19.000,501.900,-26.400,-19.000,2.901e+05 +2025,292.142209,10,487.700,61.900,8.1880,-487.500,10.800,-8.100,487.500,-10.800,-8.100,2.321e+05 +2025,292.154985,10,480.100,62.500,9.7400,-479.900,14.200,-4.200,479.900,-14.200,-4.200,2.366e+05 +2025,292.156150,10,480.300,61.600,10.5810,-480.000,17.900,1.300,480.000,-17.900,1.300,2.299e+05 +2025,292.158480,10,477.900,62.700,9.5650,-477.700,13.600,-6.000,477.700,-13.600,-6.000,2.381e+05 +2025,292.160810,10,480.200,62.900,9.2900,-479.900,15.400,-7.000,479.900,-15.400,-7.000,2.397e+05 +2025,292.164304,10,478.000,63.300,9.8290,-477.900,11.300,0.400,477.900,-11.300,0.400,2.427e+05 +2025,292.772280,10,539.500,76.300,6.4350,-535.800,14.100,-61.400,535.800,-14.100,-61.400,3.526e+05 +2025,292.947807,10,611.400,72.200,5.7470,-609.100,31.700,-42.400,609.100,-31.700,-42.400,3.158e+05 +2025,292.950137,10,627.600,77.700,6.6200,-621.200,44.600,-77.100,621.200,-44.600,-77.100,3.657e+05 +2025,293.033824,10,559.700,66.600,7.1630,-553.400,75.200,-36.800,553.400,-75.200,-36.800,2.687e+05 +2025,293.034989,10,559.900,64.300,7.5700,-553.800,74.700,-34.800,553.800,-74.700,-34.800,2.504e+05 +2025,293.041941,10,549.800,64.100,7.9320,-546.600,55.800,-21.000,546.600,-55.800,-21.000,2.489e+05 +2025,293.104698,10,549.700,59.800,4.0060,-547.300,43.600,-25.900,547.300,-43.600,-25.900,2.166e+05 +2025,293.126830,10,560.000,51.900,3.4310,-556.900,23.800,-54.400,556.900,-23.800,-54.400,1.632e+05 +2025,293.133782,10,564.800,51.500,3.3420,-562.600,-7.200,-49.700,562.600,7.200,-49.700,1.607e+05 +2025,293.155878,10,599.800,52.000,4.1590,-599.100,-11.300,-27.700,599.100,11.300,-27.700,1.638e+05 +2025,293.165197,10,588.000,53.000,4.3320,-587.800,8.600,10.200,587.800,-8.600,10.200,1.702e+05 +2025,293.169820,10,567.700,51.100,4.3400,-566.300,-8.500,-39.200,566.300,8.500,-39.200,1.582e+05 +2025,293.170985,10,583.400,53.200,4.3260,-580.400,-6.300,-58.700,580.400,6.300,-58.700,1.714e+05 +2025,293.175644,10,571.900,50.900,4.0560,-571.000,31.500,5.600,571.000,-31.500,5.600,1.569e+05 +2025,293.177974,10,571.800,51.400,4.4390,-571.500,-2.600,-17.200,571.500,2.600,-17.200,1.600e+05 +2025,293.179139,10,572.200,51.600,4.5300,-571.600,-3.100,-25.700,571.600,3.100,-25.700,1.613e+05 +2025,293.220964,10,551.400,49.100,3.7850,-547.900,8.800,-61.600,547.900,-8.800,-61.600,1.460e+05 +2025,293.223294,10,548.800,50.600,3.6010,-546.600,-1.800,-49.000,546.600,1.800,-49.000,1.551e+05 +2025,293.254672,10,594.500,47.000,3.7370,-592.400,-15.800,-48.200,592.400,15.800,-48.200,1.338e+05 +2025,293.289544,10,566.600,44.800,4.0530,-564.200,-14.400,-50.300,564.200,14.400,-50.300,1.216e+05 +2025,293.293039,10,581.500,41.100,3.8530,-580.900,-19.300,-16.600,580.900,19.300,-16.600,1.023e+05 +2025,293.303522,10,578.500,43.100,3.7190,-576.900,-23.500,-36.100,576.900,23.500,-36.100,1.125e+05 +2025,293.322123,10,574.700,44.400,3.7280,-572.400,-18.100,-47.200,572.400,18.100,-47.200,1.194e+05 +2025,293.331442,10,593.400,43.000,3.8140,-591.700,-14.900,-43.300,591.700,14.900,-43.300,1.120e+05 +2025,293.333736,10,586.700,45.000,4.0090,-583.100,-16.300,-63.000,583.100,16.300,-63.000,1.227e+05 +2025,293.336065,10,582.100,43.900,3.9810,-580.000,-21.300,-43.900,580.000,21.300,-43.900,1.167e+05 +2025,293.353502,10,564.600,46.400,4.4320,-562.400,-19.500,-46.100,562.400,19.500,-46.100,1.304e+05 +2025,293.427906,10,549.800,42.900,3.4070,-549.500,-17.300,1.700,549.500,17.300,1.700,1.115e+05 +2025,293.433730,10,540.700,44.500,3.7120,-538.100,-22.900,-47.700,538.100,22.900,-47.700,1.200e+05 +2025,293.453460,10,556.600,56.400,4.1080,-555.300,-8.000,-37.700,555.300,8.000,-37.700,1.927e+05 +2025,293.497615,10,556.200,59.400,4.2040,-555.500,2.500,-28.200,555.500,-2.500,-28.200,2.137e+05 +2025,293.512722,10,579.100,55.400,4.1400,-577.000,43.800,-23.400,577.000,-43.800,-23.400,1.859e+05 +2025,293.668520,10,503.300,44.900,4.2960,-500.500,-13.200,-51.200,500.500,13.200,-51.200,1.221e+05 +2025,293.783585,10,501.800,48.000,4.5860,-501.000,-28.400,-4.500,501.000,28.400,-4.500,1.396e+05 +2025,293.876627,10,455.100,47.100,4.7720,-452.700,22.800,-40.800,452.700,-22.800,-40.800,1.344e+05 +2025,293.907968,10,483.500,49.200,4.2750,-483.100,-15.900,-13.500,483.100,15.900,-13.500,1.466e+05 +2025,293.926570,10,527.000,54.100,4.2370,-526.500,-23.100,5.400,526.500,23.100,5.400,1.773e+05 +2025,293.931229,10,503.400,49.600,4.6160,-502.500,-23.500,-17.700,502.500,23.500,-17.700,1.490e+05 +2025,294.059071,10,541.900,53.300,4.0300,-540.500,37.000,12.500,540.500,-37.000,12.500,1.721e+05 +2025,294.063730,10,539.700,52.500,3.8840,-538.100,40.400,8.200,538.100,-40.400,8.200,1.670e+05 +2025,294.074214,10,533.300,52.500,4.0460,-532.100,34.900,-10.300,532.100,-34.900,-10.300,1.670e+05 +2025,294.216034,10,509.500,48.200,4.2630,-508.300,-34.200,-5.900,508.300,34.200,-5.900,1.407e+05 +2025,294.367137,10,503.900,39.100,4.0410,-503.300,-25.000,5.900,503.300,25.000,5.900,9.261e+04 +2025,294.388068,10,493.300,35.700,4.1480,-492.500,-27.500,-3.100,492.500,27.500,-3.100,7.720e+04 +2025,294.445036,10,505.500,34.700,4.1110,-504.900,-24.200,-2.900,504.900,24.200,-2.900,7.294e+04 +2025,294.448494,10,502.700,35.700,4.3710,-501.900,-26.400,-6.700,501.900,26.400,-6.700,7.720e+04 +2025,294.478744,10,490.900,34.600,4.0410,-490.400,-11.700,17.800,490.400,11.700,17.800,7.252e+04 +2025,294.493851,10,479.200,45.700,3.7200,-479.000,-9.000,-7.900,479.000,9.000,-7.900,1.265e+05 +2025,294.963502,10,475.700,50.700,3.4830,-475.400,-0.000,-16.900,475.400,0.000,-16.900,1.557e+05 +2025,295.400538,10,431.500,30.900,4.5920,-429.400,-40.900,10.000,429.400,40.900,10.000,5.784e+04 +2025,295.493581,10,414.000,45.700,5.4920,-413.200,-22.800,-12.800,413.200,22.800,-12.800,1.265e+05 +2025,295.601693,10,421.800,32.200,5.0520,-419.400,-39.600,20.300,419.400,39.600,20.300,6.281e+04 +2025,295.695827,10,424.100,36.000,4.1410,-421.700,-42.200,15.700,421.700,42.200,15.700,7.850e+04 +2025,295.786502,10,419.700,38.000,6.5740,-417.400,-33.000,28.200,417.400,33.000,28.200,8.747e+04 +2025,295.787667,10,418.000,34.300,6.4080,-416.000,-35.300,22.300,416.000,35.300,22.300,7.126e+04 +2025,295.860907,10,398.800,34.200,5.1230,-395.800,-41.600,25.900,395.800,41.600,25.900,7.085e+04 +2025,296.495568,10,431.700,49.500,2.2900,-431.400,4.200,16.700,431.400,-4.200,16.700,1.484e+05 +2025,296.739713,10,438.400,52.200,6.8860,-437.200,-29.300,14.600,437.200,29.300,14.600,1.651e+05 +2025,296.764101,10,440.100,56.500,6.6020,-439.300,-26.600,2.300,439.300,26.600,2.300,1.934e+05 +2025,296.765266,10,436.800,56.100,6.8150,-435.700,-29.600,5.400,435.700,29.600,5.400,1.906e+05 +2025,297.216282,10,527.300,60.700,3.6150,-526.600,5.800,26.900,526.600,-5.800,26.900,2.232e+05 +2025,297.219776,10,540.000,60.400,3.6500,-540.000,-0.500,2.300,540.000,0.500,2.300,2.210e+05 +2025,297.631260,10,521.300,64.100,3.5580,-520.800,7.600,-21.500,520.800,-7.600,-21.500,2.489e+05 +2025,297.654521,10,542.800,58.700,2.9750,-542.000,-10.500,-27.500,542.000,10.500,-27.500,2.087e+05 +2025,297.688228,10,533.600,63.800,3.1560,-531.700,14.400,-42.500,531.700,-14.400,-42.500,2.466e+05 +2025,297.756808,10,534.000,61.800,3.4910,-526.000,36.700,-84.400,526.000,-36.700,-84.400,2.313e+05 +2025,297.855639,10,521.600,55.200,3.1450,-521.100,-2.400,-23.100,521.100,2.400,-23.100,1.846e+05 +2025,297.889310,10,537.300,51.500,2.9100,-536.700,8.000,-25.500,536.700,-8.000,-25.500,1.607e+05 +2025,297.952103,10,519.700,53.400,3.3000,-517.100,19.200,-49.200,517.100,-19.200,-49.200,1.727e+05 +2025,297.953268,10,518.700,52.600,3.3850,-517.100,10.900,-39.600,517.100,-10.900,-39.600,1.676e+05 +2025,298.023013,10,498.400,48.000,3.2280,-498.300,-8.200,-3.000,498.300,8.200,-3.000,1.396e+05 +2025,298.050897,10,485.100,48.000,3.7530,-484.800,-16.000,1.100,484.800,16.000,1.100,1.396e+05 +2025,298.116019,10,456.600,45.000,3.8280,-455.100,-29.500,-21.500,455.100,29.500,-21.500,1.227e+05 +2025,298.128796,10,468.700,45.600,3.8800,-468.200,-10.300,17.000,468.200,10.300,17.000,1.260e+05 +2025,298.154350,10,490.200,36.900,5.0810,-487.400,8.100,-52.100,487.400,-8.100,-52.100,8.248e+04 +2025,298.196212,10,458.300,50.400,5.7700,-458.000,-0.300,-16.600,458.000,0.300,-16.600,1.539e+05 +2025,298.215942,10,471.100,46.100,5.9630,-470.300,-16.900,-21.200,470.300,16.900,-21.200,1.287e+05 +2025,298.220601,10,469.900,50.600,5.7930,-466.700,37.300,-40.700,466.700,-37.300,-40.700,1.551e+05 +2025,298.243862,10,460.700,46.500,5.3540,-457.200,17.600,-54.000,457.200,-17.600,-54.000,1.310e+05 +2025,298.252016,10,457.000,46.000,4.9600,-454.100,23.600,-45.700,454.100,-23.600,-45.700,1.282e+05 +2025,298.261298,10,458.100,48.400,4.7530,-454.100,22.700,-55.500,454.100,-22.700,-55.500,1.419e+05 +2025,298.265958,10,449.100,44.600,5.0270,-444.700,14.500,-61.000,444.700,-14.500,-61.000,1.205e+05 +2025,298.285724,10,472.100,48.400,5.4670,-469.000,-5.400,-54.300,469.000,5.400,-54.300,1.419e+05 +2025,298.293841,10,473.400,46.500,4.8010,-471.100,-17.400,-42.700,471.100,17.400,-42.700,1.310e+05 +2025,298.297336,10,459.600,47.000,4.4570,-459.500,-7.100,-6.500,459.500,7.100,-6.500,1.338e+05 +2025,298.483312,10,467.100,42.800,6.7060,-466.000,-9.400,-31.100,466.000,9.400,-31.100,1.110e+05 +2025,298.839028,10,429.200,32.700,6.4070,-428.600,-15.400,-16.300,428.600,15.400,-16.300,6.477e+04 +2025,299.055217,10,418.700,36.100,7.6360,-418.700,-0.700,0.200,418.700,0.700,0.200,7.894e+04 +2025,299.111020,10,398.600,46.900,8.0160,-398.600,0.100,-8.100,398.600,-0.100,-8.100,1.332e+05 +2025,299.116845,10,421.200,43.500,7.4050,-417.700,11.600,-52.400,417.700,-11.600,-52.400,1.146e+05 +2025,299.274937,10,415.100,38.500,7.3450,-413.000,-22.600,-34.600,413.000,22.600,-34.600,8.979e+04 +2025,299.324880,10,401.400,45.300,7.4940,-398.800,-11.400,-44.800,398.800,11.400,-44.800,1.243e+05 +2025,299.410934,10,402.500,39.000,6.9200,-402.500,1.400,-0.200,402.500,-1.400,-0.200,9.213e+04 +2025,299.451594,10,413.100,40.000,7.0550,-412.700,-12.100,-16.000,412.700,12.100,-16.000,9.692e+04 +2025,299.453924,10,418.100,39.100,7.2590,-417.300,-17.500,-18.800,417.300,17.500,-18.800,9.261e+04 +2025,299.465536,10,396.800,42.400,7.4620,-396.600,-1.700,12.800,396.600,1.700,12.800,1.089e+05 +2025,299.474855,10,413.200,37.400,6.8570,-413.100,-3.700,4.200,413.100,3.700,4.200,8.473e+04 +2025,299.531824,10,403.100,36.500,6.3550,-403.000,-5.700,5.900,403.000,5.700,5.900,8.070e+04 +2025,299.555084,10,394.200,37.000,6.4370,-394.000,5.300,10.000,394.000,-5.300,10.000,8.293e+04 +2025,299.757295,10,376.500,39.800,6.5100,-375.600,24.700,7.700,375.600,-24.700,7.700,9.595e+04 +2025,299.795698,10,376.600,39.000,6.5810,-375.200,-23.000,-24.100,375.200,23.000,-24.100,9.213e+04 +2025,299.895621,10,377.300,33.800,6.1690,-375.500,-21.200,-30.700,375.500,21.200,-30.700,6.920e+04 +2025,299.915387,10,381.700,32.800,6.5780,-380.400,-24.200,-20.700,380.400,24.200,-20.700,6.517e+04 +2025,299.938648,10,409.800,34.500,6.7690,-408.500,-27.500,-18.700,408.500,27.500,-18.700,7.210e+04 +2025,299.970026,10,386.500,32.000,6.9290,-384.800,-30.700,-19.200,384.800,30.700,-19.200,6.203e+04 +2025,299.985169,10,371.400,37.600,7.2380,-369.800,-31.400,-14.400,369.800,31.400,-14.400,8.564e+04 +2025,300.004899,10,376.800,33.900,5.3880,-375.400,-24.800,-20.200,375.400,24.800,-20.200,6.961e+04 +2025,300.079268,10,365.100,36.100,7.3100,-363.500,-31.800,-11.300,363.500,31.800,-11.300,7.894e+04 +2025,300.196663,10,372.000,30.200,8.1900,-371.100,-20.200,-16.000,371.100,20.200,-16.000,5.525e+04 +2025,300.217631,10,365.600,31.000,8.5890,-364.800,-21.700,-12.800,364.800,21.700,-12.800,5.821e+04 +2025,300.275728,10,357.400,19.600,8.3640,-356.400,-22.800,-13.900,356.400,22.800,-13.900,2.327e+04 +2025,300.296659,10,359.400,20.400,7.9760,-358.100,-29.100,-6.300,358.100,29.100,-6.300,2.521e+04 +2025,300.300153,10,355.400,20.800,8.3850,-354.500,-25.600,-4.800,354.500,25.600,-4.800,2.621e+04 +2025,300.378017,10,355.600,29.700,9.6270,-355.100,-16.200,10.200,355.100,16.200,10.200,5.343e+04 +2025,300.451257,10,353.600,27.900,9.4600,-352.400,-22.600,18.800,352.400,22.600,18.800,4.715e+04 +2025,300.537238,10,367.200,21.300,18.1030,-366.600,-20.100,-0.700,366.600,20.100,-0.700,2.748e+04 +2025,300.539567,10,365.700,22.300,18.4770,-365.000,-21.800,-0.900,365.000,21.800,-0.900,3.012e+04 +2025,300.544227,10,365.900,23.800,19.0280,-365.100,-24.000,-0.400,365.100,24.000,-0.400,3.431e+04 +2025,300.545392,10,365.500,24.100,18.9510,-364.800,-23.100,-1.600,364.800,23.100,-1.600,3.518e+04 +2025,300.546557,10,364.100,23.200,18.3300,-363.400,-22.600,-1.100,363.400,22.600,-1.100,3.260e+04 +2025,300.551216,10,362.400,24.900,16.3530,-361.500,-24.100,2.100,361.500,24.100,2.100,3.756e+04 +2025,300.552381,10,364.500,25.100,17.5590,-363.700,-24.300,0.900,363.700,24.300,0.900,3.816e+04 +2025,300.589583,10,366.000,25.200,20.0110,-365.200,-23.200,-7.300,365.200,23.200,-7.300,3.847e+04 +2025,300.603525,10,366.300,25.700,18.4020,-365.100,-29.800,-7.300,365.100,29.800,-7.300,4.001e+04 +2025,300.629079,10,365.100,20.000,23.8080,-363.700,-31.600,-0.800,363.700,31.600,-0.800,2.423e+04 +2025,300.652340,10,354.400,28.200,12.6450,-352.200,-38.500,8.500,352.200,38.500,8.500,4.817e+04 +2025,300.653505,10,354.000,27.800,12.7790,-352.100,-34.100,13.600,352.100,34.100,13.600,4.681e+04 +2025,300.658164,10,355.700,28.100,12.5610,-353.300,-40.200,10.800,353.300,40.200,10.800,4.783e+04 +2025,300.666282,10,353.200,27.800,11.8490,-350.400,-43.300,10.000,350.400,43.300,10.000,4.681e+04 +2025,300.680223,10,360.900,27.700,12.0990,-358.800,-39.000,6.400,358.800,39.000,6.400,4.648e+04 +2025,300.713967,10,361.700,31.100,12.6280,-360.200,-32.400,5.100,360.200,32.400,5.100,5.859e+04 +2025,300.751133,10,362.600,31.700,13.0850,-360.900,-34.000,6.700,360.900,34.000,6.700,6.087e+04 +2025,300.767405,10,365.100,29.100,12.9460,-362.900,-39.600,-1.000,362.900,39.600,-1.000,5.129e+04 +2025,300.769734,10,363.200,28.600,13.5750,-360.500,-43.600,-1.500,360.500,43.600,-1.500,4.955e+04 +2025,300.775559,10,363.200,29.100,13.3010,-360.800,-41.200,-0.300,360.800,41.200,-0.300,5.129e+04 +2025,300.786006,10,365.500,31.300,12.7960,-363.700,-36.300,1.000,363.700,36.300,1.000,5.934e+04 +2025,300.788336,10,379.600,35.000,12.7790,-378.300,-30.100,5.500,378.300,30.100,5.500,7.420e+04 +2025,300.824373,10,372.400,34.300,10.4570,-370.400,-36.300,11.700,370.400,36.300,11.700,7.126e+04 +2025,300.842986,10,370.000,33.600,11.1500,-367.400,-42.400,-8.200,367.400,42.400,-8.200,6.839e+04 +2025,300.846469,10,370.500,32.600,11.0550,-368.000,-41.900,-10.600,368.000,41.900,-10.600,6.438e+04 +2025,300.928992,10,390.100,42.900,9.9370,-389.700,-13.700,-10.200,389.700,13.700,-10.200,1.115e+05 +2025,301.042893,10,377.500,38.700,9.5010,-376.000,-31.800,11.800,376.000,31.800,11.800,9.072e+04 +2025,301.048717,10,370.900,37.800,8.9770,-368.800,-20.700,33.400,368.800,20.700,33.400,8.655e+04 +2025,301.278885,10,452.500,42.800,11.3300,-450.200,41.400,-18.900,450.200,-41.400,-18.900,1.110e+05 +2025,301.342807,10,416.200,47.200,11.8260,-416.100,-6.100,-0.600,416.100,6.100,-0.600,1.349e+05 +2025,301.369526,10,417.000,45.800,11.8020,-416.600,-14.100,-11.600,416.600,14.100,-11.600,1.271e+05 +2025,301.390457,10,460.800,52.200,12.1320,-460.200,13.300,-21.300,460.200,-13.300,-21.300,1.651e+05 +2025,301.404399,10,419.500,43.000,11.8080,-419.100,-12.500,13.900,419.100,12.500,13.900,1.120e+05 +2025,301.442766,10,430.700,45.400,12.5230,-429.900,-23.900,13.200,429.900,23.900,13.200,1.249e+05 +2025,301.481134,10,423.900,48.100,15.1850,-422.300,35.500,-10.400,422.300,-35.500,-10.400,1.401e+05 +2025,301.483463,10,419.100,49.000,15.4490,-416.900,41.200,-10.000,416.900,-41.200,-10.000,1.454e+05 +2025,301.485793,10,427.200,46.300,14.9360,-426.700,-18.500,-10.100,426.700,18.500,-10.100,1.299e+05 +2025,301.488086,10,417.600,47.900,14.6020,-417.400,-11.300,-6.300,417.400,11.300,-6.300,1.390e+05 +2025,301.517135,10,411.700,47.200,13.8500,-411.400,9.700,11.300,411.400,-9.700,11.300,1.349e+05 +2025,301.518300,10,414.300,47.100,14.1640,-413.900,12.500,13.400,413.900,-12.500,13.400,1.344e+05 +2025,301.546183,10,420.700,49.900,13.5690,-420.400,-9.400,12.600,420.400,9.400,12.600,1.508e+05 +2025,301.588046,10,437.400,46.500,14.5000,-436.400,-28.200,-10.000,436.400,28.200,-10.000,1.310e+05 +2025,301.600859,10,437.600,46.700,14.7600,-436.500,-29.600,-9.900,436.500,29.600,-9.900,1.321e+05 +2025,301.754291,10,433.000,50.400,12.5290,-432.600,-19.200,-2.700,432.600,19.200,-2.700,1.539e+05 +2025,301.757786,10,422.300,50.400,11.9300,-422.100,-3.700,14.700,422.100,3.700,14.700,1.539e+05 +2025,301.760116,10,424.700,51.100,13.0190,-424.400,-4.000,15.100,424.400,4.000,15.100,1.582e+05 +2025,301.761280,10,424.700,52.800,12.7100,-424.400,-13.600,6.600,424.400,13.600,6.600,1.689e+05 +2025,301.770563,10,440.000,51.000,13.5010,-439.400,-23.600,4.500,439.400,23.600,4.500,1.576e+05 +2025,301.785669,10,422.800,70.000,12.7490,-422.200,21.900,-4.100,422.200,-21.900,-4.100,2.968e+05 +2025,301.810059,10,435.900,61.100,12.2840,-434.000,24.000,-32.300,434.000,-24.000,-32.300,2.261e+05 +2025,301.814718,10,438.500,53.700,13.1960,-435.400,40.300,-33.000,435.400,-40.300,-33.000,1.747e+05 +2025,301.824000,10,445.700,52.900,13.9900,-441.100,24.400,-59.100,441.100,-24.400,-59.100,1.695e+05 +2025,301.827495,10,426.900,52.100,14.2680,-424.000,33.900,-36.900,424.000,-33.900,-36.900,1.644e+05 +2025,301.841473,10,416.500,55.600,13.8450,-416.500,-0.200,2.400,416.500,0.200,2.400,1.873e+05 +2025,301.907724,10,427.800,48.800,13.2900,-426.900,-28.800,-1.000,426.900,28.800,-1.000,1.443e+05 +2025,302.269194,10,482.900,60.800,10.2250,-478.500,49.000,42.400,478.500,-49.000,42.400,2.239e+05 +2025,302.330786,10,502.300,62.800,9.8580,-497.700,19.200,-65.100,497.700,-19.200,-65.100,2.389e+05 +2025,302.416803,10,515.900,54.200,9.0840,-510.900,27.100,-66.700,510.900,-27.100,-66.700,1.779e+05 +2025,302.526082,10,499.700,57.500,9.0100,-496.600,34.700,44.000,496.600,-34.700,44.000,2.003e+05 +2025,302.577226,10,514.100,52.200,7.1330,-512.600,-24.700,-30.600,512.600,24.700,-30.600,1.651e+05 +2025,302.600451,10,523.600,57.500,7.4740,-522.200,-6.800,37.200,522.200,6.800,37.200,2.003e+05 +2025,302.627206,10,496.600,52.900,7.7460,-495.900,-2.200,26.000,495.900,2.200,26.000,1.695e+05 +2025,303.065409,10,541.800,70.600,9.4420,-537.000,67.200,-24.700,537.000,-67.200,-24.700,3.019e+05 +2025,303.066574,10,534.000,72.900,9.9050,-530.000,60.600,-22.600,530.000,-60.600,-22.600,3.219e+05 +2025,303.067739,10,529.600,71.500,8.9690,-525.600,61.800,-20.700,525.600,-61.800,-20.700,3.097e+05 +2025,303.140980,10,563.500,64.700,6.8110,-558.600,62.800,-39.300,558.600,-62.800,-39.300,2.536e+05 +2025,303.581478,10,579.400,69.000,6.1740,-579.400,-2.700,-6.800,579.400,2.700,-6.800,2.884e+05 +2025,303.787220,10,568.300,73.500,5.3410,-567.800,7.800,22.700,567.800,-7.800,22.700,3.272e+05 +2025,303.839530,10,618.000,76.900,4.7480,-613.100,44.800,-63.600,613.100,-44.800,-63.600,3.582e+05 +2025,304.424251,10,684.200,79.500,2.1370,-671.500,103.700,80.200,671.500,-103.700,80.200,3.828e+05 +2025,304.426581,10,692.200,66.800,1.6020,-676.600,111.700,93.900,676.600,-111.700,93.900,2.703e+05 +2025,305.624092,10,559.300,62.200,2.6670,-558.100,-36.900,2.800,558.100,36.900,2.800,2.344e+05 +2025,305.639235,10,546.900,61.200,2.8730,-546.300,-22.500,-11.500,546.300,22.500,-11.500,2.269e+05 +2025,306.300583,10,571.800,61.700,1.9590,-571.100,-28.000,-3.800,571.100,28.000,-3.800,2.306e+05 +2025,306.440076,10,545.000,55.500,2.1190,-544.300,-21.900,-18.700,544.300,21.900,-18.700,1.866e+05 +2025,306.612075,10,541.600,51.900,2.9130,-539.700,-43.600,-12.900,539.700,43.600,-12.900,1.632e+05 +2025,306.712034,10,517.300,44.400,3.3260,-514.800,-50.400,-2.700,514.800,50.400,-2.700,1.194e+05 +2025,306.744613,10,518.500,47.200,3.6430,-516.000,-49.400,-14.600,516.000,49.400,-14.600,1.349e+05 +2025,306.823605,10,511.000,78.600,3.9700,-507.000,-56.700,-28.000,507.000,56.700,-28.000,3.742e+05 +2025,306.839877,10,503.200,42.400,3.0480,-500.500,-51.300,10.500,500.500,51.300,10.500,1.089e+05 +2025,306.923601,10,523.200,40.800,4.7380,-517.500,-55.800,-52.900,517.500,55.800,-52.900,1.008e+05 +2025,306.938708,10,530.000,39.700,5.0480,-525.500,-40.200,-56.500,525.500,40.200,-56.500,9.547e+04 +2025,306.978168,10,508.800,38.600,4.5820,-504.100,-60.200,-33.400,504.100,60.200,-33.400,9.025e+04 +2025,307.772057,10,441.600,56.400,4.1160,-438.500,37.500,36.500,438.500,-37.500,36.500,1.927e+05 +2025,308.876237,10,379.900,18.900,2.9760,-378.400,-32.400,-8.500,378.400,32.400,-8.500,2.164e+04 +2025,308.878567,10,385.500,21.800,3.6070,-383.600,-35.800,-13.100,383.600,35.800,-13.100,2.879e+04 +2025,308.889014,10,385.300,17.900,3.2380,-383.200,-37.200,-15.500,383.200,37.200,-15.500,1.941e+04 +2025,308.908780,10,390.800,19.600,2.6620,-389.300,-32.100,-10.600,389.300,32.100,-10.600,2.327e+04 +2025,308.911110,10,368.100,20.300,3.1820,-366.700,-30.200,-11.500,366.700,30.200,-11.500,2.496e+04 +2025,308.937829,10,382.800,15.600,3.3390,-382.300,-19.100,-1.500,382.300,19.100,-1.500,1.474e+04 +2025,308.948277,10,394.600,16.600,3.9020,-394.400,-12.500,-0.900,394.400,12.500,-0.900,1.669e+04 +2025,308.964548,10,369.400,17.000,2.9450,-368.200,-29.100,-6.100,368.200,29.100,-6.100,1.751e+04 +2025,308.971501,10,373.700,19.100,3.0080,-372.900,-24.400,-1.500,372.900,24.400,-1.500,2.210e+04 +2025,308.980820,10,393.600,19.200,3.8080,-393.100,-20.100,-4.200,393.100,20.100,-4.200,2.233e+04 +2025,308.991304,10,386.200,19.900,4.0780,-385.000,-27.300,-11.800,385.000,27.300,-11.800,2.399e+04 +2025,309.028507,10,394.500,16.500,4.7850,-394.200,-15.800,-7.300,394.200,15.800,-7.300,1.649e+04 +2025,309.037789,10,361.800,16.600,3.9840,-360.700,-7.800,-26.600,360.700,7.800,-26.600,1.669e+04 +2025,309.041284,10,377.000,16.900,4.6670,-376.100,-21.100,-16.600,376.100,21.100,-16.600,1.730e+04 +2025,309.071497,10,376.800,18.500,5.4170,-375.700,-22.000,-19.400,375.700,22.000,-19.400,2.073e+04 +2025,309.086604,10,372.200,18.700,5.1170,-370.800,-24.500,-20.600,370.800,24.500,-20.600,2.118e+04 +2025,309.104041,10,370.900,20.300,4.9020,-368.600,-28.500,-29.900,368.600,28.500,-29.900,2.496e+04 +2025,309.107535,10,380.400,18.200,5.1280,-378.300,-29.800,-25.800,378.300,29.800,-25.800,2.006e+04 +2025,309.141207,10,386.900,20.800,5.4990,-385.500,-25.400,-22.100,385.500,25.400,-22.100,2.621e+04 +2025,309.143537,10,381.700,22.400,5.8380,-381.000,-19.100,-14.900,381.000,19.100,-14.900,3.039e+04 +2025,309.144702,10,380.800,21.000,5.6340,-379.900,-20.400,-15.600,379.900,20.400,-15.600,2.671e+04 +2025,309.148196,10,374.600,20.100,5.3360,-374.100,-16.400,-12.800,374.100,16.400,-12.800,2.447e+04 +2025,309.149361,10,383.400,18.800,4.9830,-382.700,-17.800,-13.000,382.700,17.800,-13.000,2.141e+04 +2025,309.151691,10,377.100,19.500,5.2460,-376.600,-13.100,-13.500,376.600,13.100,-13.500,2.303e+04 +2025,309.166798,10,370.000,18.600,5.3030,-369.400,-16.900,-13.400,369.400,16.900,-13.400,2.096e+04 +2025,309.170292,10,367.600,19.900,5.3490,-366.400,-21.500,-19.800,366.400,21.500,-19.800,2.399e+04 +2025,309.186564,10,378.800,22.600,6.7510,-378.300,-10.900,-15.300,378.300,10.900,-15.300,3.094e+04 +2025,309.200506,10,367.600,21.700,6.9610,-366.300,-19.700,-24.500,366.300,19.700,-24.500,2.852e+04 +2025,309.216778,10,381.200,22.500,7.1660,-379.600,-23.400,-26.100,379.600,23.400,-26.100,3.067e+04 +2025,309.226060,10,369.000,17.700,6.1730,-367.300,-28.600,-20.700,367.300,28.600,-20.700,1.898e+04 +2025,309.234214,10,365.300,18.800,5.9940,-364.400,-19.200,-16.600,364.400,19.200,-16.600,2.141e+04 +2025,309.262135,10,370.500,21.700,6.8660,-369.400,-19.800,-20.800,369.400,19.800,-20.800,2.852e+04 +2025,309.263299,10,370.700,20.900,6.8360,-369.200,-24.500,-22.700,369.200,24.500,-22.700,2.646e+04 +2025,309.281864,10,365.500,22.400,7.0580,-364.600,-17.700,-19.000,364.600,17.700,-19.000,3.039e+04 +2025,309.287689,10,356.000,23.700,6.9400,-354.500,-17.900,-26.900,354.500,17.900,-26.900,3.402e+04 +2025,309.309748,10,368.900,24.000,7.4060,-368.000,-17.000,-19.100,368.000,17.000,-19.100,3.489e+04 +2025,309.319031,10,365.000,24.300,6.9840,-364.000,-17.800,-19.400,364.000,17.800,-19.400,3.577e+04 +2025,309.322525,10,365.800,23.600,7.2410,-365.000,-16.100,-17.400,365.000,16.100,-17.400,3.374e+04 +2025,309.323690,10,364.400,24.000,7.4000,-363.500,-18.200,-18.200,363.500,18.200,-18.200,3.489e+04 +2025,309.337669,10,366.200,24.800,7.4250,-365.600,-14.300,-14.900,365.600,14.300,-14.900,3.726e+04 +2025,309.342292,10,361.800,23.900,7.4500,-360.500,-18.900,-23.700,360.500,18.900,-23.700,3.460e+04 +2025,309.350445,10,357.400,24.800,7.2060,-356.200,-14.500,-25.000,356.200,14.500,-25.000,3.726e+04 +2025,309.352739,10,357.700,24.100,7.6280,-356.500,-16.300,-25.200,356.500,16.300,-25.200,3.518e+04 +2025,309.360893,10,358.100,24.000,6.9800,-357.200,-15.300,-19.400,357.200,15.300,-19.400,3.489e+04 +2025,309.366717,10,358.600,23.800,7.9950,-357.400,-20.700,-21.200,357.400,20.700,-21.200,3.431e+04 +2025,309.369047,10,357.800,23.300,7.1630,-356.700,-18.300,-22.100,356.700,18.300,-22.100,3.288e+04 +2025,309.385318,10,351.400,24.400,7.7910,-350.300,-15.700,-24.000,350.300,15.700,-24.000,3.606e+04 +2025,309.391106,10,352.100,23.000,7.4350,-350.700,-18.100,-25.300,350.700,18.100,-25.300,3.204e+04 +2025,309.395766,10,350.200,22.200,7.3630,-349.000,-16.800,-23.800,349.000,16.800,-23.800,2.985e+04 +2025,309.415568,10,350.600,23.900,7.4970,-349.300,-16.900,-25.000,349.300,16.900,-25.000,3.460e+04 +2025,309.428309,10,351.700,25.000,7.3190,-350.400,-17.300,-24.200,350.400,17.300,-24.200,3.786e+04 +2025,309.434133,10,351.700,24.500,7.0560,-350.500,-16.900,-23.900,350.500,16.900,-23.900,3.636e+04 +2025,309.442251,10,355.900,25.500,7.7520,-354.000,-11.100,-34.200,354.000,11.100,-34.200,3.939e+04 +2025,309.448075,10,361.000,25.300,7.9210,-359.200,-9.600,-33.900,359.200,9.600,-33.900,3.877e+04 +2025,309.456192,10,353.100,26.800,7.8840,-351.300,-15.900,-31.800,351.300,15.900,-31.800,4.351e+04 +2025,309.462017,10,353.000,26.800,7.6770,-351.600,-13.700,-27.800,351.600,13.700,-27.800,4.351e+04 +2025,309.464346,10,353.000,27.900,8.4310,-351.500,-12.700,-29.900,351.500,12.700,-29.900,4.715e+04 +2025,309.475959,10,355.000,26.400,8.0030,-353.200,-16.500,-31.800,353.200,16.500,-31.800,4.222e+04 +2025,309.480618,10,358.600,26.300,8.1410,-356.900,-5.000,-33.900,356.900,5.000,-33.900,4.190e+04 +2025,309.484113,10,354.500,26.700,7.7330,-352.800,-10.900,-33.000,352.800,10.900,-33.000,4.318e+04 +2025,309.489937,10,353.700,27.400,7.7630,-352.400,-15.200,-26.600,352.400,15.200,-26.600,4.548e+04 +2025,309.499219,10,356.400,27.100,7.9950,-354.700,-14.300,-32.400,354.700,14.300,-32.400,4.449e+04 +2025,309.507337,10,355.200,26.000,7.8640,-353.600,-9.200,-33.000,353.600,9.200,-33.000,4.095e+04 +2025,309.514326,10,356.200,26.200,7.9920,-354.600,-6.400,-32.600,354.600,6.400,-32.600,4.158e+04 +2025,309.518986,10,351.200,27.000,7.9450,-350.100,-10.100,-25.700,350.100,10.100,-25.700,4.416e+04 +2025,309.562013,10,345.800,27.700,8.4240,-344.500,-13.200,-27.200,344.500,13.200,-27.200,4.648e+04 +2025,309.584072,10,346.800,27.700,8.6440,-345.200,-12.500,-30.700,345.200,12.500,-30.700,4.648e+04 +2025,309.622404,10,344.800,28.100,8.1750,-343.500,-19.500,-21.800,343.500,19.500,-21.800,4.783e+04 +2025,309.685197,10,370.800,25.100,7.1210,-369.900,-24.000,-10.300,369.900,24.000,-10.300,3.816e+04 +2025,309.686362,10,371.300,24.800,7.3650,-370.400,-24.100,-8.800,370.400,24.100,-8.800,3.726e+04 +2025,309.703799,10,359.300,23.200,6.9610,-357.800,-27.400,-17.000,357.800,27.400,-17.000,3.260e+04 +2025,309.718905,10,369.700,27.600,7.5630,-369.600,-9.600,-4.900,369.600,9.600,-4.900,4.614e+04 +2025,309.734012,10,367.100,24.900,6.9980,-366.500,-20.600,-7.000,366.500,20.600,-7.000,3.756e+04 +2025,309.742166,10,375.100,27.400,7.2260,-374.100,-25.200,-12.500,374.100,25.200,-12.500,4.548e+04 +2025,309.794440,10,400.000,38.600,11.7210,-395.400,-16.900,-58.000,395.400,16.900,-58.000,9.025e+04 +2025,309.802557,10,386.700,34.800,13.5820,-385.600,-16.900,-24.200,385.600,16.900,-24.200,7.336e+04 +2025,309.833972,10,369.100,38.800,12.9020,-367.300,31.100,-19.600,367.300,-31.100,-19.600,9.119e+04 +2025,309.847878,10,384.400,33.500,12.7610,-384.200,-10.000,3.700,384.200,10.000,3.700,6.798e+04 +2025,309.937390,10,410.200,41.100,20.1000,-405.900,-58.000,-9.400,405.900,58.000,-9.400,1.023e+05 +2025,309.960651,10,400.000,41.700,19.9270,-398.600,-34.100,-1.400,398.600,34.100,-1.400,1.053e+05 +2025,309.987370,10,406.100,43.900,20.1530,-403.200,-48.700,-2.000,403.200,48.700,-2.000,1.167e+05 +2025,309.988535,10,414.000,39.400,20.0970,-411.800,-42.500,-0.500,411.800,42.500,-0.500,9.403e+04 +2025,309.992030,10,408.000,53.800,21.1860,-405.600,-44.100,-3.800,405.600,44.100,-3.800,1.753e+05 +2025,309.999019,10,405.000,43.500,22.5230,-401.600,-52.500,-3.400,401.600,52.500,-3.400,1.146e+05 +2025,310.042010,10,414.600,50.200,19.1760,-410.700,-56.200,-7.800,410.700,56.200,-7.800,1.526e+05 +2025,310.043175,10,417.500,48.800,19.1140,-413.600,-55.600,-12.800,413.600,55.600,-12.800,1.443e+05 +2025,310.097814,10,399.000,49.700,20.9210,-396.400,-45.400,-5.100,396.400,45.400,-5.100,1.496e+05 +2025,310.098979,10,409.500,43.100,20.7110,-406.700,-46.800,-6.200,406.700,46.800,-6.200,1.125e+05 +2025,310.158205,10,410.000,54.500,19.9200,-406.000,-57.600,-2.300,406.000,57.600,-2.300,1.799e+05 +2025,310.207020,10,416.300,58.400,21.3430,-409.800,-71.100,-16.000,409.800,71.100,-16.000,2.066e+05 +2025,310.265191,10,437.000,62.700,26.3980,-426.200,-76.500,-58.600,426.200,76.500,-58.600,2.381e+05 +2025,310.295368,10,480.000,49.500,31.9490,-478.800,17.100,-29.400,478.800,-17.100,-29.400,1.484e+05 +2025,310.484804,10,546.300,66.500,6.6080,-545.600,-11.900,-24.800,545.600,11.900,-24.800,2.679e+05 +2025,310.501076,10,532.200,58.000,6.8350,-531.700,-19.500,10.600,531.700,19.500,10.600,2.038e+05 +2025,310.508029,10,529.500,58.500,6.7910,-529.000,-21.900,9.400,529.000,21.900,9.400,2.073e+05 +2025,310.542938,10,542.300,58.100,6.2050,-540.400,-43.200,12.600,540.400,43.200,12.600,2.045e+05 +2025,310.556880,10,536.600,54.500,6.2610,-534.100,-52.100,5.300,534.100,52.100,5.300,1.799e+05 +2025,310.566199,10,537.100,56.800,5.8740,-535.400,-42.700,-0.700,535.400,42.700,-0.700,1.954e+05 +2025,310.577811,10,548.400,55.500,6.4570,-546.000,-51.100,2.100,546.000,51.100,2.100,1.866e+05 +2025,310.584764,10,541.300,52.300,6.0910,-539.200,-48.400,-1.300,539.200,48.400,-1.300,1.657e+05 +2025,310.587094,10,548.400,53.600,6.1910,-546.600,-43.800,3.800,546.600,43.800,3.800,1.740e+05 +2025,310.589423,10,547.500,50.800,6.2090,-545.500,-45.700,2.700,545.500,45.700,2.700,1.563e+05 +2025,310.591753,10,548.700,52.800,6.2370,-547.300,-39.100,2.400,547.300,39.100,2.400,1.689e+05 +2025,310.595248,10,543.300,53.900,6.2460,-541.800,-39.200,6.900,541.800,39.200,6.900,1.760e+05 +2025,310.604567,10,541.200,50.500,6.1830,-539.500,-42.200,3.400,539.500,42.200,3.400,1.545e+05 +2025,310.611519,10,543.700,50.900,5.7980,-541.800,-46.200,4.800,541.800,46.200,4.800,1.569e+05 +2025,310.630120,10,529.700,52.300,5.4960,-527.900,-43.400,-5.600,527.900,43.400,-5.600,1.657e+05 +2025,310.631285,10,538.000,48.900,4.6710,-536.800,-35.600,-5.100,536.800,35.600,-5.100,1.448e+05 +2025,310.651015,10,546.700,57.500,3.7640,-544.500,-48.800,8.800,544.500,48.800,8.800,2.003e+05 +2025,310.732410,10,628.400,58.800,4.5710,-627.100,-9.500,39.400,627.100,9.500,39.400,2.094e+05 +2025,310.741692,10,641.800,64.700,5.2210,-639.800,2.600,49.400,639.800,-2.600,49.400,2.536e+05 +2025,310.747516,10,625.000,62.900,5.6140,-623.700,-20.800,34.300,623.700,20.800,34.300,2.397e+05 +2025,310.748681,10,622.100,64.600,5.6490,-621.100,-15.500,31.200,621.100,15.500,31.200,2.528e+05 +2025,310.762623,10,613.600,64.500,5.3940,-612.000,-8.100,44.100,612.000,8.100,44.100,2.520e+05 +2025,310.830003,10,640.900,75.200,9.4460,-638.700,-35.200,39.100,638.700,35.200,39.100,3.425e+05 +2025,310.875287,10,619.800,69.900,8.7950,-619.200,-18.800,-21.600,619.200,18.800,-21.600,2.960e+05 +2025,310.877617,10,620.600,74.100,9.1270,-619.900,-12.900,-25.600,619.900,12.900,-25.600,3.326e+05 +2025,310.890431,10,641.100,71.200,8.9300,-640.500,-15.500,-21.800,640.500,15.500,-21.800,3.071e+05 +2025,310.960213,10,600.200,72.500,7.4250,-599.800,22.000,-9.400,599.800,-22.000,-9.400,3.184e+05 +2025,310.975320,10,612.200,71.800,7.8650,-612.100,0.400,-11.800,612.100,-0.400,-11.800,3.123e+05 +2025,311.028758,10,686.800,74.600,6.2160,-685.500,-3.700,41.800,685.500,3.700,41.800,3.371e+05 +2025,311.112483,10,687.300,82.000,7.1490,-686.000,31.300,27.400,686.000,-31.300,27.400,4.073e+05 +2025,311.154091,10,691.900,68.400,6.2810,-691.900,3.700,1.300,691.900,-3.700,1.300,2.834e+05 +2025,311.288451,10,797.200,109.400,7.4270,-791.400,80.000,54.000,791.400,-80.000,54.000,7.250e+05 +2025,311.294093,10,764.400,122.500,8.8220,-761.800,53.200,32.500,761.800,-53.200,32.500,9.090e+05 +2025,311.371047,10,792.200,95.600,8.4680,-788.900,27.800,-66.700,788.900,-27.800,-66.700,5.536e+05 +2025,311.372139,10,798.100,92.200,8.5450,-797.200,14.600,-34.500,797.200,-14.600,-34.500,5.149e+05 +2025,311.376689,10,816.700,87.000,7.1900,-813.700,16.900,-67.700,813.700,-16.900,-67.700,4.585e+05 +2025,311.384588,10,811.100,83.000,6.7070,-807.300,10.100,-77.500,807.300,-10.100,-77.500,4.173e+05 +2025,311.388010,10,808.700,81.600,6.5050,-805.400,0.400,-73.000,805.400,-0.400,-73.000,4.033e+05 +2025,311.394781,10,810.600,83.700,7.0870,-809.800,11.100,-33.600,809.800,-11.100,-33.600,4.244e+05 +2025,311.435478,10,830.300,75.700,4.6000,-829.600,-14.300,-30.600,829.600,14.300,-30.600,3.471e+05 +2025,311.456956,10,812.100,76.100,5.0510,-810.700,-31.400,-35.800,810.700,31.400,-35.800,3.508e+05 +2025,311.472754,10,798.400,70.300,5.1650,-797.100,-40.200,-20.400,797.100,40.200,-20.400,2.994e+05 +2025,311.473883,10,799.700,74.800,5.3310,-798.500,-39.700,-18.600,798.500,39.700,-18.600,3.389e+05 +2025,311.476140,10,801.000,75.900,5.1910,-799.100,-46.000,-31.100,799.100,46.000,-31.100,3.490e+05 +2025,311.477304,10,801.600,74.400,5.1520,-799.700,-47.000,-28.300,799.700,47.000,-28.300,3.353e+05 +2025,311.497617,10,796.400,68.200,5.4420,-794.400,-48.300,-29.500,794.400,48.300,-29.500,2.817e+05 +2025,311.499910,10,796.600,67.400,5.4090,-794.500,-52.600,-24.700,794.500,52.600,-24.700,2.752e+05 +2025,311.505552,10,797.100,69.600,5.5290,-794.800,-52.500,-31.600,794.800,52.500,-31.600,2.934e+05 +2025,311.507809,10,794.200,69.400,5.4400,-791.600,-53.100,-35.500,791.600,53.100,-35.500,2.917e+05 +2025,311.514617,10,777.100,68.100,5.4430,-774.200,-56.900,-35.300,774.200,56.900,-35.300,2.809e+05 +2025,311.515745,10,771.400,70.300,5.5760,-768.300,-57.100,-39.200,768.300,57.100,-39.200,2.994e+05 +2025,311.538314,10,784.200,69.900,5.6350,-780.000,-61.300,-52.700,780.000,61.300,-52.700,2.960e+05 +2025,311.541700,10,782.300,69.000,4.9450,-780.400,-52.100,-17.800,780.400,52.100,-17.800,2.884e+05 +2025,311.542828,10,782.000,67.000,5.2070,-778.700,-60.200,-40.700,778.700,60.200,-40.700,2.719e+05 +2025,311.567764,10,775.200,65.400,5.0900,-771.300,-56.800,-51.700,771.300,56.800,-51.700,2.591e+05 +2025,311.576755,10,776.200,64.000,4.8790,-772.500,-57.700,-49.600,772.500,57.700,-49.600,2.481e+05 +2025,311.577883,10,776.500,64.600,5.1770,-772.400,-65.300,-45.200,772.400,65.300,-45.200,2.528e+05 +2025,311.579048,10,771.700,62.200,5.1640,-768.000,-64.900,-39.600,768.000,64.900,-39.600,2.344e+05 +2025,311.640167,10,762.900,58.800,4.2680,-760.800,-51.500,-24.400,760.800,51.500,-24.400,2.094e+05 +2025,311.645810,10,757.500,57.900,4.4220,-756.500,-34.300,-18.600,756.500,34.300,-18.600,2.031e+05 +2025,311.687635,10,764.200,48.200,3.5190,-763.000,-37.800,-18.400,763.000,37.800,-18.400,1.407e+05 +2025,311.692185,10,767.000,49.200,4.0540,-765.600,-41.000,-21.100,765.600,41.000,-21.100,1.466e+05 +2025,311.697828,10,767.700,50.500,3.9770,-766.600,-38.100,-14.300,766.600,38.100,-14.300,1.545e+05 +2025,311.714791,10,759.800,48.200,3.8510,-758.600,-35.000,-22.800,758.600,35.000,-22.800,1.407e+05 +2025,311.715919,10,759.000,47.800,3.9790,-757.900,-34.300,-22.000,757.900,34.300,-22.000,1.384e+05 +2025,311.741874,10,750.100,46.500,5.0680,-748.400,-45.000,-23.200,748.400,45.000,-23.200,1.310e+05 +2025,311.755415,10,747.400,48.600,5.7460,-745.600,-47.200,-20.200,745.600,47.200,-20.200,1.431e+05 +2025,311.757636,10,747.800,49.100,5.3510,-745.800,-48.400,-26.400,745.800,48.400,-26.400,1.460e+05 +2025,311.761057,10,742.500,48.900,5.8290,-740.500,-49.300,-21.400,740.500,49.300,-21.400,1.448e+05 +2025,311.784791,10,724.200,45.400,7.0760,-723.400,-32.000,-14.300,723.400,32.000,-14.300,1.249e+05 +2025,311.817553,10,710.300,35.600,7.4030,-710.100,-2.500,16.400,710.100,2.500,16.400,7.677e+04 +2025,311.825489,10,716.600,37.600,6.5210,-716.300,-13.400,15.200,716.300,13.400,15.200,8.564e+04 +2025,311.844709,10,713.500,39.100,6.9350,-713.300,-14.700,3.900,713.300,14.700,3.900,9.261e+04 +2025,311.851516,10,709.900,39.200,6.9730,-709.500,-23.400,3.100,709.500,23.400,3.100,9.308e+04 +2025,311.852608,10,709.200,36.100,7.8200,-708.800,-24.500,3.900,708.800,24.500,3.900,7.894e+04 +2025,311.865167,10,699.000,38.500,8.3530,-698.600,-22.200,-8.100,698.600,22.200,-8.100,8.979e+04 +2025,311.869827,10,695.900,37.500,7.6190,-695.400,-25.900,-2.800,695.400,25.900,-2.800,8.518e+04 +2025,311.877944,10,699.000,33.000,8.2320,-698.800,-19.100,-3.300,698.800,19.100,-3.300,6.596e+04 +2025,311.880274,10,695.500,32.600,7.9570,-695.000,-23.000,-13.500,695.000,23.000,-13.500,6.438e+04 +2025,311.908049,10,696.100,32.900,8.5050,-695.700,-21.400,9.400,695.700,21.400,9.400,6.557e+04 +2025,311.909214,10,693.300,29.800,8.5030,-692.900,-17.700,15.800,692.900,17.700,15.800,5.379e+04 +2025,311.964909,10,659.500,44.400,4.4040,-659.500,-3.200,-9.000,659.500,3.200,-9.000,1.194e+05 +2025,311.966074,10,662.800,44.600,4.1670,-662.800,-9.400,-4.300,662.800,9.400,-4.300,1.205e+05 +2025,311.974191,10,655.200,30.800,3.2750,-654.800,-9.800,-21.900,654.800,9.800,-21.900,5.746e+04 +2025,311.990463,10,636.000,38.100,7.3430,-635.800,7.800,15.500,635.800,-7.800,15.500,8.793e+04 +2025,311.998581,10,648.200,35.000,4.8470,-648.200,-1.600,4.500,648.200,1.600,4.500,7.420e+04 +2025,312.005533,10,656.100,41.800,4.3800,-653.800,8.000,54.700,653.800,-8.000,54.700,1.058e+05 +2025,312.014852,10,648.000,18.700,3.5790,-647.300,22.300,20.000,647.300,-22.300,20.000,2.118e+04 +2025,312.032252,10,634.400,26.700,3.6550,-632.600,34.200,33.700,632.600,-34.200,33.700,4.318e+04 +2025,312.040406,10,636.500,28.700,3.8830,-633.300,38.200,51.600,633.300,-38.200,51.600,4.989e+04 +2025,312.042700,10,621.700,30.600,6.3270,-618.600,44.800,42.500,618.600,-44.800,42.500,5.672e+04 +2025,312.043865,10,622.700,27.100,5.5170,-619.900,43.400,38.500,619.900,-43.400,38.500,4.449e+04 +2025,312.053183,10,614.400,17.800,3.9460,-612.400,46.200,17.100,612.400,-46.200,17.100,1.919e+04 +2025,312.064796,10,631.800,18.200,4.3420,-631.600,13.200,6.900,631.600,-13.200,6.900,2.006e+04 +2025,312.077573,10,664.300,45.000,7.7290,-664.300,3.600,7.900,664.300,-3.600,7.900,1.227e+05 +2025,312.085690,10,658.500,33.000,6.0280,-658.500,-0.700,-7.200,658.500,0.700,-7.200,6.596e+04 +2025,312.481999,10,668.400,72.500,4.1980,-666.200,-22.100,49.800,666.200,22.100,49.800,3.184e+05 +2025,312.542427,10,660.500,66.200,3.6570,-660.400,-4.600,12.800,660.400,4.600,12.800,2.655e+05 +2025,312.557534,10,658.100,68.200,3.6520,-657.100,34.300,8.400,657.100,-34.300,8.400,2.817e+05 +2025,312.572641,10,647.800,67.300,3.3060,-647.700,11.400,1.000,647.700,-11.400,1.000,2.744e+05 +2025,312.613302,10,644.400,65.400,3.0890,-643.500,33.300,-8.300,643.500,-33.300,-8.300,2.591e+05 +2025,312.721416,10,628.300,62.600,2.9350,-628.200,10.000,-9.900,628.200,-10.000,-9.900,2.374e+05 +2025,312.912017,10,604.500,59.000,3.2060,-604.400,0.900,-10.200,604.400,-0.900,-10.200,2.109e+05 +2025,312.946890,10,616.700,56.900,3.6640,-616.700,3.000,8.100,616.700,-3.000,8.100,1.961e+05 +2025,312.955008,10,611.800,55.000,3.1990,-611.800,6.000,1.800,611.800,-6.000,1.800,1.832e+05 +2025,313.170071,10,577.600,57.200,3.6360,-576.300,-10.300,-36.800,576.300,10.300,-36.800,1.982e+05 +2025,313.181683,10,570.800,57.800,4.1510,-569.200,11.300,-41.100,569.200,-11.300,-41.100,2.024e+05 +2025,313.189800,10,579.300,55.900,3.6530,-579.200,3.400,-7.900,579.200,-3.400,-7.900,1.893e+05 +2025,313.200284,10,591.100,51.400,3.2820,-590.800,14.600,-6.400,590.800,-14.600,-6.400,1.600e+05 +2025,313.256052,10,590.200,49.400,3.1620,-590.100,6.000,-4.000,590.100,-6.000,-4.000,1.478e+05 +2025,313.464090,10,538.300,47.200,3.6820,-538.000,9.200,-15.600,538.000,-9.200,-15.600,1.349e+05 +2025,313.490809,10,543.900,46.000,3.5640,-543.500,4.600,-19.500,543.500,-4.600,-19.500,1.282e+05 +2025,313.495469,10,545.200,46.900,3.7020,-544.500,22.300,-15.000,544.500,-22.300,-15.000,1.332e+05 +2025,313.609371,10,526.100,41.900,4.2360,-525.800,-8.900,-13.700,525.800,8.900,-13.700,1.063e+05 +2025,313.615159,10,533.100,48.700,5.0010,-532.800,-5.300,-16.400,532.800,5.300,-16.400,1.437e+05 +2025,313.617488,10,536.600,47.100,4.1210,-536.500,-2.400,-10.600,536.500,2.400,-10.600,1.344e+05 +2025,313.624478,10,542.400,42.500,3.9410,-542.200,-4.000,-14.900,542.200,4.000,-14.900,1.094e+05 +2025,313.640749,10,534.500,42.000,4.1930,-534.300,-0.400,-13.000,534.300,0.400,-13.000,1.069e+05 +2025,313.655856,10,509.100,50.800,4.9800,-508.800,4.200,-19.100,508.800,-4.200,-19.100,1.563e+05 +2025,313.672128,10,530.100,40.500,5.2080,-529.800,3.600,-17.300,529.800,-3.600,-17.300,9.936e+04 +2025,313.716319,10,502.900,32.100,5.4130,-502.900,6.100,-4.800,502.900,-6.100,-4.800,6.242e+04 +2025,313.718649,10,500.800,29.400,5.6540,-500.800,-0.500,-5.100,500.800,0.500,-5.100,5.236e+04 +2025,313.722144,10,503.200,36.200,5.6460,-502.800,16.400,-6.800,502.800,-16.400,-6.800,7.938e+04 +2025,313.732591,10,506.700,37.300,5.1800,-506.200,4.200,-23.500,506.200,-4.200,-23.500,8.428e+04 +2025,313.734921,10,502.500,31.300,5.2970,-502.400,-2.700,-4.700,502.400,2.700,-4.700,5.934e+04 +2025,313.737250,10,502.500,32.200,5.8140,-502.500,2.400,-6.400,502.500,-2.400,-6.400,6.281e+04 +2025,313.765134,10,519.900,35.400,7.2940,-519.700,11.000,-8.700,519.700,-11.000,-8.700,7.591e+04 +2025,313.783699,10,522.300,42.500,8.1300,-521.500,-15.900,-24.500,521.500,15.900,-24.500,1.094e+05 +2025,313.787194,10,520.400,38.600,8.3160,-519.600,-22.700,-18.500,519.600,22.700,-18.500,9.025e+04 +2025,313.799971,10,518.900,37.200,7.1430,-518.500,-13.200,-16.200,518.500,13.200,-16.200,8.382e+04 +2025,313.869717,10,554.700,56.900,6.2610,-553.100,12.700,-38.900,553.100,-12.700,-38.900,1.961e+05 +2025,313.895308,10,552.300,59.100,6.7200,-549.300,8.700,-57.000,549.300,-8.700,-57.000,2.116e+05 +2025,313.910415,10,542.000,58.300,7.0140,-539.800,8.800,-47.400,539.800,-8.800,-47.400,2.059e+05 +2025,313.911580,10,540.200,61.400,6.8750,-538.800,12.700,-36.500,538.800,-12.700,-36.500,2.284e+05 +2025,313.939464,10,541.300,54.800,7.1000,-540.900,-0.900,-21.100,540.900,0.900,-21.100,1.819e+05 +2025,313.949911,10,536.600,53.200,6.7940,-536.400,3.700,-15.400,536.400,-3.700,-15.400,1.714e+05 +2025,313.956900,10,549.600,53.300,6.3300,-549.300,9.300,-11.700,549.300,-9.300,-11.700,1.721e+05 +2025,313.961524,10,539.700,54.900,6.8550,-539.600,2.900,-10.400,539.600,-2.900,-10.400,1.826e+05 +2025,313.968513,10,549.400,56.800,6.7350,-549.300,2.400,-6.500,549.300,-2.400,-6.500,1.954e+05 +2025,313.976630,10,559.000,50.900,6.1770,-559.000,3.900,-8.600,559.000,-3.900,-8.600,1.569e+05 +2025,313.994103,10,534.800,52.500,6.0110,-534.700,0.600,-10.200,534.700,-0.600,-10.200,1.670e+05 +2025,314.005716,10,531.100,48.900,6.2050,-530.300,-4.600,-29.400,530.300,4.600,-29.400,1.448e+05 +2025,314.006881,10,528.600,51.500,6.1610,-528.300,0.900,-18.300,528.300,-0.900,-18.300,1.607e+05 +2025,314.054531,10,527.400,47.300,5.9480,-526.900,-18.900,-14.200,526.900,18.900,-14.200,1.355e+05 +2025,314.084781,10,576.900,48.100,6.4710,-576.800,10.400,7.400,576.800,-10.400,7.400,1.401e+05 +2025,314.103346,10,557.700,48.700,5.6400,-557.500,-9.000,11.400,557.500,9.000,11.400,1.437e+05 +2025,314.152125,10,587.700,50.600,4.1720,-586.500,-34.900,-11.500,586.500,34.900,-11.500,1.551e+05 +2025,314.219578,10,585.200,48.200,4.6220,-584.900,-10.700,12.100,584.900,10.700,12.100,1.407e+05 +2025,314.248627,10,565.000,42.000,4.6920,-564.700,-13.700,10.500,564.700,13.700,10.500,1.069e+05 +2025,314.286995,10,550.800,38.400,4.5760,-550.300,-18.900,-14.800,550.300,18.900,-14.800,8.932e+04 +2025,314.300900,10,521.700,37.800,4.3320,-521.000,-18.500,-20.700,521.000,18.500,-20.700,8.655e+04 +2025,314.309055,10,522.600,41.500,4.1910,-522.200,-9.300,-19.600,522.200,9.300,-19.600,1.043e+05 +2025,314.368317,10,522.700,42.200,4.9340,-522.200,6.800,-20.900,522.200,-6.800,-20.900,1.079e+05 +2025,314.371812,10,520.600,42.400,4.7560,-520.300,6.600,-18.300,520.300,-6.600,-18.300,1.089e+05 +2025,314.381094,10,515.400,44.400,4.2180,-515.000,10.200,-17.500,515.000,-10.200,-17.500,1.194e+05 +2025,314.383424,10,516.400,39.300,4.2470,-515.900,-6.800,-21.300,515.900,6.800,-21.300,9.356e+04 +2025,314.445053,10,525.400,42.700,4.5860,-524.800,15.300,-19.700,524.800,-15.300,-19.700,1.104e+05 +2025,314.447383,10,520.600,41.400,4.8700,-519.500,1.900,-33.600,519.500,-1.900,-33.600,1.038e+05 +2025,314.465984,10,517.400,46.400,4.5800,-517.300,6.200,-9.100,517.300,-6.200,-9.100,1.304e+05 +2025,314.484549,10,521.200,40.500,5.8640,-520.600,5.500,-24.000,520.600,-5.500,-24.000,9.936e+04 +2025,314.501986,10,526.200,41.600,5.6670,-525.800,1.700,-18.800,525.800,-1.700,-18.800,1.048e+05 +2025,314.518221,10,554.700,30.000,6.5260,-554.400,-18.600,-2.100,554.400,18.600,-2.100,5.452e+04 +2025,314.536859,10,554.800,20.900,11.8180,-554.600,-5.700,-13.900,554.600,5.700,-13.900,2.646e+04 +2025,314.544977,10,530.900,30.100,7.2090,-529.800,6.000,-33.400,529.800,-6.000,-33.400,5.488e+04 +2025,314.553131,10,527.200,35.700,5.6590,-526.100,11.300,-30.500,526.100,-11.300,-30.500,7.720e+04 +2025,314.557754,10,520.300,31.000,5.0560,-518.600,11.900,-40.000,518.600,-11.900,-40.000,5.821e+04 +2025,314.560084,10,530.400,33.700,5.1370,-529.600,-4.800,-28.200,529.600,4.800,-28.200,6.879e+04 +2025,314.567073,10,562.300,34.000,8.5020,-561.900,18.600,-6.000,561.900,-18.600,-6.000,7.002e+04 +2025,314.576356,10,563.300,37.400,8.3180,-563.100,13.800,-3.200,563.100,-13.800,-3.200,8.473e+04 +2025,314.593792,10,562.300,36.600,7.9200,-562.100,14.800,-0.000,562.100,-14.800,-0.000,8.114e+04 +2025,314.600781,10,557.700,37.400,7.4690,-557.600,13.300,-3.800,557.600,-13.300,-3.800,8.473e+04 +2025,314.626336,10,567.500,37.900,7.6640,-567.200,16.800,4.900,567.200,-16.800,4.900,8.701e+04 +2025,314.629830,10,556.800,37.700,9.1630,-556.700,14.000,-0.900,556.700,-14.000,-0.900,8.609e+04 +2025,314.635655,10,558.000,36.200,10.1230,-557.800,14.800,2.000,557.800,-14.800,2.000,7.938e+04 +2025,314.656586,10,552.300,30.800,11.9970,-552.100,14.800,1.600,552.100,-14.800,1.600,5.746e+04 +2025,314.682103,10,550.900,26.700,14.4050,-550.800,12.200,2.400,550.800,-12.200,2.400,4.318e+04 +2025,314.687928,10,550.700,27.700,14.3540,-550.500,11.300,-0.100,550.500,-11.300,-0.100,4.648e+04 +2025,314.690257,10,550.600,28.400,13.8500,-550.500,11.200,-0.900,550.500,-11.200,-0.900,4.886e+04 +2025,314.701870,10,547.800,28.300,12.8610,-547.700,9.700,-1.800,547.700,-9.700,-1.800,4.851e+04 +2025,314.704199,10,548.900,26.600,14.9340,-548.700,12.300,-1.400,548.700,-12.300,-1.400,4.286e+04 +2025,314.705364,10,548.100,26.500,14.8970,-547.900,10.700,-1.200,547.900,-10.700,-1.200,4.254e+04 +2025,314.747226,10,539.100,24.400,14.9500,-539.000,9.300,-4.300,539.000,-9.300,-4.300,3.606e+04 +2025,314.758838,10,535.000,24.700,13.4440,-534.800,11.400,-3.100,534.800,-11.400,-3.100,3.696e+04 +2025,314.770487,10,544.600,22.300,11.6930,-544.500,1.600,-7.000,544.500,-1.600,-7.000,3.012e+04 +2025,314.789052,10,521.800,24.500,7.2750,-521.700,10.300,-3.700,521.700,-10.300,-3.700,3.636e+04 +2025,314.807690,10,518.100,19.500,7.2630,-517.800,17.300,-3.200,517.800,-17.300,-3.200,2.303e+04 +2025,314.818137,10,514.900,22.000,5.6430,-514.800,9.100,-2.400,514.800,-9.100,-2.400,2.932e+04 +2025,314.819302,10,517.500,21.100,5.3780,-517.400,8.300,-2.300,517.400,-8.300,-2.300,2.697e+04 +2025,314.869246,10,504.700,23.300,6.0530,-504.700,-0.400,3.400,504.700,0.400,3.400,3.288e+04 +2025,314.870411,10,504.100,22.300,5.7420,-504.100,-0.700,2.900,504.100,0.700,2.900,3.012e+04 +2025,314.896001,10,501.500,21.400,6.5150,-501.500,1.500,2.400,501.500,-1.500,2.400,2.774e+04 +2025,314.898295,10,500.100,24.400,6.7190,-500.100,2.200,1.600,500.100,-2.200,1.600,3.606e+04 +2025,314.937827,10,490.100,20.100,4.6420,-490.000,6.400,6.700,490.000,-6.400,6.700,2.447e+04 +2025,314.940157,10,489.300,25.700,4.0560,-489.200,6.000,9.800,489.200,-6.000,9.800,4.001e+04 +2025,314.968041,10,476.600,23.400,4.3480,-476.500,8.200,10.300,476.500,-8.200,10.300,3.317e+04 +2025,314.983185,10,467.000,13.700,3.7620,-466.900,9.600,4.900,466.900,-9.600,4.900,1.137e+04 +2025,315.018021,10,464.000,11.100,3.7020,-463.800,11.700,4.200,463.800,-11.700,4.200,7.463e+03 +2025,315.038916,10,464.200,11.200,3.9340,-464.200,8.100,-1.900,464.200,-8.100,-1.900,7.598e+03 +2025,315.045905,10,465.100,11.600,3.9670,-465.100,7.600,-2.300,465.100,-7.600,-2.300,8.151e+03 +2025,315.050528,10,464.700,11.000,3.9700,-464.700,6.100,-1.700,464.700,-6.100,-1.700,7.329e+03 +2025,315.051693,10,464.100,11.400,3.9580,-464.100,7.400,-1.500,464.100,-7.400,-1.500,7.872e+03 +2025,315.080779,10,458.700,12.400,3.4930,-458.600,10.700,0.800,458.600,-10.700,0.800,9.314e+03 +2025,315.105168,10,464.100,16.800,2.6440,-463.900,13.100,1.800,463.900,-13.100,1.800,1.710e+04 +2025,315.110992,10,463.700,15.800,2.4210,-463.600,8.500,7.100,463.600,-8.500,7.100,1.512e+04 +2025,315.124971,10,454.400,11.600,3.0480,-454.200,8.700,7.100,454.200,-8.700,7.100,8.151e+03 +2025,315.144701,10,453.000,11.500,3.1160,-452.900,9.900,6.600,452.900,-9.900,6.600,8.011e+03 +2025,315.184234,10,445.000,10.800,5.7030,-444.100,22.300,18.400,444.100,-22.300,18.400,7.065e+03 +2025,315.185398,10,446.300,11.300,5.5550,-445.400,21.900,17.100,445.400,-21.900,17.100,7.735e+03 +2025,315.191186,10,447.100,11.100,5.3370,-446.100,22.400,19.600,446.100,-22.400,19.600,7.463e+03 +2025,315.197011,10,447.100,12.700,5.6360,-446.300,20.000,19.600,446.300,-20.000,19.600,9.770e+03 +2025,315.242295,10,445.300,13.800,3.6040,-444.500,23.800,12.400,444.500,-23.800,12.400,1.154e+04 +2025,315.257438,10,443.200,12.800,3.8500,-443.100,6.400,1.800,443.100,-6.400,1.800,9.924e+03 +2025,315.264428,10,440.800,12.100,4.2540,-440.700,7.000,-2.800,440.700,-7.000,-2.800,8.869e+03 +2025,315.266721,10,441.400,12.700,4.0590,-441.200,9.300,-3.300,441.200,-9.300,-3.300,9.770e+03 +2025,315.272545,10,441.700,13.500,4.4230,-441.600,9.400,-5.600,441.600,-9.400,-5.600,1.104e+04 +2025,315.306253,10,435.700,11.900,4.8230,-435.600,0.100,-5.800,435.600,-0.100,-5.800,8.578e+03 +2025,315.308583,10,436.600,11.500,5.8080,-436.500,-0.300,-6.100,436.500,0.300,-6.100,8.011e+03 +2025,315.322525,10,435.700,11.400,5.9400,-435.600,-0.400,-3.100,435.600,0.400,-3.100,7.872e+03 +2025,315.329514,10,435.900,13.000,4.9880,-435.900,0.600,0.200,435.900,-0.600,0.200,1.024e+04 +2025,315.335302,10,434.400,13.000,3.6830,-434.300,3.000,12.600,434.300,-3.000,12.600,1.024e+04 +2025,315.359728,10,432.600,13.700,2.9020,-432.300,8.400,13.600,432.300,-8.400,13.600,1.137e+04 +2025,315.373670,10,427.400,12.700,3.2100,-426.900,12.000,17.400,426.900,-12.000,17.400,9.770e+03 +2025,315.375999,10,427.600,11.800,3.0230,-427.200,11.200,14.500,427.200,-11.200,14.500,8.434e+03 +2025,315.379494,10,428.600,13.000,3.0510,-428.000,14.100,17.700,428.000,-14.100,17.700,1.024e+04 +2025,315.399224,10,429.500,12.500,2.7010,-429.300,5.300,9.900,429.300,-5.300,9.900,9.465e+03 +2025,315.400389,10,429.200,17.500,2.8020,-428.900,9.200,13.000,428.900,-9.200,13.000,1.855e+04 +2025,315.410836,10,428.300,12.000,2.8130,-428.200,2.100,6.000,428.200,-2.100,6.000,8.723e+03 +2025,315.428309,10,426.200,12.700,2.9760,-426.100,-2.100,7.900,426.100,2.100,7.900,9.770e+03 +2025,315.438756,10,415.300,28.600,0.8070,-415.100,-11.000,4.800,415.100,11.000,4.800,4.955e+04 +2025,315.464311,10,425.800,13.900,2.9230,-425.600,0.000,11.700,425.600,-0.000,11.700,1.170e+04 +2025,315.485242,10,425.800,13.700,3.1180,-425.600,-10.900,8.700,425.600,10.900,8.700,1.137e+04 +2025,315.496854,10,424.300,11.600,3.2690,-424.000,-13.400,10.600,424.000,13.400,10.600,8.151e+03 +2025,315.499184,10,421.700,12.600,3.4000,-421.500,-9.600,7.600,421.500,9.600,7.600,9.617e+03 +2025,315.522445,10,424.600,12.900,3.3500,-424.300,-16.500,2.500,424.300,16.500,2.500,1.008e+04 +2025,315.557318,10,421.100,10.900,3.4490,-421.000,-8.500,2.800,421.000,8.500,2.800,7.197e+03 +2025,315.582873,10,430.400,10.100,3.0030,-429.500,-28.800,0.400,429.500,28.800,0.400,6.179e+03 +2025,315.592155,10,417.300,12.900,3.3660,-417.200,-9.600,-0.200,417.200,9.600,-0.200,1.008e+04 +2025,315.630523,10,415.100,12.500,3.1540,-414.800,-11.500,8.300,414.800,11.500,8.300,9.465e+03 +2025,315.632853,10,415.200,13.100,3.2500,-414.900,-12.000,9.000,414.900,12.000,9.000,1.040e+04 +2025,315.657242,10,419.500,9.900,2.5520,-419.100,-17.000,7.400,419.100,17.000,7.400,5.937e+03 +2025,315.670056,10,414.300,14.000,3.5170,-414.300,-5.200,3.600,414.300,5.200,3.600,1.187e+04 +2025,315.677009,10,412.400,12.800,3.2990,-412.300,-4.700,1.600,412.300,4.700,1.600,9.924e+03 +2025,315.713047,10,410.600,12.600,3.4880,-410.100,-14.800,13.800,410.100,14.800,13.800,9.617e+03 +2025,315.729319,10,407.400,13.400,3.5980,-407.200,-10.500,7.300,407.200,10.500,7.300,1.088e+04 +2025,315.733978,10,412.700,13.300,3.2650,-412.500,-11.700,2.000,412.500,11.700,2.000,1.071e+04 +2025,315.739766,10,413.000,12.200,3.1700,-412.700,-15.300,0.400,412.700,15.300,0.400,9.016e+03 +2025,315.764155,10,410.300,15.300,3.1060,-409.900,-18.700,-2.300,409.900,18.700,-2.300,1.418e+04 +2025,315.773474,10,408.100,15.000,3.7120,-407.900,-9.100,7.300,407.900,9.100,7.300,1.363e+04 +2025,315.776933,10,408.200,16.400,3.6740,-407.700,-17.100,8.700,407.700,17.100,8.700,1.629e+04 +2025,315.836232,10,399.700,12.200,3.5950,-399.200,-17.900,10.300,399.200,17.900,10.300,9.016e+03 +2025,315.842020,10,396.400,13.700,3.0030,-396.300,-4.500,-5.900,396.300,4.500,-5.900,1.137e+04 +2025,315.857163,10,398.000,14.100,3.2060,-398.000,-2.500,-7.800,398.000,2.500,-7.800,1.204e+04 +2025,315.867610,10,398.300,13.100,3.4390,-398.000,-10.300,-9.800,398.000,10.300,-9.800,1.040e+04 +2025,315.975688,10,471.800,34.300,15.0660,-460.300,-103.100,9.700,460.300,103.100,9.700,7.126e+04 +2025,315.976853,10,470.800,31.900,13.4850,-458.100,-107.800,13.000,458.100,107.800,13.000,6.164e+04 +2025,316.126793,10,853.500,96.200,18.2970,-851.700,52.300,18.700,851.700,-52.300,18.700,5.606e+05 +2025,316.210445,10,806.400,56.900,9.7520,-800.200,95.200,32.000,800.200,-95.200,32.000,1.961e+05 +2025,316.218344,10,805.100,65.600,7.9640,-798.100,102.100,30.000,798.100,-102.100,30.000,2.607e+05 +2025,316.228537,10,807.700,69.900,3.6680,-804.100,74.100,19.800,804.100,-74.100,19.800,2.960e+05 +2025,316.233015,10,801.400,58.000,3.6890,-794.600,93.300,47.200,794.600,-93.300,47.200,2.038e+05 +2025,316.271455,10,828.500,57.300,14.5650,-810.200,173.100,-7.900,810.200,-173.100,-7.900,1.989e+05 +2025,316.289547,10,844.200,63.300,11.3640,-833.200,130.900,-38.000,833.200,-130.900,-38.000,2.427e+05 +2025,316.296354,10,845.100,50.700,10.0730,-837.000,115.800,-14.600,837.000,-115.800,-14.600,1.557e+05 +2025,316.297483,10,831.900,51.100,12.9600,-822.900,118.000,-32.600,822.900,-118.000,-32.600,1.582e+05 +2025,316.306547,10,833.700,46.900,15.9020,-826.900,101.600,-31.000,826.900,-101.600,-31.000,1.332e+05 +2025,316.307675,10,837.000,47.600,15.3290,-830.200,104.400,-21.300,830.200,-104.400,-21.300,1.372e+05 +2025,316.314446,10,813.900,48.300,9.7280,-806.000,94.700,-61.900,806.000,-94.700,-61.900,1.413e+05 +2025,316.321253,10,844.400,58.000,2.8160,-824.600,102.700,150.200,824.600,-102.700,150.200,2.038e+05 +2025,316.391364,10,690.400,49.300,20.9540,-688.900,35.300,-27.300,688.900,-35.300,-27.300,1.472e+05 +2025,316.404105,10,674.000,59.600,9.4620,-673.400,26.500,-6.700,673.400,-26.500,-6.700,2.152e+05 +2025,316.408764,10,677.600,51.400,22.9320,-676.800,26.300,-19.900,676.800,-26.300,-19.900,1.600e+05 +2025,316.418083,10,692.200,41.700,16.6840,-691.300,31.400,-12.200,691.300,-31.400,-12.200,1.053e+05 +2025,316.461948,10,761.800,23.100,3.7840,-761.600,2.800,19.000,761.600,-2.800,19.000,3.232e+04 +2025,316.464205,10,764.800,22.800,3.2350,-764.200,22.200,20.700,764.200,-22.200,20.700,3.149e+04 +2025,316.468682,10,762.600,26.400,3.5520,-762.300,21.800,6.600,762.300,-21.800,6.600,4.222e+04 +2025,316.490196,10,776.700,30.000,1.4730,-769.000,100.500,43.000,769.000,-100.500,43.000,5.452e+04 +2025,316.537665,10,827.000,36.500,1.7100,-804.000,152.700,118.800,804.000,-152.700,118.800,8.070e+04 +2025,316.602534,10,704.900,25.000,1.8630,-703.100,32.600,-38.700,703.100,-32.600,-38.700,3.786e+04 +2025,316.667366,10,580.600,55.300,14.8950,-580.200,14.300,-14.100,580.200,-14.300,-14.100,1.852e+05 +2025,316.730087,10,586.900,17.200,3.3230,-586.100,4.500,-31.300,586.100,-4.500,-31.300,1.792e+04 +2025,316.756770,10,598.300,28.900,3.8410,-597.000,26.500,-29.200,597.000,-26.500,-29.200,5.059e+04 +2025,316.788112,10,847.700,62.200,6.6150,-846.300,47.100,-7.200,846.300,-47.100,-7.200,2.344e+05 +2025,316.809553,10,884.500,67.900,4.8160,-880.100,82.000,34.000,880.100,-82.000,34.000,2.793e+05 +2025,316.825388,10,875.600,153.300,6.7470,-869.300,-7.000,-104.800,869.300,7.000,-104.800,1.424e+06 +2025,316.939801,10,881.600,209.400,3.4650,-876.600,81.900,-45.600,876.600,-81.900,-45.600,2.656e+06 +2025,316.953379,10,853.000,184.400,3.6960,-850.400,-8.600,-66.700,850.400,8.600,-66.700,2.060e+06 +2025,317.006525,10,911.600,111.200,5.3340,-902.600,40.400,-121.800,902.600,-40.400,-121.800,7.490e+05 +2025,317.059636,10,888.200,112.000,6.1750,-881.400,-13.900,-108.600,881.400,13.900,-108.600,7.598e+05 +2025,317.178416,10,908.900,27.200,7.3780,-907.400,48.000,-22.000,907.400,-48.000,-22.000,4.481e+04 +2025,317.201059,10,892.100,23.100,7.6950,-890.600,48.700,-17.000,890.600,-48.700,-17.000,3.232e+04 +2025,317.202187,10,894.000,22.700,7.4190,-892.400,50.400,-17.100,892.400,-50.400,-17.100,3.121e+04 +2025,317.209031,10,886.900,19.800,3.5740,-885.800,39.500,-20.200,885.800,-39.500,-20.200,2.375e+04 +2025,317.293884,10,837.900,18.700,1.3760,-836.800,44.100,1.600,836.800,-44.100,1.600,2.118e+04 +2025,317.316527,10,819.300,19.000,0.4530,-818.500,35.000,4.600,818.500,-35.000,4.600,2.187e+04 +2025,317.327848,10,855.700,15.700,0.4660,-853.900,29.600,-46.200,853.900,-29.600,-46.200,1.493e+04 +2025,317.341462,10,847.900,13.800,0.4830,-846.600,29.100,-35.100,846.600,-29.100,-35.100,1.154e+04 +2025,317.347104,10,843.700,11.300,0.4260,-842.000,36.900,-38.600,842.000,-36.900,-38.600,7.735e+03 +2025,317.362939,10,853.100,14.800,0.6420,-851.800,26.700,-37.800,851.800,-26.700,-37.800,1.327e+04 +2025,317.384453,10,851.000,11.900,0.7870,-848.300,37.200,-56.700,848.300,-37.200,-56.700,8.578e+03 +2025,317.386746,10,849.400,11.900,0.8130,-847.000,35.900,-52.500,847.000,-35.900,-52.500,8.578e+03 +2025,317.405966,10,832.500,12.200,0.8540,-830.700,32.200,-44.700,830.700,-32.200,-44.700,9.016e+03 +2025,317.533629,10,800.200,13.300,0.5060,-799.200,21.100,-32.300,799.200,-21.100,-32.300,1.071e+04 +2025,317.559620,10,769.000,14.800,1.4230,-768.000,29.000,-26.500,768.000,-29.000,-26.500,1.327e+04 +2025,317.573198,10,770.900,11.100,22.0370,-770.100,10.400,-31.900,770.100,-10.400,-31.900,7.463e+03 +2025,317.616153,10,775.600,38.700,6.6830,-773.000,31.600,-54.000,773.000,-31.600,-54.000,9.072e+04 +2025,317.628602,10,766.700,43.700,6.7730,-765.400,4.300,-44.100,765.400,-4.300,-44.100,1.157e+05 +2025,317.637630,10,766.300,44.300,8.2310,-765.500,5.500,-36.200,765.500,-5.500,-36.200,1.189e+05 +2025,317.645529,10,756.500,44.800,5.1370,-756.100,3.400,-25.600,756.100,-3.400,-25.600,1.216e+05 +2025,317.653429,10,760.200,41.500,7.5710,-759.100,17.600,-36.200,759.100,-17.600,-36.200,1.043e+05 +2025,317.659071,10,764.100,42.300,6.1120,-762.400,14.600,-49.100,762.400,-14.600,-49.100,1.084e+05 +2025,317.662456,10,749.900,29.200,3.6970,-748.600,22.100,-37.900,748.600,-22.100,-37.900,5.165e+04 +2025,317.673778,10,751.600,21.200,4.0700,-750.000,14.800,-46.100,750.000,-14.800,-46.100,2.722e+04 +2025,317.677163,10,758.900,24.500,4.9270,-757.400,14.100,-45.800,757.400,-14.100,-45.800,3.636e+04 +2025,317.702062,10,762.600,19.900,2.2870,-760.500,21.500,-51.600,760.500,-21.500,-51.600,2.399e+04 +2025,317.716732,10,757.100,19.900,2.9010,-755.100,19.400,-52.000,755.100,-19.400,-52.000,2.399e+04 +2025,317.717861,10,755.000,23.300,2.2260,-753.100,20.300,-49.700,753.100,-20.300,-49.700,3.288e+04 +2025,317.722375,10,748.300,28.200,2.1950,-746.500,21.900,-46.600,746.500,-21.900,-46.600,4.817e+04 +2025,317.725796,10,742.900,25.000,2.3080,-741.200,19.000,-45.600,741.200,-19.000,-45.600,3.786e+04 +2025,317.730310,10,746.600,26.800,2.7340,-745.100,20.700,-42.400,745.100,-20.700,-42.400,4.351e+04 +2025,317.732567,10,745.400,24.800,2.7470,-743.700,15.500,-48.500,743.700,-15.500,-48.500,3.726e+04 +2025,317.739375,10,750.900,37.100,2.5020,-749.100,24.600,-44.900,749.100,-24.600,-44.900,8.337e+04 +2025,317.742760,10,742.900,36.600,2.6650,-742.000,7.900,-36.300,742.000,-7.900,-36.300,8.114e+04 +2025,317.743888,10,745.700,34.400,2.4120,-744.400,14.100,-41.000,744.400,-14.100,-41.000,7.168e+04 +2025,317.746145,10,736.500,20.500,3.3990,-735.600,3.400,-36.400,735.600,-3.400,-36.400,2.546e+04 +2025,317.748439,10,730.600,20.800,3.5740,-729.800,3.600,-34.800,729.800,-3.600,-34.800,2.621e+04 +2025,317.924480,10,682.700,18.500,0.6410,-681.600,-14.800,-35.500,681.600,14.800,-35.500,2.073e+04 +2025,318.143985,10,634.300,12.700,1.2790,-634.300,-5.800,9.300,634.300,5.800,9.300,9.770e+03 +2025,318.149810,10,641.500,14.200,1.4050,-641.300,-16.000,7.900,641.300,16.000,7.900,1.221e+04 +2025,318.155598,10,635.400,12.300,1.1020,-635.300,-10.100,9.800,635.300,10.100,9.800,9.164e+03 +2025,318.202083,10,629.400,13.300,1.2460,-628.900,11.400,23.900,628.900,-11.400,23.900,1.071e+04 +2025,318.210238,10,620.300,13.000,1.3440,-620.200,-11.900,0.200,620.200,11.900,0.200,1.024e+04 +2025,318.211402,10,613.700,12.300,1.2270,-613.700,-3.500,-0.100,613.700,3.500,-0.100,9.164e+03 +2025,318.212567,10,619.800,15.800,1.3730,-619.800,0.500,7.100,619.800,-0.500,7.100,1.512e+04 +2025,318.232297,10,616.400,14.200,1.1520,-616.300,-10.400,4.800,616.300,10.400,4.800,1.221e+04 +2025,318.236957,10,618.400,14.000,1.1250,-618.200,-17.100,5.300,618.200,17.100,5.300,1.187e+04 +2025,318.276453,10,610.300,15.000,1.1780,-610.200,-0.000,9.800,610.200,0.000,9.800,1.363e+04 +2025,318.300843,10,614.400,14.000,1.1320,-614.100,-18.400,3.300,614.100,18.400,3.300,1.187e+04 +2025,318.305502,10,606.100,12.900,1.0400,-606.000,-11.100,0.500,606.000,11.100,0.500,1.008e+04 +2025,318.326434,10,604.800,13.100,1.1390,-604.600,-15.400,4.300,604.600,15.400,4.300,1.040e+04 +2025,318.327599,10,602.700,13.900,1.3300,-602.700,-5.800,2.200,602.700,5.800,2.200,1.170e+04 +2025,318.370626,10,597.000,12.900,1.3060,-596.300,-19.100,-18.900,596.300,19.100,-18.900,1.008e+04 +2025,318.382238,10,592.000,11.200,1.5440,-591.600,-16.100,-15.900,591.600,16.100,-15.900,7.598e+03 +2025,318.384532,10,592.100,13.000,1.7590,-591.600,-18.200,-16.300,591.600,18.200,-16.300,1.024e+04 +2025,318.400804,10,595.200,12.400,2.1000,-594.800,-22.200,-6.200,594.800,22.200,-6.200,9.314e+03 +2025,318.405463,10,591.700,12.000,2.1500,-591.400,-17.400,-5.800,591.400,17.400,-5.800,8.723e+03 +2025,318.412452,10,598.500,12.100,1.7340,-598.000,-24.400,5.400,598.000,24.400,5.400,8.869e+03 +2025,318.464726,10,590.000,12.400,1.9200,-589.100,-19.600,27.700,589.100,19.600,27.700,9.314e+03 +2025,318.471715,10,590.000,13.800,2.1900,-589.200,-18.200,25.800,589.200,18.200,25.800,1.154e+04 +2025,318.472844,10,592.400,13.100,2.1960,-591.400,-17.000,28.000,591.400,17.000,28.000,1.040e+04 +2025,318.496105,10,599.000,13.300,1.8450,-597.800,-1.900,36.900,597.800,1.900,36.900,1.071e+04 +2025,318.504223,10,594.800,11.700,1.6770,-594.000,-5.000,31.700,594.000,5.000,31.700,8.292e+03 +2025,318.505388,10,592.400,12.800,1.7370,-591.400,-2.100,35.100,591.400,2.100,35.100,9.924e+03 +2025,319.024921,10,623.000,62.800,2.4290,-622.600,12.300,18.200,622.600,-12.300,18.200,2.389e+05 +2025,319.107408,10,602.900,58.400,2.8320,-600.800,3.400,-50.600,600.800,-3.400,-50.600,2.066e+05 +2025,319.874441,10,607.900,54.400,3.3560,-606.600,-38.200,-11.300,606.600,38.200,-11.300,1.793e+05 +2025,319.879101,10,568.900,58.200,2.6810,-568.200,-26.500,2.400,568.200,26.500,2.400,2.052e+05 +2025,320.113823,10,641.300,90.500,6.3530,-635.400,33.500,80.300,635.400,-33.500,80.300,4.961e+05 +2025,320.162603,10,645.700,76.300,5.7530,-645.100,-19.800,-19.700,645.100,19.800,-19.700,3.526e+05 +2025,320.174251,10,624.100,85.200,6.5230,-622.100,42.700,-23.600,622.100,-42.700,-23.600,4.397e+05 +2025,320.365218,10,670.800,96.200,7.3990,-669.700,36.200,-9.700,669.700,-36.200,-9.700,5.606e+05 +2025,320.383420,10,650.200,105.300,7.7170,-646.900,63.800,-13.200,646.900,-63.800,-13.200,6.716e+05 +2025,320.390372,10,641.500,108.200,7.5750,-636.200,81.700,-8.100,636.200,-81.700,-8.100,7.092e+05 +2025,320.397362,10,636.700,106.700,7.5470,-629.500,94.800,-4.200,629.500,-94.800,-4.200,6.896e+05 +2025,320.399691,10,634.200,105.500,7.4370,-626.700,96.800,2.000,626.700,-96.800,2.000,6.742e+05 +2025,320.400856,10,635.400,103.800,7.3330,-627.800,97.800,0.600,627.800,-97.800,0.600,6.526e+05 +2025,320.402021,10,637.600,102.900,7.0420,-631.200,90.200,1.800,631.200,-90.200,1.800,6.414e+05 +2025,320.548468,10,609.900,77.100,5.0180,-607.200,56.800,5.300,607.200,-56.800,5.300,3.601e+05 +2025,320.572858,10,615.600,81.300,4.9800,-611.900,57.700,34.700,611.900,-57.700,34.700,4.004e+05 +2025,320.576352,10,622.000,81.400,4.9150,-618.700,45.700,45.600,618.700,-45.700,45.600,4.014e+05 +2025,320.585671,10,613.400,76.400,4.8440,-611.200,34.800,39.900,611.200,-34.800,39.900,3.536e+05 +2025,320.614720,10,602.900,76.700,3.9660,-602.300,-3.200,27.200,602.300,3.200,27.200,3.563e+05 +2025,320.621673,10,588.200,79.700,4.1710,-587.700,23.400,5.000,587.700,-23.400,5.000,3.848e+05 +2025,320.630992,10,616.200,75.000,4.0540,-616.100,-9.200,-5.600,616.100,9.200,-5.600,3.407e+05 +2025,320.635615,10,610.400,74.900,3.9460,-610.400,-8.600,-4.400,610.400,8.600,-4.400,3.398e+05 +2025,320.650759,10,585.600,71.100,3.8810,-585.400,-9.000,-12.200,585.400,9.000,-12.200,3.062e+05 +2025,320.658913,10,599.900,73.400,3.8150,-599.700,-9.700,-15.200,599.700,9.700,-15.200,3.263e+05 +2025,320.670525,10,597.100,68.700,3.5500,-596.400,-21.400,-20.000,596.400,21.400,-20.000,2.859e+05 +2025,320.675148,10,597.400,70.600,3.5290,-596.500,-17.400,-28.400,596.500,17.400,-28.400,3.019e+05 +2025,320.676313,10,599.700,68.200,3.4430,-598.900,-20.600,-24.000,598.900,20.600,-24.000,2.817e+05 +2025,320.679808,10,605.300,69.100,3.5410,-604.000,-29.900,-25.500,604.000,29.900,-25.500,2.892e+05 +2025,320.689091,10,608.000,70.200,3.5310,-606.000,-34.200,-35.200,606.000,34.200,-35.200,2.985e+05 +2025,320.722836,10,605.800,67.700,3.6750,-604.800,-28.300,-19.400,604.800,28.300,-19.400,2.776e+05 +2025,320.727459,10,605.800,70.000,3.5870,-603.800,-47.700,-14.700,603.800,47.700,-14.700,2.968e+05 +2025,320.754178,10,604.300,65.600,3.3920,-602.700,-23.800,-37.500,602.700,23.800,-37.500,2.607e+05 +2025,320.799463,10,576.600,65.700,3.5140,-575.900,-25.700,12.900,575.900,25.700,12.900,2.615e+05 +2025,320.958723,10,559.900,59.200,3.7120,-558.200,18.000,-39.700,558.200,-18.000,-39.700,2.123e+05 +2025,320.970335,10,558.700,56.300,3.9950,-557.300,8.800,-38.300,557.300,-8.800,-38.300,1.920e+05 +2025,321.024975,10,542.300,53.800,4.4010,-535.100,-32.400,-81.800,535.100,32.400,-81.800,1.753e+05 +2025,321.041210,10,542.600,50.500,4.3340,-535.400,-10.800,-87.400,535.400,10.800,-87.400,1.545e+05 +2025,321.104004,10,529.300,56.500,4.6210,-522.600,-16.600,-82.000,522.600,16.600,-82.000,1.934e+05 +2025,321.112158,10,527.300,54.800,4.6100,-523.200,-7.600,-64.600,523.200,7.600,-64.600,1.819e+05 +2025,321.120276,10,527.000,54.300,4.5110,-523.600,-1.100,-59.400,523.600,1.100,-59.400,1.786e+05 +2025,321.122605,10,529.200,54.600,4.2230,-524.600,-12.100,-69.100,524.600,12.100,-69.100,1.806e+05 +2025,321.143500,10,559.500,49.300,3.3850,-559.000,-8.700,-22.700,559.000,8.700,-22.700,1.472e+05 +2025,321.210917,10,526.300,52.800,3.6510,-524.200,-22.400,-40.400,524.200,22.400,-40.400,1.689e+05 +2025,321.725756,10,524.200,35.800,3.4240,-523.400,-26.100,13.300,523.400,26.100,13.300,7.763e+04 +2025,321.779195,10,500.500,34.100,2.8560,-499.000,-22.100,-31.500,499.000,22.100,-31.500,7.044e+04 +2025,321.782689,10,499.600,33.000,2.8680,-498.400,-26.800,-23.700,498.400,26.800,-23.700,6.596e+04 +2025,321.805914,10,503.400,30.500,5.2080,-501.200,-40.300,-23.200,501.200,40.300,-23.200,5.635e+04 +2025,321.823351,10,481.000,25.500,4.1560,-479.300,-37.100,-15.300,479.300,37.100,-15.300,3.939e+04 +2025,321.830304,10,512.300,33.600,4.7760,-510.100,-41.200,-24.500,510.100,41.200,-24.500,6.839e+04 +2025,321.837293,10,491.500,34.100,4.9730,-490.200,-27.600,20.900,490.200,27.600,20.900,7.044e+04 +2025,321.847777,10,488.900,35.700,4.9360,-488.000,-26.200,16.700,488.000,26.200,16.700,7.720e+04 +2025,321.855894,10,495.500,33.100,3.9470,-494.900,-24.900,4.200,494.900,24.900,4.200,6.637e+04 +2025,321.879156,10,511.400,29.900,4.2660,-510.800,-17.600,15.200,510.800,17.600,15.200,5.415e+04 +2025,321.910534,10,487.500,30.800,4.8740,-485.300,-45.300,-5.200,485.300,45.300,-5.200,5.746e+04 +2025,321.952361,10,492.300,30.700,4.8260,-489.600,-50.200,-13.900,489.600,50.200,-13.900,5.709e+04 +2025,321.974457,10,504.300,29.700,5.2080,-501.800,-49.600,-7.700,501.800,49.600,-7.700,5.343e+04 +2025,321.982575,10,502.200,32.700,5.2100,-499.500,-51.200,7.300,499.500,51.200,7.300,6.477e+04 +2025,322.002341,10,493.700,29.700,3.5280,-492.100,-32.700,-22.900,492.100,32.700,-22.900,5.343e+04 +2025,322.030226,10,493.300,31.600,4.1930,-491.700,-40.200,-1.100,491.700,40.200,-1.100,6.049e+04 +2025,322.052285,10,486.000,25.600,3.0390,-485.000,-30.300,0.900,485.000,30.300,0.900,3.970e+04 +2025,322.055780,10,491.100,23.700,2.9650,-490.400,-27.000,-6.000,490.400,27.000,-6.000,3.402e+04 +2025,322.072052,10,485.300,21.400,3.0380,-484.600,-21.500,-13.300,484.600,21.500,-13.300,2.774e+04 +2025,322.099936,10,494.000,24.700,3.1340,-493.300,-16.400,-19.300,493.300,16.400,-19.300,3.696e+04 +2025,322.125527,10,492.000,17.900,5.1070,-491.500,-5.000,-20.900,491.500,5.000,-20.900,1.941e+04 +2025,322.165024,10,483.500,10.800,6.3540,-483.200,2.700,-17.700,483.200,-2.700,-17.700,7.065e+03 +2025,322.182497,10,480.500,11.400,4.8550,-480.200,2.900,-18.100,480.200,-2.900,-18.100,7.872e+03 +2025,322.187120,10,482.800,11.500,5.0480,-482.500,-3.700,-15.200,482.500,3.700,-15.200,8.011e+03 +2025,322.197604,10,469.300,12.300,6.7870,-468.400,3.500,-28.000,468.400,-3.500,-28.000,9.164e+03 +2025,322.226617,10,474.900,12.400,6.0320,-474.500,1.100,-20.400,474.500,-1.100,-20.400,9.314e+03 +2025,322.257996,10,480.300,14.800,6.7530,-479.800,12.100,-17.300,479.800,-12.100,-17.300,1.327e+04 +2025,322.260325,10,477.200,12.600,6.3010,-476.800,12.700,-14.700,476.800,-12.700,-14.700,9.617e+03 +2025,322.273103,10,476.500,13.800,6.4440,-476.000,15.500,-16.000,476.000,-15.500,-16.000,1.154e+04 +2025,322.285880,10,477.400,12.600,5.5800,-477.100,12.100,-13.400,477.100,-12.100,-13.400,9.617e+03 +2025,322.290539,10,477.700,11.400,5.2650,-477.300,13.700,-14.700,477.300,-13.700,-14.700,7.872e+03 +2025,322.295199,10,476.100,10.200,4.3750,-475.700,14.400,-14.200,475.700,-14.400,-14.200,6.302e+03 +2025,322.306811,10,475.100,11.000,4.5230,-474.700,13.000,-13.200,474.700,-13.000,-13.200,7.329e+03 +2025,322.325376,10,470.400,11.800,4.9790,-470.000,11.500,-15.800,470.000,-11.500,-15.800,8.434e+03 +2025,322.354462,10,466.600,10.600,5.5960,-466.200,10.300,-13.700,466.200,-10.300,-13.700,6.806e+03 +2025,322.391629,10,465.700,11.800,5.4520,-465.500,5.000,-13.300,465.500,-5.000,-13.300,8.434e+03 +2025,322.393959,10,465.600,12.400,5.2950,-465.300,4.100,-14.500,465.300,-4.100,-14.500,9.314e+03 +2025,322.440445,10,464.400,11.300,4.7130,-464.300,-0.900,-9.900,464.300,0.900,-9.900,7.735e+03 +2025,322.445104,10,460.600,11.700,4.6970,-460.400,-1.900,-13.400,460.400,1.900,-13.400,8.292e+03 +2025,322.449764,10,459.900,12.400,4.8880,-459.700,-1.600,-12.500,459.700,1.600,-12.500,9.314e+03 +2025,322.454387,10,461.200,11.800,4.8070,-460.900,-0.900,-16.600,460.900,0.900,-16.600,8.434e+03 +2025,322.477611,10,458.800,10.100,4.6590,-458.700,-4.700,-8.900,458.700,4.700,-8.900,6.179e+03 +2025,322.485766,10,455.600,10.600,4.8020,-455.500,-2.200,-9.400,455.500,2.200,-9.400,6.806e+03 +2025,322.500873,10,453.700,10.500,4.7400,-453.600,-2.200,-11.100,453.600,2.200,-11.100,6.678e+03 +2025,322.504367,10,454.000,10.500,4.8140,-453.900,-2.200,-11.200,453.900,2.200,-11.200,6.678e+03 +2025,322.522969,10,458.500,9.800,4.1730,-458.000,-4.700,-21.200,458.000,4.700,-21.200,5.818e+03 +2025,322.538076,10,458.300,9.700,4.2280,-457.800,-5.200,-19.900,457.800,5.200,-19.900,5.699e+03 +2025,322.543864,10,462.700,10.200,3.9330,-462.300,-7.500,-17.800,462.300,7.500,-17.800,6.302e+03 +2025,322.547359,10,462.300,8.500,3.6940,-462.000,-7.200,-16.100,462.000,7.200,-16.100,4.376e+03 +2025,322.552018,10,459.600,9.100,3.7880,-459.500,-6.600,-9.300,459.500,6.600,-9.300,5.016e+03 +2025,322.557806,10,458.600,8.800,3.9360,-458.300,-6.100,-13.900,458.300,6.100,-13.900,4.691e+03 +2025,322.564795,10,454.500,8.900,3.9220,-454.400,-3.400,-11.500,454.400,3.400,-11.500,4.798e+03 +2025,322.572950,10,451.200,9.400,3.8840,-451.100,-2.800,-10.700,451.100,2.800,-10.700,5.352e+03 +2025,322.601999,10,452.300,9.600,4.0240,-452.000,-7.800,-11.300,452.000,7.800,-11.300,5.582e+03 +2025,322.604328,10,453.400,9.600,3.9770,-453.100,-8.300,-13.200,453.100,8.300,-13.200,5.582e+03 +2025,322.615941,10,445.600,10.600,4.5620,-445.500,-9.300,-6.900,445.500,9.300,-6.900,6.806e+03 +2025,322.628754,10,447.100,10.000,4.0260,-446.900,-10.200,-9.800,446.900,10.200,-9.800,6.057e+03 +2025,322.629919,10,449.000,9.700,4.0840,-448.900,-9.000,-7.500,448.900,9.000,-7.500,5.699e+03 +2025,322.639202,10,446.900,9.300,4.3260,-446.900,-7.400,-2.900,446.900,7.400,-2.900,5.239e+03 +2025,322.651979,10,440.300,9.800,4.7280,-440.200,-8.300,-8.000,440.200,8.300,-8.000,5.818e+03 +2025,322.697264,10,442.700,9.900,3.7870,-442.500,-10.200,-8.800,442.500,10.200,-8.800,5.937e+03 +2025,322.723983,10,434.100,9.800,3.5190,-434.000,-3.300,-6.800,434.000,3.300,-6.800,5.818e+03 +2025,322.756564,10,445.300,11.600,3.5120,-445.000,-9.000,-10.500,445.000,9.000,-10.500,8.151e+03 +2025,322.784411,10,435.900,10.400,3.8330,-435.600,-8.400,-13.800,435.600,8.400,-13.800,6.552e+03 +2025,322.798390,10,428.200,9.500,3.5480,-428.200,-4.500,-7.200,428.200,4.500,-7.200,5.467e+03 +2025,322.815827,10,427.300,9.800,3.8100,-427.200,-6.500,-6.000,427.200,6.500,-6.000,5.818e+03 +2025,322.830934,10,422.900,9.200,3.8780,-422.700,-5.000,-12.700,422.700,5.000,-12.700,5.127e+03 +2025,322.847206,10,423.100,9.300,4.5480,-422.800,-5.700,-16.700,422.800,5.700,-16.700,5.239e+03 +2025,322.858854,10,418.700,9.500,3.9940,-417.900,-1.300,-26.300,417.900,1.300,-26.300,5.467e+03 +2025,322.889032,10,414.900,10.100,4.1950,-414.600,-3.100,-14.500,414.600,3.100,-14.500,6.179e+03 +2025,322.897150,10,415.400,9.900,3.2740,-415.000,-6.000,-17.000,415.000,6.000,-17.000,5.937e+03 +2025,322.902974,10,414.100,9.900,3.8600,-414.000,-4.000,-10.200,414.000,4.000,-10.200,5.937e+03 +2025,322.908799,10,408.200,10.300,3.9560,-408.100,-1.100,-10.400,408.100,1.100,-10.400,6.426e+03 +2025,322.929694,10,412.000,9.800,3.8560,-412.000,-1.500,-3.400,412.000,1.500,-3.400,5.818e+03 +2025,322.942471,10,407.500,11.500,4.0780,-407.400,-2.100,-9.900,407.400,2.100,-9.900,8.011e+03 +2025,322.945966,10,413.100,11.600,3.9540,-412.600,-5.000,-19.600,412.600,5.000,-19.600,8.151e+03 +2025,322.992451,10,414.200,10.300,4.6210,-413.900,-5.900,-14.500,413.900,5.900,-14.500,6.426e+03 +2025,323.012218,10,420.300,15.700,4.5430,-420.000,-2.700,-14.500,420.000,2.700,-14.500,1.493e+04 +2025,323.022701,10,389.600,12.700,4.4230,-389.400,10.700,-4.400,389.400,-10.700,-4.400,9.770e+03 +2025,323.093576,10,382.000,11.100,4.0370,-381.900,4.000,0.100,381.900,-4.000,0.100,7.463e+03 +2025,323.160957,10,379.200,10.700,4.5300,-379.000,4.100,-11.800,379.000,-4.100,-11.800,6.935e+03 +2025,323.208608,10,379.800,10.300,4.0090,-379.800,-0.900,-0.900,379.800,0.900,-0.900,6.426e+03 +2025,323.220257,10,377.100,13.300,4.1650,-377.100,-0.200,-2.400,377.100,0.200,-2.400,1.071e+04 +2025,323.270237,10,389.800,11.200,5.1650,-389.800,-5.500,2.300,389.800,5.500,2.300,7.598e+03 +2025,323.302781,10,399.900,12.400,6.3650,-399.700,-12.800,7.100,399.700,12.800,7.100,9.314e+03 +2025,323.343406,10,400.700,11.700,5.6070,-400.300,-18.900,-2.200,400.300,18.900,-2.200,8.292e+03 +2025,323.446862,10,389.800,17.300,7.5330,-389.600,-4.000,13.400,389.600,4.000,13.400,1.813e+04 +2025,323.477076,10,410.400,16.500,7.3790,-409.800,-19.000,9.400,409.800,19.000,9.400,1.649e+04 +2025,323.479406,10,406.600,16.400,7.5970,-406.100,-18.100,10.300,406.100,18.100,10.300,1.629e+04 +2025,323.480571,10,403.800,16.200,7.6710,-403.000,-9.300,23.300,403.000,9.300,23.300,1.590e+04 +2025,323.515444,10,398.600,14.200,7.8750,-397.500,-19.600,20.800,397.500,19.600,20.800,1.221e+04 +2025,323.516609,10,401.200,15.400,9.1400,-400.100,-22.900,17.700,400.100,22.900,17.700,1.437e+04 +2025,323.592108,10,392.500,16.700,6.2100,-389.800,-14.700,43.700,389.800,14.700,43.700,1.689e+04 +2025,323.608380,10,391.900,15.800,8.5030,-390.000,-4.600,38.100,390.000,4.600,38.100,1.512e+04 +2025,323.614204,10,390.700,13.100,7.9910,-388.300,-9.000,42.200,388.300,9.000,42.200,1.040e+04 +2025,323.643253,10,373.800,16.400,6.0930,-370.900,-19.900,42.000,370.900,19.900,42.000,1.629e+04 +2025,323.649041,10,368.600,17.800,7.3030,-366.400,-21.100,34.700,366.400,21.100,34.700,1.919e+04 +2025,323.652536,10,369.000,17.200,6.5620,-366.800,-20.200,34.700,366.800,20.200,34.700,1.792e+04 +2025,323.666514,10,365.100,18.300,6.9980,-363.800,-31.300,-2.400,363.800,31.300,-2.400,2.029e+04 +2025,323.682786,10,368.700,13.800,6.1540,-366.100,-26.700,34.000,366.100,26.700,34.000,1.154e+04 +2025,323.703681,10,369.600,15.900,4.4360,-369.100,-17.800,8.300,369.100,17.800,8.300,1.531e+04 +2025,323.704846,10,369.500,16.800,4.4330,-369.000,-15.900,11.200,369.000,15.900,11.200,1.710e+04 +2025,323.707176,10,368.700,15.600,4.4440,-368.200,-14.100,11.500,368.200,14.100,11.500,1.474e+04 +2025,323.708340,10,368.300,15.500,4.3800,-368.000,-13.300,6.900,368.000,13.300,6.900,1.455e+04 +2025,323.724612,10,371.200,17.700,6.3590,-370.500,-20.400,-10.000,370.500,20.400,-10.000,1.898e+04 +2025,323.743214,10,372.800,19.100,5.7820,-372.300,-18.300,3.600,372.300,18.300,3.600,2.210e+04 +2025,323.757156,10,368.800,22.200,5.2370,-368.200,-17.500,9.800,368.200,17.500,9.800,2.985e+04 +2025,323.764109,10,361.800,26.200,6.6980,-361.400,-13.700,9.600,361.400,13.700,9.600,4.158e+04 +2025,323.796652,10,371.400,26.900,6.3150,-371.300,-9.700,-2.500,371.300,9.700,-2.500,4.383e+04 +2025,323.825701,10,388.400,26.100,7.6230,-387.100,-28.200,14.800,387.100,28.200,14.800,4.126e+04 +2025,323.829196,10,379.700,29.400,6.0110,-378.800,-21.500,16.400,378.800,21.500,16.400,5.236e+04 +2025,323.860575,10,362.500,25.300,6.4170,-361.300,-16.600,25.000,361.300,16.600,25.000,3.877e+04 +2025,323.864070,10,365.300,27.400,6.7850,-364.300,-14.000,23.600,364.300,14.000,23.600,4.548e+04 +2025,323.869894,10,359.000,25.300,7.2840,-358.400,-20.700,5.800,358.400,20.700,5.800,3.877e+04 +2025,323.885001,10,365.700,23.100,6.0120,-365.100,-13.500,17.200,365.100,13.500,17.200,3.232e+04 +2025,323.897778,10,375.600,26.700,7.5000,-374.400,-4.700,29.700,374.400,4.700,29.700,4.318e+04 +2025,323.904731,10,359.600,27.800,7.6750,-359.200,-11.800,12.300,359.200,11.800,12.300,4.681e+04 +2025,323.921003,10,367.400,27.100,7.5120,-366.700,-15.200,17.000,366.700,15.200,17.000,4.449e+04 +2025,323.936146,10,358.400,30.300,6.9230,-358.300,-6.900,1.000,358.300,6.900,1.000,5.561e+04 +2025,323.967489,10,366.300,30.400,7.0760,-365.400,-12.600,22.800,365.400,12.600,22.800,5.598e+04 +2025,323.981431,10,365.100,28.300,7.3680,-364.500,-15.400,14.400,364.500,15.400,14.400,4.851e+04 +2025,324.009315,10,364.700,29.600,7.7820,-363.900,-13.900,19.100,363.900,13.900,19.100,5.307e+04 +2025,324.030247,10,360.200,29.800,8.4390,-359.400,-14.600,17.500,359.400,14.600,17.500,5.379e+04 +2025,324.033741,10,359.300,29.600,7.5100,-358.700,-15.900,13.200,358.700,15.900,13.200,5.307e+04 +2025,324.040731,10,362.000,27.900,6.8080,-361.600,-16.500,-1.300,361.600,16.500,-1.300,4.715e+04 +2025,324.041859,10,362.200,27.800,7.1700,-362.000,-12.500,-4.300,362.000,12.500,-4.300,4.681e+04 +2025,324.051178,10,355.900,28.500,7.1420,-355.700,-9.100,-7.700,355.700,9.100,-7.700,4.920e+04 +2025,324.084850,10,357.500,26.100,6.7280,-357.100,-17.300,2.000,357.100,17.300,2.000,4.126e+04 +2025,324.122054,10,348.000,27.200,6.4300,-347.500,-2.100,-18.400,347.500,2.100,-18.400,4.481e+04 +2025,324.155763,10,352.200,26.300,6.6620,-351.700,-13.700,-11.500,351.700,13.700,-11.500,4.190e+04 +2025,324.176694,10,357.100,27.000,7.0520,-356.600,-19.400,-5.000,356.600,19.400,-5.000,4.416e+04 +2025,324.180189,10,358.700,28.700,7.3070,-358.300,-17.000,-6.800,358.300,17.000,-6.800,4.989e+04 +2025,324.261512,10,365.700,35.800,9.6010,-365.200,-14.900,12.600,365.200,14.900,12.600,7.763e+04 +2025,324.304503,10,368.700,33.700,10.7280,-367.900,-22.800,-9.200,367.900,22.800,-9.200,6.879e+04 +2025,324.383533,10,413.300,32.700,12.6590,-411.300,11.300,39.500,411.300,-11.300,39.500,6.477e+04 +2025,324.418407,10,412.500,39.200,15.2730,-410.600,-30.800,24.300,410.600,30.800,24.300,9.308e+04 +2025,324.600891,10,418.900,43.400,8.8230,-418.500,-17.700,-7.600,418.500,17.700,-7.600,1.141e+05 +2025,325.113329,10,407.200,82.400,3.4170,-406.200,11.700,26.100,406.200,-11.700,26.100,4.113e+05 +2025,325.159815,10,474.500,71.100,8.6520,-473.100,24.400,-27.500,473.100,-24.400,-27.500,3.062e+05 +2025,325.173757,10,475.700,63.000,8.8290,-473.800,40.400,13.400,473.800,-40.400,13.400,2.404e+05 +2025,325.415470,10,451.600,44.000,8.7470,-450.500,6.700,-31.400,450.500,-6.700,-31.400,1.173e+05 +2025,325.468945,10,439.800,37.300,8.1980,-439.200,-4.800,-22.600,439.200,4.800,-22.600,8.428e+04 +2025,325.474770,10,445.700,35.700,8.3930,-444.400,5.700,-32.800,444.400,-5.700,-32.800,7.720e+04 +2025,325.638581,10,426.200,33.000,8.3750,-425.400,5.800,-25.200,425.400,-5.800,-25.200,6.596e+04 +2025,325.660677,10,436.600,30.900,8.8040,-434.700,7.800,-39.900,434.700,-7.800,-39.900,5.784e+04 +2025,325.678114,10,435.700,30.500,8.4290,-433.700,7.500,-41.100,433.700,-7.500,-41.100,5.635e+04 +2025,325.679279,10,436.700,29.900,8.4330,-435.400,5.200,-34.000,435.400,-5.200,-34.000,5.415e+04 +2025,325.743237,10,412.500,32.900,9.9360,-412.300,-10.000,-10.300,412.300,10.000,-10.300,6.557e+04 +2025,325.754850,10,430.100,32.200,8.9910,-428.300,0.300,-39.200,428.300,-0.300,-39.200,6.281e+04 +2025,325.846620,10,435.600,64.500,8.3420,-434.600,14.900,-24.600,434.600,-14.900,-24.600,2.520e+05 +2025,326.056954,10,429.000,46.200,6.8740,-428.200,-16.400,-19.200,428.200,16.400,-19.200,1.293e+05 +2025,326.585700,10,421.200,35.700,7.5540,-420.400,-24.000,6.400,420.400,24.000,6.400,7.720e+04 +2025,326.589195,10,425.900,35.800,7.3840,-425.000,-26.600,7.100,425.000,26.600,7.100,7.763e+04 +2025,326.665931,10,396.000,41.000,7.0650,-395.000,-27.000,-4.400,395.000,27.000,-4.400,1.018e+05 +2025,326.743760,10,424.400,22.700,7.0800,-423.400,-20.700,-19.400,423.400,20.700,-19.400,3.121e+04 +2025,326.744925,10,423.600,21.400,7.0050,-422.700,-18.000,-20.000,422.700,18.000,-20.000,2.774e+04 +2025,326.758867,10,422.200,30.700,6.8470,-420.700,-33.800,-12.300,420.700,33.800,-12.300,5.709e+04 +2025,326.796071,10,419.400,24.600,6.2170,-418.600,-21.300,-13.200,418.600,21.300,-13.200,3.666e+04 +2025,326.901820,10,425.200,32.300,7.2080,-422.800,-44.600,-7.100,422.800,44.600,-7.100,6.320e+04 +2025,326.941353,10,422.600,19.400,7.8240,-421.200,-33.200,-11.600,421.200,33.200,-11.600,2.280e+04 +2025,326.948306,10,424.000,16.900,6.3740,-422.500,-35.900,3.500,422.500,35.900,3.500,1.730e+04 +2025,327.087728,10,377.300,42.400,4.1750,-377.000,9.000,-12.800,377.000,-9.000,-12.800,1.089e+05 +2025,327.249246,10,431.000,34.800,16.7070,-430.500,2.700,-20.000,430.500,-2.700,-20.000,7.336e+04 +2025,327.270177,10,426.400,34.400,9.4030,-426.300,-3.800,-9.400,426.300,3.800,-9.400,7.168e+04 +2025,327.273672,10,426.800,30.600,7.6210,-426.400,-9.200,-17.100,426.400,9.200,-17.100,5.672e+04 +2025,327.288779,10,424.500,32.100,9.1640,-424.000,-14.500,-15.200,424.000,14.500,-15.200,6.242e+04 +2025,327.291109,10,420.700,31.300,10.3320,-419.700,-21.300,-19.700,419.700,21.300,-19.700,5.934e+04 +2025,327.307381,10,444.900,37.100,12.8400,-443.400,-0.600,-35.900,443.400,0.600,-35.900,8.337e+04 +2025,327.312004,10,444.400,36.900,11.5180,-442.900,2.000,-36.600,442.900,-2.000,-36.600,8.248e+04 +2025,327.324817,10,421.100,38.100,10.7680,-419.900,-16.400,-26.100,419.900,16.400,-26.100,8.793e+04 +2025,327.403847,10,430.800,34.800,10.3190,-428.600,-40.500,-14.500,428.600,40.500,-14.500,7.336e+04 +2025,327.405012,10,431.300,36.900,10.7830,-428.700,-36.300,-31.300,428.700,36.300,-31.300,8.248e+04 +2025,327.424742,10,415.500,36.900,11.2470,-413.400,-33.900,-25.300,413.400,33.900,-25.300,8.248e+04 +2025,327.457286,10,425.400,36.400,11.5400,-423.600,-39.200,-4.200,423.600,39.200,-4.200,8.026e+04 +2025,327.460780,10,425.500,35.600,11.5610,-422.900,-45.900,-4.800,422.900,45.900,-4.800,7.677e+04 +2025,327.467733,10,422.000,34.500,10.5760,-419.700,-41.800,-13.200,419.700,41.800,-13.200,7.210e+04 +2025,327.496819,10,434.300,39.800,14.8230,-431.600,-34.500,-33.200,431.600,34.500,-33.200,9.595e+04 +2025,327.499149,10,440.800,40.500,15.4820,-437.900,-41.800,-27.400,437.900,41.800,-27.400,9.936e+04 +2025,327.521208,10,428.000,39.600,15.1260,-425.200,-40.600,-26.500,425.200,40.600,-26.500,9.499e+04 +2025,327.540975,10,427.400,35.500,13.2250,-424.100,-51.200,-14.200,424.100,51.200,-14.200,7.634e+04 +2025,327.542140,10,430.500,38.600,13.3390,-427.400,-49.200,-13.600,427.400,49.200,-13.600,9.025e+04 +2025,327.543305,10,432.600,41.100,14.8640,-429.700,-47.000,-15.600,429.700,47.000,-15.600,1.023e+05 +2025,327.546799,10,428.800,37.700,13.6070,-425.500,-50.000,-17.000,425.500,50.000,-17.000,8.609e+04 +2025,327.829209,10,464.400,61.000,13.8380,-463.200,32.000,-8.000,463.200,-32.000,-8.000,2.254e+05 +2025,327.848940,10,472.000,54.700,14.0860,-469.500,-46.300,-13.700,469.500,46.300,-13.700,1.812e+05 +2025,327.910496,10,461.000,61.800,12.3640,-459.600,36.100,4.500,459.600,-36.100,4.500,2.313e+05 +2025,327.944241,10,472.200,62.300,13.4560,-470.800,35.000,-10.100,470.800,-35.000,-10.100,2.351e+05 +2025,327.959312,10,492.600,65.800,11.9460,-492.100,20.500,-5.900,492.100,-20.500,-5.900,2.623e+05 +2025,327.962807,10,491.900,63.900,12.7440,-491.000,28.300,-9.500,491.000,-28.300,-9.500,2.473e+05 +2025,327.989526,10,469.900,70.900,13.1290,-469.600,17.800,-2.600,469.600,-17.800,-2.600,3.045e+05 +2025,328.033719,10,446.600,64.400,11.8440,-446.400,10.500,-8.100,446.400,-10.500,-8.100,2.512e+05 +2025,328.039507,10,442.400,68.200,11.4470,-442.300,0.200,-11.200,442.300,-0.200,-11.200,2.817e+05 +2025,328.069758,10,461.200,75.400,14.1490,-459.600,-37.900,7.000,459.600,37.900,7.000,3.444e+05 +2025,328.079040,10,479.800,64.700,10.7020,-479.400,-15.000,12.400,479.400,15.000,12.400,2.536e+05 +2025,328.241687,10,455.000,64.100,10.0330,-452.800,-17.100,-41.200,452.800,17.100,-41.200,2.489e+05 +2025,328.326578,10,537.300,74.400,14.4420,-535.200,-24.700,-41.200,535.200,24.700,-41.200,3.353e+05 +2025,328.381145,10,540.300,83.700,17.4400,-539.200,0.600,-35.100,539.200,-0.600,-35.100,4.244e+05 +2025,328.551218,10,689.900,91.400,6.8310,-673.400,142.300,-47.300,673.400,-142.300,-47.300,5.060e+05 +2025,328.560464,10,683.400,98.400,5.9920,-679.100,76.000,-11.800,679.100,-76.000,-11.800,5.865e+05 +2025,329.051826,10,751.400,86.200,2.7730,-746.800,-6.500,82.500,746.800,6.500,82.500,4.501e+05 +2025,329.073521,10,768.200,81.700,3.0510,-767.700,-26.600,-13.200,767.700,26.600,-13.200,4.043e+05 +2025,329.083714,10,752.800,83.800,3.3330,-750.800,-6.500,-54.000,750.800,6.500,-54.000,4.254e+05 +2025,329.216547,10,775.900,94.000,2.8770,-774.000,-6.700,53.600,774.000,6.700,53.600,5.352e+05 +2025,329.301584,10,783.300,84.700,3.7210,-782.600,27.200,18.700,782.600,-27.200,18.700,4.346e+05 +2025,329.459899,10,785.000,73.000,2.7080,-781.200,-1.500,-77.200,781.200,1.500,-77.200,3.228e+05 +2025,329.506240,10,799.400,72.400,2.5990,-798.000,-26.300,-39.900,798.000,26.300,-39.900,3.175e+05 +2025,329.666883,10,803.000,67.500,2.9230,-802.500,-30.300,2.600,802.500,30.300,2.600,2.760e+05 +2025,329.697498,10,786.600,67.200,2.8200,-785.100,-22.100,-44.000,785.100,22.100,-44.000,2.735e+05 +2025,329.727967,10,775.300,58.600,2.4440,-774.400,-22.200,-30.700,774.400,22.200,-30.700,2.080e+05 +2025,329.730260,10,784.500,59.500,2.5370,-783.900,-27.100,-13.500,783.900,27.100,-13.500,2.144e+05 +2025,329.747224,10,786.100,67.400,2.9630,-785.800,-19.200,-8.300,785.800,19.200,-8.300,2.752e+05 +2025,329.836483,10,803.200,73.900,2.9810,-802.800,-22.500,-12.100,802.800,22.500,-12.100,3.308e+05 +2025,329.862511,10,783.900,74.800,3.0040,-781.000,67.900,-3.600,781.000,-67.900,-3.600,3.389e+05 +2025,329.983550,10,771.500,61.100,3.1240,-767.500,68.100,38.200,767.500,-68.100,38.200,2.261e+05 +2025,330.011834,10,798.600,68.400,2.3680,-798.300,-16.300,-14.000,798.300,16.300,-14.000,2.834e+05 +2025,330.040119,10,779.600,67.600,2.5320,-779.500,-13.500,3.600,779.500,13.500,3.600,2.768e+05 +2025,330.048019,10,779.500,63.200,2.7210,-779.100,-24.100,-5.400,779.100,24.100,-5.400,2.419e+05 +2025,330.096616,10,770.000,62.600,3.4130,-767.000,60.500,-31.300,767.000,-60.500,-31.300,2.374e+05 +2025,330.128250,10,812.500,69.400,2.9700,-812.000,-28.500,1.800,812.000,28.500,1.800,2.917e+05 +2025,330.133892,10,811.000,74.400,2.7250,-809.400,-22.200,45.300,809.400,22.200,45.300,3.353e+05 +2025,330.167820,10,817.000,74.000,3.2430,-815.400,-4.000,50.600,815.400,4.000,50.600,3.317e+05 +2025,330.189297,10,813.600,66.300,2.6630,-813.300,-17.700,-13.300,813.300,17.700,-13.300,2.663e+05 +2025,330.251437,10,765.000,58.900,2.4180,-763.900,-39.500,-11.200,763.900,39.500,-11.200,2.101e+05 +2025,330.330867,10,715.600,70.100,2.3080,-715.000,11.800,27.200,715.000,-11.800,27.200,2.977e+05 +2025,330.338876,10,723.400,75.500,2.7920,-722.300,39.500,5.300,722.300,-39.500,5.300,3.453e+05 +2025,330.344555,10,732.700,65.800,2.8120,-732.400,-15.000,-18.000,732.400,15.000,-18.000,2.623e+05 +2025,330.347940,10,731.500,61.900,2.6460,-731.000,-24.100,12.900,731.000,24.100,12.900,2.321e+05 +2025,330.371638,10,757.300,68.900,2.6780,-754.500,62.900,-17.400,754.500,-62.900,-17.400,2.876e+05 +2025,330.379647,10,753.600,65.000,3.0820,-750.500,68.500,-0.800,750.500,-68.500,-0.800,2.559e+05 +2025,330.381867,10,722.100,66.100,2.6570,-721.100,38.000,8.400,721.100,-38.000,8.400,2.647e+05 +2025,330.394353,10,779.300,66.800,3.2540,-775.000,67.700,-47.000,775.000,-67.700,-47.000,2.703e+05 +2025,330.461444,10,717.800,62.900,2.5370,-715.400,58.400,7.200,715.400,-58.400,7.200,2.397e+05 +2025,330.498865,10,697.800,66.000,2.7370,-694.800,64.000,-2.600,694.800,-64.000,-2.600,2.639e+05 +2025,330.502324,10,713.300,60.400,2.8100,-710.000,62.200,30.200,710.000,-62.200,30.200,2.210e+05 +2025,330.506910,10,711.800,62.200,2.7360,-708.200,68.400,20.100,708.200,-68.400,20.100,2.344e+05 +2025,330.543350,10,717.700,59.700,2.8630,-717.000,-15.600,28.000,717.000,15.600,28.000,2.159e+05 +2025,330.550230,10,701.100,58.100,2.6820,-700.200,4.300,-36.600,700.200,-4.300,-36.600,2.045e+05 +2025,330.552523,10,734.600,55.100,2.8090,-732.800,16.000,-50.000,732.800,-16.000,-50.000,1.839e+05 +2025,330.568395,10,724.100,59.000,2.9480,-721.700,22.400,-54.100,721.700,-22.400,-54.100,2.109e+05 +2025,330.570652,10,728.500,60.000,2.8700,-725.200,50.900,-45.700,725.200,-50.900,-45.700,2.181e+05 +2025,330.579752,10,728.800,62.400,2.7980,-727.300,-3.800,-45.800,727.300,3.800,-45.800,2.359e+05 +2025,330.597954,10,699.200,66.200,2.5200,-698.800,-2.000,-21.100,698.800,2.000,-21.100,2.655e+05 +2025,330.671268,10,690.400,50.700,2.2550,-687.900,43.100,40.300,687.900,-43.100,40.300,1.557e+05 +2025,330.681716,10,709.600,59.300,2.6480,-707.500,-4.100,54.200,707.500,4.100,54.200,2.130e+05 +2025,330.704941,10,687.700,59.500,2.9760,-686.500,-5.100,41.100,686.500,5.100,41.100,2.144e+05 +2025,331.118074,10,717.200,83.600,2.5050,-716.600,15.700,-25.500,716.600,-15.700,-25.500,4.233e+05 +2025,331.262629,10,745.800,63.200,3.0430,-745.000,-11.700,-32.800,745.000,11.700,-32.800,2.419e+05 +2025,331.345190,10,739.700,58.100,2.9520,-739.600,-13.400,-5.300,739.600,13.400,-5.300,2.045e+05 +2025,331.359896,10,739.100,57.900,2.8640,-739.000,0.700,14.900,739.000,-0.700,14.900,2.031e+05 +2025,331.515008,10,684.000,58.200,3.7170,-683.600,-23.300,11.400,683.600,23.300,11.400,2.052e+05 +2025,331.520760,10,687.100,56.100,3.6600,-686.600,-25.500,0.000,686.600,25.500,0.000,1.906e+05 +2025,331.542784,10,678.900,55.600,3.6030,-677.600,-5.800,-41.400,677.600,5.800,-41.400,1.873e+05 +2025,331.965745,10,672.500,58.200,3.1400,-671.500,-17.200,-31.400,671.500,17.200,-31.400,2.052e+05 +2025,332.026137,10,643.800,63.600,3.3620,-642.200,40.300,21.800,642.200,-40.300,21.800,2.450e+05 +2025,332.069201,10,642.700,57.500,3.4290,-642.000,8.500,30.000,642.000,-8.500,30.000,2.003e+05 +2025,332.071531,10,645.800,55.000,3.2920,-645.200,-9.700,26.200,645.200,9.700,26.200,1.832e+05 +2025,332.105203,10,651.800,61.200,3.6640,-651.600,2.200,15.500,651.600,-2.200,15.500,2.269e+05 +2025,332.140041,10,659.100,58.600,3.8100,-659.000,3.400,-8.100,659.000,-3.400,-8.100,2.080e+05 +2025,332.142371,10,669.300,57.700,3.7910,-669.200,-5.100,9.800,669.200,5.100,9.800,2.017e+05 +2025,332.171420,10,665.200,53.500,3.3530,-665.000,-15.300,5.000,665.000,15.300,5.000,1.734e+05 +2025,332.199341,10,638.200,63.500,3.3860,-637.500,-1.400,-30.000,637.500,1.400,-30.000,2.442e+05 +2025,332.226024,10,615.000,49.800,2.6920,-614.700,7.900,18.800,614.700,-7.900,18.800,1.502e+05 +2025,332.235343,10,646.000,47.900,2.8600,-645.600,-17.300,15.900,645.600,17.300,15.900,1.390e+05 +2025,332.249285,10,640.100,45.100,2.7400,-639.500,-18.000,20.500,639.500,18.000,20.500,1.232e+05 +2025,332.269052,10,636.000,46.800,2.5900,-634.600,-40.800,-9.800,634.600,40.800,-9.800,1.327e+05 +2025,332.309714,10,633.900,59.400,3.5070,-633.300,-26.100,-4.600,633.300,26.100,-4.600,2.137e+05 +2025,332.313208,10,650.800,60.100,3.3780,-649.800,-34.700,-11.500,649.800,34.700,-11.500,2.188e+05 +2025,332.345752,10,645.200,63.700,3.7670,-643.300,47.400,-13.200,643.300,-47.400,-13.200,2.458e+05 +2025,332.364354,10,643.900,48.700,3.1200,-643.400,-25.500,2.400,643.400,25.500,2.400,1.437e+05 +2025,332.370142,10,639.000,57.100,3.4800,-638.800,-2.000,13.100,638.800,2.000,13.100,1.975e+05 +2025,332.385249,10,643.700,56.600,3.3840,-643.400,-18.900,-2.700,643.400,18.900,-2.700,1.941e+05 +2025,332.443312,10,624.800,62.900,3.1710,-623.000,32.500,-33.300,623.000,-32.500,-33.300,2.397e+05 +2025,332.480515,10,626.200,60.200,3.2060,-625.300,33.700,0.900,625.300,-33.700,0.900,2.195e+05 +2025,332.501447,10,631.500,57.700,3.1680,-631.200,16.000,11.400,631.200,-16.000,11.400,2.017e+05 +2025,332.503777,10,656.000,54.700,3.2560,-651.600,66.700,-36.500,651.600,-66.700,-36.500,1.812e+05 +2025,332.516554,10,640.800,55.100,3.7240,-637.400,61.600,-21.700,637.400,-61.600,-21.700,1.839e+05 +2025,332.539815,10,645.800,51.900,3.2630,-643.500,54.200,3.100,643.500,-54.200,3.100,1.632e+05 +2025,332.549098,10,619.300,60.400,3.4600,-617.300,-2.400,-49.000,617.300,2.400,-49.000,2.210e+05 +2025,332.573488,10,616.000,62.100,3.0380,-615.500,16.100,-17.700,615.500,-16.100,-17.700,2.336e+05 +2025,332.586265,10,637.000,57.500,3.9220,-634.000,0.600,-61.200,634.000,-0.600,-61.200,2.003e+05 +2025,332.609526,10,622.200,56.500,3.6790,-621.700,-19.000,-15.000,621.700,19.000,-15.000,1.934e+05 +2025,332.666460,10,637.400,51.700,3.2070,-636.000,-32.200,-26.800,636.000,32.200,-26.800,1.619e+05 +2025,332.690850,10,619.900,51.400,3.2760,-617.900,-16.000,-47.900,617.900,16.000,-47.900,1.600e+05 +2025,332.704792,10,617.200,52.500,3.5030,-615.400,-23.300,-40.700,615.400,23.300,-40.700,1.670e+05 +2025,332.705957,10,614.300,54.800,3.4880,-612.200,-7.800,-50.300,612.200,7.800,-50.300,1.819e+05 +2025,332.721064,10,610.400,53.500,3.5090,-607.800,48.800,-28.900,607.800,-48.800,-28.900,1.734e+05 +2025,332.790775,10,623.900,54.900,2.3620,-623.300,-19.900,-18.000,623.300,19.900,-18.000,1.826e+05 +2025,332.797765,10,621.000,51.900,3.0000,-619.500,-22.000,-36.000,619.500,22.000,-36.000,1.632e+05 +2025,332.803589,10,616.100,53.000,3.2710,-614.800,-26.800,-29.400,614.800,26.800,-29.400,1.702e+05 +2025,332.811707,10,616.900,49.700,2.7610,-616.200,-23.600,-15.000,616.200,23.600,-15.000,1.496e+05 +2025,332.881454,10,620.600,52.900,3.0860,-619.100,-22.200,-36.500,619.100,22.200,-36.500,1.695e+05 +2025,332.983709,10,626.400,46.800,2.3420,-623.700,-19.100,-55.100,623.700,19.100,-55.100,1.327e+05 +2025,333.005769,10,618.500,60.500,2.1700,-618.400,7.300,-10.800,618.400,-7.300,-10.800,2.217e+05 +2025,333.085964,10,629.700,43.700,2.1720,-625.600,70.400,-14.100,625.600,-70.400,-14.100,1.157e+05 +2025,333.125497,10,626.600,48.600,2.9760,-625.500,-19.600,-30.900,625.500,19.600,-30.900,1.431e+05 +2025,333.188219,10,613.800,48.300,2.6220,-613.500,-15.200,10.400,613.500,15.200,10.400,1.413e+05 +2025,333.203326,10,618.800,49.600,2.6580,-618.400,-14.200,14.400,618.400,14.200,14.400,1.490e+05 +2025,333.224221,10,625.800,50.100,2.9820,-625.200,-26.300,-3.200,625.200,26.300,-3.200,1.520e+05 +2025,333.323018,10,608.000,40.800,2.4470,-607.600,-22.000,-6.600,607.600,22.000,-6.600,1.008e+05 +2025,333.366010,10,600.800,42.300,2.6170,-600.200,3.300,25.200,600.200,-3.300,25.200,1.084e+05 +2025,333.442711,10,610.900,44.800,3.1040,-606.500,37.100,-63.300,606.500,-37.100,-63.300,1.216e+05 +2025,333.510092,10,607.700,45.100,3.1350,-604.100,26.600,-60.000,604.100,-26.600,-60.000,1.232e+05 +2025,333.519375,10,623.800,43.800,2.3900,-623.500,-15.500,-15.200,623.500,15.500,-15.200,1.162e+05 +2025,333.539141,10,612.400,45.400,3.1130,-612.100,-10.200,13.400,612.100,10.200,13.400,1.249e+05 +2025,333.550754,10,644.500,58.500,3.0590,-644.300,4.000,18.600,644.300,-4.000,18.600,2.073e+05 +2025,333.571686,10,607.600,51.100,3.7100,-607.000,-16.100,-20.000,607.000,16.100,-20.000,1.582e+05 +2025,333.594947,10,594.000,51.800,3.6460,-591.800,50.700,-8.200,591.800,-50.700,-8.200,1.625e+05 +2025,333.599606,10,596.300,48.800,4.0370,-595.900,6.400,19.100,595.900,-6.400,19.100,1.443e+05 +2025,333.601900,10,600.600,50.400,4.1260,-600.400,-10.600,-11.600,600.400,10.600,-11.600,1.539e+05 +2025,333.621666,10,617.900,44.200,4.0780,-615.300,-13.800,-54.700,615.300,13.800,-54.700,1.183e+05 +2025,333.630949,10,611.600,47.000,3.9770,-610.900,-30.300,-4.000,610.900,30.300,-4.000,1.338e+05 +2025,333.647221,10,627.900,53.200,4.2060,-627.300,-15.900,-21.200,627.300,15.900,-21.200,1.714e+05 +2025,333.675141,10,617.200,52.000,4.7220,-617.200,-3.000,-5.600,617.200,3.000,-5.600,1.638e+05 +2025,333.702989,10,633.600,59.600,4.9900,-633.600,-7.300,0.700,633.600,7.300,0.700,2.152e+05 +2025,333.714602,10,646.700,59.800,4.4740,-646.600,-8.300,3.200,646.600,8.300,3.200,2.166e+05 +2025,333.751805,10,624.800,54.700,4.7580,-624.800,-8.400,-2.200,624.800,8.400,-2.200,1.812e+05 +2025,333.777396,10,621.000,65.100,4.8510,-620.900,6.300,-5.800,620.900,-6.300,-5.800,2.567e+05 +2025,333.791302,10,620.200,68.500,4.7820,-620.200,5.700,-2.800,620.200,-5.700,-2.800,2.842e+05 +2025,333.804079,10,615.300,68.200,4.3230,-615.300,5.700,-3.700,615.300,-5.700,-3.700,2.817e+05 +2025,333.834330,10,612.900,61.800,3.4660,-612.900,1.600,0.000,612.900,-1.600,0.000,2.313e+05 +2025,334.045792,10,625.800,54.200,3.8380,-625.700,-3.800,-5.000,625.700,3.800,-5.000,1.779e+05 +2025,334.049287,10,616.500,49.500,3.5050,-616.500,-4.000,-4.200,616.500,4.000,-4.200,1.484e+05 +2025,334.052781,10,610.900,49.800,3.2530,-610.900,2.300,-3.100,610.900,-2.300,-3.100,1.502e+05 +2025,334.065559,10,626.300,58.600,3.2030,-624.900,-6.600,-40.900,624.900,6.600,-40.900,2.080e+05 +2025,334.094645,10,610.500,53.300,3.2830,-610.000,21.500,-11.500,610.000,-21.500,-11.500,1.721e+05 +2025,334.098103,10,614.400,50.800,3.4450,-614.300,7.200,-11.400,614.300,-7.200,-11.400,1.563e+05 +2025,334.125987,10,627.700,48.200,2.8640,-626.600,-8.400,-36.000,626.600,8.400,-36.000,1.407e+05 +2025,334.142296,10,654.400,55.300,2.7800,-652.900,-16.900,-40.900,652.900,16.900,-40.900,1.852e+05 +2025,334.169015,10,621.000,52.600,2.4720,-620.900,9.000,-6.700,620.900,-9.000,-6.700,1.676e+05 +2025,334.175968,10,626.600,50.100,2.9070,-624.500,9.100,-50.300,624.500,-9.100,-50.300,1.520e+05 +2025,334.177133,10,631.800,54.300,3.1810,-628.600,24.600,-58.700,628.600,-24.600,-58.700,1.786e+05 +2025,334.227078,10,634.500,53.500,2.8390,-631.700,4.400,-59.500,631.700,-4.400,-59.500,1.734e+05 +2025,334.228242,10,631.700,49.800,2.8080,-628.800,5.800,-60.200,628.800,-5.800,-60.200,1.502e+05 +2025,334.400245,10,612.100,50.100,3.3020,-611.100,-9.700,-33.800,611.100,9.700,-33.800,1.520e+05 +2025,334.450226,10,583.700,63.600,3.1640,-580.900,56.300,8.400,580.900,-56.300,8.400,2.450e+05 +2025,334.561764,10,585.500,58.200,2.8410,-585.100,-4.700,22.900,585.100,4.700,22.900,2.052e+05 +2025,334.615203,10,585.300,53.800,2.5210,-584.100,0.000,-37.600,584.100,-0.000,-37.600,1.753e+05 +2025,334.634970,10,559.000,55.900,2.5140,-557.100,43.600,-12.700,557.100,-43.600,-12.700,1.893e+05 +2025,334.667513,10,567.800,49.000,2.4230,-565.500,15.100,-49.500,565.500,-15.100,-49.500,1.454e+05 +2025,334.674503,10,578.900,49.800,2.3020,-576.900,19.300,-43.200,576.900,-19.300,-43.200,1.502e+05 +2025,334.694269,10,569.500,43.400,2.3440,-568.200,-19.000,-34.400,568.200,19.000,-34.400,1.141e+05 +2025,334.737224,10,555.800,39.600,2.4140,-553.600,-2.100,-49.000,553.600,2.100,-49.000,9.499e+04 +2025,334.777886,10,567.000,40.700,2.5130,-561.900,62.500,-43.000,561.900,-62.500,-43.000,1.003e+05 +2025,334.781381,10,585.400,44.200,2.6940,-584.600,-30.200,-7.600,584.600,30.200,-7.600,1.183e+05 +2025,334.858081,10,574.900,46.600,2.7790,-573.700,-24.200,-27.700,573.700,24.200,-27.700,1.315e+05 +2025,334.923169,10,552.400,41.600,2.1980,-551.500,-2.200,30.700,551.500,2.200,30.700,1.048e+05 +2025,334.924334,10,551.100,43.100,2.2000,-549.900,2.600,36.100,549.900,-2.600,36.100,1.125e+05 +2025,334.937111,10,547.100,46.600,2.4370,-546.700,2.300,21.400,546.700,-2.300,21.400,1.315e+05 +2025,334.941771,10,569.200,46.800,2.3520,-568.300,-9.600,29.600,568.300,9.600,29.600,1.327e+05 +2025,334.942935,10,562.200,48.200,2.8140,-561.900,-11.900,14.300,561.900,11.900,14.300,1.407e+05 +2025,334.944100,10,569.300,42.300,2.3770,-568.300,0.200,34.200,568.300,-0.200,34.200,1.084e+05 +2025,334.952218,10,570.900,45.600,2.4600,-569.900,0.500,34.200,569.900,-0.500,34.200,1.260e+05 +2025,334.968490,10,547.700,43.800,2.5020,-547.000,-9.500,25.700,547.000,9.500,25.700,1.162e+05 +2025,335.011481,10,538.700,49.200,2.8100,-538.600,-9.200,6.800,538.600,9.200,6.800,1.466e+05 +2025,335.097464,10,548.600,44.600,3.1970,-548.200,-7.900,-18.900,548.200,7.900,-18.900,1.205e+05 +2025,335.112608,10,521.500,48.000,3.4690,-521.200,-3.000,-17.600,521.200,3.000,-17.600,1.396e+05 +2025,335.116066,10,524.500,52.500,3.8440,-524.500,6.500,-2.800,524.500,-6.500,-2.800,1.670e+05 +2025,335.169542,10,505.200,49.300,3.2590,-505.000,9.400,-9.200,505.000,-9.400,-9.200,1.472e+05 +2025,335.191602,10,507.300,43.000,3.5130,-507.300,3.700,-6.400,507.300,-3.700,-6.400,1.120e+05 +2025,335.228769,10,504.200,44.300,3.8870,-503.600,6.900,-22.900,503.600,-6.900,-22.900,1.189e+05 +2025,335.274090,10,520.600,41.300,4.0800,-520.300,-3.300,-16.600,520.300,3.300,-16.600,1.033e+05 +2025,335.282208,10,499.000,48.100,4.7160,-498.800,11.600,-6.200,498.800,-11.600,-6.200,1.401e+05 +2025,335.298480,10,487.600,46.800,5.5680,-487.200,5.200,-20.700,487.200,-5.200,-20.700,1.327e+05 +2025,335.301975,10,493.700,48.600,5.6240,-493.300,3.500,-21.300,493.300,-3.500,-21.300,1.431e+05 +2025,335.303140,10,496.300,49.000,5.5030,-495.900,4.300,-19.200,495.900,-4.300,-19.200,1.454e+05 +2025,335.304304,10,497.600,48.400,5.6930,-497.300,3.200,-18.300,497.300,-3.200,-18.300,1.419e+05 +2025,335.318247,10,501.400,48.100,5.4980,-501.200,3.600,-12.000,501.200,-3.600,-12.000,1.401e+05 +2025,335.326401,10,511.100,39.700,4.7760,-511.100,3.800,-3.000,511.100,-3.800,-3.000,9.547e+04 +2025,335.327566,10,510.100,42.100,4.9400,-510.100,4.500,-5.100,510.100,-4.500,-5.100,1.074e+05 +2025,335.333354,10,502.800,37.100,3.8690,-502.400,-7.300,-18.900,502.400,7.300,-18.900,8.337e+04 +2025,335.355450,10,500.700,44.500,5.1990,-500.500,-1.100,-11.800,500.500,1.100,-11.800,1.200e+05 +2025,335.356579,10,502.300,44.100,4.8940,-502.100,-6.000,-12.500,502.100,6.000,-12.500,1.178e+05 +2025,335.364733,10,501.000,43.600,5.1150,-500.900,-5.900,-10.800,500.900,5.900,-10.800,1.151e+05 +2025,335.370557,10,508.300,43.900,4.8780,-508.100,-8.400,-12.700,508.100,8.400,-12.700,1.167e+05 +2025,335.390324,10,500.000,43.100,4.7880,-499.900,-3.700,-10.100,499.900,3.700,-10.100,1.125e+05 +2025,335.398442,10,500.600,46.600,5.0350,-500.500,-3.500,-7.400,500.500,3.500,-7.400,1.315e+05 +2025,335.460035,10,490.800,40.800,5.0330,-490.300,-14.500,-14.800,490.300,14.500,-14.800,1.008e+05 +2025,335.461200,10,492.500,43.600,4.5900,-492.100,-12.000,-17.200,492.100,12.000,-17.200,1.151e+05 +2025,335.470519,10,485.000,40.700,5.0480,-484.400,-15.200,-19.600,484.400,15.200,-19.600,1.003e+05 +2025,335.479802,10,483.900,45.000,4.1430,-483.500,-6.600,-17.800,483.500,6.600,-17.800,1.227e+05 +2025,335.504192,10,487.200,35.400,4.2430,-486.800,-18.000,-6.400,486.800,18.000,-6.400,7.591e+04 +2025,335.512310,10,487.300,33.300,4.9230,-487.000,-17.400,-7.300,487.000,17.400,-7.300,6.717e+04 +2025,335.536700,10,484.300,35.900,4.5920,-483.600,-22.200,-12.900,483.600,22.200,-12.900,7.807e+04 +2025,335.665710,10,467.500,47.400,2.2400,-467.300,-1.900,-13.500,467.300,1.900,-13.500,1.361e+05 +2025,335.865561,10,439.700,33.100,3.9120,-438.700,-27.600,12.200,438.700,27.600,12.200,6.637e+04 +2025,336.246734,10,443.200,33.000,3.9070,-442.500,-23.200,11.700,442.500,23.200,11.700,6.596e+04 +2025,336.256053,10,449.100,42.400,4.0930,-447.800,6.400,-33.500,447.800,-6.400,-33.500,1.089e+05 +2025,336.878868,10,404.100,33.100,6.5440,-403.400,-21.700,-8.900,403.400,21.700,-8.900,6.637e+04 +2025,336.929977,10,395.500,18.100,8.4820,-394.900,-20.900,-3.900,394.900,20.900,-3.900,1.984e+04 +2025,336.938094,10,400.200,17.100,8.9860,-399.600,-21.800,-3.000,399.600,21.800,-3.000,1.771e+04 +2025,336.941589,10,396.500,15.600,8.0600,-395.700,-25.700,-0.800,395.700,25.700,-0.800,1.474e+04 +2025,336.960191,10,397.800,14.700,8.7040,-397.000,-23.000,-10.000,397.000,23.000,-10.000,1.309e+04 +2025,337.048540,10,405.600,25.400,11.2380,-405.000,-22.600,-5.000,405.000,22.600,-5.000,3.908e+04 +2025,337.057823,10,389.500,30.700,11.6720,-389.400,-4.500,-6.300,389.400,4.500,-6.300,5.709e+04 +2025,337.061317,10,397.100,28.800,12.6050,-396.900,-12.300,0.500,396.900,12.300,0.500,5.024e+04 +2025,337.089202,10,388.300,29.800,12.3020,-388.200,-5.000,-1.500,388.200,5.000,-1.500,5.379e+04 +2025,337.096191,10,396.600,33.000,13.4160,-396.500,-7.400,2.000,396.500,7.400,2.000,6.596e+04 +2025,337.185633,10,403.200,28.400,12.4240,-402.100,-28.700,9.100,402.100,28.700,9.100,4.886e+04 +2025,337.192586,10,396.800,29.000,11.9930,-395.800,-28.300,-3.200,395.800,28.300,-3.200,5.094e+04 +2025,337.199575,10,394.600,26.200,11.3100,-393.400,-31.400,-4.000,393.400,31.400,-4.000,4.158e+04 +2025,337.204234,10,393.000,26.000,11.6740,-391.800,-30.700,-4.500,391.800,30.700,-4.500,4.095e+04 +2025,337.214682,10,380.900,21.900,9.4640,-379.300,-32.900,-13.100,379.300,32.900,-13.100,2.905e+04 +2025,337.240237,10,379.900,22.200,10.4660,-378.000,-37.200,-8.100,378.000,37.200,-8.100,2.985e+04 +2025,337.261168,10,377.000,20.600,8.5160,-375.100,-37.800,-0.800,375.100,37.800,-0.800,2.571e+04 +2025,337.262333,10,377.000,21.800,9.3360,-374.700,-41.300,-3.300,374.700,41.300,-3.300,2.879e+04 +2025,337.276275,10,379.000,20.900,9.2300,-376.700,-41.300,-0.300,376.700,41.300,-0.300,2.646e+04 +2025,337.284430,10,374.500,20.100,9.0380,-372.400,-39.600,2.700,372.400,39.600,2.700,2.447e+04 +2025,337.332044,10,383.900,16.100,10.2250,-381.900,-37.700,10.900,381.900,37.700,10.900,1.570e+04 +2025,337.355306,10,372.900,16.300,10.4210,-370.500,-42.300,-6.500,370.500,42.300,-6.500,1.609e+04 +2025,337.404122,10,380.800,17.200,9.4640,-378.300,-43.000,4.800,378.300,43.000,4.800,1.792e+04 +2025,337.425017,10,370.700,17.900,8.2880,-367.900,-44.900,-7.200,367.900,44.900,-7.200,1.941e+04 +2025,337.506377,10,386.200,20.200,12.0930,-382.900,-50.600,4.000,382.900,50.600,4.000,2.472e+04 +2025,337.694615,10,488.200,50.700,27.3940,-486.800,17.000,-32.400,486.800,-17.000,-32.400,1.557e+05 +2025,337.708557,10,476.900,54.900,30.4150,-473.800,30.700,-45.100,473.800,-30.700,-45.100,1.826e+05 +2025,337.721334,10,474.800,53.100,31.5750,-472.500,9.800,-46.400,472.500,-9.800,-46.400,1.708e+05 +2025,337.732947,10,470.300,53.900,31.9270,-468.200,12.600,-42.600,468.200,-12.600,-42.600,1.760e+05 +2025,337.775938,10,458.100,41.200,48.0670,-457.800,-12.200,-12.100,457.800,12.200,-12.100,1.028e+05 +2025,337.778268,10,456.200,42.400,41.3340,-455.700,-10.300,-17.600,455.700,10.300,-17.600,1.089e+05 +2025,337.784092,10,455.200,41.600,51.2860,-454.300,-24.800,-14.100,454.300,24.800,-14.100,1.048e+05 +2025,337.786422,10,461.400,41.800,37.5380,-460.900,-11.600,-16.500,460.900,11.600,-16.500,1.058e+05 +2025,337.787551,10,463.500,40.600,42.6230,-463.000,-12.000,-18.600,463.000,12.000,-18.600,9.985e+04 +2025,337.788716,10,464.900,37.200,39.7230,-463.800,-14.900,-29.100,463.800,14.900,-29.100,8.382e+04 +2025,337.805024,10,445.000,29.300,29.1110,-440.900,-57.500,-16.700,440.900,57.500,-16.700,5.200e+04 +2025,337.807354,10,446.000,32.000,34.2240,-441.900,-56.800,-19.700,441.900,56.800,-19.700,6.203e+04 +2025,337.812013,10,449.200,32.500,28.0540,-445.700,-50.800,-22.700,445.700,50.800,-22.700,6.398e+04 +2025,337.815472,10,451.300,31.800,33.9680,-448.000,-48.700,-23.900,448.000,48.700,-23.900,6.125e+04 +2025,337.852639,10,460.300,46.800,25.8150,-458.400,-30.100,-29.300,458.400,30.100,-29.300,1.327e+05 +2025,337.864251,10,460.100,41.700,31.0590,-458.900,-32.300,-6.100,458.900,32.300,-6.100,1.053e+05 +2025,337.867746,10,456.800,44.100,24.7250,-455.100,-37.500,-11.900,455.100,37.500,-11.900,1.178e+05 +2025,337.874735,10,458.800,40.400,39.4800,-457.300,-35.500,-10.100,457.300,35.500,-10.100,9.887e+04 +2025,337.879395,10,456.700,43.800,41.8200,-455.200,-34.000,-15.600,455.200,34.000,-15.600,1.162e+05 +2025,337.889842,10,456.300,45.800,56.2240,-454.600,-34.700,-19.500,454.600,34.700,-19.500,1.271e+05 +2025,337.903785,10,461.500,51.700,19.8380,-458.800,-18.900,-46.100,458.800,18.900,-46.100,1.619e+05 +2025,338.124494,10,677.000,92.500,9.5670,-674.900,46.600,27.300,674.900,-46.600,27.300,5.183e+05 +2025,338.176805,10,644.500,81.700,7.0770,-640.200,72.900,-10.900,640.200,-72.900,-10.900,4.043e+05 +2025,338.249174,10,688.100,75.600,6.1000,-687.100,0.500,-37.100,687.100,-0.500,-37.100,3.462e+05 +2025,338.252668,10,684.300,78.200,5.7660,-683.300,5.100,-36.100,683.300,-5.100,-36.100,3.704e+05 +2025,338.264317,10,675.400,77.000,5.6720,-674.200,39.300,10.800,674.200,-39.300,10.800,3.591e+05 +2025,338.270142,10,711.600,78.600,6.3450,-701.200,109.900,-51.200,701.200,-109.900,-51.200,3.742e+05 +2025,338.387541,10,664.200,76.900,5.9240,-659.800,75.100,-14.500,659.800,-75.100,-14.500,3.582e+05 +2025,338.412877,10,711.600,73.900,5.3060,-711.500,-12.000,-7.000,711.500,12.000,-7.000,3.308e+05 +2025,338.453393,10,739.500,72.200,4.9690,-738.300,7.300,41.700,738.300,-7.300,41.700,3.158e+05 +2025,338.466971,10,701.500,72.700,4.7370,-701.000,-0.500,-27.700,701.000,0.500,-27.700,3.201e+05 +2025,338.468100,10,708.000,77.100,4.7030,-708.000,-3.800,2.200,708.000,3.800,2.200,3.601e+05 +2025,338.472650,10,696.100,72.300,4.4870,-695.900,9.100,9.200,695.900,-9.100,9.200,3.166e+05 +2025,338.510254,10,683.400,75.600,4.2230,-683.100,10.600,-18.400,683.100,-10.600,-18.400,3.462e+05 +2025,338.531950,10,682.600,76.600,4.4220,-679.000,41.000,-56.900,679.000,-41.000,-56.900,3.554e+05 +2025,338.581640,10,669.800,72.700,4.4290,-667.300,47.300,32.100,667.300,-47.300,32.100,3.201e+05 +2025,338.589649,10,671.600,69.200,4.1860,-668.100,35.500,-58.400,668.100,-35.500,-58.400,2.901e+05 +2025,338.599914,10,706.400,66.300,4.1730,-701.600,32.300,-75.800,701.600,-32.300,-75.800,2.663e+05 +2025,338.720370,10,653.300,54.500,4.4260,-651.800,-11.500,-42.400,651.800,11.500,-42.400,1.799e+05 +2025,338.722664,10,646.900,59.500,4.9680,-644.000,33.800,-51.900,644.000,-33.800,-51.900,2.144e+05 +2025,338.742430,10,669.000,60.000,4.5950,-663.400,56.400,65.100,663.400,-56.400,65.100,2.181e+05 +2025,338.750548,10,649.800,57.400,4.8050,-641.300,101.400,24.500,641.300,-101.400,24.500,1.996e+05 +2025,338.793539,10,653.700,57.000,4.6990,-648.400,77.700,29.000,648.400,-77.700,29.000,1.968e+05 +2025,339.105693,10,650.800,70.400,4.5380,-650.200,19.700,19.600,650.200,-19.700,19.600,3.002e+05 +2025,339.138237,10,637.600,73.600,4.2740,-633.300,60.100,-43.800,633.300,-60.100,-43.800,3.281e+05 +2025,339.276495,10,727.700,91.500,4.8760,-724.400,67.000,-15.700,724.400,-67.000,-15.700,5.071e+05 +2025,339.600734,10,627.600,55.100,4.2990,-626.600,34.000,-4.000,626.600,-34.000,-4.000,1.839e+05 +2025,339.603028,10,614.100,51.800,4.7620,-612.800,39.100,7.100,612.800,-39.100,7.100,1.625e+05 +2025,339.635571,10,619.300,56.700,5.4510,-617.200,43.500,26.000,617.200,-43.500,26.000,1.947e+05 +2025,339.661126,10,610.100,59.800,5.3160,-609.600,-8.700,22.700,609.600,8.700,22.700,2.166e+05 +2025,339.682057,10,621.000,60.600,6.9140,-620.800,8.100,13.400,620.800,-8.100,13.400,2.224e+05 +2025,340.244078,10,670.200,82.300,3.9180,-670.000,3.100,16.200,670.000,-3.100,16.200,4.103e+05 +2025,340.778252,10,657.000,68.700,2.6810,-656.400,-19.100,-22.400,656.400,19.100,-22.400,2.859e+05 +2025,340.853787,10,647.200,60.400,2.9650,-646.600,-27.500,-8.400,646.600,27.500,-8.400,2.210e+05 +2025,340.860740,10,650.500,55.000,2.7810,-649.700,-31.700,-8.500,649.700,31.700,-8.500,1.832e+05 +2025,340.945595,10,665.400,52.900,2.8440,-661.600,56.300,43.500,661.600,-56.300,43.500,1.695e+05 +2025,341.022295,10,643.200,52.200,2.9730,-642.400,-21.200,-25.800,642.400,21.200,-25.800,1.651e+05 +2025,341.377877,10,603.800,50.400,3.2900,-600.300,12.900,63.300,600.300,-12.900,63.300,1.539e+05 +2025,341.419704,10,574.500,53.000,3.8600,-574.100,-4.300,-20.200,574.100,4.300,-20.200,1.702e+05 +2025,341.664876,10,464.600,54.700,2.3580,-463.200,-20.900,29.500,463.200,20.900,29.500,1.812e+05 +2025,342.154093,10,406.800,41.600,0.9830,-403.700,-36.700,34.000,403.700,36.700,34.000,1.048e+05 +2025,343.008139,10,361.200,53.100,1.1330,-356.900,-55.400,-1.000,356.900,55.400,-1.000,1.708e+05 +2025,343.226630,10,371.900,39.100,1.0230,-370.200,-30.300,-19.700,370.200,30.300,-19.700,9.261e+04 +2025,343.276574,10,366.600,42.900,1.0510,-363.200,-41.700,-26.700,363.200,41.700,-26.700,1.115e+05 +2025,343.291645,10,366.200,46.900,1.1330,-364.500,-28.000,-20.700,364.500,28.000,-20.700,1.332e+05 +2025,343.647037,10,370.700,20.500,2.7730,-361.900,7.100,-79.800,361.900,-7.100,-79.800,2.546e+04 +2025,343.700525,10,388.600,30.800,4.0760,-380.800,-48.700,-60.200,380.800,48.700,-60.200,5.746e+04 +2025,343.714544,10,374.800,31.500,4.0760,-369.000,-39.400,-52.900,369.000,39.400,-52.900,6.010e+04 +2025,343.727324,10,372.300,32.100,3.0140,-368.200,-21.100,-50.600,368.200,21.100,-50.600,6.242e+04 +2025,343.729654,10,371.500,32.900,3.0300,-367.100,-20.300,-53.600,367.100,20.300,-53.600,6.557e+04 +2025,343.743600,10,370.300,27.600,3.4410,-365.500,-15.700,-57.900,365.500,15.700,-57.900,4.614e+04 +2025,343.770326,10,365.000,34.000,2.8390,-360.200,-3.700,-59.000,360.200,3.700,-59.000,7.002e+04 +2025,343.823778,10,350.800,26.100,4.2320,-346.100,-3.700,-57.100,346.100,3.700,-57.100,4.126e+04 +2025,343.935416,10,349.500,26.200,4.0290,-346.200,-15.100,-45.900,346.200,15.100,-45.900,4.158e+04 +2025,344.019199,10,330.800,22.700,2.9560,-324.100,-25.800,-60.700,324.100,25.800,-60.700,3.121e+04 +2025,344.056448,10,347.000,23.600,4.1790,-343.800,-36.800,-28.500,343.800,36.800,-28.500,3.374e+04 +2025,344.057613,10,351.500,22.500,4.0270,-347.200,-39.700,-37.700,347.200,39.700,-37.700,3.067e+04 +2025,344.100615,10,368.200,24.500,6.2420,-365.800,-34.900,-24.100,365.800,34.900,-24.100,3.636e+04 +2025,344.101780,10,372.300,25.200,6.5330,-370.100,-34.400,-22.300,370.100,34.400,-22.300,3.847e+04 +2025,344.104111,10,374.200,23.500,6.2040,-372.100,-33.700,-21.400,372.100,33.700,-21.400,3.345e+04 +2025,344.115726,10,373.900,23.300,6.1410,-372.200,-32.300,-15.200,372.200,32.300,-15.200,3.288e+04 +2025,344.118056,10,374.600,22.800,6.1550,-372.900,-31.600,-17.800,372.900,31.600,-17.800,3.149e+04 +2025,344.122681,10,372.700,21.000,5.7530,-371.100,-30.700,-17.700,371.100,30.700,-17.700,2.671e+04 +2025,344.133167,10,376.600,24.000,7.2310,-374.800,-34.400,-13.000,374.800,34.400,-13.000,3.489e+04 +2025,344.213418,10,402.500,32.500,10.4740,-402.400,-2.000,9.500,402.400,2.000,9.500,6.398e+04 +2025,344.266907,10,400.600,34.200,8.3460,-399.700,-26.300,-1.700,399.700,26.300,-1.700,7.085e+04 +2025,344.280925,10,393.200,34.800,9.3260,-392.900,-14.600,4.700,392.900,14.600,4.700,7.336e+04 +2025,344.294871,10,391.300,35.800,8.7400,-390.100,-25.400,-16.700,390.100,25.400,-16.700,7.763e+04 +2025,344.311147,10,392.200,39.600,8.2530,-390.800,-23.500,-22.900,390.800,23.500,-22.900,9.499e+04 +2025,344.313477,10,399.600,37.100,7.7120,-398.500,-20.600,-22.200,398.500,20.600,-22.200,8.337e+04 +2025,344.314642,10,400.600,36.900,8.3990,-399.400,-18.400,-24.400,399.400,18.400,-24.400,8.248e+04 +2025,344.339038,10,385.900,37.900,8.4730,-385.300,-19.200,-9.100,385.300,19.200,-9.100,8.701e+04 +2025,344.363470,10,383.000,38.200,8.1270,-382.700,-15.200,-2.400,382.700,15.200,-2.400,8.839e+04 +2025,344.429776,10,376.500,35.200,8.3250,-376.100,-14.500,9.000,376.100,14.500,9.000,7.505e+04 +2025,344.434436,10,375.900,34.900,8.4020,-375.600,-12.000,9.700,375.600,12.000,9.700,7.378e+04 +2025,344.462327,10,374.800,33.900,8.2230,-373.900,-24.000,11.900,373.900,24.000,11.900,6.961e+04 +2025,344.468117,10,384.200,34.700,8.1940,-383.100,-20.300,20.800,383.100,20.300,20.800,7.294e+04 +2025,344.524008,10,378.100,31.400,7.8460,-377.200,-23.000,12.100,377.200,23.000,12.100,5.972e+04 +2025,344.526338,10,378.700,29.400,7.9620,-377.700,-24.800,12.000,377.700,24.800,12.000,5.236e+04 +2025,344.539119,10,377.100,30.200,7.7920,-376.000,-26.300,11.000,376.000,26.300,11.000,5.525e+04 +2025,344.555395,10,380.400,30.000,8.4670,-379.000,-32.400,6.700,379.000,32.400,6.700,5.452e+04 +2025,344.564680,10,374.100,28.800,8.0600,-372.600,-29.300,14.300,372.600,29.300,14.300,5.024e+04 +2025,344.587947,10,376.900,27.800,8.4540,-375.200,-34.100,8.800,375.200,34.100,8.800,4.681e+04 +2025,344.619442,10,377.100,27.200,8.5450,-375.300,-36.700,4.600,375.300,36.700,4.600,4.481e+04 +2025,344.643838,10,376.000,26.800,9.4510,-373.500,-43.200,7.200,373.500,43.200,7.200,4.351e+04 +2025,344.663610,10,390.800,27.200,12.2500,-389.000,-37.800,2.900,389.000,37.800,2.900,4.481e+04 +2025,344.668234,10,392.600,27.700,12.5580,-390.700,-38.300,8.500,390.700,38.300,8.500,4.648e+04 +2025,344.677555,10,394.500,30.200,16.0890,-392.800,-36.100,3.000,392.800,36.100,3.000,5.525e+04 +2025,344.683345,10,397.700,30.500,15.7790,-395.100,-45.700,-2.800,395.100,45.700,-2.800,5.635e+04 +2025,344.701987,10,405.900,28.400,14.5810,-403.200,-46.400,-5.200,403.200,46.400,-5.200,4.886e+04 +2025,344.705483,10,402.900,25.500,12.3220,-400.600,-43.700,-1.600,400.600,43.700,-1.600,3.939e+04 +2025,344.722924,10,401.500,27.700,13.4610,-398.000,-53.000,-0.200,398.000,53.000,-0.200,4.648e+04 +2025,344.729915,10,403.000,26.300,12.8050,-400.200,-47.300,-0.100,400.200,47.300,-0.100,4.190e+04 +2025,344.733411,10,403.700,30.600,13.4230,-399.900,-54.400,10.500,399.900,54.400,10.500,5.672e+04 +2025,344.747356,10,401.100,24.600,15.4170,-398.100,-48.700,-4.100,398.100,48.700,-4.100,3.666e+04 +2025,344.749650,10,401.500,25.600,15.4580,-398.500,-48.800,-1.700,398.500,48.800,-1.700,3.970e+04 +2025,344.765926,10,402.700,32.600,21.3620,-398.300,-57.000,15.400,398.300,57.000,15.400,6.438e+04 +2025,344.772917,10,399.200,30.700,26.1760,-395.300,-53.400,16.800,395.300,53.400,16.800,5.709e+04 +2025,344.788028,10,401.700,22.300,21.1580,-398.700,-48.700,-2.400,398.700,48.700,-2.400,3.012e+04 +2025,344.789193,10,400.100,25.500,26.4860,-396.700,-52.100,3.600,396.700,52.100,3.600,3.939e+04 +2025,344.796148,10,403.300,26.200,45.8010,-400.100,-51.100,1.900,400.100,51.100,1.900,4.158e+04 +2025,344.806598,10,404.000,26.000,50.1960,-401.000,-48.500,6.700,401.000,48.500,6.700,4.095e+04 +2025,344.807763,10,405.200,25.200,54.2520,-402.100,-49.500,7.500,402.100,49.500,7.500,3.847e+04 +2025,344.815919,10,405.100,24.000,49.1960,-401.700,-52.400,6.700,401.700,52.400,6.700,3.489e+04 +2025,344.826442,10,407.200,22.400,60.3990,-404.600,-45.500,1.600,404.600,45.500,1.600,3.039e+04 +2025,344.829938,10,408.600,24.200,50.5500,-405.100,-53.400,2.700,405.100,53.400,2.700,3.547e+04 +2025,344.865949,10,447.200,17.400,20.6710,-446.800,-3.600,-18.400,446.800,3.600,-18.400,1.834e+04 +2025,344.878729,10,448.000,14.100,16.4450,-447.600,-1.300,-17.700,447.600,1.300,-17.700,1.204e+04 +2025,344.892675,10,450.100,15.200,16.6300,-449.800,-2.600,-15.600,449.800,2.600,-15.600,1.399e+04 +2025,344.904327,10,454.700,14.900,17.2770,-454.500,3.300,-13.200,454.500,-3.300,-13.200,1.345e+04 +2025,344.932254,10,455.600,15.600,13.4580,-453.200,45.600,-12.600,453.200,-45.600,-12.600,1.474e+04 +2025,344.942777,10,458.700,16.100,19.8030,-458.600,6.800,3.400,458.600,-6.800,3.400,1.570e+04 +2025,344.945108,10,455.300,17.900,19.7830,-455.200,6.100,0.100,455.200,-6.100,0.100,1.941e+04 +2025,344.947438,10,455.100,18.700,18.1410,-455.000,4.300,0.700,455.000,-4.300,0.700,2.118e+04 +2025,344.969503,10,452.000,37.200,21.7320,-451.500,6.300,-20.100,451.500,-6.300,-20.100,8.382e+04 +2025,344.983449,10,449.500,26.300,15.2590,-448.800,-6.300,-24.200,448.800,6.300,-24.200,4.190e+04 +2025,345.024121,10,432.200,23.500,16.8750,-431.800,-11.300,-13.500,431.800,11.300,-13.500,3.345e+04 +2025,345.038139,10,434.500,32.900,9.9510,-434.400,-8.700,-2.400,434.400,8.700,-2.400,6.557e+04 +2025,345.067196,10,436.200,20.700,9.1740,-434.300,-10.200,-39.700,434.300,10.200,-39.700,2.596e+04 +2025,345.083472,10,434.900,24.400,9.0840,-434.700,3.900,-14.800,434.700,-3.900,-14.800,3.606e+04 +2025,345.103243,10,432.800,23.900,7.8420,-432.700,4.200,-8.500,432.700,-4.200,-8.500,3.460e+04 +2025,345.110198,10,435.500,25.700,9.4800,-435.500,0.400,-2.800,435.500,-0.400,-2.800,4.001e+04 +2025,345.112528,10,439.700,29.200,10.9420,-439.700,-0.900,-2.200,439.700,0.900,-2.200,5.165e+04 +2025,345.124143,10,426.400,25.400,8.0490,-426.400,5.000,-1.700,426.400,-5.000,-1.700,3.908e+04 +2025,345.178870,10,409.400,22.100,6.1600,-409.100,6.200,13.100,409.100,-6.200,13.100,2.958e+04 +2025,345.187026,10,414.700,23.300,5.8070,-414.500,3.700,12.200,414.500,-3.700,12.200,3.288e+04 +2025,345.209092,10,423.100,17.200,4.9420,-423.000,-0.800,9.300,423.000,0.800,9.300,1.792e+04 +2025,345.216083,10,419.300,16.500,5.2580,-419.000,2.200,16.000,419.000,-2.200,16.000,1.649e+04 +2025,345.219542,10,420.100,16.100,5.3770,-420.000,-0.500,9.300,420.000,0.500,9.300,1.570e+04 +2025,345.226533,10,425.400,15.800,6.2850,-425.100,6.000,16.200,425.100,-6.000,16.200,1.512e+04 +2025,345.231194,10,420.800,17.800,6.0390,-420.500,4.500,14.700,420.500,-4.500,14.700,1.919e+04 +2025,345.239313,10,418.200,16.600,5.9260,-417.800,4.900,16.900,417.800,-4.900,16.900,1.669e+04 +2025,345.249836,10,416.800,16.400,7.0470,-416.500,6.600,15.100,416.500,-6.600,15.100,1.629e+04 +2025,345.251002,10,418.700,15.200,7.2590,-418.300,7.900,16.100,418.300,-7.900,16.100,1.399e+04 +2025,345.252167,10,417.500,17.700,6.2990,-417.100,5.100,15.800,417.100,-5.100,15.800,1.898e+04 +2025,345.275397,10,426.000,17.400,8.4650,-425.900,10.600,2.800,425.900,-10.600,2.800,1.834e+04 +2025,345.278893,10,423.800,16.900,6.6900,-423.700,7.000,7.200,423.700,-7.000,7.200,1.730e+04 +2025,345.309114,10,419.900,20.700,8.2200,-419.800,5.500,-7.500,419.800,-5.500,-7.500,2.596e+04 +2025,345.313775,10,418.000,18.500,8.5920,-417.900,3.100,9.500,417.900,-3.100,9.500,2.073e+04 +2025,345.316105,10,405.200,17.500,7.9880,-404.800,1.700,19.900,404.800,-1.700,19.900,1.855e+04 +2025,345.323060,10,410.000,17.500,8.8490,-409.500,-4.500,18.400,409.500,4.500,18.400,1.855e+04 +2025,345.328885,10,421.200,18.900,9.9610,-421.100,2.500,10.200,421.100,-2.500,10.200,2.164e+04 +2025,345.342831,10,407.300,17.100,8.9330,-406.900,-0.800,18.300,406.900,0.800,18.300,1.771e+04 +2025,345.378915,10,414.100,9.400,5.0690,-413.900,-12.900,1.200,413.900,12.900,1.200,5.352e+03 +2025,345.434697,10,417.200,36.400,15.9210,-416.300,10.100,26.300,416.300,-10.100,26.300,8.026e+04 +2025,345.459129,10,404.800,30.300,9.0570,-404.700,1.200,-9.500,404.700,-1.200,-9.500,5.561e+04 +2025,345.464919,10,407.000,32.000,9.5570,-407.000,0.100,-3.300,407.000,-0.100,-3.300,6.203e+04 +2025,345.471910,10,417.200,38.900,14.1490,-416.700,19.400,-4.700,416.700,-19.400,-4.700,9.166e+04 +2025,345.478901,10,423.000,30.900,12.3290,-421.600,32.000,-12.300,421.600,-32.000,-12.300,5.784e+04 +2025,345.480066,10,423.600,32.800,13.2490,-422.400,30.700,-12.000,422.400,-30.700,-12.000,6.517e+04 +2025,345.492883,10,421.000,36.400,13.8340,-419.600,32.100,-12.600,419.600,-32.100,-12.600,8.026e+04 +2025,345.540545,10,410.700,33.400,11.7000,-410.300,17.100,-0.900,410.300,-17.100,-0.900,6.757e+04 +2025,345.542876,10,408.700,33.700,11.3140,-408.100,20.100,-8.000,408.100,-20.100,-8.000,6.879e+04 +2025,345.544041,10,411.800,32.900,11.0440,-411.400,16.300,-5.800,411.400,-16.300,-5.800,6.557e+04 +2025,345.568437,10,407.100,13.400,10.4950,-407.000,-2.900,1.900,407.000,2.900,1.900,1.088e+04 +2025,345.573097,10,406.600,15.900,11.5440,-406.500,-8.100,0.300,406.500,8.100,0.300,1.531e+04 +2025,345.606851,10,403.600,37.700,9.1470,-402.300,3.800,-31.600,402.300,-3.800,-31.600,8.609e+04 +2025,345.656844,10,390.400,44.100,7.6850,-389.400,-26.900,-7.000,389.400,26.900,-7.000,1.178e+05 +2025,345.702176,10,424.400,12.700,6.8790,-423.900,19.800,-0.500,423.900,-19.800,-0.500,9.770e+03 +2025,345.737132,10,435.200,32.300,6.3180,-433.400,36.500,13.700,433.400,-36.500,13.700,6.320e+04 +2025,345.767353,10,431.900,13.900,10.0100,-430.200,35.900,13.500,430.200,-35.900,13.500,1.170e+04 +2025,345.769684,10,427.600,15.200,10.8880,-425.900,34.800,17.000,425.900,-34.800,17.000,1.399e+04 +2025,345.785960,10,413.200,39.700,11.0840,-413.100,-0.600,9.200,413.100,0.600,9.200,9.547e+04 +2025,345.913874,10,406.400,29.700,7.8150,-405.700,-21.300,-10.200,405.700,21.300,-10.200,5.343e+04 +2025,346.004611,10,460.400,43.000,7.4380,-457.500,-24.500,45.000,457.500,24.500,45.000,1.120e+05 +2025,346.013933,10,442.400,40.600,7.3490,-441.200,-21.400,24.000,441.200,21.400,24.000,9.985e+04 +2025,346.056971,10,462.800,37.000,5.7330,-462.800,7.200,-1.800,462.800,-7.200,-1.800,8.293e+04 +2025,346.061632,10,458.400,41.800,8.2210,-458.000,17.600,8.700,458.000,-17.600,8.700,1.058e+05 +2025,346.082569,10,461.200,42.600,7.3410,-459.700,37.400,-2.300,459.700,-37.400,-2.300,1.099e+05 +2025,346.100010,10,467.000,47.600,7.9370,-467.000,-1.000,-3.300,467.000,1.000,-3.300,1.372e+05 +2025,346.201161,10,468.400,47.000,7.6770,-467.400,4.400,-30.600,467.400,-4.400,-30.600,1.338e+05 +2025,346.215107,10,469.800,46.600,7.8900,-469.300,-5.500,-21.500,469.300,5.500,-21.500,1.315e+05 +2025,346.233713,10,462.300,36.700,9.5880,-461.000,0.600,-35.200,461.000,-0.600,-35.200,8.159e+04 +2025,346.304680,10,427.200,29.400,5.2570,-426.700,-10.000,-17.600,426.700,10.000,-17.600,5.236e+04 +2025,346.348847,10,446.000,40.800,8.8320,-444.400,-17.800,-33.500,444.400,17.800,-33.500,1.008e+05 +2025,346.350012,10,449.100,40.100,9.1090,-447.900,-20.200,-26.400,447.900,20.200,-26.400,9.740e+04 +2025,346.363958,10,439.800,38.200,8.8720,-437.800,-18.700,-37.200,437.800,18.700,-37.200,8.839e+04 +2025,346.387261,10,434.000,37.100,13.0770,-432.400,-3.200,-37.600,432.400,3.200,-37.600,8.337e+04 +2025,346.422144,10,422.100,38.600,9.3700,-421.400,-10.900,-20.700,421.400,10.900,-20.700,9.025e+04 +2025,346.432594,10,419.000,38.200,12.4750,-418.000,-13.200,-26.500,418.000,13.200,-26.500,8.839e+04 +2025,346.436089,10,417.500,36.900,12.1610,-416.500,-13.500,-25.500,416.500,13.500,-25.500,8.248e+04 +2025,346.447705,10,416.900,35.500,15.0660,-415.600,-19.300,-26.200,415.600,19.300,-26.200,7.634e+04 +2025,346.450035,10,418.300,37.400,15.0290,-417.100,-15.500,-27.200,417.100,15.500,-27.200,8.473e+04 +2025,346.462815,10,412.500,34.900,15.1190,-411.300,-11.900,-28.900,411.300,11.900,-28.900,7.378e+04 +2025,346.470935,10,415.900,35.700,13.3730,-414.900,-15.000,-25.500,414.900,15.000,-25.500,7.720e+04 +2025,346.476761,10,415.700,35.800,11.8100,-414.700,-12.400,-25.500,414.700,12.400,-25.500,7.763e+04 +2025,346.483789,10,418.700,37.800,11.9670,-418.300,-16.200,-10.400,418.300,16.200,-10.400,8.655e+04 +2025,346.488449,10,417.800,34.900,14.1930,-417.000,-18.600,-18.000,417.000,18.600,-18.000,7.378e+04 +2025,346.490780,10,420.700,34.900,15.5240,-419.800,-18.700,-20.800,419.800,18.700,-20.800,7.378e+04 +2025,346.510587,10,422.900,33.300,16.7160,-421.300,-12.000,-33.800,421.300,12.000,-33.800,6.717e+04 +2025,346.517542,10,421.800,32.300,17.1350,-420.300,-12.700,-32.700,420.300,12.700,-32.700,6.320e+04 +2025,346.521038,10,424.000,33.900,15.1470,-422.600,-12.700,-31.800,422.600,12.700,-31.800,6.961e+04 +2025,346.524533,10,424.700,34.000,16.1820,-423.500,-14.500,-28.500,423.500,14.500,-28.500,7.002e+04 +2025,346.525698,10,421.500,35.100,15.3410,-420.200,-13.700,-29.600,420.200,13.700,-29.600,7.463e+04 +2025,346.553590,10,413.700,34.700,16.9650,-412.200,-17.800,-29.500,412.200,17.800,-29.500,7.294e+04 +2025,346.555884,10,416.400,37.200,15.1210,-414.700,-15.900,-34.000,414.700,15.900,-34.000,8.382e+04 +2025,346.564040,10,417.100,33.000,15.9360,-415.700,-12.200,-31.300,415.700,12.200,-31.300,6.596e+04 +2025,346.569829,10,417.900,31.200,16.9240,-416.500,-7.300,-34.300,416.500,7.300,-34.300,5.896e+04 +2025,346.577985,10,420.200,33.400,16.6750,-418.400,-6.600,-38.900,418.400,6.600,-38.900,6.757e+04 +2025,346.583848,10,419.300,32.700,16.4890,-417.400,-5.000,-39.300,417.400,5.000,-39.300,6.477e+04 +2025,346.588508,10,423.100,31.200,17.0610,-421.100,-0.800,-40.400,421.100,0.800,-40.400,5.896e+04 +2025,346.589674,10,423.600,32.000,16.8460,-421.800,-2.800,-39.100,421.800,2.800,-39.100,6.203e+04 +2025,346.593169,10,426.000,29.400,16.4630,-424.200,-3.100,-39.200,424.200,3.100,-39.200,5.236e+04 +2025,346.602454,10,421.400,30.300,15.8590,-419.500,-5.300,-39.200,419.500,5.300,-39.200,5.561e+04 +2025,346.616399,10,430.800,34.500,15.9730,-429.200,-19.500,-31.700,429.200,19.500,-31.700,7.210e+04 +2025,346.631510,10,429.100,34.500,15.6280,-427.300,-13.500,-37.800,427.300,13.500,-37.800,7.210e+04 +2025,346.638501,10,427.200,32.400,16.9160,-424.900,-5.300,-43.900,424.900,5.300,-43.900,6.359e+04 +2025,346.651282,10,442.600,31.400,16.4480,-441.500,-16.500,-27.400,441.500,16.500,-27.400,5.972e+04 +2025,346.659401,10,439.600,27.300,12.2040,-439.400,-11.400,-9.100,439.400,11.400,-9.100,4.515e+04 +2025,346.665227,10,433.100,24.500,15.5210,-432.800,-10.600,-12.200,432.800,10.600,-12.200,3.636e+04 +2025,346.675677,10,434.000,24.300,13.1570,-433.700,-8.600,-12.300,433.700,8.600,-12.300,3.577e+04 +2025,346.750138,10,431.000,26.200,14.9930,-428.800,-40.100,-16.400,428.800,40.100,-16.400,4.158e+04 +2025,346.754763,10,442.700,25.400,18.9220,-439.400,-48.100,-23.900,439.400,48.100,-23.900,3.908e+04 +2025,346.755928,10,443.500,25.400,19.6360,-440.300,-48.400,-21.400,440.300,48.400,-21.400,3.908e+04 +2025,346.771039,10,440.600,29.100,20.7540,-437.700,-48.800,-13.300,437.700,48.800,-13.300,5.129e+04 +2025,346.795471,10,436.700,37.100,29.6930,-434.400,-42.100,15.200,434.400,42.100,15.200,8.337e+04 +2025,346.807086,10,442.900,30.300,24.0560,-441.900,-23.700,18.200,441.900,23.700,18.200,5.561e+04 +2025,346.808251,10,443.800,25.400,20.9260,-443.300,-20.300,5.000,443.300,20.300,5.000,3.908e+04 +2025,346.812876,10,440.300,35.100,22.6820,-438.900,-32.800,14.900,438.900,32.800,14.900,7.463e+04 +2025,346.822197,10,457.200,27.700,16.9580,-457.200,0.300,6.900,457.200,-0.300,6.900,4.648e+04 +2025,346.830353,10,467.000,32.600,17.6710,-466.600,-12.200,15.200,466.600,12.200,15.200,6.438e+04 +2025,346.852455,10,453.700,46.300,17.5690,-453.200,-9.600,20.400,453.200,9.600,20.400,1.299e+05 +2025,347.251344,10,535.300,70.700,13.1770,-531.800,-19.700,-58.000,531.800,19.700,-58.000,3.028e+05 +2025,347.553816,10,538.200,97.100,7.4380,-533.800,49.100,-47.800,533.800,-49.100,-47.800,5.711e+05 +2025,347.757392,10,647.900,78.200,2.3570,-646.200,42.400,-21.500,646.200,-42.400,-21.500,3.704e+05 +2025,347.779457,10,670.600,66.000,2.5010,-669.800,31.600,6.500,669.800,-31.600,6.500,2.639e+05 +2025,347.788742,10,671.800,67.200,2.4690,-671.000,32.700,1.400,671.000,-32.700,1.400,2.735e+05 +2025,347.798027,10,673.200,66.800,2.6940,-672.900,13.200,-16.900,672.900,-13.200,-16.900,2.703e+05 +2025,347.978264,10,656.800,56.500,2.2480,-656.600,-0.900,-16.500,656.600,0.900,-16.500,1.934e+05 +2025,348.014312,10,653.500,55.000,2.0940,-653.100,-11.200,-16.800,653.100,11.200,-16.800,1.832e+05 +2025,348.052653,10,644.300,57.500,2.3020,-643.500,-7.200,-31.100,643.500,7.200,-31.100,2.003e+05 +2025,348.215558,10,623.800,55.500,2.2990,-623.300,-13.000,-19.900,623.300,13.000,-19.900,1.866e+05 +2025,348.281791,10,616.400,52.400,2.4420,-613.700,-4.700,-58.000,613.700,4.700,-58.000,1.663e+05 +2025,348.381814,10,596.600,51.600,3.2090,-596.300,5.400,-17.500,596.300,-5.400,-17.500,1.613e+05 +2025,348.748150,10,531.500,41.900,2.8310,-531.200,0.300,-16.000,531.200,-0.300,-16.000,1.063e+05 +2025,348.750480,10,536.200,41.300,2.8290,-535.900,1.400,-17.900,535.900,-1.400,-17.900,1.033e+05 +2025,349.201765,10,454.200,29.600,3.0930,-452.900,30.900,-16.000,452.900,-30.900,-16.000,5.307e+04 +2025,349.202930,10,448.900,26.800,2.6080,-447.900,22.200,-18.900,447.900,-22.200,-18.900,4.351e+04 +2025,349.245933,10,474.400,30.600,4.0790,-473.900,-21.500,-0.500,473.900,21.500,-0.500,5.672e+04 +2025,349.256383,10,488.300,30.900,3.8600,-487.400,-3.800,28.900,487.400,3.800,28.900,5.784e+04 +2025,349.265704,10,486.100,32.200,4.1350,-484.800,-0.900,35.000,484.800,0.900,35.000,6.281e+04 +2025,349.299421,10,453.700,28.000,4.3360,-452.900,-23.600,15.200,452.900,23.600,15.200,4.749e+04 +2025,349.300587,10,471.800,32.000,4.3760,-471.300,-19.900,7.600,471.300,19.900,7.600,6.203e+04 +2025,349.316935,10,470.200,33.100,4.6660,-469.900,-18.200,3.400,469.900,18.200,3.400,6.637e+04 +2025,349.328551,10,448.700,31.000,4.4700,-448.400,6.400,-13.700,448.400,-6.400,-13.700,5.821e+04 +2025,349.330881,10,474.500,30.000,4.3500,-473.900,-22.700,9.400,473.900,22.700,9.400,5.452e+04 +2025,349.350653,10,479.400,34.400,4.9840,-478.500,-18.200,21.700,478.500,18.200,21.700,7.168e+04 +2025,349.352946,10,476.900,30.700,4.3310,-476.500,-16.100,12.900,476.500,16.100,12.900,5.709e+04 +2025,349.358772,10,479.500,33.400,4.5260,-479.300,-13.700,3.500,479.300,13.700,3.500,6.757e+04 +2025,349.382003,10,474.400,31.400,4.6800,-473.800,-21.000,8.100,473.800,21.000,8.100,5.972e+04 +2025,349.388994,10,457.700,32.400,4.7790,-457.400,-13.700,-8.600,457.400,13.700,-8.600,6.359e+04 +2025,349.394820,10,452.000,34.400,5.2250,-451.400,-21.800,-2.000,451.400,21.800,-2.000,7.168e+04 +2025,349.455300,10,457.200,41.700,5.6880,-456.700,-19.600,-7.600,456.700,19.600,-7.600,1.053e+05 +2025,349.464621,10,459.100,35.500,5.5690,-458.800,-14.200,-9.800,458.800,14.200,-9.800,7.634e+04 +2025,349.470410,10,455.400,30.700,4.9080,-454.800,-22.900,-7.200,454.800,22.900,-7.200,5.709e+04 +2025,349.506458,10,463.100,28.400,4.8630,-462.000,-32.300,-0.800,462.000,32.300,-0.800,4.886e+04 +2025,349.515779,10,465.200,28.900,5.1750,-464.400,-25.600,-8.200,464.400,25.600,-8.200,5.059e+04 +2025,349.520440,10,456.500,31.100,5.7720,-455.800,-20.400,-16.600,455.800,20.400,-16.600,5.859e+04 +2025,349.522807,10,455.000,28.400,5.2350,-454.300,-18.200,-16.700,454.300,18.200,-16.700,4.886e+04 +2025,349.535624,10,465.100,31.100,5.2900,-464.400,-19.300,-15.700,464.400,19.300,-15.700,5.859e+04 +2025,350.068325,10,560.200,62.600,8.4080,-555.600,-30.000,-64.900,555.600,30.000,-64.900,2.374e+05 +2025,350.092721,10,545.900,69.700,8.7900,-545.800,-7.700,7.700,545.800,7.700,7.700,2.943e+05 +2025,350.150834,10,552.400,71.900,11.7700,-549.100,-38.500,-46.800,549.100,38.500,-46.800,3.131e+05 +2025,350.217176,10,560.700,78.800,9.4740,-558.700,-44.500,-15.200,558.700,44.500,-15.200,3.761e+05 +2025,350.436994,10,584.500,75.700,5.0760,-584.100,-6.500,-20.600,584.100,6.500,-20.600,3.471e+05 +2025,350.660197,10,690.600,81.100,4.5030,-690.100,17.200,18.200,690.100,-17.200,18.200,3.984e+05 +2025,350.710991,10,680.700,83.900,3.8780,-680.200,19.700,19.100,680.200,-19.700,19.100,4.264e+05 +2025,350.713284,10,678.100,87.900,3.8800,-677.000,30.100,24.400,677.000,-30.100,24.400,4.680e+05 +2025,350.769213,10,609.000,85.800,4.2220,-608.100,26.900,19.400,608.100,-26.900,19.400,4.459e+05 +2025,350.986663,10,614.500,62.100,3.5970,-612.700,47.200,-7.600,612.700,-47.200,-7.600,2.336e+05 +2025,351.259933,10,589.400,50.800,4.6210,-589.300,-2.800,2.100,589.300,2.800,2.100,1.563e+05 +2025,351.265722,10,561.400,51.000,4.3750,-559.700,10.500,43.100,559.700,-10.500,43.100,1.576e+05 +2025,351.342514,10,569.300,57.800,4.6240,-568.700,-4.600,24.500,568.700,4.600,24.500,2.024e+05 +2025,351.359919,10,570.000,57.500,4.4980,-569.600,20.900,-4.500,569.600,-20.900,-4.500,2.003e+05 +2025,351.399462,10,584.000,58.100,4.6560,-583.800,9.500,-11.100,583.800,-9.500,-11.100,2.045e+05 +2025,351.451822,10,588.600,58.200,6.1260,-588.200,-20.200,-5.300,588.200,20.200,-5.300,2.052e+05 +2025,351.475053,10,591.100,58.400,4.9940,-590.300,1.900,-31.000,590.300,-1.900,-31.000,2.066e+05 +2025,351.486705,10,602.900,73.400,6.0500,-600.900,47.000,16.600,600.900,-47.000,16.600,3.263e+05 +2025,351.500650,10,603.200,65.200,7.0760,-600.600,31.400,46.200,600.600,-31.400,46.200,2.575e+05 +2025,351.643675,10,624.400,72.700,3.7170,-624.200,16.800,6.300,624.200,-16.800,6.300,3.201e+05 +2025,351.755313,10,645.700,67.000,3.9230,-645.100,26.900,6.800,645.100,-26.900,6.800,2.719e+05 +2025,351.791397,10,643.200,68.200,4.0060,-643.000,13.000,9.800,643.000,-13.000,9.800,2.817e+05 +2025,351.901906,10,670.700,59.200,2.3490,-670.300,11.100,21.900,670.300,-11.100,21.900,2.123e+05 +2025,351.906567,10,661.800,69.400,2.0130,-661.700,7.200,9.600,661.700,-7.200,9.600,2.917e+05 +2025,351.915852,10,654.700,60.000,2.6330,-654.700,8.000,1.900,654.700,-8.000,1.900,2.181e+05 +2025,351.985653,10,659.700,82.300,2.8570,-659.500,13.900,-8.000,659.500,-13.900,-8.000,4.103e+05 +2025,352.648709,10,595.500,83.700,3.9020,-594.800,-5.400,-28.100,594.800,5.400,-28.100,4.244e+05 +2025,352.673105,10,615.100,72.600,3.3080,-613.400,-37.900,-25.900,613.400,37.900,-25.900,3.193e+05 +2025,353.521024,10,534.100,56.800,2.2960,-534.000,-7.000,9.900,534.000,7.000,9.900,1.954e+05 +2025,353.524483,10,561.400,49.300,2.2710,-560.900,-9.500,21.300,560.900,9.500,21.300,1.472e+05 +2025,353.532639,10,527.200,53.700,2.4300,-527.100,-11.800,7.500,527.100,11.800,7.500,1.747e+05 +2025,353.695436,10,519.100,49.800,2.3700,-517.500,-40.000,7.800,517.500,40.000,7.800,1.502e+05 +2025,353.701225,10,520.500,45.500,2.6300,-518.700,-38.200,19.700,518.700,38.200,19.700,1.254e+05 +2025,353.715171,10,539.300,40.800,4.3510,-539.200,8.700,4.600,539.200,-8.700,4.600,1.008e+05 +2025,353.740841,10,536.400,39.400,4.3690,-536.200,-2.400,13.600,536.200,2.400,13.600,9.403e+04 +2025,353.745502,10,532.100,44.100,4.2550,-532.000,1.300,8.800,532.000,-1.300,8.800,1.178e+05 +2025,353.747832,10,533.100,44.500,4.0230,-533.000,-3.400,1.700,533.000,3.400,1.700,1.200e+05 +2025,353.785008,10,537.700,44.700,3.4180,-537.500,-8.000,10.400,537.500,8.000,10.400,1.210e+05 +2025,353.849020,10,522.600,46.600,3.2460,-522.300,-15.100,5.600,522.300,15.100,5.600,1.315e+05 +2025,353.868755,10,521.200,46.300,3.2480,-521.200,6.900,-3.100,521.200,-6.900,-3.100,1.299e+05 +2025,353.905968,10,490.400,42.400,3.0650,-488.700,-40.400,0.700,488.700,40.400,0.700,1.089e+05 +2025,353.907133,10,489.200,41.800,3.2460,-487.300,-43.500,-1.700,487.300,43.500,-1.700,1.058e+05 +2025,353.915253,10,492.100,39.700,3.1520,-490.400,-39.600,-10.500,490.400,39.600,-10.500,9.547e+04 +2025,353.925703,10,488.900,44.300,2.4990,-487.800,-28.400,15.600,487.800,28.400,15.600,1.189e+05 +2025,353.956034,10,482.100,40.200,3.0700,-480.100,-43.500,-3.700,480.100,43.500,-3.700,9.789e+04 +2025,353.960695,10,476.600,37.000,3.2330,-474.000,-49.600,-6.200,474.000,49.600,-6.200,8.293e+04 +2025,353.961860,10,475.500,37.000,3.2840,-472.800,-49.600,-6.000,472.800,49.600,-6.000,8.293e+04 +2025,353.964191,10,468.100,37.300,3.3640,-465.400,-49.800,-8.000,465.400,49.800,-8.000,8.428e+04 +2025,354.006028,10,467.000,33.700,3.5740,-464.400,-48.000,-8.400,464.400,48.000,-8.400,6.879e+04 +2025,354.026928,10,459.900,38.500,3.8040,-458.100,-38.100,11.900,458.100,38.100,11.900,8.979e+04 +2025,354.054892,10,478.800,37.200,3.4020,-477.800,-14.200,27.400,477.800,14.200,27.400,8.382e+04 +2025,354.059553,10,489.300,33.000,3.3350,-488.400,-27.600,13.300,488.400,27.600,13.300,6.596e+04 +2025,354.136272,10,479.300,24.100,5.0720,-478.600,-23.000,10.800,478.600,23.000,10.800,3.518e+04 +2025,354.149089,10,479.300,25.900,5.1990,-478.900,-18.000,10.500,478.900,18.000,10.500,4.063e+04 +2025,354.156117,10,479.800,28.100,5.0080,-479.400,-16.900,10.600,479.400,16.900,10.600,4.783e+04 +2025,354.157282,10,478.700,29.900,4.9090,-478.300,-16.000,11.400,478.300,16.000,11.400,5.415e+04 +2025,354.163108,10,477.500,25.700,5.0060,-477.200,-14.800,11.300,477.200,14.800,11.300,4.001e+04 +2025,354.185173,10,475.700,27.500,4.2070,-475.200,-16.500,12.600,475.200,16.500,12.600,4.581e+04 +2025,354.224717,10,465.100,27.200,5.4190,-464.900,-12.100,4.800,464.900,12.100,4.800,4.481e+04 +2025,354.282866,10,459.200,30.200,4.3440,-459.000,-4.000,12.300,459.000,4.000,12.300,5.525e+04 +2025,354.286362,10,457.800,31.400,4.3690,-457.600,-9.600,9.500,457.600,9.600,9.500,5.972e+04 +2025,354.292188,10,454.300,31.000,4.4890,-454.100,-9.400,10.500,454.100,9.400,10.500,5.821e+04 +2025,354.296812,10,457.900,32.300,4.4140,-457.700,-9.600,10.500,457.700,9.600,10.500,6.320e+04 +2025,354.302638,10,461.500,29.300,4.1560,-461.200,-13.500,10.600,461.200,13.500,10.600,5.200e+04 +2025,354.306133,10,466.800,28.800,4.9240,-466.600,-12.100,10.200,466.600,12.100,10.200,5.024e+04 +2025,354.314253,10,467.200,30.800,5.8590,-467.100,-9.500,9.300,467.100,9.500,9.300,5.746e+04 +2025,354.315418,10,468.300,29.900,5.8490,-468.100,-9.000,8.400,468.100,9.000,8.400,5.415e+04 +2025,354.321244,10,465.100,28.400,5.7670,-465.000,-7.200,9.000,465.000,7.200,9.000,4.886e+04 +2025,354.328199,10,464.700,27.600,5.9460,-464.500,-7.100,10.200,464.500,7.100,10.200,4.614e+04 +2025,354.332859,10,464.900,30.000,5.9590,-464.700,-7.400,10.800,464.700,7.400,10.800,5.452e+04 +2025,354.345640,10,462.000,28.400,5.5170,-461.800,-10.100,7.300,461.800,10.100,7.300,4.886e+04 +2025,354.385256,10,453.100,28.100,6.7520,-452.700,-12.200,15.300,452.700,12.200,15.300,4.783e+04 +2025,354.478324,10,455.600,28.400,7.8660,-455.100,-20.100,-0.600,455.100,20.100,-0.600,4.886e+04 +2025,354.487609,10,454.800,31.700,6.1490,-454.000,-27.000,2.000,454.000,27.000,2.000,6.087e+04 +2025,354.488774,10,451.700,32.400,6.4770,-450.800,-27.400,3.400,450.800,27.400,3.400,6.359e+04 +2025,354.515500,10,460.800,29.500,6.5760,-460.400,-17.200,6.600,460.400,17.200,6.600,5.271e+04 +2025,354.517831,10,458.200,28.500,6.6530,-457.700,-20.900,7.900,457.700,20.900,7.900,4.920e+04 +2025,354.537602,10,461.000,29.100,8.1100,-460.400,-22.000,11.500,460.400,22.000,11.500,5.129e+04 +2025,354.542226,10,456.500,27.700,9.8520,-456.100,-17.400,10.900,456.100,17.400,10.900,4.648e+04 +2025,354.584173,10,444.000,33.200,9.3260,-443.000,-29.100,3.500,443.000,29.100,3.500,6.677e+04 +2025,354.591164,10,450.200,31.500,9.6730,-449.100,-30.300,3.400,449.100,30.300,3.400,6.010e+04 +2025,354.592329,10,449.300,32.000,9.7910,-448.200,-30.100,2.900,448.200,30.100,2.900,6.203e+04 +2025,354.593494,10,446.800,31.800,10.1140,-445.700,-31.500,0.900,445.700,31.500,0.900,6.125e+04 +2025,354.629505,10,448.900,30.500,9.1710,-447.400,-35.700,5.600,447.400,35.700,5.600,5.635e+04 +2025,354.630671,10,448.200,30.500,9.3970,-446.800,-34.700,6.200,446.800,34.700,6.200,5.635e+04 +2025,354.635331,10,453.700,29.700,10.1170,-452.200,-36.600,2.000,452.200,36.600,2.000,5.343e+04 +2025,354.641121,10,454.000,30.400,10.0220,-452.200,-39.800,4.100,452.200,39.800,4.100,5.598e+04 +2025,354.659727,10,448.600,30.100,10.1540,-446.900,-38.900,6.800,446.900,38.900,6.800,5.488e+04 +2025,354.680700,10,445.800,31.200,10.7510,-444.300,-37.300,4.600,444.300,37.300,4.600,5.896e+04 +2025,354.693517,10,446.100,31.300,10.6310,-444.600,-36.800,1.300,444.600,36.800,1.300,5.934e+04 +2025,354.696976,10,445.700,30.300,10.4180,-444.000,-38.700,2.800,444.000,38.700,2.800,5.561e+04 +2025,354.703967,10,444.700,31.000,10.4390,-443.200,-36.800,5.300,443.200,36.800,5.300,5.821e+04 +2025,354.708628,10,442.800,32.400,10.4910,-441.100,-38.100,7.700,441.100,38.100,7.700,6.359e+04 +2025,354.712087,10,440.700,30.900,10.6600,-439.700,-30.800,2.400,439.700,30.800,2.400,5.784e+04 +2025,354.720243,10,439.500,30.100,10.7750,-437.900,-37.100,0.400,437.900,37.100,0.400,5.488e+04 +2025,354.724867,10,443.800,30.600,10.9760,-442.900,-28.500,1.400,442.900,28.500,1.400,5.672e+04 +2025,354.729528,10,437.500,30.900,10.7430,-436.000,-36.400,0.800,436.000,36.400,0.800,5.784e+04 +2025,354.739978,10,437.000,28.300,9.6790,-435.700,-34.000,5.500,435.700,34.000,5.500,4.851e+04 +2025,354.742309,10,434.500,28.600,9.4420,-433.000,-36.400,1.900,433.000,36.400,1.900,4.955e+04 +2025,354.751630,10,429.800,28.100,10.6550,-426.500,-52.500,-3.300,426.500,52.500,-3.300,4.783e+04 +2025,354.837743,10,409.500,19.800,16.1110,-406.600,-48.300,-3.200,406.600,48.300,-3.200,2.375e+04 +2025,354.838872,10,398.200,20.300,14.9570,-395.500,-46.700,0.500,395.500,46.700,0.500,2.496e+04 +2025,354.840037,10,401.700,21.400,14.5520,-398.800,-48.100,1.700,398.800,48.100,1.700,2.774e+04 +2025,354.849359,10,406.000,19.000,12.6200,-403.400,-45.400,2.000,403.400,45.400,2.000,2.187e+04 +2025,354.919160,10,399.400,26.900,17.7560,-395.700,-54.300,-4.800,395.700,54.300,-4.800,4.383e+04 +2025,354.921490,10,400.500,25.500,20.8500,-396.700,-55.400,-4.100,396.700,55.400,-4.100,3.939e+04 +2025,354.984228,10,412.100,31.300,12.4660,-409.200,-45.600,16.800,409.200,45.600,16.800,5.934e+04 +2025,355.000540,10,391.700,27.400,13.3850,-389.400,-41.900,6.900,389.400,41.900,6.900,4.548e+04 +2025,355.023844,10,410.500,32.100,16.5430,-408.100,-43.700,3.400,408.100,43.700,3.400,6.242e+04 +2025,355.047111,10,437.800,32.700,11.9570,-436.100,-36.800,-10.300,436.100,36.800,-10.300,6.477e+04 +2025,355.054065,10,430.500,34.600,16.0930,-428.700,-37.200,-14.500,428.700,37.200,-14.500,7.252e+04 +2025,355.141308,10,471.900,50.900,10.6290,-469.900,-38.900,-18.300,469.900,38.900,-18.300,1.569e+05 +2025,355.387852,10,639.000,77.000,6.2290,-631.800,50.000,-81.800,631.800,-50.000,-81.800,3.591e+05 +2025,355.413412,10,632.000,75.700,5.4310,-628.400,22.700,-63.900,628.400,-22.700,-63.900,3.471e+05 +2025,355.430854,10,643.000,85.800,6.4390,-641.800,19.700,-33.800,641.800,-19.700,-33.800,4.459e+05 +2025,355.450443,10,636.100,84.900,6.1510,-634.300,46.600,8.600,634.300,-46.600,8.600,4.366e+05 +2025,355.559568,10,674.800,86.900,6.9880,-673.900,8.400,-34.500,673.900,-8.400,-34.500,4.574e+05 +2025,355.568744,10,672.100,83.500,5.3600,-670.800,40.100,-10.500,670.800,-40.100,-10.500,4.223e+05 +2025,355.581415,10,668.500,76.200,6.4210,-667.300,37.900,14.800,667.300,-37.900,14.800,3.517e+05 +2025,356.222953,10,715.200,58.200,3.8200,-714.200,-37.800,-1.700,714.200,37.800,-1.700,2.052e+05 +2025,356.421178,10,742.700,76.900,3.2210,-741.600,10.300,-39.300,741.600,-10.300,-39.300,3.582e+05 +2025,356.424564,10,747.000,70.300,2.9620,-744.100,50.500,-43.300,744.100,-50.500,-43.300,2.994e+05 +2025,356.433594,10,756.400,70.800,3.5860,-754.900,7.700,-47.500,754.900,-7.700,-47.500,3.036e+05 +2025,356.467493,10,749.900,74.700,3.5050,-746.200,26.200,-70.200,746.200,-26.200,-70.200,3.380e+05 +2025,356.561326,10,766.800,71.700,3.2900,-765.200,13.600,48.600,765.200,-13.600,48.600,3.114e+05 +2025,356.571522,10,770.600,71.500,3.1070,-769.800,23.300,28.300,769.800,-23.300,28.300,3.097e+05 +2025,356.573779,10,764.400,71.400,2.9560,-759.900,57.400,-60.200,759.900,-57.400,-60.200,3.088e+05 +2025,356.665318,10,752.900,64.200,2.6840,-751.400,16.500,-44.000,751.400,-16.500,-44.000,2.497e+05 +2025,356.705954,10,742.400,55.800,2.7390,-737.700,77.800,-29.100,737.700,-77.800,-29.100,1.886e+05 +2025,356.719463,10,739.500,66.200,2.8830,-739.000,25.800,9.000,739.000,-25.800,9.000,2.655e+05 +2025,356.722885,10,741.000,64.000,2.7960,-740.900,-0.200,-7.300,740.900,0.200,-7.300,2.481e+05 +2025,356.759115,10,731.800,64.600,2.9230,-731.600,-10.200,-11.200,731.600,10.200,-11.200,2.528e+05 +2025,356.788463,10,798.300,54.300,2.8770,-797.100,-1.400,43.800,797.100,1.400,43.800,1.786e+05 +2025,356.875742,10,764.700,77.200,3.6300,-764.300,-13.200,19.800,764.300,13.200,19.800,3.610e+05 +2025,356.936331,10,746.000,57.200,2.5900,-744.600,-43.000,-15.200,744.600,43.000,-15.200,1.982e+05 +2025,356.960144,10,747.600,59.700,2.6120,-744.000,-10.400,-72.700,744.000,10.400,-72.700,2.159e+05 +2025,356.972634,10,736.900,56.300,2.5810,-735.400,-36.400,-30.600,735.400,36.400,-30.600,1.920e+05 +2025,356.982829,10,718.600,59.400,2.6670,-717.800,-23.300,-24.800,717.800,23.300,-24.800,2.137e+05 +2025,357.013451,10,733.800,57.900,2.8290,-732.200,-48.900,-5.500,732.200,48.900,-5.500,2.031e+05 +2025,357.019131,10,722.000,56.900,2.5010,-720.700,-32.000,-27.500,720.700,32.000,-27.500,1.961e+05 +2025,357.061296,10,718.800,55.200,2.6530,-717.000,-42.900,-26.400,717.000,42.900,-26.400,1.846e+05 +2025,357.085364,10,707.000,49.100,2.7000,-706.700,-20.100,6.800,706.700,20.100,6.800,1.460e+05 +2025,357.093302,10,704.200,50.500,2.7800,-704.000,-16.400,-1.900,704.000,16.400,-1.900,1.545e+05 +2025,357.104626,10,737.400,58.300,2.9520,-732.700,66.100,-49.400,732.700,-66.100,-49.400,2.059e+05 +2025,357.117042,10,768.800,62.200,2.3650,-765.200,57.600,-47.100,765.200,-57.600,-47.100,2.344e+05 +2025,357.126036,10,729.300,60.100,2.9270,-727.500,46.000,24.600,727.500,-46.000,24.600,2.188e+05 +2025,357.127201,10,724.800,56.700,2.7490,-723.300,28.600,35.500,723.300,-28.600,35.500,1.947e+05 +2025,357.135066,10,776.900,56.300,3.2970,-771.800,88.200,-5.100,771.800,-88.200,-5.100,1.920e+05 +2025,357.170166,10,721.200,58.900,2.5390,-721.100,-9.000,6.500,721.100,9.000,6.500,2.101e+05 +2025,357.188263,10,731.100,53.800,3.2050,-730.800,-19.900,4.100,730.800,19.900,4.100,1.753e+05 +2025,357.192778,10,749.100,57.200,3.1200,-748.100,-3.300,38.900,748.100,3.300,38.900,1.982e+05 +2025,357.199551,10,734.100,55.200,2.8410,-730.400,73.600,-7.600,730.400,-73.600,-7.600,1.846e+05 +2025,357.268988,10,731.600,54.400,2.6030,-731.200,-23.600,0.300,731.200,23.600,0.300,1.793e+05 +2025,357.358379,10,725.200,44.900,2.4450,-723.400,-40.200,-33.500,723.400,40.200,-33.500,1.221e+05 +2025,357.360636,10,722.800,44.900,2.3550,-721.200,-45.900,-15.500,721.200,45.900,-15.500,1.221e+05 +2025,357.367481,10,729.200,49.300,2.3210,-727.600,-43.700,-19.100,727.600,43.700,-19.100,1.472e+05 +2025,357.376512,10,710.200,47.300,2.5790,-709.200,-37.300,4.900,709.200,37.300,4.900,1.355e+05 +2025,357.377640,10,739.200,51.200,2.4270,-737.600,-43.700,18.800,737.600,43.700,18.800,1.588e+05 +2025,357.393880,10,672.200,45.400,2.2960,-672.100,0.400,6.900,672.100,-0.400,6.900,1.249e+05 +2025,357.463135,10,706.800,56.900,2.7980,-704.300,33.100,50.000,704.300,-33.100,50.000,1.961e+05 +2025,357.515168,10,776.500,54.400,2.9540,-774.600,-30.300,-44.300,774.600,30.300,-44.300,1.793e+05 +2025,357.580089,10,731.300,53.200,2.7860,-729.300,-30.100,-44.500,729.300,30.100,-44.500,1.714e+05 +2025,357.739244,10,707.500,59.000,3.0320,-706.800,19.400,24.600,706.800,-19.400,24.600,2.109e+05 +2025,357.798850,10,723.600,59.800,3.0550,-722.200,39.900,18.900,722.200,-39.900,18.900,2.166e+05 +2025,357.803402,10,699.300,60.900,3.5350,-698.000,37.200,-21.700,698.000,-37.200,-21.700,2.247e+05 +2025,357.828708,10,718.300,57.400,3.5270,-717.400,28.700,24.000,717.400,-28.700,24.000,1.996e+05 +2025,357.833332,10,695.000,60.800,3.5380,-693.900,39.000,7.900,693.900,-39.000,7.900,2.239e+05 +2025,357.874878,10,694.300,55.700,3.3640,-692.200,23.600,-48.900,692.200,-23.600,-48.900,1.879e+05 +2025,357.891154,10,692.500,56.400,3.2670,-690.900,43.100,-20.200,690.900,-43.100,-20.200,1.927e+05 +2025,357.909506,10,701.300,59.700,3.4330,-700.100,40.600,8.700,700.100,-40.600,8.700,2.159e+05 +2025,357.914130,10,689.800,59.000,3.3790,-688.500,42.300,-9.400,688.500,-42.300,-9.400,2.109e+05 +2025,357.937288,10,685.400,58.800,3.3200,-684.100,20.400,-36.800,684.100,-20.400,-36.800,2.094e+05 +2025,357.952362,10,679.200,69.800,2.9530,-678.300,1.300,-36.200,678.300,-1.300,-36.200,2.951e+05 +2025,358.022528,10,707.300,60.500,2.7110,-706.700,-29.400,-6.100,706.700,29.400,-6.100,2.217e+05 +2025,358.024822,10,703.200,59.300,3.1220,-702.300,-33.700,-8.200,702.300,33.700,-8.200,2.130e+05 +2025,358.035053,10,693.000,61.600,3.0670,-692.500,-23.700,11.500,692.500,23.700,11.500,2.299e+05 +2025,358.046632,10,703.800,58.900,3.0700,-703.000,-23.600,22.700,703.000,23.600,22.700,2.101e+05 +2025,358.073322,10,684.500,59.600,3.0650,-682.800,-16.500,-45.700,682.800,16.500,-45.700,2.152e+05 +2025,358.074487,10,672.200,57.800,2.8050,-670.700,-9.400,-42.900,670.700,9.400,-42.900,2.024e+05 +2025,358.075616,10,669.900,61.100,2.8220,-668.700,6.100,-38.300,668.700,-6.100,-38.300,2.261e+05 +2025,358.089525,10,713.000,65.900,3.4480,-712.100,-22.700,26.600,712.100,22.700,26.600,2.631e+05 +2025,358.090654,10,689.900,58.300,3.0740,-689.100,9.800,30.700,689.100,-9.800,30.700,2.059e+05 +2025,358.099939,10,687.400,57.800,2.8860,-687.000,-21.400,-9.400,687.000,21.400,-9.400,2.024e+05 +2025,358.117198,10,697.300,55.900,2.5190,-696.500,-27.200,-20.300,696.500,27.200,-20.300,1.893e+05 +2025,358.126447,10,733.500,60.200,2.8260,-730.400,26.000,-62.500,730.400,-26.000,-62.500,2.195e+05 +2025,358.127612,10,736.700,58.500,3.0030,-733.900,23.500,-59.100,733.900,-23.500,-59.100,2.073e+05 +2025,358.142432,10,716.400,62.000,3.0760,-716.200,-16.900,0.800,716.200,16.900,0.800,2.328e+05 +2025,358.152627,10,735.800,61.300,3.0420,-735.000,19.600,28.100,735.000,-19.600,28.100,2.276e+05 +2025,358.214054,10,719.500,67.800,3.1620,-719.400,-11.200,-7.000,719.400,11.200,-7.000,2.784e+05 +2025,358.217440,10,707.800,66.500,3.0520,-707.600,1.200,-16.900,707.600,-1.200,-16.900,2.679e+05 +2025,358.264083,10,725.600,59.900,2.5380,-725.100,1.900,26.700,725.100,-1.900,26.700,2.173e+05 +2025,358.290154,10,708.100,60.500,2.5060,-707.500,28.300,10.800,707.500,-28.300,10.800,2.217e+05 +2025,358.307267,10,708.500,59.400,3.0120,-707.700,27.700,18.800,707.700,-27.700,18.800,2.137e+05 +2025,358.318628,10,727.900,63.300,2.5210,-727.700,-3.600,19.200,727.700,3.600,19.200,2.427e+05 +2025,358.335741,10,735.900,59.500,2.6690,-735.500,-23.200,0.900,735.500,23.200,0.900,2.144e+05 +2025,358.345900,10,717.700,59.900,2.8850,-715.800,-4.800,-52.700,715.800,4.800,-52.700,2.173e+05 +2025,358.348194,10,709.900,56.800,2.8620,-709.500,16.700,12.300,709.500,-16.700,12.300,1.954e+05 +2025,358.418614,10,714.200,53.900,2.7050,-711.300,64.000,-2.500,711.300,-64.000,-2.500,1.760e+05 +2025,358.432232,10,725.500,55.700,2.0890,-725.300,-13.800,3.500,725.300,13.800,3.500,1.879e+05 +2025,358.440134,10,747.600,48.600,2.3690,-746.400,-29.600,-30.300,746.400,29.600,-30.300,1.431e+05 +2025,358.445741,10,713.400,50.500,2.0740,-712.500,-13.000,-34.100,712.500,13.000,-34.100,1.545e+05 +2025,358.449200,10,713.100,56.200,2.2080,-712.600,-18.900,-18.300,712.600,18.900,-18.300,1.913e+05 +2025,358.457138,10,699.500,55.100,2.1850,-699.300,-14.200,-2.100,699.300,14.200,-2.100,1.839e+05 +2025,358.482371,10,700.500,61.600,2.3150,-699.100,3.100,-44.200,699.100,-3.100,-44.200,2.299e+05 +2025,358.483500,10,712.700,59.900,2.1160,-711.300,-0.200,-44.700,711.300,0.200,-44.700,2.173e+05 +2025,358.512265,10,697.600,65.900,2.3870,-694.000,45.300,-54.400,694.000,-45.300,-54.400,2.631e+05 +2025,358.513430,10,702.500,66.200,2.3780,-699.200,62.500,-26.400,699.200,-62.500,-26.400,2.655e+05 +2025,358.554648,10,704.800,57.900,2.1350,-704.500,-16.100,-12.900,704.500,16.100,-12.900,2.031e+05 +2025,358.557998,10,698.700,51.900,2.0210,-697.300,-19.800,-39.000,697.300,19.800,-39.000,1.632e+05 +2025,358.587638,10,693.600,57.500,2.0190,-692.700,-12.300,-33.400,692.700,12.300,-33.400,2.003e+05 +2025,358.591097,10,720.600,62.500,2.0270,-719.900,-3.500,-30.900,719.900,3.500,-30.900,2.366e+05 +2025,358.607045,10,675.700,68.600,2.3100,-673.600,41.000,-33.900,673.600,-41.000,-33.900,2.851e+05 +2025,358.615092,10,699.600,59.600,2.2910,-695.600,69.700,-25.400,695.600,-69.700,-25.400,2.152e+05 +2025,358.619607,10,683.000,59.500,2.0300,-679.800,52.300,-40.300,679.800,-52.300,-40.300,2.144e+05 +2025,358.620772,10,693.000,56.900,2.2100,-688.900,69.900,-27.900,688.900,-69.900,-27.900,1.961e+05 +2025,358.636793,10,686.700,56.600,2.2640,-684.700,49.300,-16.400,684.700,-49.300,-16.400,1.941e+05 +2025,358.650666,10,683.700,53.800,2.3200,-681.500,52.600,-15.900,681.500,-52.600,-15.900,1.753e+05 +2025,358.675972,10,677.900,54.900,2.3090,-677.800,9.700,2.400,677.800,-9.700,2.400,1.826e+05 +2025,358.741513,10,729.500,60.000,2.3630,-729.400,-5.600,-11.500,729.400,5.600,-11.500,2.181e+05 +2025,358.744936,10,670.100,51.800,2.1540,-669.900,-9.000,-12.400,669.900,9.000,-12.400,1.625e+05 +2025,358.768166,10,664.800,51.100,2.3140,-664.600,11.700,8.900,664.600,-11.700,8.900,1.582e+05 +2025,358.776322,10,670.400,57.600,2.2240,-670.300,7.600,-2.100,670.300,-7.600,-2.100,2.010e+05 +2025,358.794856,10,657.900,56.000,2.3990,-657.900,2.800,-5.300,657.900,-2.800,-5.300,1.900e+05 +2025,358.798352,10,650.900,57.500,2.4650,-650.600,19.700,3.900,650.600,-19.700,3.900,2.003e+05 +2025,358.812297,10,646.300,53.000,2.6220,-646.100,-4.700,-15.700,646.100,4.700,-15.700,1.702e+05 +2025,358.815793,10,647.800,52.800,2.6200,-647.200,-0.400,-28.600,647.200,0.400,-28.600,1.689e+05 +2025,358.828573,10,632.100,52.200,2.4150,-632.100,3.400,5.300,632.100,-3.400,5.300,1.651e+05 +2025,358.848308,10,662.200,50.600,2.9840,-660.400,-31.400,-36.500,660.400,31.400,-36.500,1.551e+05 +2025,358.878603,10,629.300,48.300,2.7180,-628.900,-19.800,-7.300,628.900,19.800,-7.300,1.413e+05 +2025,358.893714,10,633.800,53.600,3.0500,-633.300,25.600,-4.300,633.300,-25.600,-4.300,1.740e+05 +2025,358.894879,10,631.600,51.200,2.9940,-630.600,32.800,-13.000,630.600,-32.800,-13.000,1.588e+05 +2025,358.912320,10,628.800,48.700,2.7580,-628.400,17.600,13.400,628.400,-17.600,13.400,1.437e+05 +2025,358.918110,10,623.800,52.200,2.9960,-623.000,28.800,-10.900,623.000,-28.800,-10.900,1.651e+05 +2025,358.937881,10,621.800,52.100,2.5640,-621.100,10.100,-28.300,621.100,-10.100,-28.300,1.644e+05 +2025,358.947166,10,624.800,51.900,2.6350,-623.600,26.100,-27.300,623.600,-26.100,-27.300,1.632e+05 +2025,358.951827,10,615.100,54.300,2.7830,-613.800,29.400,-25.900,613.800,-29.400,-25.900,1.786e+05 +2025,358.968103,10,623.000,50.600,3.0560,-622.400,9.600,25.000,622.400,-9.600,25.000,1.551e+05 +2025,358.971598,10,618.400,50.100,3.0600,-618.200,-11.300,10.400,618.200,11.300,10.400,1.520e+05 +2025,359.072787,10,613.400,48.300,3.4100,-611.500,44.800,-18.000,611.500,-44.800,-18.000,1.413e+05 +2025,359.073952,10,609.100,47.500,3.3120,-607.300,38.600,-27.100,607.300,-38.600,-27.100,1.367e+05 +2025,359.101880,10,612.800,47.200,3.3030,-611.300,32.700,-28.800,611.300,-32.700,-28.800,1.349e+05 +2025,359.130936,10,639.300,53.300,3.9550,-636.900,52.100,16.700,636.900,-52.100,16.700,1.721e+05 +2025,359.135597,10,614.800,48.400,3.5870,-613.400,36.900,19.100,613.400,-36.900,19.100,1.419e+05 +2025,359.156534,10,596.500,50.000,3.3290,-595.900,-24.800,10.900,595.900,24.800,10.900,1.514e+05 +2025,359.185590,10,597.900,50.300,3.5430,-597.100,20.400,24.600,597.100,-20.400,24.600,1.533e+05 +2025,359.192545,10,624.400,47.200,3.2730,-623.500,-9.000,32.600,623.500,9.000,32.600,1.349e+05 +2025,359.199536,10,611.200,46.300,3.1700,-609.400,10.500,45.700,609.400,-10.500,45.700,1.299e+05 +2025,359.227500,10,601.600,52.700,3.6240,-599.800,38.700,-24.600,599.800,-38.700,-24.600,1.682e+05 +2025,359.232125,10,590.600,45.200,3.1270,-588.600,42.700,-22.800,588.600,-42.700,-22.800,1.238e+05 +2025,359.250731,10,599.400,52.100,3.0570,-599.300,2.900,11.900,599.300,-2.900,11.900,1.644e+05 +2025,359.262346,10,594.800,49.900,3.2410,-594.200,-18.100,-17.600,594.200,18.100,-17.600,1.508e+05 +2025,359.324064,10,613.100,46.000,3.5630,-612.100,-30.900,-18.700,612.100,30.900,-18.700,1.282e+05 +2025,359.353121,10,588.500,48.200,3.1680,-587.800,-18.100,-23.900,587.800,18.100,-23.900,1.407e+05 +2025,359.362406,10,590.200,47.100,3.0040,-589.400,-18.500,-23.600,589.400,18.500,-23.600,1.344e+05 +2025,359.375186,10,607.500,51.100,3.0010,-606.800,29.200,4.500,606.800,-29.200,4.500,1.582e+05 +2025,359.420592,10,581.100,55.500,3.1570,-581.100,-1.900,-2.300,581.100,1.900,-2.300,1.866e+05 +2025,359.441529,10,582.600,55.200,3.4160,-581.700,22.600,-24.900,581.700,-22.600,-24.900,1.846e+05 +2025,359.476375,10,586.000,45.500,3.2070,-584.400,41.100,-14.400,584.400,-41.100,-14.400,1.254e+05 +2025,359.492651,10,616.100,47.900,3.4150,-615.700,-22.000,-5.700,615.700,22.000,-5.700,1.390e+05 +2025,359.500807,10,602.800,48.100,3.5350,-601.400,-20.000,-35.300,601.400,20.000,-35.300,1.401e+05 +2025,359.512422,10,595.700,45.800,2.9330,-595.400,-15.600,-6.600,595.400,15.600,-6.600,1.271e+05 +2025,359.553167,10,578.900,46.900,2.8120,-578.800,10.200,1.200,578.800,-10.200,1.200,1.332e+05 +2025,359.661309,10,591.700,48.500,3.1000,-591.200,-20.000,-12.600,591.200,20.000,-12.600,1.425e+05 +2025,359.664805,10,569.100,51.300,3.1050,-568.800,-3.000,-20.500,568.800,3.000,-20.500,1.594e+05 +2025,359.734533,10,583.800,45.500,2.5710,-583.000,-30.700,-7.000,583.000,30.700,-7.000,1.254e+05 +2025,359.755470,10,606.000,43.100,2.6170,-605.200,-27.800,12.500,605.200,27.800,12.500,1.125e+05 +2025,359.770617,10,576.600,37.000,2.7920,-576.100,-9.600,-22.200,576.100,9.600,-22.200,8.293e+04 +2025,359.784563,10,581.300,45.700,2.8090,-580.400,-32.000,-4.800,580.400,32.000,-4.800,1.265e+05 +2025,359.885787,10,563.000,47.900,2.9870,-561.300,39.600,-15.900,561.300,-39.600,-15.900,1.390e+05 +2025,359.910219,10,569.500,45.900,2.9520,-568.100,-6.600,-39.400,568.100,6.600,-39.400,1.276e+05 +2025,359.932285,10,568.300,42.500,2.8990,-565.500,44.100,-34.900,565.500,-44.100,-34.900,1.094e+05 +2025,359.934579,10,573.300,44.600,2.7760,-570.700,39.400,-38.000,570.700,-39.400,-38.000,1.205e+05 +2025,359.942698,10,594.300,44.400,3.0140,-592.000,38.000,-35.700,592.000,-38.000,-35.700,1.194e+05 +2025,359.947359,10,575.900,44.900,3.0830,-572.900,54.300,-22.000,572.900,-54.300,-22.000,1.221e+05 +2025,359.997389,10,561.300,45.300,2.8880,-559.600,20.400,-37.400,559.600,-20.400,-37.400,1.243e+05 +2025,360.007875,10,543.600,55.200,2.7870,-543.200,19.100,-8.800,543.200,-19.100,-8.800,1.846e+05 +2025,360.013665,10,556.300,49.000,3.0750,-555.200,33.600,-3.400,555.200,-33.600,-3.400,1.454e+05 +2025,360.014830,10,558.000,48.300,3.0600,-556.600,38.200,-6.200,556.600,-38.200,-6.200,1.413e+05 +2025,360.017160,10,551.000,49.800,3.0960,-550.400,26.800,-0.400,550.400,-26.800,-0.400,1.502e+05 +2025,360.018325,10,558.800,53.000,3.2040,-558.200,23.700,-8.400,558.200,-23.700,-8.400,1.702e+05 +2025,360.021821,10,574.900,47.300,3.1850,-574.300,-24.000,-7.600,574.300,24.000,-7.600,1.355e+05 +2025,360.029941,10,570.000,44.400,2.9490,-569.300,-27.900,0.200,569.300,27.900,0.200,1.194e+05 +2025,360.159020,10,538.000,44.700,2.7590,-535.400,52.600,2.000,535.400,-52.600,2.000,1.210e+05 +2025,360.172966,10,540.000,42.500,2.9400,-537.800,43.800,22.300,537.800,-43.800,22.300,1.094e+05 +2025,360.216041,10,548.200,43.400,2.7710,-547.100,2.300,35.200,547.100,-2.300,35.200,1.141e+05 +2025,360.302045,10,527.900,37.900,2.6630,-525.800,45.900,4.900,525.800,-45.900,4.900,8.701e+04 +2025,360.304376,10,529.000,36.800,2.7080,-527.000,45.600,-0.300,527.000,-45.600,-0.300,8.203e+04 +2025,360.332304,10,548.200,42.400,2.7670,-547.800,-21.300,8.300,547.800,21.300,8.300,1.089e+05 +2025,360.342790,10,543.500,42.300,2.7800,-541.500,40.400,24.600,541.500,-40.400,24.600,1.084e+05 +2025,360.357901,10,537.900,46.600,3.4160,-537.500,-12.600,-16.500,537.500,12.600,-16.500,1.315e+05 +2025,360.391618,10,529.200,45.700,2.6720,-527.600,26.400,31.600,527.600,-26.400,31.600,1.265e+05 +2025,360.442813,10,510.300,47.900,3.1300,-509.200,31.300,13.400,509.200,-31.300,13.400,1.390e+05 +2025,360.449804,10,520.100,45.500,2.6700,-519.500,16.400,17.500,519.500,-16.400,17.500,1.254e+05 +2025,360.463750,10,534.500,43.500,2.8590,-534.000,-17.800,-14.700,534.000,17.800,-14.700,1.146e+05 +2025,360.470705,10,537.300,44.500,2.9530,-536.500,-15.200,-24.700,536.500,15.200,-24.700,1.200e+05 +2025,360.488146,10,534.700,42.500,3.0500,-534.100,-7.200,-24.300,534.100,7.200,-24.300,1.094e+05 +2025,360.492807,10,527.500,43.100,3.0040,-527.100,-7.900,-19.700,527.100,7.900,-19.700,1.125e+05 +2025,360.525322,10,555.700,49.900,3.5310,-551.500,36.500,57.200,551.500,-36.500,57.200,1.508e+05 +2025,360.542800,10,545.500,49.200,3.1240,-544.900,-25.600,0.600,544.900,25.600,0.600,1.466e+05 +2025,360.591701,10,564.400,49.500,3.6660,-563.300,-4.800,34.800,563.300,4.800,34.800,1.484e+05 +2025,360.606811,10,538.700,39.500,3.4970,-537.700,-4.200,33.600,537.700,4.200,33.600,9.451e+04 +2025,360.620757,10,513.500,46.900,3.3460,-512.400,18.100,29.300,512.400,-18.100,29.300,1.332e+05 +2025,360.625381,10,526.900,42.900,3.5220,-526.300,-8.400,-23.900,526.300,8.400,-23.900,1.115e+05 +2025,360.646318,10,521.900,43.700,3.7530,-521.800,-13.000,2.200,521.800,13.000,2.200,1.157e+05 +2025,360.723110,10,525.300,38.900,2.7620,-524.700,-12.300,-20.000,524.700,12.300,-20.000,9.166e+04 +2025,360.734725,10,519.700,41.300,3.1450,-519.300,-20.300,2.000,519.300,20.300,2.000,1.033e+05 +2025,360.741680,10,513.400,40.100,3.3500,-512.500,-15.300,25.900,512.500,15.300,25.900,9.740e+04 +2025,360.766149,10,538.800,41.100,3.4500,-538.400,-18.200,-9.500,538.400,18.200,-9.500,1.023e+05 +2025,360.787086,10,519.300,36.600,3.2370,-518.600,-4.500,-27.100,518.600,4.500,-27.100,8.114e+04 +2025,360.788251,10,522.100,35.700,2.9680,-521.300,-8.100,-26.900,521.300,8.100,-26.900,7.720e+04 +2025,360.791746,10,512.000,37.300,3.1170,-511.400,-6.200,-24.500,511.400,6.200,-24.500,8.428e+04 +2025,360.801031,10,509.600,31.500,2.7650,-508.800,-27.300,-9.600,508.800,27.300,-9.600,6.010e+04 +2025,360.839373,10,512.300,34.500,3.1900,-511.600,-24.500,-7.700,511.600,24.500,-7.700,7.210e+04 +2025,360.844034,10,525.300,40.200,3.3330,-524.600,-21.700,-16.900,524.600,21.700,-16.900,9.789e+04 +2025,360.867264,10,516.400,37.000,3.3750,-514.500,-43.400,-5.600,514.500,43.400,-5.600,8.293e+04 +2025,360.869595,10,540.500,35.600,3.1310,-539.000,-37.900,-14.000,539.000,37.900,-14.000,7.677e+04 +2025,360.890568,10,520.300,39.900,3.9190,-519.900,-16.200,11.800,519.900,16.200,11.800,9.643e+04 +2025,360.894063,10,523.400,40.200,3.7530,-523.000,-16.100,-10.200,523.000,16.100,-10.200,9.789e+04 +2025,360.904550,10,513.900,40.900,3.8380,-513.600,-17.700,-7.900,513.600,17.700,-7.900,1.013e+05 +2025,360.921955,10,512.300,40.900,3.5740,-512.000,-16.300,0.800,512.000,16.300,0.800,1.013e+05 +2025,360.925450,10,530.200,41.400,3.9090,-529.800,-12.000,-16.000,529.800,12.000,-16.000,1.038e+05 +2025,360.934772,10,523.200,41.700,3.7930,-522.800,-14.200,-15.000,522.800,14.200,-15.000,1.053e+05 +2025,360.960333,10,511.100,43.100,3.8790,-511.000,-0.700,9.800,511.000,0.700,9.800,1.125e+05 +2025,360.961498,10,514.700,41.800,3.9220,-514.300,-1.100,20.400,514.300,1.100,20.400,1.058e+05 +2025,361.012693,10,513.400,44.200,3.7010,-513.300,9.000,-2.700,513.300,-9.000,-2.700,1.183e+05 +2025,361.026639,10,511.600,45.200,3.8230,-511.200,19.700,-2.300,511.200,-19.700,-2.300,1.238e+05 +2025,361.048741,10,518.400,43.700,3.8860,-517.800,17.200,-19.300,517.800,-17.200,-19.300,1.157e+05 +2025,361.063852,10,519.400,43.800,3.8950,-518.500,24.600,17.600,518.500,-24.600,17.600,1.162e+05 +2025,361.082422,10,512.600,43.800,3.8630,-511.800,22.200,16.500,511.800,-22.200,16.500,1.162e+05 +2025,361.084752,10,519.700,42.900,3.9810,-519.200,-3.200,23.600,519.200,3.200,23.600,1.115e+05 +2025,361.095238,10,536.200,42.200,3.9470,-534.400,34.000,27.800,534.400,-34.000,27.800,1.079e+05 +2025,361.120836,10,529.100,43.100,3.5940,-527.800,19.100,32.800,527.800,-19.100,32.800,1.125e+05 +2025,361.133653,10,503.600,42.500,3.7110,-502.500,23.200,22.100,502.500,-23.200,22.100,1.094e+05 +2025,361.160379,10,495.900,42.000,2.9720,-495.800,-0.200,9.800,495.800,0.200,9.800,1.069e+05 +2025,361.171995,10,528.300,39.600,3.4790,-528.000,-16.800,-5.900,528.000,16.800,-5.900,9.499e+04 +2025,361.177820,10,504.800,45.800,3.4820,-504.500,13.700,12.600,504.500,-13.700,12.600,1.271e+05 +2025,361.189436,10,514.200,39.800,3.2490,-513.800,-18.700,-4.000,513.800,18.700,-4.000,9.595e+04 +2025,361.203382,10,518.100,39.400,3.3310,-517.800,-19.100,4.100,517.800,19.100,4.100,9.403e+04 +2025,361.239466,10,498.900,39.000,3.3820,-496.800,44.700,6.000,496.800,-44.700,6.000,9.213e+04 +2025,361.245291,10,509.800,38.900,3.3390,-507.300,44.400,23.800,507.300,-44.400,23.800,9.166e+04 +2025,361.254577,10,502.500,37.600,3.2540,-500.900,26.000,30.000,500.900,-26.000,30.000,8.564e+04 +2025,361.278972,10,499.700,38.500,3.2410,-498.100,13.000,38.000,498.100,-13.000,38.000,8.979e+04 +2025,361.280138,10,505.300,37.200,3.0800,-504.600,-8.000,25.200,504.600,8.000,25.200,8.382e+04 +2025,361.292918,10,509.100,37.500,3.2540,-508.300,-17.800,22.000,508.300,17.800,22.000,8.518e+04 +2025,361.330204,10,484.800,42.400,2.9130,-484.600,4.800,12.900,484.600,-4.800,12.900,1.089e+05 +2025,361.336030,10,499.900,36.500,3.4810,-499.800,-10.200,5.500,499.800,10.200,5.500,8.070e+04 +2025,361.344186,10,497.600,37.900,3.5450,-497.400,-14.700,3.200,497.400,14.700,3.200,8.701e+04 +2025,361.358132,10,491.000,36.200,3.1410,-490.700,-19.000,4.100,490.700,19.000,4.100,7.938e+04 +2025,361.359297,10,489.100,39.300,3.3100,-488.400,-8.900,26.000,488.400,8.900,26.000,9.356e+04 +2025,361.379032,10,506.000,36.500,3.1470,-503.800,12.700,45.400,503.800,-12.700,45.400,8.070e+04 +2025,361.434888,10,508.900,52.800,2.2620,-506.800,-6.200,45.800,506.800,6.200,45.800,1.689e+05 +2025,361.467440,10,491.000,37.700,2.2980,-490.400,-23.600,5.400,490.400,23.600,5.400,8.609e+04 +2025,361.588400,10,469.100,31.200,2.6220,-468.800,-2.800,-18.500,468.800,2.800,-18.500,5.896e+04 +2025,361.837273,10,508.800,39.700,3.0090,-508.200,-21.200,-14.700,508.200,21.200,-14.700,9.547e+04 +2025,361.851219,10,468.300,42.400,2.8860,-467.600,22.000,11.700,467.600,-22.000,11.700,1.089e+05 +2025,361.908276,10,502.500,35.200,2.9360,-501.600,-16.100,-24.300,501.600,16.100,-24.300,7.505e+04 +2025,361.951279,10,484.700,37.400,3.3640,-483.400,6.100,35.000,483.400,-6.100,35.000,8.473e+04 +2025,362.052467,10,473.100,39.300,3.7310,-472.900,-13.000,3.400,472.900,13.000,3.400,9.356e+04 +2025,362.130461,10,491.000,38.100,4.0290,-490.000,-16.000,-26.800,490.000,16.000,-26.800,8.793e+04 +2025,362.137416,10,479.800,37.500,3.8880,-478.900,-19.400,-23.800,478.900,19.400,-23.800,8.518e+04 +2025,362.629448,10,450.300,38.200,4.0130,-449.400,-17.700,-22.400,449.400,17.700,-22.400,8.839e+04 +2025,362.707296,10,461.600,38.000,5.4200,-459.600,-32.300,-28.900,459.600,32.300,-28.900,8.747e+04 +2025,362.713122,10,464.300,38.400,5.3160,-462.000,-33.900,-30.200,462.000,33.900,-30.200,8.932e+04 +2025,362.714287,10,464.700,37.600,5.4910,-462.600,-36.900,-26.000,462.600,36.900,-26.000,8.564e+04 +2025,362.716618,10,459.700,38.100,5.6010,-457.700,-34.500,-26.300,457.700,34.500,-26.300,8.793e+04 +2025,362.727141,10,452.000,39.100,5.1280,-451.100,-24.000,-17.300,451.100,24.000,-17.300,9.261e+04 +2025,362.734132,10,456.200,40.100,5.5280,-454.800,-27.600,-23.000,454.800,27.600,-23.000,9.740e+04 +2025,362.735297,10,457.000,40.700,5.3240,-455.600,-22.800,-28.700,455.600,22.800,-28.700,1.003e+05 +2025,362.764354,10,470.800,38.400,8.6700,-469.700,9.300,-31.500,469.700,-9.300,-31.500,8.932e+04 +2025,362.792245,10,464.300,37.400,6.0480,-462.100,24.100,-38.700,462.100,-24.100,-38.700,8.473e+04 +2025,362.813182,10,474.400,37.900,6.9710,-473.600,19.900,-18.100,473.600,-19.900,-18.100,8.701e+04 +2025,362.820173,10,461.800,38.100,7.5160,-460.500,7.900,-33.100,460.500,-7.900,-33.100,8.793e+04 +2025,362.834155,10,464.600,38.100,6.2460,-462.700,17.800,-37.500,462.700,-17.800,-37.500,8.793e+04 +2025,362.849266,10,463.000,37.500,6.1200,-462.000,26.000,-16.000,462.000,-26.000,-16.000,8.518e+04 +2025,362.850431,10,462.100,36.900,5.9940,-461.000,25.000,-18.000,461.000,-25.000,-18.000,8.248e+04 +2025,362.859753,10,454.100,37.600,6.2170,-452.900,19.100,-27.000,452.900,-19.100,-27.000,8.564e+04 +2025,362.878323,10,474.000,34.700,5.8040,-471.100,9.800,-51.400,471.100,-9.800,-51.400,7.294e+04 +2025,362.891103,10,455.900,35.600,6.5290,-455.200,21.700,-10.700,455.200,-21.700,-10.700,7.677e+04 +2025,362.894599,10,462.900,33.700,5.9060,-461.600,21.900,-27.600,461.600,-21.900,-27.600,6.879e+04 +2025,362.895764,10,461.600,35.200,6.0790,-460.300,19.900,-28.100,460.300,-19.900,-28.100,7.505e+04 +2025,362.899259,10,460.300,34.700,6.1780,-458.700,20.200,-32.500,458.700,-20.200,-32.500,7.294e+04 +2025,362.913205,10,456.000,40.800,6.3890,-455.700,14.000,-6.100,455.700,-14.000,-6.100,1.008e+05 +2025,362.915535,10,454.700,34.500,5.8550,-453.400,19.400,-28.800,453.400,-19.400,-28.800,7.210e+04 +2025,362.962070,10,442.300,36.000,6.3060,-442.000,-15.900,2.400,442.000,15.900,2.400,7.850e+04 +2025,362.967896,10,443.100,36.000,5.5140,-443.000,-7.800,2.500,443.000,7.800,2.500,7.850e+04 +2025,362.977181,10,441.000,33.000,6.0530,-441.000,-4.900,1.600,441.000,4.900,1.600,6.596e+04 +2025,362.986502,10,439.700,34.100,5.6560,-439.500,-12.800,-2.200,439.500,12.800,-2.200,7.044e+04 +2025,362.993457,10,441.400,35.800,5.7750,-441.300,-10.700,-1.300,441.300,10.700,-1.300,7.763e+04 +2025,363.002778,10,440.700,35.200,5.5770,-440.700,-0.500,7.600,440.700,0.500,7.600,7.505e+04 +2025,363.015559,10,439.800,37.500,6.1470,-439.600,-13.500,0.600,439.600,13.500,0.600,8.518e+04 +2025,363.016724,10,440.500,37.400,6.6660,-440.100,-18.400,-1.800,440.100,18.400,-1.800,8.473e+04 +2025,363.023679,10,448.000,37.100,6.6720,-445.700,-34.800,-29.500,445.700,34.800,-29.500,8.337e+04 +2025,363.029504,10,441.300,36.800,5.7250,-441.200,-3.600,-5.100,441.200,3.600,-5.100,8.203e+04 +2025,363.030670,10,440.600,34.200,6.2110,-440.500,-9.200,-5.300,440.500,9.200,-5.300,7.085e+04 +2025,363.034165,10,449.900,32.700,6.7980,-449.700,-9.500,-8.200,449.700,9.500,-8.200,6.477e+04 +2025,363.038826,10,454.700,34.000,7.3370,-454.400,-15.100,0.500,454.400,15.100,0.500,7.002e+04 +2025,363.042321,10,443.000,34.900,7.4750,-442.700,-14.200,-10.100,442.700,14.200,-10.100,7.378e+04 +2025,363.048184,10,443.400,34.200,7.0830,-442.100,-25.300,-22.600,442.100,25.300,-22.600,7.085e+04 +2025,363.049349,10,441.600,36.600,7.4210,-440.800,-21.100,-17.100,440.800,21.100,-17.100,8.114e+04 +2025,363.052844,10,447.700,35.500,6.3070,-447.700,2.100,-1.200,447.700,-2.100,-1.200,7.634e+04 +2025,363.077240,10,438.100,33.800,7.1300,-437.800,4.600,-15.300,437.800,-4.600,-15.300,6.920e+04 +2025,363.078406,10,439.100,32.000,7.0410,-438.800,5.400,-15.100,438.800,-5.400,-15.100,6.203e+04 +2025,363.092351,10,435.000,40.100,6.9520,-434.800,-6.400,-13.100,434.800,6.400,-13.100,9.740e+04 +2025,363.105132,10,429.000,35.400,6.4560,-428.500,-1.500,-19.300,428.500,1.500,-19.300,7.591e+04 +2025,363.108627,10,428.400,33.100,5.9970,-428.200,6.800,-13.000,428.200,-6.800,-13.000,6.637e+04 +2025,363.156363,10,439.400,31.800,6.1360,-439.400,-0.900,0.900,439.400,0.900,0.900,6.125e+04 +2025,363.159859,10,436.700,33.500,6.1160,-436.600,-1.600,-8.200,436.600,1.600,-8.200,6.798e+04 +2025,363.163318,10,437.100,31.800,5.8330,-437.100,-0.600,-2.200,437.100,0.600,-2.200,6.125e+04 +2025,363.264506,10,434.600,29.400,7.3400,-433.800,-23.600,12.200,433.800,23.600,12.200,5.236e+04 +2025,363.270332,10,439.900,29.800,7.4280,-439.200,-23.600,9.500,439.200,23.600,9.500,5.379e+04 +2025,363.292398,10,434.400,28.200,7.4330,-434.100,-8.600,11.900,434.100,8.600,11.900,4.817e+04 +2025,363.295893,10,430.700,30.500,7.3740,-429.800,-28.200,-1.500,429.800,28.200,-1.500,5.635e+04 +2025,363.297059,10,427.600,28.000,7.2750,-427.200,-18.000,4.900,427.200,18.000,4.900,4.749e+04 +2025,363.313335,10,426.700,25.200,6.5160,-426.500,-10.100,11.100,426.500,10.100,11.100,3.847e+04 +2025,363.320289,10,427.600,26.100,6.9200,-427.400,-9.400,7.400,427.400,9.400,7.400,4.126e+04 +2025,363.350511,10,423.000,24.300,7.0510,-422.700,-15.100,2.600,422.700,15.100,2.600,3.577e+04 +2025,363.388925,10,421.300,24.800,7.1610,-421.000,-16.700,2.100,421.000,16.700,2.100,3.726e+04 +2025,363.401742,10,419.100,23.900,7.1400,-418.800,-16.400,-0.100,418.800,16.400,-0.100,3.460e+04 +2025,363.404036,10,421.400,23.800,7.2820,-421.000,-17.500,5.600,421.000,17.500,5.600,3.431e+04 +2025,363.414523,10,417.400,22.400,7.1360,-417.000,-17.100,-4.100,417.000,17.100,-4.100,3.039e+04 +2025,363.452864,10,413.400,22.900,7.0280,-413.300,-6.700,4.700,413.300,6.700,4.700,3.177e+04 +2025,363.469140,10,413.400,25.900,6.9050,-413.200,-8.100,9.400,413.200,8.100,9.400,4.063e+04 +2025,363.490113,10,412.600,24.900,7.0090,-412.200,-14.500,11.600,412.200,14.500,11.600,3.756e+04 +2025,363.491278,10,414.400,24.800,6.8310,-414.000,-16.200,9.200,414.000,16.200,9.200,3.726e+04 +2025,363.519170,10,413.400,23.300,7.0050,-413.000,-1.600,17.900,413.000,1.600,17.900,3.288e+04 +2025,363.520335,10,407.900,25.800,7.5750,-407.600,-7.800,12.800,407.600,7.800,12.800,4.032e+04 +2025,363.524996,10,403.300,22.900,7.7560,-403.200,-7.500,-0.900,403.200,7.500,-0.900,3.177e+04 +2025,363.527326,10,404.700,24.200,7.8520,-404.500,-2.900,12.300,404.500,2.900,12.300,3.547e+04 +2025,363.551722,10,405.500,23.800,7.3370,-405.100,-11.900,-12.400,405.100,11.900,-12.400,3.431e+04 +2025,363.556383,10,406.900,25.500,7.2380,-406.400,-12.200,-15.300,406.400,12.200,-15.300,3.939e+04 +2025,363.566833,10,408.500,24.100,7.0890,-407.600,-3.300,-27.800,407.600,3.300,-27.800,3.518e+04 +2025,363.567998,10,408.900,23.500,6.9670,-407.900,-2.500,-27.900,407.900,2.500,-27.900,3.345e+04 +2025,363.570328,10,411.100,23.600,7.2510,-409.900,-2.800,-31.900,409.900,2.800,-31.900,3.374e+04 +2025,363.572659,10,411.200,23.900,7.1070,-409.900,-2.100,-32.400,409.900,2.100,-32.400,3.460e+04 +2025,363.599421,10,407.500,21.100,6.9780,-406.700,-6.300,-23.300,406.700,6.300,-23.300,2.697e+04 +2025,363.620358,10,414.900,26.900,8.5590,-414.400,-13.000,-15.200,414.400,13.000,-15.200,4.383e+04 +2025,363.633139,10,422.200,24.400,8.8140,-420.900,-18.600,-26.700,420.900,18.600,-26.700,3.606e+04 +2025,363.634304,10,422.000,24.800,9.3280,-420.800,-18.600,-24.800,420.800,18.600,-24.800,3.726e+04 +2025,363.635469,10,418.800,24.000,8.4070,-417.600,-18.700,-25.800,417.600,18.700,-25.800,3.489e+04 +2025,363.662195,10,399.600,20.500,6.2620,-399.000,-9.300,-20.900,399.000,9.300,-20.900,2.546e+04 +2025,363.672682,10,396.700,23.100,6.5100,-396.100,-4.400,-20.500,396.100,4.400,-20.500,3.232e+04 +2025,363.673811,10,397.800,23.300,6.6550,-397.200,-10.300,-19.100,397.200,10.300,-19.100,3.288e+04 +2025,363.692417,10,391.500,23.600,6.3230,-391.400,2.500,-9.500,391.400,-2.500,-9.500,3.374e+04 +2025,363.875023,10,392.600,29.000,4.2320,-392.500,1.700,-7.600,392.500,-1.700,-7.600,5.094e+04 +2025,363.901749,10,396.800,30.800,5.5430,-396.500,5.600,-14.700,396.500,-5.600,-14.700,5.746e+04 +2025,363.925016,10,389.800,28.800,5.2880,-389.600,3.800,-14.400,389.600,-3.800,-14.400,5.024e+04 +2025,364.035490,10,385.500,32.200,5.9820,-385.400,-2.700,-9.700,385.400,2.700,-9.700,6.281e+04 +2025,364.142504,10,391.500,31.900,7.8810,-391.200,6.100,14.600,391.200,-6.100,14.600,6.164e+04 +2025,364.143633,10,389.600,31.600,7.5860,-389.400,3.700,12.400,389.400,-3.700,12.400,6.049e+04 +2025,364.155285,10,387.900,29.300,7.2760,-387.700,9.700,9.200,387.700,-9.700,9.200,5.200e+04 +2025,364.161147,10,390.200,29.300,7.8860,-389.700,15.500,13.300,389.700,-15.500,13.300,5.200e+04 +2025,364.194864,10,386.100,31.300,7.4290,-385.900,-4.800,9.800,385.900,4.800,9.800,5.934e+04 +2025,364.198360,10,388.500,32.800,8.0450,-388.400,-4.700,7.400,388.400,4.700,7.400,6.517e+04 +2025,364.199488,10,388.100,30.300,6.9970,-388.000,-1.300,10.400,388.000,1.300,10.400,5.561e+04 +2025,364.207645,10,383.000,29.000,6.3560,-382.800,-1.500,12.800,382.800,1.500,12.800,5.094e+04 +2025,364.212305,10,391.800,32.500,7.6060,-391.700,4.500,5.800,391.700,-4.500,5.800,6.398e+04 +2025,364.215765,10,391.700,31.900,7.5230,-391.600,4.300,6.700,391.600,-4.300,6.700,6.164e+04 +2025,364.219260,10,388.200,32.800,7.7510,-388.200,-0.200,5.700,388.200,0.200,5.700,6.517e+04 +2025,364.225086,10,395.100,30.500,7.3250,-394.800,8.500,13.100,394.800,-8.500,13.100,5.635e+04 +2025,364.227416,10,388.900,34.000,7.9690,-388.800,4.400,7.700,388.800,-4.400,7.700,7.002e+04 +2025,364.284401,10,384.900,31.200,7.3240,-384.700,7.200,8.900,384.700,-7.200,8.900,5.896e+04 +2025,364.292557,10,383.000,33.200,6.6930,-380.500,42.800,8.100,380.500,-42.800,8.100,6.677e+04 +2025,364.328568,10,389.800,30.200,7.1780,-389.800,-0.600,5.200,389.800,0.600,5.200,5.525e+04 +2025,364.355331,10,383.700,31.600,7.6700,-383.200,10.100,16.200,383.200,-10.100,16.200,6.049e+04 +2025,364.394911,10,403.000,36.300,8.9500,-402.800,2.100,13.400,402.800,-2.100,13.400,7.982e+04 +2025,364.396076,10,412.000,33.600,9.0430,-411.800,1.500,12.800,411.800,-1.500,12.800,6.839e+04 +2025,364.410022,10,406.100,33.000,9.4660,-405.700,5.000,16.100,405.700,-5.000,16.100,6.596e+04 +2025,364.422802,10,407.600,34.200,9.8070,-407.400,5.300,13.700,407.400,-5.300,13.700,7.085e+04 +2025,364.446033,10,400.300,32.000,9.8140,-399.600,9.000,21.400,399.600,-9.000,21.400,6.203e+04 +2025,364.449529,10,399.300,35.000,10.4770,-398.500,12.200,21.700,398.500,-12.200,21.700,7.420e+04 +2025,364.487943,10,397.400,33.400,10.7490,-396.500,13.100,23.700,396.500,-13.100,23.700,6.757e+04 +2025,364.505384,10,406.000,32.200,11.3140,-405.400,10.600,19.700,405.400,-10.600,19.700,6.281e+04 +2025,364.549552,10,406.300,35.900,11.8860,-405.000,22.900,23.300,405.000,-22.900,23.300,7.807e+04 +2025,364.558837,10,413.900,35.900,11.6830,-413.400,-1.500,21.200,413.400,1.500,21.200,7.807e+04 +2025,364.576278,10,414.500,36.300,11.6860,-413.800,2.700,24.700,413.800,-2.700,24.700,7.982e+04 +2025,364.578608,10,414.900,36.600,10.8490,-414.100,0.800,24.500,414.100,-0.800,24.500,8.114e+04 +2025,364.620554,10,419.000,38.800,8.4220,-418.200,15.400,21.300,418.200,-15.400,21.300,9.119e+04 +2025,364.633335,10,416.100,37.400,8.9920,-415.300,8.800,25.200,415.300,-8.800,25.200,8.473e+04 +2025,364.754221,10,400.200,39.900,13.0450,-400.100,-0.600,6.700,400.100,0.600,6.700,9.643e+04 +2025,364.793765,10,400.800,39.600,11.3430,-400.800,-5.400,1.900,400.800,5.400,1.900,9.499e+04 +2025,364.799554,10,403.000,38.600,10.9670,-403.000,-3.600,5.000,403.000,3.600,5.000,9.025e+04 +2025,364.801884,10,395.400,38.000,12.0900,-395.300,-6.800,0.700,395.300,6.800,0.700,8.747e+04 +2025,364.803050,10,393.600,37.400,11.8320,-393.500,-6.800,2.900,393.500,6.800,2.900,8.473e+04 +2025,364.821656,10,402.500,34.000,10.4140,-402.400,-4.500,-7.400,402.400,4.500,-7.400,7.002e+04 +2025,364.839170,10,396.000,33.500,10.7510,-395.900,-1.500,-9.500,395.900,1.500,-9.500,6.798e+04 +2025,364.860107,10,399.100,35.000,11.5930,-398.900,-6.600,-7.400,398.900,6.600,-7.400,7.420e+04 +2025,364.869392,10,404.000,37.400,11.4560,-403.800,-6.000,9.600,403.800,6.000,9.600,8.473e+04 +2025,364.913559,10,391.100,36.200,11.5010,-390.500,-20.800,7.700,390.500,20.800,7.700,7.938e+04 +2025,364.926376,10,393.200,32.600,12.3240,-392.500,-24.000,4.400,392.500,24.000,4.400,6.438e+04 +2025,364.958965,10,389.900,33.900,15.4390,-389.400,-16.200,10.900,389.400,16.200,10.900,6.961e+04 +2025,364.968250,10,395.900,34.900,16.5220,-395.200,-8.600,21.300,395.200,8.600,21.300,7.378e+04 +2025,364.977571,10,395.200,34.500,18.9020,-394.400,-15.000,20.900,394.400,15.000,20.900,7.210e+04 +2025,365.018243,10,408.500,36.300,17.2900,-408.400,-7.400,5.300,408.400,7.400,5.300,7.982e+04 +2025,365.043877,10,406.400,33.800,15.5670,-406.300,-11.400,-0.700,406.300,11.400,-0.700,6.920e+04 +2025,365.046208,10,406.400,33.800,16.2420,-406.300,-9.700,-1.200,406.300,9.700,-1.200,6.920e+04 +2025,365.057823,10,413.100,36.700,11.6110,-413.000,-7.700,-4.400,413.000,7.700,-4.400,8.159e+04 +2025,365.062484,10,414.900,38.900,13.0580,-414.300,-22.600,-6.400,414.300,22.600,-6.400,9.166e+04 +2025,365.108982,10,417.200,40.500,8.4940,-416.800,-15.800,-9.000,416.800,15.800,-9.000,9.936e+04 +2025,365.126387,10,411.800,39.700,10.6700,-411.500,-11.500,-7.900,411.500,11.500,-7.900,9.547e+04 +2025,365.129882,10,412.300,38.500,8.5760,-411.900,-13.700,-11.000,411.900,13.700,-11.000,8.979e+04 +2025,365.140369,10,410.100,33.800,10.5580,-409.900,-6.600,-11.600,409.900,6.600,-11.600,6.920e+04 +2025,365.143864,10,408.400,34.100,10.5180,-408.200,-5.300,-13.800,408.200,5.300,-13.800,7.044e+04 +2025,365.227611,10,417.500,49.100,8.9740,-417.000,20.500,-5.000,417.000,-20.500,-5.000,1.460e+05 +2025,365.252044,10,405.800,54.600,10.0800,-405.400,16.900,0.200,405.400,-16.900,0.200,1.806e+05 +2025,365.296248,10,434.300,43.400,11.6340,-432.100,8.300,-42.800,432.100,-8.300,-42.800,1.141e+05 +2025,365.510240,10,456.600,34.200,27.8220,-455.100,28.600,-23.200,455.100,-28.600,-23.200,7.085e+04 +2025,365.554408,10,476.000,32.500,18.6820,-473.200,45.100,-24.900,473.200,-45.100,-24.900,6.398e+04 +2025,365.590528,10,499.400,60.300,8.0550,-499.000,14.100,15.900,499.000,-14.100,15.900,2.203e+05 +2025,365.596354,10,517.700,52.700,6.3930,-517.500,7.100,13.300,517.500,-7.100,13.300,1.682e+05 +2025,365.614960,10,506.300,53.800,6.2130,-505.400,-3.300,29.700,505.400,3.300,29.700,1.753e+05 +2025,365.768435,10,480.300,52.100,3.5670,-477.900,-32.700,35.700,477.900,32.700,35.700,1.644e+05 +2025,365.771931,10,474.000,49.900,3.9320,-471.200,-44.200,26.800,471.200,44.200,26.800,1.508e+05 +2025,365.791702,10,461.700,43.800,3.9070,-459.200,-45.200,15.800,459.200,45.200,15.800,1.162e+05 +2025,365.801060,10,459.400,49.200,3.6830,-457.300,-42.200,14.400,457.300,42.200,14.400,1.466e+05 +2025,365.802225,10,460.800,45.500,4.0640,-458.900,-39.900,11.800,458.900,39.900,11.800,1.254e+05 diff --git a/docs/swapi/figures/alpha_peak_finding.svg b/docs/swapi/figures/alpha_peak_finding.svg new file mode 100644 index 000000000..b0949381b --- /dev/null +++ b/docs/swapi/figures/alpha_peak_finding.svg @@ -0,0 +1,7789 @@ + + + + + + + + 2026-05-06T23:48:44.103165 + image/svg+xml + + + Matplotlib v3.10.9, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/swapi/figures/calibration_curves.svg b/docs/swapi/figures/calibration_curves.svg new file mode 100644 index 000000000..651681a2d --- /dev/null +++ b/docs/swapi/figures/calibration_curves.svg @@ -0,0 +1,2763 @@ + + + + + + + + 2026-05-11T12:07:21.997576 + image/svg+xml + + + Matplotlib v3.10.9, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/swapi/figures/fit_accuracy.svg b/docs/swapi/figures/fit_accuracy.svg new file mode 100644 index 000000000..45c766950 --- /dev/null +++ b/docs/swapi/figures/fit_accuracy.svg @@ -0,0 +1,4074 @@ + + + + + + + + 2026-05-12T13:15:37.233251 + image/svg+xml + + + Matplotlib v3.10.8, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/swapi/figures/passband_boundaries.svg b/docs/swapi/figures/passband_boundaries.svg new file mode 100644 index 000000000..b4e171663 --- /dev/null +++ b/docs/swapi/figures/passband_boundaries.svg @@ -0,0 +1,3968 @@ + + + + + + + + 2026-05-11T12:07:24.162196 + image/svg+xml + + + Matplotlib v3.10.9, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/swapi/figures/real_data_fit.svg b/docs/swapi/figures/real_data_fit.svg new file mode 100644 index 000000000..105e3e614 --- /dev/null +++ b/docs/swapi/figures/real_data_fit.svg @@ -0,0 +1,4866 @@ + + + + + + + + 2026-05-07T00:31:18.900824 + image/svg+xml + + + Matplotlib v3.10.9, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/swapi/figures/spectra.svg b/docs/swapi/figures/spectra.svg new file mode 100644 index 000000000..e60ac7a86 --- /dev/null +++ b/docs/swapi/figures/spectra.svg @@ -0,0 +1,8246 @@ + + + + + + + + 2026-05-11T12:11:16.062750 + image/svg+xml + + + Matplotlib v3.10.9, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/swapi/figures/uncertainty_mc.svg b/docs/swapi/figures/uncertainty_mc.svg new file mode 100644 index 000000000..ce529b03c --- /dev/null +++ b/docs/swapi/figures/uncertainty_mc.svg @@ -0,0 +1,11360 @@ + + + + + + + + 2026-05-07T00:15:31.761501 + image/svg+xml + + + Matplotlib v3.10.9, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/swapi/solar-wind-moments.md b/docs/swapi/solar-wind-moments.md new file mode 100644 index 000000000..0712f405a --- /dev/null +++ b/docs/swapi/solar-wind-moments.md @@ -0,0 +1,662 @@ +# SWAPI Solar Wind Moments Algorithm Notes + +## Introduction + +The SWAPI instrument on IMAP measures coincidence count rates as a function of the ESA voltage that selects ions at a given energy-per-charge. Each 12-second ESA sweep contains 72 voltage steps spanning ~50 V to ~10 kV (covering proton and alpha solar-wind energies, plus the pickup-ion shoulder). The L3A `proton-sw` pipeline groups 5 consecutive sweeps into a 60-second chunk and fits a Maxwellian proton VDF — yielding density $`n`$, temperature $`T`$, and the three components of the bulk velocity $`\mathbf{v}_{\text{RTN}}`$ — convolved through SWAPI's energy/angle response and the deadtime correction. This document describes that pipeline end-to-end: the inputs, the forward model, the optimization, and the per-fit uncertainty estimate reported in the L3A CDF. + +To set the stage, here is one representative chunk from `imap_swapi_l2_sci_20260201_v001.cdf` (sweeps 6853–6857, center 22:50:14 UT, slow ~308 km/s wind). The figure below shows the measured count rate at each of the 72 ESA steps for all 5 sweeps and on the 5-sweep average. Two forward-modeled spectra are overlaid: the production fit (orange — uses all 71 science bins, including the high-resolution fine-sweep block 63–71) and a coarse-only variant (blue — drops the fine sweep). Both forward models closely track the data on every sweep: + +SWAPI proton fit on real L2 data: 5 individual sweeps and the 5-sweep average, with the production fit (all 71 science bins) and a coarse-only fit (62 bins) overlaid on the measured count rate + +The fitted moments and their 1σ uncertainties are: + + +| Quantity | SWAPI all bins (HC3 σ) | SWAPI all bins (boot σ) | SWAPI coarse only (HC3 σ) | WIND/SWE 2-min @ 22:49:48 UT | +|---|---:|---:|---:|---:| +| Density $`n`$ (cm⁻³) | 5.122 ± 0.094 | ± 0.099 | 5.091 ± 0.134 | 5.710 ± 0.053 | +| Temperature $`T`$ (K) | $`(1.741 \pm 0.069)\times10^{4}`$ | $`\pm 0.074\times10^{4}`$ | $`(1.757 \pm 0.101)\times10^{4}`$ | $`(2.096 \pm 0.41)\times10^{4}`$ | +| Inertial-frame $`\lvert v \rvert`$ (km/s) | 307.1 ± 0.26 | ± 0.28 | 307.3 ± 0.34 | 333.6 ± 6.40 | +| $`v_{R}`$ (km/s, inertial RTN) | 307.06 ± 0.26 | ± 0.27 | 307.18 ± 0.41 | +333.30 ± 6.40 | +| $`v_{T}`$ (km/s, inertial RTN) | +3.71 ± 1.30 | ± 1.32 | +6.07 ± 2.20 | +12.70 ± 1.00 | +| $`v_{N}`$ (km/s, inertial RTN) | -2.81 ± 1.37 | ± 1.39 | -3.79 ± 1.81 | -0.30 ± 1.00 | + + +The two SWAPI fits agree on every moment to well within their uncertainties. +The reported HC3 uncertainties come from an approximate covariance matrix. +The `boot σ` column reports an independent $`B = 300`$ nonparametric statistical bootstrap as a cross-check. + +The corresponding WIND/SWE ~2-min sample at 22:49:48 UT reports a faster, denser, hotter wind. WIND's velocity components are computed from its published GSE values via the L1-frame approximation $`v_{R} \approx -V_{x,\text{GSE}},\thinspace v_{T} \approx -V_{y,\text{GSE}},\thinspace v_{N} \approx V_{z,\text{GSE}}`$. +Differences between the spacecraft measurements include systematic effects such as spatial separation and temporal variation of the solar wind. + +*The figure and table are generated by `docs/swapi/figure_src/plot_real_data_fit.py`.* + +## Input Data + +### L2 Science Data + +The primary input for `SwapiProcessor` is SWAPI L2 coincidence count-rate data (`imap_swapi_l2_sci`). Each CDF contains time-ordered ESA sweeps with fields: + +- `swp_coin_rate` — coincidence count rate (Hz) for each ESA step. +- `esa_energy` — energy-per-charge setting for each ESA step. It is related to the instrument's actual ESA voltage setting by $`k_{\text{L2}} = 1.93`$ eV/V/e. +- `sci_start_time` — sweep start epoch (TT2000 ns) + +#### ESA steps + +Each 12-second ESA sweep contains **72 ESA steps** (indices 0–71). Their roles are: + +| Indices | # Steps | Description | +|---------|-------|-------------| +| 0 | 1 | **Always discarded.** Voltage ramp-up step. | +| 1–62 | 62 | **Coarse steps.** Fixed ESA voltage steps with logarithmic spacing. These steps are ordered from high to low voltage. | +| 63–71 | 9 | **Fine steps.** Instrument mode dependent, but usually provides a higher-resolution scan of the proton peak, using smaller voltage steps. | + +To fit protons, we use both the coarse and fine steps, since the fine steps are usually concentrated near the proton peak. +To fit alphas, we use only the coarse steps. + +Occasionally, one or more fine steps will have zero ESA voltage; these are excluded from the fit. + +#### Cadence + +The CDF provides these 12-second sweeps for one day per file. +`SwapiProcessor` groups sweeps into non-overlapping 5-sweep chunks (60 s cadence), the least common multiple of the spin rate (approximately 15 s) and the sweep cadence (12 s). + +Using 5 sweeps makes it possible to determine the solar-wind bulk velocity. +The solar-wind fitting algorithms operate on these 5-sweep chunks independently. + +### SPICE Kernels + +The processor requires SWAPI-to-RTN rotation matrices (one per ESA step) and IMAP's velocity in the Sun's reference frame from the SPICE kernels. The forward model uses the rotation to express look directions defined in instrument coordinates in the spacecraft RTN frame. + +The start time for each sweep, available from the L2 CDF, is denoted $`t_{\text{start}}`$. +For ESA step $`i`$ (0-indexed, although recall that step 0 is skipped), the measurement time is: +```math +t_{i} = t_{\text{start}} + i \cdot \tfrac{12}{72}\thinspace \text{s} = t_{\text{start}} + i \cdot 0.1\overline{6}\thinspace \text{s}. +``` + +### MAG RTN (alpha only) + +The alpha moments depend on the local magnetic field direction because the alpha-proton drift is constrained to lie along the direction of the magnetic field ($`\hat{\mathbf{B}}`$). + +#### L2 vs L1D +The dependency loader prefers MAG L2 and falls back to L1D when no L2 file is available. MAG is required for `alpha-sw`; the processor raises `ValueError` if neither product is provided, matching SWE's dependency loader behavior. + +When L1D is the source, every alpha-sw chunk in the run has its `PRELIMINARY_MAG` bit set so the product can be flagged for reprocessing once L2 is available. `proton-sw` and `pui-he` do not consume MAG. + +#### Averaging scheme + +For each 5-sweep alpha chunk, the processor uses the full $`60\thinspace \text{s}`$ MAG window $`[\thinspace t_{\text{center}} - 30\thinspace \text{s},\thinspace t_{\text{center}} + 30\thinspace \text{s})`$. +The in-window RTN samples are averaged directly, and the mean vector is normalized to produce $`\hat{\mathbf{B}}^{\text{RTN}}`$. + +#### Missing values + +If $`\hat{\mathbf{B}}^{\text{RTN}}`$ cannot be computed because there are no non-fill values within the window, the moments for that chunk are assigned fill values. + +## SWAPI Response Model + +The coincidence count rate at ESA voltage $`V`$ is +```math +C(V) = \sum_{s} \int d^3v \thinspace v \thinspace f^{s}(\mathbf{v}) \thinspace \mathcal{A}^{s}(\mathbf{v}, V), +``` +where $`f^{s}`$ is the VDF of species $`s`$ and $`\mathcal{A}^{s}`$ is the effective area. + +#### Effective area decomposition + +$`\mathcal{A}^{s}`$ is decomposed as +```math +\mathcal{A}^{s}(v, \theta, \phi, V) = \mathcal{A}_{0}^{s}(V) \cdot P\negthinspace \left(\dfrac{v}{v_{0}^{s}},\thinspace \theta,\thinspace \phi,\thinspace V\right) \cdot \mathcal{T}(\phi), +``` +where: +- $`v_{0}^{s} = \sqrt{2 k^{\ast} q^{s} |V| / m^{s}}`$ is the central speed; +- $`\mathcal{A}_{0}^{s}`$ is the central effective area; +- $`P`$ is the energy-angle passband; +- $`\mathcal{T}`$ is the azimuthal transmission factor. + +CSV versions of these three functions are in `instrument_team_data/swapi`. + +#### Normalization point + +The normalizations of $`\mathcal{A}_{0}^{s}`$ and $`P`$ are aligned in terms of the value at $`\theta = 0`$ and $`k^{\ast} \equiv 1.89`$ eV/V/e, the peak $`E/|V|`$ at $`\theta=0^{\circ}`$ based on high-resolution SIMION simulations. + +$`k^{\ast}`$ differs from $`k_{\text{L2}} = 1.93 eV/V/e`$, which is the $`k`$-factor estimated pre-launch from lab measurements (Rankin et al. 2025). +They differ primarily because of small inaccuracies in the beam energy and orientation in the lab measurements. + +#### Tabulated form and grid construction + +`SwapiResponse` holds the in-memory representation of the three components of the response function: $`\mathcal{T}(\phi)`$, $`\mathcal{A}_{0}^{s}(V)`$, and the passband fit coefficients for $`P`$. + +$`\mathcal{T}(\phi)`$ and $`\mathcal{A}_{0}^{s}(V)`$ are 1D functions stored in simple CSV files. $`\mathcal{T}`$ is sampled at 0.1° spacing in $`|\phi|`$; $`\mathcal{A}_{0}^{s}`$ is sampled on the CSV voltage grid. +Both are interpolated linearly between samples. +$`\mathcal{A}_{0}^{s}`$ is clamped to its endpoints outside the tabulated voltage range. + +> ![](figures/calibration_curves.svg) +> *Central effective area and azimuthal transmission.* [[src]](figure_src/plot_calibration_curves.py) + +$`P`$ at a given $`V`$ is represented as a `PassbandGrid` object. +The CSV file contains quadratic polynomial fits of $`\log P`$ for each ($`\theta`$, $`v/v_{0}`$) pixel as a function of $`\log(k^{\ast} |V|)`$. Open aperture ($`|\phi| > 20°`$) and sunglasses ($`|\phi| \leq 20°`$) have separate fits. + +The central effective area is scaled using `EfficiencyCalibrationTable`, which stores detection efficiencies $`\varepsilon`$ for each species as a function of time. +For protons, we scale it by ${\varepsilon_{p}(t)}/{\varepsilon_{p}(t_{\text{lab}})}$, where $\varepsilon_{p}(t_{\text{lab}})$ is the first proton entry in the table on or after 2025-11-01. +For alphas, we scale it by ${\varepsilon_{\alpha}(t)}/{\varepsilon_{p}(t_{\text{lab}})}$, which accounts for the increased central effective area for alphas compared to protons. + +`SwapiResponse.create_passband_grid` evaluates these fits at the requested $`V`$ and resamples the speed-ratio axis onto a uniform grid: $`\theta`$ matches the CSV elevations ($`-15°`$ to $`15°`$ in $`0.5°`$ steps) and $`v/v_{0}`$ is resampled to $`0.9`$ to $`1.1`$ in 101 points. The resulting per-region grids are stored on `PassbandGrid` as `values_open_aperture` and `values_sunglasses` and used for bilinear interpolation in $`(\theta, v/v_{0})`$ inside the integrator. Voltages outside the fitted range are clamped to the nearest endpoint. + +![SWAPI passband and integration region at three beam energies](figures/passband_boundaries.svg) +> *Example passbands.* [[src]](figure_src/plot_passband_boundaries.py) + +`PassbandGrid` also stores the passband region used by the integrator: a per-region elevation range (`oa_elevation_range`, `sg_elevation_range`) bounding the $`\theta`$ integration window, and per-elevation speed-ratio bounds (`min_OA_boundary`, `max_OA_boundary`, `min_SG_boundary`, `max_SG_boundary`) bounding the $`v`$ integration window for each elevation row inside that range. + +The integration region is set by a threshold of 1% of that region's grid maximum (computed independently for SG and OA). For each elevation row with at least one above-threshold cell, the speed-ratio bounds are the first speed-ratio pixels just outside the above-threshold region. Rows with no above-threshold cell are omitted. + +The elevation range is anchored at the interpolated crossing where the row maximum drops below threshold. Both the speed-ratio bounds and elevation range are recomputed for every $`V`$, since the polynomial fits change shape with voltage. + +When an integration elevation falls between stored passband-boundary rows, the wider neighboring interval is used. This avoids clipping the passband between rows. + +`SwapiProcessor` precomputes a `PassbandGrid` for each unique ESA voltage in an L2 file once, before fitting any of the 5-sweep chunks. +At fit setup, each ESA voltage step is wrapped in a `ResponseGrid` that bundles the precomputed passband grid with the species-dependent central speed $`v_{0}`$, central effective area, and azimuthal transmission. + +## Forward Model + +#### Velocity Distribution Function + +The solar wind proton velocity distribution function (VDF) is modeled as a drifting Maxwellian, parameterized by the fit parameter vector $`\mathbf{x} = (\ln n,\thinspace \ln T,\thinspace v_{R},\thinspace v_{T},\thinspace v_{N})`$ — density and temperature in log-space, and bulk velocity $`\mathbf{v}_{b} = (v_{R}, v_{T}, v_{N})^{\top}`$ as linear RTN components. We work entirely in the RTN frame: the integration variable $`\mathbf{v}`$ is the particle velocity in RTN, and the bulk velocity $`\mathbf{v}_{b}`$ is also in RTN. No rotation of $`\mathbf{v}_{b}`$ into the instrument frame is needed at any point in the integral. + +The VDF, written as a function of $`\mathbf{v} \in \mathbb{R}^{3}`$: +```math +f^{p}(\mathbf{v}; \mathbf{x}) = \frac{n}{(\sqrt{2\pi}\thinspace v_{\text{th}})^{3}} \exp\negthinspace \left(-\frac{|\mathbf{v} - \mathbf{v}_{b}|^{2}}{2 v_{\text{th}}^{2}}\right) = \frac{n}{(\sqrt{2\pi}\thinspace v_{\text{th}})^{3}} \exp\negthinspace \left(-\frac{v^{2} - 2\thinspace v\thinspace (\hat{\mathbf{d}}\cdot\mathbf{v}_{b}) + v_{b}^{2}}{2 v_{\text{th}}^{2}}\right), +``` +where $`v = |\mathbf{v}|`$, $`\hat{\mathbf{d}} = \mathbf{v}/v`$ is the flow direction unit vector (in RTN), $`v_{b} = |\mathbf{v}_{b}|`$, and $`v_{\text{th}} = \sqrt{k_{B} T/m_{p}}`$. + +The instrument samples $`f^{p}`$ over particle directions naturally defined by instrument-frame elevation and azimuth $`(\theta, \phi)`$. We convert to flow direction from instrument angular look direction coordinates (Rankin et al. 2025) as +```math +\hat{\mathbf{d}}^{\text{XYZ}}(\theta, \phi) = \bigl(-\cos\theta \sin\phi,\thinspace -\cos\theta \cos\phi,\thinspace -\sin\theta\bigr)^{\top} +``` +and rotate it into RTN using the SWAPI→RTN rotation matrix $`R`$ for the corresponding ESA step: +```math +\hat{\mathbf{d}}(\theta, \phi) = R\thinspace \hat{\mathbf{d}}^{\text{XYZ}}(\theta, \phi). +``` + +#### Coincidence Rate Integral + +Substituting the VDF into the count rate integral in spherical velocity coordinates $`(v, \theta, \phi)`$: +```math +C(V) = \frac{n\thinspace \mathcal{A}_{0}(V)}{(\sqrt{2\pi}\thinspace v_{\text{th}})^{3}} \sum_{\text{region}} \int \cos\theta\thinspace d\theta \int \mathcal{T}(\phi)\thinspace d\phi \int v^{3}\thinspace P\negthinspace \left(\tfrac{v}{v_{0}}, \theta\right) \exp\negthinspace \left(-\frac{v^{2} - 2\thinspace v\thinspace (\hat{\mathbf{d}}\cdot\mathbf{v}_{b}) + v_{b}^{2}}{2 v_{\text{th}}^{2}}\right) dv. +``` +The $`v^{3}\cos\theta`$ factor comes from the velocity-space volume element $`v^{2}\cos\theta\thinspace dv\thinspace d\theta\thinspace d\phi`$ times the particle speed $`v`$ in the flux term. + +### Integration Method + +#### Azimuthal Regions + +The region sum runs over three azimuth regions: sunglasses (SG, $`|\phi| \leq 20°`$) and the two halves of the open aperture (OA, $`20° \leq |\phi| \leq 150°`$). Each region uses a single passband (SG or OA), and the SG/OA boundary at $`\pm 20°`$ is the natural split since $`\mathcal{T}(\phi)`$ is identically zero there (vanes fully blocking). + +#### Quadrature Method + +Each region is evaluated as a nested Gauss-Legendre quadrature with a fixed number of integration points: +```math +(N_{\theta}, N_{\phi}, N_{v}) = (21,\thinspace 21,\thinspace 15). +``` + +The loops are nested $`\theta \to \phi \to v`$, with terms that depend only on outer-loop variables hoisted out of the inner loops. + +#### Angular limits + +For each azimuth region, the angular cutoff $`\Delta\alpha`$ is chosen from the VDF angular falloff at the passband central speed $`v_{0}`$. At fixed speed $`v`$, the Maxwellian's angular dependence relative to its on-axis value is +```math +\frac{f(v, \alpha)}{f(v, 0)} = \exp\negthinspace \left(\frac{v v_{b} (\cos\alpha - 1)}{v_{\text{th}}^{2}}\right). +``` +Setting this ratio to $`\varepsilon`$ at $`v = v_{0}`$ and solving for $`\alpha`$: +```math +\Delta\alpha = \frac{180}{\pi}\arccos\negthinspace \left(\mathrm{clamp}\negthinspace \left(\frac{v_{\text{th}}^{2} \ln\varepsilon}{v_{0} v_{b}} + 1;\thinspace -1,\thinspace 1\right)\right), +``` +with $`\varepsilon = 10^{-6}`$. If the VDF is broad enough that the arccos argument would leave $`[-1, 1]`$, the clamp makes $`\Delta\alpha = 180^{\circ}`$. + +The implementation uses this angular cutoff as a rectangular half-extent in instrument-frame elevation and azimuth around the bulk direction: +```math +[\theta_{b} - \Delta\alpha,\thinspace \theta_{b} + \Delta\alpha] \times [\phi_{b} - \Delta\alpha,\thinspace \phi_{b} + \Delta\alpha]. +``` +Here $`(\theta_{b}, \phi_{b})`$ are the elevation and azimuth of the bulk direction expressed in the instrument frame, obtained by mapping $`\mathbf{v}_{b}`$ into instrument coordinates via the SWAPI→RTN matrix transpose: $`\mathbf{v}_{b}^{\text{XYZ}} = R^{\top} \mathbf{v}_{b}`$, then $`\phi_{b} = \mathrm{arctan2}(-v_{b,x}^{\text{XYZ}},\thinspace -v_{b,y}^{\text{XYZ}})`$ and $`\theta_{b} = \arcsin(-v_{b,z}^{\text{XYZ}}/v_{b})`$. This rectangle is conservative: it contains the angular disk of radius $`\Delta\alpha`$ around the bulk direction. + +The window is then clamped to the passband elevation range for the region and to that region's azimuth span: + +| Region | Azimuth Range | +|--------|----------------| +| SG | $`[-20°,\thinspace 20°]`$ | +| OA− | $`[-150°,\thinspace -20°]`$ | +| OA+ | $`[20°,\thinspace 150°]`$ | + +If either clamped dimension has zero width, that region is skipped. + +For OA± only, the azimuth window is trimmed once more using the product of the VDF and azimuthal transmission. `_trim_oa_azimuth_by_integrand` samples 64 points of $`f(v_{0}, \theta_{b}', \phi)\mathcal{T}(\phi)`$ across the clamped OA azimuth window, where $`\theta_{b}'`$ is $`\theta_{b}`$ clamped into the OA elevation range. It keeps the portion above $`10^{-6}`$ of its maximum and expands by one sample on each side. + +After this trim, OA $`\pm`$ is skipped when the heuristic upper estimate +```math +\hat{C}_{\text{OA}} = \mathcal{A}_{0}(V)\thinspace v_{0}^{3}\thinspace \Delta\theta\thinspace \Delta v\thinspace \int_{\phi_{\text{lo}}}^{\phi_{\text{hi}}} \mathcal{T}(\phi)\thinspace g(\phi)\thinspace d\phi +``` +falls below $`\max(0.1\thinspace \text{Hz},\thinspace 10^{-3} C_{\text{SG}})`$. Here $`g(\phi) = f(v_{0}, \theta_{b}', \phi)`$, $`\Delta\theta`$ is the clamped OA elevation width in radians, and $`\Delta v = (r_{\text{max}}(0) - r_{\text{min}}(0))v_{0}`$ is the OA passband speed width at $`\theta = 0^{\circ}`$. + +#### Speed limits + +For each Gauss-Legendre elevation node, the speed integral only needs to cover speeds where both of these are true: + +1. The VDF is non-negligible. +2. The SWAPI passband is nonzero at that elevation. + +The VDF speed interval is taken to be +```math +[v_{b} - \Delta v_{\text{VDF}},\thinspace v_{b} + \Delta v_{\text{VDF}}], \qquad \Delta v_{\text{VDF}} = 6v_{\text{th}}, +``` +where $`v_{b} = |\mathbf{v}_{b}|`$ and $`v_{\text{th}}`$ is the thermal speed. For the Maxwellian VDF used here, this captures essentially all of the distribution: at $`6\sigma`$ the radial factor is $`e^{-18} \approx 10^{-8}`$ of peak. A much wider window (e.g., $`10v_{\text{th}}`$) makes Gauss-Legendre concentrate nodes far from the integrand peak for cold plasma where the passband already extends well beyond $`6v_{\text{th}}`$; a much narrower one (e.g., $`3v_{\text{th}}`$) clips the Maxwellian wings too much for off-peak passband alignments. + +The passband speed range is stored as speed-ratio bounds relative to the central passband speed $`v_{0}`$: +```math +[r_{\text{min}}(\theta)v_{0},\thinspace r_{\text{max}}(\theta)v_{0}]. +``` +Here $`r_{\text{min}}(\theta)`$ and $`r_{\text{max}}(\theta)`$ depend on both elevation and aperture region (SG or OA). They describe where the passband at that elevation remains above the integration cutoff. + +The speed integration limits are the intersection of those two windows: +```math +v_{\text{lo}}(\theta) = \max\negthinspace \left(v_{b} - \Delta v_{\text{VDF}},\thinspace r_{\text{min}}(\theta)v_{0}\right), +``` +```math +v_{\text{hi}}(\theta) = \min\negthinspace \left(v_{b} + \Delta v_{\text{VDF}},\thinspace r_{\text{max}}(\theta)v_{0}\right). +``` + +If the interval $`[v_{b} - \Delta v_{\text{VDF}},\thinspace v_{b} + \Delta v_{\text{VDF}}]`$ does not overlap with $`[0.9\thinspace v_{0},\thinspace 1.1\thinspace v_{0}]`$, the integral is skipped early because there it is guaranteed to be zero. + +### Integrator Validation + +The optimized integrator (`calculate_integral`) is validated against a high-resolution fixed-limit reference integrator (`reference_integral_fixed_limits`) — the same forward model evaluated on a much denser fixed grid with no dynamic integration limits. + +The figure below compares the two integrators on six solar wind configurations: cold and hot temperatures, bulk elevation past the SG passband edge, bulk azimuth straddling the SG/OA boundary, and high speed. + +![Production vs ground-truth spectra for six representative SW configurations](figures/spectra.svg) + +*Generated by `docs/swapi/figure_src/plot_spectra.py`.* + +For aggregate accuracy, the optimized integrator is evaluated against the same reference integral over 10,000 random solar-wind configurations (`reference_integrals.csv`). +Each configuration is evaluated at the ESA voltage whose central proton speed equals its `bulk_speed`. +The table below summarizes the distribution of $`|\text{ratio} - 1|`$ grouped by reference coincidence rate. + + +| Reference (Hz) | N | Median | 95% | 99% | Max | +|-----------------|-------|---------|---------|---------|---------| +| $\lt 0.1$ | 228 | 26.25% | 84.63% | 97.49% | 100.00% | +| $0.1$ – $1$ | 239 | 7.07% | 25.48% | 38.48% | 41.93% | +| $1$ – $10$ | 325 | 2.76% | 14.03% | 22.15% | 28.74% | +| $10$ – $10^2$ | 383 | 1.40% | 8.98% | 14.46% | 17.61% | +| $10^2$ – $10^3$ | 525 | 0.81% | 4.56% | 9.46% | 16.15% | +| $10^3$ – $10^4$ | 865 | 0.41% | 2.14% | 5.18% | 11.28% | +| $10^4$ – $10^5$ | 1694 | 0.19% | 0.85% | 1.70% | 3.38% | +| $\geq 10^5$ | 3841 | 0.14% | 0.63% | 0.98% | 2.21% | + +*Generated by `docs/swapi/figure_src/build_validation_table.py`.* + +For high-rate cases ($`\geq 10^{3}`$ Hz) where proton-fit residuals are dominated by Poisson noise rather than integrator error, $`|\text{ratio} - 1|`$ stays within a few percent of unity at the 99th percentile. The $`< 0.1`$ Hz band is configurations where the bulk direction sits many sigma outside the FOV — both integrators round to well below SWAPI's noise floor (which varies between 0.1 Hz and 10 Hz, typically closer to 10 Hz), so the ratio is clamped to $`100\%`$. +The worst cases at typical solar wind coincidence rate ($`\geq 10^{4}`$ Hz) are primarily due to bulk flow directions near the edge of the instrument response, which is rare by design because of the alignment of SWAPI's boresight and the spacecraft spin axis with the nominal average solar wind direction. + +### Analytic Jacobian + +Since $`C(V)`$ is linear in $`f^{p}(\mathbf{v}; \mathbf{x})`$ and $`\mathcal{A}(\mathbf{v}, V)`$ is independent of $`\mathbf{x}`$, +```math +\frac{\partial C(V)}{\partial x_{j}} = \frac{\partial}{\partial x_{j}}\int d^3v\thinspace v\thinspace f^{p}(\mathbf{v}; \mathbf{x})\thinspace \mathcal{A}(\mathbf{v}, V) = \int d^3v\thinspace v\thinspace \frac{\partial f^{p}}{\partial x_{j}}(\mathbf{v}; \mathbf{x})\thinspace \mathcal{A}(\mathbf{v}, V). +``` +The same integral used for $`C`$ then delivers all five Jacobian columns in one pass at minimal cost. +The rest of this section derives $`\partial f^{p}/\partial x_{j}`$ for each component of $`\mathbf{x}`$. +Working entirely in the RTN frame (so $`\mathbf{v}`$ and $`\mathbf{v}_{b}`$ are both 3-vectors in RTN), the log of the Maxwellian is +```math +\ln f^{p} = \ln n - \tfrac{3}{2}\ln v_{\text{th}}^{2} - \frac{|\mathbf{v} - \mathbf{v}_{b}|^{2}}{2\thinspace v_{\text{th}}^{2}} + \text{const}. +``` +Expanding the squared offset, $`|\mathbf{v} - \mathbf{v}_{b}|^{2} = v^{2} - 2\thinspace v\thinspace (\hat{\mathbf{d}}\cdot\mathbf{v}_{b}) + v_{b}^{2}`$, where $`\hat{\mathbf{d}}`$ is the look direction in RTN at the integration node (built in instrument XYZ from $`(\theta, \phi)`$ and rotated by $`R`$). + +#### Density + +$`f^{p}`$ is linear in $`n`$, so +```math +\frac{\partial f^{p}}{\partial n} = \frac{f^{p}}{n}. +``` + +Converting to log-space via $`\partial f^{p}/\partial \ln n = n\thinspace \partial f^{p}/\partial n`$, +```math +\frac{\partial f^{p}}{\partial \ln n} = f^{p}. +``` + +#### Temperature + +$`T`$ enters $`f^{p}`$ only through $`v_{\text{th}}^{2} = k_{B} T/m`$, so we first differentiate with respect to $`v_{\text{th}}^{2}`$ and then convert. From $`\ln f^{p}`$, +```math +\frac{\partial \ln f^{p}}{\partial v_{\text{th}}^{2}} = -\frac{3}{2\thinspace v_{\text{th}}^{2}} + \frac{|\mathbf{v} - \mathbf{v}_{b}|^{2}}{2\thinspace v_{\text{th}}^{4}}. +``` +The first term comes from the $`-\tfrac{3}{2}\ln v_{\text{th}}^{2}`$ coefficient; the second from differentiating the exponent's $`1/v_{\text{th}}^{2}`$. + +The remaining steps are three applications of the same change-of-variables identity, +```math +\frac{\partial g}{\partial y} = \frac{\partial g}{\partial x}\cdot\frac{\partial x}{\partial y}, +``` +in the sequence $`v_{\text{th}}^{2} \to T`$, $`\ln f^{p} \to f^{p}`$, and $`T \to \ln T`$. + +First: +```math +\frac{\partial \ln f^{p}}{\partial T} = \frac{\partial v_{\text{th}}^{2}}{\partial T} \cdot \frac{\partial \ln f^{p}}{\partial v_{\text{th}}^{2}} = \frac{v_{\text{th}}^{2}}{T}\thinspace \frac{\partial \ln f^{p}}{\partial v_{\text{th}}^{2}} = \frac{1}{T} \cdot \left(\frac{|\mathbf{v} - \mathbf{v}_{b}|^{2}}{2\thinspace v_{\text{th}}^{2}} - \tfrac{3}{2}\right). +``` + +Then: +```math +\frac{\partial f^{p}}{\partial T} = \frac{f^{p}}{T}\cdot\left(\frac{|\mathbf{v} - \mathbf{v}_{b}|^{2}}{2\thinspace v_{\text{th}}^{2}} - \tfrac{3}{2}\right). +``` + +Finally: +```math +\frac{\partial f^{p}}{\partial \ln T} = f^{p}\cdot\left(\frac{|\mathbf{v} - \mathbf{v}_{b}|^{2}}{2\thinspace v_{\text{th}}^{2}} - \tfrac{3}{2}\right). +``` + +The sign reverses across $`|\mathbf{v} - \mathbf{v}_{b}|^{2} = 3\thinspace v_{\text{th}}^{2}`$: increasing $`T`$ decreases $`f^{p}`$ for $`v \approx v_{b}`$ and increases it for $`v \gg v_{b}`$. + +#### Bulk velocity components + +Because $`\mathbf{v}_{b}`$ enters $`f^{p}`$ only through the squared offset $`|\mathbf{v} - \mathbf{v}_{b}|^{2}`$ in the exponent, and both $`\mathbf{v}`$ and $`\mathbf{v}_{b}`$ are vectors in the *same* (RTN) frame, the gradient with respect to $`\mathbf{v}_{b}`$ is direct — no rotation matrices appear: +```math +\nabla_{\mathbf{v}_{b}}\negthinspace \left[\tfrac{1}{2}|\mathbf{v} - \mathbf{v}_{b}|^{2}\right] = -(\mathbf{v} - \mathbf{v}_{b}). +``` +Factoring out the constant $`-1/v_{\text{th}}^{2}`$ from $`\ln f^{p}`$, +```math +\nabla_{\mathbf{v}_{b}}\ln f^{p} = \frac{1}{v_{\text{th}}^{2}}\thinspace (\mathbf{v} - \mathbf{v}_{b}). +``` +Multiplying by $`f^{p}`$ and writing the integration-variable velocity as $`\mathbf{v} = v\thinspace \hat{\mathbf{d}}`$ (where $`\hat{\mathbf{d}}`$ is the look direction in RTN): +```math +\nabla_{\mathbf{v}_{b}} f^{p} = \frac{f^{p}}{v_{\text{th}}^{2}}\thinspace \bigl(v\thinspace \hat{\mathbf{d}} - \mathbf{v}_{b}\bigr). +``` +The three components are +```math +\frac{\partial f^{p}}{\partial v_{R}} = \frac{f^{p}}{v_{\text{th}}^{2}}\thinspace \bigl(v\thinspace \hat{d}_{R} - v_{R}\bigr), \qquad \frac{\partial f^{p}}{\partial v_{T}} = \frac{f^{p}}{v_{\text{th}}^{2}}\thinspace \bigl(v\thinspace \hat{d}_{T} - v_{T}\bigr), \qquad \frac{\partial f^{p}}{\partial v_{N}} = \frac{f^{p}}{v_{\text{th}}^{2}}\thinspace \bigl(v\thinspace \hat{d}_{N} - v_{N}\bigr). +``` + +#### Boundary terms + +Technically, the integration limits that we use are themselves functions of $`(v_{b}, v_{\text{th}})`$ via the [angular limits](#angular-limits) and [speed limits](#speed-limits). +But for our analytic Jacobian, we hold the limits fixed at the current estimate and ignore the boundary terms. +This is the same fixed-limit approximation used when evaluating the coincidence rate itself. + +### Deadtime correction + +The detector deadtime is $`\tau = 183.7\ \text{ns}`$. Following Tsoulfanidis (1995), p. 74, the true count rate $`n`$ and measured rate $`g`$ are related by $`n = g / (1 - g\tau)`$. Rearranged for the forward model, the true model rate $`C^{\text{model}}`$ is mapped to the predicted observed rate before computing residuals: +```math +C^{\text{observed}}_{i} = \frac{C^{\text{model}}_{i}}{1 + \tau\thinspace C^{\text{model}}_{i}} = C^{\text{model}}_{i} \cdot \mathcal{D}_{i}, \qquad \mathcal{D}_{i} \equiv \frac{1}{1 + \tau\thinspace C^{\text{model}}_{i}}. +``` +This deadtime correction is often non-negligible. It reaches 5% at $`C \approx 2.7\times 10^{5}\ \text{Hz}`$, a routine value for high-flux solar wind. Skipping it would overestimate the predicted observed rate and underestimate the fitted density. + +Because deadtime depends on $`C^{\text{model}}`$, it propagates into the residual Jacobian by the chain rule. Differentiating $`C^{\text{observed}} = C^{\text{model}}/(1 + \tau\thinspace C^{\text{model}})`$ with respect to $`C^{\text{model}}`$ via the quotient rule, +```math +\frac{\partial C^{\text{observed}}}{\partial C^{\text{model}}} = \frac{(1+\tau\thinspace C^{\text{model}}) - C^{\text{model}}\cdot\tau}{(1+\tau\thinspace C^{\text{model}})^{2}} = \frac{1}{(1+\tau\thinspace C^{\text{model}})^{2}} = \mathcal{D}^{2}. +``` +Applying the chain rule, the model-level Jacobian columns $`\partial C^{\text{model}}_{i}/\partial x_{j}`$ are scaled by $`\mathcal{D}_{i}^{2}`$ to obtain the observed-rate Jacobian: +```math +\frac{\partial C^{\text{observed}}_{i}}{\partial x_{j}} = \frac{\partial C^{\text{observed}}_{i}}{\partial C^{\text{model}}_{i}}\cdot\frac{\partial C^{\text{model}}_{i}}{\partial x_{j}} = \mathcal{D}_{i}^{2} \cdot \frac{\partial C^{\text{model}}_{i}}{\partial x_{j}}. +``` + +## Proton Fitting Procedure + +### Fit preparation + +Before processing the 5-sweep chunks in parallel, the parent process uses the SPICE kernels to obtain the SWAPI-to-RTN rotation matrix for each measurement, +along with the spacecraft velocity in the Sun's reference frame at the center epoch of each chunk. + +If the rotation matrices are unavailable, the chunk is skipped and every output is assigned a fill value, since the forward model cannot be evaluated without per-bin look directions in RTN. +If only the spacecraft velocity is unavailable, the fit is still performed but the `sun`-frame outputs are assigned fill values. + +### Initial Guess + +#### Initial bulk speed and temperature + +The initial guess for bulk speed and temperature is obtained as follows: +1. Let $`v_{b}^{(0)}`$ be the speed corresponding to the ESA voltage (related to speed through $`k^{\ast}`$) of the measurement with the highest coincidence rate. +2. Set the temperature based on the relationship used in the I-ALiRT code derived from the typical temperature as a function of bulk speed: + +```math +T^{(0)} = \text{max}\negthinspace \left(1\thinspace \text{eV}, 60{,}000\thinspace \text{K} \cdot \left(\dfrac{v_{b}^{(0)}}{400\thinspace \text{km/s}}\right)^{2}\right). +``` + +3. Refine $`v_{b}^{(0)}`$ and $`T^{(0)}`$ through an arbitrarily normalized Gaussian fit (with $`\sigma_{v}`$ related to $`T`$ through $`T = m\sigma_{v}^{2} / k_{B}`$). +The temperature output of the fit is clamped to be at least $`1\thinspace \text{eV}`$. If the initial guess fails, `FIT_ERROR` is set. + +#### Initial velocity direction + +Let $`\hat{\mathbf{s}}^{\text{RTN}}`$ be the chunk's spin axis in RTN, taken as the unit-normalized mean of the per-sweep body $`+\hat{\mathbf{Y}}`$ axes (the second column of each SWAPI→RTN rotation matrix — i.e. the image of SWAPI $`\hat{\mathbf{Y}}`$ under $`R`$, corresponding to SWAPI's boresight, which is parallel to the spin axis). The velocity is seeded anti-parallel to this axis: +```math +\mathbf{v}_{b}^{\text{SC,(0)}} = -v_{b}\thinspace \hat{\mathbf{s}}^{\text{RTN}}. +``` +Because of IMAP's consistent orientation, the solar-wind bulk velocity is close to $`\hat{\mathbf{s}}^{\text{RTN}}`$ on average. + +#### Initial density + +The initial density is set by a fit of the unit-density ideal forward-model coincidence rate with deadtime correction applied against the observed count rates: +```math +n_{0} = \arg\min_{n} \sum_{i} \left[\thinspace n\thinspace m_{i}\thinspace \mathcal{D}(n\thinspace m_{i}) - C_{i} \thinspace \right]^{2}, \qquad m_{i} = C_{i}^{\text{model}}(n = 1; T_{0}, \mathbf{v}_{b}^{\text{SC,(0)}}). +``` +Because $`\mathcal{D}`$ is non-linear in $`n`$, the closed-form linear estimate $`n_{0}^{\text{lin}} = \mathbf{m}\cdot\mathbf{C}/(\mathbf{m}\cdot\mathbf{m})`$ systematically underestimates the density at typical SWAPI peak rates and is instead used as the starting point for this fit, which is handled using SciPy `curve_fit`. + +### Least-Squares Fitting Procedure + +The state vector is +```math +\mathbf{x} = [\log n,\thinspace \log T,\thinspace v_{R},\thinspace v_{T},\thinspace v_{N}], +``` +with $`\mathbf{v}_{b}^{\text{SC}} = (v_{R}, v_{T}, v_{N})`$ in the spacecraft RTN frame. Density and temperature are parameterized in log-space to keep them positive throughout optimization. + +The fit uses `scipy.optimize.least_squares` with the Levenberg–Marquardt method (`method='lm'`, `xtol=1e-4`). Residuals are unweighted over all retained bins: +```math +r_{i} = C_{i}^{\text{observed}} - C_{i}, +``` +where $`C_{i}`$ is the measured count rate and $`C_{i}^{\text{observed}}`$ is the deadtime-corrected predicted rate (see [Deadtime correction](#deadtime-correction)). + +We use unweighted residuals rather than commonly used inverse-variance weighting. Poisson variance is proportional to count rate, so inverse-variance weighting would up-weight the low-count bins. Those bins are where non-Maxwellian populations — the proton shoulder, pickup ions, and alpha particles — contribute most. These populations are also more isotropic than the proton core, and are therefore magnified relative to the proton core by SWAPI's sunglasses, making them especially important for SWAPI compared with other spacecraft instruments. +Using unweighted residuals keeps the fit focused on the high-count bins where the proton core is located and where the count rate is high enough that Poisson variability is negligible, so inverse-variance weighting is unhelpful. + +For each residual evaluation, the look direction $`\hat{\mathbf{d}}`$ is built in instrument XYZ from each $`(\theta, \phi)`$ Gauss-Legendre node and rotated into RTN per measurement using the SWAPI→RTN matrix $`R_{i}`$: +```math +\hat{\mathbf{d}}_{i} = R_{i}\thinspace \hat{\mathbf{d}}^{\text{XYZ}}(\theta, \phi). +``` +The exponent in the Maxwellian then uses the dot product $`\hat{\mathbf{d}}_{i} \cdot \mathbf{v}_{b}^{\text{SC}}`$ directly. The angular *integration limits* still use bulk-direction angles in the instrument frame, computed from $`\mathbf{v}_{b}^{\text{XYZ}} = R_{i}^{\top} \mathbf{v}_{b}^{\text{SC}}`$ (Rankin et al. 2025): +```math +\phi_{b,i} = \mathrm{arctan2}(-v_{b,i,x}^{\text{XYZ}},\thinspace -v_{b,i,y}^{\text{XYZ}}), \qquad \theta_{b,i} = \arcsin\negthinspace \left(-\frac{v_{b,i,z}^{\text{XYZ}}}{v_{b}}\right). +``` +These angles bound the rectangular integration window described in [Angular limits](#angular-limits); they do not enter the integrand itself. + +#### Wrong-basin detection (iterative spin-axis flip) + +The fitting landscape often has a local minimum in bulk velocity related by a 180° rotation of the bulk velocity about the spin axis $`\hat{\mathbf{s}}^{\text{RTN}}`$. +The two minima are not degenerate, because the sunglasses (SG) passband has a slightly asymmetric elevation range ($`[-10.5^{\circ}, +7^{\circ}]`$) and an elevation-dependent speed response, causing the bulk speed to shift from one sweep to the next. +The flipped solution is only a local minimum and usually has $`\chi^{2}`$ about $`100`$ to $`500\times`$ larger than the global minimum. + +The first fit returns bulk velocity $`\mathbf{v}_{b}^{(0)}`$, density $`n^{(0)}`$, temperature $`T^{(0)}`$, and $`\text{MSE}^{(0)}`$. +At iteration $`k`$ (up to 6 times): + +1. **Build a flipped seed.** Compute the 180°-rotated bulk velocity + ```math + \mathbf{v}_{b}^{\text{flip}} = 2\thinspace \hat{\mathbf{s}}\thinspace (\hat{\mathbf{s}}\cdot\mathbf{v}_{b}^{(k)}) - \mathbf{v}_{b}^{(k)}, + ``` + and rescale the density at $`(\mathbf{v}_{b}^{\text{flip}}, T^{(k)})`$, giving $`n^{\text{flip}}`$ and $`\text{MSE}_{\text{flip}}`$. The rescale is needed because flipping the velocity makes $`n^{(k)}`$ no longer near-optimal. +2. **Check threshold.** If $`\text{MSE}_{\text{flip}} \geq 100\thinspace \text{MSE}^{(k)}`$ (RMSE ratio $`\geq 10`$), terminate the loop. +3. **Repeat.** Otherwise, run a full least-squares fit seeded from $`(\mathbf{v}_{b}^{\text{flip}}, n^{\text{flip}}, T^{(k)})`$. If its MSE is no worse than $`\text{MSE}^{(k)}`$, it becomes iteration $`k+1`$ and the loop continues; otherwise terminate. + +### Fitting Algorithm Validation + +To validate that the algorithm recovers solar-wind moments under realistic conditions, we performed the following experiment: + +1. Sample 10,000 real solar-wind cases from WIND/SWE 2-min measurements from 2025. +2. Build the per-fit voltage and pointing geometry: 5 sweeps over the 62 coarse ESA voltage steps (leaving out the fine sweeps, which would improve the accuracy of the fit if available). +3. Generate per-bin SWAPI→RTN rotation matrices by spinning a representative rotation matrix about the spin axis at a 15.13 s spin period. +4. Forward model the count rate from the ground truth at each bin, apply the deadtime correction, and sample Poisson noise scaled by the per-bin dwell time (~0.145 s). +5. Apply the full fitting algorithm to those synthetic rates and compare the recovered moments against the ground truth. + +![Initial-guess vs. final-fit accuracy for 10000 real WIND/SWE solar wind cases](figures/fit_accuracy.svg) + +*Generated by `docs/swapi/figure_src/plot_fit_accuracy.py`.* + +### Uncertainty Estimation + +The proton fit uses unweighted least squares to keep non-core populations from driving the fit. +Even when the true variance of the residuals is not uniform (heteroscedasticity), unweighted least squares (which is optimal under homoscedasticity) is still unbiased (albeit not maximally efficient). +However, the usual covariance matrix from unweighted least-squares routines does not share that property here. +To correct for this, we use the heteroscedasticity-consistent HC3 method (MacKinnon & White, 1985; Long & Ervin, 2000; Hayes & Cai, 2007): +```math +\Sigma_{x} = (J^{\top} J)^+ \thinspace J^{\top} \mathrm{diag}\!\Big(\tfrac{r_{i}^{2}}{(1 - h_{ii})^{2}}\Big)\thinspace J\thinspace (J^{\top} J)^+, +``` +where $`J`$ is the analytic Jacobian of the residuals at the solution, $`r_{i} = \text{pred}_{i} - \text{obs}_{i}`$ is the per-bin residual at the converged parameters, $`h_{ii} = J_{i}\thinspace (J^{\top} J)^+ J_{i}^{\top}`$, and $`{}^+`$ represents the Moore–Penrose pseudoinverse (used for numerical stability). + +The figure below validates the uncertainty estimate empirically. +One typical moderate-speed ground truth ($`n = 5\thinspace \text{cm}^{-3}`$, $`T = 10^{5}\thinspace \text{K}`$, $`\mathbf{v}_{\text{RTN}} = (450, 5, -3)\thinspace \text{km/s}`$) is held fixed and noise is varied across 1000 synthetic 5-sweep chunks under two noise models. The top block uses pure Poisson noise on the underlying counts. +The bottom block adds 1% multiplicative log-normal noise on top of the Poisson sample and adds an energy-independent 10 Hz Poisson noise floor at every bin. + +Within each block, the upper row shows histograms of the fitted parameters: each width is the true sampling sigma, the dashed line marks the truth, and the in-axis annotation reports the fit bias (mean − truth) in units of the empirical sigma. The lower row is the histogram of normalized residuals $`(\hat{\theta} - \theta_{\text{truth}}) / \hat{\sigma}`$ for two estimators: orange = HC3 (used here), green = the textbook uncorrected formula $`\Sigma_{x} = \big(\sum_{i} r_{i}^{2} / (N-K)\big) \cdot (J^{\top} J)^+`$ (shown for comparison). +The dashed black curve is $`\mathcal{N}(0, 1)`$, the ideal normalized residual distribution. + +Monte Carlo validation: distribution of fitted parameters vs. distribution of estimated sigmas across 1000 noise realizations of one fixed solar-wind ground truth, under Poisson and Poisson+log-normal noise + +*Generated by `docs/swapi/figure_src/plot_uncertainty_mc.py`.* + +> **Important**: The uncertainties primarily represent statistical error and do not necessarily take systematic error into account. +> For example, density relies on the central effective area calibration, which has an uncertainty of up to 20%. +> This introduces systematic error that applies equally to all density measurements. + +### Failed fits + +After the optimizer returns, the moments are assigned fill values if the optimizer did not report `success`, in which case the flag `FIT_ERROR` is set. +Fill values are also assigned if the fitted temperature exceeds $`5\times 10^{5} \, \text{K}`$, or the coefficient of determination $R^2$ is below $`0.9`$. In both cases, the flag `BAD_FIT` is set. + +The $R^2$ is computed on the count rate averaged across the chunk's 5 sweeps, using only the 9 ESA steps within ±4 of the peak in the averaged spectrum (coarse-sweep bins only). We average across sweeps before computing $R^2$ because individual sweeps have poorer $R^2$ due to the combination of solar wind temporal variation and spin variation, even when the fit is reasonable. + +### Peak speed fallback + +Whenever we report fill values, we attempt to populate `proton_sw_speed` based on the observed peak of the distribution. +To obtain this estimate, we: +1. Average each chunk's coincidence rate across its 5 sweeps. +2. Find the peak coarse step by `argmax`, clamped so the averaging window has at least 4 steps on each side. +3. Compute the count-rate-weighted average ESA voltage across this window and convert it to speed units using $k^*$. + +In some cases, `proton_sw_speed` may still have a fill value if this peak-finding procedure fails (e.g., data gap). + +### CDF Outputs + +Let $`\mathbf{x} = [\log n,\thinspace \log T,\thinspace v_{R},\thinspace v_{T},\thinspace v_{N}]`$ be the fitted parameter vector with covariance $`\Sigma_{x}`$, $`\mathbf{v}_{b}^{\text{SC}} = (x_{2}, x_{3}, x_{4})`$ the bulk velocity in the SC frame (RTN basis), and $`\mathbf{v}_{\text{sc}}^{\text{sun}}`$ the IMAP inertial velocity at the chunk-center epoch in the RTN basis[1](#fn-vsc). The proton-sw L3A CDF variables are: + +| CDF variable | Symbol | Definition | +|-----------------------------------------------|-------------------------|-------------------------------------------------------------------------------------------------------| +| `epoch` | $`t_{\text{center}}`$ | center time of the 5-sweep chunk (TT2000 ns) | +| `epoch_delta` | | $`30\thinspace \text{s}`$ (half-width of the 5-sweep chunk, in ns) | +| `proton_sw_density` | $`n`$ | $`\exp(x_{0})`$ | +| `proton_sw_density_uncert` | $`\sigma_{n}`$ | $`n\thinspace \sqrt{\Sigma_{x,00}}`$ | +| `proton_sw_temperature` | $`T`$ | $`\exp(x_{1})`$ | +| `proton_sw_temperature_uncert` | $`\sigma_{T}`$ | $`T\thinspace \sqrt{\Sigma_{x,11}}`$ | +| `proton_sw_bulk_velocity_rtn_sc` | $`\mathbf{v}_{b}^{\text{SC}}`$ | $`(x_{2},\thinspace x_{3},\thinspace x_{4})`$ | +| `proton_sw_bulk_velocity_rtn_sc_covariance` | $`\Sigma_{\mathbf{v}}`$ | $`\Sigma_{x}[2{:}5,\thinspace 2{:}5]`$ [2](#fn-velcov) | +| `proton_sw_speed` | $`\lvert\mathbf{v}_{b}^{\text{SC}}\rvert`$ | $`\lvert\mathbf{v}_{b}^{\text{SC}}\rvert`$ | +| `proton_sw_speed_uncert` | $`\sigma_{\lvert\mathbf{v}_{b}^{\text{SC}}\rvert}`$ | propagated through `uncertainties` from $`\mathbf{v}_{b}^{\text{SC}}`$ | +| `proton_sw_bulk_velocity_rtn_sun` | $`\mathbf{v}_{b}^{\text{sun}}`$ | $`\mathbf{v}_{b}^{\text{SC}} + \mathbf{v}_{\text{sc}}^{\text{sun}}`$ | +| `proton_sw_bulk_velocity_rtn_sun_covariance` | $`\Sigma_{\mathbf{v}}^{\text{sun}}`$ | $`\Sigma_{\mathbf{v}}`$ [3](#fn-sunframe) | +| `proton_sw_speed_sun` | $`v_{\text{sun}}`$ | $`\lvert\mathbf{v}_{b}^{\text{sun}}\rvert`$ | +| `proton_sw_speed_sun_uncert` | $`\sigma_{v_{\text{sun}}}`$ | propagated through `uncertainties` from $`\mathbf{v}_{b}^{\text{SC}}`$ + exact offset[3](#fn-sunframe) | +| `swp_flags` | | per-chunk quality bitmask (`SwapiL3Flags`) | + +When the fit fails (non-finite $`\Sigma_{x}`$), every `_uncert` and `_covariance` variable is reported as fill. + +[1]: $`\mathbf{v}_{\text{sc}}^{\text{sun}}`$ is the inertial (Sun-frame) IMAP velocity from SPICE's `imap_state(et, ECLIPJ2000)`, with its components rotated into the RTN axes at the chunk-center epoch. + +[2]: The bulk velocity is represented internally as a 3-tuple of correlated `uncertainties.UFloat` components carrying $`\Sigma_{\mathbf{v}}`$. The square root of the diagonal of $`\Sigma_{\mathbf{v}}`$ yields the standard error of the $`v_{R}, v_{T}, v_{N}`$ components. + +[3]: Since $`\mathbf{v}_{\text{sc}}^{\text{sun}}`$ is SPICE-derived and treated as exact, the Sun-frame vector covariance equals the SC-frame velocity covariance. The Sun-frame speed uncertainty $`\sigma_{v_{\text{sun}}} = \mathrm{std}\negthinspace \left(\sqrt{\sum_{j} (v_{b,j}^{\text{SC}} + v_{\text{sc},j}^{\text{sun}})^{2}}\right)`$ is computed by the `uncertainties` package from the correlated fitted components plus the exact spacecraft-velocity offset — equivalent to the first-order Gaussian form $`\sqrt{\mathbf{g}_{\text{sun}}^{\top} \Sigma_{\mathbf{v}} \mathbf{g}_{\text{sun}}}`$ with $`\mathbf{g}_{\text{sun}} = \mathbf{v}_{b}^{\text{sun}}/\lvert\mathbf{v}_{b}^{\text{sun}}\rvert`$. + +## Alpha Particle Moments + +The alpha solar wind moments fitter (`calculate_alpha_solar_wind_moments.py`) reuses the proton forward model (`model_solar_wind_ideal_coincidence_rates`) and adds a 3-DOF least-squares fit over $`(n_{\alpha}, T_{\alpha}, \Delta v)`$ where alphas are constrained to drift along the local magnetic field: +```math +\mathbf{v}_{\alpha} = \mathbf{v}_{p}^{\ast} + \Delta v \thinspace \hat{\mathbf{B}}. +``` +This reflects the observed solar-wind tendency for non-field-aligned differential drift to be quenched by firehose/mirror instabilities. + +**Sign convention.** $`\Delta v > 0`$ means the alpha drifts along $`+\hat{\mathbf{B}}`$ relative to protons. Since MAG provides $`\mathbf{B}`$ with a physical polarity, $`\Delta v`$'s sign is interpretable. + +### Two-stage strategy + +When fitting alphas, we first fit the protons to each chunk as in the proton-only pipeline. +We then use the proton model to obtain an initial guess and identify the alpha-peak step indices. +Only those alpha-peak step indices are used in the fit. + +The combined proton+alpha model is +```math +C_{\text{obs}}(V) = \text{deadtime}\negthinspace \left(C_{p}^{\text{true}}(V; \theta_{p}^{\ast}) + C_{\alpha}^{\text{true}}(V; \theta_{\alpha})\right). +``` + +### Initial guess + +Stage 2's initial guess (`_alpha_initial_guess`) locates the alpha bump by subtracting the deadtime-corrected proton background from the sweep-averaged count rate: + +1. Reshape data into `(n_sweeps, n_bins)` via `_infer_sweep_layout`. Average the 5 sweeps: `count_avg`, `proton_bg_avg` (deadtime-corrected proton model per sweep, then averaged). +2. Convert voltages to energies: $`E_{i} = k^* |V_{i}|`$ and form the residual $`\rho_{i} = \max(0,\thinspace \overline{C_{i}} - 2\thinspace \overline{R_{i}^{p}})`$. The factor of 2 makes the alpha-bump finder less sensitive to the deep proton thermal tail leaking into the low-energy alpha bins. +3. Call `get_alpha_peak_indices(residual, energies, proton_peak_index)` to return the alpha peak slice. The function walks from the proton peak toward higher energies (lower indices), past the gap where $`E_{i} < 1.5\thinspace E_{\text{proton-peak}}`$, until it finds a residual local minimum that bounds the alpha bump on the proton side; the high-energy side is bounded at $`E_{i} = 4\thinspace E_{\text{proton-peak}}`$. +4. Require $`\geq 3`$ bins in the peak and at least one bin with positive residual. If either check fails, `FIT_ERROR` is set. +5. Set $`T_{\alpha} = T_{p}`$. The alpha thermal width is fit by least squares in Stage 2; there is no Gaussian pre-fit on the residual. +6. Density: compute a unit-density alpha forward model at $`\Delta v = 0`$ (using the proton bulk velocity as the alpha velocity seed), average across sweeps, and scale to match the mean residual at the peak: + ```math + n_{\alpha,0} = \max\negthinspace \left(\frac{\overline{\rho_{\text{peak}}}}{\overline{R_{\text{peak}}^{\alpha,\text{unit}}}},\thinspace 10^{-3}\right) + ``` +7. Return $`(n_{\alpha,0}, T_{\alpha}, \Delta v = 0, \text{peak\_bin\_indices})`$. The optimizer starts with $`\Delta v = 0`$. The returned `peak_bin_indices` are used to subset the residual axis for Stage 2 (see above). + +The figure below shows these steps on three real L2 spectra from `imap_swapi_l2_sci_20260101`. Top row: 5-sweep-averaged observed count rate (blue dots) vs the frozen proton model (orange), with the detected alpha peak region shaded green. Bottom row: residual (observed − proton model) at all bins (grey) and the peak bins (green circles). + +![Alpha peak-finding on real L2 spectra](figures/alpha_peak_finding.svg) + +*Generated by `docs/swapi/figure_src/plot_alpha_peak_finding.py`.* + +### Analytic Jacobian + +The optimizer uses an analytic 3-column Jacobian of the residuals in $`(\log n_{\alpha}, \log T_{\alpha}, \Delta v)`$ space, built using the same approach used by the proton fit, with two additional considerations: + +1. Because $`\mathbf{v}_{\alpha} = \mathbf{v}_{p}^{\ast} + \Delta v\thinspace \hat{\mathbf{B}}`$ with $`\mathbf{v}_{p}^{\ast}`$ held fixed, + ```math + \frac{\partial C_{\alpha}}{\partial (\Delta v)} = \nabla_{\mathbf{v}_{\alpha}} R_{\alpha} \cdot \hat{\mathbf{B}} = \sum_{c \in \{R, T, N\}} \frac{\partial C_{\alpha}}{\partial v_{\alpha, c}}\thinspace \hat{B}_{c}. + ``` + The density and temperature columns are unchanged. + +2. Deadtime acts on the total coincidence rate $`C_{p} + C_{\alpha}`$, so the extra derivative factor is $\mathcal{D}^{2}(C_{p} + C_{\alpha})$ instead of $\mathcal{D}^{2}(C_{p})$. + +### Uncertainty propagation + +For alphas, we use the same approach as for the proton fit: + +```math +\Sigma_{\text{stage 2}} = (J^{\top} J)^+ \thinspace \bigl(J^{\top} W J\bigr) \thinspace (J^{\top} J)^+ \quad\text{(3×3, in } (\log n_{\alpha}, \log T_{\alpha}, \Delta v) \text{ space)}, \qquad W_{ii} = \frac{r_{i}^{2}}{(1 - h_{ii})^{2}} +``` +```math +\sigma_{n_{\alpha}} = n_{\alpha} \sqrt{\Sigma_{\text{stage 2}}[0,0]}, \qquad \sigma_{T_{\alpha}} = T_{\alpha} \sqrt{\Sigma_{\text{stage 2}}[1,1]}, \qquad \sigma_{\Delta v} = \sqrt{\Sigma_{\text{stage 2}}[2,2]} +``` +```math +\Sigma_{\mathbf{v}_{\alpha}} = \Sigma_{\mathbf{v}_{p}} + \sigma_{\Delta v}^{2} \thinspace \hat{\mathbf{B}}\hat{\mathbf{B}}^{\top} +``` + +This ignores the effect of proton-parameter uncertainty on Stage 2 residuals, so $`\sigma_{n_{\alpha}}, \sigma_{T_{\alpha}}`$ are lower bounds. + +### Bad fit detection + +For alphas, we use the $R^2 < 0.9$ check to set `BAD_FIT`. +The points used to calculate $R^2$ are masked by the same mask used to fit the alphas. + +## Quality flags + +- `BAD_FIT` (= 2**2): fit converged but is flagged as an inaccurate description of the measurements. +- `FIT_ERROR` (= 2**3): an error occurred, the fit failed to converge, or the initial guess stage failed. +- `PRELIMINARY_MAG` (= 2**4, alpha-only): MAG L1D was used as the source for this run (L2 was unavailable). + +Gaps in the L2 data, ephemeris data, and MAG data (for alphas) result in fill values with no flag. + +For alphas, the proton flags are combined with the alpha quality flags. + +## References + +- Hayes, A. F., & Cai, L. (2007). Using heteroskedasticity-consistent standard error estimators in OLS regression: An introduction and software implementation. *Behavior Research Methods*, 39(4), 709–722. https://doi.org/10.3758/BF03192961 +- Long, J. S., & Ervin, L. H. (2000). Using heteroscedasticity consistent standard errors in the linear regression model. *The American Statistician*, 54(3), 217–224. https://doi.org/10.1080/00031305.2000.10474549 +- MacKinnon, J. G., & White, H. (1985). Some heteroskedasticity-consistent covariance matrix estimators with improved finite sample properties. *Journal of Econometrics*, 29(3), 305–325. https://doi.org/10.1016/0304-4076(85)90158-7 +- Rankin, J. S., McComas, D. J., et al. (2025). Solar Wind and Pickup Ion (SWAPI) Instrument on NASA's Interstellar Mapping and Acceleration Probe (IMAP). *Space Science Reviews*, 221(8), 108. https://doi.org/10.1007/s11214-025-01229-8 +- Seber, G. A. F., & Wild, C. J. (1989). *Nonlinear Regression*. Wiley. +- Stefanski, L. A., & Boos, D. D. (2002). The calculus of M-estimation. *The American Statistician*, 56(1), 29–38. https://doi.org/10.1198/000313002753631330 +- Tsoulfanidis, N. (1995). *Measurement and Detection of Radiation* (2nd ed.). Taylor & Francis. +- White, H. (1980). A heteroskedasticity-consistent covariance matrix estimator and a direct test for heteroskedasticity. *Econometrica*, 48(4), 817–838. https://doi.org/10.2307/1912934 diff --git a/imap_l3_processing/cdf/config/imap_swapi_l3a_variable_attrs.yaml b/imap_l3_processing/cdf/config/imap_swapi_l3a_variable_attrs.yaml index aefb9f653..d71a48749 100644 --- a/imap_l3_processing/cdf/config/imap_swapi_l3a_variable_attrs.yaml +++ b/imap_l3_processing/cdf/config/imap_swapi_l3a_variable_attrs.yaml @@ -279,6 +279,41 @@ proton_sw_speed_uncert: VALIDMAX: 10000 FILLVAL: -1.000000e+31 LABLAXIS: H+ SW speed uncertainty +proton_sw_speed_sun: + NAME: proton_sw_speed_sun + DATA_TYPE: CDF_REAL4 + CATDESC: Speed of proton solar wind in the sun's rest frame + DEPEND_0: epoch + VAR_TYPE: data + RECORD_VARYING: RV + DISPLAY_TYPE: time_series + VARIABLE_PURPOSE: PRIMARY_VAR,SUMMARY + FIELDNAM: Proton Solar Wind Speed Sun + FORMAT: F19.3 + LABLAXIS: H+ SW speed sun + UNITS: km/s + VALIDMIN: 0 + VALIDMAX: 10000 + FILLVAL: -1.000000e+31 + SCALETYP: linear + DELTA_PLUS_VAR: proton_sw_speed_sun_uncert + DELTA_MINUS_VAR: proton_sw_speed_sun_uncert + SCALEMIN: 0 + SCALEMAX: 1000 +proton_sw_speed_sun_uncert: + NAME: proton_sw_speed_sun_uncert + DATA_TYPE: CDF_REAL4 + CATDESC: Proton solar wind speed uncertainty in the sun's rest frame + DEPEND_0: epoch + VAR_TYPE: support_data + RECORD_VARYING: RV + FIELDNAM: Proton Solar Wind Speed Sun Uncertainty + FORMAT: F19.3 + UNITS: km/s + VALIDMIN: 0 + VALIDMAX: 10000 + FILLVAL: -1.000000e+31 + LABLAXIS: H+ SW speed sun uncertainty proton_sw_temperature: NAME: proton_sw_temperature DATA_TYPE: CDF_REAL4 @@ -349,76 +384,68 @@ proton_sw_density_uncert: VALIDMAX: 150 FILLVAL: -1.000000e+31 LABLAXIS: H+ SW density uncertainty -proton_sw_clock_angle: - NAME: proton_sw_clock_angle +proton_sw_bulk_velocity_rtn_sun: + NAME: proton_sw_bulk_velocity_rtn_sun DATA_TYPE: CDF_REAL4 - CATDESC: Clock angle of proton solar wind + CATDESC: Proton solar wind bulk velocity in inertial RTN (sun's rest frame) DEPEND_0: epoch + DEPEND_1: rtn_label VAR_TYPE: data RECORD_VARYING: RV DISPLAY_TYPE: time_series VARIABLE_PURPOSE: PRIMARY_VAR,SUMMARY - FIELDNAM: Clock Angle Of Proton Solar Wind + FIELDNAM: Proton SW Bulk Velocity RTN Sun FORMAT: F19.3 - LABLAXIS: Clock angle of H+ SW - UNITS: degrees - VALIDMIN: 0 - VALIDMAX: 360 + LABLAXIS: H+ SW bulk velocity RTN sun + UNITS: km/s + VALIDMIN: -2000 + VALIDMAX: 2000 FILLVAL: -1.000000e+31 - SCALETYP: linear - DELTA_PLUS_VAR: proton_sw_clock_angle_uncert - DELTA_MINUS_VAR: proton_sw_clock_angle_uncert - SCALEMIN: 0 - SCALEMAX: 360 -proton_sw_clock_angle_uncert: - NAME: proton_sw_clock_angle_uncert +proton_sw_bulk_velocity_rtn_sun_covariance: + NAME: proton_sw_bulk_velocity_rtn_sun_covariance DATA_TYPE: CDF_REAL4 - CATDESC: Proton solar wind clock angle uncertainty + CATDESC: Proton solar wind bulk velocity covariance in inertial RTN (sun's rest frame) DEPEND_0: epoch VAR_TYPE: support_data RECORD_VARYING: RV - FIELDNAM: Proton Solar Wind Clock Angle Uncertainty + FIELDNAM: Proton SW Bulk Velocity RTN Sun Covariance FORMAT: F19.3 - UNITS: degrees + LABLAXIS: H+ SW bulk velocity RTN sun covariance + UNITS: km!E2!N/s!E2!N VALIDMIN: 0 - VALIDMAX: 360 + VALIDMAX: 1.0e+8 FILLVAL: -1.000000e+31 - LABLAXIS: H+ SW clock angle uncertainty -proton_sw_deflection_angle: - NAME: proton_sw_deflection_angle +proton_sw_bulk_velocity_rtn_sc: + NAME: proton_sw_bulk_velocity_rtn_sc DATA_TYPE: CDF_REAL4 - CATDESC: Deflection angle of proton solar wind + CATDESC: Proton solar wind bulk velocity in RTN (spacecraft rest frame) DEPEND_0: epoch + DEPEND_1: rtn_label VAR_TYPE: data RECORD_VARYING: RV DISPLAY_TYPE: time_series VARIABLE_PURPOSE: PRIMARY_VAR,SUMMARY - FIELDNAM: Deflection Angle Of Proton Solar Wind + FIELDNAM: Proton SW Bulk Velocity RTN SC FORMAT: F19.3 - LABLAXIS: H+ SW deflection angle - UNITS: degrees - VALIDMIN: 0 - VALIDMAX: 180 + LABLAXIS: H+ SW bulk velocity RTN SC + UNITS: km/s + VALIDMIN: -2000 + VALIDMAX: 2000 FILLVAL: -1.000000e+31 - SCALETYP: linear - DELTA_PLUS_VAR: proton_sw_deflection_angle_uncert - DELTA_MINUS_VAR: proton_sw_deflection_angle_uncert - SCALEMIN: 0 - SCALEMAX: 10 -proton_sw_deflection_angle_uncert: - NAME: proton_sw_deflection_angle_uncert +proton_sw_bulk_velocity_rtn_sc_covariance: + NAME: proton_sw_bulk_velocity_rtn_sc_covariance DATA_TYPE: CDF_REAL4 - CATDESC: Proton solar wind deflection angle uncertainty + CATDESC: Proton solar wind bulk velocity covariance in RTN (spacecraft rest frame) DEPEND_0: epoch VAR_TYPE: support_data RECORD_VARYING: RV - FIELDNAM: Proton Solar Wind Deflection Angle Uncertainty + FIELDNAM: Proton SW Bulk Velocity RTN SC Covariance FORMAT: F19.3 - UNITS: degrees + LABLAXIS: H+ SW bulk velocity RTN SC covariance + UNITS: km!E2!N/s!E2!N VALIDMIN: 0 - VALIDMAX: 360 + VALIDMAX: 1.0e+8 FILLVAL: -1.000000e+31 - LABLAXIS: H+ SW deflection angle uncertainty alpha_sw_speed: NAME: alpha_sw_speed DATA_TYPE: CDF_REAL4 @@ -524,6 +551,85 @@ alpha_sw_density_uncert: VALIDMAX: 100 FILLVAL: -1.000000e+31 LABLAXIS: Alpha SW density uncertainty +alpha_sw_velocity_rtn: + NAME: alpha_sw_velocity_rtn + DATA_TYPE: CDF_REAL4 + CATDESC: Alpha solar wind bulk velocity in RTN + DEPEND_0: epoch + DEPEND_1: rtn_label + VAR_TYPE: data + RECORD_VARYING: RV + DISPLAY_TYPE: time_series + VARIABLE_PURPOSE: PRIMARY_VAR,SUMMARY + FIELDNAM: Alpha SW Bulk Velocity RTN + FORMAT: F19.3 + LABLAXIS: Alpha SW bulk velocity RTN + UNITS: km/s + VALIDMIN: -2000 + VALIDMAX: 2000 + FILLVAL: -1.000000e+31 +alpha_sw_velocity_covariance_rtn: + NAME: alpha_sw_velocity_covariance_rtn + DATA_TYPE: CDF_REAL4 + CATDESC: Alpha solar wind velocity covariance in RTN + DEPEND_0: epoch + VAR_TYPE: support_data + RECORD_VARYING: RV + FIELDNAM: Alpha SW Velocity Covariance RTN + FORMAT: F19.3 + LABLAXIS: Alpha SW velocity covariance RTN + UNITS: km!E2!N/s!E2!N + VALIDMIN: 0 + VALIDMAX: 1.0e+8 + FILLVAL: -1.000000e+31 +alpha_sw_delta_v: + NAME: alpha_sw_delta_v + DATA_TYPE: CDF_REAL4 + CATDESC: Alpha-proton differential streaming speed along B + DEPEND_0: epoch + VAR_TYPE: data + RECORD_VARYING: RV + DISPLAY_TYPE: time_series + VARIABLE_PURPOSE: PRIMARY_VAR,SUMMARY + FIELDNAM: Alpha SW Delta-V + FORMAT: F19.3 + LABLAXIS: Alpha SW delta-v + UNITS: km/s + VALIDMIN: -2000 + VALIDMAX: 2000 + FILLVAL: -1.000000e+31 + SCALETYP: linear + DELTA_PLUS_VAR: alpha_sw_delta_v_uncert + DELTA_MINUS_VAR: alpha_sw_delta_v_uncert +alpha_sw_delta_v_uncert: + NAME: alpha_sw_delta_v_uncert + DATA_TYPE: CDF_REAL4 + CATDESC: Alpha-proton differential streaming speed uncertainty + DEPEND_0: epoch + VAR_TYPE: support_data + RECORD_VARYING: RV + FIELDNAM: Alpha SW Delta-V Uncertainty + FORMAT: F19.3 + LABLAXIS: Alpha SW delta-v uncertainty + UNITS: km/s + VALIDMIN: 0 + VALIDMAX: 2000 + FILLVAL: -1.000000e+31 +alpha_sw_b_hat_rtn: + NAME: alpha_sw_b_hat_rtn + DATA_TYPE: CDF_REAL4 + CATDESC: Unit magnetic field vector in RTN used for alpha fit + DEPEND_0: epoch + DEPEND_1: rtn_label + VAR_TYPE: support_data + RECORD_VARYING: RV + FIELDNAM: Alpha SW B-hat RTN + FORMAT: F19.3 + LABLAXIS: B-hat RTN + UNITS: ' ' + VALIDMIN: -1 + VALIDMAX: 1 + FILLVAL: -1.000000e+31 swp_flags: NAME: swp_flags DATA_TYPE: CDF_UINT2 @@ -577,4 +683,15 @@ alpha_sw_pre_lut_density: FILLVAL: -1.000000e+31 SCALETYP: log SCALEMIN: 0.001 - SCALEMAX: 5 \ No newline at end of file + SCALEMAX: 5 + +rtn_label: + NAME: rtn_label + DATA_TYPE: CDF_CHAR + CATDESC: RTN component labels + VAR_TYPE: metadata + RECORD_VARYING: NRV + FIELDNAM: RTN Label + FORMAT: a1 + FILLVAL: ' ' + diff --git a/imap_l3_processing/cdf/data_product_definition_csv/imap_swapi_l3a_variable_attrs.csv b/imap_l3_processing/cdf/data_product_definition_csv/imap_swapi_l3a_variable_attrs.csv index e70827857..027a04fcb 100644 --- a/imap_l3_processing/cdf/data_product_definition_csv/imap_swapi_l3a_variable_attrs.csv +++ b/imap_l3_processing/cdf/data_product_definition_csv/imap_swapi_l3a_variable_attrs.csv @@ -13,10 +13,6 @@ proton_sw_temperature,CDF_REAL4,Temperature of Proton Solar Wind,epoch,,,,data,R proton_sw_temperature_delta,CDF_REAL4,Proton Solar Wind Temperature Uncertainty,epoch,,,,support_data,RV,no_plot,,proton_sw_temperature_delta,F19.3,,K,0,9223372036854775807,-1.000000e+31,,,,,,,,,,,,,,,,,,,,,,,, proton_sw_density,CDF_REAL4,Density of Proton Solar Wind,epoch,,,,data,RV,time_series,"PRIMARY_VAR, SUMMARY",proton_sw_density,F19.3,Proton Solar Wind Density,cm!E-3!N,0,9223372036854775807,-1.000000e+31,,,,,linear,,,,,,,,,proton_sw_density_delta,proton_sw_density_delta,,,,0,16,,,, proton_sw_density_delta,CDF_REAL4,Proton Solar Wind Density Uncertainty,epoch,,,,support_data,RV,no_plot,,proton_sw_density_delta,F19.3,,cm!E-3!N,0,9223372036854775807,-1.000000e+31,,,,,,,,,,,,,,,,,,,,,,,, -proton_sw_clock_angle,CDF_REAL4,Clock Angle of Proton Solar Wind,epoch,,,,data,RV,time_series,"PRIMARY_VAR, SUMMARY",proton_sw_clock_angle,F19.3,Proton Solar Wind Clock Angle,Degrees,0,9223372036854775807,-1.000000e+31,,,,,linear,,,,,,,,,proton_sw_clock_angle_delta,proton_sw_clock_angle_delta,,,,0,360,,,, -proton_sw_clock_angle_delta,CDF_REAL4,Proton Solar Wind Clock Angle Uncertainty,epoch,,,,support_data,RV,no_plot,,proton_sw_clock_angle_delta,F19.3,,Degrees,0,9223372036854775807,-1.000000e+31,,,,,,,,,,,,,,,,,,,,,,,, -proton_sw_deflection_angle,CDF_REAL4,Deflection Angle of Proton Solar Wind,epoch,,,,data,RV,time_series,"PRIMARY_VAR, SUMMARY",proton_sw_deflection_angle,F19.3,Proton Solar Wind Deflection Angle,Degrees,0,9223372036854775807,-1.000000e+31,,,,,linear,,,,,,,,,proton_sw_deflection_angle_delta,proton_sw_deflection_angle_delta,,,,0,360,,,, -proton_sw_deflection_angle_delta,CDF_REAL4,Proton Solar Wind Deflection Angle Uncertainty,epoch,,,,support_data,RV,no_plot,,proton_sw_deflection_angle_delta,F19.3,,Degrees,0,9223372036854775807,-1.000000e+31,,,,,,,,,,,,,,,,,,,,,,,, alpha_sw_speed,CDF_REAL4,Speed of Alpha Solar Wind,epoch,,,,data,RV,time_series,"PRIMARY_VAR, SUMMARY",alpha_sw_speed,F19.3,Alpha Solar Wind Speed,km/s,0,9223372036854775807,-1.000000e+31,,,,,linear,,,,,,,,,alpha_sw_speed_delta,alpha_sw_speed_delta,,,,0,1000,,,, alpha_sw_speed_delta,CDF_REAL4,Alpha Solar Wind Speed Uncertainty,epoch,,,,support_data,RV,no_plot,,alpha_sw_speed_delta,F19.3,,km/s,0,9223372036854775807,-1.000000e+31,,,,,,,,,,,,,,,,,,,,,,,, alpha_sw_temperature,CDF_REAL4,Temperature of Alpha Solar Wind,epoch,,,,data,RV,time_series,"PRIMARY_VAR, SUMMARY",alpha_sw_temperature,F19.3,Alpha Solar Wind Temperature,K,0,9223372036854775807,-1.000000e+31,,,,,linear,,,,,,,,,alpha_sw_temperature_delta,alpha_sw_temperature_delta,,,,0,450000,,,, diff --git a/imap_l3_processing/constants.py b/imap_l3_processing/constants.py index 75d8b7c95..7a9335dc7 100644 --- a/imap_l3_processing/constants.py +++ b/imap_l3_processing/constants.py @@ -13,7 +13,14 @@ PUI_PARTICLE_CHARGE_COULOMBS = PROTON_CHARGE_COULOMBS HE_PUI_PARTICLE_MASS_KG = 6.64556828337e-27 +PROTON_CHARGE_OVER_MASS_C_PER_KG = PROTON_CHARGE_COULOMBS / PROTON_MASS_KG +ALPHA_CHARGE_OVER_MASS_C_PER_KG = ALPHA_PARTICLE_CHARGE_COULOMBS / ALPHA_PARTICLE_MASS_KG + +PROTON_MASS_PER_CHARGE_M_P_PER_E = 1.0 +ALPHA_MASS_PER_CHARGE_M_P_PER_E = (ALPHA_PARTICLE_MASS_KG / PROTON_MASS_KG) / (ALPHA_PARTICLE_CHARGE_COULOMBS / PROTON_CHARGE_COULOMBS) + BOLTZMANN_CONSTANT_JOULES_PER_KELVIN = 1.380_649e-23 +EV_TO_KELVIN = PROTON_CHARGE_COULOMBS / BOLTZMANN_CONSTANT_JOULES_PER_KELVIN # ≈ 11604.52 K/eV ONE_SECOND_IN_MICROSECONDS = 1_000_000 ONE_SECOND_IN_NANOSECONDS = 1_000_000_000 @@ -44,6 +51,4 @@ UNSIGNED_INT4_FILL_VALUE = 4294967295 INT8_FILL_VALUE = -9223372036854775808 -SWAPI_EFFECTIVE_AREA_CM2 = 1.4053e-3 - -TTJ2000_EPOCH = datetime.fromisoformat("2000-01-01T11:58:55.816") \ No newline at end of file +TTJ2000_EPOCH = datetime.fromisoformat("2000-01-01T11:58:55.816") diff --git a/imap_l3_processing/swapi/constants.py b/imap_l3_processing/swapi/constants.py new file mode 100644 index 000000000..9c21560ff --- /dev/null +++ b/imap_l3_processing/swapi/constants.py @@ -0,0 +1,19 @@ +# Revised SWAPI ESA k-factor from high-resolution SIMION simulations (Q ≈ 1.89 eV/V at θ = 0). +# Used internally by L3 for passband normalization and central-speed conversions. +SWAPI_K_FACTOR = 1.89 + +# Pre-launch k-factor used by the L2 product to label its `esa_energy` field as +# `esa_energy = SWAPI_L2_K_FACTOR × |voltage|`. Different from SWAPI_K_FACTOR — divide L2's +# `esa_energy` by this to recover true ESA voltage before any L3 processing. +SWAPI_L2_K_FACTOR = 1.93 + +# SWAPI ESA sweep bin layout (72 bins total, indices 0–71): +# Index 0 : always discarded (hardware artifact, never science data) +# Indices 1–62 : coarse sweep passbands (62 bins, uniform energy steps) +# Indices 63–71 : fine sweep passbands (9 bins, higher resolution near the proton peak) +SWAPI_DISCARDED_BIN = 0 +SWAPI_COARSE_SWEEP_BINS = slice(1, 63) # indices 1–62 +SWAPI_FINE_SWEEP_BINS = slice(63, 72) # indices 63–71 +SWAPI_SCIENCE_BINS = slice(1, 72) # indices 1–71, all usable bins (coarse + fine) + +SWAPI_LIVETIME_S = 0.145 diff --git a/imap_l3_processing/swapi/descriptors.py b/imap_l3_processing/swapi/descriptors.py index 66c5db5c9..760e60c33 100644 --- a/imap_l3_processing/swapi/descriptors.py +++ b/imap_l3_processing/swapi/descriptors.py @@ -1,7 +1,5 @@ SWAPI_L2_DESCRIPTOR = "sci" -PROTON_TEMPERATURE_DENSITY_LOOKUP_TABLE_DESCRIPTOR = "proton-density-temperature-lut" ALPHA_TEMPERATURE_DENSITY_LOOKUP_TABLE_DESCRIPTOR = "alpha-density-temperature-lut" -CLOCK_ANGLE_AND_FLOW_DEFLECTION_LOOKUP_TABLE_DESCRIPTOR = "clock-angle-and-flow-deflection-lut" GEOMETRIC_FACTOR_SW_LOOKUP_TABLE_DESCRIPTOR = "energy-gf-sw-lut" GEOMETRIC_FACTOR_PUI_LOOKUP_TABLE_DESCRIPTOR = "energy-gf-pui-lut" EFFICIENCY_LOOKUP_TABLE_DESCRIPTOR = "efficiency-lut" @@ -10,4 +8,10 @@ HYDROGEN_INFLOW_VECTOR_DESCRIPTOR = "hydrogen-inflow-vector" HELIUM_INFLOW_VECTOR_DESCRIPTOR = "helium-inflow-vector" +AZIMUTHAL_TRANSMISSION_DESCRIPTOR = "azimuthal-transmission" +CENTRAL_EFFECTIVE_AREA_DESCRIPTOR = "central-effective-area" +PASSBAND_FIT_COEFFICIENTS_DESCRIPTOR = "passband-fit-coefficients" + SWAPI_L3A_ALPHA_SW_DESCRIPTOR = "alpha-sw" + +MAG_RTN_DESCRIPTOR = "norm-rtn" diff --git a/imap_l3_processing/swapi/l3a/chunk_fits.py b/imap_l3_processing/swapi/l3a/chunk_fits.py new file mode 100644 index 000000000..6dc103812 --- /dev/null +++ b/imap_l3_processing/swapi/l3a/chunk_fits.py @@ -0,0 +1,421 @@ +import logging +import multiprocessing +import os +from abc import ABC, abstractmethod +from dataclasses import dataclass +from typing import Any + +import numpy as np +from spacepy import pycdf +from uncertainties import ufloat + +from imap_l3_processing.constants import ( + PROTON_MASS_KG, + PROTON_MASS_PER_CHARGE_M_P_PER_E, + THIRTY_SECONDS_IN_NANOSECONDS, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.alpha.calculate_alpha_solar_wind_moments import ( + AlphaSolarWindMoments, + fit_solar_wind_alpha_moments, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.proton.fit_model import ( + ProtonSolarWindFitResult, + fit_solar_wind_proton_model, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.proton.initial_guess import ( + esa_voltage_to_proton_speed, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.fit_context import ( + build_solar_wind_fit_context, +) +from imap_l3_processing.swapi.constants import ( + SWAPI_COARSE_SWEEP_BINS, + SWAPI_L2_K_FACTOR, + SWAPI_SCIENCE_BINS, +) +from imap_l3_processing.swapi.l3a.utils import ( + chunk_epoch, + compute_direction_of_mean_magnetic_field_over_chunk, + get_spacecraft_velocity_rtn, + get_swapi_geometry, + measurement_times, +) +from imap_l3_processing.swapi.quality_flags import SwapiL3Flags + +logger = logging.getLogger(__name__) + +_shared: dict[str, Any] = {} + + +class ChunkFitter(ABC): + @abstractmethod + def precompute_geometry(self, chunk) -> tuple: ... + + @abstractmethod + def fit_chunk(self, chunk, *geometry) -> dict[str, Any]: ... + + +class ParallelChunkRunner: + def __init__(self, swapi_response, efficiency_table): + self._swapi_response = swapi_response + self._efficiency_table = efficiency_table + + def run(self, chunks, fitter: ChunkFitter) -> dict[str, np.ndarray]: + geometries = [fitter.precompute_geometry(chunk) for chunk in chunks] + + with multiprocessing.get_context("fork").Pool( + processes=os.cpu_count(), + initializer=_init_worker, + initargs=(self._swapi_response, self._efficiency_table, fitter), + ) as pool: + results = pool.starmap( + _run_one, [(chunk, geom) for chunk, geom in zip(chunks, geometries)] + ) + + return {k: np.array([r[k] for r in results]) for k in results[0].keys()} + + +def _init_worker(swapi_response, efficiency_table, fitter): + _shared["swapi_response"] = swapi_response + _shared["efficiency_table"] = efficiency_table + _shared["fitter"] = fitter + + +def _run_one(chunk, geom): + return _shared["fitter"].fit_chunk(chunk, *geom) + + +class ProtonChunkFitter(ChunkFitter): + def precompute_geometry(self, chunk): + epoch = chunk_epoch(chunk) + rm = None + sc_vel = None + try: + rm = get_swapi_geometry(measurement_times(chunk, SWAPI_SCIENCE_BINS)) + except Exception: + logger.warning( + "SPICE gap in rotation matrices.", + exc_info=True, + ) + + if rm is not None: + try: + sc_vel = get_spacecraft_velocity_rtn(epoch) + except Exception: + logger.warning( + "SPICE gap in spacecraft velocity.", + exc_info=True, + ) + + return (epoch, rm, sc_vel) + + def fit_chunk( + self, + data_chunk, + epoch, + rotation_matrices, + sc_velocity_rtn, + ): + result = _fit_proton(data_chunk, epoch, rotation_matrices) + return _proton_moments_from_fit(result, epoch, data_chunk, sc_velocity_rtn) + + +class AlphaChunkFitter(ChunkFitter): + def __init__(self, mag_data): + self.mag_data = mag_data + + def precompute_geometry(self, chunk): + epoch = chunk_epoch(chunk) + try: + rm = get_swapi_geometry(measurement_times(chunk, SWAPI_SCIENCE_BINS)) + except Exception: + logger.info( + f"Missing SPICE information at epoch {pycdf.lib.tt2000_to_datetime(int(epoch))}, continuing with fill value" + ) + rm = None + b_hat = compute_direction_of_mean_magnetic_field_over_chunk( + self.mag_data, int(epoch), int(THIRTY_SECONDS_IN_NANOSECONDS) + ) + return (epoch, rm, b_hat) + + def fit_chunk( + self, + data_chunk, + epoch, + rotation_matrices, + magnetic_field_direction, + ): + result = _fit_alpha( + data_chunk, epoch, rotation_matrices, magnetic_field_direction + ) + return _alpha_moments_from_fit(result, epoch) + + +def _proton_moments_from_fit(result, epoch, data_chunk, sc_velocity_rtn): + speed = sum(component**2 for component in result.bulk_velocity_rtn) ** 0.5 + speed_nom, speed_unc = speed.nominal_value, speed.std_dev + bulk_velocity_rtn_sc = result.bulk_velocity_rtn_nominal() + velocity_covariance_sc = result.bulk_velocity_rtn_covariance() + density_nom, density_unc = result.density.nominal_value, result.density.std_dev + temp_nom, temp_unc = result.temperature.nominal_value, result.temperature.std_dev + + if sc_velocity_rtn is not None: + bulk_velocity_rtn_sun = bulk_velocity_rtn_sc + sc_velocity_rtn + velocity_covariance_sun = velocity_covariance_sc + sun_velocity_unc = [ + component + sc_component + for component, sc_component in zip( + result.bulk_velocity_rtn, sc_velocity_rtn + ) + ] + sun_speed = sum(component**2 for component in sun_velocity_unc) ** 0.5 + sun_speed_nom, sun_speed_unc = sun_speed.nominal_value, sun_speed.std_dev + else: + logger.warning( + f"Proton fit at epoch {pycdf.lib.tt2000_to_datetime(int(epoch))}: missing spacecraft velocity; sun-frame outputs are fill values" + ) + bulk_velocity_rtn_sun = np.full(3, np.nan) + velocity_covariance_sun = np.full((3, 3), np.nan) + sun_speed_nom = sun_speed_unc = np.nan + + if not np.isfinite(speed_nom): + speed_nom = _peak_proton_speed_kms(data_chunk) + + return dict( + epoch=epoch, + proton_sw_speed=speed_nom, + proton_sw_speed_uncert=speed_unc, + proton_sw_speed_sun=sun_speed_nom, + proton_sw_speed_sun_uncert=sun_speed_unc, + proton_sw_temperature=temp_nom, + proton_sw_temperature_uncert=temp_unc, + proton_sw_density=density_nom, + proton_sw_density_uncert=density_unc, + proton_sw_bulk_velocity_rtn_sun=bulk_velocity_rtn_sun, + proton_sw_bulk_velocity_rtn_sun_covariance=velocity_covariance_sun, + proton_sw_bulk_velocity_rtn_sc=bulk_velocity_rtn_sc, + proton_sw_bulk_velocity_rtn_sc_covariance=velocity_covariance_sc, + quality_flags=result.bad_fit_flag, + ) + + +def _alpha_moments_from_fit(result, epoch): + alpha = result.alpha_moments + return dict( + epoch=epoch, + alpha_sw_density=alpha.density.nominal_value, + alpha_sw_density_uncert=alpha.density.std_dev, + alpha_sw_temperature=alpha.temperature.nominal_value, + alpha_sw_temperature_uncert=alpha.temperature.std_dev, + alpha_sw_velocity_rtn=alpha.bulk_velocity_rtn_nominal(), + alpha_sw_velocity_covariance_rtn=alpha.bulk_velocity_rtn_covariance(), + alpha_sw_delta_v=alpha.delta_v.nominal_value, + alpha_sw_delta_v_uncert=alpha.delta_v.std_dev, + alpha_sw_b_hat_rtn=result.b_hat_rtn, + quality_flags=result.bad_fit_flag, + ) + + +_PEAK_SPEED_HALF_WIDTH = 4 + + +def _peak_proton_speed_kms(data_chunk) -> float: + count_rate = data_chunk.coincidence_count_rate[:, SWAPI_COARSE_SWEEP_BINS] + voltage = data_chunk.energy[:, SWAPI_COARSE_SWEEP_BINS] / SWAPI_L2_K_FACTOR + mean_count_rate = np.nanmean(count_rate, axis=0) + mean_voltage = np.nanmean(voltage, axis=0) + if not np.any(np.isfinite(mean_count_rate)): + return np.nan + peak_index = int(np.nanargmax(mean_count_rate)) + n_bins = mean_count_rate.shape[0] + clamped_peak_index = max( + _PEAK_SPEED_HALF_WIDTH, min(peak_index, n_bins - _PEAK_SPEED_HALF_WIDTH - 1) + ) + window = slice( + clamped_peak_index - _PEAK_SPEED_HALF_WIDTH, + clamped_peak_index + _PEAK_SPEED_HALF_WIDTH + 1, + ) + rate_window = mean_count_rate[window] + voltage_window = mean_voltage[window] + valid = ( + np.isfinite(rate_window) + & np.isfinite(voltage_window) + & (voltage_window > 0.0) + & (rate_window >= 0.0) + ) + if not np.any(valid): + return np.nan + speed = esa_voltage_to_proton_speed(voltage_window[valid]) + weights = rate_window[valid] + weight_sum = float(np.sum(weights)) + if not np.isfinite(weight_sum) or weight_sum <= 0.0: + return np.nan + return float(np.sum(weights * speed) / weight_sum) + + +def _eff_scale(efficiency_table, epoch, kind): + eps_lab = float(efficiency_table.eps_p_lab) + if kind == "proton": + return float(efficiency_table.get_proton_efficiency_for(epoch)) / eps_lab + return float(efficiency_table.get_alpha_efficiency_for(epoch)) / eps_lab + + +def _coarse_subset_of_science_rotations( + science_rotation_matrices: np.ndarray, n_sweeps: int +) -> np.ndarray: + """Slice per-sweep coarse-bin rotations out of a flat science-bin rotation + array. Coarse bins are the first 62 of the 71 science bins per sweep.""" + n_science_bins = SWAPI_SCIENCE_BINS.stop - SWAPI_SCIENCE_BINS.start + n_coarse_bins = SWAPI_COARSE_SWEEP_BINS.stop - SWAPI_COARSE_SWEEP_BINS.start + return ( + science_rotation_matrices.reshape(n_sweeps, n_science_bins, 3, 3)[ + :, :n_coarse_bins + ] + .reshape(-1, 3, 3) + ) + + +def _fit_proton( + data_chunk, epoch, rotation_matrices +) -> ProtonSolarWindFitResult: + if rotation_matrices is None: + logger.warning( + f"Proton fit at epoch {pycdf.lib.tt2000_to_datetime(int(epoch))}: missing rotation matrices; using fill values" + ) + return _nan_proton_result(SwapiL3Flags.NONE) + if np.any(np.isnan(data_chunk.coincidence_count_rate[:, SWAPI_SCIENCE_BINS])): + logger.warning( + f"Proton fit at epoch {pycdf.lib.tt2000_to_datetime(int(epoch))}: NaN in input count rate; using fill values" + ) + return _nan_proton_result(SwapiL3Flags.NONE) + swapi_response = _shared["swapi_response"] + efficiency_table = _shared["efficiency_table"] + count_rates = data_chunk.coincidence_count_rate[:, SWAPI_SCIENCE_BINS] + voltages = data_chunk.energy[:, SWAPI_SCIENCE_BINS] / SWAPI_L2_K_FACTOR + ctx = build_solar_wind_fit_context( + count_rate=count_rates, + esa_voltage=voltages, + swapi_response=swapi_response, + central_effective_area_scale=_eff_scale(efficiency_table, epoch, "proton"), + rotation_matrices=rotation_matrices, + mass_kg=PROTON_MASS_KG, + mass_per_charge_m_p_per_e=PROTON_MASS_PER_CHARGE_M_P_PER_E, + ) + try: + result = fit_solar_wind_proton_model(ctx) + except Exception: + logger.warning( + f"Proton fit at epoch {pycdf.lib.tt2000_to_datetime(int(epoch))}: exception during fit; using fill values", + exc_info=True, + ) + return _nan_proton_result(SwapiL3Flags.FIT_ERROR) + + return result + + +def _nan_proton_result(flag) -> ProtonSolarWindFitResult: + nan = ufloat(np.nan, np.nan) + return ProtonSolarWindFitResult( + density=nan, + temperature=nan, + bulk_velocity_rtn=(nan, nan, nan), + bad_fit_flag=int(flag), + ) + + +@dataclass +class AlphaSolarWindFitResult: + """Chunk-level alpha output: alpha moments + the proton moments they + reference + the B̂ used as the field-aligned drift constraint, plus the + consolidated `bad_fit_flag` rolled up from every stage that could fail + (missing B̂, proton fit, alpha LM).""" + + alpha_moments: AlphaSolarWindMoments + proton_moments: ProtonSolarWindFitResult + b_hat_rtn: np.ndarray + bad_fit_flag: int + + +def _nan_alpha_moments(flag) -> AlphaSolarWindMoments: + nan = ufloat(np.nan, np.nan) + return AlphaSolarWindMoments( + density=nan, + temperature=nan, + bulk_velocity_rtn=(nan, nan, nan), + delta_v=nan, + bad_fit_flag=int(flag), + ) + + +def _fit_alpha( + data_chunk, + epoch, + rotation_matrices, + magnetic_field_direction, +) -> AlphaSolarWindFitResult: + nan_b_hat = np.full(3, np.nan) + if ( + magnetic_field_direction is None + or not np.all(np.isfinite(magnetic_field_direction)) + ): + logger.warning( + f"Alpha fit at epoch {pycdf.lib.tt2000_to_datetime(int(epoch))}: missing or non-finite magnetic field direction; using fill values" + ) + return AlphaSolarWindFitResult( + alpha_moments=_nan_alpha_moments(SwapiL3Flags.NONE), + proton_moments=_nan_proton_result(SwapiL3Flags.NONE), + b_hat_rtn=nan_b_hat, + bad_fit_flag=int(SwapiL3Flags.NONE), + ) + + proton_moments = _fit_proton(data_chunk, epoch, rotation_matrices) + if not np.all( + np.isfinite( + [component.nominal_value for component in proton_moments.bulk_velocity_rtn] + ) + ): + return AlphaSolarWindFitResult( + alpha_moments=_nan_alpha_moments(proton_moments.bad_fit_flag), + proton_moments=proton_moments, + b_hat_rtn=nan_b_hat, + bad_fit_flag=int(proton_moments.bad_fit_flag), + ) + + swapi_response = _shared["swapi_response"] + efficiency_table = _shared["efficiency_table"] + try: + count_rates = data_chunk.coincidence_count_rate[:, SWAPI_COARSE_SWEEP_BINS] + voltages = data_chunk.energy[:, SWAPI_COARSE_SWEEP_BINS] / SWAPI_L2_K_FACTOR + times = measurement_times(data_chunk, SWAPI_COARSE_SWEEP_BINS) + coarse_rotation_matrices = _coarse_subset_of_science_rotations( + rotation_matrices, n_sweeps=data_chunk.sci_start_time.shape[0] + ) + alpha_moments = fit_solar_wind_alpha_moments( + count_rates, + voltages, + times, + swapi_response, + proton_moments, + magnetic_field_direction, + _eff_scale(efficiency_table, epoch, "alpha"), + _eff_scale(efficiency_table, epoch, "proton"), + rotation_matrices=coarse_rotation_matrices, + ) + except Exception: + logger.warning( + f"Alpha fit at epoch {pycdf.lib.tt2000_to_datetime(int(epoch))}: exception during fit; using fill values", + exc_info=True, + ) + return AlphaSolarWindFitResult( + alpha_moments=_nan_alpha_moments(SwapiL3Flags.FIT_ERROR), + proton_moments=proton_moments, + b_hat_rtn=nan_b_hat, + bad_fit_flag=int(SwapiL3Flags.FIT_ERROR), + ) + + return AlphaSolarWindFitResult( + alpha_moments=alpha_moments, + proton_moments=proton_moments, + b_hat_rtn=magnetic_field_direction, + bad_fit_flag=int(alpha_moments.bad_fit_flag), + ) diff --git a/imap_l3_processing/swapi/l3a/models.py b/imap_l3_processing/swapi/l3a/models.py index d53ce3766..373be1c43 100644 --- a/imap_l3_processing/swapi/l3a/models.py +++ b/imap_l3_processing/swapi/l3a/models.py @@ -4,7 +4,10 @@ import numpy as np from uncertainties.unumpy import nominal_values, std_devs -from imap_l3_processing.constants import THIRTY_SECONDS_IN_NANOSECONDS, FIVE_MINUTES_IN_NANOSECONDS +from imap_l3_processing.constants import ( + THIRTY_SECONDS_IN_NANOSECONDS, + FIVE_MINUTES_IN_NANOSECONDS, +) from imap_l3_processing.models import DataProduct, DataProductVariable from imap_l3_processing.swapi.quality_flags import SwapiL3Flags @@ -12,25 +15,33 @@ EPOCH_DELTA_CDF_VAR_NAME = "epoch_delta" PROTON_SOLAR_WIND_SPEED_CDF_VAR_NAME = "proton_sw_speed" PROTON_SOLAR_WIND_SPEED_UNCERTAINTY_CDF_VAR_NAME = "proton_sw_speed_uncert" +PROTON_SOLAR_WIND_SPEED_SUN_CDF_VAR_NAME = "proton_sw_speed_sun" +PROTON_SOLAR_WIND_SPEED_SUN_UNCERTAINTY_CDF_VAR_NAME = "proton_sw_speed_sun_uncert" PROTON_SOLAR_WIND_TEMPERATURE_CDF_VAR_NAME = "proton_sw_temperature" PROTON_SOLAR_WIND_TEMPERATURE_UNCERTAINTY_CDF_VAR_NAME = "proton_sw_temperature_uncert" PROTON_SOLAR_WIND_DENSITY_CDF_VAR_NAME = "proton_sw_density" PROTON_SOLAR_WIND_DENSITY_UNCERTAINTY_CDF_VAR_NAME = "proton_sw_density_uncert" -PROTON_SOLAR_WIND_CLOCK_ANGLE_CDF_VAR_NAME = "proton_sw_clock_angle" -PROTON_SOLAR_WIND_CLOCK_ANGLE_UNCERTAINTY_CDF_VAR_NAME = "proton_sw_clock_angle_uncert" +PROTON_SOLAR_WIND_BULK_VELOCITY_RTN_SUN_CDF_VAR_NAME = "proton_sw_bulk_velocity_rtn_sun" +PROTON_SOLAR_WIND_BULK_VELOCITY_RTN_SUN_COVARIANCE_CDF_VAR_NAME = ( + "proton_sw_bulk_velocity_rtn_sun_covariance" +) +PROTON_SOLAR_WIND_BULK_VELOCITY_RTN_SC_CDF_VAR_NAME = "proton_sw_bulk_velocity_rtn_sc" +PROTON_SOLAR_WIND_BULK_VELOCITY_RTN_SC_COVARIANCE_CDF_VAR_NAME = ( + "proton_sw_bulk_velocity_rtn_sc_covariance" +) -PROTON_SOLAR_WIND_DEFLECTION_ANGLE_CDF_VAR_NAME = "proton_sw_deflection_angle" -PROTON_SOLAR_WIND_DEFLECTION_ANGLE_UNCERTAINTY_CDF_VAR_NAME = "proton_sw_deflection_angle_uncert" - -ALPHA_SOLAR_WIND_SPEED_CDF_VAR_NAME = "alpha_sw_speed" -ALPHA_SOLAR_WIND_SPEED_UNCERTAINTY_CDF_VAR_NAME = "alpha_sw_speed_uncert" ALPHA_SOLAR_WIND_DENSITY_CDF_VAR_NAME = "alpha_sw_density" ALPHA_SOLAR_WIND_DENSITY_UNCERTAINTY_CDF_VAR_NAME = "alpha_sw_density_uncert" ALPHA_SOLAR_WIND_TEMPERATURE_CDF_VAR_NAME = "alpha_sw_temperature" ALPHA_SOLAR_WIND_TEMPERATURE_UNCERTAINTY_CDF_VAR_NAME = "alpha_sw_temperature_uncert" -ALPHA_SOLAR_WIND_PRE_LUT_DENSITY_CDF_VAR_NAME = "alpha_sw_pre_lut_density" -ALPHA_SOLAR_WIND_PRE_LUT_TEMPERATURE_CDF_VAR_NAME = "alpha_sw_pre_lut_temperature" +ALPHA_SOLAR_WIND_VELOCITY_RTN_CDF_VAR_NAME = "alpha_sw_velocity_rtn" +ALPHA_SOLAR_WIND_VELOCITY_COVARIANCE_RTN_CDF_VAR_NAME = ( + "alpha_sw_velocity_covariance_rtn" +) +ALPHA_SOLAR_WIND_DELTA_V_CDF_VAR_NAME = "alpha_sw_delta_v" +ALPHA_SOLAR_WIND_DELTA_V_UNCERT_CDF_VAR_NAME = "alpha_sw_delta_v_uncert" +ALPHA_SOLAR_WIND_B_HAT_RTN_CDF_VAR_NAME = "alpha_sw_b_hat_rtn" PUI_COOLING_INDEX_CDF_VAR_NAME = "pui_cooling_index" PUI_IONIZATION_RATE_CDF_VAR_NAME = "pui_ionization_rate" @@ -50,61 +61,130 @@ @dataclass class SwapiL3ProtonSolarWindData(DataProduct): - epoch: np.ndarray[float] - proton_sw_speed: np.ndarray[float] - proton_sw_temperature: np.ndarray[float] - proton_sw_density: np.ndarray[float] - proton_sw_clock_angle: np.ndarray[float] - proton_sw_deflection_angle: np.ndarray[float] + epoch: np.ndarray + proton_sw_speed: np.ndarray + proton_sw_speed_uncert: np.ndarray + proton_sw_speed_sun: np.ndarray + proton_sw_speed_sun_uncert: np.ndarray + proton_sw_temperature: np.ndarray + proton_sw_temperature_uncert: np.ndarray + proton_sw_density: np.ndarray + proton_sw_density_uncert: np.ndarray + proton_sw_bulk_velocity_rtn_sun: np.ndarray # shape (N, 3), km/s, inertial RTN + proton_sw_bulk_velocity_rtn_sun_covariance: np.ndarray # shape (N, 3, 3), km²/s² + proton_sw_bulk_velocity_rtn_sc: np.ndarray # shape (N, 3), km/s, RTN in SC rest frame + proton_sw_bulk_velocity_rtn_sc_covariance: np.ndarray # shape (N, 3, 3), km²/s² quality_flags: np.ndarray[SwapiL3Flags] def to_data_product_variables(self) -> list[DataProductVariable]: return [ DataProductVariable(EPOCH_CDF_VAR_NAME, self.epoch), - DataProductVariable(PROTON_SOLAR_WIND_SPEED_CDF_VAR_NAME, nominal_values(self.proton_sw_speed)), - DataProductVariable(PROTON_SOLAR_WIND_SPEED_UNCERTAINTY_CDF_VAR_NAME, std_devs(self.proton_sw_speed)), - DataProductVariable(EPOCH_DELTA_CDF_VAR_NAME, np.full_like(self.epoch, THIRTY_SECONDS_IN_NANOSECONDS)), - DataProductVariable(PROTON_SOLAR_WIND_TEMPERATURE_CDF_VAR_NAME, nominal_values(self.proton_sw_temperature)), - DataProductVariable(PROTON_SOLAR_WIND_TEMPERATURE_UNCERTAINTY_CDF_VAR_NAME, - std_devs(self.proton_sw_temperature)), - DataProductVariable(PROTON_SOLAR_WIND_DENSITY_CDF_VAR_NAME, nominal_values(self.proton_sw_density)), - DataProductVariable(PROTON_SOLAR_WIND_DENSITY_UNCERTAINTY_CDF_VAR_NAME, - std_devs(self.proton_sw_density)), - DataProductVariable(PROTON_SOLAR_WIND_CLOCK_ANGLE_CDF_VAR_NAME, nominal_values(self.proton_sw_clock_angle)), - DataProductVariable(PROTON_SOLAR_WIND_CLOCK_ANGLE_UNCERTAINTY_CDF_VAR_NAME, - std_devs(self.proton_sw_clock_angle)), - DataProductVariable(PROTON_SOLAR_WIND_DEFLECTION_ANGLE_CDF_VAR_NAME, - nominal_values(self.proton_sw_deflection_angle)), - DataProductVariable(PROTON_SOLAR_WIND_DEFLECTION_ANGLE_UNCERTAINTY_CDF_VAR_NAME, - std_devs(self.proton_sw_deflection_angle)), - DataProductVariable(SWAPI_QUALITY_FLAGS_CDF_VAR_NAME, self.quality_flags) + DataProductVariable( + PROTON_SOLAR_WIND_SPEED_CDF_VAR_NAME, self.proton_sw_speed + ), + DataProductVariable( + PROTON_SOLAR_WIND_SPEED_UNCERTAINTY_CDF_VAR_NAME, + self.proton_sw_speed_uncert, + ), + DataProductVariable( + PROTON_SOLAR_WIND_SPEED_SUN_CDF_VAR_NAME, + self.proton_sw_speed_sun, + ), + DataProductVariable( + PROTON_SOLAR_WIND_SPEED_SUN_UNCERTAINTY_CDF_VAR_NAME, + self.proton_sw_speed_sun_uncert, + ), + DataProductVariable( + EPOCH_DELTA_CDF_VAR_NAME, + np.full_like(self.epoch, THIRTY_SECONDS_IN_NANOSECONDS), + ), + DataProductVariable( + PROTON_SOLAR_WIND_TEMPERATURE_CDF_VAR_NAME, self.proton_sw_temperature + ), + DataProductVariable( + PROTON_SOLAR_WIND_TEMPERATURE_UNCERTAINTY_CDF_VAR_NAME, + self.proton_sw_temperature_uncert, + ), + DataProductVariable( + PROTON_SOLAR_WIND_DENSITY_CDF_VAR_NAME, self.proton_sw_density + ), + DataProductVariable( + PROTON_SOLAR_WIND_DENSITY_UNCERTAINTY_CDF_VAR_NAME, + self.proton_sw_density_uncert, + ), + DataProductVariable( + PROTON_SOLAR_WIND_BULK_VELOCITY_RTN_SUN_CDF_VAR_NAME, + self.proton_sw_bulk_velocity_rtn_sun, + ), + DataProductVariable( + PROTON_SOLAR_WIND_BULK_VELOCITY_RTN_SUN_COVARIANCE_CDF_VAR_NAME, + self.proton_sw_bulk_velocity_rtn_sun_covariance, + ), + DataProductVariable( + PROTON_SOLAR_WIND_BULK_VELOCITY_RTN_SC_CDF_VAR_NAME, + self.proton_sw_bulk_velocity_rtn_sc, + ), + DataProductVariable( + PROTON_SOLAR_WIND_BULK_VELOCITY_RTN_SC_COVARIANCE_CDF_VAR_NAME, + self.proton_sw_bulk_velocity_rtn_sc_covariance, + ), + DataProductVariable(SWAPI_QUALITY_FLAGS_CDF_VAR_NAME, self.quality_flags), ] @dataclass class SwapiL3AlphaSolarWindData(DataProduct): epoch: np.ndarray[datetime] - alpha_sw_speed: np.ndarray - alpha_sw_temperature: np.ndarray alpha_sw_density: np.ndarray - bad_fit_flag: np.ndarray - alpha_sw_pre_lut_temperature: np.ndarray - alpha_sw_pre_lut_density: np.ndarray + alpha_sw_density_uncert: np.ndarray + alpha_sw_temperature: np.ndarray + alpha_sw_temperature_uncert: np.ndarray + alpha_sw_velocity_rtn: np.ndarray + alpha_sw_velocity_covariance_rtn: np.ndarray + alpha_sw_delta_v: np.ndarray + alpha_sw_delta_v_uncert: np.ndarray + alpha_sw_b_hat_rtn: np.ndarray + quality_flags: np.ndarray def to_data_product_variables(self) -> list[DataProductVariable]: return [ DataProductVariable(EPOCH_CDF_VAR_NAME, self.epoch), - DataProductVariable(EPOCH_DELTA_CDF_VAR_NAME, np.full_like(self.epoch, THIRTY_SECONDS_IN_NANOSECONDS)), - DataProductVariable(ALPHA_SOLAR_WIND_SPEED_CDF_VAR_NAME, nominal_values(self.alpha_sw_speed)), - DataProductVariable(ALPHA_SOLAR_WIND_SPEED_UNCERTAINTY_CDF_VAR_NAME, std_devs(self.alpha_sw_speed)), - DataProductVariable(ALPHA_SOLAR_WIND_TEMPERATURE_CDF_VAR_NAME, nominal_values(self.alpha_sw_temperature)), - DataProductVariable(ALPHA_SOLAR_WIND_TEMPERATURE_UNCERTAINTY_CDF_VAR_NAME, - std_devs(self.alpha_sw_temperature)), - DataProductVariable(ALPHA_SOLAR_WIND_DENSITY_CDF_VAR_NAME, nominal_values(self.alpha_sw_density)), - DataProductVariable(ALPHA_SOLAR_WIND_DENSITY_UNCERTAINTY_CDF_VAR_NAME, std_devs(self.alpha_sw_density)), - DataProductVariable(SWAPI_QUALITY_FLAGS_CDF_VAR_NAME, self.bad_fit_flag), - DataProductVariable(ALPHA_SOLAR_WIND_PRE_LUT_TEMPERATURE_CDF_VAR_NAME, nominal_values(self.alpha_sw_pre_lut_temperature)), - DataProductVariable(ALPHA_SOLAR_WIND_PRE_LUT_DENSITY_CDF_VAR_NAME, nominal_values(self.alpha_sw_pre_lut_density)), + DataProductVariable( + EPOCH_DELTA_CDF_VAR_NAME, + np.full_like(self.epoch, THIRTY_SECONDS_IN_NANOSECONDS), + ), + DataProductVariable( + ALPHA_SOLAR_WIND_DENSITY_CDF_VAR_NAME, self.alpha_sw_density + ), + DataProductVariable( + ALPHA_SOLAR_WIND_DENSITY_UNCERTAINTY_CDF_VAR_NAME, + self.alpha_sw_density_uncert, + ), + DataProductVariable( + ALPHA_SOLAR_WIND_TEMPERATURE_CDF_VAR_NAME, self.alpha_sw_temperature + ), + DataProductVariable( + ALPHA_SOLAR_WIND_TEMPERATURE_UNCERTAINTY_CDF_VAR_NAME, + self.alpha_sw_temperature_uncert, + ), + DataProductVariable( + ALPHA_SOLAR_WIND_VELOCITY_RTN_CDF_VAR_NAME, self.alpha_sw_velocity_rtn + ), + DataProductVariable( + ALPHA_SOLAR_WIND_VELOCITY_COVARIANCE_RTN_CDF_VAR_NAME, + self.alpha_sw_velocity_covariance_rtn, + ), + DataProductVariable( + ALPHA_SOLAR_WIND_DELTA_V_CDF_VAR_NAME, self.alpha_sw_delta_v + ), + DataProductVariable( + ALPHA_SOLAR_WIND_DELTA_V_UNCERT_CDF_VAR_NAME, + self.alpha_sw_delta_v_uncert, + ), + DataProductVariable( + ALPHA_SOLAR_WIND_B_HAT_RTN_CDF_VAR_NAME, self.alpha_sw_b_hat_rtn + ), + DataProductVariable(SWAPI_QUALITY_FLAGS_CDF_VAR_NAME, self.quality_flags), ] @@ -122,19 +202,47 @@ class SwapiL3PickupIonData(DataProduct): def to_data_product_variables(self) -> list[DataProductVariable]: return [ DataProductVariable(EPOCH_CDF_VAR_NAME, self.epoch), - DataProductVariable(EPOCH_DELTA_CDF_VAR_NAME, np.full_like(self.epoch, FIVE_MINUTES_IN_NANOSECONDS)), - DataProductVariable(PUI_COOLING_INDEX_CDF_VAR_NAME, nominal_values(self.cooling_index)), - DataProductVariable(PUI_COOLING_INDEX_UNCERTAINTY_CDF_VAR_NAME, std_devs(self.cooling_index)), - DataProductVariable(PUI_IONIZATION_RATE_CDF_VAR_NAME, nominal_values(self.ionization_rate)), - DataProductVariable(PUI_IONIZATION_RATE_UNCERTAINTY_CDF_VAR_NAME, std_devs(self.ionization_rate)), - DataProductVariable(PUI_CUTOFF_SPEED_CDF_VAR_NAME, nominal_values(self.cutoff_speed)), - DataProductVariable(PUI_CUTOFF_SPEED_UNCERTAINTY_CDF_VAR_NAME, std_devs(self.cutoff_speed)), - DataProductVariable(PUI_BACKGROUND_COUNT_RATE_CDF_VAR_NAME, nominal_values(self.background_rate)), - DataProductVariable(PUI_BACKGROUND_COUNT_RATE_UNCERTAINTY_CDF_VAR_NAME, std_devs(self.background_rate)), + DataProductVariable( + EPOCH_DELTA_CDF_VAR_NAME, + np.full_like(self.epoch, FIVE_MINUTES_IN_NANOSECONDS), + ), + DataProductVariable( + PUI_COOLING_INDEX_CDF_VAR_NAME, nominal_values(self.cooling_index) + ), + DataProductVariable( + PUI_COOLING_INDEX_UNCERTAINTY_CDF_VAR_NAME, std_devs(self.cooling_index) + ), + DataProductVariable( + PUI_IONIZATION_RATE_CDF_VAR_NAME, nominal_values(self.ionization_rate) + ), + DataProductVariable( + PUI_IONIZATION_RATE_UNCERTAINTY_CDF_VAR_NAME, + std_devs(self.ionization_rate), + ), + DataProductVariable( + PUI_CUTOFF_SPEED_CDF_VAR_NAME, nominal_values(self.cutoff_speed) + ), + DataProductVariable( + PUI_CUTOFF_SPEED_UNCERTAINTY_CDF_VAR_NAME, std_devs(self.cutoff_speed) + ), + DataProductVariable( + PUI_BACKGROUND_COUNT_RATE_CDF_VAR_NAME, + nominal_values(self.background_rate), + ), + DataProductVariable( + PUI_BACKGROUND_COUNT_RATE_UNCERTAINTY_CDF_VAR_NAME, + std_devs(self.background_rate), + ), DataProductVariable(PUI_DENSITY_CDF_VAR_NAME, nominal_values(self.density)), - DataProductVariable(PUI_DENSITY_UNCERTAINTY_CDF_VAR_NAME, std_devs(self.density)), - DataProductVariable(PUI_TEMPERATURE_CDF_VAR_NAME, nominal_values(self.temperature)), - DataProductVariable(PUI_TEMPERATURE_UNCERTAINTY_CDF_VAR_NAME, std_devs(self.temperature)), + DataProductVariable( + PUI_DENSITY_UNCERTAINTY_CDF_VAR_NAME, std_devs(self.density) + ), + DataProductVariable( + PUI_TEMPERATURE_CDF_VAR_NAME, nominal_values(self.temperature) + ), + DataProductVariable( + PUI_TEMPERATURE_UNCERTAINTY_CDF_VAR_NAME, std_devs(self.temperature) + ), DataProductVariable(SWAPI_QUALITY_FLAGS_CDF_VAR_NAME, self.quality_flags), ] diff --git a/imap_l3_processing/swapi/l3a/science/calculate_alpha_solar_wind_speed.py b/imap_l3_processing/swapi/l3a/science/calculate_alpha_solar_wind_speed.py deleted file mode 100644 index 426ea3ef2..000000000 --- a/imap_l3_processing/swapi/l3a/science/calculate_alpha_solar_wind_speed.py +++ /dev/null @@ -1,55 +0,0 @@ -import numpy as np -from uncertainties import umath - -from imap_l3_processing.constants import ALPHA_PARTICLE_CHARGE_COULOMBS, ALPHA_PARTICLE_MASS_KG, METERS_PER_KILOMETER -from imap_l3_processing.swapi.l3a.science.speed_calculation import get_peak_indices, interpolate_energy, \ - find_peak_center_of_mass_index, extract_coarse_sweep - - -def get_alpha_peak_indices(count_rates, energies) -> slice: - energies = np.asarray(energies) - assert np.all(energies[:-1] >= energies[1:]), "Energies must be decreasing" - proton_peak_index = get_peak_indices(count_rates, 0).start - - def find_start_of_alpha_particle_peak(): - last_count_rate = count_rates[proton_peak_index] - for i in reversed(range(proton_peak_index - 1)): - if count_rates[i] > last_count_rate: - return i - last_count_rate = count_rates[i] - - start_of_alpha_peak = find_start_of_alpha_particle_peak() - if start_of_alpha_peak is None: - raise Exception("Alpha peak not found") - indices = np.arange(len(count_rates)) - after_proton_peak = indices <= start_of_alpha_peak - before_4x_proton_energy = energies <= 4 * energies[proton_peak_index] - mask = after_proton_peak & before_4x_proton_energy - return get_peak_indices(count_rates, 2, mask) - - -def calculate_alpha_center_of_mass(coincidence_count_rates, energies): - alpha_particle_peak_slice = get_alpha_peak_indices(coincidence_count_rates, energies) - center_of_mass_index = find_peak_center_of_mass_index(alpha_particle_peak_slice, coincidence_count_rates, 0.001, 3) - energy_at_center_of_mass = interpolate_energy(center_of_mass_index, energies) - - return energy_at_center_of_mass - - -def calculate_sw_speed_alpha(energy): - return umath.sqrt(2 * energy * ALPHA_PARTICLE_CHARGE_COULOMBS / ALPHA_PARTICLE_MASS_KG) / METERS_PER_KILOMETER - - -def calculate_alpha_solar_wind_speed(coincidence_count_rates, energies): - average_coin_rates, energies = calculate_combined_sweeps(coincidence_count_rates, energies) - - energy_at_center_of_mass = calculate_alpha_center_of_mass(average_coin_rates, energies) - speed = calculate_sw_speed_alpha(energy_at_center_of_mass) - return speed - - -def calculate_combined_sweeps(coincidence_count_rates, energies): - energies = np.mean(extract_coarse_sweep(energies), axis=0) - coincidence_count_rates = extract_coarse_sweep(coincidence_count_rates) - average_coin_rates = np.sum(coincidence_count_rates, axis=0) / len(coincidence_count_rates) - return average_coin_rates, energies diff --git a/imap_l3_processing/swapi/l3a/science/calculate_alpha_solar_wind_temperature_and_density.py b/imap_l3_processing/swapi/l3a/science/calculate_alpha_solar_wind_temperature_and_density.py deleted file mode 100644 index c0e6476d9..000000000 --- a/imap_l3_processing/swapi/l3a/science/calculate_alpha_solar_wind_temperature_and_density.py +++ /dev/null @@ -1,114 +0,0 @@ -from dataclasses import dataclass -from pathlib import Path - -import numpy as np -import scipy -import uncertainties -from numpy import ndarray -from scipy.interpolate import LinearNDInterpolator -from scipy.special import erf -from uncertainties import correlated_values, ufloat -from uncertainties.unumpy import uarray, nominal_values, std_devs - -from imap_l3_processing.constants import BOLTZMANN_CONSTANT_JOULES_PER_KELVIN, METERS_PER_KILOMETER, \ - CENTIMETERS_PER_METER, ALPHA_PARTICLE_CHARGE_COULOMBS, ALPHA_PARTICLE_MASS_KG, SWAPI_EFFECTIVE_AREA_CM2 -from imap_l3_processing.swapi.l3a.science.calculate_alpha_solar_wind_speed import calculate_combined_sweeps, \ - get_alpha_peak_indices -from imap_l3_processing.swapi.quality_flags import SwapiL3Flags - - -class AlphaTemperatureDensityCalibrationTable: - def __init__(self, lookup_table_array: np.ndarray): - coords = lookup_table_array[:, [0, 1, 3]] - values = lookup_table_array[:, [2, 4]] - - self.interp = LinearNDInterpolator(coords, values) - - @classmethod - def from_file(cls, file_path: Path): - lookup_table = np.loadtxt(file_path) - return cls(lookup_table) - - @uncertainties.wrap - def lookup_temperature(self, sw_speed, fit_density, fit_temperature): - return self.interp(sw_speed, fit_density, fit_temperature)[1] - - @uncertainties.wrap - def lookup_density(self, sw_speed, fit_density, fit_temperature): - return self.interp(sw_speed, fit_density, fit_temperature)[0] - - -def alpha_count_rate_model(efficiency, ev_per_q, density_per_cm3, temperature, bulk_flow_speed_km_per_s): - density_per_m3 = density_per_cm3 * CENTIMETERS_PER_METER ** 3 - bulk_flow_speed_meters_per_s = bulk_flow_speed_km_per_s * METERS_PER_KILOMETER - energy = ev_per_q * ALPHA_PARTICLE_CHARGE_COULOMBS - k = BOLTZMANN_CONSTANT_JOULES_PER_KELVIN - a_eff_cm2 = efficiency * SWAPI_EFFECTIVE_AREA_CM2 - a_eff_m2 = a_eff_cm2 / CENTIMETERS_PER_METER ** 2 - - delta_e_over_e = 0.085 - delta_v_over_v = 1 / 2 * delta_e_over_e - delta_phi_degrees = 30 - - m = ALPHA_PARTICLE_MASS_KG - v_th = np.sqrt(2 * k * temperature / m) - beta = 1 / v_th ** 2 - v_e = np.sqrt(2 * energy / m) - result = (density_per_m3 * a_eff_m2 * (beta / np.pi) ** (3 / 2) * np.exp( - -beta * (v_e ** 2 + bulk_flow_speed_meters_per_s ** 2 - 2 * v_e * bulk_flow_speed_meters_per_s)) - * np.sqrt(np.pi / (beta * bulk_flow_speed_meters_per_s * v_e)) - * erf(np.sqrt(beta * bulk_flow_speed_meters_per_s * v_e) * np.radians(delta_phi_degrees / 2)) - * v_e ** 4 * delta_v_over_v * np.arcsin(v_th / v_e)) - - return result - - -def calculate_alpha_solar_wind_temperature_and_density_for_combined_sweeps( - table: AlphaTemperatureDensityCalibrationTable, - alpha_sw_speed: ufloat, - count_rates: uarray, - energies: ndarray, - efficiency: float, -): - average_count_rates, energies = calculate_combined_sweeps(count_rates, energies) - - alpha_particle_peak_slice = get_alpha_peak_indices(average_count_rates, energies) - - peak_energies = energies[alpha_particle_peak_slice] - peak_average_alpha_count_rates = average_count_rates[alpha_particle_peak_slice] - at_least_minimum = nominal_values(peak_average_alpha_count_rates) > 0 - filtered_peak_count_rates = peak_average_alpha_count_rates[at_least_minimum] - filtered_peak_energies = peak_energies[at_least_minimum] - - initial_parameter_guess = [0.15, 3.6e5] - - def model(ev_per_q, density, temperature): - return alpha_count_rate_model(efficiency, ev_per_q, density, temperature, nominal_values(alpha_sw_speed)) - - values, covariance = scipy.optimize.curve_fit(model, - filtered_peak_energies, - nominal_values(filtered_peak_count_rates), - sigma=std_devs(filtered_peak_count_rates), - absolute_sigma=True, - bounds=[[0, 0], [np.inf, np.inf]], - p0=initial_parameter_guess) - residual = abs(model(filtered_peak_energies, *values) - nominal_values(filtered_peak_count_rates)) - reduced_chisq = np.sum(np.square(residual / std_devs(filtered_peak_count_rates))) / ( - len(filtered_peak_energies) - 2) - bad_fit_flag = SwapiL3Flags.NONE - if reduced_chisq > 10: - bad_fit_flag = SwapiL3Flags.HI_CHI_SQ - pre_lut_density, pre_lut_temperature = correlated_values(values, covariance) - density = table.lookup_density(alpha_sw_speed, pre_lut_density, pre_lut_temperature) - temperature = table.lookup_temperature(alpha_sw_speed, pre_lut_density, pre_lut_temperature) - - return AlphaSolarWindTemperatureAndDensity(temperature, density, pre_lut_temperature, pre_lut_density, bad_fit_flag) - - -@dataclass -class AlphaSolarWindTemperatureAndDensity: - temperature: ufloat - density: ufloat - pre_lut_temperature: ufloat - pre_lut_density: ufloat - bad_fit_flag: int = SwapiL3Flags.NONE diff --git a/imap_l3_processing/swapi/l3a/science/calculate_pickup_ion.py b/imap_l3_processing/swapi/l3a/science/calculate_pickup_ion.py index 69630b720..f20ef224e 100644 --- a/imap_l3_processing/swapi/l3a/science/calculate_pickup_ion.py +++ b/imap_l3_processing/swapi/l3a/science/calculate_pickup_ion.py @@ -14,56 +14,100 @@ from uncertainties import ufloat from uncertainties.unumpy import uarray -from imap_l3_processing.constants import PROTON_MASS_KG, PROTON_CHARGE_COULOMBS, \ - HE_PUI_PARTICLE_MASS_KG, PUI_PARTICLE_CHARGE_COULOMBS, ONE_AU_IN_KM, \ - METERS_PER_KILOMETER, CENTIMETERS_PER_METER, ONE_SECOND_IN_NANOSECONDS, BOLTZMANN_CONSTANT_JOULES_PER_KELVIN -from imap_l3_processing.swapi.l3a.science.calculate_alpha_solar_wind_speed import calculate_combined_sweeps -from imap_l3_processing.swapi.l3a.science.calculate_proton_solar_wind_speed import calculate_sw_speed -from imap_l3_processing.swapi.l3a.science.density_of_neutral_helium_lookup_table import \ - DensityOfNeutralHeliumLookupTable +from imap_l3_processing.constants import ( + PROTON_MASS_KG, + PROTON_CHARGE_COULOMBS, + HE_PUI_PARTICLE_MASS_KG, + PUI_PARTICLE_CHARGE_COULOMBS, + ONE_AU_IN_KM, + METERS_PER_KILOMETER, + CENTIMETERS_PER_METER, + ONE_SECOND_IN_NANOSECONDS, + BOLTZMANN_CONSTANT_JOULES_PER_KELVIN, +) +from imap_l3_processing.swapi.constants import SWAPI_COARSE_SWEEP_BINS +from imap_l3_processing.swapi.l3a.utils import calculate_sw_speed +from imap_l3_processing.swapi.l3a.science.density_of_neutral_helium_lookup_table import ( + DensityOfNeutralHeliumLookupTable, +) from imap_l3_processing.swapi.l3a.science.inflow_vector import InflowVector -from imap_l3_processing.swapi.l3b.science.efficiency_calibration_table import EfficiencyCalibrationTable -from imap_l3_processing.swapi.l3b.science.geometric_factor_calibration_table import GeometricFactorCalibrationTable -from imap_l3_processing.swapi.l3b.science.instrument_response_lookup_table import InstrumentResponseLookupTable, \ - InstrumentResponseLookupTableCollection +from imap_l3_processing.swapi.l3b.science.efficiency_calibration_table import ( + EfficiencyCalibrationTable, +) +from imap_l3_processing.swapi.l3b.science.geometric_factor_calibration_table import ( + GeometricFactorCalibrationTable, +) +from imap_l3_processing.swapi.l3b.science.instrument_response_lookup_table import ( + InstrumentResponseLookupTable, + InstrumentResponseLookupTableCollection, +) from imap_l3_processing.swapi.quality_flags import SwapiL3Flags import numdifftools as ndt -def calculate_pickup_ion_values(instrument_response_lookup_table, geometric_factor_calibration_table, - energy: np.ndarray[float], count_rates: uarray, center_of_epoch: int, - sw_velocity_vector: ndarray, - density_of_neutral_helium_lookup_table: DensityOfNeutralHeliumLookupTable, - efficiency_table: EfficiencyCalibrationTable, hydrogen_inflow_vector: InflowVector, - helium_inflow_vector: InflowVector) -> FittingParameters: - ephemeris_time = spiceypy.unitim(center_of_epoch / ONE_SECOND_IN_NANOSECONDS, "TT", "ET") +def calculate_pickup_ion_values( + instrument_response_lookup_table, + geometric_factor_calibration_table, + energy: np.ndarray[float], + count_rates: uarray, + center_of_epoch: int, + sw_velocity_vector: ndarray, + density_of_neutral_helium_lookup_table: DensityOfNeutralHeliumLookupTable, + efficiency_table: EfficiencyCalibrationTable, + hydrogen_inflow_vector: InflowVector, + helium_inflow_vector: InflowVector, +) -> FittingParameters: + ephemeris_time = spiceypy.unitim( + center_of_epoch / ONE_SECOND_IN_NANOSECONDS, "TT", "ET" + ) sw_velocity = np.linalg.norm(sw_velocity_vector) energy_labels = range(62, 0, -1) - lower_energy_cutoff = 1.25 * calculate_pui_energy_cutoff(PROTON_MASS_KG, ephemeris_time, sw_velocity_vector, - hydrogen_inflow_vector) - upper_energy_cutoff = 1.2 * calculate_pui_energy_cutoff(HE_PUI_PARTICLE_MASS_KG, ephemeris_time, sw_velocity_vector, - helium_inflow_vector) + lower_energy_cutoff = 1.25 * calculate_pui_energy_cutoff( + PROTON_MASS_KG, ephemeris_time, sw_velocity_vector, hydrogen_inflow_vector + ) + upper_energy_cutoff = 1.2 * calculate_pui_energy_cutoff( + HE_PUI_PARTICLE_MASS_KG, + ephemeris_time, + sw_velocity_vector, + helium_inflow_vector, + ) sweep_count = len(count_rates) - average_count_rates, energies = calculate_combined_sweeps(count_rates, energy) - - extracted_energy_labels, extracted_energies, extracted_count_rates = extract_pui_energy_bins(energy_labels, - energies, - average_count_rates, - lower_energy_cutoff, - upper_energy_cutoff) - model_count_rate_calculator = ModelCountRateCalculator(instrument_response_lookup_table, - geometric_factor_calibration_table, sw_velocity_vector, - density_of_neutral_helium_lookup_table, efficiency_table, - helium_inflow_vector) + average_count_rates = np.mean(count_rates[:, SWAPI_COARSE_SWEEP_BINS], axis=0) + energies = np.mean(energy[:, SWAPI_COARSE_SWEEP_BINS], axis=0) + + extracted_energy_labels, extracted_energies, extracted_count_rates = ( + extract_pui_energy_bins( + energy_labels, + energies, + average_count_rates, + lower_energy_cutoff, + upper_energy_cutoff, + ) + ) + model_count_rate_calculator = ModelCountRateCalculator( + instrument_response_lookup_table, + geometric_factor_calibration_table, + sw_velocity_vector, + density_of_neutral_helium_lookup_table, + efficiency_table, + helium_inflow_vector, + ) indices = list(zip(extracted_energy_labels, extracted_energies)) - def make_parameters(cooling_index, ionization_rate, cutoff_speed, background_count_rate) -> Parameters: + def make_parameters( + cooling_index, ionization_rate, cutoff_speed, background_count_rate + ) -> Parameters: params = Parameters() - params.add('cooling_index', value=cooling_index, min=1.0, max=5.0) - params.add('ionization_rate', value=ionization_rate, min=0.6e-9, max=8.0e-7) - params.add('cutoff_speed', value=cutoff_speed, min=sw_velocity * .8, max=sw_velocity * 1.2) - params.add('background_count_rate', value=background_count_rate, min=0, max=0.2) + params.add("cooling_index", value=cooling_index, min=1.0, max=5.0) + params.add("ionization_rate", value=ionization_rate, min=0.6e-9, max=8.0e-7) + params.add( + "cutoff_speed", + value=cutoff_speed, + min=sw_velocity * 0.8, + max=sw_velocity * 1.2, + ) + params.add("background_count_rate", value=background_count_rate, min=0, max=0.2) return params params = make_parameters(1.50, 1e-7, sw_velocity, 0.1) @@ -73,35 +117,43 @@ def map_to_internal(value, param): def map_param_values_to_internal_values(ci, ir, cs, bcr): return [ - map_to_internal(ci, params['cooling_index']), - map_to_internal(ir, params['ionization_rate']), - map_to_internal(cs, params['cutoff_speed']), - map_to_internal(bcr, params['background_count_rate']), + map_to_internal(ci, params["cooling_index"]), + map_to_internal(ir, params["ionization_rate"]), + map_to_internal(cs, params["cutoff_speed"]), + map_to_internal(bcr, params["background_count_rate"]), ] - initial_simplex=np.array([ - map_param_values_to_internal_values(1.5, 1e-7, sw_velocity, 0.1), - map_param_values_to_internal_values(5.0, 1e-7, sw_velocity, 0.1), - map_param_values_to_internal_values(1.5, 2.1e-7, sw_velocity, 0.1), - map_param_values_to_internal_values(1.5, 1e-7, sw_velocity * 1.2, 0.1), - map_param_values_to_internal_values(1.5, 1e-7, sw_velocity, 0.2), - ]) + initial_simplex = np.array( + [ + map_param_values_to_internal_values(1.5, 1e-7, sw_velocity, 0.1), + map_param_values_to_internal_values(5.0, 1e-7, sw_velocity, 0.1), + map_param_values_to_internal_values(1.5, 2.1e-7, sw_velocity, 0.1), + map_param_values_to_internal_values(1.5, 1e-7, sw_velocity * 1.2, 0.1), + map_param_values_to_internal_values(1.5, 1e-7, sw_velocity, 0.2), + ] + ) minimizer = lmfit.Minimizer( - calc_chi_squared_lm_fit, params, - fcn_args=(extracted_count_rates, indices, model_count_rate_calculator, ephemeris_time, - sweep_count), - scale_covar=False, - options=dict(initial_simplex=initial_simplex), - ) + calc_chi_squared_lm_fit, + params, + fcn_args=( + extracted_count_rates, + indices, + model_count_rate_calculator, + ephemeris_time, + sweep_count, + ), + scale_covar=False, + options=dict(initial_simplex=initial_simplex), + ) result = minimizer.minimize(method="nelder") flags = SwapiL3Flags.NONE if result.redchi > 10: - flags |= SwapiL3Flags.HI_CHI_SQ + flags |= SwapiL3Flags.BAD_FIT param_vals = result.uvars if result.uvars is None: flags |= SwapiL3Flags.PUI_FIT_MISSING_UNCERTAINTY - Hfun = ndt.Hessian(minimizer.penalty, step=1.e-4) + Hfun = ndt.Hessian(minimizer.penalty, step=1.0e-4) try: hessian_ndt = Hfun(result.x) cov_x = inv(hessian_ndt) * 2.0 @@ -111,77 +163,132 @@ def map_param_values_to_internal_values(ci, ir, cs, bcr): nominal_value_by_param_name = result.params.valuesdict() for var_name, uncertainty in zip(result.var_names, uncertainties): - param_vals[var_name] = ufloat(nominal_value_by_param_name[var_name], uncertainty) + param_vals[var_name] = ufloat( + nominal_value_by_param_name[var_name], uncertainty + ) except: - param_vals = {k: ufloat(v, np.nan) for k, v in result.params.valuesdict().items()} - - - return FittingParameters(param_vals["cooling_index"], param_vals["ionization_rate"], param_vals["cutoff_speed"], - param_vals["background_count_rate"], flags) - - -def calculate_helium_pui_density(epoch: int, - sw_velocity_vector: ndarray, - density_of_neutral_helium_lookup_table: DensityOfNeutralHeliumLookupTable, - fitting_params: FittingParameters, helium_inflow_vector: InflowVector) -> float: + param_vals = { + k: ufloat(v, np.nan) for k, v in result.params.valuesdict().items() + } + + return FittingParameters( + param_vals["cooling_index"], + param_vals["ionization_rate"], + param_vals["cutoff_speed"], + param_vals["background_count_rate"], + flags, + ) + + +def calculate_helium_pui_density( + epoch: int, + sw_velocity_vector: ndarray, + density_of_neutral_helium_lookup_table: DensityOfNeutralHeliumLookupTable, + fitting_params: FittingParameters, + helium_inflow_vector: InflowVector, +) -> float: @uncertainties.wrap - def calculate(cooling_index: float, - ionization_rate: float, - cutoff_speed: float, - background_count_rate: float): + def calculate( + cooling_index: float, + ionization_rate: float, + cutoff_speed: float, + background_count_rate: float, + ): fitting_params = FittingParameters( cooling_index, ionization_rate, cutoff_speed, background_count_rate ) ephemeris_time = spiceypy.unitim(epoch / ONE_SECOND_IN_NANOSECONDS, "TT", "ET") - model = build_forward_model(fitting_params, ephemeris_time, sw_velocity_vector, - density_of_neutral_helium_lookup_table, helium_inflow_vector) - lower_discontinuity = (density_of_neutral_helium_lookup_table.get_minimum_distance() / ( - model.distance_km / ONE_AU_IN_KM)) ** ( - 1 / fitting_params.cooling_index) * fitting_params.cutoff_speed + model = build_forward_model( + fitting_params, + ephemeris_time, + sw_velocity_vector, + density_of_neutral_helium_lookup_table, + helium_inflow_vector, + ) + lower_discontinuity = ( + density_of_neutral_helium_lookup_table.get_minimum_distance() + / (model.distance_km / ONE_AU_IN_KM) + ) ** (1 / fitting_params.cooling_index) * fitting_params.cutoff_speed points = (0, lower_discontinuity, fitting_params.cutoff_speed) - results = scipy.integrate.quad(lambda v: model.f(v) * v * v, 0, fitting_params.cutoff_speed, limit=100, - points=points) - return 4 * np.pi * results[0] / (CENTIMETERS_PER_METER * METERS_PER_KILOMETER) ** 3 - - return calculate(fitting_params.cooling_index, - fitting_params.ionization_rate, - fitting_params.cutoff_speed, - fitting_params.background_count_rate) - + results = scipy.integrate.quad( + lambda v: model.f(v) * v * v, + 0, + fitting_params.cutoff_speed, + limit=100, + points=points, + ) + return ( + 4 * np.pi * results[0] / (CENTIMETERS_PER_METER * METERS_PER_KILOMETER) ** 3 + ) -def calculate_helium_pui_temperature(epoch: int, - sw_velocity_vector: ndarray, - density_of_neutral_helium_lookup_table: DensityOfNeutralHeliumLookupTable, - fitting_params: FittingParameters, helium_inflow_vector: InflowVector) -> float: + return calculate( + fitting_params.cooling_index, + fitting_params.ionization_rate, + fitting_params.cutoff_speed, + fitting_params.background_count_rate, + ) + + +def calculate_helium_pui_temperature( + epoch: int, + sw_velocity_vector: ndarray, + density_of_neutral_helium_lookup_table: DensityOfNeutralHeliumLookupTable, + fitting_params: FittingParameters, + helium_inflow_vector: InflowVector, +) -> float: @uncertainties.wrap - def calculate(cooling_index: float, - ionization_rate: float, - cutoff_speed: float, - background_count_rate: float): + def calculate( + cooling_index: float, + ionization_rate: float, + cutoff_speed: float, + background_count_rate: float, + ): fitting_params = FittingParameters( cooling_index, ionization_rate, cutoff_speed, background_count_rate ) ephemeris_time = spiceypy.unitim(epoch / ONE_SECOND_IN_NANOSECONDS, "TT", "ET") - model = build_forward_model(fitting_params, ephemeris_time, sw_velocity_vector, - density_of_neutral_helium_lookup_table, helium_inflow_vector) - lower_discontinuity = (density_of_neutral_helium_lookup_table.get_minimum_distance() / ( - model.distance_km / ONE_AU_IN_KM)) ** ( - 1 / fitting_params.cooling_index) * fitting_params.cutoff_speed + model = build_forward_model( + fitting_params, + ephemeris_time, + sw_velocity_vector, + density_of_neutral_helium_lookup_table, + helium_inflow_vector, + ) + lower_discontinuity = ( + density_of_neutral_helium_lookup_table.get_minimum_distance() + / (model.distance_km / ONE_AU_IN_KM) + ) ** (1 / fitting_params.cooling_index) * fitting_params.cutoff_speed points = (0, lower_discontinuity, fitting_params.cutoff_speed) - numerator = scipy.integrate.quad(lambda v: model.f(v) * v ** 4, 0, fitting_params.cutoff_speed, points=points, - limit=100) - denominator = scipy.integrate.quad(lambda v: model.f(v) * v ** 2, 0, fitting_params.cutoff_speed, points=points, - limit=100) - return HE_PUI_PARTICLE_MASS_KG / (3 * BOLTZMANN_CONSTANT_JOULES_PER_KELVIN) * \ - numerator[0] / denominator[0] * \ - METERS_PER_KILOMETER ** 2 + numerator = scipy.integrate.quad( + lambda v: model.f(v) * v**4, + 0, + fitting_params.cutoff_speed, + points=points, + limit=100, + ) + denominator = scipy.integrate.quad( + lambda v: model.f(v) * v**2, + 0, + fitting_params.cutoff_speed, + points=points, + limit=100, + ) + return ( + HE_PUI_PARTICLE_MASS_KG + / (3 * BOLTZMANN_CONSTANT_JOULES_PER_KELVIN) + * numerator[0] + / denominator[0] + * METERS_PER_KILOMETER**2 + ) - return calculate(fitting_params.cooling_index, - fitting_params.ionization_rate, - fitting_params.cutoff_speed, - fitting_params.background_count_rate) + return calculate( + fitting_params.cooling_index, + fitting_params.ionization_rate, + fitting_params.cutoff_speed, + fitting_params.background_count_rate, + ) @dataclass @@ -205,34 +312,53 @@ class ForwardModel: def f(self, pickup_ion_speed): w = pickup_ion_speed / self.fitting_params.cutoff_speed radius_in_au = self.distance_km / ONE_AU_IN_KM - neutral_helium_density_per_cm3 = self.density_of_neutral_helium_lookup_table.density( - self.psi, radius_in_au * w ** self.fitting_params.cooling_index) - neutral_helium_density_per_km3 = neutral_helium_density_per_cm3 * ( - CENTIMETERS_PER_METER * METERS_PER_KILOMETER) ** 3 + neutral_helium_density_per_cm3 = ( + self.density_of_neutral_helium_lookup_table.density( + self.psi, radius_in_au * w**self.fitting_params.cooling_index + ) + ) + neutral_helium_density_per_km3 = ( + neutral_helium_density_per_cm3 + * (CENTIMETERS_PER_METER * METERS_PER_KILOMETER) ** 3 + ) term1 = self.fitting_params.cooling_index / (4 * np.pi) - term2 = (self.fitting_params.ionization_rate * ONE_AU_IN_KM ** 2) / ( - self.distance_km * self.solar_wind_speed_inertial_frame * self.fitting_params.cutoff_speed ** 3) + term2 = (self.fitting_params.ionization_rate * ONE_AU_IN_KM**2) / ( + self.distance_km + * self.solar_wind_speed_inertial_frame + * self.fitting_params.cutoff_speed**3 + ) term3 = w ** (self.fitting_params.cooling_index - 3) term4 = neutral_helium_density_per_km3 term5 = np.heaviside(1 - w, 0.5) return term1 * term2 * term3 * term4 * term5 -def build_forward_model(fitting_params: FittingParameters, ephemeris_time: float, solar_wind_vector: ndarray, - density_of_neutral_helium_lookup_table: DensityOfNeutralHeliumLookupTable, - helium_inflow_vector: InflowVector) -> ForwardModel: - solar_wind_vector_eclipj2000_frame = convert_velocity_relative_to_imap(solar_wind_vector, - ephemeris_time, - "IMAP_DPS", - "ECLIPJ2000") +def build_forward_model( + fitting_params: FittingParameters, + ephemeris_time: float, + solar_wind_vector: ndarray, + density_of_neutral_helium_lookup_table: DensityOfNeutralHeliumLookupTable, + helium_inflow_vector: InflowVector, +) -> ForwardModel: + solar_wind_vector_eclipj2000_frame = convert_velocity_relative_to_imap( + solar_wind_vector, ephemeris_time, "IMAP_DPS", "ECLIPJ2000" + ) imap_position_eclip2000_frame_state = spiceypy.spkezr( - "IMAP", ephemeris_time, "ECLIPJ2000", "NONE", "SUN")[0][0:3] - distance_km, longitude, latitude = spiceypy.reclat(imap_position_eclip2000_frame_state) + "IMAP", ephemeris_time, "ECLIPJ2000", "NONE", "SUN" + )[0][0:3] + distance_km, longitude, latitude = spiceypy.reclat( + imap_position_eclip2000_frame_state + ) psi = np.rad2deg(longitude) - helium_inflow_vector.longitude_deg_eclipj2000 - return ForwardModel(fitting_params, ephemeris_time, - np.linalg.norm(solar_wind_vector_eclipj2000_frame), - density_of_neutral_helium_lookup_table, distance_km, psi) + return ForwardModel( + fitting_params, + ephemeris_time, + np.linalg.norm(solar_wind_vector_eclipj2000_frame), + density_of_neutral_helium_lookup_table, + distance_km, + psi, + ) @dataclass @@ -245,56 +371,97 @@ class ModelCountRateCalculator: helium_inflow_vector: InflowVector _speed_grid_cache: dict = field(default_factory=dict) - def get_speed_grid(self, response_lookup_table: InstrumentResponseLookupTable, ephemeris_time: float): + def get_speed_grid( + self, + response_lookup_table: InstrumentResponseLookupTable, + ephemeris_time: float, + ): key = (id(response_lookup_table), ephemeris_time) cached = self._speed_grid_cache.get(key) if cached is not None: return cached - speed_inst = calculate_sw_speed(HE_PUI_PARTICLE_MASS_KG, PUI_PARTICLE_CHARGE_COULOMBS, - response_lookup_table.energy) + speed_inst = calculate_sw_speed( + HE_PUI_PARTICLE_MASS_KG, + PUI_PARTICLE_CHARGE_COULOMBS, + response_lookup_table.energy, + ) - pui_vector_instrument_frame = calculate_pui_velocity_vector(speed_inst, response_lookup_table.elevation, - response_lookup_table.azimuth) - pui_vector_eclipj2000_frame = convert_velocity_relative_to_imap(pui_vector_instrument_frame, - ephemeris_time, - "IMAP_SWAPI", "ECLIPJ2000") + pui_vector_instrument_frame = calculate_pui_velocity_vector( + speed_inst, response_lookup_table.elevation, response_lookup_table.azimuth + ) + pui_vector_eclipj2000_frame = convert_velocity_relative_to_imap( + pui_vector_instrument_frame, ephemeris_time, "IMAP_SWAPI", "ECLIPJ2000" + ) - solar_wind_vector_eclipj2000_frame = convert_velocity_relative_to_imap(self.solar_wind_vector, - ephemeris_time, - "IMAP_DPS", - "ECLIPJ2000") + solar_wind_vector_eclipj2000_frame = convert_velocity_relative_to_imap( + self.solar_wind_vector, ephemeris_time, "IMAP_DPS", "ECLIPJ2000" + ) - pui_vector_solar_wind_frame = pui_vector_eclipj2000_frame - solar_wind_vector_eclipj2000_frame + pui_vector_solar_wind_frame = ( + pui_vector_eclipj2000_frame - solar_wind_vector_eclipj2000_frame + ) speed = np.linalg.norm(pui_vector_solar_wind_frame, axis=-1) self._speed_grid_cache[key] = speed return speed - def model_count_rate(self, indices_and_energy_centers: list[tuple[int, float]], - fitting_params: FittingParameters, ephemeris_time: float) -> np.ndarray: - forward_model = build_forward_model(fitting_params, ephemeris_time, self.solar_wind_vector, - self.density_of_neutral_helium_lookup_table, - self.helium_inflow_vector) + def model_count_rate( + self, + indices_and_energy_centers: list[tuple[int, float]], + fitting_params: FittingParameters, + ephemeris_time: float, + ) -> np.ndarray: + forward_model = build_forward_model( + fitting_params, + ephemeris_time, + self.solar_wind_vector, + self.density_of_neutral_helium_lookup_table, + self.helium_inflow_vector, + ) model_count_rates = [] for energy_bin_index, energy_bin_center in indices_and_energy_centers: model_count_rates.append( - self.model_one_count_rate(energy_bin_index, energy_bin_center, forward_model) + self.model_one_count_rate( + energy_bin_index, energy_bin_center, forward_model + ) ) return np.array(model_count_rates) - def model_one_count_rate(self, energy_bin_index, energy_bin_center, forward_model) -> float: - response_lookup_table = self.response_lookup_table_collection.get_table_for_energy_bin(energy_bin_index) - speed_grid = self.get_speed_grid(response_lookup_table, forward_model.ephemeris_time) - integral = model_count_rate_integral(response_lookup_table, forward_model, speed_grid) - efficiency = self.efficiency_table.get_alpha_efficiency_for(forward_model.ephemeris_time) - geometric_factor = self.geometric_table.lookup_geometric_factor(energy_bin_center) - return efficiency * (geometric_factor / 2) * integral + forward_model.fitting_params.background_count_rate + def model_one_count_rate( + self, energy_bin_index, energy_bin_center, forward_model + ) -> float: + response_lookup_table = ( + self.response_lookup_table_collection.get_table_for_energy_bin( + energy_bin_index + ) + ) + speed_grid = self.get_speed_grid( + response_lookup_table, forward_model.ephemeris_time + ) + integral = model_count_rate_integral( + response_lookup_table, forward_model, speed_grid + ) + efficiency = self.efficiency_table.get_alpha_efficiency_for( + forward_model.ephemeris_time + ) + geometric_factor = self.geometric_table.lookup_geometric_factor( + energy_bin_center + ) + return ( + efficiency * (geometric_factor / 2) * integral + + forward_model.fitting_params.background_count_rate + ) -def calc_chi_squared_lm_fit(params: Parameters, observed_count_rates: np.ndarray, - indices_and_energy_centers: list[tuple[int, float]], calculator: ModelCountRateCalculator, - ephemeris_time: float, sweep_count: int): +def calc_chi_squared_lm_fit( + params: Parameters, + observed_count_rates: np.ndarray, + indices_and_energy_centers: list[tuple[int, float]], + calculator: ModelCountRateCalculator, + ephemeris_time: float, + sweep_count: int, +): parvals = params.valuesdict() cooling_index = parvals["cooling_index"] @@ -302,18 +469,31 @@ def calc_chi_squared_lm_fit(params: Parameters, observed_count_rates: np.ndarray cutoff_speed = parvals["cutoff_speed"] background_count_rate = parvals["background_count_rate"] - fit_params = FittingParameters(cooling_index, ionization_rate, cutoff_speed, background_count_rate) - modeled_rates = calculator.model_count_rate(indices_and_energy_centers, fit_params, ephemeris_time) + fit_params = FittingParameters( + cooling_index, ionization_rate, cutoff_speed, background_count_rate + ) + modeled_rates = calculator.model_count_rate( + indices_and_energy_centers, fit_params, ephemeris_time + ) modeled_counts = modeled_rates * sweep_count * swapi_l2.SWAPI_LIVETIME observed_counts = observed_count_rates * sweep_count * swapi_l2.SWAPI_LIVETIME - result = np.sqrt(2 * (modeled_counts - observed_counts + observed_counts * np.log( - observed_counts / modeled_counts))) + result = np.sqrt( + 2 + * ( + modeled_counts + - observed_counts + + observed_counts * np.log(observed_counts / modeled_counts) + ) + ) return result -def model_count_rate_integral(response_lookup_table: InstrumentResponseLookupTable, forward_model: ForwardModel, - speed_grid): +def model_count_rate_integral( + response_lookup_table: InstrumentResponseLookupTable, + forward_model: ForwardModel, + speed_grid, +): count_rates = forward_model.f(speed_grid) integrals = response_lookup_table.integral_factor * count_rates @@ -321,8 +501,9 @@ def model_count_rate_integral(response_lookup_table: InstrumentResponseLookupTab return np.sum(integrals) -def convert_velocity_to_reference_frame(velocity: ndarray, ephemeris_time: float, from_frame: str, - to_frame: str) -> ndarray: +def convert_velocity_to_reference_frame( + velocity: ndarray, ephemeris_time: float, from_frame: str, to_frame: str +) -> ndarray: rotation_matrix = spiceypy.sxform(from_frame, to_frame, ephemeris_time) state = velocity[..., np.newaxis] @@ -332,14 +513,19 @@ def convert_velocity_to_reference_frame(velocity: ndarray, ephemeris_time: float def convert_velocity_relative_to_imap(velocity, ephemeris_time, from_frame, to_frame): - velocity_in_target_frame_relative_to_imap = convert_velocity_to_reference_frame(velocity, ephemeris_time, - from_frame, to_frame) - imap_velocity = spiceypy.spkezr("IMAP", ephemeris_time, to_frame, "NONE", "SUN")[0][3:6] + velocity_in_target_frame_relative_to_imap = convert_velocity_to_reference_frame( + velocity, ephemeris_time, from_frame, to_frame + ) + imap_velocity = spiceypy.spkezr("IMAP", ephemeris_time, to_frame, "NONE", "SUN")[0][ + 3:6 + ] return velocity_in_target_frame_relative_to_imap + imap_velocity -def calculate_velocity_vector(sw_speed: ndarray, elevation: ndarray, azimuth: ndarray) -> np.ndarray: +def calculate_velocity_vector( + sw_speed: ndarray, elevation: ndarray, azimuth: ndarray +) -> np.ndarray: elevation_radians = np.deg2rad(elevation) azimuth_radians = np.deg2rad(azimuth) z = sw_speed * np.sin(elevation_radians) @@ -349,59 +535,83 @@ def calculate_velocity_vector(sw_speed: ndarray, elevation: ndarray, azimuth: nd return np.transpose([x, y, z]) -def calculate_pui_velocity_vector(speed: ndarray, elevation: ndarray, azimuth: ndarray) -> np.ndarray: +def calculate_pui_velocity_vector( + speed: ndarray, elevation: ndarray, azimuth: ndarray +) -> np.ndarray: y_axis_azimuth = 90 return calculate_velocity_vector(-speed, elevation, y_axis_azimuth - azimuth) -def calculate_pui_energy_cutoff(particle_mass: float, ephemeris_time: float, sw_velocity_in_imap_frame, - particle_inflow_vector: InflowVector): - imap_velocity = spiceypy.spkezr("IMAP", ephemeris_time, "ECLIPJ2000", "NONE", "SUN")[0][ - 3:6] +def calculate_pui_energy_cutoff( + particle_mass: float, + ephemeris_time: float, + sw_velocity_in_imap_frame, + particle_inflow_vector: InflowVector, +): + imap_velocity = spiceypy.spkezr( + "IMAP", ephemeris_time, "ECLIPJ2000", "NONE", "SUN" + )[0][3:6] solar_wind_velocity = convert_velocity_relative_to_imap( - sw_velocity_in_imap_frame, ephemeris_time, "IMAP_DPS", "ECLIPJ2000") - particle_velocity = spiceypy.latrec(-particle_inflow_vector.speed_km_per_s, - particle_inflow_vector.longitude_deg_eclipj2000, - particle_inflow_vector.latitude_deg_eclipj2000) - - particle_velocity_cutoff_vector = solar_wind_velocity - particle_velocity - imap_velocity + sw_velocity_in_imap_frame, ephemeris_time, "IMAP_DPS", "ECLIPJ2000" + ) + particle_velocity = spiceypy.latrec( + -particle_inflow_vector.speed_km_per_s, + particle_inflow_vector.longitude_deg_eclipj2000, + particle_inflow_vector.latitude_deg_eclipj2000, + ) + + particle_velocity_cutoff_vector = ( + solar_wind_velocity - particle_velocity - imap_velocity + ) particle_speed_cutoff = np.linalg.norm(particle_velocity_cutoff_vector) - return (0.5 * (particle_mass / PROTON_CHARGE_COULOMBS) * (2 * particle_speed_cutoff * METERS_PER_KILOMETER) ** 2) - - -def extract_pui_energy_bins(energy_bin_labels, energies, observed_count_rates, lower_energy_cutoff, - upper_energy_cutoff): + return ( + 0.5 + * (particle_mass / PROTON_CHARGE_COULOMBS) + * (2 * particle_speed_cutoff * METERS_PER_KILOMETER) ** 2 + ) + + +def extract_pui_energy_bins( + energy_bin_labels, + energies, + observed_count_rates, + lower_energy_cutoff, + upper_energy_cutoff, +): extracted_energy_bins = [] count_rates = [] extracted_energy_bin_labels = [] - for label, energy, count_rate in zip(energy_bin_labels, energies, observed_count_rates): - if energy > lower_energy_cutoff and energy < upper_energy_cutoff and count_rate > 0: + for label, energy, count_rate in zip( + energy_bin_labels, energies, observed_count_rates + ): + if ( + energy > lower_energy_cutoff + and energy < upper_energy_cutoff + and count_rate > 0 + ): extracted_energy_bins.append(energy) count_rates.append(count_rate) extracted_energy_bin_labels.append(label) - return np.array(extracted_energy_bin_labels), np.array(extracted_energy_bins), np.array(count_rates) + return ( + np.array(extracted_energy_bin_labels), + np.array(extracted_energy_bins), + np.array(count_rates), + ) -def calculate_solar_wind_velocity_vector(speeds: ndarray, deflection_angle: ndarray, clock_angle: ndarray) -> ndarray: - elevation_angle = 90 - deflection_angle - return calculate_velocity_vector(-speeds, elevation_angle, clock_angle) - - -def calculate_ten_minute_velocities(speeds: ndarray, deflection_angle: ndarray, clock_angle: ndarray, - quality_flags: list[SwapiL3Flags]) -> (ndarray, ndarray): - velocity_vector = calculate_solar_wind_velocity_vector(speeds, deflection_angle, clock_angle) - left_slice = 0 +def calculate_ten_minute_velocities( + velocity_vectors_dps: ndarray, + quality_flags: list[SwapiL3Flags], +) -> (ndarray, ndarray): chunked_velocities = [] chunked_quality_flags = [] - while left_slice < len(velocity_vector): + for left_slice in range(0, len(velocity_vectors_dps), 10): ten_min_slice = slice(left_slice, left_slice + 10) - ten_min_quality_flag = np.bitwise_or.reduce(quality_flags[ten_min_slice]) - - chunked_velocities.append(np.mean(velocity_vector[ten_min_slice], axis=0)) - chunked_quality_flags.append(ten_min_quality_flag) - - left_slice += 10 + chunked_velocities.append( + np.mean(velocity_vectors_dps[ten_min_slice], axis=0) + ) + chunked_quality_flags.append(np.bitwise_or.reduce(quality_flags[ten_min_slice])) return np.array(chunked_velocities), np.array(chunked_quality_flags) diff --git a/imap_l3_processing/swapi/l3a/science/calculate_proton_solar_wind_clock_and_deflection_angles.py b/imap_l3_processing/swapi/l3a/science/calculate_proton_solar_wind_clock_and_deflection_angles.py deleted file mode 100644 index b515acbd6..000000000 --- a/imap_l3_processing/swapi/l3a/science/calculate_proton_solar_wind_clock_and_deflection_angles.py +++ /dev/null @@ -1,46 +0,0 @@ -import numpy as np -import uncertainties -from scipy.interpolate import LinearNDInterpolator -from uncertainties import ufloat - -from imap_l3_processing.swapi.l3a.science.calculate_proton_solar_wind_speed import estimate_deflection_and_clock_angles - - -class ClockAngleCalibrationTable: - def __init__(self, calibration_table: np.ndarray): - coords = calibration_table[:, 0:2] - values = calibration_table[:, 2:4] - self.interp = LinearNDInterpolator(coords, values) - - @uncertainties.wrap - def lookup_clock_offset(self, sw_speed: float, a_over_b: float): - return self.interp(sw_speed, a_over_b)[1] - - @uncertainties.wrap - def lookup_flow_deflection(self, sw_speed: float, a_over_b: float): - return self.interp(sw_speed, a_over_b)[0] - - @classmethod - def from_file(cls, file): - data = np.loadtxt(file) - return cls(data) - - -def calculate_clock_angle(lookup_table: ClockAngleCalibrationTable, sw_speed, a, phi, b): - a_over_b = a / b - phi_offset = lookup_table.lookup_clock_offset(sw_speed, a_over_b) - - if np.isnan(phi_offset.nominal_value): - _, clock_angle = estimate_deflection_and_clock_angles(sw_speed.nominal_value) - return clock_angle - else: - return (phi - phi_offset) % 360 - - -def calculate_deflection_angle(lookup_table, sw_speed, a, phi, b): - a_over_b = a / b - deflection_angle = lookup_table.lookup_flow_deflection(sw_speed, a_over_b) - - if np.isnan(deflection_angle.nominal_value): - return ufloat(5, 45) - return deflection_angle diff --git a/imap_l3_processing/swapi/l3a/science/calculate_proton_solar_wind_speed.py b/imap_l3_processing/swapi/l3a/science/calculate_proton_solar_wind_speed.py deleted file mode 100644 index 536da6bf1..000000000 --- a/imap_l3_processing/swapi/l3a/science/calculate_proton_solar_wind_speed.py +++ /dev/null @@ -1,125 +0,0 @@ -import numpy as np -import scipy -import spiceypy -import uncertainties -from uncertainties import correlated_values, unumpy, umath, wrap -from uncertainties.unumpy import uarray, nominal_values, std_devs - -from imap_l3_processing.constants import PROTON_CHARGE_COULOMBS, PROTON_MASS_KG, METERS_PER_KILOMETER, \ - ONE_SECOND_IN_NANOSECONDS -from imap_l3_processing.swapi.l3a.science.speed_calculation import get_peak_indices, find_peak_center_of_mass_index, \ - interpolate_energy, extract_coarse_sweep - - -def sine_fit_function(spin_phase_angle, a, phi, b): - return a * np.sin(np.deg2rad(phi - spin_phase_angle)) + b - - -def fit_energy_per_charge_peak_variations(centers_of_mass, spin_phase_angles): - nominal_centers_of_mass = nominal_values(centers_of_mass) - min_mass_energy = np.min(nominal_centers_of_mass) - max_mass_energy = np.max(nominal_centers_of_mass) - peak_angle = nominal_values(spin_phase_angles[np.argmax(centers_of_mass)]) - - initial_parameter_guess = [(max_mass_energy - min_mass_energy) / 2, peak_angle + 90, - np.mean(nominal_centers_of_mass)] - - nominal_spin_phase_angles = nominal_values(spin_phase_angles) - - (a, phi, b), pcov = scipy.optimize.curve_fit( - sine_fit_function, nominal_spin_phase_angles, nominal_centers_of_mass, - sigma=std_devs(centers_of_mass), bounds=([0, -np.inf, 0], [np.inf, np.inf, np.inf]), - absolute_sigma=True, - p0=initial_parameter_guess) - - residual = abs(sine_fit_function(np.array(nominal_spin_phase_angles), a, phi, b) - nominal_centers_of_mass) - reduced_chisq = np.sum(np.square(residual / std_devs(centers_of_mass))) / (len(spin_phase_angles) - 3) - - phi = np.mod(phi, 360) - - return correlated_values((a, phi, b), pcov), reduced_chisq - - -def get_proton_peak_indices(count_rates): - return get_peak_indices(count_rates, 4) - - -def interpolate_angle(center_of_mass_index, spin_angles): - spin_angle = np.interp(center_of_mass_index, np.arange(len(spin_angles)), np.unwrap(spin_angles, period=360)) - return np.mod(spin_angle, 360) - - -def calculate_proton_centers_of_mass(coincidence_count_rates, energies, epoch): - energies_at_center_of_mass = [] - energies_at_center_of_mass_uncertainties = [] - - spin_angles_at_center_of_mass = [] - for i in range(len(epoch)): - rates = coincidence_count_rates[i] - peak_slice = get_proton_peak_indices(rates) - center_of_mass_index = find_peak_center_of_mass_index(peak_slice, rates, 13, 4) - energy_at_center_of_mass = interpolate_energy(center_of_mass_index, energies[i]) - - measurement_interval = 1 / 6 * ONE_SECOND_IN_NANOSECONDS - index_into_full_sweep = (center_of_mass_index + 1) - time_at_center_of_mass = epoch[i] + measurement_interval * index_into_full_sweep + measurement_interval / 2 - spin_angle = get_angle(time_at_center_of_mass) - energies_at_center_of_mass.append(energy_at_center_of_mass.nominal_value) - energies_at_center_of_mass_uncertainties.append(energy_at_center_of_mass.std_dev) - spin_angles_at_center_of_mass.append(spin_angle) - - return uarray(energies_at_center_of_mass, energies_at_center_of_mass_uncertainties), spin_angles_at_center_of_mass - - -def get_spin_angle_from_swapi_axis_in_despun_frame(instrument_axis: np.ndarray): - x, y, _ = instrument_axis - return np.mod(np.rad2deg(np.atan2(-1 * x, y)), 360) - - -@wrap -def get_angle(epoch) -> float: - rotation_matrix = spiceypy.pxform("IMAP_SWAPI", "IMAP_DPS", - spiceypy.unitim(epoch / ONE_SECOND_IN_NANOSECONDS, "TT", "ET")) - swapi_instrument_axis_in_despun_imap_frame = rotation_matrix @ np.array([0, 0, -1]) - return get_spin_angle_from_swapi_axis_in_despun_frame(swapi_instrument_axis_in_despun_imap_frame) - - -def calculate_sw_speed(particle_mass, particle_charge, energy): - if np.size(energy) == 0: - return np.array([]) - dimensions = np.asanyarray(energy).ndim - if dimensions > 0: - if isinstance(np.ravel(energy)[0], uncertainties.UFloat): - return unumpy.sqrt(2 * energy * particle_charge / particle_mass) / METERS_PER_KILOMETER - return np.sqrt(2 * energy * particle_charge / particle_mass) / METERS_PER_KILOMETER - else: - return umath.sqrt(2 * energy * particle_charge / particle_mass) / METERS_PER_KILOMETER - - -def calculate_sw_speed_h_plus(energy): - return calculate_sw_speed(PROTON_MASS_KG, PROTON_CHARGE_COULOMBS, energy) - - -def calculate_proton_solar_wind_speed(coincidence_count_rates, energies, epoch): - energies = extract_coarse_sweep(energies) - coincidence_count_rates = extract_coarse_sweep(coincidence_count_rates) - - energies_at_center_of_mass, spin_angles_at_center_of_mass = calculate_proton_centers_of_mass( - coincidence_count_rates, energies, epoch) - - (a, phi, b), chi_sq = fit_energy_per_charge_peak_variations(energies_at_center_of_mass, - spin_angles_at_center_of_mass) - - proton_sw_speed = calculate_sw_speed_h_plus(b) - return proton_sw_speed, a, phi, b, chi_sq - - -def estimate_deflection_and_clock_angles(speed) -> tuple[float, float]: - orbital_velocity = 29.78 - spin_axis_offset = 4 - raw_deflection = np.rad2deg(np.arcsin(orbital_velocity / speed)) - spin_axis_offset - - if raw_deflection > 0: - return raw_deflection, 270 - else: - return -raw_deflection, 90 diff --git a/imap_l3_processing/swapi/l3a/science/calculate_proton_solar_wind_temperature_and_density.py b/imap_l3_processing/swapi/l3a/science/calculate_proton_solar_wind_temperature_and_density.py deleted file mode 100644 index 2a0b94b49..000000000 --- a/imap_l3_processing/swapi/l3a/science/calculate_proton_solar_wind_temperature_and_density.py +++ /dev/null @@ -1,206 +0,0 @@ -from dataclasses import dataclass, astuple -from typing import Callable - -import numpy as np -import scipy -import uncertainties -from matplotlib import pyplot as plt -from numpy import ndarray -from scipy.interpolate import LinearNDInterpolator, interp1d -from scipy.special import erf -from uncertainties import correlated_values, ufloat -from uncertainties.unumpy import uarray, nominal_values, std_devs - -from imap_l3_processing import constants -from imap_l3_processing.constants import PROTON_MASS_KG, BOLTZMANN_CONSTANT_JOULES_PER_KELVIN, METERS_PER_KILOMETER, \ - CENTIMETERS_PER_METER, SWAPI_EFFECTIVE_AREA_CM2 -from imap_l3_processing.swapi.l3a.science.calculate_proton_solar_wind_speed import get_proton_peak_indices, \ - calculate_sw_speed_h_plus -from imap_l3_processing.swapi.l3a.science.speed_calculation import find_peak_center_of_mass_index, interpolate_energy, \ - extract_coarse_sweep -from imap_l3_processing.swapi.quality_flags import SwapiL3Flags - - -def proton_count_rate_model(efficiency, ev_per_q, density_per_cm3, temperature, bulk_flow_speed_km_per_s): - density_per_m3 = density_per_cm3 * CENTIMETERS_PER_METER ** 3 - bulk_flow_speed_meters_per_s = bulk_flow_speed_km_per_s * METERS_PER_KILOMETER - energy = ev_per_q * constants.PROTON_CHARGE_COULOMBS - k = BOLTZMANN_CONSTANT_JOULES_PER_KELVIN - a_eff_cm2 = efficiency * SWAPI_EFFECTIVE_AREA_CM2 - a_eff_m2 = a_eff_cm2 / CENTIMETERS_PER_METER ** 2 - - delta_e_over_e = 0.085 - delta_v_over_v = 1 / 2 * delta_e_over_e - delta_phi_degrees = 30 - - m = PROTON_MASS_KG - v_th = np.sqrt(2 * k * temperature / m) - beta = 1 / v_th ** 2 - v_e = np.sqrt(2 * energy / m) - result = (density_per_m3 * a_eff_m2 * (beta / np.pi) ** (3 / 2) - * np.exp(-beta * (v_e ** 2 + bulk_flow_speed_meters_per_s ** 2 - 2 * v_e * bulk_flow_speed_meters_per_s)) - * np.sqrt(np.pi / (beta * bulk_flow_speed_meters_per_s * v_e)) - * erf(np.sqrt(beta * bulk_flow_speed_meters_per_s * v_e) * np.radians(delta_phi_degrees / 2)) - * v_e ** 4 * delta_v_over_v * np.arcsin(v_th / v_e)) - - return result - - -def calculate_proton_solar_wind_temperature_and_density_for_one_sweep(coincident_count_rates: uarray, energy: ndarray, - efficiency: float): - coincident_count_rates = extract_coarse_sweep(coincident_count_rates) - energy = extract_coarse_sweep(energy) - proton_peak_indices = get_proton_peak_indices(coincident_count_rates) - - initial_speed_guess = calculate_proton_speed_from_one_sweep(coincident_count_rates, energy, proton_peak_indices) - - peak_energies = energy[proton_peak_indices] - peak_count_rates = coincident_count_rates[proton_peak_indices] - at_least_minimum = nominal_values(peak_count_rates) >= 13 - filtered_peak_count_rates = peak_count_rates[at_least_minimum] - peak_energies_filtered = peak_energies[at_least_minimum] - - initial_parameter_guess = [5, 1e5] - - def model(ev_per_q: ndarray, density: float, temperature: float): - return proton_count_rate_model(efficiency, ev_per_q, density, temperature, nominal_values(initial_speed_guess)) - - values, covariance = scipy.optimize.curve_fit(model, - peak_energies_filtered, - nominal_values(filtered_peak_count_rates), - sigma=std_devs(filtered_peak_count_rates), - absolute_sigma=True, - bounds=[[0, 0], [np.inf, np.inf]], - p0=initial_parameter_guess) - residual = abs(model(peak_energies_filtered, *values) - nominal_values(filtered_peak_count_rates)) - reduced_chisq = np.sum(np.square(residual / std_devs(filtered_peak_count_rates))) / ( - len(peak_energies_filtered) - 2) - - bad_fit_flag = SwapiL3Flags.NONE - if reduced_chisq > 10: - bad_fit_flag = SwapiL3Flags.HI_CHI_SQ - - density, temperature = correlated_values(values, covariance) - - return ProtonSolarWindTemperatureAndDensity(temperature, density, bad_fit_flag) - - -def calculate_uncalibrated_proton_solar_wind_temperature_and_density(coincident_count_rates: uarray, energy: ndarray, - efficiency: float): - temperatures_per_sweep = [] - densities_per_sweep = [] - bad_temperatures = [] - bad_densities = [] - - for sweep, single_energy in zip(coincident_count_rates, energy): - try: - proton_temp_density = calculate_proton_solar_wind_temperature_and_density_for_one_sweep(sweep, - single_energy, - efficiency) - if proton_temp_density.bad_fit_flag == SwapiL3Flags.HI_CHI_SQ: - bad_temperatures.append(proton_temp_density.temperature) - bad_densities.append(proton_temp_density.density) - elif proton_temp_density.bad_fit_flag == SwapiL3Flags.NONE: - temperatures_per_sweep.append(proton_temp_density.temperature) - densities_per_sweep.append(proton_temp_density.density) - except ValueError as e: - continue - if len(temperatures_per_sweep) >= 3: - bad_fit_flag = SwapiL3Flags.NONE - average_temp = np.average(temperatures_per_sweep, weights=1 / std_devs(temperatures_per_sweep) ** 2) - average_density = np.average(densities_per_sweep, weights=1 / std_devs(densities_per_sweep) ** 2) - else: - bad_fit_flag = SwapiL3Flags.HI_CHI_SQ - temperatures = temperatures_per_sweep + bad_temperatures - densities = densities_per_sweep + bad_densities - - average_temp = np.average(temperatures, - weights=1 / std_devs(temperatures) ** 2) - average_density = np.average(densities, - weights=1 / std_devs(densities) ** 2) - - return ProtonSolarWindTemperatureAndDensity(average_temp, average_density, bad_fit_flag) - - -def calculate_proton_speed_from_one_sweep(coincident_count_rates, energy, proton_peak_indices): - center_of_mass_index = find_peak_center_of_mass_index(proton_peak_indices, coincident_count_rates, - minimum_count_rate=13) - energy_at_com = interpolate_energy(center_of_mass_index, energy) - initial_speed_guess = calculate_sw_speed_h_plus(energy_at_com) - return initial_speed_guess - - -class ProtonTemperatureAndDensityCalibrationTable: - def __init__(self, lookup_table_array: ndarray): - self.proton_sw_speed = np.unique(lookup_table_array[:, 0]) - self.deflection_angle = np.unique(lookup_table_array[:, 1]) - self.clock_angle = np.unique(lookup_table_array[:, 2]) - - assert np.all(np.sort(self.proton_sw_speed) == self.proton_sw_speed) - assert np.all(np.sort(self.deflection_angle) == self.deflection_angle) - assert np.all(np.sort(self.clock_angle) == self.clock_angle) - - values_shape = (len(self.proton_sw_speed), len(self.deflection_angle), len(self.clock_angle)) - self.reshaped_lookup = lookup_table_array.reshape(*values_shape, -1, 7) - - if 360.0 not in self.clock_angle: - assert self.clock_angle[0] == 0.0, "expected table to start at angle 0" - self.clock_angle = np.append(self.clock_angle, 360.0) - self.reshaped_lookup = np.append(self.reshaped_lookup, self.reshaped_lookup[:, :, 0:1], axis=2) - - @uncertainties.wrap - def calibrate_density(self, solar_wind_speed, deflection_angle, clock_angle, fit_density, fit_temperature): - interp = self.build_interpolator(solar_wind_speed, deflection_angle, clock_angle % 360) - return interp(fit_density, fit_temperature)[0] - - @uncertainties.wrap - def calibrate_temperature(self, solar_wind_speed, deflection_angle, clock_angle, fit_density, fit_temperature): - interp = self.build_interpolator(solar_wind_speed, deflection_angle, clock_angle % 360) - return interp(fit_density, fit_temperature)[1] - - def build_interpolator(self, solar_wind_speed, deflection_angle, clock_angle) -> Callable: - v = self.reshaped_lookup - v1 = interp1d(self.proton_sw_speed, v, axis=0)(solar_wind_speed) - v2 = interp1d(self.deflection_angle, v1, axis=0)(deflection_angle) - v3 = interp1d(self.clock_angle, v2, axis=0)(clock_angle) - - coords = v3[:, [3, 5]] - values = v3[:, [4, 6]] - return LinearNDInterpolator(coords, values, rescale=True) - - @classmethod - def from_file(cls, file_path): - lookup_table_array = np.loadtxt(file_path) - return cls(lookup_table_array) - - -def calculate_proton_solar_wind_temperature_and_density(lookup_table: ProtonTemperatureAndDensityCalibrationTable, - proton_solar_wind_speed, deflection_angle, - clock_angle, coincident_count_rates: uarray, energy: ndarray, - efficiency: float): - temperature, density, bad_fit_flag = astuple(calculate_uncalibrated_proton_solar_wind_temperature_and_density( - coincident_count_rates, - energy, efficiency)) - calibrated_temperature = lookup_table.calibrate_temperature(proton_solar_wind_speed, deflection_angle, clock_angle, - density, - temperature) - calibrated_density = lookup_table.calibrate_density(proton_solar_wind_speed, deflection_angle, clock_angle, - density, - temperature) - return ProtonSolarWindTemperatureAndDensity(calibrated_temperature, calibrated_density, bad_fit_flag) - - -def demo(density=5.0, temp=1e5, speed=450): - voltage = np.geomspace(100, 19000, 62) - - plt.loglog(voltage, proton_count_rate_model(voltage, density, temp, speed)) - plt.ylim(1e-3, 1e8) - - plt.show() - - -@dataclass -class ProtonSolarWindTemperatureAndDensity: - temperature: ufloat - density: ufloat - bad_fit_flag: int = SwapiL3Flags.NONE diff --git a/imap_l3_processing/swapi/l3a/science/solar_wind/__init__.py b/imap_l3_processing/swapi/l3a/science/solar_wind/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/imap_l3_processing/swapi/l3a/science/solar_wind/alpha/__init__.py b/imap_l3_processing/swapi/l3a/science/solar_wind/alpha/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/imap_l3_processing/swapi/l3a/science/solar_wind/alpha/calculate_alpha_solar_wind_moments.py b/imap_l3_processing/swapi/l3a/science/solar_wind/alpha/calculate_alpha_solar_wind_moments.py new file mode 100644 index 000000000..4f495ba51 --- /dev/null +++ b/imap_l3_processing/swapi/l3a/science/solar_wind/alpha/calculate_alpha_solar_wind_moments.py @@ -0,0 +1,315 @@ +from dataclasses import dataclass +from typing import Optional + +import numpy as np +import scipy.optimize +from numpy import ndarray +from uncertainties import UFloat, covariance_matrix, ufloat + +from imap_l3_processing.constants import ( + ALPHA_MASS_PER_CHARGE_M_P_PER_E, + ALPHA_PARTICLE_MASS_KG, + PROTON_MASS_KG, + PROTON_MASS_PER_CHARGE_M_P_PER_E, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.proton.fit_model import ( + ProtonSolarWindFitResult, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.forward_model import ( + model_solar_wind_ideal_coincidence_rates, +) +from imap_l3_processing.swapi.response.deadtime import deadtime_factor +from imap_l3_processing.swapi.l3a.science.solar_wind.fit_context import ( + SolarWindFitContext, + build_solar_wind_fit_context, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.params import ( + LOG_DENSITY_IDX, + LOG_TEMPERATURE_IDX, + SolarWindParams, + VELOCITY_SLICE, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.uncertainties import ( + compute_hc3_parameter_covariance, + make_correlated_velocity, + r_squared, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.alpha.utils import ( + get_alpha_peak_indices, +) +from imap_l3_processing.swapi.constants import ( + SWAPI_K_FACTOR, +) +from imap_l3_processing.swapi.response.swapi_response import SwapiResponse +from imap_l3_processing.swapi.quality_flags import SwapiL3Flags + + +@dataclass +class AlphaSolarWindMoments: + density: UFloat # cm^-3 + temperature: UFloat # K + bulk_velocity_rtn: tuple[UFloat, UFloat, UFloat] # km/s, [R, T, N]; correlated + delta_v: UFloat # km/s, signed; +Δv ⇔ alpha drifts along +B̂ vs proton frame + bad_fit_flag: int + + def bulk_velocity_rtn_nominal(self) -> ndarray: + """Nominal RTN velocity vector (km/s); shape (3,).""" + return np.array([v.nominal_value for v in self.bulk_velocity_rtn]) + + def bulk_velocity_rtn_covariance(self) -> ndarray: + """3×3 RTN velocity covariance (km²/s²); = Σ_vp + σ_Δv² B̂B̂ᵀ.""" + return np.array(covariance_matrix(self.bulk_velocity_rtn)) + + +def _nan_alpha_moments(flag: int) -> AlphaSolarWindMoments: + nan = ufloat(np.nan, np.nan) + return AlphaSolarWindMoments( + density=nan, + temperature=nan, + bulk_velocity_rtn=(nan, nan, nan), + delta_v=nan, + bad_fit_flag=int(flag), + ) + + +class _AlphaEvaluator: + def __init__( + self, + proton_bulk: ndarray, + magnetic_field_direction: ndarray, + proton_true_rate: ndarray, + alpha_ctx: SolarWindFitContext, + ): + self.proton_bulk = proton_bulk + self.magnetic_field_direction = magnetic_field_direction + self.proton_true_rate = proton_true_rate + self.alpha_ctx = alpha_ctx + self._last_state: Optional[ndarray] = None + self._last_residuals: Optional[ndarray] = None + self._last_jacobian: Optional[ndarray] = None + + def _eval(self, x: ndarray) -> None: + n_a = float(np.exp(x[0])) + T_a = float(np.exp(x[1])) + delta_v = float(x[2]) + v_a_rtn = self.proton_bulk + delta_v * self.magnetic_field_direction + alpha_true, jacobian_alpha_5d = model_solar_wind_ideal_coincidence_rates( + SolarWindParams(n_a, v_a_rtn, T_a, self.alpha_ctx.mass_kg), + self.alpha_ctx, + ) + total_true = self.proton_true_rate + alpha_true + deadtime = deadtime_factor(total_true) + residuals = total_true * deadtime - self.alpha_ctx.count_rate.ravel() + + deadtime_squared = deadtime * deadtime + jacobian = np.empty((alpha_true.size, 3)) + jacobian[:, 0] = deadtime_squared * jacobian_alpha_5d[:, LOG_DENSITY_IDX] + jacobian[:, 1] = deadtime_squared * jacobian_alpha_5d[:, LOG_TEMPERATURE_IDX] + jacobian[:, 2] = deadtime_squared * ( + jacobian_alpha_5d[:, VELOCITY_SLICE] @ self.magnetic_field_direction + ) + + self._last_state = x.copy() + self._last_residuals = residuals + self._last_jacobian = jacobian + + def _refresh(self, x: ndarray) -> None: + if self._last_state is None or not np.array_equal(x, self._last_state): + self._eval(x) + + def residuals(self, x: ndarray) -> ndarray: + self._refresh(x) + return self._last_residuals + + def jacobian(self, x: ndarray) -> ndarray: + self._refresh(x) + return self._last_jacobian + + +def fit_solar_wind_alpha_moments( + count_rate: ndarray, + esa_voltage: ndarray, + measurement_time: ndarray, + swapi_response: SwapiResponse, + proton_moments: ProtonSolarWindFitResult, + magnetic_field_direction: ndarray, + alpha_effective_area_scale: float, + proton_effective_area_scale: float, + rotation_matrices: Optional[ndarray] = None, +) -> AlphaSolarWindMoments: + proton_bad_fit_flag = int(proton_moments.bad_fit_flag) + proton_bulk_rtn = proton_moments.bulk_velocity_rtn_nominal() + + if not np.all(np.isfinite(proton_bulk_rtn)): + return _nan_alpha_moments(proton_bad_fit_flag) + + bad_fit_flag = proton_bad_fit_flag + + magnetic_field_direction = np.asarray(magnetic_field_direction, dtype=float) + if not np.all(np.isfinite(magnetic_field_direction)): + return _nan_alpha_moments(bad_fit_flag) + + if rotation_matrices is None: + from imap_l3_processing.swapi.l3a.utils import get_swapi_geometry + + rotation_matrices = get_swapi_geometry(measurement_time) + + proton_ctx = build_solar_wind_fit_context( + count_rate=count_rate, + esa_voltage=esa_voltage, + swapi_response=swapi_response, + central_effective_area_scale=proton_effective_area_scale, + rotation_matrices=rotation_matrices, + mass_kg=PROTON_MASS_KG, + mass_per_charge_m_p_per_e=PROTON_MASS_PER_CHARGE_M_P_PER_E, + ) + alpha_ctx = build_solar_wind_fit_context( + count_rate=count_rate, + esa_voltage=esa_voltage, + swapi_response=swapi_response, + central_effective_area_scale=alpha_effective_area_scale, + rotation_matrices=rotation_matrices, + mass_kg=ALPHA_PARTICLE_MASS_KG, + mass_per_charge_m_p_per_e=ALPHA_MASS_PER_CHARGE_M_P_PER_E, + ) + + proton_true_rate, _ = model_solar_wind_ideal_coincidence_rates( + SolarWindParams( + density=proton_moments.density.nominal_value, + bulk_velocity_rtn=proton_bulk_rtn, + temperature=proton_moments.temperature.nominal_value, + mass=proton_ctx.mass_kg, + ), + proton_ctx, + ) + + initial_guess = _alpha_initial_guess( + proton_true_rate=proton_true_rate, + proton_temperature=proton_moments.temperature.nominal_value, + alpha_ctx=alpha_ctx, + proton_bulk_velocity_rtn=proton_bulk_rtn, + magnetic_field_direction=magnetic_field_direction, + ) + if initial_guess is None: + return _nan_alpha_moments(bad_fit_flag | SwapiL3Flags.FIT_ERROR) + + n0, T0, dv0, peak_bin_idx = initial_guess + proton_bulk = proton_bulk_rtn + + n_sweeps, n_bins = alpha_ctx.count_rate.shape + count_rate_flat = count_rate.ravel() + peak_flat_idx = np.concatenate([peak_bin_idx + s * n_bins for s in range(n_sweeps)]) + count_rate_peak = count_rate_flat[peak_flat_idx] + keep = count_rate_peak > 0 + if not np.all(keep): + peak_flat_idx = peak_flat_idx[keep] + proton_true_rate_peak = proton_true_rate[peak_flat_idx] + alpha_ctx_peak = alpha_ctx.subset(peak_flat_idx) + + evaluator = _AlphaEvaluator( + proton_bulk=proton_bulk, + magnetic_field_direction=magnetic_field_direction, + proton_true_rate=proton_true_rate_peak, + alpha_ctx=alpha_ctx_peak, + ) + + x0 = np.array([np.log(max(n0, 1e-3)), np.log(max(T0, 1e-3)), dv0]) + result = scipy.optimize.least_squares( + evaluator.residuals, x0, jac=evaluator.jacobian, method="lm" + ) + + n_a_fit = float(np.exp(result.x[0])) + T_a_fit = float(np.exp(result.x[1])) + dv_fit = float(result.x[2]) + bulk_velocity_rtn = proton_bulk + dv_fit * magnetic_field_direction + + if not result.success: + return _nan_alpha_moments(bad_fit_flag | SwapiL3Flags.FIT_ERROR) + + n_peak_bins = peak_bin_idx.size + if result.fun.size == n_sweeps * n_peak_bins: + averaged_count_rate = np.nanmean( + alpha_ctx_peak.count_rate.reshape(n_sweeps, n_peak_bins), axis=0 + ) + averaged_residual = np.nanmean( + result.fun.reshape(n_sweeps, n_peak_bins), axis=0 + ) + fit_r_squared = r_squared(averaged_residual, averaged_count_rate) + else: + fit_r_squared = r_squared(result.fun, alpha_ctx_peak.count_rate) + + if fit_r_squared < 0.9: + return _nan_alpha_moments(bad_fit_flag | SwapiL3Flags.BAD_FIT) + + cov_x = compute_hc3_parameter_covariance(result.jac, result.fun) + density_sigma = float(n_a_fit * np.sqrt(max(cov_x[0, 0], 0.0))) + temperature_sigma = float(T_a_fit * np.sqrt(max(cov_x[1, 1], 0.0))) + delta_v_sigma = float(np.sqrt(max(cov_x[2, 2], 0.0))) + + sigma_dv2 = max(cov_x[2, 2], 0.0) + velocity_covariance_rtn = ( + proton_moments.bulk_velocity_rtn_covariance() + + sigma_dv2 * np.outer(magnetic_field_direction, magnetic_field_direction) + ) + + return AlphaSolarWindMoments( + density=ufloat(n_a_fit, density_sigma), + temperature=ufloat(T_a_fit, temperature_sigma), + bulk_velocity_rtn=make_correlated_velocity( + bulk_velocity_rtn, velocity_covariance_rtn + ), + delta_v=ufloat(dv_fit, delta_v_sigma), + bad_fit_flag=int(bad_fit_flag), + ) + + +def _alpha_initial_guess( + proton_true_rate: ndarray, + proton_temperature: float, + alpha_ctx: SolarWindFitContext, + proton_bulk_velocity_rtn: ndarray, + magnetic_field_direction: ndarray, +) -> Optional[tuple]: + if alpha_ctx.count_rate.size == 0 or alpha_ctx.count_rate.ndim != 2: + return None + + n_sweeps, n_bins = alpha_ctx.count_rate.shape + counts_per_sweep = alpha_ctx.count_rate + voltage_per_sweep = alpha_ctx.esa_voltage[0] + proton_true_per_sweep = proton_true_rate.reshape(n_sweeps, n_bins) + proton_obs_per_sweep = proton_true_per_sweep * deadtime_factor( + proton_true_per_sweep + ) + + count_avg = counts_per_sweep.mean(axis=0) + proton_bg_avg = proton_obs_per_sweep.mean(axis=0) + energies_per_sweep = SWAPI_K_FACTOR * np.abs(voltage_per_sweep) + proton_peak_index = np.argmax(proton_bg_avg) + residual = np.maximum(0, count_avg - proton_bg_avg * 2) + + try: + peak = get_alpha_peak_indices(residual, energies_per_sweep, proton_peak_index) + except Exception: + return None + + peak_idx = np.arange(peak.start, peak.stop) + if len(peak_idx) < 3: + return None + residual_peak = np.maximum(residual[peak_idx], 0.0) + if not np.any(residual_peak > 0): + return None + + T_alpha = proton_temperature + + unit_alpha, _ = model_solar_wind_ideal_coincidence_rates( + SolarWindParams(1.0, proton_bulk_velocity_rtn, T_alpha, alpha_ctx.mass_kg), + alpha_ctx, + ) + unit_alpha_per_sweep = unit_alpha.reshape(n_sweeps, n_bins).mean(axis=0) + denom = float(np.nanmean(unit_alpha_per_sweep[peak_idx])) + if denom <= 0 or not np.isfinite(denom): + return None + n_alpha = float(np.nanmean(residual_peak)) / denom + n_alpha = max(n_alpha, 1e-3) + + return (n_alpha, T_alpha, 0.0, peak_idx) diff --git a/imap_l3_processing/swapi/l3a/science/solar_wind/alpha/utils.py b/imap_l3_processing/swapi/l3a/science/solar_wind/alpha/utils.py new file mode 100644 index 000000000..f553d04e0 --- /dev/null +++ b/imap_l3_processing/swapi/l3a/science/solar_wind/alpha/utils.py @@ -0,0 +1,50 @@ +import numpy as np +from numpy.typing import ArrayLike + +from imap_l3_processing.constants import ( + ALPHA_PARTICLE_CHARGE_COULOMBS, + ALPHA_PARTICLE_MASS_KG, + METERS_PER_KILOMETER, +) +from imap_l3_processing.swapi.constants import SWAPI_K_FACTOR + + +def esa_voltage_to_alpha_speed(esa_voltage: ArrayLike) -> np.ndarray: + return ( + np.sqrt( + 2 + * SWAPI_K_FACTOR + * ALPHA_PARTICLE_CHARGE_COULOMBS + * np.abs(esa_voltage) + / ALPHA_PARTICLE_MASS_KG + ) + / METERS_PER_KILOMETER + ) + + +def get_alpha_peak_indices(residuals, energies, proton_peak_index) -> slice: + energies = np.asarray(energies) + assert np.all(energies[:-1] >= energies[1:]), "Energies must be decreasing" + + min_energy = 1.5 * energies[proton_peak_index] + max_energy = 4.0 * energies[proton_peak_index] + + def find_start_of_alpha_particle_peak(): + start_bin = None + for i in reversed(range(proton_peak_index)): + if energies[i] >= min_energy: + start_bin = i + break + if start_bin is None: + return None + for i in reversed(range(start_bin + 1)): + if residuals[i] > residuals[i + 1] and residuals[i - 1] > residuals[i]: + return i + return None + + start_of_alpha_peak = find_start_of_alpha_particle_peak() + if start_of_alpha_peak is None: + raise Exception("Alpha peak not found") + + end_of_alpha_peak = np.searchsorted(-energies, -max_energy) + return slice(int(end_of_alpha_peak), start_of_alpha_peak + 1) diff --git a/imap_l3_processing/swapi/l3a/science/solar_wind/azimuthal_regions.py b/imap_l3_processing/swapi/l3a/science/solar_wind/azimuthal_regions.py new file mode 100644 index 000000000..1d0d7a674 --- /dev/null +++ b/imap_l3_processing/swapi/l3a/science/solar_wind/azimuthal_regions.py @@ -0,0 +1,13 @@ +from typing import NamedTuple + + +class Region(NamedTuple): + # exactly one of the two flags is True (see the REGION_* constants below) + is_sunglasses: bool + is_open_aperture: bool + azimuth_sign: int # 0 for SG (centered on boresight), ±1 for OA halves + + +REGION_SUNGLASSES = Region(True, False, 0) +REGION_OPEN_APERTURE_NEG = Region(False, True, -1) +REGION_OPEN_APERTURE_POS = Region(False, True, +1) diff --git a/imap_l3_processing/swapi/l3a/science/solar_wind/fit_context.py b/imap_l3_processing/swapi/l3a/science/solar_wind/fit_context.py new file mode 100644 index 000000000..138a0540a --- /dev/null +++ b/imap_l3_processing/swapi/l3a/science/solar_wind/fit_context.py @@ -0,0 +1,58 @@ +from typing import NamedTuple, Self + +import numba +import numpy as np +from numpy import ndarray + +from imap_l3_processing.swapi.response.swapi_response import SwapiResponse + + +class SolarWindFitContext(NamedTuple): + count_rate: ndarray + esa_voltage: ndarray + response_grids: numba.typed.List + rotation_matrices: ndarray + mass_kg: float + + def subset(self, indices: ndarray) -> Self: + return self._replace( + count_rate=self.count_rate.ravel()[indices], + esa_voltage=self.esa_voltage.ravel()[indices], + response_grids=numba.typed.List([self.response_grids[i] for i in indices]), + rotation_matrices=self.rotation_matrices[indices], + ) + + +def build_solar_wind_fit_context( + count_rate: ndarray, + esa_voltage: ndarray, + swapi_response: SwapiResponse, + central_effective_area_scale: float, + rotation_matrices: ndarray, + mass_kg: float, + mass_per_charge_m_p_per_e: float, +) -> SolarWindFitContext: + flat_voltage = esa_voltage.ravel() + keep = (flat_voltage > 0) & np.isfinite(flat_voltage) + if not np.all(keep): + esa_voltage = flat_voltage[keep] + count_rate = count_rate.ravel()[keep] + rotation_matrices = rotation_matrices[keep] + flat_voltage = esa_voltage + + response_grids = numba.typed.List( + [ + swapi_response.get_response_grid( + v, mass_per_charge_m_p_per_e, central_effective_area_scale + ) + for v in flat_voltage + ] + ) + + return SolarWindFitContext( + count_rate=count_rate, + esa_voltage=esa_voltage, + response_grids=response_grids, + rotation_matrices=rotation_matrices, + mass_kg=float(mass_kg), + ) diff --git a/imap_l3_processing/swapi/l3a/science/solar_wind/forward_model.py b/imap_l3_processing/swapi/l3a/science/solar_wind/forward_model.py new file mode 100644 index 000000000..730c715f0 --- /dev/null +++ b/imap_l3_processing/swapi/l3a/science/solar_wind/forward_model.py @@ -0,0 +1,225 @@ +"""Solar-wind forward model and analytic Jacobian. + +Derivation in `docs/swapi/solar-wind-moments.md`.""" + +import math + +import numba +import numpy as np + +from imap_l3_processing.swapi.l3a.science.solar_wind.azimuthal_regions import ( + REGION_OPEN_APERTURE_NEG, + REGION_OPEN_APERTURE_POS, + REGION_SUNGLASSES, + Region, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.integration_limits import ( + AngularQuadrature, + get_angular_quadrature, + get_speed_quadrature, + speed_window_misses_passband, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.utils import ( + count_rate_conversion_factor, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.fit_context import ( + SolarWindFitContext, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.params import ( + LOG_DENSITY_IDX, + LOG_TEMPERATURE_IDX, + N_STATE, + SolarWindParams, + VELOCITY_SLICE, + bulk_speed, + thermal_speed, +) +from imap_l3_processing.swapi.response.swapi_response import ResponseGrid + + +@numba.njit +def model_solar_wind_ideal_coincidence_rates( + sw_params: SolarWindParams, + ctx: SolarWindFitContext, +): + n = len(ctx.response_grids) + rates = np.empty(n) + jacobian = np.empty((n, N_STATE)) + for i in range(n): + rates[i], jacobian[i] = calculate_integral( + sw_params, ctx.response_grids[i], ctx.rotation_matrices[i] + ) + return rates, jacobian + + +@numba.njit(fastmath=True) +def calculate_integral( + sw_params: SolarWindParams, + response_grid: ResponseGrid, + rotation_matrix, +): + jacobian_row = np.zeros(N_STATE) + if speed_window_misses_passband(sw_params, response_grid): + return 0.0, jacobian_row + + rate = 0.0 + sg_rate = 0.0 + for region in [ + REGION_SUNGLASSES, + REGION_OPEN_APERTURE_NEG, + REGION_OPEN_APERTURE_POS, + ]: + skip_region, angular_quadrature = get_angular_quadrature( + sw_params, response_grid, region, rotation_matrix, sg_rate + ) + if not skip_region: + region_rate, region_jac = _integrate_region( + sw_params, + response_grid, + region, + angular_quadrature, + rotation_matrix, + ) + rate += region_rate + jacobian_row += region_jac + if region.is_sunglasses: + sg_rate = region_rate + return rate, jacobian_row + + +@numba.njit(fastmath=True) +def _integrate_region( + sw_params: SolarWindParams, + response_grid: ResponseGrid, + region: Region, + angular_quadrature: AngularQuadrature, + rotation_xyz_to_rtn, +): + bulk_velocity = sw_params.bulk_velocity_rtn + bulk_r = bulk_velocity[0] + bulk_t = bulk_velocity[1] + bulk_n = bulk_velocity[2] + + elevation_rate = 0.0 + elevation_log_temperature_jacobian = 0.0 + elevation_jacobian_r = 0.0 + elevation_jacobian_t = 0.0 + elevation_jacobian_n = 0.0 + for i_elevation in range(angular_quadrature.elevation_points.shape[0]): + skip_elevation, speed_quadrature = get_speed_quadrature( + sw_params, + response_grid, + region, + angular_quadrature.elevation_points[i_elevation], + ) + if skip_elevation: + continue + + azimuth_rate = 0.0 + azimuth_log_temperature_jacobian = 0.0 + azimuth_jacobian_r = 0.0 + azimuth_jacobian_t = 0.0 + azimuth_jacobian_n = 0.0 + for i_azimuth in range(angular_quadrature.azimuth_points.shape[0]): + direction_r, direction_t, direction_n = _direction_in_rtn( + angular_quadrature, rotation_xyz_to_rtn, i_elevation, i_azimuth + ) + + bulk_velocity_along_direction = ( + direction_r * bulk_r + direction_t * bulk_t + direction_n * bulk_n + ) + + rate_integral = 0.0 + log_temperature_jacobian_integral = 0.0 + velocity_along_direction_integral = 0.0 + for i_speed in range(speed_quadrature.points.shape[0]): + speed = speed_quadrature.points[i_speed] + exponent = ( + speed ** 2 + + bulk_speed(sw_params) ** 2 + - 2 * speed * bulk_velocity_along_direction + ) * 1.0 / (2 * thermal_speed(sw_params) ** 2) + weighted_integrand = ( + speed_quadrature.weights[i_speed] + * speed_quadrature.speed_cubed_times_passband[i_speed] + * math.exp(-exponent) + ) + rate_integral += weighted_integrand + + log_temperature_jacobian_integral += weighted_integrand * exponent + velocity_along_direction_integral += weighted_integrand * speed + + azimuth_weight = ( + angular_quadrature.azimuth_weights[i_azimuth] + * angular_quadrature.transmission_azimuth[i_azimuth] + ) + + azimuth_rate += azimuth_weight * rate_integral + + azimuth_log_temperature_jacobian += ( + azimuth_weight * log_temperature_jacobian_integral + ) + azimuth_jacobian_r += azimuth_weight * ( + direction_r * velocity_along_direction_integral - bulk_r * rate_integral + ) + azimuth_jacobian_t += azimuth_weight * ( + direction_t * velocity_along_direction_integral - bulk_t * rate_integral + ) + azimuth_jacobian_n += azimuth_weight * ( + direction_n * velocity_along_direction_integral - bulk_n * rate_integral + ) + + elevation_weight = ( + angular_quadrature.elevation_weights[i_elevation] + * angular_quadrature.cos_elevation[i_elevation] + ) + elevation_rate += azimuth_rate * elevation_weight + elevation_log_temperature_jacobian += ( + azimuth_log_temperature_jacobian * elevation_weight + ) + elevation_jacobian_r += azimuth_jacobian_r * elevation_weight + elevation_jacobian_t += azimuth_jacobian_t * elevation_weight + elevation_jacobian_n += azimuth_jacobian_n * elevation_weight + + count_rate_factor = count_rate_conversion_factor(sw_params, response_grid) + rate = elevation_rate * count_rate_factor + + jacobian = np.empty(N_STATE) + jacobian[LOG_DENSITY_IDX] = rate + jacobian[LOG_TEMPERATURE_IDX] = ( + elevation_log_temperature_jacobian * count_rate_factor - 1.5 * rate + ) + jacobian[VELOCITY_SLICE.start] = ( + elevation_jacobian_r * count_rate_factor / thermal_speed(sw_params) ** 2 + ) + jacobian[VELOCITY_SLICE.start + 1] = ( + elevation_jacobian_t * count_rate_factor / thermal_speed(sw_params) ** 2 + ) + jacobian[VELOCITY_SLICE.start + 2] = ( + elevation_jacobian_n * count_rate_factor / thermal_speed(sw_params) ** 2 + ) + + return rate, jacobian + + +@numba.njit(fastmath=True) +def _direction_in_rtn(angular_quadrature, rotation_xyz_to_rtn, i_elevation, i_azimuth): + cos_elevation = angular_quadrature.cos_elevation[i_elevation] + sin_elevation = angular_quadrature.sin_elevation[i_elevation] + sin_azimuth = angular_quadrature.sin_azimuth[i_azimuth] + cos_azimuth = angular_quadrature.cos_azimuth[i_azimuth] + direction_x = -cos_elevation * sin_azimuth + direction_y = -cos_elevation * cos_azimuth + direction_z = -sin_elevation + return ( + rotation_xyz_to_rtn[0, 0] * direction_x + + rotation_xyz_to_rtn[0, 1] * direction_y + + rotation_xyz_to_rtn[0, 2] * direction_z, + rotation_xyz_to_rtn[1, 0] * direction_x + + rotation_xyz_to_rtn[1, 1] * direction_y + + rotation_xyz_to_rtn[1, 2] * direction_z, + rotation_xyz_to_rtn[2, 0] * direction_x + + rotation_xyz_to_rtn[2, 1] * direction_y + + rotation_xyz_to_rtn[2, 2] * direction_z, + ) + diff --git a/imap_l3_processing/swapi/l3a/science/solar_wind/integration_limits.py b/imap_l3_processing/swapi/l3a/science/solar_wind/integration_limits.py new file mode 100644 index 000000000..f43a247ca --- /dev/null +++ b/imap_l3_processing/swapi/l3a/science/solar_wind/integration_limits.py @@ -0,0 +1,216 @@ +from typing import NamedTuple + +import numba +import numpy as np + +from imap_l3_processing.swapi.l3a.science.solar_wind.azimuthal_regions import ( + Region, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.open_aperture_trimming import ( + trim_oa_azimuth_by_integrand, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.params import ( + SolarWindParams, + bulk_angles_in_instrument_frame, + bulk_speed, + thermal_speed, +) +from imap_l3_processing.swapi.response.azimuthal_transmission import ( + interpolate_azimuthal_transmission, +) +from imap_l3_processing.swapi.response.passband_grid import ( + interpolate_passband, + speed_ratio_range_at_elevation, +) +from imap_l3_processing.swapi.response.swapi_response import ResponseGrid + + +class AngularQuadrature(NamedTuple): + elevation_points: np.ndarray + elevation_weights: np.ndarray + azimuth_points: np.ndarray + azimuth_weights: np.ndarray + sin_elevation: np.ndarray + cos_elevation: np.ndarray + sin_azimuth: np.ndarray + cos_azimuth: np.ndarray + transmission_azimuth: np.ndarray + + +class SpeedQuadrature(NamedTuple): + points: np.ndarray + weights: np.ndarray + # per-node `v³ × passband(v/central_speed)`, normalized by the on-axis peak + speed_cubed_times_passband: np.ndarray + + +_GL_NODES_ELEVATION, _GL_WEIGHTS_ELEVATION = np.polynomial.legendre.leggauss(21) +_GL_NODES_AZIMUTH, _GL_WEIGHTS_AZIMUTH = np.polynomial.legendre.leggauss(21) +_GL_NODES_SPEED, _GL_WEIGHTS_SPEED = np.polynomial.legendre.leggauss(15) + + +EPSILON = 1e-6 +SPEED_HALF_WIDTH_VTH = 6.0 + + +@numba.njit +def speed_window_misses_passband( + sw_params: SolarWindParams, response_grid: ResponseGrid +) -> bool: + sigma = thermal_speed(sw_params) + speed = bulk_speed(sw_params) + + sw_window_lo = speed - SPEED_HALF_WIDTH_VTH * sigma + sw_window_hi = speed + SPEED_HALF_WIDTH_VTH * sigma + + # The passband grid is zero outside speed_ratio ∈ [0.9, 1.1] at every elevation + central_speed = response_grid.central_speed + passband_lo = central_speed * 0.9 + passband_hi = central_speed * 1.1 + return sw_window_hi < passband_lo or sw_window_lo > passband_hi + + +@numba.njit +def get_angular_quadrature( + sw_params: SolarWindParams, + response_grid: ResponseGrid, + region: Region, + rotation_matrix, + sg_rate: float, +): + min_el, max_el, min_az, max_az = _angular_limits( + sw_params, rotation_matrix, region, response_grid + ) + if max_el <= min_el or max_az <= min_az: + return True, None + + if region.is_open_aperture: + min_az, max_az = trim_oa_azimuth_by_integrand( + response_grid, + sw_params, + rotation_matrix, + min_el, + max_el, + min_az, + max_az, + sg_rate, + ) + if max_az <= min_az: + return True, None + + def rescale(nodes, weights, lower, upper): + half = 0.5 * (upper - lower) + mid = 0.5 * (upper + lower) + return mid + half * nodes, half * weights + + elevation_points, elevation_weights = rescale( + _GL_NODES_ELEVATION, _GL_WEIGHTS_ELEVATION, min_el, max_el + ) + azimuth_points, azimuth_weights = rescale( + _GL_NODES_AZIMUTH, _GL_WEIGHTS_AZIMUTH, min_az, max_az + ) + transmission_azimuth = np.array( + [ + interpolate_azimuthal_transmission( + response_grid.azimuthal_transmission, az + ) + for az in azimuth_points + ] + ) + return False, AngularQuadrature( + elevation_points=elevation_points, + elevation_weights=elevation_weights, + azimuth_points=azimuth_points, + azimuth_weights=azimuth_weights, + sin_elevation=np.sin(np.radians(elevation_points)), + cos_elevation=np.cos(np.radians(elevation_points)), + sin_azimuth=np.sin(np.radians(azimuth_points)), + cos_azimuth=np.cos(np.radians(azimuth_points)), + transmission_azimuth=transmission_azimuth, + ) + + +@numba.njit +def get_speed_quadrature( + sw_params: SolarWindParams, + response_grid: ResponseGrid, + region: Region, + elevation: float, +): + passband = ( + response_grid.sg_passband if region.is_sunglasses else response_grid.oa_passband + ) + central_speed = response_grid.central_speed + sigma = thermal_speed(sw_params) + bulk_v = bulk_speed(sw_params) + + # `bulk_v ± k·σ` Maxwellian window intersected with the region's passband at this elevation + ratio_lo, ratio_hi = speed_ratio_range_at_elevation(passband, elevation) + passband_lo = central_speed * ratio_lo + passband_hi = central_speed * ratio_hi + min_speed = max(bulk_v - SPEED_HALF_WIDTH_VTH * sigma, passband_lo) + max_speed = min(bulk_v + SPEED_HALF_WIDTH_VTH * sigma, passband_hi) + if max_speed <= min_speed: + return True, None + + half = 0.5 * (max_speed - min_speed) + mid = 0.5 * (max_speed + min_speed) + points = mid + half * _GL_NODES_SPEED + weights = half * _GL_WEIGHTS_SPEED + + speed_cubed_times_passband = np.empty_like(points) + for i, v in enumerate(points): + speed_cubed_times_passband[i] = v**3 * interpolate_passband( + passband, elevation, v / central_speed + ) + + return False, SpeedQuadrature(points, weights, speed_cubed_times_passband) + + +@numba.njit +def _angular_limits( + sw_params: SolarWindParams, + rotation_matrix, + region: Region, + response_grid: ResponseGrid, +): + half_width = _maxwellian_angular_extent( + sw_params, response_grid.central_speed, EPSILON + ) + bulk_az, bulk_el = bulk_angles_in_instrument_frame(sw_params, rotation_matrix) + + if region.is_sunglasses: + el_lo, el_hi = response_grid.sg_passband.elevation_range + az_lo, az_hi = -20.0, 20.0 + else: + el_lo, el_hi = response_grid.oa_passband.elevation_range + az_lo, az_hi = 20.0, 150.0 + if region.azimuth_sign < 0: + az_lo, az_hi = -az_hi, -az_lo + + min_el, max_el = _clamp_window(bulk_el, half_width, el_lo, el_hi) + min_az, max_az = _clamp_window(bulk_az, half_width, az_lo, az_hi) + return min_el, max_el, min_az, max_az + + +@numba.njit +def _maxwellian_angular_extent(sw_params, central_speed, epsilon): + sigma = thermal_speed(sw_params) + speed = bulk_speed(sw_params) + cos_theta = sigma**2 * np.log(epsilon) / (central_speed * speed) + 1 + return float(np.degrees(np.arccos(_clamp(cos_theta, -1, +1)))) + + +@numba.njit +def _clamp(x: float, lower: float, upper: float) -> float: + return min(max(x, lower), upper) + + +@numba.njit +def _clamp_window( + center: float, half_width: float, lower_bound: float, upper_bound: float +): + return ( + _clamp(center - half_width, lower_bound, upper_bound), + _clamp(center + half_width, lower_bound, upper_bound), + ) diff --git a/imap_l3_processing/swapi/l3a/science/solar_wind/open_aperture_trimming.py b/imap_l3_processing/swapi/l3a/science/solar_wind/open_aperture_trimming.py new file mode 100644 index 000000000..6a59a02bc --- /dev/null +++ b/imap_l3_processing/swapi/l3a/science/solar_wind/open_aperture_trimming.py @@ -0,0 +1,131 @@ +import math + +import numba +import numpy as np + +from imap_l3_processing.swapi.l3a.science.solar_wind.params import ( + SolarWindParams, + bulk_angles_in_instrument_frame, + bulk_speed, thermal_speed, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.utils import ( + count_rate_conversion_factor, +) +from imap_l3_processing.swapi.response.azimuthal_transmission import ( + interpolate_azimuthal_transmission, +) +from imap_l3_processing.swapi.response.passband_grid import ( + speed_ratio_range_at_elevation, +) +from imap_l3_processing.swapi.response.swapi_response import ResponseGrid + + +OA_SCAN_THRESHOLD = 1e-6 +OA_SCAN_RESOLUTION = 64 +OA_SKIP_FRACTION = 1e-3 + + +@numba.njit +def trim_oa_azimuth_by_integrand( + response_grid: ResponseGrid, + sw_params: SolarWindParams, + rotation_matrix, + min_elevation: float, + max_elevation: float, + azimuth_lo: float, + azimuth_hi: float, + sg_rate: float, +): + if azimuth_hi <= azimuth_lo: + return 0.0, 0.0 + + _, bulk_el = bulk_angles_in_instrument_frame(sw_params, rotation_matrix) + scan_elevation = min(max(bulk_el, min_elevation), max_elevation) + scan_azimuths = np.linspace(azimuth_lo, azimuth_hi, OA_SCAN_RESOLUTION) + transmission_x_maxwellian = _evaluate_oa_integrand_along_azimuth( + response_grid, sw_params, rotation_matrix, scan_azimuths, scan_elevation + ) + + threshold = OA_SCAN_THRESHOLD * np.max(transmission_x_maxwellian) + n = transmission_x_maxwellian.shape[0] + lower_index = 0 + for i in range(n): + if transmission_x_maxwellian[i] > threshold: + lower_index = max(i - 1, 0) + break + upper_index = n - 1 + for i in range(n - 1, -1, -1): + if transmission_x_maxwellian[i] > threshold: + upper_index = min(i + 1, n - 1) + break + + dphi_deg = scan_azimuths[1] - scan_azimuths[0] + transmission_az_integral = float(np.trapezoid( + transmission_x_maxwellian[lower_index : upper_index + 1], dx=dphi_deg + )) + upper_bound = _oa_rate_upper_bound( + response_grid, + sw_params, + transmission_az_integral, + min_elevation, + max_elevation, + ) + if upper_bound < max(0.1, OA_SKIP_FRACTION * sg_rate): + return 0.0, 0.0 + return scan_azimuths[lower_index], scan_azimuths[upper_index] + + +@numba.njit +def _evaluate_oa_integrand_along_azimuth( + response_grid: ResponseGrid, + sw_params: SolarWindParams, + rotation_matrix, + scan_azimuths: np.ndarray, + scan_elevation: float, +) -> np.ndarray: + sigma = thermal_speed(sw_params) + speed = bulk_speed(sw_params) + central_speed = response_grid.central_speed + bulk_az, bulk_el = bulk_angles_in_instrument_frame(sw_params, rotation_matrix) + + sin_bulk_el = math.sin(np.radians(bulk_el)) + cos_bulk_el = math.cos(np.radians(bulk_el)) + sin_scan_el = math.sin(np.radians(scan_elevation)) + cos_scan_el = math.cos(np.radians(scan_elevation)) + cos_view_to_bulk = ( + sin_bulk_el * sin_scan_el + cos_bulk_el * cos_scan_el + * np.cos(np.radians(scan_azimuths - bulk_az)) + ) + delta_v_sq = ( + central_speed**2 + speed**2 - 2.0 * central_speed * speed * cos_view_to_bulk + ) + maxwellian = np.exp(-delta_v_sq / (2.0 * sigma**2)) + + for i in range(scan_azimuths.shape[0]): + maxwellian[i] *= interpolate_azimuthal_transmission( + response_grid.azimuthal_transmission, + scan_azimuths[i], + ) + + return maxwellian + + +@numba.njit +def _oa_rate_upper_bound( + response_grid: ResponseGrid, + sw_params: SolarWindParams, + transmission_az_integral: float, + min_elevation: float, + max_elevation: float, +) -> float: + central_speed = response_grid.central_speed + delta_theta_deg = max_elevation - min_elevation + ratio_lo, ratio_hi = speed_ratio_range_at_elevation(response_grid.oa_passband, 0.0) + delta_v = central_speed * (ratio_hi - ratio_lo) + return ( + count_rate_conversion_factor(sw_params, response_grid) + * central_speed ** 3 + * delta_theta_deg + * delta_v + * transmission_az_integral + ) diff --git a/imap_l3_processing/swapi/l3a/science/solar_wind/optimizer.py b/imap_l3_processing/swapi/l3a/science/solar_wind/optimizer.py new file mode 100644 index 000000000..ee3654c3c --- /dev/null +++ b/imap_l3_processing/swapi/l3a/science/solar_wind/optimizer.py @@ -0,0 +1,88 @@ +from dataclasses import dataclass + +import numpy as np +import scipy.optimize +from numpy import ndarray + +from imap_l3_processing.swapi.l3a.science.solar_wind.fit_context import ( + SolarWindFitContext, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.forward_model import ( + model_solar_wind_ideal_coincidence_rates, +) +from imap_l3_processing.swapi.response.deadtime import deadtime_factor +from imap_l3_processing.swapi.l3a.science.solar_wind.params import SolarWindParams + + +@dataclass +class OptimizeSolarWindParamsResult: + sw_params: SolarWindParams + residuals: ndarray # count-rate residuals at the solution + jacobian: ndarray # ∂residuals/∂state, columns ordered per the state vector + success: bool + + @property + def mse(self) -> float: + return float(np.mean(self.residuals**2)) + + +def optimize_solar_wind_params( + initial_guess: SolarWindParams, ctx: SolarWindFitContext +) -> OptimizeSolarWindParamsResult: + evaluator = _Evaluator(ctx) + + raw: scipy.optimize.OptimizeResult = scipy.optimize.least_squares( + evaluator.residues, + initial_guess.to_vector(), + jac=evaluator.jacobian, + method="lm", + xtol=1e-4, + x_scale=1.0, + ) + + return OptimizeSolarWindParamsResult( + sw_params=SolarWindParams.from_vector(raw.x, ctx.mass_kg), + residuals=raw.fun, + jacobian=raw.jac, + success=bool(raw.success), + ) + + +class _Evaluator: + """Caches the most recent (residuals, jacobian) so scipy.least_squares' separate + `fun` and `jac` callbacks share a single forward-model evaluation per state.""" + + def __init__(self, ctx: SolarWindFitContext): + self.ctx = ctx + self._last_state: ndarray | None = None + self._last_resid: ndarray | None = None + self._last_jac: ndarray | None = None + + def _eval(self, state: ndarray) -> None: + sw = SolarWindParams.from_vector(state, self.ctx.mass_kg) + rate_ideal, jacobian_ideal = model_solar_wind_ideal_coincidence_rates( + sw, self.ctx + ) + + df = deadtime_factor(rate_ideal) + + rate_observable = rate_ideal * df + jacobian = jacobian_ideal * np.square(df)[:, np.newaxis] + + residues = rate_observable - self.ctx.count_rate.ravel() + + self._last_state = state.copy() + self._last_residues = residues + self._last_jacobian = jacobian + + def _refresh(self, state: ndarray) -> None: + if self._last_state is None or not np.array_equal(state, self._last_state): + self._eval(state) + + def residues(self, state: ndarray) -> ndarray: + self._refresh(state) + return self._last_residues + + def jacobian(self, state: ndarray) -> ndarray: + self._refresh(state) + return self._last_jacobian diff --git a/imap_l3_processing/swapi/l3a/science/solar_wind/params.py b/imap_l3_processing/swapi/l3a/science/solar_wind/params.py new file mode 100644 index 000000000..3f08e6eae --- /dev/null +++ b/imap_l3_processing/swapi/l3a/science/solar_wind/params.py @@ -0,0 +1,83 @@ +import math +from typing import NamedTuple + +import numba +import numpy as np +from numpy import ndarray + +from imap_l3_processing.constants import ( + BOLTZMANN_CONSTANT_JOULES_PER_KELVIN, + METERS_PER_KILOMETER, +) + +# layout of "x" vector for the least-squares optimizer +LOG_DENSITY_IDX = 0 +LOG_TEMPERATURE_IDX = 1 +VELOCITY_SLICE = slice(2, 5) +N_STATE = 5 + + +class SolarWindParams(NamedTuple): + density: float + bulk_velocity_rtn: ndarray # shape (3,), km/s, inertial RTN + temperature: float # K + mass: float # kg + + def to_vector(self) -> ndarray: + state = np.empty(N_STATE) + state[LOG_DENSITY_IDX] = math.log(self.density) + state[LOG_TEMPERATURE_IDX] = math.log(self.temperature) + state[VELOCITY_SLICE] = self.bulk_velocity_rtn + return state + + @classmethod + def from_vector(cls, state: ndarray, mass: float) -> "SolarWindParams": + return cls( + density=math.exp(state[LOG_DENSITY_IDX]), + bulk_velocity_rtn=state[VELOCITY_SLICE], + temperature=math.exp(state[LOG_TEMPERATURE_IDX]), + mass=mass, + ) + + +@numba.njit +def bulk_speed(sw_params: SolarWindParams) -> float: + """||bulk_velocity_rtn||, km/s.""" + v = sw_params.bulk_velocity_rtn + return math.sqrt(v[0] ** 2 + v[1] ** 2 + v[2] ** 2) + + +@numba.njit +def bulk_angles_in_instrument_frame(sw_params: SolarWindParams, rotation_xyz_to_rtn): + v_xyz = rotation_xyz_to_rtn.T @ sw_params.bulk_velocity_rtn + return ( + math.degrees(math.atan2(-v_xyz[0], -v_xyz[1])), + math.degrees(math.asin(-v_xyz[2] / bulk_speed(sw_params))), + ) + + +@numba.njit +def thermal_speed(sw_params: SolarWindParams) -> float: + """Maxwellian standard deviation σ = √(kT/m), km/s.""" + temperature_k = sw_params.temperature + mass_kg = sw_params.mass + return temperature_to_thermal_speed(mass_kg, temperature_k) + + +@numba.njit +def temperature_to_thermal_speed(mass: float, temperature: float) -> float: + """mass [kg], temperature [K] -> thermal speed [km/s].""" + return ( + math.sqrt(BOLTZMANN_CONSTANT_JOULES_PER_KELVIN * temperature / mass) + / METERS_PER_KILOMETER + ) + + +@numba.njit +def thermal_speed_to_temperature(thermal_speed: float, mass: float) -> float: + """thermal speed [km/s], mass [kg] -> temperature [K].""" + return ( + mass + * (thermal_speed * METERS_PER_KILOMETER) ** 2 + / BOLTZMANN_CONSTANT_JOULES_PER_KELVIN + ) diff --git a/imap_l3_processing/swapi/l3a/science/solar_wind/proton/__init__.py b/imap_l3_processing/swapi/l3a/science/solar_wind/proton/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/imap_l3_processing/swapi/l3a/science/solar_wind/proton/basin_hopping.py b/imap_l3_processing/swapi/l3a/science/solar_wind/proton/basin_hopping.py new file mode 100644 index 000000000..ff49f76bc --- /dev/null +++ b/imap_l3_processing/swapi/l3a/science/solar_wind/proton/basin_hopping.py @@ -0,0 +1,90 @@ +import numpy as np +from numpy import ndarray + +from imap_l3_processing.swapi.l3a.science.solar_wind.fit_context import ( + SolarWindFitContext, +) +from imap_l3_processing.swapi.l3a.utils import optimal_density_scale +from imap_l3_processing.swapi.l3a.science.solar_wind.utils import average_spin_axis_rtn +from imap_l3_processing.swapi.l3a.science.solar_wind.forward_model import ( + model_solar_wind_ideal_coincidence_rates, +) +from imap_l3_processing.swapi.response.deadtime import deadtime_factor +from imap_l3_processing.swapi.l3a.science.solar_wind.optimizer import ( + OptimizeSolarWindParamsResult, + optimize_solar_wind_params, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.params import SolarWindParams + + +_MAX_BASIN_REFINE_ITERS = 6 +_ROTATED_RMSE_RATIO_THRESHOLD = 10 + + +def escape_local_minimum( + first_result: OptimizeSolarWindParamsResult, + ctx: SolarWindFitContext, +) -> OptimizeSolarWindParamsResult: + spin_axis_rtn = average_spin_axis_rtn(ctx.rotation_matrices) + + current_result = first_result + for _ in range(_MAX_BASIN_REFINE_ITERS): + flipped_mse, flipped_seed_params = _flipped_seed( + current_result, ctx, spin_axis_rtn + ) + + flipped_seed_is_substantially_worse_than_current = ( + flipped_mse >= current_result.mse * _ROTATED_RMSE_RATIO_THRESHOLD**2 + ) + if flipped_seed_is_substantially_worse_than_current: + break + + flipped_result: OptimizeSolarWindParamsResult = _restart_from_flipped_params( + flipped_seed_params, ctx + ) + + flipped_result_is_worse_than_current = flipped_result.mse > current_result.mse + if flipped_result_is_worse_than_current: + break + + current_result = flipped_result + + return current_result + + +def _flipped_seed( + lm_result: OptimizeSolarWindParamsResult, + ctx: SolarWindFitContext, + spin_axis_rtn: ndarray, +) -> tuple[float, SolarWindParams]: + sw = lm_result.sw_params + flipped_velocity = _flip_vector_about_axis(sw.bulk_velocity_rtn, spin_axis_rtn) + unit_ideal_rates, _ = model_solar_wind_ideal_coincidence_rates( + SolarWindParams(1.0, flipped_velocity, sw.temperature, sw.mass), + ctx, + ) + count_rate_flat = ctx.count_rate.ravel() + flipped_density = optimal_density_scale(unit_ideal_rates, count_rate_flat) + + # Same forward model as LM-1's residuals, evaluated self-consistently at + # `flipped_density` so the basin-check ratio compares apples to apples. + true_rate = flipped_density * unit_ideal_rates + obs_pred = true_rate * deadtime_factor(true_rate) + flipped_mse = float(np.mean((obs_pred - count_rate_flat) ** 2)) + + return flipped_mse, SolarWindParams( + density=flipped_density, + bulk_velocity_rtn=flipped_velocity, + temperature=sw.temperature, + mass=sw.mass, + ) + + +def _flip_vector_about_axis(v: ndarray, axis: ndarray) -> ndarray: + return 2.0 * axis * float(np.dot(axis, v)) - v + + +def _restart_from_flipped_params( + flipped_params: SolarWindParams, ctx: SolarWindFitContext +) -> OptimizeSolarWindParamsResult: + return optimize_solar_wind_params(flipped_params, ctx=ctx) diff --git a/imap_l3_processing/swapi/l3a/science/solar_wind/proton/fit_model.py b/imap_l3_processing/swapi/l3a/science/solar_wind/proton/fit_model.py new file mode 100644 index 000000000..e25e8d712 --- /dev/null +++ b/imap_l3_processing/swapi/l3a/science/solar_wind/proton/fit_model.py @@ -0,0 +1,110 @@ +from dataclasses import dataclass + +import numpy as np +from numpy import ndarray +from uncertainties import UFloat, covariance_matrix, ufloat + +from imap_l3_processing.swapi.l3a.science.solar_wind.fit_context import ( + SolarWindFitContext, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.proton.initial_guess import ( + calculate_initial_guess, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.optimizer import ( + optimize_solar_wind_params, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.proton.basin_hopping import ( + escape_local_minimum, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.uncertainties import ( + derive_uncertainties, + make_correlated_velocity, + r_squared, +) +from imap_l3_processing.swapi.constants import SWAPI_COARSE_SWEEP_BINS +from imap_l3_processing.swapi.quality_flags import SwapiL3Flags + + +_R_SQUARED_PEAK_HALF_WIDTH = 4 + + +@dataclass +class ProtonSolarWindFitResult: + density: UFloat # cm^-3 + temperature: UFloat # K + bulk_velocity_rtn: tuple[UFloat, UFloat, UFloat] # km/s, [R, T, N]; correlated + bad_fit_flag: int + + def bulk_velocity_rtn_nominal(self) -> ndarray: + return np.array([v.nominal_value for v in self.bulk_velocity_rtn]) + + def bulk_velocity_rtn_covariance(self) -> ndarray: + return np.array(covariance_matrix(self.bulk_velocity_rtn)) + + +def fit_solar_wind_proton_model(ctx: SolarWindFitContext) -> ProtonSolarWindFitResult: + initial_guess = calculate_initial_guess(ctx) + first_result = optimize_solar_wind_params(initial_guess, ctx) + final_result = escape_local_minimum(first_result, ctx) + return _construct_fit_result(final_result, ctx) + + +def _construct_fit_result(final_result, ctx): + if not final_result.success: + return _nan_proton_fit_result(int(SwapiL3Flags.FIT_ERROR)) + + fit_r_squared = _coarse_peak_averaged_r_squared( + final_result.residuals, ctx.count_rate + ) + flag_bad = ( + fit_r_squared < 0.9 + or final_result.sw_params.temperature > 5.0e5 + ) + if flag_bad: + return _nan_proton_fit_result(int(SwapiL3Flags.BAD_FIT)) + + density_sigma, temperature_sigma, velocity_covariance = derive_uncertainties( + final_result, ctx + ) + density = ufloat(final_result.sw_params.density, density_sigma) + temperature = ufloat(final_result.sw_params.temperature, temperature_sigma) + bulk_velocity_rtn = make_correlated_velocity( + final_result.sw_params.bulk_velocity_rtn, velocity_covariance + ) + return ProtonSolarWindFitResult( + density=density, + temperature=temperature, + bulk_velocity_rtn=bulk_velocity_rtn, + bad_fit_flag=int(SwapiL3Flags.NONE), + ) + + +def _nan_proton_fit_result(bad_fit_flag: int) -> ProtonSolarWindFitResult: + nan = ufloat(np.nan, np.nan) + return ProtonSolarWindFitResult( + density=nan, + temperature=nan, + bulk_velocity_rtn=(nan, nan, nan), + bad_fit_flag=bad_fit_flag, + ) + + +def _coarse_peak_averaged_r_squared(residuals: ndarray, count_rate: ndarray) -> float: + if count_rate.ndim != 2: + return r_squared(residuals, count_rate) + n_coarse_bins = SWAPI_COARSE_SWEEP_BINS.stop - SWAPI_COARSE_SWEEP_BINS.start + coarse_count_rate_per_sweep = count_rate[:, :n_coarse_bins] + coarse_residual_per_sweep = residuals.reshape(count_rate.shape)[:, :n_coarse_bins] + averaged_count_rate = np.nanmean(coarse_count_rate_per_sweep, axis=0) + averaged_residual = np.nanmean(coarse_residual_per_sweep, axis=0) + peak_index = int(np.nanargmax(averaged_count_rate)) + n_bins = averaged_count_rate.shape[0] + clamped_peak_index = max( + _R_SQUARED_PEAK_HALF_WIDTH, + min(peak_index, n_bins - _R_SQUARED_PEAK_HALF_WIDTH - 1), + ) + window = slice( + clamped_peak_index - _R_SQUARED_PEAK_HALF_WIDTH, + clamped_peak_index + _R_SQUARED_PEAK_HALF_WIDTH + 1, + ) + return r_squared(averaged_residual[window], averaged_count_rate[window]) diff --git a/imap_l3_processing/swapi/l3a/science/solar_wind/proton/initial_guess.py b/imap_l3_processing/swapi/l3a/science/solar_wind/proton/initial_guess.py new file mode 100644 index 000000000..8f2617cc6 --- /dev/null +++ b/imap_l3_processing/swapi/l3a/science/solar_wind/proton/initial_guess.py @@ -0,0 +1,117 @@ +import numpy as np +import scipy.optimize +from numpy import ndarray +from numpy.typing import ArrayLike + +from imap_l3_processing.constants import ( + BOLTZMANN_CONSTANT_JOULES_PER_KELVIN, + METERS_PER_KILOMETER, + PROTON_CHARGE_COULOMBS, + PROTON_MASS_KG, +) +from imap_l3_processing.swapi.constants import SWAPI_K_FACTOR +from imap_l3_processing.swapi.l3a.science.solar_wind.forward_model import ( + model_solar_wind_ideal_coincidence_rates, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.fit_context import ( + SolarWindFitContext, +) +from imap_l3_processing.swapi.l3a.utils import optimal_density_scale +from imap_l3_processing.swapi.l3a.science.solar_wind.utils import average_spin_axis_rtn +from imap_l3_processing.swapi.l3a.science.solar_wind.params import SolarWindParams, temperature_to_thermal_speed, \ + thermal_speed_to_temperature + + +# 1 eV +INITIAL_TEMPERATURE_FLOOR_K = ( + PROTON_CHARGE_COULOMBS / BOLTZMANN_CONSTANT_JOULES_PER_KELVIN +) + + +def esa_voltage_to_proton_speed(esa_voltage: ArrayLike) -> np.ndarray: + return ( + np.sqrt( + 2 + * SWAPI_K_FACTOR + * PROTON_CHARGE_COULOMBS + * np.abs(esa_voltage) + / PROTON_MASS_KG + ) + / METERS_PER_KILOMETER + ) + + +def calculate_initial_guess(ctx: SolarWindFitContext) -> SolarWindParams: + count_rate = ctx.count_rate.ravel() + speed = esa_voltage_to_proton_speed(ctx.esa_voltage.ravel()) + + peak_idx = np.nanargmax(count_rate) + bulk_speed_seed = float(speed[peak_idx]) + + temperature_seed = max( + 60000.0 * (bulk_speed_seed / 400.0) ** 2, + INITIAL_TEMPERATURE_FLOOR_K, + ) + + bulk_speed_init, temperature = _gaussian_refine_bulk_speed_and_temperature( + speed, + count_rate, + bulk_speed_seed, + temperature_seed, + ctx.mass_kg, + ) + + spin_axis_rtn = average_spin_axis_rtn(ctx.rotation_matrices) + bulk_velocity_rtn = -bulk_speed_init * spin_axis_rtn + + unit_ideal_rates, _ = model_solar_wind_ideal_coincidence_rates( + SolarWindParams(1.0, bulk_velocity_rtn, temperature, ctx.mass_kg), + ctx, + ) + density = optimal_density_scale(unit_ideal_rates, count_rate) + + return SolarWindParams( + density=density, + bulk_velocity_rtn=bulk_velocity_rtn, + temperature=temperature, + mass=ctx.mass_kg, + ) + + +def _gaussian_refine_bulk_speed_and_temperature( + speed: ndarray, + count_rate: ndarray, + bulk_speed_seed: float, + temperature_seed: float, + mass_kg: float, +) -> tuple[float, float]: + def gaussian(v, amplitude, mean, sigma): + return amplitude * np.exp(-0.5 * ((v - mean) / sigma) ** 2) + + seed_normalization_coefficient = float(np.nanmax(count_rate)) + seed_center = bulk_speed_seed + seed_scale = temperature_to_thermal_speed(mass_kg, temperature_seed) + p0 = [seed_normalization_coefficient, seed_center, seed_scale] + + try: + (_, bulk_speed_fit, sigma_fit), _ = scipy.optimize.curve_fit( + gaussian, + speed, + count_rate, + p0=p0, + ) + except RuntimeError as e: + raise RuntimeError( + f"Initial-guess Gaussian fit failed for spectrum with peak-bin " + f"speed {bulk_speed_seed:.1f} km/s and seed temperature " + f"{temperature_seed:.0f} K." + ) from e + + sigma_fit = abs(float(sigma_fit)) + temperature_fit = max( + thermal_speed_to_temperature(sigma_fit, mass_kg), + INITIAL_TEMPERATURE_FLOOR_K, + ) + return float(bulk_speed_fit), float(temperature_fit) + + diff --git a/imap_l3_processing/swapi/l3a/science/solar_wind/uncertainties.py b/imap_l3_processing/swapi/l3a/science/solar_wind/uncertainties.py new file mode 100644 index 000000000..aa2406f15 --- /dev/null +++ b/imap_l3_processing/swapi/l3a/science/solar_wind/uncertainties.py @@ -0,0 +1,87 @@ +import numpy as np +from numpy import ndarray +from uncertainties import UFloat, correlated_values, ufloat + +from imap_l3_processing.swapi.l3a.science.solar_wind.fit_context import ( + SolarWindFitContext, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.params import ( + LOG_DENSITY_IDX, + LOG_TEMPERATURE_IDX, + VELOCITY_SLICE, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.optimizer import ( + OptimizeSolarWindParamsResult, +) + + +def compute_hc3_parameter_covariance( + jacobian: ndarray, residuals: ndarray +) -> ndarray: + n_params = jacobian.shape[1] + try: + JT_J_pseudoinverse = np.linalg.pinv(jacobian.T @ jacobian) + h_ii = np.einsum( + "ki,ij,jk->k", + jacobian, + JT_J_pseudoinverse, + jacobian.T, + ) + h_ii_clipped = np.clip(h_ii, 0.0, 0.9999) + hc3_weights = (residuals / (1.0 - h_ii_clipped)) ** 2 + sandwich_middle = np.einsum( + "ki,k,kj->ij", jacobian, hc3_weights, jacobian + ) + return JT_J_pseudoinverse @ sandwich_middle @ JT_J_pseudoinverse + except np.linalg.LinAlgError: + return np.full((n_params, n_params), np.nan) + + +def r_squared(residuals: ndarray, data: ndarray) -> float: + data_mean = float(np.mean(data)) + ss_tot = float(np.sum((data - data_mean) ** 2)) + if ss_tot <= 0.0: + return float("nan") + ss_res = float(np.sum(residuals**2)) + return 1.0 - ss_res / ss_tot + + +def derive_uncertainties( + result: OptimizeSolarWindParamsResult, + ctx: SolarWindFitContext, +) -> tuple[float, float, ndarray]: + parameter_covariance = compute_hc3_parameter_covariance( + result.jacobian, result.residuals + ) + if not np.all(np.isfinite(parameter_covariance)): + return np.nan, np.nan, np.full((3, 3), np.nan) + + log_density_variance = parameter_covariance[LOG_DENSITY_IDX, LOG_DENSITY_IDX] + log_temperature_variance = parameter_covariance[ + LOG_TEMPERATURE_IDX, LOG_TEMPERATURE_IDX + ] + + density_error = float( + result.sw_params.density * np.sqrt(max(log_density_variance, 0.0)) + ) + temperature_error = float( + result.sw_params.temperature * np.sqrt(max(log_temperature_variance, 0.0)) + ) + velocity_covariance = parameter_covariance[VELOCITY_SLICE, VELOCITY_SLICE] + + return ( + density_error, + temperature_error, + velocity_covariance, + ) + + +def make_correlated_velocity( + nominal: ndarray, covariance: ndarray +) -> tuple[UFloat, UFloat, UFloat]: + is_finite = np.all(np.isfinite(covariance)) + is_positive_semidefinite = is_finite and np.linalg.eigvalsh(covariance)[0] >= 0 + if not is_positive_semidefinite: + return tuple(ufloat(float(v), np.nan) for v in nominal) + + return tuple(correlated_values(nominal, covariance)) diff --git a/imap_l3_processing/swapi/l3a/science/solar_wind/utils.py b/imap_l3_processing/swapi/l3a/science/solar_wind/utils.py new file mode 100644 index 000000000..00f8a785b --- /dev/null +++ b/imap_l3_processing/swapi/l3a/science/solar_wind/utils.py @@ -0,0 +1,32 @@ +import math + +import numba +import numpy as np +from numpy import ndarray + +from imap_l3_processing.swapi.l3a.science.solar_wind.params import ( + SolarWindParams, + thermal_speed, +) +from imap_l3_processing.swapi.response.swapi_response import ResponseGrid + + +def average_spin_axis_rtn(rotation_matrices: ndarray) -> ndarray: + boresight_direction_in_RTN = rotation_matrices[:, :, 1] + mean_direction = boresight_direction_in_RTN.mean(axis=0) + normalized_mean_direction = mean_direction / np.linalg.norm(mean_direction) + return normalized_mean_direction + + +@numba.njit +def count_rate_conversion_factor( + sw_params: SolarWindParams, response_grid: ResponseGrid +) -> float: + sigma = thermal_speed(sw_params) + return ( + response_grid.central_effective_area + * sw_params.density + * (np.sqrt(2 * np.pi) * sigma) ** -3 + * (math.pi / 180.0) ** 2 + * 1e5 # km -> cm + ) diff --git a/imap_l3_processing/swapi/l3a/science/speed_calculation.py b/imap_l3_processing/swapi/l3a/science/speed_calculation.py deleted file mode 100644 index 51d5e548d..000000000 --- a/imap_l3_processing/swapi/l3a/science/speed_calculation.py +++ /dev/null @@ -1,48 +0,0 @@ -import numpy as np -from uncertainties import wrap -from uncertainties.unumpy import nominal_values - - -def get_peak_indices(count_rates, width, mask=True) -> slice: - max_indices = np.argwhere( - (count_rates == np.max(count_rates, where=mask, initial=0)) & mask) - left_min_index = np.min(max_indices) - right_min_index = np.max(max_indices) - - if right_min_index - left_min_index > 1: - raise Exception("Count rates contains multiple distinct peaks") - - return slice(max(0, left_min_index - width), right_min_index + width+1) - -def find_peak_center_of_mass_index(peak_slice, count_rates, minimum_count_rate=0, minimum_bin_count=0): - count_rates = np.asarray(count_rates) - indices = np.arange(len(count_rates)) - peak_indices = indices[peak_slice] - peak_counts = count_rates[peak_slice] - at_least_minimum = nominal_values(peak_counts) >= minimum_count_rate - - filtered_peak_indices = peak_indices[at_least_minimum] - - if len(filtered_peak_indices) < minimum_bin_count: - raise Exception("Too few bins after removing low count rates") - - filtered_peak_counts = peak_counts[at_least_minimum] - center_of_mass_index = np.sum(filtered_peak_indices * filtered_peak_counts) / np.sum(filtered_peak_counts) - return center_of_mass_index - -def interpolate_energy(center_of_mass_index, energies): - interpolate_lambda = lambda x: np.exp(np.interp(x, np.arange(len(energies)), np.log(energies))) - interpolate = wrap(interpolate_lambda) - return interpolate(center_of_mass_index) - - -def times_for_sweep(start_time): - time_step_per_bin = 12 / 72 - return start_time + time_step_per_bin * np.arange(72) - - -def extract_coarse_sweep(data: np.ndarray): - if data.ndim > 1: - return data[:, 1:63] - else: - return data[1:63] \ No newline at end of file diff --git a/imap_l3_processing/swapi/l3a/swapi_l3a_dependencies.py b/imap_l3_processing/swapi/l3a/swapi_l3a_dependencies.py index 02d3d37b8..a19b3b990 100644 --- a/imap_l3_processing/swapi/l3a/swapi_l3a_dependencies.py +++ b/imap_l3_processing/swapi/l3a/swapi_l3a_dependencies.py @@ -1,29 +1,27 @@ from dataclasses import dataclass from pathlib import Path +from typing import Optional from imap_data_access import download from imap_data_access.processing_input import ProcessingInputCollection from spacepy.pycdf import CDF +from imap_l3_processing.models import MagData from imap_l3_processing.swapi.descriptors import SWAPI_L2_DESCRIPTOR, \ - PROTON_TEMPERATURE_DENSITY_LOOKUP_TABLE_DESCRIPTOR, \ - ALPHA_TEMPERATURE_DENSITY_LOOKUP_TABLE_DESCRIPTOR, CLOCK_ANGLE_AND_FLOW_DEFLECTION_LOOKUP_TABLE_DESCRIPTOR, \ GEOMETRIC_FACTOR_PUI_LOOKUP_TABLE_DESCRIPTOR, INSTRUMENT_RESPONSE_LOOKUP_TABLE_DESCRIPTOR, \ DENSITY_OF_NEUTRAL_HELIUM_DESCRIPTOR, EFFICIENCY_LOOKUP_TABLE_DESCRIPTOR, HYDROGEN_INFLOW_VECTOR_DESCRIPTOR, \ - HELIUM_INFLOW_VECTOR_DESCRIPTOR + HELIUM_INFLOW_VECTOR_DESCRIPTOR, AZIMUTHAL_TRANSMISSION_DESCRIPTOR, \ + CENTRAL_EFFECTIVE_AREA_DESCRIPTOR, PASSBAND_FIT_COEFFICIENTS_DESCRIPTOR, \ + MAG_RTN_DESCRIPTOR from imap_l3_processing.swapi.l3a.models import SwapiL2Data -from imap_l3_processing.swapi.l3a.science.calculate_alpha_solar_wind_temperature_and_density import \ - AlphaTemperatureDensityCalibrationTable -from imap_l3_processing.swapi.l3a.science.calculate_proton_solar_wind_clock_and_deflection_angles import \ - ClockAngleCalibrationTable -from imap_l3_processing.swapi.l3a.science.calculate_proton_solar_wind_temperature_and_density import \ - ProtonTemperatureAndDensityCalibrationTable from imap_l3_processing.swapi.l3a.science.density_of_neutral_helium_lookup_table import \ DensityOfNeutralHeliumLookupTable from imap_l3_processing.swapi.l3a.science.inflow_vector import InflowVector -from imap_l3_processing.swapi.l3a.utils import read_l2_swapi_data +from imap_l3_processing.swapi.l3a.utils import read_l2_swapi_data, read_mag_rtn_data +from imap_l3_processing.utils import select_mag_path from imap_l3_processing.swapi.l3b.science.efficiency_calibration_table import EfficiencyCalibrationTable from imap_l3_processing.swapi.l3b.science.geometric_factor_calibration_table import GeometricFactorCalibrationTable +from imap_l3_processing.swapi.response.swapi_response import SwapiResponse from imap_l3_processing.swapi.l3b.science.instrument_response_lookup_table import \ InstrumentResponseLookupTableCollection @@ -31,85 +29,70 @@ @dataclass class SwapiL3ADependencies: data: SwapiL2Data - proton_temperature_density_calibration_table: ProtonTemperatureAndDensityCalibrationTable - alpha_temperature_density_calibration_table: AlphaTemperatureDensityCalibrationTable - clock_angle_and_flow_deflection_calibration_table: ClockAngleCalibrationTable efficiency_calibration_table: EfficiencyCalibrationTable geometric_factor_calibration_table: GeometricFactorCalibrationTable instrument_response_calibration_table: InstrumentResponseLookupTableCollection density_of_neutral_helium_calibration_table: DensityOfNeutralHeliumLookupTable hydrogen_inflow_vector: InflowVector helium_inflow_vector: InflowVector + swapi_response: SwapiResponse + mag_data: Optional[MagData] = None + mag_is_preliminary: bool = False @classmethod def fetch_dependencies(cls, dependencies: ProcessingInputCollection): # @formatter:off science_dependency_file = dependencies.get_file_paths(source='swapi', descriptor=SWAPI_L2_DESCRIPTOR) - proton_density_and_temperature_calibration_file = dependencies.get_file_paths(source='swapi', descriptor=PROTON_TEMPERATURE_DENSITY_LOOKUP_TABLE_DESCRIPTOR) - alpha_density_and_temperature_calibration_file = dependencies.get_file_paths(source='swapi', descriptor=ALPHA_TEMPERATURE_DENSITY_LOOKUP_TABLE_DESCRIPTOR) - clock_and_deflection_file = dependencies.get_file_paths(source='swapi', descriptor=CLOCK_ANGLE_AND_FLOW_DEFLECTION_LOOKUP_TABLE_DESCRIPTOR) efficiency_calibration_table = dependencies.get_file_paths(source='swapi', descriptor=EFFICIENCY_LOOKUP_TABLE_DESCRIPTOR) geometric_factor_calibration_table = dependencies.get_file_paths(source='swapi', descriptor=GEOMETRIC_FACTOR_PUI_LOOKUP_TABLE_DESCRIPTOR) instrument_response_table = dependencies.get_file_paths(source='swapi', descriptor=INSTRUMENT_RESPONSE_LOOKUP_TABLE_DESCRIPTOR) neutral_helium_table = dependencies.get_file_paths(source='swapi', descriptor=DENSITY_OF_NEUTRAL_HELIUM_DESCRIPTOR) hydrogen_vector_paths = dependencies.get_file_paths(source='swapi', descriptor=HYDROGEN_INFLOW_VECTOR_DESCRIPTOR) helium_vector_paths = dependencies.get_file_paths(source='swapi', descriptor=HELIUM_INFLOW_VECTOR_DESCRIPTOR) + azimuthal_transmission_paths = dependencies.get_file_paths(source='swapi', descriptor=AZIMUTHAL_TRANSMISSION_DESCRIPTOR) + central_effective_area_paths = dependencies.get_file_paths(source='swapi', descriptor=CENTRAL_EFFECTIVE_AREA_DESCRIPTOR) + passband_fit_coefficients_paths = dependencies.get_file_paths(source='swapi', descriptor=PASSBAND_FIT_COEFFICIENTS_DESCRIPTOR) # @formatter:on - science_download_path = download(science_dependency_file[0]) - proton_density_and_temperature_calibration_file_path = download( - proton_density_and_temperature_calibration_file[0]) - alpha_density_and_temperature_calibration_file_path = download( - alpha_density_and_temperature_calibration_file[0]) - clock_and_deflection_file_path = download(clock_and_deflection_file[0]) - efficiency_calibration_table_path = download(efficiency_calibration_table[0]) - geometric_factor_calibration_table_path = download(geometric_factor_calibration_table[0]) - instrument_response_table_path = download(instrument_response_table[0]) - neutral_helium_table_path = download(neutral_helium_table[0]) - hydrogen_vector_path = download(hydrogen_vector_paths[0]) - helium_vector_path = download(helium_vector_paths[0]) + mag_path, mag_level = select_mag_path(dependencies, MAG_RTN_DESCRIPTOR) + mag_is_preliminary = mag_level == "l1d" return cls.from_file_paths( - science_download_path, - proton_density_and_temperature_calibration_file_path, - alpha_density_and_temperature_calibration_file_path, - clock_and_deflection_file_path, - efficiency_calibration_table_path, - geometric_factor_calibration_table_path, - instrument_response_table_path, - neutral_helium_table_path, - hydrogen_vector_path, - helium_vector_path + download(science_dependency_file[0]), + download(efficiency_calibration_table[0]), + download(geometric_factor_calibration_table[0]), + download(instrument_response_table[0]), + download(neutral_helium_table[0]), + download(hydrogen_vector_paths[0]), + download(helium_vector_paths[0]), + download(azimuthal_transmission_paths[0]), + download(central_effective_area_paths[0]), + download(passband_fit_coefficients_paths[0]), + mag_path, + mag_is_preliminary, ) @classmethod - def from_file_paths(cls, science_dependency_path: Path, proton_density_and_temperature_calibration_path: Path, - alpha_density_and_temperature_calibration_path: Path, clock_and_deflection_file_path: Path, + def from_file_paths(cls, science_dependency_path: Path, efficiency_calibration_path: Path, geometric_factor_calibration_path: Path, instrument_response_path: Path, neutral_helium_path: Path, hydrogen_inflow_vector_path: Path, - helium_inflow_vector_path: Path): - swapi_l2_data = read_l2_swapi_data(CDF(str(science_dependency_path))) - proton_density_temp_lookup = ProtonTemperatureAndDensityCalibrationTable.from_file( - proton_density_and_temperature_calibration_path) - alpha_density_temp_lookup = AlphaTemperatureDensityCalibrationTable.from_file( - alpha_density_and_temperature_calibration_path) - clock_deflection_lookup = ClockAngleCalibrationTable.from_file(clock_and_deflection_file_path) - efficiency_lookup = EfficiencyCalibrationTable(efficiency_calibration_path) - geometric_factor_calibration_lookup = GeometricFactorCalibrationTable.from_file( - geometric_factor_calibration_path) - instrument_response_lookup = InstrumentResponseLookupTableCollection.from_file(instrument_response_path) - neutral_helium_lookup = DensityOfNeutralHeliumLookupTable.from_file(neutral_helium_path) - - hydrogen_inflow_vector = InflowVector.from_file(hydrogen_inflow_vector_path) - helium_inflow_vector = InflowVector.from_file(helium_inflow_vector_path) - - return cls(swapi_l2_data, - proton_density_temp_lookup, - alpha_density_temp_lookup, - clock_deflection_lookup, - efficiency_lookup, - geometric_factor_calibration_lookup, - instrument_response_lookup, - neutral_helium_lookup, - hydrogen_inflow_vector, - helium_inflow_vector) + helium_inflow_vector_path: Path, azimuthal_transmission_path: Path, + central_effective_area_path: Path, passband_fit_coefficients_path: Path, + mag_path: Optional[Path] = None, + mag_is_preliminary: bool = False): + return cls( + data=read_l2_swapi_data(CDF(str(science_dependency_path))), + efficiency_calibration_table=EfficiencyCalibrationTable(efficiency_calibration_path), + geometric_factor_calibration_table=GeometricFactorCalibrationTable.from_file( + geometric_factor_calibration_path), + instrument_response_calibration_table=InstrumentResponseLookupTableCollection.from_file( + instrument_response_path), + density_of_neutral_helium_calibration_table=DensityOfNeutralHeliumLookupTable.from_file( + neutral_helium_path), + hydrogen_inflow_vector=InflowVector.from_file(hydrogen_inflow_vector_path), + helium_inflow_vector=InflowVector.from_file(helium_inflow_vector_path), + swapi_response=SwapiResponse.from_files( + azimuthal_transmission_path, central_effective_area_path, passband_fit_coefficients_path), + mag_data=read_mag_rtn_data(mag_path) if mag_path is not None else None, + mag_is_preliminary=mag_is_preliminary, + ) diff --git a/imap_l3_processing/swapi/l3a/utils.py b/imap_l3_processing/swapi/l3a/utils.py index 048764e60..bf7a92f1d 100644 --- a/imap_l3_processing/swapi/l3a/utils.py +++ b/imap_l3_processing/swapi/l3a/utils.py @@ -1,28 +1,135 @@ from datetime import datetime from typing import Iterable +import numpy as np +import scipy.optimize +from numpy import ndarray from spacepy import pycdf from spacepy.pycdf import CDF +from uncertainties import UFloat, umath, unumpy from imap_l3_processing.cdf.cdf_utils import read_numeric_variable +from imap_l3_processing.constants import ( + METERS_PER_KILOMETER, + ONE_SECOND_IN_NANOSECONDS, + THIRTY_SECONDS_IN_NANOSECONDS, +) +from imap_l3_processing.models import MagData from imap_l3_processing.swapi.l3a.models import SwapiL2Data +from imap_processing.spice.geometry import ( + SpiceFrame, + frame_transform, + get_rotation_matrix, + imap_state, +) +from imap_processing.spice.time import ttj2000ns_to_et + +from imap_l3_processing.swapi.response.deadtime import deadtime_factor + + +def calculate_sw_speed(particle_mass, particle_charge, energy): + speed_squared = 2 * energy * particle_charge / particle_mass + if isinstance(energy, UFloat): + return umath.sqrt(speed_squared) / METERS_PER_KILOMETER + if isinstance(energy, np.ndarray) and energy.dtype == object: + return unumpy.sqrt(speed_squared) / METERS_PER_KILOMETER + return np.sqrt(speed_squared) / METERS_PER_KILOMETER + + +def read_mag_rtn_data(cdf_path) -> MagData: + with CDF(str(cdf_path)) as cdf: + var = cdf["b_rtn"] + data = read_numeric_variable(var)[:, :3] + attrs = var.attrs + if "VALIDMIN" in attrs: + data = np.where(data < float(attrs["VALIDMIN"]), np.nan, data) + if "VALIDMAX" in attrs: + data = np.where(data > float(attrs["VALIDMAX"]), np.nan, data) + return MagData( + epoch=pycdf.lib.v_datetime_to_tt2000(cdf["epoch"][...]), + mag_data=data, + ) def read_l2_swapi_data(cdf: CDF) -> SwapiL2Data: sci_start_times = pycdf.lib.v_datetime_to_tt2000( - [datetime.fromisoformat(x) for x in cdf["sci_start_time"][...]]) - return SwapiL2Data(sci_start_times, - read_numeric_variable(cdf["esa_energy"]), - read_numeric_variable(cdf["swp_coin_rate"]), - read_numeric_variable(cdf["swp_coin_rate_stat_uncert_plus"])) + [datetime.fromisoformat(x) for x in cdf["sci_start_time"][...]] + ) + return SwapiL2Data( + sci_start_times, + read_numeric_variable(cdf["esa_energy"]), + read_numeric_variable(cdf["swp_coin_rate"]), + read_numeric_variable(cdf["swp_coin_rate_stat_uncert_plus"]), + ) + + +def get_swapi_geometry(measurement_time: ndarray) -> ndarray: + et_times = ttj2000ns_to_et(np.atleast_1d(measurement_time)) + return get_rotation_matrix(et_times, SpiceFrame.IMAP_SWAPI, SpiceFrame.IMAP_RTN) + + +def rotate_rtn_to_dps(vector_rtn, epoch_tt2000_ns: float): + et = float(ttj2000ns_to_et(epoch_tt2000_ns)) + return frame_transform( + et, np.asarray(vector_rtn), SpiceFrame.IMAP_RTN, SpiceFrame.IMAP_DPS + ) + + +def get_spacecraft_velocity_rtn(epoch_tt2000_ns: float) -> ndarray: + et = float(ttj2000ns_to_et(epoch_tt2000_ns)) + state_eclipj2000 = imap_state(et, SpiceFrame.ECLIPJ2000) + rtn_from_eclipj2000 = get_rotation_matrix( + et, SpiceFrame.ECLIPJ2000, SpiceFrame.IMAP_RTN + ) + return np.einsum("ij,j->i", rtn_from_eclipj2000, state_eclipj2000[3:]) + + +def compute_direction_of_mean_magnetic_field_over_chunk( + mag_data, + chunk_epoch_center_tt2000_ns: int, + chunk_epoch_delta_ns: int, +) -> np.ndarray: + start = chunk_epoch_center_tt2000_ns - chunk_epoch_delta_ns + end = chunk_epoch_center_tt2000_ns + chunk_epoch_delta_ns + left = np.searchsorted(mag_data.epoch, start, side="left") + right = np.searchsorted(mag_data.epoch, end, side="left") + if right == left: + return np.full(3, np.nan) + b_mean = mag_data.mag_data[left:right].mean(axis=0) + if not np.all(np.isfinite(b_mean)): + return np.full(3, np.nan) + return b_mean / np.linalg.norm(b_mean) + def chunk_l2_data(data: SwapiL2Data, chunk_size: int) -> Iterable[SwapiL2Data]: - i = 0 - while i < len(data.sci_start_time): + n = len(data.sci_start_time) + for i in range(0, n - n % chunk_size, chunk_size): yield SwapiL2Data( - data.sci_start_time[i:i + chunk_size], - data.energy[i:i + chunk_size], - data.coincidence_count_rate[i:i + chunk_size], - data.coincidence_count_rate_uncertainty[i:i + chunk_size] + data.sci_start_time[i : i + chunk_size], + data.energy[i : i + chunk_size], + data.coincidence_count_rate[i : i + chunk_size], + data.coincidence_count_rate_uncertainty[i : i + chunk_size], ) - i += chunk_size + + +def chunk_epoch(chunk: SwapiL2Data) -> float: + return chunk.sci_start_time[0] + THIRTY_SECONDS_IN_NANOSECONDS + + +def measurement_times(chunk: SwapiL2Data, bin_slice: slice) -> ndarray: + bins = np.arange(bin_slice.start, bin_slice.stop) + return ( + chunk.sci_start_time[:, np.newaxis] + + bins * (12 / 72 * ONE_SECOND_IN_NANOSECONDS) + ).flatten() + + +def optimal_density_scale(unit_ideal_rates: ndarray, observed_rates: ndarray) -> float: + def predicted_observed_rate(unit_rate, density): + true_rate = density * unit_rate + return true_rate * deadtime_factor(true_rate) + + popt, _ = scipy.optimize.curve_fit( + f=predicted_observed_rate, xdata=unit_ideal_rates, ydata=observed_rates, p0=[1] + ) + return float(popt[0]) diff --git a/imap_l3_processing/swapi/l3b/science/calculate_solar_wind_vdf.py b/imap_l3_processing/swapi/l3b/science/calculate_solar_wind_vdf.py index 58483603b..96d8e6fcb 100644 --- a/imap_l3_processing/swapi/l3b/science/calculate_solar_wind_vdf.py +++ b/imap_l3_processing/swapi/l3b/science/calculate_solar_wind_vdf.py @@ -8,7 +8,7 @@ from imap_l3_processing.constants import PROTON_MASS_KG, PROTON_CHARGE_COULOMBS, ALPHA_PARTICLE_CHARGE_COULOMBS, \ ALPHA_PARTICLE_MASS_KG, HE_PUI_PARTICLE_MASS_KG, PUI_PARTICLE_CHARGE_COULOMBS, METERS_PER_KILOMETER, \ CENTIMETERS_PER_METER -from imap_l3_processing.swapi.l3a.science.calculate_proton_solar_wind_speed import calculate_sw_speed +from imap_l3_processing.swapi.l3a.utils import calculate_sw_speed from imap_l3_processing.swapi.l3b.science.geometric_factor_calibration_table import GeometricFactorCalibrationTable diff --git a/imap_l3_processing/swapi/l3b/science/efficiency_calibration_table.py b/imap_l3_processing/swapi/l3b/science/efficiency_calibration_table.py index 4935dc9a1..43175c2d4 100644 --- a/imap_l3_processing/swapi/l3b/science/efficiency_calibration_table.py +++ b/imap_l3_processing/swapi/l3b/science/efficiency_calibration_table.py @@ -12,6 +12,14 @@ def get_proton_efficiency_for(self, time_as_tt2000) -> float: def get_alpha_efficiency_for(self, time_as_tt2000) -> float: return self._get_efficiency_for_index("alpha efficiency", time_as_tt2000) + @property + def eps_p_lab(self) -> float: + cutoff = np.datetime64("2025-11-01", "ns") + for d in self.data: + if d["time"] >= cutoff: + return float(d["proton efficiency"]) + return float(self.data[0]["proton efficiency"]) + def _get_efficiency_for_index(self, name, time_as_tt2000) -> float: for d in reversed(self.data): if d["time"] < np.datetime64(pycdf.lib.tt2000_to_datetime(int(time_as_tt2000)), "ns"): diff --git a/imap_l3_processing/swapi/l3b/science/instrument_response_lookup_table.py b/imap_l3_processing/swapi/l3b/science/instrument_response_lookup_table.py index 885202d87..5925bfec4 100644 --- a/imap_l3_processing/swapi/l3b/science/instrument_response_lookup_table.py +++ b/imap_l3_processing/swapi/l3b/science/instrument_response_lookup_table.py @@ -6,7 +6,7 @@ import numpy as np from imap_l3_processing.constants import HE_PUI_PARTICLE_MASS_KG, PUI_PARTICLE_CHARGE_COULOMBS -from imap_l3_processing.swapi.l3a.science.calculate_proton_solar_wind_speed import calculate_sw_speed +from imap_l3_processing.swapi.l3a.utils import calculate_sw_speed @dataclass diff --git a/imap_l3_processing/swapi/quality_flags.py b/imap_l3_processing/swapi/quality_flags.py index b0e3de371..7b9c60ad1 100644 --- a/imap_l3_processing/swapi/quality_flags.py +++ b/imap_l3_processing/swapi/quality_flags.py @@ -3,6 +3,7 @@ class SwapiL3Flags(FlagNameMixin): NONE = CommonFlags.NONE - SWP_SW_ANGLES_ESTIMATED = 2 ** 2 - HI_CHI_SQ = 2 ** 3 - PUI_FIT_MISSING_UNCERTAINTY = 2 ** 4 + BAD_FIT = 2**2 + FIT_ERROR = 2**3 + PRELIMINARY_MAG = 2**4 + PUI_FIT_MISSING_UNCERTAINTY = 2**15 # will be removed in PUI update diff --git a/imap_l3_processing/swapi/response/__init__.py b/imap_l3_processing/swapi/response/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/imap_l3_processing/swapi/response/azimuthal_transmission.py b/imap_l3_processing/swapi/response/azimuthal_transmission.py new file mode 100644 index 000000000..ac747e516 --- /dev/null +++ b/imap_l3_processing/swapi/response/azimuthal_transmission.py @@ -0,0 +1,34 @@ +import math +from typing import NamedTuple + +import numba +from numpy import ndarray + + +class AzimuthalTransmissionGrid(NamedTuple): + values: ndarray + spacing: float + + +@numba.njit +def interpolate_azimuthal_transmission( + grid: AzimuthalTransmissionGrid, + azimuth: float, +) -> float: + azimuth = (azimuth + 180) % 360 - 180 + i_float = abs(azimuth) / grid.spacing + i_lower = int(math.floor(i_float)) + i_upper = i_lower + 1 + + n = len(grid.values) + if i_lower >= n: + i_lower = n - 1 + if i_upper >= n: + i_upper = n - 1 + + weight_lower = float(i_upper) - i_float + weight_upper = i_float - float(i_lower) + return ( + grid.values[i_lower] * weight_lower + + grid.values[i_upper] * weight_upper + ) diff --git a/imap_l3_processing/swapi/response/deadtime.py b/imap_l3_processing/swapi/response/deadtime.py new file mode 100644 index 000000000..7120a3db6 --- /dev/null +++ b/imap_l3_processing/swapi/response/deadtime.py @@ -0,0 +1,8 @@ +import numba + +SWAPI_DEADTIME_S = 183.7e-9 + + +@numba.njit +def deadtime_factor(true_rate): + return 1.0 / (1.0 + SWAPI_DEADTIME_S * true_rate) diff --git a/imap_l3_processing/swapi/response/passband_grid.py b/imap_l3_processing/swapi/response/passband_grid.py new file mode 100644 index 000000000..96a54cc5e --- /dev/null +++ b/imap_l3_processing/swapi/response/passband_grid.py @@ -0,0 +1,203 @@ +from typing import NamedTuple + +import numba +import numpy as np +import pandas as pd +from numpy.typing import NDArray + +from imap_l3_processing.swapi.constants import SWAPI_K_FACTOR + +_TARGET_ELEVATIONS = np.arange(-15, 15 + 0.5, 0.5) +_TARGET_SPEED_RATIOS = np.linspace(0.9, 1.1, 101) +_PASSBAND_BOUNDARY_THRESHOLD = 1e-2 + + +class PassbandGrid(NamedTuple): + min_elevation: float + elevation_spacing: float + min_speed_ratio: float + speed_ratio_spacing: float + values: NDArray + min_boundary: NDArray + max_boundary: NDArray + elevation_range: tuple + + +def build_passband_grid(values_df: pd.DataFrame) -> PassbandGrid: + grid_values = _build_passband_array( + values_df, _TARGET_ELEVATIONS, _TARGET_SPEED_RATIOS + ) + min_boundary, max_boundary = _passband_boundaries(grid_values, _TARGET_SPEED_RATIOS) + elevation_range = _elevation_range(grid_values, _TARGET_ELEVATIONS) + + return PassbandGrid( + min_elevation=float(_TARGET_ELEVATIONS[0]), + elevation_spacing=float(_TARGET_ELEVATIONS[1] - _TARGET_ELEVATIONS[0]), + min_speed_ratio=float(_TARGET_SPEED_RATIOS[0]), + speed_ratio_spacing=float(_TARGET_SPEED_RATIOS[1] - _TARGET_SPEED_RATIOS[0]), + values=grid_values, + min_boundary=min_boundary, + max_boundary=max_boundary, + elevation_range=elevation_range, + ) + + +# without the explicit override `fastmath=False`, there was an issue with isnan() +@numba.njit(fastmath=False) +def speed_ratio_range_at_elevation(grid, elevation: float): + n_elevations = grid.min_boundary.shape[0] + i_float = (elevation - grid.min_elevation) / grid.elevation_spacing + if i_float < 0.0: + lower_row = 0 + elif i_float >= n_elevations - 1: + lower_row = n_elevations - 1 + else: + lower_row = int(i_float) + upper_row = lower_row + 1 if lower_row + 1 < n_elevations else n_elevations - 1 + + lower_min = grid.min_boundary[lower_row] + upper_min = grid.min_boundary[upper_row] + lower_max = grid.max_boundary[lower_row] + upper_max = grid.max_boundary[upper_row] + + lower_is_nan = np.isnan(lower_min) or np.isnan(lower_max) + upper_is_nan = np.isnan(upper_min) or np.isnan(upper_max) + if lower_is_nan and upper_is_nan: + raise ValueError("Elevation out of range.") + if lower_is_nan: + return upper_min, upper_max + if upper_is_nan: + return lower_min, lower_max + lo = lower_min if lower_min < upper_min else upper_min + hi = lower_max if lower_max > upper_max else upper_max + return lo, hi + + +@numba.njit +def interpolate_passband(grid, elevation: float, speed_ratio: float) -> float: + return _bilinear_interpolate( + values=grid.values, + x0=grid.min_speed_ratio, + dx=grid.speed_ratio_spacing, + y0=grid.min_elevation, + dy=grid.elevation_spacing, + x=speed_ratio, + y=elevation, + ) + + +@numba.njit +def _bilinear_interpolate( + values: NDArray, + x0: float, + dx: float, + y0: float, + dy: float, + x: float, + y: float, +) -> float: + i_float = (y - y0) / dy + if i_float < 0 or i_float + 1 >= values.shape[0]: + return 0.0 + j_float = (x - x0) / dx + if j_float < 0 or j_float + 1 >= values.shape[1]: + return 0.0 + + i_lower = int(i_float) + i_upper = i_lower + 1 + i_weight = i_float - i_lower + j_lower = int(j_float) + j_upper = j_lower + 1 + j_weight = j_float - j_lower + + return (1 - i_weight) * ( + (1 - j_weight) * values[i_lower, j_lower] + j_weight * values[i_lower, j_upper] + ) + i_weight * ( + (1 - j_weight) * values[i_upper, j_lower] + j_weight * values[i_upper, j_upper] + ) + + +def _build_passband_array( + values_df: pd.DataFrame, target_elevations: NDArray, target_speed_ratios: NDArray +) -> NDArray: + pivot = values_df.reset_index() + pivot["speed_ratio"] = np.sqrt(pivot["energy_ratio"] / SWAPI_K_FACTOR) + pivot = ( + pivot.drop(columns="energy_ratio") + .set_index(["elevation", "speed_ratio"])["value"] + .unstack("speed_ratio") + ) + pivot = pivot.fillna(0.0) + + src_speed_ratios = pivot.columns.values + result = np.zeros((len(target_elevations), len(target_speed_ratios))) + for i, elev in enumerate(target_elevations): + if elev in pivot.index: + result[i] = np.interp( + target_speed_ratios, + src_speed_ratios, + pivot.loc[elev].values, + left=0.0, + right=0.0, + ) + + # Normalize so the central value (elevation=0, speed_ratio=1) is 1. + central_value = _bilinear_interpolate( + values=result, + x0=target_speed_ratios[0], + dx=target_speed_ratios[1] - target_speed_ratios[0], + y0=target_elevations[0], + dy=target_elevations[1] - target_elevations[0], + x=1.0, + y=0.0, + ) + result = result / central_value + return result.copy(order="C") + + +def _passband_boundaries( + grid_values: NDArray, target_speed_ratios: NDArray +) -> tuple[NDArray, NDArray]: + cutoff = _cutoff_value(grid_values) + n_elevations = grid_values.shape[0] + mins = np.full(n_elevations, np.nan) + maxs = np.full(n_elevations, np.nan) + for i in range(n_elevations): + above = np.flatnonzero(grid_values[i] >= cutoff) + if above.size == 0: + continue + mins[i] = _interp_cutoff_crossing( + target_speed_ratios, grid_values[i], cutoff, above[0], above[0] - 1 + ) + maxs[i] = _interp_cutoff_crossing( + target_speed_ratios, grid_values[i], cutoff, above[-1], above[-1] + 1 + ) + return mins, maxs + + +def _elevation_range(grid_values: NDArray, target_elevations: NDArray) -> tuple: + cutoff = _cutoff_value(grid_values) + row_max = grid_values.max(axis=1) + above = np.flatnonzero(row_max >= cutoff) + + lo = _interp_cutoff_crossing( + target_elevations, row_max, cutoff, above[0], above[0] - 1 + ) + hi = _interp_cutoff_crossing( + target_elevations, row_max, cutoff, above[-1], above[-1] + 1 + ) + return (float(lo), float(hi)) + + +def _interp_cutoff_crossing( + x: NDArray, y: NDArray, cutoff: float, i_inside: int, i_outside: int +) -> float: + """Linear interpolation of `x` where `y` crosses `cutoff`, given that + `y[i_inside] >= cutoff` and `y[i_outside] < cutoff`.""" + return x[i_inside] + (cutoff - y[i_inside]) / (y[i_outside] - y[i_inside]) * ( + x[i_outside] - x[i_inside] + ) + + +def _cutoff_value(grid_values): + return _PASSBAND_BOUNDARY_THRESHOLD * float(grid_values.max()) diff --git a/imap_l3_processing/swapi/response/swapi_response.py b/imap_l3_processing/swapi/response/swapi_response.py new file mode 100644 index 000000000..aebb2c9a8 --- /dev/null +++ b/imap_l3_processing/swapi/response/swapi_response.py @@ -0,0 +1,178 @@ +from pathlib import Path +from typing import Callable, NamedTuple + +import numpy as np +import pandas as pd +from numpy.typing import NDArray +from scipy.interpolate import interp1d + +from imap_l3_processing.constants import ( + METERS_PER_KILOMETER, + PROTON_CHARGE_OVER_MASS_C_PER_KG, +) +from imap_l3_processing.swapi.response.azimuthal_transmission import ( + AzimuthalTransmissionGrid, +) +from imap_l3_processing.swapi.response.passband_grid import ( + PassbandGrid, + build_passband_grid, +) +from imap_l3_processing.swapi.constants import SWAPI_K_FACTOR + + +class ResponseGrid(NamedTuple): + sg_passband: PassbandGrid + oa_passband: PassbandGrid + central_speed: float + central_effective_area: float + azimuthal_transmission: AzimuthalTransmissionGrid + + +class SwapiResponse: + AZIMUTHAL_TRANSMISSION_SPACING_DEG = 0.1 + + def __init__( + self, + azimuthal_transmission: NDArray, + central_effective_area_at_voltage: Callable, + passband_fit_coefficients: pd.DataFrame, + passband_esa_voltage_limits: dict, + ): + self._azimuthal_transmission = azimuthal_transmission + self._central_effective_area_at_voltage = central_effective_area_at_voltage + self._passband_fit_coefficients = passband_fit_coefficients + self._passband_esa_voltage_limits = passband_esa_voltage_limits + self._passband_grid_cache: dict = {} + self._response_grid_cache: dict = {} + + @classmethod + def from_files( + cls, + azimuthal_transmission_path: Path, + central_effective_area_path: Path, + passband_fit_coefficients_path: Path, + ) -> "SwapiResponse": + transmission_df = pd.read_csv(azimuthal_transmission_path) + area_df = pd.read_csv(central_effective_area_path) + coeffs_df = pd.read_csv( + passband_fit_coefficients_path, + index_col=["region", "energy_ratio", "elevation"], + ) + limit_cols = ["min_esa_voltage", "max_esa_voltage"] + limits_df = coeffs_df[limit_cols] + coeffs_df = coeffs_df.drop(columns=limit_cols) + esa_limits = { + region: ( + float(limits_df.xs(region, level="region")["min_esa_voltage"].iloc[0]), + float(limits_df.xs(region, level="region")["max_esa_voltage"].iloc[0]), + ) + for region in limits_df.index.get_level_values("region").unique() + } + coeffs_df.columns = coeffs_df.columns.astype(int) + + central_effective_area_values = area_df["effective_area"].values + return cls( + azimuthal_transmission=transmission_df["transmission"].fillna(0).values, + central_effective_area_at_voltage=interp1d( + area_df["esa_voltage"].values, + central_effective_area_values, + kind="linear", + bounds_error=False, + fill_value=( + float(central_effective_area_values[0]), + float(central_effective_area_values[-1]), + ), + assume_sorted=True, + ), + passband_fit_coefficients=coeffs_df, + passband_esa_voltage_limits=esa_limits, + ) + + def _get_central_effective_area(self, esa_voltage: float) -> float: + return float(self._central_effective_area_at_voltage(np.abs(esa_voltage))) + + def _central_speed( + self, esa_voltage: float, mass_per_charge_m_p_per_e: float + ) -> float: + # formula: v_0 = sqrt(2 k* |V| (e/m_p) / mass_per_charge_m_p_per_e). + + return float( + np.sqrt( + 2.0 + * SWAPI_K_FACTOR + * abs(esa_voltage) + * PROTON_CHARGE_OVER_MASS_C_PER_KG + / float(mass_per_charge_m_p_per_e) + ) + / METERS_PER_KILOMETER + ) + + def warm_cache(self, esa_voltages) -> None: + for v in np.unique(np.asarray(esa_voltages, dtype=float).ravel()): + key = self._cache_key(v) + if np.isfinite(v) and key not in self._passband_grid_cache: + self._passband_grid_cache[key] = dict() + for region in ("SG", "OA"): + passband = build_passband_grid(self._get_passband_values(v, region)) + self._passband_grid_cache[key][region] = passband + + def get_response_grid( + self, + esa_voltage: float, + mass_per_charge_m_p_per_e: float, + central_effective_area_scale: float = 1.0, + ) -> ResponseGrid: + cache_key = ( + self._cache_key(float(esa_voltage)), + self._cache_key(float(mass_per_charge_m_p_per_e)), + self._cache_key(float(central_effective_area_scale)), + ) + + cached = self._response_grid_cache.get(cache_key) + if cached is not None: + return cached + + passband_cache_key = self._cache_key(esa_voltage) + if passband_cache_key not in self._passband_grid_cache: + raise KeyError( + f"No PassbandGrid cached for ESA voltage {esa_voltage} V. " + f"Call warm_cache([{esa_voltage}]) first." + ) + passband_pair = self._passband_grid_cache[passband_cache_key] + + sg_passband = passband_pair["SG"] + oa_passband = passband_pair["OA"] + + response_grid = ResponseGrid( + sg_passband=sg_passband, + oa_passband=oa_passband, + central_speed=self._central_speed(esa_voltage, mass_per_charge_m_p_per_e), + central_effective_area=( + self._get_central_effective_area(esa_voltage) + * float(central_effective_area_scale) + ), + azimuthal_transmission=AzimuthalTransmissionGrid( + values=np.asarray(self._azimuthal_transmission, dtype=float), + spacing=float(self.AZIMUTHAL_TRANSMISSION_SPACING_DEG), + ), + ) + + self._response_grid_cache[cache_key] = response_grid + return response_grid + + def _get_passband_values(self, esa_voltage: float, region: str) -> pd.DataFrame: + v_min, v_max = self._passband_esa_voltage_limits.get(region, (0, np.inf)) + clamped_voltage = float(np.clip(np.abs(esa_voltage), v_min, v_max)) + coeffs = self._passband_fit_coefficients.xs(region, level="region") + + # we use energy-angle passbands for modeling the coincidence rate, + # but fits are to voltage-angle passbands as a function of natural log of beam energy + # effectively equivalent as long as the x-axis set to is E/|V| and not E or |V| + # but need to select the one via for this voltage via the k factor + log_beam_energy = np.log(SWAPI_K_FACTOR * clamped_voltage) + values = np.exp(np.polyval(coeffs.values.T, log_beam_energy)) + + return pd.DataFrame(values, index=coeffs.index, columns=["value"]) + + def _cache_key(self, x) -> float: + return round(float(x), 3) diff --git a/imap_l3_processing/swapi/swapi_processor.py b/imap_l3_processing/swapi/swapi_processor.py index 4f9dd5e9c..158c3eff0 100644 --- a/imap_l3_processing/swapi/swapi_processor.py +++ b/imap_l3_processing/swapi/swapi_processor.py @@ -1,111 +1,144 @@ import logging -from dataclasses import replace, astuple +from dataclasses import replace import numpy as np from imap_data_access.processing_input import ProcessingInputCollection +from spacepy import pycdf from uncertainties import ufloat -from uncertainties.unumpy import uarray, nominal_values +from uncertainties.unumpy import uarray -from imap_l3_processing.constants import THIRTY_SECONDS_IN_NANOSECONDS, FIVE_MINUTES_IN_NANOSECONDS +from imap_l3_processing.constants import FIVE_MINUTES_IN_NANOSECONDS from imap_l3_processing.models import InputMetadata from imap_l3_processing.processor import Processor -from imap_l3_processing.swapi.l3a.models import SwapiL3ProtonSolarWindData, SwapiL3AlphaSolarWindData, \ - SwapiL3PickupIonData -from imap_l3_processing.swapi.l3a.science.calculate_alpha_solar_wind_speed import calculate_alpha_solar_wind_speed, \ - calculate_combined_sweeps -from imap_l3_processing.swapi.l3a.science.calculate_alpha_solar_wind_temperature_and_density import \ - calculate_alpha_solar_wind_temperature_and_density_for_combined_sweeps -from imap_l3_processing.swapi.l3a.science.calculate_pickup_ion import calculate_ten_minute_velocities, \ - calculate_pickup_ion_values, calculate_helium_pui_temperature, calculate_helium_pui_density -from imap_l3_processing.swapi.l3a.science.calculate_proton_solar_wind_clock_and_deflection_angles import \ - calculate_deflection_angle, calculate_clock_angle -from imap_l3_processing.swapi.l3a.science.calculate_proton_solar_wind_speed import calculate_proton_solar_wind_speed, \ - estimate_deflection_and_clock_angles -from imap_l3_processing.swapi.l3a.science.calculate_proton_solar_wind_temperature_and_density import \ - calculate_proton_solar_wind_temperature_and_density -from imap_l3_processing.swapi.l3a.science.speed_calculation import extract_coarse_sweep +from imap_l3_processing.swapi.l3a.chunk_fits import ( + AlphaChunkFitter, + ParallelChunkRunner, + ProtonChunkFitter, +) +from imap_l3_processing.swapi.l3a.models import ( + SwapiL3ProtonSolarWindData, + SwapiL3AlphaSolarWindData, + SwapiL3PickupIonData, +) +from imap_l3_processing.swapi.l3a.science.calculate_pickup_ion import ( + calculate_ten_minute_velocities, + calculate_pickup_ion_values, + calculate_helium_pui_temperature, + calculate_helium_pui_density, +) +from imap_l3_processing.swapi.constants import ( + SWAPI_COARSE_SWEEP_BINS, + SWAPI_L2_K_FACTOR, +) from imap_l3_processing.swapi.l3a.swapi_l3a_dependencies import SwapiL3ADependencies -from imap_l3_processing.swapi.l3a.utils import chunk_l2_data +from imap_l3_processing.swapi.l3a.utils import chunk_l2_data, rotate_rtn_to_dps from imap_l3_processing.swapi.l3b.models import SwapiL3BCombinedVDF -from imap_l3_processing.swapi.l3b.science.calculate_solar_wind_differential_flux import \ - calculate_combined_solar_wind_differential_flux -from imap_l3_processing.swapi.l3b.science.calculate_solar_wind_vdf import calculate_proton_solar_wind_vdf, \ - calculate_alpha_solar_wind_vdf, calculate_pui_solar_wind_vdf, calculate_delta_minus_plus +from imap_l3_processing.swapi.l3b.science.calculate_solar_wind_differential_flux import ( + calculate_combined_solar_wind_differential_flux, +) +from imap_l3_processing.swapi.l3b.science.calculate_solar_wind_vdf import ( + calculate_proton_solar_wind_vdf, + calculate_alpha_solar_wind_vdf, + calculate_pui_solar_wind_vdf, + calculate_delta_minus_plus, +) from imap_l3_processing.swapi.l3b.swapi_l3b_dependencies import SwapiL3BDependencies from imap_l3_processing.swapi.quality_flags import SwapiL3Flags from imap_l3_processing.utils import save_data logger = logging.getLogger(__name__) -MAXIMUM_ALLOWED_PROTON_SW_FITTING_CHI_SQ = 10 - class SwapiProcessor(Processor): - def __init__(self, dependencies: ProcessingInputCollection, input_metadata: InputMetadata): + def __init__( + self, dependencies: ProcessingInputCollection, input_metadata: InputMetadata + ): super().__init__(dependencies, input_metadata) def process(self): if self.input_metadata.data_level == "l3a": - l3a_dependencies = SwapiL3ADependencies.fetch_dependencies(self.dependencies) + l3a_dependencies = SwapiL3ADependencies.fetch_dependencies( + self.dependencies + ) - if self.input_metadata.descriptor == 'proton-sw': + if self.input_metadata.descriptor == "proton-sw": data = self.process_l3a_proton(l3a_dependencies.data, l3a_dependencies) - elif self.input_metadata.descriptor == 'alpha-sw': - data = self.process_l3a_alpha_solar_wind(l3a_dependencies.data, l3a_dependencies) - elif self.input_metadata.descriptor == 'pui-he': + elif self.input_metadata.descriptor == "alpha-sw": + data = self.process_l3a_alpha(l3a_dependencies.data, l3a_dependencies) + elif self.input_metadata.descriptor == "pui-he": data = self.process_l3a_pui(l3a_dependencies.data, l3a_dependencies) else: - raise NotImplementedError("unknown descriptor", self.input_metadata.descriptor) + raise NotImplementedError( + "unknown descriptor", self.input_metadata.descriptor + ) data.parent_file_names = self.get_parent_file_names() cdf_path = save_data(data) return [cdf_path] elif self.input_metadata.data_level == "l3b": - l3b_dependencies = SwapiL3BDependencies.fetch_dependencies(self.dependencies) + l3b_dependencies = SwapiL3BDependencies.fetch_dependencies( + self.dependencies + ) l3b_combined_vdf = self.process_l3b(l3b_dependencies.data, l3b_dependencies) l3b_combined_vdf.parent_file_names = self.get_parent_file_names() cdf_path = save_data(l3b_combined_vdf) return [cdf_path] - def process_l3a_pui(self, data, dependencies: SwapiL3ADependencies) -> SwapiL3PickupIonData: - proton_solar_wind_speeds = [] - proton_solar_wind_clock_angles = [] - proton_solar_wind_deflection_angles = [] - proton_quality_flags = [] - - for data_chunk in chunk_l2_data(data, 5): - epoch = data_chunk.sci_start_time[0] + THIRTY_SECONDS_IN_NANOSECONDS - proton_solar_wind_speed = ufloat(np.nan, np.nan) - clock_angle = ufloat(np.nan, np.nan) - deflection_angle = ufloat(np.nan, np.nan) - quality_flag = SwapiL3Flags.NONE - try: - coincidence_count_rates_with_uncertainty = uarray(data_chunk.coincidence_count_rate, - data_chunk.coincidence_count_rate_uncertainty) - proton_solar_wind_speed, a, phi, b, chi_sq = calculate_proton_solar_wind_speed( - coincidence_count_rates_with_uncertainty, data_chunk.energy, data_chunk.sci_start_time) - if chi_sq <= MAXIMUM_ALLOWED_PROTON_SW_FITTING_CHI_SQ: - clock_angle = calculate_clock_angle(dependencies.clock_angle_and_flow_deflection_calibration_table, - proton_solar_wind_speed, a, phi, b) - deflection_angle = calculate_deflection_angle( - dependencies.clock_angle_and_flow_deflection_calibration_table, - proton_solar_wind_speed, a, phi, b) - else: - deflection_angle, clock_angle = estimate_deflection_and_clock_angles( - proton_solar_wind_speed.nominal_value) - quality_flag |= SwapiL3Flags.SWP_SW_ANGLES_ESTIMATED - - except Exception as e: - logger.info(f"Exception occurred at epoch {epoch}, continuing with fill value", exc_info=True) - proton_solar_wind_speeds.append(proton_solar_wind_speed) - proton_solar_wind_clock_angles.append(clock_angle) - proton_solar_wind_deflection_angles.append(deflection_angle) - proton_quality_flags.append(quality_flag) - - ten_minute_solar_wind_velocities, proton_sw_quality_flags = calculate_ten_minute_velocities( - nominal_values(proton_solar_wind_speeds), - nominal_values(proton_solar_wind_deflection_angles), - nominal_values(proton_solar_wind_clock_angles), - proton_quality_flags) + def process_l3a_proton(self, data, dependencies) -> SwapiL3ProtonSolarWindData: + chunks = list(chunk_l2_data(data, 5)) + dependencies.swapi_response.warm_cache(data.energy / SWAPI_L2_K_FACTOR) + runner = ParallelChunkRunner( + dependencies.swapi_response, dependencies.efficiency_calibration_table + ) + + return SwapiL3ProtonSolarWindData( + replace(self.input_metadata, descriptor="proton-sw"), + **runner.run(chunks, ProtonChunkFitter()), + ) + + def process_l3a_alpha(self, data, dependencies) -> SwapiL3AlphaSolarWindData: + if dependencies.mag_data is None: + raise ValueError( + "alpha-sw requires MAG RTN data (L2 preferred, L1D fallback); " + "none was provided in the dependency collection." + ) + chunks = list(chunk_l2_data(data, 5)) + dependencies.swapi_response.warm_cache(data.energy / SWAPI_L2_K_FACTOR) + runner = ParallelChunkRunner( + dependencies.swapi_response, dependencies.efficiency_calibration_table + ) + + fitter = AlphaChunkFitter(dependencies.mag_data) + result = runner.run(chunks, fitter) + + if dependencies.mag_is_preliminary: + result["quality_flags"] = result["quality_flags"] | int(SwapiL3Flags.PRELIMINARY_MAG) + + metadata = replace(self.input_metadata, descriptor="alpha-sw") + return SwapiL3AlphaSolarWindData(metadata, **result) + + def process_l3a_pui( + self, data, dependencies: SwapiL3ADependencies + ) -> SwapiL3PickupIonData: + chunks = list(chunk_l2_data(data, 5)) + dependencies.swapi_response.warm_cache(data.energy / SWAPI_L2_K_FACTOR) + runner = ParallelChunkRunner( + dependencies.swapi_response, dependencies.efficiency_calibration_table + ) + + pui_proton_results = runner.run(chunks, ProtonChunkFitter()) + chunk_velocities_dps = np.array([ + rotate_rtn_to_dps(rtn_velocity, chunk_epoch) + for rtn_velocity, chunk_epoch in zip( + pui_proton_results["proton_sw_bulk_velocity_rtn_sc"], + pui_proton_results["epoch"], + ) + ]) + ten_minute_solar_wind_velocities, proton_sw_quality_flags = ( + calculate_ten_minute_velocities( + chunk_velocities_dps, + list(pui_proton_results["quality_flags"]), + ) + ) pui_epochs = [] pui_cooling_index = [] pui_ionization_rate = [] @@ -114,7 +147,10 @@ def process_l3a_pui(self, data, dependencies: SwapiL3ADependencies) -> SwapiL3Pi pui_density = [] pui_temperature = [] bad_fit_flags = [] - for data_chunk, sw_velocity in zip(chunk_l2_data(data, 50), ten_minute_solar_wind_velocities): + + for data_chunk, sw_velocity in zip( + chunk_l2_data(data, 50), ten_minute_solar_wind_velocities + ): epoch = data_chunk.sci_start_time[0] + FIVE_MINUTES_IN_NANOSECONDS cooling_index = ufloat(np.nan, np.nan) ionization_rate = ufloat(np.nan, np.nan) @@ -124,32 +160,46 @@ def process_l3a_pui(self, data, dependencies: SwapiL3ADependencies) -> SwapiL3Pi temperature = ufloat(np.nan, np.nan) bad_fit_flag = SwapiL3Flags.NONE try: - if (np.any(np.isnan(extract_coarse_sweep(data_chunk.coincidence_count_rate))) - or np.any(np.isnan(sw_velocity))): + if np.any( + np.isnan(data_chunk.coincidence_count_rate[:, SWAPI_COARSE_SWEEP_BINS]) + ) or np.any(np.isnan(sw_velocity)): raise ValueError("Fill values in input data") - fit_params = calculate_pickup_ion_values(dependencies.instrument_response_calibration_table, - dependencies.geometric_factor_calibration_table, - data_chunk.energy, data_chunk.coincidence_count_rate, epoch, - sw_velocity, - dependencies.density_of_neutral_helium_calibration_table, - dependencies.efficiency_calibration_table, - dependencies.hydrogen_inflow_vector, - dependencies.helium_inflow_vector) + fit_params = calculate_pickup_ion_values( + dependencies.instrument_response_calibration_table, + dependencies.geometric_factor_calibration_table, + data_chunk.energy, + data_chunk.coincidence_count_rate, + epoch, + sw_velocity, + dependencies.density_of_neutral_helium_calibration_table, + dependencies.efficiency_calibration_table, + dependencies.hydrogen_inflow_vector, + dependencies.helium_inflow_vector, + ) cooling_index = fit_params.cooling_index ionization_rate = fit_params.ionization_rate cutoff_speed = fit_params.cutoff_speed background_count_rate = fit_params.background_count_rate - bad_fit_flag |= fit_params.flags - density = calculate_helium_pui_density( - epoch, sw_velocity, dependencies.density_of_neutral_helium_calibration_table, fit_params, - dependencies.helium_inflow_vector) + epoch, + sw_velocity, + dependencies.density_of_neutral_helium_calibration_table, + fit_params, + dependencies.helium_inflow_vector, + ) temperature = calculate_helium_pui_temperature( - epoch, sw_velocity, dependencies.density_of_neutral_helium_calibration_table, fit_params, - dependencies.helium_inflow_vector) - except Exception as e: - logger.info(f"Exception occurred at epoch {epoch}, continuing with fill value", exc_info=True) + epoch, + sw_velocity, + dependencies.density_of_neutral_helium_calibration_table, + fit_params, + dependencies.helium_inflow_vector, + ) + except Exception: + logger.info( + f"Exception occurred at epoch {pycdf.lib.tt2000_to_datetime(int(epoch))}, continuing with fill value", + exc_info=True, + ) pui_epochs.append(epoch) pui_cooling_index.append(cooling_index) pui_ionization_rate.append(ionization_rate) @@ -158,151 +208,17 @@ def process_l3a_pui(self, data, dependencies: SwapiL3ADependencies) -> SwapiL3Pi pui_density.append(density) pui_temperature.append(temperature) bad_fit_flags.append(bad_fit_flag) - pui_metadata = replace(self.input_metadata, descriptor="pui-he") - pui_data = SwapiL3PickupIonData(pui_metadata, np.array(pui_epochs), np.array(pui_cooling_index), - np.array(pui_ionization_rate), - np.array(pui_cutoff_speed), np.array(pui_background_rate), - np.array(pui_density), np.array(pui_temperature), - np.bitwise_or(proton_sw_quality_flags, bad_fit_flags)) - - return pui_data - - def process_l3a_alpha_solar_wind(self, data, dependencies) -> SwapiL3AlphaSolarWindData: - epochs = [] - - alpha_solar_wind_speeds = [] - alpha_solar_wind_densities = [] - alpha_solar_wind_temperatures = [] - alpha_solar_wind_bad_fit_flags = [] - alpha_solar_wind_pre_lut_densities = [] - alpha_solar_wind_pre_lut_temperatures = [] - - for data_chunk in chunk_l2_data(data, 5): - alpha_solar_wind_speed = ufloat(np.nan, np.nan) - alpha_density = ufloat(np.nan, np.nan) - alpha_temperature = ufloat(np.nan, np.nan) - alpha_pre_lut_density = ufloat(np.nan, np.nan) - alpha_pre_lut_temperature = ufloat(np.nan, np.nan) - epoch = data_chunk.sci_start_time[0] + THIRTY_SECONDS_IN_NANOSECONDS - bad_fit_flag = SwapiL3Flags.NONE - try: - if np.any(np.isnan(extract_coarse_sweep(data_chunk.coincidence_count_rate))): - raise ValueError("Fill values in input data") - coincidence_count_rates_with_uncertainty = uarray(data_chunk.coincidence_count_rate, - data_chunk.coincidence_count_rate_uncertainty) - - alpha_solar_wind_speed = calculate_alpha_solar_wind_speed(coincidence_count_rates_with_uncertainty, - data_chunk.energy) - - alpha_temperature_density = calculate_alpha_solar_wind_temperature_and_density_for_combined_sweeps( - dependencies.alpha_temperature_density_calibration_table, alpha_solar_wind_speed, - coincidence_count_rates_with_uncertainty, - data_chunk.energy, dependencies.efficiency_calibration_table.get_alpha_efficiency_for(epoch)) - - alpha_density = alpha_temperature_density.density - alpha_temperature = alpha_temperature_density.temperature - bad_fit_flag = alpha_temperature_density.bad_fit_flag - alpha_pre_lut_density = alpha_temperature_density.pre_lut_density - alpha_pre_lut_temperature = alpha_temperature_density.pre_lut_temperature - - except Exception as e: - logger.info(f"Exception occurred at epoch {epoch}, continuing with fill value", exc_info=True) - finally: - epochs.append(epoch) - alpha_solar_wind_speeds.append(alpha_solar_wind_speed) - alpha_solar_wind_densities.append(alpha_density) - alpha_solar_wind_temperatures.append(alpha_temperature) - alpha_solar_wind_bad_fit_flags.append(bad_fit_flag) - alpha_solar_wind_pre_lut_densities.append(alpha_pre_lut_density) - alpha_solar_wind_pre_lut_temperatures.append(alpha_pre_lut_temperature) - - alpha_solar_wind_speed_metadata = replace(self.input_metadata, descriptor="alpha-sw") - alpha_solar_wind_l3_data = SwapiL3AlphaSolarWindData(alpha_solar_wind_speed_metadata, - np.array(epochs), - np.array(alpha_solar_wind_speeds), - np.array(alpha_solar_wind_temperatures), - np.array(alpha_solar_wind_densities), - np.array(alpha_solar_wind_bad_fit_flags), - np.array(alpha_solar_wind_pre_lut_temperatures), - np.array(alpha_solar_wind_pre_lut_densities), - ) - return alpha_solar_wind_l3_data - - def process_l3a_proton(self, data, dependencies) -> SwapiL3ProtonSolarWindData: - epochs = [] - - proton_solar_wind_speeds = [] - proton_solar_wind_temperatures = [] - proton_solar_wind_density = [] - proton_solar_wind_clock_angles = [] - proton_solar_wind_deflection_angles = [] - quality_flags = [] - - for data_chunk in chunk_l2_data(data, 5): - proton_solar_wind_speed = ufloat(np.nan, np.nan) - clock_angle = ufloat(np.nan, np.nan) - deflection_angle = ufloat(np.nan, np.nan) - proton_density = ufloat(np.nan, np.nan) - proton_temperature = ufloat(np.nan, np.nan) - quality_flag = SwapiL3Flags.NONE - - epoch_center_of_chunk = data_chunk.sci_start_time[0] + THIRTY_SECONDS_IN_NANOSECONDS - try: - if np.any(np.isnan(extract_coarse_sweep(data_chunk.coincidence_count_rate))): - raise ValueError("Fill values in input data") - coincidence_count_rates_with_uncertainty = uarray(data_chunk.coincidence_count_rate, - data_chunk.coincidence_count_rate_uncertainty) - proton_solar_wind_speed, a, phi, b, chi_sq = calculate_proton_solar_wind_speed( - coincidence_count_rates_with_uncertainty, data_chunk.energy, data_chunk.sci_start_time) - - if chi_sq <= MAXIMUM_ALLOWED_PROTON_SW_FITTING_CHI_SQ: - clock_angle = calculate_clock_angle(dependencies.clock_angle_and_flow_deflection_calibration_table, - proton_solar_wind_speed, a, phi, b) - - deflection_angle = calculate_deflection_angle( - dependencies.clock_angle_and_flow_deflection_calibration_table, - proton_solar_wind_speed, a, phi, b) - else: - deflection_angle, clock_angle = estimate_deflection_and_clock_angles( - proton_solar_wind_speed.nominal_value) - quality_flag |= SwapiL3Flags.SWP_SW_ANGLES_ESTIMATED - deflection_angle = ufloat(deflection_angle, 45) - clock_angle = ufloat(clock_angle, 180) - - proton_temperature, proton_density, bad_fit_flag = astuple( - calculate_proton_solar_wind_temperature_and_density( - dependencies.proton_temperature_density_calibration_table, - proton_solar_wind_speed, - deflection_angle, - clock_angle, - coincidence_count_rates_with_uncertainty, - data_chunk.energy, - dependencies.efficiency_calibration_table.get_proton_efficiency_for(epoch_center_of_chunk) - )) - quality_flag |= bad_fit_flag - - except Exception as e: - epoch = epoch_center_of_chunk - logger.info(f"Exception occurred at epoch {epoch}, continuing with fill value", exc_info=True) - - proton_solar_wind_speeds.append(proton_solar_wind_speed) - proton_solar_wind_clock_angles.append(clock_angle) - proton_solar_wind_deflection_angles.append(deflection_angle) - proton_solar_wind_density.append(proton_density) - proton_solar_wind_temperatures.append(proton_temperature) - epochs.append(epoch_center_of_chunk) - quality_flags.append(quality_flag) - - proton_solar_wind_speed_metadata = replace(self.input_metadata, descriptor="proton-sw") - proton_solar_wind_l3_data = SwapiL3ProtonSolarWindData(proton_solar_wind_speed_metadata, np.array(epochs), - np.array(proton_solar_wind_speeds), - np.array(proton_solar_wind_temperatures), - np.array(proton_solar_wind_density), - np.array(proton_solar_wind_clock_angles), - np.array(proton_solar_wind_deflection_angles), - np.array(quality_flags)) - - return proton_solar_wind_l3_data + return SwapiL3PickupIonData( + replace(self.input_metadata, descriptor="pui-he"), + np.array(pui_epochs), + np.array(pui_cooling_index), + np.array(pui_ionization_rate), + np.array(pui_cutoff_speed), + np.array(pui_background_rate), + np.array(pui_density), + np.array(pui_temperature), + np.bitwise_or(proton_sw_quality_flags, bad_fit_flags), + ) def process_l3b(self, data, dependencies): epochs = [] @@ -318,34 +234,47 @@ def process_l3b(self, data, dependencies): cdf_alpha_deltas = [] cdf_pui_deltas = [] combined_energy_deltas = [] + for data_chunk in chunk_l2_data(data, 50): center_of_epoch = data_chunk.sci_start_time[0] + FIVE_MINUTES_IN_NANOSECONDS - instrument_efficiency = dependencies.efficiency_calibration_table.get_proton_efficiency_for(center_of_epoch) - coincidence_count_rates_with_uncertainty = uarray(data_chunk.coincidence_count_rate, - data_chunk.coincidence_count_rate_uncertainty) - - average_coincident_count_rates, energies = calculate_combined_sweeps( - coincidence_count_rates_with_uncertainty, data_chunk.energy) - - proton_velocities, proton_probabilities = calculate_proton_solar_wind_vdf(energies, - average_coincident_count_rates, - instrument_efficiency, - dependencies.geometric_factor_calibration_table) - - alpha_velocities, alpha_probabilities = calculate_alpha_solar_wind_vdf(energies, - average_coincident_count_rates, - instrument_efficiency, - dependencies.geometric_factor_calibration_table) - - pui_velocities, pui_probabilities = calculate_pui_solar_wind_vdf(energies, - average_coincident_count_rates, - instrument_efficiency, - dependencies.geometric_factor_calibration_table) - combined_differential_flux = calculate_combined_solar_wind_differential_flux(energies, - average_coincident_count_rates, - instrument_efficiency, - dependencies.geometric_factor_calibration_table) - + instrument_efficiency = ( + dependencies.efficiency_calibration_table.get_proton_efficiency_for( + center_of_epoch + ) + ) + coincidence_count_rates_with_uncertainty = uarray( + data_chunk.coincidence_count_rate, + data_chunk.coincidence_count_rate_uncertainty, + ) + coarse_rates = coincidence_count_rates_with_uncertainty[:, SWAPI_COARSE_SWEEP_BINS] + average_coincident_count_rates = np.sum(coarse_rates, axis=0) / len(coarse_rates) + energies = np.mean(data_chunk.energy[:, SWAPI_COARSE_SWEEP_BINS], axis=0) + proton_velocities, proton_probabilities = calculate_proton_solar_wind_vdf( + energies, + average_coincident_count_rates, + instrument_efficiency, + dependencies.geometric_factor_calibration_table, + ) + alpha_velocities, alpha_probabilities = calculate_alpha_solar_wind_vdf( + energies, + average_coincident_count_rates, + instrument_efficiency, + dependencies.geometric_factor_calibration_table, + ) + pui_velocities, pui_probabilities = calculate_pui_solar_wind_vdf( + energies, + average_coincident_count_rates, + instrument_efficiency, + dependencies.geometric_factor_calibration_table, + ) + combined_differential_flux = ( + calculate_combined_solar_wind_differential_flux( + energies, + average_coincident_count_rates, + instrument_efficiency, + dependencies.geometric_factor_calibration_table, + ) + ) epochs.append(center_of_epoch) cdf_proton_velocities.append(proton_velocities) cdf_proton_probabilities.append(proton_probabilities) @@ -364,32 +293,41 @@ def process_l3b(self, data, dependencies): combined_energy_deltas.append(calculate_delta_minus_plus(energies)) l3b_combined_metadata = self.input_metadata - l3b_combined_metadata.descriptor = 'combined' - l3b_combined_vdf = SwapiL3BCombinedVDF(input_metadata=l3b_combined_metadata, - epoch=np.array(epochs), - proton_sw_velocities=np.array(cdf_proton_velocities), - proton_sw_velocities_delta_minus=np.array( - [delta.delta_minus for delta in cdf_proton_deltas]), - proton_sw_velocities_delta_plus=np.array( - [delta.delta_plus for delta in cdf_proton_deltas]), - proton_sw_combined_vdf=np.array(cdf_proton_probabilities), - alpha_sw_velocities=np.array(cdf_alpha_velocities), - alpha_sw_velocities_delta_minus=np.array( - [delta.delta_minus for delta in cdf_alpha_deltas]), - alpha_sw_velocities_delta_plus=np.array( - [delta.delta_plus for delta in cdf_alpha_deltas]), - alpha_sw_combined_vdf=np.array(cdf_alpha_probabilities), - pui_sw_velocities=np.array(cdf_pui_velocities), - pui_sw_velocities_delta_minus=np.array( - [delta.delta_minus for delta in cdf_pui_deltas]), - pui_sw_velocities_delta_plus=np.array( - [delta.delta_plus for delta in cdf_pui_deltas]), - pui_sw_combined_vdf=np.array(cdf_pui_probabilities), - combined_energy=np.array(combined_energies), - combined_energy_delta_minus=np.array( - [delta.delta_minus for delta in combined_energy_deltas]), - combined_energy_delta_plus=np.array( - [delta.delta_plus for delta in combined_energy_deltas]), - combined_differential_flux=np.array(combined_differential_fluxes), - ) + l3b_combined_metadata.descriptor = "combined" + l3b_combined_vdf = SwapiL3BCombinedVDF( + input_metadata=l3b_combined_metadata, + epoch=np.array(epochs), + proton_sw_velocities=np.array(cdf_proton_velocities), + proton_sw_velocities_delta_minus=np.array( + [delta.delta_minus for delta in cdf_proton_deltas] + ), + proton_sw_velocities_delta_plus=np.array( + [delta.delta_plus for delta in cdf_proton_deltas] + ), + proton_sw_combined_vdf=np.array(cdf_proton_probabilities), + alpha_sw_velocities=np.array(cdf_alpha_velocities), + alpha_sw_velocities_delta_minus=np.array( + [delta.delta_minus for delta in cdf_alpha_deltas] + ), + alpha_sw_velocities_delta_plus=np.array( + [delta.delta_plus for delta in cdf_alpha_deltas] + ), + alpha_sw_combined_vdf=np.array(cdf_alpha_probabilities), + pui_sw_velocities=np.array(cdf_pui_velocities), + pui_sw_velocities_delta_minus=np.array( + [delta.delta_minus for delta in cdf_pui_deltas] + ), + pui_sw_velocities_delta_plus=np.array( + [delta.delta_plus for delta in cdf_pui_deltas] + ), + pui_sw_combined_vdf=np.array(cdf_pui_probabilities), + combined_energy=np.array(combined_energies), + combined_energy_delta_minus=np.array( + [delta.delta_minus for delta in combined_energy_deltas] + ), + combined_energy_delta_plus=np.array( + [delta.delta_plus for delta in combined_energy_deltas] + ), + combined_differential_flux=np.array(combined_differential_fluxes), + ) return l3b_combined_vdf diff --git a/imap_l3_processing/swe/l3/models.py b/imap_l3_processing/swe/l3/models.py index 8e3455275..f85719a5e 100644 --- a/imap_l3_processing/swe/l3/models.py +++ b/imap_l3_processing/swe/l3/models.py @@ -115,9 +115,8 @@ class SweL2Data: class SwapiL3aProtonData: epoch: np.ndarray epoch_delta: np.ndarray + proton_sw_velocity_rtn: np.ndarray[float] proton_sw_speed: np.ndarray[float] - proton_sw_clock_angle: np.ndarray[float] - proton_sw_deflection_angle: np.ndarray[float] swp_flags: np.ndarray diff --git a/imap_l3_processing/swe/l3/science/moment_calculations.py b/imap_l3_processing/swe/l3/science/moment_calculations.py index e0de01fae..67a6e5d9b 100644 --- a/imap_l3_processing/swe/l3/science/moment_calculations.py +++ b/imap_l3_processing/swe/l3/science/moment_calculations.py @@ -384,6 +384,19 @@ def rotate_dps_vector_to_rtn(epoch: datetime, vector: np.ndarray) -> np.ndarray: return np.full(3, np.nan) +def rotate_rtn_vectors_to_dps(epochs: np.ndarray, vectors_rtn: np.ndarray) -> np.ndarray: + result = np.full_like(vectors_rtn, np.nan, dtype=float) + for i, epoch in enumerate(epochs): + try: + et_time = spiceypy.datetime2et(epoch) + rotation_matrix = spiceypy.pxform("IMAP_RTN", "IMAP_DPS", et_time) + except spiceypy.SpiceyError as e: + logger.info(f"Failed to rotate RTN→DPS at epoch {epoch}: {e}") + continue + result[i] = rotation_matrix @ vectors_rtn[i] + return result + + def rotate_temperature(epoch: datetime, alpha: float, beta: float) -> tuple[float, float]: sin_dec = np.sin(beta) x = sin_dec * np.cos(alpha) diff --git a/imap_l3_processing/swe/l3/swe_l3_dependencies.py b/imap_l3_processing/swe/l3/swe_l3_dependencies.py index 28736ba7e..1de137846 100644 --- a/imap_l3_processing/swe/l3/swe_l3_dependencies.py +++ b/imap_l3_processing/swe/l3/swe_l3_dependencies.py @@ -10,7 +10,7 @@ from imap_l3_processing.swe.l3.models import SweL2Data, SweConfiguration, SwapiL3aProtonData, SweL1bData from imap_l3_processing.swe.l3.utils import read_l2_swe_data, read_l3a_swapi_proton_data, read_swe_config, \ read_l1b_swe_data -from imap_l3_processing.utils import read_mag_data +from imap_l3_processing.utils import read_mag_data, select_mag_path MAG_DESPUN_L1D_DESCRIPTOR = "norm-dsrf" SWAPI_L3A_PROTON_DESCRIPTOR = "proton-sw" @@ -41,21 +41,10 @@ def fetch_dependencies(cls, dependencies: ProcessingInputCollection) -> SweL3Dep d.imap_file_paths[0] for d in science_files if d.source == "swe" and d.data_type == "l1b") except StopIteration: raise ValueError(f"Missing SWE l1b dependency.") - mag_dependency = next( - (d.imap_file_paths[0] for d in science_files if d.source == "mag" - and d.descriptor == MAG_DESPUN_L1D_DESCRIPTOR - and d.data_type == "l2"), None) - mag_is_preliminary = False - if mag_dependency is None: - try: - mag_dependency = next( - d.imap_file_paths[0] for d in science_files if d.source == "mag" - and d.descriptor == MAG_DESPUN_L1D_DESCRIPTOR - and d.data_type == "l1d" - ) - mag_is_preliminary = True - except StopIteration: - raise ValueError(f"Missing MAG {MAG_DESPUN_L1D_DESCRIPTOR} dependency.") + mag_file, mag_level = select_mag_path(dependencies, MAG_DESPUN_L1D_DESCRIPTOR) + if mag_file is None: + raise ValueError(f"Missing MAG {MAG_DESPUN_L1D_DESCRIPTOR} dependency.") + mag_is_preliminary = mag_level == "l1d" try: swapi_dependency = next( d.imap_file_paths[0] for d in science_files if d.source == "swapi" @@ -65,7 +54,6 @@ def fetch_dependencies(cls, dependencies: ProcessingInputCollection) -> SweL3Dep swe_l2_file = download(swe_l2_dependency.construct_path()) swe_l1b_file = download(swe_l1b_dependency.construct_path()) - mag_file = download(mag_dependency.construct_path()) swapi_file = download(swapi_dependency.construct_path()) swe_config = download(swe_config_dependency) diff --git a/imap_l3_processing/swe/l3/utils.py b/imap_l3_processing/swe/l3/utils.py index 628102628..43f11352c 100644 --- a/imap_l3_processing/swe/l3/utils.py +++ b/imap_l3_processing/swe/l3/utils.py @@ -55,15 +55,16 @@ def read_l3a_swapi_proton_data(swapi_l3a_data: Path) -> SwapiL3aProtonData: else: epoch_delta = np.repeat(timedelta(seconds=epoch_delta_ns), len(epoch)) proton_sw_speed = read_numeric_variable(cdf["proton_sw_speed"]) - proton_sw_clock_angle = read_numeric_variable(cdf["proton_sw_clock_angle"]) - proton_sw_deflection_angle = read_numeric_variable(cdf["proton_sw_deflection_angle"]) + if "proton_sw_bulk_velocity_rtn_sc" in cdf: + proton_sw_velocity_rtn = read_numeric_variable(cdf["proton_sw_bulk_velocity_rtn_sc"]) + else: + proton_sw_velocity_rtn = np.full((len(epoch), 3), np.nan) swp_flags = cdf["swp_flags"][...] return SwapiL3aProtonData(epoch=epoch, epoch_delta=epoch_delta, + proton_sw_velocity_rtn=proton_sw_velocity_rtn, proton_sw_speed=proton_sw_speed, - proton_sw_clock_angle=proton_sw_clock_angle, - proton_sw_deflection_angle=proton_sw_deflection_angle, swp_flags=swp_flags) diff --git a/imap_l3_processing/swe/swe_processor.py b/imap_l3_processing/swe/swe_processor.py index 2d5ca4372..ae245f87d 100644 --- a/imap_l3_processing/swe/swe_processor.py +++ b/imap_l3_processing/swe/swe_processor.py @@ -8,19 +8,38 @@ from imap_l3_processing.data_utils import find_closest_neighbor from imap_l3_processing.models import InputMetadata from imap_l3_processing.processor import Processor -from imap_l3_processing.swapi.l3a.science.calculate_pickup_ion import calculate_solar_wind_velocity_vector -from imap_l3_processing.swapi.quality_flags import SwapiL3Flags -from imap_l3_processing.swe.l3.models import SweL3Data, SweL1bData, SweL2Data, SweL3MomentData, SweConfiguration -from imap_l3_processing.swe.l3.science.moment_calculations import compute_maxwellian_weight_factors, \ - rotate_temperature, \ - rotate_dps_vector_to_rtn, core_fit_moments_retrying_on_failure, halo_fit_moments_retrying_on_failure, Moments, \ - integrate, scale_core_density, scale_halo_density, rotate_vector_to_rtn_spherical_coordinates, \ - calculate_primary_eigenvector, \ - ScaleDensityOutput, rotate_temperature_tensor_to_mag -from imap_l3_processing.swe.l3.science.pitch_calculations import average_over_look_directions, mec_breakpoint_finder, \ - correct_and_rebin, \ - integrate_distribution_to_get_1d_spectrum, integrate_distribution_to_get_inbound_and_outbound_1d_spectrum, \ - calculate_velocity_in_dsp_frame_km_s, swe_rebin_intensity_by_pitch_angle_and_gyrophase +from imap_l3_processing.swe.l3.models import ( + SweL3Data, + SweL1bData, + SweL2Data, + SweL3MomentData, + SweConfiguration, +) +from imap_l3_processing.swe.l3.science.moment_calculations import ( + compute_maxwellian_weight_factors, + rotate_temperature, + rotate_dps_vector_to_rtn, + rotate_rtn_vectors_to_dps, + core_fit_moments_retrying_on_failure, + halo_fit_moments_retrying_on_failure, + Moments, + integrate, + scale_core_density, + scale_halo_density, + rotate_vector_to_rtn_spherical_coordinates, + calculate_primary_eigenvector, + ScaleDensityOutput, + rotate_temperature_tensor_to_mag, +) +from imap_l3_processing.swe.l3.science.pitch_calculations import ( + average_over_look_directions, + mec_breakpoint_finder, + correct_and_rebin, + integrate_distribution_to_get_1d_spectrum, + integrate_distribution_to_get_inbound_and_outbound_1d_spectrum, + calculate_velocity_in_dsp_frame_km_s, + swe_rebin_intensity_by_pitch_angle_and_gyrophase, +) from imap_l3_processing.swe.l3.swe_l3_dependencies import SweL3Dependencies from imap_l3_processing.swe.l3.utils import compute_epoch_delta_in_ns from imap_l3_processing.swe.quality_flags import SweL3Flags @@ -77,7 +96,9 @@ def check_temperature_outlier_flag(data: np.ndarray): class SweProcessor(Processor): - def __init__(self, dependencies: ProcessingInputCollection, input_metadata: InputMetadata): + def __init__( + self, dependencies: ProcessingInputCollection, input_metadata: InputMetadata + ): super().__init__(dependencies, input_metadata) def process(self): @@ -90,42 +111,57 @@ def process(self): def calculate_products(self, dependencies: SweL3Dependencies) -> SweL3Data: swe_l2_data = dependencies.swe_l2_data swe_epoch = swe_l2_data.epoch - epoch_delta = compute_epoch_delta_in_ns(swe_l2_data.acquisition_duration, - dependencies.swe_l1b_data.settle_duration) + epoch_delta = compute_epoch_delta_in_ns( + swe_l2_data.acquisition_duration, dependencies.swe_l1b_data.settle_duration + ) config = dependencies.configuration average_psd = [] swe_quality_flags = np.empty_like(swe_epoch, dtype=np.uint16) - spacecraft_potential: np.ndarray[np.float64] = np.empty_like(swe_epoch, dtype=np.float64) + spacecraft_potential: np.ndarray[np.float64] = np.empty_like( + swe_epoch, dtype=np.float64 + ) halo_core: np.ndarray[np.float64] = np.empty_like(swe_epoch, dtype=np.float64) corrected_energy_bins = [] - rebinned_mag_data = dependencies.mag_data.rebin_to(swe_epoch, - [datetime.timedelta(seconds=delta / 1e9) - for delta - in epoch_delta]) + rebinned_mag_data = dependencies.mag_data.rebin_to( + swe_epoch, + [datetime.timedelta(seconds=delta / 1e9) for delta in epoch_delta], + ) geometric_fractions = np.array(config["geometric_fractions"]) for i in range(len(swe_epoch)): npts = 7 // 2 left_idx = 0 if i - npts < 0 else i - npts right_idx = i + (i - left_idx + 1) - time_avg_psd = np.nanmean(swe_l2_data.phase_space_density[left_idx:right_idx], axis=0) - - average_psd.append(average_over_look_directions(time_avg_psd, - geometric_fractions, - config["minimum_phase_space_density_value"])) + time_avg_psd = np.nanmean( + swe_l2_data.phase_space_density[left_idx:right_idx], axis=0 + ) + + average_psd.append( + average_over_look_directions( + time_avg_psd, + geometric_fractions, + config["minimum_phase_space_density_value"], + ) + ) - spacecraft_potential[i], halo_core[i], swe_quality_flags[i] = mec_breakpoint_finder(swe_l2_data.energy, - average_psd[i]) + spacecraft_potential[i], halo_core[i], swe_quality_flags[i] = ( + mec_breakpoint_finder(swe_l2_data.energy, average_psd[i]) + ) corrected_energy_bins.append(swe_l2_data.energy - spacecraft_potential[i]) corrected_energy_bins = np.array(corrected_energy_bins) - swe_l3_moments_data = self.calculate_moment_products(swe_l2_data, dependencies.swe_l1b_data, - rebinned_mag_data, - spacecraft_potential, halo_core, - corrected_energy_bins, config) + swe_l3_moments_data = self.calculate_moment_products( + swe_l2_data, + dependencies.swe_l1b_data, + rebinned_mag_data, + spacecraft_potential, + halo_core, + corrected_energy_bins, + config, + ) # Check Temperature Outlier Flags and add to swe_quality_flags # each temperature variable needs checked temperature_outlier_flags = check_temperature_outlier_flag(swe_l3_moments_data.core_t_parallel_integrated) @@ -146,10 +182,16 @@ def calculate_products(self, dependencies: SweL3Dependencies) -> SweL3Data: swe_quality_flags |= temperature_outlier_flags ( - phase_space_density_by_pitch_angle, phase_space_density_by_pitch_angle_and_gyrophase, - energy_spectrum, energy_spectrum_inbound, energy_spectrum_outbound, - intensity_by_pitch_angle_and_gyrophase, intensity_by_pitch_angle, - uncertanties_by_pitch_angle_and_gyrophase, uncertanties_by_pitch_angle, pitch_angle_flags + phase_space_density_by_pitch_angle, + phase_space_density_by_pitch_angle_and_gyrophase, + energy_spectrum, + energy_spectrum_inbound, + energy_spectrum_outbound, + intensity_by_pitch_angle_and_gyrophase, + intensity_by_pitch_angle, + uncertanties_by_pitch_angle_and_gyrophase, + uncertanties_by_pitch_angle, + pitch_angle_flags, ) = self.calculate_pitch_angle_products(dependencies, corrected_energy_bins) swe_quality_flags |= pitch_angle_flags @@ -158,7 +200,9 @@ def calculate_products(self, dependencies: SweL3Dependencies) -> SweL3Data: swe_quality_flags = np.bitwise_or(swe_quality_flags, SweL3Flags.PRELIMINARY_MAG) rebinned_mask = np.ma.masked_invalid(swe_l2_data.phase_space_density_rebinned) - dist_by_phi_rebinned = np.average(rebinned_mask, weights=geometric_fractions, axis=-1) + dist_by_phi_rebinned = np.average( + rebinned_mask, weights=geometric_fractions, axis=-1 + ) dist_fun_1d_rebinned = np.ma.average(dist_by_phi_rebinned, axis=-1) dist_by_theta_rebinned = np.ma.average(rebinned_mask, axis=-2) @@ -185,21 +229,59 @@ def calculate_products(self, dependencies: SweL3Dependencies) -> SweL3Data: phase_space_density_inward=energy_spectrum_inbound, phase_space_density_outward=energy_spectrum_outbound, moment_data=swe_l3_moments_data, - phi=np.array([6., 18., 30., 42., 54., 66., 78., 90., 102., 114., 126., - 138., 150., 162., 174., 186., 198., 210., 222., 234., 246., 258., - 270., 282., 294., 306., 318., 330., 342., 354.], dtype=np.float32), + phi=np.array( + [ + 6.0, + 18.0, + 30.0, + 42.0, + 54.0, + 66.0, + 78.0, + 90.0, + 102.0, + 114.0, + 126.0, + 138.0, + 150.0, + 162.0, + 174.0, + 186.0, + 198.0, + 210.0, + 222.0, + 234.0, + 246.0, + 258.0, + 270.0, + 282.0, + 294.0, + 306.0, + 318.0, + 330.0, + 342.0, + 354.0, + ], + dtype=np.float32, + ), # Our PSD input is not rebinned to a consistent spin angle, it's by "spin sector". Do we need to do this calculation using a different input var that has consistent angle? theta=swe_l2_data.inst_el, - raw_1d_psd_rebinned=dist_fun_1d_rebinned, raw_psd_by_phi_rebinned=dist_by_phi_rebinned, raw_psd_by_theta_rebinned=dist_by_theta_rebinned, - swe_flags=swe_quality_flags + swe_flags=swe_quality_flags, ) - def calculate_moment_products(self, swe_l2_data: SweL2Data, swe_l1b_data: SweL1bData, rebinned_mag_data: np.ndarray, - spacecraft_potential: np.ndarray, halo_core: np.ndarray, - corrected_energy_bins: np.ndarray, config: SweConfiguration) -> SweL3MomentData: + def calculate_moment_products( + self, + swe_l2_data: SweL2Data, + swe_l1b_data: SweL1bData, + rebinned_mag_data: np.ndarray, + spacecraft_potential: np.ndarray, + halo_core: np.ndarray, + corrected_energy_bins: np.ndarray, + config: SweConfiguration, + ) -> SweL3MomentData: number_of_points = len(swe_l2_data.epoch) core_density_history = [100 for _ in range(3)] halo_density_history = [25 for _ in range(3)] @@ -256,24 +338,43 @@ def calculate_moment_products(self, swe_l2_data: SweL2Data, swe_l1b_data: SweL1b for i in range(len(swe_l2_data.epoch)): try: - velocity_vectors_cm_per_s: np.ndarray = 1000 * 100 * calculate_velocity_in_dsp_frame_km_s( - corrected_energy_bins[i], - swe_l2_data.inst_el, - swe_l2_data.inst_az_spin_sector[i]) + velocity_vectors_cm_per_s: np.ndarray = ( + 1000 + * 100 + * calculate_velocity_in_dsp_frame_km_s( + corrected_energy_bins[i], + swe_l2_data.inst_el, + swe_l2_data.inst_az_spin_sector[i], + ) + ) - weights: np.ndarray[float] = compute_maxwellian_weight_factors(swe_l1b_data.count_rates[i], - swe_l2_data.acquisition_duration[ - i] / 1e6) + weights: np.ndarray[float] = compute_maxwellian_weight_factors( + swe_l1b_data.count_rates[i], + swe_l2_data.acquisition_duration[i] / 1e6, + ) ifit = next( - index for index, energy in enumerate(swe_l2_data.energy) if energy >= spacecraft_potential[i]) - jbreak = next(index for index, energy in enumerate(swe_l2_data.energy) if energy >= halo_core[i]) + index + for index, energy in enumerate(swe_l2_data.energy) + if energy >= spacecraft_potential[i] + ) + jbreak = next( + index + for index, energy in enumerate(swe_l2_data.energy) + if energy >= halo_core[i] + ) core_nfit = jbreak - ifit ifit += 1 if core_nfit == 0: - logger.info(f"Bad core-halo breakpoint value at index {i}. Continuing.") + logger.info( + f"Bad core-halo breakpoint value at index {i}. Continuing." + ) continue - halo_nfit = 5 if len(swe_l2_data.energy) - jbreak > 5 else len(swe_l2_data.energy) - jbreak + halo_nfit = ( + 5 + if len(swe_l2_data.energy) - jbreak > 5 + else len(swe_l2_data.energy) - jbreak + ) core_moment_fit_result = core_fit_moments_retrying_on_failure( corrected_energy_bins[i], @@ -282,7 +383,7 @@ def calculate_moment_products(self, swe_l2_data: SweL2Data, swe_l1b_data: SweL1b weights, ifit, ifit + core_nfit, - core_density_history + core_density_history, ) current_epoch = swe_l2_data.epoch[i] @@ -292,117 +393,198 @@ def calculate_moment_products(self, swe_l2_data: SweL2Data, swe_l1b_data: SweL1b core_fit_chi_squareds[i] = core_moment_fit_result.chisq core_fit_num_points[i] = core_moment_fit_result.number_of_points - core_density_history = [*core_density_history[1:], core_moment.density] - - core_rtn_velocity[i] = rotate_dps_vector_to_rtn(current_epoch, - np.array( - [core_moment.velocity_x, core_moment.velocity_y, - core_moment.velocity_z])) - - core_temp_theta_rtn, core_temp_phi_rtn = rotate_temperature(current_epoch, core_moment.alpha, - core_moment.beta) + core_density_history = [ + *core_density_history[1:], + core_moment.density, + ] + + core_rtn_velocity[i] = rotate_dps_vector_to_rtn( + current_epoch, + np.array( + [ + core_moment.velocity_x, + core_moment.velocity_y, + core_moment.velocity_z, + ] + ), + ) + + core_temp_theta_rtn, core_temp_phi_rtn = rotate_temperature( + current_epoch, core_moment.alpha, core_moment.beta + ) core_temp_theta_rtns[i] = core_temp_theta_rtn core_temp_phi_rtns[i] = core_temp_phi_rtn - core_temp_avg = (2 * core_moment.t_perpendicular + core_moment.t_parallel) / 3 + core_temp_avg = ( + 2 * core_moment.t_perpendicular + core_moment.t_parallel + ) / 3 if 1e3 < core_temp_avg < 1e7: - core_integrate_result = integrate(ifit + 1, jbreak - 1, corrected_energy_bins[i], - sin_theta, cos_theta, - config['aperture_field_of_view_radians'], - swe_l2_data.phase_space_density[i], - instrument_phi[i], - spacecraft_potential[i], - [0, 0, 0, 0], [0, 0, 0, 0, 0, 0]) + core_integrate_result = integrate( + ifit + 1, + jbreak - 1, + corrected_energy_bins[i], + sin_theta, + cos_theta, + config["aperture_field_of_view_radians"], + swe_l2_data.phase_space_density[i], + instrument_phi[i], + spacecraft_potential[i], + [0, 0, 0, 0], + [0, 0, 0, 0, 0, 0], + ) if core_integrate_result is not None: - scale_core_density_output: ScaleDensityOutput = scale_core_density( - core_integrate_result.density, - core_integrate_result.velocity, - core_integrate_result.temperature, core_moment, - ifit, - corrected_energy_bins[i], - spacecraft_potential[i], cos_theta, - config['aperture_field_of_view_radians'], - instrument_phi[i], - core_moment_fit_result.regress_result, - core_integrate_result.base_energy) - - core_density_integrated[i] = scale_core_density_output.density - core_velocity_integrated[i] = rotate_dps_vector_to_rtn(current_epoch, - scale_core_density_output.velocity) - core_temperature_tensor_integrated[i] = scale_core_density_output.temperature - - magnitude, theta, phi = rotate_vector_to_rtn_spherical_coordinates(current_epoch, - core_integrate_result.heat_flux) + scale_core_density_output: ScaleDensityOutput = ( + scale_core_density( + core_integrate_result.density, + core_integrate_result.velocity, + core_integrate_result.temperature, + core_moment, + ifit, + corrected_energy_bins[i], + spacecraft_potential[i], + cos_theta, + config["aperture_field_of_view_radians"], + instrument_phi[i], + core_moment_fit_result.regress_result, + core_integrate_result.base_energy, + ) + ) + + core_density_integrated[i] = ( + scale_core_density_output.density + ) + core_velocity_integrated[i] = rotate_dps_vector_to_rtn( + current_epoch, scale_core_density_output.velocity + ) + core_temperature_tensor_integrated[i] = ( + scale_core_density_output.temperature + ) + + magnitude, theta, phi = ( + rotate_vector_to_rtn_spherical_coordinates( + current_epoch, core_integrate_result.heat_flux + ) + ) core_heat_flux_magnitude[i] = magnitude core_heat_flux_theta[i] = theta core_heat_flux_phi[i] = phi - core_primary_eigen_vector, core_temps = calculate_primary_eigenvector( - scale_core_density_output.temperature) + core_primary_eigen_vector, core_temps = ( + calculate_primary_eigenvector( + scale_core_density_output.temperature + ) + ) core_t_parallel_integrated[i] = core_temps[0] - core_t_perpendicular_integrated[i] = [core_temps[1], core_temps[2]] - - magnitude, theta, phi = rotate_vector_to_rtn_spherical_coordinates(current_epoch, - core_primary_eigen_vector) + core_t_perpendicular_integrated[i] = [ + core_temps[1], + core_temps[2], + ] + + magnitude, theta, phi = ( + rotate_vector_to_rtn_spherical_coordinates( + current_epoch, core_primary_eigen_vector + ) + ) core_temperature_theta_rtn_integrated[i] = theta core_temperature_phi_rtn_integrated[i] = phi - core_t_parallel_to_mag, core_t_perpendicular_to_mag_average, core_t_perpendicular_to_mag_ratio = rotate_temperature_tensor_to_mag( - scale_core_density_output.temperature, rebinned_mag_data[i]) + ( + core_t_parallel_to_mag, + core_t_perpendicular_to_mag_average, + core_t_perpendicular_to_mag_ratio, + ) = rotate_temperature_tensor_to_mag( + scale_core_density_output.temperature, + rebinned_mag_data[i], + ) core_temperature_parallel_to_mag[i] = core_t_parallel_to_mag - core_temperature_perpendicular_to_mag[i] = [core_t_perpendicular_to_mag_average, - core_t_perpendicular_to_mag_ratio] - - total_integration_output = integrate(ifit + 1, - len(corrected_energy_bins[i]) - 6, - corrected_energy_bins[i], - sin_theta, - cos_theta, config['aperture_field_of_view_radians'], - swe_l2_data.phase_space_density[i], - instrument_phi[i], - spacecraft_potential[i], - scale_core_density_output.cdelnv, - scale_core_density_output.cdelt) - assert total_integration_output is not None, "not yet checking if this is None" - total_density_integrated[i] = total_integration_output.density - total_velocity_integrated[i] = rotate_dps_vector_to_rtn(current_epoch, - total_integration_output.velocity) - total_temperature_tensor_integrated[i] = total_integration_output.temperature - - magnitude, theta, phi = rotate_vector_to_rtn_spherical_coordinates( - current_epoch, - total_integration_output.heat_flux) + core_temperature_perpendicular_to_mag[i] = [ + core_t_perpendicular_to_mag_average, + core_t_perpendicular_to_mag_ratio, + ] + + total_integration_output = integrate( + ifit + 1, + len(corrected_energy_bins[i]) - 6, + corrected_energy_bins[i], + sin_theta, + cos_theta, + config["aperture_field_of_view_radians"], + swe_l2_data.phase_space_density[i], + instrument_phi[i], + spacecraft_potential[i], + scale_core_density_output.cdelnv, + scale_core_density_output.cdelt, + ) + assert total_integration_output is not None, ( + "not yet checking if this is None" + ) + total_density_integrated[i] = ( + total_integration_output.density + ) + total_velocity_integrated[i] = rotate_dps_vector_to_rtn( + current_epoch, total_integration_output.velocity + ) + total_temperature_tensor_integrated[i] = ( + total_integration_output.temperature + ) + + magnitude, theta, phi = ( + rotate_vector_to_rtn_spherical_coordinates( + current_epoch, total_integration_output.heat_flux + ) + ) total_heat_flux_magnitude[i] = magnitude total_heat_flux_theta[i] = theta total_heat_flux_phi[i] = phi - total_primary_eigen_vector, total_temps = calculate_primary_eigenvector( - total_integration_output.temperature) + total_primary_eigen_vector, total_temps = ( + calculate_primary_eigenvector( + total_integration_output.temperature + ) + ) total_t_parallel_integrated[i] = total_temps[0] - total_t_perpendicular_integrated[i] = [total_temps[1], total_temps[2]] - - magnitude, theta, phi = rotate_vector_to_rtn_spherical_coordinates(current_epoch, - total_primary_eigen_vector) + total_t_perpendicular_integrated[i] = [ + total_temps[1], + total_temps[2], + ] + + magnitude, theta, phi = ( + rotate_vector_to_rtn_spherical_coordinates( + current_epoch, total_primary_eigen_vector + ) + ) total_temperature_theta_rtn_integrated[i] = theta total_temperature_phi_rtn_integrated[i] = phi - total_t_parallel_to_mag, total_t_perpendicular_to_mag_average, total_t_perpendicular_to_mag_ratio = rotate_temperature_tensor_to_mag( - total_integration_output.temperature, rebinned_mag_data[i]) - - total_temperature_parallel_to_mag[i] = total_t_parallel_to_mag - total_temperature_perpendicular_to_mag[i] = [total_t_perpendicular_to_mag_average, - total_t_perpendicular_to_mag_ratio] + ( + total_t_parallel_to_mag, + total_t_perpendicular_to_mag_average, + total_t_perpendicular_to_mag_ratio, + ) = rotate_temperature_tensor_to_mag( + total_integration_output.temperature, + rebinned_mag_data[i], + ) + + total_temperature_parallel_to_mag[i] = ( + total_t_parallel_to_mag + ) + total_temperature_perpendicular_to_mag[i] = [ + total_t_perpendicular_to_mag_average, + total_t_perpendicular_to_mag_ratio, + ] else: logger.info(f"core integrate failed at index {i}") else: - logger.info(f"core temp {core_temp_avg} out of range at index {i}") + logger.info( + f"core temp {core_temp_avg} out of range at index {i}" + ) else: logger.info(f"bad core moment fit result at index {i}") @@ -423,91 +605,153 @@ def calculate_moment_products(self, swe_l2_data: SweL2Data, swe_l1b_data: SweL1b halo_moments[i] = halo_moment halo_fit_chi_squareds[i] = halo_moment_fit_result.chisq - halo_density_history = [*halo_density_history[1:], halo_moment.density] - - halo_rtn_velocity[i] = rotate_dps_vector_to_rtn(current_epoch, - np.array( - [halo_moment.velocity_x, halo_moment.velocity_y, - halo_moment.velocity_z])) - - halo_temp_theta_rtn, halo_temp_phi_rtn = rotate_temperature(current_epoch, halo_moment.alpha, - halo_moment.beta) + halo_density_history = [ + *halo_density_history[1:], + halo_moment.density, + ] + + halo_rtn_velocity[i] = rotate_dps_vector_to_rtn( + current_epoch, + np.array( + [ + halo_moment.velocity_x, + halo_moment.velocity_y, + halo_moment.velocity_z, + ] + ), + ) + + halo_temp_theta_rtn, halo_temp_phi_rtn = rotate_temperature( + current_epoch, halo_moment.alpha, halo_moment.beta + ) halo_temp_theta_rtns[i] = halo_temp_theta_rtn halo_temp_phi_rtns[i] = halo_temp_phi_rtn - halo_temp_avg = (2 * halo_moment.t_perpendicular + halo_moment.t_parallel) / 3 + halo_temp_avg = ( + 2 * halo_moment.t_perpendicular + halo_moment.t_parallel + ) / 3 if 1e4 < halo_temp_avg < 1e8: - halo_integrate_result = integrate(jbreak, - len(corrected_energy_bins[i]) - 6, - corrected_energy_bins[i], - sin_theta, cos_theta, - config['aperture_field_of_view_radians'], - swe_l2_data.phase_space_density[i], - instrument_phi[i], - spacecraft_potential[i], - [0, 0, 0, 0], [0, 0, 0, 0, 0, 0]) + halo_integrate_result = integrate( + jbreak, + len(corrected_energy_bins[i]) - 6, + corrected_energy_bins[i], + sin_theta, + cos_theta, + config["aperture_field_of_view_radians"], + swe_l2_data.phase_space_density[i], + instrument_phi[i], + spacecraft_potential[i], + [0, 0, 0, 0], + [0, 0, 0, 0, 0, 0], + ) if halo_integrate_result is not None: - scale_halo_density_output: ScaleDensityOutput = scale_halo_density( - halo_integrate_result.density, - halo_integrate_result.velocity, - halo_integrate_result.temperature, halo_moment, - spacecraft_potential[i], halo_core[i], cos_theta, - config['aperture_field_of_view_radians'], - instrument_phi[i], - halo_moment_fit_result.regress_result, - halo_integrate_result.base_energy) - - halo_density_integrated[i] = scale_halo_density_output.density - halo_velocity_integrated[i] = rotate_dps_vector_to_rtn(current_epoch, - scale_halo_density_output.velocity) - halo_temperature_tensor_integrated[i] = scale_halo_density_output.temperature - - magnitude, theta, phi = rotate_vector_to_rtn_spherical_coordinates(current_epoch, - halo_integrate_result.heat_flux) + scale_halo_density_output: ScaleDensityOutput = ( + scale_halo_density( + halo_integrate_result.density, + halo_integrate_result.velocity, + halo_integrate_result.temperature, + halo_moment, + spacecraft_potential[i], + halo_core[i], + cos_theta, + config["aperture_field_of_view_radians"], + instrument_phi[i], + halo_moment_fit_result.regress_result, + halo_integrate_result.base_energy, + ) + ) + + halo_density_integrated[i] = ( + scale_halo_density_output.density + ) + halo_velocity_integrated[i] = rotate_dps_vector_to_rtn( + current_epoch, scale_halo_density_output.velocity + ) + halo_temperature_tensor_integrated[i] = ( + scale_halo_density_output.temperature + ) + + magnitude, theta, phi = ( + rotate_vector_to_rtn_spherical_coordinates( + current_epoch, halo_integrate_result.heat_flux + ) + ) halo_heat_flux_magnitude[i] = magnitude halo_heat_flux_theta[i] = theta halo_heat_flux_phi[i] = phi - halo_primary_eigen_vector, halo_temps = calculate_primary_eigenvector( - scale_halo_density_output.temperature) + halo_primary_eigen_vector, halo_temps = ( + calculate_primary_eigenvector( + scale_halo_density_output.temperature + ) + ) halo_t_parallel_integrated[i] = halo_temps[0] - halo_t_perpendicular_integrated[i] = [halo_temps[1], halo_temps[2]] - - magnitude, theta, phi = rotate_vector_to_rtn_spherical_coordinates(current_epoch, - halo_primary_eigen_vector) + halo_t_perpendicular_integrated[i] = [ + halo_temps[1], + halo_temps[2], + ] + + magnitude, theta, phi = ( + rotate_vector_to_rtn_spherical_coordinates( + current_epoch, halo_primary_eigen_vector + ) + ) halo_temperature_theta_rtn_integrated[i] = theta halo_temperature_phi_rtn_integrated[i] = phi - halo_t_parallel_to_mag, halo_t_perpendicular_to_mag_average, halo_t_perpendicular_to_mag_ratio = rotate_temperature_tensor_to_mag( - scale_halo_density_output.temperature, rebinned_mag_data[i]) + ( + halo_t_parallel_to_mag, + halo_t_perpendicular_to_mag_average, + halo_t_perpendicular_to_mag_ratio, + ) = rotate_temperature_tensor_to_mag( + scale_halo_density_output.temperature, + rebinned_mag_data[i], + ) halo_temperature_parallel_to_mag[i] = halo_t_parallel_to_mag - halo_temperature_perpendicular_to_mag[i] = [halo_t_perpendicular_to_mag_average, - halo_t_perpendicular_to_mag_ratio] + halo_temperature_perpendicular_to_mag[i] = [ + halo_t_perpendicular_to_mag_average, + halo_t_perpendicular_to_mag_ratio, + ] else: logger.info(f"halo integrate failed at index {i}") else: - logger.info(f"halo temp {halo_temp_avg} out of range at index {i}") + logger.info( + f"halo temp {halo_temp_avg} out of range at index {i}" + ) else: logger.info(f"bad halo moment fit result at index {i}") except Exception: logger.info( f"Failed to process moments at Epoch index: {i}. Outputting fill values and continuing to process. Traceback:", - exc_info=True) + exc_info=True, + ) continue return SweL3MomentData( core_fit_num_points=core_fit_num_points, core_chisq=core_fit_chi_squareds, halo_chisq=halo_fit_chi_squareds, - core_density_fit=np.array([core_moment.density for core_moment in core_moments]), - halo_density_fit=np.array([halo_moment.density for halo_moment in halo_moments]), - core_t_parallel_fit=np.array([core_moment.t_parallel for core_moment in core_moments]), - halo_t_parallel_fit=np.array([halo_moment.t_parallel for halo_moment in halo_moments]), - core_t_perpendicular_fit=np.array([core_moment.t_perpendicular for core_moment in core_moments]), - halo_t_perpendicular_fit=np.array([halo_moment.t_perpendicular for halo_moment in halo_moments]), + core_density_fit=np.array( + [core_moment.density for core_moment in core_moments] + ), + halo_density_fit=np.array( + [halo_moment.density for halo_moment in halo_moments] + ), + core_t_parallel_fit=np.array( + [core_moment.t_parallel for core_moment in core_moments] + ), + halo_t_parallel_fit=np.array( + [halo_moment.t_parallel for halo_moment in halo_moments] + ), + core_t_perpendicular_fit=np.array( + [core_moment.t_perpendicular for core_moment in core_moments] + ), + halo_t_perpendicular_fit=np.array( + [halo_moment.t_perpendicular for halo_moment in halo_moments] + ), core_temperature_phi_rtn_fit=np.rad2deg(core_temp_phi_rtns), halo_temperature_phi_rtn_fit=np.rad2deg(halo_temp_phi_rtns), core_temperature_theta_rtn_fit=np.rad2deg(core_temp_theta_rtns), @@ -540,12 +784,24 @@ def calculate_moment_products(self, swe_l2_data: SweL2Data, swe_l1b_data: SweL1b halo_t_perpendicular_integrated=halo_t_perpendicular_integrated, total_t_parallel_integrated=total_t_parallel_integrated, total_t_perpendicular_integrated=total_t_perpendicular_integrated, - core_temperature_theta_rtn_integrated=np.rad2deg(core_temperature_theta_rtn_integrated), - core_temperature_phi_rtn_integrated=np.rad2deg(core_temperature_phi_rtn_integrated), - halo_temperature_theta_rtn_integrated=np.rad2deg(halo_temperature_theta_rtn_integrated), - halo_temperature_phi_rtn_integrated=np.rad2deg(halo_temperature_phi_rtn_integrated), - total_temperature_theta_rtn_integrated=np.rad2deg(total_temperature_theta_rtn_integrated), - total_temperature_phi_rtn_integrated=np.rad2deg(total_temperature_phi_rtn_integrated), + core_temperature_theta_rtn_integrated=np.rad2deg( + core_temperature_theta_rtn_integrated + ), + core_temperature_phi_rtn_integrated=np.rad2deg( + core_temperature_phi_rtn_integrated + ), + halo_temperature_theta_rtn_integrated=np.rad2deg( + halo_temperature_theta_rtn_integrated + ), + halo_temperature_phi_rtn_integrated=np.rad2deg( + halo_temperature_phi_rtn_integrated + ), + total_temperature_theta_rtn_integrated=np.rad2deg( + total_temperature_theta_rtn_integrated + ), + total_temperature_phi_rtn_integrated=np.rad2deg( + total_temperature_phi_rtn_integrated + ), core_temperature_parallel_to_mag=core_temperature_parallel_to_mag, core_temperature_perpendicular_to_mag=core_temperature_perpendicular_to_mag, halo_temperature_parallel_to_mag=halo_temperature_parallel_to_mag, @@ -557,35 +813,59 @@ def calculate_moment_products(self, swe_l2_data: SweL2Data, swe_l1b_data: SweL1b total_temperature_tensor_integrated=total_temperature_tensor_integrated, ) - def calculate_pitch_angle_products(self, dependencies: SweL3Dependencies, corrected_energy_bins: np.ndarray): + def calculate_pitch_angle_products( + self, dependencies: SweL3Dependencies, corrected_energy_bins: np.ndarray + ): swe_l2_data = dependencies.swe_l2_data swe_epoch = swe_l2_data.epoch config = dependencies.configuration - mag_max_distance = np.timedelta64(int(config['max_mag_offset_in_minutes'] * 60e9), 'ns') + mag_max_distance = np.timedelta64( + int(config["max_mag_offset_in_minutes"] * 60e9), "ns" + ) - rebinned_mag_data, indices = find_closest_neighbor(from_epoch=dependencies.mag_data.epoch, - from_data=dependencies.mag_data.mag_data, - to_epoch=swe_l2_data.acquisition_time, - maximum_distance=mag_max_distance, - ) + rebinned_mag_data, indices = find_closest_neighbor( + from_epoch=dependencies.mag_data.epoch, + from_data=dependencies.mag_data.mag_data, + to_epoch=swe_l2_data.acquisition_time, + maximum_distance=mag_max_distance, + ) swapi_l3a_proton_data = dependencies.swapi_l3a_proton_data swapi_epoch = swapi_l3a_proton_data.epoch - solar_wind_vectors = calculate_solar_wind_velocity_vector(swapi_l3a_proton_data.proton_sw_speed, - swapi_l3a_proton_data.proton_sw_clock_angle, - swapi_l3a_proton_data.proton_sw_deflection_angle) - swapi_max_distance = np.timedelta64(int(config['max_swapi_offset_in_minutes'] * 60e9), 'ns') - rebinned_solar_wind_vectors, swapi_indices = find_closest_neighbor(from_epoch=swapi_epoch, - from_data=solar_wind_vectors, - to_epoch=swe_epoch, - maximum_distance=swapi_max_distance) - - closest_flags = swapi_l3a_proton_data.swp_flags[swapi_indices] + solar_wind_vectors = rotate_rtn_vectors_to_dps( + swapi_epoch, + swapi_l3a_proton_data.proton_sw_velocity_rtn, + ) + proton_sw_speed = swapi_l3a_proton_data.proton_sw_speed + fallback_to_speed = np.any(np.isnan(solar_wind_vectors), axis=1) & np.isfinite( + proton_sw_speed + ) + speed_fallback_vectors = np.zeros_like(solar_wind_vectors) + speed_fallback_vectors[:, 2] = -proton_sw_speed + solar_wind_vectors = np.where( + fallback_to_speed[:, np.newaxis], + speed_fallback_vectors, + solar_wind_vectors, + ) + swapi_max_distance = np.timedelta64( + int(config["max_swapi_offset_in_minutes"] * 60e9), "ns" + ) + rebinned_solar_wind_vectors, swapi_indices = find_closest_neighbor( + from_epoch=swapi_epoch, + from_data=solar_wind_vectors, + to_epoch=swe_epoch, + maximum_distance=swapi_max_distance, + ) + + kept_after_nan_filter = ~np.any(np.isnan(solar_wind_vectors), axis=1) + fallback_at_swe = fallback_to_speed[kept_after_nan_filter][swapi_indices] + within_window = ~np.any(np.isnan(rebinned_solar_wind_vectors), axis=1) swe_flags = np.full(len(swe_epoch), SweL3Flags.NONE, dtype=np.uint16) - estimated_angles = (closest_flags & SwapiL3Flags.SWP_SW_ANGLES_ESTIMATED) > 0 - swe_flags[estimated_angles] = SweL3Flags.FALLBACK_SWAPI_SPEED + swe_flags[fallback_at_swe & within_window] = SweL3Flags.FALLBACK_SWAPI_SPEED - counts = dependencies.swe_l1b_data.count_rates * (swe_l2_data.acquisition_duration[..., np.newaxis] / 1e6) + counts = dependencies.swe_l1b_data.count_rates * ( + swe_l2_data.acquisition_duration[..., np.newaxis] / 1e6 + ) phase_space_density_by_pitch_angle = [] phase_space_density_by_pitch_angle_and_gyrophase = [] @@ -600,56 +880,102 @@ def calculate_pitch_angle_products(self, dependencies: SweL3Dependencies, correc for i in range(len(swe_epoch)): missing_mag_data = np.any(np.isnan(rebinned_mag_data[i])) if missing_mag_data: - num_energy_bins = len(config['energy_bins']) - num_pitch_angle_bins = len(config['pitch_angle_bins']) - num_gyrophase_bins = len(config['gyrophase_bins']) - phase_space_density_by_pitch_angle.append(np.full((num_energy_bins, num_pitch_angle_bins), np.nan)) + num_energy_bins = len(config["energy_bins"]) + num_pitch_angle_bins = len(config["pitch_angle_bins"]) + num_gyrophase_bins = len(config["gyrophase_bins"]) + phase_space_density_by_pitch_angle.append( + np.full((num_energy_bins, num_pitch_angle_bins), np.nan) + ) phase_space_density_by_pitch_angle_and_gyrophase.append( - np.full((num_energy_bins, num_pitch_angle_bins, num_gyrophase_bins), np.nan)) + np.full( + (num_energy_bins, num_pitch_angle_bins, num_gyrophase_bins), + np.nan, + ) + ) phase_space_density_1d.append(np.full(num_energy_bins, np.nan)) phase_space_density_inward.append(np.full(num_energy_bins, np.nan)) phase_space_density_outward.append(np.full(num_energy_bins, np.nan)) rebinned_intensity_by_pa_and_gyro.append( - np.full((swe_l2_data.flux.shape[1], num_pitch_angle_bins, num_gyrophase_bins), np.nan)) - rebinned_intensity_by_pa.append(np.full((swe_l2_data.flux.shape[1], num_pitch_angle_bins), np.nan)) + np.full( + ( + swe_l2_data.flux.shape[1], + num_pitch_angle_bins, + num_gyrophase_bins, + ), + np.nan, + ) + ) + rebinned_intensity_by_pa.append( + np.full((swe_l2_data.flux.shape[1], num_pitch_angle_bins), np.nan) + ) uncertainties_by_pa_and_gyro.append( - np.full((swe_l2_data.flux.shape[1], num_pitch_angle_bins, num_gyrophase_bins), np.nan)) - uncertainties_by_pa.append(np.full((swe_l2_data.flux.shape[1], num_pitch_angle_bins), np.nan)) + np.full( + ( + swe_l2_data.flux.shape[1], + num_pitch_angle_bins, + num_gyrophase_bins, + ), + np.nan, + ) + ) + uncertainties_by_pa.append( + np.full((swe_l2_data.flux.shape[1], num_pitch_angle_bins), np.nan) + ) else: - dsp_velocities = calculate_velocity_in_dsp_frame_km_s(corrected_energy_bins[i], swe_l2_data.inst_el, - swe_l2_data.inst_az_spin_sector[i]) - rebinned_psd, rebinned_psd_by_pa_and_gyro = correct_and_rebin(swe_l2_data.phase_space_density[i], - rebinned_solar_wind_vectors[i], - dsp_velocities, - rebinned_mag_data[i], - config) + dsp_velocities = calculate_velocity_in_dsp_frame_km_s( + corrected_energy_bins[i], + swe_l2_data.inst_el, + swe_l2_data.inst_az_spin_sector[i], + ) + rebinned_psd, rebinned_psd_by_pa_and_gyro = correct_and_rebin( + swe_l2_data.phase_space_density[i], + rebinned_solar_wind_vectors[i], + dsp_velocities, + rebinned_mag_data[i], + config, + ) phase_space_density_by_pitch_angle.append(rebinned_psd) - phase_space_density_by_pitch_angle_and_gyrophase.append(rebinned_psd_by_pa_and_gyro) - phase_space_density_1d.append(integrate_distribution_to_get_1d_spectrum(rebinned_psd, config)) - inbound, outbound = integrate_distribution_to_get_inbound_and_outbound_1d_spectrum(rebinned_psd, - config) + phase_space_density_by_pitch_angle_and_gyrophase.append( + rebinned_psd_by_pa_and_gyro + ) + phase_space_density_1d.append( + integrate_distribution_to_get_1d_spectrum(rebinned_psd, config) + ) + inbound, outbound = ( + integrate_distribution_to_get_inbound_and_outbound_1d_spectrum( + rebinned_psd, config + ) + ) phase_space_density_inward.append(inbound) phase_space_density_outward.append(outbound) - intensity_by_pa_and_gyro, intensity_by_pa, uncertainty_by_pa_and_gyro, uncertainty_by_pa = swe_rebin_intensity_by_pitch_angle_and_gyrophase( + ( + intensity_by_pa_and_gyro, + intensity_by_pa, + uncertainty_by_pa_and_gyro, + uncertainty_by_pa, + ) = swe_rebin_intensity_by_pitch_angle_and_gyrophase( swe_l2_data.flux[i], counts[i], dsp_velocities, rebinned_mag_data[i], - config) + config, + ) rebinned_intensity_by_pa_and_gyro.append(intensity_by_pa_and_gyro) rebinned_intensity_by_pa.append(intensity_by_pa) uncertainties_by_pa_and_gyro.append(uncertainty_by_pa_and_gyro) uncertainties_by_pa.append(uncertainty_by_pa) - return phase_space_density_by_pitch_angle, \ - phase_space_density_by_pitch_angle_and_gyrophase, \ - phase_space_density_1d, \ - phase_space_density_inward, \ - phase_space_density_outward, \ - np.array(rebinned_intensity_by_pa_and_gyro), \ - np.array(rebinned_intensity_by_pa), \ - np.array(uncertainties_by_pa_and_gyro), \ - np.array(uncertainties_by_pa), \ - swe_flags + return ( + phase_space_density_by_pitch_angle, + phase_space_density_by_pitch_angle_and_gyrophase, + phase_space_density_1d, + phase_space_density_inward, + phase_space_density_outward, + np.array(rebinned_intensity_by_pa_and_gyro), + np.array(rebinned_intensity_by_pa), + np.array(uncertainties_by_pa_and_gyro), + np.array(uncertainties_by_pa), + swe_flags, + ) diff --git a/imap_l3_processing/utils.py b/imap_l3_processing/utils.py index d0a9c1d11..7d7a17e14 100644 --- a/imap_l3_processing/utils.py +++ b/imap_l3_processing/utils.py @@ -10,7 +10,7 @@ import imap_data_access import requests import spiceypy -from imap_data_access import ScienceFilePath +from imap_data_access import ScienceFilePath, download from imap_data_access.processing_input import ProcessingInputCollection from requests import RequestException from spacepy.pycdf import CDF @@ -223,6 +223,24 @@ def read_mag_data(cdf_path: Union[str, Path]) -> MagData: mag_data=read_numeric_variable(cdf["b_dsrf"])[:, :3]) +def select_mag_path( + dependencies: ProcessingInputCollection, + descriptor: str, +) -> tuple[Optional[Path], Optional[str]]: + science_files = dependencies.processing_input + for level in ("l2", "l1d"): + match = next( + (d.imap_file_paths[0] for d in science_files + if d.source == "mag" + and d.descriptor == descriptor + and d.data_type == level), + None, + ) + if match is not None: + return download(match.construct_path()), level + return None, None + + L1CPointingSet = TypeVar("L1CPointingSet", bound=Union[InputRectangularPointingSet, UltraL1CPSet]) GlowsL3eData = TypeVar("GlowsL3eData", bound=Union[GlowsL3eRectangularMapInputData, UltraGlowsL3eData]) diff --git a/instrument_team_data/swapi/imap_swapi_azimuthal-transmission_20260425_v001.csv b/instrument_team_data/swapi/imap_swapi_azimuthal-transmission_20260425_v001.csv new file mode 100644 index 000000000..9facc25c9 --- /dev/null +++ b/instrument_team_data/swapi/imap_swapi_azimuthal-transmission_20260425_v001.csv @@ -0,0 +1,1802 @@ +abs_azimuth,transmission +0.0,0.001 +0.1,0.001 +0.2,0.001 +0.30000000000000004,0.001 +0.4,0.001 +0.5,0.001 +0.6000000000000001,0.001 +0.7000000000000001,0.001 +0.8,0.001 +0.9,0.001 +1.0,0.001 +1.1,0.001 +1.2000000000000002,0.001 +1.3,0.001 +1.4000000000000001,0.001 +1.5,0.001 +1.6,0.001 +1.7000000000000002,0.001 +1.8,0.001 +1.9000000000000001,0.001 +2.0,0.001 +2.1,0.001 +2.2,0.001 +2.3000000000000003,0.001 +2.4000000000000004,0.001 +2.5,0.001 +2.6,0.001 +2.7,0.001 +2.8000000000000003,0.001 +2.9000000000000004,0.001 +3.0,0.001 +3.1,0.001 +3.2,0.001 +3.3000000000000003,0.001 +3.4000000000000004,0.001 +3.5,0.001 +3.6,0.001 +3.7,0.001 +3.8000000000000003,0.001 +3.9000000000000004,0.001 +4.0,0.001 +4.1000000000000005,0.001 +4.2,0.001 +4.3,0.001 +4.4,0.001 +4.5,0.001 +4.6000000000000005,0.001 +4.7,0.001 +4.800000000000001,0.001 +4.9,0.001 +5.0,0.001 +5.1000000000000005,0.001 +5.2,0.001 +5.300000000000001,0.001 +5.4,0.001 +5.5,0.001 +5.6000000000000005,0.001 +5.7,0.001 +5.800000000000001,0.001 +5.9,0.001 +6.0,0.001 +6.1000000000000005,0.001 +6.2,0.001 +6.300000000000001,0.001 +6.4,0.001 +6.5,0.001 +6.6000000000000005,0.001 +6.7,0.001 +6.800000000000001,0.001 +6.9,0.001 +7.0,0.001 +7.1000000000000005,0.001 +7.2,0.001 +7.300000000000001,0.001 +7.4,0.001 +7.5,0.001 +7.6000000000000005,0.001 +7.7,0.001 +7.800000000000001,0.001 +7.9,0.001 +8.0,0.001 +8.1,0.001 +8.200000000000001,0.001 +8.3,0.001 +8.4,0.001 +8.5,0.001 +8.6,0.001 +8.700000000000001,0.001 +8.8,0.001 +8.9,0.001 +9.0,0.001 +9.1,0.0009998347107438017 +9.200000000000001,0.0009993388429752066 +9.3,0.0009985123966942148 +9.4,0.0009973553719008264 +9.5,0.0009958677685950415 +9.600000000000001,0.0009940495867768596 +9.700000000000001,0.000991900826446281 +9.8,0.0009894214876033057 +9.9,0.0009866115702479338 +10.0,0.0009834710743801653 +10.100000000000001,0.00098 +10.200000000000001,0.000976198347107438 +10.3,0.0009720661157024793 +10.4,0.000967603305785124 +10.5,0.0009628099173553719 +10.600000000000001,0.0009576859504132231 +10.700000000000001,0.0009522314049586777 +10.8,0.0009464462809917356 +10.9,0.0009403305785123967 +11.0,0.0009338842975206612 +11.100000000000001,0.0009271074380165289 +11.200000000000001,0.0009199999999999999 +11.3,0.0009125619834710743 +11.4,0.000904793388429752 +11.5,0.000896694214876033 +11.600000000000001,0.0008882644628099173 +11.700000000000001,0.0008795041322314049 +11.8,0.0008704132231404958 +11.9,0.0008609917355371902 +12.0,0.0008512396694214877 +12.100000000000001,0.0008411570247933883 +12.200000000000001,0.0008307438016528924 +12.3,0.00082 +12.4,0.0008089256198347107 +12.5,0.0007975206611570248 +12.600000000000001,0.0007857851239669421 +12.700000000000001,0.0007737190082644628 +12.8,0.0007613223140495867 +12.9,0.0007485950413223141 +13.0,0.0007355371900826446 +13.100000000000001,0.0007221487603305783 +13.200000000000001,0.0007084297520661155 +13.3,0.0006943801652892561 +13.4,0.0006799999999999999 +13.5,0.000665289256198347 +13.600000000000001,0.0006502479338842972 +13.700000000000001,0.0006348760330578511 +13.8,0.0006191735537190081 +13.9,0.0006031404958677686 +14.0,0.0005867768595041323 +14.100000000000001,0.0005700826446280989 +14.200000000000001,0.0005530578512396693 +14.3,0.000535702479338843 +14.4,0.0005180165289256198 +14.5,0.0005 +14.600000000000001,0.0004819834710743799 +14.700000000000001,0.00046429752066115684 +14.8,0.0004469421487603305 +14.9,0.0004299173553719008 +15.0,0.00041322314049586776 +15.100000000000001,0.0003968595041322312 +15.200000000000001,0.0003808264462809916 +15.3,0.0003651239669421486 +15.4,0.0003497520661157024 +15.5,0.00033471074380165297 +15.600000000000001,0.0003199999999999998 +15.700000000000001,0.0003056198347107437 +15.8,0.00029157024793388425 +15.9,0.00027785123966942143 +16.0,0.0002644628099173554 +16.1,0.0002514049586776858 +16.2,0.0002386776859504133 +16.3,0.00022628099173553713 +16.400000000000002,0.00021421487603305765 +16.5,0.0002024793388429752 +16.6,0.0001910743801652891 +16.7,0.00018000000000000007 +16.8,0.00016925619834710738 +16.900000000000002,0.00015884297520661137 +17.0,0.00014876033057851238 +17.1,0.0001390082644628098 +17.2,0.00012958677685950425 +17.3,0.00012049586776859498 +17.400000000000002,0.00011173553719008246 +17.5,0.00010330578512396694 +17.6,9.520661157024784e-05 +17.7,8.743801652892567e-05 +17.8,7.999999999999995e-05 +17.900000000000002,7.289256198347094e-05 +18.0,6.611570247933885e-05 +18.1,5.966942148760321e-05 +18.2,5.35537190082645e-05 +18.3,4.7768595041322274e-05 +18.400000000000002,4.2314049586776744e-05 +18.5,3.7190082644628094e-05 +18.6,3.2396694214875966e-05 +18.7,2.7933884297520692e-05 +18.8,2.380165289256196e-05 +18.900000000000002,1.9999999999999924e-05 +19.0,1.652892561983471e-05 +19.1,1.3388429752066074e-05 +19.200000000000003,1.0578512396694142e-05 +19.3,8.099173553718992e-06 +19.400000000000002,5.950413223140453e-06 +19.5,4.132231404958678e-06 +19.6,2.6446280991735355e-06 +19.700000000000003,1.487603305785096e-06 +19.8,6.611570247933839e-07 +19.900000000000002,1.652892561983401e-07 +20.0,0.0 +20.1,2.13196856061447e-05 +20.200000000000003,1.7155444116180566e-05 +20.3,1.6103398172295758e-05 +20.400000000000002,1.664847123141282e-05 +20.5,1.7193544290529866e-05 +20.6,1.773861734964693e-05 +20.700000000000003,1.8283690408763994e-05 +20.8,2.1120166512100784e-05 +20.900000000000002,2.7339322761584742e-05 +21.0,3.355847901106848e-05 +21.1,3.9777635260552436e-05 +21.200000000000003,4.599679151003639e-05 +21.3,5.498206765387932e-05 +21.400000000000002,6.537738067867435e-05 +21.5,7.577269370346901e-05 +21.6,8.616800672826404e-05 +21.700000000000003,9.656331975305906e-05 +21.8,0.00010723157136621187 +21.900000000000002,0.00011830007409051615 +22.0,0.00012936857681482004 +22.1,0.00014043707953912432 +22.200000000000003,0.00015150558226342863 +22.3,0.00016254089928095013 +22.400000000000002,0.000173559412486199 +22.5,0.00018457792569144746 +22.6,0.00019559643889669633 +22.700000000000003,0.0002066149521019452 +22.8,0.00025180745505342647 +22.900000000000002,0.00034678233598731237 +23.0,0.00044175721692119485 +23.1,0.0005367320978550808 +23.200000000000003,0.0006317069787889667 +23.3,0.0008763076638121437 +23.400000000000002,0.001196169262259116 +23.5,0.0015160308607060774 +23.6,0.0018358924591530498 +23.700000000000003,0.002155754057600022 +23.8,0.0030200746317119265 +23.900000000000002,0.004672278221982343 +24.0,0.006324481812252702 +24.1,0.007976685402523118 +24.200000000000003,0.009628888992793535 +24.3,0.012864233963512224 +24.400000000000002,0.01689061934902317 +24.5,0.02091700473453397 +24.6,0.02494339012004492 +24.700000000000003,0.02896977550555587 +24.8,0.034949190899340725 +24.900000000000002,0.043736149711453474 +25.0,0.052523108523565926 +25.1,0.06131006733567868 +25.200000000000003,0.07009702614779144 +25.3,0.08304968815971644 +25.400000000000002,0.09807008023297724 +25.5,0.1130904723062375 +25.6,0.1281108643794983 +25.700000000000003,0.1431312564527591 +25.8,0.1595888232731475 +25.900000000000002,0.17809874558323668 +26.0,0.19660866789332523 +26.1,0.21511859020341442 +26.200000000000003,0.23362851251350364 +26.3,0.2532806260919889 +26.400000000000002,0.2734959651695925 +26.5,0.29371130424719544 +26.6,0.31392664332479914 +26.700000000000003,0.3341419824024028 +26.8,0.35454043109599376 +26.900000000000002,0.3751986468987567 +27.0,0.395856862701519 +27.1,0.41651507850428204 +27.200000000000003,0.437173294307045 +27.3,0.4576816812475397 +27.400000000000002,0.4781166693480951 +27.5,0.49855165744864977 +27.6,0.5189866455492052 +27.700000000000003,0.5394216336497604 +27.8,0.5599584988571765 +27.900000000000002,0.5806389408651683 +28.0,0.6013193828731591 +28.1,0.6219998248811506 +28.200000000000003,0.6426802668891424 +28.3,0.663322394352325 +28.400000000000002,0.6839458743066557 +28.5,0.7045693542609854 +28.6,0.725192834215316 +28.700000000000003,0.7458163141696467 +28.8,0.7660900118377287 +28.900000000000002,0.7858739928117056 +29.0,0.8056579737856815 +29.1,0.8254419547596583 +29.200000000000003,0.845225935733635 +29.3,0.8624095357230757 +29.400000000000002,0.8783357407769314 +29.5,0.8942619458307868 +29.6,0.9101881508846424 +29.700000000000003,0.9261143559384984 +29.8,0.9391562251577666 +29.900000000000002,0.9481863131627101 +30.0,0.957216401167653 +30.1,0.9662464891725964 +30.200000000000003,0.9752765771775397 +30.3,0.9805851622616254 +30.400000000000002,0.9841058368620278 +30.5,0.9876265114624303 +30.6,0.9911471860628329 +30.700000000000003,0.9946678606632353 +30.8,0.9972811318873998 +30.900000000000002,0.9986405659436998 +31.0,1.0 +31.1,1.0 +31.200000000000003,1.0 +31.3,1.0 +31.400000000000002,1.0 +31.5,1.0 +31.6,1.0 +31.700000000000003,1.0 +31.8,1.0 +31.900000000000002,1.0 +32.0,1.0 +32.1,1.0 +32.2,1.0 +32.300000000000004,1.0 +32.4,1.0 +32.5,1.0 +32.6,1.0 +32.7,1.0 +32.800000000000004,1.0 +32.9,1.0 +33.0,1.0 +33.1,1.0 +33.2,1.0 +33.300000000000004,1.0 +33.4,1.0 +33.5,1.0 +33.6,1.0 +33.7,1.0 +33.800000000000004,1.0 +33.9,1.0 +34.0,1.0 +34.1,1.0 +34.2,1.0 +34.300000000000004,1.0 +34.4,1.0 +34.5,1.0 +34.6,1.0 +34.7,1.0 +34.800000000000004,1.0 +34.9,1.0 +35.0,1.0 +35.1,1.0 +35.2,1.0 +35.300000000000004,1.0 +35.4,1.0 +35.5,1.0 +35.6,1.0 +35.7,1.0 +35.800000000000004,1.0 +35.9,1.0 +36.0,1.0 +36.1,1.0 +36.2,1.0 +36.300000000000004,1.0 +36.4,1.0 +36.5,1.0 +36.6,1.0 +36.7,1.0 +36.800000000000004,1.0 +36.9,1.0 +37.0,1.0 +37.1,1.0 +37.2,1.0 +37.300000000000004,1.0 +37.4,1.0 +37.5,1.0 +37.6,1.0 +37.7,1.0 +37.800000000000004,1.0 +37.9,1.0 +38.0,1.0 +38.1,1.0 +38.2,1.0 +38.300000000000004,1.0 +38.400000000000006,1.0 +38.5,1.0 +38.6,1.0 +38.7,1.0 +38.800000000000004,1.0 +38.900000000000006,1.0 +39.0,1.0 +39.1,1.0 +39.2,1.0 +39.300000000000004,1.0 +39.400000000000006,1.0 +39.5,1.0 +39.6,1.0 +39.7,1.0 +39.800000000000004,1.0 +39.900000000000006,1.0 +40.0,1.0 +40.1,1.0 +40.2,1.0 +40.300000000000004,1.0 +40.400000000000006,1.0 +40.5,1.0 +40.6,1.0 +40.7,1.0 +40.800000000000004,1.0 +40.900000000000006,1.0 +41.0,1.0 +41.1,1.0 +41.2,1.0 +41.300000000000004,1.0 +41.400000000000006,1.0 +41.5,1.0 +41.6,1.0 +41.7,1.0 +41.800000000000004,1.0 +41.900000000000006,1.0 +42.0,1.0 +42.1,1.0 +42.2,1.0 +42.300000000000004,1.0 +42.400000000000006,1.0 +42.5,1.0 +42.6,1.0 +42.7,1.0 +42.800000000000004,1.0 +42.900000000000006,1.0 +43.0,1.0 +43.1,1.0 +43.2,1.0 +43.300000000000004,1.0 +43.400000000000006,1.0 +43.5,1.0 +43.6,1.0 +43.7,1.0 +43.800000000000004,1.0 +43.900000000000006,1.0 +44.0,1.0 +44.1,1.0 +44.2,1.0 +44.300000000000004,1.0 +44.400000000000006,1.0 +44.5,1.0 +44.6,1.0 +44.7,1.0 +44.800000000000004,1.0 +44.900000000000006,1.0 +45.0,1.0 +45.1,1.0 +45.2,1.0 +45.300000000000004,1.0 +45.400000000000006,1.0 +45.5,1.0 +45.6,1.0 +45.7,1.0 +45.800000000000004,1.0 +45.900000000000006,1.0 +46.0,1.0 +46.1,1.0 +46.2,1.0 +46.300000000000004,1.0 +46.400000000000006,1.0 +46.5,1.0 +46.6,1.0 +46.7,1.0 +46.800000000000004,1.0 +46.900000000000006,1.0 +47.0,1.0 +47.1,1.0 +47.2,1.0 +47.300000000000004,1.0 +47.400000000000006,1.0 +47.5,1.0 +47.6,1.0 +47.7,1.0 +47.800000000000004,1.0 +47.900000000000006,1.0 +48.0,1.0 +48.1,1.0 +48.2,1.0 +48.300000000000004,1.0 +48.400000000000006,1.0 +48.5,1.0 +48.6,1.0 +48.7,1.0 +48.800000000000004,1.0 +48.900000000000006,1.0 +49.0,1.0 +49.1,1.0 +49.2,1.0 +49.300000000000004,1.0 +49.400000000000006,1.0 +49.5,1.0 +49.6,1.0 +49.7,1.0 +49.800000000000004,1.0 +49.900000000000006,1.0 +50.0,1.0 +50.1,1.0 +50.2,1.0 +50.300000000000004,1.0 +50.400000000000006,1.0 +50.5,1.0 +50.6,1.0 +50.7,1.0 +50.800000000000004,1.0 +50.900000000000006,1.0 +51.0,1.0 +51.1,1.0 +51.2,1.0 +51.300000000000004,1.0 +51.400000000000006,1.0 +51.5,1.0 +51.6,1.0 +51.7,1.0 +51.800000000000004,1.0 +51.900000000000006,1.0 +52.0,1.0 +52.1,1.0 +52.2,1.0 +52.300000000000004,1.0 +52.400000000000006,1.0 +52.5,1.0 +52.6,1.0 +52.7,1.0 +52.800000000000004,1.0 +52.900000000000006,1.0 +53.0,1.0 +53.1,1.0 +53.2,1.0 +53.300000000000004,1.0 +53.400000000000006,1.0 +53.5,1.0 +53.6,1.0 +53.7,1.0 +53.800000000000004,1.0 +53.900000000000006,1.0 +54.0,1.0 +54.1,1.0 +54.2,1.0 +54.300000000000004,1.0 +54.400000000000006,1.0 +54.5,1.0 +54.6,1.0 +54.7,1.0 +54.800000000000004,1.0 +54.900000000000006,1.0 +55.0,1.0 +55.1,1.0 +55.2,1.0 +55.300000000000004,1.0 +55.400000000000006,1.0 +55.5,1.0 +55.6,1.0 +55.7,1.0 +55.800000000000004,1.0 +55.900000000000006,1.0 +56.0,1.0 +56.1,1.0 +56.2,1.0 +56.300000000000004,1.0 +56.400000000000006,1.0 +56.5,1.0 +56.6,1.0 +56.7,1.0 +56.800000000000004,1.0 +56.900000000000006,1.0 +57.0,1.0 +57.1,1.0 +57.2,1.0 +57.300000000000004,1.0 +57.400000000000006,1.0 +57.5,1.0 +57.6,1.0 +57.7,1.0 +57.800000000000004,1.0 +57.900000000000006,1.0 +58.0,1.0 +58.1,1.0 +58.2,1.0 +58.300000000000004,1.0 +58.400000000000006,1.0 +58.5,1.0 +58.6,1.0 +58.7,1.0 +58.800000000000004,1.0 +58.900000000000006,1.0 +59.0,1.0 +59.1,1.0 +59.2,1.0 +59.300000000000004,1.0 +59.400000000000006,1.0 +59.5,1.0 +59.6,1.0 +59.7,1.0 +59.800000000000004,1.0 +59.900000000000006,1.0 +60.0,1.0 +60.1,1.0 +60.2,1.0 +60.300000000000004,1.0 +60.400000000000006,1.0 +60.5,1.0 +60.6,1.0 +60.7,1.0 +60.800000000000004,1.0 +60.900000000000006,1.0 +61.0,1.0 +61.1,1.0 +61.2,1.0 +61.300000000000004,1.0 +61.400000000000006,1.0 +61.5,1.0 +61.6,1.0 +61.7,1.0 +61.800000000000004,1.0 +61.900000000000006,1.0 +62.0,1.0 +62.1,1.0 +62.2,1.0 +62.300000000000004,1.0 +62.400000000000006,1.0 +62.5,1.0 +62.6,1.0 +62.7,1.0 +62.800000000000004,1.0 +62.900000000000006,1.0 +63.0,1.0 +63.1,1.0 +63.2,1.0 +63.300000000000004,1.0 +63.400000000000006,1.0 +63.5,1.0 +63.6,1.0 +63.7,1.0 +63.800000000000004,1.0 +63.900000000000006,1.0 +64.0,1.0 +64.10000000000001,1.0 +64.2,1.0 +64.3,1.0 +64.4,1.0 +64.5,1.0 +64.60000000000001,1.0 +64.7,1.0 +64.8,1.0 +64.9,1.0 +65.0,1.0 +65.10000000000001,1.0 +65.2,1.0 +65.3,1.0 +65.4,1.0 +65.5,1.0 +65.60000000000001,1.0 +65.7,1.0 +65.8,1.0 +65.9,1.0 +66.0,1.0 +66.10000000000001,1.0 +66.2,1.0 +66.3,1.0 +66.4,1.0 +66.5,1.0 +66.60000000000001,1.0 +66.7,1.0 +66.8,1.0 +66.9,1.0 +67.0,1.0 +67.10000000000001,1.0 +67.2,1.0 +67.3,1.0 +67.4,1.0 +67.5,1.0 +67.60000000000001,1.0 +67.7,1.0 +67.8,1.0 +67.9,1.0 +68.0,1.0 +68.10000000000001,1.0 +68.2,1.0 +68.3,1.0 +68.4,1.0 +68.5,1.0 +68.60000000000001,1.0 +68.7,1.0 +68.8,1.0 +68.9,1.0 +69.0,1.0 +69.10000000000001,1.0 +69.2,1.0 +69.3,1.0 +69.4,1.0 +69.5,1.0 +69.60000000000001,1.0 +69.7,1.0 +69.8,1.0 +69.9,1.0 +70.0,1.0 +70.10000000000001,1.0 +70.2,1.0 +70.3,1.0 +70.4,1.0 +70.5,1.0 +70.60000000000001,1.0 +70.7,1.0 +70.8,1.0 +70.9,1.0 +71.0,1.0 +71.10000000000001,1.0 +71.2,1.0 +71.3,1.0 +71.4,1.0 +71.5,1.0 +71.60000000000001,1.0 +71.7,1.0 +71.8,1.0 +71.9,1.0 +72.0,1.0 +72.10000000000001,1.0 +72.2,1.0 +72.3,1.0 +72.4,1.0 +72.5,1.0 +72.60000000000001,1.0 +72.7,1.0 +72.8,1.0 +72.9,1.0 +73.0,1.0 +73.10000000000001,1.0 +73.2,1.0 +73.3,1.0 +73.4,1.0 +73.5,1.0 +73.60000000000001,1.0 +73.7,1.0 +73.8,1.0 +73.9,1.0 +74.0,1.0 +74.10000000000001,1.0 +74.2,1.0 +74.3,1.0 +74.4,1.0 +74.5,1.0 +74.60000000000001,1.0 +74.7,1.0 +74.8,1.0 +74.9,1.0 +75.0,1.0 +75.10000000000001,1.0 +75.2,1.0 +75.3,1.0 +75.4,1.0 +75.5,1.0 +75.60000000000001,1.0 +75.7,1.0 +75.8,1.0 +75.9,1.0 +76.0,1.0 +76.10000000000001,1.0 +76.2,1.0 +76.3,1.0 +76.4,1.0 +76.5,1.0 +76.60000000000001,1.0 +76.7,1.0 +76.80000000000001,1.0 +76.9,1.0 +77.0,1.0 +77.10000000000001,1.0 +77.2,1.0 +77.30000000000001,1.0 +77.4,1.0 +77.5,1.0 +77.60000000000001,1.0 +77.7,1.0 +77.80000000000001,1.0 +77.9,1.0 +78.0,1.0 +78.10000000000001,1.0 +78.2,1.0 +78.30000000000001,1.0 +78.4,1.0 +78.5,1.0 +78.60000000000001,1.0 +78.7,1.0 +78.80000000000001,1.0 +78.9,1.0 +79.0,1.0 +79.10000000000001,1.0 +79.2,1.0 +79.30000000000001,1.0 +79.4,1.0 +79.5,1.0 +79.60000000000001,1.0 +79.7,1.0 +79.80000000000001,1.0 +79.9,1.0 +80.0,1.0 +80.10000000000001,1.0 +80.2,1.0 +80.30000000000001,1.0 +80.4,1.0 +80.5,1.0 +80.60000000000001,1.0 +80.7,1.0 +80.80000000000001,1.0 +80.9,1.0 +81.0,1.0 +81.10000000000001,1.0 +81.2,1.0 +81.30000000000001,1.0 +81.4,1.0 +81.5,1.0 +81.60000000000001,1.0 +81.7,1.0 +81.80000000000001,1.0 +81.9,1.0 +82.0,1.0 +82.10000000000001,1.0 +82.2,1.0 +82.30000000000001,1.0 +82.4,1.0 +82.5,1.0 +82.60000000000001,1.0 +82.7,1.0 +82.80000000000001,1.0 +82.9,1.0 +83.0,1.0 +83.10000000000001,1.0 +83.2,1.0 +83.30000000000001,1.0 +83.4,1.0 +83.5,1.0 +83.60000000000001,1.0 +83.7,1.0 +83.80000000000001,1.0 +83.9,1.0 +84.0,1.0 +84.10000000000001,1.0 +84.2,1.0 +84.30000000000001,1.0 +84.4,1.0 +84.5,1.0 +84.60000000000001,1.0 +84.7,1.0 +84.80000000000001,1.0 +84.9,1.0 +85.0,1.0 +85.10000000000001,1.0 +85.2,1.0 +85.30000000000001,1.0 +85.4,1.0 +85.5,1.0 +85.60000000000001,1.0 +85.7,1.0 +85.80000000000001,1.0 +85.9,1.0 +86.0,1.0 +86.10000000000001,1.0 +86.2,1.0 +86.30000000000001,1.0 +86.4,1.0 +86.5,1.0 +86.60000000000001,1.0 +86.7,1.0 +86.80000000000001,1.0 +86.9,1.0 +87.0,1.0 +87.10000000000001,1.0 +87.2,1.0 +87.30000000000001,1.0 +87.4,1.0 +87.5,1.0 +87.60000000000001,1.0 +87.7,1.0 +87.80000000000001,1.0 +87.9,1.0 +88.0,1.0 +88.10000000000001,1.0 +88.2,1.0 +88.30000000000001,1.0 +88.4,1.0 +88.5,1.0 +88.60000000000001,1.0 +88.7,1.0 +88.80000000000001,1.0 +88.9,1.0 +89.0,1.0 +89.10000000000001,1.0 +89.2,1.0 +89.30000000000001,1.0 +89.4,1.0 +89.5,1.0 +89.60000000000001,1.0 +89.7,1.0 +89.80000000000001,1.0 +89.9,1.0 +90.0,1.0 +90.10000000000001,1.0 +90.2,1.0 +90.30000000000001,1.0 +90.4,1.0 +90.5,1.0 +90.60000000000001,1.0 +90.7,1.0 +90.80000000000001,1.0 +90.9,1.0 +91.0,1.0 +91.10000000000001,1.0 +91.2,1.0 +91.30000000000001,1.0 +91.4,1.0 +91.5,1.0 +91.60000000000001,1.0 +91.7,1.0 +91.80000000000001,1.0 +91.9,1.0 +92.0,1.0 +92.10000000000001,1.0 +92.2,1.0 +92.30000000000001,1.0 +92.4,1.0 +92.5,1.0 +92.60000000000001,1.0 +92.7,1.0 +92.80000000000001,1.0 +92.9,1.0 +93.0,1.0 +93.10000000000001,1.0 +93.2,1.0 +93.30000000000001,1.0 +93.4,1.0 +93.5,1.0 +93.60000000000001,1.0 +93.7,1.0 +93.80000000000001,1.0 +93.9,1.0 +94.0,1.0 +94.10000000000001,1.0 +94.2,1.0 +94.30000000000001,1.0 +94.4,1.0 +94.5,1.0 +94.60000000000001,1.0 +94.7,1.0 +94.80000000000001,1.0 +94.9,1.0 +95.0,1.0 +95.10000000000001,1.0 +95.2,1.0 +95.30000000000001,1.0 +95.4,1.0 +95.5,1.0 +95.60000000000001,1.0 +95.7,1.0 +95.80000000000001,1.0 +95.9,1.0 +96.0,1.0 +96.10000000000001,1.0 +96.2,1.0 +96.30000000000001,1.0 +96.4,1.0 +96.5,1.0 +96.60000000000001,1.0 +96.7,1.0 +96.80000000000001,1.0 +96.9,1.0 +97.0,1.0 +97.10000000000001,1.0 +97.2,1.0 +97.30000000000001,1.0 +97.4,1.0 +97.5,1.0 +97.60000000000001,1.0 +97.7,1.0 +97.80000000000001,1.0 +97.9,1.0 +98.0,1.0 +98.10000000000001,1.0 +98.2,1.0 +98.30000000000001,1.0 +98.4,1.0 +98.5,1.0 +98.60000000000001,1.0 +98.7,1.0 +98.80000000000001,1.0 +98.9,1.0 +99.0,1.0 +99.10000000000001,1.0 +99.2,1.0 +99.30000000000001,1.0 +99.4,1.0 +99.5,1.0 +99.60000000000001,1.0 +99.7,1.0 +99.80000000000001,1.0 +99.9,1.0 +100.0,1.0 +100.10000000000001,1.0 +100.2,1.0 +100.30000000000001,1.0 +100.4,1.0 +100.5,1.0 +100.60000000000001,1.0 +100.7,1.0 +100.80000000000001,1.0 +100.9,1.0 +101.0,1.0 +101.10000000000001,1.0 +101.2,1.0 +101.30000000000001,1.0 +101.4,1.0 +101.5,1.0 +101.60000000000001,1.0 +101.7,1.0 +101.80000000000001,1.0 +101.9,1.0 +102.0,1.0 +102.10000000000001,1.0 +102.2,1.0 +102.30000000000001,1.0 +102.4,1.0 +102.5,1.0 +102.60000000000001,1.0 +102.7,1.0 +102.80000000000001,1.0 +102.9,1.0 +103.0,1.0 +103.10000000000001,1.0 +103.2,1.0 +103.30000000000001,1.0 +103.4,1.0 +103.5,1.0 +103.60000000000001,1.0 +103.7,1.0 +103.80000000000001,1.0 +103.9,1.0 +104.0,1.0 +104.10000000000001,1.0 +104.2,1.0 +104.30000000000001,1.0 +104.4,1.0 +104.5,1.0 +104.60000000000001,1.0 +104.7,1.0 +104.80000000000001,1.0 +104.9,1.0 +105.0,1.0 +105.10000000000001,1.0 +105.2,1.0 +105.30000000000001,1.0 +105.4,1.0 +105.5,1.0 +105.60000000000001,1.0 +105.7,1.0 +105.80000000000001,1.0 +105.9,1.0 +106.0,1.0 +106.10000000000001,1.0 +106.2,1.0 +106.30000000000001,1.0 +106.4,1.0 +106.5,1.0 +106.60000000000001,1.0 +106.7,1.0 +106.80000000000001,1.0 +106.9,1.0 +107.0,1.0 +107.10000000000001,1.0 +107.2,1.0 +107.30000000000001,1.0 +107.4,1.0 +107.5,1.0 +107.60000000000001,1.0 +107.7,1.0 +107.80000000000001,1.0 +107.9,1.0 +108.0,1.0 +108.10000000000001,1.0 +108.2,1.0 +108.30000000000001,1.0 +108.4,1.0 +108.5,1.0 +108.60000000000001,1.0 +108.7,1.0 +108.80000000000001,1.0 +108.9,1.0 +109.0,1.0 +109.10000000000001,1.0 +109.2,1.0 +109.30000000000001,1.0 +109.4,1.0 +109.5,1.0 +109.60000000000001,1.0 +109.7,1.0 +109.80000000000001,1.0 +109.9,1.0 +110.0,1.0 +110.10000000000001,1.0 +110.2,1.0 +110.30000000000001,1.0 +110.4,1.0 +110.5,1.0 +110.60000000000001,1.0 +110.7,1.0 +110.80000000000001,1.0 +110.9,1.0 +111.0,1.0 +111.10000000000001,1.0 +111.2,1.0 +111.30000000000001,1.0 +111.4,1.0 +111.5,1.0 +111.60000000000001,1.0 +111.7,1.0 +111.80000000000001,1.0 +111.9,1.0 +112.0,1.0 +112.10000000000001,1.0 +112.2,1.0 +112.30000000000001,1.0 +112.4,1.0 +112.5,1.0 +112.60000000000001,1.0 +112.7,1.0 +112.80000000000001,1.0 +112.9,1.0 +113.0,1.0 +113.10000000000001,1.0 +113.2,1.0 +113.30000000000001,1.0 +113.4,1.0 +113.5,1.0 +113.60000000000001,1.0 +113.7,1.0 +113.80000000000001,1.0 +113.9,1.0 +114.0,1.0 +114.10000000000001,1.0 +114.2,1.0 +114.30000000000001,1.0 +114.4,1.0 +114.5,1.0 +114.60000000000001,1.0 +114.7,1.0 +114.80000000000001,1.0 +114.9,1.0 +115.0,1.0 +115.10000000000001,1.0007976867908548 +115.2,1.0015953735817094 +115.30000000000001,1.0024579015147337 +115.4,1.003348423405998 +115.5,1.0042389452972622 +115.60000000000001,1.0051294671885267 +115.7,1.0060199890797912 +115.80000000000001,1.0067358582850192 +115.9,1.0072900298681475 +116.0,1.0078442014512756 +116.10000000000001,1.008398373034404 +116.2,1.0089525446175323 +116.30000000000001,1.0094995334167578 +116.4,1.0100434005110372 +116.5,1.0105872676053167 +116.60000000000001,1.0111311346995961 +116.7,1.0116750017938756 +116.80000000000001,1.0123733098764054 +116.9,1.0132145253519702 +117.0,1.014055740827535 +117.10000000000001,1.0148969563031 +117.2,1.015738171778665 +117.30000000000001,1.0167765454836024 +117.4,1.017901192416068 +117.5,1.0190258393485332 +117.60000000000001,1.0201504862809987 +117.7,1.0212751332134642 +117.80000000000001,1.0224764483042077 +117.9,1.023748678770488 +118.0,1.0250209092367681 +118.10000000000001,1.0262931397030484 +118.2,1.0275653701693284 +118.30000000000001,1.0287943655058849 +118.4,1.0300043090779907 +118.5,1.0312142526500965 +118.60000000000001,1.0324241962222023 +118.7,1.0336341397943085 +118.80000000000001,1.0346598922590842 +118.9,1.035515312231327 +119.0,1.0363707322035698 +119.10000000000001,1.0372261521758128 +119.2,1.0380815721480552 +119.30000000000001,1.038715959083474 +119.4,1.0392522465565863 +119.5,1.0397885340296982 +119.60000000000001,1.0403248215028105 +119.7,1.0408611089759228 +119.80000000000001,1.0415152277445088 +119.9,1.0422783057041407 +120.0,1.0430413836637729 +120.10000000000001,1.0438044616234048 +120.2,1.0445675395830367 +120.30000000000001,1.0458696675328334 +120.4,1.0474127980196233 +120.5,1.0489559285064134 +120.60000000000001,1.0504990589932033 +120.7,1.0520421894799934 +120.80000000000001,1.0537790526824504 +120.9,1.0556950804537704 +121.0,1.05761110822509 +121.10000000000001,1.0595271359964102 +121.2,1.0614431637677302 +121.30000000000001,1.063111805992534 +121.4,1.0646690134884267 +121.5,1.0662262209843194 +121.60000000000001,1.067783428480212 +121.7,1.0693406359761046 +121.80000000000001,1.0707142475732032 +121.9,1.0719180229635081 +122.0,1.0731217983538133 +122.10000000000001,1.0743255737441182 +122.2,1.0755293491344233 +122.30000000000001,1.0771100252182857 +122.4,1.07886177991781 +122.5,1.0806135346173344 +122.60000000000001,1.0823652893168587 +122.7,1.084117044016383 +122.80000000000001,1.086232911735901 +122.9,1.088685751948686 +123.0,1.0911385921614711 +123.10000000000001,1.0935914323742564 +123.2,1.0960442725870416 +123.30000000000001,1.098370247218114 +123.4,1.100638185195931 +123.5,1.1029061231737485 +123.60000000000001,1.1051740611515664 +123.7,1.1074419991293836 +123.80000000000001,1.1091899108755119 +123.9,1.1104562655292318 +124.0,1.1117226201829524 +124.10000000000001,1.1129889748366728 +124.2,1.114255329490393 +124.30000000000001,1.1154696041194707 +124.4,1.1166598636173275 +124.5,1.1178501231151843 +124.60000000000001,1.119040382613041 +124.7,1.1202306421108978 +124.80000000000001,1.121906352966488 +124.9,1.1240319539042394 +125.0,1.1261575548419904 +125.10000000000001,1.128283155779742 +125.2,1.1304087567174932 +125.30000000000001,1.13251704226097 +125.4,1.134617278374295 +125.5,1.1367175144876196 +125.60000000000001,1.1388177506009447 +125.7,1.1409179867142696 +125.80000000000001,1.1426772961060614 +125.9,1.1441203527754098 +126.0,1.1455634094447582 +126.10000000000001,1.1470064661141066 +126.2,1.1484495227834548 +126.30000000000001,1.1497932870438308 +126.4,1.1510905109468395 +126.5,1.1523877348498481 +126.60000000000001,1.1536849587528568 +126.7,1.1549821826558655 +126.80000000000001,1.156186042753606 +126.9,1.1573031988539428 +127.0,1.1584203549542798 +127.10000000000001,1.1595375110546169 +127.2,1.160654667154954 +127.30000000000001,1.1618186142907654 +127.4,1.163004677976078 +127.5,1.1641907416613912 +127.60000000000001,1.1653768053467042 +127.7,1.1665628690320173 +127.80000000000001,1.1678062713973847 +127.9,1.1691029913931434 +128.0,1.1703997113889018 +128.1,1.1716964313846603 +128.20000000000002,1.172993151380419 +128.3,1.1738140238401553 +128.4,1.174408055126829 +128.5,1.1750020864135027 +128.6,1.1755961177001764 +128.70000000000002,1.1761901489868503 +128.8,1.1764541031325852 +128.9,1.1764106764560476 +129.0,1.17636724977951 +129.1,1.1763238231029725 +129.20000000000002,1.1762803964264346 +129.3,1.1762319210705894 +129.4,1.1761810180561034 +129.5,1.1761301150416172 +129.6,1.1760792120271308 +129.70000000000002,1.1760283090126444 +129.8,1.1755273948275569 +129.9,1.1746067228997197 +130.0,1.1736860509718823 +130.1,1.172765379044045 +130.20000000000002,1.1718447071162075 +130.3,1.1699700808707156 +130.4,1.167632703236088 +130.5,1.1652953256014607 +130.6,1.1629579479668333 +130.70000000000002,1.1606205703322052 +130.8,1.1578201752010355 +130.9,1.154587103726931 +131.0,1.1513540322528268 +131.1,1.1481209607787226 +131.20000000000002,1.144887889304617 +131.3,1.1404159710669988 +131.4,1.1353377344967863 +131.5,1.1302594979265737 +131.6,1.125181261356361 +131.70000000000002,1.1201030247861472 +131.8,1.1146444086940936 +131.9,1.1088296288823518 +132.0,1.1030148490706102 +132.1,1.0972000692588684 +132.20000000000002,1.0913852894471252 +132.3,1.0847592364046723 +132.4,1.0777325344915354 +132.5,1.0707058325783982 +132.6,1.0636791306652613 +132.70000000000002,1.0566524287521222 +132.8,1.0489403936263584 +132.9,1.040585259524801 +133.0,1.0322301254232438 +133.1,1.0238749913216867 +133.20000000000002,1.015519857220127 +133.3,1.0065506173458219 +133.4,0.9972753204167509 +133.5,0.9880000234876797 +133.6,0.9787247265586084 +133.70000000000002,0.9694494296295347 +133.8,0.9599338840713549 +133.9,0.9501923651234013 +134.0,0.9404508461754479 +134.1,0.9307093272274944 +134.20000000000002,0.9209678082795383 +134.3,0.9111005449158391 +134.4,0.90117003204095 +134.5,0.8912395191660609 +134.6,0.8813090062911719 +134.70000000000002,0.8713784934162799 +134.8,0.8614065622618554 +134.9,0.8513955752873423 +135.0,0.8413845883128293 +135.1,0.8313736013383163 +135.20000000000002,0.8213626143638002 +135.3,0.8112113428392579 +135.4,0.800988846323302 +135.5,0.7907663498073463 +135.6,0.7805438532913903 +135.70000000000002,0.7703213567754317 +135.8,0.7597565408877502 +135.9,0.7488680571432493 +136.0,0.7379795733987488 +136.1,0.727091089654248 +136.20000000000002,0.7162026059097443 +136.3,0.7055743732650624 +136.4,0.6950795271876156 +136.5,0.6845846811101688 +136.6,0.6740898350327219 +136.70000000000002,0.663594988955272 +136.8,0.6531332870481292 +136.9,0.6427030138644831 +137.0,0.6322727406808369 +137.1,0.6218424674971909 +137.20000000000002,0.6114121943135418 +137.3,0.600873770411393 +137.4,0.5902793853416893 +137.5,0.5796850002719859 +137.6,0.5690906152022823 +137.70000000000002,0.5584962301325755 +137.8,0.5481475897964875 +137.9,0.5380326891202258 +138.0,0.5279177884439642 +138.1,0.5178028877677027 +138.20000000000002,0.5076879870914381 +138.3,0.4977474063295554 +138.4,0.48789789677109036 +138.5,0.4780483872126253 +138.6,0.46819887765416035 +138.70000000000002,0.45834936809569254 +138.8,0.44861341572270247 +138.9,0.43898582321675605 +139.0,0.42935823071080975 +139.1,0.41973063820486345 +139.20000000000002,0.41010304569891437 +139.3,0.4009162674006566 +139.4,0.3919620320879335 +139.5,0.38300779677521046 +139.6,0.3740535614624874 +139.70000000000002,0.3650993261497618 +139.8,0.3563033300376369 +139.9,0.3476588471524414 +140.0,0.3390143642672458 +140.1,0.33036988138205026 +140.20000000000002,0.3217253984968522 +140.3,0.31324195670165955 +140.4,0.3048443041460193 +140.5,0.29644665159037914 +140.6,0.2880489990347389 +140.70000000000002,0.2796513464790963 +140.8,0.2714597368131282 +140.9,0.2634661218449134 +141.0,0.2554725068766987 +141.1,0.24747889190848396 +141.20000000000002,0.23948527694026692 +141.3,0.2317758432936949 +141.4,0.22421929749242478 +141.5,0.21666275169115468 +141.6,0.20910620588988457 +141.70000000000002,0.20154966008861228 +141.8,0.1941626534542412 +141.9,0.1869391785734333 +142.0,0.1797157036926254 +142.1,0.17249222881181747 +142.20000000000002,0.16526875393100754 +142.3,0.15861641326504847 +142.4,0.1522744054611404 +142.5,0.1459323976572323 +142.6,0.1395903898533242 +142.70000000000002,0.13324838204941433 +142.8,0.12733781846989656 +142.9,0.12184505569389897 +143.0,0.11635229291790139 +143.1,0.11085953014190382 +143.20000000000002,0.10536676736590467 +143.3,0.10019942957735295 +143.4,0.09521069179737113 +143.5,0.09022195401738932 +143.6,0.08523321623740751 +143.70000000000002,0.08024447845742429 +143.8,0.0756013121205322 +143.9,0.07129417048133423 +144.0,0.06698702884213625 +144.1,0.06267988720293828 +144.20000000000002,0.05837274556373909 +144.3,0.0545439979128096 +144.4,0.050980456723916705 +144.5,0.0474169155350238 +144.6,0.04385337434613091 +144.70000000000002,0.04028983315723699 +144.8,0.037072507241130224 +144.9,0.034193280560863355 +145.0,0.03131405388059648 +145.1,0.028434827200329606 +145.20000000000002,0.02555560052006192 +145.3,0.023110497361643844 +145.4,0.020908505044119795 +145.5,0.018706512726595743 +145.6,0.01650452040907169 +145.70000000000002,0.014302528091547015 +145.8,0.012504654422999868 +145.9,0.011103192942441558 +146.0,0.009701731461883252 +146.1,0.008300269981324942 +146.20000000000002,0.006898808500766234 +146.3,0.005924113370642026 +146.4,0.005190851222742686 +146.5,0.004457589074843347 +146.6,0.0037243269269440073 +146.70000000000002,0.002991064779044459 +146.8,0.0024467810853893634 +146.9,0.0020887342650477685 +147.0,0.0017306874447061734 +147.1,0.0013726406243645785 +147.20000000000002,0.001014593804022882 +147.3,0.0008213385797379152 +147.4,0.0007222674813498132 +147.5,0.0006231963829617109 +147.6,0.0005241252845736087 +147.70000000000002,0.00042505418618547834 +147.8,0.0003590157890967959 +147.9,0.0003256879116241056 +148.0,0.00029236003415141534 +148.1,0.000259032156678725 +148.20000000000002,0.0002257042792060252 +148.3,0.00021056298599550401 +148.4,0.00020592313177849195 +148.5,0.0002012832775614799 +148.6,0.00019664342334446783 +148.70000000000002,0.00019200356912745447 +148.8,0.0001901134320369485 +148.9,0.000190959795685505 +149.0,0.00019180615933406147 +149.1,0.0001926525229826179 +149.20000000000002,0.00019349888663117458 +149.3,0.00018922417992533417 +149.4,0.00018196181956909978 +149.5,0.00017469945921286535 +149.6,0.00016743709885663093 +149.70000000000002,0.00016017473850039445 +149.8,0.00015095418543614806 +149.9,0.00013977478370130473 +150.0,0.0001285953819664614 +150.1,0.00011741598023161806 +150.20000000000002,0.00010623657849677154 +150.3,9.6933943899166e-05 +150.4,8.873759310610987e-05 +150.5,8.054124231305374e-05 +150.6,7.234489151999763e-05 +150.70000000000002,6.414854072693917e-05 +150.8,5.9919177483864425e-05 +150.9,5.967930396114469e-05 +151.0,5.943943043842495e-05 +151.1,5.919955691570521e-05 +151.20000000000002,5.8959683392985406e-05 +151.3,6.07102306530022e-05 +151.4,6.364627520405298e-05 +151.5,6.658231975510378e-05 +151.6,6.951836430615455e-05 +151.70000000000002,7.245440885720617e-05 +151.8,7.474577293704894e-05 +151.9,7.638523153367565e-05 +152.0,7.802469013030239e-05 +152.1,7.966414872692912e-05 +152.20000000000002,8.13036073235563e-05 +152.3,8.20825621994989e-05 +152.4,8.234364940185913e-05 +152.5,8.260473660421936e-05 +152.6,8.28658238065796e-05 +152.70000000000002,8.31269110089399e-05 +152.8,8.05911986249734e-05 +152.9,7.521130685838142e-05 +153.0,6.983141509178943e-05 +153.1,6.445152332519745e-05 +153.20000000000002,5.907163155860394e-05 +153.3,5.363886221142155e-05 +153.4,4.817393724150152e-05 +153.5,4.2709012271581463e-05 +153.60000000000002,3.724408730165986e-05 +153.70000000000002,3.177916233173981e-05 +153.8,2.9071168489722594e-05 +153.9,2.918316943053066e-05 +154.0,2.9295170371338724e-05 +154.10000000000002,2.9407171312146816e-05 +154.20000000000002,2.951917225295488e-05 +154.3,3.095693251821897e-05 +154.4,3.320935261975359e-05 +154.5,3.54617727212882e-05 +154.60000000000002,3.7714192822823455e-05 +154.70000000000002,3.996661292435808e-05 +154.8,4.214081855980321e-05 +154.9,4.423454071670741e-05 +155.0,4.632826287361159e-05 +155.10000000000002,4.842198503051638e-05 +155.20000000000002,5.051570718742057e-05 +155.3,5.1692333348963944e-05 +155.4,5.229950674552325e-05 +155.5,5.290668014208257e-05 +155.60000000000002,5.351385353864205e-05 +155.70000000000002,5.4121026935201356e-05 +155.8,5.314492337081469e-05 +155.9,5.0529575930655716e-05 +156.0,4.791422849049673e-05 +156.10000000000002,4.5298881050337016e-05 +156.20000000000002,4.268353361017804e-05 +156.3,4.251764510421259e-05 +156.4,4.388866315660524e-05 +156.5,4.5259681208997896e-05 +156.60000000000002,4.663069926139094e-05 +156.70000000000002,4.80017173137836e-05 +156.8,4.952029113023029e-05 +156.9,5.1192602103562735e-05 +157.0,5.286491307689519e-05 +157.10000000000002,5.4537224050228114e-05 +157.20000000000002,5.620953502356057e-05 +157.3,5.3924181731246365e-05 +157.4,4.91295328474234e-05 +157.5,4.433488396360043e-05 +157.60000000000002,3.9540235079776104e-05 +157.70000000000002,3.4745586195953134e-05 +157.8,3.074523855909393e-05 +157.9,2.757782768640005e-05 +158.0,2.441041681370617e-05 +158.10000000000002,2.1243005941011392e-05 +158.20000000000002,1.807559506831751e-05 +158.3,1.741909033708673e-05 +158.4,1.837129723518515e-05 +158.5,1.9323504133283565e-05 +158.60000000000002,2.0275711031382255e-05 +158.70000000000002,2.122791792948067e-05 +158.8,2.2180124827579088e-05 +158.9,2.3132331725677507e-05 +159.0,2.4084538623775923e-05 +159.10000000000002,2.5036745521874614e-05 +159.20000000000002,2.598895241997303e-05 +159.3,2.5321518217190395e-05 +159.4,2.3605510841464566e-05 +159.5,2.188950346573874e-05 +159.60000000000002,2.017349609001242e-05 +159.70000000000002,1.8457488714286596e-05 +159.8,1.6741481338560767e-05 +159.9,1.5025473962834938e-05 +160.0,1.3309466587109109e-05 +160.10000000000002,1.1593459211382794e-05 +160.20000000000002,9.877451835656965e-06 +160.3,8.642859938341477e-06 +160.4,7.723207977921723e-06 +160.5,6.803556017501968e-06 +160.60000000000002,5.8839040570819525e-06 +160.70000000000002,4.9642520966621984e-06 +160.8,4.0446001362424436e-06 +160.9,3.124948175822689e-06 +161.0,2.205296215402935e-06 +161.10000000000002,1.2856442549829193e-06 +161.20000000000002,3.659922945631648e-07 +161.3,1.2256999831286997e-06 +161.4,3.2616391383257927e-06 +161.5,5.297578293522886e-06 +161.60000000000002,7.333517448720557e-06 +161.70000000000002,9.369456603917651e-06 +161.8,1.1405395759114743e-05 +161.9,1.3441334914311837e-05 +162.0,1.547727406950893e-05 +162.10000000000002,1.7513213224706598e-05 +162.20000000000002,1.9549152379903694e-05 +162.3,1.9789788757538514e-05 +162.4,1.8831257466544002e-05 +162.5,1.7872726175549493e-05 +162.60000000000002,1.6914194884554713e-05 +162.70000000000002,1.59556635935602e-05 +162.8,1.4997132302565688e-05 +162.9,1.4038601011571177e-05 +163.0,1.3080069720576667e-05 +163.10000000000002,1.2121538429581885e-05 +163.20000000000002,1.1163007138587374e-05 +163.3,1.2202247837915458e-05 +163.4,1.4589803097322946e-05 +163.5,1.6977358356730436e-05 +163.60000000000002,1.93649136161386e-05 +163.70000000000002,2.175246887554609e-05 +163.8,2.4140024134953577e-05 +163.9,2.6527579394361067e-05 +164.0,2.8915134653768553e-05 +164.10000000000002,3.1302689913176724e-05 +164.20000000000002,3.369024517258421e-05 +164.3,3.3342912027753104e-05 +164.4,3.1130590498458116e-05 +164.5,2.8918268969163124e-05 +164.60000000000002,2.670594743986751e-05 +164.70000000000002,2.449362591057252e-05 +164.8,2.2281304381277533e-05 +164.9,2.0068982851982548e-05 +165.0,1.785666132268756e-05 +165.10000000000002,1.5644339793391942e-05 +165.20000000000002,1.3432018264096954e-05 +165.3,1.1787892654426609e-05 +165.4,1.0535249370768301e-05 +165.5,9.282606087109993e-06 +165.60000000000002,8.029962803451327e-06 +165.70000000000002,6.777319519793019e-06 +165.8,5.524676236134711e-06 +165.9,4.272032952476403e-06 +166.0,3.019389668818094e-06 +166.10000000000002,1.7667463851594296e-06 +166.20000000000002,5.141031015011211e-07 +166.3,0.0 +166.4,0.0 +166.5,0.0 +166.60000000000002,0.0 +166.70000000000002,0.0 +166.8,0.0 +166.9,0.0 +167.0,0.0 +167.10000000000002,0.0 +167.20000000000002,0.0 +167.3,0.0 +167.4,0.0 +167.5,0.0 +167.60000000000002,0.0 +167.70000000000002,0.0 +167.8,0.0 +167.9,0.0 +168.0,0.0 +168.10000000000002,0.0 +168.20000000000002,0.0 +168.3,0.0 +168.4,0.0 +168.5,0.0 +168.60000000000002,0.0 +168.70000000000002,0.0 +168.8,0.0 +168.9,0.0 +169.0,0.0 +169.10000000000002,0.0 +169.20000000000002,0.0 +169.3,0.0 +169.4,0.0 +169.5,0.0 +169.60000000000002,0.0 +169.70000000000002,0.0 +169.8, +169.9, +170.0, +170.10000000000002, +170.20000000000002, +170.3, +170.4, +170.5, +170.60000000000002, +170.70000000000002, +170.8, +170.9, +171.0, +171.10000000000002, +171.20000000000002, +171.3, +171.4, +171.5, +171.60000000000002, +171.70000000000002, +171.8, +171.9, +172.0, +172.10000000000002, +172.20000000000002, +172.3, +172.4, +172.5, +172.60000000000002, +172.70000000000002, +172.8, +172.9, +173.0, +173.10000000000002, +173.20000000000002, +173.3, +173.4, +173.5, +173.60000000000002, +173.70000000000002, +173.8, +173.9, +174.0, +174.10000000000002, +174.20000000000002, +174.3, +174.4, +174.5, +174.60000000000002, +174.70000000000002, +174.8, +174.9, +175.0, +175.10000000000002, +175.20000000000002, +175.3, +175.4, +175.5, +175.60000000000002, +175.70000000000002, +175.8, +175.9, +176.0, +176.10000000000002, +176.20000000000002, +176.3, +176.4, +176.5, +176.60000000000002, +176.70000000000002, +176.8, +176.9, +177.0, +177.10000000000002, +177.20000000000002, +177.3, +177.4, +177.5, +177.60000000000002, +177.70000000000002, +177.8, +177.9, +178.0, +178.10000000000002, +178.20000000000002, +178.3, +178.4, +178.5, +178.60000000000002, +178.70000000000002, +178.8, +178.9, +179.0, +179.10000000000002, +179.20000000000002, +179.3, +179.4, +179.5, +179.60000000000002, +179.70000000000002, +179.8, +179.9, +180.0, diff --git a/instrument_team_data/swapi/imap_swapi_central-effective-area_20260425_v001.csv b/instrument_team_data/swapi/imap_swapi_central-effective-area_20260425_v001.csv new file mode 100644 index 000000000..dd499e13a --- /dev/null +++ b/instrument_team_data/swapi/imap_swapi_central-effective-area_20260425_v001.csv @@ -0,0 +1,63 @@ +esa_voltage,effective_area +53.18792553,0.7536753580988372 +58.00265957,0.7371672431777306 +63.25882979,0.721395663655858 +68.98723404,0.7055670005950302 +75.22893617,0.6934539065061961 +82.03526596,0.6795635199754946 +89.46781915,0.669023425361539 +97.56765957,0.6572255880510895 +106.396383,0.6399000652487625 +116.036117,0.624834814938988 +126.5381915,0.6087639942223857 +137.995,0.5877355174138513 +150.4784043,0.5726490816362403 +164.1013298,0.5552759098113924 +178.9664362,0.5369536608347865 +195.166117,0.5192126698383882 +212.8338298,0.5040985964089503 +232.1030319,0.4866450947709922 +253.1071809,0.4700438760019312 +276.0207979,0.4553940081457935 +301.0081383,0.442712928015073 +328.2642553,0.4311255962111313 +357.9739362,0.42000744543480234 +390.3835638,0.41056346249219694 +425.7292553,0.3989846852110498 +464.2676596,0.3903407130087883 +506.2964894,0.38346041187459246 +552.1339894,0.37553722631276887 +602.1086702,0.3673677145647147 +656.6209043,0.36093693241851504 +716.0607979,0.35508387353106674 +780.8903191,0.3468772922228329 +851.5817021,0.3425792684213609 +928.6790426,0.336948853695474 +1012.746968,0.3318869379454906 +1104.432234,0.3252829581310193 +1204.412394,0.3200097008023567 +1313.447128,0.31503707607138803 +1432.347447,0.31115767762865876 +1562.016755,0.3074327505973417 +1703.420053,0.30246580266138845 +1857.635266,0.2986167132315898 +2025.801915,0.2966173614711064 +2209.192979,0.29350041900162044 +2409.184096,0.29166176089932144 +2627.284362,0.29104735188472297 +2865.126064,0.2905165160870276 +3124.505745,0.2909737239464113 +3407.36367,0.29104525647123947 +3715.824894,0.2908983110292947 +4052.209521,0.29145967111718507 +4419.053245,0.29174430273188184 +4819.10734,0.2934487456724697 +5255.369468,0.29412840591969747 +5731.135,0.29660777852288583 +6249.966223,0.29509810492544203 +6815.764202,0.2992017396679128 +7432.779043,0.3015452158753034 +8105.661223,0.30289111178621825 +8839.45133,0.3047270297160021 +9639.672447,0.3081238780336018 +10512.34043,0.31169493883996263 diff --git a/instrument_team_data/swapi/imap_swapi_passband-fit-coefficients_20260425_v001.csv b/instrument_team_data/swapi/imap_swapi_passband-fit-coefficients_20260425_v001.csv new file mode 100644 index 000000000..ed8292a39 --- /dev/null +++ b/instrument_team_data/swapi/imap_swapi_passband-fit-coefficients_20260425_v001.csv @@ -0,0 +1,1147 @@ +region,energy_ratio,elevation,2,1,0,min_esa_voltage,max_esa_voltage +OA,1.6260162601626016,2.0,-0.33389082394910097,4.538089950812088,-24.248292257740452,132.27513227513228,8465.608465608466 +OA,1.6260162601626016,5.5,0.2897354149919754,-4.013782398334536,6.296786419053568,132.27513227513228,8465.608465608466 +OA,1.6260162601626016,6.0,0.31420314885890577,-4.3845134679079845,8.297437195234881,132.27513227513228,8465.608465608466 +OA,1.6260162601626016,6.5,0.26180460927284355,-3.933848228487604,8.337414880657555,132.27513227513228,8465.608465608466 +OA,1.6260162601626016,7.0,0.056897653362237705,-1.1736485953710152,-0.22083047963773894,132.27513227513228,8465.608465608466 +OA,1.6260162601626016,7.5,0.09582138987057548,-1.7510449532300887,1.0925441165745955,132.27513227513228,8465.608465608466 +OA,1.639344262295082,2.0,-0.21002406536651466,2.6231900637794703,-16.57235733963116,132.27513227513228,8465.608465608466 +OA,1.639344262295082,5.5,-0.09861552134978424,1.6887874887862147,-12.220098799713153,132.27513227513228,8465.608465608466 +OA,1.639344262295082,6.0,-0.15620142427007028,2.4176231937440793,-13.338413290364354,132.27513227513228,8465.608465608466 +OA,1.639344262295082,6.5,-0.2733966100173102,3.77263026226286,-16.428540213553976,132.27513227513228,8465.608465608466 +OA,1.639344262295082,7.0,-0.4365948694686944,5.757073734583747,-22.177876202770634,132.27513227513228,8465.608465608466 +OA,1.639344262295082,7.5,-0.4558453802763639,6.049596114223569,-23.910723578633352,132.27513227513228,8465.608465608466 +OA,1.6528925619834711,1.5,0.1443055673245406,-2.052358598451049,-0.29900912179198,132.27513227513228,8465.608465608466 +OA,1.6528925619834711,2.0,0.2935768524422465,-4.294711980469689,8.2154512616369,132.27513227513228,8465.608465608466 +OA,1.6528925619834711,2.5,-0.10118569980478552,1.3814546968368149,-10.913011349155099,132.27513227513228,8465.608465608466 +OA,1.6528925619834711,3.5,1.1105485014219876,-16.570430907713842,49.397408901650934,132.27513227513228,8465.608465608466 +OA,1.6528925619834711,4.0,0.969239272162243,-14.42420063835053,42.53148211239326,132.27513227513228,8465.608465608466 +OA,1.6528925619834711,4.5,0.4186603292977795,-6.090220794836291,16.693624450176298,132.27513227513228,8465.608465608466 +OA,1.6528925619834711,5.0,0.21969752054297365,-3.113443726097807,7.067078365867948,132.27513227513228,8465.608465608466 +OA,1.6528925619834711,5.5,-0.041224052478151196,0.5523935865325591,-4.433698547393875,132.27513227513228,8465.608465608466 +OA,1.6528925619834711,6.0,-0.09832736032099008,1.2925575681884462,-6.529616648607872,132.27513227513228,8465.608465608466 +OA,1.6528925619834711,6.5,-0.1884956961715806,2.4559246467504874,-10.226793631956888,132.27513227513228,8465.608465608466 +OA,1.6528925619834711,7.0,-0.3944089468106321,5.029098051391426,-18.428898400382963,132.27513227513228,8465.608465608466 +OA,1.6528925619834711,7.5,-0.33394953712091957,4.162172629721333,-15.919923072571784,132.27513227513228,8465.608465608466 +OA,1.6528925619834711,8.0,-0.07753007555695202,0.39966868503943176,-3.756962888905886,132.27513227513228,8465.608465608466 +OA,1.6666666666666667,1.5,-0.0011426601961804948,0.05361586568928055,-6.557715586578407,132.27513227513228,8465.608465608466 +OA,1.6666666666666667,2.0,0.09625162264104915,-1.3996918005800425,-0.8142943301893173,132.27513227513228,8465.608465608466 +OA,1.6666666666666667,2.5,0.5206987567478081,-7.66843814853142,19.72376203568662,132.27513227513228,8465.608465608466 +OA,1.6666666666666667,3.5,1.1105487658778652,-16.570434691409247,50.0988687957843,132.27513227513228,8465.608465608466 +OA,1.6666666666666667,4.0,0.13012112891116417,-1.798885289709407,-0.7269423129919954,132.27513227513228,8465.608465608466 +OA,1.6666666666666667,4.5,0.12296372283519877,-1.7169298849922667,2.5379359353281212,132.27513227513228,8465.608465608466 +OA,1.6666666666666667,5.0,-0.012329939411567228,0.20566016906802592,-2.898719353674261,132.27513227513228,8465.608465608466 +OA,1.6666666666666667,5.5,-0.08214696147107751,1.11886401652449,-5.5308169203392445,132.27513227513228,8465.608465608466 +OA,1.6666666666666667,6.0,-0.08581960945954126,1.0781381780329853,-5.060500545544695,132.27513227513228,8465.608465608466 +OA,1.6666666666666667,6.5,-0.14095295477841407,1.7762249815685784,-7.417404362602076,132.27513227513228,8465.608465608466 +OA,1.6666666666666667,7.0,-0.3286311168755981,4.102978357187313,-14.866548155793787,132.27513227513228,8465.608465608466 +OA,1.6666666666666667,7.5,-0.31521379873232414,3.878782130112195,-14.399769152008608,132.27513227513228,8465.608465608466 +OA,1.6666666666666667,8.0,-0.28486509196900744,3.3020620201769004,-12.664255794704937,132.27513227513228,8465.608465608466 +OA,1.6666666666666667,8.5,0.18524954034637447,-3.43222236757188,9.321067527077641,132.27513227513228,8465.608465608466 +OA,1.680672268907563,0.5,0.29337246429154845,-4.034929341772253,5.2921869250556375,132.27513227513228,8465.608465608466 +OA,1.680672268907563,1.0,0.2482937399582734,-3.3620605820860656,3.6667342405277665,132.27513227513228,8465.608465608466 +OA,1.680672268907563,1.5,-0.07777684600980064,1.0525544950174575,-9.14715452095012,132.27513227513228,8465.608465608466 +OA,1.680672268907563,2.0,0.07143424865452055,-1.0289738509854702,-2.8142843981976795,132.27513227513228,8465.608465608466 +OA,1.680672268907563,2.5,0.46819599282459556,-6.9121054471375745,16.943845183802786,132.27513227513228,8465.608465608466 +OA,1.680672268907563,3.0,0.1853204147365377,-2.7302875254557515,2.2003177698067566,132.27513227513228,8465.608465608466 +OA,1.680672268907563,3.5,0.42504004990738864,-6.2531305841799405,18.251507305996256,132.27513227513228,8465.608465608466 +OA,1.680672268907563,4.0,0.13490010122241494,-1.9615863546568308,4.358875723875848,132.27513227513228,8465.608465608466 +OA,1.680672268907563,4.5,0.013526621988966848,-0.25240863350547615,-0.7235143820106316,132.27513227513228,8465.608465608466 +OA,1.680672268907563,5.0,-0.02536584210948823,0.3026216427612825,-2.2993910460410096,132.27513227513228,8465.608465608466 +OA,1.680672268907563,5.5,-0.06549962586606287,0.8341838021007949,-3.9935251629450876,132.27513227513228,8465.608465608466 +OA,1.680672268907563,6.0,-0.07077507726615623,0.8542572952240806,-4.006188605136165,132.27513227513228,8465.608465608466 +OA,1.680672268907563,6.5,-0.0964461276372948,1.149888416977236,-5.051288833902032,132.27513227513228,8465.608465608466 +OA,1.680672268907563,7.0,-0.1941014894023273,2.3474030433605497,-8.929428775014072,132.27513227513228,8465.608465608466 +OA,1.680672268907563,7.5,-0.21758364241048742,2.613001773227471,-9.970579493427753,132.27513227513228,8465.608465608466 +OA,1.680672268907563,8.0,-0.30732313911280495,3.6607835385908434,-13.4592486929258,132.27513227513228,8465.608465608466 +OA,1.680672268907563,8.5,-0.1824082386008241,1.8366612098096295,-7.7161556119129635,132.27513227513228,8465.608465608466 +OA,1.680672268907563,9.0,0.546691550036249,-9.161251247272013,29.5874033885478,132.27513227513228,8465.608465608466 +OA,1.694915254237288,0.5,0.24863519072626425,-3.3671540369356077,3.6927143606885195,132.27513227513228,8465.608465608466 +OA,1.694915254237288,1.0,0.0020028256933897204,0.1274492632027045,-6.594091038605246,132.27513227513228,8465.608465608466 +OA,1.694915254237288,1.5,-0.046716511440201516,0.7271819681854603,-8.648814589143054,132.27513227513228,8465.608465608466 +OA,1.694915254237288,2.5,-0.022165739904521982,0.10212007502469214,-6.181709679759826,132.27513227513228,8465.608465608466 +OA,1.694915254237288,3.0,-0.8685802500242799,11.881112823580157,-44.83167712566369,132.27513227513228,8465.608465608466 +OA,1.694915254237288,3.5,0.0429728445155236,-0.6543469286621999,0.19841523094508345,132.27513227513228,8465.608465608466 +OA,1.694915254237288,4.0,0.03207506615215183,-0.501552118268915,0.40688318737958373,132.27513227513228,8465.608465608466 +OA,1.694915254237288,4.5,1.2212407287964171e-05,-0.07698289389291685,-0.7273826887341472,132.27513227513228,8465.608465608466 +OA,1.694915254237288,5.0,-0.005460097402790382,-0.026646411304654005,-0.6878289215163744,132.27513227513228,8465.608465608466 +OA,1.694915254237288,5.5,-0.03499856868863824,0.37579481157626504,-2.112988560889708,132.27513227513228,8465.608465608466 +OA,1.694915254237288,6.0,-0.05049414886764403,0.5617904373106626,-2.816753623390512,132.27513227513228,8465.608465608466 +OA,1.694915254237288,6.5,-0.07805776940491282,0.8967635060121872,-4.004841692135246,132.27513227513228,8465.608465608466 +OA,1.694915254237288,7.0,-0.1482968535763578,1.7402623218035602,-6.703404594070076,132.27513227513228,8465.608465608466 +OA,1.694915254237288,7.5,-0.17177792508491652,2.0012013994874964,-7.69839835645671,132.27513227513228,8465.608465608466 +OA,1.694915254237288,8.0,-0.32147220434178003,3.855143389342064,-13.743163158137458,132.27513227513228,8465.608465608466 +OA,1.694915254237288,8.5,-0.2989367397424094,3.456303009651223,-12.678096430998568,132.27513227513228,8465.608465608466 +OA,1.694915254237288,9.0,-0.4705809438553603,5.114705804479154,-17.367079608555983,132.27513227513228,8465.608465608466 +OA,1.694915254237288,9.5,1.1728410699340517,-18.657668276269245,63.011149582920076,132.27513227513228,8465.608465608466 +OA,1.7094017094017093,-0.5,0.30576869662803247,-4.216224566357335,5.780446201919389,132.27513227513228,8465.608465608466 +OA,1.7094017094017093,0.0,0.2293956931332371,-3.155602084212536,3.2906979791993027,132.27513227513228,8465.608465608466 +OA,1.7094017094017093,0.5,-0.08239761091514881,1.2990673198931497,-10.735935548386234,132.27513227513228,8465.608465608466 +OA,1.7094017094017093,1.0,0.013958097404684332,-0.230349132775514,-4.6878075221126405,132.27513227513228,8465.608465608466 +OA,1.7094017094017093,1.5,0.20224048297840022,-2.6721556891271003,3.3627315727022733,132.27513227513228,8465.608465608466 +OA,1.7094017094017093,2.0,0.19239949063550998,-2.4991603568611014,3.211793325031924,132.27513227513228,8465.608465608466 +OA,1.7094017094017093,2.5,0.19969288189219592,-2.8633282056547866,6.934162980092999,132.27513227513228,8465.608465608466 +OA,1.7094017094017093,3.0,0.014876919322951598,-0.2738108081758389,-0.5916637217031507,132.27513227513228,8465.608465608466 +OA,1.7094017094017093,3.5,-0.0061931286467546715,-0.0023500243726443616,-0.9955602115521138,132.27513227513228,8465.608465608466 +OA,1.7094017094017093,4.0,0.004691680618338317,-0.16990416112133055,-0.14739058740857208,132.27513227513228,8465.608465608466 +OA,1.7094017094017093,4.5,-0.00097466641937762,-0.09584145249705674,-0.3224221034185867,132.27513227513228,8465.608465608466 +OA,1.7094017094017093,5.0,-0.0077427583389572145,0.001225605538961626,-0.622288843999983,132.27513227513228,8465.608465608466 +OA,1.7094017094017093,5.5,-0.022771654825122237,0.20171376871881325,-1.3805506275922372,132.27513227513228,8465.608465608466 +OA,1.7094017094017093,6.0,-0.03027449522619426,0.27870611607299767,-1.70986093923338,132.27513227513228,8465.608465608466 +OA,1.7094017094017093,6.5,-0.05330050442561107,0.5580773984425498,-2.701332349287309,132.27513227513228,8465.608465608466 +OA,1.7094017094017093,7.0,-0.08591472461919644,0.9219454958532534,-3.9062006395779916,132.27513227513228,8465.608465608466 +OA,1.7094017094017093,7.5,-0.12265901681218103,1.3669837134576204,-5.465889758945066,132.27513227513228,8465.608465608466 +OA,1.7094017094017093,8.0,-0.2824664811871575,3.34656444969837,-11.824117353205587,132.27513227513228,8465.608465608466 +OA,1.7094017094017093,8.5,-0.28992015304810337,3.412257681440019,-12.33408140513783,132.27513227513228,8465.608465608466 +OA,1.7094017094017093,9.0,-0.3603089360467595,4.14967710605117,-14.782113640172355,132.27513227513228,8465.608465608466 +OA,1.7094017094017093,9.5,0.08090863529870759,-2.171899894802099,5.972944412350001,132.27513227513228,8465.608465608466 +OA,1.7241379310344827,-0.5,0.2945069052496766,-4.047874657251201,5.9009525773533404,132.27513227513228,8465.608465608466 +OA,1.7241379310344827,0.0,-0.1173069211460197,1.7678366645585974,-11.675282741805137,132.27513227513228,8465.608465608466 +OA,1.7241379310344827,0.5,-0.230949810479243,3.1153774178864353,-14.907765792999196,132.27513227513228,8465.608465608466 +OA,1.7241379310344827,1.0,-0.14990547516849273,1.9437959108200675,-11.45797689036524,132.27513227513228,8465.608465608466 +OA,1.7241379310344827,1.5,0.1505680667562334,-1.9257962298393352,1.5717138387054026,132.27513227513228,8465.608465608466 +OA,1.7241379310344827,2.0,-0.09728760713106319,1.5868860534998008,-8.875482286063985,132.27513227513228,8465.608465608466 +OA,1.7241379310344827,2.5,-0.02178801672171795,0.2651665832504939,-2.211016041063769,132.27513227513228,8465.608465608466 +OA,1.7241379310344827,3.0,0.012553455451938127,-0.23987624256721732,-0.010056003469983841,132.27513227513228,8465.608465608466 +OA,1.7241379310344827,3.5,0.0055098587221613805,-0.1804723752562732,0.033180534304721926,132.27513227513228,8465.608465608466 +OA,1.7241379310344827,4.0,0.009731902974587196,-0.2715790985028021,0.502895708721538,132.27513227513228,8465.608465608466 +OA,1.7241379310344827,4.5,0.00595969804463243,-0.21154436874865096,0.28485343263096097,132.27513227513228,8465.608465608466 +OA,1.7241379310344827,5.0,0.0006049815336010067,-0.12728922232198875,-0.01893455254161895,132.27513227513228,8465.608465608466 +OA,1.7241379310344827,5.5,-0.007289803018745938,-0.024107233525527613,-0.4744197970768552,132.27513227513228,8465.608465608466 +OA,1.7241379310344827,6.0,-0.019179219084050597,0.12515282664818955,-1.0564403635527553,132.27513227513228,8465.608465608466 +OA,1.7241379310344827,6.5,-0.033798331074423316,0.28918315286445195,-1.6560825493086688,132.27513227513228,8465.608465608466 +OA,1.7241379310344827,7.0,-0.06585088200446174,0.6702750911662073,-2.947581606063954,132.27513227513228,8465.608465608466 +OA,1.7241379310344827,7.5,-0.1140192827069331,1.2876976221440104,-5.11325772116785,132.27513227513228,8465.608465608466 +OA,1.7241379310344827,8.0,-0.27152985798942253,3.2198553616269985,-11.232152189966108,132.27513227513228,8465.608465608466 +OA,1.7241379310344827,8.5,-0.2782159659437506,3.244806876469664,-11.458144895900134,132.27513227513228,8465.608465608466 +OA,1.7241379310344827,9.0,-0.3448525231029141,4.037092319203461,-14.262512182619357,132.27513227513228,8465.608465608466 +OA,1.7241379310344827,9.5,-0.35228041848218605,4.0287445129710315,-14.603851553775097,132.27513227513228,8465.608465608466 +OA,1.7241379310344827,10.0,7.948128426427676,-117.45113981322297,298.3302321703559,132.27513227513228,8465.608465608466 +OA,1.7391304347826086,-0.5,0.2094660330440118,-2.9039700214862485,4.344580877000924,132.27513227513228,8465.608465608466 +OA,1.7391304347826086,0.0,-0.06144680605311645,0.9146601752333254,-6.910893540006452,132.27513227513228,8465.608465608466 +OA,1.7391304347826086,0.5,0.23822866802861353,-3.3575088812829805,8.04312892683783,132.27513227513228,8465.608465608466 +OA,1.7391304347826086,1.0,0.20561542173680172,-2.8341831370241715,6.56268425099671,132.27513227513228,8465.608465608466 +OA,1.7391304347826086,1.5,0.043400791739181516,-0.6116377923037031,0.2859360019249556,132.27513227513228,8465.608465608466 +OA,1.7391304347826086,2.0,-0.0342143241094177,0.43712467628773777,-2.554877821250798,132.27513227513228,8465.608465608466 +OA,1.7391304347826086,2.5,-0.026526777877471364,0.30567226623137,-1.760259112033216,132.27513227513228,8465.608465608466 +OA,1.7391304347826086,3.0,0.004108984419691955,-0.14267044871794238,-0.04728589284705503,132.27513227513228,8465.608465608466 +OA,1.7391304347826086,3.5,0.016608492632737643,-0.35289284596509596,0.8131212947547373,132.27513227513228,8465.608465608466 +OA,1.7391304347826086,4.0,0.01733587874259386,-0.3813050693151365,1.0084570422472963,132.27513227513228,8465.608465608466 +OA,1.7391304347826086,4.5,0.007339411534059548,-0.22196947937968317,0.4160037493242993,132.27513227513228,8465.608465608466 +OA,1.7391304347826086,5.0,0.006064725733326859,-0.1909465808711161,0.2607295743079549,132.27513227513228,8465.608465608466 +OA,1.7391304347826086,5.5,-0.002761687393950792,-0.07565698038212446,-0.2102907531827225,132.27513227513228,8465.608465608466 +OA,1.7391304347826086,6.0,-0.005032041229711789,-0.062291997042742256,-0.3363254293425628,132.27513227513228,8465.608465608466 +OA,1.7391304347826086,6.5,-0.01940814339413751,0.10202429951943862,-0.9184130772049648,132.27513227513228,8465.608465608466 +OA,1.7391304347826086,7.0,-0.03959597990263715,0.3295247916698907,-1.7085836343047924,132.27513227513228,8465.608465608466 +OA,1.7391304347826086,7.5,-0.07483526084797854,0.778686511819914,-3.3040068786261445,132.27513227513228,8465.608465608466 +OA,1.7391304347826086,8.0,-0.1451339223557844,1.6349881142464233,-6.111098873007451,132.27513227513228,8465.608465608466 +OA,1.7391304347826086,8.5,-0.17660493442663971,2.0046957689209117,-7.454661904411245,132.27513227513228,8465.608465608466 +OA,1.7391304347826086,9.0,-0.3294644077565369,3.9075265463384685,-13.704150124470887,132.27513227513228,8465.608465608466 +OA,1.7391304347826086,9.5,-0.362125510829688,4.219120410209043,-14.827252914434835,132.27513227513228,8465.608465608466 +OA,1.7391304347826086,10.0,-0.4020517886044169,4.029066998397669,-13.4342881102564,132.27513227513228,8465.608465608466 +OA,1.7391304347826086,10.5,1.5997442485400915,-25.76897164675811,89.43595787385989,132.27513227513228,8465.608465608466 +OA,1.7543859649122806,-0.5,-0.053374456845682504,0.8195984725209988,-6.815695363721556,132.27513227513228,8465.608465608466 +OA,1.7543859649122806,0.0,0.03349244482237576,-0.4534009738801823,-1.8208931427758155,132.27513227513228,8465.608465608466 +OA,1.7543859649122806,0.5,0.12242852049279379,-1.5975129299068629,2.451874519999803,132.27513227513228,8465.608465608466 +OA,1.7543859649122806,1.0,-0.0016363103025974818,0.09270108794112328,-1.908043216893713,132.27513227513228,8465.608465608466 +OA,1.7543859649122806,1.5,-0.010060618925586209,0.11768919586249126,-1.2761038437444632,132.27513227513228,8465.608465608466 +OA,1.7543859649122806,2.0,0.004532978263629098,-0.1359106113428769,-0.05796108838168165,132.27513227513228,8465.608465608466 +OA,1.7543859649122806,2.5,0.00926763019803812,-0.22265919147446683,0.3524314795446046,132.27513227513228,8465.608465608466 +OA,1.7543859649122806,3.0,0.01862787306104688,-0.3731037783033646,0.9571865784734517,132.27513227513228,8465.608465608466 +OA,1.7543859649122806,3.5,0.02228804367082848,-0.4389140743500332,1.247902371193787,132.27513227513228,8465.608465608466 +OA,1.7543859649122806,4.0,0.016874601725035014,-0.3643890793470118,1.0236906131681358,132.27513227513228,8465.608465608466 +OA,1.7543859649122806,4.5,0.01270902405084267,-0.29362245245630375,0.7514449554995895,132.27513227513228,8465.608465608466 +OA,1.7543859649122806,5.0,0.006354520674484528,-0.18161018755855862,0.29174760723866294,132.27513227513228,8465.608465608466 +OA,1.7543859649122806,5.5,0.006882201562057785,-0.206924331472685,0.3262828681902061,132.27513227513228,8465.608465608466 +OA,1.7543859649122806,6.0,0.002917576354888844,-0.1677271798092396,0.12305741798753596,132.27513227513228,8465.608465608466 +OA,1.7543859649122806,6.5,-0.01001901495834178,-0.011051414670660217,-0.476839836503949,132.27513227513228,8465.608465608466 +OA,1.7543859649122806,7.0,-0.029313728163645962,0.21414773634243034,-1.2646441172491896,132.27513227513228,8465.608465608466 +OA,1.7543859649122806,7.5,-0.05135022589101981,0.47704408876849164,-2.204905481467648,132.27513227513228,8465.608465608466 +OA,1.7543859649122806,8.0,-0.10542592704943922,1.1479255465223899,-4.456186411233366,132.27513227513228,8465.608465608466 +OA,1.7543859649122806,8.5,-0.14888185739762044,1.6832962921658443,-6.317484812352378,132.27513227513228,8465.608465608466 +OA,1.7543859649122806,9.0,-0.33029501505337033,3.926281015423446,-13.51580835010735,132.27513227513228,8465.608465608466 +OA,1.7543859649122806,9.5,-0.3466041774216,4.033963564708296,-13.951335720766377,132.27513227513228,8465.608465608466 +OA,1.7543859649122806,10.0,-0.5629579543684538,6.402577024021391,-20.975579946751758,132.27513227513228,8465.608465608466 +OA,1.7699115044247788,-1.5,0.45676397481095166,-6.613772346048858,17.741123779955508,132.27513227513228,8465.608465608466 +OA,1.7699115044247788,-1.0,0.1393757384677089,-1.893308679720251,2.269573667918702,132.27513227513228,8465.608465608466 +OA,1.7699115044247788,-0.5,0.16899575955851787,-2.4344299803401928,6.0309798562754136,132.27513227513228,8465.608465608466 +OA,1.7699115044247788,0.0,0.11665566383371642,-1.640977674490303,3.753086128095557,132.27513227513228,8465.608465608466 +OA,1.7699115044247788,0.5,-0.0049198528237441065,0.037528151024136897,-1.0525271709607098,132.27513227513228,8465.608465608466 +OA,1.7699115044247788,1.0,-0.008958257864844095,0.08327701883652933,-0.9340833251659811,132.27513227513228,8465.608465608466 +OA,1.7699115044247788,1.5,-0.0007085698003029769,-0.060113783041531824,-0.2511842515308734,132.27513227513228,8465.608465608466 +OA,1.7699115044247788,2.0,0.009472847296376432,-0.21876990349085157,0.4059807173605142,132.27513227513228,8465.608465608466 +OA,1.7699115044247788,2.5,0.014686437341801022,-0.30171707985028245,0.7456550848272434,132.27513227513228,8465.608465608466 +OA,1.7699115044247788,3.0,0.016949466251309518,-0.33950286661219,0.9213378990073806,132.27513227513228,8465.608465608466 +OA,1.7699115044247788,3.5,0.02397045090970011,-0.4522882352123654,1.361215525090476,132.27513227513228,8465.608465608466 +OA,1.7699115044247788,4.0,0.016439228457257857,-0.3480406898263825,1.047310743265946,132.27513227513228,8465.608465608466 +OA,1.7699115044247788,4.5,0.010473696024081113,-0.24619689752202722,0.6405080615635332,132.27513227513228,8465.608465608466 +OA,1.7699115044247788,5.0,0.009064811011866016,-0.20447745233780157,0.4020531777681333,132.27513227513228,8465.608465608466 +OA,1.7699115044247788,5.5,0.009811007624429463,-0.23511561351679144,0.4808843125775329,132.27513227513228,8465.608465608466 +OA,1.7699115044247788,6.0,0.011189938923846985,-0.27870336715193156,0.602889676539371,132.27513227513228,8465.608465608466 +OA,1.7699115044247788,6.5,-0.002528646898191517,-0.0968253991045322,-0.12046719800421037,132.27513227513228,8465.608465608466 +OA,1.7699115044247788,7.0,-0.021185206169521346,0.1428971851168478,-1.021838002719119,132.27513227513228,8465.608465608466 +OA,1.7699115044247788,7.5,-0.03587605313804167,0.31030189225433336,-1.6502735666661792,132.27513227513228,8465.608465608466 +OA,1.7699115044247788,8.0,-0.07486879775223837,0.7962589316781197,-3.3270516030453465,132.27513227513228,8465.608465608466 +OA,1.7699115044247788,8.5,-0.12056252707448137,1.384227594787263,-5.413041774983099,132.27513227513228,8465.608465608466 +OA,1.7699115044247788,9.0,-0.2620230958921233,3.1759576400179728,-11.318125719247796,132.27513227513228,8465.608465608466 +OA,1.7699115044247788,9.5,-0.3304634148636857,4.085362864491637,-14.745376830814111,132.27513227513228,8465.608465608466 +OA,1.7699115044247788,10.0,-0.8003298850878984,9.92912363111941,-33.8752680217647,132.27513227513228,8465.608465608466 +OA,1.7857142857142858,-1.5,0.1700062237571153,-2.3177180893612297,3.543356272726447,132.27513227513228,8465.608465608466 +OA,1.7857142857142858,-1.0,-0.04085971306898874,0.6540241356744225,-5.064726446444416,132.27513227513228,8465.608465608466 +OA,1.7857142857142858,-0.5,0.007787969442639911,-0.09307713388119493,-1.096412152503042,132.27513227513228,8465.608465608466 +OA,1.7857142857142858,0.0,0.00819269666576775,-0.13038576777436817,-0.2608674924600618,132.27513227513228,8465.608465608466 +OA,1.7857142857142858,0.5,0.0055618376106495015,-0.13367993018581598,0.016840318111696173,132.27513227513228,8465.608465608466 +OA,1.7857142857142858,1.0,0.01693679607940792,-0.32583217002332066,0.8392115391850612,132.27513227513228,8465.608465608466 +OA,1.7857142857142858,1.5,0.021511683369425983,-0.4009618936816207,1.1522149521619536,132.27513227513228,8465.608465608466 +OA,1.7857142857142858,2.0,0.019384942229589475,-0.37382297672029363,1.0984566773786346,132.27513227513228,8465.608465608466 +OA,1.7857142857142858,2.5,0.0175008602535813,-0.3398349361046713,0.9718891685491531,132.27513227513228,8465.608465608466 +OA,1.7857142857142858,3.0,0.012646366083550381,-0.2633415770848715,0.7069486563838823,132.27513227513228,8465.608465608466 +OA,1.7857142857142858,3.5,0.015423995200435005,-0.31246630789947694,0.9260661794162793,132.27513227513228,8465.608465608466 +OA,1.7857142857142858,4.0,0.02148786269636993,-0.4129972021769973,1.3364535090666732,132.27513227513228,8465.608465608466 +OA,1.7857142857142858,4.5,0.009832556258770112,-0.2239676925041461,0.6113597958705281,132.27513227513228,8465.608465608466 +OA,1.7857142857142858,5.0,0.009184509405563427,-0.1980717800318743,0.44769190637076145,132.27513227513228,8465.608465608466 +OA,1.7857142857142858,5.5,0.011604147735976646,-0.2540660386358278,0.6289136891547389,132.27513227513228,8465.608465608466 +OA,1.7857142857142858,6.0,0.022326623365461797,-0.4345306311503323,1.2295211752794049,132.27513227513228,8465.608465608466 +OA,1.7857142857142858,6.5,0.002543521381932111,-0.155552774814473,0.15837879214858996,132.27513227513228,8465.608465608466 +OA,1.7857142857142858,7.0,-0.009804760067600955,0.003505546788576003,-0.4919545917493008,132.27513227513228,8465.608465608466 +OA,1.7857142857142858,7.5,-0.02347389945554313,0.15995617196517106,-1.0748172045047566,132.27513227513228,8465.608465608466 +OA,1.7857142857142858,8.0,-0.06001397856528396,0.6413978463580192,-2.8324465182394993,132.27513227513228,8465.608465608466 +OA,1.7857142857142858,8.5,-0.10571145317112629,1.2383154201958435,-4.965184497888259,132.27513227513228,8465.608465608466 +OA,1.7857142857142858,9.0,-0.2059935315279955,2.5140941034937208,-9.341724174106744,132.27513227513228,8465.608465608466 +OA,1.7857142857142858,9.5,-0.241809322240093,3.048300897444763,-11.899498186002827,132.27513227513228,8465.608465608466 +OA,1.7857142857142858,10.0,-0.7983359513802337,10.989397401768372,-42.54675750888741,132.27513227513228,8465.608465608466 +OA,1.8018018018018018,-2.5,0.25933465902349073,-3.4374054568125816,6.955157726619536,132.27513227513228,8465.608465608466 +OA,1.8018018018018018,-2.0,0.20269519423180743,-2.598960220137201,4.800636007302637,132.27513227513228,8465.608465608466 +OA,1.8018018018018018,-1.5,0.0976478841533377,-1.3284377018957825,2.475917562391883,132.27513227513228,8465.608465608466 +OA,1.8018018018018018,-1.0,-0.01900197978952345,0.21656317562871763,-1.5357712150885705,132.27513227513228,8465.608465608466 +OA,1.8018018018018018,-0.5,-0.02271800707927186,0.2705496809156524,-1.4235553115102997,132.27513227513228,8465.608465608466 +OA,1.8018018018018018,0.0,0.006485298190577065,-0.1429223355387993,0.12287702136636325,132.27513227513228,8465.608465608466 +OA,1.8018018018018018,0.5,0.007812387997277798,-0.173132169511018,0.2977583149742372,132.27513227513228,8465.608465608466 +OA,1.8018018018018018,1.0,0.01266629616370548,-0.2621713689642531,0.7104399797477199,132.27513227513228,8465.608465608466 +OA,1.8018018018018018,1.5,0.01333991228813398,-0.2752857663762158,0.7933405026746922,132.27513227513228,8465.608465608466 +OA,1.8018018018018018,2.0,0.018449839323032492,-0.35158606028749284,1.0795289031388746,132.27513227513228,8465.608465608466 +OA,1.8018018018018018,2.5,0.010010322602560233,-0.22010741363597522,0.6138036673210941,132.27513227513228,8465.608465608466 +OA,1.8018018018018018,3.0,0.009491861079101004,-0.21192026103545591,0.6052433722350143,132.27513227513228,8465.608465608466 +OA,1.8018018018018018,3.5,0.011117981204021871,-0.2383594316771455,0.7190047890601592,132.27513227513228,8465.608465608466 +OA,1.8018018018018018,4.0,0.014817671168295863,-0.29720847614683743,0.9528509293700496,132.27513227513228,8465.608465608466 +OA,1.8018018018018018,4.5,0.0029292760151832012,-0.11346329866668069,0.27767966829331175,132.27513227513228,8465.608465608466 +OA,1.8018018018018018,5.0,0.00048003332896360456,-0.06384427285015135,0.029873266856574415,132.27513227513228,8465.608465608466 +OA,1.8018018018018018,5.5,0.009589940336605674,-0.21345047182122157,0.5253227911192555,132.27513227513228,8465.608465608466 +OA,1.8018018018018018,6.0,0.005552075935516848,-0.15942375674247397,0.2609817864582219,132.27513227513228,8465.608465608466 +OA,1.8018018018018018,6.5,-0.0008163877108565118,-0.07979017799011798,-0.10030134206145433,132.27513227513228,8465.608465608466 +OA,1.8018018018018018,7.0,-0.009057153260483085,0.027380108950621956,-0.5861118613708662,132.27513227513228,8465.608465608466 +OA,1.8018018018018018,7.5,-0.02721866207399677,0.28101703369814235,-1.622627413161668,132.27513227513228,8465.608465608466 +OA,1.8018018018018018,8.0,-0.03775061661913935,0.4049176708998449,-2.2039793705937116,132.27513227513228,8465.608465608466 +OA,1.8018018018018018,8.5,-0.06698345109738077,0.817942419993027,-3.911993114187858,132.27513227513228,8465.608465608466 +OA,1.8018018018018018,9.0,-0.11661583747905373,1.5215286232547958,-6.826707462078419,132.27513227513228,8465.608465608466 +OA,1.8018018018018018,9.5,-0.06621965088894749,0.82201110232842,-5.324124705932759,132.27513227513228,8465.608465608466 +OA,1.8181818181818181,-2.5,0.12569604091712433,-1.4869559145910731,1.1963855326631088,132.27513227513228,8465.608465608466 +OA,1.8181818181818181,-2.0,-0.042497640110722344,0.8393622277334387,-5.088631831535614,132.27513227513228,8465.608465608466 +OA,1.8181818181818181,-1.5,-0.02931290040609752,0.4281746971157342,-2.215795659158772,132.27513227513228,8465.608465608466 +OA,1.8181818181818181,-1.0,0.015057425656504019,-0.27662540908400035,0.6621500626980643,132.27513227513228,8465.608465608466 +OA,1.8181818181818181,-0.5,0.013513767753504156,-0.25773541589060067,0.6579118537943764,132.27513227513228,8465.608465608466 +OA,1.8181818181818181,0.0,0.018810572026437523,-0.3378272507315675,0.980818037162764,132.27513227513228,8465.608465608466 +OA,1.8181818181818181,0.5,0.015239358978094584,-0.29435687072946726,0.8787532156658047,132.27513227513228,8465.608465608466 +OA,1.8181818181818181,1.0,0.005719216504446603,-0.15710750959699227,0.42436845021713343,132.27513227513228,8465.608465608466 +OA,1.8181818181818181,1.5,0.005919155426123075,-0.15801688766433947,0.44221113232885007,132.27513227513228,8465.608465608466 +OA,1.8181818181818181,2.0,0.005520669015940125,-0.14950123953146932,0.4235591781678302,132.27513227513228,8465.608465608466 +OA,1.8181818181818181,2.5,0.0042429690473505585,-0.12843692728821055,0.3591941878116178,132.27513227513228,8465.608465608466 +OA,1.8181818181818181,3.0,0.0025790002114836003,-0.09829364084734546,0.24653484148065613,132.27513227513228,8465.608465608466 +OA,1.8181818181818181,3.5,0.008698542095534017,-0.19280623899291938,0.6044104060505457,132.27513227513228,8465.608465608466 +OA,1.8181818181818181,4.0,0.004513703521197763,-0.12707475182742106,0.3705488637876553,132.27513227513228,8465.608465608466 +OA,1.8181818181818181,4.5,-0.001447131792102421,-0.03834877929114169,0.045655245890460494,132.27513227513228,8465.608465608466 +OA,1.8181818181818181,5.0,-0.005367829728855781,0.024611541509660197,-0.21460015224801107,132.27513227513228,8465.608465608466 +OA,1.8181818181818181,5.5,0.001379291199898706,-0.08040564859885838,0.09311134305017449,132.27513227513228,8465.608465608466 +OA,1.8181818181818181,6.0,0.0035924347923459252,-0.11440981241526023,0.12913414794067712,132.27513227513228,8465.608465608466 +OA,1.8181818181818181,6.5,-0.007045070591179993,0.04431648857498699,-0.5728466856736669,132.27513227513228,8465.608465608466 +OA,1.8181818181818181,7.0,-0.002174893558600354,-0.03526623464327933,-0.43198229433107477,132.27513227513228,8465.608465608466 +OA,1.8181818181818181,7.5,-0.018244926872531805,0.20096762295571263,-1.4508152033920636,132.27513227513228,8465.608465608466 +OA,1.8181818181818181,8.0,-0.020457465453543988,0.23232319530008622,-1.8251915986734017,132.27513227513228,8465.608465608466 +OA,1.8181818181818181,8.5,-0.040989860751204005,0.5655700998019579,-3.4798466415412985,132.27513227513228,8465.608465608466 +OA,1.8181818181818181,9.0,-0.06803674404908344,1.0292763388839323,-5.964496059508832,132.27513227513228,8465.608465608466 +OA,1.8181818181818181,9.5,0.19006790067655807,-2.6427068365010573,5.0508438159509375,132.27513227513228,8465.608465608466 +OA,1.834862385321101,-3.5,0.4305049451894065,-6.307366480943122,19.18251068994919,132.27513227513228,8465.608465608466 +OA,1.834862385321101,-3.0,0.19012670217165378,-2.710369745511903,7.417062113868112,132.27513227513228,8465.608465608466 +OA,1.834862385321101,-2.5,0.0009101590401532338,-0.02822346047986512,-0.7416513411712491,132.27513227513228,8465.608465608466 +OA,1.834862385321101,-2.0,-0.031951158081023154,0.4508021964139922,-2.1158854458125074,132.27513227513228,8465.608465608466 +OA,1.834862385321101,-1.5,-0.011344819002816559,0.12625626313197802,-0.7731670430367998,132.27513227513228,8465.608465608466 +OA,1.834862385321101,-1.0,0.01252173026815023,-0.23921762135748587,0.6575466456016201,132.27513227513228,8465.608465608466 +OA,1.834862385321101,-0.5,0.014325430223831844,-0.26554572994911696,0.7715906886786785,132.27513227513228,8465.608465608466 +OA,1.834862385321101,0.0,0.014221633978547067,-0.2669381354593929,0.8183267042005703,132.27513227513228,8465.608465608466 +OA,1.834862385321101,0.5,0.011294386565574473,-0.22952294925808903,0.7242567058695693,132.27513227513228,8465.608465608466 +OA,1.834862385321101,1.0,0.0050970396084354394,-0.1385734937263877,0.41831046391790405,132.27513227513228,8465.608465608466 +OA,1.834862385321101,1.5,0.006553260899629451,-0.15800092630841583,0.4893118250835262,132.27513227513228,8465.608465608466 +OA,1.834862385321101,2.0,0.003150078654929981,-0.10810981599969259,0.3364684506594471,132.27513227513228,8465.608465608466 +OA,1.834862385321101,2.5,-0.0011382942390108443,-0.03926052099636257,0.07280696915512908,132.27513227513228,8465.608465608466 +OA,1.834862385321101,3.0,-0.003285914382186315,-0.006467443961777598,-0.042169203080886106,132.27513227513228,8465.608465608466 +OA,1.834862385321101,3.5,-0.008789824685803787,0.07709555450527097,-0.34341978287743036,132.27513227513228,8465.608465608466 +OA,1.834862385321101,4.0,-0.0059470193419838575,0.034842523463767955,-0.19989056372883074,132.27513227513228,8465.608465608466 +OA,1.834862385321101,4.5,-0.01088583844588398,0.10661688404949758,-0.4656529600573993,132.27513227513228,8465.608465608466 +OA,1.834862385321101,5.0,-0.014562983499700644,0.17115567894199465,-0.7699399807442135,132.27513227513228,8465.608465608466 +OA,1.834862385321101,5.5,-0.01263749070798369,0.14263364441265441,-0.7324343784098373,132.27513227513228,8465.608465608466 +OA,1.834862385321101,6.0,-0.00867229870614768,0.09783041492546399,-0.7181168124785611,132.27513227513228,8465.608465608466 +OA,1.834862385321101,6.5,-0.00630944477477942,0.06676806091856241,-0.7505139142535417,132.27513227513228,8465.608465608466 +OA,1.834862385321101,7.0,-0.002633957090699042,0.025795868450968172,-0.8148799715107206,132.27513227513228,8465.608465608466 +OA,1.834862385321101,7.5,-0.008519005882631084,0.11400844389075021,-1.354572126996882,132.27513227513228,8465.608465608466 +OA,1.834862385321101,8.0,-0.009929681371771519,0.14137339025336104,-1.7835994507557797,132.27513227513228,8465.608465608466 +OA,1.834862385321101,8.5,-0.04115747803394404,0.6229933072737501,-4.065121379792522,132.27513227513228,8465.608465608466 +OA,1.834862385321101,9.0,-0.07190579347647832,1.1613703955790635,-7.519792665398718,132.27513227513228,8465.608465608466 +OA,1.834862385321101,9.5,0.3258642556433181,-4.674821264608546,11.407770988461412,132.27513227513228,8465.608465608466 +OA,1.8518518518518519,-3.5,0.038030812973605846,-0.5019483718482318,0.13894745607428316,132.27513227513228,8465.608465608466 +OA,1.8518518518518519,-3.0,0.017894695987276006,-0.2783376884511036,0.4894682759042444,132.27513227513228,8465.608465608466 +OA,1.8518518518518519,-2.5,0.003583558922556249,-0.09009112756402006,0.02503856327474304,132.27513227513228,8465.608465608466 +OA,1.8518518518518519,-2.0,0.011418599454552054,-0.22612343796344392,0.6532624717620878,132.27513227513228,8465.608465608466 +OA,1.8518518518518519,-1.5,0.011273313446426896,-0.22072410130468054,0.6617309349657522,132.27513227513228,8465.608465608466 +OA,1.8518518518518519,-1.0,0.011442582596936883,-0.21617422200346392,0.6509614893464033,132.27513227513228,8465.608465608466 +OA,1.8518518518518519,-0.5,0.014469317141796383,-0.26595897999669205,0.8645293982122677,132.27513227513228,8465.608465608466 +OA,1.8518518518518519,0.0,0.00984593909111631,-0.19903244366188316,0.6583373825514935,132.27513227513228,8465.608465608466 +OA,1.8518518518518519,0.5,0.006115476349062969,-0.1442855665256058,0.4797521229253855,132.27513227513228,8465.608465608466 +OA,1.8518518518518519,1.0,0.006065909994582003,-0.14561886703187532,0.5023162632887559,132.27513227513228,8465.608465608466 +OA,1.8518518518518519,1.5,0.0030813325392128107,-0.10003179982644209,0.34594951115904293,132.27513227513228,8465.608465608466 +OA,1.8518518518518519,2.0,0.0015649175506947822,-0.07644693074845615,0.26667507257533085,132.27513227513228,8465.608465608466 +OA,1.8518518518518519,2.5,-0.0021942966803457885,-0.01891854392595394,0.04651529214924853,132.27513227513228,8465.608465608466 +OA,1.8518518518518519,3.0,-0.00522701110239759,0.02810128390268982,-0.13986957480614898,132.27513227513228,8465.608465608466 +OA,1.8518518518518519,3.5,-0.004973077747807099,0.02521799709691072,-0.1515261260438212,132.27513227513228,8465.608465608466 +OA,1.8518518518518519,4.0,-0.0013037328572810527,-0.020581156595103286,-0.05733020382568462,132.27513227513228,8465.608465608466 +OA,1.8518518518518519,4.5,-0.00495239254292996,0.03621781166467305,-0.3034284020160966,132.27513227513228,8465.608465608466 +OA,1.8518518518518519,5.0,-0.005582155216986018,0.05202443702743555,-0.4298389625912283,132.27513227513228,8465.608465608466 +OA,1.8518518518518519,5.5,0.0003143676684653889,-0.029887043277821327,-0.21845470742934942,132.27513227513228,8465.608465608466 +OA,1.8518518518518519,6.0,-0.006246920965225375,0.08745513625322576,-0.7739572687153502,132.27513227513228,8465.608465608466 +OA,1.8518518518518519,6.5,-0.004404251647089161,0.07684951933659398,-0.918999499383951,132.27513227513228,8465.608465608466 +OA,1.8518518518518519,7.0,-0.0027976205585207694,0.08168156448330499,-1.1914082028177497,132.27513227513228,8465.608465608466 +OA,1.8518518518518519,7.5,-0.003069535879100341,0.09596762582257792,-1.540512509148128,132.27513227513228,8465.608465608466 +OA,1.8518518518518519,8.0,-0.0037836806397863834,0.1338000384765275,-2.1444446448738566,132.27513227513228,8465.608465608466 +OA,1.8518518518518519,8.5,0.021311002366407227,-0.20355172602303845,-1.8755805320735397,132.27513227513228,8465.608465608466 +OA,1.8691588785046729,-5.5,0.2527156164173817,-3.3265875859203007,6.527500904605892,132.27513227513228,8465.608465608466 +OA,1.8691588785046729,-5.0,0.24816286938282286,-3.259029402071155,6.990335388615215,132.27513227513228,8465.608465608466 +OA,1.8691588785046729,-4.5,0.13465781321187703,-1.8392366881594715,4.038830215087956,132.27513227513228,8465.608465608466 +OA,1.8691588785046729,-4.0,-0.012290670507941602,0.11394640449230764,-1.111985641532823,132.27513227513228,8465.608465608466 +OA,1.8691588785046729,-3.5,-0.029535839401574844,0.37720242433246065,-1.665865605818528,132.27513227513228,8465.608465608466 +OA,1.8691588785046729,-3.0,0.0023782976971996866,-0.07196788817969287,0.03948786931990227,132.27513227513228,8465.608465608466 +OA,1.8691588785046729,-2.5,0.00587514680581697,-0.13430117471551933,0.3510513743194138,132.27513227513228,8465.608465608466 +OA,1.8691588785046729,-2.0,0.006809694327197111,-0.15114193777339535,0.4646205260201882,132.27513227513228,8465.608465608466 +OA,1.8691588785046729,-1.5,0.005664059438331934,-0.1335497306724076,0.42798128788970324,132.27513227513228,8465.608465608466 +OA,1.8691588785046729,-1.0,0.011002411929206299,-0.21695067892828815,0.765487666191321,132.27513227513228,8465.608465608466 +OA,1.8691588785046729,-0.5,0.005201694455434941,-0.13097550160920152,0.47571456184231453,132.27513227513228,8465.608465608466 +OA,1.8691588785046729,0.0,0.003615158363939717,-0.10564949816342964,0.38469018583283676,132.27513227513228,8465.608465608466 +OA,1.8691588785046729,0.5,-0.003022910229528316,-0.005634868927568194,0.025948946737490826,132.27513227513228,8465.608465608466 +OA,1.8691588785046729,1.0,-8.50161468041747e-05,-0.05004903934045333,0.18147725633166306,132.27513227513228,8465.608465608466 +OA,1.8691588785046729,1.5,-0.0108662284976184,0.11167958584114071,-0.40335522972774607,132.27513227513228,8465.608465608466 +OA,1.8691588785046729,2.0,-0.014033207805509783,0.16315566061452846,-0.6187704560072296,132.27513227513228,8465.608465608466 +OA,1.8691588785046729,2.5,-0.012934785479618571,0.14838567988064724,-0.605346266350937,132.27513227513228,8465.608465608466 +OA,1.8691588785046729,3.0,-0.007699354187927294,0.07040870118446668,-0.36474899090193624,132.27513227513228,8465.608465608466 +OA,1.8691588785046729,3.5,-0.004864038602672656,0.04181645568144245,-0.36257517109918036,132.27513227513228,8465.608465608466 +OA,1.8691588785046729,4.0,-0.0036507427450525745,0.03508595718753167,-0.4235139639624239,132.27513227513228,8465.608465608466 +OA,1.8691588785046729,4.5,-0.0015282626136465679,0.006460935973322906,-0.38982426098954714,132.27513227513228,8465.608465608466 +OA,1.8691588785046729,5.0,-0.006282848744662652,0.08789765967623993,-0.7821576142485045,132.27513227513228,8465.608465608466 +OA,1.8691588785046729,5.5,-0.00741722601728754,0.11398902913722961,-0.9873265478580572,132.27513227513228,8465.608465608466 +OA,1.8691588785046729,6.0,-0.01505244546761968,0.23876745919012826,-1.5478556294111647,132.27513227513228,8465.608465608466 +OA,1.8691588785046729,6.5,-0.017878646526146402,0.28304431191484436,-1.839707443752819,132.27513227513228,8465.608465608466 +OA,1.8691588785046729,7.0,-0.026820309408754944,0.4346481467185631,-2.6113110106432926,132.27513227513228,8465.608465608466 +OA,1.8691588785046729,7.5,-0.045397951163506325,0.712999188797818,-3.9567361050857874,132.27513227513228,8465.608465608466 +OA,1.8691588785046729,8.0,-0.0537463933239858,0.862249138394376,-5.207018085911097,132.27513227513228,8465.608465608466 +OA,1.8691588785046729,8.5,0.27892083794342076,-3.925429076024524,9.644145608133798,132.27513227513228,8465.608465608466 +OA,1.8867924528301887,-5.5,0.1485212112228146,-1.7864328533822174,2.0089120899321076,132.27513227513228,8465.608465608466 +OA,1.8867924528301887,-5.0,-0.05358919561971652,1.0244168641794116,-5.816907666756327,132.27513227513228,8465.608465608466 +OA,1.8867924528301887,-4.5,-0.026706182250074963,0.3830181872867078,-1.9019453763561236,132.27513227513228,8465.608465608466 +OA,1.8867924528301887,-4.0,0.009057707443242594,-0.17079640550103897,0.38578823535403883,132.27513227513228,8465.608465608466 +OA,1.8867924528301887,-3.5,0.011013642191915512,-0.20784369737434155,0.6145269863948644,132.27513227513228,8465.608465608466 +OA,1.8867924528301887,-3.0,0.007817706713274655,-0.160876967685806,0.509371123131422,132.27513227513228,8465.608465608466 +OA,1.8867924528301887,-2.5,0.00490016622736675,-0.11589079614668217,0.3739831155859845,132.27513227513228,8465.608465608466 +OA,1.8867924528301887,-2.0,0.004641618166490646,-0.11483851474515029,0.4137972847243234,132.27513227513228,8465.608465608466 +OA,1.8867924528301887,-1.5,0.004304413913349875,-0.11245924414485725,0.43292125951994437,132.27513227513228,8465.608465608466 +OA,1.8867924528301887,-1.0,0.00557757854593101,-0.13256890553722972,0.5210910975738668,132.27513227513228,8465.608465608466 +OA,1.8867924528301887,-0.5,0.002011338673752413,-0.07929764693997489,0.33354823474330453,132.27513227513228,8465.608465608466 +OA,1.8867924528301887,0.0,-0.0011334455752223076,-0.03343367197295474,0.17859912201670752,132.27513227513228,8465.608465608466 +OA,1.8867924528301887,0.5,-0.0025401270208071734,-0.008874907675592025,0.0562408580930316,132.27513227513228,8465.608465608466 +OA,1.8867924528301887,1.0,-0.004335302986373869,0.022867004153832447,-0.09826266861647773,132.27513227513228,8465.608465608466 +OA,1.8867924528301887,1.5,-0.0030067691844031805,0.007440595473901645,-0.10404323332417204,132.27513227513228,8465.608465608466 +OA,1.8867924528301887,2.0,-0.008547633529410632,0.09630050928617326,-0.4828440734156596,132.27513227513228,8465.608465608466 +OA,1.8867924528301887,2.5,-0.0033528330466946754,0.021581315928589587,-0.284698968101898,132.27513227513228,8465.608465608466 +OA,1.8867924528301887,3.0,-0.002453202703165797,0.011805241150284019,-0.32176429776151094,132.27513227513228,8465.608465608466 +OA,1.8867924528301887,3.5,-0.0012670081921846246,0.007602081794897712,-0.40882053090097736,132.27513227513228,8465.608465608466 +OA,1.8867924528301887,4.0,0.008446501081518704,-0.12111187225425427,-0.07961812564100589,132.27513227513228,8465.608465608466 +OA,1.8867924528301887,4.5,-0.00022360085268900771,0.019931650790453306,-0.6987315753513867,132.27513227513228,8465.608465608466 +OA,1.8867924528301887,5.0,-0.002672326882082991,0.06636286312328157,-0.9836065600289325,132.27513227513228,8465.608465608466 +OA,1.8867924528301887,5.5,-0.004554286569422162,0.10365236887527748,-1.2570815889472278,132.27513227513228,8465.608465608466 +OA,1.8867924528301887,6.0,-0.0053654997317820145,0.1259777313976151,-1.4941500461397552,132.27513227513228,8465.608465608466 +OA,1.8867924528301887,6.5,-0.012150032300349648,0.23931499983535298,-2.135930557210862,132.27513227513228,8465.608465608466 +OA,1.8867924528301887,7.0,-0.01959721982914091,0.3639695832154627,-2.8645488933536867,132.27513227513228,8465.608465608466 +OA,1.8867924528301887,7.5,-0.06305962923038003,0.9894259437793104,-5.545778887239976,132.27513227513228,8465.608465608466 +OA,1.8867924528301887,8.0,-0.25179731272290595,3.9450357324286465,-18.8820507962972,132.27513227513228,8465.608465608466 +OA,1.8867924528301887,8.5,0.23875532761926166,-3.075330115450614,3.0795944920691003,132.27513227513228,8465.608465608466 +OA,1.9047619047619047,-6.5,0.48776736269204357,-7.213064434598703,22.6364701473146,132.27513227513228,8465.608465608466 +OA,1.9047619047619047,-6.0,0.20202265822114052,-2.9151656612129186,8.316190745126661,132.27513227513228,8465.608465608466 +OA,1.9047619047619047,-5.5,0.0030233818952868363,-0.07671648481605897,-0.3881290918437884,132.27513227513228,8465.608465608466 +OA,1.9047619047619047,-5.0,-0.03224906638584914,0.4577185158420989,-2.034835981186629,132.27513227513228,8465.608465608466 +OA,1.9047619047619047,-4.5,-0.014447213455351503,0.17945344822593265,-0.8410754530922872,132.27513227513228,8465.608465608466 +OA,1.9047619047619047,-4.0,0.006576411681130785,-0.1355070846636719,0.3968164156969618,132.27513227513228,8465.608465608466 +OA,1.9047619047619047,-3.5,0.006214798904102908,-0.13474837728869388,0.4610571411489208,132.27513227513228,8465.608465608466 +OA,1.9047619047619047,-3.0,0.003614263989086462,-0.09299091878985147,0.33872968473039494,132.27513227513228,8465.608465608466 +OA,1.9047619047619047,-2.5,0.00042071788851055536,-0.046935105573386204,0.19470510557333356,132.27513227513228,8465.608465608466 +OA,1.9047619047619047,-2.0,-0.0041767022357293345,0.020802310725537003,-0.02952073750322986,132.27513227513228,8465.608465608466 +OA,1.9047619047619047,-1.5,-0.008305280066990592,0.07894387895593169,-0.22263279860214857,132.27513227513228,8465.608465608466 +OA,1.9047619047619047,-1.0,-0.010003155574671047,0.10370994603337813,-0.31709578579034847,132.27513227513228,8465.608465608466 +OA,1.9047619047619047,-0.5,-0.010222070196181526,0.10957219339472127,-0.3680835288796707,132.27513227513228,8465.608465608466 +OA,1.9047619047619047,0.0,-0.002267926115383502,-0.005751482840831517,0.0030645049796237406,132.27513227513228,8465.608465608466 +OA,1.9047619047619047,0.5,-0.006293836608403259,0.060325202311702235,-0.2981176078332954,132.27513227513228,8465.608465608466 +OA,1.9047619047619047,1.0,-0.008865463251262147,0.10907070330507576,-0.5593735806543889,132.27513227513228,8465.608465608466 +OA,1.9047619047619047,1.5,-0.004106887250217915,0.04275542101046594,-0.39589932625667745,132.27513227513228,8465.608465608466 +OA,1.9047619047619047,2.0,-0.0016520712396629268,0.011561781804778952,-0.3611516195751763,132.27513227513228,8465.608465608466 +OA,1.9047619047619047,2.5,-0.0069820396778822345,0.09895258677389795,-0.7696160095091888,132.27513227513228,8465.608465608466 +OA,1.9047619047619047,3.0,-0.0030101256259626504,0.04508616382144087,-0.678464722264627,132.27513227513228,8465.608465608466 +OA,1.9047619047619047,3.5,-0.004008754226445248,0.06810145135032664,-0.8710149824773101,132.27513227513228,8465.608465608466 +OA,1.9047619047619047,4.0,-0.0020031228680794932,0.045355837942572114,-0.9044068013816122,132.27513227513228,8465.608465608466 +OA,1.9047619047619047,4.5,-0.006192256238758047,0.1156977697055639,-1.3001403985693192,132.27513227513228,8465.608465608466 +OA,1.9047619047619047,5.0,-0.012449140369640413,0.2223664808987479,-1.8679357152405376,132.27513227513228,8465.608465608466 +OA,1.9047619047619047,5.5,-0.01590190119344478,0.272733627735102,-2.2284275423715547,132.27513227513228,8465.608465608466 +OA,1.9047619047619047,6.0,-0.017197954652245877,0.30215880675989737,-2.6252780739625043,132.27513227513228,8465.608465608466 +OA,1.9047619047619047,6.5,-0.003655713247160082,0.13482346333633027,-2.478418978921101,132.27513227513228,8465.608465608466 +OA,1.9047619047619047,7.0,0.056472838462586675,-0.6984753846576006,-0.27492850354746795,132.27513227513228,8465.608465608466 +OA,1.9047619047619047,7.5,0.24627992275658253,-3.4312585129867355,7.94617834054586,132.27513227513228,8465.608465608466 +OA,1.9047619047619047,8.0,0.23876206420381865,-3.075427048185931,3.089387690302348,132.27513227513228,8465.608465608466 +OA,1.9047619047619047,8.5,0.23875588873747566,-3.0753383596817914,2.3959544978708847,132.27513227513228,8465.608465608466 +OA,1.9230769230769231,-6.5,-0.012137245528012045,0.15921871421819528,-1.6226029401245659,132.27513227513228,8465.608465608466 +OA,1.9230769230769231,-6.0,0.007589220077042595,-0.1522694123803617,0.24145258524956925,132.27513227513228,8465.608465608466 +OA,1.9230769230769231,-5.5,0.00513916988144124,-0.12016474768947333,0.27676808851386137,132.27513227513228,8465.608465608466 +OA,1.9230769230769231,-5.0,0.011293264614633702,-0.21086823262630128,0.6955639774910236,132.27513227513228,8465.608465608466 +OA,1.9230769230769231,-4.5,0.009238587519730916,-0.17912856897340354,0.6322635685940055,132.27513227513228,8465.608465608466 +OA,1.9230769230769231,-4.0,0.005796297034142616,-0.12125166293877565,0.446156654391352,132.27513227513228,8465.608465608466 +OA,1.9230769230769231,-3.5,0.0022637642874836286,-0.06732372632645495,0.28009167239192345,132.27513227513228,8465.608465608466 +OA,1.9230769230769231,-3.0,0.00427561644647066,-0.09711375955215074,0.4094856263559691,132.27513227513228,8465.608465608466 +OA,1.9230769230769231,-2.5,-0.0012324433805721677,-0.01515179164405447,0.1141072359656717,132.27513227513228,8465.608465608466 +OA,1.9230769230769231,-2.0,-0.006267693109169125,0.06493325774587783,-0.20329397189252021,132.27513227513228,8465.608465608466 +OA,1.9230769230769231,-1.5,-0.003358620039060275,0.016978013662396353,-0.04435939853914056,132.27513227513228,8465.608465608466 +OA,1.9230769230769231,-1.0,-0.0017877268076909314,-0.010397738873469991,0.0348473284760658,132.27513227513228,8465.608465608466 +OA,1.9230769230769231,-0.5,-0.00016282946802004857,-0.025719296761878962,0.011949049773633768,132.27513227513228,8465.608465608466 +OA,1.9230769230769231,0.0,0.00317011593710692,-0.06920290821799668,0.09470348549513025,132.27513227513228,8465.608465608466 +OA,1.9230769230769231,0.5,-0.0014083991760161963,0.010457648595468959,-0.2959509159636734,132.27513227513228,8465.608465608466 +OA,1.9230769230769231,1.0,-0.003628299440352291,0.05255432612446273,-0.5461547047074131,132.27513227513228,8465.608465608466 +OA,1.9230769230769231,1.5,-0.0005352724576052805,0.0129930845022548,-0.49419958478279924,132.27513227513228,8465.608465608466 +OA,1.9230769230769231,2.0,0.004915994223473742,-0.06068593726341251,-0.332253708076512,132.27513227513228,8465.608465608466 +OA,1.9230769230769231,2.5,-0.004232472217979018,0.08726297116658455,-0.9910946874949854,132.27513227513228,8465.608465608466 +OA,1.9230769230769231,3.0,-7.041512564470175e-05,0.03597293449163194,-0.960939059071847,132.27513227513228,8465.608465608466 +OA,1.9230769230769231,3.5,-0.013611095224463667,0.24708017560498552,-1.8641831156611752,132.27513227513228,8465.608465608466 +OA,1.9230769230769231,4.0,-0.009728785157265444,0.18864659379146265,-1.7939527115760474,132.27513227513228,8465.608465608466 +OA,1.9230769230769231,4.5,-0.014149177931685943,0.2636246215757787,-2.2873941592173654,132.27513227513228,8465.608465608466 +OA,1.9230769230769231,5.0,-0.016321390210209657,0.31229071512405837,-2.772267946991546,132.27513227513228,8465.608465608466 +OA,1.9230769230769231,5.5,-0.03175069596975193,0.5396822184149317,-3.9776749797299398,132.27513227513228,8465.608465608466 +OA,1.9230769230769231,6.0,-0.0439278561652761,0.7096786653136051,-5.283736208441773,132.27513227513228,8465.608465608466 +OA,1.9230769230769231,6.5,0.11874752078958672,-1.5637565236666173,1.0161761864514587,132.27513227513228,8465.608465608466 +OA,1.941747572815534,-8.5,0.4328726599919047,-6.279902339693862,18.605148047395986,132.27513227513228,8465.608465608466 +OA,1.941747572815534,-8.0,0.43288030484593165,-6.280013899289063,19.298664162337808,132.27513227513228,8465.608465608466 +OA,1.941747572815534,-7.5,0.17653206675571387,-2.4880078509519783,6.606102821650648,132.27513227513228,8465.608465608466 +OA,1.941747572815534,-7.0,-0.053905488110779,0.7122169812518899,-2.985874383034049,132.27513227513228,8465.608465608466 +OA,1.941747572815534,-6.5,-0.03286241350817491,0.4240517093231822,-1.7184423792087378,132.27513227513228,8465.608465608466 +OA,1.941747572815534,-6.0,0.0032535448347140606,-0.09242943174505808,0.24777756453403632,132.27513227513228,8465.608465608466 +OA,1.941747572815534,-5.5,0.0009179523479405016,-0.05575270792114498,0.18600435947014882,132.27513227513228,8465.608465608466 +OA,1.941747572815534,-5.0,0.0018224560018223694,-0.06318716561570753,0.24295455681029524,132.27513227513228,8465.608465608466 +OA,1.941747572815534,-4.5,-0.0031982118090761505,0.01553682041867873,-0.02378813053972418,132.27513227513228,8465.608465608466 +OA,1.941747572815534,-4.0,-0.006647300736423804,0.07254155897153905,-0.22603708192393437,132.27513227513228,8465.608465608466 +OA,1.941747572815534,-3.5,-0.003792752078578485,0.027050253771093748,-0.05541836976522241,132.27513227513228,8465.608465608466 +OA,1.941747572815534,-3.0,-0.00863817762858386,0.10133292672979505,-0.3273140300396505,132.27513227513228,8465.608465608466 +OA,1.941747572815534,-2.5,-0.008352287161913816,0.0968795210036667,-0.34056010162229755,132.27513227513228,8465.608465608466 +OA,1.941747572815534,-2.0,-0.00705622522067164,0.07917437426622193,-0.318714138633724,132.27513227513228,8465.608465608466 +OA,1.941747572815534,-1.5,-0.0022486321858632193,0.011161472052386247,-0.14563567867928479,132.27513227513228,8465.608465608466 +OA,1.941747572815534,-1.0,-0.002454193615687317,0.020109146364816154,-0.25301842894817195,132.27513227513228,8465.608465608466 +OA,1.941747572815534,-0.5,1.3386768452673373e-06,-0.009011174582420886,-0.23887655476502562,132.27513227513228,8465.608465608466 +OA,1.941747572815534,0.0,0.005959421751305018,-0.09509019192176241,-0.0031994396800224846,132.27513227513228,8465.608465608466 +OA,1.941747572815534,0.5,0.0003552030740822954,-0.0036560871182075515,-0.42824192545318107,132.27513227513228,8465.608465608466 +OA,1.941747572815534,1.0,-0.004278622603675166,0.08032266599512562,-0.86979119456227,132.27513227513228,8465.608465608466 +OA,1.941747572815534,1.5,-0.0036226038020406976,0.07412511406356814,-0.9664945219442322,132.27513227513228,8465.608465608466 +OA,1.941747572815534,2.0,-0.009379899365474145,0.16780394893276745,-1.4430320670386414,132.27513227513228,8465.608465608466 +OA,1.941747572815534,2.5,-0.008965950448909289,0.16715801378071277,-1.595754756474471,132.27513227513228,8465.608465608466 +OA,1.941747572815534,3.0,-0.008369541243735276,0.16725989714593922,-1.786284011810055,132.27513227513228,8465.608465608466 +OA,1.941747572815534,3.5,-0.020373901476225413,0.34683152887513247,-2.62513961383193,132.27513227513228,8465.608465608466 +OA,1.941747572815534,4.0,-0.028817410278532865,0.4799150782134505,-3.394482589106696,132.27513227513228,8465.608465608466 +OA,1.941747572815534,4.5,-0.0038528930697091426,0.1362788147956403,-2.5946202203194035,132.27513227513228,8465.608465608466 +OA,1.941747572815534,5.0,0.06252880255112536,-0.8013382516701473,0.05157836817370973,132.27513227513228,8465.608465608466 +OA,1.941747572815534,5.5,0.24379273732651774,-3.419935815068711,8.160094950078172,132.27513227513228,8465.608465608466 +OA,1.941747572815534,6.0,0.4269317186043199,-6.1784941688120725,17.037126438503435,132.27513227513228,8465.608465608466 +OA,1.941747572815534,6.5,0.4269232284496498,-6.178368348873089,16.343551082704153,132.27513227513228,8465.608465608466 +OA,1.9607843137254901,-8.5,0.2089545264739397,-2.917733819131334,7.601340324546174,132.27513227513228,8465.608465608466 +OA,1.9607843137254901,-8.0,0.05057213624056357,-0.6939315519702305,1.428819196010296,132.27513227513228,8465.608465608466 +OA,1.9607843137254901,-7.5,0.011107280005494383,-0.17667723978307592,0.2084964539867383,132.27513227513228,8465.608465608466 +OA,1.9607843137254901,-7.0,0.015728841131073867,-0.26015047266029084,0.7368448158803915,132.27513227513228,8465.608465608466 +OA,1.9607843137254901,-6.5,0.007151512478584079,-0.13777634390685728,0.4222987204238773,132.27513227513228,8465.608465608466 +OA,1.9607843137254901,-6.0,0.005565712695346286,-0.11536625762986225,0.4267956263982434,132.27513227513228,8465.608465608466 +OA,1.9607843137254901,-5.5,0.0034040835132158128,-0.07890362110763556,0.31086384982545856,132.27513227513228,8465.608465608466 +OA,1.9607843137254901,-5.0,-0.0004407122954129679,-0.01392427064347537,0.07629734223983765,132.27513227513228,8465.608465608466 +OA,1.9607843137254901,-4.5,-0.0073892780150878355,0.09591167277634802,-0.33333124315275203,132.27513227513228,8465.608465608466 +OA,1.9607843137254901,-4.0,-0.00902070774436822,0.1257983346625634,-0.46316669385797116,132.27513227513228,8465.608465608466 +OA,1.9607843137254901,-3.5,-0.007778648429200853,0.10036279395659153,-0.36925680928469035,132.27513227513228,8465.608465608466 +OA,1.9607843137254901,-3.0,-0.0010003949620971185,-0.00406385516939029,-0.023033179607783488,132.27513227513228,8465.608465608466 +OA,1.9607843137254901,-2.5,-0.0008781059812256523,-0.0006505234202322631,-0.11452089523518315,132.27513227513228,8465.608465608466 +OA,1.9607843137254901,-2.0,-0.000545726499546473,-0.002334536716141441,-0.1770161459201211,132.27513227513228,8465.608465608466 +OA,1.9607843137254901,-1.5,-0.00018393397379364726,9.7808189790252e-05,-0.28445232761491546,132.27513227513228,8465.608465608466 +OA,1.9607843137254901,-1.0,0.0017056615698530036,-0.019620872840551272,-0.3173288004430512,132.27513227513228,8465.608465608466 +OA,1.9607843137254901,-0.5,0.0016767938192829796,-0.009041441281515666,-0.4724316454686688,132.27513227513228,8465.608465608466 +OA,1.9607843137254901,0.0,0.008409677954715027,-0.10342738815830124,-0.2448794483416599,132.27513227513228,8465.608465608466 +OA,1.9607843137254901,0.5,0.004031280633986762,-0.02287837054128187,-0.6893976878588104,132.27513227513228,8465.608465608466 +OA,1.9607843137254901,1.0,0.0005527672612217075,0.043505313894459774,-1.0877357677971782,132.27513227513228,8465.608465608466 +OA,1.9607843137254901,1.5,-0.013202169056540237,0.2516343845459201,-1.9939794325888784,132.27513227513228,8465.608465608466 +OA,1.9607843137254901,2.0,-0.017715935501310048,0.31365337832206963,-2.3804463819675155,132.27513227513228,8465.608465608466 +OA,1.9607843137254901,2.5,-0.02280532266588523,0.40025072756085395,-2.943205775636802,132.27513227513228,8465.608465608466 +OA,1.9607843137254901,3.0,-0.006220840700968625,0.15516814182848604,-2.358516344567557,132.27513227513228,8465.608465608466 +OA,1.9607843137254901,3.5,-0.030084721571073683,0.5164197558478949,-4.110464509021665,132.27513227513228,8465.608465608466 +OA,1.9607843137254901,4.0,-0.06371733838360161,0.9973798943089502,-6.579232329400551,132.27513227513228,8465.608465608466 +OA,1.9607843137254901,4.5,0.1251921033700218,-1.6862372845071456,1.256808964792493,132.27513227513228,8465.608465608466 +OA,1.9801980198019802,-9.5,0.505399270154371,-7.4212819724777646,22.757336322056403,132.27513227513228,8465.608465608466 +OA,1.9801980198019802,-9.0,0.14880703173685345,-2.0737502611280805,4.873089716506758,132.27513227513228,8465.608465608466 +OA,1.9801980198019802,-8.5,0.011080583507283632,-0.16601786607747923,-0.24793767874778386,132.27513227513228,8465.608465608466 +OA,1.9801980198019802,-8.0,0.013234054297962067,-0.17722223091706735,0.06228173297118607,132.27513227513228,8465.608465608466 +OA,1.9801980198019802,-7.5,0.005485625583307974,-0.08094185764153439,-0.02191075835847586,132.27513227513228,8465.608465608466 +OA,1.9801980198019802,-7.0,0.012981724086052988,-0.19868020222619445,0.5501787782851815,132.27513227513228,8465.608465608466 +OA,1.9801980198019802,-6.5,0.0010299866199929542,-0.029703141899125242,0.05699711587693592,132.27513227513228,8465.608465608466 +OA,1.9801980198019802,-6.0,-7.263409906747406e-05,-0.01411843386068174,0.04698713268380103,132.27513227513228,8465.608465608466 +OA,1.9801980198019802,-5.5,-0.005828079462830287,0.07118787128458365,-0.2477829232205198,132.27513227513228,8465.608465608466 +OA,1.9801980198019802,-5.0,-0.0070704900216220865,0.09251827666682733,-0.33974568726285925,132.27513227513228,8465.608465608466 +OA,1.9801980198019802,-4.5,-0.00986155596367332,0.13559638341542962,-0.5233297690633143,132.27513227513228,8465.608465608466 +OA,1.9801980198019802,-4.0,-0.011131627128859976,0.15739861948312395,-0.6412764634578828,132.27513227513228,8465.608465608466 +OA,1.9801980198019802,-3.5,-0.0068962543181636405,0.09745957158891393,-0.49896111047741065,132.27513227513228,8465.608465608466 +OA,1.9801980198019802,-3.0,-0.005070097545077045,0.07804661959261443,-0.5245574335094207,132.27513227513228,8465.608465608466 +OA,1.9801980198019802,-2.5,-0.0071369259239723645,0.10785030872307569,-0.692814993760555,132.27513227513228,8465.608465608466 +OA,1.9801980198019802,-2.0,-0.0069555749743940125,0.11095494221132299,-0.8111221299992457,132.27513227513228,8465.608465608466 +OA,1.9801980198019802,-1.5,-0.006626710488693087,0.11201440818210484,-0.9247304260667393,132.27513227513228,8465.608465608466 +OA,1.9801980198019802,-1.0,-0.005248074873194263,0.10075149276814538,-1.0175271566338107,132.27513227513228,8465.608465608466 +OA,1.9801980198019802,-0.5,-0.006640890556306747,0.1276756269052987,-1.2467627330952464,132.27513227513228,8465.608465608466 +OA,1.9801980198019802,0.0,-0.006072169208056507,0.12592325651730474,-1.387606707686675,132.27513227513228,8465.608465608466 +OA,1.9801980198019802,0.5,-0.005433193142837128,0.12280861846379305,-1.5470625579372346,132.27513227513228,8465.608465608466 +OA,1.9801980198019802,1.0,-0.011773758008631433,0.23087042477292913,-2.1530204556603536,132.27513227513228,8465.608465608466 +OA,1.9801980198019802,1.5,-0.018192947745770207,0.32104287833797995,-2.696068591060742,132.27513227513228,8465.608465608466 +OA,1.9801980198019802,2.0,-0.02253241007623901,0.38798453455774684,-3.2946052150784064,132.27513227513228,8465.608465608466 +OA,1.9801980198019802,2.5,0.028291058300166858,-0.32886089083966497,-1.2566188168733996,132.27513227513228,8465.608465608466 +OA,1.9801980198019802,3.0,0.11012480881400837,-1.4841463710676115,2.0870345204764056,132.27513227513228,8465.608465608466 +OA,1.9801980198019802,3.5,0.2933263581586782,-4.171187463179912,10.617139948002976,132.27513227513228,8465.608465608466 +OA,1.9801980198019802,4.0,0.46262941393431045,-6.746356311596436,18.86310173240393,132.27513227513228,8465.608465608466 +OA,1.9801980198019802,4.5,0.4626210654096412,-6.746231746136692,18.169529457640188,132.27513227513228,8465.608465608466 +OA,2.0,-9.5,0.061487938447750294,-0.9165780249942099,1.7242230091432904,132.27513227513228,8465.608465608466 +OA,2.0,-9.0,0.039807567593412196,-0.5846289589660456,1.207736524594484,132.27513227513228,8465.608465608466 +OA,2.0,-8.5,0.022068034770426022,-0.3112761788420511,0.4962372181173077,132.27513227513228,8465.608465608466 +OA,2.0,-8.0,0.01956328068686661,-0.26618658814039486,0.5186321358557924,132.27513227513228,8465.608465608466 +OA,2.0,-7.5,0.00957250989674047,-0.12423719853222095,0.18097115343585818,132.27513227513228,8465.608465608466 +OA,2.0,-7.0,0.013830846883911462,-0.1948826448606255,0.5707072231528694,132.27513227513228,8465.608465608466 +OA,2.0,-6.5,0.000650637596391173,-0.0021697776686354043,-0.06713675065311278,132.27513227513228,8465.608465608466 +OA,2.0,-6.0,-0.0003400576260776374,0.01247787188285137,-0.10557881936091851,132.27513227513228,8465.608465608466 +OA,2.0,-5.5,-0.004635032144540587,0.07220563173095765,-0.32449092560817955,132.27513227513228,8465.608465608466 +OA,2.0,-5.0,0.0006817737189867052,-0.008951258380478916,-0.06884357881707176,132.27513227513228,8465.608465608466 +OA,2.0,-4.5,-0.0034092410574315017,0.057867755928867295,-0.39335957002621796,132.27513227513228,8465.608465608466 +OA,2.0,-4.0,-0.006530641037170449,0.10699826461975528,-0.6414411298577856,132.27513227513228,8465.608465608466 +OA,2.0,-3.5,-0.0029368358516658442,0.058527856568600115,-0.5668836879833117,132.27513227513228,8465.608465608466 +OA,2.0,-3.0,0.001972276367726705,-0.008540356550337221,-0.43732687382492136,132.27513227513228,8465.608465608466 +OA,2.0,-2.5,-0.00470956430200364,0.09637078640511498,-0.9281102492707987,132.27513227513228,8465.608465608466 +OA,2.0,-2.0,-0.004673681639969186,0.09842127435720496,-1.0578321190812665,132.27513227513228,8465.608465608466 +OA,2.0,-1.5,-0.006806720975874475,0.1356467455774234,-1.3264728196371296,132.27513227513228,8465.608465608466 +OA,2.0,-1.0,-0.016468179706511238,0.2902956919688636,-2.0459890195014676,132.27513227513228,8465.608465608466 +OA,2.0,-0.5,-0.015034157531088721,0.2809587121537625,-2.2401435204172016,132.27513227513228,8465.608465608466 +OA,2.0,0.0,-0.0229884679778065,0.40395503913444364,-2.8811593579809456,132.27513227513228,8465.608465608466 +OA,2.0,0.5,-0.023414752323321283,0.41645248295222215,-3.209337859018792,132.27513227513228,8465.608465608466 +OA,2.0,1.0,-0.013279120460822497,0.26816810096043303,-3.046251483167958,132.27513227513228,8465.608465608466 +OA,2.0,1.5,-0.015776910475982363,0.28893993754046876,-3.640303237715567,132.27513227513228,8465.608465608466 +OA,2.0,2.0,-0.1478936962123057,2.04037842446443,-10.475579993938716,132.27513227513228,8465.608465608466 +OA,2.0,2.5,0.15523621783767955,-2.3179440294888574,3.137803639701356,132.27513227513228,8465.608465608466 +OA,2.0202020202020203,-10.5,0.2990706073406192,-4.309755435960611,11.407982551977243,132.27513227513228,8465.608465608466 +OA,2.0202020202020203,-10.0,-0.011197236144176434,0.13333793516324557,-2.202940697258808,132.27513227513228,8465.608465608466 +OA,2.0202020202020203,-9.5,0.003411972612902868,-0.048239357924725036,-0.9343802428602985,132.27513227513228,8465.608465608466 +OA,2.0202020202020203,-9.0,0.014083980463343058,-0.19283102827477755,-0.06330223518350311,132.27513227513228,8465.608465608466 +OA,2.0202020202020203,-8.5,0.011794452629740174,-0.16323183879195718,0.0855519741027729,132.27513227513228,8465.608465608466 +OA,2.0202020202020203,-8.0,-0.0005033115238277062,0.0284042477308721,-0.44199469581958706,132.27513227513228,8465.608465608466 +OA,2.0202020202020203,-7.5,-0.005271636854635284,0.09113556377364997,-0.53819259803576,132.27513227513228,8465.608465608466 +OA,2.0202020202020203,-7.0,-0.0036669571634396526,0.06381808848743166,-0.3546830331902482,132.27513227513228,8465.608465608466 +OA,2.0202020202020203,-6.5,-0.01356110085815353,0.2073295138366941,-0.8441994845346238,132.27513227513228,8465.608465608466 +OA,2.0202020202020203,-6.0,-0.007905696184448044,0.12335068219447548,-0.5664463058385582,132.27513227513228,8465.608465608466 +OA,2.0202020202020203,-5.5,-0.008511529534615796,0.13592958613035683,-0.6879886704004722,132.27513227513228,8465.608465608466 +OA,2.0202020202020203,-5.0,-0.005083976359322723,0.08891323678452778,-0.6082705576762106,132.27513227513228,8465.608465608466 +OA,2.0202020202020203,-4.5,-0.005009015422945242,0.08891720510199366,-0.698413787619198,132.27513227513228,8465.608465608466 +OA,2.0202020202020203,-4.0,-0.007778227580808525,0.13574569494718455,-0.9822310855717306,132.27513227513228,8465.608465608466 +OA,2.0202020202020203,-3.5,-0.008485892404872294,0.14931109443578824,-1.142573359242697,132.27513227513228,8465.608465608466 +OA,2.0202020202020203,-3.0,-0.006147675058290211,0.12088128124212844,-1.1867732340155928,132.27513227513228,8465.608465608466 +OA,2.0202020202020203,-2.5,-0.013967834980482988,0.2452024369143384,-1.7891432890090013,132.27513227513228,8465.608465608466 +OA,2.0202020202020203,-2.0,-0.019622297981893244,0.3311928700183011,-2.245316803657029,132.27513227513228,8465.608465608466 +OA,2.0202020202020203,-1.5,-0.017391501579918964,0.30380722714692,-2.35955781102568,132.27513227513228,8465.608465608466 +OA,2.0202020202020203,-1.0,-0.02062374285496881,0.3552134012609961,-2.7696511458359416,132.27513227513228,8465.608465608466 +OA,2.0202020202020203,-0.5,-0.01361891488819067,0.26789911122191923,-2.7996650405872376,132.27513227513228,8465.608465608466 +OA,2.0202020202020203,0.0,-0.005020869794537128,0.15718806410290392,-2.826356348480363,132.27513227513228,8465.608465608466 +OA,2.0202020202020203,0.5,0.07355175889957462,-0.9654926488495547,0.5340489053917584,132.27513227513228,8465.608465608466 +OA,2.0202020202020203,1.0,0.226128599146387,-3.1784359847652874,7.4703882785046005,132.27513227513228,8465.608465608466 +OA,2.0202020202020203,1.5,0.4044823859324853,-5.862048778314234,16.233943691605987,132.27513227513228,8465.608465608466 +OA,2.0202020202020203,2.0,0.509138986248667,-7.643477299951575,21.79148472226394,132.27513227513228,8465.608465608466 +OA,2.0202020202020203,2.5,0.5091268063792511,-7.643294299174277,21.097699554803363,132.27513227513228,8465.608465608466 +OA,2.0408163265306123,-10.5,0.04665219281261533,-0.6454441180851156,0.03263474323484631,132.27513227513228,8465.608465608466 +OA,2.0408163265306123,-10.0,0.019099597498518514,-0.2645220263662767,-0.4174241241537613,132.27513227513228,8465.608465608466 +OA,2.0408163265306123,-9.5,0.005235740169950081,-0.053569438994223825,-0.7584274382917823,132.27513227513228,8465.608465608466 +OA,2.0408163265306123,-9.0,0.003961990712807438,-0.03389748044018416,-0.5381624959583258,132.27513227513228,8465.608465608466 +OA,2.0408163265306123,-8.5,0.00020125590231867497,0.016454690317928483,-0.5053214114280213,132.27513227513228,8465.608465608466 +OA,2.0408163265306123,-8.0,0.00220803290695145,-0.010344284030235695,-0.28156021931014485,132.27513227513228,8465.608465608466 +OA,2.0408163265306123,-7.5,-0.007428589974645501,0.12212064716790172,-0.643773725654591,132.27513227513228,8465.608465608466 +OA,2.0408163265306123,-7.0,-0.00474758965555689,0.07897929555452932,-0.44260394159232197,132.27513227513228,8465.608465608466 +OA,2.0408163265306123,-6.5,-0.0018859105567004767,0.03696467155785077,-0.3410325292284293,132.27513227513228,8465.608465608466 +OA,2.0408163265306123,-6.0,0.00456465776206454,-0.048027060110007166,-0.14951554327515132,132.27513227513228,8465.608465608466 +OA,2.0408163265306123,-5.5,-0.0005336793035231178,0.03551513176011985,-0.5674438078172572,132.27513227513228,8465.608465608466 +OA,2.0408163265306123,-5.0,-0.0030238301682671814,0.07968915884297775,-0.8541344889641924,132.27513227513228,8465.608465608466 +OA,2.0408163265306123,-4.5,-0.009922567221557405,0.18520481190805135,-1.3520811172157303,132.27513227513228,8465.608465608466 +OA,2.0408163265306123,-4.0,-0.0090103761133732,0.17618498740503247,-1.4777989162038505,132.27513227513228,8465.608465608466 +OA,2.0408163265306123,-3.5,-0.016833052536051163,0.3006575479747031,-2.0995939067854223,132.27513227513228,8465.608465608466 +OA,2.0408163265306123,-3.0,-0.01448988857128434,0.2608509798775027,-2.1069826820896234,132.27513227513228,8465.608465608466 +OA,2.0408163265306123,-2.5,-0.02957900590491084,0.5005819745936668,-3.211030012420169,132.27513227513228,8465.608465608466 +OA,2.0408163265306123,-2.0,-0.028003456004419627,0.4816925189149375,-3.405615427330517,132.27513227513228,8465.608465608466 +OA,2.0408163265306123,-1.5,-0.026787536342422168,0.4527585666612057,-3.595844785623686,132.27513227513228,8465.608465608466 +OA,2.0408163265306123,-1.0,-0.032220329162903905,0.519545180822414,-4.288423351359377,132.27513227513228,8465.608465608466 +OA,2.0408163265306123,-0.5,-0.019906573451412994,0.3562673120421982,-4.536127386826061,132.27513227513228,8465.608465608466 +OA,2.0618556701030926,-11.5,0.5142824979845533,-7.5972805091087885,22.120642103703744,132.27513227513228,8465.608465608466 +OA,2.0618556701030926,-11.0,0.07346891021135829,-1.0696874250797639,0.5893113038774831,132.27513227513228,8465.608465608466 +OA,2.0618556701030926,-10.5,-0.012718073434990863,0.1999959846383212,-2.428325301781116,132.27513227513228,8465.608465608466 +OA,2.0618556701030926,-10.0,-0.021663326945095547,0.34007999122056143,-2.4029540601938777,132.27513227513228,8465.608465608466 +OA,2.0618556701030926,-9.5,-0.026779213463322384,0.4042560702185515,-2.2744205701782514,132.27513227513228,8465.608465608466 +OA,2.0618556701030926,-9.0,-0.025912320448794487,0.39084543716095554,-2.003939847962661,132.27513227513228,8465.608465608466 +OA,2.0618556701030926,-8.5,-0.022042032588210934,0.3288107428695983,-1.6294333746966339,132.27513227513228,8465.608465608466 +OA,2.0618556701030926,-8.0,-0.012542009440180843,0.1838362678184463,-0.9888485371204068,132.27513227513228,8465.608465608466 +OA,2.0618556701030926,-7.5,-0.011394456918350782,0.16251329006781592,-0.8653410703521627,132.27513227513228,8465.608465608466 +OA,2.0618556701030926,-7.0,-0.009897927721825454,0.15575569564183644,-0.900992320600585,132.27513227513228,8465.608465608466 +OA,2.0618556701030926,-6.5,-0.008789034143613199,0.14703747393700392,-0.9844478011886326,132.27513227513228,8465.608465608466 +OA,2.0618556701030926,-6.0,-0.004038696520242675,0.08345177162605107,-0.8798353490838418,132.27513227513228,8465.608465608466 +OA,2.0618556701030926,-5.5,-0.005165920593744263,0.1084577300044208,-1.1235650530882602,132.27513227513228,8465.608465608466 +OA,2.0618556701030926,-5.0,-0.012948493256057013,0.23734576067962176,-1.7680274144964003,132.27513227513228,8465.608465608466 +OA,2.0618556701030926,-4.5,-0.0192305724157035,0.3355042186539632,-2.2935918812317233,132.27513227513228,8465.608465608466 +OA,2.0618556701030926,-4.0,-0.018528128920433456,0.32523437644298725,-2.449482961356801,132.27513227513228,8465.608465608466 +OA,2.0618556701030926,-3.5,-0.02011188141613286,0.346828892146237,-2.736744963919956,132.27513227513228,8465.608465608466 +OA,2.0618556701030926,-3.0,-0.012403999101269835,0.22081029329854396,-2.5264139401208734,132.27513227513228,8465.608465608466 +OA,2.0618556701030926,-2.5,-0.001255425749919666,0.09298560088772398,-2.515754711466999,132.27513227513228,8465.608465608466 +OA,2.0618556701030926,-2.0,0.06406384287472265,-0.8345571031122575,0.15416904161505957,132.27513227513228,8465.608465608466 +OA,2.0618556701030926,-1.5,0.16402899506617113,-2.2883039159683793,4.6108962880727375,132.27513227513228,8465.608465608466 +OA,2.0618556701030926,-1.0,0.3483427395471168,-5.038579128133392,13.553535980118834,132.27513227513228,8465.608465608466 +OA,2.0618556701030926,-0.5,0.4409813769675542,-6.434278500689352,17.741565165514185,132.27513227513228,8465.608465608466 +OA,2.0833333333333335,-11.5,0.4737792594570278,-6.984669811571379,20.670662710676766,132.27513227513228,8465.608465608466 +OA,2.0833333333333335,-11.0,-0.009312726382950071,0.1354978701469084,-2.7234166315204402,132.27513227513228,8465.608465608466 +OA,2.0833333333333335,-10.5,-0.030747588663218764,0.47421154310778113,-3.209886443384737,132.27513227513228,8465.608465608466 +OA,2.0833333333333335,-10.0,-0.025956754568005454,0.4103124136563831,-2.5906545939716246,132.27513227513228,8465.608465608466 +OA,2.0833333333333335,-9.5,-0.037251348008557034,0.557007127908778,-2.82116855902697,132.27513227513228,8465.608465608466 +OA,2.0833333333333335,-9.0,-0.025998764745409603,0.375986387819663,-1.98077207071577,132.27513227513228,8465.608465608466 +OA,2.0833333333333335,-8.5,-0.012967790360871409,0.17209264794714724,-1.1403473752338558,132.27513227513228,8465.608465608466 +OA,2.0833333333333335,-8.0,-0.00014598198765706946,-0.01423384328412394,-0.4457923646727736,132.27513227513228,8465.608465608466 +OA,2.0833333333333335,-7.5,-0.006655338709596026,0.09314748299556455,-0.8613336789193728,132.27513227513228,8465.608465608466 +OA,2.0833333333333335,-7.0,-0.00708705642023086,0.12355117213167058,-1.0844749649406276,132.27513227513228,8465.608465608466 +OA,2.0833333333333335,-6.5,-0.012953297677719453,0.21688820989018953,-1.5618490078574196,132.27513227513228,8465.608465608466 +OA,2.0833333333333335,-6.0,-0.02290877861447828,0.3847392949463366,-2.3896873422583145,132.27513227513228,8465.608465608466 +OA,2.0833333333333335,-5.5,-0.02556063030959449,0.43736315692274486,-2.805015400366363,132.27513227513228,8465.608465608466 +OA,2.0833333333333335,-5.0,-0.038143500648032104,0.638249945914209,-3.768041134159558,132.27513227513228,8465.608465608466 +OA,2.0833333333333335,-4.5,-0.03400324860164262,0.5692756660907083,-3.752661980345537,132.27513227513228,8465.608465608466 +OA,2.0833333333333335,-4.0,-0.0388239617257651,0.6357173143527766,-4.314060362665915,132.27513227513228,8465.608465608466 +OA,2.0833333333333335,-3.5,-0.04651568186728374,0.7311050924074836,-5.067578047253333,132.27513227513228,8465.608465608466 +OA,2.0833333333333335,-3.0,-0.07537949326694095,1.0047404063615946,-6.380630475190877,132.27513227513228,8465.608465608466 +OA,2.0833333333333335,-2.5,0.07909647209781726,-1.1620158116779318,-0.302346289949984,132.27513227513228,8465.608465608466 +OA,2.1052631578947367,-11.5,0.11079744120728496,-1.6511370262369245,2.662084063147901,132.27513227513228,8465.608465608466 +OA,2.1052631578947367,-11.0,-0.08177717636005376,1.1175712704593663,-5.707481260278797,132.27513227513228,8465.608465608466 +OA,2.1052631578947367,-10.5,-0.08194852527322626,1.1313916405725517,-5.273754503210319,132.27513227513228,8465.608465608466 +OA,2.1052631578947367,-10.0,-0.05135988330824359,0.6908704217481371,-3.4710209019471208,132.27513227513228,8465.608465608466 +OA,2.1052631578947367,-9.5,-0.044087340274348435,0.5797268015712724,-2.932483379373177,132.27513227513228,8465.608465608466 +OA,2.1052631578947367,-9.0,-0.026830524164923597,0.3422992877600647,-2.091688620115984,132.27513227513228,8465.608465608466 +OA,2.1052631578947367,-8.5,-0.01935661348354349,0.24856888286858092,-1.7500192165070918,132.27513227513228,8465.608465608466 +OA,2.1052631578947367,-8.0,-0.007839736135583577,0.09194444957424172,-1.1885651202326284,132.27513227513228,8465.608465608466 +OA,2.1052631578947367,-7.5,-0.013704735749221316,0.1928752957502331,-1.589808057516752,132.27513227513228,8465.608465608466 +OA,2.1052631578947367,-7.0,-0.009706498483142298,0.1652247605958862,-1.6466967094880478,132.27513227513228,8465.608465608466 +OA,2.1052631578947367,-6.5,-0.01885169737942782,0.3137016782226986,-2.4127488059981443,132.27513227513228,8465.608465608466 +OA,2.1052631578947367,-6.0,-0.021226087688543477,0.3542510479723865,-2.808305314063533,132.27513227513228,8465.608465608466 +OA,2.1052631578947367,-5.5,-0.009001627670465775,0.19328031135540152,-2.578452454975415,132.27513227513228,8465.608465608466 +OA,2.1052631578947367,-5.0,-0.0007179469951159524,0.10132858953616075,-2.70349338221816,132.27513227513228,8465.608465608466 +OA,2.1052631578947367,-4.5,0.06427929429824694,-0.8422641755999626,0.15519261698549772,132.27513227513228,8465.608465608466 +OA,2.1052631578947367,-4.0,0.1551234571507467,-2.1554059847519946,4.088132850635338,132.27513227513228,8465.608465608466 +OA,2.1052631578947367,-3.5,0.29898933221435636,-4.285586754505632,10.811439226265868,132.27513227513228,8465.608465608466 +OA,2.1052631578947367,-3.0,0.5018280450791321,-7.488593133818416,21.676356050213407,132.27513227513228,8465.608465608466 +OA,2.1052631578947367,-2.5,0.501819741216395,-7.488471077170557,20.98279635883304,132.27513227513228,8465.608465608466 +OA,2.127659574468085,-11.5,-0.04003578148823363,0.45903432996549864,-4.0222588444480305,132.27513227513228,8465.608465608466 +OA,2.127659574468085,-11.0,-0.05500765133514293,0.6573875017132115,-3.8925625891935445,132.27513227513228,8465.608465608466 +OA,2.127659574468085,-10.5,-0.04062848914478618,0.3630430716676755,-2.370405035854902,132.27513227513228,8465.608465608466 +OA,2.127659574468085,-10.0,-0.018781496229244393,0.030981969658689202,-1.0960588057905132,132.27513227513228,8465.608465608466 +OA,2.127659574468085,-9.5,-0.009059910976340596,-0.07554482065972296,-0.8680840179668067,132.27513227513228,8465.608465608466 +OA,2.127659574468085,-9.0,-0.018504285309834535,0.09827853149804774,-1.5926306688593344,132.27513227513228,8465.608465608466 +OA,2.127659574468085,-8.5,-0.001264366922240378,-0.0929463768156596,-1.0337580486775058,132.27513227513228,8465.608465608466 +OA,2.127659574468085,-8.0,-0.013548655218999863,0.1406990839833483,-1.9263284309526296,132.27513227513228,8465.608465608466 +OA,2.127659574468085,-7.5,-0.041771281881136865,0.589868511116632,-3.588079888342091,132.27513227513228,8465.608465608466 +OA,2.127659574468085,-7.0,-0.018754200633804972,0.2956938501341737,-2.7825110170054237,132.27513227513228,8465.608465608466 +OA,2.127659574468085,-6.5,-0.016862478415620108,0.2528116322180781,-2.9639086934387064,132.27513227513228,8465.608465608466 +OA,2.127659574468085,-6.0,-0.043806652931940145,0.598405244179871,-4.5720718121895425,132.27513227513228,8465.608465608466 +OA,2.127659574468085,-5.5,-0.024002997969323515,0.30021297981372785,-4.214613115002694,132.27513227513228,8465.608465608466 +OA,2.127659574468085,-5.0,-5.928769622368281,75.81896158550556,-246.5173385067794,132.27513227513228,8465.608465608466 +OA,2.150537634408602,-12.0,-0.7967116088607202,7.891461183495087,-24.087648797380695,132.27513227513228,8465.608465608466 +OA,2.150537634408602,-11.5,-0.0416353877004874,0.32888303128278196,-3.4505116828401414,132.27513227513228,8465.608465608466 +OA,2.150537634408602,-11.0,0.06436593623427123,-1.164004823157064,1.9709021311584494,132.27513227513228,8465.608465608466 +OA,2.150537634408602,-10.5,0.17313933043967153,-2.7763576528812024,7.603558423225532,132.27513227513228,8465.608465608466 +OA,2.150537634408602,-10.0,0.2777481904895974,-4.349574782703369,13.198945900376092,132.27513227513228,8465.608465608466 +OA,2.150537634408602,-9.5,0.3110127464090118,-4.795801485780171,14.526150159556291,132.27513227513228,8465.608465608466 +OA,2.150537634408602,-9.0,0.2811134313700628,-4.3021120699722815,12.609442812610293,132.27513227513228,8465.608465608466 +OA,2.150537634408602,-8.5,0.2435838407907483,-3.6808686543780844,10.360267817781185,132.27513227513228,8465.608465608466 +OA,2.150537634408602,-8.0,0.1619265067240186,-2.414209722658227,5.903546590366954,132.27513227513228,8465.608465608466 +OA,2.150537634408602,-7.5,0.07823860982132486,-1.149184814477684,1.4879528060112444,132.27513227513228,8465.608465608466 +OA,2.150537634408602,-7.0,0.13029453000973484,-1.8562024754190307,3.592068094821773,132.27513227513228,8465.608465608466 +OA,2.150537634408602,-6.5,0.2457007458777329,-3.5510947606323855,8.876724451501143,132.27513227513228,8465.608465608466 +OA,2.150537634408602,-6.0,0.38398134264548966,-5.660953366534557,15.711145218515803,132.27513227513228,8465.608465608466 +OA,2.150537634408602,-5.5,0.48838776113612636,-7.249815160690407,20.66959726180556,132.27513227513228,8465.608465608466 +OA,2.1739130434782608,-12.0,-51.40129075953073,583.3229979439424,-1735.2234026783772,132.27513227513228,8465.608465608466 +SG,1.6260162601626016,2.0,0.10095968293742119,-1.5156033881223827,-3.271006283738421,211.64021164021165,8465.608465608466 +SG,1.639344262295082,2.0,0.10192659255030372,-2.4360014273976907,2.8768393397581056,211.64021164021165,8465.608465608466 +SG,1.6528925619834711,1.5,-0.23395949589124843,3.8604951578199964,-22.381671910730212,211.64021164021165,8465.608465608466 +SG,1.6528925619834711,2.0,-0.10068379408372453,1.7217041378664537,-13.781579005944533,211.64021164021165,8465.608465608466 +SG,1.6528925619834711,2.5,0.04294651638307319,-0.6195890144521525,-4.63475358903087,211.64021164021165,8465.608465608466 +SG,1.6666666666666667,1.5,-0.006778863115443333,0.27511423891161674,-7.718130791817849,211.64021164021165,8465.608465608466 +SG,1.6666666666666667,2.0,-0.02390938606055719,0.5708278957796116,-8.362924508769398,211.64021164021165,8465.608465608466 +SG,1.680672268907563,1.0,-1.319126503299012,20.83466185099604,-88.21654752441799,211.64021164021165,8465.608465608466 +SG,1.680672268907563,1.5,0.16074137810518652,-2.4894166641137536,3.8177732219695564,211.64021164021165,8465.608465608466 +SG,1.680672268907563,2.0,-0.6497145577053798,9.70119958561726,-42.368444573052116,211.64021164021165,8465.608465608466 +SG,1.680672268907563,2.5,-2.1488329442559797,34.07861342388209,-141.69757603396226,211.64021164021165,8465.608465608466 +SG,1.694915254237288,0.5,-0.9656936002363492,15.705764929467843,-69.83807384115735,211.64021164021165,8465.608465608466 +SG,1.694915254237288,1.0,-0.08164388704838266,1.4687158349676497,-11.725299691505013,211.64021164021165,8465.608465608466 +SG,1.694915254237288,1.5,-0.004411841129340188,0.09088088666802144,-6.375344777901671,211.64021164021165,8465.608465608466 +SG,1.694915254237288,2.0,-0.7186899290650213,11.244524406131116,-51.60557371929611,211.64021164021165,8465.608465608466 +SG,1.694915254237288,2.5,0.4555082525955507,-6.998830143396916,18.471587927558353,211.64021164021165,8465.608465608466 +SG,1.694915254237288,3.5,-6.848172348111069,89.88455069115992,-299.16188675171105,211.64021164021165,8465.608465608466 +SG,1.694915254237288,4.0,-2.6831271957405773,35.91844662310213,-124.5575372549336,211.64021164021165,8465.608465608466 +SG,1.694915254237288,4.5,-2.70027823197902,36.31462920858786,-127.29143000460894,211.64021164021165,8465.608465608466 +SG,1.7094017094017093,0.0,-0.9738627402389317,15.616166367737485,-67.98477661742231,211.64021164021165,8465.608465608466 +SG,1.7094017094017093,0.5,0.021947154618725186,-0.1959407461095798,-5.208572397632497,211.64021164021165,8465.608465608466 +SG,1.7094017094017093,1.0,-0.11927652827322338,1.8455614711528732,-12.612949555761602,211.64021164021165,8465.608465608466 +SG,1.7094017094017093,1.5,-1.2678870084604814,20.517302422787814,-86.34643432077979,211.64021164021165,8465.608465608466 +SG,1.7094017094017093,2.0,-1.136353055766099,18.52689490620097,-78.24356969027838,211.64021164021165,8465.608465608466 +SG,1.7094017094017093,2.5,-0.3510052247653188,5.705667237352399,-25.638824219313292,211.64021164021165,8465.608465608466 +SG,1.7094017094017093,3.0,-0.07253447878515348,1.2557537145958557,-7.507378100607035,211.64021164021165,8465.608465608466 +SG,1.7094017094017093,3.5,-0.05706226688961288,0.783738924371215,-4.954353587339111,211.64021164021165,8465.608465608466 +SG,1.7094017094017093,4.0,-0.28707448598597013,3.751617908142844,-14.668735563303073,211.64021164021165,8465.608465608466 +SG,1.7094017094017093,4.5,-0.3434205648002093,4.472028299173237,-17.696164812005204,211.64021164021165,8465.608465608466 +SG,1.7241379310344827,-0.5,-2.4852998524823127,39.856525218681426,-164.7697556230133,211.64021164021165,8465.608465608466 +SG,1.7241379310344827,0.0,-0.0273290078342915,0.5603891399380108,-7.261706788507624,211.64021164021165,8465.608465608466 +SG,1.7241379310344827,0.5,0.15496444702302398,-2.334688962390776,4.2621540808908716,211.64021164021165,8465.608465608466 +SG,1.7241379310344827,1.0,-0.003995573087477736,0.033487062913265704,-5.256149019425472,211.64021164021165,8465.608465608466 +SG,1.7241379310344827,1.5,-0.7358760111763782,11.781406873668775,-50.00522163385075,211.64021164021165,8465.608465608466 +SG,1.7241379310344827,2.0,-0.053812363636778666,0.9816759012811103,-6.429838561187456,211.64021164021165,8465.608465608466 +SG,1.7241379310344827,2.5,0.04368210829814432,-0.6368034788818475,0.783716024300964,211.64021164021165,8465.608465608466 +SG,1.7241379310344827,3.0,-0.051260326261799716,0.759950762748633,-4.196436119366444,211.64021164021165,8465.608465608466 +SG,1.7241379310344827,3.5,-0.09338174808385924,1.249666564995164,-5.782759622824599,211.64021164021165,8465.608465608466 +SG,1.7241379310344827,4.0,-0.243433398158961,3.216976304547889,-12.579518933097408,211.64021164021165,8465.608465608466 +SG,1.7241379310344827,4.5,-0.34401082608293615,4.531325378253005,-17.478972878720022,211.64021164021165,8465.608465608466 +SG,1.7241379310344827,5.0,-0.6941596851359657,8.489132127582671,-30.139535380476282,211.64021164021165,8465.608465608466 +SG,1.7391304347826086,-0.5,-0.6524244335205429,10.528580573111778,-46.65836182064375,211.64021164021165,8465.608465608466 +SG,1.7391304347826086,0.0,0.028442269650269025,-0.4025125770373136,-1.9854766733309734,211.64021164021165,8465.608465608466 +SG,1.7391304347826086,0.5,-0.5219668829499169,8.556998936890622,-37.60099292471253,211.64021164021165,8465.608465608466 +SG,1.7391304347826086,1.0,-0.7370993598684665,11.721073738145765,-48.52117508206452,211.64021164021165,8465.608465608466 +SG,1.7391304347826086,1.5,0.005567045124081137,0.032733691558353484,-2.142312984605449,211.64021164021165,8465.608465608466 +SG,1.7391304347826086,2.0,0.045739305367303335,-0.7199825810540619,1.6590977683321486,211.64021164021165,8465.608465608466 +SG,1.7391304347826086,2.5,0.01605358236792548,-0.3173726281267567,0.39518919262946406,211.64021164021165,8465.608465608466 +SG,1.7391304347826086,3.0,-0.03568426690234959,0.4568002876094506,-2.6072592111559487,211.64021164021165,8465.608465608466 +SG,1.7391304347826086,3.5,-0.09225115702346492,1.2098796863602626,-5.363599311086056,211.64021164021165,8465.608465608466 +SG,1.7391304347826086,4.0,-0.17568721713353996,2.2563097939639123,-8.975603490757969,211.64021164021165,8465.608465608466 +SG,1.7391304347826086,4.5,-0.33690735498702373,4.3707050955976605,-16.3980862591281,211.64021164021165,8465.608465608466 +SG,1.7391304347826086,5.0,-0.59037249962667,7.371771491042132,-26.12669300175851,211.64021164021165,8465.608465608466 +SG,1.7543859649122806,-0.5,0.008069562611843745,-0.0006281881484975281,-4.057386492508137,211.64021164021165,8465.608465608466 +SG,1.7543859649122806,0.0,0.03331123291382162,-0.3759407687771956,-2.093906763195071,211.64021164021165,8465.608465608466 +SG,1.7543859649122806,0.5,-0.5285514363355472,8.400492120099942,-35.14067949879627,211.64021164021165,8465.608465608466 +SG,1.7543859649122806,1.0,0.004631617802109285,-0.009498111563208886,-1.3774212076298091,211.64021164021165,8465.608465608466 +SG,1.7543859649122806,1.5,0.025491401232457262,-0.41733890681766683,0.7645600055332309,211.64021164021165,8465.608465608466 +SG,1.7543859649122806,2.0,0.00792645306895641,-0.1664838976038358,0.004280350405907308,211.64021164021165,8465.608465608466 +SG,1.7543859649122806,2.5,-0.004449889348756126,0.007610215199505839,-0.6695949110258255,211.64021164021165,8465.608465608466 +SG,1.7543859649122806,3.0,-0.035968411970288584,0.45040166699603457,-2.4252176795094966,211.64021164021165,8465.608465608466 +SG,1.7543859649122806,3.5,-0.04829907531046301,0.5743554603894767,-2.9647612539661683,211.64021164021165,8465.608465608466 +SG,1.7543859649122806,4.0,-0.14913375800359582,1.9003634173436743,-7.586280813015054,211.64021164021165,8465.608465608466 +SG,1.7543859649122806,4.5,-0.3547934719386676,4.60159558627651,-16.874478503658434,211.64021164021165,8465.608465608466 +SG,1.7543859649122806,5.0,-0.6205871434621655,7.841931674504435,-27.38662635786656,211.64021164021165,8465.608465608466 +SG,1.7543859649122806,5.5,-0.26178345423577143,3.196861531800507,-14.154397833808051,211.64021164021165,8465.608465608466 +SG,1.7699115044247788,-1.0,-0.16587671696844625,2.753032083444591,-14.784965985979458,211.64021164021165,8465.608465608466 +SG,1.7699115044247788,-0.5,-0.16594803426337174,2.7864450879999785,-13.805005359591433,211.64021164021165,8465.608465608466 +SG,1.7699115044247788,0.0,-0.1290996293641925,2.2106023479456938,-10.753825422357838,211.64021164021165,8465.608465608466 +SG,1.7699115044247788,0.5,0.04024533410367473,-0.6139821537032568,1.3365109886726008,211.64021164021165,8465.608465608466 +SG,1.7699115044247788,1.0,0.025522272342641657,-0.45186670735937395,1.1362485938905271,211.64021164021165,8465.608465608466 +SG,1.7699115044247788,1.5,0.01265931156753887,-0.2525772476649687,0.44925731858735835,211.64021164021165,8465.608465608466 +SG,1.7699115044247788,2.0,0.006511665296377554,-0.15001820906655766,0.08884393220594346,211.64021164021165,8465.608465608466 +SG,1.7699115044247788,2.5,0.0046819298921015,-0.14375135555268687,0.0330324200577114,211.64021164021165,8465.608465608466 +SG,1.7699115044247788,3.0,-0.024560308294920882,0.2846040467370309,-1.7104535392218965,211.64021164021165,8465.608465608466 +SG,1.7699115044247788,3.5,-0.04456796432900343,0.5481400227026139,-2.815663594716952,211.64021164021165,8465.608465608466 +SG,1.7699115044247788,4.0,-0.09540966759038991,1.1910583736330378,-5.104476813666839,211.64021164021165,8465.608465608466 +SG,1.7699115044247788,4.5,-0.23367151744579706,2.975227387623214,-11.19728000352944,211.64021164021165,8465.608465608466 +SG,1.7699115044247788,5.0,-0.5248639142434222,6.721654558218367,-23.765086906689234,211.64021164021165,8465.608465608466 +SG,1.7699115044247788,5.5,-0.35046724529848194,4.33799521038002,-16.65852181334155,211.64021164021165,8465.608465608466 +SG,1.7857142857142858,-1.5,-0.5215871241550974,8.23105995387846,-35.896158423949544,211.64021164021165,8465.608465608466 +SG,1.7857142857142858,-1.0,-0.04732883078637149,0.690450598902389,-4.950242289614628,211.64021164021165,8465.608465608466 +SG,1.7857142857142858,-0.5,0.039449178674737795,-0.5336481279378693,0.5434761779199409,211.64021164021165,8465.608465608466 +SG,1.7857142857142858,0.0,0.014354491263735062,-0.2174413385738247,0.09134449459922181,211.64021164021165,8465.608465608466 +SG,1.7857142857142858,0.5,0.01306605193290376,-0.2385757869913112,0.3960314434867076,211.64021164021165,8465.608465608466 +SG,1.7857142857142858,1.0,0.0010574570771229815,-0.05864422709221719,-0.21889322386219565,211.64021164021165,8465.608465608466 +SG,1.7857142857142858,1.5,0.009824159649456848,-0.216627409734547,0.4703838656219356,211.64021164021165,8465.608465608466 +SG,1.7857142857142858,2.0,-0.003379876810368673,-0.0060112472495483784,-0.3243169305928605,211.64021164021165,8465.608465608466 +SG,1.7857142857142858,2.5,0.00041821406868597735,-0.06721231131223016,-0.1850508458621628,211.64021164021165,8465.608465608466 +SG,1.7857142857142858,3.0,-0.019416467151413177,0.23032303963500994,-1.4567274935866208,211.64021164021165,8465.608465608466 +SG,1.7857142857142858,3.5,-0.039647660123829434,0.4774127129853164,-2.419538178393249,211.64021164021165,8465.608465608466 +SG,1.7857142857142858,4.0,-0.06748098830253023,0.8302687838295322,-3.80830046184318,211.64021164021165,8465.608465608466 +SG,1.7857142857142858,4.5,-0.15180291445945862,1.8948711333038721,-7.455229109385322,211.64021164021165,8465.608465608466 +SG,1.7857142857142858,5.0,-0.43992317732597624,5.572983213866787,-19.590905777635307,211.64021164021165,8465.608465608466 +SG,1.7857142857142858,5.5,-0.3866902203001408,4.81414361813259,-17.649959481969958,211.64021164021165,8465.608465608466 +SG,1.7857142857142858,6.0,-2.893336670665846,35.80431807510648,-114.95501386778822,211.64021164021165,8465.608465608466 +SG,1.8018018018018018,-2.0,-1.2991614083274614,20.992335284993587,-86.36524826506161,211.64021164021165,8465.608465608466 +SG,1.8018018018018018,-1.5,-0.3531228560183729,5.525296060882596,-23.097994264404782,211.64021164021165,8465.608465608466 +SG,1.8018018018018018,-1.0,0.08333692073737839,-1.2885725070472773,3.9879588710880425,211.64021164021165,8465.608465608466 +SG,1.8018018018018018,-0.5,0.0451873406082542,-0.7429834930703647,2.3184817569544762,211.64021164021165,8465.608465608466 +SG,1.8018018018018018,0.0,0.0005002457290534199,-0.055302755847224334,-0.17312611084805324,211.64021164021165,8465.608465608466 +SG,1.8018018018018018,0.5,0.012978504987844898,-0.25766331679422344,0.6610235077880287,211.64021164021165,8465.608465608466 +SG,1.8018018018018018,1.0,0.004545685789511713,-0.11334028125771238,0.106098179542447,211.64021164021165,8465.608465608466 +SG,1.8018018018018018,1.5,0.006957423138016897,-0.15541960856446668,0.3021347709584018,211.64021164021165,8465.608465608466 +SG,1.8018018018018018,2.0,0.009852578877375477,-0.19647988611445338,0.45868119444198385,211.64021164021165,8465.608465608466 +SG,1.8018018018018018,2.5,0.009885903651860914,-0.21011870700834323,0.4462822106957336,211.64021164021165,8465.608465608466 +SG,1.8018018018018018,3.0,-0.00499408177947051,0.014476162769933184,-0.540383946395347,211.64021164021165,8465.608465608466 +SG,1.8018018018018018,3.5,-0.025500609240997674,0.2930228262406772,-1.6967538304239436,211.64021164021165,8465.608465608466 +SG,1.8018018018018018,4.0,-0.04903150349230438,0.5970566686404275,-2.9255478211645647,211.64021164021165,8465.608465608466 +SG,1.8018018018018018,4.5,-0.09409607138386311,1.157380783665436,-4.953540569338239,211.64021164021165,8465.608465608466 +SG,1.8018018018018018,5.0,-0.3195923362325438,4.077930682774074,-14.75027309560534,211.64021164021165,8465.608465608466 +SG,1.8018018018018018,5.5,-0.39022609070649295,4.9500747018593705,-17.970381039126135,211.64021164021165,8465.608465608466 +SG,1.8018018018018018,6.0,-0.8611922774921748,10.648839899322148,-36.121709175664506,211.64021164021165,8465.608465608466 +SG,1.8018018018018018,6.5,-1.9082036554061634,28.959585007051473,-116.00446036085069,211.64021164021165,8465.608465608466 +SG,1.8181818181818181,-2.5,-0.5161538155712837,8.371128712908366,-35.6733011567051,211.64021164021165,8465.608465608466 +SG,1.8181818181818181,-2.0,-0.031307768891021576,0.640546344295309,-4.0688232317879365,211.64021164021165,8465.608465608466 +SG,1.8181818181818181,-1.5,0.030371469565681007,-0.48308233997670824,1.244679378130213,211.64021164021165,8465.608465608466 +SG,1.8181818181818181,-1.0,0.0111366676886859,-0.20445638630982238,0.3803205593009513,211.64021164021165,8465.608465608466 +SG,1.8181818181818181,-0.5,0.010545720947422762,-0.21087655152549306,0.505345246642686,211.64021164021165,8465.608465608466 +SG,1.8181818181818181,0.0,0.010417746120869046,-0.20753093363269284,0.505978073707762,211.64021164021165,8465.608465608466 +SG,1.8181818181818181,0.5,0.004442114552439323,-0.12373760717290025,0.2597613890427469,211.64021164021165,8465.608465608466 +SG,1.8181818181818181,1.0,0.0007951905817264076,-0.06281493909165875,0.03784528386806606,211.64021164021165,8465.608465608466 +SG,1.8181818181818181,1.5,-0.0016868220925986069,-0.022992749599470327,-0.09722778334369164,211.64021164021165,8465.608465608466 +SG,1.8181818181818181,2.0,0.012145301401670514,-0.22994187396938442,0.6643735981120907,211.64021164021165,8465.608465608466 +SG,1.8181818181818181,2.5,0.0026066657119937315,-0.09024587747440226,0.06328197189273026,211.64021164021165,8465.608465608466 +SG,1.8181818181818181,3.0,-0.00831783346469931,0.05913473577831771,-0.587924195397366,211.64021164021165,8465.608465608466 +SG,1.8181818181818181,3.5,-0.011895853992632774,0.08734832444956356,-0.8113927410805,211.64021164021165,8465.608465608466 +SG,1.8181818181818181,4.0,-0.04326633541515865,0.5232820889892966,-2.540846194566096,211.64021164021165,8465.608465608466 +SG,1.8181818181818181,4.5,-0.0730616547034792,0.8885338122126398,-3.9406545672078774,211.64021164021165,8465.608465608466 +SG,1.8181818181818181,5.0,-0.19817956747357224,2.5020987007807944,-9.460973752654915,211.64021164021165,8465.608465608466 +SG,1.8181818181818181,5.5,-0.38429519971647763,4.903056203382766,-17.630893139882282,211.64021164021165,8465.608465608466 +SG,1.8181818181818181,6.0,-0.9433180435612916,12.163094895725973,-42.11243006080486,211.64021164021165,8465.608465608466 +SG,1.834862385321101,-3.5,-1.968530959338087,31.62678872299137,-128.6854810218361,211.64021164021165,8465.608465608466 +SG,1.834862385321101,-3.0,-0.5279780507626222,8.356110003056198,-34.36599538058728,211.64021164021165,8465.608465608466 +SG,1.834862385321101,-2.5,0.06009313686626844,-0.8967246593037939,2.4906820854539857,211.64021164021165,8465.608465608466 +SG,1.834862385321101,-2.0,0.03060273270917202,-0.5022390718403479,1.4807745513400945,211.64021164021165,8465.608465608466 +SG,1.834862385321101,-1.5,0.02271945900811497,-0.38582469762792093,1.140861784298865,211.64021164021165,8465.608465608466 +SG,1.834862385321101,-1.0,0.00444337111890026,-0.10647810590596038,0.15448332309550256,211.64021164021165,8465.608465608466 +SG,1.834862385321101,-0.5,0.003375412491551166,-0.09843517835148272,0.1612109145708796,211.64021164021165,8465.608465608466 +SG,1.834862385321101,0.0,0.013327165378565329,-0.24799294378560974,0.7476667470020706,211.64021164021165,8465.608465608466 +SG,1.834862385321101,0.5,0.0032780172352032803,-0.10840247736217976,0.29386239863704156,211.64021164021165,8465.608465608466 +SG,1.834862385321101,1.0,-0.0019895625909607155,-0.008636486556312656,-0.11145746018509489,211.64021164021165,8465.608465608466 +SG,1.834862385321101,1.5,-0.0037906987522385804,0.007393656342517641,-0.12597439494317272,211.64021164021165,8465.608465608466 +SG,1.834862385321101,2.0,0.004761117756785757,-0.11497752969302084,0.3141981477407221,211.64021164021165,8465.608465608466 +SG,1.834862385321101,2.5,0.009875268755163822,-0.2033619329697689,0.580997127986327,211.64021164021165,8465.608465608466 +SG,1.834862385321101,3.0,-0.007467857121866794,0.045904823970830476,-0.4466297802354888,211.64021164021165,8465.608465608466 +SG,1.834862385321101,3.5,-0.015440951853086016,0.1472173656991078,-0.9541458162368737,211.64021164021165,8465.608465608466 +SG,1.834862385321101,4.0,-0.028664079141507308,0.3310200560187393,-1.8034332482335156,211.64021164021165,8465.608465608466 +SG,1.834862385321101,4.5,-0.07113486177564317,0.9105016214814695,-4.038737714913034,211.64021164021165,8465.608465608466 +SG,1.834862385321101,5.0,-0.1033999875641375,1.2470959039575484,-5.2385649281198035,211.64021164021165,8465.608465608466 +SG,1.834862385321101,5.5,-0.3548482879050465,4.667146328264401,-17.36838386346971,211.64021164021165,8465.608465608466 +SG,1.834862385321101,6.0,-0.7244491967994192,9.481529951895494,-34.3931296665754,211.64021164021165,8465.608465608466 +SG,1.8518518518518519,-4.0,-32.03001158020569,413.5697014189947,-1337.449319627364,211.64021164021165,8465.608465608466 +SG,1.8518518518518519,-3.5,-0.021481616289751218,0.49805412031423957,-3.647034505896345,211.64021164021165,8465.608465608466 +SG,1.8518518518518519,-3.0,0.0012458852325749744,-0.020109563560875676,-0.43691491758577994,211.64021164021165,8465.608465608466 +SG,1.8518518518518519,-2.5,0.012752476023597237,-0.2255407298069424,0.5499031629684269,211.64021164021165,8465.608465608466 +SG,1.8518518518518519,-2.0,-0.0019806379130139226,0.00936290003248395,-0.30951486036727344,211.64021164021165,8465.608465608466 +SG,1.8518518518518519,-1.5,0.008249511119321085,-0.1575192094819522,0.38232969354065616,211.64021164021165,8465.608465608466 +SG,1.8518518518518519,-1.0,0.010090197810191905,-0.2076193512673814,0.6740455172310537,211.64021164021165,8465.608465608466 +SG,1.8518518518518519,-0.5,0.006521265131196597,-0.1459514123151528,0.4444700699909247,211.64021164021165,8465.608465608466 +SG,1.8518518518518519,0.0,0.010634634254474161,-0.20801943063258244,0.6975677166339775,211.64021164021165,8465.608465608466 +SG,1.8518518518518519,0.5,0.009934939465071197,-0.19303092142027392,0.6382231020570222,211.64021164021165,8465.608465608466 +SG,1.8518518518518519,1.0,0.002285936292655756,-0.08182386677357356,0.25584623879883933,211.64021164021165,8465.608465608466 +SG,1.8518518518518519,1.5,-0.0012938694339571636,-0.024754867803280244,0.05020244538563353,211.64021164021165,8465.608465608466 +SG,1.8518518518518519,2.0,0.001479540392382305,-0.0581511741867704,0.14380776811921836,211.64021164021165,8465.608465608466 +SG,1.8518518518518519,2.5,0.00559896256850503,-0.12429960649504097,0.3092089007340063,211.64021164021165,8465.608465608466 +SG,1.8518518518518519,3.0,5.217381239536992e-05,-0.04282296889841375,-0.1199156058010036,211.64021164021165,8465.608465608466 +SG,1.8518518518518519,3.5,0.0039113798438656835,-0.11195441666572334,-0.00644787138664467,211.64021164021165,8465.608465608466 +SG,1.8518518518518519,4.0,-0.011264860955775804,0.10553368746604969,-1.0189030029920605,211.64021164021165,8465.608465608466 +SG,1.8518518518518519,4.5,-0.03601601941909072,0.46851293449319187,-2.642631654418018,211.64021164021165,8465.608465608466 +SG,1.8518518518518519,5.0,-0.09641204544411097,1.2897513342261404,-5.836072922744055,211.64021164021165,8465.608465608466 +SG,1.8518518518518519,5.5,-0.17566857644189046,2.4120786505989065,-10.459986351221705,211.64021164021165,8465.608465608466 +SG,1.8518518518518519,6.0,-0.5297847578453592,7.688786266301001,-32.35573658233996,211.64021164021165,8465.608465608466 +SG,1.8691588785046729,-5.0,-2.8995046387328323,46.39781576980993,-186.81637195377152,211.64021164021165,8465.608465608466 +SG,1.8691588785046729,-4.5,-0.568439970983178,8.955818306051896,-36.62158783824219,211.64021164021165,8465.608465608466 +SG,1.8691588785046729,-4.0,0.0869807451929587,-1.3515282244904565,4.311966210518273,211.64021164021165,8465.608465608466 +SG,1.8691588785046729,-3.5,0.037943765061504306,-0.6262026051219114,2.039376060931133,211.64021164021165,8465.608465608466 +SG,1.8691588785046729,-3.0,0.009698714591447007,-0.17944328680461236,0.45292308564676054,211.64021164021165,8465.608465608466 +SG,1.8691588785046729,-2.5,0.007583417838131554,-0.14463296229033895,0.3566441405978147,211.64021164021165,8465.608465608466 +SG,1.8691588785046729,-2.0,-0.001442564701939258,-0.006686653292205054,-0.11604048362511685,211.64021164021165,8465.608465608466 +SG,1.8691588785046729,-1.5,-0.00027299255995932306,-0.027620122636044082,0.0005253251552253095,211.64021164021165,8465.608465608466 +SG,1.8691588785046729,-1.0,0.004475849497711168,-0.10900544076032997,0.35988701258735367,211.64021164021165,8465.608465608466 +SG,1.8691588785046729,-0.5,0.0018863175703303127,-0.06411211859381588,0.18609044632510957,211.64021164021165,8465.608465608466 +SG,1.8691588785046729,0.0,0.00323263325293688,-0.09113412104310639,0.3192471527733738,211.64021164021165,8465.608465608466 +SG,1.8691588785046729,0.5,0.0010852385481746165,-0.06561736326145984,0.25457028210597904,211.64021164021165,8465.608465608466 +SG,1.8691588785046729,1.0,6.389072623057558e-05,-0.0427358236121492,0.15331457925799644,211.64021164021165,8465.608465608466 +SG,1.8691588785046729,1.5,0.004810656926138974,-0.11617100997783968,0.419013798325219,211.64021164021165,8465.608465608466 +SG,1.8691588785046729,2.0,-0.0027191937475364624,-8.923454640889713e-05,-0.04015243205107738,211.64021164021165,8465.608465608466 +SG,1.8691588785046729,2.5,-0.010749855733065573,0.13654032589794218,-0.6796700575155511,211.64021164021165,8465.608465608466 +SG,1.8691588785046729,3.0,-0.004539107939917036,0.04516355915438617,-0.4694917058516658,211.64021164021165,8465.608465608466 +SG,1.8691588785046729,3.5,-0.007890617606796428,0.09517259335596275,-0.8346443176503331,211.64021164021165,8465.608465608466 +SG,1.8691588785046729,4.0,-0.022075999883633353,0.3225636597165793,-1.9587754682721674,211.64021164021165,8465.608465608466 +SG,1.8691588785046729,4.5,-0.02745325303393601,0.40832440961222183,-2.6221269010410384,211.64021164021165,8465.608465608466 +SG,1.8691588785046729,5.0,-0.044625574712897256,0.654627936065801,-3.979397192851266,211.64021164021165,8465.608465608466 +SG,1.8691588785046729,5.5,-0.12639119899200718,1.917506587766001,-9.622722252468892,211.64021164021165,8465.608465608466 +SG,1.8867924528301887,-5.5,-0.9645846447675641,15.22952288217693,-61.70286534238336,211.64021164021165,8465.608465608466 +SG,1.8867924528301887,-5.0,-0.031846009051629647,0.6613161150019875,-4.1060016957097165,211.64021164021165,8465.608465608466 +SG,1.8867924528301887,-4.5,0.02328561812973328,-0.3918112155463711,1.0790573328834587,211.64021164021165,8465.608465608466 +SG,1.8867924528301887,-4.0,0.0042905827675779815,-0.08918884650772915,0.06805611613075034,211.64021164021165,8465.608465608466 +SG,1.8867924528301887,-3.5,0.008056642774801427,-0.15056381205063185,0.3944463778684132,211.64021164021165,8465.608465608466 +SG,1.8867924528301887,-3.0,0.00933253468794741,-0.16779061525232747,0.49044130392840907,211.64021164021165,8465.608465608466 +SG,1.8867924528301887,-2.5,0.009724416011265745,-0.17744824654524055,0.5774674203863744,211.64021164021165,8465.608465608466 +SG,1.8867924528301887,-2.0,-0.00164407732392893,-0.007298421890829184,-0.01769732279968518,211.64021164021165,8465.608465608466 +SG,1.8867924528301887,-1.5,0.002369738375634647,-0.06693321389717691,0.2262176562176043,211.64021164021165,8465.608465608466 +SG,1.8867924528301887,-1.0,-0.0034825736514329762,0.014528580033781716,-0.03045192082960404,211.64021164021165,8465.608465608466 +SG,1.8867924528301887,-0.5,-0.007087504859472323,0.0806945448496438,-0.3112073411035372,211.64021164021165,8465.608465608466 +SG,1.8867924528301887,0.0,-0.005209463293530119,0.04826491820859777,-0.17966144804903678,211.64021164021165,8465.608465608466 +SG,1.8867924528301887,0.5,-0.007706091386198023,0.08634693123815201,-0.3417374395984168,211.64021164021165,8465.608465608466 +SG,1.8867924528301887,1.0,-0.01013850795611556,0.12171622750337421,-0.4974253100689572,211.64021164021165,8465.608465608466 +SG,1.8867924528301887,1.5,-0.00759004095451072,0.09188584010471704,-0.45389933834311225,211.64021164021165,8465.608465608466 +SG,1.8867924528301887,2.0,-0.016131892399146787,0.23280786193064082,-1.0637516171982824,211.64021164021165,8465.608465608466 +SG,1.8867924528301887,2.5,-0.012633365038644376,0.17406277493642994,-0.8899196371729597,211.64021164021165,8465.608465608466 +SG,1.8867924528301887,3.0,-0.013228222284240882,0.21074571812055387,-1.1969178372064646,211.64021164021165,8465.608465608466 +SG,1.8867924528301887,3.5,-0.008746365593658751,0.15600445794507406,-1.2035397866440682,211.64021164021165,8465.608465608466 +SG,1.8867924528301887,4.0,-0.01748039101917672,0.29783163301393356,-1.980916424429884,211.64021164021165,8465.608465608466 +SG,1.8867924528301887,4.5,-0.0025483473038688323,0.086801434041104,-1.6138845911992599,211.64021164021165,8465.608465608466 +SG,1.8867924528301887,5.0,-0.028134921027521475,0.5190725906415867,-3.9233108654092153,211.64021164021165,8465.608465608466 +SG,1.8867924528301887,5.5,-0.18932861563548692,3.200968497303937,-15.911633551596022,211.64021164021165,8465.608465608466 +SG,1.9047619047619047,-6.5,-6.952339883083882,110.54777700431512,-440.40597237306395,211.64021164021165,8465.608465608466 +SG,1.9047619047619047,-6.0,-0.6447169081642947,10.130941030991082,-40.995834057394106,211.64021164021165,8465.608465608466 +SG,1.9047619047619047,-5.5,0.04861504211525325,-0.7730814511104163,2.3238158331662424,211.64021164021165,8465.608465608466 +SG,1.9047619047619047,-5.0,0.019886744085568717,-0.342176905873566,1.0017109356668887,211.64021164021165,8465.608465608466 +SG,1.9047619047619047,-4.5,0.023284172712625492,-0.39346672145750095,1.3087606697517016,211.64021164021165,8465.608465608466 +SG,1.9047619047619047,-4.0,0.009943598081154133,-0.18321947376540376,0.5850040788018078,211.64021164021165,8465.608465608466 +SG,1.9047619047619047,-3.5,0.008013000194028994,-0.15304012328508632,0.521875504064796,211.64021164021165,8465.608465608466 +SG,1.9047619047619047,-3.0,0.006185977402713051,-0.13099944568517108,0.49299041058335313,211.64021164021165,8465.608465608466 +SG,1.9047619047619047,-2.5,-0.0028879184638780325,0.0030656657849156064,0.023864701801282296,211.64021164021165,8465.608465608466 +SG,1.9047619047619047,-2.0,0.0005636016632629495,-0.039748517783380906,0.17332958222746775,211.64021164021165,8465.608465608466 +SG,1.9047619047619047,-1.5,0.0059232629962338215,-0.12407496708702113,0.5014156051825971,211.64021164021165,8465.608465608466 +SG,1.9047619047619047,-1.0,-0.0012789190634649255,-0.019981626744690104,0.1226250044856181,211.64021164021165,8465.608465608466 +SG,1.9047619047619047,-0.5,-0.0034394839903932562,0.015433750377074397,-0.04648578337168925,211.64021164021165,8465.608465608466 +SG,1.9047619047619047,0.0,-0.006399581120680665,0.06921809438129384,-0.29984263192821525,211.64021164021165,8465.608465608466 +SG,1.9047619047619047,0.5,-0.0076042340737347905,0.08358671953768909,-0.39003161177014545,211.64021164021165,8465.608465608466 +SG,1.9047619047619047,1.0,-0.006736641645245634,0.08662520712930744,-0.5061118348872483,211.64021164021165,8465.608465608466 +SG,1.9047619047619047,1.5,-0.014449224399719802,0.2085891392641757,-1.0392420083691003,211.64021164021165,8465.608465608466 +SG,1.9047619047619047,2.0,-0.008479093041988952,0.13299388281639768,-0.867748062118805,211.64021164021165,8465.608465608466 +SG,1.9047619047619047,2.5,-0.005771309566464865,0.10194495926845404,-0.8591693618388501,211.64021164021165,8465.608465608466 +SG,1.9047619047619047,3.0,0.00021489376711866863,0.01936599335167663,-0.6572653895819529,211.64021164021165,8465.608465608466 +SG,1.9047619047619047,3.5,0.0026299143226685842,-0.011694915893414015,-0.6692316408852759,211.64021164021165,8465.608465608466 +SG,1.9047619047619047,4.0,0.005197979298801823,-0.02162017778559282,-0.9319617106651865,211.64021164021165,8465.608465608466 +SG,1.9047619047619047,4.5,0.017771584774743387,-0.20534157833732297,-0.6808712418296134,211.64021164021165,8465.608465608466 +SG,1.9047619047619047,5.0,-0.002900101115531943,0.14463578530204124,-2.823181536167712,211.64021164021165,8465.608465608466 +SG,1.9047619047619047,5.5,-0.9957656118026348,16.19738012826715,-68.46537145356378,211.64021164021165,8465.608465608466 +SG,1.9230769230769231,-6.5,0.0681748988915829,-0.9806638263926413,2.4681933221639243,211.64021164021165,8465.608465608466 +SG,1.9230769230769231,-6.0,0.0051787970493979586,-0.09778180386784066,0.001919966916494414,211.64021164021165,8465.608465608466 +SG,1.9230769230769231,-5.5,0.01792747313419918,-0.30335366788535506,0.9390625546492302,211.64021164021165,8465.608465608466 +SG,1.9230769230769231,-5.0,0.00926836691734283,-0.16956630232158187,0.522921206910693,211.64021164021165,8465.608465608466 +SG,1.9230769230769231,-4.5,0.0003815982247012712,-0.0382717806052041,0.10487110631695742,211.64021164021165,8465.608465608466 +SG,1.9230769230769231,-4.0,0.0027566047840627255,-0.0626601897625042,0.2094729801402605,211.64021164021165,8465.608465608466 +SG,1.9230769230769231,-3.5,0.0048478232253571065,-0.11258637742664093,0.4777465133776798,211.64021164021165,8465.608465608466 +SG,1.9230769230769231,-3.0,0.002252271721055397,-0.057128767596420986,0.23977803235634892,211.64021164021165,8465.608465608466 +SG,1.9230769230769231,-2.5,-0.00565034541971035,0.06581501333374937,-0.22252988021371722,211.64021164021165,8465.608465608466 +SG,1.9230769230769231,-2.0,-0.0044877610207280875,0.04798475885740731,-0.15787609234244143,211.64021164021165,8465.608465608466 +SG,1.9230769230769231,-1.5,-0.011265423313129637,0.1500362239271497,-0.5573577412698718,211.64021164021165,8465.608465608466 +SG,1.9230769230769231,-1.0,-0.013317119428173641,0.18266734911182547,-0.7308647384093226,211.64021164021165,8465.608465608466 +SG,1.9230769230769231,-0.5,-0.009891199170825558,0.13122352173732404,-0.5979943566622761,211.64021164021165,8465.608465608466 +SG,1.9230769230769231,0.0,-0.013994855533079113,0.2063811468366749,-0.9684261086671766,211.64021164021165,8465.608465608466 +SG,1.9230769230769231,0.5,-0.013157548833816639,0.20308578157136686,-1.05112354102551,211.64021164021165,8465.608465608466 +SG,1.9230769230769231,1.0,-0.01615088259187203,0.2534089080892725,-1.3248441333679957,211.64021164021165,8465.608465608466 +SG,1.9230769230769231,1.5,-0.01347638559181742,0.22974293533398066,-1.3592636132907738,211.64021164021165,8465.608465608466 +SG,1.9230769230769231,2.0,-0.011812767404487343,0.21339707702594263,-1.4107817685040769,211.64021164021165,8465.608465608466 +SG,1.9230769230769231,2.5,-0.009627459193335833,0.18407498659346735,-1.4108560271505208,211.64021164021165,8465.608465608466 +SG,1.9230769230769231,3.0,0.0022606227437649224,0.0036305923919823235,-0.8566804935934342,211.64021164021165,8465.608465608466 +SG,1.9230769230769231,3.5,0.0030491756270578816,-0.0029601854596156903,-0.977175191091172,211.64021164021165,8465.608465608466 +SG,1.9230769230769231,4.0,-0.0028742831427012723,0.09657103867144057,-1.5199121122041106,211.64021164021165,8465.608465608466 +SG,1.9230769230769231,4.5,0.006115807036366063,-0.019758737996269257,-1.5713483080095716,211.64021164021165,8465.608465608466 +SG,1.9230769230769231,5.0,-0.03848963351272207,0.7491465218345293,-5.863648256669016,211.64021164021165,8465.608465608466 +SG,1.941747572815534,-7.5,-0.7445968376318559,11.600599786046283,-46.818309609804494,211.64021164021165,8465.608465608466 +SG,1.941747572815534,-7.0,0.11269091827318806,-1.7614381349180972,5.859925236275306,211.64021164021165,8465.608465608466 +SG,1.941747572815534,-6.5,0.055816738528771184,-0.8802894023982092,2.8773163055769073,211.64021164021165,8465.608465608466 +SG,1.941747572815534,-6.0,0.01780019009248808,-0.2770467642154897,0.7764012188735108,211.64021164021165,8465.608465608466 +SG,1.941747572815534,-5.5,0.003479557481815658,-0.08229382847945521,0.2522211101791446,211.64021164021165,8465.608465608466 +SG,1.941747572815534,-5.0,0.004268606746304625,-0.0978677654059038,0.3827488197323944,211.64021164021165,8465.608465608466 +SG,1.941747572815534,-4.5,0.00014643281570223506,-0.02620677396616832,0.12231704214259831,211.64021164021165,8465.608465608466 +SG,1.941747572815534,-4.0,-0.002564318388071982,0.0238893796552015,-0.07367303615724544,211.64021164021165,8465.608465608466 +SG,1.941747572815534,-3.5,0.00127889453732341,-0.044378271906836395,0.21009030734206696,211.64021164021165,8465.608465608466 +SG,1.941747572815534,-3.0,0.002032565059997945,-0.05357860566403508,0.22939642789793574,211.64021164021165,8465.608465608466 +SG,1.941747572815534,-2.5,0.0016648912145900776,-0.04854610447136881,0.18925386887235007,211.64021164021165,8465.608465608466 +SG,1.941747572815534,-2.0,-0.0019014520818989257,0.011101540767676393,-0.09719023934611808,211.64021164021165,8465.608465608466 +SG,1.941747572815534,-1.5,-0.005881270526658339,0.07562827154250279,-0.40372413259092343,211.64021164021165,8465.608465608466 +SG,1.941747572815534,-1.0,-0.006963570354130826,0.09618760492607592,-0.5554407267425163,211.64021164021165,8465.608465608466 +SG,1.941747572815534,-0.5,0.000740647582620368,-0.0067966246097154424,-0.27374774139782193,211.64021164021165,8465.608465608466 +SG,1.941747572815534,0.0,-0.00888662723234344,0.15351045183455564,-0.9891381769290267,211.64021164021165,8465.608465608466 +SG,1.941747572815534,0.5,-0.003043301022805263,0.07719239607646777,-0.8280225278165967,211.64021164021165,8465.608465608466 +SG,1.941747572815534,1.0,-0.0006345255221472149,0.041304473466440825,-0.7883810419723316,211.64021164021165,8465.608465608466 +SG,1.941747572815534,1.5,-0.005910129700266945,0.13133582158448676,-1.256967317890259,211.64021164021165,8465.608465608466 +SG,1.941747572815534,2.0,-0.002848823198501124,0.09406347885118363,-1.2539254071913315,211.64021164021165,8465.608465608466 +SG,1.941747572815534,2.5,-0.0007243840300551645,0.05458226427176395,-1.2144262255240585,211.64021164021165,8465.608465608466 +SG,1.941747572815534,3.0,0.00789130014216229,-0.0732043760224296,-0.9232651004507818,211.64021164021165,8465.608465608466 +SG,1.941747572815534,3.5,0.012883388801346233,-0.13660385917731288,-0.9517297856836389,211.64021164021165,8465.608465608466 +SG,1.941747572815534,4.0,-0.02015642956834983,0.3793131902574673,-3.1789887109486505,211.64021164021165,8465.608465608466 +SG,1.941747572815534,4.5,-0.021934182313549714,0.3871778777703323,-3.6084851380830445,211.64021164021165,8465.608465608466 +SG,1.941747572815534,5.0,-0.6035520111615376,9.747911807452155,-42.51923451370258,211.64021164021165,8465.608465608466 +SG,1.9607843137254901,-8.5,-1.1030310259148997,17.535330767045938,-71.808240685906,211.64021164021165,8465.608465608466 +SG,1.9607843137254901,-8.0,0.06471382060443022,-0.9125487331342217,1.582501633675347,211.64021164021165,8465.608465608466 +SG,1.9607843137254901,-7.5,0.04780240725435976,-0.7169504312709408,1.773187388503504,211.64021164021165,8465.608465608466 +SG,1.9607843137254901,-7.0,0.03268097821871982,-0.4782843057574556,1.1775820259849512,211.64021164021165,8465.608465608466 +SG,1.9607843137254901,-6.5,0.03335908492937101,-0.4968243657477334,1.4794301566047752,211.64021164021165,8465.608465608466 +SG,1.9607843137254901,-6.0,0.00760855515037214,-0.1120849463526298,0.2323811788891825,211.64021164021165,8465.608465608466 +SG,1.9607843137254901,-5.5,0.007909273273533244,-0.13200821320048314,0.46564520823905453,211.64021164021165,8465.608465608466 +SG,1.9607843137254901,-5.0,0.0009823614316843247,-0.02486393994560422,0.09196842322858467,211.64021164021165,8465.608465608466 +SG,1.9607843137254901,-4.5,0.0017455194410325417,-0.03835806097998777,0.16208673044739758,211.64021164021165,8465.608465608466 +SG,1.9607843137254901,-4.0,-0.013905795141778542,0.20518987674160177,-0.7661381105300629,211.64021164021165,8465.608465608466 +SG,1.9607843137254901,-3.5,-0.011744555032547826,0.16073543875224316,-0.5836845870591889,211.64021164021165,8465.608465608466 +SG,1.9607843137254901,-3.0,-0.004370157958678583,0.05684457834704928,-0.2746656556104936,211.64021164021165,8465.608465608466 +SG,1.9607843137254901,-2.5,-0.007964807329789967,0.11530445482083021,-0.5662042218976635,211.64021164021165,8465.608465608466 +SG,1.9607843137254901,-2.0,-0.007266598104801455,0.1168738286207497,-0.6769416248565923,211.64021164021165,8465.608465608466 +SG,1.9607843137254901,-1.5,0.0014058235994162235,-0.008894447534824124,-0.29909224956092256,211.64021164021165,8465.608465608466 +SG,1.9607843137254901,-1.0,-0.002588208868748297,0.05982660456645546,-0.6633640746488628,211.64021164021165,8465.608465608466 +SG,1.9607843137254901,-0.5,-0.0007914582443200141,0.03588293017117587,-0.6603108557472837,211.64021164021165,8465.608465608466 +SG,1.9607843137254901,0.0,-0.011853084911744145,0.22014684685287886,-1.494750030991521,211.64021164021165,8465.608465608466 +SG,1.9607843137254901,0.5,-0.005011891247627568,0.12045388306150662,-1.2312137675560946,211.64021164021165,8465.608465608466 +SG,1.9607843137254901,1.0,0.0007977586732661415,0.029376456988717083,-1.021810391317295,211.64021164021165,8465.608465608466 +SG,1.9607843137254901,1.5,-0.01565588414054739,0.28351370070374526,-2.1187429456455322,211.64021164021165,8465.608465608466 +SG,1.9607843137254901,2.0,-0.014906189427723981,0.28498595717549685,-2.326569511734279,211.64021164021165,8465.608465608466 +SG,1.9607843137254901,2.5,-0.02329759663102159,0.413611488538646,-3.049715982428297,211.64021164021165,8465.608465608466 +SG,1.9607843137254901,3.0,-0.0476382848195629,0.790370294827319,-4.768855363091884,211.64021164021165,8465.608465608466 +SG,1.9607843137254901,3.5,-0.043481415178810656,0.7387859926957141,-5.13317552021794,211.64021164021165,8465.608465608466 +SG,1.9607843137254901,4.0,-0.04236702089080675,0.6034284967356915,-5.140560551405613,211.64021164021165,8465.608465608466 +SG,1.9607843137254901,4.5,-0.7948431924283983,12.158880106254909,-50.414634184281454,211.64021164021165,8465.608465608466 +SG,1.9801980198019802,-9.0,-0.9788710190417265,15.382551704934873,-63.78559993808626,211.64021164021165,8465.608465608466 +SG,1.9801980198019802,-8.5,0.039189521981798855,-0.5864200036637542,0.34166461369361345,211.64021164021165,8465.608465608466 +SG,1.9801980198019802,-8.0,0.059882324724731366,-0.9190841294463621,2.3643164248618205,211.64021164021165,8465.608465608466 +SG,1.9801980198019802,-7.5,0.03878948947137689,-0.5797178908089652,1.4310175321361296,211.64021164021165,8465.608465608466 +SG,1.9801980198019802,-7.0,0.030864694529679958,-0.4602639694454136,1.2552506354742645,211.64021164021165,8465.608465608466 +SG,1.9801980198019802,-6.5,0.020541835937988417,-0.2998591127472381,0.823822633301071,211.64021164021165,8465.608465608466 +SG,1.9801980198019802,-6.0,0.01141393799624176,-0.166029422826299,0.48710492542852607,211.64021164021165,8465.608465608466 +SG,1.9801980198019802,-5.5,0.005939137217206665,-0.10047510798072931,0.37163072451721946,211.64021164021165,8465.608465608466 +SG,1.9801980198019802,-5.0,-0.0002015645009295582,-0.0006589893369342336,-0.012157590797758792,211.64021164021165,8465.608465608466 +SG,1.9801980198019802,-4.5,0.004299102122090916,-0.07660445759171558,0.27063395666909623,211.64021164021165,8465.608465608466 +SG,1.9801980198019802,-4.0,0.00021461712923138526,-0.005972349945327875,-0.057127109617586845,211.64021164021165,8465.608465608466 +SG,1.9801980198019802,-3.5,0.006420390776884939,-0.09826757390296234,0.21423235522801687,211.64021164021165,8465.608465608466 +SG,1.9801980198019802,-3.0,0.005079481907335266,-0.07028985598976425,0.01252792152654525,211.64021164021165,8465.608465608466 +SG,1.9801980198019802,-2.5,0.0023168700412489708,-0.01731107457084362,-0.2965885194421348,211.64021164021165,8465.608465608466 +SG,1.9801980198019802,-2.0,0.00172486363274698,-0.009612866283412638,-0.39543934838887274,211.64021164021165,8465.608465608466 +SG,1.9801980198019802,-1.5,-0.002471364866521863,0.06857777109564683,-0.8247248688187248,211.64021164021165,8465.608465608466 +SG,1.9801980198019802,-1.0,0.003767636750813671,-0.02756307254926231,-0.5731358368335122,211.64021164021165,8465.608465608466 +SG,1.9801980198019802,-0.5,-0.003086434178664311,0.09132204908792618,-1.1683846120001584,211.64021164021165,8465.608465608466 +SG,1.9801980198019802,0.0,-0.008180834119241677,0.15951856374980694,-1.5167175945099993,211.64021164021165,8465.608465608466 +SG,1.9801980198019802,0.5,-0.00462420395830538,0.10794016822541108,-1.4926652831381195,211.64021164021165,8465.608465608466 +SG,1.9801980198019802,1.0,-0.010592428886448407,0.21390330870088284,-2.126392449550367,211.64021164021165,8465.608465608466 +SG,1.9801980198019802,1.5,-0.01844286617818216,0.34387701266934223,-2.884611935999878,211.64021164021165,8465.608465608466 +SG,1.9801980198019802,2.0,-0.02184609324281622,0.40864770245709403,-3.5174468799323666,211.64021164021165,8465.608465608466 +SG,1.9801980198019802,2.5,-0.09201612577275887,1.526087453106071,-8.320272286319303,211.64021164021165,8465.608465608466 +SG,1.9801980198019802,3.0,-0.37121701743835583,5.827476362170181,-25.321370507659676,211.64021164021165,8465.608465608466 +SG,1.9801980198019802,3.5,-1.3567832205183246,21.69157778827047,-89.38884403470836,211.64021164021165,8465.608465608466 +SG,1.9801980198019802,4.0,-37.14791638234641,590.4204703251597,-2345.400523189016,211.64021164021165,8465.608465608466 +SG,2.0,-9.0,0.033796403080702864,-0.5709160504809263,-0.19017564389954308,211.64021164021165,8465.608465608466 +SG,2.0,-8.5,0.04569326747840941,-0.7028229852638666,1.2385643699388065,211.64021164021165,8465.608465608466 +SG,2.0,-8.0,0.03520178033713314,-0.5228498634936967,1.0238200305956817,211.64021164021165,8465.608465608466 +SG,2.0,-7.5,0.03216512550574633,-0.471489071202567,1.1174261395934202,211.64021164021165,8465.608465608466 +SG,2.0,-7.0,0.015299530558156756,-0.2227656098348358,0.4470769607362065,211.64021164021165,8465.608465608466 +SG,2.0,-6.5,0.01182315020220685,-0.15604583220926221,0.3012303631223586,211.64021164021165,8465.608465608466 +SG,2.0,-6.0,0.0038544000254964253,-0.0310234583287401,-0.060231829518836315,211.64021164021165,8465.608465608466 +SG,2.0,-5.5,0.0028993454521190213,-0.04113198883822601,0.0908621254750342,211.64021164021165,8465.608465608466 +SG,2.0,-5.0,0.004608869483452915,-0.06540589262244986,0.14651313839840396,211.64021164021165,8465.608465608466 +SG,2.0,-4.5,0.0013087541082354177,-0.014038222885896021,-0.11771919231195113,211.64021164021165,8465.608465608466 +SG,2.0,-4.0,0.009062222066437486,-0.12571728661075798,0.21028047971230768,211.64021164021165,8465.608465608466 +SG,2.0,-3.5,0.0006740415963495691,0.015724259762383723,-0.45707788026724677,211.64021164021165,8465.608465608466 +SG,2.0,-3.0,0.004059217453276907,-0.043887822967791174,-0.29396150727582604,211.64021164021165,8465.608465608466 +SG,2.0,-2.5,-0.0020443676078044423,0.06314634616215163,-0.8343813650617795,211.64021164021165,8465.608465608466 +SG,2.0,-2.0,-0.00032426306005464006,0.0378869262880695,-0.8341029431078566,211.64021164021165,8465.608465608466 +SG,2.0,-1.5,-0.013202427802759913,0.2511393738391855,-1.8210127984110436,211.64021164021165,8465.608465608466 +SG,2.0,-1.0,-0.01605083784814537,0.2941119897401504,-2.09605200132168,211.64021164021165,8465.608465608466 +SG,2.0,-0.5,-0.0137522588817792,0.2674646950666779,-2.2033072404714686,211.64021164021165,8465.608465608466 +SG,2.0,0.0,-0.014731182617733495,0.2804578938257224,-2.4729307278815704,211.64021164021165,8465.608465608466 +SG,2.0,0.5,-0.024603631272289588,0.44944367218638426,-3.417927611665208,211.64021164021165,8465.608465608466 +SG,2.0,1.0,-0.03229965548895032,0.5633079819944249,-4.217105239299839,211.64021164021165,8465.608465608466 +SG,2.0,1.5,-0.028794616024451374,0.4889801335072942,-4.501508014032991,211.64021164021165,8465.608465608466 +SG,2.0,2.0,-0.3416187302317152,4.597786734300502,-19.232560594030257,211.64021164021165,8465.608465608466 +SG,2.0,2.5,-0.9228132303860189,13.779260032177444,-56.784832119639745,211.64021164021165,8465.608465608466 +SG,2.0202020202020203,-9.5,-0.6421659680060023,10.165614800537615,-43.28587718312385,211.64021164021165,8465.608465608466 +SG,2.0202020202020203,-9.0,0.033455574315776795,-0.5515656604246214,0.30957857908341646,211.64021164021165,8465.608465608466 +SG,2.0202020202020203,-8.5,0.015043721351604774,-0.22487652915168488,-0.36095501040733624,211.64021164021165,8465.608465608466 +SG,2.0202020202020203,-8.0,0.01279958552964515,-0.193682778345807,-0.05985519936664914,211.64021164021165,8465.608465608466 +SG,2.0202020202020203,-7.5,0.023266871148210175,-0.349695895721994,0.7509498084554121,211.64021164021165,8465.608465608466 +SG,2.0202020202020203,-7.0,0.01799590569467767,-0.2678350672570551,0.6165584834874271,211.64021164021165,8465.608465608466 +SG,2.0202020202020203,-6.5,0.01477452328443045,-0.22649636121037858,0.6037667715276944,211.64021164021165,8465.608465608466 +SG,2.0202020202020203,-6.0,0.01663244307275742,-0.2519445416118472,0.7742651500102558,211.64021164021165,8465.608465608466 +SG,2.0202020202020203,-5.5,0.01446350848330816,-0.21955171335242185,0.6514441989222153,211.64021164021165,8465.608465608466 +SG,2.0202020202020203,-5.0,0.002279525342237662,-0.020043455724148278,-0.21352584259251695,211.64021164021165,8465.608465608466 +SG,2.0202020202020203,-4.5,0.010492597306600812,-0.13171944169835126,0.0687009787390386,211.64021164021165,8465.608465608466 +SG,2.0202020202020203,-4.0,0.003813158803840224,-0.044846533965281564,-0.287069332635571,211.64021164021165,8465.608465608466 +SG,2.0202020202020203,-3.5,0.0010744180457581969,0.010787432963672731,-0.6544649880849065,211.64021164021165,8465.608465608466 +SG,2.0202020202020203,-3.0,-0.003320399687618743,0.07871702908759941,-1.0306135481594316,211.64021164021165,8465.608465608466 +SG,2.0202020202020203,-2.5,-0.004157277875546174,0.10294784488105992,-1.283384127576774,211.64021164021165,8465.608465608466 +SG,2.0202020202020203,-2.0,-0.011711493838879341,0.2219112072257178,-1.9049693984479061,211.64021164021165,8465.608465608466 +SG,2.0202020202020203,-1.5,-0.02180093683346361,0.3838563685470213,-2.707074174604058,211.64021164021165,8465.608465608466 +SG,2.0202020202020203,-1.0,-0.02086141723020586,0.37186025228819775,-2.8884371875931647,211.64021164021165,8465.608465608466 +SG,2.0202020202020203,-0.5,-0.03865421112465514,0.6616109739298408,-4.342737341184479,211.64021164021165,8465.608465608466 +SG,2.0202020202020203,0.0,-0.061979202091946864,1.0369365020958385,-6.245588948100606,211.64021164021165,8465.608465608466 +SG,2.0202020202020203,0.5,-0.21123598873972554,3.3440839544928087,-15.559558882396816,211.64021164021165,8465.608465608466 +SG,2.0202020202020203,1.0,-0.9006221984865523,14.261166387374551,-59.09096460780677,211.64021164021165,8465.608465608466 +SG,2.0408163265306123,-9.5,-0.09266365423274325,1.4499862527357774,-8.260514338458268,211.64021164021165,8465.608465608466 +SG,2.0408163265306123,-9.0,-0.006756164373381291,0.09125994872097024,-1.8898398892825103,211.64021164021165,8465.608465608466 +SG,2.0408163265306123,-8.5,-0.013603411860876994,0.2209888148116651,-1.9477447459019754,211.64021164021165,8465.608465608466 +SG,2.0408163265306123,-8.0,-0.007078888120012016,0.10086820524686055,-1.1246441043807824,211.64021164021165,8465.608465608466 +SG,2.0408163265306123,-7.5,-0.0023655389058449905,0.03295211504382831,-0.7020512466929237,211.64021164021165,8465.608465608466 +SG,2.0408163265306123,-7.0,0.010549417980762015,-0.17327902502296727,0.22692016977974624,211.64021164021165,8465.608465608466 +SG,2.0408163265306123,-6.5,0.008398984733024202,-0.13715436175798446,0.16268008137403245,211.64021164021165,8465.608465608466 +SG,2.0408163265306123,-6.0,0.01440916275208289,-0.21405581109164695,0.45620646778833807,211.64021164021165,8465.608465608466 +SG,2.0408163265306123,-5.5,0.009924260730471646,-0.13633899512481007,0.09331067403297341,211.64021164021165,8465.608465608466 +SG,2.0408163265306123,-5.0,0.0006716439602791596,0.015695415884057304,-0.597257526679736,211.64021164021165,8465.608465608466 +SG,2.0408163265306123,-4.5,-0.0033857430822518547,0.08976789921700881,-1.031793022285741,211.64021164021165,8465.608465608466 +SG,2.0408163265306123,-4.0,-0.007808671910791055,0.15086611420277848,-1.3554317995574903,211.64021164021165,8465.608465608466 +SG,2.0408163265306123,-3.5,-0.013875610069584644,0.2590575760357874,-1.9553876875066205,211.64021164021165,8465.608465608466 +SG,2.0408163265306123,-3.0,-0.012678141279540402,0.24101912252051688,-2.0552237977917125,211.64021164021165,8465.608465608466 +SG,2.0408163265306123,-2.5,-0.017097088944327092,0.30548578991425657,-2.473243316638529,211.64021164021165,8465.608465608466 +SG,2.0408163265306123,-2.0,-0.019560710254554622,0.3472006876005542,-2.926154102959278,211.64021164021165,8465.608465608466 +SG,2.0408163265306123,-1.5,-0.020104413922171986,0.3618508955935799,-3.37833215845514,211.64021164021165,8465.608465608466 +SG,2.0408163265306123,-1.0,-0.018414863385225515,0.29424209109374844,-3.504457409559623,211.64021164021165,8465.608465608466 +SG,2.0408163265306123,-0.5,-0.18684236713751642,2.814316782882259,-13.665907731820536,211.64021164021165,8465.608465608466 +SG,2.0618556701030926,-10.0,-0.5649781938529024,8.216189244475995,-36.92499172877964,211.64021164021165,8465.608465608466 +SG,2.0618556701030926,-9.5,-0.015150753442511235,0.18244017113707944,-2.866493719540718,211.64021164021165,8465.608465608466 +SG,2.0618556701030926,-9.0,0.0025843660026785486,-0.09474920878869195,-1.0382829756693588,211.64021164021165,8465.608465608466 +SG,2.0618556701030926,-8.5,-0.0054502122766921625,0.03915005906616266,-1.1898897626403837,211.64021164021165,8465.608465608466 +SG,2.0618556701030926,-8.0,-0.001748731869432981,-0.043073013997092166,-0.58086372002167,211.64021164021165,8465.608465608466 +SG,2.0618556701030926,-7.5,0.007496116975822288,-0.16493547812914244,-0.06017469228648195,211.64021164021165,8465.608465608466 +SG,2.0618556701030926,-7.0,0.010622095300583652,-0.1894763861284596,0.054260423347263095,211.64021164021165,8465.608465608466 +SG,2.0618556701030926,-6.5,0.009588536266280059,-0.14362915904460022,-0.12158553948512794,211.64021164021165,8465.608465608466 +SG,2.0618556701030926,-6.0,-0.006484999780862006,0.11070255500265005,-1.0273899535637514,211.64021164021165,8465.608465608466 +SG,2.0618556701030926,-5.5,-0.0017996788191737877,0.04634749549873682,-0.8725822839032373,211.64021164021165,8465.608465608466 +SG,2.0618556701030926,-5.0,-0.0113910439711177,0.2003785165889787,-1.5877961971038466,211.64021164021165,8465.608465608466 +SG,2.0618556701030926,-4.5,-0.009627585413829316,0.18284102499268962,-1.7201603354868795,211.64021164021165,8465.608465608466 +SG,2.0618556701030926,-4.0,-0.020994051353256434,0.3711170907336019,-2.6477082633137177,211.64021164021165,8465.608465608466 +SG,2.0618556701030926,-3.5,-0.0290934380447904,0.5022553349727412,-3.391312352893288,211.64021164021165,8465.608465608466 +SG,2.0618556701030926,-3.0,-0.025204177373541047,0.44716360146166334,-3.5051259659540133,211.64021164021165,8465.608465608466 +SG,2.0618556701030926,-2.5,-0.06289278045264321,1.0256410615459588,-6.037300344258959,211.64021164021165,8465.608465608466 +SG,2.0618556701030926,-2.0,-0.13968182858952005,2.2530031657330287,-11.37903323521379,211.64021164021165,8465.608465608466 +SG,2.0618556701030926,-1.5,-0.6397090301999169,9.96939301683208,-41.56187389821018,211.64021164021165,8465.608465608466 +SG,2.0618556701030926,-1.0,-1.5579292479325062,25.001766656196864,-103.25271849531833,211.64021164021165,8465.608465608466 +SG,2.0833333333333335,-10.0,-0.2926279844402493,2.991654968707566,-11.833818909096273,211.64021164021165,8465.608465608466 +SG,2.0833333333333335,-9.5,-0.009642782456051213,-0.04316298999189956,-1.5876960939431686,211.64021164021165,8465.608465608466 +SG,2.0833333333333335,-9.0,-0.03236556420697579,0.3180587347237603,-2.4466369472855187,211.64021164021165,8465.608465608466 +SG,2.0833333333333335,-8.5,0.008165385697399982,-0.3159233010572019,0.1889714149311345,211.64021164021165,8465.608465608466 +SG,2.0833333333333335,-8.0,-0.001532177723769331,-0.11385322653685118,-0.6266040841830334,211.64021164021165,8465.608465608466 +SG,2.0833333333333335,-7.5,-0.012153599981480693,0.10551234138310889,-1.4840023917968295,211.64021164021165,8465.608465608466 +SG,2.0833333333333335,-7.0,-0.01305021606259682,0.15661751211090627,-1.6488331222675452,211.64021164021165,8465.608465608466 +SG,2.0833333333333335,-6.5,-0.01399724290624554,0.18767187567823354,-1.6692886861830436,211.64021164021165,8465.608465608466 +SG,2.0833333333333335,-6.0,-0.010647240594719252,0.18647848496209124,-1.7034005485705075,211.64021164021165,8465.608465608466 +SG,2.0833333333333335,-5.5,-0.012071717010272678,0.22107725243919765,-1.979148962899926,211.64021164021165,8465.608465608466 +SG,2.0833333333333335,-5.0,-0.01643433784154404,0.3036463756380166,-2.5393504014201103,211.64021164021165,8465.608465608466 +SG,2.0833333333333335,-4.5,-0.019792717236470716,0.34944966380006137,-2.948093077443034,211.64021164021165,8465.608465608466 +SG,2.0833333333333335,-4.0,-0.0316822890323013,0.5306606942357708,-3.977231119826426,211.64021164021165,8465.608465608466 +SG,2.0833333333333335,-3.5,-0.03362642085277824,0.5531771975574257,-4.534329980416935,211.64021164021165,8465.608465608466 +SG,2.0833333333333335,-3.0,-0.042064715936977956,0.5476172374089703,-5.019178449040529,211.64021164021165,8465.608465608466 +SG,2.0833333333333335,-2.5,-0.7554809728527492,11.193114724338876,-45.63970355467282,211.64021164021165,8465.608465608466 +SG,2.1052631578947367,-10.0,-0.628777433076538,7.530190941785113,-26.35536505889558,211.64021164021165,8465.608465608466 +SG,2.1052631578947367,-9.5,-0.07345930197697825,0.3523663432226465,-2.140906955306336,211.64021164021165,8465.608465608466 +SG,2.1052631578947367,-9.0,-0.1565347170112083,1.8450783355008404,-8.077078635996264,211.64021164021165,8465.608465608466 +SG,2.1052631578947367,-8.5,-0.20777745052307456,2.706278084022458,-11.43764710380022,211.64021164021165,8465.608465608466 +SG,2.1052631578947367,-8.0,-0.17045038102962232,2.240003782881595,-9.828424780852789,211.64021164021165,8465.608465608466 +SG,2.1052631578947367,-7.5,-0.11641135887578588,1.5906712708379795,-7.691946785814842,211.64021164021165,8465.608465608466 +SG,2.1052631578947367,-7.0,-0.062292426189724234,0.8670530225105209,-5.045363392843759,211.64021164021165,8465.608465608466 +SG,2.1052631578947367,-6.5,-0.04467392390832679,0.63450690790487,-3.9250083507129254,211.64021164021165,8465.608465608466 +SG,2.1052631578947367,-6.0,-0.03204891223899625,0.5154969462641852,-3.4919301335118194,211.64021164021165,8465.608465608466 +SG,2.1052631578947367,-5.5,-0.02506055156084016,0.42248617421616885,-3.4269504355939944,211.64021164021165,8465.608465608466 +SG,2.1052631578947367,-5.0,-0.07512801908889755,1.2319043948417638,-7.008494170097217,211.64021164021165,8465.608465608466 +SG,2.1052631578947367,-4.5,-0.1766845288766537,2.82251402531886,-13.605269026346228,211.64021164021165,8465.608465608466 +SG,2.1052631578947367,-4.0,-0.5899865469308417,9.180839059882828,-38.45034963509023,211.64021164021165,8465.608465608466 +SG,2.1052631578947367,-3.5,-1.28085946866305,20.487954719839827,-84.91514372331476,211.64021164021165,8465.608465608466 +SG,2.1052631578947367,-3.0,-37.01741524296292,588.0246541645437,-2335.003597769918,211.64021164021165,8465.608465608466 +SG,2.127659574468085,-6.5,-0.29119771733485067,3.844491979782367,-15.920201384703645,211.64021164021165,8465.608465608466 +SG,2.127659574468085,-6.0,-0.03665241349318166,0.483058801968677,-4.226294638229254,211.64021164021165,8465.608465608466 +SG,2.127659574468085,-5.5,-0.1908993575494078,2.6610674111836587,-12.58272069871849,211.64021164021165,8465.608465608466 +SG,2.150537634408602,-6.0,-1.4345878380384918,22.977344623424862,-95.37912111062123,211.64021164021165,8465.608465608466 +SG,2.150537634408602,-5.5,-37.478135449491646,595.7685196148434,-2367.279612525038,211.64021164021165,8465.608465608466 diff --git a/pyproject.toml b/pyproject.toml index 71ea78511..4588d10eb 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -27,7 +27,8 @@ dependencies = [ "xarray==2025.3.1", "imap-processing>=1.0.29", "hatchling", - "uv-dynamic-versioning" + "uv-dynamic-versioning", + "numba>=0.65.1", ] [dependency-groups] diff --git a/run_local.py b/run_local.py index c3f893252..ffcff7c4f 100644 --- a/run_local.py +++ b/run_local.py @@ -58,13 +58,7 @@ from imap_l3_processing.maps.map_models import RectangularSpectralIndexDataProduct, RectangularIntensityDataProduct, \ RectangularIntensityMapData from imap_l3_processing.models import InputMetadata -from imap_l3_processing.swapi.l3a.science.calculate_alpha_solar_wind_temperature_and_density import \ - AlphaTemperatureDensityCalibrationTable from imap_l3_processing.swapi.l3a.science.calculate_pickup_ion import DensityOfNeutralHeliumLookupTable -from imap_l3_processing.swapi.l3a.science.calculate_proton_solar_wind_clock_and_deflection_angles import \ - ClockAngleCalibrationTable -from imap_l3_processing.swapi.l3a.science.calculate_proton_solar_wind_temperature_and_density import \ - ProtonTemperatureAndDensityCalibrationTable from imap_l3_processing.swapi.l3a.swapi_l3a_dependencies import SwapiL3ADependencies from imap_l3_processing.swapi.l3a.utils import read_l2_swapi_data from imap_l3_processing.swapi.l3b.science.efficiency_calibration_table import EfficiencyCalibrationTable @@ -243,8 +237,7 @@ def create_swapi_l3b_cdf(geometric_calibration_file, efficiency_calibration_file @patch("imap_l3_processing.swapi.l3a.science.calculate_pickup_ion.spiceypy") -def create_swapi_l3a_cdf(proton_temperature_density_calibration_file, alpha_temperature_density_calibration_file, - clock_angle_and_flow_deflection_calibration_file, geometric_factor_calibration_file, +def create_swapi_l3a_cdf(geometric_factor_calibration_file, instrument_response_calibration_file, density_of_neutral_helium_calibration_file, imap_swapi_efficiency_lut_file, cdf_file, mock_spice): ephemeris_time_for_epoch = int(100000 * 1e9) @@ -268,12 +261,6 @@ def mock_sxform(from_frame, to_frame, et): mock_spice.sxform.side_effect = mock_sxform - proton_temperature_density_calibration_table = ProtonTemperatureAndDensityCalibrationTable.from_file( - proton_temperature_density_calibration_file) - alpha_temperature_density_calibration_table = AlphaTemperatureDensityCalibrationTable.from_file( - alpha_temperature_density_calibration_file) - clock_angle_and_flow_deflection_calibration_table = ClockAngleCalibrationTable.from_file( - clock_angle_and_flow_deflection_calibration_file) efficiency_calibration_table = EfficiencyCalibrationTable(imap_swapi_efficiency_lut_file) geometric_factor_calibration_table = GeometricFactorCalibrationTable.from_file(geometric_factor_calibration_file) instrument_response_calibration_table = InstrumentResponseLookupTableCollection.from_file( @@ -282,13 +269,16 @@ def mock_sxform(from_frame, to_frame, et): density_of_neutral_helium_calibration_file) swapi_cdf_data = CDF(cdf_file) swapi_data = read_l2_swapi_data(swapi_cdf_data) - swapi_l3_dependencies = SwapiL3ADependencies(swapi_data, proton_temperature_density_calibration_table, - alpha_temperature_density_calibration_table, - clock_angle_and_flow_deflection_calibration_table, - efficiency_calibration_table, - geometric_factor_calibration_table, - instrument_response_calibration_table, - density_of_neutral_helium_calibration_table) + swapi_l3_dependencies = SwapiL3ADependencies( + data=swapi_data, + efficiency_calibration_table=efficiency_calibration_table, + geometric_factor_calibration_table=geometric_factor_calibration_table, + instrument_response_calibration_table=instrument_response_calibration_table, + density_of_neutral_helium_calibration_table=density_of_neutral_helium_calibration_table, + hydrogen_inflow_vector=Mock(), + helium_inflow_vector=Mock(), + swapi_response=Mock(), + ) input_metadata = InputMetadata( instrument='swapi', @@ -299,7 +289,7 @@ def mock_sxform(from_frame, to_frame, et): processor = SwapiProcessor(Mock(), input_metadata) l3a_proton_sw = processor.process_l3a_proton(swapi_data, swapi_l3_dependencies) - l3a_alpha_sw = processor.process_l3a_alpha_solar_wind(swapi_data, swapi_l3_dependencies) + l3a_alpha_sw = processor.process_l3a_alpha(swapi_data, swapi_l3_dependencies) l3a_pui_he = processor.process_l3a_pui(swapi_data, swapi_l3_dependencies) proton_cdf_path = save_data(l3a_proton_sw, delete_if_present=True) alpha_cdf_path = save_data(l3a_alpha_sw, delete_if_present=True) @@ -1030,9 +1020,6 @@ def create_codice_hi_l3b_pitch_angles_cdf(): if "swapi" in sys.argv: if "l3a" in sys.argv: paths = create_swapi_l3a_cdf( - str(get_test_data_path("swapi/imap_swapi_proton-density-temperature-lut_20240905_v001.dat")), - str(get_test_data_path("swapi/imap_swapi_alpha-density-temperature-lut_20240920_v000.dat")), - str(get_test_data_path("swapi/imap_swapi_clock-angle-and-flow-deflection-lut_20240918_v001.dat")), str(get_test_data_path("swapi/imap_swapi_energy-gf-pui-lut_20100101_v001.csv")), str(get_test_data_path("swapi/imap_swapi_instrument-response-lut_20241023_v000.zip")), str(get_test_data_path( diff --git a/run_local_with_upload_and_download.py b/run_local_with_upload_and_download.py index 0147af89f..92c957bee 100644 --- a/run_local_with_upload_and_download.py +++ b/run_local_with_upload_and_download.py @@ -127,13 +127,14 @@ '--descriptor', 'proton-sw', '--start-date', '20250606', '--version', 'v000', '--dependency', '[{"type":"science","files":["imap_swapi_l2_sci_20251208_v006.cdf"]},' - '{"type":"ancillary","files":["imap_swapi_proton-density-temperature-lut_20240905_v000.dat"]},' '{"type":"ancillary","files":["imap_swapi_alpha-density-temperature-lut_20240920_v000.dat"]},' - '{"type":"ancillary","files":["imap_swapi_clock-angle-and-flow-deflection-lut_20240918_v000.dat"]},' '{"type":"ancillary","files":["imap_swapi_efficiency-lut_20241020_v000.dat"]},' '{"type":"ancillary","files":["imap_swapi_energy-gf-pui-lut_20100101_v001.csv"]},' '{"type":"ancillary","files":["imap_swapi_instrument-response-lut_20241023_v000.zip"]},' '{"type":"ancillary","files":["imap_swapi_density-of-neutral-helium-lut_20241023_v000.dat"]},' + '{"type":"ancillary","files":["imap_swapi_azimuthal-transmission_20260425_v001.csv"]},' + '{"type":"ancillary","files":["imap_swapi_central-effective-area_20260425_v001.csv"]},' + '{"type":"ancillary","files":["imap_swapi_passband-fit-coefficients_20260425_v001.csv"]},' '{"type": "spice", "files": ["imap_sclk_0000.tsc"]},' + '{"type": "spice", "files": ["naif0012.tls"]},' + '{"type": "spice", "files": ["imap_science_108.tf"]},' + @@ -146,9 +147,7 @@ '--descriptor', 'alpha-sw', '--start-date', '20250606', '--version', 'v000', '--dependency', '[{"type":"science","files":["imap_swapi_l2_sci_20250606_v001.cdf"]},' - '{"type":"ancillary","files":["imap_swapi_proton-density-temperature-lut_20240905_v000.dat"]},' '{"type":"ancillary","files":["imap_swapi_alpha-density-temperature-lut_20240920_v000.dat"]},' - '{"type":"ancillary","files":["imap_swapi_clock-angle-and-flow-deflection-lut_20240918_v000.dat"]},' '{"type":"ancillary","files":["imap_swapi_efficiency-lut_20241020_v000.dat"]},' '{"type":"ancillary","files":["imap_swapi_energy-gf-pui-lut_20100101_v001.csv"]},' '{"type":"ancillary","files":["imap_swapi_instrument-response-lut_20241023_v000.zip"]},' @@ -159,9 +158,7 @@ '--descriptor', 'pui-he', '--start-date', '20250606', '--version', 'v000', '--dependency', '[{"type":"science","files":["imap_swapi_l2_sci_20250606_v001.cdf"]},' - '{"type":"ancillary","files":["imap_swapi_proton-density-temperature-lut_20240905_v000.dat"]},' '{"type":"ancillary","files":["imap_swapi_alpha-density-temperature-lut_20240920_v000.dat"]},' - '{"type":"ancillary","files":["imap_swapi_clock-angle-and-flow-deflection-lut_20240918_v000.dat"]},' '{"type":"ancillary","files":["imap_swapi_efficiency-lut_20241020_v000.dat"]},' '{"type":"ancillary","files":["imap_swapi_energy-gf-pui-lut_20100101_v001.csv"]},' '{"type":"ancillary","files":["imap_swapi_instrument-response-lut_20241023_v000.zip"]},' diff --git a/scripts/swapi/__init__.py b/scripts/swapi/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/scripts/swapi/fake_proton_sw_temperature_density_lut_generator.py b/scripts/swapi/fake_proton_sw_temperature_density_lut_generator.py deleted file mode 100644 index 2dad80fa5..000000000 --- a/scripts/swapi/fake_proton_sw_temperature_density_lut_generator.py +++ /dev/null @@ -1,22 +0,0 @@ -import itertools - -import numpy as np - -u_sw_values = np.arange(350, 875, 500) -deflection_values = np.arange(0, 5.25, 5) -clock_angles = np.arange(0, 365, 360) -densities = np.arange(1, 6.5, 0.5) -temps = np.arange(1e4, 1.6e5, 1e4) - -with open("imap_swapi_proton-density-temperature-lut_20240905_v000.dat", 'w') as f: - f.write("#\n") - f.write("# Created on: 2024-08-23T20:04:16.44396543502487Z\n") - f.write("#\n") - f.write("# Example LUT for SW Density and Temperature:\n") - f.write("#\n") - f.write("# u_sw defln_angle clock_angle E[n_i] density (cm^-3) E[T_i] temperature (K)\n") - - for u_sw, defln_angle, clock_angle, density, temp in itertools.product(u_sw_values, deflection_values, clock_angles, - densities, temps): - f.write( - f"{u_sw} {defln_angle} {clock_angle} {density} {density * 1.021:.4f} {temp:.4e} {temp / 1.025:0.4e}\n") diff --git a/scripts/swapi/generate_reference_integrals.py b/scripts/swapi/generate_reference_integrals.py new file mode 100644 index 000000000..135708558 --- /dev/null +++ b/scripts/swapi/generate_reference_integrals.py @@ -0,0 +1,144 @@ +#!/usr/bin/env python3 +""" +Generate reference ground-truth integrals for SWAPI proton solar wind. + +Computes 10000 reference integrals using fixed limits covering the full passband +at high resolution. These are used as ground truth in regression tests and the +scatter benchmark. + +Fixed integration limits: + elevation: -15 to 15 deg at 0.05 deg (601 pts) + azimuth SG: -20 to 20 deg at 0.05 deg (801 pts) + azimuth OA: 0.05 deg in transition |az| ∈ [20, 30], 0.5 deg in bulk to ±150 (441 pts/side) + speed: 200 samples from 0.9 to 1.1 × central_speed + +Solar wind parameter ranges (10000 samples, seed=42): + bulk_speed: 200–2000 km/s (uniform) + temperature: 1–100 eV (log-uniform) + bulk_azimuth: -20 to 20 deg (uniform) + bulk_elevation: -20 to 20 deg (uniform) + density: 1–100 cm⁻³ (uniform) + +Output: tests/test_data/swapi/reference_integrals.csv +Usage: python scripts/swapi/generate_reference_integrals.py +""" + +import sys +from pathlib import Path + +sys.path.insert(0, str(Path(__file__).resolve().parents[2])) + +import numpy as np +import pandas as pd + +from imap_l3_processing.constants import ( + EV_TO_KELVIN, + METERS_PER_KILOMETER, + PROTON_CHARGE_COULOMBS, + PROTON_MASS_KG, + PROTON_MASS_PER_CHARGE_M_P_PER_E, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.params import SolarWindParams +from imap_l3_processing.swapi.constants import SWAPI_K_FACTOR +from imap_l3_processing.swapi.response.swapi_response import SwapiResponse +from scripts.swapi.reference_integral import reference_integrals_batch + +_REPO_ROOT = Path(__file__).resolve().parents[2] +_INSTRUMENT_DATA = _REPO_ROOT / "instrument_team_data" / "swapi" +_OUTPUT_PATH = ( + _REPO_ROOT / "tests" / "test_data" / "swapi" / "reference_integrals.csv" +) + +_N_SAMPLES = 10000 +_RNG_SEED = 42 + +_SPEED_RANGE = (200.0, 2000.0) +_TEMP_RANGE = (1.0, 100.0) +_AZ_RANGE = (-20.0, 20.0) +_EL_RANGE = (-20.0, 20.0) +_DENSITY_RANGE = (1.0, 100.0) + + +def _peak_voltage(bulk_speed_km_s: float) -> float: + return ( + PROTON_MASS_KG + * (bulk_speed_km_s * METERS_PER_KILOMETER) ** 2 + / (2 * SWAPI_K_FACTOR * PROTON_CHARGE_COULOMBS) + ) + + +def _bulk_velocity_rtn(speed: float, az_deg: float, el_deg: float) -> np.ndarray: + """Inverse of `bulk_angles_in_instrument_frame` with R = identity (RTN ≡ SWAPI).""" + az = np.radians(az_deg) + el = np.radians(el_deg) + horizontal = speed * np.cos(el) + return np.array( + [ + -horizontal * np.sin(az), + -horizontal * np.cos(az), + -speed * np.sin(el), + ] + ) + + +def main(): + print("Loading calibration data...") + swapi_response = SwapiResponse.from_files( + _INSTRUMENT_DATA / "imap_swapi_azimuthal-transmission_20260425_v001.csv", + _INSTRUMENT_DATA / "imap_swapi_central-effective-area_20260425_v001.csv", + _INSTRUMENT_DATA / "imap_swapi_passband-fit-coefficients_20260425_v001.csv", + ) + + rng = np.random.default_rng(_RNG_SEED) + bulk_speeds = np.round(rng.uniform(*_SPEED_RANGE, _N_SAMPLES), 1) + temperatures_ev = np.round( + np.exp( + rng.uniform(np.log(_TEMP_RANGE[0]), np.log(_TEMP_RANGE[1]), _N_SAMPLES) + ), + 1, + ) + bulk_azimuths = np.round(rng.uniform(*_AZ_RANGE, _N_SAMPLES), 1) + bulk_elevations = np.round(rng.uniform(*_EL_RANGE, _N_SAMPLES), 1) + densities = np.round(rng.uniform(*_DENSITY_RANGE, _N_SAMPLES), 1) + + print(f"Building grids and SWParams for {_N_SAMPLES} samples...") + sws = [ + SolarWindParams( + density=float(densities[i]), + bulk_velocity_rtn=_bulk_velocity_rtn( + float(bulk_speeds[i]), + float(bulk_azimuths[i]), + float(bulk_elevations[i]), + ), + temperature=float(temperatures_ev[i]) * EV_TO_KELVIN, + mass=PROTON_MASS_KG, + ) + for i in range(_N_SAMPLES) + ] + rotation_matrices = np.broadcast_to(np.eye(3), (_N_SAMPLES, 3, 3)) + voltages = [_peak_voltage(float(v)) for v in bulk_speeds] + swapi_response.warm_cache(voltages) + response_grids = [ + swapi_response.get_response_grid(v, PROTON_MASS_PER_CHARGE_M_P_PER_E) + for v in voltages + ] + + print(f"Computing {_N_SAMPLES} reference integrals (JIT-parallel, fixed limits)...") + integrals = reference_integrals_batch(response_grids, sws, rotation_matrices) + + df = pd.DataFrame( + { + "bulk_speed": bulk_speeds, + "temperature_ev": temperatures_ev, + "bulk_azimuth": bulk_azimuths, + "bulk_elevation": bulk_elevations, + "density": densities, + "integral": np.round(integrals, 2), + } + ) + df.to_csv(_OUTPUT_PATH, index=False) + print(f"Saved {_OUTPUT_PATH}") + + +if __name__ == "__main__": + main() diff --git a/scripts/swapi/imap_swapi_l3a_proton-sw_dependency_template.json b/scripts/swapi/imap_swapi_l3a_proton-sw_dependency_template.json index 971cf2443..023b352d3 100644 --- a/scripts/swapi/imap_swapi_l3a_proton-sw_dependency_template.json +++ b/scripts/swapi/imap_swapi_l3a_proton-sw_dependency_template.json @@ -2,61 +2,67 @@ { "type": "ancillary", "files": [ - "imap_swapi_clock-angle-and-flow-deflection-lut_20240918_v003.dat" + "imap_swapi_efficiency-lut_20241020_v001.dat" ] }, { "type": "ancillary", "files": [ - "imap_swapi_proton-density-temperature-lut_20240905_v002.dat" + "imap_swapi_alpha-density-temperature-lut_20250125_v001.dat" ] }, { "type": "ancillary", "files": [ - "imap_swapi_efficiency-lut_20241020_v001.dat" + "imap_swapi_energy-gf-pui-lut_20100101_v003.csv" ] }, { "type": "ancillary", "files": [ - "imap_swapi_alpha-density-temperature-lut_20250125_v001.dat" + "imap_swapi_energy-gf-sw-lut_20100101_v003.csv" ] }, { "type": "ancillary", "files": [ - "imap_swapi_energy-gf-pui-lut_20100101_v003.csv" + "imap_swapi_instrument-response-lut_20241023_v001.zip" ] }, { "type": "ancillary", "files": [ - "imap_swapi_energy-gf-sw-lut_20100101_v003.csv" + "imap_swapi_density-of-neutral-helium-lut_20241023_v002.dat" ] }, { "type": "ancillary", "files": [ - "imap_swapi_instrument-response-lut_20241023_v001.zip" + "imap_swapi_helium-inflow-vector_20100101_v001.dat" ] }, { "type": "ancillary", "files": [ - "imap_swapi_density-of-neutral-helium-lut_20241023_v002.dat" + "imap_swapi_hydrogen-inflow-vector_20100101_v001.dat" ] }, { "type": "ancillary", "files": [ - "imap_swapi_helium-inflow-vector_20100101_v001.dat" + "imap_swapi_azimuthal-transmission_20260425_v001.csv" ] }, { "type": "ancillary", "files": [ - "imap_swapi_hydrogen-inflow-vector_20100101_v001.dat" + "imap_swapi_central-effective-area_20260425_v001.csv" + ] + }, + { + "type": "ancillary", + "files": [ + "imap_swapi_passband-fit-coefficients_20260425_v001.csv" ] } ] \ No newline at end of file diff --git a/scripts/swapi/reference_integral.py b/scripts/swapi/reference_integral.py new file mode 100644 index 000000000..25af51271 --- /dev/null +++ b/scripts/swapi/reference_integral.py @@ -0,0 +1,358 @@ +"""Numba reference for the SWAPI proton solar wind integral with fixed limits. + +Mirrors the physics in `imap_l3_processing/swapi/l3a/science/solar_wind/forward_model.py::calculate_integral` +but on a fixed dense trapezoid grid (no dynamic angular/speed windowing). Used +as a ground-truth reference for the production GL quadrature in +`docs/swapi/figure_src/build_validation_table.py` and `plot_spectra.py`. + +Fixed integration grid: + elevation: -15 to 15 deg @ 0.05° (601 pts) + azimuth SG: -20 to 20 deg @ 0.05° (801 pts) + azimuth OA: 0.05° in transition |az| ∈ [20, 30], 0.5° to ±150° (441 pts/side) + — split at the |az| < 20° dead band so trapezoid doesn't + bridge the gap. + speed: 200 samples from 0.9 to 1.1 × central_speed + +The 0.05° elevation/SG-azimuth spacing was chosen to match the bilinear- +interpolated integrand: cold plasma (vth ~10 km/s, σ_el = vth/v_b ≈ 0.4°) at +SG passband elevation edges produces a near-cliff in the integrand, where +0.1° trap undersampled the second derivative and biased the integral low by +~1.4% (worst-case at bulk_el just outside SG el range). +""" + +import math + +import numpy as np +from numba import njit, prange + +from imap_l3_processing.swapi.l3a.science.solar_wind import params +from imap_l3_processing.swapi.l3a.science.solar_wind.params import bulk_speed +from imap_l3_processing.swapi.response.swapi_response import ResponseGrid + +_EL = np.linspace(-15.0, 15.0, 601) +_AZ_SG = np.linspace(-20.0, 20.0, 801) +_AZ_OA_NEG = np.concatenate( + [np.arange(-150.0, -30.0, 0.5), np.linspace(-30.0, -20.0, 201)] +) +_AZ_OA_POS = np.concatenate([np.linspace(20.0, 30.0, 201), np.arange(30.5, 151.0, 0.5)]) +_SP_RATIO = np.linspace(0.9, 1.1, 200) + + +def _trap_weights(x): + """Per-point trapezoid weights on a 1-D grid (handles non-uniform spacing).""" + w = np.empty_like(x) + w[0] = 0.5 * (x[1] - x[0]) + w[-1] = 0.5 * (x[-1] - x[-2]) + w[1:-1] = 0.5 * (x[2:] - x[:-2]) + return w + + +_EL_W = _trap_weights(_EL) +_AZ_SG_W = _trap_weights(_AZ_SG) +_AZ_OA_NEG_W = _trap_weights(_AZ_OA_NEG) +_AZ_OA_POS_W = _trap_weights(_AZ_OA_POS) +_SP_RATIO_W = _trap_weights(_SP_RATIO) + + +@njit(fastmath=True, inline="always") +def _interpolate_passband(values, min_el, el_sp, min_r, r_sp, el, speed_ratio): + """Bilinear on the (elevation, speed_ratio) passband grid; mirrors + `passband_grid._bilinear_interpolate`.""" + i = (el - min_el) / el_sp + j = (speed_ratio - min_r) / r_sp + if i < 0 or i + 1 >= values.shape[0] or j < 0 or j + 1 >= values.shape[1]: + return 0.0 + i0, j0 = int(i), int(j) + wi, wj = i - i0, j - j0 + return (1 - wi) * ((1 - wj) * values[i0, j0] + wj * values[i0, j0 + 1]) + wi * ( + (1 - wj) * values[i0 + 1, j0] + wj * values[i0 + 1, j0 + 1] + ) + + +@njit(fastmath=True, inline="always") +def _interpolate_transmission(transmission, transmission_spacing, az): + """Mirror of `azimuthal_transmission.interpolate_azimuthal_transmission`.""" + az = (az + 180.0) % 360.0 - 180.0 + f = abs(az) / transmission_spacing + n = transmission.shape[0] + i0 = int(f) + if i0 < 0: + i0 = 0 + elif i0 >= n: + i0 = n - 1 + i1 = i0 + 1 if i0 + 1 < n else n - 1 + return transmission[i0] * (i1 - f) + transmission[i1] * (f - i0) + + +@njit(fastmath=True) +def _integrate_region( + passband_values, + rotation, + bulk_r, + bulk_t, + bulk_n, + bulk_speed_value, + inv_two_sigma_sq, + central_speed, + transmission, + transmission_spacing, + pb_min_el, + pb_el_sp, + pb_min_r, + pb_r_sp, + el_points, + el_weights, + az_points, + az_weights, + sp_ratio_points, + sp_ratio_weights, +): + bulk_speed_squared = bulk_speed_value * bulk_speed_value + total = 0.0 + for i_el in range(el_points.shape[0]): + el = el_points[i_el] + sin_el = math.sin(math.radians(el)) + cos_el = math.cos(math.radians(el)) + el_weight = el_weights[i_el] * cos_el + for i_az in range(az_points.shape[0]): + az = az_points[i_az] + sin_az = math.sin(math.radians(az)) + cos_az = math.cos(math.radians(az)) + direction_x = -cos_el * sin_az + direction_y = -cos_el * cos_az + direction_z = -sin_el + direction_r = ( + rotation[0, 0] * direction_x + + rotation[0, 1] * direction_y + + rotation[0, 2] * direction_z + ) + direction_t = ( + rotation[1, 0] * direction_x + + rotation[1, 1] * direction_y + + rotation[1, 2] * direction_z + ) + direction_n = ( + rotation[2, 0] * direction_x + + rotation[2, 1] * direction_y + + rotation[2, 2] * direction_z + ) + bulk_along_direction = ( + direction_r * bulk_r + direction_t * bulk_t + direction_n * bulk_n + ) + transmission_at_az = _interpolate_transmission( + transmission, transmission_spacing, az + ) + az_weight = az_weights[i_az] * transmission_at_az + for i_sp in range(sp_ratio_points.shape[0]): + speed_ratio = sp_ratio_points[i_sp] + speed = central_speed * speed_ratio + passband = _interpolate_passband( + passband_values, + pb_min_el, + pb_el_sp, + pb_min_r, + pb_r_sp, + el, + speed_ratio, + ) + exponent = ( + speed * speed + + bulk_speed_squared + - 2.0 * speed * bulk_along_direction + ) * inv_two_sigma_sq + integrand = passband * speed**3 * math.exp(-exponent) + speed_weight = central_speed * sp_ratio_weights[i_sp] + total += el_weight * az_weight * speed_weight * integrand + return total + + +@njit(parallel=True, fastmath=True) +def _batch( + sg_values_all, + oa_values_all, + rotations, + bulk_velocities_rtn, + bulk_speeds, + thermal_speeds, + densities, + central_speeds, + central_effective_areas, + transmission, + transmission_spacing, + pb_min_el, + pb_el_sp, + pb_min_r, + pb_r_sp, + el_points, + el_weights, + az_sg_points, + az_sg_weights, + az_oa_neg_points, + az_oa_neg_weights, + az_oa_pos_points, + az_oa_pos_weights, + sp_ratio_points, + sp_ratio_weights, +): + n = sg_values_all.shape[0] + out = np.empty(n) + for i in prange(n): + sigma = thermal_speeds[i] + inv_two_sigma_sq = 1.0 / (2.0 * sigma * sigma) + bulk_r = bulk_velocities_rtn[i, 0] + bulk_t = bulk_velocities_rtn[i, 1] + bulk_n = bulk_velocities_rtn[i, 2] + bulk_speed_value = bulk_speeds[i] + rotation = rotations[i] + central_speed = central_speeds[i] + + sg_total = _integrate_region( + sg_values_all[i], + rotation, + bulk_r, + bulk_t, + bulk_n, + bulk_speed_value, + inv_two_sigma_sq, + central_speed, + transmission, + transmission_spacing, + pb_min_el, + pb_el_sp, + pb_min_r, + pb_r_sp, + el_points, + el_weights, + az_sg_points, + az_sg_weights, + sp_ratio_points, + sp_ratio_weights, + ) + oa_neg_total = _integrate_region( + oa_values_all[i], + rotation, + bulk_r, + bulk_t, + bulk_n, + bulk_speed_value, + inv_two_sigma_sq, + central_speed, + transmission, + transmission_spacing, + pb_min_el, + pb_el_sp, + pb_min_r, + pb_r_sp, + el_points, + el_weights, + az_oa_neg_points, + az_oa_neg_weights, + sp_ratio_points, + sp_ratio_weights, + ) + oa_pos_total = _integrate_region( + oa_values_all[i], + rotation, + bulk_r, + bulk_t, + bulk_n, + bulk_speed_value, + inv_two_sigma_sq, + central_speed, + transmission, + transmission_spacing, + pb_min_el, + pb_el_sp, + pb_min_r, + pb_r_sp, + el_points, + el_weights, + az_oa_pos_points, + az_oa_pos_weights, + sp_ratio_points, + sp_ratio_weights, + ) + rate = sg_total + oa_neg_total + oa_pos_total + # Matches `count_rate_conversion_factor` in solar_wind/utils.py. + prefactor = ( + central_effective_areas[i] + * densities[i] + * (math.sqrt(2.0 * math.pi) * sigma) ** -3 + * (math.pi / 180.0) ** 2 + * 1e5 + ) + out[i] = rate * prefactor + return out + + +def reference_integrals_batch(response_grids, sws, rotation_matrices): + """Compute N reference integrals in parallel via numba JIT. + + Each `response_grids[i]` carries its sample's SG/OA passbands, central speed, + central effective area, and (the shared) azimuthal-transmission table — + matching the signature of `calculate_integral`. `rotation_matrices` (shape + (N, 3, 3)) map SWAPI XYZ → RTN per sample. + """ + n = len(sws) + if n == 0: + return np.empty(0) + first_grid = response_grids[0] + first_sg = first_grid.sg_passband + nel, nsp = first_sg.values.shape + sg_values_all = np.empty((n, nel, nsp)) + oa_values_all = np.empty((n, nel, nsp)) + rotations = np.ascontiguousarray(rotation_matrices, dtype=np.float64) + bulk_velocities_rtn = np.empty((n, 3)) + bulk_speeds = np.empty(n) + thermal_speeds = np.empty(n) + densities = np.empty(n) + central_speeds = np.empty(n) + central_effective_areas = np.empty(n) + for i in range(n): + rg = response_grids[i] + sg_values_all[i] = rg.sg_passband.values + oa_values_all[i] = rg.oa_passband.values + central_speeds[i] = rg.central_speed + central_effective_areas[i] = rg.central_effective_area + bulk_velocities_rtn[i] = sws[i].bulk_velocity_rtn + bulk_speeds[i] = bulk_speed(sws[i]) + thermal_speeds[i] = params.thermal_speed(sws[i]) + densities[i] = sws[i].density + transmission = np.ascontiguousarray( + first_grid.azimuthal_transmission.values, dtype=np.float64 + ) + return _batch( + sg_values_all, + oa_values_all, + rotations, + bulk_velocities_rtn, + bulk_speeds, + thermal_speeds, + densities, + central_speeds, + central_effective_areas, + transmission, + float(first_grid.azimuthal_transmission.spacing), + float(first_sg.min_elevation), + float(first_sg.elevation_spacing), + float(first_sg.min_speed_ratio), + float(first_sg.speed_ratio_spacing), + _EL, + _EL_W, + _AZ_SG, + _AZ_SG_W, + _AZ_OA_NEG, + _AZ_OA_NEG_W, + _AZ_OA_POS, + _AZ_OA_POS_W, + _SP_RATIO, + _SP_RATIO_W, + ) + + +def reference_integral_fixed_limits( + response_grid: ResponseGrid, sw, rotation_matrix +) -> float: + """Single-sample ground truth (delegates to the parallel batch).""" + rm = np.asarray(rotation_matrix, dtype=np.float64).reshape(1, 3, 3) + return float(reference_integrals_batch([response_grid], [sw], rm)[0]) diff --git a/scripts/swapi/sample_wind_solar_wind.py b/scripts/swapi/sample_wind_solar_wind.py new file mode 100644 index 000000000..83fa042b0 --- /dev/null +++ b/scripts/swapi/sample_wind_solar_wind.py @@ -0,0 +1,242 @@ +#!/usr/bin/env python3 +""" +Sample real solar wind conditions from WIND/SWE 2-min ASCII data. + +Downloads the WIND/SWE 2-min "all_orbit_phases"-excluded ASCII file for a given +year (default 2025), filters for high-quality bimaxwellian fits (fit_flag == 10 +unless --keep-flags is given), drops rows with fill values in the quantities we +care about, randomly samples N rows, and writes a CSV usable as ground-truth +solar wind parameters for plot_fit_accuracy.py and similar scripts. + +Source: https://spdf.gsfc.nasa.gov/pub/data/wind/swe/ascii/2-min/ + +Frame note: WIND publishes proton velocity in GSE. We add an approximate RTN +projection (v_R = -Vx_GSE, v_T = -Vy_GSE, v_N = Vz_GSE) which is accurate at +L1 to within the ~7° tilt between GSE-Z and the solar rotation axis — fine for +sampling realistic bulk_speed / vT / vN ranges. + +Output columns (units in header row): + year, fdoy, fit_flag, + proton_bulk_speed_km_s, proton_thermal_speed_km_s, proton_density_cm3, + proton_vx_gse_km_s, proton_vy_gse_km_s, proton_vz_gse_km_s, + v_R_km_s, v_T_km_s, v_N_km_s, proton_temperature_K + +Usage: + conda run -n imapL3 python scripts/swapi/sample_wind_solar_wind.py + conda run -n imapL3 python scripts/swapi/sample_wind_solar_wind.py \ + --year 2025 --n 1000 --seed 7 \ + --output docs/swapi/figure_src/wind_solar_wind_samples_2025.csv +""" + +import argparse +import sys +import urllib.request +from pathlib import Path + +import numpy as np + +_REPO_ROOT = Path(__file__).resolve().parents[2] +sys.path.insert(0, str(_REPO_ROOT)) + +from imap_l3_processing.constants import ( + BOLTZMANN_CONSTANT_JOULES_PER_KELVIN, + PROTON_MASS_KG, +) + +_BASE_URL = "https://spdf.gsfc.nasa.gov/pub/data/wind/swe/ascii/2-min" +_DEFAULT_CACHE_DIR = Path.home() / ".cache" / "imap_l3" / "wind_swe_2m" +_DEFAULT_OUTPUT = ( + _REPO_ROOT / "docs" / "swapi" / "figure_src" / "wind_solar_wind_samples_2025.csv" +) + +# Column indices (0-based) into the WIND ASCII record. See documentation_jck.txt +# at the source URL for the full layout. +_COL_YEAR = 0 +_COL_FDOY = 1 +_COL_FIT_FLAG = 2 +_COL_VBULK = 3 # proton bulk speed [km/s] +_COL_VX_GSE = 5 # proton Vx GSE [km/s] +_COL_VY_GSE = 7 +_COL_VZ_GSE = 9 +_COL_W_SCALAR = 11 # proton scalar thermal speed [km/s] +_COL_NP = 21 # proton density [cm^-3] + +# WIND fill values used in this dataset. +_FILL_F7 = 99999.9 +_FILL_F9 = 99999.999 + + +def _download(year: int, cache_dir: Path) -> Path: + cache_dir.mkdir(parents=True, exist_ok=True) + name = f"wind_swe_2m_sw{year}.asc" + dst = cache_dir / name + if dst.exists() and dst.stat().st_size > 0: + print(f"Using cached {dst} ({dst.stat().st_size / 1e6:.1f} MB)") + return dst + url = f"{_BASE_URL}/{name}" + print(f"Downloading {url} -> {dst}") + tmp = dst.with_suffix(dst.suffix + ".part") + with urllib.request.urlopen(url) as resp, open(tmp, "wb") as out: + size = int(resp.headers.get("Content-Length", "0")) + chunk = 1 << 20 + bytes_read = 0 + while True: + buf = resp.read(chunk) + if not buf: + break + out.write(buf) + bytes_read += len(buf) + if size: + pct = 100.0 * bytes_read / size + print( + f" {bytes_read / 1e6:7.1f} / {size / 1e6:.1f} MB ({pct:5.1f}%)", + end="\r", + ) + print() + tmp.rename(dst) + return dst + + +def _load(path: Path) -> np.ndarray: + """Load the WIND 2-min ASCII file. Comment-prefixed lines start with ';'.""" + print(f"Parsing {path} ...") + data = np.loadtxt(path, comments=";") + print(f" {data.shape[0]} rows, {data.shape[1]} columns") + return data + + +def _thermal_speed_to_temperature_K(w_km_s: np.ndarray) -> np.ndarray: + """Convert scalar thermal speed (km/s) to temperature (K) for protons. + + Using w_th = sqrt(2 k T / m), so T = m w_th^2 / (2 k). + """ + w_m_s = w_km_s * 1e3 + return PROTON_MASS_KG * w_m_s**2 / (2.0 * BOLTZMANN_CONSTANT_JOULES_PER_KELVIN) + + +def main(): + p = argparse.ArgumentParser(description=__doc__.split("\n\n")[0]) + p.add_argument("--year", type=int, default=2025) + p.add_argument("--n", type=int, default=1000, help="Number of samples to draw") + p.add_argument("--seed", type=int, default=7) + p.add_argument( + "--keep-flags", + type=int, + nargs="+", + default=[10], + help="Fit flags to keep (default: 10 = ideal proton fits). " + "See documentation_jck.txt at the source URL.", + ) + p.add_argument("--cache-dir", type=Path, default=_DEFAULT_CACHE_DIR) + p.add_argument("--output", type=Path, default=_DEFAULT_OUTPUT) + p.add_argument( + "--no-cache-download", + action="store_true", + help="Skip download even if the cached file is missing (errors instead).", + ) + args = p.parse_args() + + src = args.cache_dir / f"wind_swe_2m_sw{args.year}.asc" + if not src.exists(): + if args.no_cache_download: + sys.exit(f"Missing cached file {src} and --no-cache-download was set.") + src = _download(args.year, args.cache_dir) + + data = _load(src) + + fit_flag = data[:, _COL_FIT_FLAG].astype(int) + keep = np.isin(fit_flag, np.asarray(args.keep_flags, dtype=int)) + print(f" After fit-flag filter (flags={args.keep_flags}): {keep.sum()} rows") + + # Drop rows with fill values in the proton quantities we sample. + cols_required = [ + _COL_VBULK, + _COL_VX_GSE, + _COL_VY_GSE, + _COL_VZ_GSE, + _COL_W_SCALAR, + _COL_NP, + ] + finite = np.ones(data.shape[0], dtype=bool) + for c in cols_required: + col = data[:, c] + # Both fill values appear in this dataset; treat anything ≥ 9.99e4 as fill. + finite &= np.isfinite(col) & (np.abs(col) < 9e4) + keep &= finite + print(f" After fill-value filter: {keep.sum()} rows") + + if keep.sum() < args.n: + sys.exit( + f"Only {keep.sum()} rows survive filters but {args.n} samples requested." + ) + + rng = np.random.default_rng(args.seed) + candidates = np.flatnonzero(keep) + chosen = rng.choice(candidates, size=args.n, replace=False) + chosen.sort() + sub = data[chosen] + + year = sub[:, _COL_YEAR].astype(int) + fdoy = sub[:, _COL_FDOY] + flag = sub[:, _COL_FIT_FLAG].astype(int) + v_bulk = sub[:, _COL_VBULK] + vx_gse = sub[:, _COL_VX_GSE] + vy_gse = sub[:, _COL_VY_GSE] + vz_gse = sub[:, _COL_VZ_GSE] + w_scalar = sub[:, _COL_W_SCALAR] + n_p = sub[:, _COL_NP] + + # GSE -> RTN approximation valid at L1 (within ~7° tilt between GSE-Z and + # the solar rotation axis). Sufficient for sampling realistic SW ranges. + v_R = -vx_gse + v_T = -vy_gse + v_N = vz_gse + + T_K = _thermal_speed_to_temperature_K(w_scalar) + + args.output.parent.mkdir(parents=True, exist_ok=True) + header = ( + "year,fdoy,fit_flag," + "proton_bulk_speed_km_s,proton_thermal_speed_km_s,proton_density_cm3," + "proton_vx_gse_km_s,proton_vy_gse_km_s,proton_vz_gse_km_s," + "v_R_km_s,v_T_km_s,v_N_km_s,proton_temperature_K" + ) + out = np.column_stack( + [ + year, + fdoy, + flag, + v_bulk, + w_scalar, + n_p, + vx_gse, + vy_gse, + vz_gse, + v_R, + v_T, + v_N, + T_K, + ] + ) + fmt = "%d,%.6f,%d,%.3f,%.3f,%.4f,%.3f,%.3f,%.3f,%.3f,%.3f,%.3f,%.3e" + np.savetxt(args.output, out, fmt=fmt, header=header, comments="") + print(f"Wrote {args.n} samples -> {args.output}") + + print("\nSummary of sampled distributions:") + for label, arr, unit in [ + ("bulk_speed", v_bulk, "km/s"), + ("thermal_speed", w_scalar, "km/s"), + ("temperature", T_K, "K"), + ("density", n_p, "cm^-3"), + ("v_R", v_R, "km/s"), + ("v_T", v_T, "km/s"), + ("v_N", v_N, "km/s"), + ]: + q = np.percentile(arr, [1, 50, 99]) + print( + f" {label:>13s} [{unit}] p1={q[0]:9.3g} median={q[1]:9.3g} p99={q[2]:9.3g}" + ) + + +if __name__ == "__main__": + main() diff --git a/scripts/swapi/swapi_proton_sw_speed_demo.py b/scripts/swapi/swapi_proton_sw_speed_demo.py deleted file mode 100644 index 7579afc2f..000000000 --- a/scripts/swapi/swapi_proton_sw_speed_demo.py +++ /dev/null @@ -1,129 +0,0 @@ -import os - -import numpy as np -from matplotlib import pyplot as plt -from spacepy.pycdf import CDF -from uncertainties.unumpy import uarray, nominal_values, std_devs - -from imap_l3_processing.swapi.l3a.models import SwapiL2Data -from imap_l3_processing.swapi.l3a.science.calculate_proton_solar_wind_clock_and_deflection_angles import \ - calculate_clock_angle, calculate_deflection_angle, ClockAngleCalibrationTable -from imap_l3_processing.swapi.l3a.science.calculate_proton_solar_wind_speed import sine_fit_function, \ - calculate_proton_solar_wind_speed, calculate_proton_centers_of_mass, extract_coarse_sweep - - -def read_l2_data_from_dat(file_path: str) -> SwapiL2Data: - data = np.loadtxt(file_path) - data = data.reshape((-1, 72, 8)) - - twelve_seconds_in_nanoseconds = 12_000_000_000 - epochs = twelve_seconds_in_nanoseconds * np.arange(len(data)) - - energy_for_first_sweep = data[0, :, 2] - spin_angles = data[..., 3] - coarse_sweep_energies = data[:, 1:63, 2] - assert np.all(coarse_sweep_energies == coarse_sweep_energies[0]) - - coincident_count_rates = data[..., 7] - - fake_coincident_count_rate_uncertainties = np.sqrt(6 * coincident_count_rates) - return SwapiL2Data(epochs, - energy_for_first_sweep, - coincident_count_rates, - spin_angles, - fake_coincident_count_rate_uncertainties) - - -def read_l2_data(cdf_path: str) -> SwapiL2Data: - cdf = CDF(cdf_path) - return SwapiL2Data(cdf.raw_var("epoch")[...], - cdf["energy"][...], - cdf["swp_coin_rate"][...], - cdf["spin_angles"][...], - cdf["swp_coin_unc"][...]) - - -fig = plt.figure() - - -def plot_sweeps(data): - for i in range(len(data.sci_start_time)): - axes = fig.add_subplot(len(data.sci_start_time) + 1, 1, i + 1) - axes.loglog(data.energy, data.coincidence_count_rate[i, :], marker='.', linestyle="None") - axes.set(xlabel="Energy", ylabel="Count Rate") - - -def plot_variation_in_center_of_mass(a, phi, b, spin_angles, centers_of_mass): - fit_xs = np.arange(0, 360, 3) - fit_ys = sine_fit_function(fit_xs, a.n, phi.n % 360, b.n) - plot = fig.add_subplot(len(spin_angles) + 1, 1, len(spin_angles) + 1) - - plot.errorbar(spin_angles, nominal_values(centers_of_mass), yerr=std_devs(centers_of_mass), fmt=".") - - plot.plot(fit_xs, fit_ys) - plot.set(xlabel="Phase Angle", ylabel="Energy") - - -def run_example_dat_files(): - data = read_l2_data_from_dat("../../instrument_team_data/swapi/swapi_test_data_v4.dat") - coincident_count_rate = uarray(data.coincidence_count_rate, data.coincidence_count_rate_uncertainty) - proton_sw_speed, a, phi, b = calculate_proton_solar_wind_speed(coincident_count_rate, data.spin_angles, data.energy, - data.sci_start_time) - - clock_angle_lut = ClockAngleCalibrationTable.from_file('../../tests/test_data/swapi/example_LUT_flow_angle_v2.dat') - - clock_angle = calculate_clock_angle(clock_angle_lut, proton_sw_speed, a, phi, b) - - deflection_angle = calculate_deflection_angle(clock_angle_lut, proton_sw_speed, a, phi, b) - - print(f"clock: {clock_angle}") - print(f"deflection angle: {deflection_angle}") - - -def main(file_path): - if file_path[-4:] == ".dat": - data = read_l2_data_from_dat(file_path) - elif file_path[-4:] == ".cdf": - data = read_l2_data(os.path.abspath(file_path)) - else: - raise Exception("The demo can only load data from .dat or .cdf files!") - - coincident_count_rate = uarray(data.coincidence_count_rate, data.coincidence_count_rate_uncertainty) - - plot_sweeps(data) - - centers_of_mass, spin_angles = calculate_proton_centers_of_mass( - extract_coarse_sweep(coincident_count_rate), - extract_coarse_sweep(data.spin_angles), - extract_coarse_sweep(data.energy), - data.sci_start_time) - proton_sw_speed, a, phi, b = calculate_proton_solar_wind_speed(coincident_count_rate, data.spin_angles, data.energy, - data.sci_start_time) - - plot_variation_in_center_of_mass(a, phi, b, spin_angles, centers_of_mass) - - print(f"SW H+ speed: {proton_sw_speed}") - print(f"SW H+ clock angle: {phi}") - print(f"A {a}") - print(f"B {b}") - print(f"A/B {a / b}") - - if __name__ == "__main__": - fig.legend([f"SW H+ speed: {proton_sw_speed :.3f}", - f"SW H+ clock angle: {phi:.3f}", - f"A: {a:.3f}", - f"B: {b:.3f}", - f"A/B: {(a / b):.5f}"], - ) - - fig.set_figheight(10) - plt.show() - - -if __name__ == "__main__": - run_example_dat_files() - # try: - # file_path = sys.argv[1] - # main(file_path) - # except: - # main(os.path.abspath("test_data/imap_swapi_l2_fake-menlo-5-sweeps_20100101_v002.cdf")) diff --git a/scripts/swapi/upload_swapi_l3_dependencies.py b/scripts/swapi/upload_swapi_l3_dependencies.py index 78ae520f6..acec763f6 100644 --- a/scripts/swapi/upload_swapi_l3_dependencies.py +++ b/scripts/swapi/upload_swapi_l3_dependencies.py @@ -4,26 +4,28 @@ import imap_data_access from imap_data_access.file_validation import generate_imap_file_path -from tests.test_helpers import get_test_data_path +from tests.test_helpers import get_test_data_path, get_test_instrument_team_data_path +_swapi = get_test_data_path('swapi') files_to_upload = [ - "imap_swapi_alpha-density-temperature-lut_20240920_v000.dat", - "imap_swapi_clock-angle-and-flow-deflection-lut_20240918_v000.dat", - "imap_swapi_density-of-neutral-helium-lut_20241023_v000.dat", - "imap_swapi_proton-density-temperature-lut_20240905_v000.dat", - "imap_swapi_efficiency-lut_20241020_v000.dat", - "imap_swapi_energy-gf-pui-lut_20100101_v001.csv", - "imap_swapi_energy-gf-sw-lut_20100101_v001.csv", - "imap_swapi_instrument-response-lut_20241023_v000.zip", + _swapi / "imap_swapi_alpha-density-temperature-lut_20240920_v000.dat", + _swapi / "imap_swapi_density-of-neutral-helium-lut_20241023_v000.dat", + _swapi / "imap_swapi_efficiency-lut_20241020_v000.dat", + _swapi / "imap_swapi_energy-gf-pui-lut_20100101_v001.csv", + _swapi / "imap_swapi_energy-gf-sw-lut_20100101_v001.csv", + _swapi / "imap_swapi_instrument-response-lut_20241023_v000.zip", + get_test_instrument_team_data_path("swapi/imap_swapi_azimuthal-transmission_20260425_v001.csv"), + get_test_instrument_team_data_path("swapi/imap_swapi_central-effective-area_20260425_v001.csv"), + get_test_instrument_team_data_path("swapi/imap_swapi_passband-fit-coefficients_20260425_v001.csv"), ] upload_to_local_dir = False for file in files_to_upload: try: if upload_to_local_dir: - write_path = generate_imap_file_path(file).construct_path() - shutil.copy(get_test_data_path('swapi') / file, write_path) + write_path = generate_imap_file_path(file.name).construct_path() + shutil.copy(file, write_path) else: - imap_data_access.upload(Path(__file__).parent.parent / "swapi" / "test_data" / file) - print("Successfully uploaded", file) + imap_data_access.upload(file) + print("Successfully uploaded", file.name) except Exception as e: - print(f'File "{file}" failed to upload with exception {e}') + print(f'File "{file.name}" failed to upload with exception {e}') diff --git a/scripts/swe/create_fake_l2_cdf.py b/scripts/swe/create_fake_l2_cdf.py index 6e4f57b6d..c3fa5480e 100644 --- a/scripts/swe/create_fake_l2_cdf.py +++ b/scripts/swe/create_fake_l2_cdf.py @@ -119,10 +119,6 @@ def create_fake_swapi_l3a_cdf(l2_swepam_ion_file_path: str, "vel_p_rtn")._index sw_velocity_data = np.array([x[sw_velocity_index] for x in vd_ion[:]]) sw_speed = np.linalg.norm(sw_velocity_data, axis=1) - sw_r, sw_t, sw_n = sw_velocity_data.T - sw_x, sw_y, sw_z = sw_n, sw_t, -sw_r - deflection = np.rad2deg(np.arctan2(np.sqrt(sw_x ** 2 + sw_y ** 2), -sw_z)) - clock = np.rad2deg(np.arctan2(sw_x, -sw_y)) epochs = get_epochs_from_output_file(vd_ion) @@ -134,10 +130,6 @@ def create_fake_swapi_l3a_cdf(l2_swepam_ion_file_path: str, cdf['epoch_delta'] = epoch_deltas cdf['proton_sw_speed'] = sw_speed cdf['proton_sw_speed'].attrs["FILLVAL"] = -1e31 - cdf['proton_sw_clock_angle'] = clock - cdf['proton_sw_clock_angle'].attrs["FILLVAL"] = -1e31 - cdf['proton_sw_deflection_angle'] = deflection - cdf['proton_sw_deflection_angle'].attrs["FILLVAL"] = -1e31 ATTITUDE_DATA = """Year DOY Secofday Flag RTN_r RTN_t RTN_n J2GCI_x J2GCI_y J2GCI_z GSE_x GSE_y GSE_z diff --git a/tests/cdf/test_imap_attribute_manager.py b/tests/cdf/test_imap_attribute_manager.py index 5f597587b..f43ad1025 100644 --- a/tests/cdf/test_imap_attribute_manager.py +++ b/tests/cdf/test_imap_attribute_manager.py @@ -39,14 +39,6 @@ def test_load_instrument_and_variable_attributes_with_level(self): manager.get_variable_attributes('proton_sw_speed_uncert')) self.assertEqual(self.base_manager.get_variable_attributes('proton_sw_speed'), manager.get_variable_attributes('proton_sw_speed')) - self.assertEqual(self.base_manager.get_variable_attributes('proton_sw_clock_angle'), - manager.get_variable_attributes('proton_sw_clock_angle')) - self.assertEqual(self.base_manager.get_variable_attributes('proton_sw_clock_angle_uncert'), - manager.get_variable_attributes('proton_sw_clock_angle_uncert')) - self.assertEqual(self.base_manager.get_variable_attributes('proton_sw_deflection_angle'), - manager.get_variable_attributes('proton_sw_deflection_angle')) - self.assertEqual(self.base_manager.get_variable_attributes('proton_sw_deflection_angle_uncert'), - manager.get_variable_attributes('proton_sw_deflection_angle_uncert')) self.assertEqual(self.base_manager.get_variable_attributes('alpha_sw_speed'), manager.get_variable_attributes('alpha_sw_speed')) diff --git a/tests/integration/integration_test_helpers.py b/tests/integration/integration_test_helpers.py index c19957b33..1683f9a2d 100644 --- a/tests/integration/integration_test_helpers.py +++ b/tests/integration/integration_test_helpers.py @@ -70,6 +70,20 @@ def fake_download(file: Path | str): assert full_path.exists(), f"Expected {full_path} to exist, but it doesn't." return full_path + +def stage_input_file(file_path: Path) -> Path: + """Copy a fixture into its canonical path under ``imap_data_access.config['DATA_DIR']``. + + Mirrors ``mock_imap_data_access.__enter__``'s staging behaviour as a one-shot + helper, for tests that hit the live SDC for most inputs but want to drop a + single locally-checked-in file (typically a dependency JSON) into the spot + ``imap_data_access.download`` resolves to. + """ + destination = generate_imap_file_path(file_path.name).construct_path() + destination.parent.mkdir(parents=True, exist_ok=True) + shutil.copy(file_path, destination) + return destination + metakernel_text = """ \\begindata @@ -160,9 +174,7 @@ def __enter__(self): for file_path in self.input_files: try: - paths_to_generate = generate_imap_file_path(file_path.name).construct_path() - paths_to_generate.parent.mkdir(exist_ok=True, parents=True) - shutil.copy(src=file_path, dst=paths_to_generate) + stage_input_file(file_path) except: pass diff --git a/tests/integration/test_data/swapi/imap_swapi_l3a_alpha-sw_20260101_v001.json b/tests/integration/test_data/swapi/imap_swapi_l3a_alpha-sw_20260101_v001.json new file mode 100644 index 000000000..dee83cf83 --- /dev/null +++ b/tests/integration/test_data/swapi/imap_swapi_l3a_alpha-sw_20260101_v001.json @@ -0,0 +1,26 @@ +[ + {"type": "science", "files": ["imap_swapi_l2_sci_20260101_v001.cdf"]}, + {"type": "science", "files": ["imap_mag_l2_norm-rtn_20260101_v001.cdf"]}, + {"type": "ancillary", "files": ["imap_swapi_alpha-density-temperature-lut_20250125_v001.dat"]}, + {"type": "ancillary", "files": ["imap_swapi_efficiency-lut_20241020_v001.dat"]}, + {"type": "ancillary", "files": ["imap_swapi_energy-gf-pui-lut_20100101_v003.csv"]}, + {"type": "ancillary", "files": ["imap_swapi_instrument-response-lut_20241023_v001.zip"]}, + {"type": "ancillary", "files": ["imap_swapi_density-of-neutral-helium-lut_20241023_v002.dat"]}, + {"type": "ancillary", "files": ["imap_swapi_hydrogen-inflow-vector_20100101_v001.dat"]}, + {"type": "ancillary", "files": ["imap_swapi_helium-inflow-vector_20100101_v001.dat"]}, + {"type": "ancillary", "files": ["imap_swapi_azimuthal-transmission_20250924_v001.csv"]}, + {"type": "ancillary", "files": ["imap_swapi_central-effective-area_20250924_v001.csv"]}, + {"type": "ancillary", "files": ["imap_swapi_passband-fit-coefficients_20250924_v001.csv"]}, + {"type": "spice", "files": [ + "naif0012.tls", + "pck00011.tpc", + "imap_130.tf", + "imap_science_120.tf", + "imap_sclk_0161.tsc", + "de440.bsp", + "imap_recon_20250925_20260420_v01.bsp", + "imap_2025_358_2026_085_004.ah.bc", + "imap_dps_2025_363_2025_365_001.ah.bc", + "imap_dps_2025_359_2026_115_002.ah.bc" + ]} +] diff --git a/tests/integration/test_data/swapi/imap_swapi_l3a_proton-sw_20260101_v001.json b/tests/integration/test_data/swapi/imap_swapi_l3a_proton-sw_20260101_v001.json new file mode 100644 index 000000000..994558c14 --- /dev/null +++ b/tests/integration/test_data/swapi/imap_swapi_l3a_proton-sw_20260101_v001.json @@ -0,0 +1,25 @@ +[ + {"type": "science", "files": ["imap_swapi_l2_sci_20260101_v001.cdf"]}, + {"type": "ancillary", "files": ["imap_swapi_alpha-density-temperature-lut_20250125_v001.dat"]}, + {"type": "ancillary", "files": ["imap_swapi_efficiency-lut_20241020_v001.dat"]}, + {"type": "ancillary", "files": ["imap_swapi_energy-gf-pui-lut_20100101_v003.csv"]}, + {"type": "ancillary", "files": ["imap_swapi_instrument-response-lut_20241023_v001.zip"]}, + {"type": "ancillary", "files": ["imap_swapi_density-of-neutral-helium-lut_20241023_v002.dat"]}, + {"type": "ancillary", "files": ["imap_swapi_hydrogen-inflow-vector_20100101_v001.dat"]}, + {"type": "ancillary", "files": ["imap_swapi_helium-inflow-vector_20100101_v001.dat"]}, + {"type": "ancillary", "files": ["imap_swapi_azimuthal-transmission_20250924_v001.csv"]}, + {"type": "ancillary", "files": ["imap_swapi_central-effective-area_20250924_v001.csv"]}, + {"type": "ancillary", "files": ["imap_swapi_passband-fit-coefficients_20250924_v001.csv"]}, + {"type": "spice", "files": [ + "naif0012.tls", + "pck00011.tpc", + "imap_130.tf", + "imap_science_120.tf", + "imap_sclk_0161.tsc", + "de440.bsp", + "imap_recon_20250925_20260420_v01.bsp", + "imap_2025_358_2026_085_004.ah.bc", + "imap_dps_2025_363_2025_365_001.ah.bc", + "imap_dps_2025_359_2026_115_002.ah.bc" + ]} +] diff --git a/tests/integration/test_swapi_processor_integration.py b/tests/integration/test_swapi_processor_integration.py new file mode 100644 index 000000000..74c0d2c4e --- /dev/null +++ b/tests/integration/test_swapi_processor_integration.py @@ -0,0 +1,187 @@ +"""End-to-end subprocess integration tests for the SWAPI L3a processors. + +Mirrors test_swe_processor_integration.py: runs ``imap_l3_data_processor.py`` as +a subprocess against staged test data, exercising the full real path — +dependency manifest deserialization → SPICE furnishing → SwapiL3ADependencies +loading of all 13 ancillaries → SwapiProcessor.process() → process_l3a_* +→ save_data → CDF written to disk. + +SWAPI-specific inputs live in ``tests/integration/test_data/swapi/``. SPICE +kernels are pulled from the shared ``tests/integration/test_data/spice/`` dir. +The L2 science CDF is generated on the fly by retiming an existing synthetic +spectrum into the SPICE coverage window — keeping a date-shifted copy on disk +would just be duplicate data. +""" + +import os +import subprocess +import sys +import unittest +from pathlib import Path +from unittest import skipUnless + +import numpy as np +import imap_data_access +import numpy.testing +from imap_data_access import ScienceFilePath +from spacepy.pycdf import CDF +import datetime + +import imap_l3_processing +from tests.integration.integration_test_helpers import stage_input_file + +SWAPI_INTEGRATION_DATA_DIR = Path(__file__).parent / "test_data" / "swapi" + + +class SwapiProcessorIntegration(unittest.TestCase): + @skipUnless(os.environ.get("IMAP_API_KEY"), "requires production API key") + def test_proton_sw_with_production_data(self): + """ + With real data and with full dependency setup, validate that the CDF output + matches hardcoded expected values to check for unexpected changes + """ + + expected_values = { + 'epoch': datetime.datetime(2025, 12, 31, 23, 59, 35, 6000), + 'proton_sw_speed': 474.57455, + 'proton_sw_speed_uncert': 0.36071813, + 'proton_sw_speed_sun': 475.3688, + 'proton_sw_speed_sun_uncert': 0.3539945, + 'epoch_delta': 30000000000, + 'proton_sw_temperature': 55131.13, + 'proton_sw_temperature_uncert': 2008.7198, + 'proton_sw_density': 2.6919234, + 'proton_sw_density_uncert': 0.049627114, + 'proton_sw_bulk_velocity_rtn_sun': [474.0841, 30.623661, 16.79102], + 'proton_sw_bulk_velocity_rtn_sun_covariance': [[0.1169681, -0.0341877, 0.13108876], + [-0.0341877, 0.8606747, -0.23923519], + [0.13108876, -0.23923519, 1.3221142]], + 'proton_sw_bulk_velocity_rtn_sc': [474.14252, 1.0705476, 20.217045], + 'proton_sw_bulk_velocity_rtn_sc_covariance': [[0.1169681, -0.0341877, 0.13108876], + [-0.0341877, 0.8606747, -0.23923519], + [0.13108876, -0.23923519, 1.3221142]], + 'swp_flags': 0 + } + + root_dir = Path(imap_l3_processing.__file__).parent.parent + os.chdir(root_dir) + imap_data_access.config["DATA_DIR"] = root_dir / "data" + + dependency_filename = "imap_swapi_l3a_proton-sw_20260101_v001.json" + stage_input_file(SWAPI_INTEGRATION_DATA_DIR / dependency_filename) + + expected_file_path = ScienceFilePath( + "imap_swapi_l3a_proton-sw_20260101_v001.cdf" + ).construct_path() + if expected_file_path.parent.exists(): + expected_file_path.unlink(missing_ok=True) + + result = subprocess.run( + [ + sys.executable, + "imap_l3_data_processor.py", + "--instrument", "swapi", + "--data-level", "l3a", + "--descriptor", "proton-sw", + "--start-date", "20260101", + "--version", "v001", + "--dependency", dependency_filename, + ] + ) + + self.assertEqual(0, result.returncode) + self.assertTrue(expected_file_path.exists()) + + + bulk_speed_atol = 1e-3 * float(expected_values['proton_sw_speed']) + + with CDF(str(expected_file_path)) as cdf: + for key in expected_values.keys(): + actual_value = cdf[key][0] + if 'bulk_velocity' in key: + rtol, atol = 1e-3, bulk_speed_atol + elif key.endswith('_uncert'): + rtol, atol = 1e-2, 0.0 + else: + rtol, atol = 1e-3, 0.0 + try: + numpy.testing.assert_allclose( + actual_value, expected_values[key], rtol=rtol, atol=atol, err_msg=key + ) + except TypeError: + self.assertEqual(expected_values[key], actual_value, msg=key) + + + + @skipUnless(os.environ.get("IMAP_API_KEY"), "requires production API key") + def test_alpha_sw_with_production_data(self): + """ + With real data and with full dependency setup, validate that the alpha-sw + CDF output matches hardcoded expected values to check for unexpected changes. + Unlike proton-sw, alpha-sw requires a MAG RTN science input (L2 preferred, + L1D fallback) for the field-aligned drift constraint. + """ + + # TODO: replace placeholders with values captured from a real run, matching + # the proton-sw pattern. Until then the test still guards subprocess success, + # CDF creation, and presence + finiteness of every alpha-sw variable. + expected_keys = [ + 'epoch', + 'epoch_delta', + 'alpha_sw_density', + 'alpha_sw_density_uncert', + 'alpha_sw_temperature', + 'alpha_sw_temperature_uncert', + 'alpha_sw_velocity_rtn', + 'alpha_sw_velocity_covariance_rtn', + 'alpha_sw_delta_v', + 'alpha_sw_delta_v_uncert', + 'alpha_sw_b_hat_rtn', + 'swp_flags', + ] + + root_dir = Path(imap_l3_processing.__file__).parent.parent + os.chdir(root_dir) + imap_data_access.config["DATA_DIR"] = root_dir / "data" + + dependency_filename = "imap_swapi_l3a_alpha-sw_20260101_v001.json" + stage_input_file(SWAPI_INTEGRATION_DATA_DIR / dependency_filename) + + expected_file_path = ScienceFilePath( + "imap_swapi_l3a_alpha-sw_20260101_v001.cdf" + ).construct_path() + if expected_file_path.parent.exists(): + expected_file_path.unlink(missing_ok=True) + + result = subprocess.run( + [ + sys.executable, + "imap_l3_data_processor.py", + "--instrument", "swapi", + "--data-level", "l3a", + "--descriptor", "alpha-sw", + "--start-date", "20260101", + "--version", "v001", + "--dependency", dependency_filename, + ] + ) + + self.assertEqual(0, result.returncode) + self.assertTrue(expected_file_path.exists()) + + with CDF(str(expected_file_path)) as cdf: + for key in expected_keys: + self.assertIn(key, cdf, msg=f"missing variable {key}") + value = cdf[key][0] + if isinstance(value, datetime.datetime): + continue + arr = np.asarray(value) + if np.issubdtype(arr.dtype, np.floating): + self.assertTrue( + np.all(np.isfinite(arr)), + msg=f"{key} contains non-finite values: {arr}", + ) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/integration/test_swe_processor_integration.py b/tests/integration/test_swe_processor_integration.py index 82e266444..bc5a9e87e 100644 --- a/tests/integration/test_swe_processor_integration.py +++ b/tests/integration/test_swe_processor_integration.py @@ -1,6 +1,8 @@ import os +import shutil import subprocess import sys +import tempfile import unittest from pathlib import Path from unittest import skipUnless @@ -14,7 +16,6 @@ from tests.integration.integration_test_helpers import mock_imap_data_access from tests.test_helpers import get_run_local_data_path - class SweProcessorIntegration(unittest.TestCase): @skipUnless(os.environ.get("IMAP_API_KEY"), "requires production API key") def test_swe_processor_with_production_data(self): @@ -58,30 +59,34 @@ def test_swe_processor_with_local_data(self): if expected_file_path.parent.exists(): expected_file_path.unlink(missing_ok=True) - input_files = [] - for file in Path("tests/integration/test_data/swe").iterdir(): - if file.is_file(): - input_files.append(file) - os.environ["IMAP_DATA_DIR"] = str(OUTPUT_DATA_DIR) - with mock_imap_data_access(OUTPUT_DATA_DIR, input_files): - result = subprocess.run( - [ - sys.executable, - "imap_l3_data_processor.py", - "--instrument", - "swe", - "--data-level", - "l3", - "--descriptor", - "sci", - "--start-date", - "20260120", - "--version", - "v001", - "--dependency", - "imap_swe_l3_sci-e979d33c_20260120_v001.json", - ], - ) + with tempfile.TemporaryDirectory() as staged_inputs_dir: + input_files = [] + for file in Path("tests/integration/test_data/swe").iterdir(): + if file.is_file(): + staged = Path(staged_inputs_dir, file.name) + shutil.copyfile(file, staged) + input_files.append(staged) + os.environ["IMAP_DATA_DIR"] = str(OUTPUT_DATA_DIR) + with mock_imap_data_access(OUTPUT_DATA_DIR, input_files): + result = subprocess.run( + [ + sys.executable, + "imap_l3_data_processor.py", + "--instrument", + "swe", + "--data-level", + "l3", + "--descriptor", + "sci", + "--start-date", + "20260120", + "--version", + "v001", + "--dependency", + "imap_swe_l3_sci-e979d33c_20260120_v001.json", + ], + ) + + self.assertEqual(0, result.returncode) + self.assertTrue(expected_file_path.exists()) - self.assertEqual(0, result.returncode) - self.assertTrue(expected_file_path.exists()) diff --git a/tests/swapi/_helpers.py b/tests/swapi/_helpers.py new file mode 100644 index 000000000..098a80a5b --- /dev/null +++ b/tests/swapi/_helpers.py @@ -0,0 +1,88 @@ +from typing import Optional + +import numpy as np + +from imap_l3_processing.constants import PROTON_MASS_KG +from imap_l3_processing.swapi.l3a.science.solar_wind.forward_model import ( + model_solar_wind_ideal_coincidence_rates, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.params import SolarWindParams +from imap_l3_processing.swapi.response.deadtime import deadtime_factor +from imap_l3_processing.swapi.response.swapi_response import SwapiResponse +from tests.test_helpers import get_test_instrument_team_data_path + + +# Calibration CSVs shipped with the repo. Loading the full SwapiResponse from +# these triggers the same code path the production pipeline uses. +SWAPI_AZIMUTHAL_TRANSMISSION_PATH = get_test_instrument_team_data_path( + "swapi/imap_swapi_azimuthal-transmission_20260425_v001.csv" +) +SWAPI_CENTRAL_EFFECTIVE_AREA_PATH = get_test_instrument_team_data_path( + "swapi/imap_swapi_central-effective-area_20260425_v001.csv" +) +SWAPI_PASSBAND_FIT_COEFFICIENTS_PATH = get_test_instrument_team_data_path( + "swapi/imap_swapi_passband-fit-coefficients_20260425_v001.csv" +) + + +def load_swapi_response( + warm_cache_voltages: Optional[np.ndarray] = None, +) -> SwapiResponse: + """Build a `SwapiResponse` from the CSV files..""" + response = SwapiResponse.from_files( + SWAPI_AZIMUTHAL_TRANSMISSION_PATH, + SWAPI_CENTRAL_EFFECTIVE_AREA_PATH, + SWAPI_PASSBAND_FIT_COEFFICIENTS_PATH, + ) + if warm_cache_voltages is not None: + response.warm_cache(warm_cache_voltages) + return response + + +# Nominal IMAP_SWAPI → IMAP_RTN rotation at spin phase 0: spin axis (+Y_SWAPI, +# the boresight) along -R_RTN (SWAPI looks sunward), X_SWAPI along +T_RTN, +# Z_SWAPI along +N_RTN. Columns are the SWAPI basis vectors expressed in RTN, +# so `R @ v_swapi = v_rtn` and `R.T @ v_rtn = v_swapi`. The default bulk +# velocity (+450, 0, 0) km/s arrives along -Y_SWAPI under this rotation. +# 71-bin realistic SWAPI science sweep (62 coarse bins log-spaced 10000→50 V +# plus 9 fine bins log-spaced 1000→500 V), matching the production sweep +# shape used by `SWAPI_COARSE_SWEEP_BINS` and `SWAPI_FINE_SWEEP_BINS`. +# Caution: The fine sweeps in real data typically start near the peak, +# this will only start near the peak if the peak is near 1 keV +REALISTIC_ESA_VOLTAGES = np.concatenate( + [ + np.logspace(np.log10(10000.0), np.log10(50.0), 62), + np.logspace(np.log10(1000.0), np.log10(500.0), 9), + ] +) + + +NOMINAL_SWAPI_TO_RTN_ROTATION = np.array( + [ + [0.0, -1.0, 0.0], + [1.0, 0.0, 0.0], + [0.0, 0.0, 1.0], + ] +) + + +def proton_params( + *, + density: float = 5.0, + velocity_rtn=(450.0, 0, 0.0), + temperature: float = 100_000.0, +) -> SolarWindParams: + """Solar-wind proton `SolarWindParams` at typical slow-wind values.""" + return SolarWindParams( + density=density, + bulk_velocity_rtn=np.asarray(velocity_rtn, dtype=float), + temperature=temperature, + mass=PROTON_MASS_KG, + ) + + +def synthesize_count_rates(ctx, sw_params: SolarWindParams) -> np.ndarray: + """Forward-model deadtime-applied coincidence count rates from `sw_params` + using the same model the fitter inverts. No Poisson noise.""" + ideal, _ = model_solar_wind_ideal_coincidence_rates(sw_params, ctx) + return ideal * deadtime_factor(ideal) diff --git a/tests/swapi/l3a/science/solar_wind/__init__.py b/tests/swapi/l3a/science/solar_wind/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/tests/swapi/l3a/science/solar_wind/alpha/__init__.py b/tests/swapi/l3a/science/solar_wind/alpha/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/tests/swapi/l3a/science/solar_wind/alpha/test_calculate_alpha_solar_wind_moments.py b/tests/swapi/l3a/science/solar_wind/alpha/test_calculate_alpha_solar_wind_moments.py new file mode 100644 index 000000000..3e3876131 --- /dev/null +++ b/tests/swapi/l3a/science/solar_wind/alpha/test_calculate_alpha_solar_wind_moments.py @@ -0,0 +1,1075 @@ +import unittest +from unittest.mock import MagicMock, patch + +import numba +import numpy as np +from uncertainties import ufloat + +from imap_l3_processing.constants import ( + ALPHA_MASS_PER_CHARGE_M_P_PER_E, + ALPHA_PARTICLE_CHARGE_COULOMBS, + ALPHA_PARTICLE_MASS_KG, + PROTON_CHARGE_COULOMBS, + PROTON_MASS_KG, + PROTON_MASS_PER_CHARGE_M_P_PER_E, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.alpha import ( + calculate_alpha_solar_wind_moments as alpha_module, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.alpha.calculate_alpha_solar_wind_moments import ( + AlphaSolarWindMoments, + _AlphaEvaluator, + fit_solar_wind_alpha_moments, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.fit_context import ( + SolarWindFitContext, + build_solar_wind_fit_context, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.forward_model import ( + model_solar_wind_ideal_coincidence_rates, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.proton.fit_model import ( + ProtonSolarWindFitResult, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.params import SolarWindParams +from imap_l3_processing.swapi.quality_flags import SwapiL3Flags +from imap_l3_processing.swapi.response.deadtime import deadtime_factor +from imap_l3_processing.swapi.constants import SWAPI_K_FACTOR +from imap_l3_processing.swapi.response.swapi_response import SwapiResponse +from tests.swapi._helpers import load_swapi_response + + +# ----- module-level fixture constants -------------------------------------- + +# 5-sweep coarse-only voltage axis: 62 bins/sweep × 5 sweeps = 310 measurements, +# matching the Stage-2 axis described in the doc. The voltage values themselves +# are arbitrary log-spaced decreasing — `get_alpha_peak_indices` requires +# strictly decreasing energies, but the exact endpoints are not load-bearing +# here. The L2 voltage range divided by `SWAPI_L2_K_FACTOR` would give the +# physical voltages SWAPI sweeps in flight. +_N_BINS_PER_SWEEP = 62 +_N_SWEEPS = 5 +_ONE_SWEEP_VOLTAGE = np.logspace( + np.log10(3500.0), np.log10(140.0), _N_BINS_PER_SWEEP +) +_FIVE_SWEEP_VOLTAGE = np.broadcast_to(_ONE_SWEEP_VOLTAGE, (_N_SWEEPS, _N_BINS_PER_SWEEP)).copy() +_N_MEAS = _FIVE_SWEEP_VOLTAGE.size + +# Slow-wind ground-truth moments. RTN +R points sunward, so a sunward solar +# wind has v_R = -450 km/s. B̂ is taken along -R̂ so a positive Δv pushes +# alphas toward more-negative v_R (along +B̂). +_TRUE_PROTON_DENSITY_CM3 = 5.0 +_TRUE_PROTON_TEMPERATURE_K = 1.0e5 +_TRUE_PROTON_VELOCITY_RTN = np.array([-450.0, 0.0, 0.0]) +_TRUE_ALPHA_DENSITY_CM3 = 0.2 +_TRUE_ALPHA_TEMPERATURE_K = 4.0e5 +_TRUE_DELTA_V_KM_S = 30.0 +_B_HAT_RTN = np.array([-1.0, 0.0, 0.0]) + +# Stage-1 proton uncertainties used to seed `ProtonSolarWindFitResult`. +# Values are chosen small but nonzero so `bulk_velocity_rtn_covariance` +# (used downstream by `fit_solar_wind_alpha_moments` to add +# `σ_Δv²·B̂B̂ᵀ`) is well-defined. The exact values are not pinned by any +# test — they only need to be finite and positive. +_STAGE1_PROTON_DENSITY_SIGMA_CM3 = 0.05 +_STAGE1_PROTON_TEMPERATURE_SIGMA_K = 1.0e3 +_STAGE1_PROTON_VELOCITY_SIGMA_KM_S = 1.0 + +# Predicted ESA voltage of the alpha bump on the fixture spectrum. SWAPI's +# central-speed conversion is `v² = 2·k·V·(e/m_p) / (m/q in m_p/e)`, so +# inverting for V at the alpha truth speed (|v_p| + Δv along -R̂, ≈ 480 km/s) +# gives V_α ≈ 1264 V on this fixture. +_ALPHA_TRUTH_SPEED_M_S = ( + float(np.linalg.norm(_TRUE_PROTON_VELOCITY_RTN)) + _TRUE_DELTA_V_KM_S +) * 1.0e3 +_ALPHA_PEAK_VOLTAGE = ( + _ALPHA_TRUTH_SPEED_M_S**2 + * ALPHA_MASS_PER_CHARGE_M_P_PER_E + / (2.0 * SWAPI_K_FACTOR * (PROTON_CHARGE_COULOMBS / PROTON_MASS_KG)) +) + + +# ----- helpers -------------------------------------------------------------- + + +def _load_swapi_response_with_warm_cache() -> SwapiResponse: + """Load `SwapiResponse` from the shipped instrument-team CSVs and warm + its passband cache for the fixture voltages. + + `create_response_grid` raises if the passband cache isn't warm for the + requested voltage, so callers building a fit context off this response + must warm it first.""" + return load_swapi_response(warm_cache_voltages=_FIVE_SWEEP_VOLTAGE) + + +def _identity_rotation_matrices(n: int = _N_MEAS) -> np.ndarray: + """Identity SWAPI→RTN rotations so the instrument frame coincides with + RTN — keeps the wind-direction interpretation straightforward. + + `np.broadcast_to` produces a read-only view; `.copy()` materialises a + contiguous writeable array, which the JIT'd Stage-2 forward model + expects.""" + return np.broadcast_to(np.eye(3), (n, 3, 3)).copy() + + +def _build_proton_fit_result( + *, + density: float = _TRUE_PROTON_DENSITY_CM3, + temperature: float = _TRUE_PROTON_TEMPERATURE_K, + velocity_rtn=_TRUE_PROTON_VELOCITY_RTN, + bad_fit_flag: int = int(SwapiL3Flags.NONE), +) -> ProtonSolarWindFitResult: + """Build a `ProtonSolarWindFitResult` (Stage-1 output) with small but + nonzero uncertainties so `bulk_velocity_rtn_covariance` is well-defined + and Stage-2 has something to add `σ_Δv²·B̂B̂ᵀ` to.""" + return ProtonSolarWindFitResult( + density=ufloat(density, _STAGE1_PROTON_DENSITY_SIGMA_CM3), + temperature=ufloat(temperature, _STAGE1_PROTON_TEMPERATURE_SIGMA_K), + bulk_velocity_rtn=( + ufloat(velocity_rtn[0], _STAGE1_PROTON_VELOCITY_SIGMA_KM_S), + ufloat(velocity_rtn[1], _STAGE1_PROTON_VELOCITY_SIGMA_KM_S), + ufloat(velocity_rtn[2], _STAGE1_PROTON_VELOCITY_SIGMA_KM_S), + ), + bad_fit_flag=int(bad_fit_flag), + ) + + +def _assert_moments_are_nan_filled(test, result) -> None: + """Assert that every moment field on an `AlphaSolarWindMoments` + fill-valued result is NaN. Used by the two pre-fit guard branches + (Stage-1 failed, MAG B̂ NaN) which both short-circuit to fill values.""" + test.assertTrue(np.isnan(result.density.nominal_value)) + test.assertTrue(np.isnan(result.temperature.nominal_value)) + test.assertTrue(np.isnan(result.delta_v.nominal_value)) + for component in result.bulk_velocity_rtn: + test.assertTrue(np.isnan(component.nominal_value)) + + +def _synthesize_proton_plus_alpha_count_rate( + *, + response: SwapiResponse, + voltage: np.ndarray, + rotation_matrices: np.ndarray, + proton_density: float = _TRUE_PROTON_DENSITY_CM3, + proton_temperature: float = _TRUE_PROTON_TEMPERATURE_K, + proton_velocity_rtn: np.ndarray = _TRUE_PROTON_VELOCITY_RTN, + alpha_density: float = _TRUE_ALPHA_DENSITY_CM3, + alpha_temperature: float = _TRUE_ALPHA_TEMPERATURE_K, + delta_v: float = _TRUE_DELTA_V_KM_S, + b_hat: np.ndarray = _B_HAT_RTN, +): + """Forward-model deadtime-applied count rates for a (proton + alpha) + spectrum on the fixture voltage axis. Pass `alpha_density=0.0` for a + proton-only spectrum. + + Returns the observed count rate, the (pre-deadtime) proton-only true + rate, and the alpha velocity v_α = v_p + Δv·B̂. The proton true rate is + the same Stage-2 calls "frozen proton model rate" — useful for + initial-guess setup as well.""" + proton_params = SolarWindParams( + density=proton_density, + bulk_velocity_rtn=np.asarray(proton_velocity_rtn, dtype=float), + temperature=proton_temperature, + mass=PROTON_MASS_KG, + ) + alpha_velocity = np.asarray(proton_velocity_rtn, dtype=float) + delta_v * b_hat + alpha_params = SolarWindParams( + density=alpha_density, + bulk_velocity_rtn=alpha_velocity, + temperature=alpha_temperature, + mass=ALPHA_PARTICLE_MASS_KG, + ) + proton_ctx = build_solar_wind_fit_context( + count_rate=np.zeros(voltage.shape), + esa_voltage=voltage, + swapi_response=response, + central_effective_area_scale=1.0, + rotation_matrices=rotation_matrices, + mass_kg=PROTON_MASS_KG, + mass_per_charge_m_p_per_e=PROTON_MASS_PER_CHARGE_M_P_PER_E, + ) + proton_true, _ = model_solar_wind_ideal_coincidence_rates(proton_params, proton_ctx) + if alpha_density > 0.0: + alpha_ctx = build_solar_wind_fit_context( + count_rate=np.zeros(voltage.shape), + esa_voltage=voltage, + swapi_response=response, + central_effective_area_scale=1.0, + rotation_matrices=rotation_matrices, + mass_kg=ALPHA_PARTICLE_MASS_KG, + mass_per_charge_m_p_per_e=ALPHA_MASS_PER_CHARGE_M_P_PER_E, + ) + alpha_true, _ = model_solar_wind_ideal_coincidence_rates(alpha_params, alpha_ctx) + total_true = proton_true + alpha_true + else: + total_true = proton_true + observed = (total_true * deadtime_factor(total_true)).reshape(voltage.shape) + return observed, proton_true, alpha_velocity + + +class _SyntheticAlphaSpectrumFixture: + """Cached forward-model fixture: builds the SwapiResponse, warm-caches + its passband, and synthesizes a (proton + alpha) count-rate spectrum + once for all subclass tests. Class-level so JIT compile + the pandas + pivot inside `_build_passband_array` are paid one time.""" + + @classmethod + def setUpClass(cls): + cls.response = _load_swapi_response_with_warm_cache() + cls.voltage = _FIVE_SWEEP_VOLTAGE + cls.rotation_matrices = _identity_rotation_matrices() + observed, proton_true, alpha_v = _synthesize_proton_plus_alpha_count_rate( + response=cls.response, + voltage=cls.voltage, + rotation_matrices=cls.rotation_matrices, + ) + cls.observed_count_rate = observed + cls.proton_true_rate = proton_true + cls.alpha_velocity_rtn = alpha_v + + +# ----- fit_solar_wind_alpha_moments — guard conditions --------------------- + + +class TestFitAlphaMomentsGuardBranches(unittest.TestCase): + """Tests for `fit_solar_wind_alpha_moments` — pre-fit guard branches (proton fill values, missing/non-finite MAG B̂) must short-circuit to a NaN-filled moments result with the proton's flag propagated before any forward-model evaluation.""" + + def test_proton_fill_values_propagate_proton_flag_to_alpha(self): + """When the Stage-1 proton fit returned NaN moments (fill values), the alpha result inherits the proton's `bad_fit_flag` unchanged — no separate alpha-side flag is added for "stage 1 failed".""" + proton_moments = _build_proton_fit_result( + velocity_rtn=np.array([np.nan, np.nan, np.nan]), + bad_fit_flag=int(SwapiL3Flags.FIT_ERROR), + ) + result = fit_solar_wind_alpha_moments( + count_rate=np.zeros(_FIVE_SWEEP_VOLTAGE.shape), + esa_voltage=_FIVE_SWEEP_VOLTAGE, + measurement_time=np.zeros(_N_MEAS), + # `swapi_response` should not be touched on this branch — but + # pass a real one so an unexpected dereference would not crash. + swapi_response=_load_swapi_response_with_warm_cache(), + proton_moments=proton_moments, + magnetic_field_direction=_B_HAT_RTN, + alpha_effective_area_scale=1.0, + proton_effective_area_scale=1.0, + rotation_matrices=_identity_rotation_matrices(), + ) + self.assertEqual(result.bad_fit_flag, int(SwapiL3Flags.FIT_ERROR)) + + def test_proton_fill_values_return_nan_filled_alpha_moments(self): + """When the Stage-1 proton fit returned NaN moments, every alpha moment field is filled with NaN so downstream consumers can distinguish "no fit attempted" from "fit succeeded with degenerate values".""" + proton_moments = _build_proton_fit_result( + velocity_rtn=np.array([np.nan, np.nan, np.nan]), + bad_fit_flag=int(SwapiL3Flags.FIT_ERROR), + ) + result = fit_solar_wind_alpha_moments( + count_rate=np.zeros(_FIVE_SWEEP_VOLTAGE.shape), + esa_voltage=_FIVE_SWEEP_VOLTAGE, + measurement_time=np.zeros(_N_MEAS), + swapi_response=_load_swapi_response_with_warm_cache(), + proton_moments=proton_moments, + magnetic_field_direction=_B_HAT_RTN, + alpha_effective_area_scale=1.0, + proton_effective_area_scale=1.0, + rotation_matrices=_identity_rotation_matrices(), + ) + _assert_moments_are_nan_filled(self, result) + + def test_mag_gap_propagates_proton_flag_with_no_dedicated_bit(self): + """A NaN component in `magnetic_field_direction` is treated as an ordinary data gap: the fitter short-circuits and propagates the proton's flag unchanged with no dedicated MAG-gap bit added.""" + proton_moments = _build_proton_fit_result() + nan_b_hat = np.array([np.nan, 0.0, 0.0]) + result = fit_solar_wind_alpha_moments( + count_rate=np.zeros(_FIVE_SWEEP_VOLTAGE.shape), + esa_voltage=_FIVE_SWEEP_VOLTAGE, + measurement_time=np.zeros(_N_MEAS), + swapi_response=_load_swapi_response_with_warm_cache(), + proton_moments=proton_moments, + magnetic_field_direction=nan_b_hat, + alpha_effective_area_scale=1.0, + proton_effective_area_scale=1.0, + rotation_matrices=_identity_rotation_matrices(), + ) + self.assertEqual(result.bad_fit_flag, int(SwapiL3Flags.NONE)) + + def test_nan_magnetic_field_direction_returns_nan_filled_moments(self): + """A NaN B̂ short-circuits before any forward-model call and every moment field is filled with NaN, mirroring the Stage-1-failure guard.""" + proton_moments = _build_proton_fit_result() + nan_b_hat = np.array([np.nan, 0.0, 0.0]) + result = fit_solar_wind_alpha_moments( + count_rate=np.zeros(_FIVE_SWEEP_VOLTAGE.shape), + esa_voltage=_FIVE_SWEEP_VOLTAGE, + measurement_time=np.zeros(_N_MEAS), + swapi_response=_load_swapi_response_with_warm_cache(), + proton_moments=proton_moments, + magnetic_field_direction=nan_b_hat, + alpha_effective_area_scale=1.0, + proton_effective_area_scale=1.0, + rotation_matrices=_identity_rotation_matrices(), + ) + _assert_moments_are_nan_filled(self, result) + + +# ----- fit_solar_wind_alpha_moments — context construction ----------------- + + +class TestFitAlphaMomentsContextConstruction(unittest.TestCase): + """Tests for `fit_solar_wind_alpha_moments` — verifies it builds two separate fit contexts (proton background and alpha bump) with the correct species mass / mass-per-charge / effective-area scale routed to each.""" + + def setUp(self): + self.proton_moments = _build_proton_fit_result() + self.swapi_response = _load_swapi_response_with_warm_cache() + self.proton_eff_scale = 0.987 + self.alpha_eff_scale = 0.731 + self.rotation_matrices = _identity_rotation_matrices() + + build_ctx_patcher = patch( + "imap_l3_processing.swapi.l3a.science.solar_wind.alpha." + "calculate_alpha_solar_wind_moments.build_solar_wind_fit_context" + ) + initial_guess_patcher = patch( + "imap_l3_processing.swapi.l3a.science.solar_wind.alpha." + "calculate_alpha_solar_wind_moments._alpha_initial_guess", + return_value=None, + ) + forward_model_patcher = patch( + "imap_l3_processing.swapi.l3a.science.solar_wind.alpha." + "calculate_alpha_solar_wind_moments.model_solar_wind_ideal_coincidence_rates", + return_value=(np.zeros(_N_MEAS), np.zeros((_N_MEAS, 5))), + ) + self.addCleanup(build_ctx_patcher.stop) + self.addCleanup(initial_guess_patcher.stop) + self.addCleanup(forward_model_patcher.stop) + self.mock_build_ctx = build_ctx_patcher.start() + initial_guess_patcher.start() + forward_model_patcher.start() + self.mock_build_ctx.return_value = MagicMock() + + fit_solar_wind_alpha_moments( + count_rate=np.zeros(_FIVE_SWEEP_VOLTAGE.shape), + esa_voltage=_FIVE_SWEEP_VOLTAGE, + measurement_time=np.zeros(_N_MEAS), + swapi_response=self.swapi_response, + proton_moments=self.proton_moments, + magnetic_field_direction=_B_HAT_RTN, + alpha_effective_area_scale=self.alpha_eff_scale, + proton_effective_area_scale=self.proton_eff_scale, + rotation_matrices=self.rotation_matrices, + ) + self.proton_call_kwargs = self.mock_build_ctx.call_args_list[0].kwargs + self.alpha_call_kwargs = self.mock_build_ctx.call_args_list[1].kwargs + + def test_two_contexts_are_built(self): + """The fitter constructs exactly one context for the frozen proton background and one for the alpha bump.""" + self.assertEqual(self.mock_build_ctx.call_count, 2) + + def test_proton_context_uses_proton_mass_per_charge(self): + """The proton-background context receives `PROTON_MASS_PER_CHARGE_M_P_PER_E`, so its speed→voltage mapping matches the proton species.""" + self.assertEqual( + self.proton_call_kwargs["mass_per_charge_m_p_per_e"], + PROTON_MASS_PER_CHARGE_M_P_PER_E, + ) + + def test_alpha_context_uses_alpha_mass_per_charge(self): + """The alpha-bump context receives `ALPHA_MASS_PER_CHARGE_M_P_PER_E` (≈2), guarding against a regression that reuses the proton 1.0.""" + self.assertEqual( + self.alpha_call_kwargs["mass_per_charge_m_p_per_e"], + ALPHA_MASS_PER_CHARGE_M_P_PER_E, + ) + + def test_proton_context_uses_proton_mass_kg(self): + """The proton-background context receives `PROTON_MASS_KG` so the Maxwellian thermal-speed scale matches the proton species.""" + self.assertEqual(self.proton_call_kwargs["mass_kg"], PROTON_MASS_KG) + + def test_alpha_context_uses_alpha_mass_kg(self): + """The alpha-bump context receives `ALPHA_PARTICLE_MASS_KG` so the Maxwellian thermal-speed scale matches the alpha species.""" + self.assertEqual(self.alpha_call_kwargs["mass_kg"], ALPHA_PARTICLE_MASS_KG) + + def test_proton_context_uses_proton_effective_area_scale(self): + """The proton-background context receives the caller-supplied proton EA scale on `central_effective_area_scale`.""" + self.assertEqual( + self.proton_call_kwargs["central_effective_area_scale"], + self.proton_eff_scale, + ) + + def test_alpha_context_uses_alpha_effective_area_scale(self): + """The alpha-bump context receives the caller-supplied alpha EA scale (which folds A_α/A_p species correction and alpha time drift into one ratio) on `central_effective_area_scale`.""" + self.assertEqual( + self.alpha_call_kwargs["central_effective_area_scale"], + self.alpha_eff_scale, + ) + + def test_alpha_and_proton_effective_area_scales_are_distinct_values(self): + """The two species use different EA scales — guards against a regression that wires both contexts to the same scalar.""" + self.assertNotEqual( + self.alpha_call_kwargs["central_effective_area_scale"], + self.proton_call_kwargs["central_effective_area_scale"], + ) + + +# ----- fit_solar_wind_alpha_moments — end-to-end recovery ----------------- + + +class TestFitAlphaMomentsRecoversTruth( + _SyntheticAlphaSpectrumFixture, unittest.TestCase +): + """Tests for `fit_solar_wind_alpha_moments` — end-to-end Stage-2 recovery: synthesize a proton+alpha spectrum from known truth, hand the fitter the exact proton moments, and verify it recovers (n_α, T_α, Δv) and the field-aligned alpha velocity.""" + + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.proton_moments = _build_proton_fit_result() + cls.result = fit_solar_wind_alpha_moments( + count_rate=cls.observed_count_rate, + esa_voltage=cls.voltage, + measurement_time=np.zeros(_N_MEAS), + swapi_response=cls.response, + proton_moments=cls.proton_moments, + magnetic_field_direction=_B_HAT_RTN, + alpha_effective_area_scale=1.0, + proton_effective_area_scale=1.0, + rotation_matrices=cls.rotation_matrices, + ) + + def test_fit_succeeds_with_no_quality_flags(self): + """A clean synthetic spectrum + exact proton moments must yield `bad_fit_flag == NONE` — no LM convergence issues, no missing inputs.""" + self.assertEqual(self.result.bad_fit_flag, int(SwapiL3Flags.NONE)) + + def test_recovers_alpha_density(self): + """The fitted alpha density matches the synthesis truth to ~1% (LM termination + deadtime rounding).""" + np.testing.assert_allclose( + self.result.density.nominal_value, + _TRUE_ALPHA_DENSITY_CM3, + rtol=1e-2, + ) + + def test_recovers_alpha_temperature(self): + """The fitted alpha temperature matches the synthesis truth to ~1%.""" + np.testing.assert_allclose( + self.result.temperature.nominal_value, + _TRUE_ALPHA_TEMPERATURE_K, + rtol=1e-2, + ) + + def test_recovers_signed_delta_v(self): + """The fitted Δv matches the truth in magnitude and sign — LM recovers the correct basin from the Δv=0 seed.""" + np.testing.assert_allclose( + self.result.delta_v.nominal_value, _TRUE_DELTA_V_KM_S, atol=0.5 + ) + + def test_alpha_velocity_equals_proton_velocity_plus_delta_v_along_bhat(self): + """The post-fit `bulk_velocity_rtn` satisfies the algebraic identity v_α = v_p* + Δv·B̂ exactly (not approximately) — the dataclass stores the constraint, not a free vector.""" + v_alpha = self.result.bulk_velocity_rtn_nominal() + expected = ( + _TRUE_PROTON_VELOCITY_RTN + + self.result.delta_v.nominal_value * _B_HAT_RTN + ) + np.testing.assert_allclose(v_alpha, expected, atol=1e-9) + + def test_alpha_velocity_recovers_truth(self): + """The recovered alpha velocity vector matches the synthesis truth (≈480 km/s) within ~1 km/s — combines Δv recovery + field-aligned constraint.""" + np.testing.assert_allclose( + self.result.bulk_velocity_rtn_nominal(), + self.alpha_velocity_rtn, + atol=1.0, + ) + + +class TestFitAlphaMomentsAlphaVelocityFollowsBHat(unittest.TestCase): + """Tests for `fit_solar_wind_alpha_moments` — the field-aligned drift constraint v_α = v_p + Δv·B̂ must hold for any B̂ direction, including B̂ not parallel to -R̂.""" + + @classmethod + def setUpClass(cls): + cls.response = _load_swapi_response_with_warm_cache() + cls.rotation_matrices = _identity_rotation_matrices() + cls.proton_velocity_rtn = _TRUE_PROTON_VELOCITY_RTN + # B̂ tilted away from -R̂ by `tilt_deg` in the R-T plane. + tilt_deg = 10.0 + tilt_rad = np.deg2rad(tilt_deg) + cls.b_hat = np.array([-np.cos(tilt_rad), np.sin(tilt_rad), 0.0]) + observed, _proton_true, alpha_v = _synthesize_proton_plus_alpha_count_rate( + response=cls.response, + voltage=_FIVE_SWEEP_VOLTAGE, + rotation_matrices=cls.rotation_matrices, + proton_velocity_rtn=cls.proton_velocity_rtn, + delta_v=_TRUE_DELTA_V_KM_S, + b_hat=cls.b_hat, + ) + cls.alpha_velocity_truth = alpha_v + cls.proton_moments = _build_proton_fit_result( + velocity_rtn=cls.proton_velocity_rtn + ) + cls.result = fit_solar_wind_alpha_moments( + count_rate=observed, + esa_voltage=_FIVE_SWEEP_VOLTAGE, + measurement_time=np.zeros(_N_MEAS), + swapi_response=cls.response, + proton_moments=cls.proton_moments, + magnetic_field_direction=cls.b_hat, + alpha_effective_area_scale=1.0, + proton_effective_area_scale=1.0, + rotation_matrices=cls.rotation_matrices, + ) + + def test_alpha_velocity_minus_proton_velocity_is_parallel_to_bhat(self): + """For a tilted B̂, the recovered (v_α − v_p) lies along ±B̂ — equivalently, the cross product (v_α − v_p) × B̂ is zero up to numerical noise.""" + delta = ( + self.result.bulk_velocity_rtn_nominal() - self.proton_velocity_rtn + ) + np.testing.assert_allclose(np.cross(delta, self.b_hat), 0.0, atol=1e-9) + + def test_recovered_delta_v_matches_dot_product_of_velocity_offset(self): + """The stored `delta_v` equals (v_α − v_p)·B̂ since B̂ is unit-normed — the scalar matches the projection of the vector offset onto the field.""" + delta_along = float( + np.dot( + self.result.bulk_velocity_rtn_nominal() - self.proton_velocity_rtn, + self.b_hat, + ) + ) + np.testing.assert_allclose( + self.result.delta_v.nominal_value, delta_along, atol=1e-9 + ) + + def test_alpha_velocity_recovers_truth_under_tilted_bhat(self): + """With a 10° tilted B̂, the recovered alpha velocity matches the synthesis truth vector to ~1 km/s.""" + np.testing.assert_allclose( + self.result.bulk_velocity_rtn_nominal(), + self.alpha_velocity_truth, + atol=1.0, + ) + + +# ----- AlphaSolarWindMoments accessors -------------------------------------- + + +class TestAlphaSolarWindMomentsAccessors(unittest.TestCase): + """Tests for `AlphaSolarWindMoments.bulk_velocity_rtn_nominal` and `bulk_velocity_rtn_covariance` — accessors that extract the nominal vector and covariance matrix from the correlated UFloat triple.""" + + def setUp(self): + # Build moments from a known correlated velocity covariance so the + # accessor outputs are predictable. Using `make_correlated_velocity` + # would require reconstructing the same covariance the alpha + # pipeline produces; building the UFloat triple directly is enough + # to exercise the accessors. + from imap_l3_processing.swapi.l3a.science.solar_wind.uncertainties import ( + make_correlated_velocity, + ) + + self.expected_nominal = np.array([-450.0, 10.0, -5.0]) + # Symmetric, positive-definite — `correlated_values` requires PSD. + self.expected_covariance = np.array( + [ + [4.0, 1.0, 0.5], + [1.0, 9.0, 0.25], + [0.5, 0.25, 16.0], + ] + ) + velocity_triple = make_correlated_velocity( + self.expected_nominal, self.expected_covariance + ) + self.moments = AlphaSolarWindMoments( + density=ufloat(0.2, 0.01), + temperature=ufloat(4.0e5, 1.0e3), + bulk_velocity_rtn=velocity_triple, + delta_v=ufloat(30.0, 1.0), + bad_fit_flag=int(SwapiL3Flags.NONE), + ) + + def test_bulk_velocity_rtn_nominal_returns_per_component_nominals(self): + """The nominal-vector accessor returns the per-component nominal_values as a length-3 ndarray.""" + np.testing.assert_array_equal( + self.moments.bulk_velocity_rtn_nominal(), self.expected_nominal + ) + + def test_bulk_velocity_rtn_covariance_is_three_by_three(self): + """The covariance accessor returns a 3×3 matrix matching the RTN velocity dimensionality.""" + covariance = self.moments.bulk_velocity_rtn_covariance() + self.assertEqual(covariance.shape, (3, 3)) + + def test_bulk_velocity_rtn_covariance_matches_input_covariance(self): + """The covariance accessor round-trips: a UFloat triple built from a known PSD covariance returns that same matrix to machine precision.""" + np.testing.assert_allclose( + self.moments.bulk_velocity_rtn_covariance(), + self.expected_covariance, + atol=1e-12, + ) + + +# ----- fit_solar_wind_alpha_moments — geometry fallback -------------------- + + +class TestFitAlphaMomentsGeometryFallback(unittest.TestCase): + """Tests for `fit_solar_wind_alpha_moments` — when `rotation_matrices` is omitted, SWAPI→RTN geometry is resolved from `measurement_time` via SPICE (`get_swapi_geometry`); the Stage-1 caller normally precomputes geometry and shares it, but the standalone-callable fallback path must also work.""" + + def test_fetches_geometry_from_measurement_time_when_rotation_matrices_omitted( + self, + ): + """Calling the fitter without `rotation_matrices` triggers `get_swapi_geometry(measurement_time)` and reaches the initial-guess step rather than crashing on missing geometry.""" + proton_moments = _build_proton_fit_result() + rotation_matrices_from_geometry = _identity_rotation_matrices() + measurement_time = np.arange(_N_MEAS, dtype=float) + + with patch( + "imap_l3_processing.swapi.l3a.utils.get_swapi_geometry", + return_value=rotation_matrices_from_geometry, + ) as mock_get_geometry, patch.object( + alpha_module, + "_alpha_initial_guess", + return_value=None, + ): + result = fit_solar_wind_alpha_moments( + count_rate=np.zeros(_FIVE_SWEEP_VOLTAGE.shape), + esa_voltage=_FIVE_SWEEP_VOLTAGE, + measurement_time=measurement_time, + swapi_response=_load_swapi_response_with_warm_cache(), + proton_moments=proton_moments, + magnetic_field_direction=_B_HAT_RTN, + alpha_effective_area_scale=1.0, + proton_effective_area_scale=1.0, + rotation_matrices=None, + ) + + mock_get_geometry.assert_called_once() + np.testing.assert_array_equal( + mock_get_geometry.call_args.args[0], measurement_time + ) + # The mocked initial guess returned `None`, so the fitter + # short-circuited to a FIT_ERROR moments result — proving it + # reached the initial-guess step (i.e. did not crash on geometry). + self.assertEqual(result.bad_fit_flag, int(SwapiL3Flags.FIT_ERROR)) + + +# ----- fit_solar_wind_alpha_moments — peak-bin filtering ------------------- + + +class TestFitAlphaMomentsPeakBinFiltering( + _SyntheticAlphaSpectrumFixture, unittest.TestCase +): + """Tests for `fit_solar_wind_alpha_moments` — peak-bin subsetting plus zero-count filtering: Stage-2 keeps only the alpha-peak bins across sweeps, then drops any with `count_rate <= 0` so deadtime correction never divides by zero.""" + + @classmethod + def setUpClass(cls): + super().setUpClass() + # Zero out a single peak-region bin in every sweep — the initial + # guess will still find a peak (the rest of the bump is intact), but + # the zeroed bins must be dropped from the LM residual axis. + from imap_l3_processing.swapi.l3a.science.solar_wind.alpha.calculate_alpha_solar_wind_moments import ( + _alpha_initial_guess, + ) + + alpha_ctx_full = build_solar_wind_fit_context( + count_rate=cls.observed_count_rate, + esa_voltage=cls.voltage, + swapi_response=cls.response, + central_effective_area_scale=1.0, + rotation_matrices=cls.rotation_matrices, + mass_kg=ALPHA_PARTICLE_MASS_KG, + mass_per_charge_m_p_per_e=ALPHA_MASS_PER_CHARGE_M_P_PER_E, + ) + guess = _alpha_initial_guess( + proton_true_rate=cls.proton_true_rate, + proton_temperature=_TRUE_PROTON_TEMPERATURE_K, + alpha_ctx=alpha_ctx_full, + proton_bulk_velocity_rtn=_TRUE_PROTON_VELOCITY_RTN, + magnetic_field_direction=_B_HAT_RTN, + ) + _, _, _, peak_bin_idx = guess + zeroed_observed = cls.observed_count_rate.copy() + target_bin = int(peak_bin_idx[len(peak_bin_idx) // 2]) + zeroed_observed[:, target_bin] = 0.0 + cls.zeroed_observed_count_rate = zeroed_observed + cls.target_bin = target_bin + + cls.proton_moments = _build_proton_fit_result() + cls.result = fit_solar_wind_alpha_moments( + count_rate=zeroed_observed, + esa_voltage=cls.voltage, + measurement_time=np.zeros(_N_MEAS), + swapi_response=cls.response, + proton_moments=cls.proton_moments, + magnetic_field_direction=_B_HAT_RTN, + alpha_effective_area_scale=1.0, + proton_effective_area_scale=1.0, + rotation_matrices=cls.rotation_matrices, + ) + + def test_fit_completes_when_some_peak_bins_are_zeroed(self): + """Zeroing one peak-region bin per sweep does not crash the fitter and still flags NONE — the zeroed bins are filtered out of the LM residual axis before deadtime correction runs on them.""" + self.assertEqual(self.result.bad_fit_flag, int(SwapiL3Flags.NONE)) + + def test_recovers_alpha_density_within_loose_bound_after_zeroing(self): + """Density recovery is within ~10% of truth after losing one bin per sweep — the residual peak still carries most of the alpha signal.""" + np.testing.assert_allclose( + self.result.density.nominal_value, + _TRUE_ALPHA_DENSITY_CM3, + rtol=0.1, + ) + + +# ----- fit_solar_wind_alpha_moments — non-converged LM --------------------- + + +class TestFitAlphaMomentsLMFailureFlag(unittest.TestCase): + """Tests for `fit_solar_wind_alpha_moments` — when LM does not converge (`result.success=False`), the chunk is rejected: every moment is NaN-filled and `FIT_ERROR` is set.""" + + def test_fit_error_flag_set_when_least_squares_does_not_converge(self): + """A non-converged LM result triggers the fit-quality guard: density and the other moments are NaN-filled and `FIT_ERROR` is reported alone.""" + proton_moments = _build_proton_fit_result() + + x_fit = np.array([np.log(0.2), np.log(4.0e5), 30.0]) + residual_norm = np.full(_N_MEAS, 1.0) + jac = np.zeros((_N_MEAS, 3)) + jac[0, 0] = 1.0 + jac[0, 1] = 1.0 + jac[0, 2] = 1.0 + non_converged = MagicMock() + non_converged.x = x_fit + non_converged.fun = residual_norm + non_converged.jac = jac + non_converged.success = False + + with patch.object( + alpha_module, + "_alpha_initial_guess", + return_value=(0.2, 4.0e5, 0.0, np.array([10, 11, 12])), + ), patch.object( + alpha_module._AlphaEvaluator, + "residuals", + return_value=np.full(_N_MEAS, 1.0), + ), patch.object( + alpha_module.scipy.optimize, + "least_squares", + return_value=non_converged, + ): + result = fit_solar_wind_alpha_moments( + count_rate=np.full(_FIVE_SWEEP_VOLTAGE.shape, 100.0), + esa_voltage=_FIVE_SWEEP_VOLTAGE, + measurement_time=np.zeros(_N_MEAS), + swapi_response=_load_swapi_response_with_warm_cache(), + proton_moments=proton_moments, + magnetic_field_direction=_B_HAT_RTN, + alpha_effective_area_scale=1.0, + proton_effective_area_scale=1.0, + rotation_matrices=_identity_rotation_matrices(), + ) + + self.assertEqual(result.bad_fit_flag, int(SwapiL3Flags.FIT_ERROR)) + self.assertTrue(np.isnan(result.density.nominal_value)) + + +# ----- fit_solar_wind_alpha_moments — initial-guess failure branches ------- + + +class TestFitAlphaMomentsInitialGuessFailures(unittest.TestCase): + """Tests for `fit_solar_wind_alpha_moments` — failure branches inside `_alpha_initial_guess` and `_infer_sweep_layout` that return None, causing the public function to short-circuit to a `FIT_ERROR` NaN-filled result.""" + + def _call(self, *, count_rate, esa_voltage, rotation_matrices=None): + n_meas = esa_voltage.size + if rotation_matrices is None: + rotation_matrices = np.broadcast_to(np.eye(3), (n_meas, 3, 3)).copy() + warm_voltages = esa_voltage if n_meas > 0 else None + response = load_swapi_response(warm_cache_voltages=warm_voltages) + return fit_solar_wind_alpha_moments( + count_rate=count_rate, + esa_voltage=esa_voltage, + measurement_time=np.zeros(n_meas), + swapi_response=response, + proton_moments=_build_proton_fit_result(), + magnetic_field_direction=_B_HAT_RTN, + alpha_effective_area_scale=1.0, + proton_effective_area_scale=1.0, + rotation_matrices=rotation_matrices, + ) + + def _assert_fit_error_nan(self, result): + self.assertEqual(result.bad_fit_flag, int(SwapiL3Flags.FIT_ERROR)) + _assert_moments_are_nan_filled(self, result) + + def test_one_dimensional_inputs_short_circuit_to_fit_error(self): + """`_alpha_initial_guess` requires a 2D (n_sweeps, n_bins) count_rate; a 1D input falls through the ndim guard and the fitter reports `FIT_ERROR`.""" + voltage = np.logspace(np.log10(3500.0), np.log10(140.0), _N_MEAS) + result = self._call( + count_rate=np.zeros(_N_MEAS), + esa_voltage=voltage, + ) + self._assert_fit_error_nan(result) + + def test_non_monotonic_voltage_raises_in_peak_finder_and_returns_fit_error(self): + """A non-monotonic per-sweep voltage axis violates `get_alpha_peak_indices`'s decreasing-energies assertion; the `try/except Exception` in `_alpha_initial_guess` catches it and the fitter returns `FIT_ERROR`.""" + one_sweep = _ONE_SWEEP_VOLTAGE.copy() + one_sweep[10], one_sweep[11] = one_sweep[11], one_sweep[10] + voltage = np.broadcast_to(one_sweep, (_N_SWEEPS, _N_BINS_PER_SWEEP)).copy() + result = self._call( + count_rate=np.ones(voltage.shape), + esa_voltage=voltage, + ) + self._assert_fit_error_nan(result) + + def test_short_peak_window_returns_fit_error(self): + """When `get_alpha_peak_indices` returns a slice with fewer than 3 bins, `_alpha_initial_guess` returns `None` and the fitter reports `FIT_ERROR`.""" + with patch.object( + alpha_module, + "get_alpha_peak_indices", + return_value=slice(10, 12), + ): + result = self._call( + count_rate=np.ones(_FIVE_SWEEP_VOLTAGE.shape), + esa_voltage=_FIVE_SWEEP_VOLTAGE, + ) + self._assert_fit_error_nan(result) + + def test_no_positive_residual_at_peak_returns_fit_error(self): + """When the residual `count_avg − 2·proton_bg_avg` has no positive entry inside the peak window (e.g. count_rate=0 everywhere), `_alpha_initial_guess` returns `None`.""" + with patch.object( + alpha_module, + "get_alpha_peak_indices", + return_value=slice(10, 20), + ): + result = self._call( + count_rate=np.zeros(_FIVE_SWEEP_VOLTAGE.shape), + esa_voltage=_FIVE_SWEEP_VOLTAGE, + ) + self._assert_fit_error_nan(result) + + def test_non_positive_unit_alpha_denominator_returns_fit_error(self): + """When the unit-density alpha forward model evaluates to ~0 at every peak bin (peak slice placed in the highest-voltage bins, far above the alpha resonance), `denom <= 0` and `_alpha_initial_guess` returns `None`.""" + # Inject a positive residual at the chosen peak bins by overriding + # count_rate at those locations, then place the peak slice in the + # high-voltage tail where unit_alpha ~ 0 (alpha truth voltage is + # ~1264 V, voltage bin 0 is 3500 V). + count_rate = np.zeros((_N_SWEEPS, _N_BINS_PER_SWEEP)) + peak_slice = slice(0, 3) + count_rate[:, peak_slice] = 1.0e3 + with patch.object( + alpha_module, + "get_alpha_peak_indices", + return_value=peak_slice, + ): + result = self._call( + count_rate=count_rate, + esa_voltage=_FIVE_SWEEP_VOLTAGE, + ) + self._assert_fit_error_nan(result) + + +# Doc contracts intentionally not pinned here: upstream-set quality flags +# (`PRELIMINARY_MAG`) belong in chunk-fitter / processor tests, and the +# LM-jacobian-derived sigmas (`σ_n_α`, `σ_T_α`, +# `σ_Δv`) plus the `Σ_v_α = Σ_v_p + σ_Δv²·B̂B̂ᵀ` covariance update would +# require an independent numerical reference to pin without coupling to +# scipy version drift. + + +# ----- _AlphaEvaluator analytic Jacobian ----------------------------------- + + +class TestAlphaEvaluatorAnalyticJacobianMatchesFiniteDifference( + _SyntheticAlphaSpectrumFixture, unittest.TestCase +): + """Tests for `_AlphaEvaluator.jacobian` — verifies the analytic 3-column Jacobian (∂residuals/∂[log n_α, log T_α, Δv]) matches a central-difference numerical Jacobian within the same tolerance used for the proton-fit forward-model Jacobian (5% rtol). The small mismatch comes from the dynamic-quadrature limits shifting when the state is perturbed for finite differences, per `docs/swapi/solar-wind-moments.md` § Boundary terms.""" + + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.alpha_ctx = build_solar_wind_fit_context( + count_rate=cls.observed_count_rate, + esa_voltage=cls.voltage, + swapi_response=cls.response, + central_effective_area_scale=1.0, + rotation_matrices=cls.rotation_matrices, + mass_kg=ALPHA_PARTICLE_MASS_KG, + mass_per_charge_m_p_per_e=ALPHA_MASS_PER_CHARGE_M_P_PER_E, + ) + cls.evaluator = _AlphaEvaluator( + proton_bulk=_TRUE_PROTON_VELOCITY_RTN, + magnetic_field_direction=_B_HAT_RTN, + proton_true_rate=cls.proton_true_rate, + alpha_ctx=cls.alpha_ctx, + ) + cls.x0 = np.array( + [ + np.log(_TRUE_ALPHA_DENSITY_CM3), + np.log(_TRUE_ALPHA_TEMPERATURE_K), + _TRUE_DELTA_V_KM_S, + ] + ) + cls.analytic_jacobian = cls.evaluator.jacobian(cls.x0).copy() + steps = np.array([1.0e-5, 1.0e-5, 1.0e-3]) + n_residuals = cls.analytic_jacobian.shape[0] + cls.numerical_jacobian = np.empty((n_residuals, 3)) + for j in range(3): + x_plus = cls.x0.copy() + x_minus = cls.x0.copy() + x_plus[j] += steps[j] + x_minus[j] -= steps[j] + r_plus = cls.evaluator.residuals(x_plus).copy() + r_minus = cls.evaluator.residuals(x_minus).copy() + cls.numerical_jacobian[:, j] = (r_plus - r_minus) / (2.0 * steps[j]) + + def test_jacobian_shape_is_n_residuals_by_three(self): + """The analytic Jacobian has shape (N_residuals, 3) — one row per measurement bin, one column per fit parameter (log n_α, log T_α, Δv).""" + self.assertEqual(self.analytic_jacobian.shape, (self.alpha_ctx.count_rate.size, 3)) + + def test_log_density_column_equals_alpha_only_rate_times_deadtime_squared(self): + """Because the rate is linear in n_α, the analytic ∂(observable)/∂(log n_α) column equals 𝒟²(R_total) · R_α exactly with no quadrature slack — an identity check independent of finite-difference noise.""" + from imap_l3_processing.swapi.l3a.science.solar_wind.forward_model import ( + model_solar_wind_ideal_coincidence_rates, + ) + alpha_only_params = SolarWindParams( + density=_TRUE_ALPHA_DENSITY_CM3, + bulk_velocity_rtn=_TRUE_PROTON_VELOCITY_RTN + _TRUE_DELTA_V_KM_S * _B_HAT_RTN, + temperature=_TRUE_ALPHA_TEMPERATURE_K, + mass=ALPHA_PARTICLE_MASS_KG, + ) + alpha_rate, _ = model_solar_wind_ideal_coincidence_rates( + alpha_only_params, self.alpha_ctx + ) + total_rate = self.proton_true_rate + alpha_rate + deadtime_squared = deadtime_factor(total_rate) ** 2 + np.testing.assert_allclose( + self.analytic_jacobian[:, 0], + deadtime_squared * alpha_rate, + rtol=1.0e-12, + atol=0.0, + ) + + def test_log_temperature_column_matches_finite_difference(self): + """The analytic ∂residuals/∂(log T_α) column matches central differences within 5% — the threshold matches the proton forward-model Jacobian tolerance.""" + np.testing.assert_allclose( + self.analytic_jacobian[:, 1], + self.numerical_jacobian[:, 1], + rtol=5.0e-2, + atol=1.0e-3, + ) + + def test_delta_v_column_matches_finite_difference(self): + """The analytic ∂residuals/∂(Δv) column matches central differences within 5% — derived from the 5-D forward-model Jacobian projected onto B̂, inherits the same boundary-term residual.""" + np.testing.assert_allclose( + self.analytic_jacobian[:, 2], + self.numerical_jacobian[:, 2], + rtol=5.0e-2, + atol=1.0e-3, + ) + + +class TestAlphaEvaluatorCachesEvaluation( + _SyntheticAlphaSpectrumFixture, unittest.TestCase +): + """Tests for `_AlphaEvaluator._refresh` — caches the last (residuals, jacobian) so scipy.least_squares' separate `fun` and `jac` callbacks share one forward-model evaluation per state.""" + + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.alpha_ctx = build_solar_wind_fit_context( + count_rate=cls.observed_count_rate, + esa_voltage=cls.voltage, + swapi_response=cls.response, + central_effective_area_scale=1.0, + rotation_matrices=cls.rotation_matrices, + mass_kg=ALPHA_PARTICLE_MASS_KG, + mass_per_charge_m_p_per_e=ALPHA_MASS_PER_CHARGE_M_P_PER_E, + ) + cls.x0 = np.array( + [ + np.log(_TRUE_ALPHA_DENSITY_CM3), + np.log(_TRUE_ALPHA_TEMPERATURE_K), + _TRUE_DELTA_V_KM_S, + ] + ) + + def test_residuals_then_jacobian_at_same_state_share_one_forward_model_call(self): + """Calling residuals(x) and then jacobian(x) at the same x triggers exactly one underlying forward-model call — the second call hits the cache.""" + evaluator = _AlphaEvaluator( + proton_bulk=_TRUE_PROTON_VELOCITY_RTN, + magnetic_field_direction=_B_HAT_RTN, + proton_true_rate=self.proton_true_rate, + alpha_ctx=self.alpha_ctx, + ) + with patch.object( + alpha_module, + "model_solar_wind_ideal_coincidence_rates", + wraps=alpha_module.model_solar_wind_ideal_coincidence_rates, + ) as wrapped: + evaluator.residuals(self.x0) + evaluator.jacobian(self.x0) + self.assertEqual(wrapped.call_count, 1) + + def test_residuals_at_different_states_each_trigger_forward_model_call(self): + """Calling residuals at two distinct states triggers two forward-model calls — the cache is keyed on the exact state vector.""" + evaluator = _AlphaEvaluator( + proton_bulk=_TRUE_PROTON_VELOCITY_RTN, + magnetic_field_direction=_B_HAT_RTN, + proton_true_rate=self.proton_true_rate, + alpha_ctx=self.alpha_ctx, + ) + x1 = self.x0.copy() + x2 = self.x0.copy() + x2[2] += 1.0 + with patch.object( + alpha_module, + "model_solar_wind_ideal_coincidence_rates", + wraps=alpha_module.model_solar_wind_ideal_coincidence_rates, + ) as wrapped: + evaluator.residuals(x1) + evaluator.residuals(x2) + self.assertEqual(wrapped.call_count, 2) + + +# ----- LM call wiring: analytic Jacobian passed to scipy ------------------- + + +class TestFitAlphaMomentsPassesAnalyticJacobianToLM( + _SyntheticAlphaSpectrumFixture, unittest.TestCase +): + """Tests for `fit_solar_wind_alpha_moments` — verifies scipy.optimize.least_squares is invoked with `jac=...` (rather than the previous finite-difference `diff_step=...` path).""" + + def test_least_squares_receives_jac_callable_and_no_diff_step(self): + """LM is called with a `jac` callable (the evaluator's analytic Jacobian) and without `diff_step` — finite-difference Jacobian estimation is no longer needed.""" + proton_moments = _build_proton_fit_result() + + mock_result = MagicMock() + mock_result.x = np.array( + [np.log(_TRUE_ALPHA_DENSITY_CM3), np.log(_TRUE_ALPHA_TEMPERATURE_K), 0.0] + ) + mock_result.fun = np.zeros(_N_MEAS) + mock_result.jac = np.zeros((_N_MEAS, 3)) + mock_result.success = True + + with patch.object( + alpha_module, + "_alpha_initial_guess", + return_value=( + _TRUE_ALPHA_DENSITY_CM3, + _TRUE_ALPHA_TEMPERATURE_K, + 0.0, + np.array([10, 11, 12]), + ), + ), patch.object( + alpha_module._AlphaEvaluator, + "residuals", + return_value=np.zeros(_N_MEAS), + ), patch.object( + alpha_module.scipy.optimize, + "least_squares", + return_value=mock_result, + ) as mock_lm: + fit_solar_wind_alpha_moments( + count_rate=self.observed_count_rate, + esa_voltage=self.voltage, + measurement_time=np.zeros(_N_MEAS), + swapi_response=self.response, + proton_moments=proton_moments, + magnetic_field_direction=_B_HAT_RTN, + alpha_effective_area_scale=1.0, + proton_effective_area_scale=1.0, + rotation_matrices=self.rotation_matrices, + ) + + kwargs = mock_lm.call_args.kwargs + self.assertIn("jac", kwargs) + self.assertTrue(callable(kwargs["jac"])) + self.assertNotIn("diff_step", kwargs) + self.assertEqual(kwargs["method"], "lm") + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/swapi/l3a/science/solar_wind/alpha/test_utils.py b/tests/swapi/l3a/science/solar_wind/alpha/test_utils.py new file mode 100644 index 000000000..4447206b9 --- /dev/null +++ b/tests/swapi/l3a/science/solar_wind/alpha/test_utils.py @@ -0,0 +1,112 @@ +import unittest + +import numpy as np + +from imap_l3_processing.constants import ( + ALPHA_PARTICLE_CHARGE_COULOMBS, + ALPHA_PARTICLE_MASS_KG, + METERS_PER_KILOMETER, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.alpha.utils import ( + esa_voltage_to_alpha_speed, + get_alpha_peak_indices, +) +from imap_l3_processing.swapi.constants import SWAPI_K_FACTOR + + +def _analytic_speed_km_per_s( + voltage: float, mass_kg: float, charge_c: float +) -> float: + return float( + np.sqrt(2 * SWAPI_K_FACTOR * charge_c * abs(voltage) / mass_kg) + / METERS_PER_KILOMETER + ) + + +class TestEsaVoltageToAlphaSpeed(unittest.TestCase): + """Tests for `esa_voltage_to_alpha_speed`.""" + + def test_matches_analytical_formula(self): + """A sweep of representative ESA voltages reproduces the closed-form `sqrt(2 K q V / m)` alpha speed to machine precision.""" + for V in [200.0, 1000.0, 4000.0]: + with self.subTest(voltage=V): + np.testing.assert_allclose( + esa_voltage_to_alpha_speed(V), + _analytic_speed_km_per_s( + V, ALPHA_PARTICLE_MASS_KG, ALPHA_PARTICLE_CHARGE_COULOMBS + ), + rtol=1e-12, + ) + + def test_handles_negative_voltage(self): + """A negative ESA voltage yields the same alpha speed as its positive counterpart, since the conversion depends on magnitude.""" + np.testing.assert_allclose( + esa_voltage_to_alpha_speed(-1000.0), esa_voltage_to_alpha_speed(1000.0) + ) + + +class TestGetAlphaPeakIndices(unittest.TestCase): + """Tests for `get_alpha_peak_indices`; SWAPI energies decrease with index so the alpha bump sits at *lower* indices than the proton peak, and the returned slice indexes into that ascending-index axis.""" + + PROTON_PEAK_INDEX = 50 + ALPHA_PEAK_INDEX = 30 + + def _decreasing_energy_grid_with_alpha_bump(self) -> tuple[np.ndarray, np.ndarray]: + """SWAPI-style decreasing energy grid plus a Gaussian alpha bump + centered at `ALPHA_PEAK_INDEX`.""" + energies = np.linspace(20_000.0, 50.0, 72) + n_alpha = 200.0 * np.exp( + -((np.arange(72) - self.ALPHA_PEAK_INDEX) ** 2) / 9.0 + ) + return energies, n_alpha + + def test_returns_slice_containing_alpha_peak(self): + """Given a clean Gaussian alpha bump above the proton peak, the returned slice brackets the bump's center index.""" + energies, residuals = self._decreasing_energy_grid_with_alpha_bump() + peak_slice = get_alpha_peak_indices( + residuals, energies, proton_peak_index=self.PROTON_PEAK_INDEX + ) + self.assertLessEqual(peak_slice.start, self.ALPHA_PEAK_INDEX) + self.assertGreater(peak_slice.stop, self.ALPHA_PEAK_INDEX) + + def test_slice_low_index_edge_sits_at_4x_proton_energy(self): + """The slice's low-index (high-energy) edge is anchored to the first bin at or below 4x the proton-peak energy, with the bin one index lower exceeding that cap.""" + energies, residuals = self._decreasing_energy_grid_with_alpha_bump() + peak_slice = get_alpha_peak_indices( + residuals, energies, proton_peak_index=self.PROTON_PEAK_INDEX + ) + max_alpha_energy = 4.0 * energies[self.PROTON_PEAK_INDEX] + + self.assertLessEqual(energies[peak_slice.start], max_alpha_energy) + if peak_slice.start > 0: + self.assertGreater(energies[peak_slice.start - 1], max_alpha_energy) + + def test_raises_when_proton_peak_at_high_energy_edge(self): + """When the proton peak is at index 0 there are no higher-energy bins for the alpha bump to occupy, and the function raises rather than returning a degenerate slice.""" + energies, residuals = self._decreasing_energy_grid_with_alpha_bump() + with self.assertRaises(Exception) as ctx: + get_alpha_peak_indices(residuals, energies, proton_peak_index=0) + self.assertIn("Alpha peak not found", str(ctx.exception)) + + def test_raises_when_residuals_are_monotonic_in_high_energy_region(self): + """Residuals that increase monotonically with energy have no local maximum above the proton peak, so the function raises instead of locating a fake bump.""" + energies = np.linspace(20_000.0, 50.0, 72) + monotonic_residuals = np.linspace(1.0, 100.0, 72) + with self.assertRaises(Exception) as ctx: + get_alpha_peak_indices( + monotonic_residuals, energies, proton_peak_index=self.PROTON_PEAK_INDEX + ) + self.assertIn("Alpha peak not found", str(ctx.exception)) + + def test_rejects_ascending_energy_grid(self): + """An L1B-style ascending energy axis violates the SWAPI calling convention and is rejected at the top of the function with an AssertionError.""" + ascending_energies = np.linspace(50.0, 20_000.0, 72) + residuals = np.zeros(72) + with self.assertRaises(AssertionError): + get_alpha_peak_indices( + residuals, ascending_energies, proton_peak_index=self.PROTON_PEAK_INDEX + ) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/swapi/l3a/science/solar_wind/proton/__init__.py b/tests/swapi/l3a/science/solar_wind/proton/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/tests/swapi/l3a/science/solar_wind/proton/test_basin_hopping.py b/tests/swapi/l3a/science/solar_wind/proton/test_basin_hopping.py new file mode 100644 index 000000000..c89fdba76 --- /dev/null +++ b/tests/swapi/l3a/science/solar_wind/proton/test_basin_hopping.py @@ -0,0 +1,212 @@ +import unittest +from unittest.mock import Mock, patch + +import numpy as np + +from imap_l3_processing.constants import PROTON_MASS_KG +from imap_l3_processing.swapi.l3a.science.solar_wind.fit_context import ( + SolarWindFitContext, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.optimizer import ( + OptimizeSolarWindParamsResult, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.proton import basin_hopping +from imap_l3_processing.swapi.l3a.science.solar_wind.proton.basin_hopping import ( + _MAX_BASIN_REFINE_ITERS, + _ROTATED_RMSE_RATIO_THRESHOLD, + escape_local_minimum, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.params import SolarWindParams +from tests.swapi._helpers import proton_params as _shared_proton_params + + +# Spin-axis-mirror tests assume the slow-wind bulk lies along -R̂ (the spin +# axis), so the file-local default puts the velocity along the RTN R-axis. +def _proton_params( + density: float = 5.0, + velocity_rtn=(-450.0, 0.0, 0.0), + temperature: float = 1.0e5, +) -> SolarWindParams: + return _shared_proton_params( + density=density, + velocity_rtn=velocity_rtn, + temperature=temperature, + ) + + +def _single_sweep_ctx( + spin_axis_column=np.array([0.0, 1.0, 0.0]), +) -> SolarWindFitContext: + """Single-sweep context whose +Y_inst column equals `spin_axis_column`, + so `average_spin_axis_rtn(ctx.rotation_matrices)` returns that axis.""" + rotation = np.eye(3) + rotation[:, 1] = spin_axis_column + return SolarWindFitContext( + count_rate=np.zeros(1), + esa_voltage=np.array([1000.0]), + response_grids=[None], + rotation_matrices=rotation[np.newaxis, :, :], + mass_kg=PROTON_MASS_KG, + ) + + +def _result(sw: SolarWindParams, mse: float) -> OptimizeSolarWindParamsResult: + """Build an `OptimizeSolarWindParamsResult` mock whose `.mse` returns `mse` + and whose `.sw_params` returns `sw`. Uses `Mock(spec=...)` so the test does + not depend on how `.mse` is computed internally.""" + mock = Mock(spec=OptimizeSolarWindParamsResult) + mock.sw_params = sw + mock.mse = mse + return mock + + +class TestEscapeLocalMinimum(unittest.TestCase): + """Tests for `escape_local_minimum`; mocks `_flipped_seed` and `optimize_solar_wind_params` so cheap-gate, acceptance, and iteration-cap logic are exercised in isolation from the forward model.""" + + # The cheap-gate condition is `flipped_mse >= threshold² × current.mse`; + # squaring threshold compares MSE against an RMSE ratio. + _GATE_FACTOR = _ROTATED_RMSE_RATIO_THRESHOLD**2 + + # ---- Cheap-gate early exit: no LM-2 call when flipped seed is too bad ---- + + def test_returns_lm1_unchanged_when_flipped_seed_far_worse(self): + """A flipped seed whose MSE is well past the threshold²×current gate bails out immediately, leaving LM-1 as the returned result without ever invoking the LM-2 optimizer.""" + ctx = _single_sweep_ctx() + lm1 = _result(_proton_params(), mse=1.0) + flipped_mse_far_above_gate = lm1.mse * self._GATE_FACTOR * 10.0 + flipped_params = _proton_params(velocity_rtn=(450.0, 0.0, 0.0)) + + with patch.object( + basin_hopping, + "_flipped_seed", + return_value=(flipped_mse_far_above_gate, flipped_params), + ) as mock_flipped, patch.object( + basin_hopping, "optimize_solar_wind_params" + ) as mock_opt: + out = escape_local_minimum(lm1, ctx) + + self.assertIs(out, lm1) + # `_flipped_seed` ran exactly once (loop bailed after the gate check). + self.assertEqual(mock_flipped.call_count, 1) + # The optimizer was never re-run on the flipped seed. + mock_opt.assert_not_called() + + def test_returns_lm1_unchanged_when_flipped_seed_exactly_at_gate(self): + """A flipped seed whose MSE exactly equals the gate threshold also short-circuits, because the gate comparison is `>=` rather than strictly greater than.""" + ctx = _single_sweep_ctx() + lm1 = _result(_proton_params(), mse=1.0) + flipped_mse_at_gate = lm1.mse * self._GATE_FACTOR + + with patch.object( + basin_hopping, + "_flipped_seed", + return_value=(flipped_mse_at_gate, _proton_params()), + ), patch.object( + basin_hopping, "optimize_solar_wind_params" + ) as mock_opt: + out = escape_local_minimum(lm1, ctx) + + self.assertIs(out, lm1) + mock_opt.assert_not_called() + + # ---- LM-2 accepted when it lands at strictly lower MSE ---- + + def test_returns_lm2_when_lm2_mse_is_lower(self): + """When the flipped seed clears the cheap gate and LM-2 converges to a strictly lower MSE than LM-1, the function adopts the LM-2 result and continues iterating until the next gate check bails out.""" + ctx = _single_sweep_ctx() + lm1 = _result(_proton_params(), mse=10.0) + better_params = _proton_params(velocity_rtn=(450.0, 0.0, 0.0)) + better_lm2 = _result(better_params, mse=1.0) + + # Iteration 1: flipped seed clears the gate, LM-2 lands lower → accepted. + # Iteration 2: simulate "next flipped seed is far worse than the new + # current" so the loop terminates cleanly via the cheap gate. + flipped_seed_mse_iter1 = lm1.mse * (self._GATE_FACTOR / 2.0) + flipped_seed_mse_iter2 = better_lm2.mse * (self._GATE_FACTOR * 2.0) + + with patch.object( + basin_hopping, + "_flipped_seed", + side_effect=[ + (flipped_seed_mse_iter1, better_params), + (flipped_seed_mse_iter2, better_params), + ], + ) as mock_flipped, patch.object( + basin_hopping, + "optimize_solar_wind_params", + return_value=better_lm2, + ) as mock_opt: + out = escape_local_minimum(lm1, ctx) + + self.assertIs(out, better_lm2) + # LM-2 ran exactly once (iteration 2 exited via the cheap gate). + self.assertEqual(mock_opt.call_count, 1) + # Two iterations of the loop ran; iter 2 short-circuited at the gate. + self.assertEqual(mock_flipped.call_count, 2) + + # ---- LM-2 rejected when it converges to higher MSE ---- + + def test_returns_lm1_when_lm2_mse_is_higher(self): + """When LM-2 clears the cheap gate but converges to a higher MSE than LM-1, the function rejects the flipped basin and returns the original LM-1 result.""" + ctx = _single_sweep_ctx() + lm1 = _result(_proton_params(), mse=1.0) + worse_params = _proton_params(velocity_rtn=(450.0, 0.0, 0.0)) + worse_lm2 = _result(worse_params, mse=5.0) + + # Flipped seed clears the cheap gate (within threshold²×current). + flipped_seed_mse = lm1.mse * (self._GATE_FACTOR / 2.0) + with patch.object( + basin_hopping, + "_flipped_seed", + return_value=(flipped_seed_mse, worse_params), + ), patch.object( + basin_hopping, + "optimize_solar_wind_params", + return_value=worse_lm2, + ) as mock_opt: + out = escape_local_minimum(lm1, ctx) + + self.assertIs(out, lm1) + self.assertEqual(mock_opt.call_count, 1) + + # ---- Iteration cap: at most _MAX_BASIN_REFINE_ITERS LM-2 calls ---- + + def test_runs_at_most_max_basin_refine_iters_lm2_calls(self): + """Feeding a strictly-decreasing MSE chain that would otherwise accept indefinitely confirms the loop is hard-bounded at `_MAX_BASIN_REFINE_ITERS` LM-2 calls and returns the result accepted in the final allowed iteration.""" + ctx = _single_sweep_ctx() + # Strictly-decreasing MSE chain so every iteration accepts the LM-2 + # result. If the loop weren't bounded, this would never terminate. + # Use `1.0 / (i+1)` so MSE stays strictly positive for any chain length. + chain_length = _MAX_BASIN_REFINE_ITERS + 4 + results = [ + _result( + _proton_params(velocity_rtn=(-450.0 + i, 0.0, 0.0)), + mse=1.0 / (i + 1), + ) + for i in range(chain_length) + ] + lm1 = results[0] + gate_factor = self._GATE_FACTOR + with patch.object( + basin_hopping, + "_flipped_seed", + # Always within gate (factor / 2 < gate_factor), always with a fresh seed. + side_effect=[ + (results[i].mse * (gate_factor / 2.0), results[i].sw_params) + for i in range(chain_length - 1) + ], + ), patch.object( + basin_hopping, + "optimize_solar_wind_params", + side_effect=results[1:], + ) as mock_opt: + out = escape_local_minimum(lm1, ctx) + + # Pin the cap from the source constant — never hardcode the number. + self.assertEqual(mock_opt.call_count, _MAX_BASIN_REFINE_ITERS) + # Returns the LM-2 result accepted in the final allowed iteration. + self.assertIs(out, results[_MAX_BASIN_REFINE_ITERS]) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/swapi/l3a/science/solar_wind/proton/test_fit_model.py b/tests/swapi/l3a/science/solar_wind/proton/test_fit_model.py new file mode 100644 index 000000000..af4a35324 --- /dev/null +++ b/tests/swapi/l3a/science/solar_wind/proton/test_fit_model.py @@ -0,0 +1,368 @@ +import unittest +from unittest.mock import patch + +import numpy as np + +from imap_l3_processing.constants import ( + PROTON_MASS_KG, + PROTON_MASS_PER_CHARGE_M_P_PER_E, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.fit_context import ( + build_solar_wind_fit_context, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.optimizer import ( + OptimizeSolarWindParamsResult, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.proton.fit_model import ( + fit_solar_wind_proton_model, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.params import ( + N_STATE, + SolarWindParams, +) +from imap_l3_processing.swapi.quality_flags import SwapiL3Flags +from tests.swapi._helpers import load_swapi_response, synthesize_count_rates + +# Mean SWAPI L2 coarse-sweep voltages (V), descending — a 62-bin sweep that +# covers the proton speed range densely. Identical to the set used by +# `docs/swapi/figure_src/plot_fit_accuracy.py`. +_VOLTAGES_PER_SWEEP = np.array( + [ + 9895.52, 9088.69, 8348.80, 7667.55, 7042.16, 6469.31, 5941.77, 5457.31, + 5013.22, 4603.65, 4230.77, 3886.92, 3569.16, 3278.72, 3011.13, 2766.25, + 2539.54, 2333.83, 2144.24, 1969.31, 1808.74, 1660.86, 1525.75, 1401.82, + 1287.58, 1182.24, 1085.15, 995.55, 914.31, 839.94, 771.70, 709.46, + 651.59, 598.47, 549.91, 505.12, 463.89, 425.92, 391.18, 359.35, 329.94, + 303.02, 278.25, 255.55, 234.77, 215.61, 197.95, 181.82, 167.04, 153.46, + 140.91, 129.50, 118.91, 109.20, 100.30, 92.11, 84.61, 77.73, 71.40, + 65.59, 60.23, 55.34, + ] +) +_N_BINS_PER_SWEEP = len(_VOLTAGES_PER_SWEEP) +_N_SWEEPS = 5 +_SWEEP_DURATION_S = 12.0 +_SAMPLE_TIME_PER_BIN_S = _SWEEP_DURATION_S / 72 +# Typical IMAP spin period; matches `docs/swapi/figure_src/plot_fit_accuracy.py`. +_SPIN_PERIOD_S = 15.13 + +# Anchor SWAPI→RTN rotation matrix near 2026-01-01, lifted from +# `docs/swapi/figure_src/plot_fit_accuracy.py`. The literal block is in +# RTN→SWAPI orientation; transposing converts to SWAPI→RTN. Per-bin matrices +# are produced by spinning this anchor about its own +Y column (the spin axis +# in RTN) at the SWAPI spin period. +_ANCHOR_ROTATION_MATRIX = np.array( + [ + [+0.0705, +0.9157, +0.3955], + [-0.9968, +0.0792, -0.0057], + [-0.0365, -0.3939, +0.9184], + ] +).T +_ANCHOR_TIME_S = 0.5 * _SWEEP_DURATION_S +# Negative sign chosen so R(t) = anchor @ Rot(δφ, spin_axis_RTN) reproduces +# independent SPICE-derived sweep midpoints over a 5-sweep cycle (see +# `docs/swapi/figure_src/plot_fit_accuracy.py`). +_SPIN_OMEGA_RAD_S = -2.0 * np.pi / _SPIN_PERIOD_S + +# The +Y column of `_ANCHOR_ROTATION_MATRIX` is the SWAPI spin axis expressed +# in RTN. For a proper rotation matrix it must be unit-norm; assert that here +# so the bulk-velocity construction below can use it directly. +assert np.isclose( + np.linalg.norm(_ANCHOR_ROTATION_MATRIX[:, 1]), 1.0, atol=1e-3 +), "expected +Y column of anchor rotation to be unit-norm" + +# Ground-truth solar-wind parameters used for the parameter-recovery test. +# Moderate-speed slow-stream proton population — well inside the SWAPI energy +# range, well within the SG passband elevation, and warm enough that the LM +# fit is not numerically marginal. +# +# The bulk velocity is anti-parallel to the synthetic spin axis (the +Y column +# of `_ANCHOR_ROTATION_MATRIX`, which lies near -R̂_RTN). This puts the wind +# *into* the SWAPI aperture; using arbitrary RTN-frame velocity components +# would point the wind at the back of the instrument and zero the synthetic +# count rates. +_TRUE_DENSITY_CM3 = 5.0 +_TRUE_TEMPERATURE_K = 1.0e5 +_TRUE_BULK_SPEED_KM_S = 450.0 +_TRUE_BULK_VELOCITY_RTN_KM_S = ( + -_TRUE_BULK_SPEED_KM_S * _ANCHOR_ROTATION_MATRIX[:, 1] +) + + +def _per_bin_rotation_matrices() -> np.ndarray: + """Synthesize plausible per-bin SWAPI→RTN matrices for `_N_SWEEPS` sweeps; + details don't affect what's being tested.""" + sweep_index = np.repeat( + np.arange(_N_SWEEPS), _N_BINS_PER_SWEEP + ) + bin_index_in_sweep = np.tile( + np.arange(1, _N_BINS_PER_SWEEP + 1), _N_SWEEPS + ) + sample_times_s = ( + sweep_index * _SWEEP_DURATION_S + + bin_index_in_sweep * _SAMPLE_TIME_PER_BIN_S + ) + + spin_axis = _ANCHOR_ROTATION_MATRIX[:, 1] / np.linalg.norm( + _ANCHOR_ROTATION_MATRIX[:, 1] + ) + delta_phi = _SPIN_OMEGA_RAD_S * (sample_times_s - _ANCHOR_TIME_S) + + ax, ay, az = spin_axis + K = np.array([[0.0, -az, ay], [az, 0.0, -ax], [-ay, ax, 0.0]]) + sin_dp = np.sin(delta_phi)[:, None, None] + one_minus_cos = (1.0 - np.cos(delta_phi))[:, None, None] + rot = np.eye(3) + sin_dp * K + one_minus_cos * (K @ K) + return rot @ _ANCHOR_ROTATION_MATRIX + + +def _build_context(count_rate, esa_voltage, swapi_response, rotation_matrices): + return build_solar_wind_fit_context( + count_rate=count_rate, + esa_voltage=esa_voltage, + swapi_response=swapi_response, + central_effective_area_scale=1.0, + rotation_matrices=rotation_matrices, + mass_kg=PROTON_MASS_KG, + mass_per_charge_m_p_per_e=PROTON_MASS_PER_CHARGE_M_P_PER_E, + ) + + +def _build_synthetic_fit_context(truth_params: SolarWindParams): + """Build a SwapiResponse, per-bin rotation matrices, and a populated + `SolarWindFitContext` whose count rates are forward-modelled from + `truth_params`. Returns `(swapi_response, rotation_matrices, fit_ctx)`.""" + all_voltages = np.tile(_VOLTAGES_PER_SWEEP, _N_SWEEPS) + swapi_response = load_swapi_response(warm_cache_voltages=all_voltages) + rotation_matrices = _per_bin_rotation_matrices() + + # Build a context with placeholder rates first, then forward-model the + # synthetic rates at the truth, then rebuild the context with those rates. + # Two-step pattern keeps the rotation-matrix / response-grid wiring + # identical between forward-model and fit. + placeholder_ctx = _build_context( + count_rate=np.ones_like(all_voltages), + esa_voltage=all_voltages, + swapi_response=swapi_response, + rotation_matrices=rotation_matrices, + ) + synthesized_rates = synthesize_count_rates(placeholder_ctx, truth_params) + fit_ctx = _build_context( + count_rate=synthesized_rates, + esa_voltage=all_voltages, + swapi_response=swapi_response, + rotation_matrices=rotation_matrices, + ) + return swapi_response, rotation_matrices, fit_ctx + + +def _truth_params() -> SolarWindParams: + return SolarWindParams( + density=_TRUE_DENSITY_CM3, + bulk_velocity_rtn=_TRUE_BULK_VELOCITY_RTN_KM_S.copy(), + temperature=_TRUE_TEMPERATURE_K, + mass=PROTON_MASS_KG, + ) + + +class _ProtonFitFixture(unittest.TestCase): + """Loads the SwapiResponse and a populated `SolarWindFitContext` with + forward-modelled count rates for the moderate-speed truth case, then runs + the fitter once and stores `cls.result`.""" + + @classmethod + def setUpClass(cls): + cls.truth_params = _truth_params() + ( + cls.swapi_response, + cls.rotation_matrices, + cls.fit_ctx, + ) = _build_synthetic_fit_context(truth_params=cls.truth_params) + cls.result = fit_solar_wind_proton_model(cls.fit_ctx) + + +class TestFitSolarWindProtonModelEndToEnd(_ProtonFitFixture): + """Tests for `fit_solar_wind_proton_model`; noise-free parameter-recovery sanity check against truth.""" + + def test_recovers_density(self): + """Fitting noise-free synthesized rates recovers the truth density within 1%.""" + self.assertAlmostEqual( + self.result.density.nominal_value, + _TRUE_DENSITY_CM3, + delta=0.01 * _TRUE_DENSITY_CM3, + ) + + def test_recovers_temperature(self): + """Fitting noise-free synthesized rates recovers the truth temperature within 1%.""" + self.assertAlmostEqual( + self.result.temperature.nominal_value, + _TRUE_TEMPERATURE_K, + delta=0.01 * _TRUE_TEMPERATURE_K, + ) + + def test_recovers_bulk_velocity_components(self): + """Fitting noise-free synthesized rates recovers all three RTN bulk-velocity components within 1 km/s.""" + nominal = self.result.bulk_velocity_rtn_nominal() + np.testing.assert_allclose( + nominal, _TRUE_BULK_VELOCITY_RTN_KM_S, atol=1.0 + ) + + def test_bad_fit_flag_is_none_on_successful_convergence(self): + """A clean LM convergence on noise-free data leaves the bad-fit flag cleared (`SwapiL3Flags.NONE`).""" + self.assertEqual(self.result.bad_fit_flag, SwapiL3Flags.NONE) + + +class TestProtonSolarWindFitResultPublicAPI(_ProtonFitFixture): + """Tests for `ProtonSolarWindFitResult.bulk_velocity_rtn_nominal` and `bulk_velocity_rtn_covariance` accessors.""" + + def test_bulk_velocity_rtn_nominal_is_three_component_vector(self): + """The nominal-velocity accessor returns a length-3 RTN vector.""" + nominal = self.result.bulk_velocity_rtn_nominal() + self.assertEqual(nominal.shape, (3,)) + + def test_bulk_velocity_rtn_nominal_matches_per_component_nominal_values( + self, + ): + """The nominal-velocity vector matches the per-component `.nominal_value` of the stored UFloat triple.""" + per_component = np.array( + [v.nominal_value for v in self.result.bulk_velocity_rtn] + ) + np.testing.assert_array_equal( + self.result.bulk_velocity_rtn_nominal(), per_component + ) + + def test_bulk_velocity_rtn_covariance_is_three_by_three(self): + """The covariance accessor returns a 3x3 matrix matching the RTN component count.""" + covariance = self.result.bulk_velocity_rtn_covariance() + self.assertEqual(covariance.shape, (3, 3)) + + def test_bulk_velocity_rtn_covariance_is_symmetric(self): + """The returned velocity covariance matrix is symmetric to numerical tolerance.""" + covariance = self.result.bulk_velocity_rtn_covariance() + np.testing.assert_allclose(covariance, covariance.T, atol=1e-12) + + def test_bulk_velocity_rtn_covariance_is_positive_semidefinite(self): + """The returned velocity covariance matrix is positive semidefinite (all eigenvalues non-negative).""" + covariance = self.result.bulk_velocity_rtn_covariance() + eigenvalues = np.linalg.eigvalsh(covariance) + self.assertGreaterEqual(eigenvalues.min(), -1e-9) + + def test_covariance_diagonal_matches_per_component_variance(self): + """Each diagonal entry of the velocity covariance equals the square of the corresponding UFloat `std_dev`.""" + covariance = self.result.bulk_velocity_rtn_covariance() + for i, ufloat_value in enumerate(self.result.bulk_velocity_rtn): + self.assertAlmostEqual( + covariance[i, i], ufloat_value.std_dev ** 2, places=10 + ) + + +class TestQualityFlagBranches(unittest.TestCase): + """Tests for `fit_solar_wind_proton_model`; quality-flag branches: optimizer failure → `FIT_ERROR` (NaN moments), high fitted temperature → `BAD_FIT` (moments kept).""" + + @classmethod + def setUpClass(cls): + _, _, cls.fit_ctx = _build_synthetic_fit_context( + truth_params=_truth_params() + ) + + def _patch_optimizer_with_result(self, optimize_result): + return patch( + "imap_l3_processing.swapi.l3a.science.solar_wind.proton.fit_model.optimize_solar_wind_params", + return_value=optimize_result, + ) + + def test_fit_error_flag_when_optimizer_reports_failure(self): + """When the underlying optimizer returns `success=False`, the result's bad-fit flag is `SwapiL3Flags.FIT_ERROR` and the moments are NaN-filled.""" + failed_result = OptimizeSolarWindParamsResult( + sw_params=SolarWindParams( + density=1.0, + bulk_velocity_rtn=np.array([-1.0, 0.0, 0.0]), + temperature=1.0, + mass=PROTON_MASS_KG, + ), + residuals=np.zeros(_N_BINS_PER_SWEEP * _N_SWEEPS), + jacobian=np.zeros( + (_N_BINS_PER_SWEEP * _N_SWEEPS, N_STATE) + ), + success=False, + ) + with self._patch_optimizer_with_result(failed_result): + result = fit_solar_wind_proton_model(self.fit_ctx) + self.assertEqual(result.bad_fit_flag, SwapiL3Flags.FIT_ERROR) + self.assertTrue(np.isnan(result.density.nominal_value)) + self.assertTrue(np.isnan(result.temperature.nominal_value)) + + def test_bad_fit_flag_when_temperature_above_threshold(self): + """A converged fit whose temperature exceeds 5e5 K is flagged `BAD_FIT` and its moments are NaN-filled, distinguishing it from a clean fit but matching `FIT_ERROR`'s fill-value contract.""" + too_hot_temperature = 6.0e5 + too_hot_result = OptimizeSolarWindParamsResult( + sw_params=SolarWindParams( + density=_TRUE_DENSITY_CM3, + bulk_velocity_rtn=_TRUE_BULK_VELOCITY_RTN_KM_S.copy(), + temperature=too_hot_temperature, + mass=PROTON_MASS_KG, + ), + residuals=np.zeros(_N_BINS_PER_SWEEP * _N_SWEEPS), + jacobian=np.zeros( + (_N_BINS_PER_SWEEP * _N_SWEEPS, N_STATE) + ), + success=True, + ) + with patch( + "imap_l3_processing.swapi.l3a.science.solar_wind.proton.fit_model.escape_local_minimum", + return_value=too_hot_result, + ): + result = fit_solar_wind_proton_model(self.fit_ctx) + self.assertEqual(result.bad_fit_flag, int(SwapiL3Flags.BAD_FIT)) + self.assertTrue(np.isnan(result.density.nominal_value)) + self.assertTrue(np.isnan(result.temperature.nominal_value)) + for component in result.bulk_velocity_rtn: + self.assertTrue(np.isnan(component.nominal_value)) + + +class TestPipelineOrder(unittest.TestCase): + """Tests for `fit_solar_wind_proton_model`; verifies basin-hopping output supersedes the LM-1 result.""" + + @classmethod + def setUpClass(cls): + _, _, cls.fit_ctx = _build_synthetic_fit_context( + truth_params=_truth_params() + ) + + def test_construct_fit_result_uses_post_basin_hopping_result(self): + """When basin hopping returns a result distinct from LM-1, the final fit result carries the post-basin parameters.""" + # Synthetic post-basin density chosen well above _TRUE_DENSITY_CM3=5.0 + # so the round-tripped density is unambiguously the patched value. + # Velocity is far from the truth bulk velocity for the same reason. + post_basin_density = 50.0 + post_basin_velocity = np.array([-321.0, 0.0, 0.0]) + post_basin_temperature = 2.5e5 + + post_basin_result = OptimizeSolarWindParamsResult( + sw_params=SolarWindParams( + density=post_basin_density, + bulk_velocity_rtn=post_basin_velocity, + temperature=post_basin_temperature, + mass=PROTON_MASS_KG, + ), + residuals=np.zeros(_N_BINS_PER_SWEEP * _N_SWEEPS), + jacobian=np.zeros( + (_N_BINS_PER_SWEEP * _N_SWEEPS, N_STATE) + ), + success=True, + ) + + with patch( + "imap_l3_processing.swapi.l3a.science.solar_wind.proton.fit_model.escape_local_minimum", + return_value=post_basin_result, + ): + result = fit_solar_wind_proton_model(self.fit_ctx) + + # density alone is decisive: it, temperature, and bulk_velocity_rtn + # propagate together from the same OptimizeSolarWindParamsResult. + self.assertAlmostEqual( + result.density.nominal_value, post_basin_density + ) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/swapi/l3a/science/solar_wind/proton/test_initial_guess.py b/tests/swapi/l3a/science/solar_wind/proton/test_initial_guess.py new file mode 100644 index 000000000..83af27448 --- /dev/null +++ b/tests/swapi/l3a/science/solar_wind/proton/test_initial_guess.py @@ -0,0 +1,260 @@ +import unittest +from unittest.mock import patch + +import numpy as np + +from imap_l3_processing.constants import ( + METERS_PER_KILOMETER, + PROTON_CHARGE_COULOMBS, + PROTON_MASS_KG, + PROTON_MASS_PER_CHARGE_M_P_PER_E, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.fit_context import ( + build_solar_wind_fit_context, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.forward_model import ( + model_solar_wind_ideal_coincidence_rates, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.proton.initial_guess import ( + INITIAL_TEMPERATURE_FLOOR_K, + calculate_initial_guess, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.params import ( + SolarWindParams, +) +from imap_l3_processing.swapi.l3a.utils import optimal_density_scale +from imap_l3_processing.swapi.constants import SWAPI_K_FACTOR +from tests.swapi._helpers import load_swapi_response + + +# RTN → SWAPI rotation. Body +Y (the SWAPI boresight / spin axis) in RTN is +# column 1 of the transpose, i.e. -R̂_RTN. The solar wind direction (anti- +# parallel to the spin axis) is therefore +R̂. +_R_BASE_RTN_TO_SWAPI = np.array( + [[0.0, 1.0, 0.0], [-1.0, 0.0, 0.0], [0.0, 0.0, 1.0]] +) + + +def _esa_voltage_for_proton_speed(speed_km_s: float) -> float: + """Inverse of `esa_voltage_to_proton_speed` — pick the ESA voltage whose + central proton speed is exactly `speed_km_s`. Used to place the count-rate + peak at a known voltage.""" + return float( + PROTON_MASS_KG + * (speed_km_s * METERS_PER_KILOMETER) ** 2 + / (2 * SWAPI_K_FACTOR * PROTON_CHARGE_COULOMBS) + ) + + +def _spin_rotation_matrices(n: int) -> np.ndarray: + """SWAPI→RTN rotation matrices for `n` consecutive bins. Body +Y (the + SWAPI boresight / spin axis) lies along -R̂_RTN on every bin, so the + chunk-mean spin axis is exactly -R̂.""" + return np.tile(_R_BASE_RTN_TO_SWAPI.T, (n, 1, 1)) + + +def _build_proton_ctx(count_rate: np.ndarray, esa_voltage: np.ndarray): + """Build a real proton-species `SolarWindFitContext` from the shipped CSVs. + + `count_rate`, `esa_voltage`, and the rotation matrices are all (N,)/(N,3,3) + aligned in the standard L2 layout — one entry per bin, multiple sweeps + flattened into a single axis.""" + response = load_swapi_response(warm_cache_voltages=esa_voltage) + ctx = build_solar_wind_fit_context( + count_rate=count_rate, + esa_voltage=esa_voltage, + swapi_response=response, + central_effective_area_scale=1.0, + rotation_matrices=_spin_rotation_matrices(len(esa_voltage)), + mass_kg=PROTON_MASS_KG, + mass_per_charge_m_p_per_e=PROTON_MASS_PER_CHARGE_M_P_PER_E, + ) + return ctx + + +def _make_synthetic_ctx_at_known_truth(truth: SolarWindParams, + n_bins: int = 71): + """Build a context whose `count_rate` array is the noiseless ideal forward + model evaluated at `truth`.""" + bulk_speed = float(np.linalg.norm(truth.bulk_velocity_rtn)) + # Wide enough to bracket ±5σ at T=1e5 K, narrow enough to keep all bins + # on-instrument. + speed_grid = np.linspace(0.4 * bulk_speed, 1.6 * bulk_speed, n_bins) + voltages = np.array( + [_esa_voltage_for_proton_speed(s) for s in speed_grid] + ) + + # Build a placeholder ctx, evaluate the forward model at `truth` to get + # ideal rates, then build the production ctx with those rates as + # `count_rate`. + placeholder = _build_proton_ctx(np.ones_like(voltages), voltages) + ideal_rates, _ = model_solar_wind_ideal_coincidence_rates(truth, placeholder) + return _build_proton_ctx(ideal_rates, voltages) + + +class TestCalculateInitialGuessSeeds(unittest.TestCase): + """Tests for `calculate_initial_guess` — doc-specified seed construction, with the Gaussian refiner patched so seeds passed to it are observable directly.""" + + def _ctx_with_peak_at(self, peak_speed_kms: float): + """Build a context whose count-rate spectrum has its maximum at a + bin whose ESA voltage corresponds to `peak_speed_kms`. The shape of + the spectrum doesn't matter — we patch out the refiner.""" + speed_grid = np.linspace(0.4 * peak_speed_kms, 1.6 * peak_speed_kms, + 31) + voltages = np.array( + [_esa_voltage_for_proton_speed(s) for s in speed_grid] + ) + peak_idx = len(speed_grid) // 2 # middle bin + voltages[peak_idx] = _esa_voltage_for_proton_speed(peak_speed_kms) + count_rate = np.linspace(0.1, 0.5, len(voltages)) + count_rate[peak_idx] = 100.0 # Unambiguous global maximum. + return _build_proton_ctx(count_rate, voltages) + + def test_bulk_speed_seed_is_proton_speed_at_peak_voltage(self): + """A spectrum whose unambiguous maximum sits at the ESA voltage for 480 km/s passes 480 km/s as the bulk-speed seed into the Gaussian refiner.""" + peak_speed = 480.0 + ctx = self._ctx_with_peak_at(peak_speed) + with patch( + "imap_l3_processing.swapi.l3a.science.solar_wind.proton." + "initial_guess._gaussian_refine_bulk_speed_and_temperature", + return_value=(peak_speed, 1e5), + ) as patched_refine: + calculate_initial_guess(ctx) + + # Args: (speed, count_rate, bulk_speed_seed, temperature_seed, mass_kg) + args = patched_refine.call_args.args + bulk_speed_seed_arg = args[2] + np.testing.assert_allclose(bulk_speed_seed_arg, peak_speed, rtol=1e-12) + + def test_temperature_seed_uses_documented_speed_squared_formula(self): + """With a peak bulk speed well above the floor, the temperature seed handed to the refiner is exactly 60_000·(v/400)² K.""" + peak_speed = 480.0 + ctx = self._ctx_with_peak_at(peak_speed) + with patch( + "imap_l3_processing.swapi.l3a.science.solar_wind.proton." + "initial_guess._gaussian_refine_bulk_speed_and_temperature", + return_value=(peak_speed, 1e5), + ) as patched_refine: + calculate_initial_guess(ctx) + + temperature_seed_arg = patched_refine.call_args.args[3] + expected_temperature = 60_000.0 * (peak_speed / 400.0) ** 2 + np.testing.assert_allclose(temperature_seed_arg, expected_temperature, + rtol=1e-12) + + def test_temperature_seed_floors_at_one_ev(self): + """At a low peak speed where 60_000·(v/400)² is below 1 eV, the temperature seed handed to the refiner is clamped to `INITIAL_TEMPERATURE_FLOOR_K`.""" + peak_speed = 100.0 + ctx = self._ctx_with_peak_at(peak_speed) + with patch( + "imap_l3_processing.swapi.l3a.science.solar_wind.proton." + "initial_guess._gaussian_refine_bulk_speed_and_temperature", + return_value=(peak_speed, INITIAL_TEMPERATURE_FLOOR_K), + ) as patched_refine: + calculate_initial_guess(ctx) + + temperature_seed_arg = patched_refine.call_args.args[3] + self.assertEqual(temperature_seed_arg, INITIAL_TEMPERATURE_FLOOR_K) + + +class TestCalculateInitialGuessDirection(unittest.TestCase): + """Tests for `calculate_initial_guess` — chunk-mean spin-axis direction handling for the returned `bulk_velocity_rtn`.""" + + def test_initial_velocity_is_anti_parallel_to_spin_axis(self): + """With every rotation matrix aligning body +Y to -R̂, the returned bulk velocity points along +R̂ — the negation of the chunk-mean spin axis.""" + speed_grid = np.linspace(300.0, 600.0, 31) + voltages = np.array( + [_esa_voltage_for_proton_speed(s) for s in speed_grid] + ) + count_rate = np.linspace(0.1, 0.5, len(voltages)) + peak_idx = len(speed_grid) // 2 # middle bin + count_rate[peak_idx] = 100.0 + ctx = _build_proton_ctx(count_rate, voltages) + + # `_spin_rotation_matrices` aligns body +Y to -R̂ on every bin, so + # the chunk-mean spin axis is exactly -R̂. + expected_axis = np.array([-1.0, 0.0, 0.0]) + + guess = calculate_initial_guess(ctx) + v_unit = guess.bulk_velocity_rtn / np.linalg.norm( + guess.bulk_velocity_rtn + ) + np.testing.assert_allclose(v_unit, -expected_axis, atol=1e-12) + + def test_velocity_magnitude_matches_truth_bulk_speed(self): + """On a noiseless forward-model spectrum at 450 km/s the unmocked Gaussian refine recovers the truth, so the returned `|bulk_velocity_rtn|` matches the truth bulk speed to ~2%.""" + truth_bulk_speed = 450.0 + truth = SolarWindParams( + density=5.0, + bulk_velocity_rtn=np.array([truth_bulk_speed, 0.0, 0.0]), + temperature=1.0e5, + mass=PROTON_MASS_KG, + ) + ctx = _make_synthetic_ctx_at_known_truth(truth) + + guess = calculate_initial_guess(ctx) + np.testing.assert_allclose( + np.linalg.norm(guess.bulk_velocity_rtn), + truth_bulk_speed, + rtol=2e-2, + ) + + +class TestCalculateInitialGuessDensity(unittest.TestCase): + """Tests for `calculate_initial_guess` — the returned density is the optimal scale of the unit-density forward model against the observed count rates.""" + + def test_density_is_optimal_scale_of_unit_density_forward_model(self): + """Re-running the unit-density forward model at the guess's own velocity/temperature and feeding it through `optimal_density_scale` reproduces the guess density exactly.""" + truth = SolarWindParams( + density=4.2, + bulk_velocity_rtn=np.array([470.0, 0.0, 0.0]), + temperature=1.2e5, + mass=PROTON_MASS_KG, + ) + ctx = _make_synthetic_ctx_at_known_truth(truth) + + guess = calculate_initial_guess(ctx) + + # Reproduce the function's density step independently: build a + # unit-density forward-model evaluation at the *same* bulk-velocity + # direction and temperature the function uses, then call + # `optimal_density_scale`. The result must match `guess.density`. + unit_density_params = SolarWindParams( + density=1.0, + bulk_velocity_rtn=guess.bulk_velocity_rtn, + temperature=guess.temperature, + mass=ctx.mass_kg, + ) + unit_rates, _ = model_solar_wind_ideal_coincidence_rates( + unit_density_params, ctx + ) + expected_density = optimal_density_scale(unit_rates, ctx.count_rate) + np.testing.assert_allclose(guess.density, expected_density, rtol=1e-10) + + +class TestCalculateInitialGuessRefinerFailure(unittest.TestCase): + """Tests for `calculate_initial_guess` — pathological spectra that the Gaussian refiner cannot fit surface as a wrapped `RuntimeError`, with the offending peak-bin speed and seed temperature included in the message and the underlying `scipy` error chained as `__cause__`.""" + + def test_wraps_runtime_error_on_pathological_edge_spike_spectrum(self): + """A count-rate spectrum with an extreme isolated spike at the lowest-speed bin (1e10 surrounded by 1e-6) drives `curve_fit` past its `maxfev` budget; the refiner re-raises the resulting `RuntimeError` with a wrapped message that names the peak-bin seed, and the scipy error is preserved on `__cause__`.""" + peak_speed = 250.0 + speed_grid = np.linspace(peak_speed, peak_speed + 600.0, 71) + voltages = np.array( + [_esa_voltage_for_proton_speed(s) for s in speed_grid] + ) + count_rate = np.full(len(voltages), 1e-6) + count_rate[0] = 1.0e10 + ctx = _build_proton_ctx(count_rate, voltages) + + with self.assertRaises(RuntimeError) as raise_context: + calculate_initial_guess(ctx) + + message = str(raise_context.exception) + self.assertIn("Initial-guess Gaussian fit failed", message) + self.assertIn(f"{peak_speed:.1f}", message) + self.assertIsInstance(raise_context.exception.__cause__, RuntimeError) + self.assertIn("maxfev", str(raise_context.exception.__cause__)) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/swapi/l3a/science/solar_wind/test_azimuthal_regions.py b/tests/swapi/l3a/science/solar_wind/test_azimuthal_regions.py new file mode 100644 index 000000000..fabf879de --- /dev/null +++ b/tests/swapi/l3a/science/solar_wind/test_azimuthal_regions.py @@ -0,0 +1,40 @@ +import unittest + +from imap_l3_processing.swapi.l3a.science.solar_wind.azimuthal_regions import ( + REGION_OPEN_APERTURE_NEG, + REGION_OPEN_APERTURE_POS, + REGION_SUNGLASSES, + Region, +) + + +class TestRegionConstants(unittest.TestCase): + """Tests for the `REGION_SUNGLASSES`, `REGION_OPEN_APERTURE_NEG`, and `REGION_OPEN_APERTURE_POS` constants.""" + + def test_sunglasses_region_flags_and_azimuth_sign(self): + """The SG constant reports sunglasses=True, open-aperture=False, and azimuth_sign=0 since it spans both halves of the boresight band.""" + self.assertTrue(REGION_SUNGLASSES.is_sunglasses) + self.assertFalse(REGION_SUNGLASSES.is_open_aperture) + self.assertEqual(REGION_SUNGLASSES.azimuth_sign, 0) + + def test_open_aperture_negative_wing_flags_and_sign(self): + """The OA- wing constant reports open-aperture=True and azimuth_sign=-1 to select the negative-azimuth half.""" + self.assertFalse(REGION_OPEN_APERTURE_NEG.is_sunglasses) + self.assertTrue(REGION_OPEN_APERTURE_NEG.is_open_aperture) + self.assertEqual(REGION_OPEN_APERTURE_NEG.azimuth_sign, -1) + + def test_open_aperture_positive_wing_flags_and_sign(self): + """The OA+ wing constant reports open-aperture=True and azimuth_sign=+1 to select the positive-azimuth half.""" + self.assertFalse(REGION_OPEN_APERTURE_POS.is_sunglasses) + self.assertTrue(REGION_OPEN_APERTURE_POS.is_open_aperture) + self.assertEqual(REGION_OPEN_APERTURE_POS.azimuth_sign, +1) + + def test_region_namedtuple_field_order_is_stable(self): + """The Region NamedTuple field order is locked so positional unpacking in numba forward-model loops keeps working.""" + self.assertEqual( + Region._fields, ("is_sunglasses", "is_open_aperture", "azimuth_sign") + ) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/swapi/l3a/science/solar_wind/test_fit_context.py b/tests/swapi/l3a/science/solar_wind/test_fit_context.py new file mode 100644 index 000000000..96bf5f816 --- /dev/null +++ b/tests/swapi/l3a/science/solar_wind/test_fit_context.py @@ -0,0 +1,190 @@ +import unittest +from unittest.mock import MagicMock + +import numpy as np + +from imap_l3_processing.constants import PROTON_MASS_KG +from imap_l3_processing.swapi.l3a.science.solar_wind.fit_context import ( + SolarWindFitContext, + build_solar_wind_fit_context, +) +from imap_l3_processing.swapi.response.azimuthal_transmission import ( + AzimuthalTransmissionGrid, +) +from imap_l3_processing.swapi.response.swapi_response import ResponseGrid + + +def _swapi_response_returning_per_voltage_response_grid(): + """Mock SwapiResponse whose `get_response_grid(v, ...)` returns a real + `ResponseGrid` NamedTuple tagged with the voltage in its `central_speed` + field — lets tests assert on order and per-sweep identity without fighting + numba's typed-list element-type inference (which rejects MagicMock).""" + response = MagicMock() + + def _build_response_grid(voltage, *args, **kwargs): + # Tag the voltage in `central_speed` so tests can recover which + # voltage produced which grid. Other fields use shape-correct + # placeholders that satisfy numba's type system. + return ResponseGrid( + sg_passband=None, + oa_passband=None, + central_speed=float(voltage), + central_effective_area=0.0, + azimuthal_transmission=AzimuthalTransmissionGrid( + values=np.zeros(1), spacing=0.1 + ), + ) + + response.get_response_grid.side_effect = _build_response_grid + return response + + +class TestSolarWindFitContextSubset(unittest.TestCase): + """Tests for `SolarWindFitContext.subset` — selects per-sweep arrays by index while leaving scalar `mass_kg` intact.""" + + def setUp(self): + # 4 sweeps with distinguishable per-sweep values. The "rotation + # matrices" here are not real rotations (det ≠ 1) — they're just + # arrays distinguishable by their first entry, used to verify the + # subset operation indexes correctly. + self.full_ctx = SolarWindFitContext( + count_rate=np.array([10.0, 20.0, 30.0, 40.0]), + esa_voltage=np.array([100.0, 200.0, 300.0, 400.0]), + response_grids=["grid_0", "grid_1", "grid_2", "grid_3"], + rotation_matrices=np.stack( + [np.eye(3) * (i + 1) for i in range(4)] + ), + mass_kg=PROTON_MASS_KG, + ) + + def test_subset_with_all_indices_returns_equivalent_context(self): + """Subsetting with the full index range reproduces every per-sweep array unchanged.""" + kept = self.full_ctx.subset(np.array([0, 1, 2, 3])) + np.testing.assert_array_equal(kept.count_rate, self.full_ctx.count_rate) + np.testing.assert_array_equal(kept.esa_voltage, self.full_ctx.esa_voltage) + # `subset` rebuilds response_grids as a numba.typed.List; cast to a + # plain list for value-level comparison. + self.assertEqual(list(kept.response_grids), self.full_ctx.response_grids) + np.testing.assert_array_equal( + kept.rotation_matrices, self.full_ctx.rotation_matrices + ) + + def test_subset_picks_per_sweep_arrays_at_the_given_indices(self): + """Selecting indices [1, 3] yields a context whose count_rate, voltage, response_grids, and rotation_matrices are all picked at those positions.""" + kept = self.full_ctx.subset(np.array([1, 3])) + np.testing.assert_array_equal(kept.count_rate, [20.0, 40.0]) + np.testing.assert_array_equal(kept.esa_voltage, [200.0, 400.0]) + self.assertEqual(list(kept.response_grids), ["grid_1", "grid_3"]) + np.testing.assert_array_equal( + kept.rotation_matrices, + self.full_ctx.rotation_matrices[[1, 3]], + ) + + def test_subset_preserves_mass(self): + """Subsetting to a single sweep leaves the scalar `mass_kg` field untouched.""" + kept = self.full_ctx.subset(np.array([0])) + self.assertEqual(kept.mass_kg, PROTON_MASS_KG) + + +class TestBuildSolarWindFitContext(unittest.TestCase): + """Tests for `build_solar_wind_fit_context` — filters invalid sweeps from per-sweep arrays in lockstep and materializes a per-sweep `ResponseGrid`.""" + + def _call_factory(self, *, count_rate, esa_voltage, rotation_matrices=None): + response = _swapi_response_returning_per_voltage_response_grid() + if rotation_matrices is None: + rotation_matrices = np.stack([np.eye(3)] * len(count_rate)) + ctx = build_solar_wind_fit_context( + count_rate=count_rate, + esa_voltage=esa_voltage, + swapi_response=response, + central_effective_area_scale=1.0, + rotation_matrices=rotation_matrices, + mass_kg=PROTON_MASS_KG, + mass_per_charge_m_p_per_e=1.0, + ) + return ctx, response + + def test_keeps_all_sweeps_when_voltages_are_finite_and_positive(self): + """When every voltage is finite and positive, no sweeps are dropped and one ResponseGrid is built per sweep.""" + count_rate = np.array([10.0, 20.0, 30.0]) + esa_voltage = np.array([100.0, 200.0, 300.0]) + ctx, response = self._call_factory( + count_rate=count_rate, esa_voltage=esa_voltage + ) + np.testing.assert_array_equal(ctx.count_rate, count_rate) + np.testing.assert_array_equal(ctx.esa_voltage, esa_voltage) + self.assertEqual(len(ctx.response_grids), 3) + + def test_drops_sweeps_with_zero_or_negative_voltage(self): + """Sweeps with voltage == 0 or voltage < 0 are filtered out of count_rate and esa_voltage together.""" + ctx, _ = self._call_factory( + count_rate=np.array([10.0, 20.0, 30.0, 40.0]), + esa_voltage=np.array([100.0, 0.0, -50.0, 400.0]), + ) + np.testing.assert_array_equal(ctx.count_rate, [10.0, 40.0]) + np.testing.assert_array_equal(ctx.esa_voltage, [100.0, 400.0]) + + def test_drops_sweeps_with_non_finite_voltage(self): + """NaN and inf voltages are treated as invalid and dropped alongside their count_rate entries.""" + ctx, _ = self._call_factory( + count_rate=np.array([10.0, 20.0, 30.0]), + esa_voltage=np.array([100.0, np.nan, np.inf]), + ) + np.testing.assert_array_equal(ctx.count_rate, [10.0]) + np.testing.assert_array_equal(ctx.esa_voltage, [100.0]) + + def test_filters_rotation_matrices_in_lockstep_with_voltages(self): + """When a middle sweep is dropped for a zero voltage, its rotation matrix is dropped at the same index so downstream geometry stays aligned.""" + rotations = np.stack([np.eye(3) * (i + 1) for i in range(3)]) + ctx, _ = self._call_factory( + count_rate=np.array([10.0, 20.0, 30.0]), + esa_voltage=np.array([100.0, 0.0, 300.0]), + rotation_matrices=rotations, + ) + np.testing.assert_array_equal( + ctx.rotation_matrices, rotations[[0, 2]] + ) + + def test_creates_response_grid_for_each_kept_voltage(self): + """The factory calls `get_response_grid` once per kept voltage and stores the resulting grids in the same order as the input voltages.""" + count_rate = np.array([10.0, 20.0]) + esa_voltage = np.array([100.0, 200.0]) + ctx, response = self._call_factory( + count_rate=count_rate, esa_voltage=esa_voltage + ) + self.assertEqual(response.get_response_grid.call_count, 2) + self.assertEqual(ctx.response_grids[0].central_speed, 100.0) + self.assertEqual(ctx.response_grids[1].central_speed, 200.0) + + def test_filters_response_grids_in_lockstep_with_voltages(self): + """When a sweep with a NaN voltage is dropped, no ResponseGrid is built for it and the kept grids stay aligned with the kept voltages.""" + ctx, _ = self._call_factory( + count_rate=np.array([10.0, 20.0, 30.0]), + esa_voltage=np.array([100.0, np.nan, 300.0]), + ) + self.assertEqual(len(ctx.response_grids), 2) + self.assertEqual(ctx.response_grids[0].central_speed, 100.0) + self.assertEqual(ctx.response_grids[1].central_speed, 300.0) + + def test_passes_species_and_efficiency_args_to_create_response_grid(self): + """The mass-per-charge and central-effective-area scale supplied to the factory are forwarded into the `get_response_grid` call for each sweep.""" + response = _swapi_response_returning_per_voltage_response_grid() + build_solar_wind_fit_context( + count_rate=np.array([10.0]), + esa_voltage=np.array([100.0]), + swapi_response=response, + central_effective_area_scale=0.42, + rotation_matrices=np.eye(3)[np.newaxis], + mass_kg=PROTON_MASS_KG, + mass_per_charge_m_p_per_e=2.0, # alpha-like mass-per-charge + ) + self.assertEqual(response.get_response_grid.call_count, 1) + call = response.get_response_grid.call_args + all_args = list(call.args) + list(call.kwargs.values()) + self.assertIn(100.0, all_args) + self.assertIn(2.0, all_args) + self.assertIn(0.42, all_args) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/swapi/l3a/science/solar_wind/test_forward_model.py b/tests/swapi/l3a/science/solar_wind/test_forward_model.py new file mode 100644 index 000000000..0c986f99c --- /dev/null +++ b/tests/swapi/l3a/science/solar_wind/test_forward_model.py @@ -0,0 +1,364 @@ +import math +import unittest + +import numpy as np + +from imap_l3_processing.constants import ( + PROTON_CHARGE_COULOMBS, + PROTON_MASS_KG, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.fit_context import ( + build_solar_wind_fit_context, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.forward_model import ( + calculate_integral, + model_solar_wind_ideal_coincidence_rates, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.params import ( + LOG_DENSITY_IDX, + LOG_TEMPERATURE_IDX, + N_STATE, + SolarWindParams, + VELOCITY_SLICE, +) +from imap_l3_processing.swapi.constants import SWAPI_K_FACTOR +from imap_l3_processing.swapi.response.swapi_response import SwapiResponse +from tests.swapi._helpers import proton_params +from tests.test_helpers import get_test_instrument_team_data_path + + +# Reference bulk speed for the slow-wind fixture state shared by every test +# in this module (5 cm⁻³, 100 kK protons under the default `proton_params`). +_REF_BULK_SPEED_KM_S = 450.0 + +# Off-axis bulk velocity used for the velocity-component Jacobian tests. +# Adding small components in R and N breaks the symmetry that makes vR/vN +# Jacobian entries near zero, so finite-difference noise doesn't dominate. +_OFF_AXIS_BULK_VELOCITY_RTN = np.array([30.0, -_REF_BULK_SPEED_KM_S, 20.0]) + +# Index aliases for the RTN velocity components inside the LM state vector. +_VELOCITY_R_IDX, _VELOCITY_T_IDX, _VELOCITY_N_IDX = ( + VELOCITY_SLICE.start, + VELOCITY_SLICE.start + 1, + VELOCITY_SLICE.start + 2, +) + + +def _esa_voltage_at_speed(speed_km_s: float) -> float: + """ESA voltage (V) whose central proton speed equals `speed_km_s`. The + relation is `V = ½ m_p v² / (e · k_SWAPI)`.""" + return ( + 0.5 + * PROTON_MASS_KG + * (speed_km_s * 1e3) ** 2 + / PROTON_CHARGE_COULOMBS + / SWAPI_K_FACTOR + ) + + +# Putting the bulk speed at the passband center maximizes the rate and +# minimizes truncation effects in the quadrature. +_ESA_VOLTAGE_AT_REF_SPEED_V = _esa_voltage_at_speed(_REF_BULK_SPEED_KM_S) + +# Numerical-differentiation parameters. `1e-5` is small enough that truncation +# from finite differences is well below the GL quadrature noise floor for the +# scales involved (≈10⁴ Hz rates, ≈10² km/s velocities) but large enough that +# round-off error stays well below 1%. +_FD_RELATIVE_STEP = 1e-5 + +# Tolerances for analytic-vs-finite-difference Jacobian comparison. The Jacobian +# is exact in the continuum but is evaluated with the same Gauss-Legendre +# quadrature as the rate; the small mismatch comes from the dynamic-quadrature +# limits shifting (slightly) when the state is perturbed for finite differences, +# which moves the GL nodes off the exact integrand peaks. Measured worst case +# on this fixture (off-axis bulk, 100 kK, 450 km/s) is ~2.74% on the vR column; +# 5% leaves headroom for the same machinery to stay green on adjacent fixtures +# while still flagging an analytic-derivative bug (sign flip or factor-of-2, +# which would shift the column by ~100% or ~50%). To remeasure: evaluate +# `model_solar_wind_ideal_coincidence_rates` at the test fixture state and +# compare each column against `_finite_difference_jacobian_column`. +_JACOBIAN_RTOL = 0.05 +_JACOBIAN_ATOL = 1e-3 + + + + +def _build_fit_context_for_voltages( + response: SwapiResponse, + esa_voltages: np.ndarray, + rotation_matrices: np.ndarray = None, +): + """Wrap `build_solar_wind_fit_context` with sensible defaults for these + tests: identity rotations and dummy count rates.""" + voltages_array = np.asarray(esa_voltages, dtype=float) + if rotation_matrices is None: + rotation_matrices = np.stack([np.eye(3)] * len(voltages_array)) + response.warm_cache(voltages_array) + return build_solar_wind_fit_context( + count_rate=np.full(len(voltages_array), 100.0), + esa_voltage=voltages_array, + swapi_response=response, + central_effective_area_scale=1.0, + rotation_matrices=rotation_matrices, + mass_kg=PROTON_MASS_KG, + mass_per_charge_m_p_per_e=1.0, + ) + + +class _ForwardModelFixture(unittest.TestCase): + """Loads the SwapiResponse once per class — the CSV parsing is not free + and none of these tests mutate the response.""" + + @classmethod + def setUpClass(cls): + cls.response = SwapiResponse.from_files( + get_test_instrument_team_data_path( + "swapi/imap_swapi_azimuthal-transmission_20260425_v001.csv" + ), + get_test_instrument_team_data_path( + "swapi/imap_swapi_central-effective-area_20260425_v001.csv" + ), + get_test_instrument_team_data_path( + "swapi/imap_swapi_passband-fit-coefficients_20260425_v001.csv" + ), + ) + + +class TestModelSolarWindIdealCoincidenceRatesShape(_ForwardModelFixture): + """Tests for `model_solar_wind_ideal_coincidence_rates`, output-shape contract.""" + + def test_returns_one_rate_and_one_jacobian_row_per_sweep(self): + """Given three sweeps spanning the passband-center voltage, the model returns a length-3 rate vector and a (3, N_STATE) Jacobian.""" + ctx = _build_fit_context_for_voltages( + self.response, + np.array( + [ + _ESA_VOLTAGE_AT_REF_SPEED_V * 0.95, + _ESA_VOLTAGE_AT_REF_SPEED_V, + _ESA_VOLTAGE_AT_REF_SPEED_V * 1.05, + ] + ), + ) + rates, jacobian = model_solar_wind_ideal_coincidence_rates( + proton_params(), ctx + ) + self.assertEqual(rates.shape, (3,)) + self.assertEqual(jacobian.shape, (3, N_STATE)) + + +class TestCalculateIntegralRateBehavior(_ForwardModelFixture): + """Tests for `calculate_integral`, rate-value behavior (Jacobian asserted elsewhere).""" + + def setUp(self): + self.ctx = _build_fit_context_for_voltages( + self.response, np.array([_ESA_VOLTAGE_AT_REF_SPEED_V]) + ) + self.response_grid = self.ctx.response_grids[0] + self.rotation_matrix = self.ctx.rotation_matrices[0] + + def test_rate_is_positive_when_bulk_velocity_aligns_with_boresight(self): + """With bulk speed at the passband center and the flow aimed along boresight, the predicted rate is strictly positive.""" + rate, _ = calculate_integral( + proton_params(), self.response_grid, self.rotation_matrix + ) + self.assertGreater(rate, 0.0) + + def test_rate_is_linear_in_density(self): + """Doubling the proton density at fixed temperature and geometry doubles the predicted rate exactly, since the rate is linear in `n`.""" + rate_at_5, _ = calculate_integral( + proton_params(density=5.0), + self.response_grid, + self.rotation_matrix, + ) + rate_at_10, _ = calculate_integral( + proton_params(density=10.0), + self.response_grid, + self.rotation_matrix, + ) + np.testing.assert_allclose(rate_at_10, 2.0 * rate_at_5, rtol=1e-12) + + def test_returns_zero_rate_and_jacobian_when_bulk_speed_misses_passband_above(self): + """When the bulk speed (2000 km/s) sits hundreds of sigma above the passband at this voltage, the model short-circuits to rate=0 and a zero Jacobian row.""" + very_fast = proton_params(velocity_rtn=np.array([0.0, -2000.0, 0.0])) + rate, jacobian_row = calculate_integral( + very_fast, self.response_grid, self.rotation_matrix + ) + self.assertEqual(rate, 0.0) + np.testing.assert_array_equal(jacobian_row, np.zeros(N_STATE)) + + def test_returns_zero_rate_and_jacobian_when_bulk_speed_misses_passband_below(self): + """Mirror of the above on the low side: a 50 km/s bulk sits far below the passband at this voltage, so rate=0 and the Jacobian row is zero.""" + very_slow = proton_params(velocity_rtn=np.array([0.0, -50.0, 0.0])) + rate, jacobian_row = calculate_integral( + very_slow, self.response_grid, self.rotation_matrix + ) + self.assertEqual(rate, 0.0) + np.testing.assert_array_equal(jacobian_row, np.zeros(N_STATE)) + + +class TestAnalyticJacobianIdentities(_ForwardModelFixture): + """Tests for `model_solar_wind_ideal_coincidence_rates`, exact closed-form Jacobian identities that hold independent of quadrature.""" + + def test_log_density_jacobian_column_equals_the_rate(self): + """Because the rate is linear in `n`, the analytic log-density Jacobian column equals the rate vector exactly with no quadrature slack.""" + ctx = _build_fit_context_for_voltages( + self.response, + np.array( + [ + _ESA_VOLTAGE_AT_REF_SPEED_V * 0.95, + _ESA_VOLTAGE_AT_REF_SPEED_V, + _ESA_VOLTAGE_AT_REF_SPEED_V * 1.05, + ] + ), + ) + rates, jacobian = model_solar_wind_ideal_coincidence_rates( + proton_params(velocity_rtn=_OFF_AXIS_BULK_VELOCITY_RTN), + ctx, + ) + np.testing.assert_array_equal(jacobian[:, LOG_DENSITY_IDX], rates) + + +def _rate_at_state(state: np.ndarray, ctx) -> np.ndarray: + """Evaluate the rate vector at a state-vector point (no Jacobian).""" + sw_local = SolarWindParams.from_vector(state, mass=PROTON_MASS_KG) + rates, _ = model_solar_wind_ideal_coincidence_rates(sw_local, ctx) + return rates.copy() + + +def _finite_difference_jacobian_column(state: np.ndarray, ctx, j: int) -> np.ndarray: + """Central-difference column `j` of the Jacobian: `(C(x+ε e_j) − C(x−ε e_j)) / 2ε`.""" + eps = _FD_RELATIVE_STEP * max(abs(state[j]), 1.0) + forward = state.copy() + forward[j] += eps + backward = state.copy() + backward[j] -= eps + return (_rate_at_state(forward, ctx) - _rate_at_state(backward, ctx)) / (2 * eps) + + +class TestAnalyticJacobianAgainstFiniteDifferences(_ForwardModelFixture): + """Tests for `model_solar_wind_ideal_coincidence_rates`, analytic Jacobian columns vs. central finite differences.""" + + def setUp(self): + # Two-sweep context with a small voltage gradient so each sweep + # contributes a different, non-degenerate row to the Jacobian. + self.ctx = _build_fit_context_for_voltages( + self.response, + np.array( + [ + _ESA_VOLTAGE_AT_REF_SPEED_V, + _ESA_VOLTAGE_AT_REF_SPEED_V * 1.05, + ] + ), + ) + # Off-axis bulk velocity so all three velocity components produce + # nonzero Jacobian entries (boresight-aligned bulk has vR/vN ≈ 0 + # by symmetry, and the FD signal-to-noise on those columns is poor). + self.sw = proton_params(velocity_rtn=_OFF_AXIS_BULK_VELOCITY_RTN) + self.state = self.sw.to_vector() + + def test_log_temperature_jacobian_is_correct(self): + """At an off-axis bulk state, the analytic log-temperature Jacobian column matches a central finite difference of the rate to within GL quadrature noise.""" + _, analytic_jacobian = model_solar_wind_ideal_coincidence_rates( + self.sw, self.ctx + ) + fd_column = _finite_difference_jacobian_column( + self.state, self.ctx, LOG_TEMPERATURE_IDX + ) + np.testing.assert_allclose( + analytic_jacobian[:, LOG_TEMPERATURE_IDX], + fd_column, + rtol=_JACOBIAN_RTOL, + atol=_JACOBIAN_ATOL, + ) + + def test_velocity_r_jacobian_is_correct(self): + """At an off-axis bulk state, the analytic v_R Jacobian column matches a central finite difference of the rate to within GL quadrature noise.""" + _, analytic_jacobian = model_solar_wind_ideal_coincidence_rates( + self.sw, self.ctx + ) + fd_column = _finite_difference_jacobian_column( + self.state, self.ctx, _VELOCITY_R_IDX + ) + np.testing.assert_allclose( + analytic_jacobian[:, _VELOCITY_R_IDX], + fd_column, + rtol=_JACOBIAN_RTOL, + atol=_JACOBIAN_ATOL, + ) + + def test_velocity_t_jacobian_is_correct(self): + """At an off-axis bulk state, the analytic v_T Jacobian column matches a central finite difference of the rate to within GL quadrature noise.""" + _, analytic_jacobian = model_solar_wind_ideal_coincidence_rates( + self.sw, self.ctx + ) + fd_column = _finite_difference_jacobian_column( + self.state, self.ctx, _VELOCITY_T_IDX + ) + np.testing.assert_allclose( + analytic_jacobian[:, _VELOCITY_T_IDX], + fd_column, + rtol=_JACOBIAN_RTOL, + atol=_JACOBIAN_ATOL, + ) + + def test_velocity_n_jacobian_is_correct(self): + """At an off-axis bulk state, the analytic v_N Jacobian column matches a central finite difference of the rate to within GL quadrature noise.""" + _, analytic_jacobian = model_solar_wind_ideal_coincidence_rates( + self.sw, self.ctx + ) + fd_column = _finite_difference_jacobian_column( + self.state, self.ctx, _VELOCITY_N_IDX + ) + np.testing.assert_allclose( + analytic_jacobian[:, _VELOCITY_N_IDX], + fd_column, + rtol=_JACOBIAN_RTOL, + atol=_JACOBIAN_ATOL, + ) + + +class TestNonIdentityRotation(_ForwardModelFixture): + """Tests for `calculate_integral`, invariance under joint rotation of bulk velocity and SWAPI->RTN matrix.""" + + def test_rate_is_invariant_under_joint_rotation_of_bulk_and_response(self): + """Rotating both the bulk velocity (in RTN) and the SWAPI->RTN matrix by the same 30 degree rotation reproduces the identity-rotation baseline rate.""" + baseline_ctx = _build_fit_context_for_voltages( + self.response, np.array([_ESA_VOLTAGE_AT_REF_SPEED_V]) + ) + baseline_rate, _ = calculate_integral( + proton_params(velocity_rtn=_OFF_AXIS_BULK_VELOCITY_RTN), + baseline_ctx.response_grids[0], + baseline_ctx.rotation_matrices[0], + ) + + # 30° rotation about RTN +R. Rotating both the bulk velocity and the + # instrument-to-RTN matrix by the same Q preserves the bulk direction + # in the instrument frame, which is all the integrand sees. + angle_rad = math.radians(30.0) + rotation_about_r = np.array( + [ + [1.0, 0.0, 0.0], + [0.0, math.cos(angle_rad), -math.sin(angle_rad)], + [0.0, math.sin(angle_rad), math.cos(angle_rad)], + ] + ) + rotated_velocity_rtn = rotation_about_r @ _OFF_AXIS_BULK_VELOCITY_RTN + rotated_xyz_to_rtn = rotation_about_r + rotated_ctx = _build_fit_context_for_voltages( + self.response, + np.array([_ESA_VOLTAGE_AT_REF_SPEED_V]), + rotation_matrices=np.stack([rotated_xyz_to_rtn]), + ) + rotated_rate, _ = calculate_integral( + proton_params(velocity_rtn=rotated_velocity_rtn), + rotated_ctx.response_grids[0], + rotated_ctx.rotation_matrices[0], + ) + + # Agreement is limited only by GL quadrature node positions, which + # are placed on the same bulk-frame angular window in both cases. + np.testing.assert_allclose(rotated_rate, baseline_rate, rtol=1e-6) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/swapi/l3a/science/solar_wind/test_integration_limits.py b/tests/swapi/l3a/science/solar_wind/test_integration_limits.py new file mode 100644 index 000000000..93fffa8db --- /dev/null +++ b/tests/swapi/l3a/science/solar_wind/test_integration_limits.py @@ -0,0 +1,426 @@ +import unittest + +import numpy as np + +from imap_l3_processing.constants import PROTON_MASS_KG +from imap_l3_processing.swapi.l3a.science.solar_wind.azimuthal_regions import ( + REGION_OPEN_APERTURE_NEG, + REGION_OPEN_APERTURE_POS, + REGION_SUNGLASSES, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.integration_limits import ( + SPEED_HALF_WIDTH_VTH, + get_angular_quadrature, + get_speed_quadrature, + speed_window_misses_passband, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.params import ( + SolarWindParams, + bulk_speed, + thermal_speed, + thermal_speed_to_temperature, +) +from imap_l3_processing.swapi.response.passband_grid import ( + interpolate_passband, + speed_ratio_range_at_elevation, +) +from imap_l3_processing.swapi.constants import SWAPI_K_FACTOR +from tests.swapi._helpers import ( + NOMINAL_SWAPI_TO_RTN_ROTATION, + load_swapi_response, + proton_params, +) + +# --- module-level fixtures: real instrument-team CSVs and one warmed grid ---- + +# A 1 keV proton ESA voltage gives a comfortably typical central speed +# (~437 km/s) and a passband elevation range that contains 0. +_ESA_VOLTAGE = 1000.0 / SWAPI_K_FACTOR + +# Region azimuth bands fixed by the doc. +_SG_AZIMUTH_LO_DEG = -20.0 +_SG_AZIMUTH_HI_DEG = +20.0 +_OA_AZIMUTH_INNER_DEG = 20.0 +_OA_AZIMUTH_OUTER_DEG = 150.0 + +_BULK_SPEED_KM_S = 450.0 + + +class TestSpeedWindowMissesPassband(unittest.TestCase): + """Tests for `speed_window_misses_passband` — the cheap pre-check that returns True only when `bulk_speed ± k·vth` is fully disjoint from the widest possible passband speed range (`central_speed · [0.9, 1.1]`).""" + + @classmethod + def setUpClass(cls): + cls.response = load_swapi_response(warm_cache_voltages=[_ESA_VOLTAGE]) + cls.response_grid = cls.response.get_response_grid(_ESA_VOLTAGE, 1.0) + + def test_returns_false_when_bulk_speed_sits_in_passband(self): + """A 450 km/s bulk at the 1 keV step sits well inside the passband envelope, so no miss is reported.""" + sw = proton_params() + self.assertFalse(speed_window_misses_passband(sw, self.response_grid)) + + def test_returns_true_when_bulk_speed_above_passband(self): + """A 1500 km/s bulk puts the entire `bulk ± k·σ` window above the upper passband edge, so a miss is reported.""" + sw = proton_params(velocity_rtn=(0.0, -1500.0, 0.0)) + self.assertTrue(speed_window_misses_passband(sw, self.response_grid)) + + def test_returns_true_when_bulk_speed_below_passband(self): + """A 100 km/s bulk puts the entire `bulk ± k·σ` window below the lower passband edge, so a miss is reported.""" + sw = proton_params(velocity_rtn=(0.0, -100.0, 0.0)) + self.assertTrue(speed_window_misses_passband(sw, self.response_grid)) + + def test_window_overlaps_passband_when_k_sigma_exceeds_offset_above_edge(self): + """With bulk 30 km/s above the passband envelope edge and `k·σ = 50 km/s`, the window still reaches into the passband and no miss is reported — pinning `SPEED_HALF_WIDTH_VTH` as the scaling constant when paired with the detach test below.""" + v_passband_hi = self.response_grid.central_speed * 1.1 + bulk = v_passband_hi + 30.0 + sigma_overlap = 50.0 / SPEED_HALF_WIDTH_VTH + T_overlap = thermal_speed_to_temperature(sigma_overlap, PROTON_MASS_KG) + sw_overlap = proton_params( + velocity_rtn=(0.0, -bulk, 0.0), temperature=T_overlap + ) + self.assertFalse(speed_window_misses_passband(sw_overlap, self.response_grid)) + + def test_window_detaches_from_passband_when_k_sigma_falls_below_offset(self): + """With the same 30 km/s offset above the edge but `k·σ = 5 km/s`, the window stays clear of the passband and a miss is reported — the companion case to the overlap test.""" + v_passband_hi = self.response_grid.central_speed * 1.1 + bulk = v_passband_hi + 30.0 + sigma_detached = 5.0 / SPEED_HALF_WIDTH_VTH + T_detached = thermal_speed_to_temperature(sigma_detached, PROTON_MASS_KG) + sw_detached = proton_params( + velocity_rtn=(0.0, -bulk, 0.0), temperature=T_detached + ) + self.assertTrue(speed_window_misses_passband(sw_detached, self.response_grid)) + + +class TestGetAngularQuadratureSunglassesRegion(unittest.TestCase): + """Tests for `get_angular_quadrature` on the SG region — the 21×21 GL rectangle clamped to the SG elevation range and `[-20°, +20°]` azimuth band.""" + + @classmethod + def setUpClass(cls): + cls.response = load_swapi_response(warm_cache_voltages=[_ESA_VOLTAGE]) + cls.response_grid = cls.response.get_response_grid(_ESA_VOLTAGE, 1.0) + cls.identity = NOMINAL_SWAPI_TO_RTN_ROTATION + + def test_sg_region_is_active_for_sun_pointed_bulk(self): + """A boresight-aligned bulk with a narrow Maxwellian falls inside the SG band, so the region is active and a quadrature is returned.""" + sw = proton_params() + skip, quadrature = get_angular_quadrature( + sw, self.response_grid, REGION_SUNGLASSES, self.identity, 0.0 + ) + self.assertFalse(skip) + self.assertIsNotNone(quadrature) + + def test_sg_azimuth_window_is_inside_minus_20_to_plus_20_degrees(self): + """For a boresight-aligned bulk, every azimuth GL node lies inside the SG `[-20°, +20°]` band.""" + sw = proton_params() + _, quadrature = get_angular_quadrature( + sw, self.response_grid, REGION_SUNGLASSES, self.identity, 0.0 + ) + self.assertGreaterEqual(quadrature.azimuth_points.min(), _SG_AZIMUTH_LO_DEG) + self.assertLessEqual(quadrature.azimuth_points.max(), _SG_AZIMUTH_HI_DEG) + + def test_sg_azimuth_window_clamps_to_plus_minus_20_for_broad_distribution(self): + """A very hot plasma's 180° angular extent forces the azimuth window to clamp exactly to the `[-20°, +20°]` SG band, with the outermost GL nodes hugging both edges.""" + sw = proton_params(temperature=1e10) + _, quadrature = get_angular_quadrature( + sw, self.response_grid, REGION_SUNGLASSES, self.identity, 0.0 + ) + # GL nodes lie strictly inside the band. + np.testing.assert_array_less( + quadrature.azimuth_points, _SG_AZIMUTH_HI_DEG + 1e-9 + ) + np.testing.assert_array_less( + _SG_AZIMUTH_LO_DEG - 1e-9, quadrature.azimuth_points + ) + # The outermost 21-node GL node sits ≈0.125° inside the edge of a 40° + # window (analytically `20°·(1 - x_GL[-1])` ≈ 0.125°). 1.5° is a loose + # cushion above that — only meant to catch the case where the window + # collapses or shifts away from the edge entirely. + self.assertGreater(quadrature.azimuth_points.max(), _SG_AZIMUTH_HI_DEG - 1.5) + self.assertLess(quadrature.azimuth_points.min(), _SG_AZIMUTH_LO_DEG + 1.5) + + def test_sg_elevation_window_clamps_into_passband_elevation_range(self): + """A hot plasma's saturated angular extent is clipped by the SG passband elevation range, so every elevation node lies inside that range.""" + sw = proton_params(temperature=1e10) + _, quadrature = get_angular_quadrature( + sw, self.response_grid, REGION_SUNGLASSES, self.identity, 0.0 + ) + sg_el_lo, sg_el_hi = self.response_grid.sg_passband.elevation_range + self.assertGreaterEqual(quadrature.elevation_points.min(), sg_el_lo) + self.assertLessEqual(quadrature.elevation_points.max(), sg_el_hi) + + def test_sg_quadrature_has_21_nodes_in_each_angular_dimension(self): + """The SG angular quadrature is built with the doc-prescribed (Nθ, Nφ) = (21, 21) Gauss-Legendre node counts.""" + sw = proton_params() + _, quadrature = get_angular_quadrature( + sw, self.response_grid, REGION_SUNGLASSES, self.identity, 0.0 + ) + self.assertEqual(quadrature.elevation_points.shape, (21,)) + self.assertEqual(quadrature.azimuth_points.shape, (21,)) + + def test_sin_cos_caches_match_their_angle_arrays(self): + """The precomputed sin/cos arrays on the quadrature exactly match `sin`/`cos` of the corresponding angle (in radians) at every node.""" + sw = proton_params() + _, quadrature = get_angular_quadrature( + sw, self.response_grid, REGION_SUNGLASSES, self.identity, 0.0 + ) + np.testing.assert_allclose( + quadrature.sin_elevation, np.sin(np.radians(quadrature.elevation_points)) + ) + np.testing.assert_allclose( + quadrature.cos_elevation, np.cos(np.radians(quadrature.elevation_points)) + ) + np.testing.assert_allclose( + quadrature.sin_azimuth, np.sin(np.radians(quadrature.azimuth_points)) + ) + np.testing.assert_allclose( + quadrature.cos_azimuth, np.cos(np.radians(quadrature.azimuth_points)) + ) + + def test_sg_region_skipped_when_bulk_far_from_sg_band(self): + """A bulk pointed at azimuth ≈ 90° is 70° away from the SG band and a narrow Maxwellian cannot bridge the gap, so the SG region is skipped.""" + sw = proton_params(velocity_rtn=(-_BULK_SPEED_KM_S, 0.0, 0.0)) + skip, quadrature = get_angular_quadrature( + sw, self.response_grid, REGION_SUNGLASSES, self.identity, 0.0 + ) + self.assertTrue(skip) + self.assertIsNone(quadrature) + + +class TestGetAngularQuadratureOpenAperturePositive(unittest.TestCase): + """Tests for `get_angular_quadrature` on the OA+ region (az ∈ [+20°, +150°]) with a bulk pointed at az ≈ +90°.""" + + @classmethod + def setUpClass(cls): + cls.response = load_swapi_response(warm_cache_voltages=[_ESA_VOLTAGE]) + cls.response_grid = cls.response.get_response_grid(_ESA_VOLTAGE, 1.0) + cls.identity = np.eye(3) + # Bulk pointed at az=+90°: identity rotation makes v_inst = (-v, 0, 0), + # giving azimuth = atan2(v, 0) = 90° and elevation = 0°. + cls.sw_bulk_at_90 = proton_params( + velocity_rtn=(-_BULK_SPEED_KM_S, 0.0, 0.0) + ) + + def test_oa_positive_region_is_active_for_bulk_at_90_deg_azimuth(self): + """A bulk at az ≈ +90° lies inside the OA+ band, so the region is active and a quadrature is returned.""" + skip, quadrature = get_angular_quadrature( + self.sw_bulk_at_90, + self.response_grid, + REGION_OPEN_APERTURE_POS, + self.identity, + 0.0, + ) + self.assertFalse(skip) + self.assertIsNotNone(quadrature) + + def test_oa_positive_azimuth_window_is_inside_20_to_150_degrees(self): + """For a bulk at az ≈ +90°, every OA+ azimuth node lies strictly inside the `[+20°, +150°]` OA+ band.""" + _, quadrature = get_angular_quadrature( + self.sw_bulk_at_90, + self.response_grid, + REGION_OPEN_APERTURE_POS, + self.identity, + 0.0, + ) + self.assertGreaterEqual( + quadrature.azimuth_points.min(), _OA_AZIMUTH_INNER_DEG + ) + self.assertLessEqual( + quadrature.azimuth_points.max(), _OA_AZIMUTH_OUTER_DEG + ) + + def test_oa_negative_region_is_skipped_for_bulk_at_plus_90_deg_azimuth(self): + """A bulk at az ≈ +90° is too far from the OA- band for a narrow Maxwellian to reach, so the OA- region is skipped.""" + skip, quadrature = get_angular_quadrature( + self.sw_bulk_at_90, + self.response_grid, + REGION_OPEN_APERTURE_NEG, + self.identity, + 0.0, + ) + self.assertTrue(skip) + self.assertIsNone(quadrature) + + +class TestGetAngularQuadratureOpenApertureNegative(unittest.TestCase): + """Tests for `get_angular_quadrature` on the OA- region (az ∈ [-150°, -20°]) with a bulk pointed at az ≈ -90°.""" + + @classmethod + def setUpClass(cls): + cls.response = load_swapi_response(warm_cache_voltages=[_ESA_VOLTAGE]) + cls.response_grid = cls.response.get_response_grid(_ESA_VOLTAGE, 1.0) + cls.identity = np.eye(3) + # Bulk at az=-90°: v_inst = (+v, 0, 0) ⇒ az = atan2(-v, 0) = -90°. + cls.sw_bulk_at_minus_90 = proton_params( + velocity_rtn=(+_BULK_SPEED_KM_S, 0.0, 0.0) + ) + + def test_oa_negative_region_is_active_for_bulk_at_minus_90_deg_azimuth(self): + """A bulk at az ≈ -90° lies inside the OA- band, so the region is active and a quadrature is returned.""" + skip, quadrature = get_angular_quadrature( + self.sw_bulk_at_minus_90, + self.response_grid, + REGION_OPEN_APERTURE_NEG, + self.identity, + 0.0, + ) + self.assertFalse(skip) + self.assertIsNotNone(quadrature) + + def test_oa_negative_azimuth_window_is_inside_minus_150_to_minus_20(self): + """For a bulk at az ≈ -90°, every OA- azimuth node lies strictly inside the `[-150°, -20°]` OA- band.""" + _, quadrature = get_angular_quadrature( + self.sw_bulk_at_minus_90, + self.response_grid, + REGION_OPEN_APERTURE_NEG, + self.identity, + 0.0, + ) + self.assertGreaterEqual( + quadrature.azimuth_points.min(), -_OA_AZIMUTH_OUTER_DEG + ) + self.assertLessEqual( + quadrature.azimuth_points.max(), -_OA_AZIMUTH_INNER_DEG + ) + + def test_oa_positive_region_is_skipped_for_bulk_at_minus_90_deg_azimuth(self): + """A bulk at az ≈ -90° is too far from the OA+ band for a narrow Maxwellian to reach, so the OA+ region is skipped.""" + skip, quadrature = get_angular_quadrature( + self.sw_bulk_at_minus_90, + self.response_grid, + REGION_OPEN_APERTURE_POS, + self.identity, + 0.0, + ) + self.assertTrue(skip) + self.assertIsNone(quadrature) + + +class TestGetSpeedQuadrature(unittest.TestCase): + """Tests for `get_speed_quadrature` — the 15-node Gauss-Legendre quadrature over the intersection of `bulk_speed ± k·vth` and the per-elevation passband speed range.""" + + @classmethod + def setUpClass(cls): + cls.response = load_swapi_response(warm_cache_voltages=[_ESA_VOLTAGE]) + cls.response_grid = cls.response.get_response_grid(_ESA_VOLTAGE, 1.0) + + def test_speed_window_lies_inside_per_elevation_passband(self): + """For warm plasma the passband binds the window, so every GL node lies inside `[r_min(θ)·v0, r_max(θ)·v0]` at the given elevation.""" + sw = proton_params() + _, speed_quadrature = get_speed_quadrature( + sw, self.response_grid, REGION_SUNGLASSES, 0.0 + ) + ratio_lo, ratio_hi = speed_ratio_range_at_elevation( + self.response_grid.sg_passband, 0.0 + ) + passband_lo = self.response_grid.central_speed * ratio_lo + passband_hi = self.response_grid.central_speed * ratio_hi + self.assertGreaterEqual(speed_quadrature.points.min(), passband_lo) + self.assertLessEqual(speed_quadrature.points.max(), passband_hi) + + def test_cold_plasma_window_lies_inside_bulk_plus_minus_k_vth(self): + """For cold plasma (T = 480 K) at the passband center, the `bulk ± k·σ` interval is the binding constraint and every GL node sits inside it.""" + sw = proton_params( + velocity_rtn=(0.0, -self.response_grid.central_speed, 0.0), + temperature=480.0, + ) + sigma = thermal_speed(sw) + speed = bulk_speed(sw) + _, speed_quadrature = get_speed_quadrature( + sw, self.response_grid, REGION_SUNGLASSES, 0.0 + ) + window_lo = speed - SPEED_HALF_WIDTH_VTH * sigma + window_hi = speed + SPEED_HALF_WIDTH_VTH * sigma + self.assertGreaterEqual(speed_quadrature.points.min(), window_lo) + self.assertLessEqual(speed_quadrature.points.max(), window_hi) + + def test_cold_plasma_outer_gl_nodes_sit_close_to_window_edges(self): + """For the same cold-plasma case, the outermost GL nodes sit within ~2 km/s of `bulk ± k·σ`, pinning the window endpoints to `bulk ± k·σ` rather than some narrower subset.""" + sw = proton_params( + velocity_rtn=(0.0, -self.response_grid.central_speed, 0.0), + temperature=480.0, + ) + sigma = thermal_speed(sw) + speed = bulk_speed(sw) + _, speed_quadrature = get_speed_quadrature( + sw, self.response_grid, REGION_SUNGLASSES, 0.0 + ) + window_lo = speed - SPEED_HALF_WIDTH_VTH * sigma + window_hi = speed + SPEED_HALF_WIDTH_VTH * sigma + self.assertLess(window_hi - speed_quadrature.points.max(), 2.0) + self.assertLess(speed_quadrature.points.min() - window_lo, 2.0) + + def test_speed_quadrature_arrays_are_all_15_long(self): + """Each array on the returned `SpeedQuadrature` (points, weights, `speed_cubed_times_passband`) has the doc-prescribed Nv = 15 nodes.""" + sw = proton_params() + _, speed_quadrature = get_speed_quadrature( + sw, self.response_grid, REGION_SUNGLASSES, 0.0 + ) + self.assertEqual(speed_quadrature.points.shape, (15,)) + self.assertEqual(speed_quadrature.weights.shape, (15,)) + self.assertEqual(speed_quadrature.speed_cubed_times_passband.shape, (15,)) + + def test_returns_skip_when_bulk_speed_window_does_not_overlap_passband(self): + """A bulk so far above the passband that `bulk - k·σ` exceeds the upper edge yields skip=True and a `None` quadrature.""" + sw = proton_params( + velocity_rtn=(0.0, -1500.0, 0.0), temperature=10_000.0 + ) + skip, speed_quadrature = get_speed_quadrature( + sw, self.response_grid, REGION_SUNGLASSES, 0.0 + ) + self.assertTrue(skip) + self.assertIsNone(speed_quadrature) + + def test_uses_region_specific_passband(self): + """With a hot plasma so the passband binds the window in both regions, the SG and OA quadratures land on their own region's passband edge and the two windows are distinct.""" + sw = proton_params(temperature=1_000_000.0) + _, sg_quad = get_speed_quadrature( + sw, self.response_grid, REGION_SUNGLASSES, 0.0 + ) + _, oa_quad = get_speed_quadrature( + sw, self.response_grid, REGION_OPEN_APERTURE_POS, 0.0 + ) + sg_ratio_lo, _ = speed_ratio_range_at_elevation( + self.response_grid.sg_passband, 0.0 + ) + oa_ratio_lo, _ = speed_ratio_range_at_elevation( + self.response_grid.oa_passband, 0.0 + ) + sg_lo = self.response_grid.central_speed * sg_ratio_lo + oa_lo = self.response_grid.central_speed * oa_ratio_lo + # Each quadrature's lower edge sits at its own region's passband edge. + self.assertGreaterEqual(sg_quad.points.min(), sg_lo) + self.assertGreaterEqual(oa_quad.points.min(), oa_lo) + # And the two windows are actually distinct — the SG and OA passbands + # have different speed-ratio bounds, so a region mix-up would be + # silently caught here. + self.assertNotEqual(sg_quad.points.min(), oa_quad.points.min()) + + def test_speed_cubed_times_passband_is_v3_times_normalized_passband_at_each_node(self): + """The `speed_cubed_times_passband` array equals `v³ · P(θ, v/v0) / P(0, 1)` reconstructed from `interpolate_passband` at every GL node.""" + sw = proton_params() + _, speed_quadrature = get_speed_quadrature( + sw, self.response_grid, REGION_SUNGLASSES, 0.0 + ) + on_axis_peak = interpolate_passband( + self.response_grid.sg_passband, 0.0, 1.0 + ) + expected = np.array( + [ + v**3 + * interpolate_passband( + self.response_grid.sg_passband, + 0.0, + v / self.response_grid.central_speed, + ) + / on_axis_peak + for v in speed_quadrature.points + ] + ) + np.testing.assert_allclose( + speed_quadrature.speed_cubed_times_passband, expected + ) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/swapi/l3a/science/solar_wind/test_open_aperture_trimming.py b/tests/swapi/l3a/science/solar_wind/test_open_aperture_trimming.py new file mode 100644 index 000000000..620bdbd3a --- /dev/null +++ b/tests/swapi/l3a/science/solar_wind/test_open_aperture_trimming.py @@ -0,0 +1,274 @@ +import math +import unittest + +import numpy as np + +from imap_l3_processing.swapi.l3a.science.solar_wind.open_aperture_trimming import ( + OA_SCAN_RESOLUTION, + trim_oa_azimuth_by_integrand, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.params import ( + SolarWindParams, +) +from imap_l3_processing.swapi.response.azimuthal_transmission import ( + AzimuthalTransmissionGrid, +) +from imap_l3_processing.swapi.response.passband_grid import build_passband_grid +from imap_l3_processing.swapi.response.swapi_response import ResponseGrid +from tests.swapi._helpers import NOMINAL_SWAPI_TO_RTN_ROTATION, proton_params +from tests.swapi.response.test_passband_grid import _gaussian_values_df + + +# --- fixtures --------------------------------------------------------------- + + +def _make_response_grid( + central_speed: float = 450.0, + azimuthal_transmission: np.ndarray | None = None, + azimuthal_transmission_spacing: float = 1.0, +) -> ResponseGrid: + if azimuthal_transmission is None: + # T(|az|) = 1 sampled on [0°, 180°] at 1° spacing → 181 nodes. + azimuthal_transmission = np.ones(181) + df = _gaussian_values_df(sigma_el=2.0) + sg_passband = build_passband_grid(df) + oa_passband = build_passband_grid(df) + return ResponseGrid( + sg_passband=sg_passband, + oa_passband=oa_passband, + central_speed=central_speed, + # Picked arbitrarily — only the count-rate prefactor scales with it, + # and tests here either compare to literal sentinels or assert + # window-shape properties that are invariant to overall amplitude. + central_effective_area=0.5, + azimuthal_transmission=AzimuthalTransmissionGrid( + values=azimuthal_transmission, + spacing=azimuthal_transmission_spacing, + ), + ) + + +def _proton_params_at_elevation( + speed: float, bulk_el_deg: float, density: float = 5.0, temperature: float = 1.0e5 +) -> SolarWindParams: + v_x_swapi = -speed * math.cos(math.radians(bulk_el_deg)) + v_z_swapi = -speed * math.sin(math.radians(bulk_el_deg)) + v_rtn = NOMINAL_SWAPI_TO_RTN_ROTATION @ np.array( + [v_x_swapi, 0.0, v_z_swapi] + ) + return proton_params( + velocity_rtn=tuple(v_rtn), density=density, temperature=temperature + ) + + +def _trim( + rg: ResponseGrid, + sw: SolarWindParams, + *, + azimuth_lo: float, + azimuth_hi: float, + sg_rate: float, + rotation_matrix: np.ndarray | None = None, + min_elevation: float = -10.0, + max_elevation: float = 10.0, +): + if rotation_matrix is None: + rotation_matrix = NOMINAL_SWAPI_TO_RTN_ROTATION + + return trim_oa_azimuth_by_integrand( + rg, + sw, + rotation_matrix, + min_elevation, + max_elevation, + azimuth_lo=azimuth_lo, + azimuth_hi=azimuth_hi, + sg_rate=sg_rate, + ) + + +# --- tests ------------------------------------------------------------------ + + +class TestSkipsWhenAzimuthWindowIsEmpty(unittest.TestCase): + """Tests for `trim_oa_azimuth_by_integrand`, degenerate input-window branch.""" + + def test_skips_when_window_has_zero_width(self): + """A zero-width azimuth clamp short-circuits to the (0, 0) sentinel without scanning.""" + rg = _make_response_grid() + sw = proton_params() + lo, hi = _trim(rg, sw, azimuth_lo=30.0, azimuth_hi=30.0, sg_rate=10.0) + self.assertEqual((lo, hi), (0.0, 0.0)) + + def test_skips_when_window_is_inverted(self): + """An inverted clamp (`hi < lo`) also short-circuits to the (0, 0) sentinel.""" + rg = _make_response_grid() + sw = proton_params() + lo, hi = _trim(rg, sw, azimuth_lo=50.0, azimuth_hi=20.0, sg_rate=10.0) + self.assertEqual((lo, hi), (0.0, 0.0)) + + +class TestSkipsWhenSgRateRelativeFloorDominates(unittest.TestCase): + """Tests for `trim_oa_azimuth_by_integrand`, `1e-3·sg_rate` skip branch.""" + + def test_skips_when_oa_upper_bound_below_sg_relative_floor(self): + """A cold bulk far from OA with a huge sg_rate trips the relative-fraction floor and skips OA.""" + rg = _make_response_grid() + sw = proton_params(temperature=1.0e4) + lo, hi = _trim(rg, sw, azimuth_lo=20.0, azimuth_hi=150.0, sg_rate=1.0e6) + self.assertEqual((lo, hi), (0.0, 0.0)) + + +class TestSkipsWhenAbsoluteRateFloorDominates(unittest.TestCase): + """Tests for `trim_oa_azimuth_by_integrand`, 0.1 Hz absolute-floor skip branch.""" + + def test_skips_when_oa_upper_bound_below_absolute_floor(self): + """With sg_rate=0, the 0.1 Hz absolute floor alone forces a skip for a cold bulk far from OA.""" + rg = _make_response_grid() + sw = proton_params(temperature=1.0e4) + lo, hi = _trim(rg, sw, azimuth_lo=20.0, azimuth_hi=150.0, sg_rate=0.0) + self.assertEqual((lo, hi), (0.0, 0.0)) + + def test_skips_when_sg_relative_below_absolute_floor(self): + """When `1e-3·sg_rate = 0.05 Hz < 0.1 Hz`, the `max(...)` picks the absolute floor and still skips.""" + rg = _make_response_grid() + sw = proton_params(temperature=1.0e4) + lo, hi = _trim(rg, sw, azimuth_lo=20.0, azimuth_hi=150.0, sg_rate=50.0) + self.assertEqual((lo, hi), (0.0, 0.0)) + + +class TestReturnsTrimmedWindowWhenOaIsRelevant(unittest.TestCase): + """Tests for `trim_oa_azimuth_by_integrand`, well-aligned bulk shared-fixture branch.""" + + def setUp(self): + # Under NOMINAL_SWAPI_TO_RTN_ROTATION, bulk along -T_RTN (i.e. + # (0, -450, 0)) maps to v_swapi = (-450, 0, 0) → azimuth_inst = +90°. + self.rg = _make_response_grid() + self.sw = proton_params(velocity_rtn=(0.0, -450.0, 0.0)) + self.az_lo_in = 20.0 + self.az_hi_in = 150.0 + # zero sg_rate keeps only the 0.1 Hz floor — the upper-bound estimate + # for a 5 cm⁻³, 100 kK plasma well aligned with OA+ exceeds that easily. + self.sg_rate = 0.0 + self.lo, self.hi = _trim( + self.rg, + self.sw, + azimuth_lo=self.az_lo_in, + azimuth_hi=self.az_hi_in, + sg_rate=self.sg_rate, + ) + + def test_returned_window_has_positive_width(self): + """A bulk deep inside OA+ produces a non-empty trimmed window.""" + self.assertGreater(self.hi, self.lo) + + def test_returned_window_lies_inside_input_clamp(self): + """The trimmed window is contained in the input azimuth clamp.""" + self.assertGreaterEqual(self.lo, self.az_lo_in) + self.assertLessEqual(self.hi, self.az_hi_in) + + def test_returned_endpoints_lie_on_the_scan_grid(self): + """Both endpoints coincide with nodes of `linspace(az_lo, az_hi, OA_SCAN_RESOLUTION)`.""" + scan = np.linspace(self.az_lo_in, self.az_hi_in, OA_SCAN_RESOLUTION) + self.assertTrue(np.any(np.isclose(scan, self.lo))) + self.assertTrue(np.any(np.isclose(scan, self.hi))) + + def test_returned_window_brackets_the_bulk_azimuth(self): + """The trimmed window strictly contains the bulk azimuth (+90° here).""" + bulk_azimuth = 90.0 + self.assertLess(self.lo, bulk_azimuth) + self.assertGreater(self.hi, bulk_azimuth) + + +class TestTrimAt1eMinus6Threshold(unittest.TestCase): + """Tests for `trim_oa_azimuth_by_integrand`, OA_SCAN_THRESHOLD endpoint selection.""" + + def test_endpoints_expand_one_node_past_threshold_crossings(self): + """A step-function transmission plateau drives the trim to return one scan node outside the first/last above-threshold node.""" + # Hand-built scenario with a transmission curve that's zero outside a + # narrow azimuth band, so the scan integrand is a step function we can + # reason about exactly without re-running production code. + # + # T(|az|) is 1 inside [85°, 95°] and 0 elsewhere. With a uniform-Maxwellian + # bulk (scaling `M(φ)` by zero kills that whole node regardless), the + # scan g(φ) on the 64-node grid linspace(20, 150, 64) is non-zero at + # exactly the scan nodes whose nearest 1° transmission sample is in the + # plateau. linspace(20, 150, 64) has spacing 130/63 ≈ 2.0635°, and the + # nodes inside [85°, 95°] are indices 32, 33, 34 (≈86.03°, 88.10°, + # 90.16°, 92.22°, 94.29° — but azimuth lookup quantizes to integer °, so + # the plateau is exactly nodes whose floor(|az|) ∈ [85, 95)). + transmission = np.zeros(181) + transmission[85:95] = 1.0 # T = 1 on [85°, 94°] + rg = _make_response_grid(azimuthal_transmission=transmission) + sw = proton_params(velocity_rtn=(0.0, -450.0, 0.0)) # bulk_az = +90° + + lo, hi = _trim(rg, sw, azimuth_lo=20.0, azimuth_hi=150.0, sg_rate=0.0) + + scan = np.linspace(20.0, 150.0, OA_SCAN_RESOLUTION) + # Find which nodes lie in [85°, 94°] — those are the "above-threshold" + # nodes for this transmission. The trim must return one node outside + # the first/last of those indices. + in_plateau = (scan >= 85.0) & (scan < 95.0) + plateau_idx = np.where(in_plateau)[0] + self.assertGreater(plateau_idx.size, 0) + expected_lo = scan[max(int(plateau_idx[0]) - 1, 0)] + expected_hi = scan[min(int(plateau_idx[-1]) + 1, OA_SCAN_RESOLUTION - 1)] + self.assertAlmostEqual(lo, expected_lo) + self.assertAlmostEqual(hi, expected_hi) + + +class TestSymmetryBetweenOaPositiveAndNegative(unittest.TestCase): + """Tests for `trim_oa_azimuth_by_integrand`, OA+/OA- mirror-symmetry contract.""" + + def test_mirror_symmetric_bulk_yields_mirror_symmetric_windows(self): + """Bulks at ±90° produce OA+ and OA- windows that are exact mirror images of each other.""" + rg = _make_response_grid() + + # Under NOMINAL_SWAPI_TO_RTN_ROTATION: + # v_rtn = (0, -450, 0) → v_swapi = (-450, 0, 0) → az_inst = +90° (OA+). + # v_rtn = (0, +450, 0) → v_swapi = (+450, 0, 0) → az_inst = -90° (OA-). + sw_pos = proton_params(velocity_rtn=(0.0, -450.0, 0.0)) + sw_neg = proton_params(velocity_rtn=(0.0, +450.0, 0.0)) + + lo_pos, hi_pos = _trim(rg, sw_pos, azimuth_lo=20.0, azimuth_hi=150.0, sg_rate=0.0) + # OA-: same magnitudes, mirrored around 0. + lo_neg, hi_neg = _trim(rg, sw_neg, azimuth_lo=-150.0, azimuth_hi=-20.0, sg_rate=0.0) + + # The implementation picks scan-grid nodes by index, and + # `linspace(20, 150, N)` mirrors `linspace(-150, -20, N)` up to a + # single ULP from `linspace`'s internal accumulation order. + np.testing.assert_allclose(lo_neg, -hi_pos, atol=1e-12, rtol=0) + np.testing.assert_allclose(hi_neg, -lo_pos, atol=1e-12, rtol=0) + + +class TestSkipPolicyAgainstSgRate(unittest.TestCase): + """Tests for `trim_oa_azimuth_by_integrand`, sg_rate-driven skip transition.""" + + def test_high_sg_rate_forces_skip_for_otherwise_aligned_bulk(self): + """A bulk that yields a real window at sg_rate=0 flips to the (0, 0) sentinel once sg_rate is cranked above the OA upper bound.""" + rg = _make_response_grid() + sw = proton_params(velocity_rtn=(0.0, -450.0, 0.0)) # az_inst = +90° + + lo_open, hi_open = _trim( + rg, sw, azimuth_lo=20.0, azimuth_hi=150.0, sg_rate=0.0 + ) + self.assertGreater(hi_open, lo_open) + + lo, hi = _trim(rg, sw, azimuth_lo=20.0, azimuth_hi=150.0, sg_rate=1.0e15) + self.assertEqual((lo, hi), (0.0, 0.0)) + + +class TestScanAtBulkElevationClampedToOaRange(unittest.TestCase): + """Tests for `trim_oa_azimuth_by_integrand`, bulk-elevation clamp to `[min_elevation, max_elevation]`.""" + + def test_bulk_elevation_above_range_yields_non_empty_window(self): + """A bulk at +20° elevation (above the +10° OA cap) still yields a non-empty trimmed window after the scan elevation is clamped to +10°.""" + rg = _make_response_grid() + sw = _proton_params_at_elevation(speed=450.0, bulk_el_deg=20.0) + + lo, hi = _trim(rg, sw, azimuth_lo=20.0, azimuth_hi=150.0, sg_rate=0.0) + self.assertGreater(hi, lo) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/swapi/l3a/science/solar_wind/test_optimizer.py b/tests/swapi/l3a/science/solar_wind/test_optimizer.py new file mode 100644 index 000000000..92d1c6bdf --- /dev/null +++ b/tests/swapi/l3a/science/solar_wind/test_optimizer.py @@ -0,0 +1,199 @@ +import unittest +from unittest.mock import patch + +import numpy as np +import scipy.optimize + +from imap_l3_processing.constants import ( + PROTON_MASS_KG, + PROTON_MASS_PER_CHARGE_M_P_PER_E, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.fit_context import ( + build_solar_wind_fit_context, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.optimizer import ( + OptimizeSolarWindParamsResult, + optimize_solar_wind_params, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.params import ( + N_STATE, + SolarWindParams, +) +from tests.swapi._helpers import ( + NOMINAL_SWAPI_TO_RTN_ROTATION, + REALISTIC_ESA_VOLTAGES, + load_swapi_response, + proton_params, + synthesize_count_rates, +) + + +def _build_proton_fit_context(count_rate: np.ndarray): + response = load_swapi_response(warm_cache_voltages=REALISTIC_ESA_VOLTAGES) + n_sweeps = len(REALISTIC_ESA_VOLTAGES) + rotation_matrices = np.broadcast_to( + NOMINAL_SWAPI_TO_RTN_ROTATION, (n_sweeps, 3, 3) + ).copy() + return build_solar_wind_fit_context( + count_rate=count_rate, + esa_voltage=REALISTIC_ESA_VOLTAGES, + swapi_response=response, + central_effective_area_scale=1.0, + rotation_matrices=rotation_matrices, + mass_kg=PROTON_MASS_KG, + mass_per_charge_m_p_per_e=PROTON_MASS_PER_CHARGE_M_P_PER_E, + ) + + +def _synthetic_count_rate_for(sw_params: SolarWindParams) -> np.ndarray: + """Forward-model deadtime-applied count rates from `sw_params` against + the fixture voltages. Used to seed both the "recovers known params" and + cache-counting tests with a realistic measurement vector. + + Two-step: build a placeholder context with zero counts, run the forward + model to get ideal rates, then apply the deadtime factor exactly the way + `_Evaluator._eval` does (so the residual at the truth is zero).""" + ctx = _build_proton_fit_context(np.zeros_like(REALISTIC_ESA_VOLTAGES)) + return synthesize_count_rates(ctx, sw_params) + + +class TestOptimizeSolarWindParamsResultMSE(unittest.TestCase): + """Tests for `OptimizeSolarWindParamsResult.mse`.""" + + def test_mse_is_mean_of_squared_residuals(self): + """Given a residuals vector [1, -2, 3], mse returns 14/3 — the per-bin mean of squared residuals.""" + result = OptimizeSolarWindParamsResult( + sw_params=proton_params(), + residuals=np.array([1.0, -2.0, 3.0]), + jacobian=np.zeros((3, N_STATE)), + success=True, + ) + self.assertAlmostEqual(result.mse, 14.0 / 3.0) + + def test_mse_handles_all_zero_residuals_without_dividing_by_zero(self): + """At the truth (noise-free fit) all residuals are zero and mse reports exactly 0.0 rather than NaN/Inf, so the wrong-basin chi^2 comparator can be applied unconditionally.""" + result = OptimizeSolarWindParamsResult( + sw_params=proton_params(), + residuals=np.zeros(5), + jacobian=np.zeros((5, N_STATE)), + success=True, + ) + self.assertEqual(result.mse, 0.0) + + +class TestOptimizeSolarWindParamsRecoversTruth(unittest.TestCase): + """End-to-end tests for `optimize_solar_wind_params` driving an LM fit to a known synthetic solar wind state.""" + + @classmethod + def setUpClass(cls): + cls.true_params = proton_params() + cls.count_rate = _synthetic_count_rate_for(cls.true_params) + cls.ctx = _build_proton_fit_context(count_rate=cls.count_rate) + # Initial guess perturbed in density (+10%), speed (+3%), and + # temperature (+20%). Sized so LM converges in one basin without + # invoking the wrong-basin flip; the basin-of-attraction bounds live + # in docs/swapi/solar-wind-moments.md § Wrong-basin detection. + cls.initial_guess = proton_params( + density=cls.true_params.density * 1.1, + velocity_rtn=cls.true_params.bulk_velocity_rtn * 1.03, + temperature=cls.true_params.temperature * 1.2, + ) + cls.result = optimize_solar_wind_params(cls.initial_guess, cls.ctx) + + def test_optimizer_recovers_density(self): + """Starting from a +10% density perturbation against noise-free synthetic data, the fitted density returns to the truth within 0.1%.""" + np.testing.assert_allclose( + self.result.sw_params.density, + self.true_params.density, + rtol=1e-3, + ) + + def test_optimizer_recovers_temperature(self): + """Starting from a +20% temperature perturbation against noise-free synthetic data, the fitted temperature returns to the truth within 0.1%.""" + np.testing.assert_allclose( + self.result.sw_params.temperature, + self.true_params.temperature, + rtol=1e-3, + ) + + def test_optimizer_recovers_bulk_velocity(self): + """Starting from a +3% speed perturbation against noise-free synthetic data, the fitted bulk velocity returns to the truth within 0.5 km/s on each RTN component.""" + np.testing.assert_allclose( + self.result.sw_params.bulk_velocity_rtn, + self.true_params.bulk_velocity_rtn, + atol=0.5, + ) + + def test_optimizer_reports_success(self): + """LM converges cleanly on the well-posed synthetic problem and the result's success flag is True.""" + self.assertTrue(self.result.success) + + def test_residuals_at_solution_are_small(self): + """At the converged solution against noise-free data, mse is below (peak_rate)^2 * 1e-4 — residuals are limited only by LM's xtol=1e-4 tolerance.""" + peak_rate_squared = float(np.max(self.count_rate)) ** 2 + self.assertLess(self.result.mse, peak_rate_squared * 1e-4) + + +class TestOptimizeSolarWindParamsResultShape(unittest.TestCase): + """Tests for `optimize_solar_wind_params` result-object shape and type contracts the wrong-basin detector and uncertainty derivation depend on.""" + + @classmethod + def setUpClass(cls): + true_params = proton_params() + count_rate = _synthetic_count_rate_for(true_params) + cls.ctx = _build_proton_fit_context(count_rate=count_rate) + cls.result = optimize_solar_wind_params(true_params, cls.ctx) + + def test_sw_params_is_a_solar_wind_params(self): + """The returned `sw_params` field is a `SolarWindParams` instance, not a raw state vector.""" + self.assertIsInstance(self.result.sw_params, SolarWindParams) + + def test_residuals_length_matches_ctx_count_rate(self): + """The residuals array has one entry per observed count-rate bin in the fit context.""" + self.assertEqual(self.result.residuals.shape, self.ctx.count_rate.shape) + + def test_jacobian_shape_is_n_residuals_by_n_state(self): + """The jacobian has shape (n_residuals, N_STATE) — one row per residual, one column per fit parameter.""" + self.assertEqual( + self.result.jacobian.shape, (self.ctx.count_rate.size, N_STATE) + ) + + def test_success_is_bool(self): + """The success field is a plain Python bool rather than numpy's bool-like wrapper.""" + self.assertIsInstance(self.result.success, bool) + + def test_sw_params_carries_context_mass(self): + """The fitted `SolarWindParams.mass` is propagated from `ctx.mass_kg` rather than defaulting to proton mass.""" + self.assertEqual(self.result.sw_params.mass, self.ctx.mass_kg) + + +class TestOptimizerLeastSquaresKwargs(unittest.TestCase): + """Tests that `optimize_solar_wind_params` invokes scipy with the doc-pinned LM kwargs.""" + + def test_uses_lm_with_xtol_from_doc_spec(self): + """When the optimizer runs, scipy.optimize.least_squares is called with `method='lm'` and `xtol=1e-4` per the doc spec.""" + true_params = proton_params() + count_rate = _synthetic_count_rate_for(true_params) + ctx = _build_proton_fit_context(count_rate=count_rate) + + with patch( + "imap_l3_processing.swapi.l3a.science.solar_wind.optimizer.scipy.optimize.least_squares" + ) as mock_least_squares: + mock_least_squares.return_value = scipy.optimize.OptimizeResult( + x=true_params.to_vector(), + fun=np.zeros_like(count_rate), + jac=np.zeros((count_rate.size, N_STATE)), + success=True, + ) + + optimize_solar_wind_params(true_params, ctx) + + kwargs = mock_least_squares.call_args.kwargs + self.assertEqual(kwargs["method"], "lm") + self.assertEqual(kwargs["xtol"], 1e-4) + + + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/swapi/l3a/science/solar_wind/test_params.py b/tests/swapi/l3a/science/solar_wind/test_params.py new file mode 100644 index 000000000..4e4fa6ba7 --- /dev/null +++ b/tests/swapi/l3a/science/solar_wind/test_params.py @@ -0,0 +1,161 @@ +import math +import unittest + +import numpy as np + +from imap_l3_processing.constants import ( + BOLTZMANN_CONSTANT_JOULES_PER_KELVIN, + METERS_PER_KILOMETER, + PROTON_MASS_KG, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.params import ( + LOG_DENSITY_IDX, + LOG_TEMPERATURE_IDX, + N_STATE, + VELOCITY_SLICE, + SolarWindParams, + bulk_angles_in_instrument_frame, + bulk_speed, + temperature_to_thermal_speed, + thermal_speed, + thermal_speed_to_temperature, +) +from tests.swapi._helpers import proton_params + + +class TestSolarWindParamsToVector(unittest.TestCase): + """Tests for `SolarWindParams.to_vector`.""" + + def test_density_and_temperature_are_log_encoded(self): + """A params object with density 5 and temperature 1e5 produces a state whose density and temperature slots equal log(5) and log(1e5).""" + sw = proton_params(density=5.0, temperature=100_000.0) + state = sw.to_vector() + self.assertAlmostEqual(state[LOG_DENSITY_IDX], math.log(5.0)) + self.assertAlmostEqual(state[LOG_TEMPERATURE_IDX], math.log(100_000.0)) + + def test_velocity_is_stored_unchanged(self): + """The three velocity components are written into the velocity slice verbatim, without any rotation or rescaling.""" + velocity = np.array([-450.0, 10.0, -5.0]) + sw = proton_params(velocity_rtn=tuple(velocity)) + state = sw.to_vector() + np.testing.assert_array_equal(state[VELOCITY_SLICE], velocity) + + def test_vector_has_n_state_length(self): + """The encoded vector has exactly `N_STATE` elements so it matches the optimizer's expected length.""" + self.assertEqual(proton_params().to_vector().shape, (N_STATE,)) + + +class TestSolarWindParamsFromVector(unittest.TestCase): + """Tests for `SolarWindParams.from_vector`, the inverse of `to_vector`.""" + + def test_from_vector_inverts_to_vector(self): + """Encoding a params object to a vector and decoding it back recovers the original density, temperature, velocity, and mass.""" + original = proton_params( + density=3.7, velocity_rtn=(-420.0, 5.0, -2.0), temperature=85_000.0 + ) + round_tripped = SolarWindParams.from_vector( + original.to_vector(), mass=original.mass + ) + self.assertAlmostEqual(round_tripped.density, original.density) + self.assertAlmostEqual(round_tripped.temperature, original.temperature) + np.testing.assert_array_equal( + round_tripped.bulk_velocity_rtn, original.bulk_velocity_rtn + ) + self.assertEqual(round_tripped.mass, original.mass) + + def test_from_vector_carries_mass_through_unchanged(self): + """Mass is not encoded in the state vector, so the caller-supplied species mass appears on the decoded params object unchanged.""" + state = np.array([0.0, 0.0, -400.0, 0.0, 0.0]) + sw_proton = SolarWindParams.from_vector(state, mass=PROTON_MASS_KG) + self.assertEqual(sw_proton.mass, PROTON_MASS_KG) + + +class TestBulkSpeed(unittest.TestCase): + """Tests for `bulk_speed`.""" + + def test_returns_magnitude_of_bulk_velocity(self): + """A bulk velocity of (-300, 40, -50) km/s returns the Euclidean norm sqrt(300^2 + 40^2 + 50^2).""" + sw = proton_params(velocity_rtn=(-300.0, 40.0, -50.0)) + expected = math.sqrt(300.0**2 + 40.0**2 + 50.0**2) + self.assertAlmostEqual(bulk_speed(sw), expected) + + def test_zero_velocity_returns_zero(self): + """A bulk velocity of (0, 0, 0) returns 0 exactly, with no divide-by-zero artefacts.""" + sw = proton_params(velocity_rtn=(0.0, 0.0, 0.0)) + self.assertEqual(bulk_speed(sw), 0.0) + + +class TestBulkAnglesInInstrumentFrame(unittest.TestCase): + """Tests for `bulk_angles_in_instrument_frame`, which returns (azimuth, elevation) in degrees in the instrument XYZ frame: + azimuth = atan2(-v_x_inst, -v_y_inst), elevation = asin(-v_z_inst / |v|).""" + + def test_velocity_along_minus_y_inst_returns_zero_angles(self): + """Under identity rotation, an RTN wind along -Y becomes v_inst = (0, -450, 0) and yields azimuth = 0 and elevation = 0.""" + sw = proton_params(velocity_rtn=(0.0, -450.0, 0.0)) + azimuth, elevation = bulk_angles_in_instrument_frame(sw, np.eye(3)) + self.assertAlmostEqual(azimuth, 0.0) + self.assertAlmostEqual(elevation, 0.0) + + def test_velocity_with_negative_x_inst_component_yields_positive_azimuth(self): + """A negative instrument-X component (v_inst_x = -50) gives a strictly positive azimuth, since azimuth = atan2(+50, +450) > 0.""" + sw = proton_params(velocity_rtn=(-50.0, -450.0, 0.0)) + azimuth, _ = bulk_angles_in_instrument_frame(sw, np.eye(3)) + self.assertGreater(azimuth, 0.0) + + def test_velocity_with_positive_z_inst_component_yields_negative_elevation(self): + """A positive instrument-Z component (v_inst_z = +50) gives a strictly negative elevation, since elevation = asin(-50/|v|) < 0.""" + sw = proton_params(velocity_rtn=(0.0, -450.0, 50.0)) + _, elevation = bulk_angles_in_instrument_frame(sw, np.eye(3)) + self.assertLess(elevation, 0.0) + + def test_uses_rotation_argument_to_transform_into_instrument_frame(self): + """When the rotation maps +Y_inst to -X_RTN, an RTN wind along -X_RTN lands along +Y_inst and produces azimuth = atan2(0, -1) = +/-180 degrees, catching regressions that drop the rotation.""" + rotation_xyz_to_rtn = np.array( + [[0.0, -1.0, 0.0], [1.0, 0.0, 0.0], [0.0, 0.0, 1.0]] + ) + sw = proton_params(velocity_rtn=(-450.0, 0.0, 0.0)) + azimuth, _ = bulk_angles_in_instrument_frame(sw, rotation_xyz_to_rtn) + self.assertAlmostEqual(abs(azimuth), 180.0, places=10) + + +class TestThermalSpeedAndTemperature(unittest.TestCase): + """Tests for `thermal_speed`, `temperature_to_thermal_speed`, and `thermal_speed_to_temperature` + - the Maxwellian sigma = sqrt(kT/m) conversions in km/s.""" + + def test_thermal_speed_matches_analytic_formula(self): + """For a proton at 1e5 K, `thermal_speed` returns the closed-form sqrt(k*T/m) value in km/s.""" + sw = proton_params(temperature=100_000.0) + expected_km_s = ( + math.sqrt(BOLTZMANN_CONSTANT_JOULES_PER_KELVIN * 100_000.0 / PROTON_MASS_KG) + / METERS_PER_KILOMETER + ) + self.assertAlmostEqual(thermal_speed(sw), expected_km_s) + + def test_temperature_to_thermal_speed_round_trips_via_inverse(self): + """For temperatures spanning 1e3 to 1e7 K, converting to thermal speed and back + via the inverse recovers the original temperature.""" + for temperature_k in [1_000.0, 1e5, 1e7]: + with self.subTest(temperature=temperature_k): + speed = temperature_to_thermal_speed(PROTON_MASS_KG, temperature_k) + recovered = thermal_speed_to_temperature(speed, PROTON_MASS_KG) + self.assertAlmostEqual(recovered, temperature_k) + + def test_thermal_speed_scales_with_sqrt_of_temperature(self): + """At fixed mass, quadrupling the temperature (50 kK to 200 kK) doubles the thermal speed, + confirming the sigma proportional to sqrt(T) scaling.""" + speed_low = temperature_to_thermal_speed(PROTON_MASS_KG, 50_000.0) + speed_high = temperature_to_thermal_speed(PROTON_MASS_KG, 200_000.0) + np.testing.assert_allclose(speed_high / speed_low, 2.0) + + def test_thermal_speed_uses_params_temperature_and_mass(self): + """`thermal_speed(SolarWindParams)` is a wrapper that reads T and m from the params and matches + a direct `temperature_to_thermal_speed` call with the same inputs.""" + sw = proton_params(temperature=120_000.0) + np.testing.assert_allclose( + thermal_speed(sw), + temperature_to_thermal_speed(PROTON_MASS_KG, 120_000.0), + ) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/swapi/l3a/science/solar_wind/test_uncertainties.py b/tests/swapi/l3a/science/solar_wind/test_uncertainties.py new file mode 100644 index 000000000..0821a6deb --- /dev/null +++ b/tests/swapi/l3a/science/solar_wind/test_uncertainties.py @@ -0,0 +1,289 @@ +import unittest +from unittest.mock import MagicMock + +import numpy as np +from uncertainties import covariance_matrix + +from imap_l3_processing.constants import PROTON_MASS_KG +from imap_l3_processing.swapi.l3a.science.solar_wind.uncertainties import ( + compute_hc3_parameter_covariance, + derive_uncertainties, + make_correlated_velocity, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.params import ( + LOG_DENSITY_IDX, + N_STATE, + SolarWindParams, +) + + +# Module-level fixtures: a typical proton state vector. +_TYPICAL_DENSITY = 5.0 +_TYPICAL_TEMPERATURE = 100_000.0 +_TYPICAL_VELOCITY_RTN = (-450.0, 0.0, 0.0) + + +def _proton_sw_params( + density: float = _TYPICAL_DENSITY, + temperature: float = _TYPICAL_TEMPERATURE, +) -> SolarWindParams: + return SolarWindParams( + density=density, + bulk_velocity_rtn=np.array(_TYPICAL_VELOCITY_RTN), + temperature=temperature, + mass=PROTON_MASS_KG, + ) + + +def _make_optimize_result( + jacobian: np.ndarray, + residuals: np.ndarray, + sw_params: SolarWindParams, +) -> MagicMock: + """Build a minimal stand-in for `OptimizeSolarWindParamsResult`. The + function under test only reads `.jacobian`, `.residuals`, `.sw_params`.""" + result = MagicMock() + result.jacobian = jacobian + result.residuals = residuals + result.sw_params = sw_params + return result + + +class TestComputeHc3ParameterCovariance(unittest.TestCase): + """Tests for `compute_hc3_parameter_covariance`: the parameter-space-agnostic sandwich estimator shared by the proton and alpha fitters.""" + + def test_returns_p_by_p_symmetric_matrix_for_full_rank_jacobian(self): + """A full-rank (n×p) Jacobian with non-zero residuals returns a finite, symmetric (p×p) covariance.""" + rng = np.random.default_rng(0) + jacobian = rng.normal(size=(30, 4)) + residuals = rng.normal(size=30) * 0.1 + + cov = compute_hc3_parameter_covariance(jacobian, residuals) + + self.assertEqual(cov.shape, (4, 4)) + self.assertTrue(np.all(np.isfinite(cov))) + np.testing.assert_allclose(cov, cov.T, rtol=0, atol=1e-12) + + def test_high_leverage_row_inflates_corresponding_diagonal(self): + """A single row with leverage near 1 in column j produces a much larger diagonal cov[j,j] than the same fit without the leverage spike.""" + n_bins = 20 + p = 3 + # Baseline: rank-3 jacobian with no high-leverage row; uniform contribution. + baseline_jacobian = np.zeros((n_bins, p)) + for i in range(n_bins): + baseline_jacobian[i, i % p] = 1.0 + residuals = np.zeros(n_bins) + residuals[0] = 0.1 + + cov_baseline = compute_hc3_parameter_covariance(baseline_jacobian, residuals) + + # High-leverage variant: column 0 of row 0 dominates the JᵀJ for column 0. + leveraged_jacobian = baseline_jacobian.copy() + leveraged_jacobian[0, 0] = 1000.0 + cov_leveraged = compute_hc3_parameter_covariance(leveraged_jacobian, residuals) + + self.assertGreater(cov_leveraged[0, 0], cov_baseline[0, 0] * 1e3) + + def test_returns_all_nan_matrix_for_nan_jacobian(self): + """An all-NaN Jacobian triggers the `LinAlgError` fallback and returns a (p×p) all-NaN matrix.""" + jacobian = np.full((20, 5), np.nan) + residuals = np.zeros(20) + + cov = compute_hc3_parameter_covariance(jacobian, residuals) + + self.assertEqual(cov.shape, (5, 5)) + self.assertTrue(np.all(np.isnan(cov))) + + +class TestDeriveUncertaintiesScalings(unittest.TestCase): + """Tests for `derive_uncertainties`: sanity checks on the HC3 sandwich path with a non-degenerate Jacobian.""" + + def setUp(self): + # Random 5-parameter Jacobian over 20 bins. The values themselves + # don't matter — we just need the matrix to have full column rank. + rng = np.random.default_rng(0) + self.jacobian = rng.normal(size=(20, N_STATE)) + # Small-amplitude residuals so the resulting sigmas are reasonable + # in size; magnitude does not affect any of the scaling assertions. + self.residuals = rng.normal(size=20) * 0.1 + self.sw_params = _proton_sw_params() + self.result = _make_optimize_result( + self.jacobian, self.residuals, self.sw_params + ) + + def test_returns_finite_density_and_temperature_sigmas(self): + """A full-rank Jacobian with non-zero residuals yields strictly positive, finite density and temperature sigmas.""" + sigma_n, sigma_T, _ = derive_uncertainties(self.result, MagicMock()) + self.assertTrue(np.isfinite(sigma_n)) + self.assertGreater(sigma_n, 0.0) + self.assertTrue(np.isfinite(sigma_T)) + self.assertGreater(sigma_T, 0.0) + + def test_returns_finite_3x3_velocity_covariance(self): + """The returned velocity covariance is a finite 3x3 matrix sliced from the parameter covariance.""" + _, _, vel_cov = derive_uncertainties(self.result, MagicMock()) + self.assertEqual(vel_cov.shape, (3, 3)) + self.assertTrue(np.all(np.isfinite(vel_cov))) + + def test_density_sigma_scales_linearly_with_density(self): + """Doubling the nominal density at fixed Jacobian/residuals doubles sigma_n, pinning the `sigma_n = n * sqrt(Sigma_x[0,0])` rule.""" + sigma_n_low, _, _ = derive_uncertainties( + _make_optimize_result( + self.jacobian, self.residuals, _proton_sw_params(density=2.0) + ), + MagicMock(), + ) + sigma_n_high, _, _ = derive_uncertainties( + _make_optimize_result( + self.jacobian, self.residuals, _proton_sw_params(density=4.0) + ), + MagicMock(), + ) + self.assertAlmostEqual(sigma_n_high / sigma_n_low, 2.0) + + def test_temperature_sigma_scales_linearly_with_temperature(self): + """Tripling the nominal temperature triples sigma_T, pinning the `sigma_T = T * sqrt(Sigma_x[1,1])` rule.""" + _, sigma_T_low, _ = derive_uncertainties( + _make_optimize_result( + self.jacobian, self.residuals, _proton_sw_params(temperature=50_000.0) + ), + MagicMock(), + ) + _, sigma_T_high, _ = derive_uncertainties( + _make_optimize_result( + self.jacobian, self.residuals, _proton_sw_params(temperature=150_000.0) + ), + MagicMock(), + ) + self.assertAlmostEqual(sigma_T_high / sigma_T_low, 3.0) + + +class TestDeriveUncertaintiesHighLeverageBin(unittest.TestCase): + """Tests for `derive_uncertainties`: the `(1 - h_ii)^-2` leverage reweight at high-leverage rows.""" + + def test_high_leverage_row_inflates_sigma_relative_to_unweighted(self): + """A row with leverage near 1 inflates sigma_n by ~1e4 over the unweighted HC0 baseline, pinned against a regenerated reference value.""" + n_bins = 20 + jacobian = np.zeros((n_bins, N_STATE)) + # Any value ≥ 100 produces h_00 ≈ 1; 1000 chosen for clear separation. + jacobian[0, LOG_DENSITY_IDX] = 1000.0 + # Cycle through the remaining state indices on the diagonal so the + # Jacobian has full column rank (each state column has at least one + # row with a non-zero entry). + for i in range(1, n_bins): + jacobian[i, i % N_STATE] = 1.0 + residuals = np.zeros(n_bins) + residuals[0] = 0.1 # only the high-leverage row carries residual + + result = _make_optimize_result(jacobian, residuals, _proton_sw_params()) + sigma_n_hc3, _, _ = derive_uncertainties(result, MagicMock()) + + # Hard-coded expected: HC3 sigma_n ≈ 5.0, HC0 sigma_n ≈ 5e-4 — the + # `(1 - h_ii)^-2` reweight at the 0.9999 leverage clip multiplies + # the variance by ~1e8 -> sigma ratio ≈ 1e4. Regenerated from + # `derive_uncertainties` on the fixture above. + self.assertAlmostEqual(sigma_n_hc3, 4.999985000045551, places=6) + + def test_unit_leverage_row_keeps_sigma_finite(self): + """A row with leverage exactly 1 still produces a finite sigma_n because the implementation clips leverage at 0.9999 before the (1-h)^-2 reweight.""" + n_bins = 5 + jacobian = np.zeros((n_bins, N_STATE)) + jacobian[0, 0] = 1.0 + # zero out everything else so row 0 is the *only* row that + # touches column 0 — leverage of row 0 will hit exactly 1 + residuals = np.array([0.1, 0.0, 0.0, 0.0, 0.0]) + # remaining cols need at least *some* non-zero rows to keep pinv + # well-defined elsewhere; populate the rest of the diagonal + for i in range(1, min(n_bins, N_STATE)): + jacobian[i, i] = 1.0 + + result = _make_optimize_result(jacobian, residuals, _proton_sw_params()) + sigma_n, _, _ = derive_uncertainties(result, MagicMock()) + self.assertTrue(np.isfinite(sigma_n)) + + +class TestDeriveUncertaintiesNaNInputs(unittest.TestCase): + """Tests for `derive_uncertainties`: NaN-sentinel return on a degenerate Jacobian that breaks `pinv`.""" + + def test_nan_jacobian_returns_nan_density_temperature_and_velocity_cov(self): + """An all-NaN Jacobian triggers the LinAlgError fallback, returning NaN sigmas and an all-NaN 3x3 velocity covariance.""" + jacobian = np.full((20, N_STATE), np.nan) + residuals = np.zeros(20) + result = _make_optimize_result(jacobian, residuals, _proton_sw_params()) + + sigma_n, sigma_T, vel_cov = derive_uncertainties(result, MagicMock()) + + self.assertTrue(np.isnan(sigma_n)) + self.assertTrue(np.isnan(sigma_T)) + self.assertEqual(vel_cov.shape, (3, 3)) + self.assertTrue(np.all(np.isnan(vel_cov))) + + +class TestMakeCorrelatedVelocity(unittest.TestCase): + """Tests for `make_correlated_velocity`: PSD-covariance correlated triplets vs the non-finite / non-PSD NaN-sigma fallback.""" + + def setUp(self): + self.nominal = np.array([-400.0, 5.0, -3.0]) + + def test_valid_covariance_returns_three_correlated_ufloats(self): + """A valid 3x3 PSD covariance produces a length-3 tuple of UFloats from `correlated_values`.""" + cov = np.array( + [ + [4.0, 1.0, 0.5], + [1.0, 2.0, 0.3], + [0.5, 0.3, 1.0], + ] + ) + v = make_correlated_velocity(self.nominal, cov) + self.assertEqual(len(v), 3) + + def test_valid_covariance_round_trips_through_uncertainties(self): + """The pairwise covariance reconstructed from the returned UFloats matches the input matrix and nominal values are preserved exactly.""" + cov = np.array( + [ + [4.0, 1.0, 0.5], + [1.0, 2.0, 0.3], + [0.5, 0.3, 1.0], + ] + ) + v = make_correlated_velocity(self.nominal, cov) + + recovered_cov = np.array(covariance_matrix(v)) + np.testing.assert_allclose(recovered_cov, cov, rtol=0, atol=1e-10) + for component, expected in zip(v, self.nominal): + self.assertAlmostEqual(component.nominal_value, expected) + + def test_non_finite_covariance_returns_nan_sigma_ufloats(self): + """An all-NaN covariance falls back to independent UFloats that preserve the nominal values but carry NaN std_devs.""" + cov = np.full((3, 3), np.nan) + v = make_correlated_velocity(self.nominal, cov) + + self.assertEqual(len(v), 3) + for component, expected in zip(v, self.nominal): + self.assertEqual(component.nominal_value, expected) + self.assertTrue(np.isnan(component.std_dev)) + + def test_non_finite_covariance_returns_independent_ufloats(self): + """The fallback UFloats from a NaN covariance are independent, so the recovered covariance matrix has no finite non-zero off-diagonals.""" + cov = np.full((3, 3), np.nan) + v = make_correlated_velocity(self.nominal, cov) + + # Independent UFloats have no off-diagonal correlation. Off-diagonals + # must be either 0 or NaN — definitely not the finite values that + # `correlated_values` would have produced. + recovered = np.array(covariance_matrix(v)) + self.assertFalse(np.any(np.isfinite(recovered) & (recovered != 0))) + + def test_negative_eigenvalue_covariance_falls_back_to_nan_sigma_ufloats(self): + """A finite but non-PSD covariance (diag with a negative eigenvalue) routes to the NaN-sigma fallback rather than letting `correlated_values` raise.""" + cov = np.diag([1.0, -1.0, 1.0]) + v = make_correlated_velocity(self.nominal, cov) + + self.assertEqual(len(v), 3) + for component, expected in zip(v, self.nominal): + self.assertEqual(component.nominal_value, expected) + self.assertTrue(np.isnan(component.std_dev)) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/swapi/l3a/science/solar_wind/test_utils.py b/tests/swapi/l3a/science/solar_wind/test_utils.py new file mode 100644 index 000000000..5f665d551 --- /dev/null +++ b/tests/swapi/l3a/science/solar_wind/test_utils.py @@ -0,0 +1,110 @@ +import math +import unittest + +import numpy as np + +from imap_l3_processing.constants import PROTON_MASS_KG +from imap_l3_processing.swapi.l3a.science.solar_wind.params import ( + SolarWindParams, + thermal_speed, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.utils import ( + average_spin_axis_rtn, + count_rate_conversion_factor, +) +from imap_l3_processing.swapi.response.azimuthal_transmission import ( + AzimuthalTransmissionGrid, +) +from imap_l3_processing.swapi.response.swapi_response import ResponseGrid + + +class TestAverageSpinAxisRtn(unittest.TestCase): + """Tests for `average_spin_axis_rtn`: averages the body +Y column of per-sweep RTN rotation matrices into a unit vector.""" + + def test_single_rotation_returns_its_y_axis(self): + """A single identity rotation yields +Y_RTN since column 1 of the identity is (0, 1, 0).""" + rotation = np.eye(3) + np.testing.assert_array_equal( + average_spin_axis_rtn(rotation[np.newaxis]), [0.0, 1.0, 0.0] + ) + + def test_constant_axis_across_sweeps_returns_that_axis(self): + """Five identical identity rotations average to the same +Y_RTN unit vector, confirming the mean is over the sweep axis.""" + rotations = np.stack([np.eye(3)] * 5) + np.testing.assert_array_equal( + average_spin_axis_rtn(rotations), [0.0, 1.0, 0.0] + ) + + def test_averages_two_axes_at_pm_45_deg_to_a_unit_vector(self): + """Two body-+Y directions tilted ±45° in the RT-plane average to +Y_RTN after renormalization, cancelling the R components.""" + cos45 = math.cos(math.radians(45)) + rotation_pos = np.eye(3).copy() + rotation_pos[:, 1] = [cos45, cos45, 0.0] + rotation_neg = np.eye(3).copy() + rotation_neg[:, 1] = [-cos45, cos45, 0.0] + + result = average_spin_axis_rtn(np.stack([rotation_pos, rotation_neg])) + np.testing.assert_allclose(result, [0.0, 1.0, 0.0]) + + def test_normalizes_average_when_input_columns_are_not_unit_length(self): + """Non-unit column-1 vectors still produce a length-1 output, guarding the final renormalization step against unscaled inputs.""" + rotations = np.stack( + [ + np.array([[1.0, 0.5, 0.0], [0.0, 1.0, 0.0], [0.0, 0.0, 1.0]]), + np.array([[1.0, 1.5, 0.0], [0.0, 1.0, 0.0], [0.0, 0.0, 1.0]]), + ] + ) + result = average_spin_axis_rtn(rotations) + np.testing.assert_allclose(np.linalg.norm(result), 1.0) + + +class TestCountRateConversionFactor(unittest.TestCase): + """Tests for `count_rate_conversion_factor`: scales the normalized forward-model integrand into a count rate in Hz.""" + + def _proton_params( + self, + density: float = 5.0, + temperature: float = 100_000.0, + ) -> SolarWindParams: + return SolarWindParams( + density=density, + bulk_velocity_rtn=np.array([-450.0, 0.0, 0.0]), + temperature=temperature, + mass=PROTON_MASS_KG, + ) + + def _response_grid( + self, central_effective_area: float = 0.5 + ) -> ResponseGrid: + return ResponseGrid( + sg_passband=None, + oa_passband=None, + central_speed=float("nan"), + central_effective_area=central_effective_area, + azimuthal_transmission=AzimuthalTransmissionGrid( + values=np.array([]), spacing=float("nan") + ), + ) + + def test_matches_closed_form_formula(self): + """A representative proton case reproduces the analytic A_eff · n · (√(2π)σ)^-3 · (π/180)² · 1e5 product to machine precision.""" + sw = self._proton_params(density=5.0, temperature=100_000.0) + rg = self._response_grid(central_effective_area=0.5) + + sigma = thermal_speed(sw) + deg_to_rad_squared = (math.pi / 180.0) ** 2 + km_to_cm = 1e5 + expected = ( + rg.central_effective_area + * sw.density + * (math.sqrt(2 * math.pi) * sigma) ** -3 + * deg_to_rad_squared + * km_to_cm + ) + np.testing.assert_allclose( + count_rate_conversion_factor(sw, rg), expected, rtol=1e-12 + ) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/swapi/l3a/science/test_calculate_alpha_solar_wind_speed.py b/tests/swapi/l3a/science/test_calculate_alpha_solar_wind_speed.py deleted file mode 100644 index 10123ddc6..000000000 --- a/tests/swapi/l3a/science/test_calculate_alpha_solar_wind_speed.py +++ /dev/null @@ -1,190 +0,0 @@ -import math -from pathlib import Path -from unittest import TestCase - -import numpy as np -from spacepy.pycdf import CDF -from uncertainties import ufloat -from uncertainties.unumpy import uarray, nominal_values, std_devs - -import imap_l3_processing -from imap_l3_processing.constants import METERS_PER_KILOMETER, ALPHA_PARTICLE_CHARGE_COULOMBS, ALPHA_PARTICLE_MASS_KG -from imap_l3_processing.swapi.l3a.science.calculate_alpha_solar_wind_speed import calculate_alpha_solar_wind_speed, \ - calculate_alpha_center_of_mass, get_alpha_peak_indices, calculate_sw_speed_alpha, calculate_combined_sweeps -from imap_l3_processing.swapi.l3a.science.speed_calculation import extract_coarse_sweep - - -class TestCalculateAlphaSolarWindSpeed(TestCase): - def test_get_alpha_peak_indices(self): - test_cases = [ - ("one clear peak", [0, 2, 3, 2, 0, 0, 0, 5, 10, 5, 0], [12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2], - [0, 2, 3, 2, 0]), - ("at edge", [3, 2, 0, 0, 0, 5, 10, 5, 0], [10, 9, 8, 7, 6, 5, 4, 3, 2], [3, 2, 0]), - ("wide peak", [0, 2, 3, 3, 2, 0, 0, 0, 5, 10, 5, 0], [13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2], - [0, 2, 3, 3, 2, 0]), - ("ignores values past 4*proton peak", [9, 0, 0, 2, 3, 2, 0, 0, 0, 5, 10, 5, 0], - [13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1], - [0, 2, 3, 2, 0]), - - ] - - for name, count_rates, energies, expected_peak_values in test_cases: - with self.subTest(name): - peak_indices = get_alpha_peak_indices(count_rates, energies) - extracted_peak = count_rates[peak_indices] - self.assertEqual(expected_peak_values, extracted_peak) - - def test_an_exception_is_raised_when_no_alpha_peak(self): - test_cases = [ - ("no clear peak", [0, 0, 1, 1, 1, 2, 2, 2, 10, 2, 0, 0], - [12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1], "Alpha peak not found"), - ("peak is too wide", [0, 4, 4, 4, 0, 0, 0, 0, 0, 5, 10, 10, 3, 2, 0, 0], - [16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1], "Count rates contains multiple distinct peaks"), - ] - - for name, count_rates, energies, exception_text in test_cases: - with self.subTest(name): - with self.assertRaises(Exception) as cm: - get_alpha_peak_indices(count_rates, energies) - self.assertEqual(str(cm.exception), exception_text) - - def test_convert_energy_to_alpha_solar_wind_speed(self): - test_cases = [ - (ufloat(1000, 200), 310.562, 31.056), - (ufloat(1300, 10), 354.096, 1.362), - (ufloat(1800, 5), 416.663, 0.579), - (ufloat(2500, 600), 491.042, 58.925), - (ufloat(5000, 25), 694.439, 1.736) - ] - - for energy, expected_speed, expected_uncertainty in test_cases: - with self.subTest(f"converting energy of {energy} to speed"): - alpha_sw_speed = calculate_sw_speed_alpha(energy) - - self.assertAlmostEqual(expected_speed, alpha_sw_speed.n, 3) - self.assertAlmostEqual(expected_uncertainty, alpha_sw_speed.s, 3) - - def test_calculate_alpha_solar_wind_speed_from_file(self): - file_path = Path( - imap_l3_processing.__file__).parent.parent / 'tests' / 'test_data' / 'swapi' / 'imap_swapi_l2_fake-menlo-5-sweeps_20100101_v002.cdf' - with CDF(str(file_path)) as cdf: - energy = cdf["esa_energy"][...] - count_rate = cdf["swp_coin_rate"][...] - count_rate_delta = cdf["swp_coin_unc"][...] - - alpha_solar_wind_speed = calculate_alpha_solar_wind_speed(uarray(count_rate, count_rate_delta), energy) - - self.assertAlmostEqual(496.490, alpha_solar_wind_speed.nominal_value, 3) - self.assertAlmostEqual(2.811, alpha_solar_wind_speed.std_dev, 3) - - def test_calculate_alpha_center_of_mass_with_fake_data(self): - test_cases = [ - (925, 1850, 50), - (950, 1900, 51), - (1000, 2000, 54), - (1050, 2100, 56), - (1100, 2200, 59) - ] - for modeled_proton_peak_energy, modeled_alpha_particle_peak_energy, expected_uncertainty in test_cases: - with self.subTest(f"alpha particle peak energy is: {modeled_alpha_particle_peak_energy}"): - count_rates, energies = generate_sweep_data(modeled_proton_peak_energy, - modeled_alpha_particle_peak_energy) - count_rate_delta = synthesize_uncertainties(count_rates) - - alpha_energy_center_of_mass = calculate_alpha_center_of_mass(uarray(count_rates, count_rate_delta), - energies) - - self.assertAlmostEqual(modeled_alpha_particle_peak_energy, alpha_energy_center_of_mass.nominal_value, - delta=5) - self.assertAlmostEqual(expected_uncertainty, alpha_energy_center_of_mass.std_dev, 0) - - def test_calculate_alpha_solar_wind_speed_basic(self): - energies = np.array([[0, 1000, 700, 600, 500, 400, 300, 200, 100, 50]]) - - count_rates = np.array([[0, 13, 14, 15, 14, 13, 16, 18, 14, 0]]) - - count_rates_with_uncertainties = uarray(count_rates, np.full_like(count_rates, 1.0)) - - speed = calculate_alpha_solar_wind_speed(count_rates_with_uncertainties, energies) - - expected_speed = math.sqrt(2 * 600 * ALPHA_PARTICLE_CHARGE_COULOMBS / ALPHA_PARTICLE_MASS_KG) / METERS_PER_KILOMETER - self.assertAlmostEqual(expected_speed, speed.n, 0) - - - def test_calculate_alpha_solar_wind_speed_excludes_zeros(self): - energies = np.array([[0, 1000, 700, 650, 600, 550, 500, 450, 400, 300, 200, 100, 50]]) - count_rates = np.array([[0, 13, 0, 5, 10, 15, 0, 10, 8, 16, 18, 14, 0]]) - - count_rates_with_uncertainties = uarray(count_rates, np.full_like(count_rates, 1.0)) - - speed = calculate_alpha_solar_wind_speed(count_rates_with_uncertainties, energies) - - expected_speed = math.sqrt(2 * 550 * ALPHA_PARTICLE_CHARGE_COULOMBS / ALPHA_PARTICLE_MASS_KG) / METERS_PER_KILOMETER - self.assertAlmostEqual(expected_speed, speed.n, 0) - - def test_calculate_alpha_solar_wind_speed_raises_error_if_fewer_than_three_count_rates_nonzero(self): - energies = np.array([[0, 1000, 700, 650, 600, 550, 500, 450, 400, 300, 200, 100, 50]]) - count_rates = np.array([[0, 0, 0, 0, 0, 21, 10, 0, 0, 0, 30, 0, 0]]) - - count_rates_with_uncertainties = uarray(count_rates, np.full_like(count_rates, 1.0)) - - with self.assertRaises(Exception): - calculate_alpha_solar_wind_speed(count_rates_with_uncertainties, energies) - - def test_calculate_combined_sweeps(self): - file_path = Path( - imap_l3_processing.__file__).parent.parent / 'tests' / 'test_data' / 'swapi' / 'imap_swapi_l2_fake-menlo-5-sweeps_20100101_v002.cdf' - with CDF(str(file_path)) as cdf: - energy = cdf["esa_energy"][...] - count_rate = cdf["swp_coin_rate"][...] - count_rate_delta = cdf["swp_coin_unc"][...] - - actual_averaged_count_rates, actual_energy = calculate_combined_sweeps(uarray(count_rate, count_rate_delta), - energy) - expected_avg_count_rates = np.array([ufloat(15.2, 4.2708313008125245), ufloat(25.8, 5.5641710972974225), - ufloat(26.0, 5.585696017507577), ufloat(15.4, 4.298837052040936), - ufloat(5.8, 2.638181191654584)]) - - np.testing.assert_array_equal(nominal_values(actual_averaged_count_rates[22:27]), - nominal_values(expected_avg_count_rates)) - np.testing.assert_array_equal(std_devs(actual_averaged_count_rates[22:27]), std_devs(expected_avg_count_rates)) - np.testing.assert_array_equal(actual_energy[0:10], - np.array([19098, 17541, 16113, 14798, 13591, 12485, 11467, 10532, 9675, - 8885])) - - def test_extract_coarse_sweep(self): - first_sweep_energies = [i for i in range(64)] - second_sweep_energies = [i * 2 for i in range(64)] - two_sweeps_energies = np.array([first_sweep_energies, second_sweep_energies]) - - actual_energies = extract_coarse_sweep(two_sweeps_energies) - - np.testing.assert_array_equal(first_sweep_energies[1:63], actual_energies[0]) - np.testing.assert_array_equal(second_sweep_energies[1:63], actual_energies[1]) - - -def get_sweep_voltages(sweep_table_id=0): - energies = np.geomspace(19000, 100, 62) - return energies / get_k_factor() - - -def synthesize_uncertainties(count_rates): - return np.sqrt(6 * count_rates) - - -def generate_sweep_data(proton_center, alpha_center) -> tuple[np.ndarray, np.ndarray]: - voltages = get_sweep_voltages() - energies = voltages * get_k_factor() - background = 0.1 - proton_peak = generate_peak(energies, 1200, proton_center, 100) - alpha_peak = generate_peak(energies, 20, alpha_center, 100) - - return (proton_peak + alpha_peak + background, energies) - - -def get_k_factor(): - return 1.8 - - -def generate_peak(energies, height, center, narrowness): - return np.exp(np.log(height) - narrowness * np.square(np.log(energies) - np.log(center))) diff --git a/tests/swapi/l3a/science/test_calculate_alpha_solar_wind_temperature_and_density.py b/tests/swapi/l3a/science/test_calculate_alpha_solar_wind_temperature_and_density.py deleted file mode 100644 index 1b86541d7..000000000 --- a/tests/swapi/l3a/science/test_calculate_alpha_solar_wind_temperature_and_density.py +++ /dev/null @@ -1,142 +0,0 @@ -from contextlib import contextmanager -from pathlib import Path -from unittest import TestCase -from unittest.mock import patch, Mock - -import numpy as np -from spacepy.pycdf import CDF -from uncertainties import ufloat -from uncertainties.unumpy import uarray - -import imap_l3_processing -from imap_l3_processing.swapi.l3a.science.calculate_alpha_solar_wind_temperature_and_density import \ - AlphaTemperatureDensityCalibrationTable, calculate_alpha_solar_wind_temperature_and_density_for_combined_sweeps -from imap_l3_processing.swapi.quality_flags import SwapiL3Flags -from tests.test_helpers import get_test_data_path - - -class TestCalculateAlphaSolarWindTemperatureAndDensity(TestCase): - def setUp(self) -> None: - data_file_path = get_test_data_path("swapi/imap_swapi_l2_fake-menlo-5-sweeps_20100101_v002.cdf") - with CDF(str(data_file_path)) as cdf: - self.energy = cdf["esa_energy"][...] - self.count_rate = cdf["swp_coin_rate"][...] - self.count_rate_delta = cdf["swp_coin_unc"][...] - - lookup_table_file_path = get_test_data_path("swapi/imap_swapi_alpha-density-temperature-lut_20240920_v000.dat") - self.calibration_table = AlphaTemperatureDensityCalibrationTable.from_file(lookup_table_file_path) - - def test_temperature_and_density_calibration_table_from_file(self): - file_path = Path( - imap_l3_processing.__file__).parent.parent / 'tests' / 'test_data' / 'swapi' / "imap_swapi_alpha-density-temperature-lut_20240920_v000.dat" - - calibration_table = AlphaTemperatureDensityCalibrationTable.from_file(file_path) - - sw_speed = ufloat(460, 10) - density = ufloat(0.25, 0.03) - temperature = ufloat(6.0000e+05, 100) - - self.assertAlmostEqual(0.39999999, - calibration_table.lookup_density(sw_speed, density, temperature).nominal_value) - self.assertAlmostEqual(7.2e+05, - calibration_table.lookup_temperature(sw_speed, density, temperature).nominal_value) - - def test_calculate_alpha_solar_wind_temperature_and_density_for_combined_sweeps(self): - speed = ufloat(496.490, 2.811) - - efficiency = 0.08 - - actual_alpha_sw_temp_and_density = calculate_alpha_solar_wind_temperature_and_density_for_combined_sweeps( - self.calibration_table, speed, - uarray(self.count_rate, self.count_rate_delta), self.energy, efficiency) - - np.testing.assert_allclose(493916.041942, actual_alpha_sw_temp_and_density.temperature.nominal_value) - np.testing.assert_allclose(155210.29054, actual_alpha_sw_temp_and_density.temperature.std_dev) - np.testing.assert_allclose(3.8704e-3 / efficiency, actual_alpha_sw_temp_and_density.density.nominal_value, - rtol=1e-4) - np.testing.assert_allclose(4.9177e-4 / efficiency, actual_alpha_sw_temp_and_density.density.std_dev, rtol=1e-4) - self.assertEqual(SwapiL3Flags.NONE, actual_alpha_sw_temp_and_density.bad_fit_flag) - np.testing.assert_allclose(411596.701618, actual_alpha_sw_temp_and_density.pre_lut_temperature.nominal_value) - np.testing.assert_allclose(129341.909538, actual_alpha_sw_temp_and_density.pre_lut_temperature.std_dev) - np.testing.assert_allclose(0.030238, actual_alpha_sw_temp_and_density.pre_lut_density.nominal_value, - rtol=1e-4) - np.testing.assert_allclose(0.003842, actual_alpha_sw_temp_and_density.pre_lut_density.std_dev, rtol=1e-4) - - def test_calculate_alpha_solar_wind_temperature_and_density_for_combined_sweeps_returns_pre_lookup_values(self): - speed = ufloat(496.490, 2.811) - - efficiency = 0.08 - mock_calibration_table = Mock() - - actual_alpha_sw_temp_and_density = calculate_alpha_solar_wind_temperature_and_density_for_combined_sweeps( - mock_calibration_table, speed, - uarray(self.count_rate, self.count_rate_delta), self.energy, efficiency) - - self.assertEqual(mock_calibration_table.lookup_density.call_args.args[1], - actual_alpha_sw_temp_and_density.pre_lut_density) - self.assertEqual(mock_calibration_table.lookup_density.call_args.args[2], - actual_alpha_sw_temp_and_density.pre_lut_temperature) - self.assertEqual(mock_calibration_table.lookup_temperature.call_args.args[1], - actual_alpha_sw_temp_and_density.pre_lut_density) - self.assertEqual(mock_calibration_table.lookup_temperature.call_args.args[2], - actual_alpha_sw_temp_and_density.pre_lut_temperature) - - @patch( - 'imap_l3_processing.swapi.l3a.science.calculate_alpha_solar_wind_temperature_and_density.get_alpha_peak_indices') - @patch( - 'imap_l3_processing.swapi.l3a.science.calculate_alpha_solar_wind_temperature_and_density.calculate_combined_sweeps') - def test_raises_error_when_chi_squared_over_ten(self, mock_calculate_combine_sweeps, mock_get_alpha_peak_indices): - speed = ufloat(496.490, 2.811) - peak_energies = np.array([2944, 2705, 2485, 2281, 2094]) - peak_coincidence_rates = np.array([ - ufloat(20.2, 4.2708313008125245), - ufloat(10.8, 5.5641710972974225), - ufloat(606.0, 5.585696017507577), - ufloat(10.4, 4.298837052040936), - ufloat(5.8, 2.638181191654584), - ]) - efficiency = 0.7 - - mock_calculate_combine_sweeps.return_value = peak_coincidence_rates, peak_energies - mock_get_alpha_peak_indices.return_value = slice(0, 5) - - actual_alpha_sw_temp_and_density = calculate_alpha_solar_wind_temperature_and_density_for_combined_sweeps( - self.calibration_table, speed, - uarray(self.count_rate, - self.count_rate_delta), - self.energy, efficiency) - - np.isnan(actual_alpha_sw_temp_and_density.temperature.nominal_value) - np.isnan(actual_alpha_sw_temp_and_density.temperature.std_dev) - np.isnan(actual_alpha_sw_temp_and_density.density.nominal_value) - np.isnan(actual_alpha_sw_temp_and_density.density.std_dev) - self.assertEqual(SwapiL3Flags.HI_CHI_SQ, actual_alpha_sw_temp_and_density.bad_fit_flag) - - @patch( - 'imap_l3_processing.swapi.l3a.science.calculate_alpha_solar_wind_temperature_and_density.get_alpha_peak_indices') - @patch( - 'imap_l3_processing.swapi.l3a.science.calculate_alpha_solar_wind_temperature_and_density.calculate_combined_sweeps') - def test_excludes_zero_count_rates_from_fit(self, mock_calculate_combine_sweeps, mock_get_alpha_peak_indices): - speed = ufloat(496.490, 2.811) - peak_energies = np.array([2944, 2705, 2485, 2281, 2094]) - peak_coincidence_rates = np.array([ - ufloat(15.2, 4.2708313008125245), - ufloat(30.8, 5.5641710972974225), - ufloat(0, 5.585696017507577), - ufloat(30.4, 4.298837052040936), - ufloat(8.8, 2.638181191654584), - ]) * 10 - efficiency = 0.7 - - mock_calculate_combine_sweeps.return_value = peak_coincidence_rates, peak_energies - mock_get_alpha_peak_indices.return_value = slice(0, 5) - with assert_does_not_error(): - calculate_alpha_solar_wind_temperature_and_density_for_combined_sweeps(self.calibration_table, speed, - uarray(self.count_rate, - self.count_rate_delta), - self.energy, efficiency) - - -@contextmanager -def assert_does_not_error(): - yield diff --git a/tests/swapi/l3a/science/test_calculate_pickup_ion.py b/tests/swapi/l3a/science/test_calculate_pickup_ion.py index 17c5797b8..6dca96d9d 100644 --- a/tests/swapi/l3a/science/test_calculate_pickup_ion.py +++ b/tests/swapi/l3a/science/test_calculate_pickup_ion.py @@ -13,13 +13,12 @@ from imap_l3_processing.constants import PROTON_MASS_KG, \ PROTON_CHARGE_COULOMBS, ONE_AU_IN_KM, ONE_SECOND_IN_NANOSECONDS, \ HE_PUI_PARTICLE_MASS_KG, BOLTZMANN_CONSTANT_JOULES_PER_KELVIN -from imap_l3_processing.swapi.l3a.science.calculate_alpha_solar_wind_speed import calculate_combined_sweeps from imap_l3_processing.swapi.l3a.science.calculate_pickup_ion import calculate_pui_energy_cutoff, \ extract_pui_energy_bins, \ convert_velocity_relative_to_imap, calculate_velocity_vector, FittingParameters, \ ForwardModel, convert_velocity_to_reference_frame, model_count_rate_integral, \ calculate_pickup_ion_values, ModelCountRateCalculator, calculate_ten_minute_velocities, \ - calculate_pui_velocity_vector, calculate_solar_wind_velocity_vector, calculate_helium_pui_density, \ + calculate_pui_velocity_vector, calculate_helium_pui_density, \ calculate_helium_pui_temperature, calc_chi_squared_lm_fit from imap_l3_processing.swapi.l3a.science.density_of_neutral_helium_lookup_table import \ DensityOfNeutralHeliumLookupTable @@ -371,8 +370,7 @@ def test_model_count_rate_integral(self, mock_calculate_speed, mock_forward_mode @patch(f"{MODULE}.calculate_pui_energy_cutoff") @patch(f"{MODULE}.lmfit.Minimizer") @patch(f"{MODULE}.spiceypy") - @patch(f"{MODULE}.calculate_combined_sweeps") - def test_calculate_pickup_ions_with_minimize_mocked(self, mock_calculate_combined_sweeps, mock_spice, mock_minimizer_constructor, + def test_calculate_pickup_ions_with_minimize_mocked(self, mock_spice, mock_minimizer_constructor, mock_calculate_pui_energy_cutoff, mock_extract_pui_energy_bins): ephemeris_time_for_epoch = 100000 mock_spice.unitim.return_value = ephemeris_time_for_epoch @@ -389,8 +387,8 @@ def test_calculate_pickup_ions_with_minimize_mocked(self, mock_calculate_combine energy = cdf["esa_energy"][...] count_rate = cdf["swp_coin_rate"][...] - combined_counts, combined_energies = calculate_combined_sweeps(count_rate, energy) - mock_calculate_combined_sweeps.return_value = combined_counts, combined_energies + combined_counts = np.mean(count_rate[:, 1:63], axis=0) + combined_energies = np.mean(energy[:, 1:63], axis=0) extracted_counts = [1.9, 1.2, 0] extracted_energies = [5000, 4000, 3000] extracted_indices = [4, 3, 2] @@ -427,18 +425,16 @@ def test_calculate_pickup_ions_with_minimize_mocked(self, mock_calculate_combine self.density_of_neutral_helium_lookup_table, efficiency_lut, h_inflow_vector, he_inflow_vector) - mock_calculate_combined_sweeps.assert_called_once_with(count_rate, energy) - mock_spice.unitim.assert_called_with(input_epochs / 1e9, "TT", "ET") mock_calculate_pui_energy_cutoff.assert_has_calls([ call(PROTON_MASS_KG, ephemeris_time_for_epoch, sw_velocity, h_inflow_vector), call(HE_PUI_PARTICLE_MASS_KG, ephemeris_time_for_epoch, sw_velocity, he_inflow_vector)]) - mock_extract_pui_energy_bins.assert_called_with(range(62, 0, -1), - combined_energies, - combined_counts, - lower_energy_cutoff * 1.25, - upper_energy_cutoff * 1.2, - ) + extract_call_args = mock_extract_pui_energy_bins.call_args.args + self.assertEqual(range(62, 0, -1), extract_call_args[0]) + np.testing.assert_array_equal(combined_energies, extract_call_args[1]) + np.testing.assert_array_equal(combined_counts, extract_call_args[2]) + self.assertEqual(lower_energy_cutoff * 1.25, extract_call_args[3]) + self.assertEqual(upper_energy_cutoff * 1.2, extract_call_args[4]) actual_count_rates, indices, model_count_rates_calculator, ephemeris_time, sweep_count = \ mock_minimizer_constructor.call_args.kwargs['fcn_args'] self.assertEqual(calc_chi_squared_lm_fit, mock_minimizer_constructor.call_args.args[0]) @@ -491,11 +487,9 @@ def _transform_simplex_vertex(vertex): @patch(f"{MODULE}.calculate_pui_energy_cutoff") @patch(f"{MODULE}.extract_pui_energy_bins") @patch(f"{MODULE}.lmfit.Minimizer") - @patch(f"{MODULE}.calculate_combined_sweeps") - def test_calculate_pickup_ion_bad_fit(self, mock_calculate_combined_sweeps, mock_minimizer_class, + def test_calculate_pickup_ion_bad_fit(self, mock_minimizer_class, mock_extract_pui_energy_bins, _, __): - mock_calculate_combined_sweeps.return_value = (np.array([1]), np.array([1])) mock_extract_pui_energy_bins.return_value = (np.array([1]), np.array([1]), np.array([1])) fit_params = { @@ -511,13 +505,13 @@ def test_calculate_pickup_ion_bad_fit(self, mock_calculate_combined_sweeps, mock actual_fitting_params = calculate_pickup_ion_values(instrument_response_lookup_table=Mock(), geometric_factor_calibration_table=Mock(), - energy=np.array([1]), count_rates=np.array([1]), + energy=np.zeros((1, 72)), count_rates=np.zeros((1, 72)), center_of_epoch=1e9, sw_velocity_vector=np.array([1, 0, 0]), density_of_neutral_helium_lookup_table=Mock(), efficiency_table=Mock(), hydrogen_inflow_vector=Mock(), helium_inflow_vector=Mock()) - self.assertEqual(actual_fitting_params.flags, SwapiL3Flags.HI_CHI_SQ) + self.assertEqual(actual_fitting_params.flags, SwapiL3Flags.BAD_FIT) self.assertEqual(actual_fitting_params.cooling_index, fit_params["cooling_index"]) self.assertEqual(actual_fitting_params.cutoff_speed, fit_params["cutoff_speed"]) self.assertEqual(actual_fitting_params.ionization_rate, fit_params["ionization_rate"]) @@ -748,103 +742,78 @@ def test_snapshot_model_count_rate_result(self): 0.6198514811899901, 0.5685065780319507, 0.5197560948020243], rtol=1e-12) - @patch(f"{MODULE}.calculate_solar_wind_velocity_vector") - def test_calculate_ten_minute_velocities(self, mock_calculate_solar_wind_velocity_vector): + def test_calculate_ten_minute_velocities(self): + """Velocities split into 10-chunk windows and averaged per window; the trailing partial window is averaged across its remaining members.""" x = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]) y = np.array([10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160, 170, 180, 190, 200, 210]) z = np.array([10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160, 170, 180, 190, 200, 210]) + velocity_vectors_dps = np.transpose([x, y, z]) one_min_quality_flags = np.repeat(SwapiL3Flags.NONE, 21) - mock_calculate_solar_wind_velocity_vector.return_value = np.transpose([x, y, z]) - - mock_speed = Mock() - mock_deflection_angles = Mock() - mock_clock_angles = Mock() - averaged_velocities, actual_quality_flags = calculate_ten_minute_velocities(mock_speed, mock_deflection_angles, - mock_clock_angles, - one_min_quality_flags) + averaged_velocities, actual_quality_flags = calculate_ten_minute_velocities( + velocity_vectors_dps, one_min_quality_flags + ) expected_averaged_velocities = np.array([[5.5, 55, 55], [15.5, 155, 155], [21, 210, 210]]) - expected_quality_flags = np.repeat(SwapiL3Flags.NONE, 3) - mock_calculate_solar_wind_velocity_vector.assert_called_with(mock_speed, mock_deflection_angles, - mock_clock_angles) - np.testing.assert_array_equal(averaged_velocities, expected_averaged_velocities) np.testing.assert_array_equal(actual_quality_flags, expected_quality_flags) - @patch(f"{MODULE}.calculate_solar_wind_velocity_vector") - def test_calculate_ten_minute_velocities_with_swapi_quality_flag(self, mock_calculate_solar_wind_velocity_vector): + def test_calculate_ten_minute_velocities_with_swapi_quality_flag(self): + """A single per-minute quality flag bits-OR's into the 10-minute window that contains it.""" x = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]) y = np.array([10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160, 170, 180, 190, 200, 210]) z = np.array([10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160, 170, 180, 190, 200, 210]) + velocity_vectors_dps = np.transpose([x, y, z]) one_min_quality_flags = np.repeat(SwapiL3Flags.NONE, 21) - one_min_quality_flags[13] = SwapiL3Flags.SWP_SW_ANGLES_ESTIMATED - - mock_calculate_solar_wind_velocity_vector.return_value = np.transpose([x, y, z]) + one_min_quality_flags[13] = SwapiL3Flags.FIT_ERROR - mock_speed = Mock() - mock_deflection_angles = Mock() - mock_clock_angles = Mock() - averaged_velocities, actual_quality_flags = calculate_ten_minute_velocities(mock_speed, mock_deflection_angles, - mock_clock_angles, - one_min_quality_flags) + averaged_velocities, actual_quality_flags = calculate_ten_minute_velocities( + velocity_vectors_dps, one_min_quality_flags + ) expected_averaged_velocities = np.array([[5.5, 55, 55], [15.5, 155, 155], [21, 210, 210]]) expected_quality_flags = np.array([ SwapiL3Flags.NONE, - SwapiL3Flags.SWP_SW_ANGLES_ESTIMATED, + SwapiL3Flags.FIT_ERROR, SwapiL3Flags.NONE, ]) - mock_calculate_solar_wind_velocity_vector.assert_called_with(mock_speed, mock_deflection_angles, - mock_clock_angles) - np.testing.assert_array_equal(averaged_velocities, expected_averaged_velocities) np.testing.assert_array_equal(actual_quality_flags, expected_quality_flags) - @patch(f"{MODULE}.calculate_solar_wind_velocity_vector") - def test_calculate_ten_minute_velocities_with_multiple_quality_flag(self, - mock_calculate_solar_wind_velocity_vector): + def test_calculate_ten_minute_velocities_with_multiple_quality_flag(self): + """Multiple distinct per-minute quality flags inside the same 10-minute window OR together into a combined bitmask for that window.""" x = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]) y = np.array([10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160, 170, 180, 190, 200, 210]) z = np.array([10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160, 170, 180, 190, 200, 210]) - OTHER_QUALITY_FLAG = 2 ** 3 + OTHER_QUALITY_FLAG = 2 ** 4 + velocity_vectors_dps = np.transpose([x, y, z]) one_min_quality_flags = np.repeat(SwapiL3Flags.NONE, 21) - - one_min_quality_flags[13] = SwapiL3Flags.SWP_SW_ANGLES_ESTIMATED + one_min_quality_flags[13] = SwapiL3Flags.FIT_ERROR one_min_quality_flags[14] = OTHER_QUALITY_FLAG - mock_calculate_solar_wind_velocity_vector.return_value = np.transpose([x, y, z]) - - mock_speed = Mock() - mock_deflection_angles = Mock() - mock_clock_angles = Mock() - averaged_velocities, actual_quality_flags = calculate_ten_minute_velocities(mock_speed, - mock_deflection_angles, - mock_clock_angles, - one_min_quality_flags) + averaged_velocities, actual_quality_flags = calculate_ten_minute_velocities( + velocity_vectors_dps, one_min_quality_flags + ) expected_averaged_velocities = np.array([[5.5, 55, 55], [15.5, 155, 155], [21, 210, 210]]) expected_quality_flags = np.array([ SwapiL3Flags.NONE, - SwapiL3Flags.SWP_SW_ANGLES_ESTIMATED | OTHER_QUALITY_FLAG, + SwapiL3Flags.FIT_ERROR | OTHER_QUALITY_FLAG, SwapiL3Flags.NONE, ]) - mock_calculate_solar_wind_velocity_vector.assert_called_with(mock_speed, mock_deflection_angles, - mock_clock_angles) - np.testing.assert_array_equal(averaged_velocities, expected_averaged_velocities) np.testing.assert_array_equal(actual_quality_flags, expected_quality_flags) @@ -859,17 +828,6 @@ def test_calculate_pickup_ion_velocities(self): np.testing.assert_array_almost_equal(expected_values, actual, 1) - def test_calculate_solar_wind_velocity_vector(self): - speed = np.array([400, 390, 400, 410, 400, 400]) - deflection_angle = np.array([90, 0, 180, 0, 90, 90]) - clock_angle = np.array([-270, -180, -90, 0, 0, -180]) - - actual = calculate_solar_wind_velocity_vector(speed, deflection_angle, clock_angle) - - expected_values = [(0, -400, 0), (0, 0, -390), (0, 0, 400), (0, 0, -410), (-400, 0, 0), (400, 0, 0)] - - np.testing.assert_array_almost_equal(actual, expected_values, 1) - def test_calc_chi_squared_lm_fit(self): params = MagicMock() observed_count_rates = np.array([2, 20, 200, 2000]) @@ -891,14 +849,12 @@ def test_calc_chi_squared_lm_fit(self): @patch(f"{MODULE}.calculate_pui_energy_cutoff") @patch(f"{MODULE}.extract_pui_energy_bins") @patch(f"{MODULE}.lmfit.Minimizer") - @patch(f"{MODULE}.calculate_combined_sweeps") def test_calculate_pickup_ion_computes_partial_uncertainties( - self, mock_calculate_combined_sweeps, mock_minimizer_class, + self, mock_minimizer_class, mock_extract_pui_energy_bins, _, __, mock_hessian, mock_inv, ): - mock_calculate_combined_sweeps.return_value = (np.array([1]), np.array([1])) mock_extract_pui_energy_bins.return_value = (np.array([1]), np.array([1]), np.array([1])) fit_params = { @@ -938,7 +894,7 @@ def test_calculate_pickup_ion_computes_partial_uncertainties( actual_fitting_params = calculate_pickup_ion_values(instrument_response_lookup_table=Mock(), geometric_factor_calibration_table=Mock(), - energy=np.array([1]), count_rates=np.array([1]), + energy=np.zeros((1, 72)), count_rates=np.zeros((1, 72)), center_of_epoch=1e9, sw_velocity_vector=np.array([1, 0, 0]), density_of_neutral_helium_lookup_table=Mock(), efficiency_table=Mock(), hydrogen_inflow_vector=Mock(), @@ -965,14 +921,12 @@ def test_calculate_pickup_ion_computes_partial_uncertainties( @patch(f"{MODULE}.calculate_pui_energy_cutoff") @patch(f"{MODULE}.extract_pui_energy_bins") @patch(f"{MODULE}.lmfit.Minimizer") - @patch(f"{MODULE}.calculate_combined_sweeps") def test_returns_nominal_values_when_uncertainty_fallback_fails( - self, mock_calculate_combined_sweeps, mock_minimizer_class, + self, mock_minimizer_class, mock_extract_pui_energy_bins, _, __, mock_hessian, mock_inv, ): - mock_calculate_combined_sweeps.return_value = (np.array([1]), np.array([1])) mock_extract_pui_energy_bins.return_value = (np.array([1]), np.array([1]), np.array([1])) fit_params = { @@ -1021,7 +975,7 @@ def test_returns_nominal_values_when_uncertainty_fallback_fails( actual_fitting_params = calculate_pickup_ion_values(instrument_response_lookup_table=Mock(), geometric_factor_calibration_table=Mock(), - energy=np.array([1]), count_rates=np.array([1]), + energy=np.zeros((1, 72)), count_rates=np.zeros((1, 72)), center_of_epoch=1e9, sw_velocity_vector=np.array([1, 0, 0]), density_of_neutral_helium_lookup_table=Mock(), diff --git a/tests/swapi/l3a/science/test_calculate_proton_solar_wind_clock_and_deflection_angles.py b/tests/swapi/l3a/science/test_calculate_proton_solar_wind_clock_and_deflection_angles.py deleted file mode 100644 index d07968d38..000000000 --- a/tests/swapi/l3a/science/test_calculate_proton_solar_wind_clock_and_deflection_angles.py +++ /dev/null @@ -1,88 +0,0 @@ -from pathlib import Path -from unittest import TestCase -from unittest.mock import patch, sentinel - -from uncertainties import ufloat - -import imap_l3_processing -from imap_l3_processing.swapi.l3a.science.calculate_proton_solar_wind_clock_and_deflection_angles import \ - calculate_clock_angle, ClockAngleCalibrationTable, calculate_deflection_angle - - -class TestCalculateProtonSolarWindClockAndDeflectionAngles(TestCase): - def setUp(self): - file_path = Path( - imap_l3_processing.__file__).parent.parent / 'tests' / 'test_data' / 'swapi' / 'imap_swapi_clock-angle-and-flow-deflection-lut_20240918_v000.dat' - self.lookup_table = ClockAngleCalibrationTable.from_file(file_path) - - def test_calculate_clock_angle(self): - proton_solar_wind_speed, a, phi, b = ( - ufloat(405.00, .1), ufloat(15.0, .1), ufloat(33.3, .1), - ufloat(1_000.0, .1)) - clock_angle = calculate_clock_angle(self.lookup_table, proton_solar_wind_speed, a, phi, b) - self.assertAlmostEqual(phi.n - 6.09, clock_angle.n, 4) - self.assertAlmostEqual(0.1, clock_angle.s, 4) - - @patch( - 'imap_l3_processing.swapi.l3a.science.calculate_proton_solar_wind_clock_and_deflection_angles.estimate_deflection_and_clock_angles') - def test_calculate_clock_angle_out_of_lut_range(self, mock_estimate_deflection_and_clock_angles): - proton_solar_wind_speed, a, phi, b = (ufloat(350, .1), - ufloat(500, .2), - ufloat(4.69, .2), - ufloat(1_000.0, .2)) - - mock_estimate_deflection_and_clock_angles.return_value = (sentinel.deflection_angle, sentinel.clock_angle) - clock_angle = calculate_clock_angle(self.lookup_table, proton_solar_wind_speed, a, phi, b) - - mock_estimate_deflection_and_clock_angles.assert_called_with(proton_solar_wind_speed.nominal_value) - self.assertAlmostEqual(sentinel.clock_angle, clock_angle) - - def test_calculate_clock_angle_with_interpolation(self): - proton_solar_wind_speed, a, phi, b = (ufloat(845.00, .1), - ufloat(31.25, .2), - ufloat(33.3, .2), - ufloat(1_000.0, .2)) - clock_angle = calculate_clock_angle(self.lookup_table, proton_solar_wind_speed, a, phi, b) - self.assertAlmostEqual(phi.n - 6.39, clock_angle.n, 4) - self.assertAlmostEqual(phi.s, clock_angle.s, 3) - - def test_calculate_clock_angle_mods(self): - proton_solar_wind_speed, a, phi, b = (ufloat(845.00, .1), - ufloat(31.25, .2), - ufloat(4.69, .2), - ufloat(1_000.0, .2)) - clock_angle = calculate_clock_angle(self.lookup_table, proton_solar_wind_speed, a, phi, b) - self.assertAlmostEqual(358.3, clock_angle.n, 3) - self.assertAlmostEqual(phi.s, clock_angle.s, 3) - - def test_calculate_deflection_angle_with_interpolation(self): - proton_solar_wind_speed, a, phi, b = (ufloat(845.00, .1), - ufloat(31.25, .2), - ufloat(33.3, .2), - ufloat(1_000.0, .2)) - deflection_angle = calculate_deflection_angle(self.lookup_table, proton_solar_wind_speed, a, phi, b) - self.assertAlmostEqual(3.125, deflection_angle.n, 4) - self.assertAlmostEqual(0.02, deflection_angle.s, 4) - - def test_calculate_deflection_angle_out_of_lut_range(self): - proton_solar_wind_speed, a, phi, b = (ufloat(350, .1), - ufloat(500, .2), - ufloat(4.69, .2), - ufloat(1_000.0, .2)) - - actual_deflection_angle = calculate_deflection_angle(self.lookup_table, proton_solar_wind_speed, a, phi, b) - - self.assertEqual(5.0, actual_deflection_angle.nominal_value) - self.assertEqual(45.0, actual_deflection_angle.std_dev) - - def test_clock_angle_calibration_table_from_file(self): - file_path = Path( - imap_l3_processing.__file__).parent.parent / 'tests' / 'test_data' / 'swapi' / 'imap_swapi_clock-angle-and-flow-deflection-lut_20240918_v000.dat' - - proton_solar_wind_speed = 405.00 - a_over_b = 0.01625 - - calibration_table = ClockAngleCalibrationTable.from_file(file_path) - - self.assertAlmostEqual(6.105, calibration_table.lookup_clock_offset(proton_solar_wind_speed, a_over_b)) - self.assertEqual(1.625, calibration_table.lookup_flow_deflection(proton_solar_wind_speed, a_over_b)) diff --git a/tests/swapi/l3a/science/test_calculate_proton_solar_wind_speed.py b/tests/swapi/l3a/science/test_calculate_proton_solar_wind_speed.py deleted file mode 100644 index 5f4c4ea0f..000000000 --- a/tests/swapi/l3a/science/test_calculate_proton_solar_wind_speed.py +++ /dev/null @@ -1,376 +0,0 @@ -import math -from datetime import datetime -from pathlib import Path -from unittest.mock import patch - -import numpy as np -import spiceypy -from scipy.optimize import curve_fit -from spacepy.pycdf import CDF -from uncertainties import ufloat -from uncertainties.unumpy import uarray, std_devs, nominal_values - -import imap_l3_processing -from imap_l3_processing.constants import METERS_PER_KILOMETER, ONE_SECOND_IN_NANOSECONDS -from imap_l3_processing.swapi.l3a.science.calculate_proton_solar_wind_speed import calculate_proton_solar_wind_speed, \ - get_peak_indices, find_peak_center_of_mass_index, interpolate_energy, fit_energy_per_charge_peak_variations, \ - calculate_sw_speed_h_plus, get_proton_peak_indices, interpolate_angle, get_angle, \ - get_spin_angle_from_swapi_axis_in_despun_frame, estimate_deflection_and_clock_angles -from tests.spice_test_case import SpiceTestCase - - -class TestCalculateProtonSolarWindSpeed(SpiceTestCase): - def test_calculate_solar_wind_speed(self): - energies = np.array([[0, 1000, 750, 500, 400, 300, 200, 100, 50]] * 5) - count_rates = np.array([[0, 14, 15, 16, 17, 16, 15, 14, 0], - [0, 14, 15, 16, 17, 16, 15, 14, 0], - [0, 14, 15, 16, 17, 16, 15, 14, 0], - [0, 14, 15, 16, 17, 16, 15, 14, 0], - [0, 14, 15, 16, 17, 16, 15, 14, 0]]) - count_rates_with_uncertainties = uarray(count_rates, np.full_like(count_rates, 1.0)) - - times = [datetime(2025, 6, 6, 12, i) for i in range(5)] - epochs_in_terrestrial_time = spiceypy.datetime2et(times) * ONE_SECOND_IN_NANOSECONDS - speed, a, phi, b, chi_sq = calculate_proton_solar_wind_speed(count_rates_with_uncertainties, energies, - epochs_in_terrestrial_time) - - proton_charge = 1.602176634e-19 - proton_mass = 1.67262192595e-27 - expected_speed = math.sqrt(2 * 400 * proton_charge / proton_mass) / METERS_PER_KILOMETER - self.assertAlmostEqual(expected_speed, speed.n, 0) - self.assertAlmostEqual(0, chi_sq) - - def test_calculate_solar_wind_speed_throws_exception_with_too_few_count_rates(self): - energies = np.array([[0, 1000, 750, 500, 400, 300, 200, 100, 50]] * 5) - count_rates = np.array([[0, 14, 15, 16, 17, 16, 15, 14, 0], - [0, 14, 15, 16, 17, 16, 15, 14, 0], - [0, 14, 15, 16, 17, 16, 15, 14, 0], - [0, 14, 14, 14, 0, 0, 0, 0, 0], - [0, 14, 14, 14, 0, 0, 0, 0, 0]]) - count_rates_with_uncertainties = uarray(count_rates, np.full_like(count_rates, 1.0)) - - times = [datetime(2025, 6, 6, 12, i) for i in range(5)] - epochs_in_terrestrial_time = spiceypy.datetime2et(times) * ONE_SECOND_IN_NANOSECONDS - with self.assertRaises(Exception): - calculate_proton_solar_wind_speed(count_rates_with_uncertainties, energies, - epochs_in_terrestrial_time) - - def test_calculate_solar_wind_speed_from_model_data(self): - file_path = Path( - imap_l3_processing.__file__).parent.parent / 'tests' / 'test_data' / 'swapi' / 'imap_swapi_l2_fake-menlo-5-sweeps_20250606_v001.cdf' - with CDF(str(file_path)) as cdf: - epoch = cdf.raw_var("epoch")[...] - energy = cdf["esa_energy"][...] - count_rate = cdf["swp_coin_rate"][...] - count_rate_delta = cdf["swp_coin_unc"][...] - speed, a, phi, b, chi_sq = calculate_proton_solar_wind_speed(uarray(count_rate, count_rate_delta), energy, - epoch) - - self.assertAlmostEqual(speed.n, 497.930, 3) - self.assertAlmostEqual(speed.s, 0.4615, 3) - self.assertAlmostEqual(a.n, 32.033, 3) - self.assertAlmostEqual(a.s, 3.4696, 2) - self.assertAlmostEqual(phi.n, 10.6, 1) - self.assertAlmostEqual(phi.s, 5.862, 2) - self.assertAlmostEqual(b.n, 1294, 0) - self.assertAlmostEqual(b.s, 2.4, 1) - self.assertAlmostEqual(chi_sq, 0.473, 1) - - def test_get_peak_indices(self): - test_cases = [ - ("one clear peak", [0, 0, 5, 10, 5, 0, 0], 2, [0, 5, 10, 5, 0]), - ("narrow width", [0, 0, 5, 10, 5, 0, 0], 1, [5, 10, 5]), - ("wide peak", [0, 0, 5, 10, 10, 2, 0, 0], 2, [0, 5, 10, 10, 2, 0]), - ("At left edge", [5, 10, 5, 0, 0], 2, [5, 10, 5, 0]), - ("At right edge", [0, 0, 5, 10, ], 2, [0, 5, 10]), - ] - - for name, count_rates, width, expected_peak_values in test_cases: - with self.subTest(name): - peak_indices = get_peak_indices(count_rates, width) - extracted_peak = count_rates[peak_indices] - self.assertEqual(expected_peak_values, extracted_peak) - - def test_get_proton_peak_indices(self): - test_cases = [ - ("one clear peak", [0, 0, 0, 1, 0, 5, 10, 5, 0, 0, 1, 1, 1], [0, 1, 0, 5, 10, 5, 0, 0, 1]), - ("tied for peak", [0, 0, 0, 1, 0, 5, 10, 10, 0, 0, 1, 1, 1], [0, 1, 0, 5, 10, 10, 0, 0, 1, 1]), - ] - - for name, count_rates, expected_peak_values in test_cases: - with self.subTest(name): - peak_indices = get_proton_peak_indices(count_rates) - extracted_peak = count_rates[peak_indices] - self.assertEqual(expected_peak_values, extracted_peak) - - def test_an_exception_is_raised_when_count_rates_contains_multiple_peaks(self): - test_cases = [ - ("two clear peak", [0, 0, 5, 10, 5, 0, 0, 2, 10, 2, 0, 0]), - ("peak is too wide", [0, 0, 5, 10, 10, 10, 2, 0, 0]), - ] - - for name, count_rates in test_cases: - with self.subTest(name): - with self.assertRaises(Exception) as cm: - get_peak_indices(count_rates, 2) - self.assertEqual(str(cm.exception), "Count rates contains multiple distinct peaks") - - def test_find_peak_center_of_mass_index(self): - test_cases = [ - ("symmetrical peak", [0, 0, 5, 10, 5, 0, 0], slice(2, 5), 0, 3), - ("asymmetrical peak", [0, 0, 5, 15, 0, 0, 0], slice(2, 5), 0, 2.75), - ("excluding low rates", [0, 2, 5, 10, 5, 2, 1], slice(0, 7), 2, 3), - ] - for name, count_rates, peak_slice, minimum_count_rate_inclusive, expected_peak_index in test_cases: - with self.subTest(name): - self.assertEqual(expected_peak_index, - find_peak_center_of_mass_index(peak_slice, count_rates, minimum_count_rate_inclusive)) - - def test_find_peak_center_of_mass_index_filters_correctly_with_uncertain_count_rates(self): - test_cases = [ - ("uses nominal values to filter", uarray([0, 2, 2, 2, 6, 0, 0], [1, 1, 1, 1, 1, 1, 1]), slice(0, 7), 2, 3), - ] - for name, count_rates, peak_slice, minimum_count_rate_inclusive, expected_peak_index in test_cases: - with self.subTest(name): - self.assertEqual(expected_peak_index, - find_peak_center_of_mass_index(peak_slice, count_rates, - minimum_count_rate_inclusive).nominal_value) - - def test_uncertainty_calculation_in_find_peak_center_of_mass_index(self): - test_cases = [ - ("with uncertainties", uarray([0, 0, 3, 5, 0, 0, 0], [0, 0, 1, 1, 0, 0, 0]), slice(2, 5), 0, 2.625), - ("with sqrt uncertainties", uarray([0, 0, 6, 600, 6, 0, 0], [0, 0, 6, 60, 6, 0, 0]), slice(2, 5), 0, 3), - ] - for name, count_rates, peak_slice, minimum_count_rate_inclusive, expected_peak_index in test_cases: - with self.subTest(name): - count_rate_std_devs = std_devs(count_rates) - - nominal_count_rates = nominal_values(count_rates) - base_result = find_peak_center_of_mass_index(peak_slice, nominal_count_rates, - minimum_count_rate_inclusive) - deviations_for_single_inputs = [] - for i in range(len(count_rate_std_devs)): - DELTA = 1e-8 - modified_count_rates = nominal_count_rates.copy() - modified_count_rates[i] += DELTA - partial_derivative = ( - find_peak_center_of_mass_index(peak_slice, modified_count_rates, - minimum_count_rate_inclusive) - - base_result) / DELTA - deviations_for_single_inputs.append(count_rate_std_devs[i] * partial_derivative) - final_uncertainty = math.sqrt(sum(n * n for n in deviations_for_single_inputs)) - result_with_uncertainty = find_peak_center_of_mass_index(peak_slice, count_rates, - minimum_count_rate_inclusive) - - self.assertAlmostEqual(final_uncertainty, result_with_uncertainty.std_dev, 5) - self.assertEqual(base_result, result_with_uncertainty.n) - - def test_find_peak_center_of_mass_index_raises_error_if_too_few_bins_remain(self): - test_cases = [ - ("raises error", [0, 0, 5, 10, 1, 0, 0], slice(2, 5), 2, 3, True), - ("no error", [0, 0, 5, 15, 1, 0, 0], slice(2, 5), 2, 2, False), - ] - for name, count_rates, peak_slice, minimum_count_rate_inclusive, minimum_bin_count, expect_error in test_cases: - with self.subTest(name): - if expect_error: - with self.assertRaises(Exception) as cm: - find_peak_center_of_mass_index(peak_slice, count_rates, minimum_count_rate_inclusive, - minimum_bin_count) - else: - find_peak_center_of_mass_index(peak_slice, count_rates, minimum_count_rate_inclusive, - minimum_bin_count) - - def test_interpolates_to_find_energy_at_center_of_mass(self): - test_cases = [ - ("Fractional Center of mass index", 1.5, [10, 100, 10000, 100000], 1000), - ("Fractional Center of mass index 2", 2 / 3, [2, 16, 1024], 8), - ("Whole number Center of mass index", 1, [3, 9, 27], 9), - ] - - for name, center_of_mass_index, energies, expected_interpolated_energy in test_cases: - with self.subTest(name): - self.assertAlmostEqual(expected_interpolated_energy, interpolate_energy(center_of_mass_index, energies)) - - def test_interpolates_to_find_angle_at_center_of_mass(self): - test_cases = [ - ("interpolates", [110, 230, 350, 110], 1.5, 290), - ("interpolates correctly across period", [110, 230, 350, 110], 2.5, 50) - ] - - for name, angles, center_of_mass_index, expected_interpolated_angle in test_cases: - with self.subTest(name): - angle = interpolate_angle(center_of_mass_index, angles) - - self.assertAlmostEqual(angle, expected_interpolated_angle) - - def test_interpolates_with_uncertainty_to_find_energy_at_center_of_mass(self): - test_cases = [ - ("Fractional Center of mass index", ufloat(1.5, 0.5), [10, 100, 10000, 100000], 1000), - ] - - for name, center_of_mass_index, energies, expected_interpolated_energy in test_cases: - with self.subTest(name): - DELTA = 1e-8 - deriv = (interpolate_energy(1.5 + DELTA, energies) - interpolate_energy(1.5, energies)) / DELTA - - expected_uncertainty = center_of_mass_index.std_dev * deriv - - result = interpolate_energy(center_of_mass_index, energies) - self.assertAlmostEqual(expected_interpolated_energy, result.n) - self.assertAlmostEqual(expected_uncertainty, result.std_dev, 3) - - @patch('imap_l3_processing.swapi.l3a.science.calculate_proton_solar_wind_speed.scipy.optimize.curve_fit') - def test_curve_fit_is_initialized_correctly(self, mock_curve_fit): - test_cases = [ - ([30, 60, 90, 120], uarray([1319, 1328, 1329, 1323], 1), 5, 180, 1324.75), - ([30, 60, 90, 120], uarray([975, 956, 950, 957], 1), 12.5, 120, 959.5), - ] - - mock_curve_fit.side_effect = curve_fit - - for angles, energies, expected_initial_a, expected_initial_phi, expected_initial_b in test_cases: - with self.subTest(): - (a, phi, b), chi_sq = fit_energy_per_charge_peak_variations(energies, angles) - - curve_fit_parameters = mock_curve_fit.call_args.kwargs - - self.assertEqual(expected_initial_a, curve_fit_parameters["p0"][0]) - self.assertEqual(expected_initial_phi, curve_fit_parameters["p0"][1]) - self.assertEqual(expected_initial_b, curve_fit_parameters["p0"][2]) - - a_lower_bound, phi_lower_bound, b_lower_bound = curve_fit_parameters["bounds"][0] - self.assertEqual(0, a_lower_bound) - self.assertEqual(-np.inf, phi_lower_bound) - self.assertEqual(0, b_lower_bound) - - a_upper_bound, phi_upper_bound, b_upper_bound = curve_fit_parameters["bounds"][1] - self.assertEqual(np.inf, a_upper_bound) - self.assertEqual(np.inf, phi_upper_bound) - self.assertEqual(np.inf, b_upper_bound) - - def test_returns_when_reduced_chi_squared_greater_than_10(self): - test_cases = [ - ("less than 10 chi", [30, 60, 90, 120], uarray([1319, 1103, 1110, 1323], 1), True, 13.512723754922165), - ("greater than 10 chi", [30, 60, 90, 120], uarray([975, 956, 950, 971], 1), False, 9.071796769724411), - ] - - for name, angles, energies, error_flag, expected_chi_squared in test_cases: - with self.subTest(name): - (a, phi, b), chi_squared = fit_energy_per_charge_peak_variations(energies, angles) - self.assertAlmostEqual(expected_chi_squared, chi_squared) - - def test_curve_fit(self): - test_cases = [ - (10, 500, 25, 0, 120), - (30, 1000, 270, 0, 2) - ] - - for a, b, phi, expected_chi_sq, initial_angle in test_cases: - with self.subTest(): - angles = [initial_angle - 72 * i for i in range(5)] - centers_of_mass = [b + a * np.sin(np.deg2rad(phi - angle)) for angle in angles] - center_of_mass_uncertainties = np.full_like(centers_of_mass, 1e-6) - centers_of_mass = uarray(centers_of_mass, center_of_mass_uncertainties) - (result_a, result_phi, result_b), chi_sq = fit_energy_per_charge_peak_variations(centers_of_mass, - angles) - - self.assertAlmostEqual(a, result_a.nominal_value) - self.assertAlmostEqual(phi, result_phi.nominal_value) - self.assertAlmostEqual(b, result_b.nominal_value) - self.assertAlmostEqual(expected_chi_sq, chi_sq) - - def test_converts_proton_energies_to_speeds(self): - test_cases = [ - (1000, 437.6947142244463), - (800, 391.48605375928245), - (2000, 618.993801035228), - ] - - for ev_q, expected_speed_km_s in test_cases: - with self.subTest(ev_q): - self.assertAlmostEqual(expected_speed_km_s, calculate_sw_speed_h_plus(ev_q)) - - def test_converts_proton_energies_with_uncertainties(self): - test_cases = [ - (ufloat(1000, 10), ufloat(437.6947142244463, 2.1884735711222315)), - (ufloat(800, 100), ufloat(391.48605375928245, 24.46787835995515)), - (ufloat(2000, 2), ufloat(618.993801035228, 0.30949690051761405)), - ] - - for ev_q, expected_speed_km_s in test_cases: - with self.subTest(ev_q): - sw_speed = calculate_sw_speed_h_plus(ev_q) - self.assertAlmostEqual(expected_speed_km_s.n, sw_speed.n) - self.assertAlmostEqual(expected_speed_km_s.s, sw_speed.s) - - def test_calculate_sw_speed_on_array_with_uncertainties(self): - energy = np.array([ - ufloat(1000.0, 10.0), - ufloat(800.0, 100.0), - ufloat(2000.0, 2.0) - ], dtype=object) - expected = [ufloat(437.6947142244463, 2.1884735711222315), ufloat(391.48605375928245, 24.46787835995515), - ufloat(618.993801035228, 0.30949690051761405)] - np.testing.assert_array_equal(nominal_values(expected), nominal_values(calculate_sw_speed_h_plus(energy))) - np.testing.assert_array_almost_equal(std_devs(expected), std_devs(calculate_sw_speed_h_plus(energy))) - - def test_calculate_sw_speed_on_array_without_uncertainties(self): - energy = np.array([1000.0, 800.0, 2000.0], dtype=float) - expected = [437.6947142244463, 391.48605375928245, 618.993801035228] - result = calculate_sw_speed_h_plus(energy) - self.assertIsInstance(result, np.ndarray) - self.assertEqual(float, result.dtype) - np.sqrt(result) - np.testing.assert_array_equal(expected, result) - - def test_calculate_sw_speed_on_2d_array(self): - energy = uarray([[1000]], [[10]]) - expected = uarray([[437.6947142244463]], [[2.1884735711222315]]) - result = calculate_sw_speed_h_plus(energy) - np.testing.assert_array_almost_equal(nominal_values(expected), nominal_values(result)) - np.testing.assert_array_almost_equal(std_devs(expected), std_devs(result)) - - def test_calculate_sw_speed_on_empty_array(self): - energy = [] - expected = [] - result = calculate_sw_speed_h_plus(energy) - np.testing.assert_array_equal(expected, result) - - @patch('imap_l3_processing.swapi.l3a.science.calculate_proton_solar_wind_speed.spiceypy.pxform') - @patch('imap_l3_processing.swapi.l3a.science.calculate_proton_solar_wind_speed.spiceypy.unitim') - def test_get_angle(self, mock_unitim, mock_pxform): - mock_pxform.return_value = [[1, 0, 0], [0, 0, -1], [0, -1, 0]] - - epoch = 123 - - actual_angle = get_angle(epoch) - - mock_unitim.assert_called_with((epoch / ONE_SECOND_IN_NANOSECONDS), "TT", "ET") - mock_pxform.assert_called_with("IMAP_SWAPI", "IMAP_DPS", mock_unitim.return_value) - - self.assertEqual(0, actual_angle) - - def test_get_spin_angle_from_swapi_axis_in_despun_frame(self): - cases = [ - ([1, 0, 0], 270), - ([0, 1, 0], 0), - ([0, -1, 0], 180), - ([-1, 0, 0], 90), - ([-1, 0, 50], 90), - ] - for swapi_axis, expected_angle in cases: - with self.subTest(swapi_axis): - self.assertAlmostEqual(expected_angle, - get_spin_angle_from_swapi_axis_in_despun_frame(np.array(swapi_axis))) - - def test_estimate_deflection_and_clock_angles(self): - cases = [ - (29.78, 86, 270), - (400, 0.2696213, 270), - (800, 1.8666717, 90), - ] - for speed, expected_deflection, expected_clock in cases: - with self.subTest(speed): - deflection, clock = estimate_deflection_and_clock_angles(speed) - self.assertAlmostEqual(expected_deflection, deflection) - self.assertAlmostEqual(expected_clock, clock) diff --git a/tests/swapi/l3a/science/test_calculate_proton_solar_wind_temperature_and_density.py b/tests/swapi/l3a/science/test_calculate_proton_solar_wind_temperature_and_density.py deleted file mode 100644 index b3a545f08..000000000 --- a/tests/swapi/l3a/science/test_calculate_proton_solar_wind_temperature_and_density.py +++ /dev/null @@ -1,330 +0,0 @@ -import itertools -from dataclasses import astuple -from pathlib import Path -from unittest import TestCase - -import numpy as np -from spacepy.pycdf import CDF -from uncertainties import ufloat -from uncertainties.unumpy import uarray, std_devs - -import imap_l3_processing -from imap_l3_processing.swapi.l3a.science.calculate_proton_solar_wind_temperature_and_density import \ - proton_count_rate_model, \ - calculate_proton_solar_wind_temperature_and_density_for_one_sweep, ProtonTemperatureAndDensityCalibrationTable, \ - calculate_uncalibrated_proton_solar_wind_temperature_and_density, \ - calculate_proton_solar_wind_temperature_and_density -from imap_l3_processing.swapi.quality_flags import SwapiL3Flags -from tests.swapi.l3a.science.test_calculate_alpha_solar_wind_speed import synthesize_uncertainties -from tests.test_helpers import get_test_data_path - - -class TestCalculateProtonSolarWindTemperatureAndDensity(TestCase): - def test_uncalibrated_calculate_a_single_sweep_from_example_file(self): - file_path = Path( - imap_l3_processing.__file__).parent.parent / 'tests' / 'test_data' / 'swapi' / 'imap_swapi_l2_fake-menlo-5-sweeps_20100101_v002.cdf' - with CDF(str(file_path)) as cdf: - energy = cdf["esa_energy"][...] - count_rate = cdf["swp_coin_rate"][...] - count_rate_delta = cdf["swp_coin_unc"][...] - - efficiency = 0.1 - - proton_solar_wind_temp_and_density = calculate_proton_solar_wind_temperature_and_density_for_one_sweep( - uarray(count_rate, count_rate_delta)[4], energy[4], efficiency) - - self.assertAlmostEqual(100349.82969792404, proton_solar_wind_temp_and_density.temperature.nominal_value, 0) - self.assertAlmostEqual(6277.912502, proton_solar_wind_temp_and_density.temperature.std_dev, 0) - self.assertAlmostEqual(0.0875345 / efficiency, proton_solar_wind_temp_and_density.density.nominal_value, 2) - self.assertAlmostEqual(0.0036216 / efficiency, proton_solar_wind_temp_and_density.density.std_dev, 3) - self.assertEqual(SwapiL3Flags.NONE, proton_solar_wind_temp_and_density.bad_fit_flag) - - def test_uncalibrated_calculate_using_five_sweeps_from_example_file(self): - file_path = Path( - imap_l3_processing.__file__).parent.parent / 'tests' / 'test_data' / 'swapi' / 'imap_swapi_l2_fake-menlo-5-sweeps_20100101_v002.cdf' - with CDF(str(file_path)) as cdf: - energy = cdf["esa_energy"][...] - count_rate = cdf["swp_coin_rate"][...] - count_rate_delta = cdf["swp_coin_unc"][...] - - efficiency = 0.8 - actual_proton_temp_density = calculate_uncalibrated_proton_solar_wind_temperature_and_density( - uarray(count_rate, count_rate_delta), energy, efficiency) - - np.testing.assert_allclose(98674.370199, actual_proton_temp_density.temperature.nominal_value, rtol=1e-5) - np.testing.assert_allclose(2348.265738, actual_proton_temp_density.temperature.std_dev, rtol=1e-3) - np.testing.assert_allclose(0.11530 / efficiency, actual_proton_temp_density.density.nominal_value, rtol=1e-4) - np.testing.assert_allclose(0.0018697 / efficiency, actual_proton_temp_density.density.std_dev, rtol=1e-4) - - def test_averages_successful_sweeps_if_at_least_three(self): - file_path = Path( - imap_l3_processing.__file__).parent.parent / 'tests' / 'test_data' / 'swapi' / 'imap_swapi_l2_fake-menlo-5-sweeps_20100101_v002.cdf' - with CDF(str(file_path)) as cdf: - energy = cdf["esa_energy"][...] - count_rate = cdf["swp_coin_rate"][...] - count_rate_delta = cdf["swp_coin_unc"][...] - - count_rate_delta[1, :] = 1e-6 - count_rate_delta[2, :] = 1e-6 - - efficiency = 0.8 - - valid_temp_density_1 = calculate_proton_solar_wind_temperature_and_density_for_one_sweep( - uarray(count_rate, count_rate_delta)[0, :], energy[0, :], - efficiency) - valid_temp_density_2 = calculate_proton_solar_wind_temperature_and_density_for_one_sweep( - uarray(count_rate, count_rate_delta)[3, :], energy[3, :], - efficiency) - valid_temp_density_3 = calculate_proton_solar_wind_temperature_and_density_for_one_sweep( - uarray(count_rate, count_rate_delta)[4, :], energy[4, :], - efficiency) - - temps = [valid_temp_density_1.temperature, valid_temp_density_2.temperature, valid_temp_density_3.temperature] - densities = [valid_temp_density_1.density, valid_temp_density_2.density, valid_temp_density_3.density] - expected_average_temp = np.average(temps, weights=1 / std_devs(temps) ** 2) - expected_average_density = np.average(densities, weights=1 / std_devs(densities) ** 2) - - actual_proton_temp_density = calculate_uncalibrated_proton_solar_wind_temperature_and_density( - uarray(count_rate, count_rate_delta), energy, efficiency) - - np.testing.assert_allclose(actual_proton_temp_density.temperature.nominal_value, - expected_average_temp.nominal_value, rtol=1e-5) - np.testing.assert_allclose(actual_proton_temp_density.temperature.std_dev, expected_average_temp.std_dev, - rtol=1e-3) - np.testing.assert_allclose(actual_proton_temp_density.density.nominal_value, - expected_average_density.nominal_value, rtol=1e-4) - np.testing.assert_allclose(actual_proton_temp_density.density.std_dev, expected_average_density.std_dev, - rtol=1e-4) - self.assertEqual(SwapiL3Flags.NONE, actual_proton_temp_density.bad_fit_flag) - - def test_raises_error_when_fewer_than_three_sweeps_fit_successfully(self): - file_path = Path( - imap_l3_processing.__file__).parent.parent / 'tests' / 'test_data' / 'swapi' / 'imap_swapi_l2_fake-menlo-5-sweeps_20100101_v002.cdf' - with CDF(str(file_path)) as cdf: - energy = cdf["esa_energy"][...] - count_rate = cdf["swp_coin_rate"][...] - count_rate_delta = cdf["swp_coin_unc"][...] - - count_rate_delta[0, :] = 1e-6 - count_rate_delta[1, :] = 1e-6 - count_rate_delta[2, :] = 1e-6 - - efficiency = 0.8 - - invalid_temp_density_0 = calculate_proton_solar_wind_temperature_and_density_for_one_sweep( - uarray(count_rate, count_rate_delta)[0, :], energy[0, :], - efficiency) - invalid_temp_density_1 = calculate_proton_solar_wind_temperature_and_density_for_one_sweep( - uarray(count_rate, count_rate_delta)[1, :], energy[1, :], - efficiency) - invalid_temp_density_2 = calculate_proton_solar_wind_temperature_and_density_for_one_sweep( - uarray(count_rate, count_rate_delta)[2, :], energy[2, :], - efficiency) - valid_temp_density_3 = calculate_proton_solar_wind_temperature_and_density_for_one_sweep( - uarray(count_rate, count_rate_delta)[3, :], energy[3, :], - efficiency) - valid_temp_density_4 = calculate_proton_solar_wind_temperature_and_density_for_one_sweep( - uarray(count_rate, count_rate_delta)[4, :], energy[4, :], - efficiency) - - temps = [invalid_temp_density_0.temperature, invalid_temp_density_1.temperature, - invalid_temp_density_2.temperature, valid_temp_density_3.temperature, valid_temp_density_4.temperature] - densities = [invalid_temp_density_0.density, invalid_temp_density_1.density, invalid_temp_density_2.density, - valid_temp_density_3.density, valid_temp_density_4.density] - - expected_average_temp = np.average(temps, weights=1 / std_devs(temps) ** 2) - expected_average_density = np.average(densities, weights=1 / std_devs(densities) ** 2) - - actual_proton_temp_density = calculate_uncalibrated_proton_solar_wind_temperature_and_density( - uarray(count_rate, count_rate_delta), energy, efficiency) - - np.testing.assert_allclose(actual_proton_temp_density.temperature.nominal_value, - expected_average_temp.nominal_value, rtol=1e-5) - np.testing.assert_allclose(actual_proton_temp_density.temperature.std_dev, expected_average_temp.std_dev, - rtol=1e-3) - np.testing.assert_allclose(actual_proton_temp_density.density.nominal_value, - expected_average_density.nominal_value, rtol=1e-4) - np.testing.assert_allclose(actual_proton_temp_density.density.std_dev, expected_average_density.std_dev, - rtol=1e-4) - self.assertEqual(SwapiL3Flags.HI_CHI_SQ, actual_proton_temp_density.bad_fit_flag) - - def test_calibrate_density_and_temperature_using_lookup_table(self): - speed_values = [250, 1000] - deflection_angle_values = [0, 6] - clock_angle_values = [0, 360] - density_values = [1, 10] - temperature_values = [1000, 100000] - - lookup_table = self.generate_lookup_table(speed_values, deflection_angle_values, clock_angle_values, - density_values, temperature_values) - - temperature = lookup_table.calibrate_temperature(ufloat(450, 2), ufloat(3, 0.1), - ufloat(1, 1), ufloat(4, 0.1), - ufloat(50000, 10000)) - density = lookup_table.calibrate_density(ufloat(450, 2), ufloat(3, 0.1), ufloat(1, 1), - ufloat(4, 0.1), ufloat(50000, 10000)) - - self.assertAlmostEqual(50000 * 0.97561, temperature.n, 3) - self.assertAlmostEqual(10000 * 0.97561, temperature.s, 3) - - self.assertAlmostEqual(4 * 1.021, density.n) - self.assertAlmostEqual(0.1 * 1.021, density.s) - - def test_lookup_table_handles_data_that_does_not_extend_to_360_degrees(self): - speed_values = [250, 1000] - deflection_angle_values = [0, 6] - clock_angle_values = [0, 90, 180, 270] - density_values = [1, 10] - temperature_values = [1000, 100000] - - lookup_table = self.generate_lookup_table(speed_values, deflection_angle_values, clock_angle_values, - density_values, temperature_values) - - temperature = lookup_table.calibrate_temperature(ufloat(450, 2), ufloat(3, 0.1), - ufloat(350, 1), ufloat(4, 0.1), - ufloat(50000, 10000)) - density = lookup_table.calibrate_density(ufloat(450, 2), ufloat(3, 0.1), ufloat(350, 1), - ufloat(4, 0.1), ufloat(50000, 10000)) - - self.assertAlmostEqual(50000 * 0.97561, temperature.n, 3) - self.assertAlmostEqual(10000 * 0.97561, temperature.s, 3) - - self.assertAlmostEqual(4 * 1.021, density.n) - self.assertAlmostEqual(0.1 * 1.021, density.s) - - def test_density_temperature_lookup_table_works_with_clock_angles_outside_0_to_360(self): - speed_values = [250, 1000] - deflection_angle_values = [0, 6] - clock_angle_values = [0, 360] - density_values = [1, 10] - temperature_values = [1000, 100000] - - lookup_table = self.generate_lookup_table(speed_values, deflection_angle_values, clock_angle_values, - density_values, temperature_values) - - temperature = lookup_table.calibrate_temperature(ufloat(450, 2), ufloat(3, 0.1), - ufloat(0.0, 1), ufloat(4, 0.1), - ufloat(50000, 10000)) - - density = lookup_table.calibrate_density(ufloat(450, 2), ufloat(3, 0.1), ufloat(360, 1), - ufloat(4, 0.1), ufloat(50000, 10000)) - - self.assertAlmostEqual(0.97561 * 50000, temperature.n, places=3) - self.assertAlmostEqual(0.97561 * 10000, temperature.s, places=3) - - self.assertAlmostEqual(1.021 * 4, density.n) - self.assertAlmostEqual(1.021 * 0.1, density.s) - - def test_calculate_temperature_and_density(self): - speed_values = [250, 1000] - deflection_angle_values = [0, 6] - clock_angle_values = [0, 360] - density_values = [1, 10] - temperature_values = [1000, 200000] - efficiency = 0.1 - - lookup_table = self.generate_lookup_table(speed_values, deflection_angle_values, clock_angle_values, - density_values, temperature_values) - - file_path = get_test_data_path('swapi/imap_swapi_l2_fake-menlo-5-sweeps_20100101_v002.cdf') - with CDF(str(file_path)) as cdf: - energy = cdf["esa_energy"][...] - count_rate = cdf["swp_coin_rate"][...] - count_rate_delta = cdf["swp_coin_unc"][...] - - temperature, density, bad_fit_flag = astuple( - calculate_proton_solar_wind_temperature_and_density(lookup_table, ufloat(450, 2), - ufloat(3, 0.1), ufloat(1, 1), - uarray(count_rate, count_rate_delta), - energy, efficiency)) - - np.testing.assert_allclose(98674.370199 * 0.97561, temperature.nominal_value, rtol=1e-4) - np.testing.assert_allclose(2348.265738 * 0.97561, temperature.std_dev, rtol=2e-4) - - np.testing.assert_allclose(0.11530 * 1.021 / efficiency, density.nominal_value, rtol=1e-4) - np.testing.assert_allclose(0.0018697 * 1.021 / efficiency, density.std_dev, rtol=1e-4) - - self.assertEqual(SwapiL3Flags.NONE, bad_fit_flag) - - def test_proton_count_rate_model_accounts_for_efficiency(self): - efficiency_factor = 0.5 - - cases = [ - (np.array([800, 900, 1000]), 1, 2, 1e6, 700, np.array([9.406743, 25.85924, 62.665463])), - (np.array([800, 900, 1000]), efficiency_factor, 2, 1e6, 700, - np.array([9.406743, 25.85924, 62.665463]) * efficiency_factor), - ] - - for ev_per_q, efficiency, density_per_cm3, temperature, bulk_flow_speed_km_per_s, expected in cases: - result = proton_count_rate_model(efficiency, ev_per_q, density_per_cm3, temperature, - bulk_flow_speed_km_per_s) - np.testing.assert_array_almost_equal(result, expected) - - def test_can_recover_density_and_temperature_from_model_data(self): - test_cases = [ - (5, 100e3, 450), - (3, 100e3, 450), - (3, 80e3, 550), - (3, 80e3, 750), - (3, 200e3, 750), - (0.5, 1.2e5, 600), - (30, 200e3, 750), - ] - energy = np.geomspace(100, 19000, 62) - efficiency = 0.02348 - for density, temperature, speed in test_cases: - with self.subTest(f"{density}cm^-3, {temperature}K, {speed}km/s"): - count_rates = proton_count_rate_model(efficiency, energy, density, temperature, speed) - fake_uncertainties = synthesize_uncertainties(count_rates) - count_rates_with_uncertainties = uarray(count_rates, fake_uncertainties) - fit_temperature, fit_density, _ = astuple( - calculate_proton_solar_wind_temperature_and_density_for_one_sweep( - count_rates_with_uncertainties, energy, efficiency)) - np.testing.assert_allclose(density, fit_density.nominal_value, rtol=3e-2) - np.testing.assert_allclose(temperature, fit_temperature.nominal_value, rtol=3e-2) - - def test_throws_error_when_chi_squared_over_ten(self): - coincident_count_rates = uarray([100, 200, 300, 150, 50], 5) - energy = np.array([1000, 900, 800, 700, 600]) - expected_flag = SwapiL3Flags.HI_CHI_SQ - - proton_solar_wind_temp_and_density = calculate_proton_solar_wind_temperature_and_density_for_one_sweep( - coincident_count_rates, energy, 1) - - self.assertAlmostEqual(77665.54856, proton_solar_wind_temp_and_density.temperature.nominal_value, - 3) - self.assertAlmostEqual(3676.14173, proton_solar_wind_temp_and_density.temperature.std_dev, 3) - self.assertAlmostEqual(0.03594, proton_solar_wind_temp_and_density.density.nominal_value, - 5) - self.assertAlmostEqual(0.0006567, proton_solar_wind_temp_and_density.density.std_dev, 7) - self.assertEqual(expected_flag, proton_solar_wind_temp_and_density.bad_fit_flag) - - def test_filters_out_count_rates_below_13(self): - count_rates = uarray([100, 200, 300, 12, 50, 20], 30) - energy = np.array([1000, 900, 800, 700, 600, 500]) - - proton_temperature_density_1 = calculate_proton_solar_wind_temperature_and_density_for_one_sweep(count_rates, - energy, 1) - - count_rates = uarray([100, 200, 300, 0, 50, 20], 30) - energy = np.array([1000, 900, 800, 700, 600, 500]) - - proton_temperature_density_2 = calculate_proton_solar_wind_temperature_and_density_for_one_sweep(count_rates, - energy, 1) - - self.assertEqual(proton_temperature_density_1.temperature.nominal_value, - proton_temperature_density_2.temperature.nominal_value) - self.assertEqual(proton_temperature_density_1.density.nominal_value, - proton_temperature_density_2.density.nominal_value) - - def generate_lookup_table(self, speed_values, deflection_angle_values, clock_angle_values, density_values, - temperature_values): - - coords = (speed_values, deflection_angle_values, clock_angle_values, density_values, temperature_values) - - lut_rows = [] - for (speed, deflection, clock_angle, density, temperature) in itertools.product(*coords): - output_density = 1.021 * density - output_temperature = 0.97561 * temperature - lut_rows.append([speed, deflection, clock_angle, density, output_density, temperature, output_temperature]) - return ProtonTemperatureAndDensityCalibrationTable(np.array(lut_rows)) diff --git a/tests/swapi/l3a/test_chunk_fits.py b/tests/swapi/l3a/test_chunk_fits.py new file mode 100644 index 000000000..a65339655 --- /dev/null +++ b/tests/swapi/l3a/test_chunk_fits.py @@ -0,0 +1,811 @@ +import unittest +from datetime import datetime +from unittest.mock import Mock, patch +import platform + +import numpy as np +from uncertainties import ufloat + +from imap_l3_processing.constants import ( + ALPHA_MASS_PER_CHARGE_M_P_PER_E, + ALPHA_PARTICLE_MASS_KG, + ONE_SECOND_IN_NANOSECONDS, + PROTON_MASS_KG, + PROTON_MASS_PER_CHARGE_M_P_PER_E, + THIRTY_SECONDS_IN_NANOSECONDS, +) +from imap_l3_processing.models import InputMetadata, MagData +from imap_l3_processing.swapi.swapi_processor import SwapiProcessor +from imap_l3_processing.swapi.l3a import chunk_fits +from imap_l3_processing.swapi.l3a.chunk_fits import ( + AlphaChunkFitter, + ChunkFitter, + ParallelChunkRunner, + ProtonChunkFitter, +) +from imap_l3_processing.swapi.l3b.science.efficiency_calibration_table import ( + EfficiencyCalibrationTable, +) +from imap_l3_processing.swapi.l3a.models import SwapiL2Data +from imap_l3_processing.swapi.l3a.science.solar_wind.fit_context import ( + build_solar_wind_fit_context, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.forward_model import ( + model_solar_wind_ideal_coincidence_rates, +) +from imap_l3_processing.swapi.l3a.science.solar_wind.params import SolarWindParams +from imap_l3_processing.swapi.l3a.science.solar_wind.proton.fit_model import ( + ProtonSolarWindFitResult, +) +from imap_l3_processing.swapi.l3a.utils import get_swapi_geometry +from imap_l3_processing.swapi.quality_flags import SwapiL3Flags +from imap_l3_processing.swapi.response.deadtime import deadtime_factor +from imap_l3_processing.swapi.constants import ( + SWAPI_L2_K_FACTOR, + SWAPI_SCIENCE_BINS, +) +from imap_l3_processing.swapi.response.swapi_response import SwapiResponse +from tests.spice_test_case import SpiceTestCase +from tests.swapi._helpers import REALISTIC_ESA_VOLTAGES +from tests.test_helpers import get_test_instrument_team_data_path + + +_N_SWEEPS = 5 +_N_BINS = 72 +_FULL_ENERGY = np.concatenate([[1.0e4], REALISTIC_ESA_VOLTAGES]) * SWAPI_L2_K_FACTOR + +_TRUE_DENSITY = 5.0 +_TRUE_TEMPERATURE_K = 1.0e5 +_TRUE_BULK_SPEED = 450.0 +# Sunward Parker spiral, off-nominal: 55° from -R toward +T (vs. nominal +# 45° from +R toward -T), tilted 10° out of the ecliptic toward +N. +_B_HAT_RTN = np.array([ + -np.cos(np.radians(55.0)) * np.cos(np.radians(10.0)), + np.sin(np.radians(55.0)) * np.cos(np.radians(10.0)), + np.sin(np.radians(10.0)), +]) +_TRUE_ALPHA_DENSITY = 0.2 +_TRUE_ALPHA_TEMPERATURE_K = 4.0e5 +_TRUE_DELTA_V_KM_S = 30.0 +_SC_VELOCITY_RTN = np.array([0.0, 30.0, 0.0]) +_EPOCH_TT2000 = 800_000_000_000_000_000 +_CHUNK_EPOCH = _EPOCH_TT2000 + THIRTY_SECONDS_IN_NANOSECONDS +_SCI_START_TIME = _EPOCH_TT2000 + np.arange(_N_SWEEPS, dtype=np.int64) * 12_000_000_000 + +# Every non-flag, non-epoch field must NaN-fill on short-circuit branches. +_PROTON_SCALAR_KEYS = [ + "proton_sw_speed", "proton_sw_speed_uncert", + "proton_sw_speed_sun", "proton_sw_speed_sun_uncert", + "proton_sw_temperature", "proton_sw_temperature_uncert", + "proton_sw_density", "proton_sw_density_uncert", +] +_PROTON_ARRAY_KEYS = [ + "proton_sw_bulk_velocity_rtn_sun", "proton_sw_bulk_velocity_rtn_sun_covariance", + "proton_sw_bulk_velocity_rtn_sc", "proton_sw_bulk_velocity_rtn_sc_covariance", +] +_ALPHA_SCALAR_KEYS = [ + "alpha_sw_density", "alpha_sw_density_uncert", + "alpha_sw_temperature", "alpha_sw_temperature_uncert", + "alpha_sw_delta_v", "alpha_sw_delta_v_uncert", +] +_ALPHA_ARRAY_KEYS = [ + "alpha_sw_velocity_rtn", "alpha_sw_velocity_covariance_rtn", + "alpha_sw_b_hat_rtn", +] +_ALPHA_BUMP_BINS = slice(24, 31) + + +def _swapi_response_with_warm_cache(voltages): + resp = SwapiResponse.from_files( + get_test_instrument_team_data_path("swapi/imap_swapi_azimuthal-transmission_20260425_v001.csv"), + get_test_instrument_team_data_path("swapi/imap_swapi_central-effective-area_20260425_v001.csv"), + get_test_instrument_team_data_path("swapi/imap_swapi_passband-fit-coefficients_20260425_v001.csv"), + ) + resp.warm_cache(voltages) + return resp + + +def _spice_rotations(bin_slice): + """SPICE-derived SWAPI→RTN rotations at the synthetic chunk's measurement + times over `bin_slice`.""" + bin_indices = np.arange(bin_slice.start, bin_slice.stop) + measurement_times = ( + _SCI_START_TIME[:, np.newaxis] + + bin_indices * (12 / 72 * ONE_SECOND_IN_NANOSECONDS) + ).flatten() + return get_swapi_geometry(measurement_times) + + +def _truth_velocity_rtn(rotations): + """Truth wind vector: `_TRUE_BULK_SPEED` km/s anti-parallel-ish to the SWAPI + boresight (column 1 of the SWAPI→RTN rotation at the chunk's first bin), + tilted 5° toward a stable in-plane direction. The deflection lifts the + wind off the spin axis so clock-angle assertions are non-degenerate.""" + spin_axis_rtn = rotations[0, :, 1] + perpendicular = np.cross(spin_axis_rtn, [1.0, 0.0, 0.0]) + perpendicular /= np.linalg.norm(perpendicular) + deflection = np.radians(5.0) + direction = -spin_axis_rtn * np.cos(deflection) + perpendicular * np.sin(deflection) + return _TRUE_BULK_SPEED * direction + + +def _efficiency_table(): + """Synthetic `EfficiencyCalibrationTable` with realistic in-flight proton + (0.12) and alpha (0.15) efficiencies and a lab-cal proton efficiency of 0.12.""" + table = EfficiencyCalibrationTable.__new__(EfficiencyCalibrationTable) + table.data = np.array( + [ + (np.datetime64("2024-01-01", "ns"), 0, 0.12, 0.15), + (np.datetime64("2025-11-01", "ns"), 0, 0.12, 0.15), + ], + dtype=[ + ("time", "M8[ns]"), + ("MET", "i8"), + ("proton efficiency", "f8"), + ("alpha efficiency", "f8"), + ], + ) + return table + + +def _populate_shared(response, table): + chunk_fits._shared.update(swapi_response=response, efficiency_table=table) + + +def _clear_shared(): + chunk_fits._shared.clear() + + +def _synthesize_chunk(*, response, rotations, proton_velocity_rtn, alpha_velocity_rtn, efficiency_table): + """Forward-model a 5-sweep proton + alpha chunk at the truth params over + the full 71-bin science axis. Per-species effective-area scales come from + `efficiency_table` so synthesis and the fitter share the same calibration.""" + n = SWAPI_SCIENCE_BINS.stop - SWAPI_SCIENCE_BINS.start + voltages = np.tile(REALISTIC_ESA_VOLTAGES, _N_SWEEPS) + + proton_ctx = build_solar_wind_fit_context( + count_rate=np.zeros(len(voltages)), + esa_voltage=voltages, + swapi_response=response, + central_effective_area_scale=chunk_fits._eff_scale(efficiency_table, _CHUNK_EPOCH, "proton"), + rotation_matrices=rotations, + mass_kg=PROTON_MASS_KG, + mass_per_charge_m_p_per_e=PROTON_MASS_PER_CHARGE_M_P_PER_E, + ) + alpha_ctx = build_solar_wind_fit_context( + count_rate=np.zeros(len(voltages)), + esa_voltage=voltages, + swapi_response=response, + central_effective_area_scale=chunk_fits._eff_scale(efficiency_table, _CHUNK_EPOCH, "alpha"), + rotation_matrices=rotations, + mass_kg=ALPHA_PARTICLE_MASS_KG, + mass_per_charge_m_p_per_e=ALPHA_MASS_PER_CHARGE_M_P_PER_E, + ) + proton_truth = SolarWindParams( + density=_TRUE_DENSITY, + bulk_velocity_rtn=proton_velocity_rtn.copy(), + temperature=_TRUE_TEMPERATURE_K, + mass=PROTON_MASS_KG, + ) + alpha_truth = SolarWindParams( + density=_TRUE_ALPHA_DENSITY, + bulk_velocity_rtn=alpha_velocity_rtn.copy(), + temperature=_TRUE_ALPHA_TEMPERATURE_K, + mass=ALPHA_PARTICLE_MASS_KG, + ) + proton_ideal, _ = model_solar_wind_ideal_coincidence_rates(proton_truth, proton_ctx) + alpha_ideal, _ = model_solar_wind_ideal_coincidence_rates(alpha_truth, alpha_ctx) + ideal = proton_ideal + alpha_ideal + flat_rates = ideal * deadtime_factor(ideal) + full_rates = np.zeros((_N_SWEEPS, _N_BINS)) + full_rates[:, SWAPI_SCIENCE_BINS] = flat_rates.reshape(_N_SWEEPS, n) + chunk = SwapiL2Data( + sci_start_time=_SCI_START_TIME.copy(), + energy=np.tile(_FULL_ENERGY, (_N_SWEEPS, 1)), + coincidence_count_rate=full_rates, + coincidence_count_rate_uncertainty=np.full_like(full_rates, 0.1), + ) + return chunk + + +def _build_truth_chunk(response, efficiency_table): + """Forward-model a clean proton+alpha chunk from `response` over the science + bin range, returning the chunk plus the rotations and truth velocities used + to synthesize it. The alpha truth velocity is constructed here so all three + fitter test classes share the same proton-to-alpha relationship.""" + science_rotations = _spice_rotations(SWAPI_SCIENCE_BINS) + proton_velocity_rtn = _truth_velocity_rtn(science_rotations) + alpha_velocity_rtn = proton_velocity_rtn + _TRUE_DELTA_V_KM_S * _B_HAT_RTN + chunk = _synthesize_chunk( + response=response, + rotations=science_rotations, + proton_velocity_rtn=proton_velocity_rtn, + alpha_velocity_rtn=alpha_velocity_rtn, + efficiency_table=efficiency_table, + ) + return chunk, science_rotations, proton_velocity_rtn, alpha_velocity_rtn + + +def _with_count_rate(chunk, count_rate): + return SwapiL2Data( + sci_start_time=chunk.sci_start_time, + energy=chunk.energy, + coincidence_count_rate=count_rate, + coincidence_count_rate_uncertainty=chunk.coincidence_count_rate_uncertainty, + ) + + +def _with_nan_at(chunk, sweep, bin_): + bad = chunk.coincidence_count_rate.copy() + bad[sweep, bin_] = np.nan + return _with_count_rate(chunk, bad) + + +def _assert_all_nan(tc, result, scalar_keys, array_keys): + for key in scalar_keys: + tc.assertTrue(np.isnan(result[key]), msg=f"{key} not NaN") + for key in array_keys: + tc.assertTrue(np.all(np.isnan(result[key])), msg=f"{key} not all-NaN") + + +def _assert_peak_speed_fallback(tc, result, scalar_keys, array_keys): + """Failure-mode contract for the proton fitter: `proton_sw_speed` is the + peak-bin ESA voltage converted to a cold-proton speed (within ~15 km/s of + `_TRUE_BULK_SPEED` for our forward-modelled chunk), and every other science + field NaN-fills.""" + tc.assertAlmostEqual(result["proton_sw_speed"], _TRUE_BULK_SPEED, delta=15.0) + other_scalars = [k for k in scalar_keys if k != "proton_sw_speed"] + _assert_all_nan(tc, result, other_scalars, array_keys) + + +def _assert_alpha_flag_and_all_nan(tc, result, flag): + tc.assertEqual(int(result["quality_flags"]), int(flag)) + _assert_all_nan(tc, result, _ALPHA_SCALAR_KEYS, _ALPHA_ARRAY_KEYS) + + +def _assert_proton_flag_and_peak_fallback(tc, result, flag): + tc.assertEqual(int(result["quality_flags"]), int(flag)) + _assert_peak_speed_fallback(tc, result, _PROTON_SCALAR_KEYS, _PROTON_ARRAY_KEYS) + + +def _zero_chunk(): + return SwapiL2Data( + sci_start_time=np.array([_EPOCH_TT2000], dtype=np.int64), + energy=np.zeros((1, _N_BINS)), + coincidence_count_rate=np.zeros((1, _N_BINS)), + coincidence_count_rate_uncertainty=np.zeros((1, _N_BINS)), + ) + + +# 10**18 ns ≈ 31.7 years past `_EPOCH_TT2000` — beyond every kernel in +# `spice_kernels/`, so SPICE raises `SpiceSPKINSUFFDATA` for this chunk. +_OUT_OF_COVERAGE_START_TIME = _EPOCH_TT2000 + 10**18 + + +def _out_of_coverage_chunk(): + return SwapiL2Data( + sci_start_time=np.array([_OUT_OF_COVERAGE_START_TIME], dtype=np.int64), + energy=np.zeros((1, _N_BINS)), + coincidence_count_rate=np.zeros((1, _N_BINS)), + coincidence_count_rate_uncertainty=np.zeros((1, _N_BINS)), + ) + + +# ----- ProtonChunkFitter ---------------------------------------------------- + + +class TestProtonChunkFitterPrecomputeGeometry(SpiceTestCase): + """Tests for `ProtonChunkFitter.precompute_geometry` with real SPICE kernels.""" + + def test_success_returns_epoch_rotations_and_sc_velocity(self): + """At an in-coverage chunk, precompute_geometry returns the chunk midpoint epoch, a per-bin rotation array of the right shape, and a 3-vector spacecraft velocity.""" + epoch, rotation_matrices, spacecraft_velocity = ProtonChunkFitter().precompute_geometry(_zero_chunk()) + + self.assertEqual(epoch, _CHUNK_EPOCH) + assert rotation_matrices is not None and spacecraft_velocity is not None + self.assertEqual(rotation_matrices.shape, (_N_BINS - 1, 3, 3)) + self.assertEqual(spacecraft_velocity.shape, (3,)) + + def test_spice_failure_yields_none_for_both_outputs(self): + """If the chunk falls outside SPICE coverage, the proton fitter returns None for both rotations and spacecraft velocity.""" + _, rotation_matrices, spacecraft_velocity = ProtonChunkFitter().precompute_geometry(_out_of_coverage_chunk()) + + self.assertIsNone(rotation_matrices) + self.assertIsNone(spacecraft_velocity) + + +class TestProtonChunkFitterFitChunk(SpiceTestCase): + """Tests for `ProtonChunkFitter.fit_chunk` — end-to-end proton fit plus + fill-value branches on a forward-modelled chunk. Uses real SPICE for + `rotate_rtn_to_dps` inside `derive_velocity_angles`.""" + + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.response = _swapi_response_with_warm_cache(np.tile(REALISTIC_ESA_VOLTAGES, _N_SWEEPS)) + efficiency_table = _efficiency_table() + _populate_shared(cls.response, efficiency_table) + cls.chunk, cls.rotations, cls.true_proton_velocity_rtn, _ = _build_truth_chunk(cls.response, efficiency_table) + cls.result = ProtonChunkFitter().fit_chunk( + cls.chunk, _CHUNK_EPOCH, cls.rotations, _SC_VELOCITY_RTN.copy() + ) + + @classmethod + def tearDownClass(cls): + _clear_shared() + super().tearDownClass() + + def test_quality_flag_none_and_epoch_passthrough(self): + """A clean synthetic chunk produces a NONE quality flag and passes the chunk epoch straight through to the result.""" + self.assertEqual(self.result["quality_flags"], SwapiL3Flags.NONE) + self.assertEqual(self.result["epoch"], _CHUNK_EPOCH) + + def test_recovers_truth_moments(self): + """Fitting a forward-modeled chunk back recovers the true density, temperature, and bulk velocity within a few percent.""" + self.assertAlmostEqual( + self.result["proton_sw_density"], _TRUE_DENSITY, delta=0.05 * _TRUE_DENSITY + ) + self.assertAlmostEqual( + self.result["proton_sw_temperature"], + _TRUE_TEMPERATURE_K, + delta=0.05 * _TRUE_TEMPERATURE_K, + ) + np.testing.assert_allclose( + self.result["proton_sw_bulk_velocity_rtn_sc"], self.true_proton_velocity_rtn, atol=5.0 + ) + + def test_uncertainties_are_strictly_positive(self): + """Every reported scalar uncertainty is strictly positive, so the LM Jacobian did not degenerate to zero.""" + # Bit-exact zero would mean the LM Jacobian degenerated. + for key in _PROTON_SCALAR_KEYS: + if key.endswith("_uncert"): + with self.subTest(key=key): + self.assertGreater(self.result[key], 0.0) + + def test_speed_is_norm_of_sc_frame_velocity(self): + """Reported proton speed equals the magnitude of the SC-frame bulk velocity (rotation to DPS is norm-preserving).""" + np.testing.assert_allclose( + self.result["proton_sw_speed"], + np.linalg.norm(self.result["proton_sw_bulk_velocity_rtn_sc"]), + rtol=1e-9, + ) + + def test_sun_frame_velocity_is_sc_frame_plus_sc_velocity(self): + """Sun-frame velocity is the SC-frame velocity plus the SC orbital velocity, and Sun-frame speed is its magnitude.""" + np.testing.assert_allclose( + self.result["proton_sw_bulk_velocity_rtn_sun"], + self.result["proton_sw_bulk_velocity_rtn_sc"] + _SC_VELOCITY_RTN, + atol=1e-9, + ) + np.testing.assert_allclose( + self.result["proton_sw_speed_sun"], + np.linalg.norm(self.result["proton_sw_bulk_velocity_rtn_sun"]), + rtol=1e-9, + ) + + def test_speed_matches_magnitude_of_bulk_velocity_rtn(self): + """`proton_sw_speed` is the magnitude of the SC-frame RTN bulk velocity (magnitude is rotation-invariant).""" + np.testing.assert_allclose( + self.result["proton_sw_speed"], + np.linalg.norm(self.result["proton_sw_bulk_velocity_rtn_sc"]), + rtol=1e-12, + ) + + def test_velocity_covariance_is_symmetric_psd_and_sc_equals_sun(self): + """The 3x3 velocity covariance is symmetric and positive-semidefinite, and the same matrix is reported under both the spacecraft-frame and Sun-frame keys.""" + covariance_spacecraft_frame = self.result["proton_sw_bulk_velocity_rtn_sc_covariance"] + covariance_sun_frame = self.result["proton_sw_bulk_velocity_rtn_sun_covariance"] + self.assertEqual(covariance_spacecraft_frame.shape, (3, 3)) + np.testing.assert_allclose(covariance_spacecraft_frame, covariance_spacecraft_frame.T, atol=1e-12) + self.assertGreaterEqual(np.linalg.eigvalsh(covariance_spacecraft_frame)[0], 0.0) + # Source returns the same matrix for both keys. + np.testing.assert_array_equal(covariance_spacecraft_frame, covariance_sun_frame) + + def test_missing_sc_velocity_fills_only_sun_frame_outputs(self): + """Calling fit_chunk with no SC velocity still runs the proton fit normally: density, temperature, SC-frame bulk velocity (and its covariance), peak speed, and DPS-frame clock/deflection angles are populated from the fit; only the sun-frame outputs (`proton_sw_speed_sun`, `proton_sw_bulk_velocity_rtn_sun`, and the sun-frame covariance) are fill values.""" + result = ProtonChunkFitter().fit_chunk( + self.chunk, _CHUNK_EPOCH, self.rotations, None + ) + self.assertEqual(result["quality_flags"], SwapiL3Flags.NONE) + + self.assertTrue(np.isnan(result["proton_sw_speed_sun"])) + self.assertTrue(np.isnan(result["proton_sw_speed_sun_uncert"])) + self.assertTrue(np.all(np.isnan(result["proton_sw_bulk_velocity_rtn_sun"]))) + self.assertTrue( + np.all(np.isnan(result["proton_sw_bulk_velocity_rtn_sun_covariance"])) + ) + + self.assertAlmostEqual( + result["proton_sw_density"], _TRUE_DENSITY, delta=0.05 * _TRUE_DENSITY + ) + self.assertAlmostEqual( + result["proton_sw_temperature"], + _TRUE_TEMPERATURE_K, + delta=0.05 * _TRUE_TEMPERATURE_K, + ) + np.testing.assert_allclose( + result["proton_sw_bulk_velocity_rtn_sc"], + self.true_proton_velocity_rtn, + atol=5.0, + ) + self.assertTrue( + np.all(np.isfinite(result["proton_sw_bulk_velocity_rtn_sc_covariance"])) + ) + self.assertTrue(np.isfinite(result["proton_sw_speed"])) + + +# ----- AlphaChunkFitter ----------------------------------------------------- + + +class TestAlphaChunkFitterPrecomputeGeometry(SpiceTestCase): + """Tests for `AlphaChunkFitter.precompute_geometry` with real SPICE kernels.""" + + def _mag_centered_on(self, epoch_ns): + offsets = np.array([-1_000_000_000, 0, 1_000_000_000], dtype=np.int64) + return MagData(epoch=epoch_ns + offsets, mag_data=np.tile(_B_HAT_RTN, (3, 1))) + + def test_success_returns_rotations_and_b_hat(self): + """With both SPICE and MAG available, alpha precompute_geometry returns the chunk epoch, a science-bin rotation array of the right shape (matching the proton fit it shares with proton-sw), and the median B̂ in the chunk window.""" + epoch, rotation_matrices, b_hat = AlphaChunkFitter( + self._mag_centered_on(_CHUNK_EPOCH) + ).precompute_geometry(_zero_chunk()) + + self.assertEqual(epoch, _CHUNK_EPOCH) + assert rotation_matrices is not None + self.assertEqual( + rotation_matrices.shape, + (SWAPI_SCIENCE_BINS.stop - SWAPI_SCIENCE_BINS.start, 3, 3), + ) + np.testing.assert_allclose(b_hat, _B_HAT_RTN) + + def test_spice_failure_yields_none_rotations_but_keeps_b_hat(self): + """When the chunk falls outside SPICE coverage, alpha precompute returns None rotations but B̂ is still computed from MAG since that path is independent.""" + out_of_coverage_chunk_epoch = _OUT_OF_COVERAGE_START_TIME + THIRTY_SECONDS_IN_NANOSECONDS + _, rotation_matrices, b_hat = AlphaChunkFitter( + self._mag_centered_on(out_of_coverage_chunk_epoch) + ).precompute_geometry(_out_of_coverage_chunk()) + self.assertIsNone(rotation_matrices) + np.testing.assert_allclose(b_hat, _B_HAT_RTN) + + def test_empty_mag_window_yields_nan_b_hat(self): + """When no MAG samples fall inside the chunk window, B̂ comes back as NaN even though rotations were successfully computed.""" + far_future = _EPOCH_TT2000 + 10**18 + _, _, b_hat = AlphaChunkFitter( + self._mag_centered_on(far_future) + ).precompute_geometry(_zero_chunk()) + self.assertTrue(np.all(np.isnan(b_hat))) + + +class TestAlphaChunkFitterFitChunk(SpiceTestCase): + """Tests for `AlphaChunkFitter.fit_chunk` — stage ordering plus fill-value branches in the alpha fit.""" + + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.response = _swapi_response_with_warm_cache(np.tile(REALISTIC_ESA_VOLTAGES, _N_SWEEPS)) + efficiency_table = _efficiency_table() + _populate_shared(cls.response, efficiency_table) + cls.chunk, _, cls.true_proton_velocity_rtn, cls.true_alpha_velocity_rtn = _build_truth_chunk(cls.response, efficiency_table) + # AlphaChunkFitter and ProtonChunkFitter share the same proton fit on + # `SWAPI_SCIENCE_BINS`, so the rotations passed in must span the full + # science range; AlphaChunkFitter slices down to coarse for Stage 2. + cls.rotations = _spice_rotations(SWAPI_SCIENCE_BINS) + cls.fitter = AlphaChunkFitter(mag_data=None) + cls.happy_result = cls.fitter.fit_chunk( + cls.chunk, _CHUNK_EPOCH, cls.rotations, _B_HAT_RTN + ) + + @classmethod + def tearDownClass(cls): + _clear_shared() + super().tearDownClass() + + def test_recovers_alpha_truth_moments(self): + """Fitting a forward-modeled proton+alpha chunk recovers the true alpha density, temperature, delta-v, and bulk velocity within a few percent.""" + self.assertAlmostEqual( + self.happy_result["alpha_sw_density"], + _TRUE_ALPHA_DENSITY, + delta=0.10 * _TRUE_ALPHA_DENSITY, + ) + self.assertAlmostEqual( + self.happy_result["alpha_sw_temperature"], + _TRUE_ALPHA_TEMPERATURE_K, + delta=0.10 * _TRUE_ALPHA_TEMPERATURE_K, + ) + self.assertAlmostEqual( + self.happy_result["alpha_sw_delta_v"], _TRUE_DELTA_V_KM_S, delta=2.0 + ) + np.testing.assert_allclose( + self.happy_result["alpha_sw_velocity_rtn"], self.true_alpha_velocity_rtn, atol=5.0 + ) + + def test_b_hat_passes_through_to_result(self): + """The B̂ argument is surfaced unchanged under `alpha_sw_b_hat_rtn`.""" + np.testing.assert_array_equal(self.happy_result["alpha_sw_b_hat_rtn"], _B_HAT_RTN) + + def test_quality_flag_none_on_clean_chunk(self): + """A clean chunk yields a NONE quality flag (both Stage 1 and Stage 2 converged).""" + self.assertEqual( + int(self.happy_result["quality_flags"]), int(SwapiL3Flags.NONE) + ) + + +# ----- ParallelChunkRunner -------------------------------------------------- + + +class _RecordingChunkFitter(ChunkFitter): + """A real `ChunkFitter` that echoes the chunk's start time. Module-level + so fork-spawned workers can locate it via inherited memory.""" + + def precompute_geometry(self, chunk): + return (int(chunk.sci_start_time[0]),) + + def fit_chunk(self, chunk, epoch): + return { + "epoch": epoch, + "first_start_time": int(chunk.sci_start_time[0]), + } + + +class _WarmCacheProbeChunkFitter(ChunkFitter): + """A real `ChunkFitter` whose `fit_chunk` reports the `_passband_grid_cache` size + seen by the worker process. Module-level for fork inheritance.""" + + def precompute_geometry(self, chunk): + return (int(chunk.sci_start_time[0]),) + + def fit_chunk(self, chunk, epoch): + worker_response = chunk_fits._shared["swapi_response"] + return { + "epoch": epoch, + "worker_cache_size": len(worker_response._passband_grid_cache), + } + + +def _make_chunk_with_start_time(start_time): + return SwapiL2Data( + sci_start_time=np.array([start_time], dtype=np.int64), + energy=np.zeros((1, _N_BINS)), + coincidence_count_rate=np.zeros((1, _N_BINS)), + coincidence_count_rate_uncertainty=np.zeros((1, _N_BINS)), + ) + + +@unittest.skipIf(platform.system() == "Windows", "fork is not available on Windows") +class TestParallelChunkRunnerOrchestration(unittest.TestCase): + """Tests for `ParallelChunkRunner.run` against a real fork-based Pool.""" + + def tearDown(self): + _clear_shared() + + def test_dispatches_per_chunk_and_stacks_outputs_in_chunk_order(self): + """Two chunks with distinct start times produce a stacked output where each per-key array preserves chunk order across the real fork pool.""" + chunks = [ + _make_chunk_with_start_time(_EPOCH_TT2000), + _make_chunk_with_start_time(_EPOCH_TT2000 + 12_000_000_000), + ] + runner = ParallelChunkRunner( + swapi_response=_swapi_response_with_warm_cache(np.tile(REALISTIC_ESA_VOLTAGES, _N_SWEEPS)), + efficiency_table=_efficiency_table(), + ) + + result = runner.run(chunks, _RecordingChunkFitter()) + + expected_epochs = np.array( + [int(chunks[0].sci_start_time[0]), int(chunks[1].sci_start_time[0])] + ) + np.testing.assert_array_equal(result["epoch"], expected_epochs) + np.testing.assert_array_equal(result["first_start_time"], expected_epochs) + + def test_workers_see_parent_warm_cache_under_fork(self): + """A passband grid cache populated in the parent before `runner.run` is visible inside each fork-spawned worker at the same size.""" + voltages = np.array([10.0, 50.0, 100.0]) + response = _swapi_response_with_warm_cache(voltages) + parent_cache_size = len(response._passband_grid_cache) + self.assertEqual(parent_cache_size, len(voltages)) + + runner = ParallelChunkRunner( + swapi_response=response, efficiency_table=_efficiency_table() + ) + + result = runner.run( + [_make_chunk_with_start_time(_EPOCH_TT2000)], _WarmCacheProbeChunkFitter() + ) + + + np.testing.assert_array_equal( + result["worker_cache_size"], np.array([parent_cache_size]) + ) + + +# ----- Proton quality flags ------------------------------------------------- + + +class TestProtonChunkFitterQualityFlags(SpiceTestCase): + """Quality-flag branches of `ProtonChunkFitter.fit_chunk`, ordered to match `docs/swapi/solar-wind-moments.md` §Quality flags: `BAD_FIT`, `FIT_ERROR`, then NONE-flag data-gap fills.""" + + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.response = _swapi_response_with_warm_cache(np.tile(REALISTIC_ESA_VOLTAGES, _N_SWEEPS)) + efficiency_table = _efficiency_table() + _populate_shared(cls.response, efficiency_table) + cls.chunk, cls.rotations, _, _ = _build_truth_chunk(cls.response, efficiency_table) + cls.fitter = ProtonChunkFitter() + + @classmethod + def tearDownClass(cls): + _clear_shared() + super().tearDownClass() + + def _fit(self, chunk): + return self.fitter.fit_chunk( + chunk, _CHUNK_EPOCH, self.rotations, _SC_VELOCITY_RTN.copy() + ) + + def test_bad_fit_when_peak_does_not_match_maxwellian(self): + """Scrambling the proton peak bins yields a spectrum the LM fit cannot describe (the BAD_FIT quality guard fires); the chunk fitter surfaces `BAD_FIT` with peak-bin speed and NaN-filled moments.""" + rng = np.random.default_rng(0) + mean_count = self.chunk.coincidence_count_rate.mean(axis=0) + peak_bin = int(np.argmax(mean_count)) + peak_window = slice(peak_bin - 2, peak_bin + 3) + permuted = rng.permutation(np.arange(peak_window.start, peak_window.stop)) + corrupted = self.chunk.coincidence_count_rate.copy() + corrupted[:, peak_window] = corrupted[:, permuted] + + result = self._fit(_with_count_rate(self.chunk, corrupted)) + + _assert_proton_flag_and_peak_fallback(self, result, SwapiL3Flags.BAD_FIT) + + @patch("imap_l3_processing.swapi.l3a.chunk_fits._fit_proton") + def test_fit_error_when_inner_fit_returns_fit_error(self, mock_fit_proton): + """When the inner proton fit returns `FIT_ERROR` with NaN moments (scipy LM reported `success=False`), the chunk fitter propagates the flag, falls back to peak-bin speed, and NaN-fills every other science field. Mocked because there is no clean way to force scipy LM to report `success=False` from real inputs.""" + nan = ufloat(np.nan, np.nan) + mock_fit_proton.return_value = ProtonSolarWindFitResult( + density=nan, + temperature=nan, + bulk_velocity_rtn=(nan, nan, nan), + bad_fit_flag=int(SwapiL3Flags.FIT_ERROR), + ) + + result = self._fit(self.chunk) + + _assert_proton_flag_and_peak_fallback(self, result, SwapiL3Flags.FIT_ERROR) + + @patch("imap_l3_processing.swapi.l3a.science.solar_wind.proton.fit_model.calculate_initial_guess") + def test_fit_error_when_initial_guess_is_nan(self, mock_initial_guess): + """A NaN-valued initial guess causes scipy `least_squares` to reject `x0` as infeasible; the chunk fitter catches the exception, surfaces `FIT_ERROR`, and falls back to peak-bin speed. Mocked because `calculate_initial_guess` never returns NaN from real inputs (it raises instead).""" + mock_initial_guess.return_value = SolarWindParams( + density=np.nan, + bulk_velocity_rtn=np.full(3, np.nan), + temperature=np.nan, + mass=PROTON_MASS_KG, + ) + + result = self._fit(self.chunk) + + _assert_proton_flag_and_peak_fallback(self, result, SwapiL3Flags.FIT_ERROR) + + def test_fit_error_when_initial_guess_raises(self): + """A spectrum with a single non-zero bin (no Gaussian shape to fit) makes scipy `curve_fit` raise inside the initial-guess Gaussian refine; the chunk fitter catches the exception, surfaces `FIT_ERROR`, and falls back to peak-bin speed.""" + peak_bin = int(np.argmax(self.chunk.coincidence_count_rate.mean(axis=0))) + single_bin = np.zeros_like(self.chunk.coincidence_count_rate) + single_bin[:, peak_bin] = 100.0 + + result = self._fit(_with_count_rate(self.chunk, single_bin)) + + _assert_proton_flag_and_peak_fallback(self, result, SwapiL3Flags.FIT_ERROR) + + def test_no_flag_when_rotations_missing(self): + """Calling fit_chunk with no rotations reports a NONE quality flag (ephemeris gaps are treated as data gaps without a dedicated flag) and falls back to peak-bin ESA voltage as `proton_sw_speed`; every other science field NaN-fills.""" + result = self.fitter.fit_chunk(self.chunk, _CHUNK_EPOCH, None, _SC_VELOCITY_RTN) + _assert_proton_flag_and_peak_fallback(self, result, SwapiL3Flags.NONE) + + def test_no_flag_when_count_rate_has_nan(self): + """A NaN in the count rate is treated as an L2 data gap: the quality flag is NONE, `proton_sw_speed` reports the peak-bin speed (taken across finite bins via `nanargmax`), and every other science field NaN-fills.""" + result = self._fit(_with_nan_at(self.chunk, 0, 5)) + _assert_proton_flag_and_peak_fallback(self, result, SwapiL3Flags.NONE) + + +# ----- Alpha quality flags -------------------------------------------------- + + +class TestAlphaChunkFitterQualityFlags(SpiceTestCase): + """Quality-flag branches of `AlphaChunkFitter.fit_chunk` and the `PRELIMINARY_MAG` bit-OR in `SwapiProcessor.process_l3a_alpha`, ordered to match `docs/swapi/solar-wind-moments.md` §Quality flags: `BAD_FIT`, `PRELIMINARY_MAG`, then NONE-flag data-gap fills.""" + + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.response = _swapi_response_with_warm_cache(np.tile(REALISTIC_ESA_VOLTAGES, _N_SWEEPS)) + efficiency_table = _efficiency_table() + _populate_shared(cls.response, efficiency_table) + cls.chunk, cls.rotations, _, _ = _build_truth_chunk(cls.response, efficiency_table) + cls.fitter = AlphaChunkFitter(mag_data=None) + + @classmethod + def tearDownClass(cls): + _clear_shared() + super().tearDownClass() + + def test_bad_fit_when_alpha_bump_does_not_match_maxwellian(self): + """Scrambling and amplifying the alpha-bump bins leaves the proton peak intact but yields a Stage-2 residual the alpha LM cannot describe (the BAD_FIT quality guard fires); the chunk fitter surfaces `BAD_FIT` with every alpha moment NaN-filled while B̂ passes through unchanged.""" + rng = np.random.default_rng(0) + permuted = rng.permutation(np.arange(_ALPHA_BUMP_BINS.start, _ALPHA_BUMP_BINS.stop)) + corrupted = self.chunk.coincidence_count_rate.copy() + corrupted[:, _ALPHA_BUMP_BINS] = corrupted[:, permuted] * 3.0 + + result = self.fitter.fit_chunk( + _with_count_rate(self.chunk, corrupted), + _CHUNK_EPOCH, + self.rotations, + _B_HAT_RTN, + ) + + non_b_hat_array_keys = [k for k in _ALPHA_ARRAY_KEYS if k != "alpha_sw_b_hat_rtn"] + self.assertEqual(int(result["quality_flags"]), int(SwapiL3Flags.BAD_FIT)) + _assert_all_nan(self, result, _ALPHA_SCALAR_KEYS, non_b_hat_array_keys) + np.testing.assert_array_equal(result["alpha_sw_b_hat_rtn"], _B_HAT_RTN) + + @patch("imap_l3_processing.swapi.swapi_processor.SwapiL3AlphaSolarWindData") + @patch("imap_l3_processing.swapi.swapi_processor.ParallelChunkRunner") + @patch("imap_l3_processing.swapi.swapi_processor.chunk_l2_data") + def test_preliminary_mag_bit_set_iff_mag_is_preliminary( + self, mock_chunk_l2_data, mock_runner_class, mock_alpha_data_class + ): + """The `PRELIMINARY_MAG` bit is OR'd onto every per-chunk quality flag when `mag_is_preliminary=True` (preserving any underlying `BAD_FIT`), and the per-chunk flags pass through untouched when `mag_is_preliminary=False`. Mocked at the processor seam because the bit-OR is processor-level wiring, not chunk-fitter behavior.""" + runner_flag = int(SwapiL3Flags.BAD_FIT) + cases = [ + (True, runner_flag | int(SwapiL3Flags.PRELIMINARY_MAG)), + (False, runner_flag), + ] + for mag_is_preliminary, expected_flag in cases: + with self.subTest(mag_is_preliminary=mag_is_preliminary): + mock_chunk_l2_data.return_value = [Mock()] + mock_runner_class.return_value.run.return_value = { + "quality_flags": np.array([runner_flag]) + } + dependencies = Mock( + mag_data=Mock(), + mag_is_preliminary=mag_is_preliminary, + swapi_response=Mock(), + efficiency_calibration_table=Mock(), + ) + data = Mock(energy=np.array([[1000.0, 2000.0]])) + metadata = InputMetadata( + "swapi", "l3a", datetime(2025, 1, 1), datetime(2025, 1, 2), "v001" + ) + + SwapiProcessor(Mock(), metadata).process_l3a_alpha(data, dependencies) + + passed_quality_flags = mock_alpha_data_class.call_args.kwargs[ + "quality_flags" + ] + np.testing.assert_array_equal(passed_quality_flags, [expected_flag]) + + def test_no_flag_when_rotations_missing(self): + """Calling fit_chunk with no rotations NaN-fills every alpha field and reports a NONE bad_fit_flag — ephemeris gaps are treated as data gaps without a dedicated flag.""" + result = self.fitter.fit_chunk(self.chunk, _CHUNK_EPOCH, None, _B_HAT_RTN) + _assert_alpha_flag_and_all_nan(self, result, SwapiL3Flags.NONE) + + def test_no_flag_when_b_hat_is_nan(self): + """A NaN-valued B̂ NaN-fills every alpha field and reports a NONE bad_fit_flag — MAG gaps are treated as data gaps without a dedicated flag, since the field-aligned drift constraint cannot be evaluated.""" + result = self.fitter.fit_chunk( + self.chunk, _CHUNK_EPOCH, self.rotations, np.full(3, np.nan) + ) + _assert_alpha_flag_and_all_nan(self, result, SwapiL3Flags.NONE) + + def test_no_flag_when_b_hat_is_none(self): + """Passing None for B̂ NaN-fills every alpha field and reports a NONE bad_fit_flag, mirroring the NaN case.""" + result = self.fitter.fit_chunk(self.chunk, _CHUNK_EPOCH, self.rotations, None) + _assert_alpha_flag_and_all_nan(self, result, SwapiL3Flags.NONE) + + def test_no_flag_when_count_rate_has_nan(self): + """A NaN in the alpha count rate is treated as an L2 data gap: every alpha field NaN-fills and bad_fit_flag is NONE.""" + result = self.fitter.fit_chunk( + _with_nan_at(self.chunk, 0, 5), _CHUNK_EPOCH, self.rotations, _B_HAT_RTN + ) + _assert_alpha_flag_and_all_nan(self, result, SwapiL3Flags.NONE) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/swapi/l3a/test_models.py b/tests/swapi/l3a/test_models.py index 61033f649..27454d7fb 100644 --- a/tests/swapi/l3a/test_models.py +++ b/tests/swapi/l3a/test_models.py @@ -6,12 +6,20 @@ from imap_l3_processing.constants import THIRTY_SECONDS_IN_NANOSECONDS, FIVE_MINUTES_IN_NANOSECONDS from imap_l3_processing.swapi.l3a.models import SwapiL3ProtonSolarWindData, EPOCH_CDF_VAR_NAME, \ PROTON_SOLAR_WIND_SPEED_UNCERTAINTY_CDF_VAR_NAME, PROTON_SOLAR_WIND_SPEED_CDF_VAR_NAME, EPOCH_DELTA_CDF_VAR_NAME, \ - SwapiL3AlphaSolarWindData, ALPHA_SOLAR_WIND_SPEED_CDF_VAR_NAME, \ - ALPHA_SOLAR_WIND_SPEED_UNCERTAINTY_CDF_VAR_NAME, PROTON_SOLAR_WIND_TEMPERATURE_CDF_VAR_NAME, \ + PROTON_SOLAR_WIND_SPEED_SUN_CDF_VAR_NAME, PROTON_SOLAR_WIND_SPEED_SUN_UNCERTAINTY_CDF_VAR_NAME, \ + SwapiL3AlphaSolarWindData, PROTON_SOLAR_WIND_TEMPERATURE_CDF_VAR_NAME, \ PROTON_SOLAR_WIND_TEMPERATURE_UNCERTAINTY_CDF_VAR_NAME, PROTON_SOLAR_WIND_DENSITY_CDF_VAR_NAME, \ - PROTON_SOLAR_WIND_DENSITY_UNCERTAINTY_CDF_VAR_NAME, PROTON_SOLAR_WIND_CLOCK_ANGLE_CDF_VAR_NAME, \ - PROTON_SOLAR_WIND_CLOCK_ANGLE_UNCERTAINTY_CDF_VAR_NAME, PROTON_SOLAR_WIND_DEFLECTION_ANGLE_CDF_VAR_NAME, \ - PROTON_SOLAR_WIND_DEFLECTION_ANGLE_UNCERTAINTY_CDF_VAR_NAME, SwapiL3PickupIonData, PUI_COOLING_INDEX_CDF_VAR_NAME, \ + PROTON_SOLAR_WIND_DENSITY_UNCERTAINTY_CDF_VAR_NAME, \ + PROTON_SOLAR_WIND_BULK_VELOCITY_RTN_SUN_CDF_VAR_NAME, \ + PROTON_SOLAR_WIND_BULK_VELOCITY_RTN_SUN_COVARIANCE_CDF_VAR_NAME, \ + PROTON_SOLAR_WIND_BULK_VELOCITY_RTN_SC_CDF_VAR_NAME, \ + PROTON_SOLAR_WIND_BULK_VELOCITY_RTN_SC_COVARIANCE_CDF_VAR_NAME, \ + ALPHA_SOLAR_WIND_DENSITY_CDF_VAR_NAME, ALPHA_SOLAR_WIND_DENSITY_UNCERTAINTY_CDF_VAR_NAME, \ + ALPHA_SOLAR_WIND_TEMPERATURE_CDF_VAR_NAME, ALPHA_SOLAR_WIND_TEMPERATURE_UNCERTAINTY_CDF_VAR_NAME, \ + ALPHA_SOLAR_WIND_VELOCITY_RTN_CDF_VAR_NAME, ALPHA_SOLAR_WIND_VELOCITY_COVARIANCE_RTN_CDF_VAR_NAME, \ + ALPHA_SOLAR_WIND_DELTA_V_CDF_VAR_NAME, ALPHA_SOLAR_WIND_DELTA_V_UNCERT_CDF_VAR_NAME, \ + ALPHA_SOLAR_WIND_B_HAT_RTN_CDF_VAR_NAME, \ + SwapiL3PickupIonData, PUI_COOLING_INDEX_CDF_VAR_NAME, \ PUI_IONIZATION_RATE_CDF_VAR_NAME, PUI_CUTOFF_SPEED_CDF_VAR_NAME, PUI_BACKGROUND_COUNT_RATE_CDF_VAR_NAME, \ PUI_DENSITY_CDF_VAR_NAME, PUI_TEMPERATURE_CDF_VAR_NAME, PUI_COOLING_INDEX_UNCERTAINTY_CDF_VAR_NAME, \ PUI_IONIZATION_RATE_UNCERTAINTY_CDF_VAR_NAME, PUI_CUTOFF_SPEED_UNCERTAINTY_CDF_VAR_NAME, \ @@ -26,97 +34,104 @@ class TestModels(CdfModelTestCase): def test_getting_proton_sw_data_product_variables(self): epoch_data = np.arange(20, step=2) epoch_delta = np.full_like(epoch_data, THIRTY_SECONDS_IN_NANOSECONDS) - expected_nominal_values = np.arange(10, step=1.0) - expected_std = np.arange(5, step=.5) - proton_speed = uarray(expected_nominal_values, expected_std) - expected_temperature_nominal_values = np.arange(1000, 2000, step=100.) - expected_temperature_std = np.arange(50, step=5.) - temperature_data = uarray(expected_temperature_nominal_values, expected_temperature_std) - expected_density_nominal_values = np.arange(3, 13, step=1.) - expected_density_std = np.arange(1, step=.1) - density_data = uarray(expected_density_nominal_values, expected_density_std) - expected_clock_angle = np.arange(10, step=1.) - expected_clock_angle_std = np.arange(2, step=.2) - clock_angle_data = uarray(expected_clock_angle, expected_clock_angle_std) - expected_flow_deflection = np.arange(100, step=10.) - expected_flow_deflection_std = np.arange(1, step=.1) - flow_deflection_data = uarray(expected_flow_deflection, expected_flow_deflection_std) - quality_flags = np.full(20, SwapiL3Flags.NONE) - quality_flags[3:5] |= SwapiL3Flags.SWP_SW_ANGLES_ESTIMATED - data = SwapiL3ProtonSolarWindData(Mock(), epoch_data, proton_speed, temperature_data, density_data, - clock_angle_data, - flow_deflection_data, quality_flags) + n = len(epoch_data) + + speed = np.arange(10, step=1.0) + speed_uncert = np.arange(5, step=.5) + speed_sun = np.arange(20, 30, step=1.0) + speed_sun_uncert = np.arange(2, 7, step=.5) + temperature = np.arange(1000, 2000, step=100.) + temperature_uncert = np.arange(50, step=5.) + density = np.arange(3, 13, step=1.) + density_uncert = np.arange(1, step=.1) + bulk_v_rtn_sun = np.arange(n * 3, dtype=float).reshape(n, 3) + bulk_v_rtn_sun_cov = np.arange(n * 9, dtype=float).reshape(n, 3, 3) + bulk_v_rtn_sc = np.arange(100, 100 + n * 3, dtype=float).reshape(n, 3) + bulk_v_rtn_sc_cov = np.arange(200, 200 + n * 9, dtype=float).reshape(n, 3, 3) + + quality_flags = np.full(n, SwapiL3Flags.NONE) + quality_flags[3:5] |= SwapiL3Flags.FIT_ERROR + + data = SwapiL3ProtonSolarWindData( + Mock(), epoch_data, + speed, speed_uncert, + speed_sun, speed_sun_uncert, + temperature, temperature_uncert, + density, density_uncert, + bulk_v_rtn_sun, bulk_v_rtn_sun_cov, + bulk_v_rtn_sc, bulk_v_rtn_sc_cov, + quality_flags, + ) variables = data.to_data_product_variables() self.assert_variable_attributes(variables[0], epoch_data, EPOCH_CDF_VAR_NAME) - self.assert_variable_attributes(variables[1], expected_nominal_values, PROTON_SOLAR_WIND_SPEED_CDF_VAR_NAME) - self.assert_variable_attributes(variables[2], expected_std, PROTON_SOLAR_WIND_SPEED_UNCERTAINTY_CDF_VAR_NAME) - self.assert_variable_attributes(variables[3], epoch_delta, EPOCH_DELTA_CDF_VAR_NAME) - self.assert_variable_attributes(variables[4], expected_temperature_nominal_values, - PROTON_SOLAR_WIND_TEMPERATURE_CDF_VAR_NAME) - self.assert_variable_attributes(variables[5], expected_temperature_std, + self.assert_variable_attributes(variables[1], speed, PROTON_SOLAR_WIND_SPEED_CDF_VAR_NAME) + self.assert_variable_attributes(variables[2], speed_uncert, PROTON_SOLAR_WIND_SPEED_UNCERTAINTY_CDF_VAR_NAME) + self.assert_variable_attributes(variables[3], speed_sun, PROTON_SOLAR_WIND_SPEED_SUN_CDF_VAR_NAME) + self.assert_variable_attributes(variables[4], speed_sun_uncert, + PROTON_SOLAR_WIND_SPEED_SUN_UNCERTAINTY_CDF_VAR_NAME) + self.assert_variable_attributes(variables[5], epoch_delta, EPOCH_DELTA_CDF_VAR_NAME) + self.assert_variable_attributes(variables[6], temperature, PROTON_SOLAR_WIND_TEMPERATURE_CDF_VAR_NAME) + self.assert_variable_attributes(variables[7], temperature_uncert, PROTON_SOLAR_WIND_TEMPERATURE_UNCERTAINTY_CDF_VAR_NAME) - self.assert_variable_attributes(variables[6], expected_density_nominal_values, - PROTON_SOLAR_WIND_DENSITY_CDF_VAR_NAME) - self.assert_variable_attributes(variables[7], expected_density_std, + self.assert_variable_attributes(variables[8], density, PROTON_SOLAR_WIND_DENSITY_CDF_VAR_NAME) + self.assert_variable_attributes(variables[9], density_uncert, PROTON_SOLAR_WIND_DENSITY_UNCERTAINTY_CDF_VAR_NAME) - self.assert_variable_attributes(variables[8], expected_clock_angle, PROTON_SOLAR_WIND_CLOCK_ANGLE_CDF_VAR_NAME) - self.assert_variable_attributes(variables[9], expected_clock_angle_std, - PROTON_SOLAR_WIND_CLOCK_ANGLE_UNCERTAINTY_CDF_VAR_NAME) - self.assert_variable_attributes(variables[10], expected_flow_deflection, - PROTON_SOLAR_WIND_DEFLECTION_ANGLE_CDF_VAR_NAME) - self.assert_variable_attributes(variables[11], expected_flow_deflection_std, - PROTON_SOLAR_WIND_DEFLECTION_ANGLE_UNCERTAINTY_CDF_VAR_NAME) - self.assert_variable_attributes(variables[12], quality_flags, SWAPI_QUALITY_FLAGS_CDF_VAR_NAME) + self.assert_variable_attributes(variables[10], bulk_v_rtn_sun, + PROTON_SOLAR_WIND_BULK_VELOCITY_RTN_SUN_CDF_VAR_NAME) + self.assert_variable_attributes(variables[11], bulk_v_rtn_sun_cov, + PROTON_SOLAR_WIND_BULK_VELOCITY_RTN_SUN_COVARIANCE_CDF_VAR_NAME) + self.assert_variable_attributes(variables[12], bulk_v_rtn_sc, + PROTON_SOLAR_WIND_BULK_VELOCITY_RTN_SC_CDF_VAR_NAME) + self.assert_variable_attributes(variables[13], bulk_v_rtn_sc_cov, + PROTON_SOLAR_WIND_BULK_VELOCITY_RTN_SC_COVARIANCE_CDF_VAR_NAME) + self.assert_variable_attributes(variables[14], quality_flags, SWAPI_QUALITY_FLAGS_CDF_VAR_NAME) def test_getting_alpha_sw_data_product_variables(self): epoch_data = np.arange(20, step=2) epoch_delta = np.full_like(epoch_data, THIRTY_SECONDS_IN_NANOSECONDS) - expected_speed_nominal_values = np.arange(10, step=1.) - expected_speed_std = np.arange(5, step=.5) - alpha_speed = uarray(expected_speed_nominal_values, expected_speed_std) - expected_temperature_nominal_values = np.arange(300000, step=30000.) - expected_temperature_std_devs = np.arange(50000, step=5000.) - alpha_temperature = uarray(expected_temperature_nominal_values, expected_temperature_std_devs) - expected_alpha_density_nominal_values = np.arange(2, step=.2) - expected_alpha_density_std_devs = np.arange(1, step=0.1) - expected_flag_values = np.full_like(epoch_data, SwapiL3Flags.NONE) - expected_flag_values[:len(epoch_data) // 2] = SwapiL3Flags.HI_CHI_SQ - - alpha_density = uarray(expected_alpha_density_nominal_values, expected_alpha_density_std_devs) - - expected_pre_lut_temperature_nominal_values = np.arange(400000, step=40000.) - expected_pre_lut_temperature_std_devs = np.arange(20000, step=2000.) - alpha_pre_lut_temperature = uarray(expected_pre_lut_temperature_nominal_values, expected_pre_lut_temperature_std_devs) - expected_pre_lut_alpha_density_nominal_values = np.arange(2.4, step=.24) - expected_pre_lut_alpha_density_std_devs = np.arange(1.5, step=0.15) - alpha_pre_lut_density = uarray(expected_pre_lut_alpha_density_nominal_values, expected_pre_lut_alpha_density_std_devs) - - data = SwapiL3AlphaSolarWindData(Mock(), epoch_data, alpha_speed, alpha_temperature, alpha_density, - expected_flag_values, alpha_pre_lut_temperature, alpha_pre_lut_density) + n = len(epoch_data) + + density = np.arange(2, step=.2) + density_uncert = np.arange(1, step=0.1) + temperature = np.arange(300000, step=30000.) + temperature_uncert = np.arange(50000, step=5000.) + velocity_rtn = np.arange(n * 3, dtype=float).reshape(n, 3) + velocity_cov_rtn = np.arange(n * 9, dtype=float).reshape(n, 3, 3) + delta_v = np.arange(10, step=1.) + delta_v_uncert = np.arange(5, step=.5) + b_hat_rtn = np.arange(100, 100 + n * 3, dtype=float).reshape(n, 3) + + quality_flags = np.full_like(epoch_data, SwapiL3Flags.NONE) + quality_flags[:n // 2] = SwapiL3Flags.BAD_FIT + + data = SwapiL3AlphaSolarWindData( + Mock(), epoch_data, + density, density_uncert, + temperature, temperature_uncert, + velocity_rtn, velocity_cov_rtn, + delta_v, delta_v_uncert, + b_hat_rtn, + quality_flags, + ) variables = data.to_data_product_variables() self.assert_variable_attributes(variables[0], epoch_data, EPOCH_CDF_VAR_NAME) self.assert_variable_attributes(variables[1], epoch_delta, EPOCH_DELTA_CDF_VAR_NAME) - self.assert_variable_attributes(variables[2], expected_speed_nominal_values, - ALPHA_SOLAR_WIND_SPEED_CDF_VAR_NAME) - self.assert_variable_attributes(variables[3], expected_speed_std, - ALPHA_SOLAR_WIND_SPEED_UNCERTAINTY_CDF_VAR_NAME) - self.assert_variable_attributes(variables[4], expected_temperature_nominal_values, - "alpha_sw_temperature") - self.assert_variable_attributes(variables[5], expected_temperature_std_devs, - "alpha_sw_temperature_uncert") - self.assert_variable_attributes(variables[6], expected_alpha_density_nominal_values, - "alpha_sw_density") - self.assert_variable_attributes(variables[7], expected_alpha_density_std_devs, - "alpha_sw_density_uncert") - - self.assert_variable_attributes(variables[8], expected_flag_values, "swp_flags") - - self.assert_variable_attributes(variables[9], expected_pre_lut_temperature_nominal_values, "alpha_sw_pre_lut_temperature") - self.assert_variable_attributes(variables[10], expected_pre_lut_alpha_density_nominal_values, "alpha_sw_pre_lut_density") - + self.assert_variable_attributes(variables[2], density, ALPHA_SOLAR_WIND_DENSITY_CDF_VAR_NAME) + self.assert_variable_attributes(variables[3], density_uncert, + ALPHA_SOLAR_WIND_DENSITY_UNCERTAINTY_CDF_VAR_NAME) + self.assert_variable_attributes(variables[4], temperature, ALPHA_SOLAR_WIND_TEMPERATURE_CDF_VAR_NAME) + self.assert_variable_attributes(variables[5], temperature_uncert, + ALPHA_SOLAR_WIND_TEMPERATURE_UNCERTAINTY_CDF_VAR_NAME) + self.assert_variable_attributes(variables[6], velocity_rtn, ALPHA_SOLAR_WIND_VELOCITY_RTN_CDF_VAR_NAME) + self.assert_variable_attributes(variables[7], velocity_cov_rtn, + ALPHA_SOLAR_WIND_VELOCITY_COVARIANCE_RTN_CDF_VAR_NAME) + self.assert_variable_attributes(variables[8], delta_v, ALPHA_SOLAR_WIND_DELTA_V_CDF_VAR_NAME) + self.assert_variable_attributes(variables[9], delta_v_uncert, ALPHA_SOLAR_WIND_DELTA_V_UNCERT_CDF_VAR_NAME) + self.assert_variable_attributes(variables[10], b_hat_rtn, ALPHA_SOLAR_WIND_B_HAT_RTN_CDF_VAR_NAME) + self.assert_variable_attributes(variables[11], quality_flags, SWAPI_QUALITY_FLAGS_CDF_VAR_NAME) def test_getting_pui_data_product_variables(self): epoch_data = np.arange(20, step=2) diff --git a/tests/swapi/l3a/test_swapi_l3a_dependencies.py b/tests/swapi/l3a/test_swapi_l3a_dependencies.py index 8495c461a..21e26934d 100644 --- a/tests/swapi/l3a/test_swapi_l3a_dependencies.py +++ b/tests/swapi/l3a/test_swapi_l3a_dependencies.py @@ -5,21 +5,21 @@ import imap_data_access from imap_data_access.processing_input import ScienceInput, ProcessingInputCollection, AncillaryInput -from imap_l3_processing.swapi.descriptors import SWAPI_L2_DESCRIPTOR, ALPHA_TEMPERATURE_DENSITY_LOOKUP_TABLE_DESCRIPTOR, \ - PROTON_TEMPERATURE_DENSITY_LOOKUP_TABLE_DESCRIPTOR, \ +from imap_l3_processing.swapi.descriptors import SWAPI_L2_DESCRIPTOR, \ INSTRUMENT_RESPONSE_LOOKUP_TABLE_DESCRIPTOR, DENSITY_OF_NEUTRAL_HELIUM_DESCRIPTOR, \ - CLOCK_ANGLE_AND_FLOW_DEFLECTION_LOOKUP_TABLE_DESCRIPTOR, EFFICIENCY_LOOKUP_TABLE_DESCRIPTOR, \ - GEOMETRIC_FACTOR_PUI_LOOKUP_TABLE_DESCRIPTOR, HYDROGEN_INFLOW_VECTOR_DESCRIPTOR, HELIUM_INFLOW_VECTOR_DESCRIPTOR + EFFICIENCY_LOOKUP_TABLE_DESCRIPTOR, \ + GEOMETRIC_FACTOR_PUI_LOOKUP_TABLE_DESCRIPTOR, HYDROGEN_INFLOW_VECTOR_DESCRIPTOR, HELIUM_INFLOW_VECTOR_DESCRIPTOR, \ + AZIMUTHAL_TRANSMISSION_DESCRIPTOR, CENTRAL_EFFECTIVE_AREA_DESCRIPTOR, PASSBAND_FIT_COEFFICIENTS_DESCRIPTOR, \ + MAG_RTN_DESCRIPTOR from imap_l3_processing.swapi.l3a.swapi_l3a_dependencies import SwapiL3ADependencies class TestSwapiL3ADependencies(unittest.TestCase): - @patch( - "imap_l3_processing.swapi.l3a.swapi_l3a_dependencies.SwapiL3ADependencies.from_file_paths") - @patch( - "imap_l3_processing.swapi.l3a.swapi_l3a_dependencies.download") - def test_fetch_dependencies(self, mock_download, mock_from_file_paths): + @patch("imap_l3_processing.swapi.l3a.swapi_l3a_dependencies.select_mag_path") + @patch("imap_l3_processing.swapi.l3a.swapi_l3a_dependencies.SwapiL3ADependencies.from_file_paths") + @patch("imap_l3_processing.swapi.l3a.swapi_l3a_dependencies.download") + def test_fetch_dependencies(self, mock_download, mock_from_file_paths, mock_select_mag_path): input_collection = ProcessingInputCollection() start_date = '20100105' @@ -30,47 +30,49 @@ def test_fetch_dependencies(self, mock_download, mock_from_file_paths): mock_download.side_effect = [ sentinel.swapi_l2_data, - sentinel.proton_density_and_temperature_calibration_file, - sentinel.alpha_density_and_temperature_calibration_file, - sentinel.clock_and_deflection_file, sentinel.efficiency_file, sentinel.geometric_factor_calibration_table, sentinel.instrument_response_table, sentinel.neutral_helium_table, sentinel.hydrogen_vector, sentinel.helium_vector, + sentinel.azimuthal_transmission, + sentinel.central_effective_area, + sentinel.passband_fit_coefficients, ] + mock_select_mag_path.return_value = (sentinel.mag_path, "l2") swapi_science_file_download_path = f"{mission}_{instrument}_{data_level}_{SWAPI_L2_DESCRIPTOR}_{start_date}_{version}.cdf" - swapi_clock_angle_calibration_table_file_name = f"{mission}_{instrument}_{CLOCK_ANGLE_AND_FLOW_DEFLECTION_LOOKUP_TABLE_DESCRIPTOR}_{start_date}_{version}.cdf" - swapi_alpha_temp_density_calibration_file_name = f"{mission}_{instrument}_{ALPHA_TEMPERATURE_DENSITY_LOOKUP_TABLE_DESCRIPTOR}_{start_date}_{version}.cdf" - swapi_proton_temp_and_density_calibration_file_name = f"{mission}_{instrument}_{PROTON_TEMPERATURE_DENSITY_LOOKUP_TABLE_DESCRIPTOR}_{start_date}_{version}.cdf" swapi_efficiency_file_name = f"{mission}_{instrument}_{EFFICIENCY_LOOKUP_TABLE_DESCRIPTOR}_{start_date}_{version}.cdf" swapi_geometric_factor_calibration_file_name = f"{mission}_{instrument}_{GEOMETRIC_FACTOR_PUI_LOOKUP_TABLE_DESCRIPTOR}_{start_date}_{version}.cdf" swapi_instrument_response_lookup_table_collection = f"{mission}_{instrument}_{INSTRUMENT_RESPONSE_LOOKUP_TABLE_DESCRIPTOR}_{start_date}_{version}.cdf" swapi_density_of_neutral_helium_lookup = f"{mission}_{instrument}_{DENSITY_OF_NEUTRAL_HELIUM_DESCRIPTOR}_{start_date}_{version}.cdf" swapi_hydrogen_inflow_filename = f"{mission}_{instrument}_{HYDROGEN_INFLOW_VECTOR_DESCRIPTOR}_{start_date}_{version}.cdf" swapi_helium_inflow_filename = f"{mission}_{instrument}_{HELIUM_INFLOW_VECTOR_DESCRIPTOR}_{start_date}_{version}.cdf" + swapi_azimuthal_transmission_filename = f"{mission}_{instrument}_{AZIMUTHAL_TRANSMISSION_DESCRIPTOR}_{start_date}_{version}.cdf" + swapi_central_effective_area_filename = f"{mission}_{instrument}_{CENTRAL_EFFECTIVE_AREA_DESCRIPTOR}_{start_date}_{version}.cdf" + swapi_passband_fit_coefficients_filename = f"{mission}_{instrument}_{PASSBAND_FIT_COEFFICIENTS_DESCRIPTOR}_{start_date}_{version}.cdf" science_input = ScienceInput(swapi_science_file_download_path) - clock_angle_calibration_ancillary = AncillaryInput(swapi_clock_angle_calibration_table_file_name) - alpha_temp_density_calibration_ancillary = AncillaryInput(swapi_alpha_temp_density_calibration_file_name) - proton_temp_and_density_calibration_ancillary = AncillaryInput( - swapi_proton_temp_and_density_calibration_file_name) efficiency_ancillary = AncillaryInput(swapi_efficiency_file_name) geometric_factor_calibration_ancillary = AncillaryInput(swapi_geometric_factor_calibration_file_name) instrument_response_lookup_ancillary = AncillaryInput(swapi_instrument_response_lookup_table_collection) density_of_neutral_helium_ancillary = AncillaryInput(swapi_density_of_neutral_helium_lookup) hydrogen_inflow_ancillary = AncillaryInput(swapi_hydrogen_inflow_filename) helium_inflow_ancillary = AncillaryInput(swapi_helium_inflow_filename) + azimuthal_transmission_ancillary = AncillaryInput(swapi_azimuthal_transmission_filename) + central_effective_area_ancillary = AncillaryInput(swapi_central_effective_area_filename) + passband_fit_coefficients_ancillary = AncillaryInput(swapi_passband_fit_coefficients_filename) input_collection.add( - [science_input, clock_angle_calibration_ancillary, alpha_temp_density_calibration_ancillary, - proton_temp_and_density_calibration_ancillary, efficiency_ancillary, + [science_input, efficiency_ancillary, geometric_factor_calibration_ancillary, instrument_response_lookup_ancillary, density_of_neutral_helium_ancillary, hydrogen_inflow_ancillary, helium_inflow_ancillary, + azimuthal_transmission_ancillary, + central_effective_area_ancillary, + passband_fit_coefficients_ancillary, ]) actual_swapi_l3_dependencies = SwapiL3ADependencies.fetch_dependencies(input_collection) @@ -78,50 +80,86 @@ def test_fetch_dependencies(self, mock_download, mock_from_file_paths): science_data_dir = imap_data_access.config["DATA_DIR"] / 'imap' / 'swapi' / 'l2' / '2010' / '01' ancillary_data_dir = imap_data_access.config["DATA_DIR"] / 'imap' / 'ancillary' / 'swapi' - expected_download_science_path = science_data_dir / swapi_science_file_download_path - expected_download_ancillary_path1 = ancillary_data_dir / swapi_proton_temp_and_density_calibration_file_name - expected_download_ancillary_path2 = ancillary_data_dir / swapi_alpha_temp_density_calibration_file_name - expected_download_ancillary_path3 = ancillary_data_dir / swapi_clock_angle_calibration_table_file_name - expected_download_ancillary_path4 = ancillary_data_dir / swapi_efficiency_file_name - expected_download_ancillary_path5 = ancillary_data_dir / swapi_geometric_factor_calibration_file_name - expected_download_ancillary_path6 = ancillary_data_dir / swapi_instrument_response_lookup_table_collection - expected_download_ancillary_path7 = ancillary_data_dir / swapi_density_of_neutral_helium_lookup - expected_download_ancillary_path8 = ancillary_data_dir / swapi_hydrogen_inflow_filename - expected_download_ancillary_path9 = ancillary_data_dir / swapi_helium_inflow_filename - mock_download.assert_has_calls([ - call(expected_download_science_path), - call(expected_download_ancillary_path1), - call(expected_download_ancillary_path2), - call(expected_download_ancillary_path3), - call(expected_download_ancillary_path4), - call(expected_download_ancillary_path5), - call(expected_download_ancillary_path6), - call(expected_download_ancillary_path7), - call(expected_download_ancillary_path8), - call(expected_download_ancillary_path9), + call(science_data_dir / swapi_science_file_download_path), + call(ancillary_data_dir / swapi_efficiency_file_name), + call(ancillary_data_dir / swapi_geometric_factor_calibration_file_name), + call(ancillary_data_dir / swapi_instrument_response_lookup_table_collection), + call(ancillary_data_dir / swapi_density_of_neutral_helium_lookup), + call(ancillary_data_dir / swapi_hydrogen_inflow_filename), + call(ancillary_data_dir / swapi_helium_inflow_filename), + call(ancillary_data_dir / swapi_azimuthal_transmission_filename), + call(ancillary_data_dir / swapi_central_effective_area_filename), + call(ancillary_data_dir / swapi_passband_fit_coefficients_filename), ]) + mock_select_mag_path.assert_called_once_with(input_collection, MAG_RTN_DESCRIPTOR) + mock_from_file_paths.assert_called_with( sentinel.swapi_l2_data, - sentinel.proton_density_and_temperature_calibration_file, - sentinel.alpha_density_and_temperature_calibration_file, - sentinel.clock_and_deflection_file, sentinel.efficiency_file, sentinel.geometric_factor_calibration_table, sentinel.instrument_response_table, sentinel.neutral_helium_table, sentinel.hydrogen_vector, sentinel.helium_vector, + sentinel.azimuthal_transmission, + sentinel.central_effective_area, + sentinel.passband_fit_coefficients, + sentinel.mag_path, + False, ) self.assertEqual(mock_from_file_paths.return_value, actual_swapi_l3_dependencies) + @patch("imap_l3_processing.swapi.l3a.swapi_l3a_dependencies.select_mag_path") + @patch("imap_l3_processing.swapi.l3a.swapi_l3a_dependencies.SwapiL3ADependencies.from_file_paths") + @patch("imap_l3_processing.swapi.l3a.swapi_l3a_dependencies.download") + def test_fetch_dependencies_with_l1d_mag(self, mock_download, mock_from_file_paths, mock_select_mag_path): + input_collection = ProcessingInputCollection() + + mock_download.side_effect = [ + sentinel.swapi_l2_data, + sentinel.efficiency_file, + sentinel.geometric_factor_calibration_table, + sentinel.instrument_response_table, + sentinel.neutral_helium_table, + sentinel.hydrogen_vector, + sentinel.helium_vector, + sentinel.azimuthal_transmission, + sentinel.central_effective_area, + sentinel.passband_fit_coefficients, + ] + mock_select_mag_path.return_value = (sentinel.mag_path, "l1d") + + start_date = '20100105' + version = 'v010' + descriptors = [ + ("imap_swapi_l2", SWAPI_L2_DESCRIPTOR, ScienceInput), + ("imap_swapi", EFFICIENCY_LOOKUP_TABLE_DESCRIPTOR, AncillaryInput), + ("imap_swapi", GEOMETRIC_FACTOR_PUI_LOOKUP_TABLE_DESCRIPTOR, AncillaryInput), + ("imap_swapi", INSTRUMENT_RESPONSE_LOOKUP_TABLE_DESCRIPTOR, AncillaryInput), + ("imap_swapi", DENSITY_OF_NEUTRAL_HELIUM_DESCRIPTOR, AncillaryInput), + ("imap_swapi", HYDROGEN_INFLOW_VECTOR_DESCRIPTOR, AncillaryInput), + ("imap_swapi", HELIUM_INFLOW_VECTOR_DESCRIPTOR, AncillaryInput), + ("imap_swapi", AZIMUTHAL_TRANSMISSION_DESCRIPTOR, AncillaryInput), + ("imap_swapi", CENTRAL_EFFECTIVE_AREA_DESCRIPTOR, AncillaryInput), + ("imap_swapi", PASSBAND_FIT_COEFFICIENTS_DESCRIPTOR, AncillaryInput), + ] + for prefix, desc, cls in descriptors: + input_collection.add([cls(f"{prefix}_{desc}_{start_date}_{version}.cdf")]) + + SwapiL3ADependencies.fetch_dependencies(input_collection) + + _, kwargs = mock_from_file_paths.call_args + args = mock_from_file_paths.call_args.args + self.assertEqual(sentinel.mag_path, args[10]) + self.assertEqual(True, args[11]) + + @patch('imap_l3_processing.swapi.l3a.swapi_l3a_dependencies.read_mag_rtn_data') + @patch('imap_l3_processing.swapi.l3a.swapi_l3a_dependencies.SwapiResponse.from_files') @patch('imap_l3_processing.swapi.l3a.swapi_l3a_dependencies.CDF') @patch('imap_l3_processing.swapi.l3a.swapi_l3a_dependencies.InflowVector.from_file') - @patch('imap_l3_processing.swapi.l3a.swapi_l3a_dependencies.ProtonTemperatureAndDensityCalibrationTable.from_file') - @patch('imap_l3_processing.swapi.l3a.swapi_l3a_dependencies.AlphaTemperatureDensityCalibrationTable.from_file') - @patch('imap_l3_processing.swapi.l3a.swapi_l3a_dependencies.ClockAngleCalibrationTable.from_file') @patch('imap_l3_processing.swapi.l3a.swapi_l3a_dependencies.EfficiencyCalibrationTable') @patch('imap_l3_processing.swapi.l3a.swapi_l3a_dependencies.GeometricFactorCalibrationTable.from_file') @patch('imap_l3_processing.swapi.l3a.swapi_l3a_dependencies.InstrumentResponseLookupTableCollection.from_file') @@ -129,81 +167,99 @@ def test_fetch_dependencies(self, mock_download, mock_from_file_paths): @patch('imap_l3_processing.swapi.l3a.swapi_l3a_dependencies.read_l2_swapi_data') def test_from_file_paths(self, mock_read_l2_swapi, mock_neutral_helium_from_file, mock_instrument_from_file, mock_geometric_from_file, mock_efficiency_lookup_class, - mock_clock_angle_from_file, mock_alpha_temp_from_file, - mock_proton_temp_from_file, mock_inflow_vector_from_file, mock_CDF): - start_date = '20100105' - mission = 'imap' - instrument = 'swapi' - data_level = 'l2' - version = 'v010' - - swapi_science_file_download_path = Path( - f"{mission}_{instrument}_{data_level}_{SWAPI_L2_DESCRIPTOR}_{start_date}_{version}.cdf") - swapi_clock_angle_calibration_table_file_name = Path( - f"{mission}_{instrument}_{CLOCK_ANGLE_AND_FLOW_DEFLECTION_LOOKUP_TABLE_DESCRIPTOR}_{start_date}_{version}.cdf") - swapi_alpha_temp_density_calibration_file_name = Path( - f"{mission}_{instrument}_{ALPHA_TEMPERATURE_DENSITY_LOOKUP_TABLE_DESCRIPTOR}_{start_date}_{version}.cdf") - swapi_proton_temp_and_density_calibration_file_name = Path( - f"{mission}_{instrument}_{PROTON_TEMPERATURE_DENSITY_LOOKUP_TABLE_DESCRIPTOR}_{start_date}_{version}.cdf") - swapi_efficiency_calibration_file_name = Path( - f"{mission}_{instrument}_{EFFICIENCY_LOOKUP_TABLE_DESCRIPTOR}_{start_date}_{version}.cdf") - swapi_geometric_factor_calibration_file_name = Path( - f"{mission}_{instrument}_{GEOMETRIC_FACTOR_PUI_LOOKUP_TABLE_DESCRIPTOR}_{start_date}_{version}.cdf") - swapi_instrument_response_lookup_table_collection = Path( - f"{mission}_{instrument}_{INSTRUMENT_RESPONSE_LOOKUP_TABLE_DESCRIPTOR}_{start_date}_{version}.cdf") - swapi_density_of_neutral_helium_lookup = Path( - f"{mission}_{instrument}_{DENSITY_OF_NEUTRAL_HELIUM_DESCRIPTOR}_{start_date}_{version}.cdf") - swapi_hydrogen_vector_path = Path( - f"{mission}_{instrument}_{HYDROGEN_INFLOW_VECTOR_DESCRIPTOR}_{start_date}_{version}.dat") - swapi_helium_vector_path = Path( - f"{mission}_{instrument}_{HELIUM_INFLOW_VECTOR_DESCRIPTOR}_{start_date}_{version}.dat") + mock_inflow_vector_from_file, mock_CDF, + mock_swapi_response_from_files, mock_read_mag_rtn_data): + science_path = Path("imap_swapi_l2_sci_20100105_v010.cdf") + efficiency_path = Path("imap_swapi_efficiency_20100105_v010.cdf") + geometric_path = Path("imap_swapi_geometric_20100105_v010.cdf") + instrument_response_path = Path("imap_swapi_response_20100105_v010.cdf") + neutral_helium_path = Path("imap_swapi_neutral_he_20100105_v010.cdf") + hydrogen_vector_path = Path("imap_swapi_h_inflow_20100105_v010.dat") + helium_vector_path = Path("imap_swapi_he_inflow_20100105_v010.dat") + azimuthal_transmission_path = Path("imap_swapi_azimuthal_transmission_20100105_v010.cdf") + central_effective_area_path = Path("imap_swapi_central_effective_area_20100105_v010.cdf") + passband_fit_coefficients_path = Path("imap_swapi_passband_fit_coefficients_20100105_v010.cdf") + mag_path = Path("imap_mag_l2_norm-rtn_20100105_v010.cdf") mock_read_l2_swapi.return_value = sentinel.swapi_l2_data - mock_proton_temp_from_file.return_value = sentinel.proton_temp_data - mock_alpha_temp_from_file.return_value = sentinel.alpha_temp_data - mock_clock_angle_from_file.return_value = sentinel.clock_angle_data mock_efficiency_lookup_class.return_value = sentinel.efficiency_lookup mock_geometric_from_file.return_value = sentinel.geometric_data mock_instrument_from_file.return_value = sentinel.instrument_data mock_neutral_helium_from_file.return_value = sentinel.neutral_helium_data mock_inflow_vector_from_file.side_effect = [sentinel.hydrogen_vector, sentinel.helium_vector] + mock_swapi_response_from_files.return_value = sentinel.swapi_response + mock_read_mag_rtn_data.return_value = sentinel.mag_data - expected_dependencies = SwapiL3ADependencies(sentinel.swapi_l2_data, - sentinel.proton_temp_data, - sentinel.alpha_temp_data, - sentinel.clock_angle_data, - sentinel.efficiency_lookup, - sentinel.geometric_data, - sentinel.instrument_data, - sentinel.neutral_helium_data, - sentinel.hydrogen_vector, - sentinel.helium_vector, - ) + expected_dependencies = SwapiL3ADependencies( + data=sentinel.swapi_l2_data, + efficiency_calibration_table=sentinel.efficiency_lookup, + geometric_factor_calibration_table=sentinel.geometric_data, + instrument_response_calibration_table=sentinel.instrument_data, + density_of_neutral_helium_calibration_table=sentinel.neutral_helium_data, + hydrogen_inflow_vector=sentinel.hydrogen_vector, + helium_inflow_vector=sentinel.helium_vector, + swapi_response=sentinel.swapi_response, + mag_data=sentinel.mag_data, + mag_is_preliminary=True, + ) actual_dependencies = SwapiL3ADependencies.from_file_paths( - swapi_science_file_download_path, - swapi_proton_temp_and_density_calibration_file_name, - swapi_alpha_temp_density_calibration_file_name, - swapi_clock_angle_calibration_table_file_name, - swapi_efficiency_calibration_file_name, - swapi_geometric_factor_calibration_file_name, - swapi_instrument_response_lookup_table_collection, - swapi_density_of_neutral_helium_lookup, - swapi_hydrogen_vector_path, - swapi_helium_vector_path, + science_path, + efficiency_path, + geometric_path, + instrument_response_path, + neutral_helium_path, + hydrogen_vector_path, + helium_vector_path, + azimuthal_transmission_path, + central_effective_area_path, + passband_fit_coefficients_path, + mag_path, + True, ) - mock_CDF.assert_called_once_with(str(swapi_science_file_download_path)) - + mock_CDF.assert_called_once_with(str(science_path)) mock_read_l2_swapi.assert_called_once_with(mock_CDF.return_value) - mock_proton_temp_from_file.assert_called_once_with(swapi_proton_temp_and_density_calibration_file_name) - mock_alpha_temp_from_file.assert_called_once_with(swapi_alpha_temp_density_calibration_file_name) - mock_clock_angle_from_file.assert_called_once_with(swapi_clock_angle_calibration_table_file_name) - mock_efficiency_lookup_class.assert_called_once_with(swapi_efficiency_calibration_file_name) - mock_geometric_from_file.assert_called_once_with(swapi_geometric_factor_calibration_file_name) - mock_instrument_from_file.assert_called_once_with(swapi_instrument_response_lookup_table_collection) - mock_neutral_helium_from_file.assert_called_once_with(swapi_density_of_neutral_helium_lookup) + mock_efficiency_lookup_class.assert_called_once_with(efficiency_path) + mock_geometric_from_file.assert_called_once_with(geometric_path) + mock_instrument_from_file.assert_called_once_with(instrument_response_path) + mock_neutral_helium_from_file.assert_called_once_with(neutral_helium_path) mock_inflow_vector_from_file.assert_has_calls( - [call(swapi_hydrogen_vector_path), call(swapi_helium_vector_path)]) + [call(hydrogen_vector_path), call(helium_vector_path)]) + mock_swapi_response_from_files.assert_called_once_with( + azimuthal_transmission_path, central_effective_area_path, passband_fit_coefficients_path) + mock_read_mag_rtn_data.assert_called_once_with(mag_path) self.assertEqual(expected_dependencies, actual_dependencies) + + @patch('imap_l3_processing.swapi.l3a.swapi_l3a_dependencies.read_mag_rtn_data') + @patch('imap_l3_processing.swapi.l3a.swapi_l3a_dependencies.SwapiResponse.from_files') + @patch('imap_l3_processing.swapi.l3a.swapi_l3a_dependencies.CDF') + @patch('imap_l3_processing.swapi.l3a.swapi_l3a_dependencies.InflowVector.from_file') + @patch('imap_l3_processing.swapi.l3a.swapi_l3a_dependencies.EfficiencyCalibrationTable') + @patch('imap_l3_processing.swapi.l3a.swapi_l3a_dependencies.GeometricFactorCalibrationTable.from_file') + @patch('imap_l3_processing.swapi.l3a.swapi_l3a_dependencies.InstrumentResponseLookupTableCollection.from_file') + @patch('imap_l3_processing.swapi.l3a.swapi_l3a_dependencies.DensityOfNeutralHeliumLookupTable.from_file') + @patch('imap_l3_processing.swapi.l3a.swapi_l3a_dependencies.read_l2_swapi_data') + def test_from_file_paths_without_mag(self, mock_read_l2_swapi, mock_neutral_helium_from_file, + mock_instrument_from_file, mock_geometric_from_file, + mock_efficiency_lookup_class, mock_inflow_vector_from_file, mock_CDF, + mock_swapi_response_from_files, mock_read_mag_rtn_data): + mock_inflow_vector_from_file.side_effect = [sentinel.hydrogen_vector, sentinel.helium_vector] + + actual = SwapiL3ADependencies.from_file_paths( + Path("science.cdf"), + Path("efficiency.cdf"), + Path("geometric.cdf"), + Path("instrument_response.cdf"), + Path("neutral_helium.cdf"), + Path("h_inflow.dat"), + Path("he_inflow.dat"), + Path("azimuthal_transmission.cdf"), + Path("central_effective_area.cdf"), + Path("passband_fit_coefficients.cdf"), + ) + + self.assertIsNone(actual.mag_data) + self.assertFalse(actual.mag_is_preliminary) + mock_read_mag_rtn_data.assert_not_called() diff --git a/tests/swapi/l3a/test_utils.py b/tests/swapi/l3a/test_utils.py index 86c75a28f..542fc7e9c 100644 --- a/tests/swapi/l3a/test_utils.py +++ b/tests/swapi/l3a/test_utils.py @@ -1,20 +1,36 @@ import os +from datetime import datetime from pathlib import Path from unittest import TestCase import numpy as np +import spacepy.pycdf from spacepy.pycdf import CDF +from uncertainties import UFloat, ufloat +from imap_l3_processing.constants import ( + METERS_PER_KILOMETER, + PROTON_CHARGE_COULOMBS, + PROTON_MASS_KG, +) from imap_l3_processing.swapi.l3a.models import SwapiL2Data -from imap_l3_processing.swapi.l3a.utils import chunk_l2_data, read_l2_swapi_data +from imap_l3_processing.swapi.l3a.utils import ( + calculate_sw_speed, + chunk_l2_data, + get_spacecraft_velocity_rtn, + get_swapi_geometry, + read_l2_swapi_data, + read_mag_rtn_data, + rotate_rtn_to_dps, +) +from tests.spice_test_case import SpiceTestCase -class TestUtils(TestCase): - def tearDown(self) -> None: - if os.path.exists('temp_cdf.cdf'): - os.remove('temp_cdf.cdf') +class TestChunkL2Data(TestCase): + """Tests for `chunk_l2_data`.""" def test_chunk_l2_data(self): + """chunk_l2_data splits a 4-sweep L2 dataset into two 2-sweep chunks, copying epoch, energy, count rate, and uncertainty into each chunk.""" epoch = np.array([0, 1, 2, 3]) energy = np.array([[15000, 16000, 17000, 18000, 19000], [25000, 26000, 27000, 28000, 29000], @@ -54,7 +70,29 @@ def test_chunk_l2_data(self): np.testing.assert_array_equal(expected_count_rate_uncertainty_chunk_2, second_chunk.coincidence_count_rate_uncertainty) + def test_chunk_l2_data_partial_trailing_chunk_is_dropped(self): + """When the sweep count is not a multiple of the chunk size, the trailing partial chunk is dropped rather than yielded short.""" + rates = np.arange(7 * 4, dtype=float).reshape(7, 4) + data = SwapiL2Data( + sci_start_time=np.arange(7, dtype=np.int64), + energy=rates.copy(), + coincidence_count_rate=rates.copy(), + coincidence_count_rate_uncertainty=rates.copy(), + ) + chunks = list(chunk_l2_data(data, 5)) + self.assertEqual(len(chunks), 1) + np.testing.assert_array_equal(chunks[0].sci_start_time, np.arange(5)) + + +class TestReadL2SwapiData(TestCase): + """Tests for `read_l2_swapi_data`.""" + + def tearDown(self) -> None: + if os.path.exists('temp_cdf.cdf'): + os.remove('temp_cdf.cdf') + def test_reading_l2_data_into_model(self): + """read_l2_swapi_data parses a CDF into SwapiL2Data, decoding the start time to TT2000 and replacing each variable's FILLVAL entries with NaN.""" path = Path('temp_cdf.cdf') if path.exists(): os.remove(path) @@ -80,3 +118,145 @@ def test_reading_l2_data_into_model(self): np.testing.assert_array_equal(np.array([5, 6, 7, np.nan]), actual_swapi_l2_data.coincidence_count_rate) np.testing.assert_array_equal(np.array([2, 2, np.nan, 2, 2, 2, 2, 2]), actual_swapi_l2_data.coincidence_count_rate_uncertainty) + + +class TestCalculateSwSpeed(TestCase): + """Tests for `calculate_sw_speed`.""" + + def test_2d_array_matches_analytic_formula_per_element(self): + """calculate_sw_speed on a 2D energy array matches the analytic v = sqrt(2qE/m) (in km/s) element-by-element.""" + E = np.array([[1.0e-16, 2.0e-16], [4.0e-16, 8.0e-16]]) + expected = ( + np.sqrt(2 * E * PROTON_CHARGE_COULOMBS / PROTON_MASS_KG) + / METERS_PER_KILOMETER + ) + result = calculate_sw_speed(PROTON_MASS_KG, PROTON_CHARGE_COULOMBS, E) + np.testing.assert_allclose(result, expected) + + def test_2d_array_input_preserves_shape(self): + """calculate_sw_speed preserves the input array shape (no flattening or broadcasting collapse).""" + E = np.array([[1.0e-16, 2.0e-16], [4.0e-16, 8.0e-16]]) + result = calculate_sw_speed(PROTON_MASS_KG, PROTON_CHARGE_COULOMBS, E) + self.assertEqual(result.shape, E.shape) + + def test_empty_array_input_returns_empty_array(self): + """calculate_sw_speed returns an empty array when given one, without errors.""" + result = calculate_sw_speed( + PROTON_MASS_KG, PROTON_CHARGE_COULOMBS, np.array([]) + ) + self.assertEqual(result.size, 0) + + def test_ufloat_scalar_propagates_uncertainty(self): + """A scalar ufloat energy returns a ufloat speed with uncertainty σ_v = v · σ_E / (2E) per first-order error propagation.""" + E = ufloat(1.0e-16, 1.0e-18) + result = calculate_sw_speed(PROTON_MASS_KG, PROTON_CHARGE_COULOMBS, E) + self.assertIsInstance(result, UFloat) + # σ_v = v · σ_E / (2 E) + expected_nom = ( + np.sqrt(2 * E.nominal_value * PROTON_CHARGE_COULOMBS / PROTON_MASS_KG) + / METERS_PER_KILOMETER + ) + expected_sigma = expected_nom * E.std_dev / (2 * E.nominal_value) + self.assertAlmostEqual(result.nominal_value, expected_nom) + self.assertAlmostEqual(result.std_dev, expected_sigma) + + def test_ufloat_array_input_propagates_uncertainty_per_element(self): + """A numpy array of UFloat energies returns per-element UFloat speeds with each element's own σ_E correctly propagated.""" + E_values = np.array([ufloat(1.0e-16, 1.0e-18), ufloat(4.0e-16, 2.0e-18)]) + result = calculate_sw_speed(PROTON_MASS_KG, PROTON_CHARGE_COULOMBS, E_values) + self.assertEqual(result.shape, E_values.shape) + for r, E in zip(result, E_values): + self.assertIsInstance(r, UFloat) + expected_nom = ( + np.sqrt(2 * E.nominal_value * PROTON_CHARGE_COULOMBS / PROTON_MASS_KG) + / METERS_PER_KILOMETER + ) + self.assertAlmostEqual(r.nominal_value, expected_nom) + self.assertAlmostEqual( + r.std_dev, expected_nom * E.std_dev / (2 * E.nominal_value) + ) + + +class TestReadMagRtnData(TestCase): + """Tests for `read_mag_rtn_data`.""" + + def setUp(self) -> None: + self.cdf_path = Path('temp_mag_cdf.cdf') + if self.cdf_path.exists(): + os.remove(self.cdf_path) + + def tearDown(self) -> None: + if self.cdf_path.exists(): + os.remove(self.cdf_path) + + def test_reads_b_rtn_and_epoch_into_mag_data(self): + """read_mag_rtn_data converts CDF epochs to TT2000 and keeps only the leading three vector components of b_rtn (dropping the magnitude column).""" + epochs = np.array([datetime(2026, 1, 1, 0, 0, 0), + datetime(2026, 1, 1, 0, 0, 1)]) + b_rtn = np.array( + [[1.0, 2.0, 3.0, 0.0], + [4.0, 5.0, 6.0, 0.0]], + ) + cdf = CDF(str(self.cdf_path.with_suffix("")), '') + cdf["epoch"] = epochs + cdf["b_rtn"] = b_rtn + cdf["b_rtn"].attrs["FILLVAL"] = -1e31 + cdf.close() + + result = read_mag_rtn_data(self.cdf_path) + + expected_epoch_tt2000 = spacepy.pycdf.lib.v_datetime_to_tt2000(epochs) + np.testing.assert_array_equal(result.epoch, expected_epoch_tt2000) + np.testing.assert_array_equal( + result.mag_data, np.array([[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]]) + ) + + +class TestSwapiSpiceHelpers(SpiceTestCase): + """Tests for the SPICE helpers `get_swapi_geometry`, `rotate_rtn_to_dps`, and `get_spacecraft_velocity_rtn`.""" + + # 2025-06-06 12:00 UTC — inside the IMAP SPK and attitude coverage windows + # used by the shipped `spice_kernels/` set. + _EPOCH_TT2000_NS = spacepy.pycdf.lib.datetime_to_tt2000( + datetime(2025, 6, 6, 12, 0, 0) + ) + + def test_get_swapi_geometry_returns_orthonormal_rotation_per_time(self): + """get_swapi_geometry returns one proper-orthogonal (right-handed) rotation matrix per input time across a 30 s window.""" + # Three TT2000 ns samples spanning ~30 s. + # IMAP's spin period is 15 s, + # so these should produce distinct rotations. + times = self._EPOCH_TT2000_NS + np.array([0, 10_000_000_000, 20_000_000_000]) + + rotation_matrices = get_swapi_geometry(times) + + self.assertEqual(rotation_matrices.shape, (3, 3, 3)) + for matrix in rotation_matrices: + np.testing.assert_allclose(matrix @ matrix.T, np.eye(3), atol=1e-10) + self.assertAlmostEqual(float(np.linalg.det(matrix)), 1.0, places=10) + + def test_rotate_rtn_to_dps_preserves_vector_magnitude(self): + """rotate_rtn_to_dps applies a pure rotation, so the magnitude of the output vector equals the input magnitude.""" + vector_rtn = np.array([100.0, -50.0, 25.0]) + + rotated = rotate_rtn_to_dps(vector_rtn, self._EPOCH_TT2000_NS) + + self.assertEqual(rotated.shape, (3,)) + self.assertAlmostEqual( + float(np.linalg.norm(rotated)), + float(np.linalg.norm(vector_rtn)), + places=8, + ) + + def test_get_spacecraft_velocity_rtn_returns_finite_orbital_velocity(self): + """get_spacecraft_velocity_rtn returns a finite 3-vector with magnitude in the 10–60 km/s band, ruling out unit-conversion mistakes for IMAP near L1.""" + velocity_rtn = get_spacecraft_velocity_rtn(self._EPOCH_TT2000_NS) + + self.assertEqual(velocity_rtn.shape, (3,)) + self.assertTrue(np.all(np.isfinite(velocity_rtn))) + # IMAP sits near L1; its barycentric speed is dominated by Earth's + # ~30 km/s orbital motion. A loose bound rules out unit-conversion + # mistakes (m/s vs km/s) without pinning a frame-specific value. + speed = float(np.linalg.norm(velocity_rtn)) + self.assertGreater(speed, 10.0) + self.assertLess(speed, 60.0) diff --git a/tests/swapi/response/__init__.py b/tests/swapi/response/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/tests/swapi/response/test_azimuthal_transmission.py b/tests/swapi/response/test_azimuthal_transmission.py new file mode 100644 index 000000000..58d177fbf --- /dev/null +++ b/tests/swapi/response/test_azimuthal_transmission.py @@ -0,0 +1,166 @@ +import unittest + +import numpy as np +import pandas as pd + +from imap_l3_processing.swapi.response.azimuthal_transmission import ( + AzimuthalTransmissionGrid, + interpolate_azimuthal_transmission, +) +from imap_l3_processing.swapi.response.swapi_response import SwapiResponse +from tests.test_helpers import get_test_instrument_team_data_path + +_TRANSMISSION_CSV = get_test_instrument_team_data_path( + "swapi/imap_swapi_azimuthal-transmission_20260425_v001.csv" +) +_SPACING_DEG = SwapiResponse.AZIMUTHAL_TRANSMISSION_SPACING_DEG + + +def _load_real_grid() -> AzimuthalTransmissionGrid: + # Build the grid the same way `SwapiResponse.from_files` does. + df = pd.read_csv(_TRANSMISSION_CSV) + values = df["transmission"].fillna(0).values.astype(float) + return AzimuthalTransmissionGrid(values=values, spacing=_SPACING_DEG) + + +class TestInterpolateAzimuthalTransmission(unittest.TestCase): + """ + `interpolate_azimuthal_transmission` linearly interpolates the azimuthal + transmission curve `T(|az|)` with two cases of special handling: + + (a) the input azimuth is wrapped into (-180°, 180°] before lookup, and + (b) the lookup uses `|az|`, so the curve is implicitly mirrored at zero. + """ + + @classmethod + def setUpClass(cls): + cls.grid = _load_real_grid() + cls.values = cls.grid.values + cls.n = len(cls.values) + cls.last_az = _SPACING_DEG * (cls.n - 1) + + def test_at_grid_point_returns_csv_value(self): + """Exact-index lookups: interpolation weights collapse to 1, so the + result must equal the CSV cell at that index. Sample indices span + the SG attenuated region, the SG/OA shoulder, the OA plateau, and + the zero-padded tail.""" + for idx in [0, 10, 199, 299, 500, 1000, self.n - 1]: + with self.subTest(idx=idx): + az = idx * _SPACING_DEG + got = interpolate_azimuthal_transmission(self.grid, az) + self.assertAlmostEqual(got, float(self.values[idx])) + + def test_linear_interpolation_halfway_between_grid_points(self): + """Halfway between two adjacent CSV rows must equal their average. + Pick a pair on the SG→OA rising shoulder so the two endpoints + differ meaningfully (rather than both sitting on the SG floor).""" + idx = 250 # az ≈ 25°, mid-shoulder + az_lower = idx * _SPACING_DEG + midpoint_az = az_lower + 0.5 * _SPACING_DEG + expected = 0.5 * (self.values[idx] + self.values[idx + 1]) + got = interpolate_azimuthal_transmission(self.grid, midpoint_az) + self.assertAlmostEqual(got, float(expected)) + + def test_linear_interpolation_off_center_between_grid_points(self): + """Off-center fractions exercise the interpolation weights, not just + the symmetric midpoint case: at fraction f between idx and idx+1, the + result must be `(1-f)·v[idx] + f·v[idx+1]`. Pick the same SG→OA + shoulder pair so the endpoints differ meaningfully.""" + idx = 250 # az ≈ 25°, mid-shoulder + az_lower = idx * _SPACING_DEG + for fraction in [0.25, 0.7, 0.9]: + with self.subTest(fraction=fraction): + az = az_lower + fraction * _SPACING_DEG + expected = (1 - fraction) * self.values[idx] + fraction * self.values[idx + 1] + got = interpolate_azimuthal_transmission(self.grid, az) + self.assertAlmostEqual(got, float(expected)) + + def test_symmetric_about_zero(self): + """The lookup uses |az|, so T(-x) must equal T(+x) for any x.""" + for az in [0.37, 12.5, 29.95, 88.123]: + with self.subTest(az=az): + positive = interpolate_azimuthal_transmission(self.grid, az) + negative = interpolate_azimuthal_transmission(self.grid, -az) + self.assertAlmostEqual(positive, negative) + + def test_clamps_at_and_past_the_last_index(self): + """At and past the last stored index, both bracketing neighbors are + clamped to the array end so the result equals the last table value. + Covers three sub-cases that share the same expected outcome: + - exactly on the last index (i_lower = n-1, i_upper = n) + - just past the last index (both indices need clamping) + - near the upper edge of the wrap interval + """ + last_value = float(self.values[-1]) + for label, az in [ + ("exactly on last index", self.last_az), + ("just past last index", self.last_az + 0.07), + ("near upper wrap edge", 179.95), + ]: + with self.subTest(case=label, az=az): + got = interpolate_azimuthal_transmission(self.grid, az) + self.assertEqual(got, last_value) + + def test_wraps_arguments_into_canonical_180_interval(self): + """The wrap formula `(az + 180) % 360 - 180` maps any real azimuth into + (-180°, 180°]. Some particular cases: + - 359° wraps to -1° (|az| = 1°) + - exact ±180° both wrap to 180° + - -181° wraps to +179° (|az| = 179°) + - multi-period inputs (±541°) wrap into the canonical interval + (541 mod 360 = 181 → wraps to -179° → |az| = 179°) + """ + idx_at_1deg = int(round(1.0 / _SPACING_DEG)) + expected_at_1deg = float(self.values[idx_at_1deg]) + last_value = float(self.values[-1]) + idx_at_179deg = int(round(179.0 / _SPACING_DEG)) + expected_at_179deg = float(self.values[idx_at_179deg]) + + for label, az, expected in [ + ("almost full revolution", 359.0, expected_at_1deg), + ("exact +180", 180.0, last_value), + ("exact -180", -180.0, last_value), + ("just past -180", -181.0, expected_at_179deg), + ("multi-period positive", 541.0, expected_at_179deg), + ("multi-period negative", -541.0, expected_at_179deg), + ]: + with self.subTest(case=label, az=az): + got = interpolate_azimuthal_transmission(self.grid, az) + self.assertAlmostEqual(got, expected) + + +class TestInterpolateAzimuthalTransmissionWithShorterGrid(unittest.TestCase): + """`interpolate_azimuthal_transmission` against a synthetic grid that does + not span the full 0-180 deg range, used to exercise the `i_lower >= n` + clamp branch that the production-sized grid cannot reach.""" + + def test_clamps_lower_index_when_past_grid_extent(self): + """When the floor of `|az|/spacing` lands past the last array index, + both bracketing indices clamp to `n-1`. With a tiny synthetic grid + whose extent (3°) is well below the canonical 180° wrap interval, + a wrapped azimuth of 10° drives `i_lower` past the end; the lookup + completes without raising and reads only the final stored value.""" + grid = AzimuthalTransmissionGrid( + values=np.array([0.1, 0.2, 0.3, 0.4]), + spacing=1.0, + ) + # |az| = 10° / spacing 1° = 10, well past last index 3 (n=4). + got = interpolate_azimuthal_transmission(grid, 10.0) + self.assertTrue(np.isfinite(got)) + + +class TestRealGridShape(unittest.TestCase): + """Sanity-check the loaded CSV layout — the interpolator tests above + assume 0.1° spacing and a fixed table length.""" + + def test_csv_layout_matches_production_spacing(self): + grid = _load_real_grid() + self.assertEqual(grid.spacing, 0.1) + # CSV spans 0° to 180° inclusive at 0.1° → 1801 rows. + self.assertEqual(len(grid.values), 1801) + # The SG region is attenuated by ≈1/1000 at az=0. + self.assertAlmostEqual(float(grid.values[0]), 1e-3) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/swapi/response/test_deadtime.py b/tests/swapi/response/test_deadtime.py new file mode 100644 index 000000000..210c1e8c8 --- /dev/null +++ b/tests/swapi/response/test_deadtime.py @@ -0,0 +1,45 @@ +import unittest + +import numpy as np + +from imap_l3_processing.swapi.response.deadtime import ( + SWAPI_DEADTIME_S, + deadtime_factor, +) + + +class TestDeadtimeFactor(unittest.TestCase): + def test_zero_rate_produces_unit_factor(self): + self.assertEqual(deadtime_factor(0.0), 1.0) + + def test_factor_is_bounded_in_unit_interval(self): + # For physical (non-negative) rates the factor must lie in (0, 1]. + for r in [0.0, 1e3, 1e6, 1e9, 1e12]: + f = deadtime_factor(float(r)) + self.assertGreater(f, 0.0) + self.assertLessEqual(f, 1.0) + + def test_factor_is_monotonically_decreasing(self): + # Higher count rates lose more events to deadtime — the factor is a + # strictly decreasing function of rate. Sample across six decades to + # catch any sign or denominator typo. + rates = np.logspace(0, 9, 10) + factors = np.array([deadtime_factor(float(r)) for r in rates]) + self.assertTrue(np.all(np.diff(factors) < 0)) + + def test_226_hz_loss_at_35000_hz_measured_rate(self): + # SWAPI calibration documents that a 35.000 kHz *measured* rate + # corresponds to a 35.226 kHz *true* rate (i.e. ~226 Hz lost to + # deadtime). Source: SWAPI deadtime calibration documentation. + true_rate_hz = 35_226 + measured_rate_hz = true_rate_hz * deadtime_factor(true_rate_hz) + np.testing.assert_allclose(measured_rate_hz, 35_000, rtol=1e-4) + + def test_factor_is_half_when_rate_equals_one_over_tau(self): + # 1 / (1 + tau · (1/tau)) = 1/2. + rate = 1.0 / SWAPI_DEADTIME_S + np.testing.assert_allclose(deadtime_factor(rate), 0.5, rtol=1e-12) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/swapi/response/test_passband_grid.py b/tests/swapi/response/test_passband_grid.py new file mode 100644 index 000000000..32a773757 --- /dev/null +++ b/tests/swapi/response/test_passband_grid.py @@ -0,0 +1,333 @@ +import unittest + +import numpy as np +import pandas as pd + +from imap_l3_processing.swapi.response.passband_grid import ( + _PASSBAND_BOUNDARY_THRESHOLD, + _TARGET_ELEVATIONS, + _TARGET_SPEED_RATIOS, + build_passband_grid, + interpolate_passband, + speed_ratio_range_at_elevation, +) +from imap_l3_processing.swapi.constants import SWAPI_K_FACTOR + + +def _gaussian_values_df( + peak_elevation: float = 0.0, + peak_speed_ratio: float = 1.0, + sigma_el: float = 1.0, + sigma_er: float = 0.1, +): + """Synthetic per-region passband DataFrame indexed by `(energy_ratio, elevation)`, + in the format `build_passband_grid` consumes. A single Gaussian bump centered + at `(peak_elevation, peak_speed_ratio)` lets callers dial peak location and + width to exercise specific branches. The sampling grid is deliberately wider + than the target elevation range and at a different speed-ratio resolution so + that the resampling step in `build_passband_grid` is non-trivial.""" + # Wider elevation range than target (-15..15) with extra rows on either side + # that the resampler must drop. Elevation step matches target so every + # target row finds an exact match in the DF index (the source uses `elev in + # pivot.index`, an equality lookup). + elevations = np.arange(-17.0, 17.0 + 0.5, 0.5) + # Coarser, slightly wider speed-ratio grid than target — the resampler + # interpolates between input nodes onto the denser target axis. + speed_ratios = np.linspace(0.85, 1.15, 41) + peak_er = SWAPI_K_FACTOR * peak_speed_ratio**2 + rows = [ + { + "elevation": float(elev), + "energy_ratio": float(SWAPI_K_FACTOR * sr**2), + "value": float( + # round so that there are true zeros like the real SIMION-derived passband + np.exp( + -((elev - peak_elevation) ** 2) / (2.0 * sigma_el**2) + - ((SWAPI_K_FACTOR * sr**2 - peak_er) ** 2) + / (2.0 * sigma_er**2) + ) + ), + } + for elev in elevations + for sr in speed_ratios + ] + return pd.DataFrame(rows).set_index(["energy_ratio", "elevation"]) + + +def _row_index_for_elevation(grid, elevation: float) -> int: + """Index into `grid.values` for the row at the given target elevation.""" + return int(round((elevation - grid.min_elevation) / grid.elevation_spacing)) + + +class TestBuildPassbandGrid(unittest.TestCase): + """`build_passband_grid` takes a single `(energy_ratio, elevation)`-indexed + DataFrame and returns a `PassbandGrid` containing the resampled value + array, the per-elevation speed-ratio boundaries, and the elevation range.""" + + @classmethod + def setUpClass(cls): + # Default-Gaussian grid shared by tests that just need a generic, well- + # behaved passband. Built once per class because the arrays are read-only + # and the build (~5 ms) is the dominant cost in this test class. + cls.default_grid = build_passband_grid(_gaussian_values_df()) + + def test_output_is_resampled_to_target_axes(self): + """Regardless of the input DataFrame's sampling, the output is resampled + onto the canonical `_TARGET_ELEVATIONS` × `_TARGET_SPEED_RATIOS` grid. + Reconstruct the elevation and speed-ratio axes from `(min, spacing, + shape)` and compare against the target arrays — any mismatch in shape, + origin, or spacing surfaces here.""" + grid = self.default_grid + n_el, n_sr = grid.values.shape + elevations = grid.min_elevation + grid.elevation_spacing * np.arange(n_el) + speed_ratios = grid.min_speed_ratio + grid.speed_ratio_spacing * np.arange(n_sr) + np.testing.assert_allclose(elevations, _TARGET_ELEVATIONS) + np.testing.assert_allclose(speed_ratios, _TARGET_SPEED_RATIOS) + + def test_boundary_marks_cutoff_crossing(self): + """For every row inside the active elevation range, the row's value at + `min_boundary[i]` and `max_boundary[i]` is exactly the cutoff (linear + interpolation along the speed-ratio axis).""" + grid = self.default_grid + cutoff = _PASSBAND_BOUNDARY_THRESHOLD * grid.values.max() + + for i in range(grid.values.shape[0]): + if np.isnan(grid.min_boundary[i]): + continue + with self.subTest(row=i): + np.testing.assert_allclose( + np.interp(grid.min_boundary[i], _TARGET_SPEED_RATIOS, grid.values[i]), + cutoff, + ) + np.testing.assert_allclose( + np.interp(grid.max_boundary[i], _TARGET_SPEED_RATIOS, grid.values[i]), + cutoff, + ) + + def test_elevation_range_brackets_peak(self): + """Two grids built with peaks at different elevations must each have an + elevation range that brackets *its own* peak and excludes the other's.""" + upper_peak = 10.0 + lower_peak = -10.0 + grid_high = build_passband_grid(_gaussian_values_df(peak_elevation=upper_peak)) + grid_low = build_passband_grid(_gaussian_values_df(peak_elevation=lower_peak)) + + high_lo, high_hi = grid_high.elevation_range + low_lo, low_hi = grid_low.elevation_range + + # peak in bounds + self.assertLess(high_lo, upper_peak) + self.assertLess(low_lo, lower_peak) + self.assertGreater(high_hi, upper_peak) + self.assertGreater(low_hi, lower_peak) + + # opposite peak out of either the lower or higher bound + self.assertGreater(high_lo, lower_peak) + self.assertLess(low_hi, upper_peak) + + def test_elevation_range_marks_cutoff_crossing(self): + """Rounding the default Gaussian's tails to exactly zero pushes the + outer rows below the cutoff. The elevation range edges must land + exactly where `row_max` linearly interpolates to the cutoff.""" + df = _gaussian_values_df() + df["value"] = df["value"].round(2) + grid = build_passband_grid(df) + + cutoff = _PASSBAND_BOUNDARY_THRESHOLD * grid.values.max() + row_max = grid.values.max(axis=1) + + lo, hi = grid.elevation_range + np.testing.assert_allclose(np.interp(lo, _TARGET_ELEVATIONS, row_max), cutoff) + np.testing.assert_allclose(np.interp(hi, _TARGET_ELEVATIONS, row_max), cutoff) + # Range strictly tightened from the full target axis. + self.assertGreater(lo, _TARGET_ELEVATIONS[0]) + self.assertLess(hi, _TARGET_ELEVATIONS[-1]) + + def test_grid_is_normalized_so_on_axis_value_is_one(self): + """`build_passband_grid` normalizes the grid so that + `interpolate_passband(grid, 0.0, 1.0) == 1.0`.""" + df = _gaussian_values_df(peak_speed_ratio=1.05, sigma_er=0.05) + grid = build_passband_grid(df) + self.assertAlmostEqual(interpolate_passband(grid, 0.0, 1.0), 1.0) + + def test_speed_ratio_indexing_via_k_factor(self): + """`_build_passband_array` converts `energy_ratio -> speed_ratio` + via `sqrt(energy_ratio/k*)`. Energy ratio refers to E/|V| while speed ratio + refers to v/v_0. v/v_0 = 1 corresponds to E/|V| = k*. + An input whose peak happens to be at energy_ratio = k* + and elevation = 0 (such as the default grid fixture) + must produce a grid peaking at speed_ratio = 1.0.""" + grid = self.default_grid + + row_at_peak_elevation = grid.values[ + _row_index_for_elevation(grid, 0.0) + ] + peak_speed_ratio = _TARGET_SPEED_RATIOS[int(np.argmax(row_at_peak_elevation))] + + self.assertAlmostEqual(peak_speed_ratio, 1.0, places=2) + self.assertGreater(row_at_peak_elevation.max(), 0.5) + + +class TestInterpolatePassband(unittest.TestCase): + """Bilinear interpolation, zero outside the grid.""" + + def setUp(self): + self.grid = build_passband_grid(_gaussian_values_df(sigma_el=2.0)) + + def test_matches_corner_weighted_sum(self): + """`interpolate_passband` returns the bilinear-weighted sum of the four + enclosing corner values.""" + cases = [ + # (elevation, speed_ratio, label) + (0.0, 1.0, "on-node"), + (1.25, 1.005, "cell center"), + (1.1, 1.0014, "off-center"), + ] + for elevation, speed_ratio, label in cases: + with self.subTest(label=label): + i_float = ( + elevation - self.grid.min_elevation + ) / self.grid.elevation_spacing + j_float = ( + speed_ratio - self.grid.min_speed_ratio + ) / self.grid.speed_ratio_spacing + i_lo, j_lo = int(i_float), int(j_float) + i_weight, j_weight = i_float - i_lo, j_float - j_lo + + corners = self.grid.values[ + i_lo : i_lo + 2, j_lo : j_lo + 2 + ] + weights = np.array( + [ + [(1 - i_weight) * (1 - j_weight), (1 - i_weight) * j_weight], + [i_weight * (1 - j_weight), i_weight * j_weight], + ] + ) + expected = float((corners * weights).sum()) + + np.testing.assert_allclose( + interpolate_passband(self.grid, elevation, speed_ratio), + expected, + rtol=1e-12, + ) + + def test_returns_zero_outside_grid_in_either_axis(self): + """Out-of-bounds query in either axis returns 0.0.""" + for el, sr, label in [ + (-100.0, 1.0, "below elevation"), + (100.0, 1.0, "above elevation"), + (0.0, 0.5, "below speed_ratio"), + (0.0, 1.5, "above speed_ratio"), + ]: + with self.subTest(label=label): + self.assertEqual(interpolate_passband(self.grid, el, sr), 0.0) + + +class TestSpeedRatioRangeAtElevation(unittest.TestCase): + """`speed_ratio_range_at_elevation` returns the per-elevation min/max + speed-ratio bounds, reading from the grid's `min_boundary` and + `max_boundary` arrays.""" + + def setUp(self): + self.grid = build_passband_grid(_gaussian_values_df(peak_elevation=2.5)) + + def test_returns_cutoff_crossing_for_on_grid_elevation(self): + """At each on-grid elevation in the active range, the returned (lo, hi) + lands near where the passband crosses the cutoff along the speed-ratio + axis.""" + grid = build_passband_grid(_gaussian_values_df()) + cutoff = _PASSBAND_BOUNDARY_THRESHOLD * grid.values.max() + active_lo, active_hi = grid.elevation_range + for elevation in np.linspace(active_lo, active_hi, 5): + with self.subTest(elevation=elevation): + lo, hi = speed_ratio_range_at_elevation(grid, float(elevation)) + row = grid.values[_row_index_for_elevation(grid, float(elevation))] + self.assertAlmostEqual( + np.interp(lo, _TARGET_SPEED_RATIOS, row), cutoff, places=2 + ) + self.assertAlmostEqual( + np.interp(hi, _TARGET_SPEED_RATIOS, row), cutoff, places=2 + ) + + def test_returns_union_of_bracketing_rows_for_off_grid_elevation(self): + """For an elevation between two grid rows, the returned (lo, hi) + spans the union of the two rows' speed-ratio bounds.""" + lower_elevation = 0.0 + upper_elevation = 0.5 + between_elevation = 0.25 + lower_row = _row_index_for_elevation(self.grid, lower_elevation) + upper_row = _row_index_for_elevation(self.grid, upper_elevation) + expected_lo = min( + self.grid.min_boundary[lower_row], self.grid.min_boundary[upper_row] + ) + expected_hi = max( + self.grid.max_boundary[lower_row], self.grid.max_boundary[upper_row] + ) + lo, hi = speed_ratio_range_at_elevation(self.grid, between_elevation) + self.assertAlmostEqual(lo, expected_lo) + self.assertAlmostEqual(hi, expected_hi) + + def test_min_is_no_greater_than_max(self): + """min <= max at every elevation inside the active range.""" + active_lo, active_hi = self.grid.elevation_range + for elevation in np.linspace(active_lo, active_hi, 7): + with self.subTest(elevation=elevation): + lower, upper = speed_ratio_range_at_elevation( + self.grid, float(elevation) + ) + self.assertLessEqual(lower, upper) + + def test_nan_row_handling_at_active_range_edges(self): + """Outside the active passband the boundary arrays carry NaN. When the + elevation lookup brackets a NaN row, behavior depends on how many of + the two bracketing rows are NaN: + + - both NaN -> raises ValueError (caller failed to gate on the + active elevation range) + - exactly one NaN -> returns the valid row's bounds + + Both branches must be exercised at the top edge of the active range + and at the bottom edge, where the asymmetric clamp gives + (lower_row, upper_row) = (last, last) vs (0, 1) respectively. + """ + grid = build_passband_grid(_gaussian_values_df()) + + valid_rows = np.where(~np.isnan(grid.min_boundary))[0] + first_valid = int(valid_rows[0]) + last_valid = int(valid_rows[-1]) + n_rows = grid.min_boundary.shape[0] + # Sanity: the bottom-edge "both NaN" case needs rows 0 and 1 both NaN, + # i.e. the active range must start at row 2 or later. The top-edge + # case only needs the final row to be NaN. + self.assertGreater(first_valid, 1) + self.assertLess(last_valid, n_rows - 1) + + spacing = grid.elevation_spacing + min_el = grid.min_elevation + + upper_edge_one_nan = min_el + spacing * (last_valid + 0.5) + lower_edge_one_nan = min_el + spacing * (first_valid - 0.5) + past_upper_edge = min_el + spacing * n_rows + 100.0 + past_lower_edge = min_el - 100.0 + + with self.subTest(case="both NaN past upper edge"): + with self.assertRaises(ValueError): + speed_ratio_range_at_elevation(grid, float(past_upper_edge)) + + with self.subTest(case="both NaN past lower edge"): + with self.assertRaises(ValueError): + speed_ratio_range_at_elevation(grid, float(past_lower_edge)) + + with self.subTest(case="only upper row NaN at top of active range"): + lo, hi = speed_ratio_range_at_elevation(grid, float(upper_edge_one_nan)) + self.assertAlmostEqual(lo, float(grid.min_boundary[last_valid])) + self.assertAlmostEqual(hi, float(grid.max_boundary[last_valid])) + + with self.subTest(case="only lower row NaN at bottom of active range"): + lo, hi = speed_ratio_range_at_elevation(grid, float(lower_edge_one_nan)) + self.assertAlmostEqual(lo, float(grid.min_boundary[first_valid])) + self.assertAlmostEqual(hi, float(grid.max_boundary[first_valid])) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/swapi/response/test_swapi_response.py b/tests/swapi/response/test_swapi_response.py new file mode 100644 index 000000000..777ee5ea0 --- /dev/null +++ b/tests/swapi/response/test_swapi_response.py @@ -0,0 +1,245 @@ +import unittest + +import numpy as np +import numpy.testing as npt + +from imap_l3_processing.constants import ( + ALPHA_MASS_PER_CHARGE_M_P_PER_E, + METERS_PER_KILOMETER, + PROTON_CHARGE_COULOMBS, + PROTON_MASS_KG, +) +from imap_l3_processing.swapi.constants import SWAPI_K_FACTOR +from imap_l3_processing.swapi.response.swapi_response import ( + ResponseGrid, + SwapiResponse, +) +from tests.test_helpers import get_test_instrument_team_data_path + +ESA_VOLTAGE_FOR_1KEV_PROTON = 1000.0 / SWAPI_K_FACTOR +ESA_VOLTAGE_FOR_2KEV_PROTON = 2000.0 / SWAPI_K_FACTOR + +def _load_response() -> SwapiResponse: + return SwapiResponse.from_files( + get_test_instrument_team_data_path( + "swapi/imap_swapi_azimuthal-transmission_20260425_v001.csv" + ), + get_test_instrument_team_data_path( + "swapi/imap_swapi_central-effective-area_20260425_v001.csv" + ), + get_test_instrument_team_data_path( + "swapi/imap_swapi_passband-fit-coefficients_20260425_v001.csv" + ), + ) + + +class _RealResponseFixture(unittest.TestCase): + """Base class loading a single shared `SwapiResponse` once per class.""" + + @classmethod + def setUpClass(cls): + cls.response = _load_response() + + +class TestWarmCacheApi(unittest.TestCase): + """Input-handling contract of `warm_cache`: dedup, NaN/inf skip, dimensionality, + determinism. Each test mutates the response's `_grid_cache`, so a fresh + instance is built per test.""" + + def setUp(self): + self.response = _load_response() + + def test_populates_cache_with_unique_finite_voltages(self): + """Duplicates collapse, NaN/inf are skipped.""" + voltages = np.array([100.0, 100.0, 200.0, 300.0, np.nan, np.inf]) + self.response.warm_cache(voltages) + self.assertEqual(set(self.response._passband_grid_cache.keys()), {100.0, 200.0, 300.0}) + self.assertEqual(len(self.response._passband_grid_cache), 3) + + def test_warming_twice_at_same_voltage_is_a_noop(self): + """A second `warm_cache` at the same voltage keeps the existing + PassbandGrid objects — it does not rebuild them.""" + self.response.warm_cache([750.0]) + first_grids = { + region: self.response._passband_grid_cache[750.0][region] for region in ("SG", "OA") + } + self.response.warm_cache([750.0]) + + for region in ("SG", "OA"): + with self.subTest(region=region): + self.assertIs(self.response._passband_grid_cache[750.0][region], first_grids[region]) + + def test_accepts_2d_voltage_array(self): + """Multidimensional voltage inputs are flattened.""" + voltages = np.array([[100.0, 200.0], [200.0, 300.0]]) + self.response.warm_cache(voltages) + self.assertEqual(set(self.response._passband_grid_cache.keys()), {100.0, 200.0, 300.0}) + + +class TestPassbandInterpolation(_RealResponseFixture): + """Cover `_get_passband_values`: in-range it must evaluate + `exp(polyval(coeffs_row, log(SWAPI_K_FACTOR * V)))` with coefficients read + along the column axis (highest degree first); outside the per-region + calibration window the voltage is clamped before evaluation, which keeps + values physical (non-negative, near unity) even when the raw polynomial + extrapolation would diverge.""" + + # Upper bound > 1.0 because the polynomial is fit to *un-normalized* + # response data; normalization happens elsewhere. The fit can produce + # values slightly above 1.0 at evaluation points between the fit nodes. + PASSBAND_VALUE_UPPER_BOUND = 1.5 + + def test_values_match_manual_polyval(self): + for region in ("OA", "SG"): + with self.subTest(region=region): + v_min, v_max = self.response._passband_esa_voltage_limits[region] + voltage = 0.5 * (v_min + v_max) + + returned = self.response._get_passband_values(voltage, region) + + coeffs = self.response._passband_fit_coefficients.xs( + region, level="region" + ) + log_beam_energy = np.log(SWAPI_K_FACTOR * voltage) + n_degrees = coeffs.shape[1] + degrees = np.arange(n_degrees - 1, -1, -1) + expected_exponent = (coeffs.values * log_beam_energy ** degrees).sum( + axis=1 + ) + expected = np.exp(expected_exponent) + + npt.assert_allclose( + returned["value"].to_numpy(), expected, rtol=1e-12 + ) + + def _assert_grid_value_bounds(self, esa_voltage): + self.response.warm_cache([esa_voltage]) + cached = self.response._passband_grid_cache[self.response._cache_key(esa_voltage)] + for region in ("SG", "OA"): + grid = cached[region] + self.assertGreaterEqual( + grid.values.min(), + 0.0, + msg=f"{region} passband has negative values at {esa_voltage} V", + ) + self.assertLessEqual( + grid.values.max(), + self.PASSBAND_VALUE_UPPER_BOUND, + msg=f"{region} passband exceeds bound at {esa_voltage} V", + ) + + def test_passband_grid_bounds_at_low_voltage(self): + self._assert_grid_value_bounds(50.0) + + def test_passband_grid_bounds_at_high_voltage(self): + self._assert_grid_value_bounds(20000.0) + + +class TestCreateResponseGrid(unittest.TestCase): + """`create_response_grid` bundles the `PassbandGrid` with additional + quantities (central speed and central effective area) into a `ResponseGrid` + for the integrator. It caches by `(voltage, species, ea_scale)`.""" + + def setUp(self): + self.response = _load_response() + self.voltage = ESA_VOLTAGE_FOR_1KEV_PROTON + self.response.warm_cache([self.voltage]) + + def test_raises_keyerror_when_voltage_not_warmed(self): + """`get_response_grid` requires a prior `warm_cache` at the same V; the + error message must name the voltage and the missing call so a caller + can recover without reading the source.""" + fresh = _load_response() + unwarmed_voltage = 12345.0 + with self.assertRaises(KeyError) as ctx: + fresh.get_response_grid(unwarmed_voltage, 1.0) + message = str(ctx.exception) + self.assertIn(str(unwarmed_voltage), message) + self.assertIn("warm_cache", message) + + def test_sg_and_oa_passband_fields_share_identity_with_cached_grids(self): + rg = self.response.get_response_grid(self.voltage, 1.0) + cached = self.response._passband_grid_cache[self.response._cache_key(self.voltage)] + self.assertIs(rg.sg_passband, cached["SG"]) + self.assertIs(rg.oa_passband, cached["OA"]) + + def test_central_speed_field_matches_proton_speed_formula(self): + # v = sqrt(2 · K · e · |V| / m_p), expressed in km/s. + expected_speed_km_s = ( + np.sqrt( + 2 * SWAPI_K_FACTOR * PROTON_CHARGE_COULOMBS + * abs(self.voltage) / PROTON_MASS_KG + ) + / METERS_PER_KILOMETER + ) + rg = self.response.get_response_grid(self.voltage, 1.0) + npt.assert_allclose(rg.central_speed, expected_speed_km_s, rtol=1e-12) + + def test_central_effective_area_field_matches_csv_at_1kev_proton(self): + # Effective area at 1 keV proton ESA voltage from the CSV + # `imap_swapi_central-effective-area_20260425_v001.csv` is 0.38 cm^2. + rg = self.response.get_response_grid(self.voltage, 1.0) + npt.assert_approx_equal(rg.central_effective_area, 0.38, significant=3) + + def test_azimuthal_transmission_grid_pass_through(self): + rg = self.response.get_response_grid(self.voltage, 1.0) + npt.assert_array_equal( + rg.azimuthal_transmission.values, self.response._azimuthal_transmission + ) + self.assertEqual( + rg.azimuthal_transmission.spacing, + self.response.AZIMUTHAL_TRANSMISSION_SPACING_DEG, + ) + + def test_effective_area_scale_multiplies_central_effective_area(self): + """`central_effective_area_scale` is the species-specific efficiency + multiplier (e.g. alpha vs. proton CEM efficiency).""" + rg_unscaled = self.response.get_response_grid(self.voltage, 1.0) + rg_scaled = self.response.get_response_grid( + self.voltage, 1.0, central_effective_area_scale=0.42 + ) + npt.assert_allclose( + rg_scaled.central_effective_area, + rg_unscaled.central_effective_area * 0.42, + ) + + def test_central_speed_depends_on_species(self): + """Different mass-per-charge → different central speed in the same grid. + Reference values computed independently from CODATA constants at + V = 1000/K (so K·e·V = 1 keV per unit charge): + v_p = sqrt(2 · 1 keV · e / m_p) / 1e3 km/s + v_α = sqrt(2 · 1 keV · 2e / m_α) / 1e3 km/s + with m_p = 1.67262192595e-27 kg, m_α = 6.6446573450e-27 kg, + e = 1.602176634e-19 C.""" + rg_proton = self.response.get_response_grid(self.voltage, 1.0) + rg_alpha = self.response.get_response_grid( + self.voltage, ALPHA_MASS_PER_CHARGE_M_P_PER_E + ) + npt.assert_allclose(rg_proton.central_speed, 437.6947142244463, rtol=1e-12) + npt.assert_allclose(rg_alpha.central_speed, 310.5624166704235, rtol=1e-12) + + def test_repeat_call_returns_cached_object(self): + """Regression: the cache key was previously a generator expression, so + every lookup missed and the dict grew unboundedly. Repeated calls at + the same args must return the *same object*, and the cache must not + grow.""" + rg1 = self.response.get_response_grid(self.voltage, 1.0) + rg2 = self.response.get_response_grid(self.voltage, 1.0) + self.assertIs(rg1, rg2) + self.assertEqual(len(self.response._response_grid_cache), 1) + + def test_cache_is_keyed_on_all_three_arguments(self): + """A different value in any of (voltage, species, ea_scale) + must produce a distinct cache entry.""" + rg_proton = self.response.get_response_grid(self.voltage, 1.0) + rg_alpha = self.response.get_response_grid(self.voltage, 2.0) + rg_scaled = self.response.get_response_grid( + self.voltage, 1.0, central_effective_area_scale=0.5 + ) + self.assertIsNot(rg_proton, rg_alpha) + self.assertIsNot(rg_proton, rg_scaled) + self.assertEqual(len(self.response._response_grid_cache), 3) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/swapi/test_constants.py b/tests/swapi/test_constants.py new file mode 100644 index 000000000..29f4f87d5 --- /dev/null +++ b/tests/swapi/test_constants.py @@ -0,0 +1,44 @@ +import unittest + +from imap_l3_processing.swapi.constants import ( + SWAPI_COARSE_SWEEP_BINS, + SWAPI_DISCARDED_BIN, + SWAPI_FINE_SWEEP_BINS, + SWAPI_K_FACTOR, + SWAPI_L2_K_FACTOR, + SWAPI_SCIENCE_BINS, +) + + +class TestConstants(unittest.TestCase): + """Just because they're so subtly tricky...""" + + def test_discarded_bin_is_zero(self): + self.assertEqual(SWAPI_DISCARDED_BIN, 0) + + def test_science_bins_excludes_discarded_bin(self): + self.assertEqual(SWAPI_SCIENCE_BINS, slice(1, 72)) + + def test_coarse_and_fine_partition_science_bins(self): + # Coarse and fine bin slices must tile the science range with no overlap and no gap. + self.assertEqual(SWAPI_COARSE_SWEEP_BINS.start, SWAPI_SCIENCE_BINS.start) + self.assertEqual(SWAPI_COARSE_SWEEP_BINS.stop, SWAPI_FINE_SWEEP_BINS.start) + self.assertEqual(SWAPI_FINE_SWEEP_BINS.stop, SWAPI_SCIENCE_BINS.stop) + + def test_coarse_sweep_has_62_bins_and_fine_has_9(self): + self.assertEqual( + SWAPI_COARSE_SWEEP_BINS.stop - SWAPI_COARSE_SWEEP_BINS.start, 62 + ) + self.assertEqual(SWAPI_FINE_SWEEP_BINS.stop - SWAPI_FINE_SWEEP_BINS.start, 9) + + def test_simion_k_factor(self): + self.assertAlmostEqual(SWAPI_K_FACTOR, 1.89) + + def test_l2_label_k_factor_differs_from_simion(self): + # L2 esa_energy = SWAPI_L2_K_FACTOR × |V|, divided out by L3 to recover voltage. + self.assertAlmostEqual(SWAPI_L2_K_FACTOR, 1.93) + self.assertNotAlmostEqual(SWAPI_K_FACTOR, SWAPI_L2_K_FACTOR) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/swapi/test_swapi_processor.py b/tests/swapi/test_swapi_processor.py index 1568cbba6..91735738f 100644 --- a/tests/swapi/test_swapi_processor.py +++ b/tests/swapi/test_swapi_processor.py @@ -6,24 +6,20 @@ import numpy as np from imap_data_access import config from imap_data_access.processing_input import ProcessingInputCollection, ScienceInput, AncillaryInput -from uncertainties import ufloat from uncertainties.unumpy import uarray, nominal_values, std_devs from imap_l3_processing.constants import THIRTY_SECONDS_IN_NANOSECONDS, \ FIVE_MINUTES_IN_NANOSECONDS from imap_l3_processing.models import InputMetadata -from imap_l3_processing.swapi.descriptors import PROTON_TEMPERATURE_DENSITY_LOOKUP_TABLE_DESCRIPTOR, \ - DENSITY_OF_NEUTRAL_HELIUM_DESCRIPTOR, INSTRUMENT_RESPONSE_LOOKUP_TABLE_DESCRIPTOR, \ - EFFICIENCY_LOOKUP_TABLE_DESCRIPTOR, \ - CLOCK_ANGLE_AND_FLOW_DEFLECTION_LOOKUP_TABLE_DESCRIPTOR, ALPHA_TEMPERATURE_DENSITY_LOOKUP_TABLE_DESCRIPTOR, \ - GEOMETRIC_FACTOR_SW_LOOKUP_TABLE_DESCRIPTOR, GEOMETRIC_FACTOR_PUI_LOOKUP_TABLE_DESCRIPTOR -from imap_l3_processing.swapi.l3a.models import SwapiL2Data, SwapiL3ProtonSolarWindData, SwapiL3PickupIonData, \ - SwapiL3AlphaSolarWindData -from imap_l3_processing.swapi.l3a.science.calculate_alpha_solar_wind_temperature_and_density import \ - AlphaSolarWindTemperatureAndDensity +from imap_l3_processing.swapi.descriptors import DENSITY_OF_NEUTRAL_HELIUM_DESCRIPTOR, \ + INSTRUMENT_RESPONSE_LOOKUP_TABLE_DESCRIPTOR, EFFICIENCY_LOOKUP_TABLE_DESCRIPTOR, \ + ALPHA_TEMPERATURE_DENSITY_LOOKUP_TABLE_DESCRIPTOR, \ + GEOMETRIC_FACTOR_SW_LOOKUP_TABLE_DESCRIPTOR, GEOMETRIC_FACTOR_PUI_LOOKUP_TABLE_DESCRIPTOR, \ + HYDROGEN_INFLOW_VECTOR_DESCRIPTOR, HELIUM_INFLOW_VECTOR_DESCRIPTOR, \ + AZIMUTHAL_TRANSMISSION_DESCRIPTOR, CENTRAL_EFFECTIVE_AREA_DESCRIPTOR, \ + PASSBAND_FIT_COEFFICIENTS_DESCRIPTOR +from imap_l3_processing.swapi.l3a.models import SwapiL2Data, SwapiL3PickupIonData from imap_l3_processing.swapi.l3a.science.calculate_pickup_ion import FittingParameters -from imap_l3_processing.swapi.l3a.science.calculate_proton_solar_wind_temperature_and_density import \ - ProtonSolarWindTemperatureAndDensity from imap_l3_processing.swapi.l3a.swapi_l3a_dependencies import SWAPI_L2_DESCRIPTOR, SwapiL3ADependencies from imap_l3_processing.swapi.l3b.science.calculate_solar_wind_vdf import DeltaMinusPlus from imap_l3_processing.swapi.quality_flags import SwapiL3Flags @@ -35,21 +31,21 @@ class TestSwapiProcessor(TestCase): @patch('imap_l3_processing.swapi.swapi_processor.SwapiL3PickupIonData') @patch('imap_l3_processing.utils.write_cdf') @patch('imap_l3_processing.swapi.swapi_processor.chunk_l2_data') - @patch('imap_l3_processing.swapi.swapi_processor.calculate_proton_solar_wind_speed') - @patch('imap_l3_processing.swapi.swapi_processor.calculate_clock_angle') - @patch('imap_l3_processing.swapi.swapi_processor.calculate_deflection_angle') + @patch('imap_l3_processing.swapi.swapi_processor.ParallelChunkRunner') @patch('imap_l3_processing.swapi.swapi_processor.SwapiL3ADependencies') @patch('imap_l3_processing.swapi.swapi_processor.calculate_pickup_ion_values') @patch('imap_l3_processing.swapi.swapi_processor.calculate_ten_minute_velocities') + @patch('imap_l3_processing.swapi.swapi_processor.rotate_rtn_to_dps') @patch('imap_l3_processing.swapi.swapi_processor.calculate_helium_pui_density') @patch('imap_l3_processing.swapi.swapi_processor.calculate_helium_pui_temperature') @patch('imap_l3_processing.processor.spiceypy') def test_process_l3a_pui(self, mock_spicepy, mock_calculate_helium_pui_temperature, mock_calculate_helium_pui_density, + mock_rotate_rtn_to_dps, mock_calculate_ten_minute_velocities, mock_calculate_pickup_ion, - mock_swapi_l3_dependencies_class, mock_calculate_deflection_angle, - mock_calculate_clock_angle, - mock_calculate_proton_solar_wind_speed, mock_chunk_l2_data, mock_write_cdf, + mock_swapi_l3_dependencies_class, + mock_parallel_chunk_runner_class, + mock_chunk_l2_data, mock_write_cdf, mock_pickup_ion_data_constructor, mock_imap_attribute_manager): instrument = 'swapi' incoming_data_level = 'l2' @@ -64,17 +60,16 @@ def test_process_l3a_pui(self, mock_spicepy, mock_calculate_helium_pui_temperatu mock_spicepy.ktotal.return_value = 0 - proton_sw_speed_fit_chisq = 9 - - returned_proton_sw_speed = ufloat(400000, 2) - mock_calculate_proton_solar_wind_speed.return_value = ( - returned_proton_sw_speed, sentinel.a, sentinel.phi, sentinel.b, proton_sw_speed_fit_chisq) - - returned_proton_sw_clock_angle = ufloat(200, 0.25) - mock_calculate_clock_angle.return_value = returned_proton_sw_clock_angle - - returned_proton_sw_deflection_angle = ufloat(5, 0.001) - mock_calculate_deflection_angle.return_value = returned_proton_sw_deflection_angle + returned_chunk_epoch = 10 + THIRTY_SECONDS_IN_NANOSECONDS + returned_bulk_velocity_rtn_sc = np.array([370.0, 10.0, 5.0]) + rotated_velocity_dps = np.array([330.0, 12.0, 4.0]) + runner_result = dict( + epoch=np.array([returned_chunk_epoch]), + proton_sw_bulk_velocity_rtn_sc=np.array([returned_bulk_velocity_rtn_sc]), + quality_flags=np.array([SwapiL3Flags.NONE]), + ) + mock_parallel_chunk_runner_class.return_value.run.return_value = runner_result + mock_rotate_rtn_to_dps.return_value = rotated_velocity_dps initial_epoch = 10 @@ -103,9 +98,7 @@ def test_process_l3a_pui(self, mock_spicepy, mock_calculate_helium_pui_temperatu input_file_names = [ f'imap_{instrument}_{incoming_data_level}_{SWAPI_L2_DESCRIPTOR}_{dependency_start_date}_{version}.cdf', - f'imap_{instrument}_{PROTON_TEMPERATURE_DENSITY_LOOKUP_TABLE_DESCRIPTOR}_{dependency_start_date}_{version}.cdf', f'imap_{instrument}_{ALPHA_TEMPERATURE_DENSITY_LOOKUP_TABLE_DESCRIPTOR}_{dependency_start_date}_{version}.cdf', - f'imap_{instrument}_{CLOCK_ANGLE_AND_FLOW_DEFLECTION_LOOKUP_TABLE_DESCRIPTOR}_{dependency_start_date}_{version}.cdf', f'imap_{instrument}_{GEOMETRIC_FACTOR_PUI_LOOKUP_TABLE_DESCRIPTOR}_{dependency_start_date}_{version}.cdf', f'imap_{instrument}_{INSTRUMENT_RESPONSE_LOOKUP_TABLE_DESCRIPTOR}_{dependency_start_date}_{version}.cdf', f'imap_{instrument}_{DENSITY_OF_NEUTRAL_HELIUM_DESCRIPTOR}_{dependency_start_date}_{version}.cdf', @@ -132,7 +125,7 @@ def test_process_l3a_pui(self, mock_spicepy, mock_calculate_helium_pui_temperatu ] mock_l3a_dependencies = mock_swapi_l3_dependencies_class.fetch_dependencies.return_value - mock_l3a_dependencies.data = sentinel.swapi_l2_data + mock_l3a_dependencies.data = Mock(energy=energy) mock_manager = mock_imap_attribute_manager.return_value @@ -154,8 +147,8 @@ def test_process_l3a_pui(self, mock_spicepy, mock_calculate_helium_pui_temperatu mock_chunk_l2_data.side_effect = [] - mock_chunk_l2_data.assert_has_calls([call(sentinel.swapi_l2_data, 5), - call(sentinel.swapi_l2_data, 50)]) + mock_chunk_l2_data.assert_has_calls([call(mock_l3a_dependencies.data, 5), + call(mock_l3a_dependencies.data, 50)]) instrument_response_lut, geometric_factor_lut, energies, count_rates, pui_epoch, \ sw_velocity_vector, density_of_neutral_helium_lut, efficiency_lut, hydrogen_inflow_vector, helium_inflow_vector = mock_calculate_pickup_ion.call_args.args @@ -187,10 +180,14 @@ def test_process_l3a_pui(self, mock_spicepy, mock_calculate_helium_pui_temperatu self.assertEqual(expected_fitting_params, passed_in_fitting_params) self.assertEqual(mock_helium_inflow_vector, helium_inflow_vector) - mock_calculate_ten_minute_velocities.assert_called_with([returned_proton_sw_speed.nominal_value], - [returned_proton_sw_deflection_angle.nominal_value], - [returned_proton_sw_clock_angle.nominal_value], - np.array([SwapiL3Flags.NONE])) + mock_rotate_rtn_to_dps.assert_called_once() + rotate_args = mock_rotate_rtn_to_dps.call_args.args + np.testing.assert_array_equal(rotate_args[0], returned_bulk_velocity_rtn_sc) + self.assertEqual(rotate_args[1], returned_chunk_epoch) + + ten_min_args = mock_calculate_ten_minute_velocities.call_args.args + np.testing.assert_array_equal(ten_min_args[0], np.array([rotated_velocity_dps])) + self.assertEqual(ten_min_args[1], [SwapiL3Flags.NONE]) mock_manager.add_global_attribute.assert_has_calls([call("Data_version", outgoing_version), call("Generation_date", date.today().strftime("%Y%m%d")), @@ -219,230 +216,70 @@ def test_process_l3a_pui(self, mock_spicepy, mock_calculate_helium_pui_temperatu mock_write_cdf.assert_called_once_with(str(expected_cdf_path), pickup_ion_data, mock_manager) self.assertEqual([expected_cdf_path], product) - @patch('imap_l3_processing.utils.ImapAttributeManager') - @patch('imap_l3_processing.swapi.swapi_processor.SwapiL3PickupIonData') - @patch('imap_l3_processing.utils.write_cdf') - @patch('imap_l3_processing.swapi.swapi_processor.chunk_l2_data') - @patch('imap_l3_processing.swapi.swapi_processor.calculate_proton_solar_wind_speed') - @patch('imap_l3_processing.swapi.swapi_processor.estimate_deflection_and_clock_angles') - @patch('imap_l3_processing.swapi.swapi_processor.SwapiL3ADependencies') + @patch('imap_l3_processing.swapi.swapi_processor.calculate_helium_pui_temperature') + @patch('imap_l3_processing.swapi.swapi_processor.calculate_helium_pui_density') @patch('imap_l3_processing.swapi.swapi_processor.calculate_pickup_ion_values') @patch('imap_l3_processing.swapi.swapi_processor.calculate_ten_minute_velocities') - @patch('imap_l3_processing.swapi.swapi_processor.calculate_helium_pui_density') - @patch('imap_l3_processing.swapi.swapi_processor.calculate_helium_pui_temperature') - @patch('imap_l3_processing.processor.spiceypy') - def test_process_l3a_pui_proton_sw_fit_chisq_too_large_with_pui_quality_flags(self, mock_spicepy, - mock_calculate_helium_pui_temperature, - mock_calculate_helium_pui_density, - mock_calculate_ten_minute_velocities, - mock_calculate_pickup_ion, - mock_swapi_l3_dependencies_class, - mock_estimate_deflection_and_clock_angles, - mock_calculate_proton_solar_wind_speed, - mock_chunk_l2_data, - mock_write_cdf, - mock_pickup_ion_data_constructor, - mock_imap_attribute_manager): - instrument = 'swapi' - incoming_data_level = 'l2' - dependency_start_date = datetime.strftime(datetime(2025, 1, 1), "%Y%m%d") - version = 'v001' - end_date = datetime(2025, 9, 26) - outgoing_data_level = "l3a" - start_date = datetime(2025, 9, 25) - input_version = "v123" - outgoing_version = "123" - start_date_as_str = datetime.strftime(start_date, "%Y%m%d") - - mock_spicepy.ktotal.return_value = 0 - - proton_sw_speed_fit_chisq = 11 - - returned_proton_sw_speed = ufloat(400000, 2) - mock_calculate_proton_solar_wind_speed.return_value = ( - returned_proton_sw_speed, sentinel.a, sentinel.phi, sentinel.b, proton_sw_speed_fit_chisq) - - returned_proton_sw_clock_angle = 200 - returned_proton_sw_deflection_angle = 5 - - mock_estimate_deflection_and_clock_angles.return_value = \ - (returned_proton_sw_deflection_angle, returned_proton_sw_clock_angle) - + @patch('imap_l3_processing.swapi.swapi_processor.ParallelChunkRunner') + def test_process_l3a_pui_combines_proton_and_pui_quality_flags(self, + mock_parallel_chunk_runner_class, + mock_calculate_ten_minute_velocities, + mock_calculate_pickup_ion, + mock_calculate_helium_pui_density, + mock_calculate_helium_pui_temperature): initial_epoch = 10 - - epoch = np.array([initial_epoch, 11, 12, 13]) - epoch_for_fifty_sweeps = np.arange(initial_epoch, 50) - energy = np.array([15000, 16000, 17000, 18000, 19000]) - coincidence_count_rate = np.array( - [[4, 5, 6, 7, 8], [9, 10, 11, 12, 13], [14, 15, 16, 17, 18], [19, 20, 21, 22, 23]]) - coincidence_count_rate_uncertainty = np.array( - [[0.1, 0.2, 0.3, 0.4, 0.5], [0.1, 0.2, 0.3, 0.4, 0.5], [0.1, 0.2, 0.3, 0.4, 0.5], - [0.1, 0.2, 0.3, 0.4, 0.5]]) - - chunk_of_five = SwapiL2Data(epoch, energy, coincidence_count_rate, - coincidence_count_rate_uncertainty) - chunk_of_fifty = SwapiL2Data(epoch_for_fifty_sweeps, energy * 2, coincidence_count_rate * 2, - coincidence_count_rate_uncertainty * 2) - - expected_fitting_params = FittingParameters(1, 2, 3, 4, SwapiL3Flags.HI_CHI_SQ) - mock_calculate_pickup_ion.return_value = expected_fitting_params + epoch = np.arange(initial_epoch, initial_epoch + 50) + energy = np.tile(np.array([15000, 16000, 17000, 18000, 19000]), (50, 1)) + coincidence_count_rate = np.full((50, 5), 5.0) + coincidence_count_rate_uncertainty = np.full((50, 5), 0.1) + chunk_of_fifty = SwapiL2Data(epoch, energy, coincidence_count_rate, + coincidence_count_rate_uncertainty) + + runner_quality_flag = SwapiL3Flags.FIT_ERROR + mock_parallel_chunk_runner_class.return_value.run.return_value = dict( + epoch=np.array([initial_epoch + THIRTY_SECONDS_IN_NANOSECONDS]), + proton_sw_bulk_velocity_rtn_sc=np.array([[400.0, 10.0, 5.0]]), + quality_flags=np.array([runner_quality_flag]), + ) + + ten_min_quality_flag = SwapiL3Flags.BAD_FIT + mock_calculate_ten_minute_velocities.return_value = ( + np.array([[17, 18, 19]]), np.array([ten_min_quality_flag])) + + pui_fit_quality_flag = SwapiL3Flags.PUI_FIT_MISSING_UNCERTAINTY + mock_calculate_pickup_ion.return_value = FittingParameters(1, 2, 3, 4, pui_fit_quality_flag) mock_calculate_helium_pui_density.return_value = 5 mock_calculate_helium_pui_temperature.return_value = 6 - pui_quality_flags = [SwapiL3Flags.SWP_SW_ANGLES_ESTIMATED] - mock_calculate_ten_minute_velocities.return_value = (np.array([[17, 18, 19]]), - pui_quality_flags) - - science_input = ScienceInput( - f'imap_{instrument}_{incoming_data_level}_{SWAPI_L2_DESCRIPTOR}_{dependency_start_date}_{version}.cdf') - - input_file_names = [ - f'imap_{instrument}_{incoming_data_level}_{SWAPI_L2_DESCRIPTOR}_{dependency_start_date}_{version}.cdf', - f'imap_{instrument}_{PROTON_TEMPERATURE_DENSITY_LOOKUP_TABLE_DESCRIPTOR}_{dependency_start_date}_{version}.cdf', - f'imap_{instrument}_{ALPHA_TEMPERATURE_DENSITY_LOOKUP_TABLE_DESCRIPTOR}_{dependency_start_date}_{version}.cdf', - f'imap_{instrument}_{CLOCK_ANGLE_AND_FLOW_DEFLECTION_LOOKUP_TABLE_DESCRIPTOR}_{dependency_start_date}_{version}.cdf', - f'imap_{instrument}_{GEOMETRIC_FACTOR_PUI_LOOKUP_TABLE_DESCRIPTOR}_{dependency_start_date}_{version}.cdf', - f'imap_{instrument}_{INSTRUMENT_RESPONSE_LOOKUP_TABLE_DESCRIPTOR}_{dependency_start_date}_{version}.cdf', - f'imap_{instrument}_{DENSITY_OF_NEUTRAL_HELIUM_DESCRIPTOR}_{dependency_start_date}_{version}.cdf', - ] + with patch('imap_l3_processing.swapi.swapi_processor.rotate_rtn_to_dps', return_value=np.array([330.0, 12.0, 4.0])): + input_metadata = InputMetadata('swapi', 'l3a', datetime(2025, 6, 12), datetime(2025, 6, 13), 'v123') + swapi_processor = SwapiProcessor(Mock(), input_metadata) + product = swapi_processor.process_l3a_pui(data=chunk_of_fifty, dependencies=Mock()) - ancillary_inputs = [AncillaryInput(file_name) for file_name in input_file_names[1:]] - - dependencies = ProcessingInputCollection(science_input, *ancillary_inputs) - - input_metadata = InputMetadata(instrument, outgoing_data_level, start_date, end_date, input_version) - - pickup_ion_data = mock_pickup_ion_data_constructor.return_value - expected_pickup_ion_metadata = replace(input_metadata, descriptor="pui-he") - pickup_ion_data.input_metadata = expected_pickup_ion_metadata - - input_metadata.descriptor = "pui-he" + # The runner's per-window proton-fit quality flag is passed through to calculate_ten_minute_velocities. + self.assertEqual([runner_quality_flag], + mock_calculate_ten_minute_velocities.call_args.args[1]) - expected_cdf_path = (config["DATA_DIR"] / "imap" / "swapi" / "l3a" / "2025" / "09" / - f"imap_swapi_l3a_pui-he_{start_date_as_str}_{input_version}.cdf") - - mock_chunk_l2_data.side_effect = [ - [chunk_of_five], - [chunk_of_fifty], - ] - - mock_l3a_dependencies = mock_swapi_l3_dependencies_class.fetch_dependencies.return_value - mock_l3a_dependencies.data = sentinel.swapi_l2_data - - mock_manager = mock_imap_attribute_manager.return_value - - swapi_processor = SwapiProcessor( - dependencies, input_metadata) - product = swapi_processor.process() - - actual_science_input = swapi_processor.dependencies.get_science_inputs()[0] - self.assertEqual(actual_science_input.get_time_range()[0].strftime("%Y%m%d"), dependency_start_date) - - mock_swapi_l3_dependencies_class.fetch_dependencies.assert_called_once_with(dependencies) - - mock_instrument_response_calibration_table = mock_l3a_dependencies.instrument_response_calibration_table - mock_geometric_factor_calibration_table = mock_l3a_dependencies.geometric_factor_calibration_table - mock_efficiency_lut = mock_l3a_dependencies.efficiency_calibration_table - mock_density_of_neutral_helium_calibration_table = mock_l3a_dependencies.density_of_neutral_helium_calibration_table - mock_hydrogen_inflow_vector = mock_l3a_dependencies.hydrogen_inflow_vector - mock_helium_inflow_vector = mock_l3a_dependencies.helium_inflow_vector - - mock_chunk_l2_data.assert_has_calls([call(sentinel.swapi_l2_data, 5), - call(sentinel.swapi_l2_data, 50)]) - - coincident_rates, l2_energy, sci_start_time = mock_calculate_proton_solar_wind_speed.call_args.args - - np.testing.assert_array_equal(chunk_of_five.coincidence_count_rate, nominal_values(coincident_rates)) - np.testing.assert_array_equal(chunk_of_five.coincidence_count_rate_uncertainty, - std_devs(coincident_rates)) - np.testing.assert_array_equal(chunk_of_five.energy, l2_energy) - np.testing.assert_array_equal(chunk_of_five.sci_start_time, sci_start_time) - - mock_estimate_deflection_and_clock_angles.assert_called_once_with(returned_proton_sw_speed.nominal_value) - - mock_calculate_ten_minute_velocities.assert_called_with([returned_proton_sw_speed.nominal_value], - [returned_proton_sw_deflection_angle], - [returned_proton_sw_clock_angle], - np.array([SwapiL3Flags.SWP_SW_ANGLES_ESTIMATED])) - - instrument_response_lut, geometric_factor_lut, energies, count_rates, pui_epoch, \ - sw_velocity_vector, density_of_neutral_helium_lut, efficiency_lut, hydrogen_inflow_vector, helium_inflow_vector = mock_calculate_pickup_ion.call_args.args - - self.assertEqual(mock_instrument_response_calibration_table, instrument_response_lut) - self.assertEqual(mock_efficiency_lut, efficiency_lut) - self.assertEqual(mock_geometric_factor_calibration_table, geometric_factor_lut) - self.assertEqual(mock_density_of_neutral_helium_calibration_table, density_of_neutral_helium_lut) - np.testing.assert_array_equal(chunk_of_fifty.energy, energies) - np.testing.assert_array_equal(chunk_of_fifty.coincidence_count_rate, count_rates) - self.assertEqual(chunk_of_fifty.sci_start_time[0] + FIVE_MINUTES_IN_NANOSECONDS, pui_epoch) - self.assertEqual(mock_hydrogen_inflow_vector, hydrogen_inflow_vector) - self.assertEqual(mock_helium_inflow_vector, helium_inflow_vector) - np.testing.assert_array_equal([17, 18, 19], sw_velocity_vector) - - actual_he_epoch, sw_velocity_vector, density_of_neutral_helium_lut, passed_in_fitting_params, helium_inflow_vector = mock_calculate_helium_pui_density.call_args.args - - self.assertEqual(chunk_of_fifty.sci_start_time[0] + FIVE_MINUTES_IN_NANOSECONDS, actual_he_epoch) - np.testing.assert_array_equal([17, 18, 19], sw_velocity_vector) - self.assertEqual(mock_density_of_neutral_helium_calibration_table, density_of_neutral_helium_lut) - self.assertEqual(expected_fitting_params, passed_in_fitting_params) - self.assertEqual(mock_helium_inflow_vector, helium_inflow_vector) - - actual_he_epoch, sw_velocity_vector, density_of_neutral_helium_lut, passed_in_fitting_params, helium_inflow_vector = mock_calculate_helium_pui_temperature.call_args.args - - self.assertEqual(chunk_of_fifty.sci_start_time[0] + FIVE_MINUTES_IN_NANOSECONDS, actual_he_epoch) - np.testing.assert_array_equal([17, 18, 19], sw_velocity_vector) - self.assertEqual(mock_density_of_neutral_helium_calibration_table, density_of_neutral_helium_lut) - self.assertEqual(expected_fitting_params, passed_in_fitting_params) - self.assertEqual(mock_helium_inflow_vector, helium_inflow_vector) - - mock_manager.add_global_attribute.assert_has_calls([call("Data_version", outgoing_version), - call("Generation_date", - date.today().strftime("%Y%m%d")), - call("Logical_source", - f"imap_swapi_l3a_pui-he"), - call("Logical_file_id", - f"imap_swapi_l3a_pui-he_{start_date_as_str}_{input_version}"), - ]) - - actual_pui_metadata, actual_pui_epoch, actual_pui_cooling_index, actual_pui_ionization_rate, \ - actual_pui_cutoff_speed, actual_pui_background_rate, actual_pui_density, actual_pui_temperature, \ - actual_quality_flags = mock_pickup_ion_data_constructor.call_args.args - self.assertEqual(expected_pickup_ion_metadata, actual_pui_metadata) - np.testing.assert_array_equal(np.array([initial_epoch + FIVE_MINUTES_IN_NANOSECONDS]), actual_pui_epoch) - np.testing.assert_array_equal(np.array([1]), actual_pui_cooling_index) - np.testing.assert_array_equal(np.array([2]), actual_pui_ionization_rate) - np.testing.assert_array_equal(np.array([3]), actual_pui_cutoff_speed) - np.testing.assert_array_equal(np.array([4]), actual_pui_background_rate) - np.testing.assert_array_equal(np.array([5]), actual_pui_density) - np.testing.assert_array_equal(np.array([6]), actual_pui_temperature) - - expected_swapi_flag = SwapiL3Flags.HI_CHI_SQ | SwapiL3Flags.SWP_SW_ANGLES_ESTIMATED - np.testing.assert_array_equal(actual_quality_flags, np.array(expected_swapi_flag)) - - mock_manager.add_instrument_attrs.assert_called_once_with("swapi", "l3a", "pui-he") - - self.assertEqual(input_file_names, pickup_ion_data.parent_file_names) - mock_write_cdf.assert_called_once_with(str(expected_cdf_path), pickup_ion_data, mock_manager) - self.assertEqual([expected_cdf_path], product) + # The output flag is the OR of the per-window proton flag (returned by ten-min) and the per-window PUI fit flag. + np.testing.assert_array_equal( + product.quality_flags, + np.array([ten_min_quality_flag | pui_fit_quality_flag]), + ) @patch('imap_l3_processing.utils.ImapAttributeManager') @patch('imap_l3_processing.swapi.swapi_processor.SwapiL3ProtonSolarWindData') @patch('imap_l3_processing.utils.write_cdf') + @patch('imap_l3_processing.swapi.swapi_processor.ParallelChunkRunner') @patch('imap_l3_processing.swapi.swapi_processor.chunk_l2_data') - @patch('imap_l3_processing.swapi.swapi_processor.calculate_proton_solar_wind_speed') - @patch('imap_l3_processing.swapi.swapi_processor.calculate_proton_solar_wind_temperature_and_density') - @patch('imap_l3_processing.swapi.swapi_processor.calculate_clock_angle') - @patch('imap_l3_processing.swapi.swapi_processor.calculate_deflection_angle') @patch('imap_l3_processing.swapi.swapi_processor.SwapiL3ADependencies') @patch('imap_l3_processing.processor.spiceypy') def test_process_l3a_proton(self, mock_spicepy, - mock_swapi_l3_dependencies_class, mock_calculate_deflection_angle, - mock_calculate_clock_angle, - mock_proton_calculate_temperature_and_density, - mock_calculate_proton_solar_wind_speed, mock_chunk_l2_data, mock_write_cdf, + mock_swapi_l3_dependencies_class, + mock_chunk_l2_data, + mock_parallel_chunk_runner_class, + mock_write_cdf, mock_proton_solar_wind_data_constructor, - mock_imap_attribute_manager - ): + mock_imap_attribute_manager): instrument = 'swapi' incoming_data_level = 'l2' dependency_start_date = datetime.strftime(datetime(2025, 1, 1), "%Y%m%d") @@ -456,23 +293,6 @@ def test_process_l3a_proton(self, mock_spicepy, mock_spicepy.ktotal.return_value = 0 - returned_proton_sw_speed = ufloat(400000, 2) - returned_chi_sq = 5 - mock_calculate_proton_solar_wind_speed.return_value = ( - returned_proton_sw_speed, sentinel.a, sentinel.phi, sentinel.b, returned_chi_sq) - - returned_proton_sw_temp = ufloat(99000, 1000) - returned_proton_sw_density = ufloat(4.97, 0.25) - - mock_proton_calculate_temperature_and_density.return_value = ProtonSolarWindTemperatureAndDensity( - temperature=returned_proton_sw_temp, density=returned_proton_sw_density, bad_fit_flag=SwapiL3Flags.NONE) - - returned_proton_sw_clock_angle = ufloat(200, 0.25) - mock_calculate_clock_angle.return_value = returned_proton_sw_clock_angle - - returned_proton_sw_deflection_angle = ufloat(5, 0.001) - mock_calculate_deflection_angle.return_value = returned_proton_sw_deflection_angle - initial_epoch = 10 epoch = np.array([initial_epoch, 11, 12, 13]) @@ -489,14 +309,40 @@ def test_process_l3a_proton(self, mock_spicepy, science_input = ScienceInput( f'imap_{instrument}_{incoming_data_level}_{SWAPI_L2_DESCRIPTOR}_{dependency_start_date}_{version}.cdf') + runner_result = dict( + epoch=np.array([initial_epoch + THIRTY_SECONDS_IN_NANOSECONDS]), + proton_sw_speed=np.array([400000.0]), + proton_sw_speed_uncert=np.array([2.0]), + proton_sw_speed_sun=np.array([401000.0]), + proton_sw_speed_sun_uncert=np.array([2.5]), + proton_sw_temperature=np.array([99000.0]), + proton_sw_temperature_uncert=np.array([1000.0]), + proton_sw_density=np.array([4.97]), + proton_sw_density_uncert=np.array([0.25]), + proton_sw_clock_angle=np.array([200.0]), + proton_sw_clock_angle_uncert=np.array([0.25]), + proton_sw_deflection_angle=np.array([5.0]), + proton_sw_deflection_angle_uncert=np.array([0.001]), + proton_sw_bulk_velocity_rtn_sun=np.array([[400.0, 10.0, 5.0]]), + proton_sw_bulk_velocity_rtn_sun_covariance=np.array([np.eye(3)]), + proton_sw_bulk_velocity_rtn_sc=np.array([[370.0, 10.0, 5.0]]), + proton_sw_bulk_velocity_rtn_sc_covariance=np.array([np.eye(3)]), + quality_flags=np.array([SwapiL3Flags.NONE]), + ) + mock_runner = mock_parallel_chunk_runner_class.return_value + mock_runner.run.return_value = runner_result + input_file_names = [ f'imap_{instrument}_{incoming_data_level}_{SWAPI_L2_DESCRIPTOR}_{dependency_start_date}_{version}.cdf', - f'imap_{instrument}_{PROTON_TEMPERATURE_DENSITY_LOOKUP_TABLE_DESCRIPTOR}_{dependency_start_date}_{version}.cdf', - f'imap_{instrument}_{ALPHA_TEMPERATURE_DENSITY_LOOKUP_TABLE_DESCRIPTOR}_{dependency_start_date}_{version}.cdf', - f'imap_{instrument}_{CLOCK_ANGLE_AND_FLOW_DEFLECTION_LOOKUP_TABLE_DESCRIPTOR}_{dependency_start_date}_{version}.cdf', - f'imap_{instrument}_{GEOMETRIC_FACTOR_SW_LOOKUP_TABLE_DESCRIPTOR}_{dependency_start_date}_{version}.cdf', + f'imap_{instrument}_{EFFICIENCY_LOOKUP_TABLE_DESCRIPTOR}_{dependency_start_date}_{version}.cdf', + f'imap_{instrument}_{GEOMETRIC_FACTOR_PUI_LOOKUP_TABLE_DESCRIPTOR}_{dependency_start_date}_{version}.cdf', f'imap_{instrument}_{INSTRUMENT_RESPONSE_LOOKUP_TABLE_DESCRIPTOR}_{dependency_start_date}_{version}.cdf', f'imap_{instrument}_{DENSITY_OF_NEUTRAL_HELIUM_DESCRIPTOR}_{dependency_start_date}_{version}.cdf', + f'imap_{instrument}_{HYDROGEN_INFLOW_VECTOR_DESCRIPTOR}_{dependency_start_date}_{version}.cdf', + f'imap_{instrument}_{HELIUM_INFLOW_VECTOR_DESCRIPTOR}_{dependency_start_date}_{version}.cdf', + f'imap_{instrument}_{AZIMUTHAL_TRANSMISSION_DESCRIPTOR}_{dependency_start_date}_{version}.cdf', + f'imap_{instrument}_{CENTRAL_EFFECTIVE_AREA_DESCRIPTOR}_{dependency_start_date}_{version}.cdf', + f'imap_{instrument}_{PASSBAND_FIT_COEFFICIENTS_DESCRIPTOR}_{dependency_start_date}_{version}.cdf', ] ancillary_inputs = [AncillaryInput(file_name) for file_name in input_file_names[1:]] @@ -514,96 +360,34 @@ def test_process_l3a_proton(self, mock_spicepy, expected_cdf_path = (config["DATA_DIR"] / "imap" / "swapi" / "l3a" / "2025" / "06" / f"imap_swapi_l3a_proton-sw_{start_date_as_str}_{input_version}.cdf") - mock_chunk_l2_data.side_effect = [ - [chunk_of_five], - ] + mock_chunk_l2_data.return_value = [chunk_of_five] swapi_l3a_dependencies = create_swapi_l3a_dependencies_with_mocks() + swapi_l3a_dependencies.data = Mock(energy=energy) mock_swapi_l3_dependencies_class.fetch_dependencies.return_value = swapi_l3a_dependencies mock_manager = mock_imap_attribute_manager.return_value - swapi_processor = SwapiProcessor( - dependencies, input_metadata) + swapi_processor = SwapiProcessor(dependencies, input_metadata) product = swapi_processor.process() - actual_science_input = swapi_processor.dependencies.get_science_inputs()[0] - self.assertEqual(actual_science_input.get_time_range()[0].strftime("%Y%m%d"), dependency_start_date) - mock_swapi_l3_dependencies_class.fetch_dependencies.assert_called_once_with(dependencies) - mock_proton_temperature_density_calibration_table = mock_swapi_l3_dependencies_class.fetch_dependencies.return_value.proton_temperature_density_calibration_table - mock_clock_angle_and_flow_deflection_calibration_table = mock_swapi_l3_dependencies_class.fetch_dependencies.return_value.clock_angle_and_flow_deflection_calibration_table - - mock_chunk_l2_data.assert_has_calls([call(swapi_l3a_dependencies.data, 5)]) - - expected_count_rate_with_uncertainties = uarray(coincidence_count_rate, - coincidence_count_rate_uncertainty) - np.testing.assert_array_equal(nominal_values(expected_count_rate_with_uncertainties), - nominal_values( - mock_calculate_proton_solar_wind_speed.call_args_list[0].args[0])) - np.testing.assert_array_equal(std_devs(expected_count_rate_with_uncertainties), - std_devs( - mock_calculate_proton_solar_wind_speed.call_args_list[0].args[0])) - np.testing.assert_array_equal(energy, mock_calculate_proton_solar_wind_speed.call_args_list[0].args[1]) - np.testing.assert_array_equal(epoch, mock_calculate_proton_solar_wind_speed.call_args_list[0].args[2]) - - self.assertEqual( - call(mock_clock_angle_and_flow_deflection_calibration_table, returned_proton_sw_speed, sentinel.a, - sentinel.phi, sentinel.b), mock_calculate_clock_angle.call_args) - - self.assertEqual( - call(mock_clock_angle_and_flow_deflection_calibration_table, returned_proton_sw_speed, sentinel.a, - sentinel.phi, sentinel.b), mock_calculate_deflection_angle.call_args) - - self.assertEqual(mock_proton_temperature_density_calibration_table, - mock_proton_calculate_temperature_and_density.call_args_list[0].args[0]) - self.assert_ufloat_equal(returned_proton_sw_speed, - mock_proton_calculate_temperature_and_density.call_args_list[0].args[1]) - self.assert_ufloat_equal(returned_proton_sw_deflection_angle, - mock_proton_calculate_temperature_and_density.call_args_list[0].args[2]) - self.assertEqual(returned_proton_sw_clock_angle, - mock_proton_calculate_temperature_and_density.call_args_list[0].args[3]) - np.testing.assert_array_equal(nominal_values(expected_count_rate_with_uncertainties), - nominal_values( - mock_proton_calculate_temperature_and_density.call_args_list[0].args[ - 4])) - np.testing.assert_array_equal(std_devs(expected_count_rate_with_uncertainties), - std_devs( - mock_proton_calculate_temperature_and_density.call_args_list[0].args[ - 4])) - np.testing.assert_array_equal(energy, - mock_proton_calculate_temperature_and_density.call_args_list[0].args[5]) - self.assertEqual(swapi_l3a_dependencies.efficiency_calibration_table.get_proton_efficiency_for.return_value, - mock_proton_calculate_temperature_and_density.call_args_list[0].args[6]) - - swapi_l3a_dependencies.efficiency_calibration_table.get_proton_efficiency_for.assert_called_once_with( - initial_epoch + THIRTY_SECONDS_IN_NANOSECONDS) - - (actual_proton_metadata, actual_proton_epoch, actual_proton_sw_speed, actual_proton_sw_temperature, - actual_proton_sw_density, actual_proton_sw_clock_angle, - actual_proton_sw_deflection_angle, - actual_quality_flags) = mock_proton_solar_wind_data_constructor.call_args.args - - self.assertEqual(expected_proton_metadata, actual_proton_metadata) - - np.testing.assert_array_equal(np.array([initial_epoch + THIRTY_SECONDS_IN_NANOSECONDS]), - actual_proton_epoch, - strict=True) - np.testing.assert_array_equal(np.array([returned_proton_sw_speed]), actual_proton_sw_speed, strict=True) + swapi_l3a_dependencies.swapi_response.warm_cache.assert_called_once() - self.assert_ufloat_array([returned_proton_sw_temp], actual_proton_sw_temperature, ) + mock_parallel_chunk_runner_class.assert_called_once_with( + swapi_l3a_dependencies.swapi_response, + swapi_l3a_dependencies.efficiency_calibration_table, + ) + mock_runner.run.assert_called_once() + actual_chunks = mock_runner.run.call_args.args[0] + self.assertEqual([chunk_of_five], actual_chunks) - self.assert_ufloat_array([returned_proton_sw_density], actual_proton_sw_density) - - np.testing.assert_array_equal(np.array([returned_proton_sw_clock_angle]), actual_proton_sw_clock_angle, - strict=True) - np.testing.assert_array_equal(np.array([returned_proton_sw_deflection_angle]), - actual_proton_sw_deflection_angle, - strict=True) - np.testing.assert_array_equal(np.array([SwapiL3Flags.NONE]), - actual_quality_flags, - strict=True) + actual_kwargs = mock_proton_solar_wind_data_constructor.call_args.kwargs + actual_positional = mock_proton_solar_wind_data_constructor.call_args.args + self.assertEqual(expected_proton_metadata, actual_positional[0]) + for key, expected_val in runner_result.items(): + np.testing.assert_array_equal(expected_val, actual_kwargs[key]) mock_manager.add_global_attribute.assert_has_calls([call("Data_version", outgoing_version), call("Generation_date", @@ -620,219 +404,13 @@ def test_process_l3a_proton(self, mock_spicepy, mock_write_cdf.assert_called_once_with(str(expected_cdf_path), proton_solar_wind_data, mock_manager) self.assertEqual([expected_cdf_path], product) - @patch('imap_l3_processing.utils.ImapAttributeManager') - @patch('imap_l3_processing.utils.write_cdf') - @patch('imap_l3_processing.swapi.swapi_processor.SwapiL3ProtonSolarWindData') - @patch('imap_l3_processing.swapi.swapi_processor.chunk_l2_data') - @patch('imap_l3_processing.swapi.swapi_processor.calculate_proton_solar_wind_speed') - @patch('imap_l3_processing.swapi.swapi_processor.calculate_proton_solar_wind_temperature_and_density') - @patch('imap_l3_processing.swapi.swapi_processor.estimate_deflection_and_clock_angles') - @patch('imap_l3_processing.swapi.swapi_processor.SwapiL3ADependencies') - @patch('imap_l3_processing.processor.spiceypy') - def test_process_l3a_proton_estimates_angles_if_chisq_too_high_with_hi_chi_sq_flag(self, mock_spicepy, - mock_swapi_l3_dependencies_class, - mock_estimate_deflection_and_clock_angles, - mock_proton_calculate_temperature_and_density, - mock_calculate_proton_solar_wind_speed, - mock_chunk_l2_data, - mock_proton_solar_wind_data_constructor, - _, - __ - ): - instrument = 'swapi' - incoming_data_level = 'l2' - dependency_start_date = datetime.strftime(datetime(2025, 1, 1), "%Y%m%d") - version = 'v001' - end_date = datetime(2025, 6, 13) - outgoing_data_level = "l3a" - start_date = datetime(2025, 6, 12) - input_version = "v123" - - mock_spicepy.ktotal.return_value = 0 - - returned_proton_sw_speed = ufloat(400000, 2) - returned_chi_sq = 15 - mock_calculate_proton_solar_wind_speed.return_value = ( - returned_proton_sw_speed, sentinel.a, sentinel.phi, sentinel.b, returned_chi_sq) - - mock_estimate_deflection_and_clock_angles.return_value = (2, 270) - - returned_proton_sw_temp = ufloat(99000, 1000) - returned_proton_sw_density = ufloat(4.97, 0.25) - mock_proton_calculate_temperature_and_density.return_value = ProtonSolarWindTemperatureAndDensity( - returned_proton_sw_temp, returned_proton_sw_density, SwapiL3Flags.HI_CHI_SQ) - - initial_epoch = 10 - - epoch = np.array([initial_epoch, 11, 12, 13]) - energy = np.array([15000, 16000, 17000, 18000, 19000]) - coincidence_count_rate = np.array( - [[4, 5, 6, 7, 8], [9, 10, 11, 12, 13], [14, 15, 16, 17, 18], [19, 20, 21, 22, 23]]) - coincidence_count_rate_uncertainty = np.array( - [[0.1, 0.2, 0.3, 0.4, 0.5], [0.1, 0.2, 0.3, 0.4, 0.5], [0.1, 0.2, 0.3, 0.4, 0.5], - [0.1, 0.2, 0.3, 0.4, 0.5]]) - - chunk_of_five = SwapiL2Data(epoch, energy, coincidence_count_rate, - coincidence_count_rate_uncertainty) - - science_input = ScienceInput( - f'imap_{instrument}_{incoming_data_level}_{SWAPI_L2_DESCRIPTOR}_{dependency_start_date}_{version}.cdf') - - input_file_names = [ - f'imap_{instrument}_{incoming_data_level}_{SWAPI_L2_DESCRIPTOR}_{dependency_start_date}_{version}.cdf', - f'imap_{instrument}_{PROTON_TEMPERATURE_DENSITY_LOOKUP_TABLE_DESCRIPTOR}_{dependency_start_date}_{version}.cdf', - f'imap_{instrument}_{ALPHA_TEMPERATURE_DENSITY_LOOKUP_TABLE_DESCRIPTOR}_{dependency_start_date}_{version}.cdf', - f'imap_{instrument}_{CLOCK_ANGLE_AND_FLOW_DEFLECTION_LOOKUP_TABLE_DESCRIPTOR}_{dependency_start_date}_{version}.cdf', - f'imap_{instrument}_{GEOMETRIC_FACTOR_SW_LOOKUP_TABLE_DESCRIPTOR}_{dependency_start_date}_{version}.cdf', - f'imap_{instrument}_{INSTRUMENT_RESPONSE_LOOKUP_TABLE_DESCRIPTOR}_{dependency_start_date}_{version}.cdf', - f'imap_{instrument}_{DENSITY_OF_NEUTRAL_HELIUM_DESCRIPTOR}_{dependency_start_date}_{version}.cdf', - ] - - ancillary_inputs = [AncillaryInput(file_name) for file_name in input_file_names[1:]] - - dependencies = ProcessingInputCollection(science_input, *ancillary_inputs) - - input_metadata = InputMetadata(instrument, outgoing_data_level, start_date, end_date, input_version) - - proton_solar_wind_data = mock_proton_solar_wind_data_constructor.return_value - expected_proton_metadata = replace(input_metadata, descriptor="proton-sw") - proton_solar_wind_data.input_metadata = expected_proton_metadata - - input_metadata.descriptor = "proton-sw" - - mock_chunk_l2_data.side_effect = [ - [chunk_of_five], - ] - - swapi_l3a_dependencies = create_swapi_l3a_dependencies_with_mocks() - mock_swapi_l3_dependencies_class.fetch_dependencies.return_value = swapi_l3a_dependencies - - swapi_processor = SwapiProcessor( - dependencies, input_metadata) - product = swapi_processor.process() - - mock_proton_temperature_density_calibration_table = mock_swapi_l3_dependencies_class.fetch_dependencies.return_value.proton_temperature_density_calibration_table - mock_clock_angle_and_flow_deflection_calibration_table = mock_swapi_l3_dependencies_class.fetch_dependencies.return_value.clock_angle_and_flow_deflection_calibration_table - - self.assertEqual(mock_proton_temperature_density_calibration_table, - mock_proton_calculate_temperature_and_density.call_args_list[0].args[0]) - self.assert_ufloat_equal(returned_proton_sw_speed, - mock_proton_calculate_temperature_and_density.call_args_list[0].args[1]) - self.assertEqual(2, - mock_proton_calculate_temperature_and_density.call_args_list[0].args[2].nominal_value) - np.testing.assert_equal(45, - mock_proton_calculate_temperature_and_density.call_args_list[0].args[2].std_dev) - self.assertEqual(270, - mock_proton_calculate_temperature_and_density.call_args_list[0].args[3].nominal_value) - np.testing.assert_equal(180, - mock_proton_calculate_temperature_and_density.call_args_list[0].args[3].std_dev) - mock_estimate_deflection_and_clock_angles.assert_called_with(returned_proton_sw_speed.nominal_value) - - (actual_proton_metadata, actual_proton_epoch, actual_proton_sw_speed, actual_proton_sw_temperature, - actual_proton_sw_density, actual_proton_sw_clock_angle, - actual_proton_sw_deflection_angle, - actual_quality_flags) = mock_proton_solar_wind_data_constructor.call_args.args - - self.assertEqual(expected_proton_metadata, actual_proton_metadata) - - np.testing.assert_array_equal(np.array([initial_epoch + THIRTY_SECONDS_IN_NANOSECONDS]), - actual_proton_epoch, - strict=True) - self.assert_ufloat_array(np.array([returned_proton_sw_speed]), actual_proton_sw_speed) - self.assert_ufloat_array(np.array([returned_proton_sw_temp]), actual_proton_sw_temperature) - self.assert_ufloat_array(np.array([returned_proton_sw_density]), actual_proton_sw_density) - - np.testing.assert_array_equal(nominal_values(actual_proton_sw_clock_angle), [270]) - np.testing.assert_array_equal(std_devs(actual_proton_sw_clock_angle), [180]) - - np.testing.assert_array_equal(nominal_values(actual_proton_sw_deflection_angle), [2]) - np.testing.assert_array_equal(std_devs(actual_proton_sw_deflection_angle), [45]) - - np.testing.assert_array_equal(np.array([SwapiL3Flags.SWP_SW_ANGLES_ESTIMATED | SwapiL3Flags.HI_CHI_SQ]), - actual_quality_flags, - strict=True) - - def test_process_l3a_proton_outputs_fill_for_chunks_with_fill(self): - instrument = 'swapi' - end_date = datetime(2025, 6, 13) - outgoing_data_level = "l3a" - start_date = datetime(2025, 6, 12) - input_version = "v123" - initial_epoch = 10 - - epoch = np.array([initial_epoch, 11, 12, 13]) - energy = np.array([15000, 16000, 17000, 18000, 19000]) - coincidence_count_rate = np.array( - [[4, 5, 6, 7, 8], [9, 10, 11, np.nan, 13], [14, 15, 16, 17, 18], [19, 20, 21, 22, 23]]) - coincidence_count_rate_uncertainty = np.array( - [[0.1, 0.2, 0.3, 0.4, 0.5], [0.1, 0.2, 0.3, 0.4, 0.5], [0.1, 0.2, 0.3, 0.4, 0.5], - [0.1, 0.2, 0.3, 0.4, 0.5]]) - - chunk_of_five = SwapiL2Data(epoch, energy, coincidence_count_rate, - coincidence_count_rate_uncertainty) - - input_metadata = InputMetadata(instrument, outgoing_data_level, start_date, end_date, input_version) - - swapi_processor = SwapiProcessor( - Mock(), input_metadata) - with self.assertLogs(logger) as log_context: - product = swapi_processor.process_l3a_proton(data=chunk_of_five, dependencies=Mock()) - - self.assertIsInstance(product, SwapiL3ProtonSolarWindData) - np.testing.assert_array_equal(nominal_values(product.proton_sw_speed), [np.nan]) - np.testing.assert_array_equal(std_devs(product.proton_sw_speed), [np.nan]) - - np.testing.assert_array_equal(nominal_values(product.proton_sw_temperature), [np.nan]) - np.testing.assert_array_equal(std_devs(product.proton_sw_temperature), [np.nan]) - - np.testing.assert_array_equal(nominal_values(product.proton_sw_density), [np.nan]) - np.testing.assert_array_equal(std_devs(product.proton_sw_density), [np.nan]) - - np.testing.assert_array_equal(nominal_values(product.proton_sw_clock_angle), [np.nan]) - np.testing.assert_array_equal(std_devs(product.proton_sw_clock_angle), [np.nan]) - - np.testing.assert_array_equal(nominal_values(product.proton_sw_deflection_angle), [np.nan]) - np.testing.assert_array_equal(std_devs(product.proton_sw_deflection_angle), [np.nan]) - - np.testing.assert_array_equal(product.quality_flags, [SwapiL3Flags.NONE]) - - def test_process_l3a_alpha_outputs_fill_for_chunks_with_fill(self): - instrument = 'swapi' - end_date = datetime(2025, 6, 13) - outgoing_data_level = "l3a" - start_date = datetime(2025, 6, 12) - input_version = "v123" - initial_epoch = 10 - - epoch = np.array([initial_epoch, 11, 12, 13]) - energy = np.array([19000, 18000, 17000, 16000, 15000]) - coincidence_count_rate = np.array( - [[4, 5, 6, 7, 8], [9, 10, 11, np.nan, 13], [14, 15, 16, 17, 18], [19, 20, 21, 22, 23]]) - coincidence_count_rate_uncertainty = np.array( - [[0.1, 0.2, 0.3, 0.4, 0.5], [0.1, 0.2, 0.3, 0.4, 0.5], [0.1, 0.2, 0.3, 0.4, 0.5], - [0.1, 0.2, 0.3, 0.4, 0.5]]) - - chunk_of_five = SwapiL2Data(epoch, energy, coincidence_count_rate, - coincidence_count_rate_uncertainty) - - input_metadata = InputMetadata(instrument, outgoing_data_level, start_date, end_date, input_version) - - swapi_processor = SwapiProcessor( - Mock(), input_metadata) - with self.assertLogs(logger) as log_context: - product = swapi_processor.process_l3a_alpha_solar_wind(data=chunk_of_five, dependencies=Mock()) - - self.assertIsInstance(product, SwapiL3AlphaSolarWindData) - np.testing.assert_array_equal(nominal_values(product.alpha_sw_speed), [np.nan]) - np.testing.assert_array_equal(std_devs(product.alpha_sw_speed), [np.nan]) - - np.testing.assert_array_equal(nominal_values(product.alpha_sw_temperature), [np.nan]) - np.testing.assert_array_equal(std_devs(product.alpha_sw_temperature), [np.nan]) - - np.testing.assert_array_equal(nominal_values(product.alpha_sw_density), [np.nan]) - np.testing.assert_array_equal(std_devs(product.alpha_sw_density), [np.nan]) - - def test_process_l3a_pui_outputs_fill_for_chunks_with_fill(self): + @patch('imap_l3_processing.swapi.swapi_processor.rotate_rtn_to_dps', return_value=np.array([np.nan, np.nan, np.nan])) + @patch('imap_l3_processing.swapi.swapi_processor.ParallelChunkRunner') + @patch('imap_l3_processing.swapi.swapi_processor.calculate_ten_minute_velocities') + def test_process_l3a_pui_outputs_fill_for_chunks_with_fill(self, + mock_calculate_ten_minute_velocities, + mock_parallel_chunk_runner_class, + mock_rotate_rtn_to_dps): instrument = 'swapi' end_date = datetime(2025, 6, 13) outgoing_data_level = "l3a" @@ -840,23 +418,31 @@ def test_process_l3a_pui_outputs_fill_for_chunks_with_fill(self): input_version = "v123" initial_epoch = 10 - epoch = np.array([initial_epoch, 11, 12, 13]) - energy = np.array([15000, 16000, 17000, 18000, 19000]) - coincidence_count_rate = np.array( - [[4, 5, 6, 7, 8], [9, 10, 11, np.nan, 13], [14, 15, 16, 17, 18], [19, 20, 21, 22, 23]]) - coincidence_count_rate_uncertainty = np.array( - [[0.1, 0.2, 0.3, 0.4, 0.5], [0.1, 0.2, 0.3, 0.4, 0.5], [0.1, 0.2, 0.3, 0.4, 0.5], - [0.1, 0.2, 0.3, 0.4, 0.5]]) - - chunk_of_five = SwapiL2Data(epoch, energy, coincidence_count_rate, - coincidence_count_rate_uncertainty) + epoch = np.arange(initial_epoch, initial_epoch + 50) + energy = np.tile(np.array([15000, 16000, 17000, 18000, 19000]), (50, 1)) + coincidence_count_rate = np.full((50, 5), 5.0) + coincidence_count_rate[1, 3] = np.nan + coincidence_count_rate_uncertainty = np.full((50, 5), 0.1) + + chunk_of_fifty = SwapiL2Data(epoch, energy, coincidence_count_rate, + coincidence_count_rate_uncertainty) + + mock_runner = mock_parallel_chunk_runner_class.return_value + mock_runner.run.return_value = dict( + epoch=np.array([initial_epoch + THIRTY_SECONDS_IN_NANOSECONDS]), + proton_sw_bulk_velocity_rtn_sc=np.array([[np.nan, np.nan, np.nan]]), + quality_flags=np.array([SwapiL3Flags.NONE]), + ) + mock_calculate_ten_minute_velocities.return_value = ( + np.array([[np.nan, np.nan, np.nan]]), + np.array([SwapiL3Flags.NONE]), + ) input_metadata = InputMetadata(instrument, outgoing_data_level, start_date, end_date, input_version) - swapi_processor = SwapiProcessor( - Mock(), input_metadata) - with self.assertLogs(logger) as log_context: - product = swapi_processor.process_l3a_pui(data=chunk_of_five, dependencies=Mock()) + swapi_processor = SwapiProcessor(Mock(), input_metadata) + with self.assertLogs(logger): + product = swapi_processor.process_l3a_pui(data=chunk_of_fifty, dependencies=Mock()) self.assertIsInstance(product, SwapiL3PickupIonData) np.testing.assert_array_equal(product.epoch, initial_epoch + FIVE_MINUTES_IN_NANOSECONDS) @@ -884,19 +470,17 @@ def test_process_l3a_pui_outputs_fill_for_chunks_with_fill(self): @patch('imap_l3_processing.utils.ImapAttributeManager') @patch('imap_l3_processing.swapi.swapi_processor.SwapiL3AlphaSolarWindData') @patch('imap_l3_processing.utils.write_cdf') + @patch('imap_l3_processing.swapi.swapi_processor.ParallelChunkRunner') @patch('imap_l3_processing.swapi.swapi_processor.chunk_l2_data') - @patch('imap_l3_processing.swapi.swapi_processor.calculate_alpha_solar_wind_speed') - @patch( - 'imap_l3_processing.swapi.swapi_processor.calculate_alpha_solar_wind_temperature_and_density_for_combined_sweeps') @patch('imap_l3_processing.swapi.swapi_processor.SwapiL3ADependencies') @patch('imap_l3_processing.processor.spiceypy') def test_process_l3a_alpha(self, mock_spicepy, - mock_swapi_l3_dependencies_class, mock_alpha_calculate_temperature_and_density, - mock_calculate_alpha_solar_wind_speed, - mock_chunk_l2_data, mock_write_cdf, + mock_swapi_l3_dependencies_class, + mock_chunk_l2_data, + mock_parallel_chunk_runner_class, + mock_write_cdf, mock_alpha_solar_wind_data_constructor, - mock_imap_attribute_manager - ): + mock_imap_attribute_manager): instrument = 'swapi' incoming_data_level = 'l2' dependency_start_date = datetime.strftime(datetime(2025, 1, 1), "%Y%m%d") @@ -910,153 +494,104 @@ def test_process_l3a_alpha(self, mock_spicepy, mock_spicepy.ktotal.return_value = 0 - returned_alpha_temperature = ufloat(400000, 2000) - returned_alpha_density = ufloat(0.15, 0.01) - - returned_pre_lut_temp = ufloat(300000, 1000) - returned_pre_lut_density = ufloat(0.2, 0.02) - - returned_bad_flags = SwapiL3Flags.NONE - mock_alpha_calculate_temperature_and_density.return_value = AlphaSolarWindTemperatureAndDensity( - returned_alpha_temperature, returned_alpha_density, returned_pre_lut_temp, returned_pre_lut_density, returned_bad_flags) - - returned_alpha_speed = ufloat(450000, 1000) - mock_calculate_alpha_solar_wind_speed.return_value = ufloat(450000, 1000) - initial_epoch = 10 - epoch = np.array([initial_epoch, 11, 12, 13]) energy = np.array([15000, 16000, 17000, 18000, 19000]) coincidence_count_rate = np.array( [[4, 5, 6, 7, 8], [9, 10, 11, 12, 13], [14, 15, 16, 17, 18], [19, 20, 21, 22, 23]]) - coincidence_count_rate_uncertainty = np.array( - [[0.1, 0.2, 0.3, 0.4, 0.5], [0.1, 0.2, 0.3, 0.4, 0.5], [0.1, 0.2, 0.3, 0.4, 0.5], - [0.1, 0.2, 0.3, 0.4, 0.5]]) + coincidence_count_rate_uncertainty = np.array([[0.1, 0.2, 0.3, 0.4, 0.5]] * 4) chunk_of_five = SwapiL2Data(epoch, energy, coincidence_count_rate, coincidence_count_rate_uncertainty) + runner_result = dict( + epoch=np.array([initial_epoch + THIRTY_SECONDS_IN_NANOSECONDS]), + alpha_sw_density=np.array([0.15]), + alpha_sw_density_uncert=np.array([0.01]), + alpha_sw_temperature=np.array([400000.0]), + alpha_sw_temperature_uncert=np.array([2000.0]), + alpha_sw_velocity_rtn=np.array([[450.0, 5.0, 1.0]]), + alpha_sw_velocity_covariance_rtn=np.array([np.eye(3)]), + alpha_sw_delta_v=np.array([12.0]), + alpha_sw_delta_v_uncert=np.array([1.0]), + alpha_sw_b_hat_rtn=np.array([[1.0, 0.0, 0.0]]), + quality_flags=np.array([int(SwapiL3Flags.NONE)]), + ) + mock_runner = mock_parallel_chunk_runner_class.return_value + mock_runner.run.return_value = runner_result + science_input = ScienceInput( f'imap_{instrument}_{incoming_data_level}_{SWAPI_L2_DESCRIPTOR}_{dependency_start_date}_{version}.cdf') input_file_names = [ f'imap_{instrument}_{incoming_data_level}_{SWAPI_L2_DESCRIPTOR}_{dependency_start_date}_{version}.cdf', - f'imap_{instrument}_{PROTON_TEMPERATURE_DENSITY_LOOKUP_TABLE_DESCRIPTOR}_{dependency_start_date}_{version}.cdf', - f'imap_{instrument}_{ALPHA_TEMPERATURE_DENSITY_LOOKUP_TABLE_DESCRIPTOR}_{dependency_start_date}_{version}.cdf', - f'imap_{instrument}_{CLOCK_ANGLE_AND_FLOW_DEFLECTION_LOOKUP_TABLE_DESCRIPTOR}_{dependency_start_date}_{version}.cdf', - f'imap_{instrument}_{GEOMETRIC_FACTOR_SW_LOOKUP_TABLE_DESCRIPTOR}_{dependency_start_date}_{version}.cdf', + f'imap_{instrument}_{EFFICIENCY_LOOKUP_TABLE_DESCRIPTOR}_{dependency_start_date}_{version}.cdf', f'imap_{instrument}_{INSTRUMENT_RESPONSE_LOOKUP_TABLE_DESCRIPTOR}_{dependency_start_date}_{version}.cdf', - f'imap_{instrument}_{DENSITY_OF_NEUTRAL_HELIUM_DESCRIPTOR}_{dependency_start_date}_{version}.cdf', + f'imap_{instrument}_{AZIMUTHAL_TRANSMISSION_DESCRIPTOR}_{dependency_start_date}_{version}.cdf', + f'imap_{instrument}_{CENTRAL_EFFECTIVE_AREA_DESCRIPTOR}_{dependency_start_date}_{version}.cdf', + f'imap_{instrument}_{PASSBAND_FIT_COEFFICIENTS_DESCRIPTOR}_{dependency_start_date}_{version}.cdf', ] ancillary_inputs = [AncillaryInput(file_name) for file_name in input_file_names[1:]] - dependencies = ProcessingInputCollection(science_input, *ancillary_inputs) input_metadata = InputMetadata(instrument, outgoing_data_level, start_date, end_date, input_version) alpha_solar_wind_data = mock_alpha_solar_wind_data_constructor.return_value - expected_alpha_metadata = replace(input_metadata, descriptor='alpha-sw') + expected_alpha_metadata = replace(input_metadata, descriptor="alpha-sw") alpha_solar_wind_data.input_metadata = expected_alpha_metadata - descriptor_to_generate, expected_data_product = "alpha-sw", alpha_solar_wind_data - - input_metadata.descriptor = descriptor_to_generate + input_metadata.descriptor = "alpha-sw" expected_cdf_path = (config["DATA_DIR"] / "imap" / "swapi" / "l3a" / "2025" / "08" / - f"imap_swapi_l3a_{descriptor_to_generate}_{start_date_as_str}_{input_version}.cdf") + f"imap_swapi_l3a_alpha-sw_{start_date_as_str}_{input_version}.cdf") - mock_chunk_l2_data.side_effect = [ - [chunk_of_five], - ] + mock_chunk_l2_data.return_value = [chunk_of_five] - mock_swapi_l3_dependencies_class.fetch_dependencies.return_value.data = sentinel.swapi_l2_data + swapi_l3a_dependencies = create_swapi_l3a_dependencies_with_mocks() + swapi_l3a_dependencies.data = Mock(energy=energy) + swapi_l3a_dependencies.mag_data = Mock() + swapi_l3a_dependencies.mag_is_preliminary = False + mock_swapi_l3_dependencies_class.fetch_dependencies.return_value = swapi_l3a_dependencies mock_manager = mock_imap_attribute_manager.return_value - swapi_processor = SwapiProcessor( - dependencies, input_metadata) + swapi_processor = SwapiProcessor(dependencies, input_metadata) product = swapi_processor.process() - actual_science_input = swapi_processor.dependencies.get_science_inputs()[0] - self.assertEqual(actual_science_input.get_time_range()[0].strftime("%Y%m%d"), dependency_start_date) - mock_swapi_l3_dependencies_class.fetch_dependencies.assert_called_once_with(dependencies) - swapi_l3a_dependencies = mock_swapi_l3_dependencies_class.fetch_dependencies.return_value - mock_alpha_temperature_density_calibration_table = swapi_l3a_dependencies.alpha_temperature_density_calibration_table - self.assertEqual(swapi_l3a_dependencies.efficiency_calibration_table.get_alpha_efficiency_for.return_value, - mock_alpha_calculate_temperature_and_density.call_args_list[0].args[4]) - - swapi_l3a_dependencies.efficiency_calibration_table.get_alpha_efficiency_for.assert_called_once_with( - initial_epoch + THIRTY_SECONDS_IN_NANOSECONDS) - - mock_chunk_l2_data.assert_has_calls([call(sentinel.swapi_l2_data, 5)]) - - expected_count_rate_with_uncertainties = uarray(coincidence_count_rate, - coincidence_count_rate_uncertainty) - - self.assertEqual(mock_alpha_temperature_density_calibration_table, - mock_alpha_calculate_temperature_and_density.call_args_list[0].args[0]) - self.assert_ufloat_equal(returned_alpha_speed, - mock_alpha_calculate_temperature_and_density.call_args_list[0].args[1]) - np.testing.assert_array_equal(nominal_values(expected_count_rate_with_uncertainties), - nominal_values( - mock_alpha_calculate_temperature_and_density.call_args_list[0].args[ - 2])) - np.testing.assert_array_equal(std_devs(expected_count_rate_with_uncertainties), - std_devs( - mock_alpha_calculate_temperature_and_density.call_args_list[0].args[ - 2])) - np.testing.assert_array_equal(energy, - mock_alpha_calculate_temperature_and_density.call_args_list[0].args[3]) - np.testing.assert_array_equal(nominal_values(expected_count_rate_with_uncertainties), - nominal_values( - mock_calculate_alpha_solar_wind_speed.call_args_list[0].args[0])) - np.testing.assert_array_equal(std_devs(expected_count_rate_with_uncertainties), - std_devs(mock_calculate_alpha_solar_wind_speed.call_args_list[0].args[0])) - np.testing.assert_array_equal(energy, mock_calculate_alpha_solar_wind_speed.call_args_list[0].args[1]) - - mock_manager.add_global_attribute.assert_has_calls([call("Data_version", outgoing_version), - call("Generation_date", - date.today().strftime("%Y%m%d")), - call("Logical_source", - f"imap_swapi_l3a_{descriptor_to_generate}"), - call("Logical_file_id", - f"imap_swapi_l3a_{descriptor_to_generate}_{start_date_as_str}_{input_version}"), - ]) - - actual_alpha_metadata, actual_alpha_epoch, actual_alpha_sw_speed, actual_alpha_sw_temperature, actual_alpha_sw_density, actual_bad_fit_flag,\ - actual_pre_lut_temp, actual_pre_lut_density= mock_alpha_solar_wind_data_constructor.call_args.args - self.assertEqual(expected_alpha_metadata, actual_alpha_metadata) - - np.testing.assert_array_equal(np.array([initial_epoch + THIRTY_SECONDS_IN_NANOSECONDS]), - actual_alpha_epoch) - np.testing.assert_array_equal(np.array([mock_calculate_alpha_solar_wind_speed.return_value]), - actual_alpha_sw_speed) - np.testing.assert_array_equal(np.array([mock_alpha_calculate_temperature_and_density.return_value.temperature]), - actual_alpha_sw_temperature) - np.testing.assert_array_equal(np.array([mock_alpha_calculate_temperature_and_density.return_value.density]), - actual_alpha_sw_density) - np.testing.assert_array_equal( - np.array([mock_alpha_calculate_temperature_and_density.return_value.bad_fit_flag]), - actual_bad_fit_flag) - - np.testing.assert_array_equal(np.array([mock_alpha_calculate_temperature_and_density.return_value.pre_lut_temperature]), - actual_pre_lut_temp) - np.testing.assert_array_equal(np.array([mock_alpha_calculate_temperature_and_density.return_value.pre_lut_density]), - actual_pre_lut_density) - - mock_manager.add_instrument_attrs.assert_called_once_with("swapi", "l3a", descriptor_to_generate) + swapi_l3a_dependencies.swapi_response.warm_cache.assert_called_once() + + mock_parallel_chunk_runner_class.assert_called_once_with( + swapi_l3a_dependencies.swapi_response, + swapi_l3a_dependencies.efficiency_calibration_table, + ) + mock_runner.run.assert_called_once() + actual_chunks = mock_runner.run.call_args.args[0] + self.assertEqual([chunk_of_five], actual_chunks) + + actual_kwargs = mock_alpha_solar_wind_data_constructor.call_args.kwargs + actual_positional = mock_alpha_solar_wind_data_constructor.call_args.args + self.assertEqual(expected_alpha_metadata, actual_positional[0]) + for key, expected_val in runner_result.items(): + np.testing.assert_array_equal(expected_val, actual_kwargs[key]) + + mock_manager.add_global_attribute.assert_has_calls([ + call("Data_version", outgoing_version), + call("Generation_date", date.today().strftime("%Y%m%d")), + call("Logical_source", "imap_swapi_l3a_alpha-sw"), + call("Logical_file_id", f"imap_swapi_l3a_alpha-sw_{start_date_as_str}_{input_version}"), + ]) + mock_manager.add_instrument_attrs.assert_called_once_with("swapi", "l3a", "alpha-sw") - self.assertEqual(input_file_names, expected_data_product.parent_file_names) - mock_write_cdf.assert_called_once_with(str(expected_cdf_path), expected_data_product, mock_manager) + self.assertEqual(input_file_names, alpha_solar_wind_data.parent_file_names) + mock_write_cdf.assert_called_once_with(str(expected_cdf_path), alpha_solar_wind_data, mock_manager) self.assertEqual([expected_cdf_path], product) @patch('imap_l3_processing.swapi.swapi_processor.calculate_delta_minus_plus') @patch('imap_l3_processing.swapi.swapi_processor.save_data') @patch('imap_l3_processing.swapi.swapi_processor.SwapiL3BCombinedVDF') - @patch('imap_l3_processing.swapi.swapi_processor.calculate_combined_sweeps') @patch('imap_l3_processing.swapi.swapi_processor.chunk_l2_data') @patch('imap_l3_processing.swapi.swapi_processor.SwapiL3BDependencies') @patch('imap_l3_processing.swapi.swapi_processor.calculate_alpha_solar_wind_vdf') @@ -1070,7 +605,7 @@ def test_process_l3b(self, mock_spiceypy, mock_calculate_combined_solar_wind_dif mock_calculate_alpha_solar_wind_vdf, mock_swapi_l3b_dependencies_class, mock_chunk_l2_data, - mock_calculate_combined_sweeps, mock_combined_vdf_data, + mock_combined_vdf_data, mock_save_data, mock_calculate_delta_minus_plus): instrument = 'swapi' @@ -1114,31 +649,36 @@ def test_process_l3b(self, mock_spiceypy, mock_calculate_combined_solar_wind_dif DeltaMinusPlus(sentinel.energy_delta_minus2, sentinel.energy_delta_plus2), ] - energy = np.array([15000, 16000, 17000, 18000, 19000]) - coincidence_count_rate = np.array( - [[4, 5, 6, 7, 8], [9, 10, 11, 12, 13], [14, 15, 16, 17, 18], [19, 20, 21, 22, 23]]) - average_coincident_count_rates = [14, 15, 16, 17, 18] + n_sweeps, n_bins = 4, 72 + coarse_count_rates = np.linspace(14.0, 75.0, 62) + coarse_count_rate_uncertainties = np.linspace(0.1, 6.2, 62) + coarse_energies = np.linspace(15000.0, 76000.0, 62) - coincidence_count_rate_uncertainty = np.array( - [[0.1, 0.2, 0.3, 0.4, 0.5], [0.1, 0.2, 0.3, 0.4, 0.5], [0.1, 0.2, 0.3, 0.4, 0.5], - [0.1, 0.2, 0.3, 0.4, 0.5]]) - average_coincident_count_rate_uncertainties = [0.1, 0.2, 0.3, 0.4, 0.5] + # All sweeps identical so the per-bin mean across sweeps equals the per-bin pattern. + coincidence_count_rate = np.zeros((n_sweeps, n_bins)) + coincidence_count_rate[:, 1:63] = coarse_count_rates + coincidence_count_rate_uncertainty = np.zeros((n_sweeps, n_bins)) + coincidence_count_rate_uncertainty[:, 1:63] = coarse_count_rate_uncertainties + energy_per_sweep = np.zeros((n_sweeps, n_bins)) + energy_per_sweep[:, 1:63] = coarse_energies + + average_coincident_count_rates = coarse_count_rates + # σ propagation through Σ/N over n independent sweeps shrinks the per-sweep σ by √n. + average_coincident_count_rate_uncertainties = coarse_count_rate_uncertainties / np.sqrt(n_sweeps) + energy = coarse_energies first_chunk_initial_epoch = 10 - first_l2_data_chunk = SwapiL2Data(np.array([first_chunk_initial_epoch, 11, 12, 13]), sentinel.energies, + first_l2_data_chunk = SwapiL2Data(np.array([first_chunk_initial_epoch, 11, 12, 13]), energy_per_sweep, coincidence_count_rate, coincidence_count_rate_uncertainty) second_chunk_initial_epoch = 60 - second_l2_data_chunk = SwapiL2Data(np.array([second_chunk_initial_epoch, 11, 12, 13]), sentinel.energies, + second_l2_data_chunk = SwapiL2Data(np.array([second_chunk_initial_epoch, 11, 12, 13]), energy_per_sweep, coincidence_count_rate, coincidence_count_rate_uncertainty) mock_chunk_l2_data.return_value = [first_l2_data_chunk, second_l2_data_chunk] - mock_calculate_combined_sweeps.return_value = [ - uarray(average_coincident_count_rates, average_coincident_count_rate_uncertainties), energy] - input_metadata = InputMetadata(instrument, outgoing_data_level, start_date, end_date, outgoing_version) @@ -1164,12 +704,6 @@ def test_process_l3b(self, mock_spiceypy, mock_calculate_combined_solar_wind_dif mock_chunk_l2_data.assert_called_with(mock_swapi_l3b_dependencies_class.fetch_dependencies.return_value.data, 50) - np.testing.assert_array_equal(coincidence_count_rate, - nominal_values(mock_calculate_combined_sweeps.call_args_list[0].args[0])) - np.testing.assert_array_equal(coincidence_count_rate_uncertainty, - std_devs(mock_calculate_combined_sweeps.call_args_list[0].args[0])) - self.assertEqual(sentinel.energies, - mock_calculate_combined_sweeps.call_args_list[0].args[1]) mock_efficiency_table.get_proton_efficiency_for.assert_has_calls( [call(first_chunk_initial_epoch + FIVE_MINUTES_IN_NANOSECONDS), call(second_chunk_initial_epoch + FIVE_MINUTES_IN_NANOSECONDS)]) @@ -1221,16 +755,15 @@ def test_process_l3b(self, mock_spiceypy, mock_calculate_combined_solar_wind_dif mock_calculate_combined_solar_wind_differential_flux.call_args_list[0].args[2]) self.assertEqual(mock_geometric_factor_calibration_table, mock_calculate_combined_solar_wind_differential_flux.call_args_list[0].args[3]) - mock_calculate_delta_minus_plus.assert_has_calls([ - call(sentinel.proton_calculated_velocities1), - call(sentinel.alpha_calculated_velocities1), - call(sentinel.pui_calculated_velocities1), - call(energy), - call(sentinel.proton_calculated_velocities2), - call(sentinel.alpha_calculated_velocities2), - call(sentinel.pui_calculated_velocities2), - call(energy), - ]) + delta_calls = mock_calculate_delta_minus_plus.call_args_list + self.assertEqual(sentinel.proton_calculated_velocities1, delta_calls[0].args[0]) + self.assertEqual(sentinel.alpha_calculated_velocities1, delta_calls[1].args[0]) + self.assertEqual(sentinel.pui_calculated_velocities1, delta_calls[2].args[0]) + np.testing.assert_array_equal(energy, delta_calls[3].args[0]) + self.assertEqual(sentinel.proton_calculated_velocities2, delta_calls[4].args[0]) + self.assertEqual(sentinel.alpha_calculated_velocities2, delta_calls[5].args[0]) + self.assertEqual(sentinel.pui_calculated_velocities2, delta_calls[6].args[0]) + np.testing.assert_array_equal(energy, delta_calls[7].args[0]) expected_combined_metadata = InputMetadata(descriptor="combined", data_level=outgoing_data_level, start_date=start_date, end_date=end_date, instrument=instrument, @@ -1292,41 +825,43 @@ def test_process_l3b(self, mock_spiceypy, mock_calculate_combined_solar_wind_dif mock_save_data.assert_called_once_with(mock_combined_vdf_data.return_value) self.assertEqual([mock_save_data.return_value], product) - def assert_ufloat_equal(self, expected_ufloat, actual_ufloat): - self.assertEqual(expected_ufloat.n, actual_ufloat.n) - self.assertEqual(expected_ufloat.s, actual_ufloat.s) - def compare_ufloat_equal(self, expected_ufloat, actual_ufloat): - try: - self.assertEqual(expected_ufloat.n, actual_ufloat.n) - self.assertEqual(expected_ufloat.s, actual_ufloat.s) - return True - except AssertionError: - return False + @patch('imap_l3_processing.swapi.swapi_processor.SwapiL3ADependencies') + @patch('imap_l3_processing.processor.spiceypy') + def test_process_l3a_raises_for_unknown_descriptor(self, mock_spicepy, + mock_swapi_l3_dependencies_class): + mock_spicepy.ktotal.return_value = 0 + mock_swapi_l3_dependencies_class.fetch_dependencies.return_value = create_swapi_l3a_dependencies_with_mocks() + + input_metadata = InputMetadata('swapi', 'l3a', datetime(2025, 6, 12), datetime(2025, 6, 13), 'v123') + input_metadata.descriptor = "not-a-real-descriptor" + + swapi_processor = SwapiProcessor(Mock(), input_metadata) + with self.assertRaises(NotImplementedError) as cm: + swapi_processor.process() + self.assertEqual(("unknown descriptor", "not-a-real-descriptor"), cm.exception.args) + + def test_process_l3a_alpha_raises_when_mag_data_missing(self): + input_metadata = InputMetadata('swapi', 'l3a', datetime(2025, 8, 28), datetime(2025, 8, 29), 'v123') + input_metadata.descriptor = "alpha-sw" - def assert_ufloat_array(self, expected_array, actual_array): - self.assertTrue(all([self.compare_ufloat_equal(expected, actual) for expected, actual in - zip(expected_array, actual_array)])) + dependencies = create_swapi_l3a_dependencies_with_mocks() + dependencies.mag_data = None + swapi_processor = SwapiProcessor(Mock(), input_metadata) + with self.assertRaises(ValueError) as cm: + swapi_processor.process_l3a_alpha(dependencies.data, dependencies) + self.assertIn("alpha-sw requires MAG RTN data", str(cm.exception)) + def create_swapi_l3a_dependencies_with_mocks(): - data = Mock() - proton_temperature_density_calibration_table = Mock() - alpha_temperature_density_calibration_table = Mock() - clock_angle_and_flow_deflection_calibration_table = Mock() - efficiency_calibration_table = Mock() - geometric_factor_calibration_table = Mock() - instrument_response_calibration_table = Mock() - density_of_neutral_helium_calibration_table = Mock() return SwapiL3ADependencies( - data=data, - proton_temperature_density_calibration_table=proton_temperature_density_calibration_table, - alpha_temperature_density_calibration_table=alpha_temperature_density_calibration_table, - clock_angle_and_flow_deflection_calibration_table=clock_angle_and_flow_deflection_calibration_table, - efficiency_calibration_table=efficiency_calibration_table, - geometric_factor_calibration_table=geometric_factor_calibration_table, - instrument_response_calibration_table=instrument_response_calibration_table, - density_of_neutral_helium_calibration_table=density_of_neutral_helium_calibration_table, + data=Mock(), + efficiency_calibration_table=Mock(), + geometric_factor_calibration_table=Mock(), + instrument_response_calibration_table=Mock(), + density_of_neutral_helium_calibration_table=Mock(), hydrogen_inflow_vector=Mock(), helium_inflow_vector=Mock(), + swapi_response=Mock(), ) diff --git a/tests/swe/l3/test_swe_l3_dependencies.py b/tests/swe/l3/test_swe_l3_dependencies.py index c29f0dbc9..18aa9f3a3 100644 --- a/tests/swe/l3/test_swe_l3_dependencies.py +++ b/tests/swe/l3/test_swe_l3_dependencies.py @@ -43,9 +43,10 @@ def test_from_file_paths(self, mock_read_swe_config, mock_read_swapi_data, mock_ ) self.assertTrue(result_preliminary.mag_is_preliminary) + @patch("imap_l3_processing.utils.download") @patch(f"{MODULE}.download") @patch(f"{MODULE}.SweL3Dependencies.from_file_paths") - def test_fetch_dependencies(self, mock_from_file_paths, mock_download_dependency): + def test_fetch_dependencies(self, mock_from_file_paths, mock_download_dependency, mock_utils_download): swe_l2_dependency = ScienceInput("imap_swe_l2_sci_20200101_v000.cdf") swe_l1b_dependency = ScienceInput("imap_swe_l1b_sci_20200101_v000.cdf") mag_l1d_dependency = ScienceInput("imap_mag_l1d_norm-dsrf_20200101_v000.cdf") @@ -61,18 +62,19 @@ def test_fetch_dependencies(self, mock_from_file_paths, mock_download_dependency expected_mag_path = Mock() expected_swapi_path = Mock() expected_config_path = Mock() - mock_download_dependency.side_effect = [expected_swe_path, expected_swe_l1b_path, expected_mag_path, + mock_download_dependency.side_effect = [expected_swe_path, expected_swe_l1b_path, expected_swapi_path, expected_config_path] + mock_utils_download.return_value = expected_mag_path result = SweL3Dependencies.fetch_dependencies(processing_input_collection) mock_download_dependency.assert_has_calls([call(swe_l2_dependency.imap_file_paths[0].construct_path()), call(swe_l1b_dependency.imap_file_paths[0].construct_path()), - call(mag_l1d_dependency.imap_file_paths[0].construct_path()), call(swapi_l3a_dependency.imap_file_paths[0].construct_path()), call(config_dependency.imap_file_paths[0].construct_path())], any_order=False) + mock_utils_download.assert_called_once_with(mag_l1d_dependency.imap_file_paths[0].construct_path()) mock_from_file_paths.assert_called_with(expected_swe_path, expected_swe_l1b_path, expected_mag_path, expected_swapi_path, @@ -80,9 +82,27 @@ def test_fetch_dependencies(self, mock_from_file_paths, mock_download_dependency mag_is_preliminary=True) self.assertEqual(mock_from_file_paths.return_value, result) + @patch(f"{MODULE}.select_mag_path") + @patch(f"{MODULE}.download") + def test_fetch_dependencies_raises_if_no_mag(self, _, mock_select_mag_path): + swe_l2_dependency = ScienceInput("imap_swe_l2_sci_20200101_v000.cdf") + swe_l1b_dependency = ScienceInput("imap_swe_l1b_sci_20200101_v000.cdf") + swapi_l3a_dependency = ScienceInput("imap_swapi_l3_proton-sw_20200101_v000.cdf") + config_dependency = AncillaryInput("imap_swe_config_20250101_v000.json") + processing_input_collection = ProcessingInputCollection( + swe_l2_dependency, swe_l1b_dependency, swapi_l3a_dependency, config_dependency, + ) + mock_select_mag_path.return_value = (None, None) + + with self.assertRaises(ValueError) as cm: + SweL3Dependencies.fetch_dependencies(processing_input_collection) + + self.assertIn("norm-dsrf", str(cm.exception)) + + @patch("imap_l3_processing.utils.download") @patch(f"{MODULE}.download") @patch(f"{MODULE}.SweL3Dependencies.from_file_paths") - def test_fetch_dependencies_prioritizes_mag_l2_data(self, mock_from_file_paths, mock_download): + def test_fetch_dependencies_prioritizes_mag_l2_data(self, mock_from_file_paths, mock_download, mock_utils_download): swe_l2_dependency = ScienceInput("imap_swe_l2_sci_20200101_v000.cdf") swe_l1b_dependency = ScienceInput("imap_swe_l1b_sci_20200101_v000.cdf") mag_l1d_dependency = ScienceInput("imap_mag_l1d_norm-dsrf_20200101_v000.cdf") @@ -107,19 +127,19 @@ def test_fetch_dependencies_prioritizes_mag_l2_data(self, mock_from_file_paths, mock_download.side_effect = [ expected_swe_path, expected_swe_l1b_path, - expected_mag_path, expected_swapi_path, expected_config_path, ] + mock_utils_download.return_value = expected_mag_path result = SweL3Dependencies.fetch_dependencies(processing_input_collection) mock_download.assert_has_calls([call(swe_l2_dependency.imap_file_paths[0].construct_path()), call(swe_l1b_dependency.imap_file_paths[0].construct_path()), - call(mag_l2_dependency.imap_file_paths[0].construct_path()), call(swapi_l3a_dependency.imap_file_paths[0].construct_path()), call(config_dependency.imap_file_paths[0].construct_path())], any_order=False) + mock_utils_download.assert_called_once_with(mag_l2_dependency.imap_file_paths[0].construct_path()) mock_from_file_paths.assert_called_with( expected_swe_path, diff --git a/tests/swe/l3/test_utils.py b/tests/swe/l3/test_utils.py index e0d230c69..5391f2a07 100644 --- a/tests/swe/l3/test_utils.py +++ b/tests/swe/l3/test_utils.py @@ -15,6 +15,25 @@ from tests.test_helpers import get_test_data_path +def _copy_with_rtn_velocity(source: Path, dest: Path) -> Path: + """Copy a SWAPI L3a CDF and inject `proton_sw_bulk_velocity_rtn_sc`. + + The committed test fixtures predate the variable; tests build an augmented + copy in a tempdir rather than mutating the checked-in CDF.""" + shutil.copyfile(source, dest) + with CDF(str(dest), readonly=False) as cdf: + if 'proton_sw_bulk_velocity_rtn_sc' in cdf: + return dest + speed = cdf['proton_sw_speed'][:].astype(float) + velocity_rtn = np.stack( + [-speed, np.zeros_like(speed), np.zeros_like(speed)], axis=-1 + ).astype(np.float32) + cdf.new('proton_sw_bulk_velocity_rtn_sc', data=velocity_rtn) + cdf['proton_sw_bulk_velocity_rtn_sc'].attrs['FILLVAL'] = np.float32(-1e31) + cdf['proton_sw_bulk_velocity_rtn_sc'].attrs['UNITS'] = 'km/s' + return dest + + class TestUtils(SpiceTestCase): def test_read_swe_config(self): result = read_swe_config(get_test_data_path('swe/example_swe_config.json')) @@ -88,39 +107,35 @@ def test_read_l2_swe_data(self): self.assertEqual(result.acquisition_duration[0][0][0], 80000) def test_read_l3a_swapi_proton_data(self): - result = read_l3a_swapi_proton_data(get_test_data_path('swe/imap_swapi_l3a_proton-sw_20250101_v001.cdf')) + with tempfile.TemporaryDirectory() as tempdir: + cdf_path = _copy_with_rtn_velocity( + get_test_data_path('swe/imap_swapi_l3a_proton-sw_20250101_v001.cdf'), + Path(tempdir, 'swapi_l3a_with_rtn.cdf'), + ) + result = read_l3a_swapi_proton_data(cdf_path) self.assertIsInstance(result, SwapiL3aProtonData) self.assertEqual(10, len(result.epoch)) self.assertEqual(10, len(result.epoch_delta)) - self.assertEqual(10, len(result.proton_sw_speed)) - self.assertEqual(10, len(result.proton_sw_clock_angle)) - self.assertEqual(10, len(result.proton_sw_deflection_angle)) + self.assertEqual((10, 3), result.proton_sw_velocity_rtn.shape) self.assertEqual(10, len(result.swp_flags)) self.assertEqual(datetime(2025, 1, 1), result.epoch[0]) self.assertEqual(timedelta(seconds=30), result.epoch_delta[0]) - self.assertEqual(498.4245091006667, result.proton_sw_speed[0]) - self.assertEqual(82.53712019721974, result.proton_sw_clock_angle[0]) - self.assertEqual(5.553957246800335e-06, result.proton_sw_deflection_angle[0]) np.testing.assert_array_equal( np.array([1, 0, 0, 0, 0, 0, 0, 0, 0, 0], dtype=np.uint16), result.swp_flags, strict=True ) def test_read_l3a_swapi_proton_data_with_fill_values(self): with tempfile.TemporaryDirectory() as tempdir: - cdf_with_fill_path = Path(tempdir, 'swe_file_with_fill.cdf') - shutil.copyfile(get_test_data_path('swe/imap_swapi_l3a_proton-sw_20250101_v001.cdf'), cdf_with_fill_path) + cdf_with_fill_path = _copy_with_rtn_velocity( + get_test_data_path('swe/imap_swapi_l3a_proton-sw_20250101_v001.cdf'), + Path(tempdir, 'swe_file_with_fill.cdf'), + ) with CDF(str(cdf_with_fill_path), readonly=False) as cdf: - proton_sw_speed_fill_value = cdf['proton_sw_speed'].attrs['FILLVAL'] - proton_sw_clock_angle_fill_value = cdf['proton_sw_clock_angle'].attrs['FILLVAL'] - proton_sw_deflection_angle_fill_value = cdf['proton_sw_deflection_angle'].attrs['FILLVAL'] - cdf['proton_sw_speed'][0] = proton_sw_speed_fill_value - cdf['proton_sw_clock_angle'][0] = proton_sw_clock_angle_fill_value - cdf['proton_sw_deflection_angle'][0] = proton_sw_deflection_angle_fill_value + velocity_fill_value = cdf['proton_sw_bulk_velocity_rtn_sc'].attrs['FILLVAL'] + cdf['proton_sw_bulk_velocity_rtn_sc'][0] = [velocity_fill_value] * 3 swapi_l3a_data = read_l3a_swapi_proton_data(cdf_with_fill_path) - self.assertTrue(np.isnan(swapi_l3a_data.proton_sw_speed[0])) - self.assertTrue(np.isnan(swapi_l3a_data.proton_sw_clock_angle[0])) - self.assertTrue(np.isnan(swapi_l3a_data.proton_sw_deflection_angle[0])) + self.assertTrue(np.all(np.isnan(swapi_l3a_data.proton_sw_velocity_rtn[0]))) def test_compute_epoch_delta_in_ns(self): acq_duration_microseconds = np.full((4, 24, 30), 80_000) diff --git a/tests/swe/test_swe_processor.py b/tests/swe/test_swe_processor.py index 5baacb01d..19b3098b6 100644 --- a/tests/swe/test_swe_processor.py +++ b/tests/swe/test_swe_processor.py @@ -7,7 +7,6 @@ from imap_data_access.processing_input import ScienceInput, ProcessingInputCollection, AncillaryInput from imap_l3_processing.models import MagData, InputMetadata -from imap_l3_processing.swapi.quality_flags import SwapiL3Flags from imap_l3_processing.swe.l3.models import SweL2Data, SwapiL3aProtonData, SweL1bData from imap_l3_processing.swe.l3.models import SweL3MomentData from imap_l3_processing.swe.l3.science.moment_calculations import MomentFitResults, ScaleDensityOutput @@ -106,9 +105,8 @@ def test_calculate_products(self, mock_calculate_moment_products, mock_calculate swapi_l3a_proton_data = SwapiL3aProtonData( epoch=swapi_epochs, epoch_delta=np.repeat(timedelta(seconds=30), 10), - proton_sw_speed=np.array([]), - proton_sw_clock_angle=np.array([]), - proton_sw_deflection_angle=np.array([]), + proton_sw_velocity_rtn=np.zeros((0, 3)), + proton_sw_speed=np.zeros(0), swp_flags=np.array([]), ) mock_average_over_look_directions.return_value = np.array([5, 10, 15]) @@ -272,7 +270,7 @@ def test_calculate_products(self, mock_calculate_moment_products, mock_calculate @patch('imap_l3_processing.swe.swe_processor.calculate_velocity_in_dsp_frame_km_s') @patch('imap_l3_processing.swe.swe_processor.average_over_look_directions') @patch('imap_l3_processing.swe.swe_processor.mec_breakpoint_finder') - @patch('imap_l3_processing.swe.swe_processor.calculate_solar_wind_velocity_vector') + @patch('imap_l3_processing.swe.swe_processor.rotate_rtn_vectors_to_dps') @patch('imap_l3_processing.swe.swe_processor.correct_and_rebin') @patch('imap_l3_processing.swe.swe_processor.integrate_distribution_to_get_1d_spectrum') @patch('imap_l3_processing.swe.swe_processor.integrate_distribution_to_get_inbound_and_outbound_1d_spectrum') @@ -281,7 +279,7 @@ def test_calculate_pitch_angle_and_gyrophase_products(self, mock_find_closest_ne mock_integrate_distribution_to_get_inbound_and_outbound_1d_spectrum, mock_integrate_distribution_to_get_1d_spectrum, mock_correct_and_rebin, - mock_calculate_solar_wind_velocity_vector, + mock_rotate_rtn_vectors_to_dps, _, mock_average_over_look_directions, mock_calculate_velocities, mock_swe_rebin_intensity): @@ -322,11 +320,14 @@ def test_calculate_pitch_angle_and_gyrophase_products(self, mock_find_closest_ne swapi_l3a_proton_data = SwapiL3aProtonData( epoch=swapi_epochs, epoch_delta=np.repeat(timedelta(seconds=30), 10), - proton_sw_speed=np.array([]), - proton_sw_clock_angle=np.array([]), - proton_sw_deflection_angle=np.array([]), - swp_flags=np.array([0,0,0,SwapiL3Flags.SWP_SW_ANGLES_ESTIMATED, SwapiL3Flags.SWP_SW_ANGLES_ESTIMATED | SwapiL3Flags.HI_CHI_SQ, SwapiL3Flags.HI_CHI_SQ,0,0,0,0]), + proton_sw_velocity_rtn=np.arange(30).reshape(10, 3).astype(float), + proton_sw_speed=np.full(10, 400.0), + swp_flags=np.zeros(10), ) + rotated_dps_vectors = np.arange(30).reshape(10, 3).astype(float) + rotated_dps_vectors[3] = np.nan + rotated_dps_vectors[4] = np.nan + mock_rotate_rtn_vectors_to_dps.return_value = rotated_dps_vectors counts = swe_l1b_data.count_rates * swe_l2_data.acquisition_duration[:, :, np.newaxis] / 1e6 mock_average_over_look_directions.return_value = np.array([5, 10, 15]) closest_mag_data = np.arange(9).reshape(3, 3) @@ -400,10 +401,13 @@ def test_calculate_pitch_angle_and_gyrophase_products(self, mock_find_closest_ne self.assertEqual(3, mock_correct_and_rebin.call_count) self.assertEqual(3, mock_integrate_distribution_to_get_1d_spectrum.call_count) - mock_calculate_solar_wind_velocity_vector.assert_called_once_with( - swel3_dependency.swapi_l3a_proton_data.proton_sw_speed, - swel3_dependency.swapi_l3a_proton_data.proton_sw_clock_angle, - swel3_dependency.swapi_l3a_proton_data.proton_sw_deflection_angle) + mock_rotate_rtn_vectors_to_dps.assert_called_once() + rotate_args = mock_rotate_rtn_vectors_to_dps.call_args[0] + np.testing.assert_array_equal(rotate_args[0], swapi_epochs) + np.testing.assert_array_equal(rotate_args[1], swapi_l3a_proton_data.proton_sw_velocity_rtn) + expected_dps_vectors_after_speed_fallback = rotated_dps_vectors.copy() + expected_dps_vectors_after_speed_fallback[3] = [0.0, 0.0, -400.0] + expected_dps_vectors_after_speed_fallback[4] = [0.0, 0.0, -400.0] mock_find_closest_neighbor.assert_has_calls([ call( from_epoch=mag_epochs, @@ -413,7 +417,7 @@ def test_calculate_pitch_angle_and_gyrophase_products(self, mock_find_closest_ne ), call( from_epoch=swapi_epochs, - from_data=mock_calculate_solar_wind_velocity_vector.return_value, + from_data=NumpyArrayMatcher(expected_dps_vectors_after_speed_fallback), to_epoch=epochs, maximum_distance=np.timedelta64(5, 'm') ) @@ -484,8 +488,9 @@ def call_with_array_matchers(*args): call(rebinned_by_pitch_list[2], swe_config) ]) + @patch("imap_l3_processing.swe.swe_processor.rotate_rtn_vectors_to_dps") @patch("imap_l3_processing.swe.swe_processor.SweProcessor.calculate_moment_products") - def test_calculate_pitch_angle_products_makes_nan_if_no_mag_close_enough(self, mock_calculate_moments): + def test_calculate_pitch_angle_products_makes_nan_if_no_mag_close_enough(self, mock_calculate_moments, mock_rotate_rtn_vectors_to_dps): epochs = np.array([datetime(2025, 3, 6)]) mag_epochs = np.array([ datetime(2025, 3, 6, 0, 1, 30), @@ -500,6 +505,7 @@ def test_calculate_pitch_angle_products_makes_nan_if_no_mag_close_enough(self, m datetime(2025, 3, 6, 0, 10, 30), ]) swapi_epochs = np.array([datetime(2025, 3, 6)]) + mock_rotate_rtn_vectors_to_dps.return_value = np.tile([0.0, 0.0, -400.0], (len(swapi_epochs), 1)) pitch_angle_bins = [70, 100, 130] @@ -537,9 +543,8 @@ def test_calculate_pitch_angle_products_makes_nan_if_no_mag_close_enough(self, m swapi_l3a_proton_data = SwapiL3aProtonData( epoch=swapi_epochs, epoch_delta=np.repeat(timedelta(seconds=30), 10), - proton_sw_speed=np.full(len(swapi_epochs), 400), - proton_sw_clock_angle=np.full(len(swapi_epochs), 0), - proton_sw_deflection_angle=np.full(len(swapi_epochs), 0), + proton_sw_velocity_rtn=np.tile([-400.0, 0.0, 0.0], (len(swapi_epochs), 1)), + proton_sw_speed=np.full(len(swapi_epochs), 400.0), swp_flags=np.full(len(swapi_epochs), 0) ) geometric_fractions = [0.0697327, 0.138312, 0.175125, 0.181759, @@ -592,14 +597,16 @@ def test_calculate_pitch_angle_products_makes_nan_if_no_mag_close_enough(self, m np.full((len(epochs), num_energies, len(pitch_angle_bins), len(gyrophase_bins)), np.nan)) + @patch("imap_l3_processing.swe.swe_processor.rotate_rtn_vectors_to_dps") @patch("imap_l3_processing.swe.swe_processor.SweProcessor.calculate_moment_products") - def test_calculate_pitch_angle_products_without_mocks(self, mock_calculate_moments): + def test_calculate_pitch_angle_products_without_mocks(self, mock_calculate_moments, mock_rotate_rtn_vectors_to_dps): epochs = np.array([datetime(2025, 3, 6)]) mag_start_time = datetime(2025, 3, 6, 0, 1, 0) mag_epochs = np.array([mag_start_time + i * timedelta(seconds=1) for i in range(10)]) swapi_epochs = np.array([datetime(2025, 3, 6), datetime(2025, 3, 10)]) - swp_flags = np.array([SwapiL3Flags.SWP_SW_ANGLES_ESTIMATED, SwapiL3Flags.SWP_SW_ANGLES_ESTIMATED]) + swp_flags = np.zeros(2) mock_calculate_moments.return_value = build_swe_moment_data(len(epochs)) + mock_rotate_rtn_vectors_to_dps.return_value = np.full((len(swapi_epochs), 3), np.nan) pitch_angle_bins = [70, 100, 130] num_energies = 9 @@ -634,9 +641,8 @@ def test_calculate_pitch_angle_products_without_mocks(self, mock_calculate_momen swapi_l3a_proton_data = SwapiL3aProtonData( epoch=swapi_epochs, epoch_delta=np.repeat(timedelta(seconds=30), 10), - proton_sw_speed=np.full(len(swapi_epochs), 400), - proton_sw_clock_angle=np.full(len(swapi_epochs), 0), - proton_sw_deflection_angle=np.full(len(swapi_epochs), 0), + proton_sw_velocity_rtn=np.full((len(swapi_epochs), 3), np.nan), + proton_sw_speed=np.full(len(swapi_epochs), 400.0), swp_flags=swp_flags ) geometric_fractions = [0.0697327, 0.138312, 0.175125, 0.181759, diff --git a/tests/test_data/swapi/reference_integrals.csv b/tests/test_data/swapi/reference_integrals.csv new file mode 100644 index 000000000..f05e6e36b --- /dev/null +++ b/tests/test_data/swapi/reference_integrals.csv @@ -0,0 +1,10001 @@ +bulk_speed,temperature_ev,bulk_azimuth,bulk_elevation,density,integral +1593.120887400734,27.634828475324987,9.630910185167556,-6.114981052569188,29.85055579635916,446975.01 +989.9811915536942,26.45303599910264,19.832258626883377,-3.1593451582075094,12.962812263273296,1263823.82 +1745.4762558404884,2.543255908742472,-18.36090764968965,19.387975318065394,11.62991560665478,0.0 +1455.262452306855,1.183888468336133,-10.203222613542646,-16.632236389461884,1.9250056936971585,0.0 +369.5192261977692,4.051343280577394,3.90962993534258,-15.5339549166966,97.85727874922624,2670.02 +1956.1202329461607,2.061923791286372,-3.392221866989451,-2.5851863474370207,65.8530093162872,3755426.72 +1570.0514635826353,6.188379779924332,5.5022482618657165,-13.23025381261008,32.802474801374984,0.1 +1614.9157494985168,90.92686932916584,3.456173325551428,7.39320642565195,58.32878111488483,131443.98 +430.60453881598255,2.3021983685002523,11.519578715980376,-5.572898707371898,62.288321043208235,277043.62 +1010.6946882120208,4.342580589760772,-17.16388319437016,13.848298582451392,19.109967001489107,0.0 +867.4364436186462,28.19867048605336,-2.375357202862065,9.944421971326168,29.597949973802173,10330.5 +1868.1769799274832,10.431951654780136,14.402151587592016,-1.1677282160540647,55.18049764142447,1308562.93 +1358.957216145196,1.224211027245552,-5.489523786121535,13.79917566241354,84.13965544136794,0.0 +1680.970903887494,2.1056201903994287,0.1515522108098155,-15.967246200737758,13.829277853032076,0.0 +998.145557889196,74.21626760476423,-19.13685494825467,3.2439601838091248,85.97523877838155,20457325.42 +609.0296992125984,1.6081627025234475,-11.033044196628058,4.205318672392524,61.289624762585625,317848.97 +1198.252616628503,18.628829781767173,-1.4537951367061377,-10.159155446808107,49.47627507451284,75545.39 +314.8710609875156,38.42831107931398,-4.0412749494262545,-18.015146940388853,15.250099588608368,100060.28 +1689.7361095866477,3.3952997810294936,8.586195076405719,1.40795849853788,55.44048184126613,2350300.02 +1336.9959184197166,28.193955262398003,4.475199263661778,0.5470819823940332,36.00952916853711,578277.83 +1564.557932153673,2.1867058059996243,15.211300886579943,6.1444703740197015,19.707749403077383,5856.92 +838.1467426337631,3.7110819918808766,14.190828067896044,-11.48285036291862,88.11737118378818,2483.37 +1947.256443910826,4.203819513321763,-10.35120636934762,-12.814265529743928,46.596692425512394,0.0 +1807.618018379956,98.37165570862184,-19.29445083864516,19.116635574227416,8.895847190465956,188.8 +1601.090294732771,2.6862386310140636,14.178830788150494,-15.452460188617,30.911730523057617,0.0 +550.3496741335416,1.813071491924645,-6.835165435798682,19.976343440852492,18.968983134181723,0.0 +1040.0978067086614,71.02036091027553,-6.115611630375999,8.799070966096817,93.98527138461168,91510.03 +278.8467784170118,2.107955253323869,-13.664208072061037,5.172889532410547,25.063135150073524,24978.1 +477.72108572158606,57.3534885597809,7.720290645889309,-6.408660180560908,51.133274048610694,885146.05 +1429.4881158364185,19.994624629752657,-8.79564326556821,14.712124115407509,74.80672662091074,0.02 +1540.5718806340708,14.246985954227076,-12.930275957510254,16.40246449160835,16.69257675431661,0.0 +1941.517518381578,31.818333028338373,0.1356296424631287,8.875359999752114,44.31127196503335,5226.79 +786.4856446486735,28.31378398041653,10.0166362368577,8.39554316710684,65.67485887157217,48245.67 +866.827470862764,1.6636132812263933,-9.216056099001268,-0.2738146863418844,88.31341871241045,1829578.04 +1045.2004602964544,99.75443675726213,8.881560039554032,-16.88660538557757,65.75621404507251,28489.57 +541.0484463517142,76.52079138603109,-1.5209956131571456,19.961161761783902,8.928300961957156,8298.59 +433.858709603849,62.11320308268384,-3.849091070435926,-19.377784750879627,32.8345848481076,132978.11 +1056.2688672066809,17.562173684790928,-5.619165274553235,-0.1841040245730729,35.74228798463159,466630.76 +608.4368282915914,11.106639165639574,-14.176761387221609,-5.3146274924856085,39.43907147374805,110943.26 +1405.6651904285186,11.818358716634188,-6.694649326030899,11.04529434760892,94.22023538330764,9.87 +986.8734539701952,1.0712081998904193,15.170061225099278,9.43121455234452,4.534631863812597,0.0 +1698.8207529041074,9.975599479538737,-15.913323021117654,5.121988298815552,30.915187824091877,66450.12 +1460.4771836040484,17.6823155015124,18.33200060407211,-17.010458295105085,49.75313621201495,0.09 +762.2599544876739,20.76884846186304,-15.700138900487284,-10.52602209036091,9.553206400198464,18163.28 +1698.067642511362,4.616139556892299,-5.518734308025848,-16.23366280674384,48.87025811234537,0.0 +1648.5758434942434,8.76122231380908,4.252246952021768,19.15905446863809,11.605762803844556,0.0 +897.4610822543141,18.733598722833452,13.513656144325946,-14.88868416845429,83.94043925520798,2253.31 +718.9905870744394,7.188048860541223,-14.25668727703984,18.687708972696942,27.738354794954393,0.0 +1428.491907154956,83.99828090763944,-14.355911037662723,-15.491513102276864,52.778107068017015,15461.72 +451.5544704967576,25.756344168266853,5.1351249864690285,14.489213764924395,62.2134675826892,17037.99 +559.834764455195,1.0058830558587668,-8.290134703808882,2.985206991112377,31.266836088654394,301796.82 +213.25208555180993,1.1131635136843103,5.7800838807196175,13.26902634412268,35.780155278500104,141.92 +1616.463879503849,24.021515703628214,12.823328117181232,5.361358329293919,51.54108933752837,208587.8 +1396.7315418656578,6.687906534704745,-16.925179560498197,10.75348668420434,80.73803518567395,0.44 +1469.2976815274033,47.746539223980406,13.779764923111305,9.232464018569749,45.816495824567,12403.26 +1605.312255839542,2.218353835938431,-18.496585745822344,-9.59252092443101,49.598696509212,33.45 +1026.0483959690118,1.0657462866080445,15.953047411552518,17.40193170014838,59.99062871436719,0.0 +1223.734152715209,5.972617469682966,19.024725664001267,5.745844168986305,43.095932543125485,7554.61 +451.6345966297834,29.657067702961825,6.698208098431304,-11.91663525698793,72.88175727135624,134314.67 +406.1541323647522,87.79210590632289,19.370212197766957,-7.758318788506444,1.4858531221181863,211372.12 +1403.125331222849,58.520463700756586,12.879673685144155,1.3220402874206272,48.818953716811784,362797.01 +1047.9731710576386,9.292856350952102,-18.225379994647483,15.273069379766168,92.3786018276765,0.31 +1217.42499166614,42.23131127393094,-19.847562231901325,11.870124799841776,61.97447304724579,544191.07 +1576.997943348846,1.3824865529364845,-19.168060423109377,-7.918079731599965,49.1535745020474,331.24 +1342.4929760010634,13.949052061297332,-1.9237216032247728,7.539452490963208,77.43045871167517,38829.6 +1196.4429211843924,70.56621540116606,4.935304444706574,-19.93372679697703,39.9070735106573,367.17 +1206.5728893417445,6.205407338958285,-0.7411270919788393,-6.694358100362048,47.257315857621414,450686.78 +747.110176512702,83.21493136714926,7.085213032582485,13.583808966672931,20.32081241934076,33025.22 +255.47210222229097,2.7629319813239523,-2.015894635484856,-13.951952083767395,13.296210939886532,2076.28 +986.0913006182524,1.626550753063797,-18.297447875584453,-5.864189447137518,3.526749692964149,1955.08 +586.2524110751525,11.207910961964137,-10.953331805959174,-19.958267317165618,73.41938148168788,33.04 +935.351558704345,65.23696435074456,19.70496946418841,-19.074690951748117,47.350821303712976,366213.89 +1736.125531882699,4.19332417123196,-6.165446492053404,-14.15924035989339,93.99597171010085,0.0 +621.0910745576133,39.84012008552521,-7.0093704902108245,-15.925477788057808,18.504788919405694,6894.72 +304.94493504031885,2.1796889963141792,-13.888318039233027,-0.4108262507202198,25.154359538716957,68619.91 +706.4910056395938,30.984236006225466,19.485748884758387,16.000174643635248,64.23386870692792,396697.6 +728.4687639800305,13.00330899656552,-10.78162713629605,-16.61433174388643,6.405170877438113,37.99 +1391.449726508411,2.2388961564941026,5.873062690154134,14.793474780653678,50.83791214789547,0.0 +1202.657874214301,27.300745023271535,-18.318101673912185,6.726313532939869,13.234570223736153,66468.69 +1611.0167763915442,26.76160935455112,-17.34110679746579,-13.244204982865702,16.97834797139229,158.08 +1395.7643725892976,10.736691096737378,8.670067892800741,-8.410540231859915,51.697887460941374,219301.35 +931.496350592127,2.824459002663182,5.406726513868971,-12.232660697764503,57.33801012192928,65.54 +1665.2366923988625,1.839025640864362,7.206495824826216,11.571938270223772,21.991439746884275,0.0 +500.55125583386706,82.13156473936321,-10.76118371414912,9.004014250872508,27.852622970943003,1068729.75 +240.88173164094889,20.493921885437963,19.39555930088963,-7.823626146893319,29.12665117574594,3950087.61 +362.0861493961552,41.54157584850004,2.3350064863298226,-17.82662681621773,15.039172971745398,46417.17 +1500.2468310736106,24.770858478507073,18.781926890747545,-13.25036960110129,96.6063643652958,3686.74 +1031.3790144524974,45.598161284808825,-13.433177880984791,5.195054453047372,69.52779315502309,211191.62 +490.2892022604833,2.11339969055539,-3.796019606348806,-16.385087743527865,11.973341311291255,0.1 +1101.8805951860545,9.860534321858538,-6.572579240461529,1.4586200336964297,36.35885801025999,588596.73 +474.1617848837031,21.58984582473246,10.202997068234495,4.517160487021705,18.087676764400666,71247.92 +1453.3766751399248,1.6098291969695293,9.90285744420365,7.510144338715206,24.2042271991669,14.13 +1003.0812960332552,1.994866782112806,-0.5382482672118671,-14.985770199376706,94.00829983687468,0.0 +885.8382069736684,18.53383056879104,-19.35407983130655,-1.6117647656086032,14.538542376239132,651456.86 +742.7217604661778,54.62753557265376,-12.99177163280222,-1.4641351230810518,88.10136123865576,2135443.12 +1334.5086676139993,20.933042629964753,-17.989373315613445,13.41130387872174,84.34166845035911,163.48 +851.2626989961028,1.1814344402331636,13.880582769967154,-1.251319611906343,74.6231569385736,974811.69 +357.7698547689818,87.2701724553415,-8.409137308089317,-3.728169583601497,50.175480368167634,2393256.6 +412.4106238169276,1.9011386968615096,-15.283094523973071,-15.06158203797584,26.578397822297266,9.92 +1931.4157961891265,2.9182632570331273,-5.833105388736355,7.778574044832123,83.26700670359101,7.97 +1835.4452432736928,89.111666133481,-16.90842735334549,4.791579253863425,83.57342159829226,875690.84 +1459.4728408593492,34.839025072572916,19.15428539595988,8.677994015233779,53.00628353926635,250282.64 +678.5659306271352,74.67123955642083,-7.39968394608804,6.251330198687266,5.713725255200651,35800.35 +1944.517479225903,41.043027217441555,17.32266795559213,15.011353108674449,20.103156873096808,0.68 +1601.7516271384302,20.11263397276196,7.309147634421023,15.09384425092112,6.552262491095717,0.0 +1490.402340486192,3.7077120441706617,2.644279496959734,-7.692669692485383,18.80396377973594,68039.96 +1008.8507038588197,4.505706342993533,-0.9801201151017302,-12.703517636521957,51.33370679666662,92.78 +690.0348113212863,78.44082380510926,7.495204272135507,17.059100051902263,85.5631721547081,108122.35 +373.50373187629873,52.63216468757036,7.451013341846737,8.521596223317518,65.67044641465132,1421787.47 +1824.684313778915,5.235774057162128,-19.579157569569425,18.839096008592954,60.489393982812736,0.0 +1020.3973217005,5.578723479055347,16.311349821133568,-0.1217718559702829,75.04740066741441,367495.05 +564.2540566314145,3.9390253934190222,-5.281463182493904,18.489734263716382,64.35123598129326,0.0 +750.7219234711745,4.490144166401748,-5.86907513828018,-15.091248243864651,44.89929918100217,6.15 +1242.5952240954127,52.64230930354601,-3.736378244680232,3.6145824805267024,81.72098108104721,489471.24 +518.1910092906171,1.0495755692786726,7.411312212357362,-0.1305877813508704,31.70826257488925,408388.86 +1741.905711366276,7.449124660515508,-4.959290558012519,-19.89420314058669,92.88337582091091,0.0 +1565.3351537033782,76.85627949625837,-5.046757522911887,-12.284051412842052,12.502867669212664,13310.57 +1495.0333207116862,12.169499308772709,-17.461404814862256,-13.861113951066615,64.13030939356467,3.61 +977.7674715951866,7.959606175356009,-3.3343334229228683,-17.567628461537844,50.551118950973525,0.01 +1329.1559132643977,4.2144374199865755,-14.020860918249848,17.9259630231217,43.15040401098988,0.0 +1251.376344042924,1.405481908581664,14.223570162391216,18.614687390846324,43.54192159969645,0.0 +1369.723882798676,2.811725736017471,-6.619556672108535,15.66999986426875,5.178544879865679,0.0 +351.9997780518004,1.516759835659509,18.434695922466812,19.55523485895672,75.39986668141836,0.0 +948.4533239070972,1.7922511157769463,7.381120102679284,13.226568694707057,35.88236093604443,0.0 +274.9055129514065,2.1234062350096607,10.246061393092948,17.287242804067752,48.18699934036432,2.49 +1089.183474640134,4.01845273168641,17.910047256109827,-12.094754818657094,84.91181461008193,19.83 +793.7501821990136,1.052042682555666,-10.442609367333397,-9.724645626372784,58.133741606956335,4028.47 +460.1435399588844,79.48547450461609,2.691638787690689,14.482643967885457,85.29222292055947,609286.45 +386.12534190059296,1.7686348787145745,-18.370967820217512,-0.8214508414957145,14.570860061713226,19453.79 +1257.7602299198816,5.838452412049958,-15.969652481772233,8.678897091337783,28.899937419756014,58.34 +507.067343366395,57.41893320720104,-5.336523201248484,2.476363678596938,23.565309028681725,184245.94 +1865.216213078235,1.6335631965100803,7.3000740249976115,-7.774450395904688,88.74709379170113,44490.49 +1245.910051460711,9.272748984929429,13.267744096221378,-8.60660608831771,78.37416231956787,175091.74 +824.3656481627067,48.929096354834805,-9.743831901061084,9.927184063763942,83.57598483318891,68769.56 +1263.6478846665502,12.999458086147676,9.963088545504286,1.2838045211716054,57.2996724518909,1038136.14 +241.0469678534555,2.634433199904366,-11.028353702078002,-5.624572775088046,22.85414226610978,44548.93 +1925.4065838346016,29.58142307740854,-19.757775755346756,4.681587940958658,38.32283905937208,163393.76 +1068.1461864972205,23.050594231224984,-17.82347900177063,-3.2024966163843027,55.47978644492904,421312.49 +1608.9234090505151,5.301170995043723,3.422344912228854,-0.9970062701031956,2.878879143297018,118855.8 +348.9139998603894,1.2376285611590665,-0.1140981562274534,7.1163880539230195,64.32458450645501,31337.25 +1075.9849955086886,1.036882106214981,-9.182990882822711,-1.6813919211740205,85.63208019351741,2455761.3 +1083.2725898381375,44.749250550421266,-19.738085655886938,17.997624514309972,33.237897215939086,9726.82 +1888.0876189549692,4.39657739974439,2.720413970136049,-0.5922946675124185,68.2991646657138,3615998.04 +1229.1104942769357,1.885991787195601,12.704265473186066,18.472912820897815,48.87276560259911,0.0 +1052.2809219025169,10.891870079058128,-17.25820488306486,13.90752618709788,1.3937717047815186,0.06 +680.5561935654084,69.44909510975837,9.458978295752305,15.637094472693477,29.11522709867518,69670.83 +796.8241952165939,1.0398285298856664,5.38170407856271,10.531013190816072,53.25816512876081,0.0 +1137.210324448768,1.2950516255660027,-0.8258091119546052,4.181025638562192,72.76593935908555,964426.27 +990.040628549084,6.8247989977498085,-18.06634580095791,1.306706434978664,40.80134297003571,64863.33 +238.90174378459477,22.487015202974018,16.942856655691827,2.066204837396919,19.438294156284854,2123653.45 +1687.325463549844,8.95779083729992,-0.9023604429302924,-11.941810348942798,7.04392236081669,26.32 +1813.08938931158,62.38739858953315,-4.015721564751837,-11.424205084414163,71.75451790996146,99756.37 +452.44836019749937,1.2250931486544436,14.459016083509397,-18.633526870210012,37.13909270090756,0.0 +1197.265058370289,4.789406941295618,13.823129159349511,9.822412099143394,65.06331618571461,2.7 +395.4363340437984,5.04307908508827,9.090438120000952,-15.005459761466769,22.953432020488066,1135.22 +1410.032167471661,4.789106025776897,13.174399316000338,3.285965253075762,75.7138681782707,1122618.0 +706.2208109102149,9.448694866825525,-15.026860760682377,-14.483076061737862,35.094230404284865,486.75 +1386.9607424454232,38.12010519117123,10.436622203213672,-17.33813074185663,6.184499334215462,8.65 +1508.590305716389,4.322800895923175,-6.878636680634886,1.343774741909054,51.51311647177004,1795679.52 +1583.5654854517827,30.829495170694702,14.69979173873111,14.923835711568078,73.41321808031442,0.17 +393.93370272061384,1.963048106489236,-5.1907413605256325,-5.7594225958637635,93.31721863664109,450142.06 +1848.8213212476944,13.226645424119818,-17.827841915196984,16.76910035250621,97.11492031221648,0.0 +614.3851836107855,5.625693294865742,-3.4247905291853753,-19.58771447317808,46.185541109409705,0.04 +267.3426011171236,11.979028677102525,10.271081403054453,-1.3704396650772832,61.57546235046811,939808.5 +1198.73444490467,1.642477771516792,0.0372824391758941,-14.12942235658977,56.16487181633706,0.0 +867.6601109523898,80.70969265806639,10.545356472358732,-7.368780453273076,53.82061721581843,466928.69 +1693.6215376383436,64.92743312738293,-18.58905036535572,-19.0507308720108,12.33937240549978,92.94 +1654.8526497157432,44.95651199214049,-12.91343185595884,-18.586100511920097,67.41563948000552,2.45 +770.8500070808876,61.03313056974165,2.5443172417117577,8.512547480438002,96.5617545872986,91041.72 +1915.218911125541,1.9650596604370043,-4.587449846094738,6.181603101274482,13.553485971559668,7023.36 +723.6521086522135,10.172871203835845,7.207029746807989,-11.666581947553286,31.873596283777964,14097.53 +1127.1028326170865,4.323329313058256,18.50216932481688,16.045959098320676,8.627941639980696,0.0 +660.737163021685,59.53493483634382,6.394478428020558,7.519077441279474,40.875506846013685,97313.5 +1884.878426088134,2.392629014744578,-3.3054842046960076,-6.553075990731179,48.68553948840509,410619.9 +496.2940716476327,2.753535691995896,1.694560737733628,-3.693872851515394,36.443791025759396,287468.08 +280.83911490619215,23.628106119449072,16.51305926784682,-8.297768122739232,48.18163227372212,4472202.32 +983.1747080054683,1.5059110435045306,6.9195698664885175,13.22392846815597,80.49371979837134,0.0 +1986.2760153005067,29.156430486060277,12.127179910181113,-0.2416026280827221,22.17843573330177,667804.33 +1805.019079258845,3.4375939522885144,-7.93926363593866,-14.587696477789873,76.03919782192345,0.0 +1547.4944350225087,20.98315218859028,9.7728462735309,-11.93145017528844,79.53551175519928,13818.06 +1803.4264835813449,55.728271472118294,-14.422745226405528,-8.136837064492429,58.53217997596781,257950.49 +1808.2039514561536,16.566194136185864,9.9910246562087,-3.87387301489281,32.21679756763967,1016849.89 +1133.9450486956082,2.662977313312682,15.262343712096978,3.705596070368098,93.71358240290732,519566.66 +768.6722932954274,1.2540967751408876,16.00929868213687,18.566599206281435,37.02645205301909,0.0 +1589.6223777997784,1.228083632845098,-15.336397557894092,-9.522854249103814,5.942197306620675,2.08 +1390.99027370197,1.5053024345659276,13.19528210294937,-6.86385737169692,14.472697346388037,43386.33 +872.5839119726782,14.442282138467522,-15.602539089278531,-19.04191998014708,89.26741055879704,2.39 +370.0400025107275,4.970907801452366,-0.8641218686894847,-5.0979217980528135,15.84767163864136,52348.46 +1544.2213004282469,3.063472278899001,7.300861187446603,7.003098649387702,45.29202001847539,2914.18 +672.4289286611564,2.745447324855017,-0.6300355395300317,18.522448450019994,69.50518452132503,0.0 +1886.2636709608023,78.91563651897638,-6.403615911594112,9.607581154137716,57.79082539144344,24617.05 +633.7470350102326,1.7283558016156642,7.35284629983421,-15.280139493488768,65.68379832126325,0.01 +420.96427834067487,4.070322508568865,6.435151004275759,15.601544090705325,35.53265178809143,6.0 +1696.002809824831,8.769089932035598,3.315706206622684,13.547165155222508,66.56137770542583,0.0 +475.9117699240893,1.0020722883025956,1.1371465910692755,-12.439102241710335,1.8994719267278577,4.01 +522.6829546839303,69.48745006451605,8.229595964893527,17.37371505938863,27.061773409895675,151056.14 +1278.8890247375184,1.5783277108022162,-3.878517731953939,8.563961779009585,13.236384507108877,0.01 +1774.211673507436,23.17080921824949,-17.249270090306467,11.312693563317296,46.07103474806305,21.92 +553.5823982862319,18.102183139238512,1.4981804076489436,-1.6344134332955518,15.43648515369847,56463.02 +758.5826112201706,41.507608346717085,8.938222089753465,-11.97265235613324,55.18973609548805,51853.17 +1599.3287088341197,20.080543401865786,-8.033603695357328,11.96420858155073,18.88583908466991,1.4 +1949.2875669097411,34.57600675867096,-14.369954474562707,-0.9022902090141738,42.01220281547302,751953.88 +1101.334135164216,6.958204967275058,16.473647766484763,18.69721384346814,8.347929885300111,0.0 +459.0155045922514,9.493120402075975,14.549986589847832,-13.8666192368656,44.558046795589654,19084.73 +225.0853178747628,25.311868427049053,4.737368771652766,-5.783859442952117,80.99034464476661,1713460.08 +613.3808539979394,13.704192236947366,11.464286148163048,9.42188195205294,32.37322464618201,9698.98 +437.2799920157379,10.54574098881836,18.752212590976868,2.891264660211408,70.925356894186,5799799.24 +1419.7856125031435,2.577014202843279,2.770359229073631,-2.6689970503534832,43.17262323092879,1538500.83 +419.298508331356,3.2825890890071703,-10.232732615986407,8.0644214869291,24.186971331830065,8535.61 +1111.393876917139,5.211880891645425,5.552479621304851,9.334042475500476,31.044381370479325,56.45 +1449.6723841571957,1.0436833876675091,16.583747044018153,3.091960526400319,30.955248386905335,183768.55 +1246.0098965976242,6.834817128960276,7.6059280559392,-7.235864063239239,74.49551189312207,557471.46 +559.5961729881037,1.0128309208922293,-18.950384354023875,4.750378158482809,20.892660148453153,3565.93 +1647.424147128073,13.490587770867982,16.685304154500628,1.8097000208716851,97.7993814699574,591470.06 +1487.732833308443,25.589248862064583,10.14701021015872,11.90624004806005,69.0609419558297,92.21 +1530.1712070479753,13.31365391012346,-3.9267594641040793,6.138313811765763,40.714288831874,98302.6 +435.90395280316386,24.38035058539034,19.499675573962634,-0.1291301007153711,99.80239696974702,23010516.38 +422.7568465706202,1.00006064528129,8.86717331342188,-19.251811791149475,22.4009832653836,0.0 +1869.612591811714,1.3148734209516533,13.017643273427666,-13.322387245264098,76.5282102546132,0.0 +915.6407488848932,24.941632837856275,17.726662369993473,-6.536228309890979,27.822752860763085,401899.18 +741.7076452056915,40.34598250935871,-18.416861411157356,4.05514502400131,54.812880679971144,6958976.85 +1079.45128163276,27.252298786713176,10.976793761467146,11.694350077867108,6.387715489005094,208.02 +1393.1555829744484,21.184805697879945,-4.54614258568792,18.398164717086377,84.79945449393533,0.0 +1920.121862684546,25.987549383721618,14.76300051595099,3.9922157661610447,37.24903830833407,277358.05 +715.603208387699,30.142540394724353,15.155834237329318,9.153759815252482,58.864152695216816,381855.39 +1864.6551727616488,28.10314969597548,13.144738820107706,4.857648198533462,92.8010993384201,590643.17 +244.74708449526136,29.923814604835613,11.16802342611174,-2.788891091196044,3.994425813031055,210374.16 +1199.3564761882844,1.406175137170923,11.77131338499731,4.3870674671153775,96.83372624670145,1024773.87 +1341.1552010259531,1.33826802939066,-8.137899971135699,-3.973081025005354,52.99275554129942,1468510.5 +390.6153267513559,5.275211620173746,-3.738871754944366,-1.8544244867937332,78.29391081888389,333447.44 +452.6112747150427,11.355164472777918,-15.397804371877562,16.440155530296835,47.83143179497906,14227.81 +954.4057747693467,33.51491388589423,13.223660874464564,2.5543864811298533,81.77486998903075,316391.92 +1939.2174418577272,4.671062062090557,5.840259032986346,-15.983562243495438,88.1753239338637,0.0 +1272.8765958218712,3.550047412278032,4.508668604664741,0.9506269810714184,38.78573153145049,1127731.52 +1879.44179888038,36.55077721632683,-10.156878435738088,18.130408595934057,72.540590831624,0.0 +1647.8496481033474,3.152635074048467,4.601443362063602,-15.99828526963211,99.86318278600146,0.0 +1041.2868827995246,43.8210473878184,-1.8179309927538376,18.84749232487202,75.9560358838494,18.46 +1612.5742086539374,2.2608257939779595,19.81075226662467,19.505614015925655,95.73110292691176,0.0 +232.1062111585779,5.2353659699788215,14.522730909497511,2.42852665056557,73.92510577340339,1724591.14 +396.4591941783229,6.34090459491644,1.039315276262287,-6.702450821551205,33.65880680868217,84437.01 +1692.9715067889254,3.972106594618835,12.338222691947012,-19.65461304648429,82.88801581099533,0.0 +1634.2707589852912,1.0155792706994242,-13.419799965666469,-19.379799620514827,66.96773570723597,0.0 +618.7533355395807,2.958138580677202,-15.943980034935938,-4.476183941548997,4.273729371671003,12278.8 +1155.3852630782962,4.734859731981793,5.226031987014559,11.322871757416143,18.070970466044848,0.0 +1290.8284772600196,4.238866988571726,9.071433117555706,17.694940901282447,26.866027778153494,0.0 +1761.93011679682,37.24868908345782,-17.877742427221285,-13.80886779517521,74.6128169100214,1082.72 +1285.592883209706,1.2437569629290746,-11.961465952087185,-0.4898957845689322,79.91613327035694,2376223.83 +942.6288246926246,5.99649394258769,1.4907190768989498,0.0690253873284074,82.86165823433787,1372108.92 +873.5312781329288,1.1885868227753658,-17.48733601644701,-4.787864984172061,7.654259016056376,11816.93 +966.5877554723178,72.65995628823951,-3.0378865486520112,1.598242651339108,8.14351146573881,31133.31 +1373.4758460439534,38.055626328907216,-0.716808821667958,17.000889272315945,30.644878561057205,0.23 +1761.4831371541848,92.11348179001337,16.8723892855337,-2.458833979307271,68.44309637941898,1478272.04 +1017.0143877373396,66.11820632604417,-7.372940144164772,-14.48881087634506,84.37630597978233,34643.78 +646.1112133124446,4.281791781404324,-13.253261062598622,6.617982698266935,87.0681910433156,60148.97 +625.992253395646,24.16388858759692,-19.699669651241024,-18.745019018663935,21.544016163827756,73116.42 +1542.8257044382035,4.103062901885966,-15.13567575825406,17.604610579666197,76.97411283715803,0.0 +1669.8237741630387,59.76162194964521,10.034639952846312,17.595506243612956,64.4367183422133,0.32 +389.50054373742495,6.629881101197853,-2.2031247013541355,-16.314295856682776,92.74627189777571,3931.76 +319.8059425193207,5.6464447610131625,-12.050998290537391,2.0354738336152645,77.51324334178781,187340.38 +1269.9805947616132,67.31897402168798,17.321107772882684,11.895614736501914,53.33350713312712,280905.16 +463.1118395468569,47.1498782061713,11.50153273754897,-1.4168608101592506,78.53623399971617,3338208.0 +1684.3955428214144,85.66967251095701,-15.425412346006077,-0.8491346179630899,31.51949177367033,324674.59 +758.602413063334,1.3582389207474708,-9.24170580426602,18.808000140225232,78.82837870085106,0.0 +458.9694793480568,3.0667456369551314,13.977659301051832,-10.779676280809,78.33567900148414,21236.74 +1857.7468504774104,3.9968283364201223,7.697266711896806,1.0524075559046642,85.66565044968539,4175748.81 +497.9571009235007,7.0583651495587025,17.821808570494856,-15.40127354129801,24.997209317196923,5427.77 +712.496148208284,8.836089209938988,-16.95002247721439,-7.9023939888464145,85.05108314731791,94384.47 +476.5041113457055,3.8277613782619033,11.016448916749203,14.036177099569628,17.735971630942814,3.55 +407.8821145976389,38.09788322419523,-16.943543366257423,8.65794629910158,77.41806125702934,6838393.95 +238.0664294055921,2.7956853391120347,-6.533522572312691,4.48015147582669,93.06183142712496,136915.69 +299.7117364956682,24.719212251415374,10.026750727013042,-15.444457402077582,4.544013346782434,59678.28 +514.3546476845348,50.52852621450932,8.440398970105157,14.027941981480735,62.97525206049073,279457.88 +296.0874787289157,16.121167053396025,-19.915287074390267,-8.075628111295,66.29958053306015,10821216.63 +1264.0588689997485,5.10878765533949,-11.922282685975816,1.3993137580327142,81.69914735439853,1767353.66 +1425.2861482391115,2.375650148525279,11.14294706214245,-10.661012062794375,11.17951650788383,9.1 +908.5348222976507,1.8564890363488409,-14.954099495411135,0.8294627427690182,91.03363726839342,805330.35 +772.3839745136889,30.785731569011077,-6.944843761615984,2.485581393562657,99.38492485616376,365769.7 +1108.1472266400142,8.674890372390392,-12.64441972414708,-6.3812623297478055,67.53842200980877,506807.53 +1775.0088960222954,1.2377675771710894,-15.54181858357416,0.2368658783836341,43.56336533382706,732088.8 +1732.0369282799709,92.82800433960392,13.46502981292046,-3.757904966079879,63.866524021906095,630019.82 +278.25511162302547,22.00930688347048,-17.546330205926598,7.8998164074501,6.415905520007008,624512.13 +526.6971372737434,48.79385180711455,1.441997932916963,1.755653326458515,75.55038245600792,149813.17 +626.1407679879128,7.522762355258609,7.706820468369648,15.123044012369125,7.926692491115043,0.81 +648.8976364979812,81.44740309274756,-17.69639125382447,-18.01432169918424,32.936508848754656,1349365.26 +1228.2187731369909,2.506398037646459,5.337070825924584,-18.934453653319288,14.80047356324534,0.0 +949.272366265746,2.345698801091505,-6.6373793903546785,-12.458025892177918,72.87808421100289,8.14 +288.6574158696692,60.34891543397722,13.341808950963806,-15.256936962892729,59.84839774973453,2953727.41 +872.5054492272288,60.73431365852257,11.906384888716223,1.0358309118515496,70.221177254856,661019.91 +1142.755307691747,9.95494743108036,11.756201488665852,-11.994637936560611,7.392046944959543,501.81 +383.00942522668873,1.7847307677800692,-4.053460633517663,-19.358055013583304,37.6702273404468,0.0 +1700.2253968194077,4.077865678757676,12.901927590016491,-8.695117782876359,41.21079695543357,25887.81 +293.5313596371877,32.23329301005181,5.199280160441027,0.3681215096254631,60.63745451312459,1043080.3 +1864.715364232512,49.202120015446965,-4.85265738793903,8.570205922104881,11.130739370699626,5805.13 +378.4036548437759,4.9580339411892105,-16.773201781783264,-2.464207724602847,65.07646094633066,533138.42 +1718.434912875955,1.3257674852281789,-17.327243492850496,18.50857313507648,40.07515886908178,0.0 +1824.7756590697109,21.45128748097345,-9.943934622464711,-12.021893509185052,90.68607638963046,6956.86 +1963.227225055867,30.129649732223637,-8.016614219813306,0.5624793736957967,45.53110484405513,1577331.27 +1643.6465844924685,7.04740697151914,17.101131657885766,-9.872650829798689,11.105085790786422,556.89 +1603.059573388392,14.662067793463116,19.9975221547604,12.26671634738012,11.236800096551931,29.36 +1356.4698967919858,94.35023692048448,-14.253046101992789,-12.489661557114944,26.175261733753576,72356.5 +1602.193438240632,3.090275499594026,17.710729598508813,18.46404350104569,24.741351313594148,0.0 +442.1939751436647,13.994435589576216,8.26160046741001,8.664259824890873,79.87193418077426,50282.52 +1164.9224647057472,16.669432972841424,-0.0556732653390135,2.2746032457422016,72.51646642200225,903011.76 +1125.601166342746,12.537599482389538,18.18746557395617,1.293922826708371,8.59059925154415,17054.73 +1743.6298594206037,54.734242989930586,8.547727292852016,-5.501190564077176,85.291970945702,1395131.95 +1033.0388580683286,16.218663520879307,3.74618088476304,-19.15895759335982,10.516874432075088,0.05 +893.1610929806362,10.370030764058436,-11.61892943920995,16.60495063679884,78.77715353261402,0.0 +1351.2138882267982,1.7620979799579413,-10.222241925168408,11.797493447021653,12.050092514112782,0.0 +679.6339715015229,25.492850469281414,16.46006944264982,-14.60567670406344,38.259476057698464,124616.3 +451.5831397171224,1.8374465853865412,-11.39844875221657,-15.116815752289776,75.34213161094608,14.55 +1060.1790932427425,1.1301596215598098,-18.70775942821368,-7.675973126055378,26.109864090906218,1125.51 +950.4008634707932,9.48554581749901,-9.350916084618168,10.52557616396454,12.219664215178772,103.11 +618.6258929519727,13.96016477183449,-0.777771215510743,0.1266012074709754,78.93233138351617,409537.62 +861.5212582072304,99.5653266154207,-4.721409570713675,6.168395334535783,69.40658160094013,150920.45 +859.5064096872453,26.58603602566407,17.432119944402245,-19.752228800120047,89.23552534966186,2431.89 +789.4920159425818,49.794415681338016,-3.25703822237994,16.948181927053042,64.51370040862588,1868.41 +883.0353435084721,4.929195894202304,15.56210750659262,-13.372567481822225,8.321121274697008,6.38 +1434.3380218207017,10.419079820252383,3.78651735957082,-7.243948986859521,64.22483203535543,595349.01 +734.3776542283135,88.82556555249377,0.9649868964740982,17.886022607706114,82.42820011121984,14752.66 +1907.9442680876127,6.8356072902398655,-13.592174693824276,9.31574140960823,9.284175960283235,0.03 +1849.42643516872,41.16999835121509,-9.158723448791095,0.4426682182591257,14.433636951002294,377570.99 +1065.6387709401415,11.27140968497802,14.686671072761106,14.516640572136188,68.0791584416521,0.03 +791.0501690084399,2.804940822109499,11.19828845931096,-17.549507731369193,79.34171729477588,0.0 +1163.7826216940057,14.482291156422736,-2.1030654220367495,-16.948286682245342,35.961956857996654,0.83 +1727.4088797925242,2.729757429939354,16.3608861707316,-13.793563246638424,73.79089851748978,0.0 +1374.6572130081836,1.0140374156273837,12.767148123474149,-9.41715867320978,17.569455021822304,40.24 +1647.9052903047393,2.963411971148857,-15.516626674839811,8.361186718005236,44.9565260948828,0.21 +1158.9000969183323,2.4338155677263473,4.237219752092121,1.2967051646438676,75.04943182296799,1984666.72 +1339.2517326817174,5.518770757273596,11.95372826963236,-2.9582166674064014,20.699629221819933,487676.58 +718.6801055284311,59.86787009358316,12.333765117366976,11.303539637360185,35.540738205230106,284093.05 +1522.8076921585234,5.966314565570533,-16.346352883594946,-7.313576065530172,63.27751736806666,109494.2 +564.328267626293,49.0202198839951,-11.015553218785543,-16.581701644147813,35.253525620442495,170757.39 +1450.636631873297,12.918914983939908,-3.478427327643292,-4.129344667314703,87.54166885026143,2036376.76 +1749.2943229866094,1.035689106821733,-9.934756222352274,10.656450942244252,95.7158854037397,0.0 +437.78510714277905,2.38491785944581,-15.642474132080189,-1.0365713931380105,64.58666164014436,178846.46 +1305.8835329754556,72.87122837813098,5.1520171864384645,19.0859172998814,78.45762368010024,26.09 +371.1723468138823,16.156485396447025,0.2989380615091885,14.24509214334508,90.76295331049911,11953.29 +1506.2881308885685,72.29257881562751,-13.800409828057845,11.638154337969834,70.48407442237274,9924.4 +352.0877938823364,4.170998566697304,3.4552798510830707,10.927223989533813,77.55810356593247,7631.0 +1884.6916808611268,27.109702804399912,-17.51940186374143,3.244962780132563,8.941700924891583,26516.65 +447.3342740680439,34.99857159872315,-4.678357629067564,16.04598808442114,82.5525058406454,51197.74 +1925.9844426363447,89.41269917254967,11.700718541615478,3.594884502008928,28.18189632732901,258195.39 +1641.591516953174,1.087308958686778,15.601985462608102,-5.098539728568414,8.009647889603007,58837.99 +1268.6276080394373,80.2554307866196,-10.190614688017703,-12.163945064291276,59.35768065835054,62874.76 +1608.7233883331844,6.069884611391536,14.380351959568545,12.52379652006526,23.451909999158055,0.0 +1631.2067101695543,47.422539996246165,15.670311205103811,-5.154508004279661,8.904839218416473,54950.48 +1902.8487130711944,12.28643355813788,4.275292184157582,11.63612937559922,61.346582107338456,0.0 +656.0900369105369,13.467875284341575,19.2871159049912,19.32011280829146,10.75668018558373,132.4 +1262.1366116449565,5.233060749148229,-10.152967104287724,-4.051736059676947,88.83552543436578,1902170.93 +371.0885556159222,45.38843210440686,-17.241030715908256,-6.370349156794997,96.95797583121464,12328518.13 +1309.0982600434183,3.3730838843120496,13.737726075342264,-13.19628856779322,74.08104070481247,0.01 +508.32434736701987,9.649010352426556,-0.3627736320178298,-0.9859359544885392,29.47866093800561,139038.24 +1216.9111006503954,13.193165108435458,-6.141844835927128,6.160738484650703,56.6915642203427,128401.87 +1230.3749252609296,30.55217879071511,-17.790686740363956,-7.488530514767344,4.107183028176583,20302.66 +1038.7732753662092,8.775475823675807,-17.41502084715806,-0.5733756412254554,62.51855217345541,166680.8 +1140.7371959236211,22.938541339307974,-16.371341972724295,1.4829119400617952,27.120235457478273,101080.2 +1575.0621020118583,9.345191228973798,-12.654299177773847,-8.990506342697193,46.04740390806102,75668.44 +1638.64048972172,20.82769810090591,18.81603696894224,-19.059542374377617,18.70793887666061,0.0 +1085.8757880357723,22.299080350150874,-8.743834317513999,-11.375043298630311,98.66861484672036,72374.46 +1279.268194740702,26.235123989827272,12.68189201809058,12.125985452495469,21.535031330669497,84.9 +1876.2252242421832,44.319983263737925,-19.223448784022317,-8.877506274721089,42.276575729910675,198321.85 +415.52045930202104,12.06271652331933,-7.127397556071968,-19.44712269067096,26.205472254811188,542.64 +410.7864186201989,2.435321639258898,16.247697319441784,-3.002053732591987,54.61717330502754,108242.09 +357.87622143938313,22.870817227607382,-12.598368684740503,7.298849651545747,90.62887455925082,2399845.79 +1384.15391307295,1.4263830421045554,-8.639059183460954,10.09637758554454,17.17545792693614,0.0 +953.494941422683,2.741006370612053,13.060595268521942,-3.4440663992549325,14.94047521465255,196709.29 +1593.778549055318,38.39857054895375,-15.144332541917096,2.8743356594690983,8.332448570265733,49204.03 +1408.2165439554667,7.415497428916645,-17.87267236910463,9.820330061116266,59.34577942642557,29.19 +800.5479649908287,9.9103350016248,18.63907019948977,15.569660094025943,60.605621009147136,119.87 +1817.0597852507644,94.36128294590752,-3.8083296525129606,5.595969435703401,82.31764725561762,443564.24 +1572.557864727174,2.9535543822062884,6.314850791124611,7.634510712678817,83.76017177731777,229.75 +686.9628936383162,1.0942221430782757,-14.91536354394594,-16.052994886848303,11.09230278141506,0.0 +855.5456319896972,1.6701105484046768,-11.192904085325468,-3.1819884926227804,91.14200970394292,1510764.9 +765.9919643676732,3.083214354952394,-1.600769673603044,15.558353994236697,83.10892754179457,0.0 +483.7009675249994,28.30349382555328,7.006128697151106,-13.571197762203536,65.07746021878317,58948.94 +466.01007057594495,35.615911538363804,-8.270083554936342,-7.6016231546116275,35.358950901916934,256336.48 +1885.0294340763392,13.52003786844506,15.385350041601672,7.118542576365399,74.81301576432205,13008.92 +988.227266957756,3.236628078363951,11.245760144930165,16.08295855929817,62.44669817747074,0.0 +889.9756809993377,11.05309210643709,2.0623156343415516,-17.638385334477604,35.9515983018668,1.64 +1513.4342756192802,1.071309884240596,-1.6315526624140952,14.81967905661925,2.312315773086267,0.0 +1195.38751745522,23.09946308751932,4.781701709700359,-11.187091444684754,59.65363668663817,49665.59 +1885.051976309232,16.927589193230002,9.266526657881808,14.434232436005129,58.07260944421751,0.0 +1604.542689036906,1.1055873954428186,-14.601988188371203,15.569422598265316,16.303219690312012,0.0 +1062.865215424173,43.05496765119966,14.10565450243542,11.019297013622666,90.72628948349636,36206.36 +877.4470522654872,33.639774068330475,-0.4238886536901942,16.95266198408835,16.76836413896165,43.13 +1975.9367808637796,4.134733198680151,17.413759592382064,18.446323557029775,29.42251869029066,0.0 +1491.9684248065582,18.653198045593797,18.22169584456461,17.007444109920154,37.826816407833206,0.0 +1912.150388006914,15.958274345024211,-18.771327159276595,0.5251628116406293,68.61359986607037,143387.32 +413.2614389906744,1.9335729350292752,-4.620760969244122,-1.4529294737003529,9.082372460031728,71092.57 +1730.9606225434086,2.435110101311708,1.0489365298506126,-15.791749600778848,70.53506930748523,0.0 +1346.7329911841737,23.249427996784863,1.5838195250948317,-11.356361241487988,42.033298668503114,26113.41 +419.4590210032026,73.63822177143004,12.895734673880362,6.0946154318496815,19.111679269520796,1301171.02 +1258.8643999445972,14.209167747874003,-14.35584050284926,-14.906327094157849,12.09596625154633,4.55 +1434.9734571898075,13.665524059558765,4.899307587796913,17.69522118127718,41.82126425370264,0.0 +222.1448345994851,19.650037766532616,17.703879513810502,-10.91816018619121,45.15229472768006,3982361.04 +1017.7723313151438,7.606004891173457,19.86764775217146,-16.482760411829013,14.59285180369071,0.2 +1685.719120153378,1.2833469624247678,-19.596578360810256,-10.59018753824172,48.764116769313205,0.02 +731.6462456193617,6.208800329118411,18.902691315937687,-18.04353641931693,50.741421706900425,0.77 +1025.386547237392,63.16906085822371,-15.111598888788157,-13.356414991983826,98.12004126115112,448078.37 +996.1654287222076,40.7280484610392,1.4780215087744877,3.5073625429334054,71.61712601186115,321514.49 +743.4693045964849,71.58913866191321,-10.145207628662414,-8.433462456233055,2.2047254711288717,21617.19 +1853.1954119279976,2.021450775518562,4.255641495761329,12.046417019525856,48.20995177809509,0.0 +1606.3292637767286,10.2781633137284,-18.518936331984097,-3.8106505949703577,3.1373933478544545,5502.36 +399.0591397929989,14.772578607853378,-10.466692773088244,8.558584408328382,51.61008444957427,108016.86 +1994.6623841076312,2.6293658617159967,-7.976974672041108,8.331755509149632,34.45577330229721,0.0 +1782.5600437539415,2.5231349449856326,16.624287283187353,-14.568870359660648,90.4471719189004,0.0 +711.0351881552701,36.64931529404666,3.3451818739384898,-17.736744645403565,49.83561054511924,4196.44 +1706.4138433896887,22.06499503727879,8.328388894388944,13.679759599173682,85.14052193952254,0.02 +391.5551573684892,19.695865670629036,7.040607332682813,8.034040091780007,58.80337002760109,100060.89 +1998.3885148536297,3.4195969099352093,-4.308466536032687,-13.000763632163084,40.25480535446902,0.0 +1398.2325249917665,10.316653598048712,-19.439157257516577,7.199675871274747,23.740990010613626,4836.62 +1370.2250280058345,1.1120899268201163,-15.719169469351964,-6.821280812930155,19.13255250383936,20235.31 +362.79330857143896,1.8192488338197763,-1.6476606238519986,-17.72983665654761,79.6600833239506,1.62 +1814.6601180139255,10.876814591551788,17.65179115471601,-10.849490896102065,88.41566915104126,905.68 +252.19910576804497,4.162407076807005,-10.049687702658352,10.232194102294107,33.08442193273325,11733.69 +633.4905044740647,85.37672938028139,7.932748784738157,-4.3709100684275715,49.96663989958303,865381.83 +457.439375299943,8.769391245913281,13.063833724054277,1.7944807814978558,29.462659342197068,78653.28 +1598.1822932459934,1.4693603374145732,16.271411367310403,-14.538312829194698,46.07414571558766,0.0 +556.7676089832162,1.0856371456224516,-8.26054351969196,-16.293581858551036,87.07964593804368,0.0 +1839.1488088355936,28.21731898387237,17.251326982430154,-10.429910446342303,14.659480945156515,3391.13 +1381.2842707894822,2.202994820632296,4.3192904215271755,-1.0984940486314043,29.857116656007364,1104872.29 +265.09287889045316,2.374787410951423,0.3362713647109538,13.879646867749264,69.8318854744958,578.15 +209.77370143166084,7.040677394222251,11.135705274435388,10.535664655171647,31.751952277881347,252970.76 +292.98425062591804,3.3738143282888244,-10.451495465541392,-13.597423547058352,9.034461070339356,1360.39 +1290.6653197659098,17.106224190176217,12.503209261638562,-17.141135681936564,38.06612283721866,0.29 +1642.6672595469474,9.362353056540988,5.9985077776694595,-10.979690182570568,67.96280802583755,4933.79 +629.3950771292992,1.6707105034762937,11.974645153814008,14.093139388188426,98.41648852553254,0.0 +1728.9359172615314,37.10920887693476,14.228887801978363,0.633899738886825,89.32215650269247,1160313.22 +303.0174922758687,7.10751375476374,4.693897720951266,12.276103252368502,56.625905725722696,8366.41 +1641.7349365550172,16.65975610625371,-18.530595679661232,-5.216711962552343,77.95598021737419,127224.91 +1870.0317743101048,1.0183209181815895,-8.090093594733382,3.6177237849856247,57.567429368839285,2135820.04 +1589.795118387885,17.897817150012177,15.120789798463443,3.789313716474561,49.89581151434112,290059.35 +1456.617411161547,3.678745247588944,5.0782604384278995,5.069123804582225,17.89262776057381,124437.74 +1708.3643935796897,9.744094483036134,15.60225450482308,-1.193949014546538,29.924782228505364,403402.68 +272.27233918471956,3.939500932749892,-4.618859918028488,-10.430415950293002,45.75858216426001,36650.97 +563.2077992942997,98.29275079405112,0.1890982322929835,-2.860606036241009,98.5747609510749,828724.0 +424.8626227501575,2.895240394422134,14.503697686836556,18.990338257783183,61.24767630295094,0.0 +1108.155782347376,66.9451629457979,10.481254310334512,-9.115509945580463,94.5429943787111,239656.36 +1541.33863099192,68.53828982418123,-4.899954748509248,8.99313331406657,26.609609316337167,20869.23 +1334.0213202375176,6.95026407442408,-19.09478855834179,17.78916613352008,7.828154474740713,0.0 +1732.035979571483,4.055143535300273,15.213582526308208,2.6502269525114475,97.85913258459595,1377080.65 +479.3833863939636,5.781906891965318,11.454273859312778,-0.426560619968539,33.63280462904132,152118.69 +1522.317965483291,95.20903750714996,-2.0335667713414285,-15.16648820950936,53.995305794824944,13479.59 +547.4746835640274,17.281938474769724,1.8496194856074455,10.130687581927416,8.04315152353707,2915.75 +687.3657523720404,12.290243166804808,-11.827519314637811,16.45964056212307,86.17876280745243,10.7 +1477.828455106347,1.179874357705978,-3.515956406565257,19.227392615302357,1.067328840172891,0.0 +1964.3686128176273,49.62334786112813,-13.472182919541847,-11.93369995648986,90.69517747329267,32186.46 +1300.7784907587252,1.4709940349410997,-11.577217056366562,16.802216520584842,17.371715543655146,0.0 +298.1005669843321,1.2414943117901938,13.8547797329371,-5.18928182498688,19.16434958524667,52487.94 +1309.356145869559,3.545815811063033,-5.501104888873227,4.766100533457589,82.75414570413768,690166.55 +276.2309928443008,8.944935434177024,12.588932917054452,-11.053974551066649,39.236811882861026,309549.94 +1791.462280460271,61.741605716677995,-1.0440054380888686,-10.064409149678708,26.345764724034805,89207.81 +1477.240913181117,38.032738569584886,-17.168888963769128,4.758326330399196,60.04766257084059,163296.05 +511.6301235605058,2.484644670711305,-5.538912455751954,-0.6066847856735391,26.186736349202658,249733.52 +365.09781048355654,5.548288773576278,-13.669061815559402,18.575933267559513,29.368193019430112,77.17 +530.3598119845742,36.3480008249992,7.7430565850537025,-9.421443167798865,5.509483062137907,15868.03 +1964.0489231975464,11.328825698476978,16.455761872698776,15.121466472244837,54.4017166862781,0.0 +1025.4091564252817,2.2334893401875164,10.523022564533754,-1.5810131523390236,13.81249146534652,323650.26 +1611.3457070145344,6.195985679976928,11.137504345841831,-14.617837374785188,83.87501641548909,0.0 +1345.5350157939984,17.85959511521427,14.474661867750656,-10.434931370230544,75.35099338302442,41093.58 +1230.3436699255471,88.39981367281474,11.066586031276591,10.227984704386053,29.260468195226764,24959.45 +461.23445839708944,21.06803881005392,2.7429300962676706,13.065349950574756,53.84407915748986,9620.27 +1902.844016404571,1.077433127328129,8.571051578400098,-18.41746642527977,58.16031225984423,0.0 +742.4167385264923,25.704937560458657,-3.361809844160293,-3.5988145375882885,66.9787178132936,342059.61 +1240.430988453576,3.1748968131323205,-17.16848096404826,-0.2330939814308763,42.473155479421514,183347.84 +1459.596700260319,53.00512077713258,8.223191813791493,4.601334226291192,65.60068497610072,389206.11 +1368.619679441556,5.858410728497714,8.866438563605726,6.024685660004545,17.769576833639537,34070.74 +1893.0699374519331,2.507437262350107,-11.051096382839772,13.22234943446369,47.630854424999775,0.0 +467.1901818561044,8.627686838679239,18.157662553012223,-9.064417446645582,10.306620448409015,171292.27 +1115.0349292044957,3.2388881354577883,-17.899542694420273,-15.522874709424537,94.16591066188742,0.0 +927.2619033333788,2.962395074801895,9.43836193111534,-12.540529054367372,40.73952746035829,24.32 +1053.5037130687126,14.012757345984422,18.73913554509302,17.473849246637382,62.12670851623544,0.6 +414.5915471559403,34.25252103468889,-7.634008892000783,1.8672851391301748,49.491817873274734,530733.92 +441.3702977709776,46.7636873554986,16.498616724335214,-11.236204304037823,3.654938869846591,304192.83 +700.5359824062633,6.242229631844978,13.057450129218768,11.434590903946376,7.2086362896813,20.21 +748.4682867694963,1.360214897901987,9.764378610849375,3.4802960205032063,27.19106851024488,294004.82 +970.22578462643,9.28859435164921,18.15166271231448,-5.306888040677196,67.8185708768407,92922.9 +1299.7775846659308,7.371620244426245,6.162282992336077,-19.26789879218149,64.50203265429923,0.0 +1342.3324113528734,2.4771818909425267,-0.2047739053706765,11.311458415075148,19.606554132980623,0.0 +941.2596138540264,61.98545625987782,7.027240872082623,8.697662634535783,49.372708094745974,46514.37 +935.8095969716549,88.77619072168041,-3.527048296902504,-9.5157339329256,37.339060489205785,68886.66 +591.7313480545315,1.269095710074466,-7.004513063484592,-9.37520103586699,57.28588309189753,27954.21 +1258.9512471362148,39.038467420504,-16.710174998738903,-9.140478819769488,34.13394580687735,92385.9 +770.6736403710282,19.562894636940317,-4.879656863584172,6.816791190170228,89.72361198354714,132624.32 +264.9077016992547,3.3332855247294835,12.12780233942743,-8.232908643467978,47.76944064483251,59471.53 +953.1200794823488,18.634263679221053,17.817431530261896,-7.585489798720788,43.23120586367513,170245.49 +1053.4388151623066,1.8083662095167667,19.006068702921706,-4.935240244360037,70.62930312261246,28323.13 +606.0671627675798,1.3766166455941096,-11.738965161599404,19.208053050907033,78.28808630143612,0.0 +1230.4242796198082,97.0461140910366,2.857270479038143,-1.5960637223449805,44.31771830905324,296979.13 +1218.3894207774576,18.73871115631479,3.0299263347004057,-4.904985787133711,11.787059510751158,162175.07 +1463.6039259986685,3.2095581539336635,-12.958098217786524,-1.1990808942241182,9.42381245883401,265964.64 +1366.307267962178,7.944524556996043,3.2651281107775665,8.76814019387384,33.360554469317606,344.21 +1374.3795017378568,79.46508725491053,-5.489486387288496,15.347629411980927,73.52564533568159,952.11 +769.1854732832776,7.541368051709466,17.696257438646175,19.632072649935548,65.71023959959976,0.0 +1617.377999574717,63.225032899590445,-9.791911990971345,-0.5574308531954264,29.48580008385291,458179.63 +1188.459890479423,54.65355243213288,13.398447820333974,-1.5942786409309928,1.4349441875490332,9564.7 +976.5527513238022,4.878795697847268,15.874225132508846,-6.787536656265765,64.62458737926872,146171.39 +1326.8224656939028,24.661415944336284,9.434890221314628,11.16370458512458,56.875634055647,707.92 +849.1832020104576,20.940980267625868,-11.412908884421435,6.223446719931065,77.47642995704389,120216.38 +1122.9306402921648,34.86773537064148,-9.585237265341252,-5.465419457088099,68.93041728223477,514514.56 +1526.0702392679966,5.3933465713182125,18.844714618789684,0.7416672638520572,25.443127119548603,32246.43 +1795.5251961026738,1.27195866141724,-16.966837355154247,-11.76716906859344,73.55703763336429,0.0 +1857.902955131345,2.1982570883309616,-15.31656371183496,7.759745945239085,49.151727626857145,0.38 +1106.5392653295785,17.104381530415445,19.142789375120927,-9.915058115458915,57.90289845011854,117634.39 +1136.4952065330244,35.49771299938063,11.075790967628798,-6.018157239097617,36.342325569165794,227521.56 +1639.7667393749057,32.51601154435287,9.85535404240843,-17.275256772330852,79.26834408393385,3.59 +766.0112451395622,14.701551521303008,-13.591689554171984,-11.205182482004735,20.412673010601843,9954.4 +1707.2882522211237,1.4774619036969892,-0.4424467389432385,-12.204697967004714,21.24939902729989,0.0 +1089.454963731362,1.082872324484051,13.630504099382472,9.41226734031574,24.505182481162617,0.0 +408.5421038034831,36.66768692762093,-6.845171951631093,7.778711537592575,79.16566654774199,595285.79 +329.70646473129864,12.553154337316249,-12.28939470342358,1.5257523541967857,73.08228397762647,1100160.8 +1715.5877798710335,36.76412257929656,-19.56218728927468,-4.517739541209536,27.689174118841297,447737.34 +300.02225043238025,2.1162984943451058,4.901699394430441,15.576524783503274,15.24457661698428,2.74 +705.1005850405807,6.528995083087093,-8.24758758872822,15.363333908925952,3.7907802178153074,0.01 +801.4340729027825,68.91893761105302,14.546897075141626,4.113406927959331,68.69862777947529,3237506.24 +511.3900013448688,2.2039207940188614,-8.659276529618388,6.317921800937998,54.34843556535251,58580.56 +765.0080656435806,1.3275589276253486,-13.936967512619866,11.858028227610408,70.52912130567113,0.0 +1536.8466201051542,20.27378177887631,18.41790048017273,8.910998344849501,71.11725485357019,5637.31 +226.42911840812735,15.455130668461612,18.59108049018038,-11.00394071249677,84.63282766651446,8337207.18 +1688.9121641372355,80.1790694774386,7.400953134109605,0.1344280678462928,42.180666566189835,651608.06 +1741.786442434205,65.00351511863168,17.13542810385085,-13.924563851931037,82.90014186391322,19261.16 +870.0708317447867,31.539934017830852,-13.526656750048687,12.375234139619922,44.14098171430849,8236.36 +476.50321830914265,1.0922309424499814,-1.5863656011882288,6.143074553963763,71.07431970127206,71828.58 +1281.5127343011457,9.13637542175347,-11.833644361428878,19.16364869909001,55.56305302000453,0.0 +415.4106005568098,61.973193072415256,-0.8486696721988363,-14.53961254254152,92.2210456857601,555181.72 +856.8548499408545,7.367195186870319,11.647119949872224,0.4059073869361684,37.64271690403742,403060.2 +1925.1725256217503,84.00235066322857,13.79711388000254,8.960413530455028,69.29288577908085,32676.0 +1991.836050650547,20.18254647813518,-19.833424229292,14.69369330143406,60.21140193647691,0.12 +1589.788804438254,1.655443088859466,-4.4198641320055065,14.135909249551853,99.86958421090333,0.0 +759.7307178573792,10.436242221656292,19.762747484499027,-11.92002158288452,8.648915663553034,23632.94 +1437.7970884989666,24.61695157241338,3.5725984726014026,19.292837546394743,60.212777622833954,0.0 +1469.7314578712228,1.3512569617596877,-8.152162812081926,19.253711505679977,24.01187110010918,0.0 +898.1150512945695,4.889889713260788,-4.440229598329486,18.76234591326294,88.53440787193414,0.0 +1353.599542255087,27.174535298037785,-7.097450134648287,4.544512387823927,79.6554016733384,533520.81 +219.30976095621725,2.0613072208411287,-2.096062798782623,13.277410338953546,66.52209686962051,1804.7 +576.3037854840346,4.973702408137519,-2.2205346563345785,-16.95865569196782,48.554512249988754,11.0 +1145.1589453410702,23.97842452815944,0.2745322078985435,-9.781583331675442,68.44787814260945,152384.93 +494.7523476649326,35.56983116094223,-1.419759712307069,-16.320163981324363,55.87942550867699,17267.54 +498.63236217776057,10.88989237534966,0.6445473982593652,0.222428681692115,29.442607465245807,117127.54 +1705.3477229904283,81.98134806775485,-18.88044198699268,18.5892063804463,82.12279330190663,1252.04 +1980.4394048304896,70.90252760012062,-17.822924140910267,5.9668300092882065,51.74503047843234,277129.87 +1200.744970451207,8.848590719437581,-5.1542410716808895,-1.549915319082675,26.454792464879556,591612.4 +1710.3255155870845,2.0919380543261052,15.397662569678726,11.713429437308092,66.77071307201518,0.0 +1982.5789957872903,35.14496602111653,11.633292136063368,2.013448141301022,2.8455360050874545,66851.38 +454.8725994237944,3.063932199810432,-15.593854323537446,-1.6940933219841847,72.28884911103847,195139.04 +1006.842103857832,48.48893215557327,-0.2067616502660785,5.173127240734474,47.56316439646569,138637.55 +906.6308885154558,14.93787023153163,4.183490839126254,0.472027474628045,63.79710736130472,639838.77 +344.088710563133,6.140249420524904,-0.7524302865964128,5.661808495718721,16.564546248290785,20989.68 +1559.59431103054,12.964826736037224,7.902665479162443,12.105480830179664,72.10695457702789,0.06 +980.8022491806672,11.63101288690597,19.890526323580847,-1.5032595381754763,72.60433239197471,1004007.62 +1044.7884815427224,70.70753412551386,-16.141034802513147,-3.399150051601403,74.41746581691609,4180761.63 +471.2113528638323,2.6836513888365374,0.6213612582800865,2.34662149045342,47.252786191499155,292919.97 +525.6679740155627,71.83182576058404,0.4948585185021326,16.19014536443438,64.4101328498403,94653.61 +1832.786519881187,1.1552662417282935,2.495151909227289,-3.0807086496436,55.37626655277698,2858727.53 +280.368360153702,34.54669955699279,-13.321301760681692,13.909988799507428,24.074904773044388,926037.83 +619.1341128986712,69.07744431370818,5.534311639568763,4.686514823257859,3.279263954250247,15967.73 +725.7067945661511,6.139095395945803,-18.22636309644895,-19.504114136297844,41.94410698416989,0.01 +1082.3555763228555,1.4000204324538723,9.64493947727287,-0.951897138102722,81.6767879258292,2285051.13 +1255.6013114266327,40.675702567541784,6.526381025604486,-11.578582881778052,32.901506482371204,33837.82 +1087.9219565311998,48.49865687440501,-6.783053263493475,-13.985345596978252,75.15118182965752,25472.96 +351.40760220238764,4.704514115957982,19.559574444001974,-10.622484547120417,64.32688524082624,1417316.4 +638.6014173002844,10.89397994343301,13.151135306847127,8.496773886113594,35.97313640155775,11934.44 +1718.459092572574,41.58513694625318,1.5814254017609295,5.095308995974013,1.056980872121981,7265.46 +1347.6596608612265,2.4215082582964547,19.620416397424265,1.4741251332820535,43.66961289690864,18909.92 +1368.468290241694,18.111378751334243,13.2036257491312,-0.1892583832021044,39.89217014729406,578427.81 +1406.365859632439,7.265429936186254,-14.480908794535411,-4.432879766923823,14.73552121596098,172623.82 +1573.2254342711524,2.2327058202674728,3.642424167577083,15.46271581523868,82.05403646640632,0.0 +304.5952670986052,46.01298567180467,3.2343054673179816,17.298169522651854,95.59278242133053,916528.97 +859.8950928787023,4.460275290296816,6.117806868779989,10.57751190151321,13.003053170492228,5.16 +1171.1493834710216,73.93536671833871,17.630263663097146,-8.471018140060295,23.863175790517495,1419861.32 +809.2216699351868,13.736235869719003,-0.3187234677662864,16.5545632972696,63.61718806250604,1.3 +1720.0619719169358,10.691040205023556,-16.90474145264739,12.765415071494347,95.13533924097231,0.01 +1068.6305154571291,7.024442930109805,-0.826745578986019,-15.038942290231368,93.4659311080284,2.04 +1583.5296610268824,6.3290974076443725,11.511775476605717,-6.3328979691144704,93.20307741861116,1189392.22 +1733.6279303861045,43.24466624784205,-5.655649008257995,-6.895762546836197,44.57435298520448,585228.27 +1108.6246692262964,22.646531669627397,-18.915803763162327,9.201871246809112,98.60437675577433,322957.73 +1837.1940389684296,35.26795372199635,-7.870271123734289,0.9559424235985592,37.101665531760744,1009615.22 +1256.8230929665651,6.952937399061094,7.285997788118479,-9.324616626103335,9.583237028253386,12432.61 +1730.4937379006992,3.333300361438309,-16.559622876564738,-10.768215323130097,70.73947750601783,6.18 +813.0634320647437,1.4918681321011664,-4.961407652430059,-1.6997982759820074,56.0622595592837,1104836.85 +1097.8705253566734,35.75295810252876,-14.67476659996658,6.638281190451236,80.14520015321311,118611.34 +1156.53987380824,6.7694418354241295,-0.9628563307524328,0.3490373643085886,62.48967378575234,1388166.21 +388.96348861292705,10.433912351900924,-14.339460329116491,-9.558659627226538,82.24404258398305,493346.42 +917.3945120627732,8.683333282912375,-15.638520999611586,4.799402838655014,35.04524179740978,54952.71 +1851.207810593017,7.282419837237275,7.911951677140108,19.9564923086481,29.50575694349556,0.0 +1335.4980326565362,23.32379169808371,-13.67993645451957,-12.933249949799563,75.96738467316915,5201.07 +519.5118483865415,16.4994030437497,-13.808168216646898,1.1359830273737126,50.274153896563696,397892.12 +809.9401440972889,87.92403233206987,3.70076701864444,-4.973754801139534,18.76014099436648,50839.85 +544.8854173928597,1.8958667735016237,-18.256247537366058,-11.263364700187,38.126900334974,336.18 +244.68163723743055,14.029384773763914,-18.68029484799229,15.019689165670512,80.26510391930948,3742242.82 +1869.428825307248,1.3380746000636417,-2.7421492421157367,18.310820100014848,92.46829596080508,0.0 +1006.7731908623688,41.28923509528643,-5.396180671017627,-5.992168698219267,76.27190487614902,415725.36 +753.563130357415,17.08530226378363,1.784776086619817,-6.1083767481241535,72.09440027772011,360170.56 +1277.258944803926,7.190475849836111,19.739384691609935,-16.32951659375379,81.35314703479428,0.0 +213.16602132742815,40.22270828711984,-2.6117401589683276,4.710128632878461,20.852497460067763,653932.62 +700.4397918814649,8.128402803880498,3.042335098287654,-18.93818572396143,58.37853489266822,0.79 +1465.4602382580067,2.8547770098324956,16.769745047161063,-0.1515832546670648,59.8243877416614,411963.34 +1340.7855915246732,8.810519611272868,-0.6728358791446576,-13.887418692821516,94.64736022670324,12.59 +1967.250705576564,1.3856820566476784,11.24482102288551,6.892731386116853,2.5151499849467553,5.24 +1316.6438773844793,62.4772951580239,1.94610143770928,17.1564037652023,97.08177760554402,86.01 +1059.510572529919,28.967882449893757,5.488289912946174,-16.44869246308029,72.8813189007645,1025.08 +1570.578613731214,33.16130189864452,17.300097611086827,11.109619232385688,3.2214039936299703,89.49 +1825.9901695352955,56.10306757482828,-19.971849267292477,13.222724110995262,52.36244270816636,30850.98 +1497.252704093033,38.29527368366594,16.03759557007902,-12.951747712437376,7.908645454174262,708.73 +1933.7802023888833,7.30642920360429,-0.092319213718448,16.905692065281688,60.73608124320288,0.0 +1607.609307328719,1.726922321482791,4.270574769662163,4.8367135755533,45.70911360015043,537866.05 +1760.2425888714677,5.581225373478632,-1.997681121499544,1.397477660116384,77.47020022945428,3272712.77 +405.38732813054696,73.81921605398492,-9.563254825907055,6.856500191295467,58.36345935361217,2394537.05 +1518.344305388818,79.10081942091404,-17.359712395323076,-8.475634611936611,78.8516554580461,1630880.62 +992.1596591492636,34.33536994535745,17.805028379330786,-18.9835653307512,37.50982407611851,2522.32 +1195.586844340295,2.5636643615665817,4.955048250989442,-2.3179510543165804,85.83181476195531,2471488.92 +1377.384337068242,2.44849779318881,14.93882949847242,9.733856148200744,86.76431457221717,0.0 +1945.667210070025,57.48347598845304,-8.367668677804808,16.746015704892514,65.88843386018193,0.03 +1972.2405465769243,1.9223472733813665,-8.880042032048493,-2.795847308078532,27.10801638339469,1541016.48 +718.8108418782294,14.732449281981957,-6.568622211708419,-9.45409233593022,99.15165379175264,183711.26 +1520.756295388249,5.708254984434259,-10.75847084242369,-14.748179888802715,81.95562924206901,0.0 +1549.9703682834836,4.018111795615958,-0.0811714646147354,17.41977339094179,85.31351957318287,0.0 +823.6871503634878,22.63414278993883,17.449661886448048,-10.762196964855196,2.143572794722684,11533.34 +422.9655947555978,83.011479311703,15.042506865199275,16.442849294120478,82.78830867721675,3817749.82 +273.7045285142956,35.91430582133004,-0.1959818415204139,-12.649751857533763,22.558296828383185,266601.14 +1599.2176295525214,9.382642870919428,-6.049501366959005,-19.27469043339803,51.31736766442303,0.0 +1081.4595352704307,7.610672192989291,4.467512110542331,-11.031186983006824,70.72426976713554,15702.93 +1973.9723050908672,65.36245813122005,4.490325339161685,-0.2884185247880699,41.61893214163904,1087344.24 +1036.9522211485755,14.328944381592178,7.350563560160595,-6.051800197609678,25.11871444405909,226046.75 +1960.2505623329123,9.846412958630172,1.4240010332581932,16.30882946337485,50.518007002462355,0.0 +940.8368039493078,23.209818220061905,-18.9297895917319,1.8033814691264591,30.676855489060447,1211327.55 +1628.6278710079507,2.9806270210665673,-16.958139306108265,-15.28922055919999,61.9167475018855,0.0 +352.6746901612977,1.3411303017384224,18.950999416193525,5.013279465029519,11.860980048029408,10561.39 +1199.831078247975,51.312465323423936,9.849411805327492,-4.442125947618467,41.42343168424989,317197.44 +1643.7076165743035,16.387903630140304,17.9298759440889,7.157653816098,59.56865868821938,5952.69 +1864.4630009957996,2.1367524099344988,-6.4189759592678675,11.447067862606408,99.06162411955675,0.0 +1680.649563111377,3.9454437223332897,1.397976732531765,19.422057798665087,50.05031923898721,0.0 +266.5473089621136,95.47002255744736,-7.121923236534027,3.065842351222816,43.16270869773461,1956510.17 +870.8642143521215,18.571512070757855,16.357401871291508,-5.329973185262271,98.93204385989132,359859.99 +287.6572501649323,18.716484629448512,-8.490664673356267,-2.6559859409212994,92.61311396541932,1454464.9 +396.7081240062044,1.3942072167468895,7.752452154859446,-3.895130241352635,67.62370892526616,494052.48 +1415.550131601471,86.6928875297487,-12.997777004354694,-1.9785067176692772,54.932556735481015,457148.58 +1483.8647533610567,61.033149168198925,-15.789941956933092,-18.79765325620098,27.81863842327572,93.54 +1592.6972289529274,12.461343985139958,-13.77461742774635,-10.106870451126166,62.76142536837943,29082.25 +1757.8217865001932,4.156979022351965,1.178210664646162,19.5104321787134,83.56336858391651,0.0 +1530.9766432577178,24.894904050936223,13.781641620367866,17.12058108508014,98.17707804624182,0.0 +1641.5688657919377,46.42466611023121,19.971189006916234,-18.06844130317753,17.92611012255364,190.35 +288.13467768190264,37.34589051244732,4.90732175311122,19.1832351067036,28.131599342059985,214114.79 +622.1632707943374,89.96938340386328,1.3441412738866545,11.678166505452282,88.55816033682277,178424.04 +1319.4159920754423,18.780657704890935,11.475303618606905,-19.89011495449756,86.23554527406517,0.0 +1744.6255483246816,4.389861951196956,-17.45023189781765,16.53854220855408,71.94922382660418,0.0 +208.10022489138643,9.90501702010211,12.375889413837594,18.41476925255369,11.269397641882838,76684.6 +1126.3328158094296,42.91749210290029,10.335181639673085,5.15032072271429,70.9192804052873,218854.06 +1419.1173188559148,3.3937916314446035,1.1816610441981812,11.53316007110896,47.43685051284761,0.0 +253.29312043150375,2.90279595941481,-19.080520970143997,-6.6987337837415195,37.75386483548165,1753648.5 +922.4400035960982,28.1623674488389,-11.912120779013431,2.892850461956602,25.81795414725636,102102.13 +1812.1427864906543,7.742030056582829,-5.211496023827542,9.261997965524706,32.480084945928596,1.64 +1408.9030559405458,42.967569724257515,17.648889037157826,2.4504357093056317,54.04350296005003,548391.88 +627.7850540490751,1.938059795444704,5.539552967601908,-7.8157970549752465,17.033033791630512,49029.21 +1735.006033337443,4.692377312243927,0.4037045299530684,5.968010852182335,51.421240390922186,96658.88 +826.4565621371257,3.437160507616918,-0.4629431837674103,13.536757023519922,5.772127393427478,0.0 +1736.0204080593069,24.87346541358686,11.199029264765985,13.44032859410515,41.65306183729832,0.06 +738.09857201403,33.01098069864154,-7.054790441415668,-14.71316132278691,96.04261977620976,26054.92 +1262.576451589668,8.165925093050511,-16.21900784859427,-2.1831681527265356,74.15853868972238,473785.67 +914.4921219461012,9.037717306895829,7.08173231159082,-18.450431079275916,7.79160546376384,0.0 +694.6850913591206,1.8368080141178,-6.839359683843562,5.3106657774758,69.09578726514044,203316.69 +1795.8036119093645,25.33122471745538,-6.9762865207297375,-10.31351140634837,20.41520335284175,27959.54 +537.6686274910844,96.52399026992131,-1.8113905562348132,17.214193521647275,47.942272934678606,178993.09 +352.6608642243736,35.96198716222196,-10.290639130586056,4.7302377097763815,30.12268261409865,988024.36 +815.4684893821886,2.793988706773827,16.86810119228508,-3.975295410305031,93.48194148446974,243264.13 +1491.7504657548216,17.62972261494996,13.878816886899909,9.25852757106748,6.38957633712932,142.48 +1653.3768907573071,3.8896777384991457,19.643533238922455,-11.704332193993189,88.21484587726495,1.95 +1997.7380661201769,1.1490875145499415,18.5819518372265,-16.34272776565604,70.43648819486619,0.0 +733.4517026200969,2.2889995711674613,-7.421786191457964,-16.504738769019035,36.91612771896052,0.0 +934.295512036308,1.6039364039746649,-4.776081652768593,3.312206393914132,88.08461233522823,1271917.01 +446.27830045332735,2.465273498693702,7.930319612002914,15.5547418269662,41.223983767997595,0.02 +1234.7694733214605,39.01295465043692,-19.366163897870727,-11.089675808723872,70.13863411146329,1089385.71 +1995.6440670732509,3.851804782506618,19.75555541555143,10.401935430445503,78.9986812490564,24.89 +1461.5858182171853,32.6647923623733,-19.56627671735534,-18.495058972652775,29.352703726087302,25.58 +1271.3831127440692,79.0178319721604,1.259437004092452,-5.86639707209371,8.153320488301896,53469.62 +906.2643672592292,14.078170808547007,6.748012485214816,6.148660382322779,86.94445914136477,177105.6 +1847.5377685139983,9.350135056640225,16.56585231820545,13.050022503147712,23.897437956022593,0.0 +1094.449873034629,31.64130238705103,5.7654528311244,17.727671217154246,93.24889304979304,2.74 +441.8604439635107,1.5637966548489644,3.878751988136045,5.302814598364001,32.188928897710014,70337.69 +857.6812337584403,7.18495702688873,-7.985628033987711,-1.4930306975120455,42.07468836970923,566360.69 +320.9000039259804,9.946016831890288,3.636855798481453,-17.574544319282523,43.600708928283176,4181.46 +563.5622678398069,45.930653098710984,9.988060519690976,-8.974094126351302,47.32103033662264,452418.66 +231.80380579984197,42.50454000202346,0.6236671582070308,16.924472232875374,96.31348328022548,1786999.93 +1015.903849700294,49.71995417533866,11.185411931484982,3.3158617232084664,25.26359607195527,93141.22 +1342.172476913235,24.874012929334675,-17.215478125032607,-6.292908467326743,61.219125753248214,153644.7 +817.9264322820339,11.51096184475339,-6.584901960016221,-10.04732506646754,30.118984328208896,40245.18 +956.6871887094989,45.26459539242168,18.392557362561583,-15.453718892493756,13.962087740123168,87823.37 +1926.5766911202363,55.791087961568,-7.062223477374885,10.064199140502376,29.588434527620652,3259.35 +1553.533618834848,9.140483843028814,4.874212072623432,-3.5049545384676506,55.68800670728973,1679544.96 +1173.5419465009122,93.61033852150577,0.7953903066726697,17.46197461502437,61.092006184317455,991.53 +712.1735752012854,56.187052473080165,17.464960532908588,-1.8243315521737944,27.108411775768072,4386762.36 +1814.5942377913912,10.493958221217826,-13.489124943757911,12.735062543858206,98.74413018321891,0.0 +623.1748103851871,1.3758629969049376,-8.024476019609633,-14.790495070247577,36.91150926635893,0.0 +785.6169149300187,2.811797896782566,14.495092217234443,-13.96369490893142,83.3717553581716,1.66 +1836.3166659613073,35.71060095367763,6.6481017909279405,-9.071523410314873,4.468354244695283,22898.25 +1153.1756995131302,1.6684320119568812,1.7219744267619896,-12.350613622722404,69.82658939859975,0.01 +1536.172308952358,8.701620379094454,-4.2039843203524585,19.069623490275227,31.042794742199884,0.0 +1263.340629494779,16.20706538458709,-3.547382679179596,12.325670026245056,54.15202905044952,11.86 +1376.1905762170911,57.10756683986828,17.39690731058005,-6.063510264243388,83.82374002434156,1613354.73 +738.889924726686,49.456995071876705,6.843024181352475,0.7929262868835041,72.75960805207482,230148.37 +634.4697109279932,33.771927021015415,17.163935456605465,1.3299246707291212,36.60372417342334,3460006.79 +780.4862249035974,6.537150525581094,18.88744435151973,4.2883621998679144,73.51546689541408,110560.72 +479.7948153501604,1.92530043381448,1.8803202441277955,-15.855330086684702,41.98575214121026,0.88 +1773.7658575234534,21.84231264136905,4.395557809252502,-6.04079339927714,7.285152275067218,145960.77 +709.8444798502053,2.304502825697451,6.254597162842659,-16.56280802146516,66.89290705835131,0.0 +1210.6809099458924,13.262609018417734,13.566760115194088,16.76260874681102,93.74480361248833,0.0 +1625.5539652544733,91.48636345801526,6.362868504252046,-3.861845055596276,9.28157405202844,122079.26 +1610.8833968762845,12.607226390423802,-15.414103112702794,9.080681769790845,69.07490486716065,220.17 +989.0952654515472,19.54851331884011,17.697204382166657,16.833056380169168,84.13366595021792,102.14 +1057.2631554561062,22.654315464734147,6.437374338145343,-7.622506956983481,60.06662716973566,314388.67 +1990.4631480830449,45.79064018942128,14.796690871581678,-16.48603218357287,49.05482261092035,5.46 +1414.275458562243,7.412442820014829,-3.010490168721276,-6.551350203747681,24.4839813558165,297511.94 +1666.3491976121888,9.885981697828674,-1.0113456843753044,6.839501692103611,20.191301684513615,13055.96 +1824.5971445946177,2.2487647649164013,7.554254108901346,-0.0081013398942841,40.233359322190154,2090457.86 +1617.6617052128106,16.957419945478957,11.056159453281936,-17.001857286703448,64.4875111644485,0.0 +533.3228209164216,3.9040557668579474,-16.861651600718012,-17.19215052976537,32.152538476476316,1.03 +1211.90732072763,10.357370162119915,-3.706286658958229,7.982464206319948,49.35218402068634,10388.43 +383.4094831661808,34.128278884148884,10.794255211753558,9.461813560960303,60.39894299709286,1243721.06 +1375.259827815197,1.084275911150992,19.689437205852435,-15.619688762246442,21.787983103004596,0.0 +1919.6289707380597,13.422427077467535,-19.534301952149868,11.788715693325834,74.39813081836726,28.08 +1122.9177157402005,2.222747009532534,-9.407670902330604,-6.17763517137023,63.236228704302,587691.17 +979.3504871619808,3.620484392013413,-1.4060567238477215,-17.27163447450465,59.59155858406896,0.0 +264.51695255269374,1.1733472509943943,-11.082331929268832,-6.645558435117436,48.33301449107496,129566.54 +1927.5941401925968,2.1823556151850365,-18.92311205769388,9.21900435185738,37.11576746630739,2.63 +385.4048314342858,94.02834379804824,1.5817209642136598,6.231129563289479,55.332539179551176,1441623.8 +273.9423679487245,99.32201515030354,5.975944361586585,-0.7411649040618418,76.8074245883526,3451714.63 +642.9199007088893,27.52300441385381,-3.3575175600754736,-8.81389280096425,70.89502587777056,127928.86 +317.95478105308837,16.73839103896341,-5.204876812466428,-3.282752692902773,74.03343645058071,219241.78 +1019.2121163411722,35.81079036076969,19.4244224071794,-4.7355727790848645,21.732331381259364,2332374.21 +1128.9580422628023,62.10242290658132,-0.8988590711932254,-4.399091033867273,78.18877872055667,529491.06 +762.625908251451,10.929747252737831,11.922778129667542,-0.4122819834429503,34.205810003278415,243108.25 +291.7288686347949,1.1764351683720768,-8.513033112167916,-1.7886464927467705,24.075111934410636,146609.82 +400.880662848608,26.229598398719165,13.207530122873283,-15.901243771233906,13.033561194955418,139017.17 +892.1078803818706,93.15474989042146,12.947987567995876,-8.393217352753712,83.20241246030758,2214325.27 +308.951211487765,3.281753158839462,-9.291915142279068,-14.835628164598052,62.69653660684292,3678.79 +1456.7415060978442,8.451448140787194,6.234198085668217,4.083848583473504,84.2892869870934,1109663.92 +572.6369747446615,5.278965237057912,7.280599067494031,-3.0873993160037116,56.58016468985919,436998.59 +743.7288238105493,6.038582282922136,-2.295378842251292,6.877028317475862,86.1677639341654,86433.86 +909.4263989205756,27.720431593921575,10.951202515097544,-16.495871926465867,56.100551829277464,1395.82 +949.8973395244662,5.712270691892307,-7.724589552120431,-6.203637088953076,64.93861258238633,592515.76 +202.98927381464097,76.2374305817191,-0.6291264352953707,-12.785930519990334,6.579694844096197,235004.31 +401.7266677976556,37.95918746137035,19.606068233191618,-16.316491419481682,67.29620828767135,4758478.35 +1752.9762147335805,1.1357795639660673,-12.852973133880026,10.937871164217846,60.17345294975101,0.0 +202.21951252143464,43.36084770427337,-14.088691119310033,-14.762535146777328,24.965544226753956,1197801.38 +1114.701240463175,35.1329683840385,-14.312052504124123,-13.003403277069715,12.16064841173812,2977.22 +1081.1036117129745,10.789155606789643,19.92437087338287,-5.328892051532361,35.37129583173193,176832.63 +799.5694898191481,9.854504530374742,-13.603468936256192,-8.289488395663778,6.958088163530718,13925.44 +976.3886362636092,46.887146939812055,-12.390430526722373,16.79274753511367,60.48209623673858,1236.24 +1605.0460475478517,7.072461277506192,7.791463416296898,19.54585739804336,55.04834924542838,0.0 +1714.1666711869216,2.084129431320493,10.379864992195651,-3.1039719448258163,91.8637405422892,4009317.83 +668.62737814745,4.2247174222589265,1.0824522186465213,-11.954606636814756,52.238599272011726,5007.7 +780.4827937419137,3.3916014066548175,19.306764766704735,-0.0755325482868096,73.24333320236114,55518.18 +636.4691354509989,23.02067530057135,-18.44364478715025,-0.1732558505655657,66.73452250316068,6940225.42 +1063.7541209919173,2.279012462545855,4.83283476195131,-1.3584544220618744,70.26672443374096,1825394.76 +1429.8650437858632,19.47802293474022,4.258772776064683,-19.1865508458718,32.051564987646465,0.0 +610.855175834157,8.549365701135331,-7.150208508543661,-14.864921821298678,42.11965888436326,1334.71 +795.32433569876,47.78833052738084,15.977618803113906,-14.359656451185131,12.8571952745788,116017.19 +1874.6923116604708,9.33248899419088,2.1152682442034765,-5.929555937179836,65.39674942242561,1427775.89 +287.42472172452455,72.37821514262504,-10.14638927367141,3.2315147559122215,30.94134543754781,1621504.78 +1029.3852894312192,63.23219469263971,-16.46565935197031,15.113741090881415,55.33045856583686,130307.9 +1480.8044748742002,2.3473354531147947,-15.715244258472955,-11.06575249571826,92.23084955838284,1.68 +470.8172208034533,23.56854133392473,15.89316985080078,10.848002312408308,68.6085007536071,1529038.6 +285.27323600986733,2.6868875949112736,-9.987649506463354,-10.951685625508292,27.49895110631384,14762.6 +448.7696689493554,44.32090425285919,16.280212064469715,-18.6953319481241,51.95007041973973,1326171.42 +1853.881748355229,18.68298689082371,-15.19528364804033,5.994333276366324,60.61551192830946,83173.18 +216.66760727802213,3.874675963078558,19.357410280398177,-11.414682768883022,85.16519408199909,4207096.73 +538.9795546604332,3.1495409310957005,13.333962834492375,16.78620033362336,79.58235920124953,0.0 +256.31032322296016,7.230283229310598,-15.350850336119422,17.336776551963176,32.2083321631849,96010.5 +399.1330416119659,39.94348401514036,-16.557739887346372,-15.798728479510611,92.04452038141956,4366173.56 +1316.2687159309332,39.113188236715395,12.137487296860666,-12.211252794974898,15.59141026499278,7335.36 +634.9500357303544,1.1661447223111308,-16.87734978841286,-11.583455647146137,28.332735101322143,16.82 +1224.5816907752182,4.023226015770291,-9.512760573009608,16.457540246818752,4.352576199168227,0.0 +1262.3516889790271,7.00974027758601,12.049992370670829,-16.879047778961684,31.81509245669829,0.0 +1728.9835995616022,14.83078117027588,16.303200493932973,10.046721495591807,41.990802039723995,8.11 +208.53450724137303,1.9909209547106823,10.706082330347485,-8.491814920457603,24.889517904806823,27380.04 +1736.06502681626,4.683451649391666,15.595712830114806,3.2973824561639997,2.2486038652241502,22104.12 +1314.4143555685532,59.04648387064029,2.3955325214970813,-12.90871768383318,2.0409128300803276,1327.96 +492.9382749889237,8.976251800069608,11.184446481980329,12.261186306293324,92.47263629196172,4260.12 +1591.2872986435111,30.78126416885526,-6.2325468604230405,6.830877636258901,73.74582624926434,142459.03 +1739.8847752230542,9.32302852478974,11.408562759840612,-19.15413048464011,70.14113276174665,0.0 +657.6742707574831,8.510697467826295,7.189636296979485,-10.514697829245438,78.78765607497037,71639.81 +1853.8286256248257,17.53279077174609,2.9932025463624035,-1.3459894799810843,69.72475330879988,2763337.08 +1018.023374537584,3.3016347309767173,19.69205282729,1.2470180699852262,7.084286065491165,3877.92 +1286.1640177999786,3.1593969795187427,-1.208819005006352,13.09085918673031,92.64736245213102,0.0 +1972.3691605117583,95.2155125940408,4.769889502822062,-4.521417076975012,43.4522564607943,843279.76 +850.7649415505588,54.69958339275707,0.3962274745538874,17.073776252273344,45.88925402491703,1063.84 +1663.6868224762031,29.888890426104822,-9.579546416961676,-12.244583948013092,88.77038340985263,18613.85 +773.1184120912274,1.88056815713944,-6.785380761330981,14.308519311507569,21.245792458941978,0.0 +1638.584340034684,1.1493423840182513,19.15143071823764,16.17198120102057,31.96913645212981,0.0 +1281.3210539527563,2.242977971694648,-4.315581679411724,5.0674786747752965,85.64616761142562,536386.01 +589.4402514057226,75.06922442903466,7.1762506974698015,18.700952340503267,52.44648765828666,111851.11 +945.2469688206256,42.9120774982168,2.6838905467485707,-3.5765081486869654,42.59483315712328,255930.31 +771.744141854411,11.121209575898778,15.592210872380544,7.9713265373376,95.50165904466148,26494.15 +340.595107544655,86.6086327671965,10.307603122520192,-19.59609281646074,88.9830120052664,2854683.58 +253.7025861794555,1.964102759468352,-16.77394376000571,-9.012781829556182,88.85155952776405,177328.62 +823.6615797329257,13.131093084952328,-5.782325142450242,2.6547602531581527,22.008016193107757,146255.13 +234.26146607147584,2.325114008857145,8.476541710312354,15.037350441516663,84.54579628635936,542.8 +497.87796364719503,4.100692553685615,-13.545727679531977,18.11702690164769,66.01273980675144,0.0 +1505.3299775315638,75.90493940871507,0.1375672623907897,3.1773348983544247,69.4612244384652,568502.39 +1474.5642242304582,54.5201488788196,-7.289238066845294,14.234821330330432,5.735241356939741,19.91 +1529.444695623289,1.598076522400404,-17.40983080825988,11.969296363180671,56.017718674871595,0.0 +770.8757080339618,3.1556411531688267,19.88584351354496,10.946959563802505,22.637573821106457,183.47 +1802.035022811852,15.45307595191227,17.174583980365856,-15.541652227935664,92.78446739480007,0.01 +1268.8949864512056,1.3264948697626475,9.901046172333036,-0.854440206411704,56.60163859020538,1914144.81 +426.8474151439277,12.594162560447398,-11.95896658986616,-0.5496210799596213,62.121598165281014,275745.2 +458.6935906199614,14.756483331097098,19.541047743578805,11.498329345507909,25.085209457452564,928009.89 +1447.5717684734627,3.8188654984131047,5.231691318640852,3.4443004955552814,42.716235622445936,942852.72 +511.2990855957405,3.8569673300913943,18.643017514691763,12.794107998849045,53.410755189748485,2044.71 +1113.126862847678,2.8718287408015826,-18.296843708325223,18.258023184829103,81.3919777396729,0.0 +1985.1940566716792,74.36228741623549,-13.061171306593163,2.186554158556331,61.54708649156839,769418.09 +207.2136885200111,5.994352544145181,7.08987540846318,11.668441351792357,12.19063516266262,12684.15 +229.8436434156025,14.809422598288226,16.287188445826942,2.422399456865443,45.627335935609096,4492184.08 +1987.552247474912,4.010044097754764,-12.968711488287587,5.028107220144689,30.256749738676262,245777.4 +1252.349901441498,25.428925464434776,-7.316070414995011,-0.9597469115751612,54.352666722763985,851307.59 +428.4379559333236,1.5954475892791056,3.527093260343599,18.38381455074678,47.5136753216514,0.0 +1815.1439595573688,1.390858939439344,19.986440806249256,12.703092330118096,3.21048255527315,0.0 +1784.684540229846,30.801191803409772,11.9866034713232,10.077655281004638,21.544175070192093,367.91 +1165.1607436004754,28.401149416117736,16.942511159315647,-6.816666990826952,66.34781158502074,224889.23 +1319.2256537493618,3.3884624110627883,7.000501383909703,-0.5834003697763279,54.88858936986232,1803608.71 +691.7369447015774,5.1297172262401505,15.09485082666609,14.516358989060718,6.274851959045106,0.01 +290.9354534696093,82.13362720451691,0.2818012926822666,17.455329484238277,60.16906291890592,1464283.0 +1270.2216960035555,1.6168159690515744,-15.033654602312314,19.902000418193847,50.82235641903761,0.0 +730.5593477649734,2.324310440950263,8.382296769259842,9.37716959861664,15.869954232060389,28.43 +1394.5178839886337,7.245639627216386,4.05899689599583,9.23354209475696,1.1939673906448458,1.58 +1705.2413183166825,3.666045173644058,-0.5859974354056519,-16.244985976484102,34.206208716974054,0.0 +232.6889790458553,19.861731072948025,-9.000363379289077,10.061633309366908,78.18963317068042,1672533.48 +1272.284794434309,24.05489391178234,11.368120487694302,-6.130347417974451,14.169985231057932,128266.01 +616.3049714363341,11.292137760968622,12.816403256659502,14.584941431955464,94.4987361024144,307.31 +1772.9992962268425,16.6876277268799,-5.4325749025960635,-19.54996883604261,54.702896205664025,0.0 +656.5961118112913,7.359387385466893,17.11066238378237,17.375425676361118,76.08109568650568,3.44 +1299.386239823753,33.17221774409576,-5.210332225255594,-0.644766382366293,97.70855851472128,1449548.83 +1196.3735121613006,1.2139393677004988,-15.697500207488702,-14.88176979385139,27.002498512073196,0.0 +913.099700106648,4.224571582270149,-13.338865299576836,4.039943354551903,58.70287641546017,308179.91 +1419.7173744796294,23.38083853832642,-0.2193811836433123,7.6814341511152495,34.72505611960612,26031.68 +1506.385342487781,4.563417628517645,-16.805480265954525,11.191932669742602,9.37003934394278,0.0 +1220.4880315748962,1.435722679777802,8.736501760533617,8.073900910436276,79.55666803552641,3.9 +1565.1600269325577,4.898091084107564,11.803834211913692,2.135011765449173,2.1965604674279726,62590.21 +1970.150736787288,26.4843637195834,1.9787333078124592,-16.722238989325355,87.01466118344615,0.04 +954.6902982214492,1.7537582639908,15.733938119208366,14.51593501737079,79.66069969757486,0.0 +1126.2494933939556,28.136024172427582,18.171458669850075,19.336179774275827,64.20165967925406,12.02 +222.44578029418383,35.55588007495268,-2.096756491573677,11.120279442729595,59.52285149400711,1294223.01 +1632.8514013586812,18.646678754292992,-16.434913271075928,-18.61031298320908,84.7203903441698,0.0 +1136.414120682789,3.07941412218989,-10.749435614317058,10.227915016977349,6.51479551420289,0.0 +934.3305746490172,40.793476130770735,6.304641748539637,-9.21435852455633,73.9026423284373,172823.77 +369.32953356091247,2.684633489862303,-3.7686246780079142,18.484007393051627,18.861519294933185,0.0 +1801.381559015715,64.80998252354671,7.400375765985774,-17.459697599427674,3.015062446743696,5.65 +911.0130320730016,25.899501094149898,6.669407446111557,-16.309664286811465,31.91672110704747,886.58 +1428.6468767765966,1.2865890572301384,4.2147254644685495,-12.745186505026208,33.389728368872824,0.0 +468.8734814626714,39.68023516375437,-13.686697324040642,10.126324438046533,20.069169897036115,612732.06 +1930.7893331738585,10.300708108286337,-8.56338815771509,6.056198488325268,71.37283381295875,174526.33 +521.1951712792957,8.040772832537737,-4.885534938167511,9.08946821993512,56.332184470661325,18819.13 +559.1755872190827,6.934615490725925,12.976719597263568,-5.844630234315851,92.0860460597422,294242.73 +1746.1691490038847,16.34030403248012,7.288913470538652,15.183030273798188,76.40753168203591,0.0 +1842.648939455476,28.1291754292906,5.797370640109962,-2.1497569513597403,82.78686162661008,2732221.15 +581.8653335419425,61.93743719460469,6.88549378843891,-14.635422317964952,90.347927311751,283177.91 +1045.6415987146902,3.514711042821021,0.1280832580558488,10.698961493337109,80.82952718723352,0.08 +1520.2908282130936,18.262176920220703,-18.414731381277463,1.1815350885955,12.695451965098574,28446.16 +1781.058320859443,23.587679761295433,-11.955172500041533,3.736440419886966,19.36243026596425,255626.0 +882.2948510671494,22.36630688891332,-14.38791376798395,-4.595167509682616,40.779343895308074,162649.87 +1130.635076328973,9.682807447844388,-17.440133424251574,8.428781604781722,33.87464050816623,816.13 +1535.0895389355228,6.054037355942355,-7.220934080668062,-18.577281831242935,88.65713473998392,0.0 +1516.0447579750316,33.477855780629,11.509207667853936,-0.352969370628089,52.89579692887124,889672.45 +1609.3282340469527,3.98125145209946,-15.394727854247826,-2.913656921253671,87.71769094912311,1236705.6 +1225.8808735547475,2.606791671550173,-15.543099316723126,9.8591212658434,39.32898544825318,0.0 +388.3071742485954,12.349756295804417,-15.029439232339303,-9.365231620460284,90.74432658026466,1275691.39 +1827.151923580472,3.429428204838866,-9.207132349742352,-10.651542724559128,8.101029122435959,3.7 +1758.0305707778507,1.1653766859662746,-11.911714478095051,-7.206709176346298,45.10921823452379,51582.8 +1636.5753844729995,1.2680941141093107,-19.441555341056244,-0.7782563756138572,90.21160752963009,36966.68 +379.75245888931306,24.548279125550643,-8.939907456625814,-11.604904042250288,45.51298487891932,267590.44 +567.9152607465726,88.36732163876104,19.851778586244684,7.368280542337784,73.53650103436546,14735269.28 +1538.4806571937734,8.116649031843009,-6.540542285762845,-6.735549586771179,36.72679051795732,445926.17 +241.6521702475036,1.968440315313602,-11.549638721047092,-3.1389117380058185,83.09180699230119,231428.05 +1962.6043406731033,43.267960151019054,-0.1714428203131257,2.3037370834568227,63.50995794041068,1495256.86 +878.8604246402253,3.3332799803086295,-10.825261430020923,-4.924986627351733,81.37399870071216,949831.82 +1494.7625606434824,98.00605841872655,2.385808052828522,8.04908275459173,54.11221966157057,90402.72 +1797.627959278478,13.38222512649819,-3.9737661439668015,6.247807924690352,64.12382799667604,135291.3 +910.333798670148,2.9192083803909665,15.87365273117797,10.2733954197261,53.33684145068914,0.29 +774.4384794793989,9.817695068313306,17.11677048853002,0.9201831112989156,57.16388940771203,144524.83 +1295.734032016844,4.685571221954233,8.522450321065861,-5.303125817969088,69.22751751407613,1191224.46 +1245.7808727464912,36.21962664477781,-11.372230090390545,-11.95489155788625,12.96390938622711,7715.99 +936.4519597246348,1.6279151751833598,-1.044058085062067,-2.5245554973627593,77.08914237559074,1687454.79 +1283.1945605618753,51.761330849340546,-7.783073318370102,14.920587134119176,36.165552736642255,164.17 +1883.6864652196905,34.251042016124444,11.931098764394918,-15.15895604750246,2.245316008688202,1.94 +1041.7524619278736,52.81139115505832,-18.83303563385187,-11.383929757483626,64.72381082853573,2737652.17 +554.1359253511364,61.657724384666615,6.499667773793143,6.6098323461929365,61.750351628517315,437623.65 +878.970769189407,2.881082177422556,-7.070926954234897,2.9980678600785193,72.85630367304987,923780.87 +909.3925686676134,11.01568768705229,-0.7598167020647306,16.647421046462053,99.8335935014102,0.01 +435.9956474471957,50.100774583460016,-7.080201148437362,-18.838669141783875,46.683451691451296,206712.6 +493.1687009981988,5.685595310570644,-5.408398909665437,15.14065145589047,97.35891173330512,38.33 +1432.2117321086191,1.3207333779438142,6.974505551713883,9.01959676911178,58.20034446928794,0.0 +811.0599575760249,3.830616835733048,3.8197733371900138,11.02066748516167,36.4298257582826,3.08 +1918.8171053404535,3.0467766807115493,-10.23643017220654,-4.853316829459389,68.10119316049796,2088653.04 +638.4741416454933,54.96993676569379,-18.25449487409491,-7.706991059377883,20.44902708134265,3268164.15 +378.06410918868016,8.46628138979294,14.240872394122816,-19.424886640623647,96.66291909904804,7104.38 +1556.3082134004642,23.285655869854025,-0.3077327350587877,11.496206579222218,44.66470745381111,48.3 +1785.864893452166,83.99207284757513,4.749208969967333,-13.537871384541864,2.052513777624398,874.21 +700.6040423686782,3.966209996203167,-0.4600291014416902,-10.954833002422111,65.87722508706257,16887.04 +563.7585829618604,33.2965406735351,4.757608277322398,-8.937542102127786,12.912698560277892,18347.95 +534.3790427679569,1.1105247526277748,5.0788988719429184,14.78697296076513,9.802671465331557,0.0 +1139.6221424597222,1.6152224811678704,-19.398378529823837,-8.483984113795113,3.3318916720496965,34.89 +1043.1499542441877,2.1073185009410635,1.330364663984338,-2.972670664763682,88.4138063814362,2043440.13 +666.9917117381616,4.215379447447761,0.0843187561626557,9.893780930093955,4.334113978838969,67.52 +281.3116105809675,6.396971712401769,-16.167299348437744,15.690840030933488,54.18302477018446,145880.44 +1066.6844125873054,8.995634087456326,9.835274439852228,11.647301082285813,49.45420600424013,7.54 +1926.7982257440951,3.0950145324706337,-10.565625218249028,1.4165546742473545,91.19275756502628,4465025.48 +1374.5345613547938,1.3565338621996097,-17.818986089840614,-19.912832066907992,91.20312184609683,0.0 +1091.911801931513,22.64885146873317,12.126358963336372,-13.686308812646008,92.16730239929107,7126.39 +399.245733253309,1.1151228295276163,14.605270052491017,-9.855889231698267,40.60028221948333,9542.51 +654.3853229892571,41.58543700923059,-10.372209747398946,-3.4493778401782205,47.87666152829655,320609.38 +730.593109234177,72.16218093899161,7.501820678014313,-5.512415415002323,82.74119505824078,449885.84 +1576.646394693022,26.347403789964584,-19.80197303750013,0.576253728361884,12.895654030978951,174854.62 +1778.079435076315,15.556827443881518,8.84599833529219,-3.518898894601863,12.3274112536061,411683.84 +1822.9553364195892,20.608057557895048,-1.4071822623742536,9.042668169038585,92.25107162840358,2673.6 +1972.2234948513576,20.15784461859832,11.699324258731975,-17.910771655627396,3.9139549057684815,0.0 +1968.2600295881584,73.0146944513365,-4.278641093362929,19.789127034916405,38.904508145094255,0.0 +1915.3984389823663,84.84216501710026,-5.956970899168734,13.72235410149118,20.299676119799653,116.41 +329.2798529051919,7.13548148890627,13.631395005498833,-6.601333310460702,9.31466575594779,48837.85 +448.0283646700493,17.14582363948672,-18.45413208339336,-4.127915669123259,97.4129419296166,12240428.14 +748.0397476568592,40.328689299213735,-12.513400524943323,18.548268374142207,17.429275884446614,1774.04 +1195.2168573160309,1.004792337148803,-3.5148452444965717,17.432171728841325,43.765510733501856,0.0 +374.5601996698627,11.324833708851546,3.8535264556576143,-4.2730573783409165,26.36107793249945,55235.16 +1722.4345240438563,20.218674454082176,-19.795499475318387,-17.61536684905622,49.625790053411016,0.03 +1310.1611223391562,27.190105924705662,3.0059077866949835,19.518654670706436,76.92252619166763,0.0 +1176.255924143969,5.464857209238115,-4.860298414647981,6.150135211852912,66.3119776465294,105152.56 +497.5603820611241,3.902014161372106,5.200081747998535,7.720072417295012,57.6032271499373,27818.61 +655.8598539203552,2.3135832592571774,16.278953583569177,-9.01618155673396,51.55744481027095,15788.81 +488.5616449680645,13.050618610882925,-2.3651195349359977,12.748178789752176,14.053352505237497,1249.47 +1733.4796840306376,68.96152622089011,2.1831457319828607,2.2992750543129414,40.84786228698918,575451.37 +1251.6101481101928,61.937875027800146,-1.4884032602857111,-1.1903066471186152,90.62132926470991,870239.17 +1523.23296953534,5.247251185220511,-15.259119871535727,9.648079637586996,82.2317815138763,0.13 +732.8591532380464,3.278764920144028,11.724519509884814,-5.1240209651217405,7.409235098739379,63152.57 +868.2547467588989,37.80834309443005,15.40782882295165,-2.8238072852546647,84.2038986916533,1383754.1 +928.7389359677608,28.181235973293035,12.458663251339184,6.0930731202969035,82.97582554305774,131666.02 +1568.0269491392628,10.24895679335318,17.903862974083,5.583456805098512,80.3941207673092,33032.65 +1590.2353778142226,5.9987466316142655,-1.2788592881246252,18.847438680559105,81.66644992833429,0.0 +572.2643495252571,1.7684623061535998,6.092870220109554,2.5140523707140927,98.320367829227,928087.86 +1894.769942128578,37.17724283578009,-13.266335800475687,-7.160582028544771,6.465347010330785,60979.82 +417.1796073986355,17.17627114099345,19.07232484721044,-8.50244490121057,38.996667814795266,4432640.04 +1813.0197483625343,5.672354431352281,3.2221619949587765,1.3607602561474907,96.87532675737258,4279107.75 +380.7121621696567,68.7980220069594,-9.533475675964818,-15.217642327869893,55.714224750814275,1612244.41 +676.1716600723599,20.861494265858617,12.214971134755302,3.5239563296819565,68.54741807841394,182223.06 +1723.6613649223225,72.1901150059163,3.459644688342598,-4.38980236870369,36.82366642192808,617930.24 +523.0857302229574,8.888427219809216,17.98699927875297,-5.920116859308413,21.978026762094828,359726.64 +944.4222763579456,8.114012046164781,10.799095161945797,-12.300905839568893,97.8641732446112,6158.51 +1009.7467398994272,74.89944172503354,15.090592928447876,-0.1834655025973619,36.80356609837497,1571958.06 +641.4661514417774,83.09652385450201,1.8660003550133997,-18.494682351152797,56.525845326709174,36198.59 +1478.441362404776,83.47081189244189,0.692337013817883,4.287357033996773,25.13766225319261,148040.94 +1732.4023689239668,43.43049585439648,10.29305884842686,-8.578036628907487,96.7281726618165,597100.97 +1774.2352517400293,8.41031553211299,-15.799440980185793,16.202801064894842,26.582966000241065,0.0 +810.7798623258097,2.6338957925428663,-17.838736340657494,1.0544757926079562,91.48058743181473,146309.05 +1155.530709718066,5.8463089567568485,19.34808984285429,11.223489480716076,29.889171161334772,32.4 +647.1315269581727,75.26533223644967,16.651821148271033,14.047554500425289,94.74563381342452,4002305.17 +640.6337027902617,5.334682661967588,18.22643764979627,15.159327272841605,37.36585962307294,15.11 +490.2573131334634,32.61631206187095,-17.50543746014417,14.825239597637545,87.33398363904061,2161414.23 +1892.0342194535265,70.1469353981887,-9.227943523598046,-10.981250544732628,60.38265956526702,117578.52 +1798.379891490044,87.25379512036034,16.06169516776072,-7.867377972862366,12.268568064111337,69952.06 +1599.245683989846,78.58656273278501,-16.420816924954696,8.317524475957496,30.266507584069775,124492.77 +1131.7907383179122,12.885913017478552,-1.942619515664088,1.504735499554566,76.32787241981535,1150532.83 +1083.0942479213693,9.63296870328442,-6.348345875528998,4.373291513029995,67.08623122667191,457512.24 +1153.5421991284963,94.46719444055736,15.194019140024118,7.109172599548428,36.25369986427271,921561.28 +1165.822424438761,2.7312308492906725,0.7230452934858977,-15.429895400939522,20.339198387215045,0.0 +982.2135524558428,2.3717042038241924,-8.385032711723849,-13.26774243008902,83.05443791574477,0.14 +437.15869920572146,84.40430448011394,0.9720470315203444,5.513449001987061,62.61601694323373,967420.48 +426.1949351633648,23.89954559038325,-15.502151775513276,5.014852794554621,68.51450948201717,3863357.77 +1914.04948852223,11.819742617224328,9.248109302258564,12.69726452913464,48.427613964460576,0.0 +1067.655367255431,1.836959518156858,4.733502178396409,7.751273570183712,35.68374521297797,206.69 +1915.76994482934,10.6287085405289,4.028351242437407,-11.692934503458416,38.84270224002807,230.53 +494.4383798781979,77.34679221951289,-2.4862258796636283,-17.197105319150303,4.080061248369512,16436.08 +1197.9497936718803,16.06137221149041,-8.23023387624037,-4.359009096739177,94.43254073685522,1413365.36 +573.8910560327706,6.445509381786294,-17.384773890619144,-5.149106085302146,37.288080325677576,96260.43 +655.7322910278828,12.653364038988643,17.88130016512215,10.69664138768684,48.81394017845989,114079.31 +254.0982417701218,59.195701839646034,-3.337843137643941,6.859334304913007,36.35845161550465,1210345.79 +414.1159593323804,66.94179018672666,-0.1631318420445637,14.888098323999811,36.16341864426874,224211.89 +1850.3271337325525,6.3121357642974765,-4.969329808275944,0.1704711770726419,68.87582924641173,3317783.9 +778.7593846681971,16.44833735851587,19.51509402694711,-8.452036839614241,67.36524895440407,2090631.9 +1294.6325814462648,3.6174723922622065,11.84688042474798,0.1700149819772178,81.21227665985032,2149599.97 +1037.0254375806917,7.983082038064007,-16.169591008745236,-11.37991949770366,8.107368342054006,386.09 +920.812241441501,2.7527405066586867,4.327002588290512,-17.57877569866524,87.53181019564703,0.0 +1157.3949644229226,11.55964571199177,-0.6146170539025109,-0.0126779509553509,95.71153795188876,1787889.91 +537.0301003076147,14.337725780490867,11.734081408785627,-3.4557954372466204,98.921510331957,321140.98 +1979.487017335238,4.738855566842977,19.892640486274132,-18.710837867372977,13.750407234992508,0.0 +1672.9541636669533,3.5013586719807415,9.77226962409648,8.85094988142663,49.183039191853666,0.06 +1534.9063389167277,2.004708414448481,14.597152832199733,5.77404496183477,93.96524777577142,93784.47 +1043.7667346251144,1.9014606067851805,0.1054200942326044,-17.047913186774935,76.13471351401381,0.0 +475.1788198274048,26.480259174471456,-5.056080385561459,8.40094306243969,6.95992388859159,6232.92 +1857.1985448924224,2.7750831927959023,5.731187260214572,-16.687108185777536,87.16013721667473,0.0 +814.4967212871097,1.721686373541046,9.976736549443892,0.7062653220089921,84.01601310389658,1510851.67 +290.1920414544808,99.48174155140327,-10.89864267183878,4.889874384686017,78.23663502933967,4165332.04 +816.3266182591316,3.310038184237357,0.1354991943912686,-0.0405780181212733,41.771865531965624,679790.61 +1630.0226548925918,61.957891652677965,-15.448360528365392,9.89623448515594,63.59717297058143,17511.76 +1320.8757409787747,16.533770594169603,-11.345887468830623,-4.577335122392432,71.87637701857545,1081742.77 +1551.5094525407474,26.92404660332528,15.274355605729216,-11.481777169149773,40.26832123486673,8499.41 +1628.5436909522791,13.238470835029547,-14.210720694770949,-0.5436807187283765,78.61602244378828,1452860.48 +581.5182999449767,2.2994416320383646,12.453930072088482,-6.310522590646928,28.055481253752756,129396.02 +1862.8099689677244,49.44280974012905,-5.096170269878382,-13.948945999824788,19.179781560358578,1151.47 +988.3812852566708,45.2840783331984,6.540855021751968,-1.1566620738083655,86.03103655196593,558855.96 +1350.2245686754964,5.004617966600998,16.413054865696207,-11.94278390065891,34.5927940489463,10.4 +204.1557906561356,33.70554802601257,11.235947203310328,-1.188151945615088,6.620403954340995,347595.66 +1988.0632971401203,12.192156163143336,13.037644791938272,3.7011208796532458,83.43703397734494,1484652.8 +705.6134947354792,65.78066825875683,-9.55403719586628,11.287904357319604,80.10254715164776,314845.03 +311.7135917722794,40.33190565479812,-5.533015854918002,14.12663937887892,80.4366554213907,920994.22 +1024.8716747657252,1.2077903061784647,9.311680821586354,6.7265323176973,34.74747827477279,4482.64 +432.2541029276751,57.35244596172712,11.08938346485143,15.741687799821293,60.72165989290343,1081249.86 +474.1880782836363,86.52325235995107,11.602090704035138,2.3115676065595547,2.377636799958324,155842.41 +1338.1090634543782,30.50088250165503,9.604319256171529,8.417290256730778,1.2262454044243123,646.36 +907.26930482642,1.7371089652444227,-10.735095550298205,10.814504247303809,26.66736874626014,0.0 +1859.334410278991,41.18620527072645,-8.43653439376288,12.993837647562016,53.005465091297275,11.79 +774.4816902945261,19.723232090244338,17.68164030256223,10.07405799783168,60.43122561777533,256719.85 +1507.124231091022,4.7605007185344475,2.1544152698130947,16.096565037201287,14.206637314882286,0.0 +1029.9789742788337,58.62206361111269,10.178016051094929,-1.0858070959639132,86.89863935584634,471483.99 +1387.912342032702,13.52487864234276,3.967827182376862,18.139284393376172,95.99566572410647,0.0 +1279.4516420887826,50.79908175474429,16.980074609872716,-3.98853619079548,12.802003248232442,215531.4 +1051.0111509661967,21.88907942809862,14.751272723852672,-17.192382071101115,82.56192631701995,63.03 +1910.1099703239868,3.7760019283135575,-9.545008345775043,-12.715380444883184,61.809551710067005,0.0 +816.8845569589206,89.13276760234153,15.388378878235551,2.330635630131268,50.73743327128224,5058065.91 +519.0239022486907,13.867912598346363,-7.998425648787477,-19.416483690363265,49.41728734674672,397.0 +1420.569309583691,10.80215696437132,-2.3607819427735333,-13.704234095467209,75.233680911387,36.12 +1722.8136103542358,6.412380082844945,14.04934312475612,-5.03690604163245,21.68260365411711,328366.61 +272.4567318918628,1.873649735717528,-7.039236986439716,4.971884540193061,61.28692222110325,105310.98 +1009.338839160825,23.573591856950703,-8.36912327250002,-13.37799516360528,26.87400027189363,4981.18 +1806.4778414371872,7.271071177156495,6.746273975836798,2.994567798069254,9.431034156512055,299660.98 +1549.3135140611616,73.99885855415035,19.98705449655904,6.525825375940957,55.73509224223747,6731195.9 +1985.2538896957308,85.15189889994143,-14.757720756342074,10.546377262966038,27.59217484702964,3174.16 +1156.5448608750387,34.299019940622905,8.042425860788121,6.419150292875466,74.5227308230926,167374.38 +1387.9922938420725,3.054847447610821,1.0782155162087337,-9.996689186472208,65.3908680236897,2903.74 +744.4645060482707,27.037053574883565,-3.575300387651863,19.89440820915923,23.207919376852672,6.52 +1905.564079398786,1.098609883888913,9.994349988312642,15.529947125773631,86.29468302778733,0.0 +859.4038794017654,44.95738122970538,2.1934531763843657,-5.059241521897162,35.35286030710107,148950.42 +1529.3192828359315,9.710400313801422,11.912445921655838,-18.832413523676976,71.19627194159278,0.0 +925.6523674143474,74.7273015291401,9.754157789963326,1.1483289916321704,27.46501936253374,153079.14 +1211.274074113399,5.695345599446578,19.404759357385124,14.607587236717862,20.463364785665338,0.0 +1495.6085630387831,3.360061364686928,12.434633941201849,12.877730617748972,86.16702682668974,0.0 +1116.0814731524376,97.74907976161938,-17.328008102856124,15.902281549161277,91.9478667646008,693770.39 +1832.7553884371152,11.517434286205445,11.183171821765017,18.780650282343583,35.85303132414684,0.0 +954.7417782700584,53.25557582167269,5.988128808318036,8.521125642603895,32.18206400700318,30681.27 +1364.7292366579852,66.39178237961437,-16.408385990922195,-13.504098320821916,70.55398534389478,115863.8 +816.2523799400974,10.887732083581083,4.219569140723749,-18.54347450625863,23.50904666353069,0.67 +934.6820028158236,8.155072963662551,10.03214402270158,-13.943708714754566,86.5564048226962,410.01 +992.0901948203943,12.757686021183575,-12.112219470224446,-11.956004984982432,1.8429728868405824,355.49 +426.45263296211346,49.5996949819173,-2.6035340810569307,-17.544388027812644,15.070214770239152,32275.08 +365.102622306212,84.98073112770021,1.699451529756315,-1.861931004986617,12.949562642797,367875.52 +1401.4818616641642,4.535698924123063,-3.4738912561664126,11.355108530636445,32.46453810206087,0.0 +1379.931929017494,30.009638524255557,15.040192118050973,-19.829928183836927,86.7479722584755,0.08 +1393.2374855781716,3.721765061515895,-13.243871783057486,12.145052693978752,64.360939927643,0.0 +235.57960161684505,16.668867048880383,10.862222102274195,17.012293521234824,11.639786754593832,130723.96 +787.7843168092038,40.698572480995146,11.12364770152264,-13.920561719365075,8.812807690573083,5282.56 +556.0577250665544,59.28879849422175,-2.078801564293631,-19.146153656227547,29.554816927927465,12640.79 +1600.6725605792224,7.896458705243989,1.5791196760391868,-0.8254022506149417,62.36341049139787,2364819.91 +1749.134722513034,5.489229202834548,-13.8575020274819,14.741208423082504,59.78207959408356,0.0 +644.0246790070652,3.212944502617675,-12.19369711517384,9.473256864384334,12.308061701211798,155.09 +1402.128485926375,1.8485633604829317,1.2665924840847076,-18.612036324359437,76.31911149823885,0.0 +432.853046224894,5.36827972191379,-11.012768682660337,6.930576585548671,63.59424123076893,50031.78 +695.274546083084,55.4569025945018,12.258615385143582,12.709796978130653,98.32256570878894,538257.21 +449.5780932201551,6.880484683598339,4.648723335280973,-9.158014057046293,55.7069276849043,83345.05 +710.3373798786125,4.311082477317532,-17.736852863823866,6.136534091079686,33.405055593737615,8165.15 +1414.5257852287002,30.07907587207649,-5.684933266467667,-0.2420416171696082,12.815794531449518,236370.16 +1838.5884383334544,2.698789073991406,14.337037254729776,-11.77483733809613,91.99094941898144,0.0 +564.5403342635348,3.2551694799515154,-8.902238078655177,16.060375974790738,4.729300188368008,0.0 +1175.7422629112946,74.44187385420544,8.788715549966915,-11.07966540685962,35.52406965379223,55317.26 +1462.5039822381782,1.456060381790769,-16.247994480158535,13.619016979699976,53.54314703616998,0.0 +1915.2604432740184,6.749356381423753,17.22134615797499,8.066207834335732,57.40934702550306,25.24 +1298.108869196913,14.239750659296051,-2.0261727466482515,-11.16363954268608,58.65003688543095,22030.19 +659.1924758492852,2.8874962656123873,-0.3373745763300251,8.452929392160904,71.9949164680066,4588.54 +1325.860682445085,3.6477491797166337,2.7932052491667836,-18.959803266431095,13.703873089076296,0.0 +776.8840910204291,2.777734478415868,-5.462706415995,-10.549136820197097,72.2152866933956,12211.05 +1957.031103245074,4.901975588007598,9.011412048070463,-8.583799706317642,89.06221514343736,91300.44 +919.4170432945464,62.66304721121566,-19.41665737174756,15.567597451318871,4.014239364677895,57130.14 +1433.7698973698257,7.297509905161871,-13.511829294204896,16.615499581219243,4.544954195503313,0.0 +241.80964822416527,6.849486799828424,-12.44716329559492,-9.160317405864014,99.14662621859208,930584.16 +920.1106030425595,5.9314621081159835,5.413607357311867,-1.0136572453324089,31.882308898470335,520686.48 +1775.193703980521,84.76790577580005,15.624032583018472,19.264937894993288,46.05123924297741,8.63 +1298.4093999798424,1.7163224073905987,-17.45441034074667,6.63910118146763,31.696195699107538,556.74 +999.0971955127574,55.43076111311834,14.09834399889807,-17.211504150234866,56.09217788377914,18015.58 +1884.6874989843063,4.511512193087302,12.780543830101202,-4.342719945635629,71.43667378226338,1983994.38 +1737.1718770650125,81.85084804048657,-16.934973513520802,-3.1424692177560276,76.23503726943306,1269665.12 +779.9882128812889,4.270261711929921,-14.270863048843246,-7.744133404888469,36.18349242142049,76448.5 +1180.1871236744112,1.4647001516090976,-5.998187030780566,0.7965281532391799,26.797112641684897,795492.43 +1081.6836609664329,10.966897102684197,-15.413215425796194,9.440828826263932,55.11656780035163,820.66 +1337.9645002067523,2.855822156058732,10.33144540401934,7.660027019245845,39.04124921834912,312.47 +801.4002805257601,32.0611894926054,0.162772550579513,-5.938073224132738,62.58904599992927,256124.66 +639.5690013785988,20.63532135964885,-3.5694156685391887,9.465589354033668,61.543838453286625,29438.32 +1842.809303459965,23.601429911453852,8.997905010391655,1.3629584249660187,89.55085238050114,2755168.18 +1862.9740990973112,2.437692814757941,-8.284185077429346,10.78052866052591,1.381794089494834,0.0 +1717.9811943715622,26.13728839121594,14.861256604586425,-15.44443949393667,11.082971245596982,1.3 +1960.7679753762104,4.194324757948673,6.158669547232334,-3.809599594864723,78.88812138095824,3537572.21 +1540.9847464034394,99.39122792759784,-6.139787518190993,-4.214010410240747,58.77243538979663,621463.43 +1576.4010114115993,29.07604458622525,1.594907612861194,-5.927887458087349,7.188097145155889,114307.27 +1572.6621655327533,15.164322598241023,-9.622060956224333,7.921355092377769,94.31315960695616,19767.5 +1065.0937356961515,54.229494781068006,19.399229630466724,2.285140756308079,65.39003374177358,12375991.72 +1021.613950125689,15.087712484465182,-2.575826934304861,-4.564317895781564,49.113557881120734,556066.35 +632.4072970682057,12.74969317722588,15.870966107415034,1.4520923604337987,78.17901437429282,372108.97 +1360.6745498467228,2.9828485664094764,19.12081829098693,8.17571692901176,60.00549513591081,549.1 +720.7762449842022,22.710358537320293,1.4316983989559828,7.005097892268539,37.95639002109411,51652.26 +664.055137464238,5.614212625188919,9.199822803880611,10.42696478347082,30.3668641897888,553.25 +1254.7304733728986,1.2194535311800745,2.8898714776483336,14.0590035306903,45.88955560960871,0.0 +937.9682988050778,42.867049529069305,-16.33729468877113,9.575674789974142,48.04937990897411,385583.88 +593.941895830338,1.2698321933292371,18.09672210469417,-12.794434593928138,71.49115949130373,1.83 +1668.900830155096,22.11058563249493,-1.7345419593894151,13.86315521378812,47.82727974392932,0.01 +1749.0258547298768,2.057983000117515,15.76252494246118,-6.719070796538618,2.8158740950528816,5402.56 +501.8591354200057,7.330591739459549,6.224213837542472,6.639021140112948,68.78044827802968,80234.45 +213.51265903999976,52.26167406501426,-15.792364358635243,19.63878953416275,7.891200171427351,318432.75 +805.0339433528727,1.5446820442286306,-3.3178811613474757,-8.214317636758462,84.78674920758355,127823.56 +1635.5195042253545,21.592421884089298,-12.16607381216721,-9.191562709724366,71.11932630934811,200775.12 +1710.512959221784,16.797222884895813,-13.205605420497603,-12.713461926424134,60.18617718626779,466.67 +448.9923262088886,54.3324754840998,8.603549747335766,19.363118182147296,45.96175051563645,219214.46 +1593.804622129492,2.2154897374836446,-18.799200507141535,-2.9225779823116715,18.038944721634884,21365.03 +408.267501156973,39.77177824613661,18.64562275575917,11.354618428723985,65.84461224849488,6038338.39 +902.1126622817526,7.947716981725583,-2.0030649621566265,-18.030419847474683,11.839917520362611,0.0 +1997.4971270214485,7.199259447506842,-0.4096927576507259,-12.783039952943987,60.850032080329946,0.05 +546.6634818156376,5.291376956557687,-8.022844161153815,-17.472622753139547,19.150507419429292,5.42 +477.1344486397276,5.904026421941519,-16.575357087502876,12.62540113379718,60.090180149489555,6518.32 +961.0405985842284,10.96274349991972,3.5297071344601916,-15.73786012670952,15.964774542831004,10.34 +1315.4033467457507,1.6353083182031298,-6.209820059782882,16.926463239089266,10.353740418091196,0.0 +1879.221408343856,7.0816056663122575,4.962904641776675,6.550298546888378,47.61619978235836,31745.25 +1965.4780619594617,20.13550054446153,2.2307923122941498,16.381516454559673,71.26562377758101,0.0 +325.35314586451034,9.9171003281921,-11.323566127624217,-3.6456540571910168,24.606951805943645,144815.69 +448.3955312262296,2.146144391377047,-1.5338431036948608,1.026313854640586,50.27288616867206,386878.39 +1623.328353012789,5.322349669587874,-7.677479624416588,-18.897108706405128,80.08922347641152,0.0 +687.1378740875489,7.68994703979912,-10.411036750953414,-1.363763579060393,55.39416751119107,458834.14 +1792.728307111449,21.76454684657404,10.788174371876089,3.628677520575181,60.11581507466273,964981.13 +1394.2158630123563,63.31879554341829,-19.523736320031663,-15.97639678599981,22.795769315572855,65366.34 +401.3206442852189,12.611043541994132,-9.244685654995004,19.24941083007381,13.325410546049028,215.19 +1698.552712863213,22.528706452729395,1.2434273468795087,-19.824359426155127,15.75520231433601,0.0 +517.4414840145365,1.4268530597385067,-0.9541604627816858,-9.301975566052604,97.3076068813742,73263.2 +962.2917104233768,81.08379345516168,17.606613076782473,4.624863235352676,9.57520808433969,1251983.77 +1193.932871406794,4.269896820749161,13.746299250289765,-0.0944678813212895,15.999189973646748,264664.47 +1101.3790683445009,5.111913534978601,10.064105087530306,-10.43205260589724,21.3637084416452,4639.71 +1435.0932481072707,2.790522710092864,0.5631253308143735,19.470147063766703,79.00661525513712,0.0 +1374.8361227646594,1.4768627732700137,-2.843730704634706,-12.44490385978799,40.39740193995805,0.0 +1985.6756099504987,38.02713270529651,-18.537217256848177,2.7340758846087487,79.29872894056884,244251.96 +1998.959436603538,3.0267751756831833,12.866729985552755,-15.36463687827613,42.47385320193938,0.0 +1129.6269247441537,3.675999728943855,-2.771483833515518,-17.754410073469433,79.67873240231539,0.0 +371.3583565295552,2.3098966723546357,-7.161304331093756,-0.4851295281797618,89.65175711957147,546497.14 +1510.117938143693,89.07802112776369,4.265375197771264,12.188002634046327,45.282265418621606,6386.2 +1957.9953407898608,36.48124024781464,10.16551275598971,1.252601141759948,98.65035822758792,2771105.08 +772.9874977322365,72.41012546137878,0.9220528213094336,-8.25478257900735,93.35821058349428,166889.85 +1030.1759945076328,52.89891131120866,-14.016672980984332,-19.330812277263448,2.5204603540984163,110.53 +964.5984646678206,64.95216013039781,16.86585882816179,17.621283921774207,56.85004156151667,90836.15 +292.55447820247286,9.079629008184064,-15.486020402944812,-11.52461625738486,66.05510021133873,1218692.05 +1410.0759762022008,2.193223419651357,18.78286525986975,2.9828742219899818,84.47326658412898,70791.05 +836.0078511232421,4.505683366210388,-2.30091592277343,-19.37894968331435,67.6626402303557,0.0 +1617.434974336704,3.8450592284267735,17.864927769050986,-16.111817421416653,69.13685861254356,0.0 +1697.816135507575,27.181140484821977,16.585990389517036,-13.193219416345825,29.674876741681697,267.9 +1678.2154158761218,1.1254996715928207,-3.749309380389456,-15.507445335027503,82.23367076535305,0.0 +949.9987964717842,1.9234656275193989,12.00101162101602,1.2301468473403698,7.265574744857979,128946.71 +778.7822280336192,23.21508298868213,-16.409098726929376,-4.117863400767825,66.08214482836621,826983.82 +1547.8774034006988,1.7655690518626477,-16.690629229128,12.051400676608806,21.000371200273975,0.0 +1642.5009809169014,1.2490611528500073,-5.761735851145753,-15.351833093728589,76.79202229146243,0.0 +1084.2634035044591,1.6535994882767195,4.391404005726738,-2.7572795306351905,79.23389478703949,2047540.39 +1807.4558351653457,24.062918830193563,-19.6271572072206,-2.8699629090344647,18.30371301405372,68552.13 +459.0356529414049,1.8995490782435307,0.6070050003900551,-10.767528000975958,79.56174445451292,22115.63 +1782.3238033861282,1.9615921834829024,19.0258761499416,-16.16154061443579,83.91205850281948,0.0 +372.9714193493863,2.8880213103753696,14.337817144007833,-19.57348747327499,6.250143973652442,0.09 +476.345939698305,31.75567937533171,-10.701175209910032,-19.246884551755585,43.57066356915188,62002.03 +1160.912023893129,2.5159721213171022,1.122750477202996,-4.054998701400243,20.07682505414404,432603.08 +321.533264337347,1.1769304343335347,-13.14364923533288,-17.828908469702487,13.514172796698483,0.02 +295.05278252019866,64.82263952180993,-9.469594105480043,-4.217697658277926,80.55195096644107,4010488.11 +200.93373949826992,56.57660049866936,16.920033539090987,-2.5036185321517523,30.024697339050423,1838390.2 +985.3699874496735,2.3422756404779395,19.911125390440553,-2.184561859265739,64.75564182067885,31069.34 +1594.3229863260135,3.393791671424767,-10.29756047528613,-12.333781146133296,1.3644633655394016,0.0 +262.70903050384817,2.382951168631404,-11.517285079685294,-0.0513883099076339,8.865956390154333,24667.94 +1374.0636916385397,27.483312618541227,-4.645627026337036,-4.3073087032511825,61.413854170203,993838.45 +1681.6291713491355,3.162407041724117,-2.165743105918198,19.58107919857788,37.65698755153761,0.0 +502.401527440168,72.92887509472557,-16.430053294764477,-18.185239279215196,88.09080597801808,3864538.45 +464.3547226785277,45.214949359201746,-14.09165344250424,-17.844859693566054,9.141693102010803,158779.65 +1749.441752516965,15.024577047160223,-3.006909303055556,12.981195336908172,62.75200726137474,0.0 +1681.6242979101703,1.0420209471573398,-10.583177277340674,-9.359239726645985,70.58531815109451,26.85 +1170.0951792755363,58.524648343226474,13.797390779135895,-12.648541017257902,61.51074008166651,54939.53 +1674.5597827291645,28.544556063080027,10.0618624857125,14.979410458078348,68.39021977694337,0.01 +366.96093936409056,37.654318613215125,1.4535372352290743,1.309163935293847,25.683709814716924,135676.05 +910.066732289758,1.392035814929735,-2.6948272372639437,4.631586523303457,76.95047051754311,527687.28 +1528.0356009914713,26.128852691812803,13.23951212855965,-19.681572749513904,55.91117817474238,0.0 +663.4135267831341,40.66108350965652,-13.360186257041754,-9.569959827281442,79.01629373695948,944496.56 +1554.192045980395,81.89751274930974,15.495514354697304,-9.631880806167407,13.054711983069351,52987.42 +1107.521487903465,14.485748660388609,-18.036904665257417,10.435687898707108,13.575875566317372,677.99 +1550.4787783068195,10.377284037300178,16.93577847155317,-4.577909940949132,40.15645490391748,177933.86 +1036.4233481431932,7.0924058600201985,-14.447597905420489,3.097411268973218,39.59640368930357,237176.25 +862.2278123992717,25.26826145295318,12.483961761486754,17.276143340673467,13.718259772928452,8.5 +594.5405896615382,69.44526019188926,-19.278196864228786,19.38708595805085,9.039250351270589,234735.22 +575.082814583027,15.831063738129268,12.603126816336925,-14.90682631305242,8.996762986639347,1480.74 +1552.6834590285127,2.848179019762763,3.3628309255954036,2.234684249002785,6.185504838291633,217559.03 +414.0386264611289,1.084296112268683,-19.23862996298015,7.965677732773555,4.28147753900288,282.52 +354.76823019970124,17.30717705249997,10.968390380969865,11.282111487654426,80.96800406413747,428176.84 +517.3244570398343,53.60382442658377,-15.937707958100589,16.80432775842754,93.56336997545688,2077854.2 +515.6237206170593,1.3550351314885136,1.5962170361159256,9.13348882797244,43.14184304583987,282.72 +1681.5937210524196,6.239394100050651,-6.719842382513623,7.597407896803126,19.487304327984344,679.96 +917.3119222535825,75.87415233210793,10.366730451919546,-17.836093082507887,33.508497602344505,14397.26 +1982.6992232488683,10.077527494547748,14.128862866906012,1.7927663605640554,82.03309427295724,2009027.13 +446.9802640231023,2.7625901536459687,-1.4289319598844583,3.95061707040822,92.99589479532185,346137.0 +1376.371686248558,5.0969787567856315,10.317608542278336,7.859903867927298,24.629914452555685,614.03 +1007.7131129622512,6.55057061051829,16.66499729748199,3.33453182025214,4.030303793855229,9340.15 +907.2527180547332,1.7162439876798947,7.56802149897259,-3.621995963734661,31.553262558085752,571669.64 +1775.1515582973482,20.96932678130903,-7.120380556233927,-0.5017012265037657,39.15112064889948,1340550.06 +1956.0721624911191,15.287225019010544,-1.4675168177719566,18.692783581959024,1.2977854874342944,0.0 +1771.1461257935218,19.74448251383484,-10.800090394641334,-6.83584626873301,68.46109609212107,957635.98 +546.1412222632395,16.6564765360809,-1.663666415631635,11.37827863333146,13.325741701832271,2658.42 +597.4362581760813,1.0798020224869138,-10.164380837700085,4.297604727826432,9.102277948304437,50803.58 +1380.932982371114,2.233190126891142,12.289988994298351,-2.2467625348148745,72.1943978207927,2116769.32 +720.3504469487451,2.1436012612021815,4.3966970905523395,-3.4272596253355614,77.30746398125211,1078292.42 +1522.5052354050438,1.5700120027155138,5.329839428778662,1.4890650903983893,19.218787243941197,746824.93 +1219.5571714573605,29.576824638138685,-15.589468461166105,11.991700053553526,77.08053268978678,1435.22 +1191.6357832827252,1.738899285204645,-19.94158769805392,-15.113993828750605,30.45139450985723,0.0 +1691.3844647098144,21.696423374439455,11.567465395902111,16.426295202649847,31.504045609934145,0.0 +1478.95898913682,2.273948472102977,1.692256629131026,10.965873972794844,13.120802673628072,0.0 +247.83997699512503,1.7243298902104198,17.262134993659398,-6.038869315438791,23.424885557898097,95012.17 +289.0264468628282,2.11378152255352,1.4895695595843428,-19.59273682871888,4.838128465273214,0.53 +1282.8052144208282,10.394579210519987,-11.412859027414468,-15.790970997025507,67.52428912855584,0.16 +1075.145736120096,19.5418204968366,7.939063410253464,-14.224186290568618,85.28564060052919,3296.35 +668.3323796173845,42.05810685998637,8.039319212510234,-15.856798892869254,5.7860459664729476,2188.55 +953.580957166643,1.8076918954698444,-17.37869583357798,-15.888840820295751,26.28535172446241,0.0 +1564.238573719149,17.07550256913222,7.746035892841885,18.405807154497843,35.27450782845916,0.0 +1687.900672384274,35.29223796013977,-11.498871099023198,6.338400698657289,39.86206284762246,102567.07 +1210.2015222020796,4.215123882031004,-9.819175368565634,12.825549067055135,82.59645776347385,0.0 +893.6650655427853,1.4435477652537567,-18.743412149768773,2.512550491215384,5.244833690736198,3299.54 +687.2541706911926,2.0506518121092183,5.094888910914666,4.779387939628563,61.79722436441628,274258.52 +1139.4532473846562,1.524464428598886,9.269175738620312,15.239932808155029,53.694478739590515,0.0 +766.5493134158858,59.4872458075604,-10.780333473979873,-9.521232108724412,84.00894825155672,472827.84 +1215.371246685001,5.6676540943069735,11.70155728612305,7.780985671626848,31.28051314817907,2226.35 +1417.9742885173478,11.135179191879674,10.481251445626318,15.9723591604636,11.080174823758767,0.0 +318.94257965491073,34.46484293211397,-3.6093516732219744,17.451690554093947,13.927222649147025,52252.3 +201.92143704094505,5.533460883656731,-17.270993511775437,-2.2380704216183434,63.42722692063593,6035718.17 +582.0988499133373,19.870340498676555,-8.792586901092886,14.268488280000252,55.0298792202231,2743.71 +1810.1206958938055,1.4235073255940327,-13.382834042836071,0.1543825052438707,59.63605797176125,2112397.94 +1363.3233738114066,9.15822470547147,18.35272948508727,-9.684560837571016,14.57204682231148,1201.44 +509.5286334866411,1.559688723899899,12.709770567184506,-9.961637149797363,5.206508205834765,1627.98 +1802.4751312825135,3.137388363010474,-16.864941143031583,-1.9293394077986603,57.08284274286362,488834.09 +1045.920692517212,3.86083867648006,0.5384011697102586,-9.684459021177537,9.025116511546996,4400.97 +1056.965162021589,27.23752286146078,-9.324546816970807,-18.80085426862552,93.03440548555402,47.44 +1883.975498916779,22.29504599172504,-18.715280939711647,-15.77812028566116,80.52844840412556,0.44 +307.076045930012,31.200401149566325,-7.107949164433189,13.968805426064366,18.81533288954996,184415.65 +587.3208943316934,1.328954446170033,-14.896588247440278,15.300350025310507,60.18661483059633,0.0 +1254.3883852785004,97.2362998823704,-11.09071916080138,14.921754201803248,14.070430822204193,2138.47 +551.8757172476073,1.284813399922934,-6.938381522859229,2.1484936915316943,93.68092327218108,1006266.12 +1423.148616576124,44.82244911724269,-3.6443819940865296,17.40869425617707,59.35572309364118,0.59 +585.3661208060963,30.236942006605773,-1.2623018722675194,-0.0362955247392804,32.45775841529558,86747.39 +378.48254707786583,15.258912442129532,0.8078908546555752,-1.498211307491717,68.35963749553801,125441.11 +572.5732873535115,7.545957073122693,-5.199969422267494,-1.0247137409044529,1.251305642278394,8471.75 +960.921261689712,32.678695118065384,-0.0660163616309184,-9.835522670205815,29.49791961694187,60743.57 +517.0489385115438,30.179747821338523,-3.285661623255187,4.540134757443859,24.182750151714117,34980.02 +442.4456448620252,1.8808608684076429,18.57755910387816,-2.041954588821282,35.27152570062242,35792.54 +1748.5073951940935,38.48264778937418,-17.29436517617858,18.986306674790843,9.445327321123498,0.0 +776.7149664751541,1.4358662742210502,3.438053617941974,-13.120744151846935,96.83097661774008,0.22 +849.3656357328565,10.02518242908161,-12.25411314477684,-16.931829659163867,47.320872913318105,6.39 +299.48673710220976,19.50579488924962,-4.982485869815503,-5.954407222909803,85.78440655976163,413638.56 +843.2653223036974,43.99240600129225,1.858632395476563,-11.378003491832176,6.891820679258055,7918.81 +676.6529191788434,8.437629204341748,10.392377896907533,19.67618339418252,84.63758287865406,0.0 +1298.8731212152193,2.976570375716122,19.10924447154704,2.34313038647453,65.65043943339948,41963.86 +569.702535810332,9.578979215205573,-0.2551334738385202,-5.611294790982222,68.19854702135835,301221.24 +1799.057815513113,3.1653097891593616,-9.720835361158873,5.709645483185852,80.82792889227277,229888.94 +1873.3999176551993,11.414338899731844,11.663008725347057,-1.8755398315872365,53.08123694421677,2054550.73 +379.6959029182224,8.414268498804583,-11.13710200610507,-11.646994431251816,63.7671256867023,39501.81 +393.32532131943896,36.392255048026,0.3136268887107452,-4.219227708216811,90.07867952753092,267540.61 +407.5875885997784,3.0212052234142273,13.86845190598252,-8.545825699771408,13.385356954143626,14214.52 +1315.2246613585617,2.511715053040643,-3.848059641569237,5.503703112695972,6.510938318283887,22474.22 +419.5441355773212,8.879135408945336,2.2791106653389948,12.66274407158418,98.2865442086232,7299.44 +1734.2881722744794,1.2618529006664665,-15.217999237050194,-9.496916075970226,88.26827168367292,14.21 +1557.6887268882065,2.8752873713519267,-17.76128906108289,4.85306688752746,51.88461132490241,46748.38 +1675.6559448284434,5.098117354765346,19.45129882932881,8.33919448165457,78.2962945919373,1960.95 +1146.9089483948376,9.446249780229731,-12.844172315682265,-5.199567350166379,88.31016614335175,914218.05 +1994.018980734476,3.4583856655650065,-6.578038521790064,-0.4985741029436763,47.21878094457217,2727891.6 +279.51518529949027,13.221264370817709,0.1873954869673433,-5.647333036277611,10.697926935583324,13648.08 +922.276935535004,57.125410366543875,-5.021135672103658,-5.0838012681705,48.583818817281085,198092.57 +783.0860040877451,12.23080163731554,-16.106437599033256,-2.1513383231368888,35.78591592297615,119136.58 +1907.561897682754,3.746959884278744,-12.12343504406788,-8.183082971195098,3.291066427869389,3639.45 +1238.3497252956672,1.3303378391335832,-0.2620932838676282,-0.4668013413092753,95.94566579244878,3187401.65 +1651.1437378005055,1.8764310445141827,-2.447936967516422,10.08980889086811,71.86264200813511,0.0 +506.6141485853339,13.25667890178984,11.92775375102316,-4.228090812632308,78.7960284462475,240546.08 +1961.54145902079,23.30331341549498,-7.528481709868187,17.817512057000396,60.07924929312396,0.0 +1097.5511843773672,1.257001763882006,17.612604809072057,-11.280178853163996,27.647927753897108,0.04 +1088.6097372871625,2.350172063089499,-8.68758571399312,-2.0198100493647475,58.88552677531585,1535342.22 +1947.592511382328,4.346728767052575,-6.7480536891478105,4.067400400003671,68.34686987492557,1772083.15 +885.318250190861,4.360599671757603,17.972533169986676,1.7305768586368186,60.13666567874432,86365.71 +915.5450441989872,82.56843030182414,13.619335106458736,17.87762679259827,13.587284302900525,19542.57 +1252.554865048886,2.5558843331634917,-7.321281364667942,-7.02687855535439,81.54164547468277,444937.71 +430.4946989860165,1.333646406065655,-4.188612355953247,-4.894711066398552,30.457684386817043,214917.2 +777.9541275413388,5.0819414671966054,13.690411012762643,3.8272627813220295,40.27643606329967,166276.83 +547.774980401235,1.8573080542364229,-16.55642263144634,3.854675746216598,55.52060833409243,72097.79 +385.9102623926893,1.791281869785925,-8.212947557715978,11.49763889921958,97.78593315263852,219.66 +1759.0602913958362,6.529821691312065,1.2622439145016218,11.780629859704558,31.939927796483985,0.0 +1260.7960990294569,4.0999851006866335,13.15616707569198,-19.565161662307027,5.145708426252988,0.0 +845.6110247502402,1.5256452186965026,2.584666960794908,10.567975269326224,97.27314996720789,0.0 +935.6048792600832,16.166159481254134,-0.4088461101047169,8.71474696436092,95.790443045778,34135.39 +976.7342066372383,10.07858428430754,18.48470274612657,3.4308072016215263,20.629713826367382,29665.73 +1339.6685278604768,1.4262620869636644,-15.343584233963009,-7.320529952158443,83.0753425365415,64420.05 +1868.184904680188,53.148247411257906,11.202637027278888,16.282242665603764,92.04209637228054,0.12 +1879.0033153825689,3.7104460082129984,-14.918605698986925,9.528785051950509,2.286220942735395,0.0 +904.685563155194,83.70696000505582,9.313097588157277,-9.708503860299883,75.72022794302796,281273.54 +792.6724272759852,72.95872992180115,1.7235847425088655,-7.791192002445806,18.808686979702475,36906.53 +1011.883700333459,7.382326559536362,-9.414151569176903,8.418228377177556,82.89088479026243,7848.81 +1222.2816147712865,2.8650610522030626,1.7334834896702311,16.706172750510685,3.073672396226984,0.0 +1031.2722406095468,46.74179916588591,15.176643482118353,-0.3783528657205037,69.43290550221258,834378.19 +1385.7561376700617,5.279243370771246,-1.1126531177289722,15.16798761374693,81.86076826784027,0.0 +1197.9182420835746,2.1237402073983707,-19.73685736548841,-4.715420401002333,4.528239182845858,1211.92 +777.287984049337,12.682808401460033,-17.73577567734998,-4.193450093735134,75.94925176890291,421390.98 +822.3154503727387,9.523681993739585,5.305479097851662,7.437648070199887,12.757599284043293,9346.21 +881.4670176075157,50.12285005674601,7.117262476830102,-17.978492606891873,8.829491001264406,564.72 +370.3515828488996,28.7450295658889,-3.929004489490984,-14.44312676745823,92.14581758848172,148532.6 +498.9127383451517,56.52999846579418,-10.288784514412676,9.137000414391212,92.3799980867172,1912897.25 +1501.604843861695,29.471743229621207,8.63866352942695,-10.316580317986883,74.37291152918044,129525.17 +900.374080739744,19.246418336162563,-7.833553018402029,-12.996837652155246,89.13033024089651,21468.69 +586.1701506082586,10.008161492531794,-17.03953656649455,-16.437891024464925,2.654039529465855,160.41 +1212.810339034743,94.42925840526684,-3.615578419849883,-11.005821114483307,51.65617276391607,94970.77 +1559.971176452169,82.85708456293413,1.5655438063420446,-9.981163646241132,87.29218617101088,295967.49 +663.3602522216686,49.85468345041052,18.625151893304523,-6.35354774830625,89.38478128866673,16508109.93 +1688.22178746274,35.533536047499204,3.6888685133469545,17.533182140003518,37.33565534307941,0.0 +1869.5087473250892,14.292858698835373,-11.667194154803967,5.784740269056865,33.13636182943342,115167.9 +1275.3101523329133,3.307552307198245,13.287743399575538,7.732543932207667,70.29785634238591,729.88 +1404.1057861848433,56.34794138672012,-8.340720327798397,-14.690064425196216,6.956706151579843,963.21 +294.6367825814997,1.051071522959775,18.371127342991013,-12.29333245631965,78.27149147930078,2278.65 +1901.9358038394316,2.8502301750121335,-6.987509333024091,15.946844019484152,25.71854120353389,0.0 +906.4725216768989,6.4189632634584,16.380718218305415,5.372365076385761,52.63567723467902,42800.97 +1863.0207209817736,14.870114426807422,15.15815872703663,12.386039813011129,20.06251114149748,0.0 +1242.1595445504363,13.23605736496696,14.55970990198825,-5.701494694549831,73.70143287467457,488733.37 +208.3138379179897,2.247147876994823,-18.424588785630117,3.088274927191228,95.69047299757884,4519807.68 +269.3755987821843,1.620303610099958,13.994798737911616,0.0883044745639338,54.54252909262524,141829.03 +1424.7538502058596,2.783927077767369,8.85200475806867,-11.783519593472596,95.12096219868972,0.99 +1212.8024248974796,4.9821589352008715,-6.6280689440193585,12.990780441929545,40.8048595519379,0.0 +247.75838697093383,1.066859861200443,-0.3960629377709024,-6.6497503993380835,29.353750429720012,89732.56 +1538.2279302002937,24.261164420467356,5.596601607088334,-1.3245017969626185,84.02242903016798,2070088.82 +1733.861606724527,3.1293552762608914,17.741479130234286,-14.680276119068855,4.755250678893452,0.0 +1093.551468390755,5.044392520758816,11.203379509469457,5.534267827744976,28.83636258141334,81548.48 +1038.363392643059,4.675234307396787,-2.859970308193014,11.645417746387722,69.35848636349769,0.03 +209.85159590232948,10.55989504497593,5.816828257383055,-3.5844677054088026,19.70225891931735,148112.98 +1615.969482488479,52.43236462149606,-12.565164982247804,19.125280402272043,89.15485954759232,0.01 +795.2889201429898,1.9896647554961775,-3.042304170684047,-9.696641666696175,48.73560250887254,15242.19 +1781.7745156085712,4.8023546197192015,11.652053332099324,14.923223030667463,25.34441935582148,0.0 +871.5090576044955,24.213502526682355,4.2635885798316675,8.848619875116999,37.754239011203275,21127.87 +1217.14023913527,1.2259219653879847,11.329965906847622,17.090465055944286,29.09098519066546,0.0 +686.6152187587895,45.70432195080463,0.3926694188889224,9.625928537756945,70.39099430662654,45290.19 +489.0589626528536,83.87842769410445,-4.794262628206805,-0.20590889103413,11.880574877255228,217597.78 +1594.8342260863903,16.416266930260676,9.70161512351785,-3.4611814587559575,85.51365227709542,2292969.83 +1093.8628619233068,81.84963405778151,-16.249805660801584,13.175979470465688,15.733153855755086,126630.39 +1165.6782627540513,6.7007537620580955,19.14427336918715,13.614538909205775,28.964251496638965,0.17 +1937.748716267124,6.761817752804652,17.934950960161366,3.556156711494025,63.04377536504547,151090.88 +1934.443841999877,1.6311647169488068,15.21474424811457,8.084973063399152,36.06645514285096,0.0 +1740.1558190643264,1.1773182331553298,15.371123953985824,-1.4856985543907086,51.49529283779011,946571.73 +537.6967269770604,3.0832492623465315,0.4422448200570361,-11.2651477327322,57.34132683638349,13314.59 +1269.690849742844,9.04185033693627,-0.0821711818451342,-18.00078084295004,26.643161874335732,0.0 +1780.6653643799673,10.360119902377548,12.803286859330145,6.148215290704102,53.92557676236462,84249.01 +874.0350856080879,2.723646646336261,-8.669739511967784,6.7685213059012295,93.99703568920395,43690.6 +381.991098684053,16.811689075228408,13.996551176239407,6.610542468353344,1.24511201929765,27210.88 +1659.7332240318592,2.303624822993078,-11.964791523848652,2.4962986206722126,60.026612958769206,1949465.66 +1067.174392451909,4.491819338215143,15.164290843117245,-6.303965544487671,32.700401239305066,128571.77 +1215.9068246465215,2.462742643063583,1.6434087914260775,-10.318534370349584,86.34347417276672,1616.16 +1967.85973337212,24.73587057992192,13.728441106336147,-17.371807003384294,10.56261084666211,0.0 +1292.9805748893298,10.79307056403652,-0.2742886572403291,-14.079650686394878,7.001822614433244,4.1 +964.9628941989824,29.662120724659957,4.3372874424603935,5.131927372598266,41.08473136317011,130038.88 +865.971862124956,1.3016563434265835,17.071445206963027,10.722853821592008,67.70048155353575,0.0 +951.7147267772822,7.091272270035447,-3.27150990767604,16.30491350544746,1.6387549262495391,0.0 +413.11834972160375,85.88496795817278,-11.188544478374135,-16.64332954242315,81.3121475970397,2881771.7 +1630.5510051516292,1.2800856509696854,-16.36078646146445,12.561049522118504,34.31484722962774,0.0 +1707.890344736674,6.866847132681933,3.5991625462486176,3.896791145572576,92.10508083093607,1869568.38 +711.9148422321359,1.204471248889767,4.443404813600478,-7.947344536978598,90.67079500325517,165402.56 +746.8339131378993,1.964747034500387,4.828204373646483,9.031709804942167,76.61709484610392,134.57 +1773.8016614026635,8.414976415921055,-18.513355169675787,19.574161323357323,73.96355932402028,0.0 +243.1466399503198,2.0655075908371643,-18.903380523784072,-4.823294345265028,60.48040727168564,1871519.15 +1136.82339878101,10.90211728675606,15.81668080211708,5.097516397426505,79.654269608366,120998.28 +1034.616286426702,70.05890829084966,7.820079329014602,-9.566696022988603,18.63022457948873,40011.81 +1442.2281852412275,2.5166053550328655,-15.46731168053446,-11.798876815748006,81.89372500737475,0.07 +494.10506026901805,1.638223001746589,-17.014528250349482,-14.03474892356934,56.95558930232926,4.62 +1402.9953334312768,44.72528575089953,-13.525719436342744,-18.713855656533212,78.41560124735548,25.42 +878.1212141747776,8.327980408456725,12.276759202436264,8.952418472944771,49.88606212919864,3962.58 +1313.6866007053557,58.24011149073144,8.923441109744395,-14.161641443695242,63.46491149190129,16642.38 +272.1710177709967,4.094931010168802,5.54612755965751,7.050917374485168,34.818076907801874,26796.89 +1031.1089549321168,17.9913606905376,5.631631484277655,14.78435499409218,43.01674682239996,3.33 +1140.0516091682698,70.24689111112775,14.354954663269716,13.863985140039006,37.11254944544125,29306.93 +585.7875251389759,2.2049137151389315,-6.6616504654748665,-8.04139873546835,74.31853697318415,192638.33 +451.3225775224173,39.944511892995,-7.110799168784645,-15.023752147546098,20.85434369900181,69820.42 +539.2537454221425,18.32455765021403,-2.9829268131222,-2.2774206710657996,93.12160103391857,315347.03 +819.4539405140265,42.25649674746063,19.587040483712535,-12.748431660273418,83.09916437766533,4426512.86 +374.2582687489486,2.194758248545421,2.195957704100082,-5.059684104640563,86.31174434506441,431613.07 +1905.175632313288,7.3819812994172125,1.8760454018751815,2.752854758719847,91.48410478910874,3390441.63 +928.9893106924712,1.809982837932256,12.383751456037526,5.7738784379119545,44.16592372323931,64033.05 +1656.1452845121482,83.20783381248614,-12.87742002345624,-11.267049652449238,89.29958129898093,120561.27 +1953.950821595924,1.3346993406400345,-3.7839596726590585,-10.9081555811224,44.96638980992962,0.0 +345.3235040049304,1.3519691943552017,5.654496247689513,14.638697250188176,11.058944599460268,0.02 +1373.0050422829893,62.5622535993507,19.52067073681373,17.79551016779825,5.90894926300493,925.23 +1768.536356134185,3.9950691079419,-13.821216132076843,5.69784313606025,7.294754099833332,13866.85 +1341.6219811401108,15.632918569636898,-1.918928790929515,2.272928087900188,19.612654982346346,334080.29 +972.2470184433428,3.7579505222489846,16.22327208419559,6.322930196146874,36.62070095674925,10162.65 +975.937443748289,19.83886176211808,9.021242735817893,-14.855181040928024,97.94598476231744,3167.21 +264.617994813246,2.426267822272088,4.551209487796508,15.881561654303354,24.878773785335024,31.75 +1162.2813523206955,8.274445810495799,-9.715665479346022,-11.656173233216812,91.38618943598502,6812.82 +1988.3773942163257,11.667675701211213,-12.511570632316255,6.7872243843770885,81.23291187135193,43256.47 +1925.6735467494816,4.648210427009241,-5.031508258734618,-11.121173362308369,86.25115959606721,17.91 +272.71861191589375,3.187140598803162,-9.795683745653676,8.231661333250099,78.69142730475689,34408.56 +1470.4346065330787,1.9072750840270989,12.3390359543872,10.137352575012418,97.33626388372758,0.0 +743.1767600544755,25.839771721538188,8.828137111727683,9.64183876993188,12.861576943687016,5687.59 +1825.3804761310464,2.1705281966214502,13.407924835373509,-2.852059018661346,48.418826240196104,1654052.1 +281.2065422767014,3.8393064842918294,-13.156707571820014,4.281300859465991,34.94072183149178,68013.31 +1884.573383619945,4.7186474352842005,-7.601225665211517,3.919545645893128,29.139511024894414,762250.39 +1707.4563388179984,8.10463748577114,10.742058518987232,8.81251415267965,45.23558804090966,48.92 +411.5078880546827,25.41776728190253,-13.458063337554671,-0.0399653836586821,48.61203198965735,2064625.21 +307.68380717113854,7.176129532198659,-14.1757977151113,0.2917484222252664,98.60867092691358,1310061.49 +1702.4737957884845,55.23155147258727,-4.6776447784887765,7.376338603305124,27.203486182023227,49445.6 +480.3638077542429,22.886073756716566,-12.542524481953286,-13.1939636736832,91.25644090640054,371622.36 +1162.816675356567,47.53061484463483,-16.843893678431833,6.099193236269818,17.53038735869562,208233.96 +1848.340744181677,27.083695515591906,-7.489019017800302,-14.070761323320294,66.83958393574343,218.2 +1221.406604388782,1.9827300998691637,15.023980601593228,8.993400645207462,31.23620632704139,0.01 +915.0199426510834,90.33469940016376,-17.738682854415558,-4.4434753985837405,96.07760082906066,18881779.03 +1001.028898737186,37.42592401663622,2.644204828926293,13.583308571070178,63.82668829968512,1851.66 +313.61090726696784,13.977951758158316,2.520155356569589,-16.463524934256824,7.3573369555167485,1826.06 +1943.7541784508776,2.1402370674704203,1.233622431681689,-1.5790616602281515,92.43045174958992,5397312.42 +759.177533145949,2.2149365877521947,0.2203489206016984,-13.311302313049984,30.087924545786297,2.7 +540.8542850111369,16.930210181226183,-19.310541209602818,14.75452779295492,92.81243607581844,679430.09 +714.8851433127115,6.798205147161598,-18.101952426145616,-14.99007957781787,2.335044356138953,7.38 +1935.871750804662,22.475998841119512,0.4482805062262684,-0.5921888036115108,22.65039772278971,898109.08 +369.7148962784126,5.5571926136576195,18.732370908522377,-15.78995085056019,28.56143011476683,45082.21 +1761.1454729021264,10.609388255582484,-3.6809687797700263,11.908498155746775,69.11061576404913,0.0 +1474.119009922606,2.376381024875856,-1.106929500262499,-8.718416968997463,79.99712412038168,30448.3 +1694.0345224862506,2.0436300903078033,19.28252461346422,3.7623678684439543,63.37893068435022,23970.85 +1956.6155726622137,1.4167379498031003,11.164536217429074,-13.194252094021856,7.140275413096744,0.0 +1715.8783799303694,43.57913541041569,10.80439388470625,-5.935764783330626,43.93019327775835,635927.38 +1898.0882323001351,12.905430702680436,0.189417881590872,-15.452113086460862,49.904407549392886,0.0 +428.4834622236556,78.39386556133674,15.916506127933632,2.0332421178589,36.51349283783873,4306936.34 +1632.419417300546,31.548053069690067,3.247052215722621,-19.86187571697887,42.53503714783225,0.0 +1182.216249345886,34.47675006394015,6.267893036174228,19.722859652981764,48.77896048598381,0.02 +1178.2920711437491,10.425979541538624,11.502220811688195,-3.348845491034491,55.846178823856995,901696.51 +1818.0588373769244,42.747219679654116,-3.7366047957974224,5.177887882967704,63.46412117304727,450098.65 +1949.2468735640805,76.5820328905053,18.130811381727327,-8.52875981902049,21.80211349295798,204180.63 +1468.7089814777255,27.76390212111526,19.520289313963172,-9.870073525871952,90.26696521345325,316790.07 +1069.289101049211,1.6262146972575424,3.485513282213484,13.845397405258431,82.96039632988615,0.0 +1021.5269442233216,20.046553552228527,-11.117784509671104,10.327315512211689,78.87474102558907,5876.89 +895.4146230017273,1.7412712299780195,10.996080693017545,5.731681110289086,80.77956550883725,141547.87 +850.8782532307928,1.427068581723281,-7.114455860802105,10.09219631704168,53.02031003714612,0.0 +904.7123150319763,24.3108873110389,3.08414006355481,-12.98747388087445,95.35264927013206,33331.6 +361.5558234521515,46.7273189936963,-16.531859181667272,17.36368988743696,37.22901835703865,1444854.17 +339.3849534687888,2.078179141145555,12.295628201206023,-1.8101803948553608,42.578293129299894,183348.33 +1603.765718970161,1.4070101031482063,18.363478354827087,14.748466713215462,81.8115931054783,0.0 +1002.931207256407,59.29878409712178,-16.23113901465411,9.442276850707248,87.03138443671313,1277746.56 +1875.232079380317,1.838309679617872,9.263962417874543,-8.563149809118084,45.44974722272482,4388.36 +1301.9978154691144,1.175363466379499,14.433554542589864,2.7726759658868128,84.95316342774089,1208375.93 +263.31676793195555,27.67634511864293,-15.619751223379886,18.66583193089696,63.69023616527161,1861647.57 +483.54201437146304,49.59422502071291,-10.128141217460431,-18.5164744745016,39.4140693346624,232133.43 +570.4756274234136,10.689236425175917,-4.325150077797892,-2.9407308008433297,90.64416972307492,487871.82 +1956.324843901389,12.0185060988672,13.470413268271454,4.821583876597888,50.814976485897,386782.64 +593.6676070729428,4.71759902980032,-0.2627493798781044,-6.4041575823920205,85.06521235435049,447053.04 +1128.3602173184922,2.9986542775364917,-14.521467898334514,-7.283356094248066,81.42936493670956,198079.43 +1885.118476952353,32.39396736664002,-9.74515763851645,9.947665230977254,10.566557542296756,227.75 +1958.9469138458433,49.95383284096605,-1.3048863651972953,16.653075780650504,87.24148122978761,0.01 +625.4487836903802,4.390252676444253,-18.4294301537912,1.5051332839274911,17.079825549861894,25436.87 +288.41175875007224,3.5288920207728,5.239882758768819,17.92838946729922,81.5721612055885,41.19 +476.4832985679653,3.432285764601236,-18.987124143410984,-15.948852099776726,75.80129327331146,487.12 +313.99126166460456,1.2623821239299071,11.23485377090752,-10.901185149039607,73.9804030725349,20470.91 +551.2236339662055,3.648799919746219,9.354037500219064,-16.491522214381256,92.1667810734516,9.37 +1223.4254864667237,1.1253868442092771,14.61759967890595,-2.578628599012016,60.455376721861825,925989.15 +1842.4078333321552,37.74116004944431,-13.69149037987368,5.0685887726569145,34.52183214648445,162764.26 +1166.993990649812,3.249777728746198,4.103408438299083,-11.981123177842296,59.72605291319152,24.85 +1326.7812020583451,24.00547913793143,11.241103343470291,-2.0584527235458605,69.91676340833892,1093996.25 +563.361052897174,12.200475891352816,0.6299512236149107,7.375783800678284,37.097356675627566,35762.74 +1641.0505172129303,47.30720174249407,-14.76782691948661,5.57949100986856,26.17530567879769,62361.7 +1312.0200353100497,83.32157201410318,-16.042975332914892,5.171277930538771,49.479401811815094,1148370.58 +1755.4462925469047,5.4272925007676545,4.235896317650232,4.241290622773413,89.9323822681083,1648988.1 +1907.9175926104117,1.502040489388302,-0.0956956690435406,19.464412847357476,63.41600637873183,0.0 +826.2213963618661,31.57123193697096,17.182405469286017,8.556860112722786,89.82830680693588,1293885.93 +363.0423053637908,1.103074010731267,13.353630840930837,16.306920017404725,48.036450669655395,0.0 +606.6721242502084,2.792072357416828,8.949967666152588,18.06920852456213,94.7520729894929,0.0 +988.1148182165068,1.2779131435296722,19.295870421893696,14.38715295296342,79.36426790184152,0.0 +1902.248573284052,62.56000045920739,7.784427340927982,-16.193276348783495,36.10374439340058,207.91 +880.9576802721475,1.0246939295940312,-16.305490652035736,1.1697807807217986,45.37374018883033,224575.09 +1587.391784597666,9.671288306212796,-16.897480899704277,-4.73950074489629,99.77912801593357,451791.77 +1172.858045907359,7.046902364016577,12.634767736397515,-16.117261696112966,95.41633355906298,0.0 +529.0557867757577,20.206417828723232,-5.5718566558771565,2.568358493824232,41.61382678346399,95184.34 +777.3214141162128,3.797416010700839,16.971351462493807,-11.487018883265405,83.52237525252472,1211.74 +1375.7453930410736,55.89729616650761,-15.270102597941012,3.2694886402770784,91.0631984969384,474638.42 +1411.1361104328082,29.42330699869432,-12.048519522590343,12.695555564182698,25.92304352004144,30.18 +982.5675442562832,7.321310940335616,10.926699972400806,-4.246477344836603,52.243001015275354,663432.92 +611.5620847918063,5.200588592547458,13.898977669121578,17.993142892112456,75.95144903308324,0.0 +1499.432203122817,42.8328029231747,14.687853771433254,10.658741016823772,8.609298576947872,400.22 +503.9714749028866,32.66785333133711,-16.034429389941124,12.171283422338952,80.76272929784844,2138082.83 +1886.005445357228,6.2805852663719985,-4.72790790046123,-15.50834445798596,21.8935701533679,0.0 +538.2264422656581,4.816634867798419,5.855454124127322,17.67492333617245,48.4183892834807,0.01 +393.1622530985368,1.1961233798134971,16.751824667262532,-18.61883340619752,38.14518103926299,0.0 +1095.765864257682,1.456848834573904,-10.439398758329371,13.755808155500006,74.27675522352116,0.0 +1135.1892765974492,1.2818491245226118,4.013715339215329,-18.813973483207857,24.08329237156397,0.0 +1114.7472466008403,1.1190022832955824,-14.259228182059733,-13.501702608215655,47.16943312894582,0.0 +986.0014808099112,2.0218305956413847,9.891148456884649,-7.386196224339474,27.292328870313636,95161.52 +1990.666807093295,51.79449885659526,-14.899021733217824,9.510422700204815,6.425419947299353,464.86 +1075.3051028070474,39.47468030984937,19.99929953768956,15.97681664091262,84.50768133218868,86187.3 +1060.3038453316958,49.10748533863152,-16.309324012502408,6.659950536399486,23.227478571183433,297899.14 +959.1789128862104,17.684823217869678,7.413486241522014,9.110742041619236,24.009298502918497,6445.39 +320.28635846263325,17.706234124797827,11.081553366595308,-8.409086970716402,5.62912659871566,89870.72 +1267.321936069309,1.769552667332425,-9.680408661734289,19.01506035296926,50.766980680034315,0.0 +610.3419900017284,24.999464574842232,-9.806853227350397,-3.6906312801471586,27.62743570552972,91262.68 +1347.6961644122898,3.6312221738809662,3.845882064000805,16.51655214496092,56.984642977575575,0.0 +291.5002315072589,10.927143829964514,5.218983395198964,11.170170993129847,72.62939944178055,39049.76 +1966.4967822554029,81.17928233153471,8.82103904663191,-5.309337788354878,5.547033834152671,99879.06 +1044.20914222281,55.11004791719277,3.21175950727703,-6.274589650935591,20.848486150099333,101702.63 +1814.1596688632571,2.9267593509429464,-13.021329041182716,7.179240196653791,39.69824469021056,292.33 +1056.0101118192829,29.737279267792857,16.965738986170976,17.618852001482622,88.09659192693272,290.47 +308.5954734335991,1.6150333689493366,-13.335536971462153,6.89377850560954,11.862796113147494,5496.95 +1679.9843829688523,1.1310582490332612,2.609540734875324,14.297081110533757,74.63918211155273,0.0 +1366.7307134008418,1.1385406721766886,16.80011378645128,18.651312655140707,95.40465636518148,0.0 +1607.162685633101,2.190246365996606,16.518783658053003,-6.799894842488614,8.689031872191212,10847.18 +970.705754315972,24.541257040678943,-13.283741007574047,1.5396610017456691,33.96792659914965,169115.43 +1348.286139643961,5.328583638219161,-10.455892170761736,4.364325506605544,77.18721913396256,806753.48 +1741.2122068338936,1.0761799038187647,4.074023082380682,-11.312933772998656,93.5829929723995,0.0 +1335.9177971693975,94.63357846117408,-6.513426676874117,11.901950686217337,25.42615295117495,6768.92 +825.8125427046259,11.661564171377858,9.235329579131315,-9.529675822174234,64.54614306535603,112030.75 +1392.5532698591596,6.134235291191279,0.8961728373627054,8.274985718367166,73.42479518049345,958.32 +1409.3375395053213,10.906861293676153,-9.35639776223244,0.9529682658939808,40.99836148225656,1039968.97 +1929.056532511925,10.963313162231069,-3.5584832955062895,13.466842026692794,67.28327991152626,0.0 +867.6421787750046,8.71913002518504,7.64444284312956,0.4622024635891453,55.36361228646069,664524.57 +965.1471815254362,16.82278168327456,11.4056543676294,3.466692097595696,93.78050970296816,499996.68 +1661.8213301367066,59.05453303453943,-5.217560394217311,-12.757106642851932,54.333389324705976,27636.19 +1110.3721665369342,4.012614000763576,-15.800584665417356,12.327470429994044,52.14478149400081,0.0 +1525.8315676083196,9.417535060079022,-5.868919710562128,-3.915025339894167,67.26024502643772,1849570.84 +1027.4770360164655,1.016922818300463,5.21882878354015,3.1897791458372815,16.07745588731368,298941.35 +587.8912552628608,52.435880208930854,10.393286433856076,13.84235064522068,53.564872433163906,249786.14 +1541.3669170058197,4.090795578055302,15.186369545439362,-0.8244339557962332,6.017967547789839,93989.32 +436.07930453247786,3.488139110095119,18.477675290341587,-9.021414228583478,63.0753733051029,116836.64 +557.4505943563545,98.8722320309245,1.1745669797705327,-9.383703000904127,53.93170354443082,404259.58 +1328.2849690115754,14.74979137195123,15.208297726035124,2.6530402794076746,84.10061465180733,532800.36 +1545.0856403457256,1.7623269891747002,-9.516879294974691,-8.351837775099135,79.97261300554476,27247.64 +1810.438196362067,3.3966432855296964,2.386068577014595,-6.4580030227297325,43.82196253649671,497083.18 +690.655695348605,5.086899722695497,1.5753970345789892,-10.607793509901104,66.24034379406302,35429.54 +399.30366548099784,93.78213074205024,10.747765647099923,-2.1485265838929424,31.028181948488605,1924152.63 +1920.8839871407324,7.265129431134038,10.924913980090052,-1.3567123444396725,39.39594026619024,1882290.79 +477.9615584398564,2.8858116118694985,-8.58628166708165,1.03682046867573,8.724427226577085,62721.58 +555.8005680583511,13.786751091392745,15.434457362790992,3.714184004042016,10.969673069016544,78865.57 +724.3930164052383,6.449400042243204,15.659719333274698,3.51619986831452,82.05577474813538,181758.14 +1152.9044372473174,1.2880145714828828,17.92966103025033,-5.309924371302683,97.22244065627925,103553.63 +1789.0860188613403,52.703471793242755,-1.694226900433189,16.027162341725596,49.43291336594233,0.34 +1568.9828409137606,1.074917304889971,19.49657296586387,0.4662610402008926,13.668456234319766,4576.86 +1474.6835969167432,62.6566644719828,11.396453230571929,13.2846451943108,9.745499408576888,162.98 +515.3250221408066,38.34576507188001,6.127495288539158,2.2951476309057828,5.4952649497454065,18839.51 +843.8287367467536,1.41790266989739,-2.7096811878327776,-5.175472123565483,87.99921559398418,1040585.8 +1061.1288669560204,28.004134550594102,13.69724883233002,9.545921417695396,44.777667643629115,8859.02 +465.3667162740545,34.82437768481736,10.565502198994617,-12.92159670125904,88.1564802293981,714824.79 +692.1734638280105,16.018216043623696,3.422330609619415,18.787212805442877,36.919958109138285,1.73 +754.9997671151197,14.300183168857828,19.885835480269552,2.892102431659791,59.21808001584771,3787463.49 +429.09715699227064,1.25711223286056,-10.021545376237473,-15.833373230251407,67.71001120118623,0.18 +1190.4314454348637,1.3152028571080228,5.670163651464537,-3.1456694037824384,5.953361046952072,169047.45 +1469.0507537435471,28.482447114903778,-7.154913377933045,8.501529987912214,68.47785299185706,26420.46 +325.8769366583502,1.6260367537230356,-1.6862703863390127,-17.27561130053967,80.17187842116606,8.92 +1066.0215831736696,3.0457075607487547,-6.442140234245617,-9.54478151801644,3.185896272085611,1203.27 +1607.980151482031,9.946566433495017,-6.617791789856899,16.974966640479316,6.82335997002479,0.0 +1546.3822321144044,2.1297437244934083,-4.926955661057,-5.751880754833176,52.686759201644705,772275.25 +1667.1315731937575,37.99085967629551,-17.73281694120003,-13.633494865098225,97.16690174881356,3212.57 +1006.8331397070926,41.18661001638851,-18.405556666081743,-16.064692165860734,97.35124746339756,216227.07 +1677.002748751749,48.33774903048763,8.996890486972212,4.762506162993123,11.848286973768296,85262.2 +633.3555281856851,1.2564240518532048,-7.563657881457693,2.325325240460807,76.32716099049091,941918.82 +849.4590105515276,7.173751399291205,-19.151415567061058,5.909665191202289,79.53857360930064,93120.95 +517.4400375520423,49.41233139236971,-16.740753736930518,18.321470334685557,87.81857336076216,1449312.76 +1041.4721709714293,5.326461357150046,-12.166030350558428,-17.595269454205315,5.308296843814954,0.0 +905.7080403477978,24.64000301570995,-18.071509749997865,-12.093159272753269,97.27092275737978,381982.84 +633.668809545762,15.083141605982052,17.84588817598975,-10.647027034546449,82.34915229629381,757910.62 +1553.2052766154068,4.947858070871431,2.7344352063729493,-2.9164452228700233,61.16093747626846,2203672.52 +764.9241898009639,3.571162875517502,-4.239025208722618,-15.158946403542956,7.615987740491123,0.09 +691.0477942625043,20.20627150661973,1.3084893541075449,-3.6052031076334017,24.77566768784444,127117.94 +435.6025955308911,1.8503260963500547,-15.48719596563538,12.647785148898052,35.31650975153846,1.12 +989.8790632435076,52.51036513218793,8.073823200435339,-13.453686903308752,85.8813597997699,44733.78 +745.3363319071436,14.219583707035248,18.783619769304725,16.663218655070065,76.3509185138079,2508.9 +864.6911144137434,1.6711175887734753,-14.773714576833958,16.450136602574702,94.13133925429598,0.0 +624.7950727169948,25.530263098460058,-13.895995096368493,0.5194892238366755,42.83120784665582,489736.74 +1573.6798816758208,7.281571188539448,5.1465353934174685,14.406302322783006,91.76302031902785,0.0 +1874.0060252384912,2.5595453614715216,-13.922802905887137,8.460032595624675,89.67513238026983,0.0 +1096.2773350199975,83.58697064756821,-14.957888470009364,-5.730461802242104,2.8301700178164007,90223.65 +1357.3971620134987,27.497649380895297,6.8193527028055945,2.470059935598252,24.68615900426948,314923.88 +1760.9100978920708,15.345719184207333,4.746298695382003,-15.335337779042192,80.18841515516283,0.08 +1997.8933472005856,49.85794361571526,-11.290519567734162,-0.1695050920474106,66.84409987172266,1730384.75 +1304.329672513698,12.238820908325575,12.92715795307705,13.199162128798733,23.065907847975275,0.01 +1801.6030397717636,7.637324166975245,-15.789966187176177,3.409599907700862,78.36551556950096,646624.84 +1835.4948438001556,2.392730137304117,-6.6970040298984745,-4.7187754533248105,32.33903288181411,1022768.83 +1624.6126780537202,2.026659786672572,9.554705752145123,6.542385637461785,60.612351234132895,9290.69 +1029.6765039315983,7.310357783953964,4.556048408496509,19.074217748856483,93.53111666633524,0.0 +346.07720076301877,8.164867813668273,4.002838126141275,-17.300738828474977,24.72219997603341,1472.45 +228.44999979224093,29.28363671421444,7.450965157885712,-6.785427103411488,6.481381982579841,206574.75 +1058.9611399092644,7.65896385700857,5.858508993549956,-13.762429542290583,66.35374058983946,103.26 +1089.766160362312,15.357424931686037,14.970829591611356,18.2779006989082,73.11371839973407,0.0 +933.25229815335,46.242046719926655,2.750693902799819,1.8360747055937665,31.945302961517992,150117.28 +1222.7012323244562,96.97714425215467,-3.948620705536951,-14.813234636772163,47.37268438260515,21832.58 +1193.8928659479686,4.416219288929649,10.64357308783392,4.486802339389211,50.60792467460205,417538.25 +1705.9034738588473,63.66619974355488,-9.630412220203738,0.0168075988957738,81.77876826687105,1407280.26 +395.5827858720723,40.93565499068081,10.383681430074002,-17.627181228435024,69.61483648352231,752386.91 +605.3197989899818,1.3677709660523931,-8.800640842538488,14.580586555415715,28.02540665358656,0.0 +1627.4089621273347,4.659269824085627,-0.7847696619601097,8.367850495156235,28.028203037769305,14.12 +1726.1063610025783,2.7421166113483846,9.567732729624447,-19.790448186869504,33.1715430506475,0.0 +1990.6835845175624,21.319084199969843,5.106369912861619,18.38689007747632,15.449329916912053,0.0 +1771.2416294967516,12.900254326613467,-16.572438188160085,-13.629274548326311,14.293572001429554,0.29 +1801.818212730196,9.765671362546655,-2.13761292456073,-19.989519716757584,81.92374208340911,0.0 +765.8262967338287,33.66103982142113,12.474222398729651,-2.909137816075651,83.33881717839368,449536.37 +922.9909412168774,4.641062228917068,19.870598894848676,-14.368701384425098,26.747912463888976,2.67 +682.5531886769919,5.827799355714592,-1.3280807306426423,2.805917159424829,85.18928161433601,600981.09 +1291.338916746888,53.86019190155842,-16.562971097795778,-7.542815392274549,57.502758988016,526420.24 +1889.849637572669,87.98669777532592,-5.352571584202495,-12.592876537829564,71.5036218221268,60161.45 +820.3535957209119,35.70381976844987,-0.4030800941581924,19.413798938474912,88.16397581729949,69.45 +1202.6032073866104,2.717327284651556,-17.062858868105295,-6.690839353204523,31.52607556548214,35413.9 +733.3393348162731,1.679976722801441,14.570359330275796,-3.410669411014582,66.56037952944307,486642.41 +505.6399527908735,2.6206576801926516,1.5516441962850092,-8.230394449078133,31.544797450290115,73881.66 +551.3339536735803,7.0068485425478535,-3.355376102345331,13.47947924498602,90.38857502367718,308.65 +304.3016201686339,2.9743635855668913,-4.11261981556013,-12.128636890591885,30.65899280882937,10230.4 +1908.7283414166632,63.39898370655962,-18.8676585262184,-14.893698881957764,62.90806281880085,13269.9 +925.1832953137332,21.95057006553301,0.7550248560118344,15.25831037160224,19.911628774966044,15.27 +1701.4176056037948,6.814884340587693,-0.9769567339531317,-12.665609340995656,37.60817684562209,0.97 +1426.393050841444,3.528770919064488,-6.16458971836733,14.317520336621712,35.78847239931305,0.0 +545.4580905399537,5.771942689702894,6.347091676233472,3.1271104462534094,75.28214474203213,340458.4 +515.8320438423581,8.955734100918425,-3.5587101932780385,12.934868290313348,29.37293036805525,735.77 +1661.578762718981,26.769773976471345,2.870560153548589,-17.193677197045773,33.41345732930343,0.21 +676.4810791151673,1.508978724064307,15.401696991614804,18.544836380296474,1.932058873923432,0.0 +1843.9133306635565,49.85008229209052,-5.444531963277446,-8.009491674072526,32.26785734215159,305332.63 +452.09972844108313,1.7993682881640365,-4.083046412458056,-17.654922120153547,27.942599422311613,0.01 +1419.8755060180451,3.3488844581359087,14.636158850673777,10.595431735857428,54.91613195782622,0.0 +1666.052976855681,97.09118273125934,-5.676242790486055,-12.86185040761684,40.77626574242296,37417.17 +623.461499148161,2.4011388139355647,-2.4254840372526276,-5.955525010369964,98.0666618515566,701056.56 +697.1732542218189,1.5932516450745262,12.032488894330458,3.786250443911596,55.067091495270574,389310.71 +1936.133995050563,18.915185460369205,3.674676095657192,-17.255344293600775,8.202118607598901,0.0 +676.2756896230849,6.113052979945208,17.355433950810564,-11.922657805350273,81.1390420104716,4259.38 +973.922689820086,1.5264088259736437,-1.1734823931108451,-0.4371106791108037,6.273220355535141,153145.75 +978.528067836259,1.0173838906664934,-0.8389436647936765,-3.12388118484233,83.88573639064771,1919114.56 +655.4625498734304,1.4398695675969573,-18.28286517134084,2.3029355642289806,41.14164737699172,34413.19 +1596.423955586763,11.10378790175862,-12.107873453527333,9.145314209870916,7.106014748624821,24.9 +1589.3288178124794,2.895915532292402,1.5999726420716387,-5.880309100677028,97.7591909545933,1468221.26 +880.9724256028142,35.90081176284619,-12.515574521153871,-3.8237722222421855,50.047128080457945,234023.09 +1703.226423945321,51.88206651499988,-1.8566641727080624,-9.104745530078697,85.62649186398609,446328.05 +583.5348819182043,1.9483457810277856,-8.667312794897416,-6.4121197829755205,42.63524095477512,245969.52 +207.75039620182156,4.721062408386905,-19.167466771577093,-17.958833079530642,46.699138285179664,567551.96 +1228.101251700334,1.9640306046831435,-0.9956228984433668,3.204965305575591,36.87404640036282,786672.72 +1989.3399904142816,3.744427336318342,5.850799290151394,-13.088850983758675,37.52327634186566,0.0 +269.55975768839227,3.0089075045776155,-6.470652141461355,8.651469511417357,79.5520682407783,31434.93 +574.3965326752291,37.473978378260874,11.061078461168524,-18.31226135048126,4.047662065664182,4086.28 +1134.0463564767515,4.90861936097798,-14.15784276821606,-17.60496243800437,49.49653337706313,0.0 +1657.8933256007672,9.797823178906931,-16.34833058311592,-8.612422697891645,27.290155549692376,21715.3 +360.2756091350958,22.273589476958417,17.39365976184251,-2.463830196140706,56.11515869005274,7497377.28 +911.4223767660096,44.10758688683394,16.866261908280457,7.744334084832589,22.305958088806225,492721.79 +1544.736441133795,4.003300406363405,-3.738230059790446,7.687336215706288,35.526314230960246,325.71 +868.7777751314509,2.620844990418703,-3.2027244780839004,18.93516338417126,53.7925478910838,0.0 +539.9055568561502,90.553814125156,14.04142319189326,-5.934220535244394,74.43904010185834,7064573.49 +551.8924893138571,4.368125316595981,1.2208447218383878,-17.625961331246295,94.65091071802212,4.14 +938.0878164469896,21.985492480127913,-15.315448469312066,14.450575642945848,25.069817364279498,173.86 +1062.950734650604,22.682038400101135,-15.40506229127994,9.225506720221135,48.80844630461765,7839.14 +1751.265952068825,10.667407636010871,-14.754770467612172,-17.275122940033825,35.516094798520825,0.0 +1356.0543534223884,2.863484858306891,11.230608173422256,-16.666462443264365,60.99764901410009,0.0 +1442.7235181279027,1.9182925577869343,4.07585062373772,-0.93456101482019,37.28155582357894,1478972.13 +1969.3769087646328,9.419596286917857,-8.009352355637134,-6.334201981591883,10.599942609632633,200902.93 +941.3181925417528,10.516205723747255,-13.517063183870022,3.8548818766414694,61.82528265113032,256976.77 +926.037925848431,35.21547198756229,-15.061459174640044,-11.233563422640533,4.520751851548232,8788.88 +1862.024541906462,26.282513000327544,9.655500351372464,18.373564984590356,5.261202938622366,0.0 +642.5760566091055,66.69335386048616,15.434502784364224,0.485401991001515,88.53787355428388,9667510.94 +1513.66744334516,87.4422096794153,1.2431354668487635,10.02875339640754,87.15779316086851,49143.64 +1558.2316487926423,28.556347117589052,10.908403887403969,-14.96862094889496,56.70870304677884,208.92 +376.01839540179753,1.4224024696132724,-8.6748638003343,4.677001665302298,2.7822776770379765,7610.72 +1042.8165302484513,6.460060993088503,3.4265517381634014,14.607191617981638,34.96745136366866,0.0 +561.0124483787972,16.50458997870709,-2.478446086194297,-19.080374706237283,35.28049537505537,441.87 +533.6754910444743,15.149215477610053,-16.49223231278831,1.599447814447057,72.36814330452262,1847414.29 +1034.8905988331771,2.3061501049456803,-0.5053290210096817,-10.129535045217056,81.37896097890702,5603.49 +720.973473514517,14.651748621154765,13.871469959958302,-0.8644480942066712,36.0697187126996,151783.68 +1632.9088057265676,5.004503712538976,-17.928699286960203,12.639805182067082,42.75220565475278,0.0 +1833.6888045028684,4.762705080772827,-0.9157609211537788,7.6028279709544755,23.2413166875454,169.38 +1644.8970895190582,46.56011138540161,14.930523042441406,10.179965191995963,73.06391905846282,4351.1 +678.8555707189975,6.9801751025069345,11.60287717906574,-11.532685921694142,35.56612986788954,10209.46 +693.4419086394951,11.344671063715415,-0.2620008133340246,13.300797166993782,70.84255491184005,379.8 +658.5110302114414,13.358131735032895,-13.146214429452506,4.559684644652586,70.98311691344365,137314.4 +443.0685729012249,13.365756958756355,13.94104785165998,-17.227915305573298,16.465155368431894,7574.75 +1898.83706258668,2.668351433999917,-13.874616705815136,14.5083739553767,88.66239725347444,0.0 +923.6860366827248,15.809084700897438,-8.92717147211593,-17.7697903822234,82.62775818773058,27.36 +604.4410541825728,4.6692509722575695,-15.028992341910628,-18.849175247928596,58.71814386711715,0.02 +1724.0078909148383,20.419287745565104,-1.6396354228839716,13.34988710180694,9.546156270850746,0.0 +918.5515447840228,1.9561186688665717,5.167917118906034,-19.479051737624232,17.558238237584103,0.0 +263.2102599973998,97.32651870387753,13.084732439429663,-16.46263622775459,10.125673136113695,468575.28 +491.4948264493362,35.00149406302376,-1.5464956647257466,-19.321879932176,46.8978800451664,6364.73 +1350.650612641106,6.831292276004665,18.82881086340759,15.211149700832882,27.28575428295826,0.0 +1609.2294935091031,4.005933187883843,3.834279498208733,-18.212180461146655,83.2488708924739,0.0 +579.6818992796833,5.964912394231946,4.17640141100303,-5.092807420635772,44.15968348459884,270749.92 +1851.312060679056,27.695967796006236,-12.98847881494658,-11.32030520252449,45.75769942509835,14246.1 +1731.794816093896,20.455759036326327,-12.395358619196143,-6.3335594864818745,92.27062345080724,1276360.13 +1727.0853573099455,25.362089103402973,3.0650462833400116,-8.376295421361025,58.19937990010975,404112.58 +609.7900642385854,59.97888539841553,8.835176150217299,15.514869031630877,39.34728128628378,95342.86 +290.9647795701039,8.176933251695738,-11.811732494088115,10.748222226134896,98.3622896987422,256247.15 +1761.3623710686506,21.829425030647705,-0.6392928922962593,15.400675035822944,46.781142429135535,0.0 +750.4404117294213,7.638637664075817,-5.751997547673446,8.801704620393433,58.38834368905515,11272.8 +1314.0494861123466,18.88844284022057,-2.44944975672837,-6.786076391569096,38.818094620930864,392100.75 +1567.940390661314,8.905273742149275,-11.114762479385858,-12.56619521774789,67.251539055974,69.77 +430.9278653200163,35.75421560316712,-14.371085438706096,1.1911792157594323,77.80496655817515,5685126.37 +1605.5090381342864,1.024519541728912,-7.179958837845168,-5.733265833316024,63.23558052817566,772389.49 +1889.3206261299183,2.7003615255379767,14.756666673566162,5.736519915162175,25.59366885008846,31224.02 +1511.0749383435364,3.9162936669111663,12.209030380350647,-18.442696315572466,94.28741251020637,0.0 +994.2009472650044,77.76586597160275,-15.933834651491502,8.519281153691969,51.66006084047125,1625381.54 +1778.020649753065,10.32981219964067,-16.48765950878557,-8.017632920088115,82.77625630482515,110917.52 +1149.423734130606,5.354313056878869,-0.2819508472382326,-1.5103798119195444,1.8736476055038875,45235.13 +1540.5876700701574,6.436121458298423,-8.90471191442089,19.144558230691658,52.25862248719633,0.0 +1676.9106989454874,8.010222264149634,12.937031800450406,-11.376982215579488,93.62237659426027,822.29 +1548.8351510582106,54.40775174632592,-0.5527528168239559,-15.29377669080418,69.13280131165986,3254.04 +718.1387768866771,84.07593995626144,14.1083096180746,-11.607445566570703,12.30407152704112,515040.95 +412.1190216304959,48.7898271455984,-15.672047254304914,-5.939858973868439,71.28732703916782,7471273.4 +629.0093528517082,48.22958520696558,18.803083069137823,1.4494115788528772,2.487046624497685,563492.37 +1105.174886564636,2.5005193630877502,10.684053683097844,19.209049428406203,37.49939972945068,0.0 +1109.4984601275726,3.446324310058236,9.275062522641434,14.795335316204245,24.43361019506895,0.0 +1248.7598287661676,15.5631807414196,17.608646449267816,8.598257817062521,25.936849586646307,1567.03 +911.1833075862036,20.524605902289274,-1.187890390993056,8.821181794755631,5.106592415450256,2346.83 +1616.4044866100498,2.543377042685863,-14.044443437525944,-8.648664142957525,62.09609482919385,13715.19 +1843.676750624974,31.08592146613588,-0.1239701663569547,17.11876562297126,74.44847478817255,0.0 +644.1050962630483,2.5114648592915603,12.608953576422357,1.5820864327086248,29.89156765357957,258445.88 +1525.7417918633985,3.3575407564556,14.38171835862537,-13.499175251425658,59.09820790818323,0.0 +1420.3493345810805,4.107627719677965,-0.4581717748866865,18.012100641445812,50.24198284355537,0.0 +1141.562898702767,49.202008646980744,9.292088806971748,0.2610366192215707,99.321685200067,747417.75 +539.3544209734885,29.118419181687308,-10.121891990432488,-13.779514147585743,81.42087712547651,113715.97 +1631.418065448877,11.517835497074582,-10.778118323604922,9.40928665177192,94.65776083159729,165.49 +1929.1273141318989,43.601215471603574,3.450382095322726,-10.648395739627055,82.60863345720257,141376.57 +1499.305398020504,42.25289735826694,-3.1299532496960136,-12.49332243558516,66.1094943426121,29510.98 +1852.1479939263213,6.020966237290111,-13.557903623116111,-9.296340965618546,8.04544147215666,2487.79 +1971.5334769063995,36.54892224267334,10.454499713135167,3.131057924879359,85.93153534789498,1644087.17 +833.6912136306288,2.5851487884474587,1.2858979090384803,-8.296421615896152,76.34090649847415,160709.12 +1348.8023952674064,10.149805031094935,0.8156922966623137,-18.36746104959683,28.933976195858552,0.0 +1053.0789277485403,1.7237864428737726,-12.427619212812807,-4.500117816476106,27.66901025180926,389260.44 +1975.931744353814,7.1382042605115155,-10.354374549362912,-10.624495904131766,52.90084710913361,909.8 +368.85408321390486,10.983266955321811,7.7083153753066735,0.4578936781879372,29.01713516794625,62950.33 +942.2748457350044,1.4448964226787937,14.07612330005394,-1.6175358530046635,97.09191662012144,1303790.33 +1775.970280149025,8.41832180639319,-12.91151412742745,-16.87667700348004,20.16335000226221,0.0 +711.2923589477278,20.10671332414199,12.493828847767272,-10.187438103735907,16.18446075806647,17656.07 +1618.027131149971,16.911279582488067,11.523806675709984,-8.740628863665002,5.308872658757198,20195.27 +889.0096930044602,1.2844221185541325,12.596472743013113,-0.6105347124906135,55.70651072789177,974650.56 +1963.961371802285,1.5512413464523902,3.269752555673242,12.888753309527816,74.29254741073183,0.0 +1790.3537055626734,5.043273163705446,-5.926319252369949,-11.255892056115666,59.0478204148529,33.93 +742.3766437927076,48.458665039530736,10.84083686476173,-13.672533127257784,21.619338536380017,32956.68 +1586.3476043681392,54.89238571215856,-0.8021831371185373,-19.959136899295448,92.41937459099472,5.27 +806.3417788998836,4.161268504579176,-11.125436743789896,4.260127566925198,38.5503997862628,210142.18 +1291.453112387963,27.402120417417756,-3.904529593711943,-6.974405759766649,14.939332744261216,127170.27 +1385.2653831079256,14.28174204714207,-1.6913263487860375,6.806214100579382,19.914505221413407,24284.39 +1693.2717363542688,92.64980669011224,0.2138061116679734,7.605695776983437,44.382918746276246,92975.61 +244.0115135876268,1.5462788818032525,15.902543016351396,-18.211859025340388,54.893213673864295,60.48 +596.2842040741394,12.466986364587878,-3.5533994969492655,-3.2635321137966633,60.54342851061571,318742.84 +1481.4520590594418,15.313529438123926,-8.607567318359216,18.719307894429935,8.25048290083886,0.0 +1214.3418265451671,4.124175537485883,18.49391830765205,-8.994248116769601,86.88196255494607,4944.86 +1092.0891407620577,1.2413850045814252,-10.32207236275637,1.1820173892181352,34.30660726030796,889147.93 +299.37792207436485,1.271185912720963,-19.555348370316317,1.512542825484502,26.68028795058446,180666.49 +826.8965902306212,8.0767401070837,13.992840724849014,-9.577949704423192,69.06922311480056,59730.66 +1757.180417439167,24.263172110406902,18.1778308307263,11.170254756427354,61.74252555770979,246.25 +255.60710666485792,25.13920685982246,7.285277898916749,-19.852685462045528,99.2892455120994,825443.56 +913.5852236566618,2.3011222909264837,-3.694013832315166,-10.928379726566124,41.62497118462995,865.78 +1901.2669178073909,51.99292877134782,1.750187407772139,3.7010909438716055,19.141553945765228,265455.23 +291.58532218102636,5.679692871492634,13.28006284386625,16.691746668169117,97.30369651809326,16774.21 +1549.4703518803462,84.86640468639261,15.41361319786381,-19.61875387504239,48.71965990512126,491.48 +663.7027091276656,1.7231348612111437,-15.898964531563209,4.0347144677445135,66.49110442695087,134603.04 +1759.8958978766104,47.08790811231492,14.719868689640156,-19.86533147901219,5.1891970187949115,0.0 +1542.922362126857,65.56564025440106,4.693992648652658,4.912698347703444,34.25271098656413,196008.05 +1794.2693075450532,44.19275253042266,-18.70885791456013,-3.5361835640864836,98.73525854985115,898507.98 +588.6646227762787,41.46505849679839,-15.660571897184123,-2.62182805883318,96.47340912779175,7906370.95 +1156.326958673489,5.27983111199362,-18.178631451452468,18.700384960244044,98.43098942066008,0.0 +1602.685898434641,26.71075804936246,17.94234290341768,7.289853746187611,82.5691647374669,27288.24 +642.2595373909658,14.410967276887192,-2.939283893332618,-12.14341469269736,50.55035655572835,26715.45 +615.3433494809905,7.06249678069153,8.624625234314035,19.893488593362427,57.62991096940773,0.0 +248.92784029565303,96.87760465007034,-19.931306346083556,-9.732890725385808,8.410425752161387,552337.3 +1925.327529155814,3.80986367775421,11.72687866302162,7.436272906395316,79.53419654965143,320.73 +1478.030384098322,6.703290555356735,-0.7185845074673436,7.211799817845663,75.15803758708593,16054.09 +1344.0086372183328,63.93255702489655,16.944106790507142,13.989000695529956,71.12143198768544,46559.92 +1539.1905008509837,3.784570137391184,0.8358996502076144,-4.045324990397181,38.874046751906235,1176190.67 +1156.903253651791,2.0200507678432285,11.552005968961986,7.8385805250148355,27.31904815535635,71.23 +1057.0408779627387,4.168689028974909,5.178667654412661,5.037642955186601,81.18194479584454,397765.42 +1009.1580340223376,33.00831492861516,0.8215389055847133,-2.543201958594805,97.47921383619337,841407.56 +1352.7905817865544,52.445474543891834,17.929767554740064,16.638296896183338,42.92491096674331,2149.42 +562.7629557062897,1.6939086089706263,-0.1760311149850135,-9.92281626583022,6.495981013353707,2632.73 +1798.5056510267657,17.51561384997751,15.695534598967074,-11.029056946690256,90.17196719365258,7996.13 +1661.1542681946771,13.632446788752016,-18.55689479460524,5.215530208202566,69.25491568085744,32358.17 +829.2145006136609,21.756827630087553,6.296753809964728,-12.38933446886518,67.47078224438584,33885.96 +1241.496734262544,21.984305082670545,16.466463169365817,13.199792272262272,94.48153228352848,103.41 +453.84913991002634,82.97264610655272,15.971013179450956,-6.412989755264404,67.37914466759008,7892372.36 +1950.2232462804764,4.932401451145019,-0.5978547797859823,-3.156020992732489,62.13343970017445,3071082.15 +1825.2068377345104,3.976800854712673,-1.1161133612127827,7.292634303670891,71.30097995933733,1158.36 +1859.4155116985607,14.536189354658356,12.42053738492958,15.404067720026916,48.91046384202128,0.0 +797.8934858662129,7.2249844792740685,-6.5993645957518465,7.598699232947861,29.411627303102808,15312.08 +504.4424732891403,8.861526582991873,17.486457006261777,-16.231791001135562,25.926981855868913,7158.8 +581.1898942393586,1.375795824387304,-9.972635177829623,-6.477560499499226,72.89826962024267,389029.55 +362.0025038811618,1.9791757172582083,-17.024086907475212,10.00251662934085,25.018299002230812,1027.48 +416.19913418249183,74.25913279448272,10.876958104514252,16.310025694422905,93.18440778909036,2326083.29 +328.3481615327217,1.369565802588368,-3.811029779510018,5.353084721083281,40.89689208069439,73036.3 +1981.6815245687724,15.145763998584783,-5.768905257466397,3.8462011751909975,63.723313088554384,1376447.01 +333.3038300643325,32.296098282485666,-7.163601808816562,-4.831217687595708,5.237140158318972,89561.99 +438.5757457125445,1.056153534755356,19.21768936744156,-0.8779336113962666,45.44502336160547,23719.02 +1689.0582720633256,2.7893068660116604,2.867066122928632,-2.7108981305205893,40.556542823018326,1828016.35 +1244.4323901372975,5.677328993096033,19.676577703951637,-17.792940937881788,75.71114265617588,0.0 +1593.9509682247983,10.318935411988424,-6.25676046626122,-19.125884523866432,6.486569209899828,0.0 +1335.641613990779,4.82159346141283,-3.4412304535875693,4.696153369459397,40.8328883867018,352190.31 +1787.9151265921064,19.86088132173835,-11.529492075653284,0.3935513502091003,85.95522856526891,2534196.45 +1349.241549976533,2.8365799871380566,-2.785435346419858,-10.20436784925468,67.18137434891891,1464.72 +1139.8251672256715,1.1245166052510176,-17.51978628385538,15.710038522676602,77.96507022919474,0.0 +1482.9494487703396,1.007261191918677,-19.97768592268052,-11.73620399869672,76.56346829565969,0.0 +1005.3069532257972,4.909350324901938,-1.8770609557858584,8.019953019517999,66.53264552495914,5270.17 +822.9148812285224,5.288415852407536,9.840956983712951,11.53451643941774,39.73838852970936,7.04 +1041.7744144103824,78.92384496080852,-2.5173933415178373,13.609079010849037,40.53993339211405,6286.55 +505.4853891774092,1.2290270034195974,0.7202159665368013,13.581197541588155,6.067028041775834,0.0 +1633.8291136448445,11.484976747807908,-2.175364177379131,11.767270219919425,20.3049242542163,0.0 +669.2668064047003,14.309571484114157,1.07217119685167,-1.6879930721211125,56.250670811695635,354857.16 +476.35678340668545,25.03513996646827,11.024161909987086,4.956462398559602,89.61286177033595,694706.7 +643.4340352098083,18.943891614585844,12.151451624737811,14.308455158134583,61.61062980965457,2550.73 +1715.7262731900316,1.038195130246642,13.522321748498824,-3.1884246719531895,39.317740519782745,1220606.17 +794.3623320759165,18.353350004125605,-11.502803677215343,6.834199011462867,83.3614899886053,95741.74 +1434.8897651106204,4.413426307298751,-1.6862217462433238,-13.618546761744453,45.428221683680015,0.0 +1741.5373351803307,35.13483535181405,13.240227848142856,2.5877044621859424,26.728257821968544,332852.66 +339.9404004650758,2.3808430801268132,17.675160795091806,-14.358163869112843,8.927211263388735,459.76 +1577.0439293204772,27.065203942919357,1.7193352961645658,6.411639723037803,83.02651828510722,213055.94 +753.7978394822541,17.823404660442122,-0.2800008799316655,-4.926761870426053,61.98177182872117,362323.86 +589.9202555312768,20.164235950053047,10.5837908458984,-10.886282626332434,58.501224172402104,56105.64 +1440.0226144153498,2.248512851654486,19.66777254410163,-5.570270099290018,72.34634509731329,13593.52 +1837.6339209198209,21.79455483043077,-2.9627120659470174,8.05668490336005,60.89899592979493,13563.51 +731.0345756823117,29.782202846687433,-13.39601287060666,16.321336963695785,35.70214105134899,3858.79 +1223.9008496917745,9.524024906667544,13.372272043477818,-19.548762052169497,62.14055899280446,0.0 +721.7014049290848,4.794367999720404,8.417008339199207,-13.286082124661672,14.864163223765262,186.99 +1197.7140543075702,2.1533255752043803,-14.19696912018875,8.229333610764943,30.3212898090959,6.6 +1319.351655177813,3.801202885105854,-7.059628130477935,2.74939446942168,54.19403738023764,1282020.22 +1298.6036998223235,33.702081531980554,2.128935689200544,-7.232678101544594,7.845751667742571,59060.42 +1322.383465356943,6.5887260276348405,9.25862241307505,6.070530122805109,82.35657268075558,155083.79 +443.1436259915434,25.434692061632987,11.225863342202588,14.687502505458031,5.419264767648791,14678.54 +1448.3728452560952,30.212220800382564,-13.77074520680344,-9.680853098752,37.864271357762405,64025.52 +1414.550641484402,22.301827291191167,-11.329973177314155,-0.5731129077003061,45.98510475097274,844803.29 +1428.6586199903898,22.237033348071943,9.76490057700182,-19.169306348117424,68.38997617410902,0.01 +333.3269949296714,16.65775263730154,-15.355505089036573,17.839839181768124,16.332070581840703,110211.88 +1004.3099163454748,10.885389096142978,-0.0735904430175216,12.06574930902828,82.3154351173508,44.68 +936.2632376823136,2.4867571410001528,1.8396861756668017,0.2036214735201058,43.18499079917284,904509.91 +356.0806705577584,48.48493010144557,-6.425818114975379,19.67991963739797,25.86384758873647,169700.04 +600.2622702142593,84.82587437094139,11.85344856507525,-11.191254820642476,10.735244272022635,394403.6 +993.7327372364662,8.56974957566709,-17.783367570168384,9.75882195943772,92.60600496853968,953.33 +1537.2313577445482,73.53219187376952,11.097779791231863,10.780262617193731,40.93502743686464,8399.97 +626.7117385723938,99.0807021112165,5.841309932599543,13.234232487037932,38.75209881476088,230749.24 +1693.5498382248406,9.38408267188695,0.2887030269359192,7.403852143339997,18.84413749637968,3223.55 +1182.436914331034,28.1002864785413,14.894907899144073,-12.376375900348124,51.12749152590616,10064.19 +1568.7590333323114,19.39012802258613,-11.91014247865548,-16.346635219558085,32.66848910959151,0.18 +1050.6007700063428,2.982151013759023,12.030961404973958,-12.785711685489618,17.426393068480138,0.61 +1098.549605760002,1.2421638541320486,-12.489018369538138,14.332740892627074,75.53414913061007,0.0 +1315.4949008833523,8.066973352525599,19.617843888920035,-3.920195868911476,89.92830589668337,80927.51 +1870.3470946984835,37.532716186539886,-18.68940920440757,1.8466435559801608,35.87712922268891,158347.29 +1085.262646543238,4.469606864806188,2.127890367122025,-18.98508019722264,29.363018738071,0.0 +1151.5835685949237,37.05761306881583,-13.279327431147632,-0.3428588420639578,37.96513494955245,255721.3 +1283.5945343495532,20.39874100512527,-3.680997341065133,-3.629229266670033,92.55864584130488,1573773.47 +1527.5272471359065,24.608361818734203,-14.082133193017548,1.3824097604965546,58.777007750651165,679634.15 +329.33060387522175,3.7280504150167486,-12.246981928378396,-4.989062595240608,17.425267802823882,41544.55 +1128.2373893395495,8.71153660222563,-17.56077965094047,-16.982311948199516,63.61604047040636,0.0 +1066.8648605708784,2.308913165186887,-19.67985818904596,-18.241587223307967,40.72446401496182,0.0 +1859.0329716276267,3.112870517141927,8.772235444266641,17.991878848277835,2.7234844596211083,0.0 +1088.311844785414,1.5125163785519946,-1.861578690153176,4.152746270824785,97.02307685347178,1191223.45 +1042.9769624497958,1.7928617944829783,-18.17631259287511,5.735850877917996,12.374713642018516,1581.15 +1931.9599793624636,2.636495039728949,17.55879275535486,16.616751966646206,41.93616328484136,0.0 +1011.0376344815868,14.469996389372604,6.6244058185012955,2.03446018319128,66.10621570593877,691104.7 +525.5919745797626,7.628202951200984,-9.42907471866024,4.622113479130121,59.01631270998056,137704.28 +590.449021050419,3.418841957204882,-2.452194115196056,0.9215434547026335,1.4176066917179198,13572.83 +371.33756900655345,52.750295130762275,-0.4293326837746791,-12.96102157001327,61.18066103600359,463623.38 +201.0226326661,11.2278184773691,2.7971125908345673,-7.539563698989587,72.99987254994511,325837.05 +977.5021898008674,70.18090225641758,14.298011106782486,15.3735964635711,85.08291052449763,128152.89 +1584.6366463367983,18.61786704437336,3.5960113093660873,-2.2454268075419748,19.21035290954066,546778.22 +1520.2395970397044,1.0754127795370023,19.149045961794528,-11.834018589097989,4.638817200979346,0.0 +257.8683580451304,67.13536926806532,9.072363571869037,13.1216157929698,94.4936130186656,3612103.92 +1225.9692264692592,51.87124493083005,19.54068793083236,-16.507804479905772,68.36247174159729,148809.35 +477.7096257442568,18.644143869895185,2.0299660510592243,5.5812114416957215,46.04136105695329,59969.75 +1893.937312576455,11.736729934601168,7.137967538523582,8.00497923598729,72.7800281678974,2933.01 +501.2569993595227,8.051043008440624,9.515942882585865,-7.849268002926242,16.55094383155107,36175.17 +1327.9505918554669,9.211910111588468,10.189881382759882,-13.324608286192843,95.88141119172762,101.21 +787.2290518953022,34.54946141945553,-19.02281486654836,-2.068289344040477,65.77018624767138,10445175.05 +1354.810386735834,10.623881178005757,-14.901027170593682,10.201292190223086,87.81827646237346,37.74 +942.0654736353353,2.2493104317420323,-10.891104558836426,15.467662317099222,56.11412851602562,0.0 +1567.3574941515103,1.307239416223016,-9.140220364943277,12.61347593865299,80.27966845017725,0.0 +615.2224255901441,1.7880207421436267,16.214727571812904,-15.618832078137563,33.439812258837605,0.0 +1830.4253352456683,3.1833340722652683,8.904128938897422,-11.08893660467277,14.174529449482035,0.27 +1100.3773687640337,5.4383636306309775,-14.268735578625249,4.679429403116648,36.028246576903896,126650.37 +1560.9676658831352,60.93011872266268,-2.9457986767568034,8.396404445204855,89.79553704282952,92079.82 +1729.5143445222088,3.007284143560873,-10.275138194836696,-19.650470523106357,70.11106120545595,0.0 +1997.891499718649,4.357095871013372,13.194545862832388,-14.297050844649778,46.16791614414146,0.0 +603.1021980691248,2.792730827841921,16.711879440782226,-16.23932368116545,24.285971776841617,0.02 +716.4063444142188,12.344788037617402,-13.428394527456431,-6.355630224097233,60.20642157387024,188476.53 +650.7795561173988,17.14641743625973,-3.3371687208995793,7.23209220766639,59.69741842520558,66874.66 +673.1683978876088,11.594581130407722,18.11347941012652,17.727766590585215,53.5611067802762,286.73 +1248.4005347708794,80.11490138321253,6.2835777076635635,-16.419067648358286,74.04257067488726,10122.69 +1988.3405416625176,97.89399119521266,14.723874733717365,0.2436537576813391,25.038515254839695,261430.07 +1982.500556766958,47.292468104098994,-5.69225075983383,-5.101336164167201,51.58793037358719,1269764.0 +1148.191816452154,40.79362410817603,-11.611905350537208,-4.067137694828542,31.532208920049587,228331.07 +1350.2489784764127,5.396417643034798,7.652149159161365,-17.278147265666668,21.35445441236929,0.0 +1747.9469786628908,14.439993984877706,-14.50294660490124,-8.467164411124678,33.94536186505234,87152.7 +1879.2802252163096,5.0459720186030586,13.59607586905041,-9.901760157731252,80.4918314006222,2971.17 +566.949129193179,37.04347259709258,10.193486274216465,8.731945792670208,12.274878380429625,53807.33 +1151.3751120964153,2.206288382620941,-7.803734598927865,5.674333289281925,28.27264444977626,67287.72 +1699.1066983907222,2.712335627345035,-0.0515392112412715,5.452417886437875,53.76948216733641,249035.18 +745.7637379422649,1.1950556837120778,11.967755984774996,0.7703301176011701,40.695861923332394,616676.93 +991.65627646484,16.515029229572555,17.396412790897024,-6.316592481293748,82.93987542477954,193173.97 +1974.1179827216145,23.82739242997935,-5.913580164510894,-10.248318050782546,78.14491574170584,92213.75 +1973.084054097568,1.0156043970102293,11.59967273541058,-19.54864803859664,68.11397274143017,0.0 +1830.992259377327,10.509245271257315,-12.221316756228669,-14.08287820211379,28.967286619099248,0.02 +1637.2070206905037,5.672167889608239,16.141605567462562,-11.204738371320202,3.1006653934258956,3.43 +684.4349013010503,38.43806914116465,7.450000407998259,19.02254132093183,32.076605835331435,489.49 +777.5301333209375,1.1961385627785834,-13.890427197194072,18.818066254512704,60.49471052248173,0.0 +1185.1091141687743,1.2506373010218146,9.593156864397232,10.706646435977593,11.043303608868197,0.0 +1209.3992742116218,17.394750243114263,8.962306850731228,4.41304095217987,82.53464229896647,540221.07 +1109.9050748427203,15.25027619417521,9.691898276683537,6.752336171934821,98.67306100823272,137122.17 +1346.006503849351,45.9388422586727,-6.204903303012768,4.0219621354495505,74.01850848821073,492279.44 +934.98144073938,15.294446980921148,9.592009997073433,5.873205723113659,42.04664237291926,96061.39 +1548.5134831679593,79.20300462430826,13.062802272402283,-11.2305236574857,79.92462016698305,105433.4 +800.3898676610396,4.253723773659727,-6.114843618356711,19.068076665563744,27.98706241992415,0.0 +795.2185945034346,6.249464606642536,-11.68169333675825,10.265540777998153,95.4568951743082,812.72 +429.0067314052904,90.22966251955847,15.515196859716752,-10.630250878412747,37.29431066173678,3331320.95 +539.6819780520547,1.640772946828477,4.827762599246737,0.5459175846496755,69.29946496733614,795200.11 +1730.9375820584437,39.06696796355444,-1.5845132382020122,11.568692412562608,2.8726991593554194,17.29 +1003.3082094447948,1.0547206022301066,15.18975623759948,16.446404299553848,63.44116388768138,0.0 +610.1620157951008,9.39780650243379,-14.559774256874093,-4.646220016735261,30.306809336559496,90139.3 +1566.813980040297,2.0267709681047985,12.423384234439006,-0.6507887276803581,11.110422360833986,388968.9 +1197.1660264703469,15.766068438790594,-0.3671489646678649,-7.60469230309587,43.92068893796529,290135.4 +238.08082056192828,39.4766180229248,-18.299029539278745,-4.936825844421415,11.479577652948214,1150636.07 +769.4506232060874,1.164352834339532,18.90450742714151,-10.891626038066429,19.32118928532868,4.12 +518.6025400184138,2.125912831234296,11.122669709953694,-18.803531793703165,89.61848608368999,0.0 +1380.5711497691132,4.844185466001097,-11.40976704581691,-3.3467681014928807,7.281632284973878,185826.17 +695.0558731344552,3.2478647199331108,16.947823200050664,-1.1768562625851198,62.874577120003806,157617.65 +316.90420257789856,5.840362175169827,17.413822346231207,11.19587650207484,6.968494838870586,61741.8 +298.8829805558047,80.1191991652543,12.018624003860726,0.9048625117838772,72.08693462599855,4442632.02 +1247.109136325687,1.5937208518580457,-14.913182674316996,-6.944111026093593,97.81115780154592,177028.87 +239.10222026736133,7.023671921939155,-12.544746670665084,-1.4702869051727996,43.52345608205616,781195.55 +1727.8258036449597,8.20696805966619,10.161317396169965,11.845312239174769,96.84695691196497,0.0 +479.7148146630961,3.6365042850720455,16.552230818519675,-0.7619619843822045,64.50729524550854,133476.32 +1291.8194033517736,3.605895323968851,-11.399274484223197,2.207320435686664,59.95136003239442,1385650.39 +1000.4384504193424,26.88464607197447,-1.566886591055998,-13.08004221929366,17.94561527297288,5606.39 +997.1327382174244,17.206307707516522,-13.808241612701895,-19.694588641074137,95.28352303036718,0.33 +329.23485624808256,42.23417736786478,-0.8796862867722322,17.187065813822052,86.29337301798489,393922.21 +1644.954050381988,6.458719816257165,5.701165201388969,-9.281405068829883,14.043911596908224,11146.26 +1807.4944725558544,16.34639743923735,-19.257804463625604,-6.096999600461435,3.8351617649582,3524.69 +219.83000129161124,61.25989969414301,5.717087667771872,-15.406137316904932,36.546228864302485,1251981.96 +521.4875162548119,50.426281446174926,5.589997107429361,0.5199188615383932,16.78351237867171,95203.75 +1827.027539831862,69.19055034233475,-1.7996605253745512,9.483953858732416,34.279143589775344,13971.89 +1189.0885030401046,3.4510404128497685,15.816090503768525,7.442683404756245,95.8877784634489,1871.41 +470.0712408467782,93.5066222180766,-14.607239299197818,14.224084591735236,86.32837219508905,4637824.69 +565.022814696486,42.93187250292645,-17.947526781851067,-8.537196269669218,44.57197385467085,5538377.17 +1387.9752396268054,38.870095896601754,-0.1667536010137649,-7.41346879043788,28.307255754294665,218216.58 +1504.6702800443716,21.635015063625197,1.3213808032843843,18.62294171883114,58.20293362026215,0.0 +1278.9682554438834,92.58400141321998,-9.332432550252596,-1.7360080819775447,93.81222542409814,647179.58 +1915.6670838425464,7.640582265440008,18.465108266147453,13.38054870502766,79.27457670445273,0.0 +1089.3144865911986,30.414354912523635,-9.850910400674016,4.460081600292876,86.90756222079949,368536.69 +740.4894418565481,24.981733781558873,-9.193526850674886,-12.765407973862262,76.35003541708917,36642.15 +1059.0192379564337,29.119090949936304,12.439458192848267,18.297525906680473,50.861756280083895,0.57 +847.3993285998997,31.83681606544038,16.9129470331506,-7.022288376582351,15.0092502027156,319932.77 +603.9486068144354,2.4071978245163796,1.4455898401943834,5.671660790520048,82.04238678847119,161181.6 +282.7338488122521,4.990027504383955,-19.237840522137425,-9.819374069724622,65.44599860083774,3262359.58 +833.9824884172235,6.088467493263986,-5.782604697765588,3.0267244131824844,77.4950246110585,690188.73 +1480.536825877536,31.33283040175198,-11.04240685536697,1.644582508829382,73.6669681986771,1064458.71 +233.1880451753489,27.070479682772746,0.4407218933862156,-9.558470987831653,25.365133882067987,357074.86 +990.5213237706824,46.422915337882,7.302871570751188,19.55083537447888,29.28117577933358,10.06 +1359.216922609763,37.760550383187464,-4.302548583679506,-14.372659208832776,85.78134267327236,6627.17 +1298.7273965137529,15.562084128526983,1.4943992290369312,-2.27949830950247,41.32022427578383,858736.72 +1597.9671845996886,1.905008742003076,10.39441257648926,-18.74490047137636,18.594690496585695,0.0 +1658.9354881876357,18.65995183724043,-10.154119661073349,7.308903110321694,64.62829863695657,42601.81 +1481.070477654898,59.44544292044604,-12.16128406944959,-1.5158563758828336,30.53340114124024,332031.41 +385.03585306054896,19.335202585747343,12.225397873087264,2.4037023677486147,64.62514002466527,1269964.38 +1055.0403992078493,61.83763295790285,-18.519055046366596,7.940288005548859,59.41628874616263,4017562.07 +1286.1307234776957,99.56484827648003,-13.9761366515774,10.560349644287577,66.6506038270532,256157.16 +642.0188698570129,5.2288293232806184,-19.50573018150918,18.63310764833058,99.349944809834,0.25 +276.5932717641977,27.962718371952786,2.21539173823627,14.559844606353538,28.45362409565652,145607.45 +602.4625775768844,12.020354203507138,4.003429272294738,-7.047812170485739,97.58800758362378,323173.68 +1018.80992311875,8.127249667838923,1.2412277747801514,9.090589328881652,76.58278891705233,2971.84 +945.0745742982816,3.0181036973911155,-3.429238827588792,-16.961423073702846,85.68454049958747,0.0 +518.0005663888909,3.1033388050079496,1.1611649367385637,-14.551725706478006,80.44717538451054,255.7 +1683.947976830287,2.343929654114347,-12.242487939361496,-1.6154953142718398,3.273263029101894,129216.51 +1866.236003726104,18.321752535195746,13.049708993446275,-1.615018235152457,50.865216265438875,1414114.58 +562.4269742948874,1.9235620190213345,19.23092014825103,0.2300261142729009,11.47078940602244,7631.28 +1873.231248020999,7.290762307182673,1.6249153058421806,-0.9921196581075488,67.67441624648197,3346586.15 +232.14972651532548,11.134391267565542,-5.0257784672644235,5.655147167591301,6.904766674824894,25188.18 +1864.9324508725017,7.524349402989369,11.671308662366847,18.173817891943237,4.286650498005368,0.0 +1913.4718221456344,51.269493494675984,-12.277122756632192,-13.092434779444453,90.7663159174782,12150.84 +221.69335342866535,7.697305426975466,-7.169057356166588,-5.7015015636868815,91.788704479354,346614.32 +1573.4347341981463,1.4644150580607451,17.59922333741305,-17.029380936266758,62.7532950924904,0.0 +1946.362830625718,96.47151134721598,-12.54823309528257,-12.000672222969758,46.53276893748652,45263.9 +1830.623993872001,48.97418101599658,-15.51537688653671,19.49220398784193,83.02091999231514,0.0 +1947.2782901531832,20.89714570378339,1.8541478257809365,-18.41773135216026,96.45785916712713,0.0 +1190.5823102557508,32.557214558144295,3.4966934673103323,-11.45288707461694,6.3748545479928245,6130.24 +340.6810517936989,1.804601855226653,3.8860041604368023,-2.939827250726128,11.249191824188284,67131.88 +1729.620556049065,34.027464393202195,-13.42087083836348,-8.293226109101703,90.60371329690996,443831.02 +1304.890860456221,2.6031421446803646,8.845789091542668,1.808927892411658,10.84025880271035,317948.53 +1306.5261395389202,9.505003019107187,-10.308754882690522,19.617863226844538,71.70276963309173,0.0 +951.0564977456352,2.269684953858819,17.924102037875965,8.157331109898234,55.79752271055809,66.99 +1229.3155577379964,32.178806235034216,-10.881712906051533,-3.765586208816511,52.64199400791764,565438.77 +476.44360235500613,3.103614420050026,-19.307540835963323,7.317469558011105,10.666566539396332,23895.18 +1531.5860478190705,3.2093481875309102,2.7138077326966448,14.890264746354848,73.14207605654653,0.0 +335.0311532327762,1.6536542016632405,-11.886085075731518,-10.839887784857003,60.59903458667125,19295.5 +1513.6053806788257,27.61931568042584,5.142953013896516,8.677178215715973,92.9553592756147,25655.69 +1728.161160724737,3.9056134848891615,-10.831465577162088,4.558013274629138,48.61828556238062,686880.61 +1050.4436196160786,10.87827482298399,-2.8766254324079243,9.35281171509291,91.329199504997,4664.13 +1117.6946589026888,4.6183528930623865,-12.81942396847949,-16.6335939004497,19.205459639776844,0.0 +761.9856912597409,35.43255889299784,-2.847545716903439,9.317664313492235,21.185192889204973,13887.91 +1945.0254507060577,2.8377054415635428,-14.539186451064158,11.5210311108787,94.94886848956106,0.0 +1519.6240542071816,76.14984086353232,-6.481077690966215,7.4892872968864,10.838722314080885,20895.77 +864.1793959406209,4.392178177044789,-12.04273532728788,-12.110378922195713,24.41740431055441,460.24 +514.6532952194091,1.6132558275549185,12.644074911324331,-13.54622301803933,14.993956955033408,9.06 +595.2432659637644,3.024199697579478,9.17416334378042,9.535066231620526,71.26333272202379,1339.82 +1035.06011499809,1.405665086653384,-13.327224073444262,5.908336108190637,78.24381123265415,71988.56 +1896.623120565808,8.659193847033835,-16.68381789889289,19.34541923061106,90.24606492349524,0.0 +1521.4634223696526,3.16593826114524,-18.970215759478837,-1.810187274743389,15.533783731514308,15906.16 +587.4387467224697,59.16870836859579,-10.93312815462237,-10.827341388280525,32.85209559058341,544955.03 +1747.2100401540165,10.820746938394295,-0.7929053601315506,10.788883042170646,32.402342240721644,0.06 +880.760941417426,2.929118200987282,-4.004672125431981,9.941011625618966,97.37374660359332,11.15 +1733.0999289545337,7.989887416268489,18.85996127050236,0.9081246490885952,58.707878686837915,87471.96 +635.0592763660356,2.4659742894783703,11.689825807678096,9.841966210785484,34.41231441875502,80.92 +1313.5891014853717,2.2775019204291578,-16.872532690085418,-7.576303195304228,30.574889620475417,13975.2 +1868.0068785463077,3.993125319883206,-13.64270469866808,-11.371186880222496,32.582481531056565,0.46 +664.2092164660295,1.6466561842193967,-18.936037925005746,-14.956186393545586,71.50593288844296,0.01 +1447.2678630545388,2.383938644828159,-14.47094554246974,-8.380883405429964,55.3790103164389,21466.83 +1977.1627159228588,75.17851554359349,1.1766859530516127,6.182661463455488,62.7374394504495,286233.54 +471.0769170374063,21.557841245049936,-16.930478586991633,-9.662793591369844,47.580000328183665,2268633.54 +359.1241232612139,69.53529907464505,-17.60528210759492,15.337556692914056,3.599340868421991,234861.09 +1413.5513464006692,3.263577143905064,-15.273539828162637,-10.009475235388718,69.023682362346,1265.99 +811.5247059482547,51.76386210426224,6.7765458029285375,7.377910621501003,72.68854544021741,92407.56 +328.24005925986404,5.303292898946929,-19.225675003675605,1.1025874359226862,18.844623720549578,1618491.85 +1055.5501121904874,1.9426294229362349,18.7850440077625,-11.538115667876736,65.28794660003872,0.99 +1556.7872233591204,40.68311515820921,-4.768549459417897,2.2478810790605097,87.87716813005929,1295930.36 +713.2203207473398,1.3161344704086777,-6.536505559051182,18.189324570140187,60.67408827191953,0.0 +803.0843795092425,6.452168162686796,-1.0074866412854844,17.767101302711286,67.18555200394975,0.0 +1722.2589211645495,43.5140330261171,0.7144717846652249,-8.336237923255844,70.37052184790558,530646.25 +1136.1294420706786,17.15417557790921,-3.1994644414466444,1.4595419031619583,33.10918088679905,441292.23 +1716.9175438516495,10.867543589163104,-0.5469647674275713,-13.965763463553388,16.27523056508912,0.14 +1003.5010858586772,5.096450882391827,-6.410643970028551,-1.2385738798320125,47.79248916811476,943626.21 +1915.355290808186,1.412900766636731,-7.11970317106271,-7.140203513871106,23.947813951470454,43762.74 +1371.430261491926,95.92768681139984,-18.90738939538956,17.179325695433082,69.01234839597174,129588.1 +408.617957574649,2.2363895458336867,6.872021363081906,5.3072652171066,71.77746223668795,143470.43 +1793.1673788082412,3.240536741982829,4.690879182609513,-12.60290273285992,1.8100489588456303,0.0 +1080.677343495436,2.9636814713269644,6.752815094888045,19.693561867558586,95.46592159583852,0.0 +454.950142351229,65.44595559883297,17.642202162598885,7.767018604108005,92.57516687562304,11435575.47 +474.8422409145573,33.680364695125434,-1.0766104132479448,-14.612982500122255,14.06195211294206,6408.26 +1437.5610831977692,8.215984265682371,15.27081737208967,11.982067713202335,48.30165962645591,0.0 +285.2705121130816,81.44155699776681,-2.24227012568607,2.302335573319456,21.693275069920738,815302.27 +715.8687768448639,1.2751661087708115,-0.895438901537533,-3.9895494808969456,96.42786804119794,1336391.43 +451.6176628457626,61.28310515282843,5.318100708595583,-12.147311253557964,57.03723380216483,527296.0 +993.9393733111116,1.3208535609868073,-11.363944024575252,-8.88289204716694,70.31578219152291,18307.23 +945.8367895898504,6.057053251826384,-11.305755097715869,-13.309691993615656,97.81066139186818,324.65 +1139.3775824399406,1.282359391503,0.3932737687845611,12.134199826641131,67.62711680943659,0.0 +703.3453923845544,99.52632853651228,-17.255607291188248,-9.081000455732855,87.20673107162249,12850141.42 +257.67846088071894,67.41848748232509,-10.533678023040242,-1.2015251217022138,24.81465078959501,1324337.03 +1305.8949917633345,14.77739596352316,11.73648614323766,18.71657234979211,23.709751090833535,0.0 +872.6924051882324,2.7270251798504206,-1.450662906950417,19.782288418616552,44.67846100546507,0.0 +1372.4029977320836,3.577300723690823,-18.935122658035347,11.65072479675651,88.26620798311099,0.37 +395.6005474476832,7.926596151991391,-17.570343265508427,11.956425222901167,4.8729012979466715,26952.46 +224.7992395292906,4.421405681602903,16.78061514290528,17.793876232220896,44.69699133904069,84826.38 +646.929646193527,1.1031328330056265,18.26873793361171,11.87291647250338,82.66588408003744,0.15 +1021.785181389294,20.535818449989304,5.644153512863341,-1.961947283030847,18.567806726563894,215397.3 +909.3295535032412,16.8599315925421,-12.602195658330135,-17.587563747091572,61.9568186067091,38.02 +1658.5445994922395,64.36079595850268,-5.2765517018990815,-11.665203869702715,7.926245699597168,10188.87 +880.1077595470831,8.988931692581811,-7.781317739147826,-2.218029281668983,2.026787459597187,25633.14 +1154.794123285542,4.891228181035246,11.406252832857504,-9.383593400229117,32.57132515126554,25010.64 +1268.328066395946,10.544703336023137,1.4835874050306064,-6.8326942323189455,80.7587018689742,798224.0 +239.2965049624609,2.4512634056932856,11.186261944587876,-17.642769288924484,5.092273620129497,56.43 +1127.24007832314,17.827100123599443,-5.57957559140001,2.0851515735613058,37.115125340049886,433293.21 +820.6962669179081,34.67893610825124,14.78045853906826,-5.93680101961692,73.13443278772814,686470.6 +958.3042298298584,2.0273252372776103,-2.8335050108209137,-9.6463877156631,37.54422398211458,7225.2 +380.51731729145047,4.332777977635537,-3.3050372647502435,4.414924465521968,48.401853174431864,107089.76 +1609.0770181675614,54.40038317795001,-0.436062479100503,-8.928912136217729,50.534583483284905,268204.74 +1896.3276514553409,10.258018955897027,3.672230148176534,-0.9494711182442872,90.88857790624228,4304789.34 +240.08387713328,11.579059706864312,15.764474126325126,-10.14391314697468,87.7132753047034,4809841.56 +1282.470973060426,27.8494353416887,-1.6897782081045154,7.22056645414408,7.298902347499632,10244.28 +1574.9193211190443,14.314811398310258,17.20544948855927,14.16611717955178,69.52882696171261,0.01 +712.653659569801,1.3777154736047252,-4.253266585324793,-16.731576275485047,54.74902536105162,0.0 +1617.60005275379,40.54370411132742,-7.017092218331369,12.794012221997184,36.09748231047959,67.47 +1338.2390913793422,70.09258460096964,-8.19817570724851,14.067926575908256,49.76226207890888,1360.39 +1872.492738087926,1.278069485478434,-19.15391981200543,18.597111662493298,88.10073830049257,0.0 +1965.8086604367911,1.7478313021291878,13.965757624554254,13.113516719646212,77.53274662170878,0.0 +276.22300519766867,25.348391402695903,-16.830650489494626,2.095633078041099,57.239186852949814,6576484.63 +1000.8879698486112,16.178858065486065,-6.626745896509245,-17.189836676617716,18.384768892390728,6.85 +1184.5780176407927,5.82148788432653,-9.981728544510752,-17.022050091094968,62.247008841934225,0.0 +464.1378197737745,11.981116686843508,9.777469367728862,-12.13196922591518,50.30438500100759,25483.74 +805.314494769251,25.508042740246015,17.303487026835924,-2.1160113167047223,45.2413621696705,1288247.29 +1977.7654059616311,10.208288228831227,12.66839135715375,18.217585526274533,94.43915439099987,0.0 +229.2148214164486,1.907113977964032,-7.200066809709891,-12.985853965505765,99.27041073083132,20854.5 +1014.5142767438912,1.509635355012901,-1.7697062587628354,1.5518929935492751,95.18457532861426,2211134.37 +1716.778319092753,7.546011632981875,-10.118524142615644,19.922835396393307,74.14866226724433,0.0 +783.0222728947192,70.10831280418058,16.959207652854783,-19.44888343251492,60.28788312479523,508508.13 +1063.637304959276,13.048432684254342,-15.250217016404813,-18.120710491424624,32.623897917951965,0.03 +1960.482342418364,5.205232563537038,18.07817822578826,-9.203504069688382,94.77089498420727,2125.4 +1054.778305656267,65.67685364590359,12.546273096640183,-10.994070533047363,46.10640555588753,108633.56 +435.6583618636983,5.987759002185886,8.463108501052412,-0.0559430811547834,20.96137627990574,90814.85 +293.0986849995039,10.430207822814472,10.95974626600141,-3.1819199029854683,11.963299072906914,114538.14 +1901.7498303919072,1.7100100438587995,-6.426127723918111,3.345735436524997,83.74266022420619,3322012.06 +678.4569438951182,29.840211091583978,-8.164539703715512,-14.11690327990275,33.488305786756136,11721.04 +1107.3150318161915,25.153933839346276,-4.743165377293912,7.433707161531977,76.8559782808659,91128.32 +363.2631789619435,38.7693023259021,-12.735470063169814,-11.41225165362512,63.11177981171864,2607953.22 +962.5792169910892,4.4707730760763695,9.85440340784415,-1.9203246711749375,29.068745711630857,531700.49 +1874.1899346502232,7.449145173140345,-0.9982465197592072,-18.66599486237963,85.21626585163513,0.0 +1104.3433885356892,2.1711179755344805,15.432398332788676,11.914422951446912,84.64260422507266,0.0 +1948.0432732441905,84.91995438138588,15.135260371074102,5.084280436377129,18.010500832241675,65160.17 +665.9041470273194,1.486465023833083,-13.765844856698203,-11.64909167852076,13.052895582556976,46.41 +1108.181431467087,19.862166005535737,-11.247269253048549,4.070061946699188,60.45051937794074,327123.28 +1747.1554252567855,25.734443970308785,-3.5743909735549373,-2.519703764393353,24.107412515854445,732191.94 +1006.8542381967388,2.0676305828434405,-15.247421615294652,13.050710113241056,33.886597030541324,0.0 +703.0772724263413,5.378317192464769,7.577355390415281,19.348818241139952,93.73489750872368,0.0 +1739.855654152187,1.2197003081103557,9.503826213460211,-15.019182039726449,18.3799145884457,0.0 +901.8010439706962,12.978261339498603,8.854014351837268,-0.3957355481344438,47.578791302110034,514019.9 +1155.3019239084213,97.69588820469922,-1.191587439277244,-9.679080396365476,30.1955081883148,73795.76 +1957.7487195472625,7.240522603251976,13.728648874693407,9.987286783745084,35.445134590692234,0.0 +535.669930560555,95.50287391117044,4.23382986954401,-18.62146690168754,37.63911386383684,208905.45 +742.5211460963343,1.7883431173750304,19.74447104746438,1.7830027747735144,26.739676985833626,10931.89 +255.9252801257119,6.094087512996589,12.617528724367162,14.283809517199542,76.58566053837654,102850.27 +905.3078778380948,63.66928020478179,8.890352631322473,-4.428546563878357,81.37524110122393,333462.37 +560.3301750527472,56.67492620499659,-15.06788789930036,13.515877450123329,54.41220991433811,1595870.26 +1424.0628837342044,4.437957672032923,13.30400150526724,-14.124383341360565,90.03104043896981,0.0 +526.3786257785342,22.76256335295516,-7.777111373678029,16.73302669468052,14.528434463634548,656.56 +1414.6629543305655,59.19981412283356,-3.243428178205563,11.658097447902346,51.153030496212715,5175.61 +674.2557707407718,34.17865216382489,-1.4895886151886018,-4.356060669614967,83.01453231357067,266765.26 +839.3921014181597,18.069760395457855,-6.747578840851607,-14.774889174550392,62.470431321860914,3725.8 +827.9491736835155,2.019069317396794,-15.66244799482174,0.8169074609662541,98.51532463485866,580511.07 +1490.1531502944968,1.399604677207075,-12.02544608446587,6.817051262860825,59.97866364443766,1289.94 +1039.7166736490176,16.95291402854452,12.138658177290504,-14.84293837011991,96.04283797649316,960.29 +850.3380179348295,10.012702935530186,6.090805289268588,17.326973307288405,10.771918241766874,0.0 +1734.7208942710097,2.992769846242867,17.71365963864397,10.508069460623716,5.219859737634536,0.0 +1229.511126154165,3.8506991572688465,12.842734146058548,18.065253703293713,36.29489028641124,0.0 +584.895478300396,6.083791957277965,-3.91119095807539,-8.030265246356013,84.29200289926487,241541.29 +1820.1643006586287,9.795840479708833,11.44824601705487,-2.662789665989882,6.0004323510766735,223444.7 +816.7705328605531,6.032786253400709,3.057167698524683,-10.3956298299294,25.977286850399977,15974.8 +270.16287956717673,5.950909479486246,-8.54795668700108,-9.048660419478022,98.5168251839422,112273.59 +1090.2804031540152,1.7039844319599111,19.00357253342957,-14.188532168761494,64.45554622188133,0.0 +423.08849799358006,53.84939601231349,17.139639734165115,-14.99056068014653,39.91784480486592,2748707.73 +629.2395986883366,16.531344013797842,-15.512061848301698,6.831377569966359,8.708308078924265,35833.14 +1544.7995708373398,1.9597666786217636,13.576859266546006,-13.722266881301016,75.76896648435822,0.0 +435.35326407737347,7.042855950808905,-16.892531209591894,-14.662595165680434,92.60529843890284,54062.13 +1652.4996038372642,6.814465922269004,17.15276775087622,1.3834290002287064,74.4128147951506,406291.84 +1886.4331186357167,15.894312847575156,4.9666417125388,8.15992309119348,12.524725774794051,904.2 +1291.7577807343005,16.50970205235943,-13.33671022210674,11.121538543000224,53.654364155373514,88.37 +1478.6465456410926,19.51840269639669,12.69049743231751,3.209561538835146,40.87433220260441,441136.68 +1484.4558978333514,24.877464472031257,0.6312736305403011,-11.937543395614858,90.50034221613676,27390.66 +1987.0543230868009,1.6095634156745966,-17.618005012783044,2.9292043542932156,76.46827568471521,342018.31 +814.7688719629211,4.072343479034995,11.937095391669352,5.031893481013814,80.39516986075925,257610.54 +493.1417922368645,1.083167543990587,11.53352755956746,-9.67610287632187,41.96011116346227,14080.62 +1134.5010228457786,8.114897230493845,-0.7176021259941212,-14.220587807033969,3.4625927300077777,1.06 +1159.8496576970747,7.225371066686271,9.244386659770512,17.026028102061616,76.18045999332021,0.0 +520.24247893306,29.420758176626027,-18.39406683947729,-16.162113431580686,63.69865587329483,1568759.4 +1303.596954189451,2.158906794871261,-7.275736127409358,-8.912743689428787,15.00677689998941,4660.83 +225.4245202582831,18.32267651529454,6.928895302439644,-10.742068117676116,75.92068997729336,1156263.06 +1869.8031244175988,4.1057111856051565,-10.775770979011874,15.679372633505745,15.780754857692994,0.0 +676.233700078271,5.8054107077215225,-1.9835448131472957,0.0783735687496678,74.22877693530609,731695.85 +271.20837510234526,27.451983219134274,17.277870351560406,18.26317864331665,71.64779206887718,2590914.89 +394.8489946547427,1.3902602226447094,13.070071142921588,13.128769322485784,1.7442172834313974,0.01 +632.4481069033551,4.848035349833039,2.319861906508236,10.194845609775316,77.70286158443206,1702.62 +693.0311034908814,6.062426136526701,3.0686532345802453,-12.92882039287376,41.35827630832385,2382.33 +259.0579990959116,27.008385492452227,15.480240692118128,-6.225849426665175,51.151729937561534,4454786.62 +702.8386619487125,2.502930728318221,14.522364084108377,12.810815347577051,96.50451406912585,0.0 +547.2951256882678,78.49210703129074,-16.46813062468127,19.34123128265302,92.06507840129755,2241851.4 +881.5176693821335,98.97463426120083,-1.3769047800859455,15.11683167110737,38.88414015631025,7725.31 +893.3019272407446,43.43304537324845,-12.365853857142373,17.9364866285654,71.24775650267635,1398.24 +810.2139330851824,3.9758043351728105,-16.6712097164864,5.673991081230918,51.7954874984838,25929.74 +790.2629903552672,21.26832598066228,-8.30417965290016,-0.6873094264805157,82.39774224576377,522286.95 +361.51629993425223,1.4665472618968938,4.425752213812304,0.5888612564697038,32.64604400326179,228064.21 +245.3689048270919,55.278803140166104,11.77481283426121,-1.6603278483364647,47.6228164199855,2740179.48 +563.8057402816398,10.76429874869197,16.499054781029532,-13.805185277010343,12.12855558558707,6263.43 +1561.9689693499076,2.253607776728288,-3.081754608472811,-7.769516616386594,92.74138418686886,151143.18 +1983.45757799202,4.516823487309317,-3.1070770675562054,-16.38503642462181,90.1711725862354,0.0 +1871.347115103192,39.947121360649895,-13.86989808603188,-16.45759351718216,28.3301757615461,3.52 +1107.5948399679835,55.01150605779645,-12.20634864694457,-7.526620211661941,58.714355644723874,207627.35 +1157.2829404002816,10.950319071297962,-15.900204371967437,6.645034001268049,38.45785668607545,15922.43 +766.2468242645166,9.13320068625692,19.03602185287712,4.548402680720636,16.423731285388442,103559.1 +1593.0909895477812,31.729957698140872,-14.896102543382591,2.378522503800573,5.457279672480571,42044.2 +1576.5620382787674,44.91374252848672,10.26569802335352,9.957291039111611,82.4603922392153,12182.52 +1719.6902436484002,33.860520113513466,-7.289428393328707,-3.09233605420971,29.624693574169623,763508.81 +1811.908238954392,5.872947255151112,1.4859119788124753,-2.3159246903070585,52.02874398810199,2442116.07 +981.8286468055323,19.224343738704196,14.90840848417054,0.7207362468829892,90.36561105500152,419634.12 +1580.3760225929557,51.84654449698819,17.44669805896801,-17.336378388015085,2.9686740648310224,22.38 +1651.5177118325814,2.0115057024378356,-10.39078724536633,3.267684944741549,55.19213344738489,1728079.26 +755.2273204959503,5.974112136531749,16.450776134403352,10.009574715433471,95.59381349115723,627.07 +1872.6360392110696,1.297889645751654,-9.9179026240328,-9.454304836161658,81.11916311859225,19.18 +369.81470475137985,6.57286286560503,12.19188810520428,14.19255514245618,22.71180964545516,1071.35 +1989.684522493909,35.040005675314504,-19.38998492566048,-9.351345418456534,20.886712971250592,25151.37 +1586.163292685965,2.4777465885134404,1.4092590507617777,0.5285400145445296,76.48616508146105,3222606.75 +367.887629583789,12.127584303284948,9.032507466478354,14.978973252722543,8.893325785199076,1669.03 +1381.2133665890012,1.1835087328595406,13.557558755929676,9.525142675532008,60.336873009972635,0.0 +261.52293967086825,62.41658184501468,13.64515545578784,3.0450971415812456,24.176144054568592,1572436.26 +1586.336508999529,43.65252701705024,-8.045286663196123,4.909256705222758,84.08646317466099,544680.33 +1638.6012589862996,11.189698466596438,14.12598437923958,-15.644538210727529,38.56219697472138,0.0 +1284.3384555646055,25.797284424102006,-7.054118889857661,7.972853520684318,42.08227061131656,30196.93 +1742.3487054498269,1.6137354135694124,-10.64930528661845,4.477031097577799,79.64712118962807,1480713.24 +376.18990438674746,49.02515696069003,-19.941069211191635,-16.618630045940158,9.72068034094312,813185.0 +696.6629156734638,26.94778428151718,-10.57138979466381,-15.027646253954012,60.49516986336531,11996.74 +945.5195388668068,1.737539928612119,-15.26244704842406,18.84021961333351,96.29935947061033,0.0 +276.4243150905769,91.49104124039717,6.997464103959836,-12.875540146791602,65.38719840942723,2631302.97 +1006.7889576280992,1.1093303333070683,-14.208494889564562,15.830921095862212,9.09741005523542,0.0 +677.3842210026188,18.072645305103137,3.415340709782635,-8.966644737407874,90.94473997127795,188695.85 +906.9230217831554,2.205514886563068,-14.941289610991095,-4.1551416522981555,13.765753679699886,94737.8 +965.1847375861516,27.44829031007066,8.176741314473809,2.219571625282426,37.51582518998299,234921.65 +1782.941120277833,1.382969199552062,-8.57817993408533,5.034731007483306,18.986180506924768,202320.99 +686.6137469497503,1.4527864002016997,-7.6521444954643725,-0.0888362964887612,72.46342253994398,1183789.11 +1808.7376316892896,8.562162798483108,5.615412604602215,-6.062492999905409,27.22427906930323,536252.27 +966.7477366631286,97.27896265451086,17.5578129484056,-0.0525046514116578,26.849799415830677,5425449.61 +790.0538972491748,3.5729955848182753,19.664041998278993,8.027494301794968,41.94238691075116,5780.15 +1104.5216888032628,16.790217480676894,-5.709455537336678,-4.140676917588344,29.323367016729453,386336.74 +951.9379154531114,10.894270357876398,17.853062928675833,1.8098373559731895,78.6711942460788,154838.82 +663.2701634992629,48.33249551346845,4.492858732085785,-4.833069974167343,53.14163983467379,129335.74 +1104.8227846329205,3.7772803153933543,16.25874304256504,-6.802929148374175,56.036158137203984,104542.98 +473.2431195418963,12.879196264880743,-18.88591407354238,-8.04725581278059,17.00099372928643,1126239.9 +833.473897441339,79.66123411088924,-18.673085926082955,-11.041840510987845,91.43546506960912,11640181.73 +1218.4223948733631,4.625637729100881,-17.017040891836587,10.430802225854553,35.5396731414814,0.22 +944.1348399017454,7.565038849144243,12.175720077352228,19.35585915488993,38.3606245531362,0.0 +1683.0422498914336,59.92756463760485,-14.4817408814181,-18.840247327587363,24.99653654521931,4.44 +662.0991707632992,4.62378588065519,-12.936599534408874,-12.15748841344718,96.05857080013972,6343.04 +1945.5888418958184,5.772281856919312,3.4159960794498234,18.569992231190543,61.09822117713616,0.0 +1612.4996375324324,4.057304641089916,18.297834482758244,-6.328992001497311,7.034663530230343,5051.12 +1941.66744679545,41.597070922396334,2.6844994832175884,-4.441018860612367,20.068576723958017,546225.87 +1708.6457986945477,72.5728102842517,9.30383203477489,6.518711240317572,48.564193298959616,150576.94 +455.7870665329568,18.289328536218132,-12.490629460392864,-5.892592451683019,19.597374997391945,167045.82 +1147.6281631430247,17.670964830059948,16.566962125945732,-0.2919817908412048,60.8985232483796,245654.31 +505.9613381524142,6.025696304619439,-17.76493405735209,16.028781546443085,31.481824847281644,377.14 +1672.809234729063,1.0591744578433806,-8.687239667562139,2.5913524215318473,35.61181739160712,1433299.93 +1251.4918685299326,2.2277948602390247,-1.8510323468239065,6.675215367123464,78.87901782793749,17862.37 +674.2087658424304,1.971862869225284,-10.95311381015513,-11.316649214884844,52.912901088966855,1615.88 +1873.2781496129085,1.705155560574533,6.550432564518531,-9.54190604556272,12.189810227250922,11.97 +407.3348959656692,20.32799906687903,7.151697328148474,15.662303082498074,37.817572783440205,12205.73 +1214.9523262483651,1.873690715352704,-11.525679255384746,16.703294817187313,89.73785513547361,0.0 +1497.872998400106,1.4834328944780126,-19.656349250725192,12.279166194750868,84.76972550820486,0.0 +305.9273671983772,5.823217521494567,-17.02731008037391,-15.11738809319166,76.22437634487082,266594.8 +1276.1408597711666,3.148076851739818,-19.982884598908974,12.741299509505172,84.509182816012,0.02 +1668.6221878335691,1.9575870856144424,16.215748619894235,-19.23089092513102,10.059385075816534,0.0 +321.5491659524961,1.9599985547390049,4.8666278088817005,3.862178165660195,13.095239996613287,37807.16 +1122.0373479919288,3.253954032886164,-14.462588985192204,7.01049388872367,2.845057976737948,313.7 +665.402920667732,11.849486397445268,-16.299483112062386,-2.9438947263704396,13.377708073776825,56670.31 +1393.2640127664574,32.823977040575116,12.70379457914206,-0.8314615431180572,82.53120004441425,1021871.99 +413.6192607419208,50.76370206004617,12.44158383105324,9.673972373892678,4.754957504715006,194386.74 +1886.6925752069124,31.829931169056376,17.0951856085711,15.79506612732969,47.052724436605224,0.02 +1810.5114470865171,18.04789349394772,-13.629060749821084,-12.426488190915856,25.46451583668917,305.28 +534.7539557762765,65.35053615925133,0.8909904063808805,-14.460612117979972,83.41738741241299,126632.52 +781.8785918571883,10.951499948861228,-15.14095773190261,5.199682982517504,80.48366940802742,107372.48 +1257.7429543754774,18.48049849321918,11.825582590983863,-10.769616072236769,76.83347776361472,55007.69 +1492.5122059416508,6.656425883203981,-3.5006086477142073,-12.231011547131931,38.44738304557748,35.46 +996.7808272884648,4.516150452920304,7.833022263106764,-11.860346600105904,92.63348737552144,1521.97 +481.3243795297551,4.607056717873576,-18.78745271077139,-12.12645718794635,89.68998488065557,79020.91 +387.4726888451689,1.9798603735449205,11.11723988367202,-0.9152753873710084,65.43067576067958,400796.33 +1999.577606445819,39.19180822519906,-10.820548609981127,18.57559777212343,61.646645807805974,0.0 +1019.633818598277,1.2904351037438582,13.712174312266576,13.12279947421937,34.35761927706796,0.0 +1770.5571484672969,22.35478449491616,-12.565660643268526,1.7334237147511455,73.85297427150762,1567480.91 +1068.276808332406,53.5698444936815,11.603889503799415,-16.753389880703974,93.9104606692909,6685.93 +1860.2437493828056,9.882269513275215,-14.635770732803714,6.917258283867707,32.30530010202898,7007.02 +357.9668889887911,1.3816612058480546,6.536689532682356,-1.9543017393492912,29.307029750368393,216645.21 +405.2345444021917,7.191755651043076,11.170349008379258,11.134397334146168,27.094690134664138,3514.62 +1873.3379379036037,4.857951847994243,-4.550685955513245,-0.2417060901467316,98.3325468696108,5052451.35 +1905.487481080613,93.55750653205668,-10.226695443815608,6.730949533569532,54.49144623557165,165763.02 +766.4914054376541,24.12850440789389,-6.218896214260372,-11.998018707660982,96.78930682922788,69056.18 +839.2967965889693,27.71530164329173,-8.136333640601968,13.328617327154078,62.120565720825184,2181.1 +1014.4104227025643,10.75607539905353,5.32266521419849,11.17696244793831,30.052656305468723,80.58 +949.0910241211236,26.231825151957043,-18.21753022079793,-5.039418257376633,59.05319463695086,1506075.62 +542.081388727274,27.87031988721233,-18.342544582318155,18.545766175823488,16.38919424883226,72563.44 +1817.0756910908744,1.3574309950897014,-8.489096805830641,-13.584208969912922,45.361930404188186,0.0 +655.9536812701588,2.787488272853049,-8.921065532246878,-19.19946966161114,44.84468581595896,0.0 +1469.4903370597729,1.0615369381730868,-12.917190473028636,10.525498046165325,58.077337542387625,0.0 +320.8802199229512,10.4620023165985,8.672597863548695,4.022688121425979,39.33693774343601,91422.96 +269.752396751173,56.441651085986834,-19.049483049248256,-15.56313435124765,46.058514673675866,3410038.38 +1376.7148506384572,16.561858483304107,16.96939077561737,-13.61973419838604,87.73936427161986,178.3 +810.2285436318687,10.009561577004249,10.29947305852179,-14.76484707882034,18.85873438916454,180.19 +1379.8269068960024,71.11016645194316,-3.881691915462575,-13.325873859316976,92.34225662277154,55093.61 +369.23816390389464,2.210227723287338,14.357376797390716,-1.5437075412980672,54.31561614112043,177849.23 +1909.732483848554,1.4099659225221974,4.726140695745831,-17.961508044889385,63.25845458242168,0.0 +1547.3260404075718,68.33000819667573,2.8091824639779217,0.7754601588749876,11.322240571966963,151417.8 +1777.281019446439,63.90921893151592,-7.479285562157334,4.214935398946307,15.380533911839787,142392.7 +445.6469972801197,23.224425110750452,6.524186944745849,9.094726879122469,73.52449696491934,75504.81 +776.2897440071649,3.1042616823833895,-14.412211556619797,17.841328016942136,90.1653735393462,0.0 +863.0194955714194,87.00176223397618,0.9959717751335706,-16.70091493794269,52.36668813618,15962.04 +1166.9107669882733,33.938504686624654,-15.355597570414314,-18.59368502049655,17.58510016672575,15.25 +734.3632739133458,22.273535945023117,-2.194122349851173,-14.434455192710946,79.89461791790897,15529.59 +309.1353359409292,2.791403688510007,4.650848388087132,-6.507411832723311,91.83559375736476,249969.01 +863.9810853274473,10.621316325904212,-13.77986249843978,1.014468569478395,67.3476009742705,414538.78 +658.1887663291078,44.1725511789252,-11.1152155168957,-19.828564213304677,19.103476934051475,7622.16 +894.6583246337867,52.54367555749007,12.530309004683064,7.69478687978999,41.83453855219515,141917.23 +554.5271767160473,13.269673329261488,-9.771485310632888,18.275296937907505,94.04375801670416,52.66 +671.4134742165238,11.10676766985912,-16.177757677261088,-10.008843039296911,19.96645817855065,16185.9 +1328.514212778084,24.852361180889172,-6.772395149160251,-19.648118431090307,17.90457650328414,0.01 +898.6769022405172,11.389317203080804,17.405597612282072,10.129813555268626,70.47726121894515,4299.75 +821.6901077050858,6.844820697656429,7.751302462776057,10.80201279092368,54.76744747274483,235.58 +1161.0301389002711,1.4819652591472383,3.017372810023194,-18.259624449935593,21.268603410423005,0.0 +1589.3489735190662,1.786896307654397,13.61678485991048,4.692891683273461,62.03539959296912,540841.26 +881.962321426323,33.15514536758796,6.407490001274576,-10.28641095240253,93.73079649519563,149406.98 +1257.535086600513,1.1202839893362286,12.445817952230463,5.314986421609467,85.6644746664893,306935.44 +1939.1647256627173,1.272360129318752,6.286280087742129,9.055141665507929,1.6466664885517976,0.0 +1139.5642054124912,64.45953320569627,14.570312806831035,-11.09027141727887,87.80122915426986,330330.86 +1837.63563773158,25.585518757665433,4.960327020613016,-9.569616826321244,63.06330021732295,180481.33 +1628.6107236615685,1.0195897100866698,-9.405005225644674,4.462973493065552,27.445445505001707,521029.51 +305.69362697026946,4.2081067535959775,-18.35527428595203,3.2905046689127326,10.248557580402194,398809.15 +972.3779686446624,33.62303565888509,-15.787190123197648,15.446669192303006,97.1494310070912,6931.64 +1456.9731341634586,6.842291934831467,0.4978314247169457,0.4147376177351169,3.87473000475329,125550.5 +1976.08144240676,8.661550577638234,18.870735223799148,11.990695071450151,19.27731985039335,0.1 +1025.0773240907226,8.27176375110425,10.378467448988946,9.280283259184625,67.45351002564617,1772.69 +367.013817428131,2.5366982337659425,11.017706808260456,6.62799997998754,76.03692415886651,61240.57 +1211.616514483162,27.71933938246049,6.551484877878435,-12.329080886052235,27.399685427735207,10963.64 +427.81482582312856,1.6069881010602345,16.139525305556866,-8.945582573943135,73.96997920171883,27357.68 +1552.735208502908,10.33956365079224,9.418372781682669,2.6707793228757337,76.75213395563348,1809942.95 +1113.8185954312,2.1873166302198044,-9.665463565152743,-17.362253405997045,80.46996260723236,0.0 +1502.1764630791156,1.2389837750146364,-0.0207085931696981,-18.19802436712662,75.63826472013659,0.0 +1764.8512883813426,1.9341393863721867,-3.8262801473252495,-18.007319606061706,4.233593432525078,0.0 +1332.1064308929988,54.78603525362069,-13.38436727565018,16.852307688507082,89.33846697486503,85.58 +1302.3907926557267,2.250584531329717,-11.1049174103721,7.5551422566613535,56.715175518778445,337.04 +1558.2265317913364,3.6036152657670377,-8.593728470691921,13.470460215180209,43.67373217126395,0.0 +1716.4190026148012,1.8888156672148209,-13.05425340030855,18.53667335192959,3.4189217036528463,0.0 +1764.2968152986048,29.586269119439944,-11.307664030570743,8.038765419186632,59.48925742235675,23785.62 +265.57435222918997,7.778544391075825,16.6557344409512,0.6128517303668968,17.11320149675052,1224542.46 +1201.1425342360208,77.13830244821621,-6.270431671626202,-0.8392836516148883,55.219768887234395,393749.77 +589.2847576355925,21.313224742676393,13.100667583336048,9.841088030180885,19.73223956627165,33006.37 +1748.62260340721,11.555225921117447,-17.424402226895843,14.715889968990886,69.10365367281616,0.0 +1367.11583336605,20.571305945733325,19.272375583713227,13.184645003275415,9.795720973936069,128.35 +956.4004622583886,1.2046219334201256,10.591669651585573,-0.2821872114183676,60.43781131569647,1407155.77 +538.5876106184323,79.67471529344337,16.26864268294437,10.94036146948929,64.73633284905412,5185674.45 +810.2425266556877,81.81995208527815,1.036454863182561,-0.936542085462797,40.12927435910605,106633.2 +1466.799850172404,3.566808041559435,5.381516728013516,-4.624575850544894,91.79838031141698,2246491.29 +567.8471813809498,18.05472864243523,-5.567238826429319,-8.093137495587,53.12840908545781,106857.71 +368.449301609071,2.534139324443662,-2.7187511610466286,-17.818173902523796,75.30128922621803,14.48 +1798.451764809592,12.4435297143881,10.029712573142303,-11.953498446816347,45.006996011755646,490.48 +1575.5786292442103,34.799938644719525,-18.00125440004379,9.2002821921289,79.37971998198454,33399.74 +559.6308751846386,75.79550478165508,-18.537946584016503,-13.13156725011531,89.84260643263511,10298168.54 +726.160778173985,4.769071641837191,14.996841909140064,16.047082222637215,41.88588957916905,0.0 +1949.7263188355944,24.37869904811721,-15.59969439802138,-16.8566942158351,96.76874629836652,0.0 +1474.7320761664114,27.09282106455651,8.841197973594923,-17.95492493757081,16.159744890390527,0.18 +1298.9396075848845,2.7688383549344127,-12.018288108099387,-0.7567007782220081,84.77072133557108,2361945.2 +753.7312737634346,18.11608138247118,-5.351644543258942,-11.093442165034691,53.05764467013294,50972.05 +738.42525949974,20.457029826794216,-8.258007222366551,-15.881882394791166,14.702813634160082,823.53 +271.1425136424148,33.740554273558224,-0.3865804051843469,-17.605282134026528,62.90790188693008,476955.29 +1511.2673604234765,99.9757141097084,13.066459463472304,1.0918612433928754,14.000216221893016,112434.29 +277.71540510239214,1.203551667308064,15.021363633909,-9.621431757544542,88.86103111071802,35926.42 +208.74320799910225,2.5386924261350954,-11.118218992244504,2.230656633974606,81.78276246107329,155919.05 +1513.0911581497626,1.9505489958921725,-6.494060033620421,-14.06808854991812,65.77716786524682,0.0 +1907.9727628684257,2.036423522313463,13.47667436753168,-19.02303885300166,24.06555145576583,0.0 +1561.7054859091588,8.100229453917398,-16.414599922579484,-18.90963131481296,96.3175069098233,0.0 +1048.9523431238815,57.15748528699226,-15.324126458588465,-15.493086084560804,85.46320981689061,104951.05 +1074.8814492095714,7.8967163444951325,-0.816743212473896,11.841696781891326,71.80589446048457,1.96 +985.0455607683896,21.72505055137567,11.605774244479,-2.05943965881473,37.17146401907615,309881.7 +784.3586007986006,5.662370530802079,-6.56095275660463,4.9544176147934005,48.93255060258023,189084.08 +1139.0855855345123,4.3583954310561825,-17.222723620389928,14.999577555929909,34.46824282916904,0.0 +976.0717228540072,46.60906272391502,18.71470188825909,-11.49580526884817,85.08925012406037,3063788.04 +1276.7021840733944,20.468924317950353,17.556452890284216,14.853944121996484,31.57940838732219,6.18 +1816.61614490197,5.032578711681346,6.076056652344031,9.825418692984096,24.59281029430908,0.0 +1991.0169511828583,67.34735167860711,7.275056524472592,9.160724431308823,22.220270102392917,9337.69 +341.73792178925083,9.931689425297655,17.347814054085255,14.829469604081629,40.71509891033261,297835.95 +892.4302507904146,2.379849506300164,5.754536589362602,-14.964892509267631,62.67385769703704,0.0 +525.271152380257,9.256434342089166,11.53649717251994,1.620045318411334,83.33323512771936,276376.34 +833.8168530659607,22.356245798120284,-1.459365253783269,-0.658667130958932,92.5460505602932,669469.18 +717.4514333871614,5.422819867658695,-10.879896074046886,6.559981533462564,8.928644832830082,9963.8 +514.1668369282189,48.7045429867812,13.301286071582958,-10.480445374620505,5.6716913650547305,206568.64 +1575.3368961583228,11.648981651774609,7.375277179121844,-14.906949600583324,36.9107657532524,0.1 +1093.3197370926246,8.620442509867864,-8.417513148285849,18.937761357451286,81.2002300068501,0.0 +1854.6420479910064,52.17024143012885,4.931022046433222,-1.3727390203366865,90.83289181329415,2380235.76 +258.6663978446261,8.430156031362815,12.659359285780894,-10.71918853099631,17.676636877003876,176808.7 +320.56042363758183,6.742489576040542,-9.18619094649166,-14.853754862674045,29.29021233632355,5140.09 +925.8924492746194,1.6122515037134193,10.726084348876288,3.7439310246207302,90.29421533322808,1015386.95 +344.49917672726684,5.308645899244482,-17.106264440327127,-14.089509308733136,58.00581917252245,104215.59 +672.9132735467003,6.224387202566617,4.997952965637071,-12.678294586535143,41.361935293657645,3873.65 +1974.8535375379224,2.2974424349493106,19.95734500817184,18.086109518187765,25.109951144624375,0.0 +576.1272934723053,14.98464309740817,14.654989495957995,-18.83337349214213,12.176620900338774,355.48 +556.6119345417633,1.9394748000295297,15.02632209159874,-12.526791062259033,11.736488134077964,46.99 +1232.5532038322765,2.801428723365948,7.214286113530934,6.848760331096164,67.73335147898665,13641.41 +1096.3969234276822,13.249026582453109,-1.5525148961661903,-11.324239171730095,72.32101591776015,29369.47 +1244.7889349651207,3.4511761734751016,7.088621278374001,-12.72239982391702,37.20276707711169,0.35 +878.1235007753841,19.02552370794026,-7.152306515514795,2.2600101912564607,60.994026197419394,396643.97 +1688.1722478109048,24.045082186672644,2.110741496758086,7.8382567606170195,16.447425953062947,7779.13 +449.4449925964331,4.004799898095797,1.5871964179723053,-2.77469017073797,3.07440427795172,18912.15 +971.106762514638,1.4954619345709963,1.7492140369398743,11.251514234929104,10.882758392268256,0.0 +1441.5713271993568,9.525848444902945,-3.520496381925411,12.608402245616578,11.480183630751192,0.0 +1762.8255925092194,1.53389926796221,-5.887926785547721,4.92337077905137,98.49229011776497,1202915.92 +865.2288914421638,10.72682913844034,-6.785819425841573,3.1127611107978215,24.365350496235266,174797.66 +1221.942078368755,28.342338737168426,-11.01076566882108,12.65220439643452,14.27833658073921,70.03 +324.4519010130707,17.40442111755422,-2.458110202486057,-19.39880235532383,79.7433044383613,14386.23 +506.5743586012921,7.880164479246621,-15.29017385458082,0.4253930037671516,37.29935199186112,121363.83 +324.4486924390061,77.93222860264557,16.062941692837526,-14.850697078533948,21.419827124895953,1401558.06 +1510.1856055973394,1.5976971708678869,-17.21264801145526,-11.137729491743062,22.81696144790575,0.0 +718.5079436998532,57.544393066588775,13.496748589942666,17.959969539822865,14.764791132563476,28385.76 +1502.741522345308,39.834350949859235,-10.350063665424774,-19.85159045259571,8.910631848387737,0.06 +319.5169022778942,6.909985892726818,14.128767179116766,-7.719439302225486,68.33347410230432,428871.75 +1752.5860407349858,2.0217820843347125,8.810647789889146,-13.825559500139114,44.55834988474815,0.0 +1703.954356599965,2.049904229719402,16.839004850482404,2.816676900423878,15.695526758177442,100183.99 +360.0717374905088,69.7608111073103,14.809318965742388,13.770396872605929,79.45209183424458,4385763.17 +242.76171162293576,2.9336569548878892,8.043500942736372,-4.36444835807035,2.893383872636,6947.63 +301.3198633675841,56.005595059966865,-13.932847076324952,13.487416224695492,43.633148757253934,2175160.49 +1736.534311664121,10.15290774268906,1.961812792185218,-2.3905418781009535,13.603246899264668,536268.23 +622.4662802934124,8.38434756857546,-6.406877854981943,16.36175802561794,3.749351455974147,0.13 +1186.8919721447396,17.338939656885405,15.431025425616966,13.87779852165211,55.515567394146835,1.52 +967.239565724102,2.69201927904147,14.889139762191396,-12.847219856517938,16.387868626756518,0.39 +1631.9459472114838,7.190206248096378,-7.4385019040515665,15.40256112081848,7.783224869004816,0.0 +1080.016942647207,75.3301578738133,6.867983171119789,-12.297436618725852,48.3984320507117,50038.46 +1101.1895131902854,2.9958071844928535,-6.468606917711464,-0.3842101125194075,84.51997559443433,2185292.09 +1980.3654910998243,69.68946295694988,7.127619815652775,-12.159843644539713,49.07725612799942,38151.09 +470.2332021486628,97.36870483709842,4.554841775747396,-4.541501018668539,8.885773201151398,214155.69 +1695.2670897426765,1.270031159188669,0.4379180980831698,19.424171505623708,31.131320619308887,0.0 +293.1495420869926,11.554688586407735,15.136240562705089,10.605607619697746,45.163157970134925,1019587.79 +1059.7677852313473,2.2061680936667982,-10.157989372710112,2.1629508332628733,28.83441979547945,600103.58 +1795.4026830794423,17.51574088416071,11.898666571956742,17.419141207894455,34.416108227502306,0.0 +1397.3851380874182,95.2983291804376,7.580308918891716,-5.611859290183383,50.516658795748114,360926.78 +1433.3863148590392,62.1959049003148,-8.749285209172179,-13.071765582742252,94.30452973625258,49549.62 +673.9711080616739,70.74519096213832,-3.1325698155640413,13.158104435691914,80.68014151797333,47595.78 +953.4346244506175,2.6711583023690917,-17.239433179076777,-19.512985562531316,21.233266475413572,0.0 +859.845914298291,12.151760398808722,3.903066308131424,12.183815869421828,78.74057405472581,356.62 +1138.5977782843895,2.948913494164986,15.515637839020435,-19.12571330771933,40.05990968660388,0.0 +1032.0102742586027,62.92879492336005,-15.287263064079156,-8.62478274862854,81.75590328350553,1306276.2 +788.4170333785809,2.411615053748516,-14.720061599760704,-5.780013378438098,62.0936060546983,268218.12 +749.8651022681062,2.031972494176181,-1.0173259016934155,-7.25883492495579,68.21944703964118,294651.63 +651.5352049792199,1.057609305691234,-8.750795837686503,-10.26271842748871,36.84811919508996,2059.65 +857.0850443925651,2.311509699603915,-8.922843543448034,-15.67286156939485,71.60596907119859,0.0 +469.8946602813092,2.396214510278698,5.546805364672345,-19.87279714607501,57.00334514891509,0.0 +1769.7877436064327,1.4288293909461458,-3.589744901428431,10.98847394398508,62.23862121480933,0.0 +1283.8149053001691,54.3853849410504,13.785902355573212,-1.7233700532175966,55.1574626704061,390043.97 +440.8155660689398,36.30743908491103,-2.843755170256652,-13.522236680888769,6.523277587479968,7025.89 +1448.9468015762025,3.228219040341801,4.611019265642851,-16.71291882063992,47.95052060419056,0.0 +1725.7996423963518,36.85661165253257,-4.08434484526659,-8.862487975852819,6.074310504586517,34400.68 +627.564209694066,6.987617013714654,-9.759060113210984,-5.825035062971717,17.681629590211024,93368.35 +471.08106980707504,35.566458161212886,-1.1467157417298646,-1.5432629238618525,48.08363845921815,85635.58 +215.5110628407537,4.426039685679003,8.819217043638767,-15.95785953697822,41.21126536077249,11140.93 +285.0506099416732,13.46816576402351,18.11236562701877,19.196933564036343,5.745756100200849,65545.05 +1572.0524269463208,5.797237381045089,-18.31332696377608,-9.250147565197867,14.585259146304033,667.46 +1976.9353976750488,2.3732945069420697,1.2730779072391485,-2.3481642230812927,47.06408923965409,2733099.09 +280.78458045729786,14.83425594842782,5.438640367437322,8.360617223657956,96.79829548952816,259480.17 +1546.5277263438068,31.743996307446896,-16.571178930445885,-7.592388022631864,49.15319121046766,115210.67 +329.3518985137281,32.07851453912829,13.16684095689428,-16.700121555915537,77.48279744868175,1913821.75 +1265.8390848266004,5.159158097729665,-8.961920053678018,-4.938381777048013,44.86276017178219,826691.6 +1560.935508370828,10.899925681312894,14.9964778383127,2.1149086798517525,19.98075663969952,229058.54 +846.5679150819278,33.69435887454181,2.104278470008638,13.670156794145544,3.0970291251941684,150.37 +219.6824979991947,1.2852724220887537,-13.916842892721933,-5.282956844566917,38.1738112009522,71426.47 +1271.3408338257666,1.3924405643808078,9.568835608763615,15.580838421183,92.02962899435832,0.0 +1984.24033065205,5.655167593170317,-13.71085989519784,1.843014178403384,33.1576361001535,1003961.11 +663.7113611092924,2.7986152869300973,8.815137553931915,8.699465647776737,37.4842106535036,1353.3 +541.0842989369885,5.61425376747333,12.327928775575794,-18.79336457177839,69.5792342679691,2.89 +423.0666069563269,1.5399483674199632,3.021165805122661,15.829092910695728,73.95437092940405,0.0 +1199.460115820101,15.276225526875672,-9.156302160274286,-11.462116801570732,61.23006748025752,21459.05 +1273.601178848492,22.05367712274527,-2.506489454183569,-6.965253495233168,34.484514053935115,302777.43 +1626.0875069067242,38.3425520487478,1.12081819884025,0.9462110582859083,94.58033219017474,1921850.02 +1555.5318925169174,20.00073133680866,6.631243988912914,18.393195330359223,35.898528759997276,0.0 +1806.574690631157,6.205300105292432,5.357021530676098,-6.172995611636742,29.908971066268272,519010.76 +1650.3908570161425,74.10652513817377,-3.983026825497475,-11.179930363473002,84.47280572931517,163222.07 +645.080749543,28.357244780519704,10.326654698419176,18.42908773755235,93.5869930376442,1834.13 +1200.57932877637,11.359585682153938,10.856654597420174,12.338573499428716,95.69976337144423,2.09 +735.341526368444,2.5923928601646145,7.853247963319832,6.536808769115003,53.78860516573276,44493.08 +793.6136831927045,19.858661515913106,-9.113811831724624,-3.6145459105830735,87.07964770212723,542349.25 +1877.4998646139936,15.256013002159554,-1.2241485314135003,-3.1818008031408773,19.187307778870807,737858.53 +1427.4126291207324,23.262693459433265,-2.689719914268034,18.026817696092397,89.010910348892,0.0 +1954.2627438519903,36.49635821703083,12.671689437794615,-17.241660015075855,76.0609891423073,0.31 +950.44256609374,67.62374805993052,12.327199237379263,10.300008221409286,40.51953570382901,113954.58 +1167.3876320371578,79.08847158522971,14.643236185031196,4.046019096789539,25.27326070832212,419983.58 +1076.807755849559,18.212560365602627,-10.752968745060336,18.73740961321456,76.2053294796041,0.0 +393.1167035427084,85.48936111752774,9.938182679495313,2.3362125610641105,43.62791447618665,2343559.44 +626.063590147886,66.50354527981412,14.815968347028146,-8.778398819805048,97.88293044460733,6614340.58 +1149.745449088068,1.0121123262074738,-13.340370357465511,11.19675108934266,85.60542726805905,0.0 +321.27374923941125,18.84668328988724,-18.40251757500396,19.425143146608335,79.25266925111188,1132745.73 +1876.631472756001,2.2747769537271596,-15.779658061763095,16.298146213361516,34.04542460268815,0.0 +422.91862749806745,3.893904615632659,4.248095068074669,-8.2104312906155,71.45352130032063,151759.09 +556.3653435504328,3.935504374497493,-3.1340851817766024,-6.145988346026616,75.83656076486588,412506.36 +1577.5782030895457,9.252503952167396,-12.1979454428844,10.19280769337417,41.53536549258523,1.29 +374.4821752207647,1.0513137777248058,1.1321428702731362,3.9276195543821046,10.363814298929974,43939.9 +1820.5005793077369,2.962052938381539,11.420900570985657,-19.535489528304964,73.7930916569884,0.0 +1506.261747300564,1.1435151266590224,14.23270722787918,-14.325534083002012,30.15212567142305,0.0 +323.51754279594604,20.004013153289492,10.068839311819836,-16.580317857590128,14.143436625243368,70170.72 +1445.3247103141753,60.05859350800098,15.420455792087376,-12.850851339541627,5.225605242241256,2559.23 +1336.931375908372,98.98680794502238,4.16741594873574,-7.803609742365429,33.39853818607059,156309.93 +1563.2289789318536,7.890668231580157,13.48294723132657,18.687981891023146,51.48437521153826,0.0 +1690.7561344808046,3.313463726420489,-3.312516305498323,7.058773354060777,4.801231176387501,194.07 +1493.0310137116792,50.84019333991239,14.099144706307488,-17.809548474044917,56.77674326968112,69.78 +1255.1173314877494,1.683902862015905,15.83252755268071,4.294605231785398,89.64329724175838,353196.16 +780.4339734471998,88.81329076602657,7.456322428736382,-2.5334281107502177,60.19445222830901,453205.11 +1455.0925912938724,26.89520812966353,-2.758147814025138,10.161585707905214,52.934129000978345,2277.04 +1922.5488523354031,10.18284963329462,-8.733043481557017,15.357122218093584,23.99427331342099,0.0 +1257.5392049519735,1.5606340374391612,-6.99282108209736,-17.391470956087968,44.48564366115097,0.0 +1395.820763181657,1.0874063666446316,-14.705795917062288,19.19730072237896,60.45604891411771,0.0 +986.8304759596411,12.276212430614528,-18.11352778956834,-17.683789772608844,86.64495987600365,2.88 +1561.0174575375338,6.725135125645505,-3.423278156075509,9.294933959587803,88.30203855532902,12.86 +1995.8013062095447,48.45392789848189,-18.29325257767816,16.125279320909634,45.74092810128551,3.75 +488.700783321925,19.25799011223092,15.223521067929088,10.068766984650384,19.18276085709001,208673.35 +564.3295031067721,7.307901633545243,5.998323608905962,-13.968423933229378,71.02993283512193,5119.69 +1170.987965595901,2.831484054251937,13.746689849090764,-11.680290905743751,95.10641364491524,29.04 +1066.4757150709847,9.137858266758004,-2.2233335700315093,-18.3528372258536,95.83240896772496,0.0 +1228.825612112094,2.1183053231767386,-11.041882252986005,-14.757123169084831,99.5696144442095,0.0 +288.3332859036915,21.57870237034432,-8.388846842601598,-17.55934054139855,25.971172570120498,152556.79 +927.6976213948082,16.272644807036645,14.189324824965697,-17.854449575326576,83.85544149188055,16.24 +1249.3608717180095,41.70064152660084,-15.124270780359408,2.484474628802853,6.118704191651379,28369.21 +1253.3444323489327,7.926081697593221,7.930633367515343,-16.931992866893513,2.4887497660650406,0.0 +1383.2011311830724,3.6082537035174904,-10.97239029719276,-2.997534350788711,67.70291376350798,1974563.54 +1496.3888522047948,47.07504225021206,-5.8732047934148035,8.38651909623325,12.868286759318613,10566.25 +1354.784966013542,24.09873038874175,-19.878129881165645,-19.394609714448123,39.44762540529188,1.32 +1622.437679700983,25.90707176330167,-0.8364492267973311,5.555103963258183,2.232793231031605,11081.91 +1324.569142432265,11.380704389432331,-14.865887314388504,10.28735465428072,9.592343847625616,6.56 +1167.513792566968,56.488134138039875,14.385896327356871,1.4668037706070258,21.656974841686228,162356.88 +1291.1535719980595,2.8547429883660476,-16.090883239738467,-0.9763301785290324,55.89223940775369,478950.35 +382.1480601559982,6.358930094747356,-9.98525850577398,9.233634556481668,33.86213665450216,10844.55 +691.681773305936,39.12597231853508,-19.40806376461019,1.1893048753413815,56.82182406327626,13497825.12 +1149.3196051846362,1.8446832483606352,19.715095128923146,0.3713215215454823,65.24834301943089,25511.79 +1771.3769877230727,41.325582709136,5.657509118183213,12.072655068739255,1.3331864779300928,3.57 +1422.2928013183875,5.072130763407718,5.743072840153687,13.502190391857738,84.92220739018292,0.0 +362.73454124941566,1.7824091299307674,0.7544339419803547,-5.263270256006325,6.716810960984507,33796.23 +1266.094910799928,1.439789397308742,14.72221996826823,-3.3808362751198073,87.43240629242248,1184493.17 +599.1283777467781,48.53526861150033,-14.232476606224758,12.03040917247206,97.6299393889202,1802124.52 +1521.2298076197012,36.07705605949485,11.714074258641968,1.7947235529152117,90.44850701994926,1174418.12 +1689.393534515745,3.7677553117854217,12.284939038079052,7.472536942633878,54.675249590990354,424.66 +1268.221290661952,1.7089304118242652,-18.554865680804134,-16.99299853411159,77.1968844565975,0.0 +1264.4526975530775,3.1222584674839173,-14.692922031516533,-16.18525041765722,18.095531611787028,0.0 +809.4645977794653,2.6667068186193004,1.885956034904712,1.272057748632096,93.7721545817539,1484764.08 +1003.250038090357,29.249018917783403,-16.39233918227148,12.769101769034904,3.309576989566392,750.94 +1755.395036867622,2.698523277910686,-8.705350951205313,-7.338316283689443,55.59643782645582,198841.19 +1501.9765957408815,2.7051854540751465,-3.853075600399345,18.42529053628106,46.657706865178305,0.0 +1135.5565874525175,1.1602090933252154,-13.711297649186529,10.413013054541397,79.8926606300352,0.0 +862.8182952470677,15.62137926642985,8.165867523927663,11.26846639547123,74.75828226089678,2701.68 +290.6835289193978,23.87586400455759,-0.1975467616144799,13.361357643080392,33.68771782470645,74039.96 +457.4133223874932,20.275937221890477,5.592657633300129,-9.820472033935385,17.1893259115721,18737.04 +547.4453411708672,13.715078961849066,-1.028018840354714,-6.786976012442882,79.6330725337649,225386.32 +872.0903778656145,85.53618919517295,-3.500624126753502,-15.262728221424258,97.77027520702168,46969.21 +1899.4585647372944,8.820171392148632,-0.3044378604746134,-4.785767114997057,10.689118580786497,343132.25 +1109.2761107457477,52.51374805758978,15.98059072131953,-18.566713462174334,73.55582120279037,7910.67 +622.7122938666159,19.589340752076943,-4.158446868282386,10.059499666478231,52.05301788148731,18718.71 +390.35024743072535,1.4734109102490576,5.690503872549111,12.102284786575517,31.886632269423888,6.3 +808.9499442853353,41.70392414192173,13.35850064858603,-11.45510096513525,2.4302757236162815,7245.09 +1668.3151439919022,14.749492703672331,4.843506009152714,-0.4040386537014617,72.68264412741863,2492362.52 +890.0170281389143,20.27922335943244,-10.957424773070349,6.879711154795154,14.070998702065072,17299.26 +1590.5104508403442,2.293268318151519,-15.121612699702794,9.701621268483317,85.2307572988449,0.0 +1644.8689570283818,7.498600013184792,3.635085185928983,18.777532890574392,27.1944803296297,0.0 +399.4773854576674,57.69855658204641,9.095811663027726,-11.973868176192358,59.64206695938325,1546799.86 +1295.5875547282108,2.696884741786211,10.749486007827528,-10.131043650890108,29.139890864925437,815.47 +1926.372914067999,1.0005753813294878,7.752087898790747,14.155165150512282,70.52371205221382,0.0 +923.848534826397,3.2735382830749824,-19.861831005714897,-16.111471342931193,12.597895273075777,0.0 +291.6993602054401,9.442454447094809,10.953611793877457,11.435290507228956,34.958832381728165,86397.6 +1861.9448424641816,43.909256822821824,4.18490757720718,-14.666371130802592,51.386967064245965,655.61 +1790.5993068304692,19.345582062767615,19.527255297260226,-1.4211715167829286,58.96024950718159,130796.49 +1139.8546049762033,68.88536087401737,10.583491213309928,3.6897261078516097,58.37820572056019,225753.24 +1194.0556166192173,8.149460578126481,-2.7917135691721695,10.715103070220984,8.860195274284418,1.71 +581.1339849970249,6.0482599130310675,7.04599836671679,-15.418813126600032,4.343855158779177,29.11 +1675.0113599803472,2.9029291285286685,4.6374293966652225,12.962323682869306,24.481967099891204,0.0 +1097.4800691058276,2.729763164442018,-6.504260872362284,14.022301752206603,4.732926540651454,0.0 +260.9800312566017,29.66332253919309,1.3411657774153785,11.739978766037224,22.839729286640164,209864.61 +1429.426921608196,1.4478322497328184,-11.824760820715944,17.49244995043832,6.86661923283599,0.0 +1910.893285644871,3.0579273950749286,-16.486793120687473,14.889005815147978,53.207247058413415,0.0 +1692.4708826223505,59.127636462058355,9.320977736963304,10.719148968964223,11.350367169462364,1179.08 +698.9566523789716,14.250878460826376,-4.634852229769479,3.1734327857659705,42.10900280475472,184185.13 +295.9851528800132,1.2392964856343058,10.228532893298675,12.34498314049738,77.18662888025753,78.18 +1892.632542568725,25.61592816375769,-0.466519311974376,19.013314801324004,77.4670330468202,0.0 +1886.7129047834624,10.312518377733973,12.391574989869302,5.492769951622516,56.656402608982205,246244.27 +1158.347575483165,51.17330363856028,9.58435286649879,-10.29579506644383,4.0473242266890725,7602.48 +1356.1713410087632,23.166890453873723,10.565238788868143,-10.086165203258869,54.13300538689788,89579.39 +1032.6801092794549,1.020688392622087,-2.8267404824895292,11.839489709727854,26.013346138354073,0.0 +955.5776607777656,2.5791593444428687,18.44717038986735,19.57799825306125,57.2722432429213,0.0 +415.00718467166064,3.280404516224018,-3.7898167408782646,-11.587526619772706,90.9327040073944,29148.32 +374.1552170499728,25.378419875140903,11.725750330148848,18.80338786452302,60.287973347832185,205288.76 +618.9178640171374,10.438265891459634,-0.4164477839548564,-9.26843389371336,94.11788906500846,169122.29 +1705.9533435317796,31.253236199219785,-10.596573455981492,-3.4878828286600694,21.6526073839874,504135.71 +462.498141324224,10.610464522153428,5.156557468157978,16.326131096729142,27.563956937785992,159.78 +608.0575734464793,4.516158976131546,-1.235623179744234,18.472578694620623,15.725270185434836,0.0 +1187.5053067799736,1.6118376404419688,-9.437205507821332,2.678176388569007,8.754907281574008,209264.74 +587.236192540894,2.542401858523776,-4.698732811971995,18.003618778496243,2.0395888670783364,0.0 +493.7720324920168,6.332280736247861,-13.602506493493856,13.696763142288706,92.86549190943902,370.15 +1213.969235056332,12.673851563894916,19.481816589749403,14.655821303984688,45.72153686034111,7.47 +862.5678877939079,75.38324116753998,5.727348831194585,14.729933445462615,93.94683514338593,18502.94 +1327.0867145128443,3.016062619628416,-13.05820611683084,-4.55004764933832,86.53619710471497,1383212.4 +1841.9696127356176,21.486707851411328,10.583533446951158,-18.773357236009343,74.64723420969429,0.0 +471.78763658312175,2.0187931524829783,4.075139899217741,-13.41390932814386,91.866539873622,660.07 +1844.180587663515,26.761240675147395,8.902048223719138,-17.02126529500987,27.136979135445017,0.02 +1824.4819413612536,1.0536145375250323,3.3794549365286697,-10.30407218053059,85.78128866091816,0.0 +1692.3576500046252,20.504061691480217,-17.581311224543814,-17.78824388754968,68.31800583004458,0.0 +1336.3146511509533,2.1204855310213055,-11.87041072530973,-8.92237052112517,60.35458520040127,13824.47 +1316.2639834379854,2.29429306705756,10.749773265859345,3.5584029905371883,62.24787103573161,1189301.68 +1350.5827878857028,13.116418547144498,10.174013284163594,-14.357605163802564,90.70961865513698,54.03 +1442.8919921920638,5.6340810695632335,10.155013252604247,-7.370287482501201,92.9627899193748,610278.8 +229.66796107308264,8.762142282258141,-19.391411302921796,-11.034559656892684,18.51938780029666,1791036.05 +1924.5666424891697,4.147417588537147,12.206031654344404,-16.19591174650121,8.995755973247544,0.0 +1254.0867706380436,80.71125476563729,-2.434872208702208,7.043943533998811,27.991599840550855,58167.55 +1606.638510924359,3.81339857693273,7.746458053734679,15.721053543250187,81.20792633821183,0.0 +879.1073103104536,12.136538822901253,-9.116812869037382,8.639717199388354,10.609123454722294,2954.74 +222.31498504843273,51.1341582405588,10.781145472795329,7.36857078530214,66.51432051613051,3133928.11 +1117.522387777599,21.299118241139375,19.29127075242135,19.32072986432239,40.52203082961751,1.04 +1112.942214768672,4.421339802808303,-9.858449972027229,9.251004153148177,91.32037116059368,82.54 +986.5807189606132,12.73131802190148,11.367905616675175,-18.11589551003431,82.18192761806684,0.65 +811.4906974917382,1.4654879522615425,4.198018121156681,-11.27014197685452,51.2716461287691,145.82 +649.6869580574996,12.341638048384109,-9.076167322973006,5.498484680575011,38.68602653253549,77195.22 +1149.580774094929,7.290850225602335,-8.225718246774143,5.561773531249172,83.62649982597382,274444.24 +875.5006514482894,32.799514412057114,9.265506872906284,13.303936686870127,25.19028070067871,1139.19 +1945.8773894896556,49.63701838746425,-8.626160856153898,-13.646607473373209,54.79207033414418,3841.38 +511.2691539804766,2.5074543971828884,-18.088257312501906,19.248672438566487,93.23473129466817,0.0 +775.3980217287566,1.455699761741192,14.958411994007989,0.651639064034435,60.76618992250002,472402.12 +729.1288476642278,6.0410713132275236,3.5579701483203374,16.816497891668302,93.07853173964286,0.0 +1177.9565172247226,11.703097316536097,10.338945316236474,1.1737209847679564,44.758920317656944,736071.87 +1098.7044625534663,5.6702720568853655,4.128949544544147,-12.523407843417154,63.30040566735711,269.79 +1358.7328377636916,18.07683283836848,0.6582974272217346,-5.959246874247706,94.09918775542384,1288143.45 +1910.0031870335745,10.263667149580543,10.799295247473593,-11.153347213109956,73.99047490706484,1733.54 +713.3979538889613,74.68821312966942,-18.713746823878452,-9.430979521614514,90.65409734349146,15513951.26 +1446.9888246589935,6.58843471169075,-7.524540500197441,15.614313667052372,83.37213547361611,0.0 +245.0723654093305,1.4621379380969874,5.098749021746718,-4.904216266789692,8.702453792591616,31999.83 +672.2992509205242,4.016705974753743,17.75898779268758,-12.69316181001351,26.588285384026047,121.49 +1034.695510393867,16.284998568551643,-4.253971075245144,-5.418306592526343,74.4067855864395,734267.09 +255.79061926604203,3.251248742381922,19.01163621052204,4.690305879667829,89.11400519081684,5022560.86 +1311.80502899655,3.4512538459652977,10.21127448145537,-11.964555196109078,80.42864447493795,9.89 +1420.9590951230748,4.776887001371989,-0.6041420301049882,-17.960757974873047,32.00272879151062,0.0 +1544.117086708484,31.06587280958078,-2.8336637636479445,14.884801333875023,62.48341551168308,0.37 +1129.8341087174222,75.9043155709214,-14.822299242554454,-10.431187084824336,66.47762998424322,632428.91 +1287.1003969615278,5.020572786357527,4.607765624629474,17.454514529621047,44.29398939728498,0.0 +912.9174523012772,2.4602320934438446,-17.905853299043034,-18.11423812712299,59.18213082364108,0.0 +274.25545851181255,6.93863279316954,-2.8370269832604356,6.033528407668087,98.61363591530598,89114.14 +379.91334039412345,5.054513792460434,-10.491649490968232,6.609701132378465,54.92385262305475,48310.16 +1378.9926635626357,95.51021622140104,18.251443868243605,-13.75887241279881,20.24157925091087,399611.73 +1991.9995392543972,8.467135639828232,-5.469441776211701,6.609282076031593,50.90640224748197,34007.22 +228.44583049393313,22.83319605077611,-0.4298508888216679,-4.494496902936236,18.399367807017143,231881.41 +1203.650294287489,67.23201587764463,-4.9802759389919915,-4.729241016963952,69.13260233353431,495367.17 +1551.815755188604,18.11853814846023,-14.511607916439374,15.099180210827878,90.28831222394966,0.0 +1688.1946904249817,3.153239438972813,-5.8967181614577635,18.09658223676777,67.91083496038287,0.0 +1181.3688222007522,16.399106664948008,11.15995356736521,-13.195442701648991,87.885565685878,3916.53 +1315.8487643313892,6.364329732636307,4.847827034212062,7.363959806078184,73.0413237495119,14513.14 +1454.1049014941962,6.993583087178281,-2.5033998830048043,-13.811593771229354,44.3082189625719,0.19 +1746.1392494481752,90.91785118100972,12.822826788412534,-18.599979560892844,54.28139318622727,174.45 +420.1211669650736,3.607298051400649,-19.834050058478656,-14.01876617597213,53.72342740233111,39133.67 +1867.1279532947544,8.667029862821092,13.064032012530578,5.386234084348347,39.85689065417743,173599.43 +246.831326392826,2.08801729404763,-17.618576695242147,9.057495074197384,10.19925852005366,41583.26 +1705.1595517239955,2.2755605568509147,14.81087635644133,0.281466551354077,70.47974994145102,1485183.51 +338.1327678074551,16.10530108136227,17.90288187445334,18.06662598780283,5.669005050515415,61678.63 +550.3307808888601,31.771038899550277,12.76677996557079,10.566914867351748,21.20072279422411,149844.78 +207.0094634860387,18.74648062049099,-19.216249177483924,-13.535271052337334,45.93371495926436,3921660.86 +1001.4620699648732,4.555835095287723,1.048318579960652,-11.682495719992264,98.72143388904146,2399.26 +801.846608091306,1.3159407786168504,13.15185131005791,3.8432782938037136,31.37962358956215,222752.64 +498.7872406766491,8.720225672978806,1.8006544837927363,-6.667975856715578,79.67577800158315,245672.49 +1011.9622894470314,10.19857058890089,-5.602531758171478,-19.96427671803829,42.5275754185317,0.0 +924.2675897099308,34.7778889123059,-1.1721829306546283,-19.028228251737428,22.933997435557615,153.5 +1581.7898588577348,19.080033135237027,-16.772243564630465,-3.676040630513553,3.6316068198390674,19601.73 +1807.6345509260584,55.27353685526196,-0.1474542061652739,0.944613779680532,9.756321999331949,207359.51 +1374.6210531807474,36.80999490972349,-18.886126883873057,6.1327498305213535,42.25671345332177,600136.96 +423.93869970774296,5.392070571559371,5.764617913219956,10.52559280843078,40.61827190099504,4714.61 +731.7034304777311,18.384120037846483,-4.381909876775376,18.750354924829683,63.00930459249278,4.09 +1843.9729342981036,31.230077280050835,-12.346280779099708,13.55461254904068,7.159665259616791,0.02 +359.7220874142005,81.98997204662257,-19.304683956107645,-5.762385219614123,29.109375822615455,3754436.23 +932.3405109034876,6.993656943302475,16.884760569176965,1.387753492530179,3.3189827831712466,9248.94 +1896.5083146202664,19.79538645257253,2.25276108335549,-11.363199462837636,87.31929212852323,14800.81 +1911.1967146450745,6.099969598746033,5.8781354259454766,18.750125250315737,40.356880958223414,0.0 +940.1657186880065,29.898978971793586,11.174308580793635,1.4177172931796145,58.84429439363576,311715.25 +1401.3143985778354,66.67858002861342,5.0636168871924925,-10.013189955551098,71.3451881826825,207032.53 +1022.1420770371982,68.93694469431432,-3.4758386594765467,8.961750499859505,27.52895267569956,25561.84 +1556.2289709854151,2.061460581402622,5.103528121318863,-0.4843870412610052,14.359947543444871,617909.51 +256.8463952473973,2.5597243231549203,-9.899336811399028,19.869002834199335,58.44684696013,1.88 +459.4828680584452,32.34885413006688,2.4540653541483692,-17.011576528232098,90.4324345709909,27690.73 +1305.5578463784786,18.28183444945269,-11.776507947924948,-6.581112986281217,89.36538391353973,788029.48 +618.5940723975144,64.59733089660858,16.696912205548607,17.67407578093004,31.51572458966468,553033.49 +1398.8941386844674,4.24229747823808,0.3827071536900694,-1.5520026495536987,27.349856456190373,942939.43 +832.201269430337,49.6639916578122,-10.6463887669465,-7.528219189251044,36.00215695107066,120430.04 +1795.9620046300786,23.310506705067255,5.585301034716452,4.19488845638619,25.279449276054315,335885.59 +1674.6668940079755,2.4598726300377627,-16.38721586035765,6.5797419958531655,96.48684021428544,3529.49 +1087.108040123808,1.79055942112371,-2.6392392555729893,-16.287700522229574,4.432041954161432,0.0 +1591.211156770744,25.435905570425284,14.638584757720317,-9.624505694013925,19.941272293673727,26622.57 +688.0481952231627,2.074545791428455,10.714340117973563,-7.640987661647105,3.801585168502671,11811.08 +1089.6675982613526,38.78448950537165,8.13758103488813,-10.167578706350366,85.54407884313366,165563.92 +555.4676933539007,13.007387555511237,-1.1758662942418008,-4.684895374493818,47.679210061571744,191515.39 +1749.595103337789,8.989470776523767,-2.1248352841604934,-6.611660010367255,23.577152785481665,352821.06 +1681.5217098231467,3.556788751180983,-19.54761489711978,9.256865913160874,40.14400044682769,203.42 +1823.8694031362024,92.83060692005331,4.001517873325984,3.957380190891135,11.502319451486922,106998.92 +1779.458566203667,27.818532866720833,3.0803332516549675,-2.8322276739178376,11.65928009518561,351421.01 +1927.2732717070903,35.98547953085152,-19.7888391617724,-11.99983910835194,94.74164944417016,43682.52 +611.0052169374667,34.468458025895956,-14.518258434718376,-3.174422597661297,69.91154050030217,2414181.49 +1877.283723431568,14.724181233670832,-19.50255376487082,-12.780638931911437,64.23053043353269,50.52 +1228.1837444335958,75.75262451080108,-9.872842161647275,18.085834351014473,47.80294348007219,153.03 +960.491151052674,14.711027480888244,-19.845875120790105,-13.04905477471812,49.492085787414915,47448.25 +1208.6730127421715,10.967084008619706,-3.305229670832439,14.34709469217827,77.43242165260627,0.0 +816.6842419705001,3.527125273454105,-0.9442751466826492,4.623230378928951,6.186728472500876,32233.57 +719.3954125297138,3.6599220829559145,-2.5167335736081453,12.432713525983605,67.07672151825018,0.42 +634.3658083595518,29.769244427199617,-12.024431774629232,15.542454723494878,55.49976289285296,17829.6 +348.37038102282827,4.672344357072079,0.9423691945956314,12.15939791943217,31.363278304308366,1695.77 +1093.8168148649374,28.669590534066828,12.563784866020162,3.571795845229788,22.351488270250645,98961.26 +1797.9710162849974,80.42915715973835,-8.351389977499046,-9.320245506845612,86.3137752610514,430327.24 +1334.2735446938923,7.561620433935415,-7.496982627068314,6.400234552078938,93.22418344669188,121057.03 +1137.7561389603925,1.5654935613264147,1.7130337012442665,-19.806257963724285,10.486332995262549,0.0 +971.4672528516496,21.532425965199447,-10.649824301090996,-4.90134810563315,17.81310667034241,129348.31 +1035.9229273709454,1.0448310332193842,-6.488546900101344,14.31854751724298,67.04383075821796,0.0 +576.6992256295117,37.49790828788125,-1.9025110324379213,3.2214476739881137,77.62733002416952,136131.22 +1681.284578947575,11.253982463438089,-4.547903908945017,-9.575052142868188,49.64263637524507,61065.77 +557.0893339067505,9.538155710483622,12.72929215126672,15.687233227619348,92.76235518816296,118.71 +1489.9209621091634,13.768426837027436,13.959742423407013,-19.38923760156916,87.43013780014883,0.0 +1567.973020693075,10.784923971157635,-3.88486100345105,15.317003117669673,13.499148601378211,0.0 +1234.7642756499215,4.44175442417055,-2.0885380053117952,10.378169544810325,15.102204679763563,0.02 +1753.2674749186913,3.656097924905828,18.275765048069808,-14.14495013915082,9.50370641987603,0.0 +723.89063441117,6.770097468781189,0.123500476851075,-17.48382714514343,87.6666770955742,2.46 +1786.9109982371538,61.63374594008821,19.72128205478578,18.049415275303083,56.205397637815146,125.68 +1512.9388272787476,1.8652666252506307,10.512110907505502,-17.3186726790494,94.19785189603574,0.0 +1637.7496899711691,4.461996172119485,-9.43071116540311,18.95046476171043,73.19415706737733,0.0 +1396.2434771491655,2.424380911441389,-10.836293387483828,-3.174838453673372,73.46801988264419,2263715.91 +1723.417430581945,7.149471733887876,-13.637420479509474,-5.85982706311142,13.389839063406829,169232.18 +1987.5779528917449,1.849255155969037,12.24582904812756,6.001760579683402,11.842581820073914,9755.41 +956.2931381443497,33.23465905317374,-7.72551831297076,-0.158130229611042,93.16473232054618,653661.81 +1665.048230677227,1.6104037944433862,7.031700408699084,-4.398088091535892,48.77752472046495,1559121.4 +1540.2435671324604,21.405441371313067,1.605445981688427,5.606469500807454,99.39879216105236,444045.06 +1015.1662982816324,3.430999460275267,13.03989211626758,-5.997338601939597,32.980416018076795,245426.69 +1868.5081995185217,8.7979196985939,10.032697345637494,-18.625852033943975,62.52021889751258,0.0 +909.9666732306704,2.51174718055684,-17.45004302560958,12.985575453840998,57.70800478126214,0.0 +1217.8386492972277,28.870038228214508,-6.462895623793785,0.5855740060103853,7.739715462316874,99255.58 +390.6962425837308,78.80467431846971,0.8039484856179069,7.4673800510981,52.366691813335954,948025.28 +606.3953493192793,2.7764545898421984,12.145556490173078,3.0069554069061155,92.51385176193898,565379.43 +1713.2531069607692,80.59468745232053,8.561101515544895,4.567693832543638,45.93312606385208,316024.15 +913.7949010919252,4.472471708396867,1.976158026734156,-11.242410681787952,47.79028610739291,4164.6 +909.3513609474649,13.052519001096275,12.335013620869445,17.386425110584753,70.38390665184235,0.01 +642.7658327431164,25.30345950030799,-2.602860955611499,-2.0910911938705556,78.29017634298361,307120.41 +1084.898601735418,2.503440259488702,-17.773617042965306,16.80387125881911,82.96811647984774,0.0 +1650.4705304311203,7.754037104674363,14.82142914460762,12.276720887672546,45.744743864669125,0.0 +1811.2954119927313,1.3666426227050803,1.0637340758592329,8.80327375224699,44.95737153100483,0.0 +326.205977679531,24.780356616345006,12.336123494559532,-1.5952855294537382,47.86226966781422,2234655.32 +1234.677316232208,6.811334982058256,-4.316731281853086,-19.094254219217287,96.92981763667342,0.0 +1041.0920622062022,60.71403061415897,3.5420900751793782,-7.3915140160690385,92.9891002460364,355467.36 +1305.7073308488411,3.5316997705724003,-6.756279781484786,6.594303702424993,62.65213969379179,29281.22 +1005.0962364348844,70.34004610576297,-3.617001022184514,-6.773866439910918,29.148619869879973,105302.25 +917.5606775361472,1.9146072070269196,-14.104071132679715,-16.03490522897889,90.1411756291632,0.0 +1049.3852823730808,16.365637678388715,9.664142676415924,0.7103522017748709,17.922032823758755,211897.42 +1247.5984317615455,4.126827916685349,-8.78862776006538,-13.820818144090602,11.568304690367848,0.0 +1101.7697798571985,2.309740672218759,-7.930754221973451,-7.751179525137557,42.04196342671333,110093.27 +1049.860011837163,1.54125444968877,-5.832441497687451,0.0765211084889028,68.84505088180124,1818378.62 +1672.1035579245454,20.477885844277857,-2.7149553441119467,-15.348806839959884,6.206366627879755,0.4 +1542.166384228144,2.9264146786235625,3.046556480854572,-15.498858467609576,31.97605383581808,0.0 +814.4812895261471,13.983916566960213,7.312265267818661,-11.596447148944048,78.63061956337023,43182.92 +1641.0388115275769,90.95727602139806,7.02758034496811,3.672227085785651,66.26271756980539,524935.42 +1736.5712042081002,4.284731778587845,-3.0527633628682427,17.3279155133772,9.362239593828132,0.0 +476.2859696735429,1.1745961024554246,-0.7243732967536598,-10.438533823306436,20.979341436029006,3638.55 +1248.828431115366,1.93039075412924,-14.387179281765803,8.792948472430187,72.79187187555151,0.08 +713.5615884785848,1.7323834208626567,0.8602433079310368,-12.424859823429667,12.547829342341265,8.74 +1530.510179468101,8.444366115786403,15.082268086759552,5.420599346132531,1.9607361352341328,3869.16 +629.8135928456298,30.853265707925484,-1.5820047495437528,-14.49122480628323,99.2754141331225,34837.13 +1408.5263435114573,3.9164155979101887,17.520543723973958,13.815243335860677,61.77944830222051,0.0 +659.224380903741,1.9574268520369225,-13.768658402809404,9.700359432456862,43.46636290111256,21.78 +1120.0587741738975,19.122009633794494,9.47637836549304,7.229057786325561,60.11072937532308,65383.87 +1907.563642249146,4.002767986406228,8.319556415180593,-19.413528951864446,67.34816708812757,0.0 +886.3535692215821,14.136460975403171,7.2611581430248995,13.456394064742804,50.05464149668183,53.87 +1776.329274733774,73.71792789849488,6.514287974411532,-13.965979398377865,66.14873597560748,15090.11 +1976.5002461670103,3.8255502403011494,-19.107669056925324,1.3395606116403114,71.14842351298682,70971.42 +1774.7315278492938,10.592128210648696,9.684890082084197,11.066465524896154,18.766217408497123,0.0 +498.55885350201714,41.07937498463714,-0.0126290082840219,5.266820675581165,42.94721497431641,56090.98 +1675.3847951632936,24.178882513159778,0.9674475879996036,12.76098934877497,31.156323427872405,0.61 +257.8689111810103,31.83877497758205,-17.965094391552103,8.35408545285594,79.93753470195865,7687746.46 +907.943390658754,35.08639511225908,-12.464754867495088,10.243045017916508,77.22073940467835,28670.15 +1767.320071972155,12.017995599825705,16.44027630252639,-8.049247365245815,81.24996357363649,121221.72 +1439.7539829678558,11.806582762449692,-7.378866529004964,-4.835767489168292,44.310448486754304,927675.21 +1158.9327692081806,27.401804335834164,-4.244791175382878,0.0581172262092932,57.95767724631956,719047.96 +898.155245148717,24.848291901775234,-12.431859232216764,3.446429815478762,70.85530059770882,240720.24 +1662.134503646515,21.883426670361516,5.28763128569131,7.666840527262684,32.8890922994171,17497.44 +1477.2051271067976,5.8112476596036515,9.628035032273091,2.222989294293032,97.79092262580453,2745704.17 +1043.129575308212,45.40307751206595,16.850473657749152,8.418289344824927,38.48375665030286,412158.66 +1806.4718069773876,2.967602844866856,2.4825445516695455,-13.969988095717309,54.16451268001843,0.0 +613.9064320735383,2.0486319080795385,-8.974772767374226,-4.214135431143191,82.85252028314255,866562.54 +506.7047164855248,4.901448436890565,-17.16146740593608,16.53221777353394,74.96163464115838,40.63 +1357.0467758004468,3.218566456514666,-9.355622478831837,-11.321716552764812,50.65612771619408,36.35 +1949.5898168631863,21.201423657240035,4.7345816919801065,-14.253565265729758,41.424341616961975,7.54 +645.0618319521866,2.897581781107003,18.964142744709584,9.792313530087622,64.07047174079608,1208.18 +649.4066820808877,20.557943905247047,-16.832087289239364,-12.22283419508479,44.135554649769944,277481.17 +451.09792633194184,10.62785424512908,-4.465342476529663,-1.69561903267335,59.60883087271787,207165.19 +1749.014399492538,2.0179023037617494,6.689428376572626,8.47326799180443,80.1980200642338,0.0 +607.5155727404014,3.286945689409341,2.9828377681989915,-0.605996583862205,13.056409173179576,142983.75 +1105.7213481047982,11.052323002110734,6.067704127888511,16.060438996492397,70.03755347957687,0.0 +1983.570460403968,29.255707674691436,-1.4716611323928186,15.125938072003557,6.329519026501541,0.0 +221.8536216596784,6.258976030150077,-9.318531782480656,0.1180226123998551,73.66701952918277,400419.77 +1201.6749629194294,2.9218995689470253,-0.6899094314904586,18.433974582561575,21.706288162792497,0.0 +1122.1202768689025,3.8918529113715583,-4.738554802524879,-8.329045235433652,49.84411479566714,115976.86 +1653.4052775382786,1.5496527045064077,8.371901257142028,-10.64432236515296,27.432234158484867,0.05 +839.5067711949986,1.1227912052628866,-13.13500710524847,6.809796617337414,32.86896881822237,3597.06 +938.6144460182747,88.3605934425178,-0.1540826811301787,2.911283166597447,63.24369212659296,174214.4 +502.2883650779546,1.5589057851486272,18.362502361900862,-9.95572368881188,43.68624250215985,1637.07 +1533.467416944416,1.7773570869520678,1.2717583082595718,-5.154741645998415,49.26941215000402,1011017.56 +1612.476036538667,55.19861363585458,-10.511621008596205,-10.67891974740138,99.8951515850104,188873.91 +445.9939774018945,21.232956569677043,17.434011832027778,-10.520914168584978,13.039733276603616,720426.68 +908.2227331789792,7.449807698819531,-10.233704525827374,-5.297163272766081,39.04274427687099,383160.63 +1807.228991652829,19.863090048048296,10.047205519747404,16.968787400323993,53.49076026444389,0.0 +204.8730926164169,74.12584327716246,-15.618749597082171,13.395914705529837,81.55692221202803,3690311.61 +737.7663271207381,1.5803548837518633,14.083584392213336,0.4967274054245063,28.956847474113868,279150.24 +1199.076113094586,3.072005962938875,-12.7770164957902,-0.889219444895688,39.99084714801927,879718.66 +801.3689473879159,52.553398609518666,-4.232821274602951,-18.74085913510405,82.30491557550374,5911.4 +689.681340519805,36.41486385622385,18.624813384203392,-1.5081533928703683,53.50673160454532,9272974.81 +1028.0674728257827,97.38979308156247,3.17578910824333,4.95107396926048,85.75050728131114,205657.17 +526.7415945974487,4.24441294234986,-9.440162562995337,11.143608282565062,7.370446065103327,84.64 +1153.325433727071,77.58411210004935,-19.974913241521236,-5.760812319460351,29.420887219795873,9284261.84 +1472.0526583638066,4.868303694841043,-19.728431064796197,16.77555055793791,56.21757275973294,0.0 +1235.530914731304,26.926901543170953,-9.016492799163448,13.607711340613156,13.07662929045792,11.34 +367.5967955453556,58.27548481250834,1.0741917204553486,-16.710662309642174,48.6969261003624,385677.78 +1719.9355054980315,2.1956554520949334,-0.6043492541576656,16.117922184072256,2.745959628886892,0.0 +514.9601074774787,2.577966740760589,16.87526525144055,-11.086828892733283,50.961532034470046,2584.39 +1576.6616011000317,14.51835114164468,10.563764593646924,16.932721130066998,92.11124582334789,0.0 +849.0171993965307,48.71352309507271,16.989425437364222,5.227192706354731,94.8834925572389,5364696.54 +1608.970426500984,1.438464241913702,0.4711275327965403,-3.523190176298141,32.592127155918305,1298569.3 +571.2912261296224,50.32243174885947,-2.133343514195954,-2.5419550602251517,1.3421800674411242,2833.96 +535.9917866517736,4.8555793871478095,2.643531884815027,2.5115458017499748,91.30273112155338,501446.7 +1094.646523191468,6.493116991244312,-5.1141564915970505,13.754914645344982,57.15180090876547,0.0 +259.2848264570489,4.783240210871752,-11.567540346513375,13.47690068134729,58.48154901309499,18396.05 +605.5352098082001,66.52115928752582,13.46642233871124,-3.4038777238350404,81.69173589345496,5479552.95 +1503.2220539318268,1.8263695305000929,7.221263342447308,13.961089575523973,39.94183249777075,0.0 +1707.2902609497658,14.078259376885176,-6.973676310990955,-1.121835785422216,42.591571663371546,1554321.96 +345.4136550880588,1.9779538814922155,-2.148750443982763,-3.297962892694213,85.29720973661978,486535.85 +1787.739876988588,71.9762573338478,-10.982086609154592,-10.269862797393357,49.6623365990948,134148.67 +1635.5309672957223,39.43325498901216,2.5135622664044055,13.117200680575522,73.84501547075749,57.39 +1765.4317322725376,2.935205743245574,-5.665674272688812,4.802541511565166,90.59845223589416,1166031.06 +1457.171398241912,3.9405472209619226,15.023012698728872,-2.7552877340433612,39.965600448409546,574820.33 +1413.4755211291365,5.7946959851185955,1.1345176182585393,6.49506613914189,89.00433124419057,76663.29 +1145.1678200207548,6.468973180107505,-3.5307744918748263,14.44047955568311,33.41248144324814,0.0 +1375.017004084367,43.120691551250424,9.984790554930129,-12.087046575212227,93.0281221762776,61447.77 +1854.3973962198893,13.460671033383466,16.2040516187906,-4.3023172399873255,31.23165159375016,267830.04 +380.9396025500752,7.176267679099061,12.696763905031425,-4.787984298053547,24.18828114845239,63662.96 +768.3760601229641,27.47193902422204,-0.2033161921536486,-16.959125606023647,72.36131984938683,3594.9 +330.4189524725693,8.236254402307523,-5.742266518790742,-6.637269816920868,92.27785578831896,150389.34 +1900.6493094992693,1.8050117517138575,6.485173725634374,10.47172016850649,77.04663632635229,0.0 +1001.4778387988983,1.6405080602805653,12.674721739645747,-9.866394396216284,74.27206650742467,3151.15 +1415.6200472171392,4.486558755411138,19.14558309346013,12.436601529604696,97.3295134623696,0.09 +1714.0161161077783,16.0598126734998,-1.7099505616505484,18.21014257621948,56.186861632030144,0.0 +1983.8004465376791,1.8607269820449015,6.7296057474897175,-11.04118168045849,88.87430500452601,0.0 +491.2084240260783,12.59703515599371,-8.275869871612374,-3.6133482188780257,4.672362455174487,15056.13 +1639.1226902928115,3.4611409814276346,-16.501468141867477,-14.7466384699463,14.083515827159466,0.0 +1797.3612166461255,24.593867629181563,-9.877690887387423,7.685763284498859,27.87767725443521,14030.21 +287.9756783315761,1.1390044015235057,-19.42039463220831,-0.7120007881743406,94.66636866522056,498520.93 +1557.3630083340322,8.670554311555195,0.3771039554689803,3.5484510240786804,20.49602913677385,390949.54 +838.5055781537906,1.2721206370085418,-5.073755495523078,11.147733594159275,38.92519509637188,0.0 +1367.4742246467777,4.581582914501624,7.130992394497935,11.04716436013658,4.517308598120724,0.0 +1125.286752869957,1.0743611330856206,4.612561372696344,0.6390255204692075,8.740680895248712,253231.9 +667.5360537559465,8.67356267734981,-13.285342622223324,15.29283263064226,58.68217236364738,3.89 +443.3984516071749,34.20044342728875,6.952863779271503,17.27725111710493,10.67604763125657,10550.24 +410.5050195605749,1.58649999654954,-12.503991013836323,5.228532301414135,90.0211481015238,147399.05 +385.98114387528506,29.54237346093292,-19.761874230033342,-18.46374392502735,88.69426674813865,3659090.03 +1348.02207224224,14.736370575213355,18.8077065183786,11.038628323585016,62.5992568157621,823.57 +832.5395325191686,10.21434555887554,-18.920598118123255,15.67668840966363,40.23241696559405,64.7 +589.9401887705704,15.811261612928371,-6.33003693174059,2.2655454337109893,88.89436583672462,304619.05 +1445.3931668706257,4.69671560316234,5.500449638024407,8.014314595439679,49.29391778658979,400.33 +1436.3292183796402,26.343841669551757,-5.185018513658783,-5.758230398307118,19.87084987238237,284393.78 +1170.5029262425958,36.251976003152784,-4.751633810343443,0.0841762749147134,35.22020933619054,380004.41 +1882.9240703585317,36.01204060639286,8.909101618211807,11.924255346147136,36.95118083744738,26.11 +893.7456165945583,3.4587532384963984,4.086157378501203,15.038446516646635,58.40109416545724,0.0 +1704.5533482847277,20.31486868411499,0.7350978510605977,-15.39134934558251,40.719429897150505,1.53 +335.2509342779534,1.9778413463820383,15.45266935535096,-19.312562984309313,82.00967333465,0.33 +1531.695969269308,9.791274521119304,-15.675454158511664,-5.056324709780551,63.02460235191729,460412.48 +1979.205344897474,1.0121817909281694,-1.209298315439722,-4.363295355217511,25.96032072679252,1083493.16 +1723.8767893180702,2.438785015902139,-10.43733029912647,10.93321501614847,40.80600911862684,0.0 +1243.3964947581069,18.342909851193696,-18.527686073303578,-19.656110873833676,72.60145273471925,0.04 +1328.178915788889,56.069025814727546,19.161348087291756,10.560130014429706,24.98237861181418,390471.68 +835.9211889865043,1.25330449469622,9.361073090365185,1.4530577520175392,10.071750147811088,190598.6 +1423.073392864587,13.095002460052497,-11.352579360345691,7.91301555458503,71.4033772169659,14076.77 +1586.7116897263886,18.77370720025431,-3.902629793804664,0.3703436970358176,41.259103217911814,1147167.97 +1996.811266012137,73.24567107707735,-10.959030249840826,11.62899610971321,13.303588353913849,356.11 +1086.4332506007793,20.430904288679088,7.394211439352052,-2.517224444243822,48.467474258045215,624844.5 +310.3473183921961,1.607183277301887,-5.982117142440666,-6.166365617704774,56.47107597444494,206453.45 +1272.5443113157737,1.965569864647219,16.794503274642558,5.460762070768337,3.5499768474838227,2217.3 +414.2434699679035,18.686512588308386,-11.697791233961365,-2.222201629547338,79.3208916382632,933644.41 +640.5770784009981,2.6992266523910047,-6.006952626986393,-7.862942519038763,49.6595913976835,155092.82 +791.803840350327,71.88047688793584,17.27257944174232,16.541856089260087,3.5293937947305007,47150.49 +1515.8537716671392,69.40238602462189,15.387230164083196,8.930944228463344,86.3168393147365,106777.35 +530.854622981301,78.94265351198425,-8.2731941606778,-12.124902377093033,58.94041652348335,1024512.81 +498.35530431623454,3.853942365448801,-0.6772528925132271,9.60423880201747,96.361990061275,7817.98 +280.93563649788945,27.158127064680414,15.348199338123113,-9.904127405771582,28.840605770579938,2084893.76 +1771.8318854369857,21.184968074935146,6.825382426983908,-2.749067464203492,41.84831482398444,1373091.2 +1448.3097638409092,1.178168922109132,5.491187253331451,-11.303118431677213,66.6308492047225,0.0 +271.9036381117277,3.3972706934298276,6.422342803735592,-15.46808618567125,91.4841715959003,6568.37 +250.92615014860624,2.591394062491544,16.839245368918018,-4.037453767717594,79.32539934153112,887083.63 +1205.613733655101,5.5159104071101845,0.6869536284037414,2.2032558097770094,64.65890151456564,1347631.29 +708.5619223160799,80.55776953948522,-12.728805577528522,-7.915132105617522,79.75622011209043,3166400.12 +1274.1074307774718,49.11377065842734,-1.091049844866565,-16.99988003876534,10.389372781720656,190.62 +982.2875162257376,3.8623282684971687,9.155532072337472,-10.014507562549998,72.69374466520281,25194.64 +1861.9626121584583,11.483203524866992,-0.3146274384880154,-10.173704643495965,58.284184466858314,22507.51 +718.0562269304622,2.42399792190421,-7.469491025616395,3.6300883742076095,28.15100915095794,238689.45 +1422.4616631900085,3.5881284731672483,6.653196478152856,-8.714052846091121,24.616367720621927,23551.03 +297.29776091347856,1.348983066284771,-1.990809886418168,1.351034876378323,29.538734126683835,154203.99 +1920.5489615400656,19.28470508994384,18.5128104528949,-1.186414754493268,13.16440093336088,35974.81 +1965.363442235034,20.59878235909405,-5.9143779632821625,-9.345688317996808,28.052234923944148,79151.11 +1530.3343322295425,47.533877389415366,8.69947694515246,9.648687018500333,8.054039900058031,2138.73 +1037.3824488144317,55.348215964548594,2.202879596795544,6.703648828655315,67.60115343723686,129700.36 +595.9881907890704,2.0898677221868844,-16.897409064023044,7.21091852516599,51.71720681687334,3407.4 +1662.5294124463364,30.625408643533056,-1.209683300588833,-2.656752539257914,13.640419837325426,350903.12 +1525.43737486464,1.85958170848262,-18.83345031338226,-7.336146171489526,70.02234583621578,4767.34 +599.5172712097083,5.590234466180806,11.593268124257056,3.6296396281179666,18.62315457605622,71410.77 +1012.1875294830784,10.741703069956332,9.381203409090212,18.363613466059455,49.993687700854025,0.0 +1033.038088070213,1.255855951857381,-17.9795264824037,-2.6415926990581795,92.0904772700116,172177.47 +1687.5389899508764,2.058388861345514,-0.0122114561658559,6.611334834345164,76.33099014512774,7845.14 +1430.9204318013378,3.48523606935962,18.461578502290138,-2.3060132463091154,58.82970928751019,101267.32 +1357.7015783720992,1.7992216125157885,-8.614448790923124,17.304066413599493,58.90700711503514,0.0 +1369.689360613901,73.823145242319,16.17213189309599,-9.411332524797103,7.355060626133815,68657.05 +686.846142888462,3.7725792888510337,-13.956293609311349,-1.664002196348635,43.27402915680291,307655.87 +869.0802676931612,10.054102975486426,-19.73590184882084,-0.2539091200524712,31.40505438722787,428471.51 +282.19211378607105,98.41662684752484,1.220855409040329,9.145919258161127,47.98893852710433,1773150.93 +1616.4940444618228,13.592062218101642,-10.43026768146689,8.852355199150793,95.19099222140748,1839.49 +979.3967873056648,6.6526021218737545,15.16896808218755,9.577675995386969,78.86516741260019,310.77 +988.8290427576324,72.37437258583454,6.956880178608618,9.317609810423528,61.38769726775347,51708.28 +641.6412768805282,2.78609236887041,7.475614152336263,-1.2096693744000886,70.76427864059767,887528.09 +576.969106626972,2.2856066011394973,6.931216111542939,-13.777420102688689,73.32936313238302,74.6 +1258.0794732242523,11.768706661935864,7.1583068254157345,14.817524435233146,46.18093885315443,0.0 +618.5954273666164,7.154898474658934,9.884594258297897,-7.006671831659399,86.76937168868852,331494.93 +315.57593281783596,39.261976125371554,6.795506132626015,-15.587277249424748,62.11328876806106,821293.66 +1581.513348765617,1.2134449611869933,13.371011022909144,-14.848721178098412,74.06535245381403,0.0 +877.6449819314587,17.19695872194259,2.3248854809884856,-0.2096489578099092,2.0938243886422483,19125.85 +884.4240510187481,26.385072131919255,-5.972471045529217,-2.962641347032693,54.25383048279887,392101.93 +976.3729067284244,87.86856252014616,-1.3261131326327646,6.541065770066465,37.054267539016195,63418.99 +1667.0806821345689,1.956709711432984,-2.390598718718211,4.4746210230029915,6.484927443562663,114675.85 +777.5064126916708,3.1080388402883385,-6.699747806881917,-15.703521575372026,64.96720606032301,0.01 +1564.465180264105,73.26329771182955,-3.3812750999126884,-8.130049740200125,92.94726573859236,605959.79 +1891.1807134031776,18.24978241777603,-4.6005299288251855,15.850191927724978,73.54281728617612,0.0 +1389.562752664639,1.1915110257185155,-15.554388771213912,10.66730570734778,8.909230359186726,0.0 +977.0259461186444,1.42786781521,13.222092042378003,14.821648103774764,6.61238011030114,0.0 +1546.0215016639966,37.22897860090781,10.258629249271516,-19.12049509425591,35.158182810951224,0.3 +1024.215265552494,13.644228907903504,-6.498450714753052,16.48354782470947,24.61623105438063,0.0 +945.9690879946536,13.51546409845755,17.805281562513517,14.443120739432327,3.7296392275059818,9.17 +1145.5096944308298,57.50840023936132,17.974501626538682,-1.9089150465228188,4.9671312558589555,411683.72 +771.9002026567289,3.035259581541148,14.268788980768722,6.943521500845158,35.169501375722376,9374.21 +387.65038930400215,2.093446967959095,-18.82508644558193,-9.12025547314595,14.220341181401167,11936.64 +946.7336099470972,16.889309536585078,-5.1512802331203345,6.343528562000347,20.27196912843308,39092.98 +422.94238603274346,58.18971033522704,-1.7065373291238384,11.950850369827211,87.08235024623671,445193.25 +938.794652399804,3.3923549666368,8.748651298894714,-0.6577652158866787,99.37411335910936,1970295.42 +1202.4806981842105,23.045637674258632,5.392493377447671,-18.86905987767852,80.65334391513208,1.28 +1875.2801261701643,2.017242287537406,7.1351445435750405,-3.3461846924097527,24.0439179228947,1193751.22 +265.20019588154645,2.2070765256747507,10.688536552063198,8.999209917358417,18.4083446108202,4299.68 +1318.6251317034996,63.53603598991273,17.937417162764437,8.150245073255334,58.26909108646353,1277550.08 +1023.9233359701392,1.7215910245440007,2.060334690002082,-0.5478607047887651,78.60731476662268,2015634.43 +236.4700307674505,1.1186418768735804,16.161698579604824,19.42836301628798,66.08685703643333,0.24 +649.1867166896966,35.47160962151085,12.59275540294575,-15.31816521934102,80.57142529643981,127125.11 +413.2734542386428,5.309077891047944,-6.483030067501088,-13.668472583065032,49.21271699413168,6653.32 +590.2294623166005,6.213225334292878,12.546818687577442,-9.66690603063357,98.78903283259696,95675.9 +694.2264382296528,39.78460859786535,-15.306189121077818,12.141796999003429,78.89994108752096,695404.81 +922.3514036879532,2.2901903646154107,-13.64961504363313,10.512731715886083,6.043198060591118,0.0 +1152.2709082800025,19.982686871607843,19.695139419721936,10.910473593578036,37.04143003465466,48669.88 +201.78198906749495,4.236982377427112,-2.8524559509519154,15.184913965895015,56.402470712168856,3771.32 +491.3648491317334,1.6163556338031784,-1.5752790398872565,-2.2835677324584847,23.195572125886148,239328.17 +368.4194940958413,23.71330558517973,18.0412347052049,-7.257081202294371,40.93174056732353,5207220.87 +1189.4121186729387,4.338386790602762,-5.526408553464313,4.015284149096923,63.33145932322312,748060.79 +792.3347667222856,54.10136324158418,-10.5213361041119,-3.605130646124483,55.66462851175292,344193.83 +1187.1159248624926,68.87653653815329,-16.88713050250606,0.953624562595019,86.28353654955593,4559663.57 +599.2819439144201,49.90034219549106,0.9047920881713134,-14.391307150769666,26.988618606555928,13816.69 +243.61283735765275,4.412690776053176,-12.012434278413142,-4.144699635624911,92.19318297874158,364322.28 +1894.4604222864443,2.9727969635435763,-17.407758611291303,-1.0946382979621427,32.89229045531225,209583.32 +394.95461814018927,61.03813913064876,12.522778378068118,-16.5023826209205,92.11917943717312,3111346.0 +428.34574633109025,8.051818334464448,-6.8561233463361,19.779810263413378,25.58042954836354,2.71 +463.7842877182529,26.030316406005085,3.175607281136008,-18.48856296519531,51.24676266805367,6362.1 +1966.2977431878908,45.11577299829965,-15.8141744087561,16.780624589453133,93.29176253910803,0.02 +1311.788432305993,3.5923058847693667,0.2233053220319014,-16.79207339219701,28.47236434274742,0.0 +1298.5219130669311,1.7305926539000902,5.273604501167233,14.371905768562252,85.02647919981472,0.0 +1976.0567627333533,17.76867838630542,-2.005455562232221,1.929671077983044,50.6218593235205,1856974.76 +359.1897846943786,15.1490190432999,-6.500727343350077,-12.146605278152318,42.55973115667783,36148.69 +1954.1016065761205,3.4705647013483554,-7.561798624026741,-10.74686444494883,66.70521218374901,7.44 +567.2236637972736,14.771120558619415,-15.624649883821489,-5.935665503302157,20.65655991409203,176351.92 +1321.5287064116635,38.08154054537165,-15.372351610859011,11.760908957693928,66.22416996941138,2440.4 +956.150417545025,5.012125820951574,-0.1721534839955163,-14.114151396298782,18.48600975447285,2.35 +891.1132642589208,3.0523577804089097,-14.446829844609365,-10.310743029346416,71.37577876116771,6805.46 +1876.2379912630329,28.18398682908369,-11.06196632119158,7.707117224938424,61.45432190855929,31973.62 +468.6099111924616,37.303023458199576,-13.407293103001576,4.559652899795594,14.846107046991923,658755.8 +1994.7242199372383,81.01750707748165,12.099374453367355,-3.1670171351728227,10.967722636238074,199429.11 +882.4251099647873,1.9732024491306708,-2.01131729312392,-17.578550848568955,61.12797047324673,0.0 +1367.794826999398,60.052100643328906,2.103581255970961,2.3399515703909612,13.027097316746037,115046.59 +1942.2321166700483,33.89983796653226,3.3183259226922024,-10.831149450889788,62.884296497982824,64727.33 +303.68189068215463,25.33960355013803,-4.144605087329398,4.484013078395619,99.90314605117324,688566.24 +1861.155853265343,4.2277301427921055,-8.062757974266903,-9.019363600246924,13.174613046410396,4732.65 +1222.060493637818,1.107607537062116,-4.702179602489753,19.21323848312305,47.90727742602144,0.0 +1467.914382159414,10.35382900430134,1.392927896793026,3.623758812481861,92.51593942198744,1453703.26 +468.53153099542703,3.728539539679668,-5.656909577069205,2.8522218681824585,93.77311970908136,441266.43 +1160.097375495858,3.798761587667779,-14.535363024810763,13.470735376638888,3.96119585117383,0.0 +1412.3246865054386,71.49524428326187,16.54747768574509,19.726591344850107,80.99276787803808,372.34 +1021.2451532978272,2.022729386990514,9.296249675752405,11.166879711126878,24.616035692003592,0.0 +478.9733205909021,73.86943192227052,-17.349205581390443,3.755819839430865,74.91027109315762,11260294.49 +639.4143351540379,10.176851093590658,16.227998005577476,14.540991670510197,36.14531114835142,530.38 +1737.9070237882972,47.48523068043911,-13.181392399262428,-12.751637438227942,23.264008068638457,4647.19 +262.047787098973,3.6912643037877855,-16.090792660315827,10.569174852295085,47.60145183295204,179777.04 +1475.9517411934623,18.52854549336457,-13.071324090576674,7.195954957272477,18.41594975860156,11862.99 +1998.9020657261483,12.977074307777766,17.32135622637987,2.5300432216217583,42.995348838328255,213640.08 +213.4693929921799,70.52322737641336,-11.148228903859234,14.670246428977752,40.08708794693349,1592348.85 +489.8822290758918,2.2834781151467527,11.479677028080184,8.386285531966031,96.3233480080344,10672.5 +1413.4597416076422,2.565309559210782,5.721529008349551,8.669338421997828,54.67022390805044,0.39 +307.98350225362685,79.05490095722666,0.7289231346381841,16.38965845236425,70.00994388265707,1541976.02 +1261.621970940546,1.5701069702019483,-5.376254513463312,7.97648248540237,18.31896703666306,2.11 +1431.200186409901,18.59366226122474,-16.28263576421166,-9.783043408147869,99.73291292072898,52926.42 +1258.6634266053263,1.321685807315406,8.426191112062039,-12.654991374925457,50.27038600113397,0.0 +857.332465437921,1.425547248669108,-4.2087410071697295,0.527873038317046,8.447851689877062,173658.63 +1455.10813277595,15.642187442835802,1.399445606771259,-10.603513722619104,61.31929702605717,41919.25 +1269.729970424877,12.668812958810754,-17.929527361530333,7.985433312212367,32.49648410801249,1888.36 +573.7469097690555,13.997561925765943,11.037513193937,13.708383391912736,30.0993100564704,853.27 +1213.6439784531976,8.857357889683348,7.690860515710449,-8.327359650617128,32.384838110424475,128696.31 +1787.4329908500697,30.52942896579076,1.1720147965321237,16.538976436175147,45.59125320272987,0.0 +1400.29991424281,96.46662239016683,-0.1477028837008376,9.876145092463666,29.425416548548643,21907.55 +1049.2247133089247,3.5609222622096337,-6.518769536823692,19.52563646913982,78.08908667370466,0.0 +778.8513851650121,4.434854078141873,-6.303844183968241,-12.051827438729688,18.716963987966185,894.29 +354.59517698763113,4.4268936082767825,-17.261363254153803,-1.5381173238556167,15.051988406566975,184454.08 +640.3288389662516,33.61536975013383,7.468543750237235,5.61231665493918,11.342743294836936,18668.15 +220.1361555563784,4.966277721138712,-18.201082095041446,10.51670207503802,41.62570782741225,1593355.53 +1975.926651544936,22.567015914137972,-19.943248826526187,16.47730747550774,12.174660788955013,0.0 +600.4680538317319,7.794264041326289,-18.760752570983556,15.65080127716282,3.4807931411845927,96.62 +1666.7766968336707,16.428932075336885,-11.862101129317292,-10.555123340495038,30.146133948821767,15161.76 +503.5607872489615,45.50202718891387,2.8078285923888657,-3.101155289315667,98.02295029642768,249928.08 +710.4820692900331,10.668844250417534,7.246368037262525,8.73219556219723,2.0807937632225446,767.33 +952.8991746110602,8.91962100731207,-3.170464695355495,-14.707430273934769,7.322991576705908,11.2 +783.9301954548891,3.4193941724886,-3.654452037790312,18.37460953746794,58.73038948936323,0.0 +1637.03146296775,10.759923004701209,3.0714355345920463,9.878110653238185,50.29001305351201,12.13 +1923.8481344277616,3.3483014106157714,3.873102718633872,13.153675353469644,11.326859719356266,0.0 +1775.5300705715274,48.656449107908834,13.799903346524976,16.297775418034433,89.57776037546134,0.13 +476.4401605059618,5.994156169780946,12.763526605312258,-12.881925334486889,67.76873008663615,9435.51 +1598.0396174287223,1.8122381292776504,12.941048183011516,-3.1147605282974045,49.97378165195395,1530694.32 +466.3044439484806,3.0195001523214566,13.766911909609284,6.066791256947548,54.829461668344386,45681.31 +1844.0859918117824,11.726352224076232,15.19321948086394,12.89844494611689,79.8210694063247,0.0 +1132.181436203441,68.0103534152043,2.2126715175989053,9.520176343184112,10.709936005944442,7994.46 +805.4859585020721,3.991379267687393,3.8066865571631103,-15.138756001085568,93.3835269070412,1.25 +482.64589520154703,3.3788771991417694,9.089039888341556,5.826878264405866,12.15082304004408,19311.39 +221.2563587222083,6.503088579272497,-12.03969777528437,-8.23785241765908,46.39625126903236,537571.17 +646.3045849895925,86.20033558740806,-5.5815587971874026,-3.7400876219697032,25.51063057483625,212092.66 +1845.2361139063617,49.02745490781748,16.50611922477095,19.76919472565637,66.85602940996483,0.0 +1635.0719460900095,1.9922136074860095,0.9104972247923326,-13.717767543571163,84.14316933409141,0.0 +1945.628673951295,16.885214195499188,-17.928495283131078,-15.824778630731496,62.05048654569273,0.0 +381.37073801847146,38.34673627691745,-3.777608616510606,-3.6342349194291534,23.1738066310053,159345.24 +1265.921738310205,34.35743098141379,-13.568431870502067,14.565122059325546,78.1585094941125,46.33 +662.870853255398,9.499286439776885,-5.748525525180983,-13.511669115428557,94.32351385984455,10098.91 +1177.2950703903334,29.08457830294983,1.7990384118016989,-16.801887001791364,16.937795794047368,66.67 +776.8187940142193,14.695122853267089,0.2054560702710262,-3.246042629300545,26.09755720271439,206277.36 +710.2379904380435,2.5286572462610812,-0.381238793012022,5.291922967866682,53.43019743945248,165520.75 +1232.9215436442755,1.2945155787098286,-19.26644210209719,-13.81229960882373,74.23747256024008,0.0 +529.9726913651725,5.482761570777513,-2.195804866740052,12.183553960988151,13.571649115690713,109.43 +1044.4401865498105,1.3300807372875272,-18.841449308276733,13.836635594660011,6.014432024851782,0.0 +1371.4620770792626,6.166330638035922,-3.8055689697641393,0.9038370344996284,57.12891962307631,1668912.33 +430.7277317290473,45.473460307188496,5.87999643605817,-18.781445701823817,79.92542005024582,207983.24 +1875.0696875784272,48.81893453795314,-14.963821671732456,0.6440912208154614,30.465271645755124,341325.57 +1110.3044590174247,1.169897580185244,16.67090962896852,-11.432710117797807,58.71548085681521,0.02 +1675.150349391816,1.3774344322830103,5.220459598375857,-2.1561196651045744,80.54171171365948,3899899.67 +1377.029775117914,21.864229392259222,-11.296054576364345,10.389489134660709,3.853392588669522,67.18 +1478.001694200582,9.99993990004788,-4.236493288786165,-17.823245579852724,34.28024101506607,0.0 +1489.0356937871084,1.9893755931817332,-16.123709467601092,-19.99391882379782,31.016518760021768,0.0 +1775.1798147106508,40.83750827298539,-19.117468493378837,-14.662036659464288,72.58271825102882,3444.69 +1304.4897830844634,2.710143739460758,16.634459209724977,-18.18522705082247,66.95568216942779,0.0 +700.7908730985013,1.433172642383875,7.007362028936566,-9.583196889548669,82.85392278023515,24593.63 +379.1173571578229,31.55108336912904,11.185844059236953,-3.8292777482752216,55.3157785920478,1869336.11 +1291.2511150102546,16.453259569438345,4.886913913596396,11.18833922565386,23.561110879863325,51.07 +319.4350467870459,6.1501467325497305,16.270621104337096,-18.78691085255531,43.877270336174725,15813.5 +634.3282130411544,24.291392286896233,15.83675283942668,-5.9603938370915355,40.20899004581083,886203.46 +309.2729322834411,66.49077230123814,-17.673657899633355,17.177760857508495,67.10706322494592,3758085.65 +1187.9976602118209,1.1704823938979216,-12.421200656871804,3.055206683017486,95.438384116401,1763640.65 +488.6086248971625,18.003580103177523,-4.168404231524221,13.0705374138406,46.31260702020442,5900.24 +1298.7331749802518,2.731081082633043,-6.356417815395021,-0.6594361439853325,64.2455270062857,2129210.74 +1623.5572355538816,8.87719009453107,1.0229012649289435,-16.110391287599523,18.591797221502688,0.0 +1679.3852973893522,7.046318304857959,-9.338727931220658,-12.522435474422084,57.86508237221176,4.82 +757.1783146477294,6.025031692043643,11.89836471826614,10.323293377557064,73.11289834110413,708.62 +1188.1181588500929,2.40276999783344,-19.700246074475007,14.5643010056677,76.61080227197431,0.0 +1213.419368155446,40.29951995526507,11.660523299193656,-1.2983275015799345,97.38892298938632,884770.47 +1051.1969278774998,5.741708893600509,-4.265188936747717,-0.301735013158626,98.76876991282698,2017378.8 +1379.2050045645767,59.482953159714974,-19.794599650008973,-1.995108360185207,52.030706085728475,9701551.44 +578.1568228823604,5.12078504545981,13.882570757630628,-19.26547549549197,86.19914008200686,0.13 +1962.6378312562297,47.799867125523335,-2.1298201146884344,-16.179606293041395,73.97561080721076,57.54 +376.5436887636784,12.272489326141724,8.989065718761179,19.675523036149492,52.93529077668886,1211.69 +1692.5980541656145,5.90541563741229,15.137948980026009,-18.319454622007232,3.9767752145168314,0.0 +1269.372776512138,25.58965490761838,-18.62749027507696,-6.041237708171274,97.72465467363708,661765.07 +640.7385449486886,37.437707704487565,-9.513517932166184,7.627449581603485,96.55742375085902,202434.45 +1542.2150011885396,9.233823746213792,-15.244336388935542,-3.0067622375189407,52.29611286997145,635935.25 +352.06561221872954,7.093177973278778,-16.079593584175985,19.306552394105665,35.09922027047352,3275.68 +1593.9521020078096,14.283608587343778,17.825643672036477,-18.69045241464018,12.066689636756784,0.0 +1261.9734000374244,14.802216671061087,12.2227751706236,14.982358390690052,6.458159622339001,0.0 +399.3505731135229,7.095098543136438,-5.410993599812097,-14.61022917347349,80.53718631692786,10386.37 +343.1100135662664,32.75863196602091,7.491721712150081,-11.807116365595704,41.534533406814894,478193.05 +1551.5054001856324,6.301484836091314,16.777810951398653,1.132151271631665,56.72025399534057,365250.45 +727.2846317069069,8.053722951314649,-11.167460245048408,14.858186969584008,30.84620437053799,0.65 +1800.7433313809845,16.24188565066499,-19.43397049700657,-3.4367572644869604,61.78556189015202,91275.26 +1571.731437854317,94.123442726629,12.96433364827767,-8.257044837008628,76.11814556636006,327720.07 +1456.7424404918888,3.3217903723100255,8.907933165122204,-3.933119763291022,89.39636312113053,2599785.25 +701.4908947402117,2.9100845004263736,-13.589708983120431,-16.22626695624408,50.11234821536778,0.01 +1476.1001342389122,2.258263072998993,-0.4141661805959051,13.529372948662338,30.718306440810288,0.0 +1906.6658321267012,23.92700986324407,-13.5826445982026,16.608603957566825,8.603786253582067,0.0 +364.807701867024,7.910232977822302,4.104554473165991,7.030986877948302,85.54731397360452,73992.96 +787.0927556064189,5.987047174469676,5.9027978128749625,-2.213214904044114,85.50320454212931,1073080.78 +622.4100778308695,2.559650962128881,-8.932691699439825,4.566031909552555,35.985010855406,151813.83 +907.8502419212,60.57267520670701,11.233485076685136,2.074672295118005,21.518776930284897,125635.83 +1536.1987787371036,7.697435712468566,-1.0561460430343006,-17.937793900684902,67.66563283864106,0.0 +1053.636646565696,16.42050929483704,8.25431645182038,-4.223146685910302,75.90929348107852,897194.09 +1227.3150910164434,1.679032708748288,5.59244725693139,6.273147312366434,72.46037543610925,40559.54 +765.4787985410162,1.6441613444187144,-1.969642715575426,13.911963149164844,8.056970922094965,0.0 +454.320680756781,1.3636693624784746,-8.291309516896197,-5.641080175545881,98.43865088990806,610114.73 +680.4805680879114,5.428653990957879,-11.82782384577691,12.770884459342668,54.907508557232454,9.14 +1747.4245422355766,8.826188621755835,9.83776129708752,10.276638245812196,61.226223176619435,0.12 +1284.3505318761388,3.084297763121859,5.677739083644577,17.17240548920845,5.487087433056485,0.0 +880.3796117550207,5.004434527054866,-8.762322865872477,19.577234987950316,2.168536031475935,0.0 +1621.8307671240575,1.0292480859896016,18.68396691213952,-18.330709753121468,13.507008239189958,0.0 +316.02337841883576,5.037057755089797,12.413557228693165,-2.501172067009545,39.706934241770746,107908.47 +657.0039582602942,1.7311817679933246,-14.927909563309818,10.942407689362792,94.53264798469866,0.18 +614.1856773032107,1.8062129709404504,-13.497463465522008,12.9266625488976,73.07413829605571,0.0 +1973.6562119028,1.0209681523987415,1.761912434928128,-16.68583108145448,99.92364128441076,0.0 +1470.9774483069684,24.703650369286287,-15.904817980684744,4.263623927523024,68.3075781478159,197709.65 +1312.0146854993975,72.87315091332545,18.573520208003348,15.93810264827097,10.876167740547633,15283.02 +208.9729375300512,17.502138720631,5.52093620461708,-10.917637150786854,69.75513694013978,954279.24 +531.7580037617432,1.557414105760458,-17.35303853078101,-6.105637110782265,64.49167964121662,56498.34 +1343.974327351541,95.34521420568336,-2.2605707855004376,-4.206081911812518,88.74459096959427,702183.4 +883.4947876669983,89.36559304332444,-11.121260852615269,-4.218489874839979,54.88016577379683,909915.22 +1863.7046906223095,8.63911134259519,-0.38197055985973,2.4682507718888447,25.31177098791614,928623.57 +1576.503594455164,1.6433816631692786,-10.118980009930011,-17.567742986108797,73.53899191253895,0.0 +1005.291331047416,27.636218602464623,13.27184617229844,11.167590974092803,75.58697947297897,5135.59 +1549.1269595688868,83.74066569140021,8.843968385669342,-15.084916821242851,51.90637903375452,9177.24 +1955.7277828871988,36.09102432689056,16.263126071239697,12.53263864092646,10.38781291845423,1.06 +1029.765484462647,17.717633310101647,-12.081695410411314,-19.31622554727692,41.96377631010811,0.29 +1356.54659819936,16.659570655857266,-4.584310506019356,11.481039242688864,84.15237393534167,58.43 +1853.5963071103313,90.33087735387058,12.218661880691435,-5.789315196532763,31.05940680250354,333896.0 +647.614391665112,1.400356700081911,-5.046135973782118,6.234331522636745,73.43367025301497,65656.18 +1795.804244599301,1.9911869586435755,-4.836464675141374,-12.833119063993635,26.09743677835105,0.0 +375.5804721913688,45.87994509230338,19.441537735595578,1.4803848634651429,33.54215149813931,6305730.14 +1367.2067070577637,1.9508602537912805,10.834527476404505,-8.035545488148333,34.36763712005798,34721.7 +1609.1086791004118,5.842422684189007,14.432700469234533,-19.8430132938797,14.417950933289564,0.0 +1306.291194654367,3.655935390895312,-3.7210865555215062,9.005640593061441,35.765282796070764,2.92 +1091.9626474745774,3.068240744920552,3.43674091879854,-14.752964479097113,72.63800650253384,0.0 +1311.224779866235,1.125755045814665,-1.9778571779308465,17.58816865338546,40.72971610834713,0.0 +472.99467580300023,13.56758424973104,-1.9882568036171744,1.7489801586560505,30.67385822379261,83033.18 +588.027278594393,6.345692769790634,-14.892034572529148,-19.933027344884483,70.37026882153124,0.18 +685.8188191214156,12.68178614322016,13.685314056092295,17.796919615268855,52.03239975471751,3.96 +1276.002813134069,4.0645868989086615,-4.37830265311641,-14.688652031639323,44.150653217702406,0.0 +995.4219327411269,76.36980999705689,3.2729757585833053,13.357647219949724,79.81943972748901,14673.18 +640.0565164745111,15.229806464045817,14.28287384498493,-6.828886461176142,38.81254441665869,102159.32 +1789.0567978602442,83.64001327296906,10.939090120671988,2.722481219212125,54.890433018325055,575463.08 +873.0593125278021,5.012009765573076,-12.070480918417893,13.429010146093407,4.145709532099813,0.0 +1002.857094613804,1.0105994899011104,4.740454624273882,-17.99367360089583,34.60219989888176,0.0 +937.4619377881902,36.520030361915495,-0.1707564291380814,7.202320254936758,24.453430124042104,35747.42 +527.4973194981548,45.1603926344065,-9.593913936180204,-14.056705731533889,88.68922582534444,479013.6 +1516.92862777442,1.3104087803469735,-18.365683859596142,8.655837083815747,3.084213683458888,0.01 +1007.2248720839444,17.81305697209836,5.191652320906424,-13.571839670045772,70.30449371666695,6076.27 +229.2627978068932,20.991125930985735,11.194196594859225,-19.12225336902401,75.86368861763054,1331296.17 +1935.2246642476343,1.956445408440147,17.668736468128813,-13.782474657310582,33.91762465112853,0.0 +1668.3745008717449,12.73647084233486,-5.800649650021614,5.029511528384885,26.45271411205711,203333.52 +1502.4068373652458,3.0647691074885737,-4.031313938580179,19.429071684604203,17.318634492421182,0.0 +1764.365366933352,1.0787067750198265,-13.47977478300422,18.80487965521131,28.433307196489604,0.0 +1832.2530564899905,54.17790168421082,19.384640933315755,9.827650218354984,91.48008039641904,374776.15 +807.4814714919896,9.624769608675985,13.9834798522657,12.983218228293865,5.2903627307285355,2.12 +1299.7256211500576,36.59301568533317,18.304149158917703,14.95858118263255,46.21482051618878,2398.38 +1295.8540565700696,27.91168559529608,-0.1861144749821486,1.134150536189491,27.173729633329923,387057.41 +681.1394038590745,97.14277870671364,-11.60874463250298,-10.855900371069062,69.89122303748141,2275672.36 +599.514052604721,7.514616258523585,2.927382149210138,6.443829457418695,34.05635158324128,47207.63 +405.0330586742398,7.163103288389333,-5.11632336764495,-14.336286018228934,35.25016883067016,5231.29 +1386.765552649615,3.660253243088218,-6.0854227675838635,13.294426411644857,6.77116359976082,0.0 +1605.6541838554035,17.794853904643805,-16.705428639076125,-3.5163587392014684,91.13915613634664,532710.34 +1569.7153631306069,9.380478688389204,-17.074031411919517,-9.340328965716092,52.637144860655745,12096.42 +769.2956789329538,28.676242496849618,-4.84805788057959,13.738320193872791,7.829685892635142,383.43 +569.467730837364,5.16444191082544,17.04794175925241,-15.55229937175008,75.4206524900455,133.91 +1016.5055212183196,1.8267936075335616,8.920948419168923,18.99305632538035,78.2233299004295,0.0 +1184.264228432919,53.07266601717754,10.422343207038216,18.016472699219474,46.65284560159672,19.97 +1854.3568303434004,45.29954959545527,-10.628372941788884,4.351523048059853,97.93369813979908,949755.94 +1774.6816776932974,5.035010426544891,9.3811844433084,8.485091646552068,23.37400814048701,3.28 +1848.90499634329,24.027215026328513,-3.7472349443621056,-18.514022644893263,84.57718552749394,0.0 +1730.4722932447633,9.656190221975091,-17.62437558107187,-2.516678684884135,84.79669401973389,367011.54 +1936.24616798536,33.261681013262724,-4.207457299267787,15.384664824169704,52.60142277015147,0.0 +1037.8999949043034,6.029270064585652,-14.749848502705245,-19.53911381382093,54.470680361762454,0.0 +285.4522953795699,11.783612997509303,14.14797851725794,-8.375202900296115,12.115605996012334,368529.77 +350.41165786726083,1.3050651967327975,13.611762578996306,-5.846373557136313,14.188071548702135,41483.06 +902.4970551902176,2.2377932688188853,-8.501242868002983,7.003185506491727,42.85563690789492,9318.15 +663.8367642913951,36.60422494338535,4.476892111023405,8.193559229290495,91.89212648079648,81458.43 +505.8930644499211,5.796034532939055,-5.449611265709575,-17.392415310660112,22.23798589345906,31.43 +1915.766794115567,1.1754681021007454,-13.8309530262554,-11.299388272273676,48.02531790716664,0.0 +551.7552591391204,2.1640763127848053,5.976292456344785,13.01989199069678,7.360156660652072,0.01 +1926.882690167416,6.6557356452578595,10.404265732436894,-12.327289987461146,30.62412204806102,0.29 +1569.5099125781728,27.278859817720974,10.988909642630125,-8.53864660487238,37.828517361776115,195208.39 +1353.7022098254022,5.332981579662251,-14.03117656427337,-13.510227225172631,96.32515891839506,0.22 +1416.834128160881,30.92940096567421,0.5031407398055299,10.172655406985802,20.110899420656928,1531.01 +796.6537825864232,52.014110335760776,-19.044025712021984,-18.915741668102903,10.971107711833298,84368.16 +1363.568668504908,4.811419548903067,-16.39322009486009,-7.923478922107825,6.321529894682857,5464.37 +536.0458129062775,39.87963196506489,-16.757953876584487,1.2926057911115318,52.6823055465451,6468667.19 +1887.869778564763,1.7937475952900113,-17.712368257979954,-19.759182988053375,52.42575509588694,0.0 +743.2280119290684,6.769663007724981,-6.649226037686615,18.15944453848293,20.389125382728665,0.0 +659.3357221283759,1.5672013336585418,-5.692815965873166,14.771566141070169,25.50428307939924,0.0 +1480.0930367494834,1.2736672374362663,7.914813682809134,5.892649275421822,32.56622448456549,41610.37 +1381.607692519127,1.346030048107527,-6.804811145449903,-2.4347665219398573,1.9355471356855125,71965.05 +1012.3380530179496,1.6199591162419782,-14.384167832890071,-13.787723661297946,81.8885196985805,0.0 +1338.4032224434154,46.93013968116939,17.875025239606774,2.1455738725532347,77.50442910816038,1695485.76 +487.087529169541,12.227966697491402,15.01905615942796,-10.431681104376285,32.70514097780469,108330.08 +1411.990953323519,78.4831409620131,-15.030969783848946,5.520694498383265,57.85552346955563,374423.0 +687.0992513513489,11.91243660990457,-5.4888520012340525,-14.17655630910672,33.489809699792374,2865.41 +691.1047580176231,18.08933762400961,-13.276613960601136,8.684770085267433,3.6523840427817498,2087.69 +491.9238828988122,2.3386644945968924,18.36445709731871,-7.083793672526357,59.38910371692466,28719.09 +798.2788430650963,12.054856398081624,-5.76089631581755,0.0792689162672699,72.44037562965896,658901.75 +796.2519085603906,5.896646563966068,-16.075302923282628,-13.526975687772772,34.05112586005199,94.78 +1017.5222210640846,72.92403389940253,9.073759533195217,-9.748926876855336,24.89581506038069,52473.15 +542.7551083994291,73.76365561639669,8.468700647415833,-1.9915295853378767,27.15866566052046,692722.84 +547.4135650857794,2.494578787373472,-10.358621771052334,-1.6727484343303445,35.560516874752594,345615.38 +1175.129428993811,17.388484312856118,-7.141525963195048,19.991111591849492,47.28838526145165,0.0 +431.9793284068553,18.89520490717342,-3.3992441003309493,-6.583141896177014,75.73697205794862,121237.2 +1440.0146143799032,13.337368757840284,-9.291999929134091,-16.624886696126936,20.701877826641848,0.0 +1899.1048265526736,1.7727986649421212,-8.444491672949997,0.9687447174331963,70.92840498183395,3758578.97 +968.2321189958808,20.325003903854807,12.063615680746276,-7.126970470915968,96.49021502334126,401256.59 +1821.989563671218,39.64337036512712,10.07402420906455,15.11106635156715,18.847121845079396,0.02 +376.969864026556,4.902889075087816,7.705168478819457,-11.588073004236117,51.25232199289206,24695.78 +277.32372927616024,10.693094474870314,7.47094227379395,14.226523252986514,36.76635474166555,28630.44 +1498.4639795249118,1.708660944438975,0.8752772265549469,6.543091933183245,60.4450521113302,8943.87 +1569.8388313666935,72.67372530118446,-5.963148881557641,-12.480421620758278,88.20380456275959,78187.01 +1717.5048337383523,1.656058622946179,8.821797819096142,-3.790113565336069,88.74792544508388,3602797.33 +302.27182111996655,2.6106834337558213,-15.34529049860124,-0.3026991967982262,44.86196635012508,107729.25 +1598.4326989222948,3.953274322414612,-14.357179791732316,0.8719622811523475,75.97765740082544,1590063.37 +877.7697190338472,44.83121182479088,-14.949391682169615,-4.11620355632933,51.61916403439733,923928.33 +746.0077388279575,25.194853708200043,9.308722070012942,3.3851124598030724,77.4286990575596,244049.4 +511.4430584179344,1.0328300757939468,3.6616353745484753,8.669652634914119,88.5517579080193,697.24 +1992.8283591845488,2.3287512140678217,-1.9935848252460977,0.2473521336605433,71.46889440045118,4114451.68 +314.5944607739545,31.64480023115963,-0.95074634284793,4.0973242757876704,7.01491262774964,45049.0 +1688.614426294399,6.421980492326711,13.102373086845883,14.383813236073912,25.28413687637164,0.0 +1351.0899838829496,1.1283064347418998,-15.132808841346348,-0.0899276320692843,78.79212222371905,1149577.14 +1523.144799671361,84.69031664604964,-4.670228786176778,-3.348030981921424,2.9448014925037236,35923.48 +1481.0908158592335,2.006623185001621,10.406648220026904,-10.08996438034464,52.275960714109374,130.38 +1745.1820731317289,10.493812016581986,6.3135748228428135,-14.745404097784922,61.431539775054006,0.01 +530.8257257409949,3.1378501178383145,-2.5941311408847723,-8.309717078592236,82.17961346122989,191968.17 +201.48431030243367,29.849608571878424,-11.026351614759491,-3.7534542194374687,80.85505125573147,4098846.69 +1277.3512802778791,35.76450331526094,17.857648532198347,10.570307700845568,8.244845845017354,9325.3 +836.9455507820011,6.229322379691265,-3.683225485739636,-11.302848460440984,68.28983421682771,15466.73 +422.81719601084785,20.744321897142356,15.113400156143326,8.085842838261538,79.2397474543922,2328718.17 +535.0497573876299,65.78807352101107,11.113219201331027,-16.83864397298262,11.438541657671855,151158.03 +797.1487624266013,42.620470232588,14.461201320411984,-13.664350694717484,49.05593405123531,166031.85 +326.4200675960658,6.757645966038893,-19.323120230452897,-6.946857945825271,65.28646745878207,5776860.68 +302.4437638312115,7.637515555577535,-0.9043428808002708,-1.2071214566966049,34.897477913432425,71311.44 +1848.8472586983992,59.39591103174842,-9.622646927294443,-12.762863719836997,37.682696997244406,13988.01 +761.7849488366531,1.1715089230760545,-9.03914579099064,-15.518762452731243,11.184849622250992,0.0 +1968.015255452453,1.1107674498876812,-9.206387107023977,2.6330185306993537,77.66219020516344,3816139.18 +1935.86061499472,2.5798275906998396,-4.427453126161374,-3.520482710901125,24.474779824089932,1205434.53 +456.6283081888049,45.210914249338835,-3.5718153538732667,-3.364306821223808,44.05724457235969,193410.09 +1486.8637452131436,2.025006283901522,5.361609925929884,-7.682132422294039,52.12177710430002,89101.29 +1281.4488004287246,3.7201338831226263,-7.985417906076964,-5.1500986431205,9.637735605047997,171266.25 +1443.1647315892765,18.11913164077773,-9.088914154966382,-12.63701614466752,43.68201963407839,2408.98 +373.1438000260546,2.3360687516206364,-5.575671893900029,-9.176646573218065,16.084038747701324,20995.97 +539.4081415422045,4.038617124985034,7.460579717419975,1.6909166971980127,24.019786309556856,166428.95 +337.9495906115867,8.58668347798606,-19.99315297502021,0.8916739968310683,36.272384376992235,6756080.12 +1287.441569390728,2.8590290459151193,9.87711828906923,16.237096589175227,49.483316867195434,0.0 +1975.863936528364,96.5666950103964,-6.441249920302408,13.30159674694486,43.986290220515045,617.7 +1409.5721677842946,2.1227166902573997,3.049590930033834,-19.715942835421,8.086369122010126,0.0 +1479.370763039473,50.10420895018258,10.46089168954239,-10.80944341706104,35.68657444362006,57884.33 +1972.253074777906,8.713640997223909,0.4334067053311718,15.507807673569127,4.882849589449515,0.0 +1420.4207975092331,1.8123720645008847,5.886049941238962,-7.40987085203086,25.827908020960763,61499.15 +272.3268307312466,1.7257278757092254,16.797629205323506,-0.8917740093985582,9.425883784536824,24021.35 +1760.6100815418756,10.013643183354084,-18.805349104209192,6.999397042841919,17.571368198914193,992.98 +856.4209226818333,5.093781865521677,-6.018846553040387,1.7342858418910767,50.74655982095877,664672.79 +207.85451872648767,2.9458090918313276,17.074166371973867,-19.805281169704266,92.80372895654536,47467.37 +1113.021519609477,82.77101375293473,13.497193188169256,-11.73746138168922,20.281707414387817,97529.62 +1886.6270015772743,8.448108467871158,4.673119254063023,-15.982413063575429,73.34984323510562,0.0 +663.1952369509697,72.04800549545914,-10.827881944078667,-13.294189705934976,5.326479784284892,59322.14 +1084.723711495112,2.1281363612984174,-6.77867848288205,-14.105252285965918,34.24907053150007,0.0 +512.7983980083034,2.327727484159397,14.318255050665028,4.911152663799743,40.737112556685446,63764.59 +303.84680899959216,15.561640633322977,7.930858291278762,-3.7374146872604896,11.726825158094996,82046.75 +344.9809040836037,3.4653833564472034,-8.573990813559895,-17.337948709182314,64.04055392824634,259.88 +1508.6196307304397,2.343558027046041,-14.710179927790286,-16.708382969594847,15.421658388893649,0.0 +1755.3340473358685,1.5465742350361538,11.230813364169151,18.014256020050187,80.26710060054697,0.0 +457.937910654484,1.420827455389751,3.0489871888220454,-13.809521200448875,59.56100840722927,43.99 +718.9734220588437,32.08756569400737,18.53752759632096,-9.846395796276536,74.38800918201298,4511174.17 +551.0530417606892,3.667129888018542,-3.740352914784224,2.971797048566933,17.259079680206288,102662.12 +248.34039846757028,90.53954478451442,-6.038921449752079,-12.515766253199052,32.39289975243419,1287426.77 +1196.1764657965705,2.3240328097704084,-8.369754281604823,-12.09882430238748,70.84202562769585,0.69 +1459.8599062477656,5.115561380620075,-0.7247945122931165,-17.09649365657892,45.88117147318885,0.0 +1366.179465593127,5.621047289053936,-7.0908143011352776,19.23284587273413,63.60180975980408,0.0 +898.4963851440457,10.00703884166559,-17.07237600851834,4.242021234208155,41.932383810110906,50365.78 +1199.0184426918297,55.1152444499375,-7.514837684287388,1.189758716533165,67.54895993337519,518802.01 +369.3787519452045,46.72404353672603,-11.2445626678775,15.54682310216283,64.51124459807426,1321199.61 +477.746693700832,1.046917987689462,12.61539985114235,3.777006586338425,30.65106232115336,138666.89 +1877.2303151953704,6.584307937233321,-10.576298674989282,-9.4766694349244,88.286343691268,32489.75 +1570.7139460758142,45.27656409277705,-1.6451371592425268,-1.1096679194558945,73.50645885484107,1431671.73 +1860.9303724853012,1.000911353736797,6.90952969449917,-0.8968528822549615,7.753875841416651,432779.24 +1850.024512098861,11.675598294726164,-14.03092509070216,-4.076816484604748,4.732694342074792,95081.27 +1368.9067107939331,3.3033245322100067,1.251299377438282,10.145219622908373,71.89616846188238,0.0 +1870.829566601897,6.69170979806739,13.887478065543956,-15.612688120823917,63.571137871615576,0.0 +950.0673855484338,6.928024259490479,3.363230070643648,-13.63140904105444,92.52114734557722,332.98 +206.50924061289368,6.074476851996019,-0.7045424412320589,-5.112149329078881,67.87142571477342,78373.35 +312.62800852308686,60.79953313218869,13.555155788220487,-17.153079812833816,21.61104525786127,954668.59 +397.0771862614674,11.828433100839806,17.8900770951549,19.495821659183083,5.16208074504732,4511.44 +371.6362157291485,64.19385362966374,12.839415976138016,-0.1682239034062682,53.708274198369224,4037444.77 +833.0643035304741,28.410888429347946,-3.6636220559698174,-17.9957532261798,50.13337474673516,782.64 +1462.2874527968438,5.037790950618399,4.467723546771736,4.31584778810659,93.80054584070112,1229393.41 +1623.167851880891,9.70794624978184,1.065667801203389,11.24418309642724,71.12873591415118,0.02 +1262.3838938203244,6.0216717306761804,-7.867655092635291,-3.691349988803081,90.10509133650852,2072718.44 +463.5851142025632,45.40969201838458,-2.587194841632341,-0.7787115267910805,75.90009960781181,257490.35 +1546.2228838667154,2.3724421096738544,13.170671177765527,8.024000102180807,66.40146003517116,3.71 +838.6434544476781,74.61472875113088,-7.980806285318813,-10.647288471579962,56.75007565088846,125153.21 +223.38802760923323,14.482681787761884,15.582282284624526,3.906555479989025,58.42351270610071,4810107.64 +705.0595169589488,16.73076919040949,19.657172768325815,5.237813035025662,51.238234587882545,3469253.56 +795.0809974537602,10.80445339491015,-7.729308170580409,12.18574656659146,84.05798754513164,444.97 +693.6419633925852,12.8526580786914,-15.090477814953145,15.642865611165018,24.228563217291992,69.38 +1661.3662757376542,21.644663222299723,18.28697395421386,17.635525693525626,91.6038888106804,0.0 +1567.8675156693623,20.420694594540983,-13.15739361295761,-14.946944340116335,56.3898008102386,18.54 +1451.9936547427546,2.6809837259136486,10.858552357447092,12.650703212416264,44.30579091293556,0.0 +450.2091413220775,14.617742987364108,-18.435460854071927,7.017231010894727,21.891633360132698,1401864.93 +1654.1010374713076,5.1197986485420985,-10.577396061193834,-5.170874800351841,28.33024636645322,644098.96 +1418.9167309939828,18.795791189135457,-9.593787558801417,16.91244691939442,58.8313027186886,0.0 +550.7078356665054,12.464336367698916,-8.110598717868193,14.40468061812937,16.020707446901092,220.1 +1366.5690745067295,2.287493493411195,16.77215041492675,10.97435415134088,1.3277228825521477,0.0 +1070.320953806626,29.475951623446313,-12.987611631603526,-17.70062703368299,26.663353470644573,59.79 +990.8301113412052,8.20402348577249,-13.054441436455637,-12.919726831098668,31.106325270578044,449.24 +401.82169425029986,12.673107084808178,7.666997468404948,16.733167424312793,94.19017453442106,2903.07 +1132.9476965212978,22.145512219645404,18.09268427999189,19.289456878105614,58.60059587653444,0.44 +379.87725615025454,20.21824932555616,-4.428625662737833,-8.907840248678642,41.17074600598334,55293.79 +495.65609705768,31.467166651508965,10.925146246070906,-8.904519821942433,98.31700159693372,901397.15 +438.5833656945729,2.5912150491471766,-18.75856429977638,4.412195886741346,37.37303973051234,72823.48 +1917.3949023260136,1.6625796769787589,12.962548752282746,-16.952732543059916,95.85575559546544,0.0 +712.7564427990021,21.7951142207483,8.935876044896762,3.81261879800935,94.2051056326472,276365.87 +839.3677824728139,2.9646258651484607,15.864626074218496,18.74756360879855,69.2997566011556,0.0 +779.745091332865,1.695156257357077,5.498171341532103,-8.12188516628968,52.99822933343042,99757.43 +1816.8508013206588,1.8301006936091528,17.653465766418623,9.709801780562175,82.3527489136503,0.0 +1213.3386404027992,4.222797422496655,-4.405703620210253,0.996029706762478,33.06711738124487,863762.39 +1854.487818079961,96.28842791232256,9.301257788829984,-8.507546737796252,37.41799452820024,251097.08 +739.864830490212,2.0631017781584915,9.022568328437623,-3.5008500972784917,21.481567607618313,305770.68 +406.7024139775081,3.954331957674089,-9.255685572602598,2.0432775394928404,26.28472403750692,103202.67 +1201.1932149035142,69.41739367745963,16.823181563805548,10.463633722188703,14.50929425959967,146775.61 +821.9665852220315,84.45320316852458,11.167071648184358,1.631799775449374,85.21741724107615,1690956.21 +1643.4323002833469,2.8687104953169262,14.654071340982536,17.005611442849798,1.1235654762797138,0.0 +1782.9621360409856,57.66408353470392,-5.496359968061317,-15.322051693146133,43.02310653554546,996.26 +1050.6323196327291,1.895989330447958,13.650191339822978,18.30790705324745,37.05753517436507,0.0 +1948.446243353915,33.34823264703525,-7.400941574810633,2.0260565734718616,39.379767361687634,1082934.74 +1195.4234114199303,1.0617354577096694,18.576042000017942,-4.327390076228443,84.53241630745768,68879.97 +687.6567080953624,6.504879539271598,-19.04211454536746,-16.957957430707506,82.28513445057881,73.05 +1080.1559276196942,3.1237078819914172,4.7675018940959735,-8.150071276173652,66.67630388029734,156176.33 +267.1585263252697,25.58680317268771,-15.510419546134225,-2.4826191163539235,69.22182895403537,6624489.63 +1647.2020884735216,1.0767435098735336,8.749326933112886,17.48266845446537,80.54977714313193,0.0 +382.5830915379577,8.507528489373245,-5.4524678530384785,10.257013295641322,39.11945238957219,10920.92 +755.7472793054089,24.743324425897978,14.825623737123884,-17.638202290161388,45.60298007355378,3173.69 +1217.569784608898,1.239965913135308,14.908100436214372,-6.884261971387202,25.22845761743763,40256.31 +277.35522616441796,62.34481840154167,-5.2764050598450085,-0.3427073180359974,24.567255780424414,928064.17 +342.7704185266068,5.277093812040633,12.399271078461114,14.003406888687486,93.52716554995436,3640.67 +1453.0094437034231,2.1405809912060847,7.245475086378859,11.0570995217696,76.30424853908163,0.0 +329.19876750938374,2.824418139649343,-2.937322853851505,-11.354491315428596,45.84585983278944,20672.43 +1058.7491592452775,4.7622463494401925,-6.270542241847905,-17.981617450384313,4.8603914685358784,0.0 +809.6521401573507,2.4931603050860405,-11.587802741231169,-14.704984195385816,74.53728941275769,0.02 +610.5429343215496,10.499231406772171,-17.471661885739636,0.1315871944168156,94.90306537778216,983528.61 +539.8020161545977,18.44435501994812,0.6943747441025483,-16.40489577729333,92.74713869324364,9782.77 +1574.1403287186429,7.359701796492585,1.60162148302041,-10.009689475191582,71.70208641082829,23239.58 +1912.775947670509,7.146021191881713,-2.2392536615863357,12.853907992510967,65.12607936533466,0.0 +452.3235359659971,36.59308620271358,18.023887188537525,-3.9218759773270806,12.963161322408322,2208665.58 +1927.4261945134283,3.99975533099476,-19.45239530947331,19.845859781057207,9.480642209893494,0.0 +1270.572506255187,17.601013166615466,14.012198399063536,10.23931015835702,27.255094391317037,303.81 +1354.9887296538627,61.07214448825107,12.032857881323086,-9.403269258945794,56.81055778013247,149107.59 +1477.867480656647,2.7735035761395723,10.35009577016076,-19.69718629239848,91.40817682598669,0.0 +1467.4140026382458,17.370065657471194,0.9966124952257528,1.088299005187685,87.238574082456,2021424.26 +1675.6599947342388,78.69435137194631,-12.385784871681578,8.234231028263665,31.300207616890457,30749.85 +1070.2435724258555,11.470715539930024,14.515174750937522,-1.2126781686247146,37.2579656560684,308515.75 +1160.045457526462,89.90740181233527,9.783786182532063,16.2601864192329,31.72405638560663,1975.6 +782.8886044341486,4.169577863714831,13.312848575219425,10.718037083726252,53.486957099479405,20.98 +389.4636688096107,13.445835241721698,-10.568497069074546,0.8107649093488112,81.08358672480372,345825.04 +1396.3523436671944,4.188625211195456,2.174999724157445,-19.243043456409055,78.52865523089362,0.0 +260.49794453525163,1.0172761208024934,-3.361630441797603,-6.47012363512443,88.74434497955558,300882.8 +696.1430919500629,98.76798664313246,5.586857409529111,-0.2236745344313684,52.65027496903765,461439.77 +369.6137560029805,3.0207872256755044,10.104307741438792,-9.990626343520406,66.15735562863073,54433.4 +543.3088831808925,88.34947445797712,-13.051385262200515,13.506076856352376,95.43662272112503,3525509.35 +1349.7156432152856,20.233250262509483,-13.038470715401944,-3.021153699256698,67.87972402012382,914172.26 +1331.2579343688526,64.24912506662852,-18.255724962449072,-11.847980095522429,17.538977745214613,263731.41 +957.8988433922816,85.98159438225044,-13.712598466754695,11.163975814346792,33.35851530443359,327094.03 +362.3095576810841,13.666534835125995,-10.393070814813248,4.331351248050859,8.493752983505908,39849.53 +980.073049626935,99.85795977060174,-17.09925683602173,-12.1168621262692,11.939145080526057,767507.87 +834.9407693449281,34.24994027845196,-5.7723618037951985,1.3098419247457116,49.69165517876917,232405.22 +1496.8264751407096,11.159098528882916,7.006651809822588,7.780849497210611,74.11841089246683,12707.84 +1242.2478947582931,20.412047410339344,11.722925109766017,-2.062666985173625,19.705318014560035,276676.81 +1084.818381206598,2.4464858861940844,-6.16734948566799,-7.904718189915134,32.68152400648389,77954.08 +1076.5677481489913,1.0521199190700063,-16.64700408150822,7.586747227247668,34.31857043252188,6.52 +1939.334397068754,3.262711661654118,10.374893046336332,7.490643423207648,84.1721444671875,121.53 +1561.329599066211,7.412107739709792,-4.352652465214755,-19.32250285756748,19.219528125134556,0.0 +1094.56320882823,2.858282654015746,-9.94289619783709,-10.634987639413058,4.369762055114094,123.95 +1062.6007032001596,10.667724615683404,-1.1723609821060954,5.852642234351131,62.760300755831025,163775.8 +247.66238234893424,20.69608905373052,18.794571042964,-11.034208633625164,53.15830400705187,5574362.84 +1896.516673975652,20.492158115917064,-5.0944065340818945,18.506194068877555,1.2682465033692818,0.0 +774.5131491811934,61.30965341635838,18.37812297546832,-13.488362534020526,76.7045237600237,4491016.57 +660.6903473853388,85.63241516290108,-9.873233612808283,9.928642450686688,42.96245004408409,647710.26 +1998.9360656978083,60.44912609713481,-15.778209599243995,19.932905075118732,55.23434804740413,0.0 +1493.641408708144,17.392015696321646,-13.712847879904304,-6.136861327416208,67.41051368228989,626178.6 +285.25479193871837,2.57945709905568,10.951269593686956,4.1250951582717255,6.083190464953616,10467.13 +311.3938586460376,77.07300966965083,1.5045246579557323,-15.771521208227398,18.081852456362185,434797.8 +245.90281512835617,2.237282314203592,3.276890015322418,4.8729396330220665,46.851048343655464,73206.4 +1279.3140191231644,2.008421052361975,18.708335874087517,19.500911197345204,18.01815216926286,0.0 +328.81610011151326,4.316568685389186,0.1934948207585884,18.914366771882364,12.541678867483014,1.57 +1880.099042320875,14.034958172649404,-15.319164442219758,-3.5288724121225634,33.17145759612614,472933.92 +1886.4317720408203,23.0645647762766,8.740609374399678,12.824818209174268,43.23948046682914,0.03 +1182.8973201465435,1.063127506039575,-11.68594543721428,13.063988089072872,85.13722692936453,0.0 +1309.9500765127116,35.978623476008266,3.261520592096745,-6.909335108406065,59.8988476375684,491453.96 +725.4099227454496,2.238922692706109,14.1751506184798,12.909905448823306,93.01029955433484,0.0 +315.150576334892,3.917145496146457,-0.9167569826960786,-13.50381675058232,46.26245921635881,8884.98 +1527.428801345268,4.407308505543219,-7.428595963936209,19.155167860797736,47.76936095252963,0.0 +383.2147797482314,4.62266048812941,3.021863488281733,14.566802824085588,31.833479956503503,117.38 +354.0037538331076,33.16921584152331,-14.92194834871544,0.4237298048602556,9.07456129312386,823448.65 +760.2015965676028,1.2075044068435117,-7.697437748889651,-4.5871177225015325,18.028793113925396,233716.67 +222.4381877081877,2.4719269749363053,0.1657114744150689,17.837945296280914,7.703090752959319,10.08 +981.2641083613688,1.1082518432810624,-9.833953455150436,-17.154954981634273,70.64146452340206,0.0 +1473.825638144138,36.02457893988915,-18.429675139106823,-0.0644172638586582,35.55107075228736,377117.41 +1642.42807655949,92.77792960084189,3.40563917687434,-0.5221239822947954,4.120199084183933,58193.49 +1287.7531468380582,20.84943634585651,-3.950105407548716,-4.747012085836255,75.46771876828969,1133755.49 +1724.3735656050426,15.145316792361667,-4.37558962260681,-15.494896828405844,26.22932417929225,0.02 +931.7039667807986,65.48358187340487,19.872511835919,-9.944747326588242,89.45861844846232,15153576.05 +1727.789753108858,3.235250944952873,-15.528638724521604,19.324729766619548,82.4852658149664,0.0 +1111.6519588970827,1.358077675716262,-13.832974487751608,12.318055540999978,31.072178225779343,0.0 +601.4650303969315,10.46983433708444,15.050472699378265,13.531326282029887,24.335944497378968,679.26 +1899.4621639888387,3.316632914164464,-14.789533637838089,0.3812638067971452,99.31492944855329,2370514.24 +694.9475729068097,7.982946695389431,16.704913283244693,6.473017242752679,82.14496935214508,45509.49 +247.1626715380276,8.177107385896248,6.878434451368354,0.2002372293830001,92.73584675630111,262829.7 +636.8132773190484,4.341738354996598,1.126516196954519,7.094376191120295,2.686673429220609,1868.01 +860.03761026337,9.38964478864562,-8.863972738821149,14.538736973195997,60.234688491991214,0.49 +832.4294299206754,5.758425614071352,-5.621060717146453,-10.296211857766618,27.39757442661557,17142.41 +1144.401516998429,1.6831339246454535,13.038182796537203,18.035730852673005,38.098296761271186,0.0 +1789.6283876646623,54.13166865689179,-17.69981806992277,16.544472669422078,10.016465757818056,5.48 +726.2088087974585,25.26663629440787,10.741944280250165,-3.2283482313694067,75.08819500904448,315061.19 +1137.387094326504,1.2095330227596324,13.11282741428299,19.07256863208788,53.03876074442544,0.0 +812.2501166392628,1.7044052000606424,8.238676355346147,15.300965919163495,79.41027785447325,0.0 +1679.1915068717608,1.5596564350115574,-17.81981341039293,-18.39690421678768,12.532136773140676,0.0 +483.6827239192611,1.328884065929225,9.706196814586963,-18.3154333240132,99.7300400435674,0.0 +386.3184829581053,1.312543034821409,8.92655596424644,8.291383167206522,35.50706270028572,4011.78 +1105.391455827683,2.0616961782187873,-19.476244958683132,11.346878730584194,95.19290309696676,1.63 +1409.3976543778854,49.62937626271678,15.691334611515684,-10.052523211558595,67.9691647518668,100423.98 +1631.9453619633798,45.33844203623648,-14.71216698693123,-0.0505340456962422,11.77456281489932,114202.96 +1261.3247352295696,36.83773764499975,18.43128688088192,1.5699366610147747,78.41692138780286,1903651.9 +1592.9295703742011,16.95949878310885,-17.169176756232403,-2.1761695746974885,56.50567940202538,280327.92 +906.8781054096628,27.988982231755937,-10.478022845761936,-17.235102832641168,19.681606339388285,272.89 +259.16180647964416,29.989030208454743,7.609687652786108,-11.244155915573293,19.536437044662673,451261.74 +408.97875422280174,60.065589071336994,-14.510347420924422,12.58042956579882,95.36231909253937,4935698.25 +269.7006822121931,29.15318840309077,-12.601297720763958,-17.07652461298602,99.85773496656756,2846998.57 +792.0985708576868,29.71109213046939,-19.553134253717687,4.8856260849635635,58.03545633409883,7040539.98 +1091.8844142836283,40.566014861676535,13.05920303213136,5.366327998595373,19.528183896813868,45143.93 +841.3714705824909,12.963125090049964,-18.49530797083142,18.2596053073474,34.68561852405195,5.08 +1209.079055119506,2.6672122682065553,5.302920629099814,19.49804959258019,21.98386263645251,0.0 +1065.0964672870175,1.4759952339628295,3.292293129156576,17.80170103766636,61.141616679498014,0.0 +1420.2970433550925,6.887904558987501,0.4496104221517294,1.652857411119628,40.62751303636853,1141031.68 +1400.531894414131,1.525356451951017,-4.993691006615006,-18.328971111468793,38.428740756835055,0.0 +772.5154647956231,2.1807609564435126,-8.01749742178361,-8.907975522395049,80.34038786276069,85247.18 +823.1860196499647,1.116040676087488,18.277900990444344,-0.9801782591677188,96.39326133630786,117637.19 +1253.266078954346,3.984855541926005,11.41433101592758,-18.435206309855285,20.50555530614941,0.0 +1273.5784422035154,87.09548557947002,16.909303946635927,-18.516106707754695,42.02795477471268,40545.11 +766.4598445468396,5.726147691115272,9.355918110378909,-7.039077771035975,54.116461329094435,288580.43 +794.5721943957653,3.0323910914629426,13.160356847520704,-4.506211036736505,25.34138674139473,219082.81 +1449.2810237350648,6.410604060304142,18.567016874757677,3.23377484863014,40.78810584241637,43810.73 +1365.3394811769251,4.005687271406371,-1.8542177354690637,17.314305980670717,6.523878251257983,0.0 +443.0914484235944,22.271714248199004,16.275850936848588,-4.35292269686145,5.08092174574792,379968.96 +993.875383415708,18.57520101762762,-18.277033492400264,-18.076376864574115,78.84969535281921,134.76 +1806.8709416790623,1.134190004413305,-15.68511459016317,1.6017449344440715,34.57026659921031,521270.94 +265.35021698805537,10.5352855578958,-0.3850265941858266,-5.681502088916419,71.03503921050407,84538.96 +1739.295103671585,1.1814065526934467,-1.841069978879908,16.04414304270057,9.2084838425275,0.0 +493.7206827154585,22.632187519916172,-2.471476798431236,-2.740077242271614,67.39602064025601,158288.54 +1113.0475384310887,74.40749113017316,1.4876660710155143,-7.128103178612859,65.68363449727481,274765.64 +963.8055720614208,65.30940955759031,1.534911713559377,8.955210268024679,82.32403531342344,74688.68 +218.2328072146259,2.57883896865327,14.822589532105104,-0.2698820754377617,21.2561406668964,151472.74 +1847.7144867613376,30.569637966296895,-6.163487492853106,2.203963193112477,55.56060923232304,1373704.74 +1018.86540920175,38.55954868156954,-7.350361772257692,-13.9173033821334,90.2171113073724,25575.96 +1917.682898169107,53.54699037738709,8.075809571809991,-4.9922917085120355,22.76842974442387,502848.57 +716.1390217625922,3.3051969369000633,5.939077506402639,-18.143037593855432,13.361604751082318,0.0 +1759.2963921487503,7.973879932529429,13.19387936093328,10.195151983001844,35.13174524385123,0.02 +1860.301233192135,2.77337667116143,-7.628874922210374,-10.176733488030225,96.56926070108727,88.77 +1202.2983494674052,1.118456027751021,-19.74423134985253,-15.179369565708182,16.581677643907867,0.0 +564.8200181618915,20.79817632193458,17.762547363436703,3.580481231563848,12.814120588282808,898235.29 +1433.445377790296,7.29335302954923,-18.23098425045968,3.177186188861656,99.77697243527275,143196.15 +1188.1605197530282,3.1349726846345947,7.20051773441865,-7.368097219961012,39.92247974371025,186498.9 +1900.1533985347264,49.45473676880723,-7.126720328568883,18.49404711771693,15.775631330672214,0.0 +990.6897112588852,9.803051404362453,-3.058677784363475,5.42085242312222,56.30333252007353,187272.71 +683.3245657516796,97.56978644328451,13.521311096370594,17.055755465620535,2.37188935231197,36754.87 +448.9166026893928,38.61140933564324,-3.216820490458976,-7.976172667661032,43.13192133497646,100828.69 +1457.540423636023,54.75482553020947,-14.225138875865774,2.072122371102072,4.585654863903951,28523.95 +1953.397314165048,35.20987616169028,10.177403397415592,-3.4591708455784387,56.96851860446069,1708167.02 +251.01878702851727,1.6287326329663474,-19.191539317598412,-3.4686659281814824,62.85223601513433,1378579.56 +1532.8016386006282,1.3491430525890566,-9.010680462644189,-18.08930712165696,1.3492414172380038,0.0 +1868.4746526074,67.63282766182735,1.522944475664314,-11.214544492241178,51.757814951218585,88786.23 +334.60676160922884,1.8897065834133913,-2.489452179414391,14.773017968992752,94.55044253222248,5.4 +398.30608119103965,6.059716428830468,4.809133560526084,13.994212053947228,40.410828292180966,547.59 +1445.5227772094756,16.589069365606495,-4.746092291447619,-15.796079604582667,95.4957810456922,3.19 +1366.334076612419,2.6533631894462624,-4.376611508154151,-19.27407809227732,96.38364010123756,0.0 +323.88934756924226,2.8220849807340223,-6.0537095958347376,-15.918169214357096,24.784736053282835,328.56 +1701.9609538720815,8.560175814290158,15.490818757315417,5.552056023981633,58.160506856796296,91621.54 +1142.1629261208063,5.269752067654457,-19.30813955623328,-10.407083770612171,83.20093028260995,1144.31 +1832.9552720059023,22.550248601047382,17.58567869367202,10.50496848283894,71.20657286094372,116.0 +1780.3835857868678,1.4130332816098377,-5.671132991930903,-19.766834209483815,76.25278339450227,0.0 +1662.5139842902984,9.495489086356196,-5.40468977238771,8.630903410845283,26.83195337946279,177.69 +1128.6180132399584,2.2311041058547385,9.03571392199268,15.455630986679436,91.9031399110706,0.0 +653.0791551489781,16.347450010897738,-4.468930450965574,-18.20774102094252,24.328770195906515,204.12 +1110.755907040039,1.7077590029409426,4.665792884049087,14.695797543972631,64.8359542791056,0.0 +381.46048004320414,2.484641490048227,16.145227163445647,16.714752453532704,88.58645794842855,2.72 +1385.9230672521671,40.530127102040275,13.847921901038776,1.4336060013559626,36.5899233982489,274687.49 +441.15899461221375,2.953479631217516,0.6146671043671192,-8.618851299096718,55.661199614214475,103136.17 +1120.1113325013016,29.794127887478055,8.666085116501584,2.51256596293433,69.36074611870555,537925.81 +297.887553500272,3.5166196570794206,-4.3026101957843155,-7.576532895499533,92.92028142045989,175373.24 +739.1224824943625,2.951583069044998,11.04176627323412,17.328396649057076,45.355626515626376,0.0 +617.7448292056181,3.965606025322649,-13.192662530015426,1.745269859016516,60.71717577398593,355300.72 +1316.056776881007,57.79150026043012,-18.174728742576963,11.948177374865718,15.03761623781799,65146.25 +1616.2160816405158,6.227752126198436,1.6293070367503093,4.398808216223777,7.457056168979523,103064.98 +303.14531817294704,3.072706363048286,-11.3864526077413,-8.463710127335542,3.122019319216651,3907.23 +1730.5106332796915,11.838016675312502,9.149037714526504,0.0051890573938795,48.18180771145332,1829893.8 +1749.381850918288,5.9058555924676055,-15.947059652188075,15.195653255646544,55.02619167276588,0.0 +816.084333718441,38.0535378550896,-19.66019447325663,-4.685081985378727,9.549369518016883,1966013.06 +1386.20731874658,95.6954384570885,7.028133989674363,-6.346726553473601,18.928569980144474,121047.89 +924.7034570662092,11.301832990001548,0.0319775167266644,18.257218706474617,27.363794686729634,0.0 +477.54358794133674,8.007515634840876,18.080616273207344,-6.637561097766693,89.2361962076807,1657561.75 +1151.5923534135986,4.853676160413966,-10.100575685456173,14.380043068618576,10.8267705441035,0.0 +355.44741410287395,88.44585091773156,-15.069755299975531,-12.868771193778176,49.47936622719193,3416087.41 +1781.2498797127782,9.259052615134625,-19.07575272726563,11.6689984830966,79.11766530552698,6.34 +1863.7215669372952,2.269832028674882,-2.23010604218449,4.612066013771776,87.14715770941588,1572213.32 +1678.9036466205264,86.78243081931831,-15.967324584163558,-15.192136850442989,69.62040830332387,18039.1 +1212.5506173607614,83.51495510729059,11.025737533184202,-17.442193376135226,27.28964128756652,2805.54 +1203.6774640258188,7.437896053179198,-17.120568224575972,-8.067708219272212,13.020426323899857,9439.71 +1972.2932778816737,4.970178954477548,16.830192418013254,6.298240432701849,16.631922141942216,2398.66 +646.2230416961291,22.95487294945787,1.6341569296824687,-5.59545091795532,77.25724299526351,264899.52 +336.7070586293735,45.48291193464671,7.854877957740327,-9.15390570659666,30.356788111527244,782495.26 +1211.49366248212,9.932630152782414,-14.763315767809011,3.2745612028914595,34.4493291120822,206172.42 +791.814076058186,4.5880271806214115,-16.419786968614076,18.102191395059258,18.376860146452028,0.0 +780.2097910544796,4.006711031220842,-5.852648939311624,-15.12589071640711,44.02987476223081,1.13 +212.75363750590648,4.4998439632848335,0.8173815708456367,5.783252471989746,34.11965872031288,29272.72 +1273.230937186279,1.722129793427284,3.0200780531851157,16.49608617832279,36.34466929802518,0.0 +675.2606640961053,36.07786861926399,-6.8084616684121935,1.6440183829298416,4.345233388991158,12278.61 +538.1453867468258,1.6215103572645584,-9.09350819262647,18.567451202610677,46.79436746848967,0.0 +272.7774765074067,6.26078788061975,19.25642169297998,3.915783181090373,12.077229825943636,1468430.03 +855.8508376561003,46.76131054155656,-9.093523202240467,6.904081618667517,54.03201541649947,79844.52 +1782.1439702956234,6.4300121178146705,-14.483003668616773,11.651201144188883,67.24918301397955,0.0 +806.0074536752702,3.886186115961488,-5.621613424533125,-12.011056725150691,55.064547171247725,1545.58 +1422.3335782152683,78.79659439647051,-7.845147424760137,2.4076842278543564,15.500549089858628,120259.71 +1561.784534123433,1.7909666839750509,-3.1305919597680365,4.570537156136982,62.03302700402973,921645.08 +790.5814565423592,58.84476130919598,4.948549454913684,-15.194093399453106,41.86703673640087,16253.68 +1678.9533230216744,1.3309250446778904,4.125917329972242,-1.7795280716715611,36.579911322425,1796685.22 +1445.3833874005084,6.715198049238891,7.931595416607431,10.827134830630683,15.728863194857066,0.01 +1206.6360116617127,18.34180664888028,-13.73259717543672,-18.371750683888713,99.4387544795646,0.24 +201.78643529113205,5.496380223136412,-18.16222544024087,-3.46031970946981,39.87455789016975,4702869.66 +263.16337866105465,11.727699836297546,11.632391989138142,-14.171294246749229,46.18068923960798,382930.0 +1983.5585193909144,2.558605523916867,-11.3138944156952,-12.970056098105449,10.343854387385718,0.0 +1608.111062306407,13.742604084491155,-7.373399844413151,0.5029805838021906,67.87183821384018,2142319.37 +1887.6174657913048,1.8583068757816577,-1.7728114236344703,-18.82072724619287,28.983196196277664,0.0 +1824.1457688524497,39.1014292499601,8.65225473375887,-3.001731152489082,74.27634558405958,2009869.05 +236.7973696569515,14.708887519634184,-13.45662279735988,-18.97179355377154,7.645584375559213,107858.87 +1625.325121623933,9.20161863193951,16.096090599371173,17.022404164271002,30.386896631996837,0.0 +1012.0623392200782,1.2862742977079311,-7.138906632338546,15.318158687979718,74.81981742101023,0.0 +1621.2047672011802,9.98961318295305,19.306507713562706,-11.534470946363978,40.20472935688324,126.03 +212.0884114940933,13.401051023008042,-8.583497480455007,-17.367825271850084,4.39427487166916,34776.29 +718.7587421610157,3.398873700313734,9.026120630063218,-9.974573764717544,79.16469407581093,46643.69 +1552.382796424344,22.655866754853935,-4.933235519913235,-18.86432358374008,96.59415132883092,0.0 +1627.4374194828615,1.424066589489546,13.463509434956777,9.391551855293844,38.2748787980463,0.0 +1315.486282186323,2.6144368903444217,-1.5037363030560602,2.955777204339336,62.53790351061865,1509225.6 +742.2611410032748,29.860497190763972,14.821275437871622,1.7535825004210492,37.89245151163823,462858.77 +758.6526643181533,1.9699011686887613,10.157545006860367,14.078888750053498,55.943268969220135,0.0 +1940.1751345556588,3.0981157475810406,3.4411438322560306,12.372498350990028,74.11779422691517,0.0 +990.5819226215682,20.03137197945105,-10.000402813687575,-3.6447368612815634,63.65834055290251,595325.54 +1004.8259904389068,28.68688600442041,-9.605291237563591,4.4134756809182685,32.15635202606199,123738.72 +1194.1989504332591,1.2675891385600957,19.656883661347106,-2.327682670262221,20.323666391369635,6516.95 +937.1042063558998,1.791343311527808,17.015519878663305,4.960387987610764,54.88908762132584,43668.4 +1194.8088162753454,7.802540142241855,-14.463264409717404,-13.939005812996252,66.29029274617992,8.17 +978.2037609816042,15.33168506597592,-11.83741935683306,-7.9967905497332925,57.87513147371555,202469.52 +1688.086855283936,8.08281183494205,-15.727424550358911,-9.924656328169746,13.685939538390349,1624.59 +1836.2918356369112,19.685206983913115,-11.946488059250328,-13.301319443911424,36.149579527248456,98.73 +1877.798467667651,32.50766780382529,-8.390496871241648,-3.4464764716357488,74.72021783129937,2250001.87 +1215.733170492896,79.26613726564892,13.505077271008412,9.059975907276034,15.52811134554204,42110.35 +995.8674034360916,5.009119888746663,-16.192709960285452,-4.157733086288271,88.45476927659575,370944.55 +1469.4321058253083,2.1193834419356663,15.284822640104975,19.305425573054585,47.18673876050467,0.0 +1708.982464332632,3.374178148598537,18.877205257078003,-7.916372894747079,79.32508122681642,4707.69 +1213.368035719479,1.9784673612171424,-8.730397263474426,17.92519128171019,34.739756738314526,0.0 +1459.9658392800704,6.144566997700708,-1.7506461703159637,-12.257852585178291,36.56234446080184,23.69 +1549.5128312982465,55.6076486920561,1.1731349449613535,-7.169016556375771,96.7358102538758,881372.95 +1417.5087980911162,4.944470542894462,-11.772426685706437,-13.43674124072713,57.16765693989832,0.04 +1543.0404003127571,1.9844739596267504,9.263055157469935,-10.483593974464904,11.0887689955881,2.19 +575.5615986007971,11.09853776224027,3.1999519835587087,-13.71553718312622,95.80891811807096,17610.95 +1097.0741846392357,96.35796806960914,-15.51290579962087,4.993092447400365,38.11021074417695,1905900.52 +1258.883398289157,2.378824689517235,15.839292505240694,-11.975393980422684,71.31215278881075,0.18 +204.4602755426415,35.95422265060752,-7.912292316427436,-16.594713916358195,13.727606351594558,402549.78 +1740.7325158646274,44.33205742778197,-13.750107329144893,-9.343170846893033,85.67695043840384,230012.88 +1298.0441152008418,6.348581321358301,19.274176065616135,7.136002728535518,95.94820376612849,7858.91 +432.4453970567659,17.342147564901225,-15.883640119532108,-2.854747938312392,38.90198631632395,1986110.02 +1669.442730636489,7.323975814726399,-17.61213261446518,-13.753676624350485,15.326964235231582,0.0 +1490.7025395929802,3.346985825171332,-10.497879726793824,-17.461992441781682,56.20702202735497,0.0 +1564.9391782345467,7.116027211484208,-7.229403304126025,9.174188257303577,17.016932738343897,6.0 +905.6764313513412,1.550887420149414,-2.647893353971935,8.164386528028826,44.7718227422203,88.58 +1737.5645120509855,25.936551209136727,7.406808722180442,-1.5390114755675732,62.643083312903464,1916009.08 +945.249647838252,45.53926986543574,-5.3714646308038505,1.1099596684993962,14.790580002819578,76634.66 +1226.9164753020643,4.119076584778626,2.3733444281191884,-10.380285579557938,94.85384853380693,8740.37 +201.1561466597727,13.581684846878275,-19.76754297479882,-0.586526876449911,70.85331190515102,11327324.15 +1360.771606420152,2.912708774250625,-4.604012725912301,9.144264573677368,36.76674641256835,0.08 +1492.716425830286,1.7985433099749977,17.798747016939252,10.861304694339069,42.15308809986111,0.0 +1220.796857879826,21.244040966173777,10.99386822660068,-6.380205144779372,84.96369902106333,723486.91 +1093.8058706785089,1.854450276338755,9.632022764661388,7.15402223395988,48.124418249223446,2519.33 +1657.8856526810748,36.64022554807151,-7.819360940159186,-0.5406230668909773,98.72098229857647,2331164.72 +1426.4708908974353,3.4954983181213555,-0.4729530730256304,9.573432536425392,7.155253164343145,0.0 +700.5332714960414,43.353761688705944,13.780940091520364,7.631226092297516,27.8623547827764,374201.63 +1926.3320085439743,5.457693580636479,15.206226790380196,10.014267955806888,52.32625748349193,0.0 +1473.0809495516137,5.46619581451866,8.421721171645181,-13.404664959396255,14.448639478063749,0.02 +1978.2900720423645,31.706296846996697,-1.7383427572296828,-7.115117040381143,36.26656353179645,564131.13 +1948.270369283963,10.484109525035391,-17.073398190202774,-9.400650235004653,52.47778220485356,8716.2 +1854.0375010581615,2.5232184571057714,-15.225867657913971,-2.117245835488073,26.838114172735875,548288.68 +1559.6687742055535,50.21310715914621,-19.988283127003488,-1.403501608455726,17.2961235997827,1919842.19 +1296.9728632945412,4.78967911149043,-5.6320092198826455,6.692287942166528,27.56620683013795,14899.36 +509.9071946292636,1.60529007899124,-19.06464146001612,2.7842853605743567,9.174607555064338,4499.94 +1178.0325513627638,6.792069009853147,-2.5991283709284385,3.194994920101415,20.397547056811657,295861.61 +1577.6777403097892,14.05799959080607,3.90166492869767,5.319393598920774,7.040506010790978,39530.68 +1137.542885670022,16.5871078275247,3.835205615130861,-9.084411770055226,95.30059074482368,281706.6 +1762.830431130184,46.9046274253548,2.2119007280379455,-10.954735208411751,16.940396124091038,25950.41 +397.3806185450569,12.100787866589458,-10.953165567103715,-11.3924578354876,1.1255439237285962,1347.05 +885.6926264875414,2.8016957165208733,0.7675560675592497,11.177929542347904,95.78092457368008,0.03 +1110.7359534685831,3.3368190901587056,19.193437216681858,-16.109531627920664,76.09961698709873,0.0 +978.1855325643944,1.5910402868498734,-2.215288518970202,-7.356291766493741,27.435083057199027,84241.69 +395.45578607879554,29.637978487778923,14.97966745380106,-8.78908106509044,88.01288535273213,5184735.62 +476.350929280335,1.6288575042094966,-4.743782353522272,3.67703015911538,87.29087682264095,469829.6 +1707.711127139877,16.278907841919505,4.9217775125882435,16.967663382124506,74.3584177661958,0.0 +1071.8916665626118,15.627690013472876,-0.7264437368196042,15.143786017746253,59.63008067323729,0.26 +287.70036815490977,37.239780625825986,7.544899054466758,-15.78450714190657,58.88687696791494,1033228.89 +229.68426615976983,1.410130802729333,15.895113584356563,1.6084091136258838,96.92134983251457,199463.47 +1052.2557235897875,2.545790649503132,-2.3639700317368906,-18.51210439905119,47.04963674034999,0.0 +495.8817066639986,65.93632746318474,10.295978330385518,11.696246937920453,81.047762864955,1702228.55 +1469.2267027985993,13.946770643279168,15.301585994751328,-5.01127170779383,12.136626107779929,94809.23 +1631.5822325499523,8.229632202474525,11.581781848396004,-11.405408557670867,70.38194556824433,971.93 +610.93407522279,31.286179373734353,-19.0177600449683,-0.6359231443432201,98.96694906012398,19968597.35 +1265.9185007872054,63.83529977177005,-19.99241385927023,-2.595867087933934,1.9878286682269788,549691.39 +478.0003582736948,3.357525145393256,15.318387065929628,17.725134086212954,26.532280546978853,0.01 +746.4487728698966,63.52596304570516,9.172536494071156,-18.67253148841555,78.70964802408666,40603.85 +1799.83188952658,1.6496402786750477,18.325281286816384,17.999366167866228,73.64733579718128,0.0 +1179.3765646681595,90.23314517893417,-8.300704238601227,-10.62515024651316,73.68537977290765,138612.48 +1794.5996512595602,2.13650370459274,11.518730108604991,-14.198713543610753,98.26391180121468,0.0 +605.4460475231125,3.407789317633855,12.060883084705472,9.672952302657537,10.489666929777654,170.71 +794.0438178475988,1.5602273269630005,14.29305958990752,0.9030771706680608,67.83429598927404,654689.96 +1047.7138492222707,40.49048825764818,7.681116548059799,15.825896306501509,64.47749020918073,219.24 +1064.144135350177,92.99596900744616,-14.467680303309134,1.7054840210600375,21.370400878075117,857298.02 +1995.7663409306608,3.926024605693456,7.237709580970413,0.2187044572857388,22.079602506731668,1237522.12 +406.00157414803414,4.4794420320076345,4.179347793509676,-11.753524856526075,65.37100882727484,26124.93 +1733.5370640828633,3.613764162989802,-6.653116299383828,17.990951494846552,65.79742742109985,0.0 +1754.6276709593662,2.040122287807047,-11.655460330641391,6.579608733500049,60.407057978366275,5447.26 +1195.7575367680172,37.57408672873247,15.40399777254128,4.062748854714631,46.72738169313163,154566.57 +819.2669028664768,1.3226339921159065,-14.322140201592411,11.602229933536243,69.03290541696352,0.0 +1134.6069877189332,86.20813721245325,-3.112084132241706,-15.949160523854196,32.867063730872374,8693.62 +726.4418686518148,71.55352753561948,4.91194090822884,14.656537858713628,24.344458327992463,10417.0 +1638.3934071918911,1.725353823300111,18.87185725662055,0.0193084332845394,59.9468187162866,67400.36 +1096.9024856785943,11.45638770218279,6.839054096446233,12.088522350671536,62.11079613904701,13.69 +1866.5159219794111,96.7615278722834,-7.804872043139053,8.505232812717068,81.41365363058621,101210.08 +1320.8444198408788,50.72692048513305,-17.573522626693684,-1.9496035954834756,42.19138942405528,1051935.04 +1125.77479960643,26.931928444353883,-7.291875086130983,10.788392955195762,76.64813823927989,5815.4 +1479.924837159774,1.1089753449032442,-8.288537627454208,8.827645635677221,91.8534489043373,0.0 +1107.0793359744216,1.3701082794392014,12.763179272549689,-19.851124685374252,43.14055388542561,0.0 +1828.111430755005,38.7288139268768,-4.936617819259919,8.369897527875265,54.715337613849826,24723.68 +532.0027295963143,5.660955075242875,-16.062066684646826,0.351547942850634,91.11595596720572,221515.66 +1952.0276307426304,21.720196748746528,14.79909850769619,13.578834211319254,30.72476158721722,0.0 +1661.9429933321458,30.085917071475716,-19.277829328675725,12.385778445206208,72.54301674103233,3175.89 +1749.3200513567654,6.988248742724665,-19.879624178866237,-13.174059439197826,58.14482728339304,0.62 +1069.2340982679282,1.935367756654197,-1.0098702607353127,-19.129653294864497,41.985907646115336,0.0 +1706.9627888076752,5.9345665744931635,-17.231188400360743,-12.146982869549046,86.555539382302,0.9 +752.1933504389692,55.22006132819422,-12.915924159058251,9.645010847982087,16.51609178568363,145886.43 +1571.5067214155154,4.5937944430176065,19.41138328487444,14.854055553110609,4.504660891624755,0.0 +452.8102851002408,1.334439488926982,13.7746001197129,8.022960650574271,21.5070943845384,1379.32 +752.6934487325157,82.84433847227665,10.561507037269063,12.823507810417638,87.75064949139359,547836.69 +1002.3187940475192,22.980200732931912,6.831722127888056,3.4896350545914645,35.016419653411205,206908.49 +780.1754926581593,12.070173251655218,-18.087382039222348,0.2608270695989612,68.71288358524278,484548.17 +896.6308081235305,45.5213038981999,13.436348473082688,18.814560944231985,23.853104140255464,752.23 +1676.1885406106564,6.642343888282092,-1.1524668221290346,-16.77639365966921,49.59844103269885,0.0 +662.0166058559016,93.37520924152663,-16.067201044199372,-3.145829267199738,52.762800916055326,8051185.66 +1541.50610987823,51.89746429672973,-7.969959553999262,-8.877710691645419,25.292106740514804,125456.06 +332.68172440097334,3.639900259765477,0.0787247913818101,-15.117961027209228,39.35291764546036,1909.62 +1578.3303935271094,5.5219945586978545,-19.452216103152857,4.223079903926865,26.915380205285445,10526.19 +1625.6418370935914,3.5602945411610083,-9.90322107794464,-9.469984919056046,10.966830497935774,1407.26 +923.0577959044676,20.82963624088935,-6.563054850529366,-1.4814181525137915,43.7336389662999,406380.38 +1500.4600817014468,18.996074411560556,-1.448346418616122,-14.536455672487026,56.79909030674646,75.08 +1847.2491267411783,11.092048172115966,-19.920735777046485,-4.400539557611447,9.915815981151797,9383.2 +1641.2833523981485,85.44383823850745,2.6177048072514664,-11.98980622859606,36.43141956858397,49744.63 +902.8037187145278,8.801376033426092,-12.094651565249116,15.87748330428225,46.80717736669441,0.0 +1071.584325704116,36.93556853982706,3.890021229943037,0.8958463709635822,93.32009475470802,765320.37 +1602.8435806144498,20.71048333062562,-10.433987715259743,11.981743402617608,61.42188895092231,5.12 +726.6702617284225,10.873513056421087,-3.891262336766838,-0.5709467065169616,94.28429357014215,797455.16 +1646.9889325559725,1.2139204128521697,4.945207969851184,-18.30462756206884,52.91391010118496,0.0 +790.5280566096941,20.65332825780707,6.262904257632798,7.78214239097172,80.52253597992208,76613.09 +1650.7830482939687,19.28369121217708,-18.77617227525242,-18.087062717730905,10.528926103427787,0.0 +356.240798031302,1.7772478158950706,1.4029819231689,-4.198382856372365,56.8773745780391,326563.11 +279.91513443906223,39.06878908495962,12.665666773032545,1.877574186358859,35.9405860613073,2351964.34 +1995.81580526568,8.589901165040317,-11.743078177822426,11.193132619662173,73.11458847822773,0.0 +1765.0228218224404,4.44930347494916,1.2795455098210915,15.943990664217951,87.88191828177648,0.0 +1789.125506239167,44.45481135959971,-2.0954143045253826,-11.807448757582527,71.51365116791399,46655.32 +1912.3039056919115,4.861182423872164,13.997396316264805,6.542885941838521,9.740069704870066,2303.25 +988.9693569460782,17.526757691992618,-2.449477014423191,-1.1908510575693887,62.48445529474933,737321.43 +716.3039984242739,17.211931258366917,17.753620418425896,10.700628346936046,74.6661008833516,266633.43 +434.04499103222537,1.2752988414382984,6.097137241651325,17.593750093222148,3.954307072424627,0.0 +1102.1764403692362,7.009180775919159,2.4553288552261865,1.3186845650360013,17.803075540765924,334724.42 +596.0869768578941,2.7896999835079024,-8.323218360912922,-8.529159405583426,68.34840647303956,138846.85 +1883.9915421307755,2.5069248989472053,3.861024579332626,11.940367890373029,32.1766084601791,0.0 +207.20569239700237,20.413796319987608,-14.750143101277695,1.0694352210137437,7.156198508615388,557894.99 +457.7541279376189,1.0539499572606958,-3.350236181372699,15.291135810314724,89.05256596121258,0.0 +643.6565355501682,86.72772541804395,-8.622882168609856,2.6429255774423988,95.26535725033644,1941855.48 +558.1220808677512,6.177062733606135,6.811060138846057,17.48491814423317,37.97378288443487,0.07 +606.4011858434785,3.959196500096392,10.559839261170136,-19.298535247906273,99.29478313294906,0.0 +1380.8856891101211,69.1749413943612,17.145154191408572,9.558353170838366,85.8013461040745,669340.09 +789.5217409636685,9.40468565656245,-11.115969168759031,-6.138481666319575,56.02990151525478,322888.21 +1307.043887426072,16.929748362723583,15.39002793069459,6.744814964724077,74.97639991984084,43346.54 +1802.4642805633243,24.643449418974033,13.83805940756857,17.693870746956843,93.68800756634542,0.0 +1284.6021779462635,55.31240561573867,14.49726299811453,6.156447086478631,73.0047301504857,182065.34 +1450.1590243154867,1.817540008978326,9.61903446138824,9.799415039151054,34.41089584092549,0.0 +857.9059367984431,1.4564861466074703,-9.291142256910035,-13.677981974551445,20.109361916712768,0.0 +487.5292417208765,97.14524964530078,15.114887000501284,-13.179278125692058,43.743480727335054,3323825.32 +777.051312409831,1.04175982069249,3.9819384821168136,2.937055457861595,19.480006917021615,277158.31 +1935.7087676673943,26.08491988648184,9.624468153709334,-2.7758210708741693,3.130828714890084,109696.0 +1319.2604920156468,16.677491344051703,-11.789705760278842,-15.553978240924362,46.13856885027432,10.64 +699.5200149812273,12.738023431103032,-13.703578579439007,9.13341398022594,33.59629147102476,7579.89 +1011.6474808917868,37.2954557299658,-8.925934597011004,7.958264266081776,10.432758956695483,10457.95 +1703.92346737579,96.59305351502933,0.4548310710281944,-16.33696880952444,87.27464202128182,6066.43 +1403.1984272703924,1.2409996042041156,-3.3349961552109386,-18.053728520662887,13.171694099390502,0.0 +1209.1751133125028,16.94575742524815,15.504321441547216,-4.847467119057773,63.40942572147965,333034.11 +1793.293177940914,27.13659400074922,-19.479259873897917,5.317367661574037,57.36226031024971,153193.9 +1410.3912299902224,4.091462851494916,-16.798064282162066,15.742700721792096,97.92007553551382,0.0 +1356.9135154239718,61.055215693831926,-6.983605588092692,-2.619777075300082,26.130057537801573,298404.53 +541.5826469793826,8.203245007857166,-13.290710702152806,-16.635880514949477,24.314720280920795,155.53 +391.499629422334,2.132833354642211,-3.7299753523944057,13.618642192712445,63.09273630874472,7.4 +1937.2558107033185,51.14646609770134,8.703724019405934,-15.00400578620818,56.26726219721878,605.84 +1277.945066180635,76.88670346880228,19.736714872042175,5.495651610396095,81.3690769016825,15589260.85 +948.2301364635724,1.5813566773150736,-11.91701011101497,-3.461864256479368,18.133513479682453,305210.89 +1260.2374776383915,31.868508211961903,-9.361014616782125,16.382805343144057,30.76115775606734,0.62 +311.2615299290877,2.691711055906762,10.74954598195399,8.196436428308855,1.4953168335833595,534.17 +1679.8290930273922,1.031441105985501,-9.118011707989249,-19.99429615804729,72.43668135766708,0.0 +589.9619640158047,3.320684735210935,8.149998909502973,-5.089522455578397,33.22119010669179,255347.27 +1648.1828113723047,51.2648475762845,3.339561931295223,-12.787636886945592,24.37282843792574,9602.83 +1161.881197874499,1.915877572580676,14.19576395322851,-8.658739936790806,60.88826503654479,18536.59 +697.8296245824249,1.825314761505882,-18.666529004147463,-4.041769531067909,25.918694118691192,16720.03 +254.37790683572683,30.067367956254184,19.189878398480268,1.6554040479245111,6.618247740476181,908575.51 +1668.5000395878903,6.497095899080961,18.57002678284043,11.935267388190717,24.38923777914751,0.08 +517.628254644752,1.9813999380099632,-19.104488212842988,-16.542870598104123,85.1223552326555,0.16 +293.2492081517722,2.884036503362299,-0.0196231328785945,-2.35586530494111,59.941177276423346,232830.73 +1560.5799154865856,38.833259951404315,-3.942955801232917,14.02872873532759,47.64517844047048,11.87 +830.0778002713619,17.641584129956073,-9.833473951852897,-2.7127905301007793,49.64973536118044,368602.71 +900.80121006497,33.255045404657714,19.113036846773035,0.7718002233745258,99.69938491547956,11522482.77 +644.7216571052942,1.5687237727229184,-13.01598132749775,11.14423851059266,4.117601227343174,0.0 +1746.5212616544147,8.245339943752057,-9.457820307947015,8.515776941097544,16.960347918858417,51.94 +735.1931469917578,39.28371047277827,-19.671081055577968,0.3999095711801192,86.68519130387077,22509019.75 +578.346625551843,3.400834531519718,3.2089251252300244,18.68372285561787,53.94837836080719,0.0 +756.649507405081,2.1796057088954885,14.431945557332725,-18.551457941604713,99.51113320914668,0.0 +565.6692353013145,5.801867249427247,4.876517426139229,-17.819589678258097,68.70838377306994,13.54 +771.7793974493735,4.642585895786995,6.064289039747632,-2.90550059003285,72.6190929641081,940555.14 +349.2852011627115,2.3493382943198564,-17.347185217027544,-13.686027295882406,58.39690398768694,2544.77 +485.354052415025,80.88907157380433,8.592288764428865,-11.339665883723882,2.7177579586774785,70501.55 +950.695190113066,9.251173141189492,-3.639823248261438,-13.99669863224692,90.89299046278134,646.46 +1783.0403400617774,16.449500400529562,-1.0515014850880755,7.694757857895733,52.77732604984834,13496.42 +303.12334410011454,1.7466818903757122,3.4006227762890973,-3.1492596993040234,1.8962591483097428,9774.92 +582.8144721680552,16.59855096470999,19.014574553612313,13.3669893278134,21.779470599338698,164950.47 +1835.0222159748732,12.901653873092146,9.927330228697691,-9.984628475491313,35.687613527137586,24583.48 +1802.026413487859,73.09011674061018,7.35708359338251,4.937056022663557,29.332546646067193,206041.84 +1423.0114999326945,6.677802988266295,-2.7242786085873405,-11.462326856835473,3.748496927337036,58.34 +632.8523973714283,36.65423846468461,-18.621979338845644,-19.420632844877893,28.74343331331564,183362.94 +955.6590099004144,4.058466419863802,1.5473868946203373,7.556735270809125,89.73431188417933,14247.73 +580.197789988337,14.384034387829823,6.435249215069261,-14.179202741973246,59.2948950804708,11464.53 +431.45931642536584,71.43989284824413,8.167587388328585,7.7524262122735665,33.369750004413376,939639.97 +883.9971101250047,17.788634896622447,4.315243331009935,7.626857309018402,9.722958178428144,8960.85 +1236.4788891266303,26.443404448602685,-7.985318995919899,6.725760569396613,75.37816865376061,141449.54 +847.8788158366494,56.48967165354851,-11.158743932634309,3.6783907122609616,72.11727349899141,392230.11 +1299.4841908387457,70.93306509925014,-16.396239132073248,15.39689097172134,1.2344305996904683,530.95 +733.2585236827498,2.6094546307772912,8.113254915380397,-16.97453353716803,99.34764988801663,0.0 +822.5309499694225,2.4642006242629764,18.83143764974215,17.272760085761718,27.299934407461528,0.0 +1623.2124649602972,12.616888173412011,1.0008985924620273,-17.361225855483475,26.97770541146455,0.0 +1780.9665156089443,97.95638570953646,6.9273066146685425,-0.187065487809197,30.80229941123253,491181.23 +779.6613467558938,9.556627242405746,7.704100102488178,16.92931922048917,96.20999139808742,0.04 +1228.7284424214972,4.589970837100493,-13.542315767088516,-9.24282875231948,84.26961144091452,46594.04 +700.6921110060825,11.871963422219984,-12.32794324579885,13.516182468388568,64.09157473861424,226.64 +296.00235507336953,1.345214525786498,-11.67291078519221,3.727565644407425,49.93212645493798,129675.69 +1528.1429264487344,2.2615882577788855,17.313661348427225,14.447429724867806,33.37532565317645,0.0 +507.8062698250706,1.9853671634938952,-19.376797577748004,-18.05730529490422,34.17150420648937,0.0 +966.2825427444508,1.1371849152467934,1.6467509203804551,2.237654001186926,33.240614197361005,694243.87 +1076.6818880824824,27.824322991937624,-4.9128951059914705,-12.45395713084566,86.3973694254648,39100.38 +532.0488515223907,4.476608260129204,6.374013446538114,-19.277258173576264,68.45005046950716,0.24 +370.1996311941133,2.1730645271373787,-11.180313409235051,7.558173669255632,41.27371258512168,16688.6 +826.4234264079271,10.580045637484655,18.446832788983215,9.987359878350397,99.36144496552464,44071.8 +1914.114633590573,4.434950858013669,-6.751386634404093,9.451847097484071,18.57083890832838,0.0 +1307.2440619791587,6.109920249496866,17.037071264662917,9.079012607030103,8.591075749763514,3.33 +886.5384111252245,4.276255385316036,3.5680142787115576,11.997673071301836,37.44605812660763,0.06 +270.0394773935869,1.018514060363283,-3.4215560411397794,-1.2164094637349887,98.20258084662603,601504.14 +1280.4919065039471,23.80442682845818,9.355420930733969,-6.09696359308431,3.3778679326307715,35495.09 +366.06375368367065,1.6648724144507714,2.1225869706306844,10.838524694179416,9.01910018900464,67.54 +1176.5793278855474,2.7433725836348986,-14.456698961147168,6.658423132289921,34.80352993990676,6327.05 +1553.5109148891372,2.402337868057349,8.17956798670448,-11.99974534913826,98.75512086312492,0.0 +962.4536269306154,4.599753843783098,3.179756492252208,-2.5882722667103497,35.001459078567656,635316.07 +738.940690669744,2.0911989828265027,2.6257994265918905,-12.713093609262764,68.12976329985753,41.52 +285.2916208716775,4.942017152274561,9.52583121462375,11.156135057760409,86.53898361669269,16974.3 +244.60017529087423,3.065693207408197,6.139207503317512,-10.114762071169975,67.3852595224639,56866.88 +974.0478253619382,1.3256541213538051,-5.350297461017406,4.907824454177754,9.89200714215157,57184.01 +1790.021487265342,55.09674651426717,-7.260449213870759,9.414694808712005,15.70489617298995,4588.98 +639.3130018277427,4.084719270065159,-9.967245751437275,19.664160756743648,26.62601023316443,0.0 +1233.2999104072785,1.5508303540043826,3.0058172177572073,-2.6742978935366546,79.8012062959115,2476186.95 +1431.7504754235713,11.04212751038211,-8.004489634411991,14.898420538045274,80.3870482571646,0.0 +309.4937615024506,1.7642130763195203,-15.183268328062582,6.5741571049944625,17.85480813053772,7166.47 +475.5806764460788,35.171136566923835,11.3078996864316,-19.662064739362656,38.531596068360585,91083.2 +796.2982281552207,1.3278710007181205,-11.634710312706911,-4.348836405225924,14.8408601857106,183499.12 +1406.167713467427,8.497122901497034,-13.40492032622052,-4.235275679354835,47.83597398146119,746372.51 +990.2632020105744,77.2062858157368,13.960038913034191,-15.214993998499974,37.06476138317317,130581.29 +1521.5511227928416,2.079400324055248,8.085120346470426,-2.516401529490153,99.2179942923508,4011969.6 +1761.6761580317466,2.5277688274793415,10.646278628437129,-15.341615516052268,39.48225737443506,0.0 +1565.0700978773773,15.882900776607466,-5.985578155269438,13.415379564434955,5.952985351607625,0.0 +1986.0449731638485,91.13981510393742,4.6974483088842245,-5.5241115313046185,52.52832171859739,925937.04 +1557.8499237169694,5.911143419452077,17.287770008753437,-12.67513069769624,90.81104958344817,0.4 +1733.922551013411,19.82851478888691,-8.69210950222833,4.07291612040241,37.57934857689305,517546.67 +1698.2594452370015,2.016666692811977,-17.241516176222586,14.303284911615952,82.03119090991395,0.0 +1514.4783721040835,19.177600464198928,-13.16487763630116,17.39710228428717,42.25646060678,0.0 +1643.243269980603,3.2012834536498196,15.89865129376228,15.77142877700918,57.267829171356496,0.0 +1882.4298101613383,16.849042082094638,-8.738756712259645,15.282104416879273,50.73193729773479,0.0 +1055.3732813473266,1.504258298973152,-0.3498837287534373,-6.077940434816536,87.54226730854874,761947.17 +1348.9166430425785,11.21858398208412,1.3827573626610956,0.2168575110715842,57.23676975568467,1421390.6 +1126.8914988309907,2.984076752846025,18.40054500070697,-5.1476480512263345,38.52788256383636,32813.05 +1731.8665769457314,23.089653023053856,-7.940839387813292,16.890465359485045,76.9325317573164,0.0 +976.4472851687132,31.285245992442597,0.8556516396013292,-16.286952985336107,5.983561577541509,217.41 +1675.5081880605192,49.69183804654238,18.32497314244559,2.172786986135846,27.979918664935106,350211.41 +1638.83823510285,96.5585505361212,-11.94620719748876,-10.123768737412412,29.356821960555244,76432.81 +1931.394982463463,8.292959783866797,3.915412072293955,14.01496990215104,57.32425739910053,0.0 +648.0572586633538,21.93758590274868,-17.455729758561965,-6.431266841511736,83.58304908240412,3284465.59 +1477.315117794642,1.0885476197674775,-9.4809928536773,14.547368887724,55.82781088344832,0.0 +1562.455095765475,64.59130611742299,-17.231402416635294,17.121716530867186,46.37474534755443,441.37 +1885.3012870483983,17.04065527921439,-6.793890093530188,-13.121294112681952,7.465712632129533,12.25 +1832.424352499956,6.961293721264362,-11.742647688138955,10.170107473978788,97.03516264834867,0.0 +1232.346551075207,7.389677502973131,11.936628912888846,-6.000869621886995,30.258660391963428,329241.16 +1242.4757345551636,32.808871511407716,-1.464182035351573,-3.868953177749952,13.836998647551168,175024.36 +501.1242111276129,46.44511120615569,-3.7999914498199105,-9.024748929551995,83.45398589948717,200669.36 +1954.932864362788,41.28643201347039,7.692925099535652,4.666666217707007,89.1441651332415,927003.19 +659.0314328661683,10.499516638079372,17.887972610027937,-6.273314913481456,30.5606720213318,211010.72 +1504.5251932123258,5.524503780896914,-7.938264281508793,9.624633502468868,55.30933548815851,0.57 +1632.4310086495625,77.81775954096167,-17.329958106191302,11.139681053750934,78.56194381340698,183217.56 +994.187908300486,18.55235515335831,-15.608793309831851,-4.194708762392718,3.14849338622229,12437.11 +580.1486960523044,12.226631354768918,14.28860095282702,-19.810238834225583,98.70533685237466,182.41 +540.1286915954362,15.72670947750324,13.834199650105372,-17.356747006729467,33.07126743674441,4339.96 +1741.692801622865,18.18582536701233,-0.9853837234539676,-9.047511006445724,48.49698881532707,174637.75 +1119.3616761473268,26.6775392911064,-14.094281467762553,18.15492706868585,6.006244730513761,0.03 +362.24656766888006,12.775249483606247,1.059575063607232,-4.247626778788587,5.646897606222113,10224.35 +1490.6350509731997,56.32623320286797,6.736875607191677,9.769411121764922,12.053720391747484,4324.87 +650.3078950490533,52.41172197086167,-6.710540394895621,17.443116773858378,32.79096334865674,7203.14 +1777.5105513515823,7.665058774478043,-16.699278847166884,-6.332849598274932,92.23158910759982,297179.55 +757.2292148539555,2.1730625345128427,-7.12233433087424,2.4515980850269603,52.02803049017126,681125.19 +560.4874941622576,14.233490883995158,7.622958664166788,14.092825637835157,33.24870539422923,813.64 +352.74519839888177,17.437292163701052,19.13470755291387,4.591915267041458,45.663078698057674,7154695.68 +1120.7560459477654,11.13676736738257,-12.39639416227314,-15.511175659061768,27.23976488824108,3.07 +1011.3276580729172,60.4165089144286,16.5822299051284,10.783076987643533,62.77790751548598,785221.86 +1552.3618602856573,1.5347601493600038,-1.7350835299625844,16.163702060735364,51.21018376664125,0.0 +1036.2846569474657,3.756963793125806,6.528725018033059,10.751032223545836,38.47621096645849,0.07 +818.8687440638679,53.898874024654795,14.547957265608629,10.101551124833463,68.92628476359542,719891.12 +670.9788481392993,75.65308213575946,2.2984165325601325,10.227852864016448,39.77671303272653,41696.02 +700.6641418459479,7.109681562103981,-17.541544638811306,4.501555092982095,80.84799139802858,93339.19 +1870.1262232900651,2.4282196188575735,-9.36885311519832,-10.087602739265158,60.24314665169578,32.54 +497.1414837580622,6.928815434502868,12.11622909652975,16.433549863078753,21.01252987243951,4.55 +1978.7175642028703,8.172085294551202,2.1156734360765306,-14.843708341144222,17.15580463272174,0.0 +788.4550193460045,10.94305939253032,-6.8370295708627005,13.091829855692511,26.339672031693063,43.2 +359.10242375149545,3.5375791076027285,3.3320690301875544,-5.625028586848564,91.90579056058355,320582.53 +647.6426854181569,4.2194399863148595,-9.257195754278346,6.952803610925518,82.51788859872268,61277.68 +305.14588319831364,20.472706609827192,-10.359588006615606,12.203884437113564,97.24947262494484,1093596.79 +1622.0535844950489,17.52218664091073,13.13572096283659,11.94356102834128,74.68797667098181,0.89 +1122.59524257399,21.096238673601757,-3.997295749220413,-13.554295544004011,91.52968414141463,7962.86 +806.5759139602417,5.682899377280996,-9.04044213073722,4.436723308310286,36.17999178338913,181792.68 +1391.6892883368123,4.708837213955634,-3.632942717262355,-11.417494058536237,62.368943897637585,241.43 +1335.1637467105763,5.047511835351197,16.825333158455365,-15.515828662041104,39.75888240740763,0.0 +1891.7697606096624,79.8643517662216,-12.768452383510326,0.5424524309678658,86.62186107120692,1202670.73 +1930.2689301470832,6.172913712842766,-12.590826085982084,19.501082045381605,99.7004032041688,0.0 +1425.2307961977294,16.302897298261218,-5.849405350994501,19.26655740236209,74.80649060165003,0.0 +1672.0686690395032,11.109291802677262,-17.582448600873626,2.9360472574256136,78.37206766921214,231111.36 +1626.3651806033213,56.55143530064762,-17.003150958951142,10.886966556464548,88.21347367370939,35505.57 +1084.3463588598197,5.4731027507117656,-19.560856637036636,-10.01288133852456,10.437627940931652,392.63 +1468.0249184601505,7.383952405553916,-14.152516683970568,-11.025512584259904,48.69778253606741,1466.56 +340.8662138304263,48.48289869905934,5.615495170551088,8.260925703846818,73.51720750684676,1319834.06 +1564.4379496705524,2.098530221863564,-12.142954575285568,11.439981604974946,60.89884287885432,0.0 +1931.2994129462616,15.4379310083951,-4.888401420174158,9.673484952380434,54.49228565745927,38.53 +352.9545556263292,6.3069068292167385,8.223413452308863,-15.819697872290558,39.19572497142891,2785.51 +1705.0084122653382,93.66624667522436,-18.727073529441004,-5.749097883251175,22.824561873629953,2134220.49 +1879.3640479686885,27.718404843442947,-11.63764340479223,-18.23279336262567,92.31808504902926,0.0 +607.1400016437118,1.0498144001152625,19.83552853955922,11.446490581522715,73.67865080081224,14.46 +1144.6601376965668,47.747188148576065,3.878472030122908,-7.530145418241725,61.73991585280202,304841.07 +1870.1448058333792,25.489382375899627,6.3991860065853645,-2.810607410925674,9.45171420369793,322630.11 +1928.4068081413425,13.241031878913091,0.6419203201934787,3.1555337702463904,12.055513820340453,346263.98 +430.18829183416943,2.966586060863069,18.63569850359147,-19.977899614252745,43.80246374016937,0.45 +828.2076059998111,1.988993211270689,-14.228119186428971,-5.8351915954366,13.447002033594345,67860.55 +1456.660354071542,18.06338446805833,-17.305088358968508,9.091324446642728,15.742836789438169,282.83 +598.8052988946746,7.58368954033395,12.64664669849974,-8.55738861392291,9.050543795665568,14914.62 +784.5871315420654,52.87381223791232,-19.836145218884536,2.8190973685557807,30.11142833583252,8597339.67 +241.9239080084479,3.3477046886457926,2.462472194153369,19.086854830050765,2.100057825313289,2.02 +476.339025676158,18.83822421807153,-19.94350451451393,-15.273748384341811,73.49461616575647,2240353.11 +1212.1930899519389,3.1454738087412535,-6.070214191422703,-9.27036168453344,60.33488439919104,26651.96 +1375.562119347529,18.734157116881196,6.0354587690876205,7.358660653523921,51.25785097482626,43811.76 +1368.0412959725063,1.2493648535064277,1.893054692210261,3.9351006625916978,98.70172965106237,1991529.96 +1601.04884740079,6.073161827445399,2.3944920804676872,19.120135326300776,48.70702672546958,0.0 +947.5065447298248,2.2149872554512906,-13.706152184075933,-18.61589370216713,87.09586359032997,0.0 +692.2832892340799,16.288008693182434,-8.210691916050123,15.119765507222564,19.7477381272298,74.33 +228.04526007654496,4.299877730639067,8.401164536032887,-0.458197857827769,27.21584844157949,55569.89 +571.9336868942964,34.91927637678197,-19.068113471697245,-10.92403987164699,33.52436975995148,3470491.02 +762.2980619636671,1.6950742278826203,3.8113320558901886,0.1345708654552257,99.04376684161272,1755689.78 +520.772341664838,12.954663418178011,0.6826244745386401,-3.5121519527130785,90.85344765059904,353529.46 +236.26004869388407,15.39415042148036,-6.241711394315006,-12.82660933862762,45.41109926144008,306686.95 +483.4056955973449,1.1071544232025354,-6.60898761471262,-11.224170585235434,84.6011298363387,3384.45 +1398.97919642163,1.1802429684290512,11.957888711883944,-8.474336820767876,24.087009940421865,2707.28 +1333.2537496506725,4.135045994907652,-4.720125489786144,2.0879538803887687,59.66832594994184,1606481.67 +1884.2305509164764,16.525358081784226,-16.80561240494697,-16.676025536788842,17.023996772564097,0.0 +1636.7029245151566,84.18989935169661,18.4815775584236,-16.44618220513658,57.94552038497109,55217.03 +1221.9610103141442,1.519032339801861,-14.785229507323267,-6.7301537904730235,23.00351825102461,53528.27 +447.6014254877804,25.48740068016032,11.898153202743607,8.291635606896213,58.98975989395094,629233.87 +1215.3292740652823,24.290264518059015,-19.442266652208385,19.13220455431167,43.43873734782617,1.23 +310.8711096455254,21.82471026944953,-5.424063128085064,-19.519868810777847,56.318153662121645,72460.43 +975.592815339535,10.771958784809966,0.6072218659822237,18.89362577069467,16.95818478327464,0.0 +902.4655321049518,85.83252747831301,-18.808700635639056,7.441660881055494,51.142284614020475,8199761.23 +970.064856853295,10.08208319879868,9.363465095938237,16.039433862448035,32.32050415402472,0.0 +703.6866531106169,47.48912398702682,-9.57674035188056,1.4535343164756442,15.250190009479232,77845.57 +1434.4948057228828,3.349972221007482,1.6467382008282705,-1.4824280802019718,50.53901843363547,1882213.93 +1713.700041137803,40.98425062119795,11.693105295272105,11.406387542681443,14.70448869017157,130.74 +1583.3305866781595,98.42183726968028,3.6445527179179793,2.0444353923220193,43.303167029157784,421160.83 +1329.9537724235845,66.09551267115259,-1.775469010760271,15.894619811169468,32.9911946179069,142.8 +1169.020638799424,4.056424877340268,-6.555505519403817,15.722528757981204,54.758495451101936,0.0 +255.95152401445463,49.239649368710225,-18.19579084312455,1.2182192263286271,48.89638616747959,4851959.15 +1501.2811976454582,1.5506516516131754,16.520840110693904,2.95058564886995,14.323155603657195,91620.8 +1180.9692912412954,22.668099967038984,3.677258484199193,-1.7489851156377156,28.622399704344396,426859.65 +687.3338911949963,4.833842168208909,5.261422127150914,7.576247995110812,56.11734031059654,25094.85 +790.115669936195,20.765394163414364,-2.379500892161679,7.294244522217754,83.55804569011944,101590.81 +1884.0922156455345,6.675718499767678,-5.091513760310815,6.023728063935203,6.862577501765319,14027.53 +1323.8520412110088,1.0424765623305263,-18.133810368048294,-17.50600340422954,9.9957040726999,0.0 +1056.642382383551,2.9010359328220363,-13.24033486578704,18.543309066753473,79.89568071643119,0.0 +1317.6591314751338,1.2155489869515783,-2.9780597962083855,-6.575910078556837,34.6431023629204,179824.15 +944.7361849741826,7.153850261268089,-10.331814504099285,-10.151336258691453,26.429012571359497,19038.64 +1046.3280917654292,47.878724640083746,-18.222319350047552,-11.55802328351722,23.73329386480824,506531.35 +722.5566620738067,29.922199759814017,1.8405616163700067,-17.228655836452894,97.10006010393568,6565.3 +991.73594106496,37.82895745016736,-1.4354518237983482,-1.7184258747577053,51.5638027575475,397004.58 +1434.0660183882387,41.15279128651211,-3.1450797876485215,-18.33733474293404,16.928539365289556,6.29 +271.89546515564456,5.544719441621587,11.369176695907592,-13.56381947761733,41.19474610868936,25783.39 +1631.0493331330788,10.28138113653741,3.981113816215287,-19.788993274639793,26.803904688052828,0.0 +709.3631735503631,10.39686345202419,-19.943394066829683,-13.012747886545007,17.70065135406453,45069.67 +1428.6076281784997,1.684290634933553,10.47639594324341,19.809819529966006,97.87976801206128,0.0 +1356.905566424108,15.71390937848988,-0.6964971844171952,1.6581490115249895,45.06482537646948,870680.32 +1374.7304884543496,27.565099089797897,0.6725589342501914,-17.314056307452006,69.43338852694546,12.97 +1294.6320492604452,16.670001473894875,15.582910671425054,2.565870038814655,89.95773988922535,464496.46 +1926.3833085251624,31.040725940100096,-15.63121387401571,4.031651874293205,21.35665328016216,111373.13 +1115.0194928517035,1.7289504071848387,3.976153847122883,1.909073996173518,13.673783410222228,340199.34 +1518.1744079276325,33.32866304996304,-8.713610761100048,-6.560480396404471,26.765491472949932,313442.61 +1469.8087962222398,2.607835582457872,-18.531547561956728,6.289649139621987,71.5439272329739,2053.72 +625.2816391009947,56.70921631797854,-2.5047352110912335,-14.295632274054023,38.81659744117323,24130.83 +709.9505105362861,3.0893180700587783,-8.655478761579406,-11.217482337852474,49.41977081981746,5152.68 +963.230776682542,9.637952184904654,-19.940281566866194,19.78882453356268,3.0053492856111568,0.0 +699.8562748337766,9.43045383301418,-0.2822003344476886,-3.3764865404454625,1.4208902929424907,11604.32 +860.1375780739274,3.4490591370883763,-7.5550632316998945,-14.088326099468064,41.30063798515387,1.38 +903.7291050709508,5.289555385113504,-2.635068805965086,-11.318983551475386,15.885895848940356,1940.14 +1286.956209689019,2.3506799235043063,-19.530754188903817,8.965284065601068,79.31891929521926,531.09 +595.8020769231109,13.810245371712886,-3.928719736631101,-15.34999267440856,95.17722512501857,7760.37 +1647.7253585780372,66.99710712616084,-1.183818562683352,-5.840826627894886,92.64425719980592,1198013.96 +987.5654421887084,4.297492671148903,-1.359154111244587,-6.864139049076523,47.08923222655003,333244.44 +1471.2394010298444,10.37827608119242,8.677047737166465,-10.880754632285402,29.39870453917048,5742.25 +346.5964662334722,52.93723136566466,19.65146301943456,-0.926480932674254,48.89706572437676,8152522.94 +1045.9377094238605,8.035225955346462,-18.885505930550256,-15.594882395022296,11.29914221785203,0.24 +250.79515791919096,45.9748855646294,-4.1589379814892125,-1.7373142843845946,94.44914811689722,3034846.68 +1416.6379852680166,7.812343497514112,14.268697342796246,-18.695186281913443,67.45888808728338,0.0 +818.6781385947252,7.594250761765157,5.027870448612983,18.81367674873932,29.36828669183921,0.0 +1908.6550653904917,2.0629083053704793,19.344059616666183,4.194952757201804,76.16598547772244,23217.4 +783.4235862825549,1.7781060058087508,8.536637748480587,-16.997193459732458,25.25536912939585,0.0 +1214.8506164319083,16.71065559706674,8.969892931645917,-12.370998644459426,75.39416393098668,10432.95 +663.2976362503064,45.15096630413386,-16.956618747636057,9.457983850607985,40.78038918044554,1987769.96 +1316.2027321052126,1.8655761187152031,-8.989809989906705,9.266865363069062,86.52869010443592,0.0 +1040.6762302398222,66.09793508164007,3.3523883660388165,-5.4006638816797325,98.98921730214823,478546.71 +867.1308707101392,5.221071055529204,0.8957070905320785,-14.062509570656175,32.700331971626014,23.78 +566.6408283443238,7.087848286835928,10.50365705678491,1.4370912636894584,55.56621314934912,284275.0 +400.7384191486195,61.504487506111026,19.74630769529936,-8.94410958323082,24.555246787117845,3868639.31 +415.7824411220119,62.02873161373181,-11.727829419431217,-16.127657196759742,80.23600879598956,2331993.5 +1998.2720315099957,11.21289496075918,-2.8640351201791603,-6.160058317808237,49.70292377544522,1070860.67 +942.1593083430224,3.5770901789031173,14.673599017566756,10.040503057742464,98.39574565883078,5.99 +203.47347417201104,2.2073893591427938,13.525968466751586,-5.834397604961614,88.80250328978492,241999.61 +1915.2718231268257,3.4926904351072388,12.687737286433798,-18.368792109862405,27.996545617375176,0.0 +235.96386361366277,36.41286032616054,4.815744764593233,-15.184108594503764,12.830381120327605,268402.83 +953.4550259981606,4.458426428256685,19.727739926338717,3.853842004052934,62.36554825225686,35317.64 +1491.4596547471806,24.497565191797616,-5.683862030110944,0.8861123793265646,32.486964625597686,679774.6 +1846.278639869171,2.456980131557987,-15.348206234571622,6.994508380927429,26.116504621077393,135.81 +1483.1953245777818,9.0574775316204,-14.697603673527686,2.8700122845453446,54.96681822182645,564388.33 +1034.5263588200212,5.060721431315001,-2.572322963849354,-0.1108494732339115,54.282031264520334,1115777.14 +1953.995670171386,10.167745017855069,12.197999391947318,-0.9951935820746804,54.22252867625703,2210086.27 +270.77488945988677,13.800365280163437,-1.886150036366265,18.461508875263988,30.12961783799017,6188.45 +1976.4059645684144,95.91133350813573,4.455327308292172,14.491607881309228,16.38143781980035,50.04 +1728.90479307519,63.06524603564308,-5.679135583835797,-4.684859338954674,19.18258490727715,334567.85 +1872.0740308274464,24.645234512230328,8.593248167096771,6.1388515677258315,72.29421421487008,236470.71 +658.590363375566,2.0299574795036786,-13.874333616153564,-19.18268780325715,47.33663939791326,0.0 +456.4245301116856,68.87428647605022,0.8046247344799351,-19.161968602734778,47.46745090586932,143031.48 +1393.9675028708602,60.97785474259221,-12.594818918513557,-7.2571126092490035,97.69800602124916,480184.84 +1128.546988375016,59.34810551506406,-1.256314531816325,10.19068009256532,91.87677983204335,44742.73 +1141.702329339883,9.078910371778836,-2.780239024962987,17.01834274261782,7.430472596090869,0.0 +1864.3145212697916,2.1948933471006886,4.182485601271164,7.31903472523133,79.96913350814643,72.71 +1316.145631975872,32.27055465263856,0.3818094394425309,8.255578434261137,25.54404527768477,18120.0 +759.9149031882619,5.984530407533669,19.02964514811741,-18.71526506247755,72.5076275850744,0.06 +920.1198015521768,4.8880605766667005,16.012463805283485,17.206373318725564,18.16115492792923,0.0 +440.2925031653323,6.047334965713011,-8.236880482685706,-16.528262728374806,15.391831174030076,205.78 +546.1652724962407,13.126263402790636,-15.15292776295272,17.876326290894788,93.98102964696916,2420.51 +458.03012637716927,4.645555591681046,-17.40992997199649,-14.331748062309458,56.27218526902088,4076.2 +1658.524414180438,23.979560663275745,-12.08024804816505,-18.66461934905086,35.614497058484744,0.0 +1468.772242349814,19.74456597363855,-11.115703628132358,2.54439801313338,89.22076399016062,1362931.75 +1154.6210316995332,10.416581775817916,15.547254766238176,-15.454066918414073,29.693263045063553,0.65 +873.8621005296274,1.2821725161176014,16.99363519377979,-18.84739415155091,7.325425320167656,0.0 +1403.2897225838308,74.65954944876114,-10.781188293190208,6.7130970253167455,40.08539431445194,86442.15 +1663.2296258523695,6.658747799010889,10.34924402608426,9.530305350534771,71.02096717419589,1.01 +1786.219788209076,7.923305265913535,13.430558342827004,-8.282330762729707,66.54209989943553,164250.39 +1184.6292107714005,8.167046428280173,-4.89957672546689,1.340328936996662,47.89723243964097,965357.77 +1675.7932192754615,5.371009449791806,14.863764295245623,3.4418066304003547,51.50650785000033,589883.11 +1120.350716142851,22.344766527714008,19.546091000199542,-13.566101185949169,53.41736468493922,47376.67 +1054.1541605382035,1.066191931518441,18.711807395361536,-2.3974691400716797,38.07739353121289,33591.96 +1757.7773401197803,55.849161688777215,9.676273150685692,5.4787573209368645,9.213470347678925,48612.5 +895.4730852763952,1.6027952641708931,-5.133489160562679,15.427697954811435,16.623450717415786,0.0 +912.642822273264,99.86822940670824,-10.919780512907511,-3.245521545236256,72.70300344273069,1329177.87 +748.840421512849,18.037039582845757,19.714802733362173,7.973338890673936,81.195395740544,3076999.83 +1133.66311093031,1.3567285004482217,-8.953018881513133,0.0672296982377851,40.155902356817826,1177629.08 +1180.7300606410292,13.331349642531215,-2.464692130034054,8.283406783305342,33.597949226340255,7978.66 +1388.8300615588223,4.598493584579937,-9.435018534575166,11.55940618434828,61.16105376731658,0.0 +974.9041581972268,80.55387676147593,-0.1552456196561369,1.222058744733299,3.1554399422297745,11884.64 +592.1071253904788,32.4296311848128,-15.584757813385242,-17.555881192788185,57.383124178047225,230556.65 +1760.3157123449764,10.32831172826371,12.3622617555573,15.016161537798537,47.4346595739771,0.0 +822.8015610284259,7.236937117541085,0.2042848371107641,4.039750881478619,44.75097086383083,259777.81 +1861.2981557123144,98.11552489766522,-3.2199062472714868,4.0257135335310235,1.142857758350062,10652.11 +573.2359994476203,21.615643543132396,-5.474215997848009,0.3785998773003429,94.34382371488718,296424.75 +1208.103457225215,10.662510817483705,3.1913725678049154,-13.041152518230458,18.16533608208449,211.33 +1165.907168353014,6.250118260399943,11.195522411446388,-0.5530263999959661,12.186503026199455,259206.62 +1691.5661262685917,4.458263310649593,16.10243861597433,1.4729399693159584,39.19758609485991,415829.38 +449.9324961514936,25.75365346311517,13.660733417625238,-4.649381625084694,78.09831458429701,2668221.97 +1837.8869112514303,14.988943750451105,-2.1794734112223013,-14.035881233370953,76.73499131396666,3.48 +1156.5707099097262,49.701519980763855,13.359682525829236,10.489476394935917,51.66913249465155,17726.99 +1254.9968910458597,12.797391218399085,1.1446157570099569,-1.7364210523784784,55.37008598706777,1175200.44 +1118.2993279359807,14.610422679804628,5.527126325851706,8.02647598788969,46.06572611526109,19605.97 +264.8448323052796,9.009755170265764,6.982416137716827,-18.12079973444359,3.504188053629222,948.98 +1094.7631912518766,33.51520595901251,-4.012726638053685,0.1751314203365073,28.50809656243532,276528.53 +674.389392818583,6.760586162922411,-0.5578749903354341,-17.048823480365005,39.50574974505101,7.96 +816.8387246800966,50.56839963010077,7.703559837992997,9.341530247601458,55.8907404610573,42947.3 +1368.382878536852,4.509096422004282,-7.682870202385028,3.2384457808327394,66.24334094479697,1376950.89 +1095.8548330533906,24.28007884872255,9.876531668541686,-1.944355741562842,98.77607626363545,1116393.88 +367.7927828014288,61.08601552412833,-5.835874270395407,18.91369109289,51.22959686866653,493868.05 +331.47429457116607,34.52611616367126,3.4195792514110046,-6.959336171659367,67.51866482518396,557323.27 +534.1838521112666,4.844135525876445,13.504908716213272,-3.0844147070952888,96.1037182509514,430722.6 +543.5932638300026,25.86294676607524,-19.071803216101873,9.501202271762788,28.59012983852249,2105345.54 +1294.9413625484567,2.593997954112672,-10.386398192637074,1.0020519422253438,45.91954228606772,1373202.49 +520.0660352819771,1.307164241554006,2.4467069284066145,6.34084519794849,72.3768590759452,60933.4 +1787.0949618945872,38.26163102549816,-15.75590239413732,19.051196051018323,56.95157554786235,0.0 +577.5691891041437,41.30648409288314,-11.775930624321344,7.827074102533773,89.42369338045268,1044942.8 +364.0366017674887,1.1113782105132384,9.963578539339828,-13.971651633925864,57.04189785434621,82.01 +1776.3428294473645,78.63031721755047,-18.967078200708972,-11.62611313445598,92.31367156656664,1164624.89 +731.5896369381194,7.79470446824226,4.401470387109878,14.794256564110007,15.707323897866312,0.29 +965.7607337007244,64.6463925244328,-18.6337178218845,-18.08103661151604,80.54922258819178,524772.33 +1926.247491222396,37.70066851745495,-15.363052121030517,0.3670630354937643,22.1136690694979,264166.8 +1899.864594483993,63.2859138372684,-4.386368426628384,16.23822168461924,5.862918460954451,0.06 +1486.850400676852,46.42493092526442,18.590747641157265,11.049112220902906,12.05342458663051,21632.64 +324.0901131185985,88.71370946661757,1.833901989857152,-15.373316292857028,58.48978709703662,1560115.01 +1268.0122257405155,18.121827936968963,-7.511033101328812,9.618600810194389,29.793081051721444,1711.16 +1980.340283076064,2.847853825590224,-3.5469457513184777,-4.717262117697456,15.251889885751282,529064.2 +1904.4492111631648,6.013485407918395,2.7508882282863123,16.051392230842538,63.27994999621031,0.0 +390.8044865358972,31.897635959873487,4.776660796052443,2.911823672314102,49.307821246484686,235818.49 +912.7411455626636,2.0603384035126786,-9.283868476445951,1.9509111481856456,38.6730715576457,698859.66 +767.9661426251107,72.3910160685441,-12.10822248172898,-19.651544537372768,54.0353167148631,94133.41 +433.51059242883,2.573699435307344,-0.1876270655514256,-10.013753970882188,86.28013612288436,67478.61 +1450.6369602477696,56.48712567021806,5.794050009217475,-3.4898287605750467,72.74437925253031,997925.64 +692.9270558484261,9.27786159822697,12.66319974455305,8.956726773555603,50.02332795381979,9548.69 +820.7584456255361,47.999896037521886,3.711812641072107,0.8019869156379533,82.43601595324526,310787.57 +362.64597806255233,82.52611390075981,7.697363372400061,14.101557494002712,86.39277964154329,2407450.18 +1096.341605801598,6.987066941507579,-0.6408295554213161,-18.625989741618923,38.25219276449475,0.0 +484.7021545737017,24.729143904895572,2.6687703117063055,-7.084432524936495,15.82883364873908,25038.48 +977.7627624430804,2.8407643345840614,5.417902629849842,3.903583695344554,12.389393774961848,128722.0 +458.0159997859427,39.95502744856248,-10.54675023613678,6.350239876317465,64.24666961023922,1270595.8 +1916.9298019102623,43.63663958059301,17.362966253198024,0.0963696208258602,93.6932030908336,511899.59 +460.9685597548567,3.8948560217667056,-6.186444409543839,-4.045897933596909,4.81608777594831,28381.12 +1139.3968769311398,1.1175874724854826,4.187525412534399,-17.137762852525608,50.22833504422485,0.0 +554.5636855741775,7.284680413264454,2.438168350174723,7.849697172931283,20.230522867821374,12646.71 +337.4512462506966,2.187767006484487,14.1338189973837,16.149049932961034,53.61981019150982,1.02 +564.1555139157767,43.36128665906518,-15.455824997186882,12.353521507629193,85.80950978025079,2159193.88 +298.59339330278493,3.328086121129078,15.3692406738735,8.049199855619875,78.90687189778224,103684.39 +450.9152896177799,77.15882138456845,-14.51939797061625,5.366435667368483,97.15768982566998,8794114.89 +1088.2714839737905,87.8249522122754,-14.21878491276448,10.88162889993512,48.968425160504374,355979.27 +1373.2679379036335,65.71611003760009,14.490193318285232,11.069266790218254,66.67643440330804,27710.27 +357.21166712921024,15.82081876123692,-9.715923744193194,-19.722382520379703,89.9526667122863,37852.86 +993.8335230276832,3.426541593886639,4.471458842282359,-5.686062778695122,70.06413766276265,806596.56 +1246.2446411360336,41.16392987320347,-1.4555704817461423,14.722145148989307,96.4555144562075,221.34 +621.6062171799107,25.304092262670427,17.370650101650853,14.031342635298444,25.309368740733117,154132.91 +869.7411407288457,90.0195202543028,11.283359522963048,8.398216988235315,14.362125908399577,150631.41 +329.30276552049554,5.682036440288049,-6.600248888508675,-7.63718167403836,15.763423585364974,26082.18 +596.2359444195708,1.3107986889579415,12.537629863050231,11.916496927567737,85.38866981329713,0.0 +1040.155266654092,99.2596313002013,-10.968460438593189,-10.737810470458298,6.230990977639339,30334.18 +1982.79592206558,47.48181142505616,4.622854070380549,-11.036037897813902,81.18192305977857,103731.71 +1993.27711329044,2.7731884107384293,10.063350868984312,1.4293431021467295,46.94643441230812,2468807.7 +1963.3190260237184,28.265438790283348,8.126339068521418,2.8536392084805895,69.43193342038312,1715778.28 +961.5554953405896,1.0031834300165072,6.267280122542891,-5.946872475785887,74.80960745257809,618892.71 +345.224681146397,13.050228495375196,13.198753227238246,4.151008125478444,43.0153858580476,740917.22 +782.4321870488003,5.317120246776132,2.2483377062498455,8.364488580729951,15.462297568076398,2211.81 +627.8858756677591,5.789833602740263,17.133916240388878,-12.79128588198413,62.081006795318885,1822.48 +225.42783483773823,3.083469183093243,-14.207609134322512,-8.455391441673772,95.6959223023576,363534.5 +371.42049851907575,3.5456056540500485,-5.771656264491125,7.993524718450584,3.52915065233618,1720.77 +1015.7454830883188,8.115911968902243,11.31968047129696,17.090046945746806,23.469261316709865,0.0 +811.3924348477345,3.13537918581312,-7.67777168653887,15.377683197766428,87.56624789532572,0.0 +524.6366989420695,8.5680085999763,-2.282035708754644,-14.814113623855572,7.907339197378834,536.32 +1488.9799471857448,14.278922654737338,10.915182309091708,2.789014173544624,2.0031532330352357,34712.5 +842.8080726139134,26.43764981194065,1.5427941114852972,12.007021415513425,87.9025544202248,7738.16 +1733.36214034378,22.609517865117457,-12.495296551765628,-10.506937895098275,77.04348261061016,58572.91 +633.7588884736111,3.0477444298358902,-13.006458641707589,5.7276274079205125,26.13409902276844,35900.04 +1169.1082821559246,1.1977858571706788,-7.950708247377993,-2.8944812518494034,96.6794923939126,2802828.2 +531.4505908685285,46.27684389582972,-7.879497176823422,6.5092544251344675,71.52992615924742,453104.56 +1091.5411094945157,55.54253353689997,-14.533018156754638,-18.715748917892412,12.791040371748508,801.21 +474.4397161610952,90.73587663362098,13.386426488459522,-7.481880498057913,46.59175892639796,3754449.91 +490.84152386873944,83.06596494627972,-8.694934885277995,-7.706896112539114,86.64132376866635,2863203.42 +1302.002078675628,18.51944866724284,12.089860103762351,-3.253072482221575,67.1061247241596,989888.91 +674.8148759163802,61.45304511666696,18.93800728397805,-15.418480244301026,58.994592507980826,3485913.84 +510.26100781564514,7.870763059470405,-6.721543751774952,-2.535242013109409,42.282982913340895,221813.23 +1873.5828502431316,37.555303794501704,18.809239751943927,1.6599299507165233,25.556371800539395,124957.54 +277.4058513320919,81.40837475181338,-12.35196803861177,-18.933644400777982,61.74625029073002,2547345.5 +1217.2666028525969,39.13425895203909,5.898132307627413,-7.963396686559174,16.23011493803457,83715.41 +1186.8749152998776,6.784701292613652,19.64720596611452,-12.908352158929324,81.1814502917548,66.71 +651.0959739255076,5.69532476762598,12.33487658148094,18.886506690512476,21.74796626231134,0.0 +1014.989141203072,3.8290012521948382,-10.811968529893417,-14.791351414778129,12.935831202058612,0.0 +357.92800954874383,5.421594706861905,-9.706693916755995,5.096617662817415,8.130893821910382,11271.64 +1498.2862626629942,43.76765954937839,-9.502775733161752,-3.925878847327895,81.67613227773397,1240435.53 +599.0548670782817,25.293017379539815,17.719705503198952,-8.506749215467346,47.312105155087245,2678774.44 +548.0936476878006,3.1605186621581107,-10.183537214883264,14.163025664690965,40.46752718386737,0.11 +766.7812608995055,26.489286293478617,0.3846125640055042,6.563487185720609,52.5976966757968,85991.15 +1824.2658564736555,5.738401509637477,-6.004428197462635,4.812078934723791,59.14386516113687,702304.31 +1633.6399669103766,13.04803202831616,-5.549223989819332,-16.253696679218677,88.19148880971778,0.0 +1904.4061240407636,5.504761983197222,-3.671285008169894,-9.641227979994312,35.035945009600134,5248.72 +1373.5322228595537,11.047365066917262,-6.198202231705756,-8.940310410018192,19.523044158378177,54675.01 +1393.2587198577578,28.81428120177631,3.997102356152511,-2.6248099404001213,87.0363815510599,1600702.5 +1064.0557989671906,28.990873521461456,-2.9811362769303384,16.85872456202401,48.577237030237086,4.07 +1829.3353820605555,32.08966317489897,-2.359537359856163,-3.853892109961872,58.37077012539804,1643823.33 +1119.5788686865922,6.054490345162108,0.2397591527859255,-6.879159533330075,16.657646105264046,136075.83 +839.1081274310444,24.04312342195039,-5.752859046261771,-17.16252562223954,86.35177949367444,1422.94 +1352.6750178517973,3.002086924100628,10.18238329944987,-4.601684661292178,93.8987493635605,2037348.2 +1183.0510881217342,9.012739961456573,0.1392941853389162,-17.905697294546037,45.310211942571826,0.0 +423.23566755781184,14.662696105303189,0.3684452782359271,-5.391821608956211,2.9947525530894112,6145.52 +906.9057450423732,23.602846095730783,-11.606194270744052,18.711375724878316,3.6785326080007983,0.05 +763.985739970064,66.67944609718991,-18.7665297075037,2.2424301322473905,30.927787731837856,7441827.25 +1724.3007950200372,4.069464582613277,12.371004643404358,-11.645179173434991,49.6907563268076,0.96 +881.9166025515958,49.04241288280669,14.219273888226551,-8.031207182066598,43.84806932830301,435790.07 +1678.799418750007,4.190332680591045,-10.350128133813712,2.8439992577880258,57.31866608002966,1829423.17 +996.301269021702,12.7004420749194,-5.598707940029342,-19.228582203064185,26.481217175784973,0.01 +1556.301014202098,45.31058766105048,-5.679283324686297,15.982846786410091,21.764516688160924,0.56 +443.50747132014186,27.94468448807047,7.368493409291226,3.125524439287015,97.43875321698545,412423.79 +1864.3703953852323,53.178898530889995,-12.510563177869876,-0.3086416385169022,28.778469976497057,539032.35 +1065.0078034380529,42.6346188748532,19.148535294261062,8.649353700262141,94.7059838011066,3648980.9 +667.6368421273514,3.5702162623303737,-17.525540990868414,-11.989555689030702,57.5800259712244,537.19 +634.6812914566524,96.7995511257868,18.950699759421745,-19.134263099638723,7.929052655997403,430148.96 +677.1391194349495,74.81640987818407,-17.248716482949607,4.608872649795308,59.90612199095447,9103524.98 +860.1035112523418,7.250187571734519,-7.2994389551506655,-13.599903584030478,98.56905076776788,1064.17 +1491.5351588161102,1.2428506717311127,-9.972269982707983,-19.51040165229839,84.1278171677139,0.0 +1909.2854772214284,4.045696934277431,-9.614628783129294,17.156669043442307,31.05095967446589,0.0 +1404.267374222538,47.02242919725644,19.786779465075067,11.536751715546435,10.45510488642612,68266.79 +1184.8992876993814,79.7518633764567,-1.665929927641483,-15.431956388662638,46.5835173784048,13081.36 +1007.4760544308424,46.06211852717866,-15.219577405472211,15.854034660016971,10.770923327091673,1843.54 +1690.7500406677095,6.215648878262522,19.291198598634757,-17.297043290732724,30.46943801805125,0.0 +1729.3829644029258,1.2973973286286449,-10.2933770672493,12.119590880961448,91.8931645844105,0.0 +727.4678139790734,10.843405226980822,-17.09811832431094,-3.4211370506158767,65.70180090769472,229893.86 +1916.1564475761743,5.659329986949837,-19.032774817692623,0.7272420851964467,78.56029828155107,97266.82 +911.2076537714876,1.7617520047093362,-1.470769527043614,6.733144985321249,54.51791226027786,15622.85 +1640.14052454475,1.628196034882646,16.733294727970645,-16.04953744478127,17.644583568339883,0.0 +1940.27578054802,2.0233628288240992,-19.321581029284012,16.31025870259863,15.889213251385684,0.0 +1466.5845815401,2.580164210120102,9.00705724116099,-14.254365010353052,76.81048146857592,0.0 +490.7913076121487,32.179020373608765,-9.58312672997598,17.663368743152045,43.501603338177425,34531.89 +1255.0465193130756,5.799718849991366,-11.237581379269974,-16.340686231762746,50.49992798379072,0.0 +413.7988215720411,7.479563616887349,8.151591414789475,-13.119665225293764,18.712409475075315,5098.21 +1620.4556717640671,15.731229609395369,9.914930580538805,-17.697771929303727,36.80557266428384,0.0 +706.3673129729893,83.22752020583341,2.360610207926932,-4.0886025692820915,14.09063340453495,36835.06 +1451.3866815080337,32.579026115104604,-11.909782599988912,3.6346451708280103,21.247893735764112,168672.97 +1838.161413434358,19.562539317960496,-19.747674347993165,5.002987289905372,88.9997597302064,118178.83 +525.8177312063103,30.737197468515664,9.491111719141204,13.140758239300494,71.95209915882364,84367.76 +907.1441094821,27.452698613236336,3.9845797756966927,1.135193352477244,85.34154688778672,566917.21 +1364.8138185324192,24.015880946740136,-3.098150634486516,0.4044649551295975,87.5431703547203,1606763.19 +955.385467057102,9.835903041901542,-11.456721928278938,-6.954163225188106,59.370038008484585,337777.68 +514.6740949244875,13.604862607061534,10.477375777536952,6.044220475342277,31.11655274341361,39266.59 +252.3289055038346,8.374963691668878,-17.164189211674334,16.3411568646405,49.76231339781624,567104.19 +931.8766586635332,6.164771644535867,5.708096208471067,-5.787988113312452,2.8671313937293017,28845.71 +1368.576247847457,3.479654653525624,7.5359366891803825,-5.745811633827369,81.91682455055901,1223074.72 +1233.1715746744796,5.1336517298474735,-11.06970840474342,-6.267017552578169,80.46053989041327,843162.03 +481.2342315691563,7.195471123215608,-0.6670034692817861,-10.90346940346958,51.32474990366488,38901.59 +1011.248198961296,14.413146798725167,0.8079747759801759,2.66842305953936,38.37725507297014,356413.48 +865.0478831262551,9.99424966758196,3.6512769436231896,-15.776995344692876,18.0875401073998,21.06 +693.5643241281198,1.6439852192113638,16.04751870847394,13.39188484264831,8.482856160905918,0.0 +1512.6882389487007,4.785720279143007,1.856604000411144,-14.489889132664896,33.17203497734286,0.0 +757.3736540489318,5.65440532997811,-17.307261637835794,-13.042804454813538,93.80998353640406,457.44 +1172.2555141994526,25.93295044925425,-6.201123793269354,-17.25703044909084,7.806800957255956,8.56 +1861.8023634853096,4.632166577841939,5.133073874159857,-4.746113144759407,94.96476866027196,3018204.67 +1170.6967680564485,1.0373173243823597,-6.674370502849509,10.30581207449114,53.33928481282175,0.0 +1310.6412382890094,1.474596662649246,10.717609124658033,16.403765326942384,44.64697529388615,0.0 +331.8427751015925,9.86272300102087,-12.403783756229014,-2.628768757190363,13.172872563760802,115385.91 +520.6414587351253,2.3822701473017127,-14.279795423186435,-10.59453868879313,8.06623820678033,1495.05 +381.71215873660424,9.75539418478082,-10.758693210960503,9.026185738050224,54.90171249048685,41654.37 +1576.6633070405123,14.07377955532834,15.043400211914708,7.525753858031936,60.262726999118534,9240.34 +1704.6579456503162,73.59965950134071,7.237388042202344,7.265789949968138,43.975556017334455,97711.02 +535.6195277502397,20.47198000472129,0.8019460607491702,-2.2630656713612307,29.445694041107615,90791.86 +594.6891516615639,1.1536695905669103,-7.9865085781364,2.6119304603544613,2.310016460486514,25514.61 +781.7731210870091,5.773790698952002,16.74363359774159,-17.52132428742502,27.401020998656904,0.01 +1263.9397105169037,38.629042336675546,15.55105613289767,-9.99949309729612,71.76739686430935,87133.0 +1319.233148840035,3.319899309194658,-4.023981813302564,17.077804498280234,60.995456348998,0.0 +1436.1571253746238,70.78579972412383,10.108953506830236,-18.32881138095678,16.651452062780496,138.27 +1829.346961184233,11.429346969480063,16.542556631736055,-7.936000452344341,79.55038423584286,118751.43 +731.0722528937687,1.5307186854110604,-7.465863577155067,-10.934227528161353,15.700318956476938,321.14 +1385.7661805721962,3.0432741731246615,-6.851266254912107,-14.790442901809069,79.75077068257451,0.0 +1207.5011223998458,64.95287787559066,1.832251710188624,16.974071482067778,51.74955082030501,183.25 +750.5070327426208,96.14340574787066,-3.6653364449959502,-14.96415772892174,71.97673494861324,80968.81 +1833.347335868612,53.21472046191724,10.459183028104697,-0.4251466103090173,9.21905233495296,204537.44 +371.8701415265915,4.378782455288178,1.4772106734567547,13.580379472526277,74.35778520206262,736.34 +1481.6018482976926,34.485618940577574,-11.525781655185911,-19.8451195746133,72.42439958581865,0.12 +1510.1726834406836,2.7826288734264573,-5.744509312771298,-15.658892861376184,18.35007731220189,0.0 +1847.5877498419309,5.875496540578311,6.8495620969269355,-6.324231934890783,14.61642457952625,232383.31 +1133.4450662324364,24.79340971239437,-17.86263024717854,-14.099399853608404,75.12090677708098,9688.86 +778.9202087946426,86.65680612352267,-6.313312994214879,-12.6936160235301,42.1994999757082,84771.49 +1689.933205748037,7.557820159860579,-19.35615553625272,3.646232532413385,65.12093221129929,39019.91 +1587.4585072983068,9.810086619665723,12.83467825284347,-13.174751641679515,1.8960420119862404,0.36 +1100.5681059550466,2.756367102334464,-15.312402730082244,5.553889258004037,19.181237515352137,20649.15 +1582.1432761408598,6.403913918569326,-16.911811165944993,16.620740590170406,74.84651676686768,0.0 +682.1760837390694,1.3367100564692584,11.463720666651035,-10.82285216094832,20.687738347364203,467.33 +1261.1113947262422,52.14009177405388,-16.4197254956443,-11.508599806434091,8.947918970566008,23301.32 +1757.330218618176,1.1134460487092075,7.370501709637929,-19.54425635573304,18.33482462385069,0.0 +772.3721083097225,23.283548503162542,-4.805456969626274,-19.413344267870944,83.40775353485533,274.52 +1070.3899683753375,3.5191955751341855,12.867978356757618,-4.134937561689869,35.30652907021394,483203.21 +1911.880737511201,8.958161011479548,-12.685949820546435,-0.4383168014678817,53.47747773863644,1996544.75 +1636.781315549126,3.656931961392669,-16.623317057698365,-12.68756845595692,58.17209415837742,0.0 +1796.6702365949948,6.311627155758209,-10.863701910235338,-7.080481241641774,37.89122976903348,341854.48 +893.4447096028034,12.403829069795366,17.28540139241247,-14.38760194930754,10.276101822249762,105.79 +1993.709467342206,19.133165268140612,13.16483892657268,7.249885916574805,26.423626009619305,10467.67 +474.61808843086334,75.957784017343,-8.568507702657136,-4.282429894750948,16.623330174514095,573536.95 +1133.7870497893562,4.6174457702019716,-11.755434352346942,9.373364448192405,91.04248896748403,49.33 +1062.692088133249,14.781381496146675,-13.726324484888451,2.012522379337822,74.26867234687438,512816.77 +1637.1779434402422,63.59812242994559,-11.151863758837566,-4.908034356868951,82.48215480028492,1025475.06 +1835.5119905270217,3.805954709342872,-11.798242263068024,5.054667291143802,81.41265224286195,673683.98 +1516.0508784345077,53.71554200589123,15.52751473972437,-19.713235885574885,1.215302109716418,0.19 +1328.2692250345451,82.24513026066889,-19.200563665433364,7.614578074171976,75.15172972833133,7403455.57 +969.3725435273068,49.54358295670642,15.204900384419936,-5.158061349994276,48.72351680425919,786272.28 +1118.5866507363214,13.794977697383562,-18.34301166651781,0.5430528565862058,77.68894072935673,188259.4 +1116.7405638046794,27.811926948513857,13.073393220539074,0.9363912221328352,96.02448895619612,669146.71 +236.6632526318798,9.164984548336855,-2.9701105423365437,2.3364945926780756,36.41394381274654,55873.65 +1105.48244868982,15.649901516019408,-16.91177781530103,8.095460535307865,60.8737588642378,8819.15 +1740.7474403134247,88.90949304852629,11.960208287698537,-15.574154845364404,31.155654443761343,2247.9 +1476.6932200560468,3.178638302410618,-9.742411656057628,-0.4408895962756531,89.48687651456018,3395974.24 +1632.2755198250086,38.46752503332728,15.12112210483596,-16.673879681482827,26.148273606785217,8.1 +902.8729815833376,10.291206661364848,10.090306168305796,-10.633869033833149,35.77383725220299,25326.04 +1152.1518264433246,2.2581173460608177,19.270818918691855,-12.429419484143246,88.90661046016129,0.13 +260.27042419478084,19.367374989479224,13.274915625236083,3.948373697010217,10.98417626848594,617641.42 +889.3962959048184,38.446234721983046,-10.361543862122511,4.243899467044803,49.907513872436105,137941.47 +1053.9488808067592,13.724977420466802,-3.631391985589074,13.235977057414935,58.54727025026877,7.4 +659.376019278347,47.30048588689265,7.865212060055438,0.8734869652351307,58.32279825053255,227637.15 +256.2337621831697,5.391842879259209,-7.357401749019554,9.7871406303609,12.88730429367541,5229.91 +1442.7345958021135,67.22589579543533,1.860144745945873,15.563119218434093,4.909574481120721,14.65 +983.1579515279178,19.79886069589998,-10.494115247138147,-14.65854352608008,42.24755682879175,1502.78 +948.2207476020216,40.39416637058367,6.518034443465086,8.838773598612214,45.932045492371046,34149.26 +649.9761572513161,3.5153635856331493,-6.314640749103226,-6.882556108783642,94.32375327146237,490864.33 +1168.094718196431,7.80291046862544,-17.792878466516868,-8.877449977583161,75.81068576432769,20279.72 +988.4482062873168,65.95304076330753,18.710962493856567,18.51930552513228,60.26492199842241,121560.74 +1053.1720514523638,1.2641281458175562,13.756142755269629,-11.741729470302676,21.801246982791064,0.03 +1245.5684271854875,6.426335974790269,-7.851329095647346,16.58212164263582,90.24342444030869,0.0 +211.38436503152369,36.361125371431584,-14.815007992398268,12.948658979542351,20.15926163184729,1034246.31 +1833.8526263691608,30.734728449751863,9.40904693061256,15.145298154922706,94.79014708434262,0.0 +327.95731450114624,50.494684330855314,-11.173088728905013,3.4393389476173075,94.64760741587986,5099659.33 +1011.66454516879,30.114847575560457,4.21816294929708,3.388232218399762,97.81132368245564,536479.15 +573.2711754308865,78.37621715622578,11.163165133719026,-3.89671666157986,29.018853026593177,1378019.27 +1142.8082648657755,9.920169910073632,-9.10304546466998,-3.9632244288939855,14.611073981351527,244032.13 +704.4141958348481,17.724731852449157,-8.614534594996432,14.026687947735724,63.248996708250914,845.57 +1748.011696512687,49.591987870411074,-17.53549341339111,-4.489793559490032,42.86049194228034,252476.54 +913.4477011323564,25.315231294952476,-7.206073698688504,-0.5321248808918444,39.46143945530714,308447.02 +1349.7600003831872,1.5999758878473744,3.898042738593115,19.855714195430924,56.074532288835776,0.0 +647.9835106661822,5.419920361280526,-13.76812695706227,-5.827445696459881,69.25695143500754,268144.52 +234.9310708892315,12.740356971969488,18.12331177188646,12.903667339427267,33.88032780967089,1907379.62 +927.4781641038968,32.3173013338691,8.896629334154191,-8.912090924566055,34.176381406209195,84817.13 +1165.6756812049225,12.22179901722531,-11.843964509218544,-18.99705481223184,61.4256265110994,0.0 +1027.1848722711504,35.900333478948724,1.2246668982597964,3.7371145270846378,8.059695383921746,38824.54 +1931.625854873948,47.338986197404466,-4.342364636696789,-0.826160886734777,70.29470565466156,2086611.87 +1472.310512922851,3.3904437272677703,-4.705873716452937,11.466904785778276,80.10214251289473,0.0 +1992.2056411257115,17.068538902652445,2.399527987448691,-19.833897198262584,88.09546981556691,0.0 +731.1081625651495,13.008306314346544,-15.673973640468652,-17.17758448366373,75.6294599567824,225.47 +1620.2959032928638,2.8486199094151656,-11.38745496594387,14.387156594425116,51.16761004959501,0.0 +1200.005241583905,9.544565847383792,-14.012787813342058,-0.7667604959201846,87.50762306312515,1088962.06 +1301.168638007299,12.506522510712012,-13.040832225719514,0.254937387180929,49.60779558449593,771823.74 +1974.5357607961896,43.120099112146825,6.208697921821451,-10.99572214207292,78.92149615147873,92973.19 +1377.1769595520104,8.355621318551492,19.846595510317,17.036844257418807,7.29755938197568,0.0 +1817.870406206452,1.451549882504657,6.044244611673872,16.576823686675056,71.19460459205929,0.0 +1506.3504224946446,9.431742088960904,19.388940882255863,0.6677526052138916,9.325991214822258,10137.88 +429.2950191045501,47.41348615933784,3.080294223591782,-11.287058137101468,3.74262510180369,14592.33 +1458.962678580163,13.88388170385925,-8.667655216395719,19.31165768717338,50.72200185550253,0.0 +1071.7680596338676,4.34240629346288,14.89219321748408,15.698256422062332,12.825326709018512,0.0 +1853.8363873682165,69.49313368690876,-17.3123561927691,0.8564403567390233,33.18668228149936,334654.66 +1652.3020049428194,2.047871817050598,-15.902882463441648,5.055941634741767,77.64994751439232,194524.57 +387.4424376930054,4.505627719376311,17.904976355073998,-2.4132878216851683,55.4780692957648,734745.46 +441.0481585764052,7.486337140097325,6.007407974150296,-11.757688990498298,73.60442823418973,38631.64 +325.29980323749004,29.919599502190326,17.15848095603743,7.2580336857778205,78.5717150721989,7841528.5 +1087.8407745403113,46.9346500700801,-14.684539195555107,6.765365565667896,48.54519158249361,151176.81 +345.38916657323546,1.309546585395454,10.73043814230639,1.893043744544558,98.57849050578918,531858.23 +1502.6210058344493,38.37705468037203,-10.60758197653312,12.577838754377757,21.007463027037616,78.68 +1194.2454466107788,27.60939120973325,-6.265832627985808,-1.9265361284047433,9.405997288885526,129525.35 +1704.5930315956564,61.56085027100549,15.959655057385476,14.43666899057623,32.53002617963453,197.23 +703.6324196083693,63.22458416900652,-3.5497860289371586,-11.31926589792791,76.48847395505231,87788.9 +1134.4534114900532,35.89641829540762,6.821463877870206,18.472217992928364,10.52776892738308,0.17 +411.46343463897983,2.4010730242286993,15.491042169673834,-11.796789391273146,47.20735668375161,3251.49 +1792.2980047705048,4.243683765589279,14.834957134872532,-13.595235179004073,57.56295898074893,0.0 +515.008932121709,74.58292261923245,-19.643709847067356,4.135900280096156,80.98837130206799,17867524.69 +384.252052430729,15.71616572365602,-13.671388972972478,-16.276802779082796,84.74353120117631,282214.74 +569.0910773417299,11.954226183636743,16.74486556542661,-13.282751900589854,24.65451481477683,30197.61 +1651.2166797013665,67.82954129171267,2.4966347328904392,9.161379342322844,28.135389797002244,17813.93 +390.46614983242904,56.026971576294656,-0.7920004448139917,-7.673938810583629,68.71246618814409,649318.95 +1305.969490708699,28.509677632097628,-17.38968566918611,12.004852154258575,86.11812253322427,4355.0 +1543.1263411072262,58.14396019585613,-18.997910362501948,-13.777886472229357,17.667492182153225,49656.97 +1551.946088869168,1.6891567553876414,18.136589480708047,-4.587942098517335,72.54131032978495,119393.67 +542.1095958946361,32.740697946254755,-1.045956699802324,-4.548482092391919,24.52946014621697,49473.03 +310.9231970797016,85.36511002064537,11.456692620184242,-0.7841334096368202,18.88600545009395,1140033.69 +1007.8514907899915,1.2530072520162585,-11.19994426602101,-3.5843118586821543,34.41791769229323,671447.57 +564.4736214401829,2.7931309913571174,-10.517121900311782,-4.528571183588164,79.67094594466799,620524.04 +1458.6874562250885,38.72012741269274,2.410212815768258,-6.862496878074045,74.51256383850338,739194.96 +842.0470393797578,10.967163773250128,15.041033441936648,-19.393974513889173,48.39135750760961,0.06 +1008.8370938596378,1.490173064513741,-8.456802575816177,4.663615470596594,71.7045481179765,538252.04 +404.2728795830813,3.434915504474256,-6.8480006497671475,-1.0603453209644087,41.17868627855992,234487.6 +1221.590515786745,4.447533211782011,2.0251322487868473,-5.068694044530835,21.840425700313027,377875.72 +533.9435413374332,4.38657383371059,-18.399777129290836,-11.54340864838618,84.45841010231278,21759.39 +1422.1741896468868,56.93056565616296,-4.849514070189125,15.655603348420293,6.3252400747664215,7.14 +328.1038805862087,21.089822021645094,2.2513155856678413,-10.484247024609123,90.20111845835568,125065.73 +1956.610266106382,29.50085185921711,-19.806927909746264,16.836979788253107,79.09877362817326,0.04 +1432.148561454461,1.0644865484449093,5.520140686638406,-11.309440697015235,72.63448481737997,0.0 +527.1132220614671,7.161829966177464,-17.96156087381027,18.857040313701916,57.3432487646682,72.37 +225.37036183134043,4.321567055718109,8.7983567892688,-3.20603433168563,81.19133349668287,173295.46 +802.0332059693937,50.565092318032086,12.067138436813073,1.3086960321013397,3.793763186438511,34038.12 +475.06387529397335,80.86103722519135,13.551790312292823,-8.047579434806105,59.51030142191809,4629850.57 +593.1403996151828,7.0255721660585575,6.935524272981821,17.56723576857095,26.84298557786805,0.05 +1770.950465188201,88.33264381175573,2.4628241831186815,-8.697166086180633,64.28759333113219,415508.92 +1285.768388091529,1.0683619401065965,-7.697540231552327,9.208472651750036,67.79769039449332,0.0 +517.6237754520191,4.4816589949856205,-3.0154512573343695,-19.180366627199845,22.259406012108737,0.17 +1201.9869212374078,35.47009534384668,-16.517757718792033,2.3487496795382556,16.325843132555967,91865.33 +660.4051761649878,5.250483051859856,8.28406229589072,9.663023147894748,59.1582855183115,2696.73 +1957.1615558445608,69.49037586883105,-19.012625278620845,-1.16506951340702,94.11710092978508,3551175.12 +258.96301447465146,2.7348265346897667,-3.462516618503453,5.7326846136124265,66.68107558383532,80151.25 +1518.173159902067,39.02415021149205,0.2484280669358129,10.722275373999208,48.931747418021224,2666.48 +1591.394647144569,2.5316548990798102,6.003580720138655,0.0095200109113147,93.61343941607876,4041997.24 +320.8929751238605,2.4786193473577707,-6.27204434374093,-11.276320579891664,82.0727152671746,35984.29 +509.3648556164328,7.7893051300205505,-2.288486684434337,-4.129119507387187,73.54711065829632,358521.34 +891.7519863871236,77.60347638091676,3.4950404776560307,9.231160313576128,44.30183087316619,38123.23 +1762.678687752322,14.822106307653357,16.926991633392113,-9.156322482072351,49.64800321540337,24270.08 +1166.5998891532988,18.62369239076105,6.878885246833262,5.281385008009822,27.19736155159386,112055.15 +1379.5523300131229,1.0458402330246728,-9.8226238971876,-14.068320543336863,81.87141437638397,0.0 +1609.4231038223168,1.2978676550896189,13.890544823973736,17.211729327583733,29.181765632751446,0.0 +1690.621019007536,1.3610311070080685,-17.797421127904627,4.119325007616141,70.6713055150731,144750.67 +1057.3121775506258,43.579711344985554,-9.10803752061322,-1.2691763757180974,87.62104901339904,642910.42 +1115.8276497922664,2.976488736939954,-15.673928639249478,12.460921455073928,55.66435177049309,0.0 +1492.410542758003,4.546491351332909,-2.118454382789645,11.88684208785645,16.494384989130136,0.0 +674.0162457241275,16.59226048840767,5.4770876301412175,-16.10707840996168,3.463109976392025,149.01 +1738.0815254579438,14.720027972963004,1.239812850914812,-7.717461158871348,67.65066494238678,612113.07 +237.41628405651483,6.6230646617773825,12.450488085519762,-1.6569091255982382,23.238851595154152,364771.73 +552.3888839775044,1.020000564395802,2.6995265734829355,-6.378401654797599,4.867633841860753,26308.43 +1640.3598974657057,7.92875777177661,-10.693322149720146,-7.307971178615236,34.98494954903723,293274.4 +812.4647814068101,30.04451733314095,1.4568744467370864,-5.9123881011468615,58.63014687426106,255625.6 +469.6990988461507,2.9544635112800655,9.419580861307873,-14.318026822756371,55.601729440307466,433.64 +536.158560280526,26.10453854746372,0.1181345703535807,-15.223306539805655,17.573646080392432,4814.14 +1155.361523484925,1.072273664434044,-2.32121806466441,-9.587568048818756,60.794598168860354,623.17 +1723.126752820978,65.4659702242876,1.1638941359970143,-17.19673080380939,41.66656167561272,197.11 +327.1712883879991,79.44716699328985,1.9223268943814056,0.4087997267559595,48.28528329537741,1537180.53 +254.86563642436892,1.011400040877086,-7.577714765614712,-13.874549297739748,87.56814468367422,1759.57 +1037.3026445063176,8.234492296842816,14.169054042332975,-17.297313401168267,8.774437569323265,0.0 +1921.1373470965425,6.72425044642171,-11.692679408923627,13.485831602383405,53.25922707803697,0.0 +702.2176461454275,48.27993890318479,-18.68671513166854,3.500380249478212,18.18878643015501,3370536.7 +1926.5069703206868,12.062662659287447,9.659688634298638,15.934401092971576,19.09453337553648,0.0 +1797.8261178620023,16.700556377606773,13.69255083995752,19.335710770377354,61.43586861740046,0.0 +709.64313749752,2.541042952306894,5.709450918798331,3.7412545572408407,67.30119795141404,528262.04 +1670.5065156610642,1.426032212935397,-1.242194283497322,11.839092879197604,61.01629625685979,0.0 +1434.5611446238738,24.24723348003203,19.008217849749403,-13.61832080684287,92.42588122404366,4823.1 +1121.2803000285628,17.432191330042933,-5.169590518252001,7.934748029768537,79.67152388860025,46249.55 +961.2490574771743,46.20164810320691,-3.764085868218725,1.982168075652262,20.662408187257867,101587.51 +1667.904960665822,48.90653505498109,3.6445098904532,7.055714804366953,63.9505370000728,135474.54 +1627.5429788510382,18.283972017045,-2.7829246638861393,-15.81103210403436,62.41367098671856,0.54 +1562.4854046966066,11.932261592846254,2.211935067534836,17.432604680708153,65.00595652828206,0.0 +1996.8607121875325,67.30022838625392,18.662548501334907,-3.3005060328014357,43.47894523097781,858508.7 +1061.322429694491,40.04315347764118,-10.500052309958644,11.031971485975443,94.81445520060466,15342.17 +1652.4613600758485,58.190218767275965,-14.05748296822242,19.62448049976723,46.90934649649618,0.03 +1752.4610605702612,98.10288890582312,-3.0579506642139354,14.93247983564698,79.14605562245332,537.02 +580.8846466166311,6.41226667388421,0.1599425281472033,-7.531780642271064,48.64952227099663,163921.07 +275.7195956955098,27.15622038930663,8.527863374995576,-3.920951628366196,78.95520976925172,2277532.68 +928.5471239394434,23.775826913895937,18.20692722523498,5.946164500505717,40.168440547310965,590813.71 +1742.1260319861967,2.229900200981032,7.546813482782682,1.520926375628826,1.0807196980332816,49035.81 +720.3859061501184,18.75414197284531,19.48700622457278,-3.5879816206779447,50.48606585209107,4877261.34 +1460.0182773213633,7.180894591525085,-10.146452266254954,6.1347881486362565,55.251781867943585,95644.7 +213.22665031567283,7.966566399368391,-11.644396452773398,16.38113477363564,12.44575867228336,53628.73 +839.6559781764279,2.2923238856617507,-7.738609964049021,-7.620163413342822,66.85323937706006,229104.57 +1307.9300505646722,30.86588205133103,11.484956904299018,-14.866466490089168,85.51977781012711,1939.76 +433.5629421302064,24.88181056790991,-12.539411100641209,7.029982566485193,86.96571314659904,1478984.94 +1813.892441865381,11.603266791574978,-12.152398013262651,3.5837999813470223,38.31267768752476,706745.71 +481.2931588107426,2.057966886209752,-3.530569575421576,16.223521216612017,41.59091425941744,0.0 +1837.6283810071905,12.99360232075188,-7.298228504146982,9.706369447934438,85.98015908227765,30.65 +589.5007556293544,1.5858673003002652,5.8591235657524265,-4.115889633925547,99.83457074251952,1081297.65 +1989.7016130485135,4.772479288019784,15.60668131378032,5.333174020243052,6.2079745793168115,13997.19 +1288.5476839320636,5.555404491253406,-14.45357712632401,14.49468157153566,7.116260902965381,0.0 +351.8208099889603,58.45891964520849,1.8701970779774335,-6.101073633321734,6.3716702390161,109565.13 +317.4990220615877,6.778352513147682,-16.463971291475445,-19.44693805737851,46.78564144575861,22669.84 +334.85905326704375,15.737644735892008,-11.140263597488204,5.053619614955864,78.67050718080881,968690.09 +1261.8069451237134,56.176926630660546,-7.635938144185475,-18.962984547845192,10.27450922863776,48.08 +1657.2425641892935,7.104260494749286,3.164117829869233,17.49919606535086,69.20580646373456,0.0 +925.3329351869104,58.533843239881776,2.195159690122961,-13.272046014404369,17.94491331290736,12075.62 +1000.7043667073513,1.874660484304077,5.722650067191424,-5.029457000835733,4.263192674570511,60762.1 +1260.7178665963304,5.366440448147763,12.756256689109527,17.85136476525405,59.96298929576016,0.0 +1159.4730886154402,1.546872426662088,-12.510804874902773,-16.802776208680726,59.79214394738453,0.0 +1438.5111195822865,13.239124265120536,9.735299098432185,-19.826298645305517,29.04618640611315,0.0 +1049.214296293448,82.1417820994356,6.680838197775745,-15.854537722778122,32.90142561801173,9591.66 +1484.9492331153217,20.60172902759345,-16.811558602988047,19.441538707091244,36.04491536958909,0.0 +1995.1593365839417,17.87109793109454,-6.212187197893138,18.869150599172485,92.99390717320252,0.0 +830.5361160477769,3.600122383069521,-18.89202604473303,-4.616035741822619,86.76565039258479,56604.51 +221.98783324763144,72.81376993557556,-16.392624730355315,9.715425092143928,53.22334989485824,2898616.26 +426.1250819929786,8.771413189931197,-8.648527997733568,9.437337893007536,96.3822295942106,33319.82 +1196.3255329765168,3.419826758165161,-10.27535342262591,-16.007351749790534,58.590277714230126,0.0 +819.6640168603736,94.49307038872226,16.00695077755169,-10.59520303036905,11.051692527509989,835031.54 +1891.9686686689863,7.018557586307857,15.751542514992147,15.559293641465072,49.22895403124834,0.0 +1329.402962193289,5.533475161251313,3.114700703067408,-13.372127613340098,89.55752374515875,1.39 +1136.6393347378423,1.1746880063522016,9.401422363444194,0.834214273908862,66.60307959460407,1907538.39 +1636.4711022896338,2.2729503349630655,19.98405252531009,-10.233902415377498,95.3139896895587,25.64 +665.4617678883712,41.531987070964234,-3.5922920880988496,2.304582267186488,53.55748202028375,126661.67 +1675.5293725082474,9.234007207614706,0.8970170425162305,-12.138772034742017,91.27287961003508,237.1 +205.5099887553673,81.23617263631466,6.045997561806273,-11.370070035377305,76.89222255098984,2944903.87 +1315.4192518442917,1.471538423340672,16.822328496747275,-18.128037707692076,82.44884088494585,0.0 +1882.562871882402,17.056380851167358,11.880662028965254,19.606855512333077,99.1540891479396,0.0 +1618.1479136609662,27.540276430006816,-17.423128898930415,-15.476190808526248,30.92196040014354,7.8 +1736.541545865247,17.47295075550744,8.518011364811958,-3.375247316763872,63.17765051122716,2004901.27 +914.518451308701,11.47506410146939,-9.92257878976638,-3.297680737440709,26.388817328414973,288007.67 +1683.630102980227,14.341568139774166,-9.803932138338034,-7.854950362624824,85.53588370758604,662343.01 +1191.4969970544798,23.938623964448748,1.8895298020998208,11.759611609812906,59.00166120783928,667.96 +1313.372425705758,53.2754451584526,7.852034049223113,-6.492323536258051,18.407663310749587,137422.17 +306.0476108044463,4.7064049111709485,-13.630887099664104,5.018011430127474,42.70331583342774,99495.35 +562.7930549139058,8.304398109067433,-7.419540761442493,1.7200152553522008,18.99255946472882,94388.94 +1191.7359479243946,18.699034084167813,8.644840170002258,14.561155318071275,46.33718518781475,0.57 +305.84190408229574,4.250420569694872,-13.919920271602445,12.779305235815844,8.681093815657748,1707.26 +1534.6042518578838,2.278063008069349,13.988339053987016,-11.28210728232868,96.56280952707417,0.34 +1712.1026153394228,85.57314894134106,-1.758288233502956,10.004471787388972,60.06512051981573,26884.82 +1856.6522503306487,2.451646091507595,3.4396100083405523,11.702738323785926,99.07555042841008,0.0 +383.18322652365066,2.9205603899667776,-16.78406406498023,16.767426547815223,18.20291579607279,6.61 +1891.49644644104,17.273176111509237,18.180049772052552,18.528704120746113,39.057134521906555,0.0 +321.71601373273097,1.4280276610183131,16.301290198852897,9.478760047074156,93.1926732946587,2210.76 +1053.3011886700676,1.169756070419859,-12.396851355197454,-2.0027531240915497,69.50451708103262,1534258.63 +1712.4518371300612,1.34284908509577,6.524091061155888,-8.281173238825513,7.933745434133254,948.44 +326.56004941601964,1.7641166201382177,11.724688749292916,14.58651717300392,88.43531073566653,4.78 +232.81593138017053,7.217615198462808,-15.121303926558838,16.622179550267433,19.69468892298696,113791.63 +244.90589367197123,45.55345136269464,3.0981423763705696,-16.09755270233017,26.9192852862198,591896.18 +1120.2864309848603,4.829962803660926,14.018157205535946,2.172908773604685,73.44372086978395,813469.85 +1660.8741402739934,7.162470220297519,0.2685638976285975,-14.832228877585436,71.35843456750115,0.0 +429.36800793067937,15.86726904444282,16.95141359699242,-9.93681138143772,66.39887490211221,2376067.63 +424.29845734317314,4.02058132644707,-18.087924123175497,-4.672154727288946,1.5352061467689229,8970.69 +1223.384339089625,7.329523768616725,16.768427318946948,-7.553431386626119,25.68876179812182,31746.53 +621.7320814614626,5.924113543084408,19.088721909104866,8.639957482628024,35.144709720511045,61687.54 +1514.384723260773,4.827998019802988,-13.762315961075346,-16.841350473465077,40.633050884206696,0.0 +1909.3436987181497,5.981172652894927,-2.7619921356363974,4.550941663902832,8.319549865455476,135372.29 +1578.8601318807434,1.0525322721989092,4.830596906453346,3.256581159235883,67.8624306905443,2220796.39 +1778.9156594820497,59.22721836145159,15.729531531550048,11.48779933194299,89.23373045694457,2906.53 +1135.2549036290063,90.09352820234191,-13.618953084410474,-16.132860233789145,98.9775428402634,146775.83 +1698.17474759156,53.08751330364894,-6.638881677167658,-6.69581499186628,80.00005913388651,999504.75 +529.2257311760283,1.0267968983083582,11.917192468040785,7.884136954464736,21.057386307674776,767.2 +323.0262027121293,31.752000547616515,-3.599817491523374,8.467484282630618,51.61729287872845,335544.31 +1380.7155982244346,14.002331176783509,4.197738990977622,-2.0149682434160976,91.65778094364138,2233719.23 +293.5145067645007,1.5429427851702988,2.400220928666461,-1.5292226675681464,7.592989257811968,42098.73 +1806.4665544514248,73.40375377592468,18.92686782706384,18.598372384500102,23.60461571273207,49.26 +1444.7974647933534,35.68077332376794,-14.3387510433273,-6.9508805182683675,27.20878638894809,138241.47 +1913.9613057360416,1.9525068801414995,17.937622483504626,-13.995412123545394,61.34798404412856,0.0 +764.9959813638242,84.73890727486558,2.566028627515222,18.113682599653753,95.20046955766206,12005.27 +1075.0849565629176,1.7881234785390914,16.166090322213044,12.38432573044654,48.776398421544584,0.0 +1535.0426570812142,8.116331129134414,-15.28231452603844,-10.517482861050508,56.8258460256255,3709.0 +637.002173829477,2.0794642830992265,5.660120555195505,14.29027731584566,64.34632901979545,0.0 +1175.3278762010004,1.9970162100679216,13.604401453781744,-9.907943368965494,85.30182118664659,1964.2 +1387.0410950098606,86.22068656155366,11.475260056544007,13.09789900181341,29.34672296485537,3122.59 +1961.8555780046745,13.939447572373677,-19.60246709863017,5.142509038485179,62.99864790949766,32276.55 +1540.465929636293,3.2987532825228914,-1.911781351511972,-0.6967911821475425,92.60472339388411,3791073.72 +412.6355305023332,35.710731117173204,-15.38613102525792,17.122916280783613,93.95448424568065,1674984.47 +1055.6002124899585,56.29745968732291,-13.886995688890504,12.374717205986467,38.881632169649976,28607.06 +1259.7874093812295,68.42390776190321,8.251508399234044,-14.802997003097262,12.06762923366038,3062.24 +463.9216571558349,73.44630332894687,18.263181181251603,8.222758284274732,92.51476999489964,12225585.55 +977.538902565941,64.73865308947639,5.363897647328062,11.580078088270636,92.17558003561578,30156.62 +711.2104694044814,18.96115514960345,-15.904917567817623,1.6451049683115748,10.62715266695876,86259.35 +413.88957607164673,4.840980124972201,-10.24013632579368,-8.957264869835386,9.052994723654471,12311.05 +1121.6754802342182,70.9798953782141,-4.845024103043416,-10.621081011871585,19.328694362339263,36091.66 +498.13954582222175,1.7578955064806163,-14.985697952950217,18.96583882693575,65.03804242546029,0.0 +1262.967335454302,2.175703097829809,13.918724095002467,-2.528261404831187,30.959507677180422,574413.81 +505.4544780353578,7.373184152882541,-12.219792671169088,0.7530003086700354,24.77974161925567,90598.9 +1502.470862485078,3.6925797561539233,-14.8179569106502,3.9266292882213794,80.16339241481008,674248.78 +551.4349214534068,17.039844548148473,9.027386886132597,-15.97474386969861,25.144867870525943,2502.6 +1813.3131813970692,64.65525753473277,-14.926705949377151,-16.74818417657084,96.08130598753196,243.09 +247.17684178785592,9.595390477783974,-3.587222114059454,-12.074523681301343,44.40537955456203,35420.42 +1139.5952966823247,12.815666190872491,0.6203321900468017,-17.38683732549407,42.836804030054,0.13 +776.1885785957844,7.018874190054579,-16.790828252204108,15.938891502813451,94.41987231625328,0.27 +605.1377463942634,26.009878288707664,2.2315281627411476,-14.079029169376742,12.89286736767184,4783.78 +1048.8850024972664,1.589928373352243,-0.793439898000865,-10.937233123356393,12.37933391249926,11.71 +1715.6351653836691,1.2507766695555318,6.736651149078203,1.4924143788361066,43.92371959507443,2014258.82 +1847.4989699479677,19.172420643841026,-11.234162801053312,15.84816903619298,59.11961810243584,0.0 +745.8475126661224,11.74240594705652,-5.734834237467448,-18.03875133065548,51.298458135644374,24.63 +477.63851977112824,6.527036751093823,6.386213562399137,-11.361021694566906,95.53636694588268,53746.73 +1496.252805619353,4.655703172198631,-18.576135110357445,8.694016617951291,99.32311989692828,218.59 +1247.5977058207789,1.2694479192685024,-15.36820228825282,0.7671924764533866,5.045602899622917,58175.35 +561.8290676196078,22.967425950049755,-8.65792674739665,3.7807342645966946,17.382627547692064,36666.89 +1568.532418557386,6.965223740927062,-15.74574504371248,-19.321847801111787,55.80933962403275,0.0 +1134.074783435854,7.77205882535523,-18.41950123978767,14.672209318045262,95.06285667289708,0.05 +1376.1113591133335,61.21948936790567,19.495296905907377,3.1496291529587506,28.710915040370327,3843758.72 +846.8102611340997,29.86040989774374,-1.7696007127114255,13.374713528971592,37.34029320351417,1599.67 +990.3756103442768,2.7471748212598825,1.3473602039848886,18.549795082351164,23.87492978596179,0.0 +524.615777074896,20.622104964527427,-9.80380414471794,9.286459770984424,96.7750918583842,81259.57 +1561.7285617616135,1.8386989878579751,-19.692510323180823,-18.75958048953396,16.23180612735878,0.0 +482.6203834732254,2.4441493258761775,10.028967416327328,8.461178632074372,56.89177199340447,7445.92 +1600.9446705519103,26.810102937706624,8.950119289131226,2.538826974240873,3.2724536777690645,57735.03 +1636.4141387922548,1.785586264541145,18.90162971557586,-15.85841625183606,60.565602633360655,0.0 +1543.881735299219,3.63402493359129,-19.155916703807563,-9.182917481356244,39.85282966662896,359.75 +234.96101850573277,62.534622998720806,-14.519170624374045,-13.246361670592858,56.99940759205027,3064333.51 +691.6397826920124,29.96615051404512,8.48564195057115,16.99365553502585,8.945120628227455,123.83 +1043.0079370252647,72.26350715222222,-6.797054506297777,11.81133303229017,10.0159160520315,3074.25 +1271.9798816902323,58.03188584359101,-17.44907473958234,8.034156022902788,10.131986371317826,143779.98 +1854.5997788642903,4.218507678565218,-7.96167455265294,10.532825569860504,83.68334640620296,0.0 +876.0907498316641,18.39733298356341,-16.4913229802279,4.049842434883679,72.69352425513033,217995.59 +1775.0419737931174,5.719938459178395,13.504230224445587,14.210663510779646,13.709066732658489,0.0 +494.1727186463058,24.786126579575644,15.077326216183984,-10.855674060998076,32.2885915251908,679605.79 +868.3048775155286,4.976385813034321,5.47559687948298,-9.979817267195427,44.20679855156853,30461.56 +294.1076194783814,1.0060851615329427,-4.5761097585051225,3.669986219333987,10.764930864292412,39135.81 +1536.48072390012,1.541261855860962,10.7515698294505,12.405415964122826,84.15740999423339,0.0 +471.1749633792433,34.83570887397586,5.263610533565575,13.431538224348872,36.93069700881072,30704.97 +662.636028167224,1.4723480637274124,11.679279167767437,19.050125224177485,67.37857234023785,0.0 +1595.4198539477866,15.806851253157742,0.4362941867942416,10.491394983601644,64.55558532218822,47.65 +1162.490091360878,51.946587711515576,18.333796179627345,-10.69028194817129,91.51583126582582,2209148.32 +225.1508949532326,30.353059531282913,-8.398652220460185,-10.77397799532671,74.45156343794855,2401353.27 +204.02336854531484,6.7123963047504915,4.167397098009071,-2.176450201830251,4.408512342792206,8613.27 +1119.1891371318147,2.6134153076866005,12.322104012430229,6.006030824626225,16.35186996057152,18696.04 +748.9199247485507,69.99628253561073,15.7549127553208,0.5196806935293852,45.04327748813773,4714302.44 +524.5606027913188,13.5768607453836,17.869931595614304,-17.30108142987472,10.208967327056683,10865.78 +1304.4690878889996,6.4690442007341336,-4.199561094174702,-0.7239674238121729,39.7911767507602,1127859.97 +611.1856490913688,76.58000635410292,7.973709166830694,12.683947307025862,97.764196252131,626857.06 +1265.9728694329062,2.6917547477765194,-8.39211512078386,-10.387407501209015,21.34133798919452,343.08 +882.6787110552912,7.665910506626791,5.975172304578877,5.401304920696659,70.76832998354908,217088.47 +536.1431918056215,1.6492687051647814,-12.630947794438764,-9.211219165602582,26.733951512540543,18186.69 +448.5885281637476,1.7772991034041998,-3.1419526087088956,2.2267605909521837,4.3820049724114725,31198.8 +626.3490856291186,6.268916886595753,16.80948302727666,8.039155685447419,10.742381672930636,2211.43 +253.69779442337315,25.079606145159264,12.436252685994424,-11.71110992127774,11.285596189875465,472996.6 +754.6285316652832,4.761983522394617,-0.1397540454411938,9.581885216433696,30.602398712576896,567.38 +1823.5184423272296,23.943958174628136,-14.1261869580479,7.060739571177468,96.09449415314636,61011.3 +1696.4518265894508,40.77377654555258,-4.057135985434757,-7.4896016119571485,62.445426855678406,656183.34 +869.606762095386,56.90570777224888,-14.452840856443965,15.798987763222936,13.176686805007868,18523.27 +1236.500513447247,1.2286806197559987,-17.25889447390758,11.220565968252265,7.955365092595697,0.0 +1221.2490062253053,35.27469845995088,16.260455337808008,0.8453113294354697,97.10669711690048,537906.46 +1691.727570548682,1.9691746870166165,-0.3427411184394824,-16.69261630334561,17.964830012473268,0.0 +625.3221827305381,24.918654385799357,-16.424451485918645,-2.3751392652400316,27.77541437665889,1181794.06 +733.4974798274222,5.537642705764908,8.666743655792754,-6.805978919530533,84.3268608179756,478476.06 +743.2137807421008,26.03673934636498,-17.032739955241077,-9.502183600062768,55.93451545086444,867950.36 +273.5659815890138,2.677000726300822,-4.1533833142535315,5.742942452366422,23.44064470170039,29222.87 +766.4381539205459,19.497612631521353,-10.788378287498542,16.869206203938955,66.78132317328883,32.27 +1780.2447978584123,1.782494400022749,-13.41478867207135,-14.137829553221334,37.78135800094594,0.0 +1841.5777656286657,2.1851995143042218,1.341968320200242,9.66548975660988,58.57541796283199,0.0 +397.3436223833907,16.94040739442962,8.787584530403048,4.868595207905746,10.580542113281329,29176.82 +1024.5053749131766,4.715665412442342,-0.5124106088884695,6.681290314666923,88.13976162646104,64723.05 +886.4280228577504,25.55972319555601,12.832098195696666,13.807422615130635,59.95215805236391,801.23 +1080.846553922098,23.45950643821805,16.695477021544836,-4.981845572987051,1.429167633032428,5264.23 +1198.495143305619,17.50926761091985,12.287244181335332,3.1821742243078344,56.34855589998554,446903.87 +236.46576803194293,28.912196206113876,18.259666205740555,-8.927055670888432,36.84515903212824,3744968.83 +1716.0360462580893,38.714217115930566,17.16143885943511,-8.63153509583515,90.64692355474814,130041.94 +1952.5953317120093,66.50381585239876,13.30067355204891,0.5312985230762157,14.7164281432161,226523.26 +1376.128661606556,1.4488774691788358,-8.294695975873093,-19.707994006031807,34.037666843942446,0.0 +1388.8140292880646,13.902664086739971,-13.026717410652465,-10.075388300935836,76.68969016300801,60886.11 +1150.3637440952753,31.44514974621895,9.080454781593858,-13.934848947905408,23.298122914542475,3150.03 +801.6921410858871,2.715707010097128,13.821161370903155,-15.205282885457365,32.00233176301824,0.0 +468.160083523138,3.366993561812587,12.92494074541989,-4.614852702017185,77.35294030726594,322000.78 +1251.3140168528912,3.419232939611994,5.744897628322807,-15.825527633431363,71.52078910217254,0.0 +280.8945263165727,13.952946947758052,13.194726590071069,-13.828428738397424,36.608569342746854,574865.92 +1684.104621845373,5.399345728735746,8.286647776611606,6.748626508599096,47.27401997179376,15663.96 +957.641059047108,21.48767764955397,6.614634452116683,6.053684950459255,55.682787956431255,126780.46 +946.5576034915548,16.6141973138324,-18.136940093697525,17.80072919939055,88.90784609380985,20.71 +788.9075452566303,20.616914325774975,-1.581018882321441,16.81092954293495,66.48909461946398,37.14 +1944.8369996574556,3.1962094676715584,-18.64615545641888,14.957613902231524,59.65738528053574,0.0 +514.8505149872939,34.256481288993,-16.3051980820096,7.638174455647455,81.28286876030283,4916226.49 +472.3540786553801,21.28487487768841,1.640186125324168,-9.33642552417961,31.128398645510583,36528.41 +497.9567027810543,1.825152784201892,-18.100838644230937,-12.873690363601828,44.953452477535734,52.32 +1385.3494691313751,2.5138867262129696,16.528815308627,17.97671285187478,68.97875027726236,0.0 +1985.411573713277,3.9988056090454704,-1.9863617133408784,18.385159599588015,40.98382216181627,0.0 +623.8553067231585,74.4874343521964,7.998665988581961,0.1773812683967834,48.42889306271029,709236.56 +1830.111314721478,4.494689829396781,-14.088192701478288,1.936547125943564,16.877995884400157,419176.3 +701.5098065747103,1.095867797810986,13.903810004198473,-19.78508480839505,61.3922087775821,0.0 +1366.2198562255403,1.919780054702061,-0.8773233466909414,-14.056576147058472,64.38324172473891,0.0 +272.8981134800619,1.1596946330658615,2.3510367845145197,1.8397719401521284,85.76238069853417,407012.06 +1092.1771542371405,6.392614098776202,5.939367194568139,-12.728275378244662,9.455664942613415,47.03 +1378.2259393021673,39.292241253308994,1.5959301150752658,-0.8508263244500736,90.05837004679205,1402068.96 +1165.3755990007314,7.959239280163588,2.5274848901938096,11.796632136945844,9.506969704048108,0.07 +628.1036927872241,47.6418118446883,9.78093315823845,12.031118467119056,74.78452144092716,190879.49 +1691.294506882248,1.2446826697467184,12.258854831887644,14.466332483808031,59.31262669848195,0.0 +1946.2457202288329,8.698527249258955,-7.753357463258497,-10.571517020738344,41.200275716137526,2260.36 +1026.5529722457177,37.51031785216291,16.881971801964326,-2.7241088449636663,92.42424832904264,1806665.84 +1344.6546773406567,22.358591191693577,-5.844132836169869,5.0738167694107394,46.20033880510816,249339.54 +1622.7438830220306,50.77513353954825,-9.106975752086356,3.2434428814129035,3.449987910269293,37857.64 +634.6803091192292,3.529144556953524,-7.542783114945686,19.96292723956251,52.538266225450386,0.0 +1756.0106874718138,10.03925747338137,-5.659393704486844,-8.948743351674896,53.71337315207214,120961.08 +704.3616295579956,22.58172720560714,-7.322775767616054,-17.14642198367439,74.69307945327193,2719.85 +1596.4954463274298,2.1726006859407145,13.75000707539182,-4.485519548705588,36.46662509744061,657021.8 +401.7786183675597,42.81672340186191,2.446107220719287,0.7205430992572959,8.319660463737392,46040.55 +719.0960661455055,4.197010943185318,18.70581527749417,-4.51043127857206,35.59723733316684,32584.41 +1160.515881091762,1.5367902899985062,-16.641776984970935,-7.225433367821723,60.65851526998178,35432.73 +1144.8597722677673,33.99402436575236,4.559206961988651,-9.709623373739866,54.93052035681784,138123.03 +1730.7761320754591,25.706086196458305,-16.159028106679656,-2.9006255779884915,84.85230238083253,700791.98 +1993.029063749493,58.52743705572539,-1.6459966127788703,7.56808437585204,27.750037900086188,42872.18 +392.9795225482531,60.83443667784167,-4.690599098664494,-14.045373187178418,57.35706510884919,675496.31 +688.4986390850667,3.6062146153231343,7.230996604478692,14.621356915091225,97.58328121750364,0.0 +843.6767784015365,19.17456633509587,9.817792531247838,5.644889546733203,32.05266988633258,70835.32 +1062.0531340580092,99.59693929080234,-10.476253917372084,-15.705179871031302,44.17391061405342,44540.68 +1089.0375376779184,3.073357610369031,-12.251407341123851,-19.059216429181586,99.42820326754288,0.0 +1741.15111366715,8.825784867531858,-3.219582698910086,-17.945716906339673,15.29637670044224,0.0 +1587.0067450131796,66.1199823974574,-10.320507979885036,-16.38526398370205,57.78528236463551,1300.39 +233.93284226831597,1.6075307273523296,7.064960284848563,5.741563106458059,37.66455963269614,45621.36 +1019.0391690497382,71.8620819355803,0.7079059905151253,17.634260391649764,5.568096468933471,76.36 +1312.5329088393598,9.469154205793789,13.07908071725592,-14.6678622347469,76.31750054107921,1.53 +1028.7120567674422,61.105679400520714,19.250881691146972,-8.626705995578675,20.68434722817368,2768982.55 +435.16146084626416,17.488107798657335,-4.8756854191809795,14.634030441609015,89.31352068537348,8378.8 +915.4533506431668,22.022726942183333,16.47986869903251,0.2269367773007591,42.36702219915248,242053.63 +940.980251233525,35.153737290889154,11.08688948617344,-2.914692566259882,15.31790770346161,86219.63 +537.8886604095658,1.3622982036987874,-14.03506353978432,-1.0707548905356568,25.355454016177013,181752.11 +1561.3528060477165,18.010952384340666,13.437132287680203,-15.955183252682511,83.45434173161274,0.59 +778.5212242564583,70.44894431484691,-0.7397075078905635,-11.216415826846012,38.01406679560234,43021.79 +1260.1771230235092,81.70477679797749,8.366434848007703,18.48066879246786,26.370443967425675,56.11 +1128.3143257257816,86.42569646467439,8.104464172787962,5.736992413647126,25.645675618724443,63452.83 +1779.3687425894998,19.57337688595489,15.438624159508866,-8.54859078412602,58.73580785070306,122781.95 +419.62687735310874,18.474542663108956,10.446588137995626,17.879106196652867,26.42561216906276,8272.2 +405.67341485622825,12.732982246790478,12.984949524715676,-4.100189310045685,93.59796691246608,757229.25 +740.5754044214284,16.409929615368068,-7.16352243451174,-14.365441461275308,5.88738743553864,650.28 +976.1869426265032,16.758527669433665,18.925501038479865,18.612658234059552,16.429636674685547,1.41 +737.3760477538511,1.215672344666296,6.4636864810713535,6.637262517413953,43.46672621034168,15152.64 +1573.7367483114388,1.505714289197168,10.947665779146645,10.112618830732051,21.619350856480978,0.0 +641.4785175967394,17.331379960836355,14.355251420508326,-19.099526810892513,78.08355889747965,985.88 +352.5945369900405,4.250429920397632,-15.048671223564035,-8.674182608554144,91.7377034343042,117245.53 +944.8396577914656,4.007291821244668,-6.543565020423969,17.817106916238657,60.418344374563056,0.0 +1592.082718649271,2.4371444947171,13.437438859463162,-13.77897980406554,85.54790955044018,0.0 +1731.0114984561344,40.00736411836764,16.879279645290413,14.939107995667378,80.25804797481202,11.41 +1520.020727054031,84.85100829148183,10.2437368821149,10.818718224607524,16.704059855925763,4700.47 +1204.196021299539,18.010095113739236,-0.7076427379736705,-4.859299189751152,8.73670681867956,120163.42 +1503.545063148518,77.77495906725913,-9.955109455753188,15.4689213173457,63.27424190652376,271.93 +1426.5011635469505,58.58255555137665,1.0010995970724057,16.908276742259837,98.26986290361286,24.76 +621.8599384911096,2.7280602453290443,-4.107991009936498,14.674672247597332,83.35885879825378,0.0 +1191.3660059657486,2.027924594577531,15.425231851692908,-3.7007961142577184,62.013687534144935,536528.08 +1587.0967987491777,2.6495588553610117,2.690600365650835,3.485402111964895,11.983390513690278,325710.79 +770.8171913752487,1.5574666924563445,-4.317345925766358,-7.754839984678195,78.19153980860271,197518.64 +1377.1516640904763,14.647325540600304,-0.060803179777551,-14.801872974080412,68.61396133659208,24.19 +1066.6647695338372,3.675361702769013,17.342701748931283,16.084476495964047,93.45418689235244,0.0 +1105.685931701036,66.96276676259143,4.530339141255206,19.246257546099447,71.23129415209262,95.57 +362.0990680078875,16.858368647089463,-10.840823995374684,-17.656556457553965,11.249331169228288,15915.98 +1399.1908975496835,5.238670841700561,0.0031031615868881,7.50950135386963,61.31036718984656,4426.38 +1758.2366636381362,93.17110880157252,-1.373670520230066,17.969946162894175,40.97244010441045,4.09 +454.57631844655305,80.61001310990201,-7.583828995736868,4.316708615567033,42.71685747370644,1321044.25 +858.9901919896089,36.077004503254095,9.451980470823717,-18.11617254797526,63.662388599479904,1555.17 +287.601418713503,38.31486951640962,-9.268522021968288,-19.403447092483503,90.0672210422062,1524489.96 +253.337394757504,90.06172542922053,-0.2980402015117667,0.1640959903305683,76.21829594568695,3096875.25 +1981.3852940091388,15.882265263689773,-2.3581318825972986,17.597800328419446,3.2080242319517147,0.0 +1088.2487149514925,57.54925404477878,-1.325493310168704,-8.845376118987964,15.55289607323143,48169.8 +839.9342335434435,1.3478930828636464,2.671022298950936,-5.98695041941701,36.95560311823533,308443.78 +694.7787379250341,12.826998351047934,7.331890642303915,11.839763787452164,68.78428054820652,2661.75 +1964.0227609009264,10.116555744641085,-14.280006292569723,12.066468120677952,63.785273776130545,0.0 +654.0514139390306,1.1897281142511795,-8.466995931846792,17.745561125506192,50.8650318170108,0.0 +1506.275112327938,1.4924643657081595,10.91347068918255,13.54687553291036,43.58317058165079,0.0 +710.7645724506808,1.105803214404785,16.309814095464773,3.756842401678284,79.16682660774521,181425.23 +326.8811096424544,3.872844046576137,-18.213720558499094,17.55018400926621,10.4740014119923,794.7 +1429.8979061322943,1.279447467580114,-17.06537699595787,4.576722985638773,59.90887011768326,119742.2 +202.9355257337568,7.019713211724843,17.35318723453132,4.063166687538224,81.04081337865856,7724488.54 +1416.347320809025,42.21753020237729,-14.082364216542569,-19.379898370984883,27.968238430605627,1.61 +650.6778781816816,16.89116548842828,19.17156522148433,-1.781711560252739,21.022883815992284,1921403.34 +1542.9876177287022,22.26280203988454,13.128885271757312,-18.281952889921335,67.67250954961922,0.01 +1585.550301231169,1.1561478455381151,-15.171822942093767,15.950782580720707,18.387448303357157,0.0 +1503.3930298715682,47.758724610924695,-15.898997871077423,-19.581175484349984,49.3340049538239,3.97 +244.0701946416987,1.960562803393516,19.091877194594964,-7.719923910754356,92.35988498238255,1956643.98 +1466.7259153587831,4.029969433006787,-9.807088012709263,19.802664967403608,7.008045265522969,0.0 +1982.2621053003736,10.804079964130452,1.5466880662247329,11.802601241828242,91.00584752575377,0.0 +636.7256633461212,72.44140452752025,-10.550571873200116,10.306762057709095,19.846017260152234,278427.91 +693.6294300056094,99.15128265200678,4.026980525228554,8.51522906093245,48.75236971084901,175449.89 +1664.3477892449712,36.755418095366515,13.601141756440803,-17.950379125255118,14.09072241191428,0.22 +488.714249100945,28.74937762913518,6.276367455911087,-8.472013670253133,71.27700989960061,128662.8 +1389.0506159081929,11.359642435708594,-18.135333642214356,11.93813618612241,99.77959143953385,17.68 +1559.0474795010412,21.44147588884237,3.8075737453499943,15.822077774228536,30.907814998186097,0.0 +266.8891912748429,1.944680909537511,6.440665383998656,-5.9977616513619125,92.54474722532116,274302.96 +1196.771769677407,3.4545560314365176,-11.964079948754126,-9.623350428235437,73.26648163786882,18358.53 +1236.5790653645893,93.17206628757911,10.48471602963176,-10.564186613604974,96.57689567237992,203608.22 +746.1972153052295,91.03953824245345,5.07573478516913,1.922555483972821,67.50774071560575,300004.24 +1777.420404915531,4.425321108848128,-19.618112918637827,-8.34052641070469,68.51856147923358,2522.56 +492.94949473974145,3.034569895923575,18.022202920800133,-19.14652831176014,94.4306256208254,0.07 +855.550477110549,2.8776379324718757,-2.1768163856248757,-4.370004546847501,73.01404044991041,1021739.36 +1727.6036368651928,9.3267163088384,-10.704841679354452,2.1493399802117796,84.897760868123,2667572.68 +543.1569618907865,2.8024195859674563,-16.552090323326194,5.369722435615989,29.1726843653674,16553.06 +1678.473445389815,19.814962971619934,-5.022842415947135,-6.281811482803112,17.71927459095806,307230.72 +342.3245192623203,1.4113659080218874,-7.68923555793712,-7.444318223409314,64.36549269536833,176321.13 +1080.612320941982,1.611960683100908,-8.081874340208767,-8.644929975198359,26.00814333948228,13084.7 +335.59519240226615,3.579880666268836,11.72804565300341,4.933015285885207,43.554098286200336,59111.39 +1420.2264531107255,35.88281175530044,5.836846220054874,-8.65498609412947,85.70248938669592,433613.68 +1623.0826803000805,4.431789029381362,-14.67787956275985,16.674112655375566,63.476936845681735,0.0 +1729.745386844245,8.742458201167464,8.32296414780625,-8.732504783739387,94.44387745273713,237879.59 +1966.27205133918,20.57046418948491,8.939280216530175,11.637439182058156,36.11662775900612,0.2 +1409.6283001392562,37.7641613002466,0.5707452104342492,-7.210758169188161,28.78157651774053,244698.24 +1584.311444912037,4.113561952922971,19.830680614157934,5.389625555550799,22.15766925670158,5522.57 +1110.3649009783928,28.96935476942721,-8.660829074875828,7.9606290215306785,97.660509029612,85911.71 +1842.926422126027,3.7336603580457632,-17.66177446878464,-13.025066005626122,43.53414868018058,0.0 +1358.7650879590326,19.45057375588676,-18.847751594029752,-4.8013583153531325,92.0877797217593,267484.32 +1790.3925312524182,7.975543380548984,-7.178077683524764,-14.8967196877288,35.14606655704757,0.0 +623.8136306249855,71.32727602284045,-0.0832811166539082,0.4262257146517623,29.484973995145623,67428.71 +1094.1280052925158,92.08455049130548,-16.870757636324726,16.376824735598426,77.31264105840633,361024.18 +1513.6740579148473,35.33834573544297,2.6319443670349685,3.8494334305731304,62.18826542547587,606437.53 +564.8991582128299,67.75302206161773,16.03482260985192,8.06640514161954,52.94163098747332,4758107.16 +580.4116278715609,1.8750311368991572,11.8745125895598,-8.677846531121173,44.58181452180171,56144.29 +1960.4769327301472,20.36703994208492,6.89874255701965,-1.2709777251376142,47.17698762041222,1981690.83 +982.2986493269708,2.493078096551461,6.469267781761725,9.631150814718508,83.61046104449073,1.59 +527.267815262789,3.580445025754284,9.212022633312849,-14.747940641543916,16.158203330187273,59.93 +796.6349875667108,11.108271411114934,-0.2317446287224678,-15.13166411761306,6.053132014946562,67.28 +915.277066878666,30.477163022111117,-3.928007276486589,-11.02261584103674,1.588950691710025,1930.96 +1321.5534634463982,27.732444236139013,-7.733779875429296,-10.528017409653453,50.005282281911576,74794.46 +1861.4263862859543,54.81743166832298,-16.015265408092457,18.4959173566021,81.98238861894868,0.06 +1975.862136659764,13.138618555752084,2.486501800716301,-13.655662797648803,67.4260332862396,0.93 +1373.0577660400024,71.23366782745775,-1.0992766328300174,-15.793807780984691,99.05444837833198,11643.3 +1459.8602494359045,59.672906465363454,-15.24388418645982,-14.492699534548551,61.38657766987046,8285.87 +779.2925054538603,49.9016584035577,-9.269210057652128,-11.883558246400304,51.40017125033367,64643.95 +1742.8854718077482,2.8776648737660326,11.488116407218609,-5.251215533531544,58.58068269301277,1225006.52 +592.0370033965668,11.55835386206226,-9.775838042410683,-12.113863783509736,88.33512032627115,37937.35 +391.48516875974167,29.680635403341753,-2.971234278160635,-16.48799285750554,2.4492310571738813,1757.26 +1951.8607821757712,89.57875366555425,-13.547693765696732,-14.535270109389105,47.18350623915801,4501.96 +1755.449618276958,1.0551022458843178,-13.20613552018406,11.586720945934136,41.70583454375281,0.0 +746.5612421686401,4.51054549770071,10.253828745706564,0.8030218754949114,95.37844746489088,1102484.15 +1415.3072894858883,4.8383859145227746,-17.33303195419163,9.8352438647146,19.5386739516404,0.24 +1040.6330433437593,3.7763230510074552,-8.59895424283244,-12.932023493723728,3.52910113462382,0.66 +781.6307710618476,43.13686701128395,19.233779599668168,-7.793092674921285,63.536480049119135,9489130.65 +716.1935793685308,1.230673568630638,-0.964283444449392,19.292217973538147,62.876874842663405,0.0 +444.84940139763165,5.234431249323439,4.248533709392208,-16.573272812433977,32.61448900719838,237.75 +1188.7725480965107,26.507527250826584,5.631584030660277,-2.453184647020019,54.43526985910331,751884.06 +1003.874042211514,6.508477955515305,-12.154452827766344,-8.169175251583255,60.07084263924665,178368.69 +1121.9355565398998,1.941454278827967,-5.226316241273046,-19.70662116165416,35.950888501440176,0.0 +587.6429014629281,16.661148894029697,-3.97173448950626,2.098074830551324,42.63066499199915,146868.43 +1889.499207391846,11.097380389636998,-10.77267196405722,2.000212071182448,15.037950071240196,538591.47 +1349.4641533949748,91.97666793899944,-10.640647522418728,-7.181574784819533,77.33147498070062,368982.35 +1819.2811832900063,31.408879128293872,4.31477226007702,-1.1096576305783534,39.52897028945865,1234196.38 +396.6880988589598,93.83221657812052,-15.66097635953545,-4.322098568876829,64.90453881912339,6622071.92 +1321.1317385411146,2.358876925976053,-14.834182140030112,-1.4317718579930228,43.23635269069062,667114.99 +1729.03127355949,33.357233003951904,2.9320819542063736,13.921942647230043,17.063314183747764,0.22 +795.65740366604,12.684590151256728,-2.0264773149108217,8.55893228822421,70.36333151493231,29290.91 +551.2577044447755,26.60841456928485,4.477338633047938,-8.790215045681208,42.316327290390554,61887.68 +677.0383504501154,8.611978263807448,-18.92161942487595,-10.418360182326063,19.35014673100155,49405.89 +691.2807081496381,2.659387599988758,8.196629091058707,9.008706109797364,93.41622731766296,1212.53 +1004.9581368623632,1.2344494966419124,13.995585673480823,-11.019408182614354,89.43862936144862,11.09 +786.7344850027968,47.487194722414465,0.9656119492565284,16.303434554738736,72.9886663958873,2665.9 +688.2933308743843,42.6203191199366,13.633612783704528,13.312659754792024,58.030100239460616,221122.58 +1367.3221371292482,2.113875803237913,-4.013493890813571,-9.899238097559875,62.893732054856656,961.57 +295.45826900939204,19.514696398055417,-16.843029647357266,12.0600101172292,36.660499883533454,1890378.12 +812.6548006515139,29.885973089766377,-4.898233179234492,-12.346099374899309,27.032055453762435,18330.59 +1441.5535386928548,13.03917129772626,-2.1452644671355214,-19.005559488165797,59.6143374360629,0.0 +516.5295487058107,4.309806841145841,14.621508080394058,18.44482422226132,74.26078135211435,0.01 +597.6701519832422,57.79520444833449,-6.611339473392626,10.45402657569062,50.0191663515288,135666.46 +561.1999257432515,19.269980495815844,-7.395966986843345,-0.4390633195819893,89.65920796184294,295158.07 +201.6669921165289,27.569889409149464,15.520697379375251,13.728376746007068,39.452228973366594,2014562.71 +1052.7819532968308,20.147866242513828,-9.961359869341138,-16.967146411200815,38.27074129318406,43.16 +270.1258209490217,27.706224132442376,5.6978614240387015,9.587297519040172,43.12657941041856,581807.4 +691.2916611948202,1.9504476119391645,-6.9346514831504225,18.25302936556657,70.71566130690137,0.0 +1990.6461642655488,70.01462976551966,18.058235587383837,12.743627441246472,3.718162972544896,529.05 +1853.11318050254,3.7292508373660938,-12.415002955463992,-2.732971573669074,36.0271383896653,1437417.31 +587.1364546814016,47.10884387059856,8.957531354987234,-6.147562935037514,74.5489745130689,558630.96 +758.004377445079,61.202393690288055,2.002564370636528,15.69663652933498,55.92178113523432,5902.7 +1034.6682480833929,20.065371889833298,19.14831278964283,-8.339717998569602,31.677995112732543,325757.74 +1719.9443839866385,15.72539358970164,19.762257511973583,17.497927264920534,66.01515732523677,0.0 +1644.762694507564,1.6523286085794568,11.747924016957167,-7.206020167634799,90.2120402529318,198241.47 +427.23458581930794,7.454910813538371,-15.86175737546672,-14.999407513116031,51.00751818803295,17874.21 +424.0079270270338,16.72202118479397,-1.2397222269315966,-10.564405117426157,74.1842904864574,64974.45 +950.1180570092804,1.4579362856254068,14.180518924261143,0.7793314148347941,20.64314516019948,259055.18 +1766.1717013047898,1.6707982932548875,5.539331643650756,-14.755758490652704,47.82648696892998,0.0 +1787.752998371904,97.04261931204807,15.158775739364838,-4.801713768111684,29.838017295649465,272873.42 +393.2585294357543,4.618152839153852,11.974648399819174,16.2342259778571,99.28612534930998,39.84 +1233.7351183379928,5.005701804140707,-7.481580774588883,-16.244494294145824,22.65461449624231,0.0 +480.2153548252032,3.1846250081548253,-12.1973848251353,4.581768985419399,94.79366016056603,222377.29 +1435.0327580050089,19.590230185370466,-7.097444026159829,-3.8494147069227846,41.46335848277458,867515.01 +1849.5798462720315,8.833885657491766,7.837799642143146,5.898194096399685,50.33651682606217,146472.39 +1018.5847264560686,38.09446816145607,-0.7574009543104809,-0.4156763984513256,52.86529216742832,417026.78 +349.5489944456927,10.59228515044105,-18.24607182631241,15.068201485002035,24.939112004759004,250911.97 +1242.657552610182,1.0735739392722266,9.699079275447303,-3.9000695182792366,24.65473199591957,633269.54 +935.3300062445384,9.233679170248807,-18.21212534172547,0.3371403259108252,38.22734510064837,71883.35 +1659.6177542011285,1.2893611527659634,-3.6278295340842215,-14.794517856313645,74.77488446665397,0.0 +812.620035067498,45.03734297702386,-1.508625035139266,-0.3877363565624181,70.37639723463995,294669.78 +1774.8149608506606,1.6877812969611226,0.1210740617923455,-15.410766137850285,99.76294180201724,0.0 +692.6607337426128,2.7158640723668275,-14.436364470383536,3.3251948804308773,9.749357085145844,42459.82 +483.5317445996347,8.316306472814716,9.911607252337742,-2.9042496955073105,76.1703413801839,307441.08 +751.6646791734438,2.4567904248022217,13.974889212858276,11.334840136312714,20.29848292239583,0.02 +262.84842528094373,11.979533887654863,7.916022071572302,-3.2609209014922858,51.591012679270975,374733.9 +706.2427403736343,8.344433325978503,18.042826165644176,5.2238167622984655,20.44180181854405,44886.32 +1388.2117409876553,80.36097954045644,-9.69997442481896,-17.640305198367724,93.6739193717456,3110.52 +456.1093614018662,1.5022669977847205,-13.570796244528868,8.400738467813479,51.21216720625715,2341.49 +400.4569510158583,14.238495310313516,-17.308189556908985,18.297351286477927,47.48132111523152,112967.28 +438.2935242578307,27.593018955377534,8.860789436562207,-2.088850728695655,31.432721386571203,253078.63 +339.59301367063944,1.7999233794625351,-13.515709178786247,-19.606037715121232,45.44639897572582,0.03 +1774.3437413172912,18.746675223109012,17.527256989659477,4.145866232306306,11.959081495795877,22688.75 +1899.4072078937504,53.515317740534584,3.9340190610775982,-14.192909008499749,68.73475132891592,3516.41 +283.8100731118153,37.593372400762405,12.165426651889735,-1.2812612012641988,57.496070720092554,3584414.84 +1568.1292067783725,74.18931835819902,-2.6120634778596497,-18.70177391371774,10.856774055657954,39.69 +1526.873144090956,27.61667527965441,9.393834554878085,-2.2875344062331138,11.135321222644258,242294.92 +1994.4369642980728,6.137247806458013,-2.2539547444196018,14.979434218780664,30.00326180164657,0.0 +826.1671910979227,69.32705776757967,1.550552312560991,-14.584529658500296,47.83762081997067,23935.86 +713.9161850427491,2.8230172716156208,10.94326932076247,-0.0669710791312105,23.044074180089236,299651.87 +1015.547817457689,14.702952597033832,-10.47385777830073,-9.845117016616625,14.00206476059903,21296.72 +1741.835318868543,33.98723936636998,15.3803805244676,-9.55877424435711,10.53781596780608,14300.96 +1511.468556568218,55.5344319591256,8.651953158784522,5.732123443735495,31.205630381150065,123528.11 +1048.9228651415049,68.09014549628294,9.861605383838429,9.931088618689392,63.33159036326235,45495.45 +640.2131179145717,1.478942532800369,-10.473479731900026,14.931414290866618,68.15816548238587,0.0 +1508.628334283068,28.32163613920543,-16.39490466618069,-8.870151826655022,29.003882293863683,37024.52 +1738.148362475953,2.559815042829658,-17.08574194977187,-17.168950525791935,44.61753943639901,0.0 +919.9122159214836,36.16087102298662,5.880662393266878,-2.308712312209442,63.21752804130908,411804.32 +1403.4538024777717,25.198777038680145,-13.99990470269218,3.383650832843159,36.64440222331146,234290.5 +920.3816381178768,2.305179332601661,19.967658015782156,9.583223491575076,97.88227343294584,1042.8 +1061.2881886546727,46.3084606591905,18.44190644162328,10.24286749406675,69.58014196586453,1229213.84 +1144.8386839188445,8.386439301556434,-18.832929721972324,14.54468898114027,58.26373290367789,0.17 +1596.3064652401004,12.238052270574416,9.002303537570846,-18.753429461622897,50.29255981094393,0.0 +1959.510771432076,87.66121930513692,-9.569117851370676,19.23992241359132,49.702719643084095,0.03 +999.8590927488184,20.570799681203795,-6.36400860357877,18.672626792437587,29.881093616411476,0.01 +816.1670112456907,15.03579133691541,-10.387582518391415,-18.57811762234157,8.646877032087362,2.74 +872.4638116503044,1.0802531583253008,13.22182492435514,-7.468178695600911,83.95348012894496,128211.41 +441.00032487532695,2.502820307899382,15.750093030182818,10.621704930941092,90.63567305890632,474.51 +734.4897280719009,1.1301363452936728,-18.38393772979039,-0.8595847955547553,97.47644683613082,99653.35 +355.6053438838512,4.641141948401136,-9.19847547291793,-19.814330897853537,40.99343653184392,36.91 +970.2096737226448,4.88671156749601,-2.052061507276597,-5.811368471389993,94.69423351829364,1016621.72 +501.243084759888,11.49900176894832,0.87288126336035,3.157557760161085,70.53383804714821,195324.51 +823.5321427539357,23.96276308461708,-16.494124874261335,15.183204965633005,42.79008199121949,5879.87 +1628.4399489048913,2.283969729946711,13.201127719031147,13.170060637007865,91.93418800076036,0.0 +642.6697710604449,15.97014434955436,17.35919598220285,17.8527763492804,96.88429531280204,5603.02 +1301.410318415724,68.22641460031272,-3.885396681336002,-1.2828725803122951,53.85924848905348,533031.8 +1822.126554647503,2.344313628591615,14.289363190640527,11.93095222725631,78.18487740005025,0.0 +1220.4725366531843,20.805399553142156,7.05419560254259,-15.970576281797108,77.88327266183133,112.98 +548.8267029903428,1.2336111397927954,3.669744443222256,0.7383148462268396,61.27457746148587,776718.44 +820.5791491387178,11.542377354624168,12.762005997590409,16.663230567117843,42.854798394262865,0.06 +1262.6645729313188,30.41434823758028,-1.0788153162989025,13.55390433258985,14.29994925616947,23.54 +1111.9000515677362,1.1697244354522824,1.9086426392375475,6.224393975162594,99.79730413225045,54176.64 +467.5157052984269,4.648692100776733,-9.013365615623542,-14.0318671330998,8.094815151690868,385.27 +1004.233420443024,57.005133985934414,8.487390388844078,-12.716749605478386,14.351119629588322,10661.83 +1177.520050838447,2.824617149634108,-13.637511930076904,7.146091238080237,38.10397918864538,2453.16 +681.1988860236304,27.90931059144314,-10.273537410781609,-6.977287207159963,40.45642617978946,104538.87 +1302.4019276117335,16.76781786149139,-0.8031618314614253,-6.82208210511237,27.448228759360138,275014.12 +326.2881790733777,2.125080234532497,-4.587500566478631,13.904911458635231,8.729835640055134,6.37 +805.8926604179302,30.437923975098315,-10.41686651357464,-19.18131469259808,90.04200641561644,776.12 +1647.698298999634,11.592096453079709,-12.324458138934476,-4.299285079360038,51.812594006956466,1173562.64 +666.7126416346798,1.6751418990944442,14.435887072344604,-10.471180415962786,97.01438693401047,5457.69 +1289.3183300055407,79.20321423300133,3.6343558955733224,-18.915988921010506,87.91862946024014,1767.71 +938.0534846785616,9.63660501040922,-4.904293639518009,-11.337074770330313,49.907312716665274,16923.36 +769.6282563474442,30.91446033934306,13.83121803798392,-12.63010022084623,39.433995855663554,49195.56 +1849.0370382380484,2.725213496214245,13.00641946846131,0.1789697884994545,26.24977960570675,997027.95 +817.8710925446903,1.880903085191004,-15.564517723846912,-2.5923307816189123,99.31186158061662,604488.85 +626.016622676633,30.381803621077893,2.691425056529204,-1.1320189788709234,60.900682521942535,194069.35 +1836.742368152487,22.266315431039747,-7.775483330703494,15.11645167686854,84.23107577953242,0.0 +1542.6998406844668,3.5335836389890276,1.633394987638055,-0.2228651324855324,98.4823295506518,3967237.36 +1427.2394846567552,31.086145186663764,8.719952685748943,5.5601881804461994,23.17066733682159,97865.28 +289.16289572037647,10.232565234571933,-19.659696401405323,5.899331317590595,92.55925165566045,13201085.81 +436.1689292883965,4.979600630937174,0.5427004230277888,0.6749758281466889,79.65330196270344,390140.94 +1349.011934857393,37.47862376285713,-8.330706397610182,-7.809028729331544,46.01009597201621,289979.23 +576.9791057472684,17.12243377240882,1.360436006325858,16.12634400412691,94.93046236291129,843.63 +606.1483741346464,10.34038554638046,-15.606314236866435,-2.472979210199746,59.39963335490356,212533.93 +1602.4493276184992,35.17338724679256,12.702656729409869,2.8451193126456387,39.974868191291925,425757.46 +714.6649079064968,12.292967108576326,1.7467380800412124,2.365772988157211,16.830628254083955,97124.77 +328.8571438734488,75.34750324350262,-11.557461982533413,13.105521669948644,73.06171837754327,3170755.86 +265.57750515775,43.26247741443973,10.787389158000948,1.384833399068306,77.62904035206803,4136958.07 +997.720377041518,5.204453654140154,-18.48870286722035,-1.723884692320321,21.484241957942658,27897.91 +1310.8314398323628,8.508215886173627,3.712935584618085,-1.5975590022431474,37.81231420697341,996185.07 +1763.9934201052451,82.16107962204423,0.0704650646266191,11.197943766545444,6.449159835907553,910.08 +399.4479110587507,61.71756592078196,-18.414199389597165,-6.800995676867414,56.16817007334791,8276607.46 +554.0110873189334,2.4119654098541883,-10.01178107085456,17.39404561572635,60.40646460137978,0.0 +1153.641099633448,3.5367769022618902,-16.9143823647644,13.864158302710475,84.97728279619399,0.0 +855.3950520355552,5.356005801082048,9.295477300170637,-14.466096027999566,3.5888509343029056,1.33 +1068.5674122418902,57.504002232254535,8.23083879815837,-7.310439160260533,12.845076568781884,49962.04 +1863.4243681715875,71.58707598772828,-16.428081278068397,16.22479463538363,4.1252134727030105,5.24 +1180.804976956437,40.242085700137814,-15.63171261365384,-8.865146027939232,94.5004108803628,237950.82 +947.2170991017368,3.5597286349531547,15.211288542290111,-7.293669789520361,51.77584427269033,105299.13 +1980.991832059541,59.44695489555337,-11.966102279881332,-11.301760585645368,25.35399128834538,26514.16 +317.38820581916536,1.163488920162812,-7.853557151293096,-17.82423786544696,2.8910935746313076,0.01 +1877.8042070681097,7.008207657789676,7.371206575749349,-0.8617548964134603,10.555465717901257,526649.28 +1102.9913157178694,5.691900042310832,-17.571071096434512,10.19412063222338,72.29562676437442,21.96 +1106.7614079808486,11.761946829222827,17.906260470331297,6.399896351637375,48.548059815551625,15593.64 +1859.5358015657769,13.22151172481608,-19.0796397161948,-18.89500111237084,73.70799382059069,0.0 +1113.183163267525,2.8236377124236003,13.9657004506307,0.93531625460348,27.253914305637412,399594.13 +989.1327629542678,2.5651419644179763,-5.563757737681825,-6.7884345522172795,44.515401414152784,284953.37 +690.4794658109582,40.469998061062995,-13.998403106906643,5.6715474327796755,62.762388440000045,1090608.09 +1385.8701802713576,1.4203441787988218,-4.900356837183364,-3.7936070302098863,22.01943330595588,666316.99 +1225.3611637635709,9.695541904206088,18.913661979421455,19.221203411984963,29.464771637942256,0.0 +585.8217865060095,2.4170899532148344,1.1591114111255552,13.138006653429397,15.019139982806053,0.01 +1476.9432471103846,4.356467216837289,-17.628792537781337,8.014836506199416,71.4677589685092,46.6 +1359.356343205953,3.585822915962278,17.66167462282517,0.6266824527965564,58.64684664275021,191977.43 +915.2009915717734,26.124287339497265,-14.257537814699548,3.6445151228490418,45.02257599911522,132137.05 +207.92165942639105,8.166598537398135,-17.812495583991776,-2.314578466971988,57.16635495708215,7204789.55 +1003.846070317138,3.9708517108553982,-18.182963674096975,11.786286833981908,17.80908838341025,0.42 +210.9046108344531,45.99429813227782,13.053395909080834,16.329365487475837,81.47572073390054,3247595.62 +334.99728073827174,1.4845344579508726,-13.87923162434911,19.963804536962783,75.79134511494873,0.0 +975.0978244655014,34.097402086813354,-12.840684211252851,3.95321193752173,19.01833494334258,58032.19 +347.45579153358983,3.1378018577859117,17.76461402133513,7.275417189437228,88.6854746050341,300938.97 +696.1977808168992,68.55489109335339,4.46444581577115,-4.005499514001745,40.00359539235042,117585.35 +1379.8844634061431,1.0259310422479424,-8.583233550594237,-19.66107211012824,46.9000769738366,0.0 +755.5076166969543,12.981553715442654,3.458189790705055,8.1294707696029,53.59476248917591,34501.74 +1995.7674694187187,17.560220625599307,-10.276299259625311,17.361417402687746,79.49679777159781,0.0 +1849.343661046966,14.275806913246436,-0.2293928838793091,14.384982050631212,17.236940429681958,0.0 +1253.5578282539427,42.66095609452098,-6.615101836667496,15.14483092356631,27.23682757029925,41.76 +1940.5048495428748,1.6762084133480162,4.9050614836033235,-3.914962197059868,93.70523390555005,4360340.07 +1762.4311299785395,6.778163001958825,10.352346826745302,8.542061215690016,93.84221764479275,76.22 +774.0173339128767,53.39167503827621,-6.059699253981261,5.537199173249858,81.0881972330795,148196.84 +1549.2732427735568,59.90603515999763,-14.243478894471805,1.6373922426382317,17.67490452339746,126398.92 +446.2972112071053,9.92404686441072,-5.770375793303191,-13.935207101330572,59.90273492400371,13602.43 +1432.1925638817338,13.059717653303984,10.326195351943234,3.017682293746957,45.15108560054791,735398.32 +1083.9472876902448,33.71451224128025,11.483268826287766,-8.056363103013787,8.993519729669298,30976.74 +230.2866906550845,36.2427203973872,11.42203829144493,8.14356679249768,8.479213127362248,402874.64 +693.6136803026674,59.72588572868069,18.982896510706443,17.794097118908677,85.8268423541831,1416126.86 +1919.6879913276473,48.72084347432614,12.991312615435715,9.106312104168502,9.95943068217542,1769.39 +768.4966731592652,6.742898552521115,18.742921223609237,-9.618843421154164,27.86761362769903,11810.62 +526.6180195425932,19.929970365888924,5.071695365973166,-1.3900863783884845,15.921736603410638,47098.22 +537.556603829975,9.257005371265196,-10.826065257620744,2.5946286046131073,57.93528008070216,184950.41 +1062.5838763555082,1.7215630501572807,4.327851769788236,9.04611323736217,76.24215095545824,0.26 +1716.768633206963,43.99079797888508,-12.08663777344141,-14.086099575060071,27.253091602198044,1124.72 +1564.4031772400238,15.97817080464457,-16.586949863285916,1.023700963279719,78.42260360644447,482384.07 +986.3336135679938,1.3062021901240064,-7.947019713722323,14.405459522322044,18.32183306655989,0.0 +575.708390186529,22.58065617556565,-5.488977764553136,-18.896477919972988,36.316865247824126,1173.57 +282.91682018394397,3.683002993074952,8.355517465459972,9.103214645110498,25.045243941433597,8281.09 +1032.7345750689158,1.3757211606621744,-5.47693154956614,15.21745985458237,45.97976615525751,0.0 +1666.595627332745,16.337207661051323,-19.874063952160057,11.830548260739455,98.11984852204094,578.19 +1513.4275884697647,29.135153347331443,16.677652026755577,17.273564761426723,73.94292522051325,0.05 +935.4813817290506,10.828507175226752,3.576167635938563,11.30841951939271,21.37031944571929,101.64 +1270.4648094516806,1.026352506212479,-11.5696769839312,0.7209266893676958,96.6769877572006,2859655.23 +985.2437377031918,14.24837950041896,-9.908494978878526,-0.9226285168367054,68.45266183962643,819892.25 +1242.22899762232,1.0309038241213822,-15.034390536101515,-18.726412793176554,45.96326887723895,0.0 +1131.5094399083885,71.25520643032253,16.261869928837104,-19.256025316773613,91.70901671701984,40490.24 +1425.7398802252862,3.424603651801967,-10.791656478185171,5.578755406993254,76.5202417253862,240558.26 +1113.875918359623,55.20942283366277,17.625885421295663,-8.983899421482043,73.19014632384753,2377376.94 +1893.099796701605,1.0573495316004824,-9.427545670299232,-7.716185489530658,20.89231002024049,3015.29 +970.4507268470352,1.5647069838638723,11.970047858047415,12.282626289339804,13.668477998268646,0.0 +228.64934547147965,7.994965779695704,-19.581913903335032,-15.549144434227408,86.69625832788277,3862074.53 +625.4723637361722,32.901428783028024,-0.669056191311479,-8.646614869914725,68.33538595741963,115244.91 +1101.0923445919807,76.75795594374658,-5.231418679802977,7.401542944990949,81.90698200602438,131405.18 +1173.0293333995917,11.020203906730153,-6.616569642644805,-18.777350955323545,76.80965549249089,0.0 +1194.2926207616963,5.139506590881648,19.68625174761113,0.7915686901144925,90.40764165992572,66305.86 +1486.1937768861478,1.2277475603892654,8.83466845482423,-16.58156310887716,38.17657069823414,0.0 +694.3666567115503,14.703439654715504,-9.768883235999674,10.466271272723432,35.66936305655001,5349.09 +1396.826622274659,5.755559248954923,10.09767019363081,5.3832978266171505,24.449394125482012,106854.52 +1467.258091614583,65.80622368316642,-14.817249110298016,4.342077857589142,11.437504394307732,49048.03 +940.3053547174874,9.122596071404503,17.03713816561872,-11.148597772775297,48.806763805964266,3796.32 +923.9043784633795,33.954236262102604,-2.944551013236256,8.987947994699642,50.32390404794717,32526.26 +522.0646141816096,49.70740102383433,-12.37348352167305,-7.932833814786409,12.331604942648708,435100.26 +945.1772772596728,1.5723717169970248,-9.087180633977656,2.832591472497721,60.748961805242814,1028942.14 +1616.2693250726222,7.615398173895507,-13.794046403962238,-16.318810096502865,36.97331971605814,0.0 +1836.151409989791,61.29638494238585,17.222319785836074,-16.15653924727708,46.16789545342833,443.1 +1268.5037443723377,7.061721675118294,-7.764255498744412,-12.240390795473315,51.49244966621839,359.47 +738.8666180377378,13.499216230700446,-14.285964513062574,-11.359797545306236,31.74336222262014,12335.03 +1428.1214935875166,55.7452534814328,12.51603099449313,-14.942703062533184,68.82047108608154,5230.49 +1532.263175652807,2.918684645368282,-11.46963513292388,-15.270062078356844,51.4752313491991,0.0 +797.9830018051922,61.54082665220972,-16.233985998362385,15.161240116254437,44.7017380772914,407658.67 +1687.7861506811842,6.223817399084416,6.73579646597509,2.1853358965633607,41.549850052849976,1468988.64 +332.65249784901215,15.348525402546768,-19.703772601427687,4.887081015597361,3.3475949775967484,572690.9 +219.3566916800459,4.529799339676245,13.296823747008686,-8.487129419577006,77.35171603475366,633565.16 +421.34739073769464,11.330213864832466,2.5083826004583853,-17.780505226882212,96.68249842273558,4237.3 +480.8150260895175,1.2547916096037264,-10.12726313681021,18.730949354228656,13.966307271904306,0.0 +1782.0722593058983,1.3505788688793112,-1.056249711026238,-17.838874339135376,29.65479372721196,0.0 +964.9670639983055,6.752203518015672,-9.50340199571384,12.905061618026416,84.84496837889178,0.14 +694.8770455466871,4.676315958295524,1.3142848589727762,6.6034572684144965,71.15995624167941,79282.58 +972.3352087762748,17.044474678889042,2.865764848166062,-3.69915942155699,31.92725660680225,341345.85 +910.713606861138,1.190749297835332,10.867286397218844,9.86389215391375,65.30382388815961,0.0 +742.6310023784306,2.1643990740918957,-1.3565031969753072,10.58929527418545,91.80673216682742,1.26 +448.2192483415376,2.625329316429654,11.46551247765563,15.131670574030998,22.747671877493804,0.05 +1380.647831552985,7.602974555540975,-17.230253264909805,1.7970124697399426,68.28404258062767,256924.3 +445.8879250033796,3.1165171760332284,16.85371727235877,-11.4517115140405,81.3855923083947,7436.72 +1595.764014810814,1.8850608403084312,-12.57965108029234,2.9031513503932382,10.435158104063095,279439.45 +563.0384239048165,15.672827280766631,13.463093584257088,-16.02739646003787,93.5163092840104,13369.87 +1516.468352839961,30.74283793285305,-0.2147286510048918,-4.950840448899259,95.9737315270733,1659112.25 +1650.0549902518403,23.471245369108235,-15.811303752219388,4.414661708043437,73.57367183834435,245984.17 +425.58681759401134,3.5674688563471126,-5.607903696444216,-9.924515040130938,52.04497820457644,50667.03 +356.1423829184073,51.155186546138545,16.73322458037601,14.603309954458714,60.7919052513307,3520574.39 +1909.230987176588,16.735718368004655,13.38855821599061,19.04207381339584,65.19519254334585,0.0 +1033.4842521546452,16.956390201195234,8.892631234120977,-16.963597191455122,16.259044341396756,7.93 +1334.423890951379,2.6649980981515364,-4.806164760529357,-11.764292951033465,30.193577855159848,0.8 +241.86879221918196,3.0508845574942205,3.5516325402422,-1.0795358541420086,10.986965788021129,30228.54 +701.6783250014118,8.902263294285321,-10.7151211625221,-18.482342961656496,37.6757086564165,2.32 +1109.7157782068953,2.9897994804199586,5.913740531891434,-16.282902726449066,74.76532196398689,0.0 +1795.1929641009272,23.77691323394691,-9.56238697627064,16.025604944397088,88.66573171149965,0.0 +688.5909516158773,4.14103617605363,13.160272781074438,-18.17880621994247,37.75640938946735,0.0 +1595.3443757456953,2.0129468501242904,8.17992899191223,-10.100629893359914,61.99467684835006,65.9 +1391.9832708656634,2.01014648832759,-4.556415299587813,-3.0546917277785024,59.888840051169026,2036367.22 +407.48738205034095,1.7966172178653623,6.379277270768915,-19.181631326950225,47.781497247034096,0.0 +728.0753110255938,7.577050084079609,-6.994553852533012,12.423752024075894,69.72665916625863,102.63 +628.1552655895156,1.0140983420660767,-13.773882025628556,13.200310723964533,15.930191273224738,0.0 +996.549657631914,12.154709304847009,-10.59264205788098,-4.213190386109882,8.409922176747436,93280.78 +1343.6016374856515,3.9500795858330378,-9.132478639350868,-11.92864186916295,35.45538721817332,10.39 +980.155559915312,12.733789370337828,-10.935335378220188,15.694321449482612,96.96204723095951,0.07 +640.1658363532508,74.2763966689484,7.134240003810621,7.142243410460618,95.3586960914566,657517.0 +1452.5817828108957,54.71359109325352,9.58645434859935,0.9544712054172022,63.674337263644006,751054.37 +1252.0479704806817,14.218693083129354,-1.714431852965399,-4.3040876894419755,58.292053872679986,1002329.39 +1134.7650333482454,6.857102246232256,19.51175540988857,1.5710738834647175,63.688205329914496,61169.44 +1197.9552754027611,24.930175865333975,15.640824211141656,-10.019538426506871,43.50821474874275,33041.73 +599.4211633288824,70.19055319575502,-16.517992599497834,-2.015996932468971,29.550380192704328,4599286.62 +1424.7759099664213,9.530027105712367,-1.581973747674339,7.435908895452266,1.5498957970601923,440.43 +897.5009639697829,1.5798485218500609,16.339068341206083,-3.545645407073712,2.901399459272375,12315.27 +854.2420755140354,34.05464840902308,-11.189431664610211,7.398182898654353,97.24436360182582,109683.17 +469.52157488018696,1.0494416775579527,-4.864158978705215,9.549022634207788,74.7134209121927,123.21 +1274.3072021908035,33.828049645350156,17.87789824537861,10.148476579150625,69.32516481073593,80214.8 +1284.7959389837115,1.4785404407857932,11.042494987561147,2.767117082603332,84.59921868762629,2088158.3 +812.541158599751,1.6339288787010904,13.293000034188475,-12.624480810998715,61.086385379637704,1.43 +1747.7301023579614,36.59432493482005,15.179351095931716,8.022387746124501,67.0962801399435,18665.77 +1721.824217687771,23.935549916090288,-13.15297310348416,12.771242354734508,79.22108207286632,0.53 +396.2977516683763,13.298610267922673,7.970960692641156,-16.22844646281319,13.391168950651227,2309.79 +1451.069098057853,43.76937905383559,12.112051604633224,15.83863893303854,19.57582798955503,1.32 +908.90256113304,50.435580230750595,-10.940820065522605,17.65202767278302,56.04059166514618,1289.91 +1999.486731913207,8.222890581244744,-18.26560570135925,6.7294375916414495,10.591573445122153,359.88 +605.0425334323743,98.30992711140068,-12.865767428800678,-15.557404651619464,66.28292796234345,2248186.58 +704.9435697460809,5.189910628739268,9.656114848330644,6.147631816444079,83.38789573570297,134102.49 +995.7913302003094,2.203005255675386,7.771625492281289,-5.757263654330709,83.92156733665067,909788.22 +683.6872676251937,49.19861604342625,15.669045914667006,-7.85417730214216,33.0080576344297,1795296.58 +1445.5880594957257,6.778608613264097,-7.321879146827248,-18.52943958073942,21.066073932690003,0.0 +1065.634601926665,56.10470749050974,4.869762449396773,8.99336346413138,95.91323379491638,79899.8 +597.5819027291724,1.3253564286697967,-18.9282637872755,2.6671972622774742,91.3264132822004,40455.01 +1111.473325075813,1.6676473704798882,17.403372209325482,-1.9682760893003604,32.03744549415781,107480.03 +1799.8179794570692,1.2037750077432463,2.179704247850376,-4.452463627295771,89.52169984730423,3145641.92 +1626.3121643300951,15.99638766836777,9.935413907933658,-3.5259110963602724,88.21994985424098,2435772.16 +1097.892063968278,46.10291249022391,-8.64736188655212,-1.8762138019664665,34.465229108785515,273253.16 +719.2866856555058,6.387362543829559,-16.721825075269535,-0.9004554799573583,36.95571654240004,95474.19 +523.7956364645501,1.5184164473314563,-17.48711765009098,-16.09277595133178,93.25771877565354,0.0 +1781.0891789364118,5.583900293102818,12.586415713312851,-4.787159794351168,74.44549349414385,1720658.96 +1478.3004928976534,4.966978323434335,-13.922161943722855,-17.43853243549841,62.13527629673712,0.0 +1229.8939456654252,19.36171617735287,12.960074057452228,11.037235970845948,95.33675287226944,672.31 +1782.9823627166031,20.151308770569113,-9.389373426500732,0.8895778429779932,86.62462620679666,2758814.46 +419.04251727336106,1.6071167759016909,1.650881949871268,11.980607464021515,8.400541163431805,1.53 +1428.4807148037228,6.923944133177687,-9.523336286500667,-2.827199943437648,50.380588065785474,1487548.32 +590.0821623438176,19.276538659769972,-17.996647455366485,-13.876065038011244,89.67563498431342,868176.14 +417.0393938287766,3.29399107694597,1.6911562892859422,-8.016978188627455,12.005141252709024,27655.38 +1038.0953180124798,6.5186936720993724,-5.315183574588187,-10.645573846613306,8.150403105715792,2578.76 +897.3072735758367,16.880677126689623,-2.595600687247348,-2.403842579896458,86.04657949189452,848085.72 +1894.112496785334,6.393540233859798,4.062356159023679,11.556434111938314,77.96088335471556,0.0 +783.1631841532695,1.1527149961937857,-7.453571705299304,-15.334677898660072,17.55327346224215,0.0 +1666.8240662936043,2.7876098527723148,2.5522173090915556,-3.995993014215769,18.928586194407767,667509.24 +1547.8886008430204,35.65839807381464,6.310927457204314,-16.328352931469773,83.42818717905186,125.35 +1402.2629661053652,3.1405676836666347,-16.41820264250535,-4.341759326334893,21.70681691780131,120429.89 +1856.7208513281073,43.19394710650651,-5.996137321885913,3.300897534489007,15.25417298388182,246907.28 +934.2642698864158,8.586489662588221,-16.402108073075233,-17.241008923558184,90.8481952689065,0.1 +901.4081347691582,8.827592446690428,-19.72265649410145,-17.33432656989084,80.70017348483313,10.51 +489.7053624467169,34.75621144528532,-17.95079389179729,9.22040446200596,40.974764112091265,3492351.44 +696.3717358911244,5.842342670560905,3.688591568027717,-3.700089664808681,62.97804687659666,611465.84 +1783.5976209095672,2.9988944764934176,-16.627789177345015,-5.944709241439816,43.60929913937847,131987.67 +1053.8878392404624,1.6220519277490475,14.740063660591494,7.452789282507979,28.171872489504025,185.07 +814.4359799432789,22.070885226355905,10.37776321537828,-16.609465973606618,98.69342425668462,2068.91 +589.0016991479081,8.707331512582138,-19.647269163374514,14.38859856159743,55.01832588028658,27520.18 +1072.928450438507,41.573229369051134,2.9298078501395475,11.017040430312065,64.1188486352573,12770.16 +1489.997666836152,8.229044619269878,-19.589923498114793,-4.414209486280458,41.41859148004085,31142.39 +716.0456458227358,6.754937735779236,-15.6322074568638,-1.251702413401401,50.57336675923051,190477.6 +1563.8897374627777,3.960081902893559,19.529971061238957,-4.091377915747558,29.484124014486135,14313.78 +1333.6179945048532,2.5052769685693037,-1.7190722281499449,11.409208524260102,43.498787081787825,0.0 +1617.6126125714677,45.80088705007504,-18.91155193201724,-18.840242448715298,63.15325335380401,68.1 +651.6373319748421,1.550324969737391,14.012580743679829,6.8555460442075145,81.40026269801686,16926.69 +1335.8506605194816,63.71701864220109,16.693793214962685,-7.898089893627271,80.43082374082299,1088432.9 +476.7235030799154,1.131926695443112,1.9353375922650695,11.18188487330189,2.1305183014374656,0.03 +854.8345678963461,11.079104799365645,8.237684089204835,19.356353486674823,53.95470105615664,0.0 +1503.8481707170424,1.3081487311615163,11.20484547470355,-8.840870655314985,37.95833214651591,1504.11 +1337.0030940438846,36.242174126888855,9.3868707030245,-2.1659304019703995,61.09735338097309,875056.68 +538.1493056075395,2.6484577436114973,-0.2191151422586479,1.9036323999899585,88.28567369968549,727144.02 +1745.0168097665523,13.547063062291569,13.30737757090834,2.0419629900582237,77.72873932806166,1633305.54 +296.03176822132735,68.06004081178568,1.093140832538646,-13.73717328741133,33.74249685569972,840402.5 +1271.388239329969,19.88464634064602,-9.619869312545548,3.329846620942485,74.17702829872653,738512.93 +1970.8769004168912,2.2732119475693473,-19.83731540605668,8.956500539157602,11.036482676538904,98.56 +1156.7085173169476,39.20627100070279,-5.656403020840983,17.761139360577033,13.687537757957344,1.02 +1641.2092759269574,7.637640519819941,-16.696573142405263,9.01520457132429,23.330121604481903,2.91 +1271.3257517403838,1.0625600337409162,-17.468943254590865,4.132277920558551,40.57487834555089,73716.54 +1609.5589668613866,9.408706913267926,-1.2310307398493148,-10.66996910587382,51.55729506420981,8079.68 +1380.069443639517,42.166674796646454,17.7469766738435,-16.083193631921656,40.38682573635337,2298.95 +1444.0376261675517,7.24294623932058,-15.779422877831204,5.37338525362427,63.15194179814686,93865.54 +610.0600719554913,32.874268729716526,-9.050000000128566,5.007308993132673,13.2934523845226,32665.48 +1535.277644431252,25.76628279709364,13.203126402662196,13.574353898575763,52.62651899131219,0.82 +628.2377959957954,8.200203585130897,-3.926814145988877,-2.155916871151242,27.96812956437993,212922.86 +1965.1524952566583,4.431647106137414,10.352149249488123,-13.118264099348805,37.10021690035457,0.0 +610.0169437301685,28.38441861016597,1.6933732301051352,-11.010929722644915,51.37956663633019,52302.15 +626.0312064757813,5.468104874888566,4.1572525139035665,-0.9440438221150638,14.133001784241314,130654.31 +1745.6116168709557,2.1886394015575417,-13.554265450268003,-7.51789340192039,39.435111031472246,51390.84 +637.3745515330744,4.3825423654828155,-5.908711764115142,-12.789314587954465,76.31273633926776,3227.31 +849.6250282843093,56.712446927788264,4.870217609419569,-15.685949119114078,28.47937027926283,7826.31 +1486.3522901222486,3.6878922550104583,-18.929272137249388,-3.5059631664217505,76.69221310653846,70687.7 +485.7474443505738,2.9506729115530277,-12.466939410344631,-6.499268311769346,23.859906373578067,80665.86 +486.329158689504,1.848588050858784,-4.540215650892052,18.61101880279297,75.66309466256607,0.0 +1075.4451618799142,1.2893050660509155,6.983783551154286,14.25651020943918,20.245601971963165,0.0 +638.6541576189084,89.82241105113506,0.3835514416944408,-12.660343670197346,95.17022013175,174208.25 +624.1843200242604,11.845507022088338,8.749285309639765,10.134133812500554,16.222800607808864,2915.09 +216.6300585533228,28.793132862099277,9.074481814850506,-0.7920865890054785,99.9845961095113,4219629.6 +866.8092641563063,35.15174537522926,-18.757810464230474,17.043945579955814,23.670003264441966,20647.69 +772.8509983131258,5.065636114812759,16.0684965305679,4.328208165031229,71.31012443050244,113821.66 +256.08045948800674,39.61063642889763,12.968606085713814,-11.840262886027624,31.205759922083644,1643218.97 +1318.2197207845943,83.7468515612896,-9.15726722637912,-12.161269061279008,9.13645050031027,10271.71 +1327.9793276060373,30.44554134037163,-0.6190031920539019,18.691967201172808,3.464326630941647,0.0 +327.44084919258603,26.51345063324797,-7.674001938432449,16.73105760651779,15.581366479207656,62229.38 +770.6748132370155,7.319266714527113,16.26568636559899,-0.6856323029962352,41.39944308415467,133201.14 +1771.049957591716,48.15487408608789,-4.687240338415384,2.5576150825785193,58.44107901057707,985903.59 +1247.900722840241,1.5054791676069823,-4.157874688560725,1.883913953634968,48.37333007749977,1419507.36 +941.5545032215782,31.576749691879037,16.47648149921352,10.539082410936707,63.4154072431508,127963.28 +1037.1834712353727,5.29647692183379,4.027755786158873,-1.020563031137165,10.486715588661127,216331.5 +574.9039899844493,13.55026633807357,-14.485215350362385,-15.094793989724431,67.96623567336589,11161.88 +1661.3867012742703,61.08401003038364,5.040673643786278,-7.028662592804467,78.73317755558001,828582.23 +1845.2084698117417,16.2195619159577,11.777909753649125,2.73104156991121,23.834632858679896,567163.4 +1839.1952760500783,1.1250272987720988,-6.486353322245417,-5.9570244602480305,79.39958175441332,791741.67 +603.0819050461394,27.874667204402357,1.080221932480847,12.541939014892485,25.750544353916556,4781.17 +759.3324819976225,72.11888645316495,5.07366216546707,17.916200124750986,44.96346507621746,5699.07 +489.12099465716625,19.231975214576103,0.4166686023982491,-10.320075926854964,80.77497386005848,83459.52 +752.9620405381637,52.825078964256264,19.964980378773127,15.56584396532195,69.03485150218394,1769245.82 +799.0496698206806,44.72923913478799,0.2717138829112153,8.62827344394744,50.8694638064368,44821.6 +1339.5903267163435,52.7939997427815,5.7349196894403365,3.478219981193993,37.59694565935838,268541.06 +541.3634867866243,4.877539614971178,11.743577462471888,-14.784375519496288,56.80266204096399,500.11 +1854.9144638619384,8.878243543855257,-14.5366726213299,-3.561991523616732,52.45747494115965,1031114.24 +385.5790461535579,49.66689497515086,-18.243587200788394,19.81410019506519,97.17274997633208,3254370.74 +212.3804198617995,66.19072680391754,18.91959435029076,5.934056259025375,82.78903718247733,5253484.84 +1738.9012315349598,1.9664504085769143,9.29036599005881,3.6673360146226575,12.526638965005567,381910.9 +1466.7856539788895,2.3070911815810233,-4.2687209790343505,-18.575310998817475,41.82583818623429,0.0 +839.6477666407973,4.939229432905949,-19.293248170220437,-7.164466656180299,59.14342306806914,27784.46 +1271.8994706382125,34.72127434706041,-13.34401196169063,-0.4737683992122798,70.83087904683231,614123.57 +602.3793815106201,56.22925306820638,-19.610088292681485,5.666593280362795,18.55881931452427,4118672.31 +503.10136756167674,14.470391552801434,-4.141709349743978,14.284637534999607,83.24548094767113,3354.3 +1048.068443249701,1.6847534360477392,2.1942134037328165,-1.6772603072105507,63.3694819131216,1676975.98 +835.7380934977296,4.050386435305556,-13.576671956203196,-9.021861693745702,7.676263708050492,7413.23 +1307.4140909635255,51.76616746499573,5.594292388391149,-8.748715294473506,6.850696131929918,29057.92 +592.6685322098567,4.9557564689063955,18.16965010104454,-14.487563345758623,68.93164661633897,608.27 +1393.2698610091136,1.6055154389338793,19.618018479306446,-14.178448158274064,75.79941525386629,0.0 +1580.3507365450637,4.019175147029751,13.326657259977877,-7.787252371717885,31.731067893010472,74349.13 +499.94505745125394,41.05941000765824,-2.244643668356563,10.66338276320224,17.033568599584008,13007.16 +278.9449101522488,9.704184971777051,1.8963751229161872,-3.4711743529434624,22.763747358859405,33129.0 +991.2572755424096,2.203664883915345,0.132279053547788,14.382672603532995,39.83029930594052,0.0 +1593.2433547863868,4.21953647251969,-13.773330982402028,17.966126498886574,63.55565497305611,0.0 +1371.4037040334567,80.75372403091454,14.17656684101457,-16.983194034725102,19.584300659469378,2429.4 +1463.3870967462644,7.309959590756352,7.031637477081847,8.43291499870881,79.34044927590797,885.65 +925.1108119880632,7.641850014710914,5.517424647558022,-16.589364529602637,25.638467815090618,0.21 +622.9019814555257,2.023667719448937,-11.186753266540844,-17.13087355589949,81.14697221566075,0.0 +1157.201917912297,4.065449860328094,-13.873628049278231,-8.969229937851008,92.47950696068806,63314.56 +567.8582487485544,42.596338136921894,14.921059081381966,-15.935897669358052,17.251861296549013,237672.77 +1507.2116545731185,37.3592327760318,-12.823442055111409,6.518872989866873,91.8553708495185,167506.85 +554.5396207270587,7.430150282159662,-17.05126128570988,8.644782559576022,70.83155853495678,73226.95 +724.2738800858145,61.27799181955833,5.024208045187577,5.5705708902368745,88.83181143456383,163922.81 +1111.7806009814096,5.761264764727153,8.173730292380963,3.0142747108520984,35.33442832252089,518876.02 +1076.077881458291,53.537632180079875,-15.21510358754632,11.249564131661334,86.50243659794444,169957.58 +1281.5288775326528,1.1564612923240276,-11.725623787240613,10.903136367538607,48.201369122067064,0.0 +987.4002808998504,4.94835194251721,11.55055180246157,14.810240968735148,19.77688393966516,0.0 +1855.0519553181643,51.30231418382952,17.183407989380818,7.727832117345681,99.661609854494,62269.38 +1711.8813695549388,63.477398972309835,-0.940451318407196,-5.765025441173535,94.85962537734945,1382971.36 +1782.404212225949,32.572274224426515,11.68019891409601,0.9872215982848996,13.35690511196591,295217.3 +1333.1298285261876,21.86410144820868,-7.223995284836797,-0.3759990593166451,46.16337583610213,874186.8 +1343.0142485494516,42.75725529914243,8.129357629360449,-15.685325774291394,98.6334084091784,2879.07 +1296.5576306887076,26.00856412615811,2.288818376858752,12.46972371806959,55.29662525110336,149.07 +982.7914779586212,3.2243480028715865,13.7284365431397,16.514154233171496,50.21173078668185,0.0 +779.7908019210727,8.560000723609596,11.036043834049414,19.37635562952621,20.340502927401975,0.0 +1265.6051974079664,20.96090336498723,-8.634564728569853,-10.08129359236667,42.53272858527216,71872.99 +245.95730684921057,14.983232347105194,-14.02179116203449,-16.174392211805078,50.321211433017105,1133146.73 +213.42157656284547,58.91083985516002,12.30627090297546,-15.558325930477675,71.69098206044774,3104699.58 +1732.9552873341474,8.865215166605061,-18.688297160191457,12.17187893356292,45.55336088207902,0.41 +283.5632805997199,2.2697329167567135,7.161552496269956,5.269667398289468,63.86387947200218,96933.2 +1144.6312706001524,2.6863591503782476,-0.9634302345145064,10.244805765795885,11.050116916177055,0.0 +1306.9779733093612,49.216771055163136,-16.98802777492711,16.207856139547268,76.61472937582363,2449.93 +556.7082133203841,1.040978856202241,7.5424488869318385,-10.949229644238605,1.3242712739502434,35.94 +1812.315508877267,54.73444566031977,-0.6850365280523851,-5.436587461013764,64.57336061183334,1194594.55 +542.172389147075,1.2917431619256476,14.40405320977385,11.69484387777976,82.80505148120332,0.02 +1792.1269772600144,6.071792706926511,-11.654722835571828,-9.624324133123984,76.91250261470596,18395.03 +1573.382484799463,39.843038850243474,-19.908017126606616,0.2416342759312728,15.584425898585808,860222.58 +633.3373163435491,6.53477672649891,-14.780527285524045,-2.2619730670923888,84.58049846864606,339418.32 +471.3394992969684,44.12618425452094,-9.215598687124578,3.812206430415972,8.840386295404597,151710.57 +769.2188783352232,1.587075798363491,6.089774736615805,19.528114784781188,7.569350844805735,0.0 +916.3110192864945,10.545919523201158,-5.494270899368172,-15.85139974199294,82.43805564255815,59.63 +642.4124176980622,14.620022331776058,-15.270123467788226,-0.6143046596870594,19.069519302061735,96148.8 +1998.0047877579616,60.49746743789607,19.26293852678659,18.35947248739579,45.258837245956805,2.75 +613.3742052312458,1.5390148581729894,-15.6709021915401,-6.084924894879471,93.7266871371982,210021.31 +1695.1426885691426,4.75555677092765,-5.795186278667055,9.623892436735204,21.687406306588315,0.0 +486.41194476285096,20.830331898159187,15.064170259669025,17.170816990162365,78.27779077274216,122885.05 +1964.4403254967056,91.17172328774814,6.104614943405893,-10.375703067494156,58.85954183951569,202826.59 +605.9422249095527,49.722006719181245,-7.208083526313898,-16.74478984417942,41.16388023422655,32681.48 +959.039398610466,49.316258845655014,18.81387118574832,-16.97227885141477,46.46384428244862,227308.75 +1205.4153201822317,10.82343364200864,0.0439421723093369,-17.080255031913296,41.620746534423176,0.01 +416.5142872809679,13.446159053206138,-19.67560416521904,-5.979165889040927,82.90300211634211,12795323.83 +1670.2761214623824,52.138698760223974,-19.753466553946524,-14.951414780553694,81.58456818121002,56730.48 +694.4339588254937,54.85941504698993,17.640373183469595,-3.798966677965177,37.96855594421428,6215232.52 +1188.685822882995,40.22991647967085,-8.752774780968494,10.165103109768411,70.027614233041,17322.08 +1189.3408592478445,43.36531949063934,12.482598641442726,-8.070952101480287,53.654839557115785,179728.39 +1284.753174186413,57.445989962261606,-18.257599124617307,-0.8232727232087855,75.07363954638501,5142530.16 +299.87477574376646,1.6887441678721504,-14.12331562874976,-14.905248123587327,5.954593885454348,37.02 +503.5137712968222,3.848387131987628,14.271180393594928,7.931588477651004,34.267393712653586,7199.4 +490.1460372620556,89.58330233113293,19.763652673621284,-7.293008550264552,34.24482666654146,6641961.33 +743.6922669485334,12.290012367744488,-17.923082740389198,-14.59096938687878,60.08441259204242,8598.64 +460.84548234501176,2.253864068854422,-13.29452106524252,18.186822273936897,21.555997903742355,0.0 +1859.458377393721,10.141711834691275,8.916475632075773,10.784898076473567,53.63769161159228,0.01 +1123.3180109203413,19.568987264673847,1.1801182513399366,6.093108125759095,98.00609307496534,247899.36 +1322.435265864832,45.33608019683857,-3.7613581554183506,8.919985747077144,5.307087203288491,3340.45 +843.4787157166174,42.10691775609691,-12.221298481914014,-2.9803071920412005,50.84093804048534,286775.49 +697.2430538610407,1.25453559090023,17.81741434484438,-8.066756037381326,14.690546413361815,2310.37 +1105.7189064179834,8.073279235311942,-13.109257901329268,-0.0005335457274835,58.6577232953032,800137.0 +729.7813547027005,1.0993553958962217,-9.39001736779003,13.01032067131356,24.845420506408058,0.0 +818.5626663135757,59.74646950064623,-7.028075031610528,18.551707497188783,90.34837336728896,2753.18 +1014.9515736875428,2.2274714743225643,-14.456672143240828,4.2112521703849115,32.481106842972785,161057.09 +1110.32063693184,17.772535497812225,1.4493222493674065,-4.945614763971884,95.87296614958794,1127332.51 +1971.7652212073097,13.843207941306716,-6.34699697092564,8.728239657414676,1.40934023278871,9.61 +601.9806586914929,17.826203880101033,4.313900021424888,7.882711632240826,83.37935747157456,71560.05 +1078.357096788765,13.391623958002397,-5.285676492596747,-10.101429115713556,26.906683250682963,34966.78 +469.1211310808101,26.98841345053356,-15.343058838875162,-2.5794389471416546,20.96062508701216,1366637.95 +829.9986188743508,17.873925031609076,14.903895085232485,-14.639455297035015,88.53041840098756,3782.83 +1491.1592936715276,1.5156554781196174,0.3860829252912978,-3.908866480022799,31.13302150737716,1000393.04 +514.0318587690342,5.41422004006068,-7.1259804006531535,10.50995219431558,58.80396361480065,3491.44 +1246.4323535900776,12.393297410042909,-19.34540990901685,-7.443890255553396,73.94117452133203,72213.93 +950.061842422413,4.4708989254892275,3.9138588353306902,5.32130837123904,42.50097055313765,146231.68 +292.84317992805137,33.163607736691766,11.30017319916789,-6.894013013215297,11.032459293157732,515223.15 +1879.5354346612005,4.323101478772088,6.002450008685103,-14.115853098455148,92.31136721365306,0.0 +944.4856525271956,45.43267923734678,11.50877259330235,9.655502209440154,65.10258885210615,41432.13 +1611.0677643520992,1.9654746280416708,-13.800566483223218,3.5724897481609696,89.34734528978896,1557325.5 +949.3642797172404,34.57682643952745,18.868119144630565,13.01830650930658,77.0049422040307,385802.08 +1887.2485788418123,2.327720768942925,-11.546668477496588,7.158164291001334,77.62418965768472,246.5 +722.8466019720155,11.377073422191678,-9.328816017062502,12.687686213625447,59.398366007180094,454.89 +942.0151694378544,4.375712161159427,0.4931825099500875,-13.80207681461972,1.61319630900717,0.23 +1565.955632466715,18.82213447667619,-19.792178921052606,4.583346928008805,88.38317466440222,275956.74 +818.6011675055424,2.663672454909045,-2.3020604752592533,-5.304856400221216,83.2614980740275,913244.73 +855.8427284033229,38.97799241008925,-12.170988991487214,9.860258777270769,72.97388103901318,56204.21 +1990.6817121456024,14.033556023531306,9.960724736810214,3.203441801987146,87.93777989921921,2494188.57 +1200.1061462426337,82.13841311537368,10.310135367268568,-17.832796066087813,19.236598268459776,1403.79 +1440.884816606267,26.51799337849412,4.629393785617979,1.341839048000142,28.904020987768433,519209.28 +1358.2320214764975,16.398007435650808,-3.13259298719053,9.771653359949024,16.55502491567449,350.7 +1690.26346488183,45.53206853634103,-7.590639322843584,-9.488464378754568,65.01526222368629,262982.4 +1751.2851789951374,2.7502054320110125,13.098478993960496,6.18106027356359,44.40079885068268,23544.36 +1213.8610384465574,18.42828506692829,0.2837447685492034,13.637030795123174,11.161768481408366,0.7 +730.2009349395188,6.03681266776288,-0.1413285621662607,-17.393298250265786,57.98806516375359,0.57 +241.04044563494503,30.731372605453835,-15.462684444693826,3.1208948398851533,34.559589871931,2930980.35 +1305.9258519157763,1.1192801943238344,-11.264678085763368,15.504035915794736,49.560279844078835,0.0 +1685.8438998781153,7.168432382783297,-5.580428323266995,-14.94320441802616,26.87680526474022,0.0 +1010.9716499209871,20.109617203521772,7.954113711353656,-9.230093001390369,16.953724991928365,43654.89 +496.4710528835557,8.342163028481679,13.810839647856351,5.03696157813339,45.63062765593099,66568.13 +718.5477312841537,2.991873254326239,19.714411073198377,3.4073556056692667,23.38868864634463,16191.16 +1117.9800731213563,8.485911601288297,-2.9027159418959414,11.73584488748455,41.09634579209652,1.47 +1706.0261941597998,50.05979317690328,-1.87182611072906,5.162115003690011,38.84525639503333,249687.31 +509.15566292315714,2.592256872852379,10.642421644880908,3.033800612082165,94.10208531338188,518405.0 +1301.8697762771255,5.424307823087828,-7.150920942999388,-1.9259445231190184,19.49761397143184,564961.55 +1556.063505110982,95.64693177426896,1.6207190405648175,-16.870028727270117,29.35779278710594,1989.51 +1884.8855366026817,66.93208251382225,7.080692925441783,3.643532434912551,79.3945662474573,981265.51 +410.06664502194695,1.1693289022551348,-10.550011571814686,-13.734966757981034,30.290376346416185,26.72 +1867.5049414962032,11.499102235886394,-8.816402024585956,19.833979639880248,48.54603930517762,0.0 +1282.641563314063,1.35153113118897,-5.75237451243737,-16.85999671773132,76.43276510472475,0.0 +1580.0628573781148,70.4384591762334,3.107393401177756,-16.971347850285046,1.4343763920771284,26.42 +296.79447722339984,7.639937844982332,-9.183381860151004,11.49317728258804,95.69934281012716,44834.2 +1111.0666801530713,6.868691451255466,-11.673288699680253,-15.953389740392758,46.82047149258539,0.01 +1320.7334133454287,3.514730771671718,-14.019671369087453,-3.796948850704829,76.18552609262156,1146212.15 +752.3009117711123,13.728970150586504,12.37239591413751,17.09996111405479,92.159918784861,2.65 +976.9703745822547,1.9498331330817733,15.438859890552346,11.515298712385388,87.80361579065062,0.0 +1197.7366435032764,39.61959219906463,16.188877829200557,-10.686312184362258,22.81751850433942,34404.61 +1194.5862915913638,9.603304280490628,12.865346824450016,-9.95880535831137,55.963538861133515,39934.51 +275.35074573230855,13.580813417717067,-14.508431072954831,3.690810195573313,41.65482510655389,2251047.79 +991.0671798420062,48.04071863208662,-16.089922347810237,-0.5424344391037828,53.703898808670594,1462993.41 +584.8726786260156,2.3458354649215476,-0.0334268310500718,-15.33014555380452,78.18344156695919,1.33 +1850.0511405536297,2.240609364164504,0.8570781223332657,-13.6541063919878,36.093435097031886,0.0 +1957.8439822220016,6.943898206956329,9.312927698402778,12.115853273085753,48.2437610278783,0.0 +739.3644134337244,37.34706541873831,-11.084769853751638,-6.2083695052345345,61.18993967454601,230923.73 +515.3337150519058,1.3094565942351315,17.237986794315688,11.960490075091569,27.785775808844686,0.21 +595.1074717070176,38.93502050907995,-7.602808280191327,-12.406908201906894,61.05386724109895,73616.87 +1059.9540596353168,10.034903192798437,3.112358036539118,3.977301142034504,15.742320910742828,123243.38 +1774.110078403721,13.290058722715369,14.56854429687153,0.204349121439975,62.542986939562006,1181643.43 +1100.0651868877512,13.451535947313424,0.9379243394898128,-6.944580928015451,15.179935509914438,118030.77 +299.70571108753575,1.2951938629315982,10.142297793333492,4.343081548488765,77.79033562809902,190117.65 +271.7940848836592,3.158941587983166,9.961048016292072,-15.018606292392672,20.208094339889907,1499.49 +609.3037021211275,32.40372240584312,11.600849860397414,14.25873611484274,64.96571470968324,57831.85 +1716.9882996969718,6.676306079624483,12.44193060187753,9.73533381273485,58.538584849286394,0.12 +1318.6650035632592,13.21398971685019,-4.301482107253736,-8.521066961562912,43.10781252786828,183048.08 +1213.324136815325,77.57776152504805,-5.457750294951302,3.206070887249197,64.90047312455829,322540.93 +774.1452666487559,1.2374952386627578,12.13992400660545,16.086756172400843,84.80508663226209,0.0 +1872.9657290831371,7.931598671320562,3.1884157133019286,-3.107808370305092,12.89674539108456,564051.28 +796.1208409318384,5.278958716894658,4.308531353379013,-5.466335601651902,67.96646924880179,632917.6 +1702.899942775304,1.6326716527822729,-3.523309968237194,11.95788476231835,41.60228635246235,0.0 +1812.626332356591,79.72392970053147,-11.935413653059763,-19.95255916524526,67.71854855623785,9.07 +1070.003023789046,83.73734357078791,-1.722777229746435,7.4549294437480595,87.62873982929436,137565.31 +1809.7206850653367,4.1973608593449505,18.78585863076276,-11.367757551357336,65.63091864628234,0.35 +698.2459173038848,78.24078900731533,-8.365324830080937,7.769879771182162,16.822928433027606,125203.85 +1385.1801671298963,1.1758372476227312,-9.119670345034496,-2.4839598200656443,42.19728001918959,1578712.88 +358.3347473438953,91.57817418980956,-14.768632972437302,-19.188190997964423,55.395416641975835,2643711.79 +1053.081585366309,46.974701905983714,-0.7527823596069094,14.970394033112797,13.560816160520258,201.97 +591.1972438850262,2.6832456972954875,-8.458784164233716,1.8615902960669484,64.7174993455827,609417.68 +312.97390027508516,15.815914475610809,7.484949239857972,-7.455950281036832,71.61094856174036,318019.47 +206.70591453971733,39.50014817146689,-14.595016733249915,8.135185516805276,76.4890181275345,4456281.58 +784.5538095934551,4.35108861218035,-10.10750069217734,-0.1623799346043775,12.870317225897187,172003.79 +1261.1550701661731,5.099218058873366,-17.5259580208164,-18.602056200275253,70.80925158325681,0.0 +1019.4146257720832,18.11113013662927,-18.341163813609057,6.010256039096693,37.25220158211135,146544.28 +743.1847373350929,1.9687388063160025,12.565738900094328,18.781264596516483,21.911584414440068,0.0 +1984.160055397252,1.7235394144592096,16.235124185021007,-11.120822784954566,52.9102615622565,0.0 +1891.14507196342,3.1594432301927484,10.555553414751548,14.51704378237213,57.69917579750534,0.0 +426.1759523074944,30.375224097995215,14.606538809031887,4.839796539587371,46.21963771204818,2649509.82 +947.1933680032904,5.410014795387823,-16.53615409851906,-16.884064560013744,84.24366687875195,0.0 +1367.9244811884994,10.344665290552978,15.925371247182047,9.19899915566138,16.423886911670127,51.71 +1520.2834355538862,2.4598074562029315,-1.3584065411687352,-2.34039382477377,41.30819607062103,1662899.05 +859.4698788370827,2.4446198547515827,10.745752917233965,11.749359019853973,27.43461152995376,0.0 +1543.3072629236258,19.994130319748564,4.630291536702469,5.429822455123103,5.831216426893374,29596.38 +423.4700232392209,1.647215816609117,-6.005207356874411,-19.88861341493834,34.56733832134923,0.0 +797.2627254638685,21.66114723912822,-9.40803869121979,-14.948111741490155,72.08949136608398,6545.64 +1489.5797163606292,6.329999922465732,-15.27479350826515,-5.902415199445619,52.80165288889213,330862.55 +1326.229022468675,22.006036412591552,-3.4939559407584575,-0.7258272986394942,42.45590719071511,806321.17 +1706.9783867509789,5.8004134915892,-0.2358913548182339,17.28509149029804,47.99577320120912,0.0 +284.34264080087917,49.215779416824056,19.32460376975749,12.878888316254642,31.93768970741448,2659011.0 +513.9050920814873,1.2915533149512648,-18.508380946850885,12.064618330596488,13.094188282663982,0.88 +287.2902480895396,61.17790822169203,3.605966488762919,1.5830558029774222,59.452546838052214,1927506.07 +545.8056036485804,3.4460561890167405,0.999792877134813,-16.285451793066017,81.7238587388562,9.96 +207.70905913928303,1.216422430815015,-19.084152387581767,9.83230046739029,79.11627128740834,419392.97 +1107.5785430219594,13.329346071954973,-6.810306759899212,-16.53806711362241,24.100837553649875,1.64 +1150.9659120228598,2.8100138519450866,-3.0829030798337653,-16.342091404615683,43.99447890506939,0.0 +1384.2052065307907,8.287169970874466,-0.2292095304316665,-9.796561518871147,55.66010567625892,43979.62 +892.8424049618782,40.23726118820801,-10.661756560381637,16.9025494038887,80.4427666776657,674.42 +205.7738432333312,38.29071901344675,-18.63599120410288,9.99675140568623,20.45422594555388,1475601.08 +1413.0040779337469,15.877101916522182,-8.246275485607843,-16.93389795122082,14.09094714683038,0.02 +297.72395794624265,90.31165839606795,13.454473697343523,16.756418179254958,93.23073354706725,4121225.89 +1759.106775471939,8.46256837141841,12.314315051375356,11.33500720432377,15.426262214153414,0.0 +240.77717787428725,1.19888294121853,-12.76996901993336,4.1457115309962145,98.92185310523244,162433.19 +1154.8552218619384,43.536177954422335,5.852006626306352,-14.921518887861666,60.298381335385024,7828.9 +1810.8521882939376,2.770688742315467,16.945894990946876,-7.195086057946338,50.400833984809935,35066.78 +1230.4812364198042,2.251529377870963,-13.11569236205937,-7.972727051477491,19.70503173147864,24512.56 +1295.150143779074,1.3804473390369312,-14.852946391686142,5.601885611777422,86.19014540042703,101569.99 +1426.8995270073303,4.526889433802708,-19.11414932973188,3.514784858226969,18.044343864758268,10079.92 +420.33592591484063,4.490740233993706,-13.103541412150722,-8.9103602488996,40.72552475562488,42836.86 +1414.868781459007,4.032209271910905,12.558103113023549,-7.556030404306422,5.75541335862471,20737.06 +1784.6387876230674,15.359811273481752,12.559589606484142,0.737668612899296,3.2322437286836405,89820.6 +1953.5974991035696,31.848159431633267,1.6180830811603908,13.81626387736365,73.22806588804815,0.05 +997.4935988450248,75.08158588716407,-6.657420922642858,-14.950998590376203,21.56653681663194,8757.45 +820.1087330195843,1.5420560422119718,12.271216760079309,9.029522853115337,60.47830192707694,6.56 +1555.9573080733708,1.9987738778550084,-12.199390261777054,19.82696893919819,72.61704144336123,0.0 +1177.1737185715665,15.124639121490688,-14.405840396078364,9.9893152028476,49.68687822954136,719.82 +663.1483780190549,1.571343696722476,-16.431591282689567,-2.3371553947096757,65.98670143417964,225584.44 +509.8841929454653,5.5147847915398875,14.053037860896444,9.266982789608916,24.87370196775324,2833.0 +506.4145410669386,17.746162789947885,8.593719208771532,14.42745885639432,81.9683393741359,6132.88 +1026.5186658910736,36.39905127270997,4.9834513531768065,10.740003989378923,21.417161725173724,4547.59 +506.22393010817024,2.723946508810698,9.098698488434977,-19.4896999217243,59.47074947914702,0.0 +235.4940992206744,21.67560001095965,-14.260852311910096,-14.74025939782145,83.75046569075688,3565468.38 +293.759794945442,19.576693062439738,-4.608436500352138,-15.714295570472622,79.52685886187538,152731.77 +1873.7921791153385,52.38805231322696,12.564609176565511,-18.726962175694084,6.075706898529832,0.08 +331.33041408824437,4.241260926765328,16.670620379243978,8.580920058345235,37.35106427349928,133498.04 +331.7252430457272,31.6361575564693,0.5238253568936502,-9.30506219588683,85.40528286297872,341586.66 +1012.1392019603584,31.91535862720087,-15.117542156680855,8.878264262657485,85.24308113385624,68503.56 +641.1805082030586,3.0087706500670746,19.140693296507983,6.6439375871749595,64.0045231203251,15111.06 +1932.848933910496,17.470915995189888,-4.198858344369603,0.9444461640678804,11.744587752142962,467766.51 +1839.7745110960475,22.403928363161064,-7.240213436502865,-17.611431056894368,41.02246075187869,0.0 +928.5378476082808,3.538806572863662,-15.200363371400911,-7.787751092161392,96.15405097906024,139854.33 +1007.7167349492664,8.009400134359206,-19.494815160211395,-18.91541002826036,11.547331122887048,0.0 +875.2045755360264,7.43970053437785,4.1469335660792295,16.40080964883962,80.33893387440017,0.0 +268.1590099576308,35.238639824654555,4.4972407453767715,-7.654655353366846,42.36426096764072,855046.93 +727.1243106584756,1.0031884233678676,-10.63035453111758,-16.202017868971552,74.72934691332381,0.0 +420.8122453015714,10.04738913776044,-13.520529754113715,-19.899275345913065,6.376816737914995,179.95 +384.26659402722095,2.337123310683547,1.120352019957345,4.460506608514034,2.021132744644241,5527.2 +1209.550831285498,19.66454653919671,-2.583725797655254,4.838761985692339,30.76221414021225,165611.36 +377.776743884412,22.947624034265043,-7.853838478832045,19.79701170574669,87.147793441643,42372.01 +385.2763828314745,10.052012439987417,-11.270685521031144,-8.455632496888983,68.30018430544548,123658.35 +1064.9246866748274,12.135539371135154,14.372234330319063,-18.13899213778164,61.570552476403456,0.03 +996.1082572207496,4.266938448467145,19.35311836421998,11.17529420404162,99.7702674746439,99.4 +447.7426132382649,4.232971638018006,-5.776730704691055,-7.816721729887943,35.38228728494529,89147.77 +208.0082446559534,30.91961799734744,7.925231443926677,-6.773638376868907,85.17497463836737,3172805.06 +547.3539951821189,1.8342677688678168,14.621888573150317,16.309373553278444,11.856877101585894,0.0 +624.6060575276733,34.91456450507692,-18.922528767381536,3.01481107751294,17.901936222469146,3229089.23 +1640.4471984959616,20.41861889111972,16.322595219847386,-3.986014065036207,48.33157353263542,327132.78 +1847.789030948987,58.74208661497965,-0.0340402852083077,18.022308316589513,95.98845536716908,0.01 +930.6999154783456,3.313518383400063,2.2699704160935985,-9.388353541631105,70.63687711935307,51871.85 +929.04810770176,10.288643130187184,1.5949327858999762,-19.140883525637097,12.140492191054086,0.0 +1482.4663107677602,1.1966827287079946,-10.282912263642054,-10.76498866296566,95.53582400230566,0.04 +1328.4596282684402,66.83641548250698,11.289657639628484,-18.234961370561425,76.80612496605491,929.72 +531.4523360481364,22.427606175160637,9.293534901428062,-3.6901062280397,73.9241275215594,226154.2 +393.8404201325504,17.60964083196232,-16.16830603926668,13.242662342413492,55.597423282673134,849701.39 +987.7014031790916,29.199700838909912,2.5116629800617307,19.007182946153655,39.95975399989592,0.53 +1216.6910536929734,3.703886871864518,18.281048068203628,8.012836798520597,11.879866327945187,37.84 +449.67368568585664,16.133200735722827,14.846297737048362,17.044596369304546,62.35949633172265,59681.51 +727.8922881352001,39.98009491385633,5.036174853949786,-3.6587187557528456,13.641359866447228,47582.8 +750.6973935750348,1.5156149810968054,-12.052266249557304,-7.891620683256635,59.40460670171769,110142.79 +670.3367618434952,82.72442908149223,-6.11107479893191,-13.830990857116111,54.42522448759211,170240.2 +1029.370279325224,60.78180669209185,-13.9856772215591,0.0352279749062311,60.05591249088484,767854.67 +1375.514451775529,84.34079061795649,12.877224599583936,-6.922477772912496,82.85164675246968,437202.93 +1116.9017905087862,41.37109521106834,11.146833250900508,-15.698492131153884,41.70659737230309,2394.19 +562.6218120452196,3.878128408471243,16.414332293427073,17.276602078418804,44.22319855656596,0.01 +385.29028468531953,14.558309074765768,-17.464178101162805,-15.051847755591332,6.938004625109715,114988.13 +1679.3668332176603,1.7391011588265868,18.58853926597969,9.589576479959154,29.486241348384024,0.07 +1062.7484288920143,32.23542966865913,18.657093463291716,-17.276997145932576,9.021191578887818,1623.45 +311.85053144097895,2.0289873154856193,6.976391742014494,1.0846586794605573,15.034065688585256,68305.83 +664.6186993692044,54.15616089669097,15.269929985600337,6.99210127438469,43.252875076107586,2188653.79 +1647.2608010914787,3.0277074190078324,-2.462485072694336,-10.61862073517747,41.31218925668596,36.08 +1553.10738459239,2.093263084516314,-7.463827959777083,-16.974014057599035,93.64989603680908,0.0 +1776.46993921528,1.3861452062942012,-13.82526175980662,3.734584136821084,12.812679343079768,252068.23 +1283.7580868030457,26.46855644000285,-18.736821203409846,4.116275868779025,15.78096063624281,133256.6 +961.230681844499,2.357260363808519,-18.32010589101052,-7.520700043519266,75.33576455402928,16253.72 +967.9429955980112,2.485052819950881,7.662668304163844,-4.95226599222931,3.217461520064311,45387.4 +549.2000800872987,2.1847070378528275,-6.5370133795883545,-18.17576938596432,65.44369125209978,0.0 +1371.4381307321871,4.088747060770534,-17.837533017709845,-8.168456481154426,75.00855148302222,16608.58 +1253.1237609671373,76.28214002170654,-15.511907616553824,15.304099001806724,63.26971081280607,33061.3 +478.7559405719046,9.402500297779374,6.611350598563992,-13.148219598350664,29.49269139551962,8429.88 +1794.1932560816747,3.3247261448773004,17.54720861208566,-1.2779242242159317,11.255111069690416,60040.44 +863.2427659590746,2.1917020780685696,-3.6808723072836047,7.073048846600791,99.42324969281536,20250.53 +289.52977793792326,1.0909449578740062,11.106302699779956,12.115290329014387,86.07607093932326,76.25 +790.1856574036109,5.37013611975084,18.943272404563224,-16.754033228927824,73.33301208380985,0.52 +1765.7420864808364,1.6600568017950397,8.331971955771373,3.6734449638366407,19.516993738427164,623482.41 +1850.521854551212,1.132462921135284,8.920257333383347,5.09160695837275,43.66008943991204,456527.89 +1082.7171510673404,1.606791079126645,4.636031767268798,-12.104745664139482,71.27215903789505,0.11 +1921.4118921321524,4.335538356559059,19.107060587537287,-18.7660593176826,11.041799652777462,0.0 +1775.4352565815568,31.748806421367508,-8.007758625772908,13.77467593697626,95.77546942057693,0.6 +1685.4152907786056,1.3613584843597706,11.31953803842872,-2.397206717049949,95.56805614586214,4193218.66 +1747.478116427971,22.76920396596484,-3.3968775115148153,-17.568829270876737,15.89902230220908,0.0 +887.3757419038823,17.421480438000014,-13.783214316376167,3.12114834901203,20.508623655413405,71567.51 +1561.6440933599786,58.073822244710506,9.574894989258866,-4.923481582398663,37.0435621443006,478541.49 +1239.2102055370688,2.3333184598681473,13.176076588445994,-16.7919475930513,45.617749390822304,0.0 +1495.431203132552,38.773536225756075,14.543964777803588,-8.515550707250842,44.632832989665026,126876.56 +520.0149936453943,53.669856500521966,16.875139797903298,-6.926755067671366,69.13221170216647,8912611.55 +1516.5090411948954,89.73632159915654,9.7964637292668,2.9961992531616266,47.55101087629998,328403.9 +1923.6663815495092,41.40937885019313,1.1047422056280531,-3.866658479659693,19.241120932553493,546593.16 +744.7939802865732,1.7682204199922895,17.54781705598021,-15.720312886610856,26.84121140538244,0.0 +1975.0903831201288,78.38952273870756,-11.617372953927596,5.413416753736131,41.70834175980561,223570.64 +881.076826649668,42.6563907048537,-16.90760946302348,9.151967530272472,52.41052796290813,909039.61 +559.5022946378592,2.658583890883523,-2.7349711849654046,0.2921188898929339,92.37864037578002,947008.31 +402.1152136404291,2.1399065156385686,3.2887435018168665,-17.46597026459582,10.52508257357687,0.26 +1612.93144391872,74.6153706716593,7.199575398633256,-15.871008241705056,80.62941381540287,4802.45 +1198.685720677823,2.048317390381756,12.616878739163887,17.785835171191557,31.774806961712216,0.0 +752.836328591652,35.82669700603212,-18.929734201737396,-12.425385698474363,72.97576637353798,3009431.89 +1295.2106656287642,6.464255424251301,12.081853640429676,-7.700217738941957,26.567491502391597,120952.97 +797.7821381138085,28.02918893374157,4.005147179263031,7.500548631718238,39.12929310710551,46067.34 +1007.0439631912255,1.5265209197458662,18.117908017509812,11.673424639160167,44.88242318012839,0.0 +1752.795426355564,28.19139557121187,-6.084103081184025,16.440756811424432,75.3266852951384,0.0 +1402.6996583464966,10.563862861820944,4.679138378743968,-4.192569808962734,17.459200318470973,397614.13 +1572.3233114684897,63.205776435406634,10.661936251357387,19.69168016775229,35.30867973225057,0.03 +1250.2883926452373,2.381205266939517,0.6558168301325651,-15.844378715564726,53.32658313482848,0.0 +1984.5164879941176,1.6546729068778507,-13.763697065217915,13.061370240587893,66.10166959762574,0.0 +634.5381193236068,2.4685424332660575,-18.00800911920083,-9.115753884428315,8.530868872353285,1021.56 +672.1240892938665,1.4359877480771146,-15.54397354643312,17.483636859228472,10.377898157402464,0.0 +366.6060897289992,91.26433249405122,-0.2038167060888973,14.767852391771472,72.1295469327588,1399214.41 +1197.2351037272788,1.7608130644230957,5.584350940251688,10.490824277191484,37.24873620369142,0.0 +1304.0466255350625,2.52174919689183,2.8208426326472313,4.149898199764608,17.395939225918085,251107.11 +1506.7308312178757,41.62665317287074,8.51664567369529,-11.4217464480524,27.056928339983696,27357.1 +803.8026667086699,3.115363959507321,-18.440214257021395,-1.5229855786915714,60.22324875403025,66268.5 +222.06224335704897,2.7834708684526994,-14.546371138836095,-18.608567010112857,95.37634916780353,8398.37 +1338.013166758976,22.11156901691759,10.445604357943584,8.376142951873478,73.4592425844101,24540.28 +1997.6518865366888,6.273796980796211,11.247294739102314,-15.364829301871795,79.90863433502118,0.0 +730.1888368219865,46.8768378081441,8.091753372709313,-9.668470658125612,61.236407749585425,109730.02 +531.0820144442355,18.903346337275185,9.817201730608351,-10.198016333927471,37.74696751248761,43658.84 +707.1805240874357,3.7707647120404486,18.5376034600932,11.51794623296762,96.2586032700628,185.56 +965.747854598685,15.698080478947366,17.768746950121233,-3.974087595652116,9.046102965709824,33611.69 +651.6432721146164,54.065875884843166,5.779273626027228,1.3816391039167453,81.05343716429444,246048.07 +824.5280456615538,5.3575461543716685,-7.226616850497112,-11.655257754354814,26.56883349142711,2915.98 +1348.7721294428527,29.7126538199375,-19.435604364962792,-6.635915436385846,61.17797614099533,1129795.06 +821.0503763167064,6.786814214267035,5.264324836355305,0.4759577229416312,98.25625186470629,1206947.24 +912.9061006105784,12.194016983414748,-2.747846126517288,-12.231844419900645,84.38687445468614,18116.49 +272.0562730386751,29.335943167599726,-14.118901928071551,7.592500057453493,85.16392120869153,5363427.68 +1852.2965029211657,1.321462193390662,-11.389690079816251,-2.0293048684585058,82.48372526608198,4116623.62 +932.3947278467366,8.126415889993195,17.461172636399507,19.3460166698344,45.92558038162214,0.0 +790.6583288626298,1.5503402843900576,-17.351098373759505,-10.138784137002284,39.91217096475511,430.54 +355.6715532416921,28.18454894624157,11.498831024514654,-4.1576159952601,52.33640250273048,1876384.23 +1341.5297877113303,16.42905298957705,16.081973245843013,16.986515307418912,29.22616158659166,0.0 +1754.884910474759,4.506706969936276,7.533900987131346,15.439895531548723,48.336282877075135,0.0 +274.0757600943206,1.420898405121416,-17.546334347375947,-0.6332081068285023,13.55281272652114,31172.48 +461.4904412588639,71.0566819777852,13.834116912688405,-15.056257464465466,89.36089663838929,4076134.54 +463.5016919951732,4.2658682777324275,6.131557642436478,-3.648744830712696,73.83139994233565,434872.44 +1284.0947396260271,3.5542956889237423,-8.91868402512448,3.4932248721054737,7.141030140386588,128555.33 +1858.214904893064,1.5922451761854808,5.186215314240541,-9.83083449348522,66.33494975937548,7.2 +987.9830607179172,14.279283567591294,-14.538288601272845,-12.354684875232884,76.11109267254128,7691.51 +818.8516067489312,3.398653665837208,8.305902118526465,1.257506501394161,86.29957985787499,1283850.0 +1578.5132340740442,48.49602740288604,16.119824726345456,-12.959040315547693,33.58338034792684,5001.09 +1536.6243111601725,23.202435136429543,0.867250584734971,14.981389513150308,63.442761119388905,0.01 +644.1610506989773,1.0181923075569064,18.084238041767904,-17.03036508568993,28.33256234324484,0.0 +489.4874521541949,13.531602242128592,-2.4762012871828754,19.49602701917758,85.03918730358109,71.14 +844.0580583476415,2.90850191204772,14.302681271258182,1.517720400511875,87.64083238048742,740932.72 +1596.0861060079362,1.073332401796665,10.945936635090945,19.34249282152823,8.578742846835313,0.0 +1451.114101846961,17.327436899594503,-16.46281942626874,10.060642023988082,29.222104718644115,84.13 +1398.5366714411691,2.569382254971619,16.50610311731016,-13.884076596557984,11.178267864152437,0.0 +1692.971408293767,62.99000167616533,16.41710615366453,-10.902498887900304,40.47732755017175,44892.72 +698.8345622145088,14.02043479290159,-5.943365364171984,-15.72212384609231,1.5097632661250049,45.88 +811.4307058451182,2.620415860699713,11.737555267010476,9.163411688266404,78.49946798911313,143.93 +276.21101109651676,90.83534695764656,-11.014502200582914,-13.25366108513018,43.713727653720625,2061571.8 +1763.74239644636,12.384632765434707,-18.784276563681427,8.58318779471455,53.89489577029401,1039.88 +1248.3735228599205,2.142616002797957,-11.682514755331995,14.379939625168534,74.51917921851404,0.0 +736.620125390648,10.82640676886487,-0.6404864342511862,-3.5314222427976683,71.52006291339792,593369.65 +324.94975660885797,82.92741282518512,-17.68929986065234,6.441500396042366,32.15155979754189,2947985.26 +1502.1371056924274,7.053756470862805,-13.59975267554384,15.807831270127648,78.4939686508797,0.0 +1547.72753518831,7.090731226409041,18.01751973526333,10.125024403679731,64.43499660633064,12.36 +1399.1215738070407,8.360907995929553,-0.2463635533335439,-14.76957521795314,22.598948713086124,0.03 +566.8057477041132,3.6325123734194142,12.924021191258564,-8.29951064249586,3.8959474333027657,6751.33 +1843.7889053154888,2.1065279511930664,-11.7350900302964,1.4255046652379957,75.8601592216284,3268776.22 +1555.6844342375773,14.383196268493364,-16.459132276368894,-9.429234570191063,17.39909630653453,8668.6 +1383.9613824511466,61.4328117801048,11.221922240428851,0.2369521385309347,12.148850761081324,111808.06 +1371.6990621592176,29.611437015146088,-6.046646856045235,18.113230117685504,42.620642016748725,0.0 +1827.843860164954,1.5573090781522931,-1.6078225856991055,-1.8733173548418505,92.25007590109158,5004635.32 +1870.9528395748227,6.33429013866839,19.68516101822294,-9.533206034708442,72.09737188639536,1066.91 +1272.147352418432,1.0246882584663457,-7.338776963031082,-14.136852848839697,80.00810131126514,0.0 +950.0049397325872,4.129341223282788,-1.0741683085337073,16.043900121059593,27.719359278664623,0.0 +854.7211632069492,21.81489792630739,5.392453268710473,-10.808272435948677,83.67014092369193,97878.23 +1674.3419139453006,3.80599809856268,-16.43724877087577,-12.255196063235264,42.12267022586781,0.0 +1360.2896117018004,47.986230764417705,8.657284120584166,2.045491278824594,97.9604003215606,962002.23 +339.07885445657655,9.010905332788962,-1.9307591889985745,-1.531557924346174,57.40566509187211,128572.26 +455.93482342704897,21.793968842627542,-12.999420898650902,-4.573404343514764,61.01717637189526,1103858.29 +1820.3346111887236,58.577447917604815,-2.778325611981906,3.1460673052585753,91.59813619284984,1295828.64 +1792.0966665881017,23.207086301818933,-1.5732860959394657,2.776235467387025,94.8917905960375,2166580.76 +1913.298407655444,62.32358235121177,5.6294789963328595,-17.263899273359723,2.7469850144444057,2.65 +970.1317411909828,41.31718377376655,17.485352655461355,-3.4032535139809728,24.013311635158836,1157580.92 +1611.309633753273,13.618475404089208,10.602623554480344,8.83946464191049,61.81025853115683,1256.42 +1690.8050491657789,3.9306665240244207,-4.701998383585808,-4.732834123319414,1.3578263725129744,38502.09 +768.2544305087475,3.947160710896691,18.78592861102904,19.90637390529748,32.435496458661504,0.0 +461.607880208856,56.31993951428861,11.633246892931876,-10.584597561163696,20.43507792553662,734390.11 +1994.6474509505113,1.28164710088907,-18.881927757095134,-0.1454285506120811,52.82423282694996,70537.35 +254.39456675242985,76.36136731352697,-15.336543443196206,6.957171220895164,60.13399777013845,3737546.08 +1275.2046536805974,4.509408720782024,-11.279553518208656,1.91450741871404,19.712430907362492,447409.44 +1370.382093527076,30.0429184991098,-16.659856679725365,-18.43707512296429,54.102285665589335,1.9 +1427.220815545367,4.571508222822309,-0.5829112313207307,0.5466474799186116,40.27585110000029,1363293.77 +660.1299391443615,80.64970412685291,-6.371278312313344,18.65708676653361,99.10522237542116,95660.93 +1498.8426397379314,1.182900077682264,18.917018549254333,-3.733444673386432,7.44517358611068,5716.06 +589.519213906278,5.089062133222495,-1.0905561099530825,-15.352844851216476,84.22783540920456,252.0 +1692.2688603530285,54.31528892344524,-11.513805592970638,-19.1496637333984,99.94861684932413,5.76 +594.4100133523422,3.5327514089597263,18.82923376964711,-3.509407237636774,54.61758020746576,73380.94 +1454.0708523369394,3.558270443330803,0.5552716569627103,-12.588127255393138,68.37668422262047,0.06 +1610.1442745011566,62.73409426057702,-17.077609146533593,13.387949866187906,13.66677930983611,2036.05 +540.1023508319397,45.83154590864409,-16.765015159259026,18.09029894479144,35.73138990035816,455900.24 +628.375677738685,1.6275801726485093,7.01170727773512,17.621202906881305,18.967477490699657,0.0 +1602.3867297218603,14.466378363358627,-0.2081644388993941,-5.018818634598028,58.74875915609736,1359565.51 +354.79814894291513,2.797630645831339,4.969232577955833,-1.809717567724416,94.26683646087773,496768.15 +543.3697144399954,2.693249224894512,13.9864003276886,-7.396810878055575,3.929767582623155,8201.53 +1019.9556311418472,17.014060540561122,7.255344439048286,-14.83790173638523,49.95016865745033,752.75 +1874.327471740587,1.7690183111690432,14.471594321019143,2.361552093317112,72.63216606258379,1718801.45 +1211.3801028074188,8.700776281357099,9.707539598205988,-12.551789898949329,43.631396433376565,543.35 +897.8201267748059,3.2482052841657225,6.975990119756248,-17.623672098121922,54.34810125474235,0.0 +1961.066400000458,51.03227684520847,-14.61205034577388,13.977333032584095,45.84442242232485,2.11 +1034.6803511983194,12.852525219927076,-0.68689548500247,11.94063968341181,60.151517089617066,82.83 +980.7229526374676,2.692884102881529,-2.676292293313036,17.051296899030618,7.789200497982963,0.0 +940.9597703979024,71.27402834717202,1.6278139320747531,-6.903769302845557,55.13268096148232,169865.62 +761.9241306922332,44.23775314144096,-4.354285593402296,14.828821814294976,51.66624194064955,3999.74 +786.2506575276518,3.3930046960960873,4.817489939222468,-4.061922799042397,19.003647518750387,245692.0 +1438.1067078730964,83.57989392171183,-4.30176502255053,-17.088822893922114,53.94031572876049,2975.78 +273.504075215386,3.431451257552049,2.3047154398340775,-1.6863558051747862,46.85177722413365,147188.59 +1427.270106163374,3.8484535057556184,-4.20498760468599,2.151446121662106,59.724494917436914,1796800.27 +562.1680966265711,5.914618108567101,16.07069413291903,-2.7162992456148816,56.81871046682041,144687.34 +891.5744057680872,2.136045212410045,-5.063372772007337,11.417434651211034,41.05425456481486,0.0 +463.7701506085976,23.660955427656845,9.237300309309248,-5.926888945582651,78.33232850508816,324911.22 +1194.9518793304455,13.021908867490271,4.549406777562326,16.8424406707273,36.388140955380464,0.0 +1512.8308009138514,61.50705923460879,-4.579058882326641,-17.03346508048081,47.979187612636565,625.41 +838.3800369014564,3.0321483894395183,12.305242737901295,8.816293539442581,43.21460476853001,281.88 +494.1498395724733,2.190089046931176,17.102686776346864,17.159119173294055,49.101346347387434,0.0 +607.710047476116,5.214909611863281,10.419373277835373,2.126488328823206,80.21810822936015,510172.26 +1672.603253346031,1.9598253325107708,17.943521835377574,15.14713187858012,71.25648946580382,0.0 +681.7677231077344,78.03726791424404,-2.547732325410945,7.6732474609898205,5.181553185995945,8120.29 +1594.4646674202088,27.22033048643155,16.549602265911535,-19.41882660859178,49.96325752187256,0.0 +796.15893225118,39.11860051314536,15.04891883818619,6.849785776559543,13.350624503049636,160735.7 +539.7185978173326,31.339152428800997,10.495492613209551,6.262466381057372,73.20494578919032,398908.05 +1509.1554073293755,3.0594147033354537,13.408027806153182,-19.998901406653612,98.6827361668488,0.0 +1043.381053055372,1.9112314181743104,9.205345584411225,-3.6335708917513942,62.26140108430399,1306891.63 +256.2990522946515,7.225487699181323,0.4923384915300044,-18.4480233175237,38.60628423794134,3054.23 +1927.8963548199176,45.50281277194807,2.096766045677607,-8.280048100104844,8.159112906213894,72403.86 +465.9562011297933,4.581742284653195,-3.2925288934379804,19.46329915757433,33.924356018103076,0.0 +836.1325576155645,1.0450230853744265,6.571707539562683,17.61136732843493,53.0038661066082,0.0 +892.6303429922732,20.898802618572095,-7.008404888655697,7.394370873702294,88.20498880467203,98478.0 +1080.973818665144,2.5126161199436323,9.586379098439824,-5.325916538733999,51.786355892257546,711205.82 +1613.7992402015072,12.180646086602634,0.2046144226197332,-4.141922800465867,98.45872011131657,2756058.02 +210.96250341522816,1.0709275720882758,-5.872483387765963,-18.47141250717616,37.54748209684429,12.96 +1878.4496924049345,10.41596978100526,-14.110883271788971,-6.468603272562419,1.048647835464548,10326.84 +1362.78102836542,6.126563956090834,-9.77896364008564,11.375381255649994,63.23390262912024,0.0 +1911.167982468084,57.65327387066605,5.608014517269049,0.7741181469812108,22.69477082065611,544846.33 +1671.3011673496744,27.77330726278901,-5.206027777799873,-0.9328889576447708,25.134679123957017,694872.77 +1870.1087925497905,1.1804736837273906,-18.67323495232716,-16.356083173710925,2.7248470307345753,0.0 +1281.8009916842204,37.93541096653249,-6.810478811519136,16.76001908557534,53.61575430420926,2.3 +843.1561691789146,38.23445541244446,-5.345692040821564,-8.677071223818569,25.50326965314977,61405.41 +997.2453136044868,21.22360218633684,-10.627964769191928,-4.683887605632138,99.43473396276136,792370.42 +1384.4581586914032,72.20935600928777,-8.54739885049546,-6.771605892176065,83.73004818320274,556405.6 +968.4773475794052,40.41169395430841,8.197097129154095,-6.850635899799622,72.39781636755154,300794.88 +1517.0110102420206,2.7402950688892327,9.850658155213951,3.972958190042397,36.035264313372515,705381.63 +365.3264289440533,5.795511474833536,18.35595863967716,5.081293730151537,8.088116483657902,261845.46 +1693.9759681727996,5.010100583032641,-15.276469381184064,3.942484222592912,67.22534227960656,537724.57 +567.5395513556075,10.228586751267294,-7.530999825248848,-17.260074918796995,3.207848512284057,27.04 +1899.1056971445007,80.80295443958502,-16.918218960766588,18.781499297641172,44.71849075684992,8.6 +479.98243988708225,17.029297667381176,4.53214935606872,8.55950784262875,6.22426317072815,3991.57 +432.4955529843161,4.225500124526894,-19.34446826784777,15.309147343034889,56.41107060312592,4903.77 +1661.376999057307,76.38981825605318,-11.78574634626274,-13.613226974252726,56.39464453009954,17428.28 +1673.663289865426,25.150287019160473,3.479201788438071,17.284322806551813,53.530945851224885,0.0 +1529.766955786245,3.405344447505746,-5.650454105792311,8.867226661225583,71.74412222954228,0.42 +1928.9548350284683,65.01679207229877,1.7750503636292958,0.0286294587856472,23.587374821559017,577901.8 +686.9713316337488,4.880067123538208,5.609500338569426,-19.074699504773797,24.9746712450675,0.0 +1687.9677301825177,10.775130809323512,13.557602714333754,-9.872569196919796,42.20016629843098,20064.13 +833.6729540781575,9.087526522408837,-4.284991147319359,13.549654734449694,70.57428952655192,6.8 +1167.317526024813,70.34961849405114,-8.8441234144552,-4.832732013197658,12.558495130427149,73471.29 +1002.0800534623916,3.398808680803247,1.5522053404719038,7.131069095276508,88.7028940736942,21189.64 +210.530040812493,4.641020574519307,-17.21274769302284,9.231721198992254,25.968996961956087,913956.97 +1234.031948370484,20.908379137207376,-18.323431089531866,11.025988317018337,13.660805738228966,1706.9 +1545.5105979751154,59.3241338117967,-1.9105105996040583,-4.705908681322377,60.29844748828303,840691.06 +514.1942904354883,1.69733740212713,-11.276849998670912,16.39333512868141,28.282627026255557,0.0 +1876.9805514074671,2.6288574543473184,-19.711336991465277,-8.312001636609988,41.467517891633605,536.34 +1154.719170953307,78.71707806867184,7.17481842025534,13.442583932877827,7.05034276267367,849.94 +520.8428056719683,35.858672583515606,12.64622146981717,-3.0106771838194213,47.03144285326779,1381913.83 +1362.7056276503936,4.921976490310998,-14.08485718176211,-10.630845882934176,31.06583533017704,910.28 +545.4608753276192,5.191222173298071,2.556090968055913,-6.262025939497358,17.812390654081852,83932.52 +314.36002693160555,8.690959804642713,19.35939811285115,11.982537552249486,39.24516645229421,1430247.73 +1433.567436354636,22.26378500585462,-9.249772664050386,4.594822697683223,77.23665065292293,566952.52 +399.2507899498901,13.245922487171512,9.232589284801607,-14.532851632091056,76.60136554825961,28977.7 +391.1914070775835,35.66480920226062,-13.515896895461877,-15.041309610605534,36.68811243998485,946241.63 +1531.898413727264,1.2833159249640913,17.283719263329182,7.488032272224152,97.4493544714898,1.03 +299.3640197745281,43.45917573294564,-19.982656592571,-10.420309053514876,13.46272994815311,1653736.43 +1657.5845222863184,1.3064798125990602,-8.210792790823614,-11.653620603295863,85.62033223375731,0.0 +1633.0677655660895,57.80266339662929,19.057300736933502,9.980070676910955,97.91625152552436,675529.85 +454.5081705399788,1.220418748189574,6.827609520065141,-7.09385308416385,57.72302101292213,210495.44 +1133.085165098544,1.801626921194292,-11.526176024066386,-17.26778960287531,6.9532414820524036,0.0 +373.9258837440962,2.2928135710800106,11.654623272657636,-3.006605136653766,92.1828749126444,451812.65 +1338.6281956147768,2.7931969830134973,15.923423182413307,2.7671481697871148,44.259137380709305,321190.93 +313.2740233469838,6.3609816857961645,-0.5091531705077745,4.059567880245973,18.01696514910746,28144.19 +1900.065541380945,20.462750724980488,-13.759053871694178,-17.659783675674593,89.25087686128639,0.0 +573.915323665247,60.98271615321268,-9.6562791106876,-1.8576276136034144,43.26106233423699,949378.42 +1429.2103807075612,11.194523703819716,17.724564691829613,-5.617520268367651,50.43932963374292,101118.5 +430.9245638787981,11.613937423288874,-13.55588811817331,-2.042609883983033,57.53103431537219,395006.24 +577.2736069881977,4.351211522799044,-7.523726521922733,-18.332107901690858,90.7534868445372,0.35 +1011.7093679900672,39.93565837975694,-14.178493015154816,-8.175723580042469,50.871206713209034,155681.67 +1231.573054414729,1.6633071569921254,-15.77576355317868,5.738341550075612,88.93225250732917,54513.02 +1997.9538327050293,4.001348344616609,0.8810023436023462,-14.963345541894707,17.852769230607265,0.0 +246.66721056369943,1.5630138540356564,-4.13162834822181,18.36881555292406,62.05379465023583,0.3 +200.56595535935656,2.681400201329369,-18.153262527028076,19.756430004337055,53.02487637277354,21078.89 +830.6607704869064,14.90032781117761,-14.192204931741768,-5.582307991757793,33.17879456746109,121496.35 +859.0814620443558,1.7861617133518413,-18.493664816501585,7.238217453059086,22.04037766602674,213.16 +1790.9070249775368,1.5894087169347977,-19.016402014478953,5.413740914688292,7.924056381417806,781.66 +1842.6485858551432,44.856111525857806,-12.86119624771489,-13.313407373604242,26.911754073901385,2031.81 +1784.944957446774,1.724242145021564,9.745971694028324,-4.472235621045839,68.3782836202609,2293216.95 +457.721750874886,16.44775771012694,-19.40920127163567,19.225851702772378,28.542672812061667,65015.97 +941.788703325932,5.0585071220433315,-7.820903005593651,-14.893029310914034,73.0827331518578,1.13 +1542.5932921310418,62.04892240272509,2.591522841513285,3.0070708758383535,87.64010215696037,871213.2 +762.6999220116345,26.007587818140927,9.74814273743776,3.967229764891509,69.73622487438392,196270.1 +1393.8284513189922,1.314802323914194,7.115675958362173,-13.298982894763984,80.70184886152829,0.0 +626.8571537439656,61.79256470573309,19.53697767202476,1.409925853748124,57.747412483653854,16706621.6 +782.1546643294545,6.726633859941929,-8.974909503136876,16.698483739099373,94.71390778459998,0.0 +1748.773368827271,3.9487068939850705,-19.994450879896213,-15.373751528933912,76.53122163536183,0.0 +650.9162649601911,22.15970849799837,-18.47122896485045,-12.410280220174874,32.94491378435672,641511.17 +1935.7833563927536,27.28650060002137,-16.099251583199,-9.774856750419346,72.61159072053131,50086.73 +751.2672096863245,4.041118202704554,19.00950754336015,10.03918338402588,67.51397533199415,1328.92 +242.35059768189925,5.050252496443782,2.8019317720699144,3.0900567150829783,75.39049090154626,106740.07 +658.8216268446268,2.0542865325139408,11.97474135691712,0.1418810925702684,32.61687293297976,381050.24 +508.16889603816634,15.377549356092487,19.403160640032816,11.68256840939371,51.44859044239899,1348123.5 +1112.2885391915895,82.0008032628652,13.770715395563098,19.13068579722089,88.15814761542602,10207.55 +402.888919390148,6.811596672989235,-3.695364945383388,-12.16167794603523,97.59571128059146,43131.42 +1326.8879790417377,98.26805566880608,15.035257420848822,12.482016753134149,36.63381568329076,107865.24 +1774.8183270016902,2.253352882460137,-2.6499633397433664,-5.196465171464757,49.183667750765224,1186450.48 +852.5339872467242,39.10199520148798,-15.441278221064213,-14.160351049643602,33.751650182011204,75867.58 +503.286894749728,71.81522198266713,1.925254039026898,-9.739195962888129,72.07597800603247,381808.81 +920.0449924119432,23.774352919701975,16.62989363151474,-4.02814067634123,4.840084617031282,33283.57 +1614.7402786111286,1.6544459313264464,11.381531985176276,15.966435686570716,95.4274456458174,0.0 +1264.677813343272,4.498655197841148,-3.9229132660903288,-0.8636187521599048,55.38743062753625,1625531.38 +382.0577839896856,1.4836505651678913,14.194651366826005,4.572122504030878,27.823884796666732,44336.67 +1166.93687778866,15.977037032657789,-1.432700208240587,-18.67062138909006,4.691751452063256,0.0 +1042.5536866200678,99.15111863172297,7.382989076718753,-17.439731531387118,56.51353219916169,14128.29 +788.8020608380906,5.6170621152763625,-6.674593249528993,17.533305358241797,59.03150005360807,0.0 +398.2890728959819,2.117825070203707,-12.211439729550175,13.532712513558591,69.82926507828614,5.49 +1966.0014841164948,3.4457232185160063,-7.461183848532928,-0.414373972810016,53.01413198402951,3009071.51 +516.8779758078601,13.854917319080991,15.006545258772714,-11.984069649825098,52.054755476269605,116281.07 +546.9372034233419,13.738001949477294,19.590839391452057,-18.39297515358103,31.108818861243897,33294.69 +462.04884578402454,2.88165288510021,-9.443326782144329,19.01395407496091,20.209711710775103,0.0 +1226.3474696580886,31.72557346641832,-13.38546348548324,-19.773108484781247,25.84932786947617,0.72 +998.6052340688608,1.499769726693403,-17.156690839015795,-10.494088586845738,38.10092484086181,33.29 +649.2029276478007,17.62302939117458,10.15278224955441,7.356118916168461,77.56124730448164,71649.22 +972.9620894387508,7.102281766018323,1.1200102184791971,17.51593024840284,12.70718996645348,0.0 +1412.339331911092,1.7961807583641822,2.244008037491505,-15.317627633955002,64.72467933500052,0.0 +707.0609566975343,18.568187125982977,-18.19174454228105,10.955639958749552,4.758165851702045,29798.37 +1847.4423968546848,22.187012926093956,-16.757720340339425,-6.729274768609237,5.265633709542186,18248.25 +751.4232269198704,7.586484786710229,16.58491958574251,7.188737059192727,28.091199294711945,7304.21 +556.7222554811359,39.44442585410505,3.0692329785548766,-16.134670784076608,36.361961911154424,11414.68 +1918.222124371066,10.438381584089424,-11.231732750643816,14.592673075908866,19.798929349604897,0.0 +1659.0090982127228,3.72828328841338,-11.70154813887576,8.28895735841602,88.7373999570484,10.28 +817.647724718238,80.76116142084341,-10.363872554148744,18.224073578105223,31.166942074076005,23683.44 +1714.5773320589767,77.2837301638785,-17.449684361904524,0.0967663024289633,47.36750141283505,1069498.9 +1133.86564847684,1.5532551042020102,-18.00946993493718,15.507653208710156,99.41752454496292,0.0 +824.154496869913,78.01220711455682,8.799413985045001,1.6159450918971086,26.13600073850007,171578.83 +1711.300861170586,35.560246392162725,-9.44972742207186,0.5115674367748957,62.26052501323517,1455307.18 +1553.897120355993,1.634136479798446,-4.6214001892538015,-16.21558315136261,74.90597618559238,0.0 +736.1747167575904,10.930764652116473,1.494517007479974,12.566779079404547,27.833196671027743,192.78 +1292.021327464353,1.174634142622955,-7.197436222804794,-3.5118992468493904,6.690721417697198,199994.83 +864.902402335635,15.056157220273535,-0.8485434700731131,4.001001773611379,79.34505396610847,383046.79 +201.89355060869863,73.5148852603981,14.600426167807852,6.027665149952579,29.61314785430192,1433162.63 +1931.2683345205028,5.45028829400424,-10.236020741805753,10.992452086927091,32.80492130758543,0.0 +1189.332336931106,10.405197983414364,11.650386924895134,3.0137725142612126,42.059627807706185,475365.01 +1277.1786829984096,2.851810421907473,-9.442053810693483,4.796421929239809,4.865914254068474,39090.37 +1279.804566219131,12.07514848482439,-12.52209568649544,0.8301865840168254,85.29023261406304,1364327.96 +1191.154629474925,40.28555373309725,-17.093650023969296,4.5580689198606406,86.46993554596045,845890.81 +722.0861205924682,2.694738007697678,7.368060849642677,-2.230839466362702,87.26493453393654,1265904.61 +1948.837024834501,12.793033110926183,-3.5346476878337807,11.056460599657957,19.079463051337896,0.01 +1319.0031425275129,5.1201956255899,10.817076556775936,12.420289918274287,97.64498714365035,0.0 +1407.6584489971306,31.31440442257387,-14.69315475867739,0.6843029487538788,66.48709709806519,533855.24 +1018.6269631706896,25.35580037386915,4.134022130405923,-14.134878427676105,59.70204763091234,6760.3 +718.1505208834086,24.979245263584183,-19.48051821099789,-5.060081103334855,72.50430435758946,9873487.79 +315.82816791487284,5.696475940566459,-10.646800612836447,13.597546785916688,75.83961307363114,5495.27 +830.4143538221953,15.796417583757242,4.3858881198577615,16.669960086395747,42.196611871729864,1.6 +516.9753726831058,20.052585066747152,-17.758452927179185,-9.317879930493472,58.80833098628971,2964350.14 +1391.7588828626212,22.994710420483663,-4.91085006151176,17.64410401018106,58.92925522712356,0.0 +1782.2069926448949,14.142061061497625,2.466512801066818,-8.931470290164953,1.77317511679743,5758.95 +744.9587448421742,54.15137562762607,9.10346255850435,16.755073709861566,1.9669636143435232,450.06 +799.1887257452838,3.1448298897203557,8.22624219873644,17.41742104150044,47.59974807816945,0.0 +1406.656106892221,1.2930448197164224,-14.072776003579111,0.1932763527298897,56.28860545888595,1230073.32 +468.68858163422544,84.14085247106858,-16.993185871993997,18.02208616955687,71.01489333086339,3236919.68 +1872.9873680198584,1.322718577560854,-4.945664008007977,1.9708946345652611,75.51877674440604,3736238.01 +854.9242058458696,63.9604206891169,-10.367758379592704,-4.844388478877657,58.99229559893388,355349.75 +382.1590026681944,16.77142150483066,-7.772344207324573,12.406380210107528,29.15498656266501,19900.74 +514.4312088571547,68.78294564291264,-6.300614045458635,-15.659115939520497,62.31167053459677,379248.82 +1878.9429368134245,13.486767202216107,-4.112887707969541,-11.333797266026956,26.720277333592723,1443.69 +644.814719064236,43.85483193358689,0.7440166559362149,-11.469995778967489,81.9399413361775,76409.85 +1392.0838468963154,27.70642721472749,-19.62785065089705,4.8829411431096,42.908284762304966,721936.94 +481.0974023688772,11.22598008189097,-8.07990542204064,8.354913006509017,89.6006390850659,52646.0 +549.3830462277999,5.3290179108306726,-9.42531440521706,13.49701654109371,13.665728993105688,10.13 +1782.6287940199595,1.013253333910873,-10.55107869767282,15.99447858385265,70.84192110410957,0.0 +466.45979618461126,3.17548853549132,11.544767915173196,15.001900659417778,43.502707183457225,0.41 +233.75105612530248,80.08176141022474,-9.94808013390768,7.279783876586254,13.61050920464663,620577.27 +1102.219741147297,3.5556884067540264,-13.961414357773606,16.59306709840387,56.342546946486195,0.0 +1752.9082638732823,31.89369856754686,14.073040245480408,-8.978218332959482,21.97352673784966,62768.24 +786.7838817481245,10.399087418600878,-4.682340142700574,9.01103704909126,29.943307739773157,6634.28 +430.69208716227894,4.140271006329089,-12.638640113260568,-16.933302731410794,46.165902268122814,70.81 +1968.015493218148,95.9813596872239,10.048314226374323,-14.99086301040336,37.07166617897823,3836.06 +1418.129533080944,1.2415058064053468,6.28697313887943,-10.955114237881078,39.482816852602014,0.02 +1731.2431375066817,14.593323603286787,17.811990680745776,-15.89293030492465,40.30580914271467,0.0 +1553.8488901920628,8.375995435835913,15.111823182763384,18.6266338642137,2.680331628523417,0.0 +1456.8360931805423,1.422501782937432,7.772614477831863,-1.3502308213044634,37.364126908360646,1530349.9 +892.2153208356565,2.680355577662447,-13.56035497904896,16.268174419111972,39.95695670712098,0.0 +783.8119877665508,24.461548581873785,-0.6727504624754754,-0.9347220809832768,59.68081804027371,365244.02 +1490.5254726100534,1.6468621930704828,-15.248452391587456,7.987047556069364,48.61086155910624,0.18 +1490.0834147190144,39.9991001388186,1.975931224893297,-7.131408162378685,18.081693749166888,170261.55 +1911.059091288368,17.787789767074397,16.67134227785692,18.026618116170702,59.20335399236157,0.0 +1223.58767212698,1.5911648992006864,-19.847082117715335,-18.60422152819269,4.473219251096206,0.0 +730.3179904178123,3.746530370988682,15.040591850586216,7.896183248838868,33.994013126990836,2728.22 +1081.1518387948595,1.880856770197287,1.572722970354734,18.0151997195353,62.39132633016321,0.0 +1304.6848701066544,39.37337028130607,-13.950019204339467,11.525945190413998,62.77428129091595,2198.81 +968.1136392384424,11.639095998917623,14.234629667141403,13.103851161652734,18.860663717557536,1.78 +1624.0396220471869,1.0131176312522268,1.4758539050044428,-8.03347920158533,34.57974764464756,3983.96 +1252.3037819885078,12.184488277326254,-2.073371915359954,-1.9260803953784225,46.31204136782112,992177.38 +216.98430972977096,9.238625622735205,-0.0112732323704678,-14.552762784530726,41.73144187779312,24622.25 +1225.711798817615,19.32648197318972,-14.105136972053383,-4.9437773848934174,68.8557463225187,518749.35 +1340.4868146953495,1.1740541039586003,-15.490472997649318,-19.662589274735165,74.27862793861833,0.0 +1847.4702527793272,1.177203606296399,6.4622585085513995,11.150784229402015,5.045226380653051,0.0 +944.6990125955394,4.997309069801397,15.216474761809549,18.120493890093087,74.78147662341965,0.0 +1234.041786688445,23.82737458500432,7.778348444408945,8.033974028412976,87.97202112999373,57263.42 +1054.9954112858732,21.5335773740954,13.631407597608089,12.411903746117744,91.47668324453343,460.68 +1156.9815712439938,3.6018627378574384,13.790865607859024,0.5387890190118227,6.542195277869056,103293.78 +321.14732720419363,2.7047995725582243,-18.71837704825196,-12.333261188022076,88.48783924304064,163369.77 +1815.1106015595824,23.24080649686008,10.838195960209015,8.83261846435412,17.20686738714227,1073.08 +1838.742211696926,1.1329884231309513,10.88370282101993,-8.02864780417079,34.49625826580984,2713.95 +1186.5072977167388,12.988729230871597,-6.000921359793159,-1.618999809927666,38.78454553727708,739944.43 +1201.799928297702,7.050132579566685,-3.606039599734583,16.026713788215638,30.59963328855799,0.0 +303.6008646991182,3.0072784063949687,9.819600005026675,-5.082514700558827,30.176701316591,86819.68 +1276.3109236155622,10.979844224979797,19.46218963481824,-8.42521929373612,17.771909226831195,7676.36 +972.4732217824924,2.7185374069162953,19.51300645759879,-18.732219850540808,66.24256415192015,0.0 +1476.2785344219872,13.447551342909083,-1.046285543498735,8.058274936346477,58.46466389349403,9559.16 +284.8248498720303,1.9858556299169396,11.582029618159652,-11.391203243470498,61.73860203576586,19997.68 +1479.5978289130817,6.477177881776966,-1.357540294773112,5.576665250928565,52.61424346089451,198688.9 +716.408882898165,10.491864438824232,14.638365936214791,-5.335833043958909,22.86272792921961,73240.27 +1373.0695948155944,1.1571830298937789,5.9891064407438455,11.507027385585058,59.04456084592164,0.0 +1328.8267555618213,16.6507760987821,17.465615636979066,15.59577923451888,65.71896119610582,0.11 +608.3146723380186,31.668725598082386,19.889606454007,-10.571870457025293,6.140412075387185,750389.21 +992.8142213892802,81.68590512303649,-6.792493586284971,11.692444024395684,98.7862138712745,43657.76 +1704.139866295984,2.548312619658742,19.17295253248493,-13.887448506382992,58.398725105841685,0.0 +1290.064958470593,2.61451257202485,7.700518673228252,-14.362906186138831,64.19490936096066,0.0 +323.7289435611406,4.07063018268352,-10.476551990838695,-2.862173902025922,57.39849470704751,172382.15 +997.2358963774934,60.468343976852225,-19.875522003206903,-7.019619945265259,69.38125914982632,16208420.39 +761.1886258002506,6.511999032928043,7.353539694146796,19.48631084093995,66.02760231018239,0.0 +1354.962222040939,4.014094811474196,-11.10481277758673,12.159159355440249,80.11612991267488,0.0 +1306.2150943314696,30.36418045329399,-10.744855158136165,15.60947545127763,16.99311329477501,0.43 +218.71658271825297,1.1911881246925131,2.086722594080239,-14.560093725392903,17.20859658635885,610.86 +1293.8519169532333,12.520711900461354,-18.762963132258573,8.558438270412175,22.73835941195812,1886.97 +1522.7293771728862,7.950235293815674,-3.345229792391815,4.171372236151614,96.38186555189776,1312312.53 +1583.714058322836,17.77118637218226,11.974938886029438,-16.03042996537608,36.34651970167595,0.17 +306.1563867019301,28.986738124651552,-18.909590447648466,11.746543767296185,32.30127898179541,2856562.37 +746.5851507977642,4.466597012297844,4.957663161860322,14.151272040680398,23.701614097958632,0.0 +958.2924089927428,18.742795731424003,-13.66481366872896,16.563719844174905,48.65913934772709,0.84 +523.5890740308413,11.185551608494343,14.513574975362127,17.59282145424905,90.62631024676205,956.06 +957.3209680970176,1.8532568787888344,-4.372522843957141,-15.68757723439839,67.74371921841222,0.0 +328.0331644860662,58.00326170918214,12.484893160699992,15.286891518245014,19.588342478997927,721174.63 +403.7911094126928,32.2983499419255,8.952810560754344,17.81440076689668,83.89788165512627,216080.55 +1403.650573118155,69.71211651458034,15.113405038319732,7.631767800766234,94.60496623041912,265657.07 +672.630430088279,27.59365200523987,0.6743957953510638,-12.645946562883026,71.59235466087678,44888.89 +1480.5305254632306,3.087543755315221,-0.5554797928731992,-3.966493152604982,59.76873770365401,1773879.3 +286.5953504300024,7.261936554289941,-18.50277870537485,-16.395590208455488,67.50537603782634,757159.02 +1212.865495478305,5.93932172271137,1.3525635083940246,-19.83014218081557,73.86170768222344,0.0 +904.6075944563124,1.1793531334360805,0.8790546990959269,16.80248337929852,86.0807828711776,0.0 +1634.5485054478374,6.623633682579667,4.255791302107204,18.893536382862735,66.20839683489334,0.0 +1611.112844370011,4.910649169128547,-14.759134450746526,16.771715617845054,53.616089115224355,0.0 +876.0073564235147,1.0182339481098206,1.5987163877976451,-9.841496679863738,19.062533601263976,537.64 +1320.8852253578857,49.45913517626488,-1.8387078103974508,4.844437219995368,38.04831202986952,187511.81 +609.5879638750786,1.939763799004658,3.83903964986279,-0.0120949984276075,9.374787801553602,122831.2 +1244.7323051247563,10.04394520564377,6.422003322918228,-0.1580971367569761,73.12418881179148,1652596.1 +346.2764491055404,37.09843986982663,-5.543063646733484,-2.866647122759751,99.23698012677288,1390616.56 +982.2877114134982,16.179412148132922,0.1621225766693124,17.647218224755406,10.500571220678925,0.0 +528.9098267685964,2.1812349649663334,-4.19608722797729,11.635575833295174,44.579387311990224,6.19 +1790.086127764741,17.235435096005382,10.619597338133511,13.87474269611137,70.30753691106493,0.0 +1000.8214723402972,32.74867919395739,11.856947937775718,-18.615572982683283,3.96226877719043,11.55 +1263.3927475475627,51.23055163923912,-8.28234411640031,-3.5219933152846172,44.517577498774784,445041.53 +848.6873485940188,4.338179517058723,-9.618162470354092,3.919130602112824,79.68291539162156,579842.07 +719.7338634316452,1.1690761510531258,7.132924245618346,6.348860421410749,30.027598866463062,18675.06 +565.2556095107605,16.439795574930805,10.960648212692794,15.795190883435469,66.3105098729117,1198.23 +1841.3688488006353,2.828375198156848,-19.56538033687265,-13.319883162012328,61.12673793722364,0.0 +1639.0384083685149,36.45777395395022,-2.9025607411109577,-16.398531453329216,70.30305541028747,54.25 +439.8700599758555,22.896200458961392,-7.69076486346282,15.727954569947835,24.775613360918072,8562.07 +1544.104777325237,35.186308763241996,10.660818157024057,0.2647696725995763,17.66508978748639,313871.82 +953.3553986659756,86.11174710569351,-14.258371015166611,1.568622525105425,2.6741945116449592,119240.67 +227.71397892902573,14.760286601580484,11.129860120031744,15.600026347222094,48.55458621450363,624811.61 +1151.0611766771997,64.3616398499419,6.4562646780583055,9.992398892271744,19.49697891638683,10726.99 +434.08359215275897,19.221477383057454,13.717182948995688,9.230179569288527,65.46951103682888,724046.98 +577.8817635684704,2.3093443303911187,19.60973389627803,-12.558861552167873,55.3686215760476,359.09 +1452.8737305633674,39.68408388823193,-0.9377951979910648,4.8564117030568354,83.53773134112643,504622.71 +662.855666854153,24.40041699933882,7.976459789011612,-1.9971509173292157,80.39178570427663,322226.93 +1805.39876331527,90.3398895697061,8.398437538423735,4.441659948985839,36.75995564704513,279959.1 +1382.9055651635058,3.0680609135378445,13.782929974191577,3.027087105551174,30.330522155402704,460934.15 +1698.1102728394562,4.637148805448742,0.7250072744301495,-18.948801003593875,9.13506769416822,0.0 +1307.3411689943314,43.952345218519234,-15.69409037727844,-6.244983781175697,75.88083621121712,340791.64 +1763.9292638396284,1.3359161375816293,19.174518203579545,-1.6878717174696731,50.12425688530698,35819.27 +851.0324150398703,18.467135221698488,-17.726506217045124,0.0088768651847814,34.29341460879857,414262.75 +1188.4530383940437,11.774761128338408,18.49498027482816,-16.02122921424933,70.65248493727411,1.34 +1128.6027207998004,2.1759241109635927,-9.785670972588235,15.941556054509496,28.136383694591828,0.0 +1826.8232745403468,2.1391607357275273,-0.3006431594876302,-6.627372291797409,48.32527970024716,348861.44 +496.8477354955044,41.72489404406171,18.026460149751458,-0.4231209834491745,44.16022762668665,8211290.66 +1240.5093737360464,1.0737181906523428,7.066421605258393,6.54909657346769,27.75282523778111,3402.02 +1557.9761496085646,31.16613019786779,3.4224538082067957,8.76326544335004,79.25358113068368,23090.15 +866.0895689605886,29.19674615600627,-6.964285644661126,-4.878899377083665,71.02628057280812,392721.45 +1761.6467443087574,19.923239363924456,-8.303758215024711,-14.835486948117612,52.43375758996359,4.83 +871.4265807399213,6.592275156153345,-18.688893436296535,-11.707293230670912,69.43330282976216,1761.64 +511.95576781264896,1.1393085774694314,3.4532890780528103,-13.397925702415012,9.850479513269434,1.26 +1251.2870397290571,40.13777892561742,-2.7959493767481947,-10.234487819215294,43.55309804505444,94551.16 +957.0224180671624,1.784080340637329,-11.027952121975728,4.145853253311955,60.41500847371025,549311.37 +227.3421884276082,3.6439714721582135,-4.63143502451298,1.430352818439138,39.98794872198938,74340.41 +325.7094664883058,78.26468715360068,17.637688324842223,-13.254782087006314,71.6982581249462,5724052.99 +551.498924371862,4.015337483867546,13.936004737734734,7.260660175302443,52.69952081818113,19471.6 +1584.793927132674,3.238010858397288,-2.783708037913608,-17.451812029409513,38.90535392164461,0.0 +1805.6711288607469,88.45881368037047,19.19812106275492,16.3842808727003,42.11961720821657,7425.13 +1182.1535732256004,1.4854717745600747,-1.5152890813657829,2.647633271184686,71.908107911531,1753447.0 +390.01783252542225,2.0959493133656353,-6.034324871396066,3.616692995093187,7.515008974319281,28907.14 +1161.9541140353228,7.527227284791319,-4.483175618050095,-8.564246343343571,83.97708153349598,254872.63 +1740.089829074501,37.6137172611387,14.984667460428742,0.4654801207943038,6.678417838499915,72438.31 +1549.0597324206612,58.71078374014165,-9.289809976360743,-2.9497083716776817,14.134738554756588,211699.79 +723.976694655275,32.45424014260288,-11.115889481704922,18.02985784341744,81.21087156537693,1648.44 +423.0030967190441,89.60867655496216,18.421892966121405,-16.95114170366411,38.071535979889475,3024789.32 +1821.2270595720377,1.0806679840402234,9.370756319989084,-1.650574574346586,46.48311018678895,2533379.94 +1737.3597439379798,17.338563366273053,10.551232590645384,11.660694019144067,37.90304639562943,0.36 +296.6876572614064,1.708804597344121,9.611615954176402,1.7830836337702485,10.211591521668772,41112.83 +1682.6140816842158,66.1798047014201,7.316294515146438,2.6087184705498068,61.24722534917824,762465.59 +374.9827480128911,74.23597463766073,-16.350081297024282,16.448624586269638,69.21800423855119,3700337.3 +313.91054012366664,4.036978490161678,10.14715388890481,-4.972288608280899,19.803441794232388,49444.04 +1565.481614863267,45.22900881453705,-10.043123994563192,-19.91742577876327,75.45793753964945,0.78 +1165.3591194649246,18.22011655185914,-14.703789431655672,17.026856546053754,10.880435231288509,0.0 +946.186443362574,1.5884647033015893,19.320119672632377,-18.677610067760316,77.7070860738123,0.0 +1826.9519527568395,16.05226492435564,-18.885448663642595,11.896164956283414,70.43227250796717,24.51 +1710.7464297219567,89.55999872315975,-18.73455625705926,-14.416231262709305,91.29954004358832,416112.18 +303.7222487847019,4.132264364330037,-7.603498702316664,-19.17263249031339,81.53626011215574,359.86 +1308.9570354941102,1.005267291957815,13.768082529058011,-5.813190508309027,84.60505650185638,536365.95 +1590.0813257734249,89.86350515968529,19.11776485326697,14.562257070238331,95.81298346020152,267125.46 +1190.8830435949135,6.729252660729186,-15.258891084701249,-18.522485237257975,84.58904878293893,0.0 +1969.4098983371389,7.275545074914044,-4.182406646122039,-9.492795701380636,79.8442862235165,32022.11 +1434.885508365587,26.620991955467872,9.372073140790793,-8.838030875244002,20.416495458887553,88468.14 +387.45742285464553,16.172262214058023,5.821129911948795,-16.207722699588416,75.75235032258327,17717.39 +556.9364215999162,4.017660401717487,-10.664932843365404,-16.29767825829142,63.637939589365416,15.61 +1687.2421181590316,1.5847317435675043,-6.831762396923358,16.32722460623802,96.19476969670109,0.0 +1994.16201165974,45.156995631484314,3.774986074396245,7.811826198829062,72.2833620430228,66091.52 +377.01068037030143,9.263057345795698,-18.58373771542626,-7.554498591051067,26.69810811325184,1725467.9 +380.59277212108714,22.128327342431454,10.329159094193926,-10.467168741603851,17.248550726121163,141885.59 +1574.0966974579103,52.60286520779973,-8.983803229003481,-18.284751484530663,28.854424855211708,18.89 +315.8377070897712,1.0850375261515026,13.133847372908164,-5.648510750808913,48.533910323555126,155592.18 +323.4082089167254,52.33238814814366,7.346753672831481,-7.954617352980193,65.5983107509556,2022874.6 +1799.8696694173923,31.88530088204776,5.816580834664475,16.68319234311271,22.294127199934604,0.0 +1640.8096621732116,78.2786811461364,10.694444837765332,-11.17965739530822,24.049226111315527,40505.68 +1786.813759755888,2.9321191240687368,-16.99461913532911,-3.7941102311299257,30.884610088566856,193880.47 +1370.9241238389566,4.414125477351587,-9.601170724764367,7.280563444924502,80.92100739572479,7917.12 +780.5655594899453,21.035725027976508,0.8694987056290904,-7.152785007145823,37.17660941051506,144402.69 +1831.363742599024,71.05358209284246,11.08625334611538,11.271438395611115,8.759697657703812,530.23 +737.7023449539772,96.68046329701538,13.962230106328535,9.050256996202975,54.95848875431509,2669692.13 +695.9195110187288,6.815148150901265,-4.715853810583046,-18.58124199831935,1.5889408179772473,0.01 +1795.5207545469882,11.980069883639706,11.745906044337469,14.23322511242414,67.69669878332033,0.0 +1425.4806664877742,2.1933200829726425,-11.18903559452738,-5.4439971322557135,84.36547000310524,1292164.5 +1812.209752476637,24.43153390396899,-16.702590273036925,-16.16577027651281,17.47182079798194,0.03 +480.62232065715034,47.286900217454715,-10.136662997311712,7.933823943299139,84.61538705934247,1525008.61 +1914.1342359781363,39.56385712877227,16.12592649695463,9.885865934579922,68.22334236737329,1149.65 +1302.9358820605887,4.916840152464134,1.7614568235421135,-17.15961208601373,10.756727081970944,0.0 +1402.4630793681697,84.43607392013445,-0.7460355961996878,-5.8431737908890025,23.561535184364654,187751.68 +1845.3090445876128,1.740576733972495,9.733387597770378,15.819219543069469,23.50656531306473,0.0 +885.3553544503316,9.726129106808882,-19.596282740197744,6.7775187742029885,21.367570920501965,88185.18 +1495.234990452552,12.858616986392796,-15.267875252113177,1.3568679819143092,34.12050450583463,346317.72 +1352.6131180240711,11.831170528547617,-16.01589096954513,0.1645195339078364,90.85966318558222,650705.66 +1617.9548939587285,32.79303098392106,-15.1333155570039,4.336653303035809,23.18993628690544,91773.04 +1814.497025299953,16.565878240196362,-1.8619854120475,6.120837408549642,92.74345704180784,259615.61 +1424.1095397741703,1.4264575979135286,-8.772683417409834,-17.246536849093403,55.416177701374565,0.0 +321.75119810551587,2.289303155403901,11.429000311717212,-6.6340683995426675,52.186591975970515,127029.92 +529.6526225296044,11.60053560325029,13.561564710295832,1.0660780886776775,67.70429841430933,221173.32 +1917.1607280807511,24.496001622896294,16.99757388853338,9.213658920643958,80.76200746229048,569.98 +1943.5708520790072,10.674537430416429,-12.157504031976028,9.710989067633502,95.80596960773454,2.41 +1941.3439646570523,5.140620773282392,0.11406737564843,4.220373288561712,1.2662721607706142,28430.25 +266.2389207202124,1.2655203218438418,-18.05208723429964,3.460993226271243,40.41500643009875,91664.84 +888.4067023089528,37.30454941174517,-10.403674994631732,-5.289965926842535,18.724043567321775,78289.68 +1567.410867178393,9.871621150124398,4.603094821031046,13.388002660827478,16.023251357913033,0.0 +1555.1944465840957,11.955789529722496,-3.1043073872858784,16.65600919046611,15.555534077518056,0.0 +354.6360289099253,8.667947665930148,7.627969885591561,13.852696430931983,71.26790606225792,5032.03 +1297.0799967611342,3.39383583879983,13.569095222162936,14.876839754622813,6.062949159484323,0.0 +457.1653133735434,3.5706471005979847,-17.618595644628662,16.35240313602518,83.8357472099101,35.28 +1087.776799162028,1.3396815443256445,17.54451873368236,-11.91745457969509,75.50413969776776,0.0 +631.4342615140187,26.01345471081128,-18.30386685334813,0.5550628673232039,41.5177655827991,4785636.8 +295.6901091225098,3.4974035478902517,19.2667489022193,1.3816119093198287,43.12051010710009,2664155.56 +344.0349659478972,3.954783343444748,5.505269003684781,-0.5830038357411027,68.15787880018411,273387.78 +1839.6073095138347,97.0510508051326,-18.26799922850885,13.939540782767557,2.066350424673677,1990.83 +1540.3627355627614,5.910512112123285,-4.254847272972744,-6.998442670517844,39.32625658964584,366164.97 +1877.283167191311,10.504960300830833,-9.671661711303932,-13.547451748567124,18.833474603805207,0.1 +1045.981878200395,5.928518801649678,11.942893904686224,-9.02797546001228,18.89705430773001,27694.09 +943.9264981150476,3.8052415172474183,-10.98179322833618,-14.274893972794782,55.50842492766713,0.39 +845.133126503772,1.027309907431646,13.048500538123712,-3.808398196711149,25.34693493339473,313869.61 +1309.352772893762,51.25930288139777,-7.506343982542179,-15.3275560021282,38.143194294831645,3221.26 +832.8068965484005,8.83705078630885,19.565746849542865,-16.496969467249997,72.01426130298431,159.35 +1543.291821167611,27.528377007607695,-9.183635716584275,-1.959790019511547,62.44653811335254,1413934.82 +1642.371187188552,82.66342267485648,7.398432129009214,4.045629929814045,33.67225392233777,253057.63 +1776.5202681728858,1.013124178187318,12.007750272193965,4.305675167172316,5.910666441870397,122581.02 +637.0416744414991,22.39129510169062,-11.34162340354726,-16.308533869950633,3.639960361912909,378.76 +1148.6396887262756,1.7269565386873251,-16.969770200513018,18.862998017386357,49.267064322540435,0.0 +602.2003101137099,8.240055092350248,2.0498992627752433,-15.130148452108232,42.731573149858264,1011.6 +267.6004821566141,49.38148680644366,7.083162521618007,6.418538570534125,79.84815088063336,2818831.95 +1474.0855475057078,1.3899260609479964,12.691047356773456,15.545619871863591,9.120483780546884,0.0 +1188.1662930832244,95.32942418083402,-9.089442151412568,15.39064168376961,85.14291831351815,7084.14 +1503.0691031955505,14.51014178818009,14.891435694315405,0.4851586490456849,22.04069977843452,265463.83 +357.7212405317668,6.1657642857348565,16.63066595621367,-8.901887949013275,35.72239088099739,319370.8 +1991.9471223114956,1.0940080827682823,11.167479115912627,13.114779166586985,86.13290906751389,0.0 +1989.8274205046575,14.915786429497642,-19.69612600828408,4.503591848331845,83.92780441793657,61584.9 +1036.9996859063228,9.767443956493166,-16.51134408317691,11.641863785904253,51.97556976296896,13.71 +1758.9056873309048,2.695466907634525,19.909494152620763,-4.000318646695926,9.084878529923536,3726.73 +638.4234004500023,9.569628251035825,9.357947772607314,16.53714640396184,59.45728030432407,3.0 +1527.6190902019346,1.0606657079643371,5.071665475779943,17.18370676487001,76.41263446058372,0.0 +1782.6065422644183,99.75972150200624,16.05448032440602,9.493883828461833,26.968867567937913,64470.43 +1666.3992789454014,4.615607627071475,-18.414341390345218,17.70267324261555,19.123115461289817,0.0 +1661.1933408340833,9.12944330879199,10.295114496482022,-1.8600716975170917,50.207161873962896,1848664.44 +1033.447937759957,37.11558722149496,6.187102796772019,-12.221455196422992,75.18127670420188,55021.36 +1675.981906001791,26.6413781617997,13.928833257796924,6.236161864525198,50.98400893367134,88335.42 +1443.2686634383408,59.85743207945545,11.116169345294232,6.134603577696227,24.707065087386276,67641.53 +438.4125166595678,76.32230425625255,-0.6027657713546697,-0.3471189727866353,87.02272458419698,1189379.5 +405.5319273161362,2.389767562467455,-17.16126188418762,-9.575257525506554,87.32867207027147,23041.51 +1589.4598446823518,6.036701372927753,16.37606161891906,4.97371810912834,66.17483785724492,124385.17 +1325.8353597912628,23.63926580210947,10.540089836325617,-12.768810450792678,8.354687944479133,1107.41 +1134.8770109444797,1.2304063133076342,-5.7441574102005255,10.131958137387326,23.980360246779053,0.0 +1833.0712235278909,27.157501510151572,19.35712988938057,16.27248130303949,62.24775506958117,0.13 +1387.2626423681934,1.0227438578641057,-7.555671191896076,-13.335151765587252,78.3490238404015,0.0 +913.0641411589404,67.3250915327669,-5.177575509555763,12.810852214330426,47.95180642579423,11278.44 +945.0772547171308,27.311081578032795,18.98702795527793,-12.061119318992333,31.10036668212304,295038.78 +1289.439849471653,13.52067410537237,6.724443082381373,0.0169714275385812,88.56765515039939,1901138.96 +1568.4955124354271,7.207787007301051,15.167796249447129,17.169844679366264,38.7518670329685,0.0 +1215.8359525084234,94.63450985223632,15.51016586940012,-16.691571297450587,91.70778970194246,224031.89 +1115.7695879945234,29.71826607426976,1.4579334367937014,-16.409331197820567,53.70175608487433,604.46 +1508.4212647775273,41.17047854307131,-9.321327216849763,18.348939341668963,61.813619182254854,0.01 +1469.476189832665,44.74762402918227,13.897834424220065,-13.646025784819518,13.370755692118433,1413.26 +1694.6243131044098,1.1059866036531674,0.0755026833869854,-6.31809485083485,27.490891190027646,175384.29 +312.59321529912995,1.286378491938746,2.5740414693286695,-1.6402399916904864,97.49381638930907,633605.54 +1558.913837747562,2.493044160497669,1.654718535315567,-19.73216083442873,72.1480873438017,0.0 +1124.768811713042,20.43784928348664,-19.616477583623396,-12.47678431992914,48.23038613843438,69999.61 +334.44761605967335,17.696948718056806,-18.165235803444677,13.136216818252922,52.62128425732431,2280527.34 +1422.2180507051355,4.470201599426577,4.655373036970789,0.7541535773721364,9.691726314605278,323752.45 +1489.772349203497,88.30748705933648,11.777494347769007,-4.24408039404053,78.54967555807752,642010.66 +1142.528905180432,1.5353708261943415,-1.7184566338430507,7.278787109153151,8.065238905220891,122.21 +1628.8381597695732,35.7635190264882,-12.383668092685106,-7.009233430137849,39.312245514143946,351133.82 +740.4465955327428,9.157021615789873,-3.734583751967473,-2.458462111880677,41.65457718167212,397702.21 +563.432993356585,6.8812668528680465,10.73294206933575,19.749054100696775,60.70541502864567,0.0 +831.3211131379013,1.1249416239255854,-15.65514451021258,10.97144598018354,42.1377598890514,0.0 +938.0909239327596,28.549551050789766,2.4079554635336287,2.1589322054929427,96.11058386317174,587284.51 +1452.680484323904,34.926174662043046,8.088511856045187,1.0698184086538198,79.9923823437016,1282421.15 +1721.9358881808098,4.344251838436555,-3.366682330868911,13.77087835990922,95.97323598999688,0.0 +1497.6527421416176,10.81249055715389,4.050484788084012,4.034677974922296,52.35473871573137,687037.02 +513.1776063252827,16.32616744716085,15.33907783282642,-6.428853810345112,30.921254913090912,452956.47 +859.1907526404633,5.436138158603446,-11.48747073170783,-3.288331741362742,98.1497167167513,1177171.34 +485.1446842060003,17.02801453902216,-14.596673737835086,-12.66441219256003,9.041158260739804,40507.67 +1436.1035592044925,7.383361265522968,-17.5660679527544,18.38082320630165,92.78088429652722,0.0 +646.7093807904095,57.03477216059806,9.048522936774074,6.088252443620967,10.48240778209597,71954.93 +1145.696479133324,27.354353397754934,16.021233297621855,-4.057183169677714,80.88372739982822,355967.23 +1625.2937177504318,1.6634125212448774,7.615745052282952,-5.604483155456879,78.21323134144099,1253864.09 +1407.6906948589071,39.73803311271644,19.058114765490657,16.279692564601454,66.31015132083014,1002.79 +737.0731831972389,4.731635296040951,8.324429445116138,-5.587377853048245,78.47276843011575,660453.34 +799.1601511094135,74.32532964768222,-8.460209208305542,10.254591778106782,9.71768554846011,21223.31 +1376.0557158854572,16.096911619523738,-9.77642484533908,13.41705296847849,37.97752009794768,0.08 +1189.0419488118994,1.1354183827049686,6.666774684756667,16.39201356619404,34.31288477688805,0.0 +373.5082774460799,29.42560563413153,7.032467086954286,-5.077925826040279,98.17154977229096,906920.74 +1773.1848606923832,1.8258653120801025,0.9524932648415784,10.61307613223728,47.7809587937183,0.0 +1122.7038464965317,56.8244140186815,1.075563281639611,-6.924729326560115,5.91536662570662,29818.31 +1052.0498237554375,78.82438937671013,-3.3343426910613605,17.76076501323015,26.672024259599308,386.14 +557.1908059380722,24.57602873032374,-6.003158827935731,-19.55359353261781,84.56427170138409,2864.91 +878.5888741469671,11.634441853381858,5.362100468216018,2.80761798131528,89.27299231805088,684472.1 +799.0847521671784,16.00022226584738,9.900691841669715,0.3980774757571703,92.808381800611,638802.34 +687.3242290929683,7.206266887600712,12.5362293442555,15.104899099677692,15.26772677869888,0.17 +1221.3318343641915,1.4694863762091792,-7.686527206428173,-11.34750992218521,69.12060945827376,0.35 +1032.0956485045076,72.05879538021777,14.309369451401253,-16.508483948497002,40.8310959592844,58664.37 +1800.5558335664011,4.553790738663853,-7.890311561830394,13.85758250139423,73.81197149062687,0.0 +1894.4191586848897,4.2237241555926435,-7.804871376677736,-5.995924183040406,82.61379654048352,1456042.0 +595.0521726105636,2.4135124956577148,12.240091824947328,-7.003230098696096,26.86423558109751,98928.85 +380.1897717809789,96.56427799938048,18.775017382495022,-15.787581301416251,50.533473306874235,4240048.66 +1613.607592677949,76.75892335615782,17.289027798531137,16.802356493414727,33.40134013610724,1171.48 +1990.750526549496,4.99878824303717,-15.556826693175756,5.318313184312919,46.135936436473024,109082.47 +1754.4801257374777,3.3113932706877063,-8.46093542570705,7.68735106077143,29.77096505267287,35.66 +242.6553238137225,40.80741262105063,10.395861034445756,15.917519921215156,34.62394687690273,1058257.75 +652.2743912716388,7.001967657344587,12.249743833703066,13.754181082110875,27.95523416645323,7.33 +278.01609867427504,86.21366352003122,0.1706611618887077,-1.9274451683207117,30.54579366024053,1192778.63 +1677.4028786740998,63.45026776909551,-19.35588887837944,-13.609118338374596,58.21852191707031,207362.44 +1246.5325573261694,33.02955210575236,0.0739029327002693,6.892556106088641,60.42807039235205,113601.98 +1124.693374100697,1.513033626835908,-18.754123077233615,6.02860923474708,92.15295063995706,3522.53 +1198.0097875937497,25.366203550168365,-8.744182208218078,-18.116816598685656,39.66743555548661,6.48 +654.412265653864,94.29936618526068,6.274402014579281,15.976053832686352,66.08947309508305,201466.08 +1282.949064449953,5.579368754436222,-14.615904013670251,-6.590430340692128,96.5814031365728,481162.91 +255.200561235254,57.96128511968071,8.499581748616624,-2.848810100318824,47.169794264898314,2188921.77 +1362.8211031475114,6.550639183881426,4.855449454492522,0.5512558216563468,78.13609063610355,2277062.15 +1521.9808943218954,87.62902940969069,-2.8122312561478147,16.480769456340802,97.00549374546809,275.58 +1411.447274681289,20.28536110858232,-5.113797928906627,-13.180405177473752,79.18784595260787,3147.77 +797.8115329619965,1.5595559711199345,16.586656006833383,-5.252408228204111,8.969835716389557,20414.19 +1687.2732472295768,9.080117690351312,2.1268264763708533,0.053620246777184,20.118154400379296,790188.99 +1487.9791948114678,1.257353823545476,15.555981723039052,19.675949058121137,30.193486106515103,0.0 +430.93518126370014,6.168100586503472,-3.502309863478361,-2.4099581150375915,68.9353617798469,315444.59 +551.2595969689671,67.72709193598678,3.785607214711537,-4.058487512681093,67.47238747777837,370904.53 +1346.7951437208296,2.9134286654153665,18.184348073207556,17.401072424546605,14.57804943380829,0.0 +720.949040400847,79.64078941047731,-15.036560117687689,6.459794451727099,45.48542539550038,3225080.25 +414.9792946032265,1.5843316176329894,-9.48877337141905,-13.45702953658295,42.76008589667509,269.66 +478.9441876698059,21.361074473356364,16.6677577262778,-12.967925538231857,69.29696369193948,1476088.7 +498.11092497272114,85.38294146798059,-3.119823511546489,5.778107431339401,26.83381450335566,311062.34 +1060.023632273088,20.337948696340796,-9.118584465629748,-1.3177861539970648,24.539770327791217,294556.79 +1293.2938161730951,62.806979442562486,19.89358846281118,-19.641277731060804,60.07571753855353,21258.36 +517.5240947379469,95.95352841414652,-15.91162767609186,-2.056316759590038,9.2001285021123,1271863.1 +1482.493898653798,19.217056724528767,4.461720424284787,17.587812413315312,67.21658552903976,0.0 +705.8226935027512,36.688308951077126,11.52298144399372,9.89515541520828,44.50343927994491,71221.45 +760.8046491091295,1.158698347424558,11.469559919111155,2.3441003654570824,54.09813481653196,747128.76 +602.2975179333936,7.155183186878581,-2.3263192303556934,-12.192155382469906,80.39686109752773,21325.83 +1613.371044697744,3.771644116681146,-18.24155863181728,-6.574397555699711,18.91619163485088,11634.26 +1927.6648992863784,44.501091984664505,13.64108362159033,19.86557132548297,21.784686957036104,0.0 +1086.4997276205668,22.65458052620052,12.109498970222203,6.362146522213958,90.20696200665029,149036.4 +275.65515457758596,16.93668634394764,-10.504769905956358,-8.948496917422887,74.3568349558599,1451490.64 +669.0247695658566,72.96546854786867,-6.378903052301861,9.519633490977473,27.00696106119908,84379.15 +484.4905240139229,1.5056901529174151,0.5036932446031406,-16.34540514718131,72.35214513236436,0.02 +1716.9721127336322,80.85046916941488,-15.434251693461604,-5.176705117865721,46.26167939211423,357955.44 +352.73717737976926,1.5904844021200524,12.822581083979395,-10.834767133668368,62.11113443676968,15544.4 +1939.6572332390908,4.943506320580449,16.883998844289714,15.84032339334296,78.87792902385233,0.0 +1259.3247979243267,18.21995624118102,-7.672226744418524,9.405820554516602,5.430782604762967,443.33 +1131.931616733494,4.818949861537694,16.96117861343382,-0.1000055079092732,61.50695166133058,254721.95 +1725.2311203545362,23.177818441510123,12.03478048703534,-3.6879952038370423,34.50802211051665,793993.49 +249.5857183246211,35.5498062718774,9.11301776014625,14.343487941819948,52.09870457725773,1351201.62 +1598.8749489326174,45.39538041802454,18.766148560263986,-12.182732375376675,37.0116913964718,58759.48 +409.8872820233298,2.283954258000016,-7.013993532677034,-17.00948776728076,94.16390768714038,7.58 +1713.4005780927778,2.3128815533841185,16.62571188735876,14.07083129554847,60.118517281103635,0.0 +1152.5171946281514,1.272412877814744,-16.0638560956431,14.259844778882009,84.8133107489506,0.0 +310.0329242481652,9.587462489725262,-0.8794339873892643,-10.276942746071835,26.415798633019484,21120.8 +1699.8410698423838,1.8839407395733712,2.0804503818497944,-12.188646953318065,37.09644133559155,0.0 +249.16541072825297,4.33704554406584,-15.08757531738,8.852286902435571,78.91965010972329,549926.84 +449.06724720848626,47.95883651819703,9.49416024260142,-14.264593121140823,24.2096709949281,294924.13 +1636.084142887932,78.94377416739437,-0.9928414467171276,4.8780398800340885,99.9993795961067,612921.03 +1036.7680229442035,44.07089747205734,-1.7783824196520204,8.049384596869938,66.34786883644702,74979.99 +1786.4996678387008,1.0029903770926876,3.2575866337176285,4.879198053333669,89.78508138959025,1253318.51 +1343.7726910239503,13.678815211972426,-14.61153278310166,-2.9228650529867117,11.34696370062792,123295.43 +1322.3517578667345,2.154369832922135,-11.998993587922367,12.647108695718652,41.9691257883476,0.0 +726.0231910376267,5.642789147485548,-12.772622927113115,17.199338779248173,34.256202742293155,0.0 +440.6249423931203,7.17526405885863,18.07730389830297,8.22834726640954,97.1254089293506,1082685.27 +1930.110303614029,76.89206344656803,10.92759531263126,-3.241949883095403,15.330164497756622,298780.13 +388.63584045811126,18.513028247185897,1.1678790131809968,19.828052708738927,75.06815902549963,1466.57 +1152.2190801324216,3.4301262411761972,6.3782052549158275,-2.0233663749532926,63.45381367699054,1675368.74 +690.6234635026044,19.30143867332658,5.999124245610359,-15.349462973036388,85.28441006155957,8264.12 +675.4531944466185,80.11815786248029,-9.506199595499924,-12.6967109504416,97.75143712079144,936849.66 +1270.2551947450636,1.3131618230111737,-16.535686523449037,-6.082222515857656,80.78318413047052,143828.7 +1636.281410921964,42.85241830966,2.19755047280505,-13.155333375798994,25.963119901634823,4911.71 +1598.9230690963016,2.715158027379749,-9.47830042745514,11.13169754408576,83.59030252497689,0.0 +1763.8430405483964,2.024025147662822,14.938865952485054,-19.43577204694257,53.14915145157301,0.0 +727.2249282422607,62.76735635378765,-10.557878231726994,-3.764667988317965,65.67765198212662,833625.25 +1038.3524870871329,1.0085534376099856,2.9144590078117183,15.128283865658055,28.763764785608732,0.0 +216.8022317960449,30.350893496533573,-3.196283924038057,-15.290530608714077,81.78557686583876,1466173.05 +1544.343721645458,1.4943654560002684,9.716113078446956,3.043352750212862,45.001760932925066,1434390.76 +744.2176018561095,17.218312674249802,18.029848690133228,17.353959374978412,81.02836207467026,2797.24 +1210.6883598863355,17.44993456624874,-3.5371572141781327,-17.13614706297055,43.2981633721839,1.82 +504.7405076350112,53.155976283573715,-18.22581889992641,-6.0109696225537546,62.03764662110362,11111591.35 +1674.9191128417913,44.178706333537946,6.457255645423925,-18.49352933330513,11.196454818881294,0.49 +1671.0899947009,23.46003664587666,-14.83260506870193,7.287772997395474,10.154129948605233,4322.24 +1779.41524655532,5.768928825293861,-15.81993983096206,-3.300027444509248,95.34395038328252,1173039.88 +282.6865947921011,2.151847520666924,6.462325453076239,17.892855397823194,72.88047984449804,1.21 +1986.4256775950248,18.679526023679635,-15.887506581085631,7.651597391688334,18.096835388068182,1439.49 +646.0029459914501,9.861423213578922,-14.848914729702948,4.077622902874083,60.17580172220571,109632.89 +756.980634885229,1.4318071425617973,-2.4367707871823097,16.412892922628227,78.33836190996776,0.0 +648.804312542803,81.49365209867771,-1.906956550640566,-14.813508916599108,60.27223514117028,64420.11 +681.5588570597582,4.254407051605556,16.548572237338014,11.33779917933687,45.39627192822265,18.64 +1194.790440986564,1.0099073430776604,-8.954631480186857,9.19218912467118,83.68931611969819,0.0 +631.6589797468032,63.58879682164877,-3.962595690963928,6.930038652691404,6.026718063495359,11569.81 +908.7883605207286,14.259416675151352,8.300841054281802,5.5230711705158475,63.70023342642233,177257.83 +1380.0918483977875,29.24969535337137,13.080797448567658,-15.025080001646792,47.82776963693655,396.21 +1704.8471664399085,2.019912145650762,-6.035185286171836,12.561734987722003,65.16847224155674,0.0 +1446.934700480383,6.444828247647973,5.243096800723226,5.406162597086688,29.75451292375951,136402.22 +1269.7811206171818,19.50394482201696,4.967435493092958,10.858919160803556,17.08506367769121,185.78 +465.91141257392366,3.1763577914175345,-7.871695109702794,15.0436034851103,97.44517814047408,1.02 +1669.0080827743086,25.29285710141679,-15.255152204188352,1.697039369179567,86.55873828353043,819537.54 +267.0947983874696,2.93244479724564,7.300683356001128,18.275409476710493,90.9853113954171,24.81 +675.5449938235438,2.6197246965649925,-9.277277284374396,-15.631944783918636,77.10714077101787,0.08 +302.70605047753014,1.0549923258245848,-7.268705485935905,-19.83848538395659,7.427087803232467,0.0 +1401.3721560520326,3.662802405282965,2.8942069493866995,-6.802255434477673,63.16335502063619,518984.45 +863.067948668326,3.115111413713657,-13.567642428738685,-11.337996208799533,38.76053240571909,837.34 +1373.6872697687602,33.784159077649846,-10.340068050947352,2.1443955709788787,34.09454137976373,385446.56 +824.6557267464625,13.785413970742033,-2.156847322151707,-8.788184142853561,25.672854396668875,69240.37 +1020.3333154390896,2.268030901610918,15.139331163347851,7.525505455126096,18.885286009182774,270.27 +1024.3298182991257,13.685319528797915,10.89024498647574,17.813140178790853,14.805487087913152,0.0 +282.0451766015803,2.824146237018484,-7.296125854784656,10.77025857309383,12.999709409600008,1376.16 +974.4077474228064,7.095852185957504,-7.917244531102647,-3.189925934696438,71.44481085272926,1110824.76 +1353.9158536073649,59.760761583936095,19.49379648369553,19.420117510823864,93.11117862443707,2325.93 +1182.8940429357808,27.44810959041324,6.1353709354128005,10.847295430670576,38.651395706921555,2314.27 +335.5107793009171,20.053954876687488,7.4213612973042675,12.43526328935504,11.495802059752377,31088.22 +1402.500774236148,3.655669275195752,-17.795026984503643,-11.8100381405164,22.89466623942268,0.3 +755.9529588474697,1.7748568448789035,-15.801098650707951,7.475978633657707,74.95225937203527,2011.12 +225.98264500223976,32.055161449544464,-8.221854599852412,-17.17458509936411,35.50425570943314,837231.9 +480.0720027516414,13.670385733102544,13.680444893707694,-10.587623462195644,66.61953059982054,158169.35 +1095.607383169807,17.60031090764989,16.426773184948352,-19.342488175338165,21.35675359139122,0.03 +758.7229862541236,89.17161632950459,-12.358826162099245,8.209445708918818,75.92097312291565,2048500.62 +1449.8894247563917,4.973267738495397,8.567870689027721,-19.16215112521065,65.86223376690297,0.0 +633.176256018376,39.94800158248852,14.965505245166142,-2.0329289485275703,23.001440572016417,1168705.21 +1591.0331032553036,13.11939118476302,15.156036179236027,5.954694140429209,93.2653711518156,112624.83 +715.6589265091638,2.954744220602447,-1.6477094010867743,-7.800177778881534,52.743323012749926,180924.34 +1317.5546736519482,1.275782568641152,-9.64886045078233,-5.308782268961307,22.766452187314908,354551.1 +1638.5894844521242,17.061679673255597,18.2513579849146,14.726360353543871,57.10121746699826,0.05 +894.001031558748,3.937606132660501,-8.936674461901974,16.056521669742384,42.11716317384236,0.0 +284.2488952678468,24.6012227309689,-9.892197556110386,14.34800232108647,91.797198725124,1280023.79 +1163.8019379059856,25.203120941899183,-11.772684775851996,9.997377246626664,31.675757299813252,3212.56 +1991.7363107801004,8.145559786345833,1.3014184244957594,-8.898825897373861,88.74472180605564,128689.96 +1944.1853594784443,11.824811699509748,-15.7126259453929,-17.01291455252388,74.49609007261786,0.0 +597.8399490995027,17.909922861512282,2.8275067950463084,-0.4521848740863499,68.30932103784812,288287.61 +1560.2537169636544,8.653860450113841,17.74757162590293,16.97571820975029,19.19943107917908,0.0 +820.9132972761187,56.85140628073409,0.1987686834501856,-11.065054275788713,9.527408358139745,11861.82 +488.49046432956465,1.41863003525765,18.613903346454368,-11.618024409192849,86.57927026882437,313.9 +1398.6464610844878,91.12474349911083,16.228137832336145,11.185952097290954,57.48365010572831,314877.82 +1101.5637131481842,1.1665458763517529,11.692066666862528,3.679527458770866,96.56390414665282,1421890.34 +1170.615003780219,2.6073102489446653,4.322289968097857,-3.828004948849464,52.12297252794038,1186651.64 +1689.3067920239152,26.098509743686403,15.227114713667742,14.506811010791475,59.54698933254083,0.02 +805.7786165973615,1.4788377176202412,2.199351687228055,3.3011305470291097,99.71376548803248,1226154.96 +1400.7705672001937,3.3446101723527226,-11.711947456040711,16.810702026891377,71.87327801614862,0.0 +859.1446405327255,2.032138753714626,17.007178993913428,-5.2739901574283365,36.6429702868993,69262.42 +276.90301384477254,27.999039138807035,0.0875952003159197,-2.2369799123746814,82.95173456163259,762496.78 +880.427193205428,14.383573026002356,16.309922976506034,-17.02785954723193,30.253867024159057,20.71 +1910.0620337674425,1.3457277982684914,-4.274165348304346,-5.292423114130549,52.98249525033365,1257027.86 +1069.8724677591506,8.32278107185715,-6.571027375008822,-12.81142915226376,24.556838129728565,390.63 +394.8147863063627,2.6121965770522406,10.639652945076088,-18.68671572601261,99.47360462225352,1.54 +1438.0882928772066,86.17815579042761,5.3778182941338315,-9.769523759264588,93.5177770854007,307486.37 +1934.0828294933383,1.643750487432342,-2.411002600895822,-0.3749344344340866,87.51245746030254,5032786.8 +1834.3014437796628,15.707618715650328,15.143562967839172,-10.105689620968668,40.713058446901165,13954.14 +1229.5295080546496,9.198022586680748,0.6630645399027824,-15.63645576998419,73.12417605092126,0.22 +877.3053398273562,14.327453050508666,-19.48835489329134,-1.9386384945623456,26.817497328500902,726856.81 +1245.2198033166328,81.8437841677039,7.728154269210728,-14.086107164919904,39.60997645479943,19596.27 +1668.675911958649,4.8146392905084765,-17.47373314410876,-16.5602714947401,80.64879286491995,0.0 +1750.2272156332176,31.443635008045664,-0.7559083618052309,18.4073062123062,6.584394867938308,0.0 +1673.9189928963942,7.851144206150236,-12.316818884289496,-0.9617491424646696,5.900527446506636,193846.64 +1019.857481195128,20.966369217635027,-10.320660060134488,12.093093776333408,66.4466714147121,815.94 +413.9443812264139,5.386604537742545,19.192607995532892,-13.168637685307134,77.6852223926212,300671.28 +1224.5121681297974,2.846062352376966,-15.460827481785865,-1.5380046764603073,38.97072954689435,413061.4 +481.5718904600574,1.4697136196785154,10.30828819311786,-16.403014992419816,67.7929578091263,0.01 +309.72500101614077,1.5977267360052845,5.49780507609789,-3.5279704025220804,90.39499527074688,485609.64 +1097.6021001719496,82.95845161429331,-12.19829206872276,13.055990946530349,10.898540079214236,10059.82 +1379.6722100839304,37.74967694353703,17.413517290629848,15.709905124175734,83.22110019049754,348.01 +1737.4651515315074,3.0897155595544423,-11.943341953695912,0.7602438797354161,58.592282337301,2303353.17 +1609.1039971177463,11.436535270181352,0.6233880615691101,-8.543908792080295,42.81320219899179,174194.29 +1743.0329229617869,26.82041223140765,11.620877607746891,9.338767888538056,6.119485745357102,279.63 +1568.123787477603,5.070792087784592,10.542846058222306,5.557135346740165,39.023441282717776,144716.81 +1465.8309144310508,7.585358588044425,-7.211679791155294,-1.1809382247522304,79.59508639041164,2626648.73 +218.24762445325933,27.337817449437622,13.570894656083128,-0.985458545605149,54.65446755942493,3749651.88 +1326.984161256579,2.8504185096056456,18.48386480057485,-0.2714320910260781,18.454488285420904,29022.51 +416.8672474504118,11.28986417096382,-1.039207021882489,-6.430309169691397,23.989928365127312,50369.47 +305.6008381985739,2.6313362175542183,6.0926119857166094,0.75883154054738,84.91443669574998,333283.33 +481.5418737901797,1.0142737878256456,-5.419436898254637,-17.70504370324708,43.85785183121372,0.0 +1681.9258905951503,24.017481847363428,-5.836686758508325,2.807352991856895,10.453206483782848,205688.86 +1538.9289075800386,25.97345474488921,-1.2113653672124558,-0.1518157193721414,97.35987700107452,2277937.69 +1907.790329369382,98.04950312776458,-12.114676167766197,-3.1774935950716454,26.09277859984356,380479.1 +1962.157265570739,2.301605511130523,7.576060870803816,-7.0402529700327365,79.85222203772109,334548.36 +1807.911175473168,30.14120773212134,-13.376998209939096,4.871213632167053,2.267422317033096,12865.23 +439.2668917585985,78.69277288110743,-19.79275991564569,-0.6009880713781257,26.393577340338304,5232710.01 +1781.0889336649648,19.460799293079297,-2.4209558484046445,-15.966415044763709,34.375163263891274,0.05 +1709.5468426195616,84.38808291919335,-16.94318874747866,-5.021892472369092,86.08310140662876,1500674.81 +1767.9545477474553,97.47246980186117,2.4975505334202763,-16.939784330282755,75.04686739662917,2483.41 +473.03411080968453,40.109643648975656,0.8147621457636145,-4.833223479806046,31.49410212485843,57012.21 +410.2252899919716,99.67168892953168,-14.509424086341616,1.313275957276736,78.96080830457291,7372077.22 +1862.855983251347,17.85043971233001,-10.160124479288474,-4.35884147276457,81.1959514437012,2462794.0 +512.8879684421081,9.865324730815482,-19.02191126375707,-6.334799168311522,51.69006205450592,2417800.29 +863.5191158766821,68.43409191082327,3.758124118610384,-8.754028316303199,51.280857321608835,103423.56 +1020.7727290893084,45.91046408740519,-8.285352214089139,-4.729099862292703,51.44277026266689,299342.7 +423.996550093216,1.6604436692323266,8.519387568968554,-17.227572029847522,17.572290761134287,0.02 +237.14171845858533,4.031301624917674,5.193035186336359,19.7560301057472,81.46042559126067,159.44 +1989.362845580809,3.3211633817191237,-5.056496376664996,2.2135654744480293,71.74596134597238,3540561.37 +1777.98304070293,51.347974724582066,-19.13107301876188,5.447030006509763,85.08905815297437,1394715.82 +1842.208272831147,2.927458240049555,-7.193422466937931,-12.674373909796293,81.75175872518166,0.0 +712.2135246898133,4.055921537902738,-7.005448985787575,16.936190466757935,78.7582800969131,0.0 +596.1828309417904,10.903785729753595,-6.691797033769746,2.8465612358387027,78.25728941439534,310827.74 +966.559804715768,1.4198385824019517,18.13773751824504,-3.425042288626696,94.50061706869955,127416.73 +1015.9748641604124,83.64871721460868,-13.417614793835844,8.52856108759623,60.935687783983106,613960.69 +210.07898995563315,9.59678031102506,-9.197616497765416,-7.825984466410381,82.9657103203236,1080742.76 +1602.6556026076992,2.4036290713056134,13.295958109380312,17.385627518201265,80.33274665967751,0.0 +1994.0006686556312,3.4804986981074117,17.006300967024572,-13.227435023282736,27.753136806198995,0.0 +1151.6435661837609,39.4609461600597,-1.2685758728622298,13.324420389363867,57.0070377639636,1032.5 +898.8656510224123,18.535869379322865,1.601951425207555,18.66433263465843,73.23947448144519,0.09 +906.953407798166,8.49673450999866,-17.885664657352244,-0.3302963755852506,11.243215469577253,21813.29 +372.9388379097812,4.604714779834461,12.321537163358318,15.06639597974956,53.52752350472656,155.51 +679.0912730552212,63.29490116020588,3.78241478460974,-17.13748624855883,1.2811609590051676,450.09 +1103.839019542336,35.085613957818005,-0.8395976251244264,4.823556635256736,24.789902411628315,101828.0 +977.3264020424552,27.30386165093732,-7.896976716628408,-5.750694725477823,49.15071889649764,315648.91 +1181.0625423375984,7.7983192273219215,-2.2491605973159157,-5.42754501727682,31.3860715682883,458315.48 +1728.318167547332,91.68964716810191,9.412481275217257,-1.985466908196849,77.33790258103936,1168684.82 +605.4361448593015,26.311196228808345,-16.76903406775747,3.871055087655293,64.10300392806056,3314143.52 +249.79552563136153,7.034762664135458,0.2725677985891428,4.640540240398137,27.48646034551816,27736.39 +268.8058015089333,83.38810171356259,-18.61447740074746,-8.869095199058501,2.6907071471163966,204530.79 +441.50384955234506,61.865708803923205,10.89011780429372,-4.6421615300256125,26.21658777167611,1288235.14 +1226.8693726479246,30.19467692185345,-11.5592844523351,-10.01894976879372,52.38833908212272,92069.0 +1654.7326580682643,34.197333461037076,16.135507472142102,5.301611902786032,76.46078419954749,138622.64 +1796.2506907051368,7.034852554900651,-0.9562168797056404,-15.918606664429138,60.73341312057403,0.0 +1343.2037635549482,10.344297618685845,-1.709450942654307,-3.0570207096550472,6.525954514843355,157473.65 +925.6578544116082,2.4159874727469304,-5.585921901824524,19.139495088036817,47.185539750195645,0.0 +478.12647468106536,15.516454457944644,0.6544360284895889,19.55113276884497,95.9919408325895,207.45 +922.5530109982624,5.493297209256979,-6.478883738216594,0.7185301366413732,90.50055569933114,1440000.84 +798.3472410340104,4.9530949240655,-5.603014796270589,-10.10159960922666,74.49711883139726,51019.08 +1766.046585542848,78.78733348712113,-12.17549061186177,3.339837270099615,29.097671661000053,236274.04 +1076.094879339093,2.135830905011235,-6.191422009661354,-0.4615685745002196,3.194523539699481,84812.43 +607.1526199181519,45.70325883352509,12.468603972997627,-18.300531577730137,46.18031792989037,122719.05 +719.8419202684038,3.655418807669693,-10.172366753327706,19.563787737294696,38.06944026137924,0.0 +445.6462961768402,1.1410672953619343,12.85072459191882,-6.91330997242793,67.90894712955816,193868.81 +1853.453808324436,1.2048310731535032,14.452508811633106,-4.028814509670946,7.988336512060449,174989.67 +290.62252322564336,7.216971415420889,6.6533758083142525,0.5424410907801613,92.41447461047568,173766.13 +223.1232474006096,8.108150705626274,-18.772643007953036,15.214797906887163,73.85009149759101,2246186.76 +529.3800803483638,4.370209501219877,2.4413402641613757,11.96478385831874,97.12883335301464,400.88 +1659.5732322391264,21.75500618645392,13.325956111521062,-11.77799415349611,86.66606133975746,11019.12 +1142.2402159359465,9.34728655816616,-5.368666282915733,8.657852328148415,43.59261103525855,3002.8 +1326.5179172785754,1.4067798292249325,-8.687108283498105,14.982588455105043,66.58718879624433,0.0 +843.9170157483227,4.967551632324399,-7.144927801504171,8.570556642816731,84.71731308039969,5397.79 +323.62037398850606,1.5992835408771156,-3.076944112003308,-14.432627055575844,21.183632449174755,207.65 +1741.084692485903,1.336076692100984,-17.19323298230407,1.5559401045964183,1.9533733420408328,12013.34 +545.4096898257334,2.6098361954002014,-10.492596027837177,13.54231739968319,31.450753777916756,0.07 +259.50656098120646,25.185520014632843,5.877402062193271,-12.17531671902484,44.30803256852524,564429.82 +1230.8674446797486,24.66058027040132,-1.1006303205128232,1.541491767415808,62.83248444374404,812197.36 +349.92059669228195,52.817550254785765,-10.106346299960515,6.782019538408117,27.07901019410567,1100409.48 +372.3713333477016,32.57156191860563,17.235166301901693,5.414799248297757,44.76391041704858,5217244.49 +1640.6786566685453,11.77582585442834,-8.178304588818882,-15.73583845665532,65.21926019093529,0.0 +1084.8972607723915,4.219142327570697,-14.827285085621964,-8.901767174599374,82.61794571652555,52519.32 +634.7152140448575,1.027124267673822,-12.026065351644446,2.085314400268672,23.4665959798237,265688.01 +827.5275620471338,19.69132601671956,-8.136607735494348,-11.649471889745689,80.19045648697953,55117.78 +1512.6337619177086,3.796875661076206,0.9023628716063304,-6.6515179975665495,93.98082843485092,898581.95 +319.4374605618833,3.1637357603501663,-17.347172801450558,-3.3969462039575182,41.54666254724658,337186.62 +409.66510867977786,89.0535181836459,14.19768302014738,-19.45503994790842,55.64679699361123,2294138.74 +1309.2716629830254,2.2309014451186577,15.099065774568777,0.4169179059057981,1.988407551436012,26568.98 +1292.549122040793,1.1610996113728114,-7.26597631760447,19.79026252714263,71.31074750096376,0.0 +1950.4319321636692,79.21014173263914,11.012497007338268,-3.6692863401839926,87.32932073048201,1660408.01 +874.1890662598094,4.09273329086623,3.987709295356128,-9.0280643347863,2.9787330998994705,4400.38 +317.1397289195286,6.121249777515553,13.817760310467978,-9.880184532302806,84.52309057192058,221956.59 +1167.56738272933,1.4516763711048506,-8.921348001925672,0.6069772505267235,15.75321044492282,465192.56 +1349.0242611712226,6.428807606283194,4.4094296230154395,-1.7595824726407685,84.36777996425775,2503042.69 +451.2850144152483,87.99187691470938,-17.092207700735983,14.479406042222438,54.64857304424466,3854430.87 +1195.151552363354,24.43652436035776,-19.62191787976854,5.569789673890702,37.645777839398995,798295.71 +555.9808189848762,8.864407033600402,14.987915409644955,-4.053913989686433,94.18502776571476,275941.8 +1720.514104185923,4.120437130020313,-8.218088785747133,-4.570125336380211,61.62344190582504,1880497.94 +1703.2906924108934,5.396198520854506,-2.1835696441459618,1.887623626873287,4.826917376078072,185635.18 +973.3323727971951,16.689998587352132,-10.728824635511858,-9.865277457495964,76.83403858822624,118230.75 +1940.1377429230472,3.2277517496349124,15.072298249925089,-3.0861757308084625,19.057480724324368,400970.78 +1963.5929740095348,2.0132376840847677,-4.61863212110651,-8.598395636189675,92.40421290675128,8493.12 +432.6519601057151,24.686376478036312,-12.83524982359637,0.6186481099405761,17.479142194438104,496284.67 +861.8848486984417,54.820066021454025,4.319715429071365,1.864094955956257,49.2781402474699,171048.1 +1280.5786460839604,63.54447805836692,-11.781466956671592,13.872370416232036,52.73520937033405,1691.6 +352.7080572465999,48.17670169833497,-9.572404550228528,-9.95291367026446,56.81419806616431,1850771.05 +888.7799068654467,11.513287865068625,6.9118021832382714,16.188997223648222,53.79616023409435,0.04 +670.1097512298634,37.81481133892892,18.36877789112192,1.4107338924980397,44.46554336716011,7096804.32 +1913.6903977400673,71.23795822908666,10.19239472373224,9.073339248879044,71.57036242185309,35978.1 +940.8544810966469,1.1135896330204944,-15.034304794634172,4.466863139526693,16.400415573272277,57691.94 +1572.8075453855224,6.671084403101419,-7.497711536692488,13.161554556983823,78.93978971078467,0.0 +896.0696543219128,2.5600648052380657,11.854598032525612,6.525587021734145,4.707628926134908,2581.96 +437.2617267539039,98.52298714294002,-8.994105583764686,-19.557058725685536,84.36744614007863,1893028.32 +1753.6727542895253,72.29895486087027,9.602782142552932,-4.388988393205784,75.2330601460261,1204264.68 +200.75045042558693,40.21350262869039,-1.1283023358949995,17.534569061516734,79.74457199539548,1778775.32 +300.69357315401004,3.9062461824253423,15.37634109843012,-1.9418961542762636,30.396002411942877,173934.21 +855.8919306146778,80.20556990877233,-5.634036177526611,13.13538558873204,85.12107259915584,34730.99 +1436.4168599337256,1.1441971986001318,17.382858267041755,14.758392050857656,69.42461680268566,0.0 +815.0677315233963,2.3772749441379393,-3.702612755844239,-6.696881577431508,96.88558210079846,614056.82 +319.3630717177549,17.129611310436793,9.04942843971737,14.308988361415595,2.9811020120924994,8269.3 +772.1120607214679,38.54902730518026,-12.192217703196246,-4.902600174287937,79.26171581731283,433615.29 +640.9655461822922,58.5142585354047,1.2315780211394545,-18.985582839601047,62.70695308261617,10601.4 +209.75563967275633,3.9904072550747767,-7.594599424727244,7.776299249735925,98.91472702903658,74421.02 +1162.6434437247233,6.047964066007396,-19.490938021975012,12.811571268959655,44.86109289964891,1.97 +409.9626465395349,8.121846999072803,-2.5090497826281855,-1.9356993786414776,28.685887800985384,100516.15 +717.493319833999,1.1322638378331555,-13.10014355117296,-13.063625504264058,88.09479838510924,0.07 +1354.141694400346,53.44886731536354,18.343409872248152,4.611391287824169,33.24370703666446,1182902.93 +1505.2082398813588,4.741293396468183,12.343550730797714,9.530272155590346,70.57602749494333,0.21 +674.2201283408406,2.5035536785098897,9.58100502085922,6.192678091662831,33.852951317697546,40733.85 +792.5486079174212,6.582549387323247,-1.8667187321524192,-5.768294394873115,94.62651135775933,775061.95 +644.4366286294375,26.37100917217725,-9.635807033167382,-5.266824035566797,53.083935535005345,159719.2 +1922.3994805691457,55.18628491557248,-7.025477988044644,1.9638969551739027,32.6593143801865,690380.04 +542.9355085773251,2.696205140862463,-11.82543345982352,-12.264252982838162,82.41948806374967,3386.13 +529.7250865406173,2.2142463327595174,2.075546425567212,13.847058117654152,7.184931187539618,0.0 +1001.0635324967576,77.19086997385895,12.451055982744377,-15.90723817032146,10.282038695515414,12227.83 +540.7514465610245,12.64113409653542,-12.503564918681857,-0.5380128203932122,83.8349034511632,284639.59 +482.0752213140947,5.3894449222362235,-19.818102018570684,14.37756097837871,33.017980001094756,12396.29 +372.5831678619539,2.504026439151524,-14.97573933291314,1.176719881323911,18.478940868692938,43932.27 +1352.308246594849,97.83531426880818,-1.5627140270785267,10.43797815986176,59.12829575236162,35192.01 +1301.748058823413,27.43901860639727,-19.256158736301582,-10.416898415705951,26.20314373722636,106394.03 +1370.2932053803393,2.7275367845601135,-3.869284898055216,-2.179501189056605,98.73114254660446,3444551.85 +1591.9400144169133,1.5223653467766185,-15.553677033629846,8.522404676648417,82.23948988041164,0.0 +787.4444230266365,2.503598530307067,-15.68934324421774,15.533209153288915,89.02834688076074,0.0 +1853.1627205014588,3.129573875634941,8.504440674562872,5.721824932260602,83.52505786301506,238116.09 +1519.7682999237609,1.6679049536197743,19.97988837426203,-10.289339797870394,88.70020315739238,6.71 +1648.4754594461365,2.8794049136199025,-12.220735251526982,-14.14828740689964,34.459933935117334,0.0 +1497.7318948880802,1.7122193859110209,-10.816435314141131,13.661592873568932,67.66780452916586,0.0 +845.2201617786112,5.6946023338924565,-8.14327064546793,2.1614355450237044,90.7912837630012,1029028.62 +709.4584785127429,9.384054434363366,11.404373671937403,-12.645117509296725,68.90910672731657,10530.89 +960.5307252422256,8.138979323003753,0.235750580260512,-0.5729305737071355,99.7183368638502,1550068.15 +374.6546489600452,45.54284287981631,2.8270805113738273,-14.947094036444764,86.68782749210922,429254.06 +1012.3049028187048,3.22100035488361,1.860286016644097,-15.793134051296898,8.022862629117997,0.0 +277.6537695714317,59.45489928659964,17.49485412870159,16.799076980340896,50.66486658330656,2812617.25 +207.1027280489501,65.50065411659969,-18.605881210563822,1.785086883605893,28.27849945077611,1779447.52 +1876.6980910544469,83.09969389155366,-13.683375791055887,-10.04349485289476,87.63048710063416,204156.58 +1440.8063490582072,2.3012641280735053,-4.715480715804774,15.250671570386732,93.78750247280368,0.0 +1211.324504718744,3.1010037574753544,-0.4787612215680337,19.95536951995963,57.09511573610688,0.0 +813.9836709615041,17.687422694118933,-15.442523604888205,15.368080831159316,6.755911396761387,37.94 +1226.9684264331336,1.913300858655607,15.72678637375633,9.903652202654497,35.321287201357705,0.0 +1804.836397408997,1.4833466689157977,7.114356442263832,18.48267633737496,19.66900458732754,0.0 +1374.2842410989565,1.404088311617086,17.28973431438515,-12.104510771415969,53.39809038476246,0.0 +1284.4675963163077,16.304191562237783,17.632049598246073,15.107744916480698,98.49911269442347,1.07 +1028.3681053490204,40.677690162442275,0.501322176095651,-5.650421038227833,34.98284144782559,214636.05 +822.2546551715444,3.2943620420314432,14.120329545119985,-18.710483841015776,73.66341355870458,0.0 +1457.3848050590811,73.63219959808919,9.47018366573944,-18.70488230024057,83.27437689772096,518.65 +1965.7656938284656,38.35933024741286,-5.579673129647276,-12.48662597192476,83.1872059587608,13008.1 +964.5638483370624,1.4286334376929652,6.293971191855889,11.179554453307778,15.80314838600842,0.0 +905.9693672255614,6.5253867543019375,18.10989673012388,15.866871074579723,24.507035868545103,0.01 +970.6042502570764,1.3678224643614143,10.56036150338902,-14.881508137687677,23.104439050912088,0.0 +965.9791424894988,67.66877515816411,8.376484746483289,13.815304331149871,30.43064154583819,5024.84 +1983.1245920632912,30.591747707117097,-11.125140263182177,10.218897434091955,5.633793923011854,33.33 +1472.2008635168131,23.609688693517175,13.245139636058315,-17.911035985443554,54.39863788415565,0.11 +846.5320085790651,23.195497578516175,-4.413409881537267,9.255582054894557,74.3520737144272,32605.59 +868.7042728881006,3.718476179865629,4.963116714371045,-18.4648307591196,26.820992530578376,0.0 +975.4344645393004,73.63398596501547,7.109084100611396,-9.496678748323257,64.34316156062887,131699.46 +266.08193764480944,70.07342036693301,0.6096570668857115,1.2363759984178913,55.01305514965694,1985417.9 +1150.06952363825,30.12850753716578,-13.376589993875744,16.370357479702452,10.817809777710226,0.77 +1660.4857127409764,8.666832717802277,7.898250121592376,-15.78592849321848,24.738074177339826,0.0 +1389.022027773519,1.2423142349648608,-10.110307038989834,-6.067785584394119,24.90695671491767,216459.11 +557.1575241707749,1.1392596089470046,-9.385417420955244,3.076673944033947,49.379233870395055,439223.49 +1510.461634481066,1.8891596709271503,-14.928340182573043,9.60821015161696,63.15728302496884,0.0 +1495.0254913976546,15.542804606426756,4.79769066019649,16.615545668313274,30.836045563426055,0.0 +672.5705881681947,39.463786999066,-15.30377034649749,-1.2459952933751817,13.585345089131838,660041.17 +1321.174382342483,78.87357401450929,-6.191327007816216,13.635978353772964,27.65265382480037,1730.83 +1299.708259619485,2.2424571782670215,15.580887928538392,4.680867854694952,4.978487569466109,15967.44 +1711.6177229411269,3.5567698307213456,-1.8773588128062757,-11.837841145979665,75.1178696221799,0.16 +444.9301613001943,1.282922949648304,15.780188661881605,3.1835046252034083,70.23175018260079,143871.86 +550.709308120741,95.08112983891309,-0.291321363875654,-7.447295661022637,67.39543753250044,507182.04 +1074.745106782049,36.461132877957944,-12.846647665783395,8.145696620261504,62.16024160282068,43936.19 +279.46126800615264,9.15015094368668,10.356627871502509,-8.6183649069063,30.47175141882168,138293.92 +948.0695556830718,14.162199587844452,-5.8621024551157275,-9.48623372077662,12.432844127599706,25458.54 +1618.7942755995018,13.31523460079153,18.65642419959167,17.814531459750263,60.30251910588665,0.0 +467.6859091711968,3.2264244958358006,-9.51483098211925,16.347977857315783,73.52496464964378,0.04 +1027.907726485745,2.348450380558462,12.885896903523763,-1.9301911579590223,81.27352647475121,1454534.99 +1981.5846200884,3.9260102872972262,-0.2455859770353674,10.61869891609748,72.92658066731782,0.0 +1110.6560241647558,3.1210958024183184,13.685290641455468,19.28250063064073,66.20775299159818,0.0 +1096.9828834197629,13.03335365193832,-12.678550766681468,-16.454995220337267,82.61506772067442,4.81 +1205.8284507035023,4.134334501392237,5.346739315556075,4.246609982842009,76.41579269064347,813759.96 +534.8078665989342,28.700507960463785,-15.472573638570433,-9.860098534141397,94.54525861953672,2822654.63 +464.8949888346997,13.673492781944653,12.2206338489676,12.000601566457249,1.598705934169661,851.81 +1419.2383324071952,11.601857603989725,-10.573854979961483,-15.943565474923904,15.520257195504632,0.01 +912.3802578303864,79.90749829114327,-2.896980874181061,11.552418458793458,58.39539178682969,25746.67 +721.8319307878563,4.413865252246877,6.239018255682236,-11.975626892668378,40.70486021760935,3085.64 +256.5049158558156,18.64402714081308,-0.8714148332151472,-1.7592256395588013,34.7100354137685,163065.21 +1722.8908949212685,1.0002331732579786,11.155877268796257,12.55283123691813,74.8449034581121,0.0 +258.19195852069896,29.77469315679307,7.526820385017086,-17.301460512956098,54.028034469916086,797205.76 +1549.9696233499749,10.117841180898212,-14.783769862412267,17.126791002691245,53.12224264209159,0.0 +887.5794061974458,2.610777820606405,10.938512440215463,-11.306065527127668,5.933675204581542,88.0 +1277.6380589083703,1.0069806211692125,-3.0607074047497163,0.0291237134130684,46.66835028525684,1614765.69 +645.8204012422922,25.93510006756264,3.9103090032702426,9.38276661851695,61.19410504774164,34112.06 +479.7193992177316,21.15443385857418,-11.337072014438728,-15.060116191683326,28.728338007971622,31803.31 +1160.0984015029053,21.41974187634107,-3.0763363049375103,4.349825356677837,24.659252140770445,150195.73 +1452.1118509174585,7.497382121558009,12.686444756198831,0.6226974896943327,55.510650167239234,1311543.78 +551.8879309012638,18.993047375962497,17.050454816648116,3.433369150753567,91.28391214109912,4112067.73 +985.4461053786156,13.888955300826987,17.547833696020444,6.499812547226438,12.520907662884133,8604.11 +1000.3789465245122,3.004623704518415,8.00355355871523,-3.174878481729082,31.60217631596124,633322.82 +588.7624683430331,10.90275073071797,-16.84358460560627,-8.049231603296679,6.755724272600232,30598.65 +1217.089003253836,10.695118214294284,-2.2946677242272573,-12.64586109727192,33.21294464442732,790.23 +462.6842362070612,44.38597625301688,-12.277152460646391,17.562639528305482,69.78925759485004,571258.15 +1117.5485119734442,7.361698813486243,7.904582582532109,-3.9449684367781135,32.548549221189816,578924.92 +404.1767204587991,7.450250435534634,-13.545154298963569,-8.711026498899459,40.45170648859982,62364.38 +1073.9763359392473,93.0698346957776,19.10304870254511,-17.898133543360863,93.61411358486713,1451616.09 +760.8782987760023,61.50745332424331,-12.21857264638114,10.04825692175146,35.36104633288478,275197.07 +1014.043325746763,3.0519118119329507,-17.89145109777156,1.109825167677947,54.41566944852394,103290.26 +980.7488469977136,66.15858216428481,13.741876110549269,-12.361431698549916,93.42899565024668,417345.31 +1834.279621073467,1.8877014642378556,-11.90914845123837,15.73495364078672,51.34274562214499,0.0 +1081.884079921633,50.90754073903484,-19.03949006028737,17.35122458618782,17.84525620150754,11947.96 +1673.298026978374,2.3261984042016137,1.92310151472455,15.227052446866146,15.165214894610209,0.0 +606.1743072410874,7.099155642639744,18.7693508648513,2.438841529933451,89.99062920392309,893302.24 +833.749030341666,92.86311820515996,-9.30009410589928,-5.068809817914919,88.67789570567759,978627.28 +335.16088513974364,1.5634999550906867,-3.651080795119266,-13.52457053667791,25.851802682866435,610.12 +957.3460306786884,47.816263923561785,-10.51332377176227,-4.9102674977691185,62.69765770132526,279459.82 +1403.6597967348755,9.76040635567356,2.3193983236175653,4.486825196726416,17.48631152372992,164098.6 +1708.7006613969131,1.667180920660246,-7.088433177703699,-10.937865206251004,23.91794132061892,0.0 +1218.6468412384793,80.3494222278473,3.654540966241089,-1.441491124120322,92.14556835142147,690530.02 +1352.1308052675413,12.544770954801372,-0.8791626762757643,2.9237147902041594,40.77483004343674,659812.5 +519.0807397105067,57.71411544690146,17.156610862999425,9.257379555946564,21.64334630307482,2075482.48 +266.9708688201909,54.72854269724889,6.800699874290448,-16.34595534656146,52.88813459051546,1464714.92 +1625.0386613191688,1.0697176605856995,7.303762280155497,14.679850413233222,85.24953591956684,0.0 +500.6687733943155,3.3859567555930226,-0.5413287204232953,-1.757023685028929,83.46218074291993,676292.38 +364.10516395895434,4.718925915614344,-7.874196737369066,3.2772419823063093,66.53980237889037,164905.87 +1887.6121776318716,11.741621895402254,-7.441470775293251,17.612671258008188,81.53134988533206,0.0 +1934.3384553065175,1.3922974242097472,0.15966011891265,-13.280851464682058,78.1756482981459,0.0 +1309.2631248844905,5.996996517769657,-12.323552835908878,15.379440861763577,96.4015879581173,0.0 +881.5470908371282,42.586921507734,-14.70292842998305,12.177216981435128,65.92818196717356,112553.56 +1699.8311737352935,2.2201495518412955,-5.105396681002468,19.761094653661857,60.19211157713604,0.0 +568.4959268037423,25.266957459217455,-14.780981608179427,-4.278308617387783,90.6609641994383,2235995.37 +972.9061893734274,8.330265028705698,-10.769536623221253,-14.926115741569255,36.793174741940234,16.35 +842.6311382010831,1.3848739235095704,1.400951248786848,-19.432953847253355,49.79563663821681,0.0 +1842.859983335027,2.263331309686688,11.603792311290526,11.703835521658805,86.05424157468835,0.0 +1855.5993476520923,1.9145268590030091,-11.009136519529209,-14.536152301831734,97.91772863780182,0.0 +1371.5946673825997,17.355442562969532,11.666579334943892,-7.759515291974872,42.70552620286583,258688.19 +399.33225249084535,1.4950261797749913,-19.378335393596934,19.492601502115804,59.38961990374774,0.0 +1067.9470213849445,44.26837309703278,19.880909276176972,-2.316202040909765,83.93445356751133,17468900.76 +641.5910592033022,41.05048210007451,0.6775580376469614,-10.75177187173463,52.35658139770057,56951.67 +1792.848193732067,1.4458525132586704,-0.9645059390329758,10.12934231748586,41.04907023102786,0.0 +449.1250382291634,59.75777179675444,6.0222340994731605,-9.137852629591949,7.4216541180179645,96591.63 +297.7584965492732,82.85555893260074,-0.992963449333919,1.24087501406545,21.99355535117307,794122.31 +1467.972260390141,1.2216201747239497,-3.6791085499471783,-13.70672050229758,33.81148029730284,0.0 +1015.9149349426752,79.55347157911015,-5.16066832353169,-1.5666830247072072,40.76286439475215,189217.22 +1709.056797685552,3.621798952430104,19.11332042622874,-15.655291598316584,77.84463768885993,0.0 +334.33333610476114,21.35619519320494,14.459868732957952,10.92378859111502,17.514338444621085,546091.51 +1641.9370386941164,2.236822344746855,0.0964233165895711,-5.394439181048019,8.166949082912582,161485.55 +267.202555119485,43.14313492512578,13.458104810509964,-7.2478523183592225,59.19002049888686,3918067.01 +250.52602144512255,48.28660629101701,-14.036424819166742,19.751432207480555,1.8021844393760351,61902.34 +1030.368353115853,90.5071335112845,1.1777986517768513,13.188101054966133,93.15556719957809,22121.95 +598.3243214251733,96.61997579267346,-1.9931507409904148,2.157010217217441,26.345727308284957,175822.72 +1268.6936726117551,1.4181279464067602,-7.004714794616489,17.768489469774966,83.53116743110866,0.0 +246.4705895806468,20.697943759991645,16.73759778460452,-11.544050741341128,38.57346036465824,2930754.63 +263.7011762533614,3.516352090870396,13.299730533461217,2.939417262720383,99.8862082348234,258335.95 +1508.8672931094927,1.7830173585343985,16.283438076740225,17.16229015424119,50.6257241781867,0.0 +578.2972924861609,1.9842246356720272,5.408677238255923,2.788261195500845,96.3233401949278,829111.54 +1381.5508225893204,74.62330469218848,-4.951151872876074,-7.680408689339413,47.4189424972859,272067.72 +1549.8598907013654,23.296918301857552,10.272502792536208,12.466240497520907,71.71075096104744,8.04 +306.7960983049414,1.2616006437852372,-15.65732099231452,-14.44759492575669,7.300096590979697,15.12 +1585.5571180356303,92.9951193837122,14.12318319543687,-13.919988073685436,45.05180686507288,21042.45 +683.1581923303148,41.269050099351816,-18.848827364333992,9.244995598116027,27.807892184295252,2304632.58 +901.1827247595468,4.1529682540021104,12.728495375490784,-17.22672601947812,79.52445199543592,0.0 +355.95054613157004,8.744467887287543,8.157620173165125,-17.97476868986291,53.71113247544342,2350.46 +1709.533970056735,28.389121819792337,-16.461583041654674,-4.837011140916836,64.36077290434477,372238.8 +1209.3118153863752,22.493869523871375,-14.120086082675387,-4.083740098609949,26.12807526331725,199887.14 +1108.39750012491,8.43649003028702,-1.9043418407234824,-1.2139873332254592,12.566354031317276,249601.38 +1943.39865962496,10.587167921098168,-8.005004256249837,9.629286177718512,68.37582122467549,2.86 +802.1103678932074,1.2201560027287048,14.691706282508791,2.7541182516942264,44.784841485672075,313470.28 +1803.4027156580528,10.029204548753118,-12.286656008910407,8.541943090503853,42.28602139371595,192.26 +1495.4381859162877,4.791745938870092,-3.3168015564393416,-18.004218132192598,96.430000503833,0.0 +1871.3506445340304,3.716228425660193,-9.581158849907752,-7.371869874898196,12.707835565758218,58006.6 +1834.0436949724276,3.461344689026602,-14.912713461089073,18.656276500754075,64.73974987702607,0.0 +1983.8536490469253,19.856092837603047,-9.610343274309749,-2.889389905914568,6.9648740763426344,274798.61 +437.0181536668836,7.219634995984319,14.399483862639755,-11.100333152037258,68.80686680805314,45197.38 +1632.829505764871,7.105666443770823,8.620005629841065,19.683447741064693,56.40465762456488,0.0 +1648.0898389055058,2.081488341376473,16.569600413456087,-3.5472743990638733,72.96394537189582,575343.55 +1359.8723507212762,83.8932726635229,-3.788826845941835,-0.8487258275622933,75.33150028864296,714483.88 +701.9497248287636,2.804480372552638,-10.383492504919069,-11.048112322832896,14.072380900535151,1514.72 +1937.266888930967,6.489607235639326,-18.947298552684344,6.254122955329895,28.19480212687265,1844.56 +567.9598482023772,2.4010960226984035,-0.1936828125434875,-11.71079707044667,25.987080300157047,1763.98 +1099.2356810451902,25.48506260451775,-18.4108662561756,4.396942786582918,61.194690606802254,733885.23 +1138.6768030745352,7.451736559425422,-19.82900051209175,10.29756979881554,26.57757206782295,857.11 +491.2928207048699,6.718926310873104,4.188325612107051,6.095913298449478,52.07212126482212,76080.48 +1500.5518801998337,56.25871014416787,-13.406961243518415,-16.384709222422256,44.77096360301249,560.1 +359.9608955244316,33.03388857745157,2.391154100596946,-16.809036144689916,58.979657416846315,95766.68 +1447.5760019240795,10.958474610988697,2.9409080920389385,13.694061896945332,35.78458174989506,0.0 +1727.5078933231464,8.653281023767619,8.95356642013303,16.182364070704665,92.57000578105551,0.0 +828.9135651483192,83.13861696087628,-4.6748539102219056,-14.573585263105038,96.53588496029592,65125.05 +1476.9574554785604,81.83221928607787,8.206220242300102,-4.981592509656219,35.73687014536064,341958.46 +482.1932146661297,25.676849514835823,-5.361381462420622,6.162674453153669,91.51159868754505,116080.36 +1722.7082026151816,33.13567736769638,-16.08851611283137,13.41923806251122,79.5103266411257,5.38 +1913.6570573958045,62.83271360137864,-7.600396474845126,16.359408361139053,23.38539752829875,0.13 +474.8486482995984,84.84329210417319,-19.697306826616064,7.947310215992167,56.718155424223475,9133077.74 +1445.3470531501978,1.4606613325910414,-1.5015483336934343,-14.101019268039176,38.384607648452466,0.0 +1110.4959738017465,98.78196589064244,9.612446701686626,10.73403843663156,80.29269392448954,89361.37 +1156.6987972982815,25.470908161088182,11.389902257621834,14.360997353281402,89.49754887028101,31.86 +1471.6814934812387,15.32814882322722,-10.71613120569834,-5.9477611881869,62.61882743196495,921875.2 +1079.7328988055872,6.704003782438445,-15.77427495699788,-0.2338928607848878,63.38308424662035,411883.0 +1280.58750563189,4.707385739635519,-12.582797121587053,-13.344695635496882,72.40398741193054,0.39 +615.621834940479,40.59012764402344,19.348519210844294,-7.819220014219344,50.01211731405183,9193291.27 +881.3118736795345,20.36432939105228,-7.515889634029058,14.791984604378,47.59524105689752,72.64 +1757.4326301287035,2.520056847071119,-2.828621795972084,-16.446110768731398,56.75717379833212,0.0 +397.8245209670941,16.589071319656135,-16.974937380484544,10.496924916038209,82.01783076176288,2589607.37 +1275.6354696805518,1.915720750650908,11.573212129972305,-16.09451703743952,65.09579211202882,0.0 +531.7167120228024,9.857111133478725,-2.0603859792211754,-8.295183379717926,15.254300077313298,33071.66 +1723.7712762620697,14.68639740139553,-16.504084245534365,3.29649623250472,14.900365909527034,72298.56 +1242.2791169363895,18.679624489023297,-1.08232310111132,-19.86746451010466,42.1739113573367,0.0 +925.487808806488,1.952200319198356,8.530984878757923,7.014899696274135,66.25013206502852,10636.62 +649.6844125732723,1.553091551738327,-1.0784843957312162,-7.352193273797352,39.71972778039654,143421.04 +986.320458541342,3.291670322730438,18.745310391142244,9.94281240112592,38.79271664052542,50.3 +1923.702186659136,16.370414062462835,14.866550099186972,19.009470187198524,89.64946630368111,0.0 +1116.576721538517,73.00718914197857,0.5922796151977927,-3.3404363579196117,86.95413088866997,548710.93 +1045.0811570597484,36.16155202701898,17.62030834113276,-18.80016421905581,48.09053841273832,2390.72 +1543.2928643005564,31.004237165456953,12.455511904791155,13.955663073216389,72.11011275355317,2.71 +882.2847274974321,4.575775294304369,-5.269199566346243,-9.016866038401291,45.75744009856264,73978.0 +969.3631097854292,1.6726873001731264,10.856393477187808,-14.055340634649449,60.71074199433775,0.0 +806.5059168289143,60.79653278435339,0.2340933600443095,15.168479282371443,28.176618842258215,2829.93 +471.6555595929045,10.039382705427297,1.5644689902866649,-10.69881187243157,50.255985101310046,45664.56 +1484.8565855647712,1.5886260962916787,0.8248408087329695,4.211411669936851,64.61136303505197,1201944.56 +1771.4556449905228,11.747283781930212,12.147141615967518,-9.840654187689374,44.73604920481182,29843.54 +1830.0667686369784,22.4295461178616,16.742977628679434,8.498327799333637,76.17923829561309,1912.06 +1785.4452884680034,4.363149150307823,-7.219292548744707,5.94986368637775,27.464875094339934,51759.06 +1013.2108443883872,1.043512998863002,5.676842973351226,0.3667285334998205,2.2747951475574895,59047.44 +711.3191459657534,17.50708838492022,5.136354615695904,2.2009961483808516,91.51086137982092,436882.27 +1348.2627492814822,1.2027934013742632,15.499890301964694,-10.91025877171754,36.74233346780404,0.02 +1918.468841430857,7.338149945362301,-2.111532524618198,-19.122927836557896,25.95693392156383,0.0 +1508.691166703489,44.62214634978287,-12.393578722853466,12.028356180167602,48.12970616198014,639.86 +1090.727410862282,99.47072072682592,-11.87656483826467,15.572051393527063,25.68763260602207,20353.99 +1439.8554341242068,5.503080020732642,-17.948940470593815,11.114771648684908,73.59112405753308,0.79 +1590.5682424179145,1.097119294881602,-15.970860206837456,8.31699746411509,31.37285394885582,0.0 +1854.6846703905271,9.678458760251184,-7.951217125629295,-1.1230348721216066,99.1774018338968,4577908.6 +1573.7883571498774,3.5690349009498186,-15.897483025111327,3.356124119290884,28.346597415382345,214611.68 +979.74300014463,61.03093552503403,14.84365712549632,7.665088217558975,36.82557744128193,438736.15 +692.4917332378714,26.4853856278295,-5.5192582233881415,-18.950873325897035,54.29974874151419,1015.79 +1099.7869965132645,6.436452041101882,-5.261307004347864,-3.0531786324372767,1.3299962036794186,26274.1 +790.7203002898492,33.42384909403538,10.300254929825424,-11.01253971359807,1.409563629378423,1503.72 +1896.9762668380652,4.812954298505801,-7.94649498405116,-5.422036314145613,24.143730975039492,599986.84 +1114.338518209932,11.054196242179298,8.607291063307677,9.969268469953953,9.084855152076154,117.22 +1049.701404735215,70.07620260586307,12.896920221959425,-5.464546007689095,76.24668037226884,659467.89 +826.7531926787532,2.5137062935043617,-5.59287846272992,9.56378986310388,87.30992383286492,32.59 +1350.9325825248804,4.227815277886061,-0.8875225527577291,18.873259508221565,41.911147469937,0.0 +1136.092301517706,59.045502783504034,-7.11084185476587,16.935311612439218,52.13531323710001,201.02 +432.28806121686176,8.389898766664842,-3.0734315483869867,13.108994230952224,61.66161242317014,2721.46 +1764.5740594948902,4.322924566818703,3.229885960145311,14.11963237519378,10.393214319046248,0.0 +846.2230978588371,1.1874008086833767,-6.014411384630334,-4.242707217785808,47.511835398730106,733338.41 +978.6411739246776,6.885033776816912,-1.4346804575903027,9.2632954651109,95.97803928745684,2007.08 +570.2007019944424,10.027720552134555,-0.1510520915893565,6.680546286629729,21.580410503885815,27125.61 +1196.1167737122005,6.496294946628339,-19.01984838303722,19.31568594049386,9.321839138658683,0.0 +1463.6991123714492,3.5885455860790425,-13.45404129960249,2.9959403171187216,28.776537236386844,504268.43 +1786.0975771266912,5.47343981611351,1.6549743972199504,-2.809356422681737,55.244558903021904,2458145.11 +292.8937969500728,19.270349753990818,-19.89397342033527,13.490673606362158,86.98053279795951,6346756.64 +1951.997437458881,60.612115191731625,8.167745681209478,9.982933950968905,36.12576211416343,5161.39 +1466.871935636642,19.922858257613736,16.21859956927675,-15.005531655958908,35.13597816575331,8.45 +711.7376319407313,19.603105262581103,10.182764923165164,3.8512075648257538,34.96351303656697,100833.77 +568.0545590251389,43.02785772848524,-7.433951855677345,3.692266979043284,84.2510207630855,347694.75 +732.9582535782763,2.139368295521997,-2.0063611931336256,5.264994185813783,47.461531842833224,155322.85 +1776.3063529995964,4.001246054570876,6.02867184281882,17.659923585331583,33.806378531853916,0.0 +724.5023117527107,1.2623563411133016,7.21747754522422,4.081424859598597,18.5180497612315,153348.16 +1033.0780422030243,5.003519466188813,19.099875991374603,14.800754213792114,13.434529162937151,0.0 +1470.3284976360187,99.45979609358108,-0.2807660300039893,-5.66476740560538,97.43953980837333,808393.93 +1769.581754702994,4.556430924256203,-10.018606674519548,-17.704841814162013,49.15598390975898,0.0 +1385.4280922229875,52.425911743065576,-5.512326306920783,-4.991090432239558,8.148181992572082,90965.49 +1555.5965537619609,1.4844153199930403,16.897718289527365,1.3067763110433983,90.7297590061491,598671.69 +511.9882333327201,8.30662733065549,5.308383059256143,13.33285511258361,95.4540775337311,1365.61 +1779.33408984405,5.0457500218953655,14.5700562067139,5.273952345795996,24.480495394645907,79204.9 +696.2945305125992,2.5302633589267525,8.963423622591854,-2.31191723905678,32.29093783616437,446991.98 +431.0806953017282,5.559202757776966,18.61721383326674,-1.5250956900566814,96.08835704774496,2471403.48 +1957.2397226132048,20.070409003911653,0.0492022761692956,19.866291145338018,2.5603665966731612,0.0 +562.9518658174898,9.563484311856348,17.996210375404043,-14.346246476389144,33.10702385551444,25327.44 +445.97354614035766,48.82790179374831,15.435608697533867,-11.779356886289648,43.580106887844195,2850881.88 +1326.837620183216,64.54954921512561,13.723778653420393,5.011259747518069,77.26842397132434,265607.65 +773.9536690929715,9.199954137083232,17.563729715358573,8.05621942609224,37.40743777028688,14184.13 +440.02856932488794,91.92901955826936,1.0215056709005266,-4.20083189934946,34.502659298386874,669811.36 +1282.0180109885769,1.3932900224379856,9.713164760883304,-18.71472768942309,73.21057910004012,0.0 +1566.173409000024,3.570084065655109,2.2134307884817117,0.8804777963104593,85.08130018621323,3340683.56 +1627.7570735728818,6.814320261519502,11.050438327067663,-14.225594096359902,10.233334063169249,0.0 +479.9226818220903,14.635346892958076,10.55009982847491,-17.758067538484266,15.104660164602306,874.43 +1202.360722291896,12.355476033720274,10.336167678388586,-6.209614668423682,66.31728106348707,701270.81 +1664.621067226629,13.675824772259842,-2.862034525021824,-14.573891281746416,32.119771772873165,0.54 +489.9566205635334,62.015670736798185,11.851514973046214,-2.4401214881210143,67.17514258243986,3773895.56 +573.8280531872148,3.590297063792924,15.059573490003752,10.467778546456069,18.21985883707724,75.92 +204.34051537701973,43.02367370597128,5.450200974479533,-18.11815853369002,80.59826890933859,2205556.25 +1144.3414815115186,13.061742212911176,-1.8138826074161063,-0.0043396132594342,32.82040443404182,570629.03 +550.4270543515116,9.571521205414744,14.129930224700663,-0.1207834929674644,34.18026427590707,111021.1 +1503.6366363084185,3.970332248417344,11.138012782879478,-19.92898526057108,18.708126898611027,0.0 +1931.9849401116903,4.0563704054400676,-1.2159962222275045,9.530042968513357,21.925031652440424,0.0 +575.7598801983264,5.983561276158787,3.1947621392849035,-16.410563644714692,60.24118176513263,106.15 +1368.3746211743587,33.65278231031741,7.433010122637747,17.282213261910538,58.57895221830412,0.06 +581.3020306253204,8.98391791521823,7.532863311963709,5.574580784262135,82.61576789679242,159927.68 +232.4123461634672,2.030801009006594,-7.558514513990207,-8.48735472931935,63.397719608526096,87514.51 +1565.3975495862526,33.09225442555413,-8.292333248010447,17.011240532568696,43.35679207541311,0.0 +981.2084179716072,21.2207131980516,15.4938758435821,-3.981579154063426,80.5392348007542,326840.57 +1904.2163507263756,79.15485119660543,17.480445600559765,-9.589576704224733,2.6425733164104575,12293.71 +1161.71458785813,11.450598928749937,-3.917394925267752,-4.6199697430318265,70.47752427620564,1088922.21 +483.4691641562312,20.363118328286017,16.535075761612017,4.463477641972795,54.77559139198713,2889186.53 +1009.5939952351002,9.092023415304867,-1.1723096587834103,8.94387948036432,22.868422280721465,1624.93 +565.2052306508297,22.991135264972417,-13.31190480648846,6.47288110297672,64.11169718467423,398017.06 +1780.452690835834,7.451335641420394,9.3152178714738,16.84946781997533,98.67906359335426,0.0 +1443.6257255975447,1.8867439126688244,-18.164596439256883,18.24684999363491,35.30433183372703,0.0 +814.2298483784664,94.05166160279572,-15.443345187554698,-12.11748763110664,64.21197005608138,3294226.07 +1150.0765810528528,27.58845662971745,17.640223163929804,16.50169605493093,44.49795967237063,126.55 +1405.0643387834511,16.491176903604405,0.7048695277618133,-15.732725369824148,39.85135210209277,2.46 +1609.1438899617654,9.179975039962557,-9.344945206863889,18.27567128100381,31.408998383830937,0.0 +344.26497776697505,26.47634334484285,-0.783620811051664,-9.62620611674029,23.666083225370777,43337.34 +240.5339155914442,1.7928743099506164,3.127105317963559,-9.368433874686456,24.32296750544897,27361.97 +406.01485490580166,4.489797939367089,5.5566196557380065,-3.138177957960111,77.65082599247559,371629.08 +910.9933583106134,1.77581901311154,-6.071107191482579,-12.730308460603537,33.05490645753901,0.18 +1040.0718981477658,1.7866940543739076,-4.50388159716522,13.108746093036569,53.42800738517448,0.0 +445.6309343849271,1.103303738459393,1.9905294195298229,-15.010500794246994,22.137781557995968,0.11 +940.0756482192896,32.49277702316991,5.066581963877135,-2.4284478535139886,22.034302035127325,162947.24 +994.9210154512948,2.848506725896169,16.854258332577277,16.286240430510496,59.12082856665302,0.0 +396.361934619476,46.13339735981135,-4.308954297844436,5.41556394377015,58.69356980387516,523707.76 +1849.9879283523212,64.39750304757465,14.98748887071812,4.2865937831241,51.021081053092026,229241.76 +1278.4626696578737,2.1733622497429437,19.728725638178148,19.785768957154897,69.62541245585986,0.0 +899.3639548213077,26.16544255489752,-6.439860356686569,-19.09803670410557,64.0655434082508,119.23 +1112.432930249972,8.329356624836823,-18.90862146272744,-7.208252595792226,20.80998670127389,10601.16 +765.5554756438521,68.85291234724792,4.174848883947311,-14.9992712841544,6.494055332165427,3383.13 +1737.7958569602674,9.307528776141364,16.1459066448161,-12.61690884118542,27.697646405280185,2.44 +1235.0270748233067,5.724634623012143,-17.864440991134455,-11.359820058900194,43.69344836361177,126.8 +1090.8124659083785,3.8826678361396554,-12.11400626374993,5.075604422692113,21.621531611169953,87643.85 +1839.593725572076,64.156827520425,7.046017196708307,-9.115719048251298,48.75774442205954,277224.97 +1708.363456821322,2.833730905987359,12.38611564794912,6.567380345474989,4.634233869158208,772.41 +1663.0434045665288,45.23031196738424,-16.53439103639092,9.522786021420124,48.235325136651426,7085.55 +606.0965676173195,2.44554070099516,-5.450485587446896,-3.923487912309649,35.79975657300274,372905.55 +475.6216006430422,19.355023747381995,-10.450458644179337,1.4530909759172328,95.9514925644646,394350.7 +1442.173735482946,7.982359432403832,18.595057718771216,-14.716313035898857,87.79328730117396,0.04 +1043.556061414513,1.6188900358909089,7.298753139552363,10.105574598795194,95.1606959385909,0.0 +1430.6828833223185,1.7859364810724156,-0.9744599689266796,-3.23526865005959,66.22414836297457,2310195.92 +1569.1290178000097,3.656101969757547,14.494091576729884,13.385408185475669,97.2234079948223,0.0 +731.5643132205516,34.14313300841809,1.506492955854739,1.0487807878437394,19.76236139812525,75074.31 +712.3707796210556,28.699874955586317,16.453364527897172,7.8705857357860465,53.70679646147759,892050.43 +1083.496819264731,2.5718196061133063,-10.447664649878586,-5.656692261914316,74.57482876384914,875071.42 +692.3887643476952,8.961988641188736,-18.906464081217695,-5.1292148347114574,48.75226705088139,486595.8 +1401.1314968291592,1.563053795494345,-2.850460841372149,-2.5396623374289096,22.16091814029678,824503.57 +1544.11480258529,27.03289592257654,-11.828910270410496,5.441368227474417,65.72825029699762,271110.31 +1049.6701028958398,38.601490130618245,13.42924280587726,0.2613432584236452,97.1497489760222,525508.24 +1502.839578077558,61.23842324974464,1.316943919872191,12.171057968987192,52.7968451417998,2708.86 +1118.7876243273972,59.08699897911505,-8.453454932324131,-17.808104709572135,25.56299674285251,920.32 +1483.1690995406166,4.740068461435565,10.94295576942999,16.02170901023985,5.011249406450826,0.0 +604.9428460323056,3.228997188533894,1.0754153213294115,17.041466651111822,11.309546625160271,0.0 +1529.9174826794756,62.11246277768203,0.1117878153274176,-10.236972445712963,77.94517305601565,218627.87 +1487.223242222632,1.9589075930596105,-12.768408740905866,-15.968945990328042,49.04059827247528,0.0 +679.8902726885198,1.3142807392956952,19.808609381755204,2.8742490714850666,21.657286138768736,6632.76 +1200.747783872315,4.250949601204326,6.3607228437425345,-17.43319317670875,86.14770962904039,0.0 +1739.5610021739228,33.15889792496091,14.192940009843545,-10.811374099410202,44.17152977830876,28601.66 +649.1407645503901,24.45679731197756,10.389293647937563,0.3026411605966661,79.7791890527251,279991.2 +1524.7636112264174,94.21294032453852,0.1173545178182466,4.552457270470898,81.31796628938024,452870.51 +1917.1400908643968,5.236813918193427,-19.610736524097675,-12.227806957200226,72.07378242219065,0.34 +1759.2354555636168,3.5620058609064467,6.666808072353314,17.30951848164489,97.2848507368139,0.0 +922.7361488244971,5.707096532746779,-15.970227479934454,-12.74707611904522,89.79315650343943,306.89 +1292.9739193786493,36.687027297584855,18.458601401921428,-13.853768114395644,13.418393488578207,9867.37 +1985.186241654867,2.682871686764313,-10.029401454938167,-13.507200618963658,35.03145617914891,0.0 +1223.1873404762932,78.61328935305453,-5.3066815791519995,17.18099046321139,95.47051439836288,642.56 +407.0496843746599,10.5949439874936,2.06237757599542,15.150840790916291,65.9013509766403,1911.1 +281.77535860176965,36.83748665681692,0.1045786538928172,-18.678365429773592,44.929554708251565,322962.41 +1622.566117539251,45.13606029540846,6.205917680542816,9.064612862693409,86.34995495547224,32476.05 +962.530985723323,9.070479260914643,11.33790476635899,-17.060451147530156,64.25015129002915,0.34 +644.26320313255,30.390843967732614,10.305758559794516,-16.987578245228203,37.686723606086105,6562.58 +825.8096551897046,5.36276353759621,16.32342402760637,-16.959191914503634,27.85350280236263,0.0 +1563.2711597836142,41.86547553287981,-1.2033409390702543,13.184839132624342,85.25920576838692,152.21 +1037.4452041408924,44.443271200335616,1.3669057693106268,-2.9025746964553667,84.82982470047665,640216.13 +1763.299086546578,13.564745152667667,14.963088193314151,2.281179526154431,91.9122961461206,1202520.56 +1522.8660597998587,2.7308360774786964,-8.706755129560108,-18.76745332775794,78.66982342184875,0.0 +1953.2254708017651,87.18591913752505,-10.163192633758008,16.035667965476556,19.29213094198428,3.23 +1799.306780221718,78.3357021210421,-19.63505971071763,19.280906493046817,39.4593413151498,121.61 +658.1849812148165,17.36365263877839,9.53922092703991,-10.59285727459649,33.47992456150632,34411.69 +1386.306619044596,92.8457441839126,7.503426374672806,6.26060731792613,26.52970809244765,74532.57 +236.977462150659,10.129606918097842,-8.931187222102764,7.152118219294641,79.67786013037676,622645.36 +1983.992103973277,5.635971001035899,-14.803381140729922,18.651209706138324,13.33941170252944,0.0 +669.8109958446738,8.336927629748223,-18.29876302062504,-0.6493540457335634,48.44154768730049,306345.54 +1396.6311685224512,1.2354183176535676,-0.4854844845331474,-10.483416181921656,86.69826504894702,1.71 +1728.4765181592174,12.538445494511116,-12.26070845893462,-5.588694628672726,79.10811267672253,1449474.73 +488.8363929103486,21.501308037139392,11.735884896213236,5.584468409175876,27.470067347393012,157055.78 +1726.1828170588624,1.655922272217205,18.001349162071037,-1.1005152773450178,4.51917160360973,15654.77 +222.04219842348036,3.244853870005066,11.074377293044687,-16.823702796481868,41.973826192170584,3859.19 +995.5588485537334,27.692886116017444,14.063815736343628,12.294649264770872,59.75707088012174,2107.38 +1049.6677205560493,38.652746343859015,19.63169235251596,14.570750588650174,85.62022550718082,215067.17 +873.3632838657246,93.69881505337229,9.63241792005129,-0.8667133052441711,53.29866681908318,622867.94 +1255.4925433408996,3.209573841432085,2.692946690586102,0.9388153073044414,27.315489845032747,792578.52 +1846.7162276647375,48.18134766338986,12.40044918598661,-0.3370688148323841,69.38488609899188,1363290.71 +788.5804057405204,2.20905195502285,2.554066641035906,1.1898478450047056,40.76415172616477,662115.17 +1242.6677968995634,1.8270767485543011,-2.69939650619973,-15.895106459975636,82.69845588492933,0.0 +1779.4325463379812,28.734732753846764,-18.699800786786657,-2.6546845070042924,3.3488091733877643,10880.02 +1591.3917111824808,7.793718990837879,5.719215720115272,-2.0849879240001057,42.48208952348117,1563021.97 +273.31987664989276,38.71212368704899,15.900721318861567,19.90857340096632,42.79367455701256,1406750.36 +1897.023375429792,3.673919115174965,7.726059283049946,-18.053873058211487,59.166798729544745,0.0 +283.9644276655029,2.669240797985934,-3.8341489719884647,-7.514442984485377,36.502509360894635,74274.98 +1259.7652538737932,12.51980278012408,4.675975640817902,-0.1601892703275087,40.81529514072853,869850.32 +1235.636516567297,1.7006735187263264,12.51824693650493,13.889413816091874,73.75437528591175,0.0 +1615.5024152641688,3.609927068976939,10.569605387622955,-1.5505153993273924,17.956977789290402,746703.37 +467.1974933281598,2.1501760639057452,-0.3528621603269766,-8.359742083981452,24.598620420700477,50495.59 +522.8667057128667,4.366109139398049,-5.532922201271164,1.4107284802634767,11.136328869427578,73699.96 +1553.792478929049,33.962324850661595,-4.125449006855537,-8.118927828065562,26.509399094981816,191654.79 +469.10855434092514,1.7437518220602453,16.316365830943084,1.932858898301104,51.033693434215174,107123.63 +1045.0012287181512,16.739321026637906,-13.205852904774876,7.594410353969301,19.72667999831956,10547.54 +1516.9665623796775,14.775158245154683,14.519183688782412,1.2312941839007552,8.284161478501778,106435.9 +1372.235471808826,11.919588385321264,-12.188651381003837,4.385408646395428,99.64029360948388,732344.73 +579.0875350035714,9.300262505443518,19.2355899933778,-18.451302332320996,46.065405310681825,2149.61 +747.128465634954,21.267733437443265,-2.066282578584997,6.352003176885321,83.3232912489364,146595.24 +1944.1548258338737,50.53837934220593,9.337218230962364,18.787015787304146,74.13863875386023,0.0 +1007.6071162787912,2.10898395998806,9.174977460326357,-0.3342098357231915,17.378762488158895,418480.31 +280.02345758548495,42.48764353332004,10.901242121928686,12.10832929175873,51.71554344561148,1888175.62 +595.2528190393988,1.327245582940575,11.575834331369496,1.9562136111895343,57.21802129380156,601970.75 +816.3831613913078,9.209772442907871,-18.437010712515047,8.159948944565665,16.62580581278502,11477.56 +1999.0809277302544,10.542194918474046,-9.066625467008244,-7.60351381718444,12.0778183286881,103593.15 +744.8447854584535,2.484114805313249,-10.81162049562479,18.67456591145394,27.05954921378324,0.0 +247.51252780858096,1.511284439250118,7.94372912466323,-11.3942007034481,26.865098890810852,10336.85 +1123.2588395996047,1.4119585608504426,7.332698201052392,-13.63609508506546,28.480961075438184,0.0 +350.48969295315874,1.1870471511870913,-8.118660633055388,-18.17902431773751,25.993172578548936,0.0 +693.3216776522993,14.03414787329544,11.741677336339484,1.647622497131347,55.13467483284211,236898.34 +1986.2897169690905,2.046205374845471,-7.535177005796112,4.756036417518477,30.14513610436304,522339.86 +1468.349334074278,41.43902216803945,-6.282591180293298,5.980878921146284,77.39284432914987,277410.41 +291.19993270916666,62.79216280048536,-4.045965610044182,-13.110740609062216,6.18574055476909,165004.13 +1007.6360934652328,3.8442915799386377,9.783588374122306,6.057483662386738,62.52924489576707,94712.17 +508.9475227319288,2.1327151791462517,-19.5288827427184,-13.395737414965009,77.4720645052036,397.34 +421.30038152381826,6.595135932680286,16.2586100501642,10.19972624284799,44.27975566915142,65446.18 +1256.7177440278435,57.96160495541057,7.682197447488033,-8.990216263050502,32.613142616996704,114251.94 +1110.1806013523883,6.304321703557168,3.463935191808716,-3.118163303700068,31.005688303773983,621476.85 +1537.159851767915,1.6469203353291768,-10.506734275888174,-5.3109182247804165,33.451516021259835,598983.95 +1806.1512108173472,93.18289211866572,11.420532719970469,-5.291078184805098,12.618958495031094,147113.5 +644.0273433769914,9.985066059588227,14.91152587343349,8.837739295164058,58.52649007972181,13481.82 +1861.3855759797148,4.838858721892965,0.0618688036111247,19.91091680396427,62.72402951987836,0.0 +1132.3851905973718,61.26911111550859,-8.301567029876708,1.0931900618526758,39.578507421157745,242015.33 +665.9028527332109,71.58252073593293,-4.777865359233058,-3.958444253451416,95.62996444096952,359061.67 +1722.4145085846967,9.85391775205616,-3.349959495760664,-8.252035488726314,91.23202319598848,433980.07 +263.9538524522405,4.106130875310869,-7.763384763485202,4.9791291636479285,30.48963015465946,37306.15 +1207.1168794513292,9.231401479590202,8.487540675455412,-1.9526713920912584,73.50278256927041,1605811.54 +1498.91876305394,2.7451362346911545,-6.3130276832083165,10.913434736796631,12.51526876098699,0.0 +703.9598368810579,9.046408520942837,12.848688364316384,4.267565560604165,76.02356750175929,214281.37 +1754.2854516137922,2.8764856470966467,-1.452358402989753,-3.5231444697167724,73.83815599998618,3121761.6 +632.5122140443727,17.555189513178618,5.158407212654259,18.120450131306725,36.30623456859162,25.99 +1711.7737089171303,33.09621751285217,17.918092728304046,-19.549416978851585,39.30811122170528,0.01 +341.38093489842305,86.8671506901526,-2.1578531471357154,7.579520984593193,59.02008943040704,1721558.96 +487.8696653631763,48.4329518219053,-13.18615170436026,-3.568341720519057,28.741900362531165,1739973.9 +885.7722510234347,1.4868586700430386,1.9968927958669225,-15.135126709538218,57.70087386883451,0.0 +1737.2999230367227,2.6487792152413463,-0.1329789478206677,-16.29218192481387,88.87491263366742,0.0 +460.2536572282084,11.571341628883635,11.30333202756828,5.972759474777196,45.03891830245192,60652.21 +1775.7888316296346,3.2747789368752453,14.407978531823352,-14.089073982250802,21.21657450790575,0.0 +613.5167479030287,1.0683914754006378,8.50479078788657,14.24304181360096,56.24639158971544,0.0 +1014.5151174701516,32.32822795871152,18.858188282437855,-7.562880547806024,65.63180281609081,2630009.85 +834.921927668608,5.194503164464065,-9.232212843589886,-6.246285570723438,53.07245663620222,413415.47 +412.6272079061424,1.3558138462840448,-10.43217759633825,6.404977422349134,3.339269134612087,2744.25 +1899.757531134452,10.41532516348097,-8.34852758218128,-11.193444703531853,67.25879970328991,1677.68 +988.7209233539844,90.03625578608157,6.836291572865862,-19.718431612691308,4.6525496768283165,399.58 +1442.5962704411502,22.755021639441985,-10.698359387043295,-2.1668263946661037,42.32495579222759,844779.19 +1235.481817995256,2.077457876004395,-16.463303035284618,1.1151911342342211,42.02537423200402,267918.62 +1103.0886503339734,10.680489855592503,19.108887343667973,-2.1641787823388148,84.79420523937718,180653.09 +1309.839722402328,63.59821254491752,-7.415569479992388,-1.6803318001732936,86.40456399312139,881063.99 +1817.016151164372,1.2837703290685487,-11.104212960962649,6.629555927676183,77.72913402863499,1773.87 +1458.7622762493972,18.870630091646166,-5.650039910580955,13.827551483840868,82.15315807193902,0.09 +1158.464143019398,27.70422333385272,-13.66299427770392,-5.379777498497043,22.66143705482297,133890.29 +1361.3347291987577,25.58723740406556,-18.56928743684032,11.603742113658,71.91212452762863,8716.78 +1291.509704916239,1.9968288242504977,-7.78465729696407,-17.492649350185715,75.17912239824469,0.0 +979.6181734753636,65.24647649330723,-6.485482569315848,-0.789565764296003,78.02932558447992,372547.72 +1324.5752182348106,4.411056955579442,12.440649517557386,-4.953923158609936,79.68353236725751,1239619.55 +998.4256402954944,1.2690655261903436,-2.5745293670854696,-1.3623768670214664,17.16103312928351,444320.56 +1563.7058801694425,1.4670397080732227,9.470091048275616,-16.34088574416819,26.43557909517123,0.0 +1944.042470340114,8.22535713556741,9.428504375150212,-14.446827008191924,78.584964347554,0.0 +1927.7576434950129,1.2021647908758604,11.559683138466138,-8.26080159066728,15.58751464475796,563.26 +1677.3244155649647,36.23306186622044,16.740355376298034,-9.05873494752749,13.272128189480886,16049.13 +1283.1660147070734,53.90722945076949,-0.0547466238710248,-4.596136698352624,97.72432684971244,952202.84 +1548.797578527333,1.063521686306928,-15.841868074591726,-1.7096449152046311,96.81125061497798,1244312.96 +520.4869314635979,41.68953073490169,-18.45348228869777,-11.153099358796382,34.3366456738713,3668113.7 +1062.2332231650605,91.7092070076326,-12.523618500805211,4.768817458220989,1.8507178082843,22067.35 +663.1485769844559,1.1501019034298203,13.16846587385536,-4.967137531688577,40.42640590915883,296685.39 +206.2909659968248,28.179578268874767,2.9739799612592943,-17.594588772972415,3.561492159924162,56616.09 +1940.1276344097369,99.58367690623544,-14.39527022737626,-10.252131555423636,15.19935228224012,32195.93 +1754.9274113333145,39.28594213120713,-14.694550482216451,2.405891754118632,23.187269911634388,208275.73 +1124.6575132458684,10.249767307892531,15.660117517406064,4.275086317740482,84.08277430140099,214763.47 +657.4741186142122,58.83637998832201,0.8012143888549872,11.986434793610576,38.15475220066145,16208.49 +1447.355378358626,26.05342654682934,-13.124093700833187,-10.180853598926042,1.8138774104876387,2243.48 +982.6419521898696,3.8450615919550177,15.8699045947411,2.4885978424318766,64.050813425584,302311.66 +1646.029160160859,2.8095681058573017,8.829086972288662,-0.9557912359553632,7.992343958405177,366126.42 +1999.1325983257088,10.594702968660268,-0.8892515871596585,13.94060696607248,89.51635606375774,0.0 +828.3486934817662,5.5716143471595645,-1.3973825313514432,9.199669415470884,25.290015331549863,828.11 +639.925478260486,4.559696975178189,6.90607169735638,-14.720581690336454,24.536387548336005,55.27 +681.2884798305648,2.2690790885993635,-6.4676321825994165,18.350966047817447,40.30734737920618,0.0 +368.0232422252095,49.04243287645577,19.99640654775324,-5.79141443471809,11.637162322922098,2113477.45 +909.2831537002796,25.705674342289047,11.382182989524594,18.183655551688965,3.290668377735426,0.2 +231.36509489043675,4.598783233508255,5.638394202288022,-8.5911580878708,91.52238410898802,96444.24 +405.9120033222961,2.98768057309166,7.498097619674384,-1.242446999188016,86.49722422118869,531570.36 +689.0523450908066,1.8041632243589332,19.843354962764536,2.0185525745108057,91.71573766791327,41198.96 +487.7529966370653,1.6789041759908063,-19.568734220901035,-17.456331885608925,67.98730407237379,0.01 +1517.8863791013057,17.821997172667384,-19.08701323948323,8.626625426158014,2.288952141029185,427.15 +390.08862356222056,1.6505715537728909,11.401114803480908,-15.811585421454089,97.34566719199135,13.97 +1758.7893890441444,83.25786077678889,-11.62432158952145,-13.433488915535982,71.16753034554827,26341.99 +598.0061066797151,3.6163478950150063,7.406662611668047,-8.39031184978614,42.107988289779115,100965.07 +395.4631105488218,1.126184954931896,0.1336176467479566,18.429851776851077,73.51547967234586,0.0 +218.19195997626537,51.36407219025406,-7.253194977396538,18.9246512587416,57.1404773675284,1557908.58 +1487.3690077798635,5.434690189599143,-10.74639939763514,-0.427342309971821,67.49633531110288,2274561.97 +661.9101426893756,4.85212260191193,11.06983574887309,1.332844250584082,82.58633960327802,676618.29 +1117.0974892479946,1.7267967541047815,-13.1607234104842,-11.52627530591532,93.6821331665655,2.99 +400.9088840098803,20.93360940128607,-13.651159549576429,-3.278334178443627,79.86883032273202,2795616.08 +1973.5326618252489,5.218993346366534,-2.322695601242435,19.376730974130947,89.69243302150454,0.0 +425.6925303259195,44.25772226945362,-15.228928142815477,11.631682960763822,57.18284309228691,2825986.83 +941.4666679553808,18.248896466584604,5.660474123656818,7.895959684948859,34.50484588278064,25996.98 +1732.9691042020386,57.520771868105655,19.678831182439534,-8.863403431654696,67.29925641969699,2158106.68 +640.7965072647323,17.584187904676785,9.916531637195211,10.52236996350295,56.066525502672214,12162.23 +680.5492136231121,36.18732321587271,4.129398176986325,18.662156288153326,6.564977951575484,60.31 +1655.299128603319,24.72171354159281,-4.214460247069538,19.518130195160413,58.012274612791494,0.0 +692.0113829456228,8.417533418939035,19.519586330272055,3.991686072934586,42.32391282655261,684658.83 +205.16835997066335,23.842290977800637,15.197730035111846,-13.570718088631368,37.587618666892595,2101294.17 +970.2446968819096,21.24388956577201,12.823631796688106,18.56280227452136,72.72156984396798,0.11 +222.56337742125496,1.0313527711994217,-10.799732812948104,1.6551499690281757,88.62585690543095,299320.79 +1837.62611089286,24.961798750512784,-15.056772253811804,-18.46637694162553,20.51687203891866,0.0 +1355.2638035225978,3.344406075022149,-12.882357129706431,-16.74011897708672,79.69469335327308,0.0 +1249.425679198236,12.1239920802047,-9.652436223354105,3.0903174089480956,17.789885292476907,230042.69 +562.8611195522536,1.6698012307545165,-16.732046915765597,13.411753484615026,58.06817012101109,0.01 +1459.9031337715453,1.111846934861149,15.536893166715204,17.66085711741344,84.97238638912029,0.0 +1419.0583586210223,1.0721101744852892,-12.591956735150394,17.777444437201588,90.6781454534904,0.0 +308.8344330656569,2.0719965347269684,-10.935616471892535,3.1445781536185757,31.536040107691335,86097.24 +1785.5237554590306,1.0959355459597349,15.526334229876152,19.256368437059628,82.06920292766128,0.0 +1242.9440532736498,1.8399026363705289,18.325728037201017,-14.016156235150508,88.00013961865416,0.0 +1626.4403858694984,13.13249398984236,-11.128754972577736,-16.213293973180342,18.10476516852425,0.0 +673.2453298319195,6.31750600125374,-8.232636280374912,-18.7888845113782,39.08770650119771,0.12 +419.68603955621745,91.51583469805983,12.00411588944132,10.96528430245229,77.84869615134077,3973259.41 +1464.4092317362122,41.437039603046294,18.810555502568175,16.663877825182393,2.4571497283047874,12.98 +1628.9888352592918,1.9658551246485256,5.987043891486219,13.593348319077624,62.95079070210181,0.0 +894.8603605147244,6.816772290250382,-2.2966126348477056,17.585447621040608,42.04960022091094,0.0 +242.64609556936023,7.276819343440458,6.983181689632048,1.9227139929598944,52.233841432603334,121615.23 +1672.8572443769565,5.299483665839119,11.211340432679332,10.52165769393103,42.418246638564995,0.0 +570.9690313947932,9.798950444560528,-15.493763852659086,-6.5316050681831195,20.343506328354025,49900.11 +810.2574954154787,21.864980325289256,-2.5880657979036448,10.663155755068976,35.49708114220984,6427.48 +1330.8158139988343,19.132839630914997,14.29208254276488,10.121839950261652,86.24397071386004,1091.63 +379.9184945803449,5.178432602583768,8.216986964648596,-2.5758849031696673,61.48521679510788,235752.32 +329.59237904923367,25.709358857340813,-13.8490276394982,-18.2493740168309,48.249032739080754,770346.41 +246.26678883549368,3.792894800695834,10.208527690212126,-9.34948165145597,70.89918761781156,70742.49 +1849.9517484310195,46.87439640822182,6.697644564259342,15.407401508116273,19.18924655495513,0.07 +760.4889396835802,84.86802321895775,-9.414049253041972,3.490666351753866,9.26381697742242,120832.58 +1389.1858672108374,3.885736160557093,-6.239884707705294,-3.7962700806230782,55.31134104558231,1529651.41 +1980.623448231936,37.10027301586599,-7.423740203035054,17.89581317824883,2.138703738968969,0.0 +1405.0114284114982,42.34982379645534,19.7299414921386,-5.342324139514054,15.673458808276722,1075593.93 +1145.170632541124,9.583557415443376,-12.651145006981434,-6.876682825331284,71.9887803495137,463115.77 +1137.6558803310293,1.497940707981848,13.17661203082315,10.819840861946982,90.26020197721616,0.0 +878.450867219993,37.356293611899375,1.225416786965714,-5.787814804350906,29.241124498426093,133254.23 +1279.6033807191536,6.53065101375888,15.22086739231852,-2.1506711194867068,38.87985127295526,405683.53 +1925.824501182268,2.6070091233423405,19.274445409668218,8.89832129157913,68.42109466610097,127.69 +1618.479260656958,17.918451070829718,18.443323717389205,-2.795192745875763,80.68383802040105,190404.52 +963.6079106598274,7.47956277249664,14.17012201154854,-7.108482339363293,26.760984605672785,95095.95 +798.4006922585598,1.4967349412030917,-3.4571114547381487,-19.38444654988734,82.79073587344442,0.0 +1790.3567533216185,92.7575476531441,-9.14912242554538,14.422786597108304,97.29571799115192,660.89 +444.4144861278688,3.0854871387909677,-7.220104292374461,1.0681517205050772,9.70794956795926,60930.38 +1729.2534625357432,10.517925999919044,6.125521255556041,14.05327490431719,23.207679623515222,0.0 +659.1381704161982,21.60610704694881,-6.325577750076445,4.713685041935145,72.88851288456556,164065.02 +1488.132624396652,1.6989426885374306,-2.604454245534731,-11.973344730784548,4.633673175941593,0.0 +1651.197045394694,30.1175879826027,-16.81054426922122,-5.473561959543876,29.11812724353811,123072.63 +1058.5937310742506,19.79600977911968,10.84046490561522,-3.309672958283998,84.6080219704154,889465.58 +546.1111570560938,9.716409156978614,-15.541225642854272,9.589039464650444,68.48384146373266,45938.84 +1720.5819382322757,11.393574156498657,-6.518937906386588,1.9269276983263417,64.42993891715498,2106752.36 +861.5150210959665,81.20636201995504,3.6173588890838193,5.460140264233377,61.58793161844344,112779.32 +777.2244688685347,66.34308681583347,1.2469940429747384,10.12320677593782,50.68887145778059,32715.57 +1118.0291282361914,1.6748142513643407,15.725222496922116,-9.04554700976894,76.90731928060961,5500.09 +983.1552339870518,5.463917158394716,6.347525482014897,15.279671930527336,86.6636642186482,0.0 +1429.4939906697036,10.802962375603755,11.561791143083816,-1.868922001405133,79.75798097616028,1958620.93 +446.9560550707977,69.17540202572805,-7.862162983439736,6.444875670149686,48.78660615906464,1248069.06 +984.2413772861712,42.96617162889281,-14.709706528463515,-11.271908051568005,78.07325494302903,171496.8 +1805.0632602053672,5.9287809660625435,9.733199964056816,-10.665105600456393,75.7795786555727,1020.45 +264.9128769915058,59.213510749432224,-13.856840879228171,9.39957614146035,46.120561894005085,2697452.35 +1023.2089996759876,5.7057874740180194,13.36664814888369,-5.983756930306625,34.076982938296815,241228.61 +1388.9575394933784,3.4864695104734684,17.720697727854127,15.038310709966494,41.603429219161654,0.0 +1797.8799566755736,16.587664894149782,-8.682885626161392,6.589883585415319,49.8275325847168,75351.5 +1268.8152084797164,5.149955894241274,10.440201489557293,6.617156724694091,15.548262781407107,10241.61 +1684.071688230791,17.57175421118225,-2.5064672583061487,-4.7893078242063725,22.629642129109513,573059.54 +600.8438341267156,6.59732911823477,-8.04010617037688,16.106812790640483,11.082347185744732,0.12 +835.0569852101472,39.04255935867107,-2.7542666647860647,17.785578590920622,8.157145121710704,34.84 +1895.8380930704768,81.02554236009004,5.870691349692243,-9.682430014573278,57.0458088094945,264719.42 +1794.7552035668352,3.4723089340390825,19.522730928612408,0.5825028328653481,70.10932698496619,41818.66 +1204.315368839668,10.471771774749715,-7.998250652974925,16.277273898607703,61.747631235275435,0.0 +1055.8790080307217,28.110260521870277,8.237727794124945,-15.94877819626578,72.96323399403767,1542.72 +1011.9213046180254,2.0750959864808864,-6.605195873570997,-8.096840057577355,41.24351211214805,71923.24 +305.8213908206289,39.06720092635249,-9.944237005614752,18.17706074181585,80.11577809175604,1223642.88 +1806.2787871218204,14.653586195914457,5.273685670260848,-0.6010564706997634,75.02064815198025,2979190.99 +1672.669115147604,1.9928795370018515,10.451522107061953,18.06148711634627,71.38948095242914,0.0 +1021.2520605101608,54.50786524850703,8.695441268777401,-4.793268852797863,76.8340679265364,390130.36 +702.9919508950521,7.1351403308691745,17.703427143731535,1.0999855784451773,23.913194216870775,50701.34 +817.257091567755,2.255478501250703,-15.705233168894717,-1.8350844755612392,57.37454936121959,332386.29 +421.68905457120104,2.4591936496175766,1.6265465626873876,-1.7114331385024697,77.71874993745354,563095.89 +1499.2215343503008,37.24026815495364,-8.366248265744144,16.708517098006183,10.787923575379564,0.01 +1202.005741798744,74.37591492280235,12.678283144864364,7.785713139992314,25.46009659178971,56209.58 +621.3861610848109,5.708208717991938,-17.518937930178016,17.82925905105313,49.59238163299342,0.31 +1321.4100297398415,1.4376598711574446,-12.96786192150937,-6.818719755564038,42.00425595038449,135957.62 +1962.6143856589545,1.590912004549305,10.881142469884995,19.755755540414217,91.5125158111615,0.0 +420.3112438571226,20.368404840314152,-5.8143471815704295,8.30657804212267,75.31363931541762,71074.0 +1025.27301912559,5.514465464160007,7.272004512393875,-14.747591736375064,5.042233712105592,0.06 +1089.485877659828,7.1164433198564,19.940227108262665,-3.482275766608045,47.06531986468684,76849.87 +500.23498488284434,4.721660493092833,-1.606035877293639,-10.053288036975442,76.49344780003129,75154.3 +1156.8443797951666,8.532516405659411,1.3193696147251854,-10.581626086599329,67.23199086101879,28362.4 +1290.759065386562,19.36863012830641,19.013122528451575,17.182113506304884,54.22745488291828,0.56 +483.2201698732915,12.085881390336242,9.855739554328212,18.397979764815386,9.434276760572434,17.63 +478.50301821597753,2.1305064252755135,-12.129720101039911,-19.43333199565011,91.598415718106,0.0 +1741.427688140761,9.606768024668808,12.172008632891544,-14.478530449987108,42.09468009579704,0.0 +760.4973860060808,8.341153591035168,0.634336467097536,-8.886192601149702,15.368338769125009,36290.76 +1334.6000967415357,12.344528199444245,11.49477651455545,13.9094136381286,9.355162283165727,0.0 +1328.1915362153854,1.6647156489389503,3.942100994881357,4.444229943087641,78.69468467187502,1034250.32 +1710.507576048743,2.0279360055390376,-10.906741885931112,2.6171088016741217,61.661979920539565,2278765.07 +1531.810336216742,11.494454254510336,12.577583176672672,3.930974284152966,25.919567893598657,280370.95 +1713.0375801889002,3.555249508860963,-19.918938650796232,18.02348080117097,53.77009804748363,0.0 +1325.3866213711983,18.116044442248715,15.521208814407128,-8.968382450198309,94.70028092921068,122754.25 +1009.0228889251892,5.565481780523863,12.744369029086691,-15.06711563420946,49.81848458619888,0.22 +908.4197383635344,2.76356380074705,18.805599670900012,4.312614726693305,39.672804998479826,13560.25 +882.2535799905845,20.548947219658057,-18.5784903716514,18.754763122162487,31.476489233037995,105.02 +953.107576236484,6.135010908695403,-2.4946198847415424,8.40017053371712,19.045486677225245,1585.74 +432.7566538767866,2.0664501879519306,-13.234738304362432,15.684654448300437,91.12458606515754,0.01 +963.1250678057006,41.45891751373787,-5.040418567869822,15.847593804905843,17.998084007281378,145.83 +901.000832964718,7.3032711298686595,-5.608343606801887,-11.229716364351624,6.4070014867739555,1710.27 +262.2289939728166,67.63020119859327,3.9024424948201286,7.423938228047455,15.130013364510248,532700.39 +695.2353595874121,2.4366988426919884,-2.5028002487254275,14.48883567935789,19.067003584126834,0.0 +1553.4325545323902,56.584889120414545,18.622928542178457,-15.946364508479448,43.05740831670047,12071.3 +1240.3020285373257,42.8370880899904,-8.889049165699028,6.059131719366029,91.05436788014944,250187.99 +1651.1014941608544,1.6137328810512288,-3.2499816107955315,-9.119873421529622,14.347100503232276,277.43 +1176.8384798853767,11.570779868280342,8.026192012840742,12.866820390032018,15.471076716871096,0.14 +1737.3507778554813,20.29390954539817,-8.93826596352552,-11.071695398224222,44.296214094101515,17220.37 +1632.92077928309,9.794096741356984,8.952443773510858,-5.063180036342603,90.47363862733836,2196360.62 +376.9122262560448,6.032900580153803,8.348499722697053,7.069703653862915,92.78618333836864,75769.46 +1958.6114624287864,77.21190270130347,8.489528896582641,2.2330463748351503,95.1322958081506,1626820.65 +226.5454044223918,25.213998315561984,7.003057028647017,-15.20095925854729,13.561032458395312,241346.1 +1274.308468273313,85.45544796512817,12.698414202277682,-10.988194388107306,70.84846188951192,160446.2 +1626.5207167701722,49.25616798352237,19.797267863230793,15.433602524353148,65.08999062876325,4092.26 +797.4094517316262,43.078720577963395,-17.786541789356573,19.55118365478937,4.0168857405808405,2675.29 +1277.4256261348842,28.26601470776188,-0.1141343249703652,7.758881603271828,67.55766649546432,64134.06 +851.8205555254069,19.5955963253201,12.523237200783283,-19.60941309596549,70.0015307446922,15.42 +309.1069550135034,59.391484711896155,-19.99811160683114,9.7360263139324,66.00943288452935,6962931.14 +215.2307343607956,16.858523875317573,1.8061297801852172,5.713023394848267,22.354248425094156,181154.65 +370.751654200139,1.414414832028022,6.391928624182723,-3.5271857822450725,33.903752487891715,238311.3 +377.1372694160842,14.626049469069608,-12.330293057669168,-10.878167499456705,55.822262762087895,320077.6 +1299.60159930875,1.6057217984655667,-3.967179867290156,-13.372085837097774,14.703627761973154,0.0 +1146.557415732524,79.17756477550085,11.578047742216352,-16.65852551247506,16.71652561617616,3681.45 +1019.8339403116556,19.64888687140526,-17.332691158468258,5.57081502027752,70.17615168281687,147930.0 +1445.4586560843516,12.920894094622955,-14.605330674655352,-6.509017056786202,17.405161041401733,111982.08 +230.2870466224071,2.486808055274913,12.72277886573253,0.7205303642248007,2.6520136334068716,6204.2 +687.7702665483157,10.753110278924572,12.368220174149837,1.008334719364257,19.324930452326367,96899.26 +1599.3069163177302,4.842415016383739,3.616134549358403,4.29209935163223,8.477067631786221,132306.11 +1837.9587917308131,22.427059539233458,-3.352533911267068,3.781840436796289,28.93480692970215,494903.38 +989.0058732276468,16.174080299342894,-15.773930196906871,0.7630697340934045,76.27277354585453,304035.32 +346.67116424923944,9.968141172878244,12.457491753859436,-13.79528941925058,78.82310937251343,117816.63 +1637.7117306112784,3.2024473828434,-10.330185554385857,-18.91827344901573,8.063973831009918,0.0 +1793.3067798909206,11.258648508404674,16.527634303178704,3.0473920420576617,57.45828349501447,341090.94 +944.5884872486952,8.382890078983067,11.033519426722409,-3.0712000435454945,9.71678653783956,121955.41 +638.0394570564986,50.41174780266574,-16.76256648636711,-3.595253666149696,19.521534005578143,2456729.59 +279.14900280130155,61.47162342820611,5.419724198681264,-2.7973737188515724,78.63711630646142,2946942.62 +1263.9490794107408,32.998812244793776,16.825040130604375,-15.458319195207286,97.22882826721072,2148.25 +1837.7650830124985,4.357926620261284,15.16672807361374,-12.829281522776173,27.89031279296237,0.0 +1420.1984459365865,1.191733151960554,4.534115168632793,6.486177447579404,77.89956030433584,10015.55 +771.0474762105218,70.90419300779327,-13.121639447496095,0.5512589449501037,34.86295992849937,1331331.53 +1357.1989837219403,96.38834053296334,7.209672932874498,4.38649323249126,78.67157815031878,343244.7 +1697.723133406446,1.7949052367488894,6.6456823275908805,-14.826375090956995,57.45627646870181,0.0 +1056.494106829024,23.508885868930097,3.5493887285253223,12.565584862261336,55.08633677573194,522.4 +1675.5472819961094,7.084236822027462,-9.370285874249936,-5.094410978032826,81.06873714980482,2020187.76 +905.4374179994376,1.9817132342029689,16.011872912391883,4.5228795122895304,69.92085847736882,133579.06 +827.3102214723872,99.1294329591328,0.1030761046506434,-1.3738712127983188,97.1042765961977,244457.63 +1249.3795265813974,73.52883904863128,-8.11539101496226,-1.2670771736538944,36.90433245071215,291880.08 +1036.4355518500663,92.30341147433028,-9.791117042232225,11.143218821805014,95.549579255691,121506.72 +1958.8014568299495,1.9399588092427915,-8.75928677378273,-15.586045339738387,82.9364731908557,0.0 +1129.5009623507146,9.634940801850323,-1.556234210239431,-17.008391208076574,49.86018183495945,0.02 +893.3096520488388,61.8797181125586,-10.76594014322644,-15.9576678617921,50.58066130856596,25594.55 +910.8803776313651,22.40355261836606,0.6965826056580626,19.81200554007337,90.29350457978052,0.1 +1186.29191110361,7.399520991932508,-12.319060403892784,17.08592517026577,59.15704178286089,0.0 +838.8416684147517,10.799122851416053,-9.161922290832468,8.022139036549238,34.44209647043224,15981.11 +1501.2318835368849,1.1945469105091195,-15.213381849277749,-2.098167522544556,5.09614146407941,81819.93 +885.1932698629536,16.712228064045433,-5.704213606154385,-16.597151572391134,30.66343160709483,131.34 +891.4598957454375,52.41203633185665,-3.7612131544864225,12.835827671135904,22.51679191569821,3740.14 +1310.5518488782484,1.0129482374197831,-3.851296130552644,-12.422296019334595,13.773916981311764,0.0 +309.5243708528179,2.08895630221204,8.9954999731447,-9.086318053209991,67.5896938026941,84333.55 +1379.638852607263,10.863762034061828,-0.6655530307360591,13.63167768177798,40.17411789764348,0.0 +1108.949990885637,13.241239839537622,7.7202122529999295,-9.706623716122662,10.362094194005396,17888.19 +1015.4470057159548,4.860765730655443,-18.67439598118363,13.783059560320568,33.37127621907846,0.03 +1494.6553832743125,1.1372840804404087,-2.5364540678923087,11.437542527761488,14.901087368854247,0.0 +1564.8604076087497,30.70437001793496,-16.40808811842481,13.49160963083034,60.26179673176833,15.64 +1723.2695541424268,3.060907718384146,-1.5159198250652128,6.971648079070838,43.26430238652087,1882.74 +874.6456174714051,19.460527305430183,4.607980404487209,-5.914967135980169,93.48649313199176,577834.46 +788.667846056086,13.13086940926064,11.869575298108472,6.126714998743341,61.265512938242374,93716.39 +1485.8157826901352,7.272373321029523,2.00876451377928,13.164308643874358,76.75209809463901,0.0 +1247.2487464528026,15.155804919935967,-4.8199090645897025,9.976782272009856,34.170560498357574,673.04 +1337.24278343327,24.551469302541108,-9.42150259098458,14.481122419949337,75.69346522052813,1.74 +1199.9412327905036,13.947251616320893,18.29771293003489,19.34123908136552,73.74350981446376,0.0 +1590.847441766938,13.033194131901382,-12.068581296505425,7.6058106948084125,99.09839654058086,21831.38 +542.0735992858757,7.449986636258975,-18.303345656524325,17.125088216189205,66.45581823835839,754.47 +1200.281838934514,7.245511414065183,-14.964824305750994,-9.128887795562282,91.69916038915892,69180.24 +484.5832200985337,9.59250358234629,19.900203971501575,18.93930963389229,86.82464643991176,13634.3 +933.0534907237854,8.019657560740015,16.244801190542066,16.412982662572702,91.95429831593198,0.0 +1395.188882148935,7.551777202092732,-7.18968510120197,-18.350280887112543,57.74352905522141,0.0 +1087.5288949655069,2.634754424092744,-19.846032915051396,3.617911486023035,23.174525072356257,7940.1 +883.2647660099262,28.162800719663444,10.688241074703107,0.1188677958172856,58.91770037654744,330744.24 +1792.946002548091,1.8446116102368375,-7.9785497080166,12.624210104611675,92.24557014791344,0.0 +1591.086286095461,65.67814003603368,-19.11402666932768,-14.94639465202033,97.32883602299523,181502.89 +1147.323413000675,17.77020432967996,-1.7358163926380945,1.1055709365462718,94.67053353995178,1319497.97 +1910.0956802158785,1.252568132337264,-3.033761768315042,0.0505518489552025,44.667949985922675,2518216.02 +963.857520982989,20.79684234165586,-5.529656627192074,-4.178438829378601,80.62869248702705,734827.19 +1618.5312696585909,5.284799594347772,6.134695911690389,19.687310213390504,49.36754833783111,0.0 +502.2852316425523,72.36518700819303,9.040573974484689,1.5818558431281549,69.48088097480559,2295082.47 +714.4264587990746,74.49909086947062,2.3673508700727908,-3.4702238348363945,43.722168941405194,106641.14 +808.5540464011187,49.18772810324427,-19.44052906094758,14.25613534896986,30.954563786808016,698741.94 +390.4773548681419,13.667774469793862,-19.103360557518805,-14.43782398552775,44.75162227518794,1333636.59 +1103.2486671369222,68.92160502519496,15.269750786678982,-8.497507978981158,31.390994220150247,483206.58 +546.0682414276922,19.935006341243245,-12.542294019459147,-8.84432317856767,42.89466764986492,134813.86 +1341.5346010093854,56.26756365753292,-4.077425147908587,17.348027412437602,68.09083813778572,17.19 +542.1662472314329,2.0898080537653403,-15.858908435391845,15.213188639934376,20.8740663758751,0.0 +422.3112632106956,64.32216101464032,-10.827960997439622,4.267374011960912,67.9948312159485,3340763.55 +1944.3561096780645,21.04657295613542,-0.5858536501419342,-7.214822874167641,8.288367391109535,118604.45 +1384.8325504599914,4.041548978565723,-10.57813726388462,-1.2758491234750302,1.1576654516535534,37703.43 +1885.6116464752793,98.99814440242682,6.363306048735424,2.8458615560140244,24.071423957707204,300900.59 +1081.7980255878176,23.6465580581703,-5.307663905713222,1.6034735780711171,21.03362931333884,209464.82 +260.12443351407364,65.58916711488696,11.538670669600997,-9.7625862139078,83.48235097958936,4327695.4 +1233.868106776599,1.02605594717945,4.0780180962798696,-14.780495839187456,75.84809314891751,0.0 +1204.9919963042753,12.725557542760464,-9.841397722504931,16.3054542958983,66.97247369801525,0.0 +226.95609068586916,26.61124829456691,12.335318642333457,5.63389371785918,70.91903752068741,3830895.18 +1750.2356799232969,1.0653045409390274,17.283482811435743,-14.196304662922364,66.63567874779379,0.0 +1315.9472251095644,33.5056810684445,-15.198228039356112,19.59373922214839,82.81866342669936,0.04 +1540.444104877063,20.086135418667865,6.786539198355843,-3.548907354224733,53.855643894321425,1305362.06 +1089.0579910835263,3.5442088622066032,5.231819596585363,9.31880472375433,2.74664312371565,0.64 +1313.124388234873,23.872059744206105,6.7885093860405465,-12.93141115425135,86.46827641464776,11106.01 +663.4458078113436,1.8272672817101423,-18.752569980135533,17.31062785931404,47.57195885528737,0.0 +1952.763981983565,44.47074422913843,-18.874965544272897,-16.83170772204084,92.9141661520178,53.85 +921.2960135857973,54.007022497170986,-8.207539997682787,18.232865726011408,89.40739816770221,655.56 +492.1879184077323,9.353063019334028,-16.790676975782468,9.0849036689321,40.534680161702205,163166.36 +300.64775307432916,10.34866517658948,-5.3568808978014015,-10.910216946456796,93.3742211886006,75475.58 +1345.109479553668,6.369549569173838,14.896828033167564,-12.763770383499793,6.799823998358424,1.28 +1970.0837321176205,4.905327075576974,-5.822548751483416,13.484036568823626,66.57069092988594,0.0 +1812.430094323307,55.692480018610816,-4.286150090314025,-18.40304194595788,68.46763214257292,7.72 +1463.7882214755446,4.071424180089837,-9.299118631015483,-15.428795288927706,84.1729239148608,0.0 +1983.0762721871497,6.392931098101787,-3.1358715881267596,6.914243180965793,47.672977357730645,8661.59 +1501.0908716757915,3.979537421063817,11.90048525187724,-16.905320292914986,24.815991678663156,0.0 +810.6520221225127,20.57905944047318,13.23565337706543,1.649815802371939,5.373721894474886,20969.07 +1282.1926395083117,42.50467132076258,-3.1576413306885165,2.9621127343095033,47.26178399765127,387857.22 +343.57995647401077,2.131432844973905,-4.1255775215254875,-19.285140271077218,45.87420217092847,0.49 +599.0284824005735,3.232101805225514,-12.197381156920212,-4.913472768043192,36.28224357434725,235566.33 +951.572424671286,1.6151595032952333,19.024065957783552,-18.858774502691187,64.00580438737497,0.0 +563.2732884134815,2.091066835130989,-7.560187286133857,18.6754139224714,53.60668727201037,0.0 +1916.3018266907072,6.5127326247306305,-6.294294496360804,-11.387131404598325,12.439882804653692,10.41 +1992.075548140369,35.62481185756054,-2.8057422046792624,7.588401130877411,5.763916003194462,4979.1 +867.6846562189978,12.112558008093265,-16.78265959225603,6.950625002323481,89.17647188994667,41817.75 +1476.6121749389577,1.278063864010995,-6.858494926918479,10.889275320743868,74.47489910321983,0.0 +933.987315193833,17.789899693557988,17.223388174762363,-6.586896872730774,46.85637109668978,141829.02 +451.1165678951715,38.95904816358971,-17.022728934118145,-12.624079726852626,50.10859036626618,3414003.53 +806.4683258637954,6.122595996179954,-10.38058975284553,1.2200884876797424,12.330992285713014,133837.54 +620.0690576881938,3.0904747720835086,-11.289959964577635,7.773468259229825,27.087593199177174,5745.17 +790.5407967333555,33.719059788604696,-10.597218883754271,10.212053555026262,82.65273952498588,36259.22 +587.0390391158898,1.116381106476367,18.18463078202082,-18.043383911401996,13.507718572816245,0.0 +402.2212143048435,42.77421507827641,8.342219438756144,10.106389869245795,11.325375842631582,153190.33 +591.3711728523432,40.599357717746216,16.791669733564788,-15.502709826818482,56.25558427929767,1232578.8 +1830.3626572937171,59.69966049967976,14.304423414972923,0.9858328462998144,84.1911348759677,923728.46 +353.3990163977517,1.5099406641712112,4.989843716295903,2.21644223103477,38.53300551848507,211393.19 +784.561958759422,1.642543817192128,2.3923460284070375,-14.917992284523873,64.94158067485974,0.0 +1151.2098101047436,55.655187198189566,0.3639961232168698,18.55991703050005,90.31242918178324,43.19 +838.1227811210423,8.9233008255233,7.581325119511884,5.520656732392255,89.23429588033264,243225.19 +1131.6927710339971,6.090837526503711,8.072991975207241,-11.044342246255088,47.319532770979336,5132.35 +278.15610842183713,14.014807285831118,3.978300109048609,-17.964092890588148,30.262662316279354,14347.3 +1367.42534005588,1.3096828492435515,-2.042343434518874,11.000936982594569,57.76498844980203,0.0 +1214.2618428009084,19.38350630219716,7.014541665343317,13.65262567465262,92.49565244286924,8.52 +1425.7392785384448,77.65444268507412,-13.732633242853913,-16.374797392062234,68.40549006645703,5698.77 +1221.0640684890266,22.461553418466067,2.0613474380243035,-9.702772193683504,95.56205582856562,222282.52 +988.2264483661936,8.49317797058197,0.7719943255220141,5.695115199554572,58.337047161563035,158781.37 +830.2547761293484,83.51451766840077,1.3869943290743292,-3.240914569113449,3.101083947192965,8477.18 +607.5833421795971,23.824995528790563,0.4327490883284079,-6.29950845835185,45.34448895188685,124032.3 +1100.1219082519026,1.299932708340681,10.010534264212476,-3.0219486091369063,90.42419909998522,2316146.81 +246.89441427951255,21.882304828798084,10.299715666231318,0.2121819011092629,4.342687899256645,172927.89 +790.8334905787864,1.3164116755846595,-6.816689823718285,-12.6134964330822,62.18137286889454,0.49 +1420.170128416153,4.115852149749883,-5.9698871259280395,-4.477472033502159,38.41499758691893,937984.01 +395.6906714354467,17.035973694647712,-19.340558401744197,-17.206982411352886,40.95943648203398,832568.82 +313.20423617515144,2.69918115035297,-15.468156000945584,-19.757774373613707,57.1899698559341,13.49 +1373.9214895244577,1.19228030275972,-9.506996940602486,19.0077332665415,41.746008186586856,0.0 +915.9944980562304,17.215013894232314,10.628413542476022,-17.80768557280545,92.09392084601993,52.13 +1643.285065788886,3.730049247234168,11.91557386594817,-18.260884208506983,31.065600720281108,0.0 +1887.160347148383,11.639342519455822,-10.07939470172056,15.598479027573028,76.16885836719474,0.0 +1922.6728167186384,3.328826482332354,14.790210422273798,19.04147241096752,10.115869868762022,0.0 +966.0671370095226,23.5970489725924,-4.972081237428085,13.781393038217756,33.951499506272995,159.44 +675.7890036950581,61.85898394917182,11.922078053759847,-14.417981891034426,16.629424400216276,134076.11 +1295.5047297364604,1.489805610940601,-1.3258493026042029,5.581266794062993,22.762632634572793,64036.0 +1330.7472666708254,37.3798342168599,8.504022334165594,7.876980965603768,56.885058102165345,58454.34 +1320.220884936614,2.052060261377605,-5.747477223706272,10.866500218823044,34.86177146233857,0.0 +779.2015046939861,4.55847496865245,-17.175737644113763,-15.484445256589884,5.826529860846126,0.04 +314.75312555114544,5.18478308569881,-9.837938559538596,-4.3698907586616675,86.47686286750954,200587.86 +578.0087098860781,2.585949134264956,7.883563251149175,-8.956123048786626,67.864018629876,99064.02 +477.9549704400208,1.4140627490994582,16.71827981050006,6.180640504087163,95.56631781509851,21561.58 +423.0206224099584,34.432849196623955,5.131662554350673,-6.255939388106526,80.24432724944826,338368.13 +1867.3099779288316,38.65939725123401,10.758139885294376,0.352904132433065,56.3779249225066,1450726.4 +224.9257627531423,98.55225836323808,-19.435063634172604,5.05749833561588,46.577072245453486,2618230.14 +1283.343930625379,73.99604332333347,10.402521564215572,14.63242400472161,94.71434435396942,2727.35 +1905.4528323322463,7.40090529387278,13.42150005819668,16.836673296712597,42.97423876768516,0.0 +848.0956294894302,1.8483151746596744,-3.493949888176857,7.737913608740303,54.94498259321233,1558.52 +1148.7765605104323,1.0505095770513189,-0.2443462396048312,-13.74434747705839,34.03988378857102,0.0 +1452.4105942552874,11.56205622564057,-17.905076630464887,15.556685746487735,28.782705383318746,0.0 +770.9054503848299,52.6178164530686,-13.014573747354108,-11.819377057680494,84.70997053684609,564415.97 +1059.7735778730485,3.434056839199283,-17.7409135073068,-17.872468364499166,25.45420448299155,0.0 +1670.7851305989536,2.4996703335983654,9.254733382475068,-2.509153947228233,15.260758526945487,693326.84 +1541.6401975044744,7.549301034156901,11.994561764748868,7.385529827256545,73.075858533088,9540.94 +1655.2089406871132,61.24428966672657,-15.65332590466963,-14.02542611249638,84.27471829118073,8269.82 +1977.2122945297808,8.004747985846704,16.863840920683625,-8.025371205385273,92.84456342135712,73956.42 +866.5894548851222,27.888542118757556,13.581066454761109,-16.797602375316675,67.03465243945486,1954.36 +1544.7642732843915,8.414967061160882,3.0513989068976377,4.728256141871499,35.48951130749328,331094.13 +1285.012220783569,5.570802513677634,19.131524204049995,8.329512501567429,51.55718021722495,1170.9 +1399.8885809981534,7.617704274614255,15.298705666105036,0.7874698311672645,19.44070109466223,213560.29 +1531.773028699282,34.41922325886886,-11.09432866603921,-2.222716472125721,21.998212023325745,394950.8 +1549.5163705033667,32.270976846866276,18.16142747765168,13.908067829739714,89.72986444769651,409.13 +1794.3412687306752,7.303253192666976,-2.2816238401404254,-3.23256998674407,85.03484127991155,3466484.76 +828.7790154248997,3.4295319318038753,-13.805363522611117,-2.329214458346529,28.618753022448495,278093.57 +1376.266441001439,1.8978158882502472,-11.99640974187445,3.093123908744957,38.661458166795754,857754.94 +704.5227768743405,1.0063276109801564,7.367781118511467,8.153976956581491,95.92042114900904,276.25 +1270.2236692105553,1.6846712567296864,19.502336526099967,11.081221940865516,39.80648257498729,0.23 +1552.1152523094702,2.13457063393338,-2.1891322229650045,-18.36720124245862,33.417028244929064,0.0 +1623.8019550909526,23.981457923122353,2.925389274267705,14.04626306167996,20.86103007622528,0.02 +956.224105380421,43.23463071701105,-7.990416444920543,-1.9471262444281656,41.35784405488906,248913.53 +1115.6964017624475,29.777712494432738,13.81830071739937,16.2348986849276,36.998489309866606,6.8 +800.9297321063111,27.955388649083535,-15.39376174636676,1.4537282421882258,73.74597830464798,733587.32 +504.2654237713349,97.41845316412213,3.2898941249730607,-0.9666757885484722,35.35199726503526,613494.12 +668.931329346558,84.17739440652748,3.448819373140588,-12.18454215064118,46.37294391951017,92251.12 +1841.846608819684,3.449009497320814,-19.954410476397435,-1.2158350052953182,32.81457411069707,21065.29 +756.1451763367687,1.9507494767501712,17.622495473922534,-0.2828134920504643,32.61813455554853,62525.62 +1954.5668003820983,2.025799575869198,18.973695415079423,15.779131468557472,25.87141080291294,0.0 +634.6605533876871,61.83200671044701,-1.3010624024882844,15.483446957550605,50.31318889882122,11897.0 +1501.5279574658805,1.6021150344417732,9.0256633057257,-0.5434133336439206,43.47323978479353,1801323.97 +1233.0259284293045,4.789479709946978,13.948477667192453,14.702694578384104,6.699759446564611,0.0 +1454.3660891446375,11.49987333461233,-15.33180079302018,14.175629426406896,93.12459776935466,0.0 +1359.1243038965258,16.861686380520215,-16.615244071285552,17.935402960050485,35.53087157385476,0.0 +1472.1474504756604,15.54051030383717,7.572392796438185,-5.53586744195516,75.99713678330694,1349646.18 +1829.984687183826,37.39516417884332,2.3796924902572236,-11.51087462987196,90.7859580478108,57670.2 +1214.2450929124666,13.91190255715128,7.175747007976456,17.756979533685268,2.128210708713503,0.0 +322.1278092271914,50.3608531379214,2.879860308870646,3.394453895408387,13.208272113783783,250358.51 +687.4857820044192,1.4765917858266766,9.055670907634944,-1.333696008376939,19.864264797440896,324018.01 +1474.794164735775,52.23130864325931,-13.803629667005485,-3.5416684123096065,88.6952120176037,768689.47 +1089.334330356212,15.135832798669774,-11.375274436263007,-16.60991684087158,55.0211005762336,9.87 +1187.3935687154362,2.7916767632969384,-10.519073358777096,-11.836221449872424,31.783321826198147,5.84 +1273.8448196845247,90.2581395570819,-3.339196052124853,-8.336693874563842,5.367640823680633,21291.41 +888.7326913722259,75.7649860243177,10.382413552611268,2.0526766280349618,4.514137756981848,35153.52 +1593.0119451581393,49.14186599911607,13.255872453803104,0.6684676651303212,58.17383340143472,655089.51 +1502.3627910137873,66.55677517132129,-3.948135806117832,1.714656875302376,70.60921675720573,795091.95 +1485.7389419476049,5.811435768625671,4.0819911876800985,-16.94154002657029,39.17136075926586,0.0 +1487.5583132629004,2.8550238785195883,-8.192863981429142,-19.609072191397487,29.471398355356634,0.0 +1802.644402977646,2.321708670759594,-0.9689237826336504,-1.4739212675719937,80.84901704560066,4244626.38 +1271.7070029978938,55.913919521069346,17.63642115024203,-12.26069872429418,86.68873946448743,545944.22 +1940.729959094525,45.00520018508651,-9.228563738870257,15.667205373447576,38.964921648276615,0.01 +414.54683190314825,91.59605446492844,11.517746766194271,-2.763497204733127,75.07107977687076,5096327.91 +1337.5261578689558,49.71691850834759,-18.31223140948243,-5.920306713107624,87.07580828015345,2823242.74 +1490.467782684432,18.396356955247455,-6.190281661657471,1.7602213003732905,38.676342948626385,825452.63 +1058.996739717847,1.9255885805271036,6.351250905274819,5.144074068720319,16.912957260132337,79247.89 +718.7750956224857,2.136461527879171,11.04003834338114,-16.72130549064277,37.473430604491625,0.0 +1190.0674148799783,8.85929276368734,3.6874084852101903,9.65352767673541,7.158743611887884,40.62 +856.5458245232649,34.32346012260076,14.768885397034085,-14.496845061157243,4.521486164683657,3080.93 +1836.4233279220696,2.2210113624424044,12.8314330353377,-4.5306939389754675,82.66465324999177,2127695.75 +842.2263425598588,67.76961460097037,4.700201343245087,-5.725295190367969,85.42387237323625,244516.48 +516.2725868638323,23.31210341319941,-6.075080069693044,2.766474163088204,65.08497310682768,131558.56 +1237.5004522978152,4.213259230241972,-5.451579278042038,7.578708426821939,85.81477801257884,5189.13 +912.7866644846648,59.09070674503975,4.6038766448145285,12.032737440115271,93.61118487047388,25233.96 +372.6166606415138,15.74928116596562,6.262067785703338,1.0858212487391985,68.95729062347712,144810.13 +1216.716231796235,29.262873105380255,-4.216529502988391,-13.7843277278682,91.252113605478,10416.46 +1168.1235400982623,5.900440190391736,-4.099304263340331,7.838151525400909,92.03864879294508,8747.43 +511.7547559397512,6.124929280511957,-12.928811093957489,-0.848019399062574,28.17168885847092,117938.33 +1275.7487041277172,1.0598273944081904,-19.988499088539964,3.557332991113835,95.04421195240732,25699.11 +1221.2461529434802,11.907046386250013,-1.5403390806579642,-2.2517021203530385,98.40058562643426,2011553.38 +1592.5027214748636,33.234841480314145,13.233650053883252,-3.348240381858534,28.696039074288787,415933.94 +850.8258737167419,86.62615280566685,10.661650054611924,8.054355963150496,63.11777608392663,538949.4 +647.7671425945507,60.877060418914105,19.7576135236198,0.9643429947718252,22.799688003620417,7134568.45 +1912.195796547396,1.4927331676955948,6.7762311742386805,14.711900235104988,39.98177708672394,0.0 +1210.1915410090187,91.41979449950138,-10.643480558445932,9.737838914661952,62.78179247941417,66869.88 +248.85192599152455,1.990496315407651,7.093952073019576,-0.9475270769044108,4.706394202763098,17530.21 +1677.281031401138,1.2084497516287354,13.139151703878094,-11.43166720282287,64.99511904978586,0.0 +554.1645096540934,31.467313791988342,5.639880413920055,-19.297015147442153,49.11820331026973,4024.37 +1614.8653717625182,64.82953411770143,-0.7310311756848931,-11.78400657597435,13.253529930871636,16169.22 +1469.2923688807366,79.35344981750276,4.7404991128002605,-8.74920152504365,68.77460065556222,326329.58 +1943.8647036736832,44.6634447240512,-18.96789558171332,-15.27547198380943,94.304451129571,872.75 +1938.042742870147,2.5692858875208886,-9.395499713424345,6.763641460076082,1.222850849671861,58.82 +693.9391243803678,2.032384288892296,-13.690508198215763,-6.956891203337214,44.33795463582895,139223.82 +1579.6092462021531,1.3120094258397426,-3.463382581330383,-18.790176588063716,13.487998676300776,0.0 +770.3391544038631,14.586065510734576,15.721461542911786,-2.5249027118374157,21.493689515747786,80401.92 +1332.5562898932696,9.42849450566814,-12.482020974390108,11.372553824693291,49.66908426820446,0.46 +1275.9429529182676,1.6541207774829507,-17.16061559151123,-6.410085898949314,29.839109271821098,30397.81 +298.1783281180964,8.504606760830956,11.076877589164308,16.09326687374162,65.2672604501926,28133.02 +209.32714970364364,13.634750054191665,14.716120784669972,14.111736140766975,27.13980872940352,889501.65 +303.9752262706571,27.919606113617373,1.2557927612897668,15.575134329905334,77.8486359066499,181733.24 +430.295685557134,6.735892384412579,-4.937337127234667,6.711596154132482,19.16362851386378,20293.59 +663.7744844259927,4.332164050675167,-2.7786011160665502,12.263812624739776,90.81732997676698,15.45 +1832.5194018366124,21.446597257410808,6.359668550249644,-4.4409957261638455,40.61468785095901,1197539.17 +1133.5388156240354,23.35862562076111,13.250059301320656,7.728761227297443,6.490481113927917,3808.48 +1634.4051299134196,3.4742183783232568,-12.422382821973772,-11.043974760998022,10.87234986291888,2.98 +1708.9611537929743,1.0955852192571398,16.09033344108457,-11.811249754712962,53.76196512172513,0.0 +1522.897577462974,77.87196603669875,6.295603042357092,17.74460056923905,91.1923078052032,26.23 +904.4932239570296,32.40207425314457,9.531621883599655,1.952683140746565,52.018908668431024,249536.98 +1754.946908913769,2.5246935407051274,-16.52350927790929,-17.132897400838594,45.56760473919135,0.0 +1535.6895559776572,13.531043866395708,16.73378773212969,-12.107959144272886,77.50709028946738,581.07 +1537.6725981290945,15.484424233056664,1.1277834842407852,-1.546423141488784,23.452617537470225,680208.62 +1822.8337888980247,1.786394051826885,-5.515715531977516,13.835702184246523,67.98758740608069,0.0 +1277.5942504238303,2.4172088446577806,-4.04250614117073,15.83812703938214,22.608790131368977,0.0 +1151.433973931918,81.92435539817684,-8.278638757082026,-15.46169066494882,84.68797544049052,24230.95 +1802.2926036747356,10.375803062403431,-13.481102939755036,-17.51885592415425,88.25198994525081,0.0 +1018.0311106955544,2.414818191119363,-18.61364470112865,-15.13247256220415,20.263167756472637,0.0 +1660.8272528519171,39.368558048773686,-9.42367339754644,6.855807703513288,15.213620288405224,31455.83 +296.9234488006539,8.732661076379893,-0.1355316424521513,1.3131807488086356,72.61075322372153,115947.8 +202.32190002137983,18.91577617738206,6.670424749847745,9.515644717439248,65.631759536779,1257037.24 +1150.9264812878423,3.935528549785898,9.333860171568258,3.734393906098288,62.543873183590875,820611.89 +332.5014088694844,1.3055941531558957,3.8241632279556543,-16.16458805822184,51.42933336815545,7.26 +1957.7774242155144,2.1374130031249785,-15.357513733451524,-9.69472145931046,13.777041776382632,5.47 +209.9021132716378,88.32299884216164,-2.738057118397137,-6.737938967729784,72.22828989802841,2799233.61 +1492.6693456975636,17.66757207330293,6.6962240506760295,8.307857630463005,17.07039602442908,3236.72 +638.0924524151973,45.93782163334944,9.727027883631724,3.874080691623352,54.74111357194091,349786.15 +1941.593609489701,1.104178066056256,-7.019726866936944,17.87294268047287,35.31493660763754,0.0 +886.7749711302131,33.95666282528845,17.13765393876225,-14.17909273435345,33.83323111063447,98184.26 +249.1101672749573,9.330483153615658,11.815261332490966,17.545052811518516,83.39380261803177,191156.45 +248.48437773580892,21.40995496344187,14.069237233441129,-11.193983244796016,46.16530487527155,2418141.57 +1196.0720691044394,5.20487232385839,6.66179964680794,-6.261319654509263,49.852453617582995,560362.56 +1976.081562256306,17.447678641794575,-3.4495809525943777,-18.61683004356471,89.72298470374628,0.0 +1963.592363082295,1.1782556624784433,17.36674044876831,-8.138904690857585,56.28626158822343,303.11 +807.0913501206784,1.23360870426878,16.057808166612105,-12.011731311786937,80.32920132758156,1.17 +1068.8665685400144,39.597960657127366,13.13901571899704,-11.309953565306108,86.42398861904833,74058.39 +380.820450436069,1.7739057260748097,15.64508514579234,2.8881533892974875,69.82302220624499,121843.91 +1139.9183407851172,1.0665172131392122,16.66443204924498,11.231488077306686,15.258952560417091,0.0 +1279.4628782868915,66.82100131572373,9.854290629064293,9.79829248056685,12.806482985509854,6589.59 +651.9109981003779,3.3967495417686258,-11.98655236888566,13.165911123306376,43.988250113609645,0.09 +1301.8059846473127,14.613839274577082,1.54189088614054,9.253438654936144,7.255631338559065,334.55 +1819.446953053257,47.624885118947226,4.6397587516043615,19.060223578610017,30.770976854387097,0.0 +201.71960016226495,31.032313845263488,10.93493811606271,-19.26106469929329,21.638564149362804,635459.25 +612.0807937543001,1.2395260021851775,-0.1941108139362102,19.51584334662438,4.82618213018694,0.0 +577.8552139830887,13.240287080140977,0.5148456352599817,-3.606854175807701,40.51398935416648,189915.76 +422.99516546088864,12.122598851904732,19.822600563391475,-0.8878336944012055,25.658924426725232,4781265.87 +498.98218292678337,5.013723233154762,-1.9117903021316216,3.0940010293137377,11.092809708459887,47422.57 +1326.6425816576975,32.145927636699284,-14.799606404160215,-19.65906919296645,73.29947179817243,0.56 +384.84990227115674,84.72494897350143,8.387352172843308,-12.731600674146971,91.34534090541098,3158730.12 +1529.356896237299,1.9695785591160324,-5.498333598481309,-2.161176444839108,62.455215573897505,2615459.85 +1796.64066300509,1.9518570492310905,-10.058442121444076,10.780693029567896,93.00290487854028,0.0 +1867.857903521064,29.47623694342485,5.138478688003008,14.803523622700858,17.47963346526295,0.0 +1388.3164657754614,8.106489421944438,18.1747068861978,-14.090656790010954,77.04077078151242,0.26 +555.3135391405089,38.94375830002965,-7.487645795361595,-9.480537709001684,41.45215712472496,106854.71 +353.5338359718342,1.9149402131483069,-5.1091501167849085,4.294815450158267,49.46347834940425,139799.33 +617.6449168525993,1.2014759675682445,-1.3803984984246531,-5.560677932648739,66.76405068423692,552029.55 +1931.5229344130769,24.881018245309892,7.519778246403028,-8.08347504336461,78.57069622975737,705114.45 +1932.2213631512816,97.59377247132844,-4.162045896454392,-4.667164525146683,6.922001116965829,124977.05 +887.4539910530157,1.5473780094445215,-2.996409238112516,8.063831380315506,39.4299459896417,141.29 +786.424773975591,53.53968095742741,8.036215913147915,-12.05599663547552,76.73303485105878,82975.9 +1118.0190480663175,5.896298771390161,19.405403482985545,-17.523759731928898,53.96005980906965,0.0 +725.0385646413213,1.080386355156851,-7.339837218789778,-19.86172401857292,34.82733340898301,0.0 +1963.392412980014,10.472336435029698,3.4130990326565724,1.066796699340018,5.012574826852764,231217.0 +598.1985020442394,3.611672931354813,11.77616754161688,-9.999305175076586,1.7289532214335093,1114.59 +864.4568279289834,24.36723675858808,-11.514882405441467,2.465545587247817,43.08512180979302,182395.92 +972.8675762603208,3.7641007987453183,12.732765771567362,15.239660775184202,48.87561231775563,0.0 +425.1152415460919,9.191793241836152,-5.802774728200757,-8.253681666699407,23.690702930023388,39711.94 +889.0846881862337,2.5184335871036105,-15.559082803804118,-12.657181494641376,80.16287832953172,6.39 +1742.115296183552,45.31098633818469,-19.00389038450622,-19.936987713648165,72.62227681452799,2.15 +452.6498026221652,70.93538394427674,-18.67652620446071,19.25411693162743,19.630461566660497,846144.59 +1251.239511487137,6.407247619982447,11.905695259791278,0.6730685544563286,19.61144369398745,415859.39 +931.9468485080304,7.902419220740192,6.997545011973774,12.083778753911291,86.61998817974279,13.0 +506.96610701141856,92.33521109958156,11.739605100209133,14.32397845616379,91.99497240729642,2926115.42 +222.20509600857048,1.924114681776134,10.117912687609891,19.80857932738722,98.47096828322462,3.57 +692.0179462818204,41.42275967585242,-4.7609865204230095,14.38531837535907,68.95260113735114,8083.88 +311.2921292564035,13.631925742928471,17.320741836279346,-8.237648497227056,92.96328818719444,7417598.29 +878.1832483341234,57.73894467757228,15.117823068805857,2.5746644273819275,15.701808020703648,557217.91 +1658.3777402588223,3.844652478502861,-6.065934790499621,18.50942050721342,16.415177184552252,0.0 +1495.4334695797024,3.91125320871196,10.917640413381664,5.335121001795717,5.112133165819849,23946.25 +1905.2906810631805,4.483734580054229,12.78632736619718,10.762550596757482,54.3140318969942,0.0 +968.6277512067244,1.079598231954212,-0.4614242232295407,16.266474366570492,22.90613957784539,0.0 +1474.0425174653349,2.186682846654861,-15.183243337151108,4.546120184570657,57.31239442394775,297027.42 +1397.6150997836364,97.5378733376076,-6.637727208434012,7.69866223538684,1.7604883011136745,3147.68 +590.6833456848673,3.1470029322241326,19.55245117200837,3.530946507422738,53.36690118751665,96692.32 +746.4485094187853,1.0960596637790003,8.63741501116925,-6.454499565278096,89.00222500760844,530561.65 +1153.6931601159686,3.606455917458203,10.98843515815918,-10.04819264658995,72.86535520254411,11287.4 +1633.9831742106594,6.558134751435781,16.47697246192252,5.341372184087829,37.33365177794774,45213.39 +1031.2629220332788,12.461621568362869,-11.88948497250774,19.24494991679098,7.756166743743532,0.0 +609.9347651159491,1.3712986224372212,18.736161229038977,16.645499580143614,25.26768456464131,0.0 +1988.2382425046655,38.09411069183164,0.7256803103322929,-11.60562900975692,50.8324290934931,24288.4 +408.0418514366032,44.77159189475684,9.78714117205528,13.710284501488395,26.479149884455012,355466.43 +1920.60003348439,2.668831517287979,-7.27158688047655,-19.15569164683156,77.86297392204702,0.0 +1656.2833191748798,39.521769094327816,-6.823723025429724,3.5779534434973437,93.58182592508317,1140234.86 +1710.008334754133,5.282674050964027,-5.616010858531784,17.213444941334416,18.445472459362584,0.0 +1630.8516495646988,7.018112986584345,-6.077644809685712,18.373417119533,1.5521655774096563,0.0 +574.7076943483196,74.60647288017313,-17.499872131827928,4.122316519294014,9.32314344243931,1559324.27 +1338.648279311435,60.78673008687623,-7.6170273838321245,5.232570891836783,80.48274138094085,324803.08 +1562.1496624116771,5.626281097520623,5.89522884784186,-4.403736995861922,6.317064233817144,174909.2 +1542.2344257829725,9.46717949829855,16.078917763448672,8.945537918044257,74.88427362448597,100.47 +688.8176669793396,3.741515735613367,-18.333386473392316,-10.171656084194618,41.11563445335421,2614.1 +526.0148979746266,10.73664309658637,-19.33486578354948,-18.64515245542738,43.18033776679991,13721.92 +790.6213710461885,23.110843979642674,3.695964593566736,13.412154404368732,73.34636354797618,2096.58 +1063.720064679305,1.5322703381706664,7.986971776179619,-17.585510809613957,32.682980477581346,0.0 +1232.8053447146178,69.13249841391091,4.329541509934054,6.588310872484726,81.23856274467202,191506.97 +1706.5106521744888,27.39983429047443,18.921733736292538,-2.52276497957177,10.341769427134327,37800.56 +1584.2616098683088,1.5613683307665738,-10.84526925671524,-18.26972303922914,72.14712420025386,0.0 +1417.070946199729,54.69882332730877,-0.7502087051378181,-13.60736595550225,90.4644321662298,28899.02 +674.2807272969691,30.71607592953485,16.636079978419147,-15.971236492233867,17.26105377094831,74269.5 +1061.984898082898,4.229155303662337,4.699891040062449,-11.423784680763118,55.93100328198468,1245.44 +803.7845734303299,11.037384617745907,3.0848786018135943,5.411078095138611,64.45686834846299,181260.91 +622.8707231909615,52.51233360175363,17.313666197872756,2.8248482667856356,14.143299276499889,2073353.93 +218.441648690263,86.34779388531335,-6.443887571308791,-2.682559059074481,54.78268194936665,2301942.53 +811.031547027243,3.648839762495987,-13.712966705814337,13.722139348583188,25.97734701149196,0.0 +661.0092818863187,20.00397783453493,-14.830764408041327,10.123116629724947,75.60423137453806,115013.85 +1229.42418854027,52.54045724195438,12.8748917960103,7.308280617386016,57.23420584356065,74785.55 +312.14318651068197,94.69644984700548,14.277935581627176,3.9545560663883794,41.646181242221765,2883361.38 +686.935274078362,1.38495919278505,-10.644866296672353,7.84439248821327,74.51059855948924,2037.87 +280.5850819791476,10.16819653021977,-1.7171462046784836,-10.936245030224931,73.45048254998662,50004.81 +1354.552228124185,55.88966721293643,3.394069421056294,-9.607131072437994,21.837131260823853,71094.92 +1222.741205423525,1.014649974052347,-14.43863602858611,-8.075387691749762,3.5362424988662537,675.57 +807.4640415340518,7.489803765033674,13.952424773245117,9.64250907311878,25.58076190183928,668.64 +465.2022807839789,14.736605183033852,-3.2448697750576727,-2.709012619316118,88.37599617759605,254509.57 +1924.2556989837233,11.29745492163347,14.538950157101702,18.380152644718383,40.286946138110984,0.0 +1251.906405299504,29.21092923784485,10.403066208129877,-18.391925376606313,20.94464237041347,3.12 +1422.4040598297222,1.3522100951433662,-8.201828999023707,-4.673328091678708,37.517350916140565,882918.88 +1156.4277558850133,37.224892064925236,8.662968653120142,-13.81092686877571,38.93210030598166,8185.52 +1651.759845763169,3.684181965207992,9.628201375540248,12.6528274281993,45.953001917123615,0.0 +1813.4840891866183,44.51012080954479,-7.549476945799309,-0.8156496920260947,45.55296047221652,1200744.66 +888.8789784757337,6.902014281011907,-9.850576397132066,4.800677802832669,30.51111867826533,130230.19 +1442.045562015099,1.218532687081856,12.9371115021799,3.9179840939240584,30.64889877689427,502982.39 +613.7974721835145,84.68949268894374,7.1173216279373275,-16.837351850374315,80.17558881495165,380389.97 +1373.3390848916692,36.399765098762,9.58292929349395,11.34952730872062,66.63990281858706,2250.19 +918.4801339577948,4.961717852852041,-7.4777898628213,12.879071497542052,68.26022885488223,0.01 +212.20687892234892,3.4678055429068166,8.887760947712575,4.297571824055768,19.86115369461084,27402.52 +1919.9501631607172,15.063554285907932,8.572262785158383,-8.762106263599044,99.194335734518,387382.96 +1763.194781969694,94.31683217286924,-6.669002748368262,8.963673018117078,9.60574116584552,9255.0 +723.5057906228511,3.804815904710184,-9.181597927228935,8.026631537032767,68.57036200844955,11035.89 +1995.9631656191489,78.80290605646832,-2.7442058719186857,16.501556264182142,74.5982552528402,1.63 +770.8298142017615,4.579037911653401,9.563688069923998,-15.306658468377098,27.450424658004312,1.62 +1025.919535626335,25.59738087256413,-12.25650092673944,16.39214872046804,8.632127724955104,0.78 +1732.2662471139506,5.800543867827001,14.97049607342142,15.482881386055173,74.00298523965951,0.0 +748.2734323904735,1.4794641571772316,-9.788959116731537,-8.098903835469446,56.99087007059355,99645.86 +1010.9725118975,74.53817087869719,13.585348025480046,8.647910649772864,96.597123194063,742704.64 +1398.05690082186,2.127433479332219,-13.767617628158746,-9.4516737470123,73.04106955037157,2573.17 +434.8415985903708,77.51449749990844,9.577627821877236,-10.596167167578852,93.03858288510509,3440274.23 +960.230663645092,1.609213442803039,2.4557969015401637,5.661397439888334,63.7953026243122,135881.79 +756.9378872509277,3.4189668498177572,6.458359496076063,-17.998666630586477,50.303062694938625,0.0 +1418.1937505566725,69.47795025844952,18.965463847998937,-16.140909683634113,94.52872253878589,214866.08 +444.7449021086693,20.75304012756857,-17.897684853196246,6.405744919425529,82.06578301324211,7086596.72 +618.9166623816873,2.3931331994043545,-14.034921078466116,18.07476764302237,4.470268349392489,0.0 +1480.477166754469,15.282226175448663,-16.836607907910373,-18.638448902669463,58.72175329896141,0.0 +481.20386550340663,2.2949985531112804,0.7854783739075311,-19.083262388719632,15.792257037031549,0.0 +959.6346720318016,56.089831499666786,12.112289750013744,-17.00913248768814,94.85052494000296,18697.89 +1483.1852997667138,1.2579321436073492,-17.807008361288016,-19.933421828064425,67.91189822004397,0.0 +1577.8430919740097,11.469788126569188,11.176267301095514,17.132498203879145,45.68351099685582,0.0 +370.7861216090032,1.3395102822581506,-2.677767063220644,-1.0383216460595437,96.02725464815384,762660.48 +1733.5920969550607,24.54966115242472,17.657146119125457,7.684541917595888,34.298815097932945,3742.07 +1503.1501420339391,74.40368927535289,-4.692155203899655,-3.344524820008443,44.97046888569461,574403.62 +810.7302596479648,45.9338554463267,19.383917929737056,19.88980046104161,40.50696194007007,50597.18 +1574.845134194432,5.539309742030004,2.2608618285616977,-0.8027445514851506,14.054607812208296,556327.04 +1510.9379576131862,2.9772123438722007,19.599727089556307,17.57063545569268,15.838830589752837,0.0 +1281.604207715094,1.7460432004288415,5.275438073578638,5.9844180440059835,59.5096677655186,70879.97 +1205.2661121305198,55.87891627766229,-6.14656863635568,17.909527497247574,7.883380781764016,4.22 +1522.466280019254,1.4528415710658384,12.136347402502302,-0.194329674659901,93.1772352167125,3279691.63 +1998.6678230698185,18.099158493749005,-0.5215948936357284,15.155203777360583,33.43657300956244,0.0 +1241.3940487685936,5.426689072894512,-7.647680093808353,-6.64453091776585,32.775431194432706,319004.29 +1655.6921691720463,98.07462059952896,-0.8665838405867721,6.447935058157523,14.828394522755357,51355.42 +1539.6926911680491,10.41469670542491,14.876503755187414,4.6873917542114985,35.74432769905665,146208.14 +1740.4551236608863,12.519353411810338,9.292295424454334,-0.5265538107149093,69.42375808829364,2653805.92 +1918.144750491449,68.51372339965101,-13.049247332216574,0.0593040834977509,95.77525314660367,1501039.2 +547.5497734294673,86.95084492196777,13.543913487204282,-13.195154775784644,20.066152032057495,1033829.45 +497.8273455112094,14.698496800523865,-2.7432570369829623,16.24108454003781,18.58208043806219,238.29 +1255.4332911468216,39.116874751954185,-16.68526021144329,-1.8316075925077513,14.762439178553857,116297.94 +1008.731113195708,18.600880309199777,-14.113115778518,-13.941233985973668,57.82523253739215,2058.84 +1227.3008472545046,7.158152194420249,-17.35345092074837,8.173140216176801,12.576373130598574,126.6 +1636.4769220739154,1.3020591521597271,7.063512141300841,9.086443927817708,9.724298345966444,0.0 +1877.0860640886435,27.25760834910025,-9.697410615767868,-18.19531144491412,74.64944003713373,0.0 +951.3484853574048,25.149279339260296,-16.146039891140617,-6.687191247240687,79.5248630742265,304915.36 +1492.278761978524,1.7116092047330105,-5.373213771642686,3.37042709359912,32.14180750022049,882798.3 +554.2385381145368,2.884946407909244,14.678645230330712,12.863302744813437,58.56484419865273,0.83 +1162.1935088381424,29.124358867686016,5.149122253791152,-7.575793138270832,74.49513143549426,434274.82 +239.24860000493587,1.992617568981244,-0.5509024274190066,-8.013801969161056,5.846568075906048,9904.05 +1106.7510208395745,24.091845470620814,9.327786427002572,9.46271861959791,63.83538196855828,13889.68 +1181.6056264258998,27.28691150447701,-16.96419842484515,-11.231823767664274,29.33355186430454,14812.92 +1523.8016044009962,5.0896475816910405,15.310868353851127,15.839947949190591,41.5025971337416,0.0 +1369.072622372585,3.2837017133033815,-12.8905523473036,11.616622065995728,36.26651826561161,0.0 +845.1141217504428,5.572868844474334,-19.14473494056824,15.722212408744308,72.11573579350565,0.16 +210.3156212836184,5.228694198931019,-5.505583868042634,-5.850171245549007,47.408830199402715,69512.05 +407.8745725213081,16.36965820045634,-17.662106504238867,-13.370562629739986,76.24671689100465,2166879.69 +1951.5091763314144,30.73948586712644,-13.316847726919695,3.4023099354340935,32.185252558905155,425095.26 +1860.1996849675504,52.90604167549935,9.559944893582143,-12.401241343726376,54.58626906000752,23004.07 +785.1676935460616,1.1481128243240477,-3.8106767449873136,-9.35547361376829,90.79210992830087,18231.61 +665.9352918629978,28.385929168603944,-19.72404648825635,-3.9772958953060567,44.369650244164525,9393972.82 +985.5493286420674,4.249834683924012,5.750289625493994,-1.4908608983845184,58.05408833594338,1170205.83 +1441.892053301731,47.56461890040375,8.284444208859254,-7.103467498106082,67.3799794768271,553882.45 +842.2898107843525,1.417209058153145,16.07853930878106,-8.61120247566352,91.3188480511516,18756.31 +321.12892591608,12.65753160155984,-13.815895587899725,-10.130921758417736,63.97739278024101,1086347.39 +925.0311663999134,12.51258899838698,14.28662950764702,7.605436091143418,61.626964764828465,22849.8 +669.0601900665774,4.498035972699205,8.348317966078426,-7.764863042900472,83.51910056760907,298607.8 +784.8740201801812,87.21942007480905,2.544911615294958,7.775912539366763,99.19111421339731,127825.92 +493.323042417148,1.6362373513650916,-9.529200663500587,9.715389729236431,89.99453034510236,467.27 +1385.912125002165,1.8741073636172063,-1.686290681315996,8.569194921923096,13.36300382133224,0.01 +1147.9356798414049,19.432075822129914,-12.069178472286897,16.577493317676478,67.96841058099953,0.02 +687.5536111316377,10.680668828960703,8.707776105523855,18.179426534218123,33.52904498986558,0.07 +1196.9524663512343,3.3801366429354647,8.143591971962065,-14.125575774648546,42.03229100165026,0.0 +1086.8741249010284,4.06016415670754,-12.338803575787058,-7.176515146021352,64.88911409447196,316477.48 +1632.7547418188503,2.060851114333075,-9.895332114325983,11.506667865513135,15.366175845499598,0.0 +1920.771684812363,54.39115457879235,16.044473188445178,11.272125919656482,69.57520584642732,894.62 +435.2069161615807,13.773291729074744,-1.132605599715073,-17.16227830160709,30.056916110586705,2448.44 +1791.0442620343692,3.0879421266054323,2.0446877079908177,18.48148364955324,82.10409352014419,0.0 +1468.6344889128238,6.121269709951854,18.345012073124924,14.248182918744073,37.79788190451036,0.0 +1446.5963815362286,65.06839712823992,-11.719047554441794,15.96816688629839,5.946259570695598,8.0 +873.7416148564502,59.385760615405495,5.085208733929014,-11.824608198750076,60.27936406810313,63094.51 +819.0347518368578,1.3747172499422486,10.960598201584016,0.0367986122125651,75.2282288098615,1392502.82 +210.15107268053055,20.33294456272389,-7.222413121287881,-2.378311573341474,62.05366234590699,1719006.1 +1967.968774347154,2.0227506152390196,-7.6473279192967025,-5.588052153750089,78.09951187308936,1540967.74 +1291.7104982714875,2.6409898438656376,15.87277235426285,-10.90579413034439,80.60858271767889,46.36 +924.1915230630658,53.50756460099046,-16.02376211903902,-14.41573744343858,5.183608213783897,28889.87 +1178.7838794059214,61.71356499664474,-13.705774107995342,14.82033707081538,1.1828896042327193,119.56 +272.94866137327244,1.46347002570085,-3.561792344775605,1.2174259052342773,23.20669181099887,105394.74 +512.5717195250039,55.95599967212829,11.935638673055584,4.033064840282634,23.246342851838463,997693.69 +1322.0478649341246,28.640929329970664,-1.8003359962294407,-9.535953526894083,56.731918202696086,165746.7 +1125.671113430516,35.5976006415645,-9.177362331556097,17.40212325033944,23.68082408702972,1.88 +1616.7346812697397,38.338106129963705,-3.1881985564707005,17.45506595739343,37.119898315112,0.0 +1385.7368428016068,10.33871452083132,-2.181582320678155,6.858003624185631,45.912389287579586,39112.58 +1282.5842167628969,78.30965055107171,9.081008386303226,-7.177880674126467,60.481856580364926,293927.12 +1667.478267749564,2.516049655988296,14.750003242005496,-10.686233170211391,99.6776754233827,5.87 +322.87358999342115,10.231285768172356,-7.149957419644317,3.810852911275173,69.16218863448229,110818.03 +1443.5962335763134,4.336158611328173,8.341584357232218,13.315163710417144,27.313351100209815,0.0 +1488.0632839202278,44.14306512404336,8.055535806595726,18.679352008759174,35.72903387580861,0.01 +695.2943894240198,1.4635293093771675,10.677902218280511,-17.272383808826714,5.322003143201818,0.0 +552.1693456773099,7.3681248100778145,3.010425485018864,-6.632139767714187,42.53288539777604,164727.68 +584.9344558207985,35.233461507530606,-19.412060067652902,-4.35402473950397,59.32469877454129,13878456.15 +556.6535541775896,4.2138766933713185,6.234693429661986,-5.238985028945784,94.99381747075442,612491.87 +1142.8079436264702,3.0265828618917583,4.491903105799135,6.711047838292541,27.52645170616099,10391.25 +444.1273604584912,3.3504127259280523,4.460778248741382,1.8882594216240856,25.10669455766831,137338.77 +1386.7145505548308,26.74115829414708,-8.74805683043412,15.654966682868189,2.706156340359145,0.0 +389.1408661077852,3.7459791146434416,-16.084582711839765,-11.09795185426706,57.89160908830439,19283.69 +248.40135255846116,6.388032116398026,-12.425896412371662,-4.026728447345662,99.59115284698514,1095161.42 +774.7224364025681,12.340597137703591,-11.35179629811368,1.6463887004538202,37.73814658705095,228837.49 +545.3475027194739,76.12374712245466,-13.055619696571146,12.671870112746344,50.28688932718064,1701171.99 +1979.591699738148,38.78779751403396,-10.218523392230924,12.929586063470202,6.7654466323651565,0.36 +745.3933411109913,2.347271514846997,-17.2523328258765,14.374889160337236,57.53758536769075,0.0 +599.7153548459247,58.36714695393839,-9.226967138193118,0.7653891108959376,21.797038275794424,319863.56 +554.1856822985862,48.92545422748613,19.91540907557325,-10.336023283885275,2.5303637146884475,445329.31 +872.9352286462826,30.93492298241518,0.4552489378038116,9.050220676282642,68.70063181623233,42038.99 +1290.52801159684,10.8096578940765,-6.223085580109937,18.186940999132815,15.626296595807732,0.0 +1607.5014950833083,1.379208453914745,8.819488912271982,-8.588013416661253,11.013982741865917,862.37 +856.2372459375231,26.485640675215205,-1.2215817659190575,-12.064740562813988,23.589101389787963,16554.36 +1326.747764077021,10.881389115899031,-18.82008148928469,-19.10096641595924,14.616209926394545,0.0 +1067.707816902897,4.164375201592648,1.8955884460087624,6.658714584190166,62.66357553012133,40814.87 +1723.691623256117,1.046829614096368,-7.837337045784429,1.8006033420665402,27.439534787673235,1247857.13 +1224.2751988851833,2.897997200173093,2.84735597811403,-14.611425468231886,67.42814338092727,0.0 +721.8050093823803,16.26973035144652,-13.071279464103224,-12.019371269318132,55.051178631078535,21094.93 +1466.4570629208606,1.677309368329441,-0.6980057142624219,6.488903289351806,36.00968470038219,6938.56 +1676.1160784413923,20.45678652864694,-12.25439191751267,-2.559300408443601,20.15418682954267,481763.68 +1037.7931821751372,43.585715290905526,-8.047383598644405,-10.670763543490477,67.60092330421783,104572.66 +1976.955029988174,4.32869195986521,7.486589760151414,4.232928814549046,52.91855946309644,1261116.79 +1782.3743825443642,1.4587171162967658,-10.893889626704675,-17.893369113309056,72.36413760571521,0.0 +554.5184053978846,1.902819445028391,-3.314504983858897,-19.35188744080819,51.106423409735896,0.0 +1616.1605698812273,5.197779657236108,-17.07445670329133,-9.564890595789723,80.40459977414999,3759.77 +1281.712239829579,42.35147160195078,7.486489866616477,-8.419249974206458,55.42434047481494,258037.31 +1162.6603360541023,18.559122546070096,1.5577274919619244,-15.8252630536433,81.52087863465418,131.88 +1125.089455843223,54.42210002368275,12.551617292928125,-15.405346753120174,55.422219045967985,8194.97 +1736.1400570083722,97.46624288442806,1.4030180194155584,-13.287878819622115,96.21255679394858,65967.56 +1299.5710200262074,2.541747504274413,19.768550345359884,8.984351232560236,85.46597796204686,990.24 +1167.8707730967203,24.52691197710378,-10.354724873257355,12.246631102854074,26.157629976969424,177.03 +287.9478321644883,8.571037596590873,9.68425929037618,-12.735801772721246,73.08615541910638,89433.28 +1006.9451655654032,9.704119185936896,-2.706933817620256,6.270803135601439,14.066508954546004,25172.98 +1834.4748116819137,4.478811731723482,-4.9614192954417335,-10.653899900548115,91.19824106469692,239.77 +1481.126112820314,4.841996040873315,9.261173006875364,15.202343899934112,35.209033038234544,0.0 +291.7171605010762,22.519767207725984,18.222281512785862,-9.242888635665976,48.26533418497412,5507913.0 +1791.1861078718762,17.442383638231135,10.223074366445486,-14.809143485065226,3.0363875442251977,0.06 +1688.0009984786973,4.335180068159377,-6.79509005721421,-2.434160822727871,86.89488237523916,3804926.96 +1184.0315808251505,1.7264811365795487,0.3956660247922983,-13.83148538594456,94.8533822154472,0.0 +240.32983732810663,14.33780186724866,-11.314400798943591,-12.06532599875674,47.579646995669165,970728.93 +1212.3733124608411,30.115681117608535,4.809552424683261,-6.437486830764687,19.602589590362054,166135.3 +298.260289867567,13.099164028324587,-3.896515978699715,6.4288207930126,69.68556189645368,80795.12 +776.6821273474648,1.0169540890746134,-10.874676525398067,-15.325835648000222,30.399092180393023,0.0 +1332.03731402493,3.6697039127472286,-19.156291831964715,-8.6356394544584,96.0405765840482,3383.92 +1843.243550987914,36.07104126207525,17.0129723578636,14.334585124131952,31.80442779477396,1.5 +844.0321470670617,30.555993611360964,-16.847166698619972,-9.049225310121788,57.99659992120616,741320.06 +1748.0428091902158,1.0491087399598718,-6.827623498231921,-13.2621267180556,5.895042484691476,0.0 +1853.0498187209296,8.72152571288314,-12.38185314847203,1.3446575793366566,98.99103822163694,3358610.34 +237.87898482316575,7.492665513187004,-0.2349089553366301,-18.667364808752076,58.039803688943515,5720.46 +630.9701079545567,20.16335296274334,-12.202206183810912,12.158046662762985,97.55613852483044,20973.73 +1477.7521386094977,1.7781159600681369,9.44844145614395,-11.101534742155737,30.77117193831439,0.1 +1562.3174775431871,17.491637395256145,-11.007221083784282,-14.685679822448757,53.18888082466269,14.67 +906.3503303906972,78.31339295274154,-12.581733246878692,12.328110527447214,2.820318245916024,12556.0 +1382.158302991139,5.539863566470713,-11.324591288273052,13.710196508035084,77.31133727357233,0.0 +1301.8855112516633,4.728385047708734,-8.09746749718068,9.389260456982043,17.48352127381459,1.81 +1531.594930881908,1.139061121488645,5.673255440535043,-10.616125212051454,43.10756232990052,0.02 +1493.5851699412192,1.302537147411868,-11.614864728962676,1.0795561721300029,67.3335650500924,2333224.21 +354.56743638265044,72.9700920087472,7.8740115369569885,18.762640299209437,9.130046186835402,169586.86 +484.85032569210966,89.33130801003658,-2.7931646235106644,-0.889356043345555,78.57891407671758,1226802.63 +438.9088650667688,1.026321438583384,-12.11965687705745,17.985589066441907,80.77374648255199,0.0 +1878.464125717074,63.29353800263519,-10.398219401958356,7.054735339867495,53.598333552494225,117602.46 +1844.376767035381,2.228025008949871,1.0933526481021394,13.799834423129235,60.891165854645344,0.0 +1635.342085274546,13.265311030905131,-4.854844645590979,-12.303999617061825,10.327322921443423,144.75 +410.09340921672674,22.7133841969093,0.5489336264132039,17.069393662770906,45.43237713011224,3420.18 +1233.688645855255,5.225374494614667,12.503183566025148,14.133778975041036,84.27336251691705,0.0 +537.0151269617326,11.42815661720442,-18.166744915912577,11.401986244351283,9.842001670072898,53584.44 +863.0910876058445,17.992204402615066,-4.255574769432018,17.64892341426855,98.8821606298165,1.24 +680.7642979473433,2.4426013836136096,-3.382288441665189,11.555154241604022,49.10580751663063,0.3 +1692.0757666774389,97.3897482446939,-9.963313618238764,3.069884473307569,2.2664532612028783,18983.42 +460.0125191346918,2.5571939670413686,-2.324831884402805,5.947608180876776,34.650555323258196,51374.04 +1363.1225034981364,1.0487619668767434,2.665323589594557,12.83577077274051,50.56084855792525,0.0 +1971.0103947971004,77.36939203568681,3.3983283138914455,9.966316732718656,95.9398069145242,25114.81 +1436.69824985654,7.215316758262108,6.793332841393114,3.671661649052904,70.81798930849362,1178982.34 +342.62028021252746,6.269594284576651,-16.92924521972866,3.9231736797609607,58.52255650236896,1338009.11 +1834.1291035325448,3.5591200485363306,-1.5996979637728614,15.211284815154338,96.68511956992252,0.0 +1357.5434198412731,1.1263253364415382,10.30450258884592,-19.60353543003871,30.202697189133843,0.0 +1021.3597632893664,3.381710194763683,-1.7981871289495732,8.718143298558818,38.59053684222895,127.11 +1387.446461374013,6.117876209610116,6.2594414093655715,2.6264393661129404,77.05317131752884,1805444.59 +1782.2797948507466,10.981419890314903,3.6179546037972177,13.53175971689459,59.85388559046271,0.0 +1058.8290102474489,8.227889305386226,-1.4112432285763887,-11.78252147652955,22.680425299471285,2145.16 +1156.3786690620127,57.28915484708815,-16.842858190261584,1.013742629583727,75.35547620257273,2689800.67 +1014.4053185923163,66.47521090106555,5.328999692282528,-14.894227494925907,27.45386309777232,9776.73 +330.6645673825974,4.3083387556272825,1.3805201809644263,6.374986927143507,56.32896966792506,59778.19 +1616.7262284692451,83.00594299172195,-19.772617007319884,10.550714352719016,85.76763063129403,2588581.44 +427.5411385553101,53.68690206129364,-11.725732218864447,4.941298871434467,28.23530892470619,1380680.8 +910.2260185189584,71.65881681098132,-17.54401696022061,2.190851189867873,76.35533716609244,11014626.12 +896.2811220939125,25.861979598543943,2.809370405160218,-6.264841615232117,86.27210275528718,457994.18 +704.0734257561282,2.4919750319758514,-19.394081955239105,5.591371347084477,32.39769928092876,6611.08 +924.5128266099532,2.457285315259178,13.696838043246755,15.98021744938074,20.464293233501067,0.0 +1312.4163986883714,65.66033983682975,17.898159960127312,8.856731276015438,86.71003221754388,1679140.21 +760.4971619738811,10.32977637753894,19.023159814162845,-19.08187836086604,47.17377383390044,20.25 +510.5214878568976,60.38577080580695,-10.936621577448427,0.3488570224796028,31.8241350997276,1313783.33 +1764.86151891308,27.611866081527307,-0.1943657832112677,9.456677778846249,2.027765351049484,92.14 +1947.498769742844,2.660875830216482,15.646750994570894,0.1665211160508706,20.206641532567787,358211.91 +1025.450882977377,5.881927134166243,7.49340094132823,3.6540018208892855,51.75807814234926,523813.63 +788.6354822202545,86.22842032441011,-8.050157785321929,16.463376357683806,83.0683906994109,76782.98 +285.4677400008128,1.0943733859085578,13.358075357815116,14.958002577362324,50.72770162721043,0.15 +266.33277309809563,26.863817362163157,2.9574475952350943,-16.747423679154,28.37011073357509,163694.77 +907.1875921617236,90.6899983822462,9.19938122918444,0.4221282901840117,92.98434784469654,718842.78 +1874.4356329417385,1.615451380719214,18.776377066129925,4.8926526324519815,37.55472437528315,14167.68 +1515.275378122816,3.4993365255706568,19.900373924150877,14.08125492247638,17.124948321859044,0.0 +828.684953967395,12.417273341789873,0.1928705144518216,-9.379975439882454,94.58919250445948,190937.03 +1942.4835653277096,48.70010028085198,-13.735499234866497,-14.405842409305198,40.2467084730222,534.16 +971.7642258603152,10.304424455889016,4.782368100022287,3.886184147170071,48.75858397386535,339596.45 +698.2269391543623,1.315806701586976,5.754139940191019,-1.2955148646864556,83.15251758568054,1430796.81 +967.435840503843,1.7962577158418571,2.8857956906047555,-9.691791943265072,29.486360272225507,3739.03 +580.777808570899,5.6478966062676434,-3.1180459784434245,17.71712565861092,53.34330729700091,0.01 +1794.1497863614322,4.416531654792189,3.2624096010653103,-7.297760782937117,86.76230637632916,533280.65 +850.1119587518425,2.7501555749989057,1.3616121310140494,-17.78856280909921,26.355058703791528,0.0 +1384.3441360897784,47.89139332810409,17.78770516894348,-17.648030803791045,89.53492195213212,2664.78 +900.2849578888944,1.1317835243064842,13.50401730774513,-11.956710333918824,19.956547317093182,0.06 +1823.1165523351328,45.57099336883321,-4.252435160991848,-15.330567005088426,85.5851038509467,531.76 +1356.2853530881343,69.7204766101967,2.8346616522267176,-4.2124517166204445,39.95351701296349,394866.11 +1078.853402506339,18.206314858048938,2.6421159470105904,-16.781411347362965,55.26713035320748,36.2 +437.8573445264093,17.811512383807287,0.4287273328468366,2.446608079773842,55.58898969000971,100286.26 +1823.4499931339676,1.9862569323346169,-17.677378097353117,-3.6643510198205753,21.286172946928193,88120.29 +1184.2703628891877,13.697316040334911,8.503779846802493,3.917006351326555,18.126479500780498,154914.17 +713.0953513305516,5.627931306500853,9.250824371198952,19.569461876961014,71.4303551906109,0.0 +1780.2684052700674,2.8714385262601847,-0.6326073446133318,19.676063760114378,82.71641235551496,0.0 +297.99276930993403,14.677737341135591,16.06291865518168,-3.318838334781282,14.55748083841843,1245258.19 +765.3384511932289,1.005497358748375,19.35688670425279,-5.317842652397586,75.40256970976183,14525.14 +1166.2911221638656,3.5712938269090664,12.51651196829748,7.262115281996175,33.3643319318826,3206.91 +811.6658048779275,20.51559176605336,17.114522521302597,-5.292815429873912,59.8484750980223,634666.5 +1058.121659681944,8.129825445591116,-0.4998928537675562,11.131263039316623,53.92872781182315,17.67 +675.7692541957709,1.9556047389719644,16.569651501101475,4.06583967853436,74.59471442598864,108044.59 +434.1495636792149,1.0060885894991063,17.40107212091572,-12.020511083337755,54.65056935967372,91.98 +266.3374495103331,3.4743904941782966,4.942684108103257,-3.4066472048335017,10.248251412962738,28815.98 +483.76381684185543,12.53483472101776,-13.97115498539958,14.546321948038852,28.640919475002782,7328.96 +1915.303725244661,11.724413590912874,-13.90769301077665,2.134131329191793,40.39434212211163,906433.15 +1235.7256400061292,1.828705616513124,-1.107766357526141,8.396749002854577,57.63012209627343,1.59 +1080.1282255003127,16.880849036040395,9.423220304243376,8.394028125136863,17.780544150181512,6455.28 +891.7829107502754,99.50588266307012,0.0557683431929456,-0.7137891168771837,34.4057194998079,97204.47 +1475.1562627700937,14.782020918348648,11.99399289576724,-8.180344900962346,7.258235137701776,35092.09 +454.267056630968,11.357332786053004,10.79153724868544,3.853553592313856,32.93370782657799,63486.06 +697.0337617747942,17.590016514014614,-11.8556751116072,-15.477677486728364,51.70778561691156,2841.19 +1380.623815394755,57.456845748581905,-14.689421056126752,3.894824791525271,93.70863117626612,399006.7 +1062.3158562534104,77.98277571647641,8.233381229066197,-15.89045457712594,18.596341064187513,4906.62 +1586.1665701263596,1.208000270420245,-7.184781973122338,16.071921209406725,3.7343709137259937,0.0 +1814.797719121976,2.5703224282404293,17.255875766089407,9.754859770320357,38.342215413168525,0.0 +1682.070664467181,1.7042296938259904,14.740309855956792,-12.751600888151234,61.15128303107979,0.0 +531.5738856693176,35.051577757711705,-1.9504779287542997,11.386414633234793,61.155550852279184,24519.74 +364.64642394856133,1.233461839364888,3.2202329782841765,9.034112504822405,35.20987263830708,1578.54 +504.9930809810873,63.8660260773673,13.884157752782835,9.137790196637066,4.723176983674446,259287.22 +1610.355244880415,1.0992860829625424,14.854767848517302,-6.588728660415746,91.97221361617068,184396.49 +1844.895961086879,16.035910581511803,2.2789732965952902,0.9096357246211452,50.67647847109168,1904040.74 +1865.8079618669435,3.5575612660284763,18.876526129786573,3.4309922036733154,77.87616336394757,70289.67 +736.7884208668021,8.732267875536042,0.8387463295298003,-4.920868555259972,40.29331066605492,318212.6 +1712.614480424405,7.651944792590695,-18.355693553346953,2.415955207221643,83.31163752473306,162426.48 +1165.223963039774,31.46201555559948,2.5078066612879724,-10.239343757340066,78.6841045998347,151661.39 +1681.025327026773,9.846552529420697,11.080276000987888,14.995387518106655,10.43385803872848,0.0 +1187.0567162840018,6.957314892595325,19.39740612002733,18.41346116842983,6.075324285442394,0.0 +462.6077956024127,28.877141781181468,-15.785256890237063,-6.930681966879093,15.800784553239517,1056617.97 +342.59519193157536,71.05814053842337,-2.37851213211826,-6.304096498394349,82.46131025701713,2090741.44 +1922.9944685768112,38.711928150338345,3.4659950733881617,-11.351595079468847,27.682638259604744,20017.34 +966.444601576842,29.746375986307388,15.258543811869917,14.591173093160528,40.18268081457868,1529.44 +830.9371608151721,9.450268814632864,8.635599380803342,-13.46552820785574,58.25970395549579,2365.86 +841.3455525829587,63.15846938730933,-10.750149315205055,11.954353980952028,65.53602663613745,99529.06 +882.0819406558496,9.389163782081075,14.375567364994692,13.29314553379676,43.209467035843446,2.09 +1900.9942902098087,72.5390010678864,6.5697315182917615,-7.351241337832088,45.46736267545016,530057.02 +312.86825732571657,40.35009158871879,15.806276663323228,11.071663760386388,33.48494964857436,2227737.47 +414.3103172881385,1.997654929137721,13.374955008370542,-1.8811203103451613,10.30912230349561,51170.76 +1621.3727278673286,1.2416075518960263,-14.82950070031361,-6.061895692031776,15.683263140631643,64202.53 +1188.9370844122498,30.31875570792803,18.418825481401143,15.735136850485002,89.10002215240316,1945.11 +431.3661643297136,23.533055725271588,-1.828143000265543,-1.8588762525108793,97.5102257969888,171715.36 +262.02824620100546,16.002128706811177,19.302100057293284,-17.790812415621204,82.71996056306162,3662449.77 +603.6218269026093,89.63519343429209,-12.51971445649897,5.380856036226307,31.273991134859266,1864672.8 +669.4593278784879,12.325543976097508,11.732721832540062,6.320093018260655,18.656615888473084,23334.94 +225.58345323435557,4.963633810997314,-7.804335969883978,5.386019437463556,51.40991486741399,68803.55 +588.9629690069481,13.487507576271907,-18.2077878661976,-5.58724640889547,10.366429632896606,355951.92 +1528.9740865143194,1.1397864902028174,19.76161700836196,7.1445928547239745,91.58138513926576,5100.87 +1739.780641346607,14.405504390050426,-7.858587182519399,-8.356227212683223,77.03235110240264,432314.22 +1816.824493585492,63.805836999741494,-16.779229809811433,-1.4255129623540252,97.3878269005675,776980.07 +901.845258758378,1.0201408463732506,14.419887450190046,-11.331731200948235,85.73505875116867,2.35 +774.9447066264038,49.04645518322886,-2.7191880647753264,4.530097445705961,41.47227414079064,90283.61 +1999.7495267741976,40.165926406843816,3.0580971015687197,12.420030584840372,32.10735337008926,7.34 +1584.8128116588598,1.6300700184118209,19.39374772594674,-16.093337481843303,83.58711074931091,0.0 +1167.233745633598,49.392497466377385,-0.771637079265699,-18.919506280725496,59.20196375580885,319.72 +658.5885788409139,33.658172467970886,-17.316059482622475,10.445376142612597,87.99042904645873,2467110.11 +778.3498151931884,9.596059124134197,7.647445159299431,-7.084807366293391,33.19464604778005,165765.58 +1127.655827892897,3.093341562159567,8.423979742256904,-7.046980856418785,55.10012276837609,328584.53 +1175.749255623351,3.7687803918499463,-12.231670549108356,2.589581243501482,46.771366901433694,780079.39 +224.62155969262008,16.770648283319254,1.8164767431681872,-0.5304974119160466,19.14095057155128,144048.66 +1926.920153488654,3.108908918630876,-5.231162540674861,-15.137598792080023,54.56630367229178,0.0 +1236.0912452328143,4.474158357293623,-18.00313665047333,10.417405255944608,9.25693300413216,0.74 +1260.48483993644,72.72384998859991,-7.535902956310525,-12.949140917879616,38.12470594685198,29078.68 +580.6480407568746,28.751283235413663,16.381304276305656,13.04112895267247,53.80947928693618,590145.89 +1576.9769218422462,29.6584260367683,-7.990106186597705,10.573905701770814,15.378832718284476,293.33 +1527.076136165317,81.63433216938976,-11.077474580323926,-13.310935795093137,75.61133768507419,38604.91 +371.28435212857534,1.0270416110912344,17.636513936769944,10.32854682163816,19.890382144835822,27.92 +1270.9898700678564,3.0829869524382567,-4.706927164442782,6.437581154430152,73.12582820903441,44353.43 +1384.7487415937835,20.69893143376514,17.622362224431853,19.27280491283346,3.3715952641191977,0.0 +1704.0227142329793,7.525633562587584,15.209374660146617,8.473155742592645,69.19921835559603,78.63 +570.9641220518793,1.6811632826942122,-1.1814199950131332,-4.391301873860853,40.64117846008695,402253.13 +1779.7426342515305,36.514669333149286,-4.601533521682986,4.802305724129532,79.2209336485829,679663.9 +1030.6659290736725,1.242067128203548,-14.491281880805094,6.474888971544885,56.634664105077256,8564.82 +373.74251475016064,12.237768244226825,-12.375341113901968,9.82601332745498,38.62421667275786,124585.97 +390.1181987195767,13.333024068326663,-10.702272722345686,-1.2549661407180768,66.71639238683328,300944.16 +556.0480166117052,18.70348945852359,-1.1858442457016416,13.10777723470666,39.402756644187306,3732.19 +708.9512707735553,4.278116485313907,-5.115462503348445,-8.522329035754602,36.26388701444933,87940.03 +1093.5304480276393,1.1148126355451702,12.015372996504624,18.53361223150732,43.137108369279446,0.0 +1547.7521559402078,59.97449118473737,-8.132961594596914,-7.58277451797944,71.32942363954437,543227.0 +536.1066236349781,72.1787887291838,-3.019211974650613,-18.498153735728145,61.87916653160306,105317.85 +1986.773230099166,9.204017882909296,-15.091703058498393,-11.994603241863835,91.73460204077368,19.53 +490.7394771865627,1.0997164133062427,-9.151201030484511,17.097616859816863,1.0369240242786943,0.0 +1278.8803418998657,14.51250293061579,11.32080555072868,11.602055208189736,16.934350897942803,6.5 +1872.092784568412,4.2841010228643714,8.284016637680356,-2.425164883927997,49.90797777714524,2548071.61 +1698.5133611782887,2.317240731096339,-3.9111853390746982,16.206211824544315,67.29548164053227,0.0 +1366.2005629936878,2.177235028016597,3.098928122576683,-10.134677984750349,9.873974565983229,74.34 +1487.887394223617,2.2830261221231476,-1.6666542834779952,-10.657670246369545,30.126207577513128,11.53 +441.5701280696557,4.588619022155941,15.808821949077082,-14.84166788720984,98.86857510601376,1892.15 +217.3934967684468,3.641165602636176,-4.2123699430522565,-2.3027080670658195,33.43684419933369,65881.42 +981.467811848671,47.0814321408368,8.88457922413723,0.5650242511094827,38.63192822019142,205762.86 +361.1340674089455,9.78654539178609,-11.258834264991044,-14.19435256887915,24.6397918812568,13342.76 +843.9546114430838,7.1663000003343615,-2.63611528633072,-15.415780164675796,2.726465909868155,1.03 +602.7370284255277,1.9573437986276856,1.173256878169009,-4.381924578436576,29.2541101775038,299108.59 +1849.4241002853369,56.46529302516716,-15.814128387980436,-10.6952451605779,16.944674652214836,13117.76 +1784.1007982145036,1.2871951999830296,3.4967390307560287,2.9705599557046325,38.72141063670263,1572543.33 +1674.097127355815,3.0134411727057455,2.9865995731579797,0.97340761156806,24.01164713513568,1046208.22 +1485.0997371451776,17.496232912851056,-13.649884319484173,-13.500659804155363,40.98199162006921,212.88 +477.3294723872486,25.38778758655133,19.94598047659177,-19.468919612750305,27.676005637118266,372042.75 +287.0613671584728,40.02332353926293,-16.300268467646866,5.791586525447419,91.64518645331783,8443760.21 +1376.9981441384466,6.6158035829991535,15.812139540570808,10.91541992316821,29.84720511449897,0.01 +1356.0646469151786,4.937193781108516,-0.3393741335642941,-0.4690916835693715,19.6724325387721,628515.12 +864.9637125580657,3.7766195409197665,-11.0918015532999,3.0200377094544084,76.44119244432282,778852.08 +1050.835999584075,13.683252531238072,-15.488050725307884,18.46845719588781,81.36282519384058,0.0 +1080.4688988283808,4.98048034219434,7.976804520421048,10.708155480674634,56.73761839655648,0.97 +631.8706389437115,4.530941775529812,10.178016610085855,-6.6476051807515235,35.14064109670556,173305.11 +765.4999014336546,1.080890517539976,6.937627304949716,14.012066954498646,83.58770998266002,0.0 +953.1011983943029,78.81919138626893,-3.2051651121202696,1.939689545267771,67.31709184745438,227522.73 +1285.7222538408616,1.321869215666008,-13.097052038646948,0.8773775701174014,38.722510647003155,920185.36 +1920.4745708313064,3.4813127176001526,11.58151611704386,7.674876915369011,39.77457684086017,24.54 +1169.272297134272,69.63687196079174,14.849218842536729,-2.8206008411970185,1.2421591850841298,20803.05 +1516.0950371777628,29.55945282174604,-4.32516376374481,15.230901446914542,6.718950183263654,0.01 +1652.601984311996,14.33110270349467,13.648702337009516,-13.30862278976408,14.34685932336032,13.34 +404.3146183553965,20.97141943645143,5.424009406723762,-3.1234683122247597,25.4806131232749,56819.65 +1375.6244015970938,1.5635799962539714,1.0791327067122405,-17.405454623732247,92.68099466134674,0.0 +1067.799296457964,41.42806865672853,4.424211834011058,8.215771570531016,82.3400491057034,83448.84 +1230.3756960462058,3.163832795782022,-15.68996318070868,-9.188190972746945,5.03673263025473,788.46 +269.1504843842803,81.73874319313691,-14.984039244707589,-2.983013099058711,2.477001701313456,167702.1 +1831.1883257852933,2.902346150090748,9.068154657424458,15.4544882469154,59.014375391269205,0.0 +1915.0114692358104,17.81266221881601,18.797883580151904,-12.548578451574128,38.271699596512214,46.03 +206.26746263230115,12.32108586117151,0.3121656560035157,-19.9099388665746,80.37572811820387,93617.06 +583.0248656747195,1.9328857662475452,-17.839971811363398,3.1247920137548535,97.31521002083632,84273.05 +524.34951267611,5.319298176364292,-17.277065771500972,-2.498190385300245,49.931489043019624,137732.05 +1606.3481311037326,36.52460345079293,-1.3054120653324253,-17.801570915041026,18.563372094996694,1.19 +1276.5441064012764,2.6618044574726554,6.306581440052841,-8.15017304546506,89.38450791411732,146688.62 +519.2005939341171,84.27807934260771,-13.804933742462744,-10.435759110774004,42.798312625375424,2991247.94 +1665.1477195739487,3.899126068977378,-18.678604260475197,-9.57527472313917,42.296605362062714,191.16 +836.2547692503472,17.92434601230046,9.178771323527318,11.58649532961412,70.68801052994151,3154.62 +1029.5423773275843,17.287575076647894,-14.154739395205716,-7.81000783011236,37.62178742963313,101665.74 +897.1518895771618,8.740906694103922,-2.4728006396439772,-0.4149398698135975,24.249684399309803,323524.65 +1138.4843715942131,20.45130041927161,9.365446243527169,-9.379196625994556,74.42798840629987,186849.29 +1064.2564438917057,30.70109656543889,-14.9882006986361,18.021606975601827,19.3981498834122,5.72 +694.2512047923967,17.298400293719098,-2.289873405613707,10.968552735433356,4.887916100297219,764.71 +964.2008674889124,13.182240740319582,-15.541794895775048,-3.0686954716408454,50.26480019711733,230361.49 +1835.0068697377403,16.340103991817514,-6.099676499506739,9.079334977174987,4.359665879657191,42.02 +1105.2094456626412,6.36666268324853,16.497331818082905,-7.40699129619157,79.30337531645907,112073.32 +1849.495538760276,1.3859460794022571,7.445328804790354,-16.710804470940385,97.76313584184462,0.0 +1190.2286860723364,2.086396081354265,-19.076274299686723,-2.779111850474756,94.91519924767314,61737.43 +1583.871127875486,16.345871711062117,-14.620927634548291,2.583414197195655,15.742184743244776,164609.13 +728.4643573874832,71.50687268773257,-8.247177265287755,-6.025813232438804,93.26672788361265,618943.72 +1622.7442820799342,1.1258514646501276,15.82196793689258,-3.9384644720040063,12.07174128637694,129952.03 +675.778903372974,12.24814711508502,9.883453568791456,8.577152953713316,36.08647369678771,16015.28 +235.18994895735145,3.192440899093259,4.699718235539998,15.81789528237988,9.348968026664696,106.59 +489.3120977198475,13.288617809439758,-13.896208063746416,15.764241718198054,82.44478969136242,13603.45 +238.9751750576663,31.572917549189228,17.15498748636863,3.0276725522742787,23.15051619798299,2310441.68 +1904.7127554045717,29.573740947908497,12.325165873524671,5.179614291561037,66.82513441495907,402285.43 +1999.9586367518496,28.169010756549355,-10.422972436763995,1.3124506139141667,76.50610901844757,2465877.12 +1572.0144745151372,36.12825053205819,-3.8269644093713007,-5.150571249135396,38.69542962269553,660484.02 +394.6306947528577,1.3970803156391085,-2.864648057307035,9.526387841490326,79.13928898754429,1563.66 +1818.101828598769,10.450947542246164,3.5002549423589224,-15.550188650679914,33.23312270990858,0.0 +1538.797129878988,3.338542972958313,-5.007584342997786,15.760566835609657,15.67467473984714,0.0 +798.0401277237581,69.58908433385061,-11.59893914270549,-8.651221235040833,46.52551231985324,528708.2 +1104.100241256078,36.79242760779172,6.679580783619992,-11.247113942515432,71.32172033479299,84974.57 +1391.166814271544,1.640928638734083,7.102201618781088,-9.040231706207368,4.930508743122983,402.14 +243.2908562118882,3.0654360330205006,-2.304578536816586,12.46867738510581,80.81822564633337,5756.86 +1102.7736417798112,8.136553998544782,-0.5339008329158101,-9.244219542480216,26.308459515462847,47770.09 +1518.3117798589733,84.2979946925871,-17.973192924019685,4.381543360624494,68.43985351061963,3802614.96 +538.8056694133991,1.6570910368748035,-1.7560464365651374,-6.273689281475736,12.290745910359854,70884.31 +998.8230322627994,13.675547965044958,12.015930135135488,6.256148588500117,39.55607811920082,62190.98 +1158.55423253288,4.814764240603812,3.659299492386743,3.665061654496649,47.039799150307815,615887.21 +1524.017669526618,19.619172398981284,16.827961158475276,19.910660904860347,47.3759478508603,0.0 +1936.0166794275935,19.834143637771753,8.660534598195845,-7.561760396983645,28.05041897248283,324494.05 +1726.8959864077246,3.0281889709754917,11.105481950424704,-6.007705052486116,53.39109326934987,729030.15 +1318.7331564139104,37.29226834391346,-1.6633730477103548,-12.049297958157972,28.45923149800874,18949.71 +1250.5532147026568,1.5223865650175876,-13.062024196488826,-1.443673114259143,17.48679853875391,424192.54 +1285.7360475308074,43.27905229051967,16.48740345592919,13.494408473633124,14.201078197774354,1379.15 +1181.3215567875927,2.6542004419955445,6.367859399935845,-11.56007857491996,89.57638781451149,40.83 +306.8531844660624,15.106317105433066,16.37898449976661,18.456393108813852,13.93380388772243,121042.28 +1456.933510258769,4.9501624767922126,4.700898202676247,-19.47370868821476,40.12403481626209,0.0 +1489.4062402332854,16.57905045525931,-1.820762378596408,12.205949205876207,25.938207958394127,0.59 +1122.464652080649,3.4263813424641034,-14.610434741758468,7.665029671894459,61.98851849766152,1331.25 +1766.6976897245777,13.7381212134518,-4.091808494395139,16.210138959957717,35.230078842188796,0.0 +1410.3862449620212,1.0384761346910416,3.902139597400822,0.8725004591864671,29.345274611865957,1102252.91 +852.7963841426305,5.609303195413799,17.23057074501448,7.2385746562555475,96.93210904694313,9163.36 +235.44983647754165,44.955078268416536,13.172303415932015,-18.02303751864589,99.67787602269448,4051273.53 +306.4909636958241,8.433603381642145,0.5256667353592004,-4.225792208852175,14.12937006438088,25632.26 +833.2368709552153,9.96603017941604,-2.080363704084487,10.827982268922804,69.58584542500613,1236.07 +1031.7895853576292,17.504659843618047,-18.669064886060404,-15.64073254587679,89.09391830431719,1925.58 +500.36801511516506,7.386168274124627,-5.952463588248427,11.295896118359096,97.11301792294783,6548.38 +540.7909515607378,54.219243712578454,19.252710776959177,-7.6690672479746835,30.511849021223995,6183442.57 +614.3804458028053,6.406920567797301,9.641014364225429,-5.880435681629241,78.65888863785628,415199.85 +1604.9240112372909,76.7546805450004,0.9899621764083656,5.894994317494597,33.44578022505242,138980.2 +1588.3181137131885,56.73826438350754,14.491983051424974,-16.87344109922346,62.538015018548634,256.9 +889.2901737448018,6.953053408062297,-19.077766695620653,4.985044042107845,51.78335387391291,46755.75 +510.25588685191246,5.390161146102149,18.304968840612084,16.548957002882126,71.04179132797886,306.53 +399.6350931142446,22.555685880526266,7.986749210772399,-16.249428888746927,91.35759150901916,95589.91 +356.8327616849118,32.4051098009547,-19.46743410923973,-9.88010819672876,12.164805458105384,1733907.74 +904.3026516188696,2.3535485126232425,8.221272347962802,-19.452740447711182,23.06093436106259,0.0 +281.9763799780149,3.034522810106817,-16.67488602523512,0.719599885638762,58.98937740719407,543763.66 +800.543066827403,1.961123903975364,5.583890774190845,9.238407996476488,36.36430821198659,13.9 +1930.7598365740473,33.21878596310023,-7.964574413248533,17.05592839169585,56.227913705221255,0.0 +1113.5083080980696,26.841311362301813,-11.516310407345106,-5.278815791008524,78.49591538383031,595887.67 +1680.76038230334,2.3884031134142587,5.12325908149744,-14.049950112371627,70.249288841179,0.0 +432.67870261171834,11.850851941646232,-2.638369062699817,-18.836617372286856,76.89214506600172,1789.76 +682.5418083374688,33.76593020261459,-17.41907926677201,-6.999751389850282,16.957491770629773,1168896.84 +1903.783600179216,78.35330598060892,12.893714994687633,0.4891124995453788,4.005989370914769,56392.11 +890.3934144812424,2.275334795261145,-9.355090530835843,16.030936116587718,87.3010117727637,0.0 +1367.1310312069802,4.061248461010488,4.728410526431874,-11.34193873079074,45.70066448525583,119.75 +1957.028202492661,4.9736997825339895,4.374426105984384,11.251964946296638,63.931812866407874,0.0 +1191.417961395324,17.780940073223736,-17.75355373216179,-0.7632060709655342,8.221306166164457,25174.7 +749.6227086117246,1.8742939374110217,19.892662009456483,14.701400637227623,71.06452707821866,0.0 +1157.507220713712,2.4370146419710204,-2.093578284547144,14.522605986225162,11.064127022713848,0.0 +298.34695879554675,36.3809197895024,-11.78573443902568,14.30778370460358,78.94677859051636,2264408.32 +402.2657733668441,12.136887649302636,-2.53009246306517,-3.946191001173864,7.011085793299012,16466.48 +212.90798909408585,2.0930155891699083,4.122477854554805,-6.1516218340596795,9.23686012737832,19436.07 +1791.5780748170075,5.9822629157611855,-19.87840877665399,-11.70845463182781,34.986730509711485,7.24 +1408.304772019272,1.8577547938830832,-7.9946576746087805,-10.862838992200254,21.990074184152977,1.29 +736.9935772389466,5.31349165048571,1.4532100382990087,4.649170619260512,98.46038559160614,437423.38 +598.0905545731482,6.31536695611123,7.779079200970682,18.477647135150605,45.68073745239002,0.0 +1429.5378820840035,1.675794741279275,-7.467761579521857,4.23835424242438,47.41535216787009,814045.83 +1855.1577166135085,1.3172458905687048,-3.8436138752286064,-3.5073006927839856,5.601340704096302,275068.12 +738.4503638937992,57.97006409010713,-11.15086283176279,-10.303119755943053,49.64771254035813,324577.14 +778.8063968962072,59.60685105548766,-8.278386961259855,6.078779728889381,7.331215333228515,18567.95 +1737.6333053487913,1.0119469608278806,7.4942970922794,-11.562184455758766,63.183217761445505,0.0 +1808.076468590754,19.160559776067807,-6.509525674312613,-16.264957395333795,98.1742813682617,0.02 +1845.265820293601,1.539423156526904,-8.815215304959354,-16.258400419836917,33.62833853670492,0.0 +727.6775744120506,41.71413968180352,-8.057602994991345,14.0183748520957,80.9961467141483,13057.98 +416.562621673428,57.42814447739339,4.505721680722843,-4.709775318933747,96.5846822274362,1313602.49 +991.9956295973756,17.109223939402074,2.432671739393517,17.613604040980317,96.82864763324604,0.03 +732.3767572541259,16.83879130308376,-3.723944342203347,-0.1303288164680793,74.84638688213049,492073.28 +1790.9600002613045,5.533029912718821,5.292651762250977,7.660243353141043,87.12821411711306,1057.4 +265.9428952463808,3.154553801119685,5.711771519668316,13.078068585908596,35.794152794848536,1274.0 +1340.98484534529,9.966476757844136,-19.475617450933868,14.979566919905375,58.8016746668943,0.04 +1831.126458346605,1.8511194624267169,-6.43761947933605,-13.498020977616672,66.62572119643127,0.0 +1958.006660250919,22.10292701988592,-10.228444860084306,-11.333063303591778,22.51999404516478,4507.44 +1370.2350787364778,8.713121914693154,13.164863413546852,-13.99633283140233,32.0277709534651,1.31 +1909.861322640284,2.2657031688078684,-8.982556283923152,-2.1779763788053685,36.78142984843105,2062225.31 +336.1870327251211,15.018567319560544,-7.308156324625714,-13.798618283197063,7.504837907593243,7803.18 +846.7010227932316,38.963294688717376,1.511497916258988,6.034615000568984,46.19837437689784,89702.27 +215.68645518812065,15.052163370238896,1.895971957829059,-5.486922666426506,78.5515023483245,514560.34 +1966.1307899434732,11.463647500066743,12.43894034107381,18.562860802367386,65.32837442719206,0.0 +1824.9076617800583,49.59466445282461,-4.482868784854408,12.66348744912313,62.8883419590368,129.83 +250.49460124676244,1.0507775126114014,-8.753430314954986,8.971204465525261,60.98582983718673,7741.85 +232.63877082757875,17.119664746933335,4.329732883982822,7.548507141189198,3.2303435279846946,25644.4 +860.5450893914591,6.5975754631950645,9.131241641875691,-18.415791273305807,1.326305134181909,0.0 +665.3683402236232,2.438553551625398,19.70390030259491,-16.65257618732952,17.742877764532732,0.0 +1724.478099036504,91.02395467575072,4.731952786521423,-2.715560468569782,91.41644374567144,1495366.28 +488.87192588935216,6.42136946126915,-0.3706570166851097,16.588005246513283,85.85487761430151,11.93 +1623.1690328615432,4.683015819800314,-14.677279554024953,-16.238872722303505,58.10252533882487,0.0 +1198.027459983194,2.1777944138285728,19.476923392596312,-3.1944210748849056,39.15501825694427,16496.5 +879.3051885289781,98.97645675224165,7.399672605878158,11.756596530767808,96.3981264877343,159392.86 +462.2955711200818,51.535051224464645,-13.399302552820508,-7.208287990819429,7.532642298760889,463796.92 +1995.844350727408,1.3802089438892189,-1.612908376498701,17.175295552205977,10.614889569156205,0.0 +1312.3750176587662,13.536542534892584,2.4120934235913705,17.387993291974297,62.48036292934326,0.0 +990.8880186223896,1.9715256047597065,-11.32490771911016,-17.72104057865956,55.2042582485354,0.0 +868.029601794917,27.012378721413295,9.299257319595783,4.6561214897117775,98.148641640079,285463.5 +1830.3108151355395,9.29323369759502,6.013502251591865,-14.177115837700288,80.45156405999245,0.01 +1678.1452547433698,1.6625623004366727,-10.65010582352308,-2.3595710148764626,93.88368188791536,4262461.65 +1660.1344190628026,13.0040246041701,19.59025482741787,15.912177366589626,72.44827051584775,0.0 +1309.1572513323072,66.2752389475785,17.946740838881645,-17.065317715239395,92.7581620081339,83209.7 +1798.3218488524433,4.812706360017953,-9.379155614707454,17.49442335035349,68.99356748147278,0.0 +738.7010698197267,1.2636046910439354,-2.327513815602935,19.77840887021075,53.042086779206834,0.0 +1466.6710432939208,77.6987840827009,15.791517663234602,6.809825914007437,58.42338993061648,372028.55 +928.0059363054064,1.92131412691534,-3.748166269579016,-5.7491337190779745,90.21968858693604,923040.82 +1279.9978554074455,8.914643941450171,18.19282067631884,-9.959493564488213,11.361814213452048,817.91 +1996.6754011028472,12.284408665725364,-11.983698544985888,-2.6956924369690904,56.972777106281875,2215116.93 +1972.144605215573,2.979716366360598,8.960891425201618,-12.806935344847105,39.83405306675432,0.0 +1122.7142296414067,2.263789619102984,3.9802426847026062,-19.19774010296855,66.63233845363776,0.0 +1232.9542138966842,1.6837505912340676,-6.152602538753551,-17.490454955272916,60.77513874168473,0.0 +1815.1791844471416,1.3801000280671492,8.711702139479197,6.542624079953714,40.56213251129417,2150.91 +1974.144282524939,10.38133236212368,-19.031579619318396,-19.169779386020387,69.2417329370791,0.0 +1601.4940447269437,48.310502373162414,-10.765206026048116,-7.941529837361663,54.062798435708984,370055.63 +317.33202432553526,1.7927409662289535,-9.548178857751882,7.055575535407668,19.559827381967537,12302.01 +780.7515218189551,25.19057361226876,-15.301183732429706,-13.008884554390384,64.16790050999808,64208.5 +1813.812211856554,6.687157326915475,-18.64155582254186,-6.708919339204997,3.6412108100858265,1982.88 +1583.034510530865,1.176111449691031,-5.8820997208080605,-18.742335950807853,82.47565638817373,0.0 +1536.019527843969,11.801701341351198,-11.269013600467057,-15.503100114759691,90.74211235948678,0.04 +1402.2618148426538,3.1916593495253447,-14.68532201798152,-10.962990881544536,8.715920569263881,7.95 +947.4749293382904,16.237089557245632,-13.707570225074214,-14.95292422366016,26.42124081323241,285.02 +925.8343766204632,4.996271402738617,13.05065875843312,-1.117602293564608,13.554906758778364,166375.27 +1656.0784776634418,21.523090733953,-16.203885139223978,-14.92210096923047,77.4109093949573,7.76 +728.8045251771276,68.70790806360411,8.99420904914098,-7.792718690220051,8.034055352216125,53787.5 +1432.6973708617522,3.0838207345785587,-17.84182319246969,8.942732587781844,54.56990507663039,1.47 +1507.175342163122,75.80204774335095,-18.374719539473674,6.154109579905391,39.43298495213831,1764359.53 +1720.2007808507517,2.562227691171845,-2.3102786521025775,-4.680036707674344,75.33593581741837,2229310.68 +775.7940632726283,1.38480863984554,-4.725879413257776,17.2435222930082,64.27400884897038,0.0 +1535.400680308764,2.4288571593495645,1.829940746053147,11.488901959244778,54.87460930941053,0.0 +391.6818156416364,42.64159087755812,8.105723047472,4.28706230627145,50.84613968779838,1029573.93 +448.5111121134285,22.65230969506794,-7.607571355352269,-2.5288519162644096,77.72711005281803,243717.98 +951.2048723121228,87.43157593520885,-12.223706045343803,-17.598552836572168,48.244354363303174,74172.47 +299.40639743944513,26.281770636608584,12.884672446098527,-3.4858907069408263,42.56086798300651,2514650.68 +1905.856978637609,6.687480521555314,-13.387722539719904,1.8106500174677451,3.5064150203121853,105113.37 +1823.412458916849,60.934317096358726,11.938109496476358,19.64070057317789,27.5871999022856,0.0 +288.08065194651766,82.46260240608285,3.4858750270220407,18.0642522769625,37.6169229887151,954082.95 +1708.9610994061018,38.30979622519579,-8.425200668564269,-15.511536801200538,58.296923022721955,187.92 +1115.9735133620457,12.980133873199408,-7.429637439456673,19.170645663354552,67.64713030037069,0.0 +1463.5331990723898,44.826162649455725,-5.174821549011219,10.184705194258242,96.30691825551916,16426.85 +1796.4761047367372,2.2808116082945027,3.643189111888101,7.277426267095568,28.39269204034067,59.13 +1238.5540767398577,63.19752143278582,19.185071231365946,16.142438657144062,54.897092527503126,81346.5 +409.388780512333,99.79711003006794,-7.26907923929212,-6.997780901502222,75.84786104630936,3043128.97 +204.6414988758553,21.39342568961619,17.674716468328484,-4.027887060137472,31.741709290382268,3322503.57 +1094.4587580526038,2.4647795337053635,-11.794125908021796,14.837878061131708,55.3042304472827,0.0 +1908.617837823848,1.9447927390750464,-15.481675306543949,-15.840347970803412,42.43579619241723,0.0 +1230.7193689037526,82.95237240738857,1.2845512792569558,8.366393888793864,40.32766320647485,52628.71 +871.2904485588126,55.29751851870684,19.05923482834968,12.392887619705522,7.2054803572510675,259706.82 +255.65963074564405,31.43096413935318,-0.6054482067190881,15.402518121754897,3.399408442382925,29430.73 +1846.9629511007608,79.11129746714157,11.996602407516235,-11.233088347096562,30.241400266080003,44564.53 +788.8819895444759,10.157983562794598,-1.0981467193298355,7.169859648311188,91.31655516508108,90739.23 +1468.599322367173,59.63384415334817,14.000072521660917,-16.571281376486485,20.08445471693041,311.41 +1449.6269638006368,2.1166089489508377,12.509630388879884,14.438493263278415,7.2370866472539825,0.0 +656.9896904637462,2.320702318915002,7.447699993034962,-0.7280250728519899,62.40082560945495,859094.11 +314.7995116293056,10.584883716863812,4.616423837752954,4.9665993572541245,95.89569737660318,108265.65 +893.0006816093183,4.624015931113782,0.7257130860195327,14.05501627803957,6.659586930100065,0.0 +770.8358249069598,7.328895613670195,18.270356203661574,0.240949579303864,74.80021416238094,158337.28 +1460.4615179701864,39.481529851667794,2.295193659794399,0.3463409516825955,11.741479391471335,194996.43 +1675.6084921877102,1.278836260490071,-6.5144775304761815,-1.413755108813075,14.397984772183294,707287.31 +600.4017513050144,27.649524601387306,15.28868345219891,4.027724944806685,93.6722499074597,2620497.79 +1150.815925597596,1.5012690693002455,6.401394825172146,8.692929792301811,70.41977850837232,0.14 +273.095025298691,49.54525871644712,2.3269202125070887,12.206729407688536,56.37071164416108,1141006.51 +585.6604812802315,2.5339591718010275,7.286823015398043,-18.807860444359395,17.300450449927375,0.0 +1571.1708895797494,29.503792208033406,-6.045115372946288,-6.0769092182045625,56.34641245371919,854722.93 +1628.1169768803304,15.267179016454207,-3.165880429006247,-2.698899042557845,7.164896322479809,223411.63 +1597.5280342132455,5.905330576470114,-12.176209601647896,-16.052264170998875,40.04861911709308,0.0 +456.2982649788862,3.428250127539152,14.200832429343835,10.064852915345911,70.74060887755049,2083.41 +1191.862509443151,1.3029226458373118,6.623682948124943,0.9150287132658974,57.264312124111655,1726298.26 +960.8751459980892,5.0904996723192815,12.970469415341777,-19.924688706122534,67.84133822968104,0.0 +1984.6753342311629,2.518010363381229,-7.304377240569626,5.254877730100733,12.468331148319896,100216.55 +1377.325764305005,1.869928530407408,19.81749239471609,-6.439120120360653,76.10121792111285,6824.89 +1883.3637645123124,29.991365889507964,-5.711593034677338,9.074173812545894,95.67195889463166,7817.38 +461.6305490151877,2.6609087523991524,-5.8514788946877205,-12.812194454178272,90.8450438824967,4463.1 +1011.5718915804124,2.7945770967863375,18.42541837831328,-19.95162012218835,9.70553417826724,0.0 +1588.8936801905634,4.796924725969404,6.202595287634991,-16.527043193085923,10.760984007981092,0.0 +862.1439104547247,8.41988808959015,17.337693136103162,-2.3839969583606946,51.82315437932546,118837.57 +1338.515293076564,10.651860951972324,4.925675451995382,9.920389794999448,52.88203774228975,126.74 +1121.0639102725893,21.33499462002914,-10.141007773467456,4.156561398910141,85.85550585394172,483649.53 +1985.4729365923863,15.032945939237134,-4.3705396949953235,-19.401335979501333,37.51889576870305,0.0 +512.9705721178847,9.191105675161529,14.356494968287596,3.6643316952652905,51.93323647401663,116352.35 +1883.62765159423,6.135930463838206,-0.421522830408092,-0.7130590904771772,21.166068049025657,1079139.23 +922.8277168459342,3.4007321239767916,8.35918491724092,11.861800901843312,94.71283211496846,0.01 +1042.38733947913,26.29572972935689,-13.338849360698868,-9.733356223273436,12.971399622300517,18220.98 +1151.4833906419622,4.315217007470048,-4.009255675999999,8.75725221125727,90.50324385326078,272.98 +677.6597889804438,50.022199857254506,13.578287360562978,5.271070141925747,89.17772492362506,2349734.62 +1934.583396699427,14.870477416877854,17.640413508753028,4.919645011416236,5.997564113383432,6954.38 +1840.676969422621,18.530560555032455,-7.027973429520276,-3.7777824188464098,77.7663267315079,2597397.98 +1951.2291803804528,10.4131101348471,-13.09708726537043,-19.486067635107716,34.41484718450274,0.0 +1994.4552299771417,71.96347545485257,-19.063166450954792,-12.494308328455626,23.245829557230437,61828.17 +1405.6401713257496,6.969331737081368,-14.904621770641056,13.76998078916401,40.8414496164252,0.0 +1013.0338924503404,7.143925334642456,13.42671579786841,4.673768435549834,92.46933156592956,337901.8 +1731.3210226933486,61.09828100049272,-1.7726419331123466,3.1256306733719663,40.49156198832383,507294.53 +242.8487801054094,16.21115065834511,-8.335140919617018,1.0276439678867977,25.027770406177716,492147.47 +1701.927280484306,7.9122031859910305,11.026402464934058,-16.922739149437334,52.93477793625489,0.0 +1095.114843579812,3.3442768999256476,11.737836837037,-6.093227667969128,41.55259264755248,379224.21 +1411.796048750152,3.0909280097331826,-5.513581470728401,4.765992686405562,2.8822398596269996,27442.24 +873.2829104165137,40.07454752526013,16.05470576225602,-14.977996343611755,19.443313251436887,42253.18 +863.5216769602686,3.621864138454342,-1.4755066742311929,16.839764205244713,2.7058956126757376,0.0 +257.09087505959786,1.0267752239297832,-9.550752762961212,-17.094078648936858,52.69722765338654,8.13 +962.820974772224,1.0937580907253224,15.990235654160736,7.191441541739501,64.49137227485305,387.86 +935.037551754794,90.53264798057388,-13.881940886043957,-7.9503206024044815,72.11483538355546,2355046.03 +604.6239833625283,13.17273251801358,19.83774077095783,14.546984591253365,21.58235198548015,51960.37 +645.1818923715814,9.507126305857414,4.5300890585272136,13.07348050177863,80.69639559511747,460.59 +1251.451244796521,68.50971142791167,16.613898576102713,-6.671546637332959,41.69259681405668,1102328.54 +771.9885965711055,5.050970103885598,-12.846567703421456,-1.5154686723988542,5.868930871555748,55708.11 +1694.4534362311215,38.90407728505465,-4.435549418282103,18.36445592878163,92.84207510982014,0.0 +400.4931923427197,27.77279736994243,14.930037305389398,4.316067854175922,69.65094650861793,4510704.24 +1239.7609038350786,8.998973328591953,13.484035356019284,-19.759906790538576,56.692908202423446,0.0 +488.0805088503842,35.42124280112779,14.874045993628888,11.08964564560977,4.981127058477912,140417.94 +1150.8331284571857,85.41945087074826,-8.781634001850126,-5.5474409335701225,2.3835860196412746,11364.29 +1194.5825965105737,2.5189221860007054,4.704720996555172,-8.966370570450035,56.918655214866774,28846.42 +1356.1358357463123,1.0839739091025622,-4.416058893694892,13.285636210514385,87.99991481203736,0.0 +969.3649050912088,43.94493359301574,-7.16902386154834,18.70108667433094,65.09860328882971,47.6 +1117.054433232658,6.414667437363527,0.8051041308752804,-17.51839700170111,1.5486000975791676,0.0 +525.714708946328,12.2688819298938,8.602117898454292,-4.385751009265162,64.16393696827758,225746.48 +1033.4276295253933,2.7856377643883503,0.7407132318244303,-8.811394892017415,35.51224743608726,36211.74 +871.454700369723,48.258911690771285,-10.780083680341871,15.91015725058828,13.081065389417438,904.94 +1399.0359883779374,27.69570968496214,12.299705345021646,14.707798538787513,81.34406882958889,1.25 +982.6791022936748,80.67393788355884,19.11154717840331,16.04468539809906,58.068675907486295,884239.1 +1602.8149717643964,8.922853101930613,-5.48485510108109,-18.293614949283675,72.69870309981245,0.0 +966.785777432646,89.7697520265751,13.970112758339711,-17.995610163525612,17.341517385695266,50580.04 +624.3881113531256,10.512615635776577,14.554510870979565,2.0560153876458953,12.496529729223964,34831.19 +692.6396941254523,17.492189827798985,-9.57915037714173,-13.323940207213472,51.936486621181,13941.03 +281.5134051649458,22.29743361743349,8.212285111489543,-15.493656913394124,53.25904163707404,473890.47 +1171.853859081638,9.539879991087886,17.536688068452094,-9.58566580582695,58.62331189419065,11893.92 +1695.5855910205792,13.352432215978649,9.594237653378569,8.376024192458665,74.67914990000386,3196.27 +1584.4010722716262,2.796495529530725,-18.799129456537415,6.8661629848239825,66.69615675593741,504.86 +988.0210394092484,5.305497524908591,4.18076927608745,11.407684954139151,67.94935706224125,0.88 +553.016639260122,25.350497702111525,11.138056686019764,-17.489888801735297,18.324814918967444,5661.86 +1754.271997935415,1.196679689373009,4.725463288889147,10.656530800710817,42.39268648315092,0.0 +302.20586128112313,25.166698134113044,-18.850406216743455,-0.3752991306427988,60.3977792981645,10251426.21 +918.6009053644892,4.050897823951954,-15.19323666231034,-7.480191459928207,52.34576926804945,99335.82 +1741.907256291112,3.49680707958207,12.064891503626324,4.411384600445585,31.11923597991458,462623.59 +907.7180373275536,24.37681316474425,-0.4778655618805416,11.981205536147955,94.48271123541542,4956.6 +412.17584736252786,2.690855182993559,18.319075017504044,-15.845001096155508,14.879045088483682,60.25 +678.709100622433,83.82370868278426,-3.4007364296653897,12.291697091937776,97.4886836112988,121240.29 +1280.052995137307,95.79835847743436,12.86833059167222,2.7775953454294955,78.42414180718531,675072.87 +473.6646338502276,8.245192806755677,-18.58029836677218,4.8021611287928945,60.02163610609302,1887289.28 +1378.8835883162403,6.35092043205238,13.640589209583194,15.15808647571756,13.619700189244284,0.0 +988.6914761586424,1.439046782475672,14.36230830711938,8.399503659234329,56.82684944181853,4.25 +801.9011014769394,36.0111812599803,-5.5169668314814935,3.3409665674956246,9.705999465797568,31165.68 +633.665864941695,2.115670317852106,-7.621918341468996,-6.559093989215228,93.26083581762624,543124.63 +1681.993974542077,73.46757769966598,16.396351100674945,0.4124064617299217,29.27494110606185,304484.99 +914.0131054341228,95.76029557739956,11.108188973378974,13.46266354240482,40.552046647096184,138760.88 +1529.26267809121,1.757193386941661,3.917949160535401,19.82428899695927,64.04062945407715,0.0 +992.639346747292,23.227997155918104,-2.5462027445614455,10.246084616041724,2.855794220397104,425.36 +365.360936396203,8.55035178440325,16.483464734194172,11.606502601343106,54.65197073489688,355762.97 +992.9107553010688,12.086253762035946,9.888883915158235,7.9767220399099825,71.76899783377326,29253.27 +1113.8380035243752,2.28638498459996,-3.326563580827089,10.67801958894616,21.519197642636367,0.0 +1024.1159482880782,27.992507219568733,-0.131194678610278,-10.27281389301162,16.247042477174915,28118.61 +1669.2350811468905,2.153899532159512,-16.062733786140136,-3.046681076902882,49.27740766586541,561653.89 +1839.5324282774527,58.96576747099529,12.429799961826609,2.2398393706263287,54.11927642206426,703320.16 +1616.201615379861,8.090013171324882,13.668091004894931,1.9785652134932707,44.46646301231772,892846.32 +1249.0074239797275,18.609564020973036,-5.774310361916273,3.890711687213923,30.265103353962257,260826.55 +1174.6099289988033,69.75610361429366,-7.613850643258919,18.941391717189703,41.573325344074334,47.12 +1360.3088542225862,29.91431135677262,-9.91063382874948,14.210821436857644,31.917009891240024,5.3 +718.0945335908741,12.069680305047008,-13.061651257888336,13.113327672257585,25.716480720801773,123.28 +1661.324323067633,6.387858622727208,17.91140469150307,13.214805765043309,47.739342367653165,0.0 +1742.3267196865895,8.399825112595106,10.361339481770004,11.73332808124853,40.168789509806366,0.0 +680.990893727295,4.823320481571576,-2.6637799625244885,7.16814038954289,44.103745710857474,29823.48 +1825.0727746521395,78.04905525379354,-15.593179635159174,-9.738299310473211,1.0228700140559763,2140.45 +1727.7189031850014,3.204171021126754,-14.422516465603875,14.23066351422011,69.57764335264167,0.0 +964.0761814685184,6.587074345926143,8.391536680972106,-8.810766705097004,5.64056938111036,13065.18 +1836.200363766942,36.01205040169392,-11.876758419213612,8.995543088832374,21.463473468086818,2973.39 +416.79018886071464,5.354061374284006,-6.085041364908359,-15.560651494313277,80.5417258715658,2489.94 +250.37580657602064,59.322820708103606,18.280365058431546,1.8911397028964227,98.43100457613062,8556410.83 +826.1602860692979,3.062987893773604,3.24791614826077,-7.247976568586485,99.15629359813023,491643.88 +1217.784257889221,1.15528645998394,12.333891033426578,8.178289823385247,59.63080529778758,0.16 +832.5967061591591,18.092651774837996,-15.844746455793588,14.211471433518923,26.68203197813815,531.61 +1895.7219206084471,10.387401426267292,-6.78455230689047,-19.37891337431487,83.64854830301107,0.0 +658.4784122992611,73.47103532275432,15.824282106985551,-15.427123339354448,65.38227284851281,2371091.37 +706.1841084668221,7.018828838125853,12.418523370364936,17.020672958227458,98.63322945548346,0.0 +1342.689702580739,1.8671556188813985,8.937999360890053,-10.429160151530436,55.361092346111135,62.79 +206.95498821507476,4.565528671499693,3.496194742215728,9.23157654980808,53.09096362824659,23161.19 +1509.602694238279,6.115382412680998,-9.242397446405434,12.50186822153588,5.335714479541427,0.0 +879.4450695676829,14.664377353484362,3.4192220890865466,9.62201323454896,20.24582944520238,3181.78 +1959.946161757933,3.539981416667548,-17.969601658157742,-18.715706905718793,67.02524570276337,0.0 +1444.5516674535477,12.607432172434878,-11.908232248378424,9.416945627248738,99.38348627636228,771.14 +293.98691914821757,65.47744600969028,0.7306104235763566,18.46284959958087,48.08695892489601,825393.08 +366.7300557355525,7.038185347405528,-19.920906759405664,-5.248273167049131,3.8803796552125793,465815.44 +358.7025924634854,20.097358883104608,-10.710926590117769,8.410204701331496,40.55398881696873,407461.08 +1914.7200678054987,2.8694401729267143,-13.91007885298472,-8.941211832858698,13.504907510710428,1012.31 +1431.2927741916578,40.054755961842616,-6.179488765500678,19.8982144046208,96.01223152590494,0.0 +969.6908131200844,3.462113175380212,14.334128440526024,-11.66639840029507,14.989896191914733,84.77 +560.8688417840559,14.441276623758643,17.896764031911246,-7.777360813834715,12.668308221897869,369183.66 +1772.551543584446,3.9856112812788624,-13.397663600824233,-13.283776480830998,46.31855100694483,0.0 +562.8006698084129,1.363969628899075,-10.757015545522025,18.207090978602803,54.64941583540406,0.0 +1472.0225896564714,4.358383895174742,13.87509053538842,2.857055087533946,72.01264110159102,1143357.32 +1573.9838507816228,2.6549804128877024,-13.092952239659272,-10.12060159556755,37.43018293668172,155.35 +730.3809599397349,61.00248640384741,9.652657764418144,-14.6197733695423,89.8017483548939,172640.91 +1108.8465269071562,3.4066242159934057,-16.580861652714702,14.99227261248171,60.261647993275965,0.0 +601.3807081731089,88.88866087906455,5.932204030719328,-17.493616580534056,5.680119577187215,23021.94 +882.0733834198966,9.653651652441296,-9.37199509768063,5.7305206346939475,4.382453215146354,10494.44 +1937.241916904016,2.7677695886714626,9.98244938476216,4.4051485577450755,47.40847800751931,1036491.62 +1447.6484623779745,6.063009745834226,0.7749291947361048,10.871798298078192,44.503355740305345,0.0 +1723.905571142927,2.327352867812319,-12.844199243075543,7.273848907507774,45.78490078443332,114.0 +1173.0792286401338,46.49074521576023,-3.9108381036144513,13.45900679828998,6.661836058163304,172.91 +630.2715358724411,1.7375549124496203,0.5741134369199496,-18.47874324252313,6.273979963624948,0.0 +1483.1837420009483,55.854157198929535,19.83907075262866,-2.788346512099964,7.0159752943536455,972420.4 +1101.0223294230195,1.2354753842835735,-0.7855042228222464,-16.76135606446412,73.65892768407463,0.0 +518.3279625927056,3.973890198445712,-13.950412769934823,-3.7913073095421934,60.544275031198325,247323.12 +942.3738013127784,1.9044669506244216,2.20911164211107,2.4330299669765676,14.50995953903968,259113.96 +1342.7123942293506,23.470972891471355,-11.191497330518484,3.750994655109472,43.668093401551126,356174.38 +1523.5973420280288,10.583844780325231,15.182624901066204,16.990731576948125,94.35089444863104,0.0 +637.7974326026331,75.62739576586172,13.362726675495871,16.86888460372185,7.844791939365279,89577.52 +1776.795210828796,5.399599173097214,-14.854115148293657,-7.608536118994023,19.726015671857596,46521.2 +883.1919927344204,1.2064190518882134,3.535011884886936,7.962748896399945,39.57184298187562,73.94 +688.0460922069472,33.3670741449162,7.86028929584524,8.508295300030554,24.35465287912091,20290.62 +551.2160998167046,14.42119666149006,-9.933420614882532,18.28607953394875,16.694661124474372,19.34 +1647.5084019253525,45.17213428228607,5.055005343582217,-16.64263141622631,97.36010208597602,189.49 +837.4962349389124,7.116675179673929,-1.492455756390414,4.686062384798713,76.87704149915754,342357.91 +1070.1182501982823,29.9476206142017,-0.7168521860648935,-3.7094572345444776,73.18821851871479,716967.39 +601.0756824149762,2.1985250194368797,2.0516221174726557,-6.106870736493151,93.29828902569776,619727.6 +1434.9639281040768,99.78220795448212,2.805497965602539,4.699764567465761,19.517378471050577,92021.39 +1605.86013359436,2.22481523462963,8.391922355555085,-8.818520517837975,89.08307944431428,16578.58 +810.9654481160148,45.66687096375216,-1.902885542992574,-18.565337012562303,98.28476022757816,5293.95 +1901.1428936685236,2.659967546281289,8.90542435138543,11.111706272569911,59.045372611480545,0.0 +255.09909720842495,36.72958058689973,-0.5625772167901166,-16.5280964619608,90.42039275365512,1153888.29 +439.29758589327264,52.78430820767215,6.512656693140153,-6.872069653566197,81.7960463586565,1141160.35 +1259.8166568088834,56.660683929561195,-9.475603536739763,3.7970361178513112,32.470616426032485,165965.84 +1462.5323516870833,8.942045880065109,1.6680561929013482,4.949437266211607,33.90202147104403,243311.01 +651.2293811163062,7.204866634595691,-1.2801699103711162,6.650602987035166,67.90569443969996,84231.42 +1197.327974404427,46.513847028325735,-7.912148286029645,19.780141467552955,55.66150163910374,0.58 +773.0952446770629,14.4204378090604,-17.507519992653062,-3.944515281322656,39.109203612620696,280954.84 +1197.3606421188624,17.480492442811347,0.4076558911474448,-14.500222760168135,5.658232473791207,47.28 +1386.7898199756544,2.965747974164798,-19.609797551676024,-14.482037074519978,3.271895683604142,0.0 +1951.0544964243031,7.803941917498075,-4.406789860885114,0.4099453637398875,10.700803657269176,536964.18 +1020.2543480381306,5.481479271413457,-5.17380389364698,-4.650421706228727,41.01013354218075,610689.69 +1366.7888724884851,21.411304024447514,5.350130085336113,16.526547415622193,3.7135801746321144,0.0 +1240.4706462558777,2.4715338336446635,19.497157445632016,0.437272115823446,15.66900300438613,7710.31 +771.5988089976313,6.47893843930224,14.320047954604318,-1.921837548243852,96.83927230688536,605622.75 +655.5154370558967,49.826928658033005,19.003352448434395,14.4942789328939,45.60726856033295,1665198.35 +1978.1672991405023,12.384867201916128,18.037483373413803,11.844333718105243,93.39185989553876,0.87 +572.3342510627276,61.95665388861735,-17.035490329677614,8.555156905482978,19.806009638960074,1967393.94 +1622.4954807336262,2.91779575366358,-8.722104635224333,1.0941810564947383,36.494287614460006,1516893.54 +463.85730383736984,7.582399682963546,-8.1204967724016,-10.613114835853832,67.44981457346792,56184.59 +1647.8322848502514,10.019186168432922,-17.159178181022547,2.698982862130923,98.99732320560616,407491.04 +534.3111973811865,6.326081964751463,13.86602305933241,-15.36939317511402,70.28429378837299,635.16 +1940.8819592291009,23.38767901383534,15.813173447055645,1.4724966640360917,90.31847453169456,985339.22 +1434.7777818341312,1.9835338813330845,4.198959946819474,14.057646088557076,5.8628735342120555,0.0 +362.212838616492,10.934546614570266,15.639637077761783,0.6005164570960408,31.078555991292532,1095927.13 +1447.7188150262195,1.8947185234269648,8.574766554314724,-17.260948651108933,88.39653022992627,0.0 +1286.5173730067934,18.12988200483725,-2.3778422741726013,-18.747282725148352,52.79836569355213,0.01 +807.5832440491253,45.76108009775518,-14.00542416190027,14.419553396615324,17.816617514829073,23619.8 +669.3247959620863,1.0964632836161887,18.339866622151835,-11.028660966474142,17.81044458951632,8.91 +1493.769407146674,8.201106343341296,7.691148021226004,1.027960667350598,76.1069101513767,2347593.44 +1534.4504713097583,9.669570488144528,-5.832643641549797,11.07155837842743,16.637909374259067,0.04 +788.9705281145658,27.57454921013952,-14.855989366733407,-9.871557415259849,50.26935346920669,149057.28 +1777.2087995111067,1.410716883262946,11.958790560223594,9.497847282170802,18.947754932580963,0.0 +683.8889939992843,6.486965116677617,12.080599107731995,-16.98829796277294,21.620161834797596,2.29 +325.7559667546598,37.2359520473176,1.7203672871289744,9.94453157087995,40.33114434932944,265732.1 +1279.7621206896415,11.595490462617716,19.99828365120362,-17.44040195631465,12.69031251500445,0.01 +392.72703109690906,31.600385174214747,-4.54318781502582,-8.914417388766132,66.27367091865615,222684.9 +697.9953156796735,5.345884366192783,17.682597986207334,-9.73183102800212,17.446056643391902,3472.55 +1112.9355074871885,69.21103817591,5.210482738181068,15.656598053831532,75.44935791365845,1901.08 +715.4473202431357,1.427876073916737,9.45689549342232,1.3792002674739434,52.60951690563724,818493.13 +586.9934163560799,1.521699197581067,16.683082043089875,13.723024701014538,35.30297160556912,0.0 +1465.733746830178,11.401757760158704,13.246055061873708,3.2911846551530344,61.809897867445656,725615.45 +1184.598814524132,8.742742716813451,-8.453283916971394,12.27620352428386,41.354558076792465,0.11 +1711.5702468505049,18.92060655804045,14.689389148798051,2.053671187422035,9.16722385392692,115421.23 +1246.2312703798596,2.871522803523456,1.5883497753795297,-2.003458511117646,31.601494624713087,964913.82 +1070.2049811928011,2.831760907066428,-18.206845945591287,6.319083583101182,52.94253648754923,3233.82 +670.2614328994188,31.49337000137236,6.9527177842385335,-8.542043284558769,11.320472830700684,21058.7 +1625.718575164335,3.832925706430649,-0.0120941031610088,16.749486135938263,73.50266810598843,0.0 +554.3678154158611,28.48285180901953,1.4649516111360985,16.32546894661601,36.28909896691028,1697.94 +636.0111397516885,19.11674601505885,-3.5389864451334274,-17.090685036715442,21.27402186686613,866.91 +1714.859474155526,1.4677574946920489,-17.436591058742753,16.67151640713213,1.7970693341975608,0.0 +1534.14654631258,26.43986780830305,-12.791465941157272,-12.72540084196077,9.408027453036375,777.61 +1303.172280163137,57.41571126287264,10.25818405130024,7.250921104736587,24.49074652691936,39744.98 +270.0569554158322,42.98258341725732,-10.630849346718213,12.92417522926808,37.32993990603912,1306670.22 +429.0637129125077,1.0416545897237202,5.109067723483749,-10.35045647508988,16.177575134868306,3463.74 +1099.9234283376975,12.006814811033603,1.6744105354266914,-15.493787188718231,54.953396094486976,19.39 +1543.4100622692038,67.09256931694517,-11.144060281066842,10.247149134856528,20.245042496184663,5180.62 +1035.3815555452818,15.756195049441716,-8.777147862656935,-2.302846198695634,95.51172200147896,1244163.27 +231.12744394660956,3.8076072169003616,-4.657295300252411,-0.5326620658872327,56.915116026080256,118779.06 +531.685997600279,2.4495667818363107,15.2074557529376,10.47444536318742,79.86560130580474,114.32 +1259.780059316393,23.436624330914455,17.652247344774747,-9.848160419945469,42.76042906106578,28700.4 +1449.5907074383842,34.874490334343115,-4.529780745048844,-16.11392690513852,21.28326792140418,80.57 +260.1709628814279,66.86048611358918,-18.15396135524862,18.309588962431583,45.50597966963524,2360347.53 +277.9971562289006,64.77884004017194,4.035934727191797,7.986365867210492,41.81962257550581,1346078.83 +670.3582078214533,4.770460808039141,-3.2969678418527115,6.085383130340598,62.74219020996653,104079.29 +350.30305169581686,16.134438761409804,-0.3073880748186397,-6.682312143080753,91.1513979264732,112046.13 +1175.5032179480563,1.5960201560048988,-2.3219830120446217,19.828240828525523,24.485224412659765,0.0 +422.6635675220248,1.5449879635034751,6.182942261986724,-11.098234705001111,10.558253828787551,1810.74 +1366.7948028225603,1.3897514428582851,-7.822395285321306,-12.876046280868994,71.81450599702129,0.0 +1599.005574753657,71.49711077873299,15.705255469898486,-7.268642203488573,1.0388476545998109,5576.02 +1946.929994753792,2.0177383685488763,-3.150026153711809,9.558181614952588,79.66565532158783,0.0 +1907.1325309478857,9.218333097549344,-6.333543199398246,-10.519585829350843,73.06091500089343,6419.44 +692.0572704235008,7.3475868730598926,16.91779942679434,-7.489541130832027,82.75464502246852,88130.19 +252.93728472171108,4.462130003658653,-5.674283681320897,1.185091414339361,9.971796407448808,19441.32 +792.9419890011824,11.897653172823112,-16.67708004018397,5.997859341393101,21.167261838562982,21159.12 +1475.2642136827758,1.012935474294289,-13.78655746107464,-14.03135494918677,55.613478835658334,0.0 +307.64217669057075,5.758358198255506,8.57179984039917,6.1855683485195145,33.40252688076801,31995.08 +847.4827838085716,9.092600729330735,2.4930205162169328,-4.757792744478508,84.73727556069193,829137.57 +736.4621855844325,40.42115997568303,1.3846856238570782,-6.153790447670091,46.375402434941016,137740.44 +594.8221444741581,25.23055818043801,-16.720355845868085,-16.839278872277887,43.51902836362748,152770.8 +1471.0353585145674,50.0637766213599,-13.436951786081268,18.958451291308208,19.29044161997316,0.05 +1386.3746090438733,5.6571340596009545,-4.151421594062281,7.724821864288405,56.64056348373696,2884.53 +1163.889369261818,1.913423288882263,-2.0797725360274955,-16.004751350931542,35.24886233310642,0.0 +1839.3943514268756,6.340345553067704,-4.93671335289779,-5.35052765236065,45.602553556271324,1166692.71 +385.6499349144904,84.35663898482449,0.109769976177656,-16.79728361359228,27.858170053722137,408967.15 +469.4406040606355,2.683213239210545,9.341934786869412,1.6612838307379008,61.276189952838344,404673.8 +890.2094225949436,2.23620042639542,5.4281734207587995,8.005856577358594,83.9682178897706,1444.52 +1380.587693353221,77.38816560033911,4.451417671086904,-17.737915191481402,3.0349826233948773,94.82 +1251.3427260417418,79.40469274987261,2.3111526904464563,16.886731954015456,23.86070665175058,179.6 +333.27683744227755,1.9882624421419597,-11.962869377060276,-5.034594232464804,68.0574514701682,239378.3 +1925.1646467436417,34.58642892561037,4.185459645151544,-10.608270939750051,70.95729027135945,96611.43 +749.1166696305047,7.235774243180898,-13.661756724062109,-14.805759231549263,30.133296619489872,82.5 +846.150704809569,9.647869757083877,8.516594402524893,-14.174922444247354,29.332090760031107,440.32 +1322.5336382781622,9.939769031935432,-1.9084993514681337,13.991862179289068,74.93438840028367,0.0 +1901.2979314275224,86.44564563108796,3.2584246113673343,-0.798009025903661,56.27754415478757,1191816.14 +1392.8388303858897,2.3405732028517865,14.511783620603104,11.937953732691769,39.50583993646936,0.0 +1918.5919931858673,35.16636427707461,-5.076108321936377,-10.916875609651582,6.4870356947842565,6542.98 +537.6640138768621,1.0264746223316694,-16.009501215092826,-7.2818912458618845,65.6488190473323,58631.14 +1313.857872151283,18.080907059888546,15.655880245278366,-3.4954092216399024,30.00144346716358,196978.94 +1691.9820053773126,20.200213210880506,-5.400648491695255,-1.8192748865839237,58.13217031465508,1845625.29 +1116.244042858725,32.167137753509145,-3.7390591086252063,-16.09282806510727,72.51583983956816,1586.1 +851.9126164928128,71.10902527676818,-8.159061160824113,-18.199894668281487,46.86405400165804,11129.04 +1972.565354057379,32.186237479491005,-3.193220365174887,19.83582449911376,26.07420030558532,0.0 +453.7772127139889,29.12647794347096,0.8388304766148336,6.661719842672147,22.201080980022464,21062.55 +939.673149551582,3.2179184413613693,13.732451555992904,-17.80921573698235,70.78703708136561,0.0 +1772.0727546091885,96.7563369679379,8.80641142494525,10.902605518744362,89.26271585283317,21650.07 +1820.8653437106575,8.646047593555853,0.5312364637627942,-5.5554414081457715,98.01751427005516,2368605.69 +1964.6877828075935,6.83754510991136,10.553872432363306,11.858416604050513,80.5237087045159,0.0 +1792.7256660758867,10.086840338165592,13.911660777162233,17.99208289143403,60.6677530470508,0.0 +291.72264569734256,6.139215968831699,-17.67405654579026,-18.93707158698094,86.56821382048784,130140.22 +1873.579699329479,15.391294298654726,3.689153598158934,18.571709765031873,39.576303526811074,0.0 +970.7009445322136,5.003215156941585,-18.269273858099567,-13.369567073121026,88.33656023670558,9.64 +1372.9145374218476,3.019184810469942,-7.675379949923649,-8.110697295969258,43.59362338450498,80864.2 +909.6965645008144,71.77774390242894,10.49665076691774,5.077813878038793,59.938437007761735,294159.81 +1664.6025379043876,71.72275445485172,11.651413239333488,8.637141973695105,17.82242680619296,13533.3 +1236.6546973809789,9.828581099762667,15.35308844289101,-13.190746454141728,50.2226848365524,90.11 +1721.9803565972077,84.00297903022017,-0.0704830614083995,-14.526954088812907,34.80784696004555,7424.02 +548.788648737381,6.7831952742223445,-16.63449929801198,-8.538156277410401,37.28404297135013,43328.94 +532.9695705588241,5.953299571861595,-14.928590882346317,-6.976027314260058,60.22020001712522,101350.34 +992.6782428526166,68.20438094663253,-10.227621037127651,-7.271115648556181,88.30631215168134,319151.54 +208.55278093246497,18.443103609866753,-5.112691556350146,-13.147527593182687,82.76903997367135,1018450.23 +1447.1353188132646,33.499223471518604,1.0624330242286018,18.832303718410536,35.54737300632819,0.0 +732.8967100544197,6.690948130019698,5.837494469781839,11.922882638903198,73.65035638275432,120.18 +1203.13882318601,6.516333889389029,-13.499859742111742,19.200826087226012,55.21474891468634,0.0 +326.0064088295244,1.4675990087656676,-12.441258010322738,-15.853692269693372,35.4816756166343,18.55 +507.15984688884913,85.80009510212354,-13.080407633926146,-16.976883854621345,90.89772260085908,3148862.49 +1321.1465060394792,2.857050610721283,10.197482080980148,1.4389820045038926,16.964671165831067,503087.81 +750.1927287998775,9.739443157798082,-7.916486087916166,4.578715105541149,80.70981329852667,311343.85 +586.4994966541407,1.6951984386224552,-13.33154337335088,5.406283590614107,22.010787014052095,34788.12 +611.9237014539823,19.674659578880785,-2.744971133230796,-16.26971774507012,89.35287362295912,7761.34 +586.6748565058919,6.04993767245233,-10.099343942393194,13.7518333246352,72.41247748749117,34.46 +1321.1317089749869,34.30234007103806,-5.2280373372487565,-0.411455569673782,47.02933825903608,704819.01 +501.8441860450228,11.396127749019248,12.96056088758088,-5.274442243781587,8.654669143580586,24355.89 +852.8714465238027,1.8153427302643197,-6.644133949027351,0.1775229905724051,18.83650972546544,374735.77 +1438.196358068214,1.0507055280111797,-13.00562412057355,-18.381594225094823,17.330974586644427,0.0 +1124.6079032257712,2.660096333612989,-10.701893017920066,-11.396937124873006,76.39402344395293,114.07 +1275.105567395871,28.099137509938306,-18.62570864125601,19.939601161670588,62.579355512751235,0.28 +651.6325630347474,45.397115105538454,16.045173185304563,2.102365503572292,22.544195334571693,1852946.21 +1878.88677169737,4.815818062885334,7.878707239266185,-16.85836363381302,37.3995922094713,0.0 +944.982646969404,11.79913424798406,-1.4655602243994537,-8.286584103642642,31.62381981729837,118591.85 +716.5350859022022,3.020136561670574,2.434592885961049,-12.609010521774112,65.59658821990732,485.37 +1827.78713130525,57.66157248627642,-9.836360758173148,16.98802268771739,33.70848247956921,0.05 +1379.5213074758967,85.19503620587378,-3.852477551039346,12.248415670722803,77.0916764318853,12989.18 +1305.102553649211,32.05383872176529,-7.20657529826016,1.8761427459214983,69.8017540210215,837069.54 +1796.1223738991025,1.5058213180112674,12.981735551700703,18.071266708899124,25.01784878065189,0.0 +305.37251528849197,7.485781754282059,9.737014653746868,-5.085221849299368,33.05894183035998,76191.34 +1707.8231216136446,95.72191170127635,-8.644780377711182,14.598708008126412,55.396635775368615,557.58 +1420.1558557491817,2.875872703040758,10.4899131164524,-1.298319638209735,90.8781587732289,3254863.53 +847.9870306042328,21.925188726465706,-16.242655364015903,13.945278718837695,12.03677918286279,1284.76 +661.4324165429401,75.35758339876874,-11.89721666653423,16.02753069667806,36.50042261645371,276253.24 +388.65061978680376,35.188987950224856,-15.744828362141725,-1.4814211347857809,60.31851513791045,6507225.23 +1893.933506444042,16.508982658220432,-10.470146923526876,-12.8799441058432,33.13005663480222,78.96 +455.4417859931651,10.313600806453644,-10.95224500141423,-12.305045806610138,29.665683364659586,12658.18 +666.9893643155917,72.04912728571986,16.022181662277347,-8.445481433825112,43.76273894950493,4220659.72 +1443.9929232250458,6.158383557535547,-6.904418468643003,-11.082350630392956,20.06868259357274,536.78 +1478.2743881947868,63.46554294435081,-5.791281055234312,-4.469854213440225,60.74036162767044,749466.51 +489.3836682846691,7.279572203660398,-16.009974990317648,0.2672450572219542,87.95358936110995,359983.81 +1665.4360893781295,32.590426766313186,-17.360702148727036,-16.515455492017175,91.1649202432434,9.19 +1118.5170845174523,67.8309342184079,-11.224497868753968,16.38572874778084,47.669988448181215,1406.88 +1727.222020607196,12.62658240024476,-14.618154459070611,-19.90272665418594,30.0510792082364,0.0 +357.11370172558014,4.166387855775722,-6.215600934095216,-14.468386167378425,38.857253955388025,3056.41 +277.0939983686414,1.2646590007974958,-12.558225481576244,-19.663588958460757,23.607212725753165,0.03 +1346.5826866898294,41.54511132118382,-12.873146961286306,19.46113025542496,60.25611766760494,0.03 +470.0428347976703,17.53960632301373,5.901467311908166,-3.5739887214900756,14.337012782671067,35096.52 +1144.90828231994,3.358081990817301,17.684237294873,-12.158972349072576,32.49935849852274,1.18 +225.3957667121157,56.86215388368739,-19.50073287121397,-15.253138385780032,17.888604935725862,1155497.39 +1603.8726689867603,69.27962488920686,8.22224319636408,-5.1835245068742575,21.321850638065563,270299.85 +1819.1543063213028,59.474686163363074,6.367906888073227,19.03596443411874,67.47411878819356,0.0 +1709.9889715357183,15.960106929588331,3.4021781728378953,1.9490052330726424,99.28123655485476,2865458.09 +1925.035063670753,89.77661249990412,7.69192519243338,-5.831299041368649,67.86646155986696,1046744.22 +1825.5723583858216,56.18381978944361,0.3479797676525553,-5.418365996274055,25.16666082185058,469090.82 +999.2324329226576,1.6162956715562868,17.076709336859842,-15.306537996012196,41.35811638318737,0.0 +917.026775198564,91.6667749052878,-13.671004287993602,0.6802886776124195,63.16654297157442,2890986.02 +1813.1306023487775,12.52024263528756,-1.0579415979652618,-3.032311932009688,86.87168934356089,3335981.89 +1868.4898316430083,69.19453690888433,6.121535316783673,9.154047542483772,71.71093326702207,37143.1 +1951.1047069724664,33.16521901858096,16.347949980922493,-12.322094214507896,15.392048544956856,550.21 +1582.9710227170087,19.73028464186386,-0.502577725419382,-14.506497665516257,60.78845865396984,58.51 +563.5798938944846,4.501370529823417,19.079850135508988,3.258426248575197,20.52045543060196,94381.67 +1900.9174449993004,1.132556943941623,6.259314666012088,9.680298562948014,38.058369093897824,0.0 +1904.8546402691952,3.5766175634973716,7.968501531301171,-0.0999895718718013,96.517297027204,5190992.51 +1399.0364550433487,23.53101419080834,12.728288882811968,11.601323010813394,89.31607365776449,199.71 +1743.1044794290726,53.23899072184864,9.35673216264461,13.64345961471039,26.42055165299508,26.63 +1210.1175580951142,1.010865079969277,0.9050768721137326,16.665186506179786,73.12559325485483,0.0 +1899.428501741101,2.605838807748684,10.904682875182864,-4.872837598667168,33.622416542245126,973248.96 +369.08551386576414,22.188882521461036,-18.570681903909833,16.17380893224746,1.777963983780119,49147.77 +1755.134653672587,3.692072398892848,17.310691616581973,8.36215510855677,85.16148458256767,0.38 +299.90653226685083,1.920461955182167,12.925994580609483,4.996498617562519,82.42682169599209,103480.35 +810.3926939924369,1.4583850256819286,5.506447006096082,2.1509707162595815,30.1218186482506,494497.44 +443.58615670747145,18.869395774611267,-17.249821118742457,-19.21121099619164,77.43721589559279,302583.2 +1062.443166433242,15.47817077548937,-8.203046067769368,2.4132192931680274,4.117245177904357,42261.49 +618.0430843864459,52.1467377180705,-9.85487249175478,11.159648892766736,54.43861377779809,251743.83 +1913.7302828011948,4.262607399363955,-9.719000706989892,19.534704930358902,98.1767946126664,0.0 +1206.778400576137,1.876883155551821,6.884093518030143,-2.6754132710240786,79.05935998657031,2333660.66 +1815.9153253467043,39.656116100979055,15.045534955697653,19.60631340910368,57.98064644593464,0.0 +700.5052442920717,94.70476913168342,7.265209942833595,-13.156454559470792,37.216320425100065,219469.11 +246.75960790380947,5.257497577356374,-4.449610585726695,18.327999132186218,73.79893166224495,792.54 +1596.179006631059,53.78971317467332,18.769456841167056,3.5862042309164854,97.56544287653053,2845079.25 +1464.2797879495497,33.50355884635699,14.503294261847328,6.502783688764451,20.01996258155411,25539.01 +1181.8849622135483,66.55345247508657,7.416736374801447,2.9472065478257203,5.903807099261206,30492.59 +1667.6169135125826,7.059028790127317,-4.10137404432426,19.313855777510103,38.34946005836666,0.0 +1712.1518707666385,1.594421014161406,7.353097646114142,-18.228107164491824,52.170459036457785,0.0 +1258.2259544327128,1.7246954305224145,-3.6801954779190105,-3.5814012369331483,25.276616646594235,692689.08 +1938.6700253370864,33.60445380438339,-13.7925198134063,15.009293304705338,62.03950721644118,0.0 +1495.4815057111891,53.29220367037852,4.753388183645244,-13.316287116110615,31.28094623492606,10457.01 +1418.3756770927316,8.204147916587097,7.924091409230378,2.783760503332275,98.2100053465627,2102316.0 +850.5592266055617,1.3156542666392654,-6.027850965121151,0.9431051970037574,27.269354285693495,549153.49 +204.0654414800138,1.3596028952038437,17.172312693606777,12.297203059054382,80.49500050010015,46339.07 +633.6968130095204,15.747104158737974,14.170382454473462,16.730117867854865,96.49904012538236,1124.16 +1575.0569122663337,68.74620051153013,3.3141016950804048,-9.64659978412342,50.45494150481972,194403.4 +1477.768257986913,6.297483342418016,-17.590569573620837,7.725762227420749,20.72600567881591,130.43 +795.8398606941695,20.009656366670228,-19.311366507029728,1.9075194866876943,89.14762721826013,6307128.94 +1326.04935416919,12.134322631011198,5.595451293165663,6.511453916420944,40.8317067424389,63174.77 +551.5174630516469,60.18880057331732,12.552235205235558,-11.984887256879832,54.868322749039514,1602355.44 +674.5298946842793,46.21417699230319,0.0141133380448854,-9.093064403964654,5.854966743770314,8957.56 +1905.334569024494,2.504362086232421,-19.0604828732231,1.993857129722336,35.46236256007912,32115.09 +943.7250312840702,22.65093830203029,-14.206844731434828,-19.882176811693665,56.03955362616739,5.53 +640.9776697379382,49.545745970452536,-11.55020296530954,8.657010959692219,69.60558427442513,658814.37 +1076.7948443101843,72.52684133517867,5.11022934871483,-13.537272136039103,95.16347344963756,62426.57 +896.6285836172591,15.130534879944538,-0.5576189626659067,17.25207414627971,58.76615656539306,0.1 +1513.1522672283902,2.2481354314901134,-15.911728296045691,14.424287474118309,27.868453145067186,0.0 +1931.808991683586,13.075676525019084,0.0669761820383385,4.934045855547158,56.15970134772156,572502.27 +1265.1273640238453,21.460410416779137,14.779712934311746,15.64230682175478,8.021226122192209,0.01 +1264.064936486447,3.507342057764245,-2.435399738011927,19.489802273646827,15.661643281310374,0.0 +856.7009457022696,88.30859278489257,-14.009504030216098,10.998259811924193,35.83219182483095,723039.57 +1216.3356775555317,2.875097007411304,3.120315778273288,5.065298847725588,3.2034286602724227,18458.41 +774.7919594968488,66.48214810014257,17.17543779593139,-2.028730019600853,8.457098320232603,1318275.71 +201.96573376221548,7.0853533736524845,-15.363582229764551,12.5424920123219,1.7269533156818744,40422.33 +1758.973111181273,1.002555282550159,-13.743690071635424,8.177431757856123,18.99716574430479,0.0 +972.9993539390694,12.206134374666512,2.6737084493777363,-1.0944003850216966,82.72851600216129,1119777.59 +1085.7592730971942,18.053929068217688,-6.400131278136443,0.0013870956582806,35.78893530774761,481854.1 +350.3016477666707,54.79320527780509,15.822424450466375,-10.842561608300034,90.3427531760814,7426201.59 +1706.7989241297057,12.053869267648563,8.510555875634505,11.54360289194817,88.60883036465468,0.03 +506.6067266796627,1.5426193131604866,-14.116487752765464,15.133231324271389,86.4821712870968,0.0 +939.1180858117688,71.38831291520704,14.828735468508729,-19.34065689077244,21.974940311296752,25302.0 +1712.4779847149864,13.51168717609457,5.6916816707774,-15.524043866358088,34.896900321165255,0.01 +1024.0092923843351,3.491904711110827,-0.2546264617084892,19.64942971731618,47.36465311188682,0.0 +1876.0742038396347,62.76495661691881,-9.738142302612376,-12.875698865496158,43.72770639792581,15499.86 +576.7657461572414,1.74512662593771,5.988424316529146,9.46113899893839,8.910122703226138,30.32 +1487.4190939185885,1.5666272558167025,15.93943336044887,-0.7662910514455845,24.64999620873491,281445.55 +1960.397342411109,11.74946758916268,-18.460949708154644,0.8540483231130391,62.401514306177816,159368.29 +1189.3045469965596,17.773315718990286,-4.993999831517391,-15.66489863010244,67.97744435634434,87.54 +1445.9310175591872,10.51764080340551,17.42638048749189,-14.48609035674746,37.10079488710802,0.16 +907.8079872818151,72.10810695372423,-4.6836221662531585,3.1164206907993863,30.402575452986294,86107.21 +1552.407211505844,3.354607158920653,-18.565187932229342,-4.89480979301574,59.020537746746065,58803.96 +1835.9733017427125,95.60269868142196,-15.942235042934067,11.89848355002526,66.68326192133648,26431.99 +1465.5000206909526,1.0931975982833402,7.630401383176935,18.879123834555216,71.38743539388075,0.0 +1884.6716804857624,1.7261080951250525,8.004820405838103,12.492674227149427,81.28518729753243,0.0 +1259.574773586157,2.3515413076557024,-15.39819845637266,-3.763359315445358,58.80367067143886,538049.77 +1238.8473928117332,1.4426183567291913,-11.231359578579363,-0.7127758906755322,38.508518891127466,1166778.79 +748.3292985964796,7.523773847062738,2.554917546992783,-13.732479362505805,35.44104486544465,916.58 +1477.3294840948145,53.79530218496704,7.461319391364349,7.827666213136943,4.399738743867822,5895.79 +1787.5145391610797,43.80449256151327,-13.728390174095178,-2.105662483787212,42.21957209699645,658438.14 +1363.3692070320762,30.868371056745705,-1.7447063263594045,14.295348929084955,87.00927764479523,16.66 +619.4705970774493,1.034710375258358,2.4814079391250177,6.081185024877462,63.13862014857795,62226.77 +1179.3964064990355,53.878072892653904,-18.011858639295106,-13.17827035386076,59.71344014867203,461247.07 +1560.687350512547,6.208664379469722,-11.049740360111958,-3.560681863155919,23.157537346897534,683349.17 +1890.8539667709551,29.058655016182595,16.755829502121564,7.077959721396954,60.01173246832279,17699.19 +481.8728891369971,28.433961361534,15.199262125260589,14.316891416236754,18.86072353562352,209632.1 +429.49476373980906,2.2648636125964465,-7.100675343775853,-5.967740256843599,34.761283162144295,168621.26 +943.2983544192308,10.734694644868378,14.71908321979386,6.779770361097297,58.86444189934766,34319.76 +426.1001050326995,71.18064481444573,5.302079956564261,-13.05628685936262,5.492902848370821,79645.55 +1964.7720425092132,3.358128110354357,19.2648869393824,16.188508629852546,31.82992419679703,0.0 +963.7478611086063,26.918800013673675,18.648757875353898,3.0067921319453905,9.763872181383288,368482.34 +1160.498934322229,82.43318470219224,4.6775119872262305,10.74400887820623,17.231185376060388,8582.99 +608.7580063269884,5.263351221048767,-1.2864227474293166,-4.125942087121537,35.86249948874223,283797.68 +1008.4270223664728,5.9602893738896405,-14.308767902451727,17.621647394221704,69.58924913524895,0.0 +1972.4490827501957,8.037574629655575,1.2140279956362798,8.804272719901892,27.475126412714065,5.34 +1079.6368724605452,41.50290376503003,-4.06805296282184,-13.853702525633826,2.987964509874092,913.32 +215.88306644807517,7.56082947962222,5.824275623016333,2.007421594642995,40.50596864189299,118879.34 +636.549554451135,9.386245562468192,-16.420364945075534,-9.129921126891851,22.88087525200339,23622.16 +1961.2186948613073,2.7837804436026348,13.396710413631428,13.334382444435708,78.04990082299747,0.0 +1980.3215241393184,94.77420076825555,18.684579664760335,11.312976081003514,82.3747040960955,349100.75 +578.8875615890702,60.912764180228145,-11.625491183496807,-0.2181919929498965,67.42616331600762,2639338.88 +1307.475358118936,15.867504350407795,5.311345876129296,-7.922935012003274,61.68625970349281,387533.48 +338.434994909746,83.39118454993023,12.077537286497568,14.107478630589483,73.3318428834827,3247064.73 +1239.3949564003324,23.65895365289918,2.176371431580324,14.019373138349517,38.22294694571344,6.32 +426.65726267558733,82.83450188979202,17.417476061474936,0.2094356309413791,65.46360774341666,9310079.24 +1673.590742556784,2.1041259546837683,0.4746632321494459,8.690276407806747,42.5529888610384,0.0 +1891.23497768404,2.8243259333977417,-9.178104327984911,-8.579974152978256,43.55304526518165,14214.11 +511.37625448906874,58.93386545491448,-1.1359922767622963,-6.046004249531989,79.0844140375983,240224.29 +1032.8819034706833,6.914308984433155,-0.4853497947514951,17.76224047280607,79.31666646058403,0.0 +383.6773972543415,5.524785334876233,-9.851541363574643,9.451073503955492,40.64442451148345,10391.53 +810.452012731355,32.2604716691426,11.478111650927548,-17.115178680791914,93.77795527844071,4777.93 +317.1759585689477,18.22431948720448,4.709864620592099,-1.6906631776907233,54.612583340624255,178173.0 +676.1837504313687,4.876892689454757,-5.185261691790646,-4.17020478541259,49.23014928838287,465573.9 +1982.4026007607429,6.247714494417343,-3.1337508793942925,-10.760429704186304,50.65318593757936,272.78 +280.2858811785233,6.557941173319622,-5.131955256464251,19.79767202891438,78.15713210435275,349.95 +1746.1429933136071,1.7892155178047742,-2.0840584924625816,-14.568359968711745,96.78667511676905,0.0 +339.4146399573887,2.878113118004775,1.1237824184403422,-7.429320739374967,69.31563917401232,165952.59 +1152.1944760112483,11.886679779268947,-6.762921113457598,13.948743738461848,34.78768587975124,0.03 +1013.8156263692222,36.61460088973692,12.726270976083743,-14.70901328035744,52.163408613297335,6283.13 +1876.7983880371607,6.888054407269655,17.134685126936557,-4.954444298506759,31.413139901516445,138067.25 +558.2897521131613,5.843937992449351,0.9120119784831316,5.367702421337914,65.71399913243891,146514.62 +523.4276276833432,20.000106444051234,8.454511756159583,-6.5241696427063545,99.92270287426794,215716.6 +1547.685359422098,2.063040376365513,17.221567227067325,-3.647171217831402,86.6288326912812,404615.41 +1506.295051580637,5.774317353940274,-12.322419276306862,2.0045368383969464,47.8018022097536,1173154.16 +1458.5271868870375,2.6077891399723456,-12.411098459012138,18.107475781182487,34.87626646557677,0.0 +247.0288091102853,20.10446259629206,-17.095558802146996,14.836276329041825,45.82077454359951,2190524.93 +667.9274361048356,1.6777530223237676,-2.3158803012103757,-15.52148396898902,32.30772596818213,0.0 +1711.811320137739,7.864038648457689,-6.754101456476169,2.7771806571324698,99.1719754972941,2996202.48 +1281.544618622191,15.572707062630997,2.4213620983430673,6.131869699431967,20.988960240652094,52183.65 +1283.9508573179269,46.48907293498925,-1.9572522410724336,-6.96952678419299,81.1662915420721,575563.85 +732.649889728661,28.12564901696572,-12.392243687646816,-9.432119174938704,42.020273159205665,79313.88 +668.3115594025062,76.8645770896383,-4.352787405303586,3.9093264039896702,65.51637094445755,223767.26 +1903.7987984328583,22.895852283824116,-18.84412658292016,-3.400874493616146,92.36007001594852,203603.39 +1509.959501935782,4.993203540697432,1.495390249148678,16.202595601027348,59.616610533321506,0.0 +428.3590120433076,2.907018295436738,-9.15759407656516,-13.457822368078316,62.06617585154824,2430.39 +1887.872495858775,1.2976716217138111,-15.505646615314998,-18.356645495214124,4.5648040025058805,0.0 +1248.266273272499,3.590667852272626,-17.36572544199187,15.98465197129061,13.753776837060563,0.0 +800.0522605227586,1.8780077394085375,8.57795629373387,15.84499491201816,54.511071593954256,0.0 +914.8510035192772,5.475824940323557,-10.106379304050645,-3.329192844218065,37.69369903789031,542341.51 +1505.7281186347127,25.41887225278101,6.351879046928199,10.155565327484698,61.30466920067812,1739.1 +877.2907730349505,24.21408420942102,12.620340595363144,13.828605629365228,39.04031818486547,401.2 +1241.740638413493,4.328454520756173,-0.0005700314333711,-9.804390118430351,18.32118055627627,5673.91 +1478.8990939671287,10.401709994450869,-14.677893808950891,6.1777624258107355,79.87895505715836,77507.18 +551.6749951507361,2.7135831860590622,4.581914701942522,9.48599687589418,84.66901924310898,1989.63 +1899.6346752365887,10.138026849401484,-17.135699433955907,-5.70031044739999,96.83518776748124,354527.41 +841.1109885837377,10.475234464754193,12.68574127059034,17.83979164177545,20.871704447590957,0.0 +954.8745627384458,4.004918455822785,10.461608557048564,18.686104275917273,31.83523182740436,0.0 +1457.325862162077,3.3032054961377892,-3.916664469677178,-0.530884976728303,28.798734117944324,1091401.15 +1295.8131608979754,91.0225352968509,-9.236189720068086,-16.960004328129102,93.08095486751974,10222.76 +992.2157064905226,11.864433929815425,8.382178150458671,16.7587452934705,60.143287480023986,0.0 +1369.5356725414244,13.309240201349898,2.688392357430671,0.91897694864,92.32080408283436,2114653.55 +1825.09095362968,1.036545046953966,-14.196313502827412,-14.446914703308774,89.14297204732624,0.0 +1640.5105099617535,2.3103701416645492,10.367482933455058,9.283890651592737,25.28305869402339,0.0 +1683.6662179185926,5.16706498544268,-6.640993124227479,7.486144472218643,43.35466321712141,1218.02 +665.1351354211633,85.49908855291528,15.753899703162308,-14.405667741735137,41.94866605060729,2164286.26 +954.9260287357476,2.2412147322866365,13.178734601657045,-9.005782663857055,49.203290929369125,23035.78 +1196.8744549773066,4.041842839335615,-8.967472795998525,14.570452528514224,99.77229372426186,0.0 +279.54347449066927,95.56832791694684,-9.789850445233,18.783409229460393,18.203583172057662,634608.25 +1585.6259246791842,9.166790049932589,-4.084419703396005,-3.7899171989687064,77.4712343401017,2328057.01 +782.23416394716,4.333268012244018,12.179326697505209,-14.616551010988983,23.53475510654345,3.64 +708.6729404738257,18.56597840522501,-14.773837473661642,-5.9207962001018855,74.19951556317746,275489.96 +666.7256168410635,9.8311555818014,-7.357958352240677,0.304691898356344,21.068503507075015,150010.13 +710.0826777561159,82.20499046140766,6.364317756660958,-7.98304292311232,53.181267072393155,263416.04 +808.4266978840981,1.4668648302079887,-18.66037774753689,4.452010189552245,67.10968599308099,20007.82 +1288.6842045370863,38.114992709461845,-17.76399381626042,-19.683058665074093,43.75601509870563,45.28 +1250.4175794201135,3.615536555710827,10.486843905708293,12.659056698978056,96.65014124964544,0.0 +660.2811564833756,41.05241040890013,0.8937152584801877,13.7862467703847,70.84944322903556,11086.97 +571.5636978317735,49.59531821791188,2.3040930378775126,11.340203933961028,16.57553478032165,10160.48 +1687.4447421284422,49.93967549978993,-10.0454412241137,-7.862613244127696,37.84200586248963,304093.46 +366.9020078174598,54.1241884841097,1.2713419672269444,5.294875099533645,32.08449860516395,379426.3 +1123.0811141616691,27.30580683019946,1.800227358856179,-5.391395785192179,30.25467158210354,282855.62 +1137.009573540697,1.9266742515755548,-3.4491439005216673,-4.429015381133552,21.963481774036627,427844.75 +1233.446252260919,1.2700042871278552,18.576930334127844,8.364010573273536,19.386139876832793,2.33 +1794.1702086328444,4.803197976045133,-18.029439395327884,13.741625597672677,87.14588518174224,0.0 +1323.0450921705817,9.77551659293474,-3.4028782297301907,13.239665469816494,98.9440914371438,0.0 +1952.540779246442,4.029413169079773,14.299466135739737,-10.756496922906184,16.84290189780648,3.23 +1768.4355500277095,30.508009141595313,-11.749208987013496,6.321149476154839,79.33444850607339,195889.95 +586.5324670769808,27.853960509949783,17.39989912432371,-9.317220132107082,23.527253254876474,1252185.74 +634.1299584055421,87.87169468178503,-2.9803672132464065,5.137627613275448,52.6453103475232,212797.68 +820.593444647307,6.3262475335907045,-13.736041014247087,-5.311806268929518,20.516523893022654,118022.49 +904.7259471442364,37.27823326996485,-16.276016495292815,11.598348382941236,27.839923186683887,82022.3 +1195.3912165538518,30.36686379284821,-6.917216710898431,17.49873098338202,41.65871159841207,0.2 +618.5227392134099,94.95088882693564,16.788957472338446,-8.400755450649292,70.79938568586431,9935834.82 +600.2213260047782,35.25579420270393,17.563824491288635,14.75257304084032,47.92914618996754,712661.21 +886.5019232625432,3.691042632207292,2.5305792412617745,9.600021881413245,81.19539915522174,114.61 +1409.6416037829536,1.0728643100075488,-15.272387364467924,2.6409274600384114,10.56265124841195,125621.67 +1438.626103573139,86.36391254567644,-1.7363012437418135,0.9987975411084004,57.613099843363024,550411.49 +1957.0101320725212,27.048182477709144,-3.2896123103473407,-7.227783214000079,11.563900465497593,169333.2 +564.3477810592652,42.19036240396287,-10.75728130127176,-11.868597466085433,12.662413879668632,86520.69 +907.1464733425652,38.59120227609652,-16.958706653933238,-16.664551585334593,31.581453256566213,32496.72 +1936.4194962903089,29.61571212841499,-4.737047696799412,8.497959215697168,11.392700312967776,2082.51 +1442.015736797994,31.838231568872583,-5.125795479177655,-11.10235122853652,77.77040861950869,82280.08 +1266.1013446796344,72.26306359439066,8.159187956637691,-0.1844891949763472,51.23179881894012,407364.98 +1171.3628925224243,67.33216265111442,-4.230941852066641,15.592596466769852,64.81102304832507,1121.68 +335.9186842452618,5.73394458809815,-19.474649742305097,6.844255490796072,6.570001111309371,386835.56 +1808.0728558686385,1.1532488952919333,-19.199252466837287,-13.23060824766198,23.255802580146252,0.0 +1325.9093877471937,1.1949870172692163,7.500618742521397,9.378153293705122,52.80586710721904,0.0 +1229.0013342704613,7.821260104213104,6.431430740892581,-11.40664476180727,9.1190766021232,709.04 +1171.100617979317,46.769105077235906,-13.585904622509345,11.196377615627222,16.897921533365004,3070.18 +905.445573178001,49.57040340657017,14.649002288896282,-16.891511312276883,3.1662690634250144,2368.61 +658.396444449607,6.438417904964739,6.50490952270498,-14.331634002757578,91.23736427951452,1357.91 +1559.5795736020716,4.010728376303497,-13.837799238916322,17.367615090626746,43.69265382971924,0.0 +1117.2215319709917,10.308675972196326,-8.495483417241005,-8.788617094038864,5.457023581816706,16142.68 +261.09115812059656,46.24730328117115,18.946513369545418,-13.974567879304654,46.58869039388607,3795289.54 +918.370099589894,18.749610030642597,-3.690143208423229,-11.403686464438533,88.86716508724737,65479.37 +1871.4865488010985,1.9037575001528972,-10.529114775770338,-5.5560106818018395,19.80496261075075,365675.1 +873.0102107735531,5.302343844907632,0.9652143965482728,13.504635346359928,24.548641316235365,0.0 +943.8194142660328,12.907788194049594,-11.777930685672027,-13.899149857521596,98.24109181604186,2496.17 +1323.130021499064,11.926825428219049,11.668675917076468,-19.369971417373073,85.53705463259485,0.0 +1643.0146468685882,45.84247324351771,11.77209137492737,14.59965913760598,55.30423228408329,6.64 +1403.2300118684818,73.17176445457984,12.033727389931409,-8.013652573690528,19.415243435511815,80534.8 +1730.0985160213038,1.5882767859406135,4.690774957230981,-16.923314334436547,22.73295732477324,0.0 +405.14705667325694,2.8107044463262945,7.761795719715669,-18.88933144196729,86.2843645066313,1.24 +1864.266595973568,6.085745985587871,-7.143866764898683,15.983092454422383,67.87795930437667,0.0 +1827.0594783404947,3.9155805531316368,15.155517659034777,0.9256156870482668,35.74345861940395,675132.72 +1134.467455854058,6.55512518458207,-14.233531536559475,4.419965671357118,3.5708185195404414,15049.11 +1324.5360280169618,1.206264251064997,-9.820514588146132,4.642243136877444,14.466129023168111,165465.48 +583.0634903625231,1.3552722323471826,19.707478428980775,0.8877534897114314,73.19370480331897,32214.53 +1006.3053883665,47.50320978966143,18.415868560218655,10.770451188996349,65.22608637419685,1258969.99 +564.8660496556622,1.6038493343311706,0.3048255456751381,16.24344008890107,36.51942322376179,0.0 +239.55802209383512,44.47850935920733,-0.0356906125334877,5.643093458764641,59.60390548319389,1645321.89 +1965.6255226286944,4.102267757356702,-15.32718485183076,13.755365606893196,75.75669568208204,0.0 +666.4637282783691,4.153811073601224,6.386000006970258,-19.615367298879587,64.73884225128828,0.0 +1267.5949560161034,1.5903549181050207,-18.75870169835503,-0.7924714423632206,24.711552686738557,25826.9 +740.4506903681535,1.062984086598142,-7.426141630208178,4.161902945027509,95.19893419506172,799473.99 +867.1189163787827,5.135434766264212,-3.264377965953895,-11.950738091143492,3.3392117267344963,166.7 +915.9708054480948,46.85045495505682,15.75941022460713,-13.58812384354617,56.07128630467414,235795.55 +803.0841163845639,69.16890955150096,18.738106525114823,-14.550251103097844,23.107675617006944,1301002.64 +1347.3195668118844,1.3279175549072224,18.959921880086057,-8.607196551267254,71.0445373549812,254.41 +1929.685286879491,1.1529650100447784,11.95348025228702,12.9364427233193,56.618737323632494,0.0 +971.5423700112194,2.0777880312547445,-8.400114605272467,-18.89404962499572,20.374618268186,0.0 +1951.9881032976773,34.08628080103971,-18.185970553640935,4.097111051521414,51.08291075783726,93271.52 +1402.0350272206097,2.569008445823174,-2.9752933902513057,-17.273845358487492,52.45419641511835,0.0 +1292.8451510378163,2.8948145631047306,-8.104149289227443,3.7278522260343383,42.609857784891155,739271.36 +626.7869332380615,59.96328206916049,6.207602120890181,-9.911686419680624,5.175052218717214,15371.04 +313.25727061888546,56.22093674945577,-5.157665716463082,-13.70630173982319,21.47094759298686,459595.4 +1733.482586525292,21.906774552052607,15.63023827615562,-1.3666890612910132,96.91283158681172,1083241.72 +1233.165915099684,2.128274105084358,-5.038679676594677,-10.755746396752164,19.660533535556052,33.48 +945.9449523647874,5.784933611439209,-4.880153004996157,-4.869316472266791,46.41754677196476,593348.05 +1661.54117975927,2.9672546036724636,10.364748605378056,5.322027036102828,30.109994322666186,166729.67 +759.0446886391738,22.06435130670613,3.601076324592052,17.44919921460464,75.92791266707124,53.47 +1610.511060736077,36.29627931611618,-9.788462773224447,4.712856360338744,58.23074840807616,420213.43 +790.3349037304346,1.924276357838267,7.067582496141136,0.2827287059821204,71.82541995353665,1280628.85 +1857.5861355274944,62.50455474690472,2.519748523722982,2.280003425088144,64.06070084082992,1115877.12 +682.3403740222446,8.426589044407923,-15.837622695791866,-1.116280660587221,50.86621279161139,159346.51 +447.5974116342281,38.90556341606652,-1.3094464577943477,2.5124258251153764,96.10165236625782,198163.29 +1456.5740750289413,1.2684554450700616,16.7481628392086,2.807096131132343,70.61514256894854,400890.27 +493.1250555165874,5.262139705176255,-11.528259044339237,-0.3121979759074156,69.19374739801147,346763.16 +1908.853490520174,1.0704389303686983,-3.4153108964500145,11.534880282332454,69.35754997772771,0.0 +1379.9992022999588,27.35076404460375,-8.962008907755482,-4.370187356746715,47.21247760061365,739487.94 +615.5491903121467,1.44178977243786,1.47681213721075,-15.658105939561723,64.6259605649325,0.0 +575.8740817137717,4.748665537862804,19.004517966468217,5.722086663006336,60.8458651692724,185893.16 +1862.9750704167589,36.601371669483584,-7.605829796249002,11.843854444642394,88.94079209156482,97.31 +1294.1442431298035,31.472624257624183,13.313408486387024,11.200710774064726,97.90621636448653,2386.8 +1808.72481201035,19.08003823861945,13.531834882223084,-9.914734538034974,48.820865860048144,46448.48 +398.4053687224854,24.436628005089837,-9.623374657350029,5.880838672177333,60.48162522188272,539798.65 +1865.705952042517,20.06608512105693,10.90426617676548,19.943505662254186,29.73616000626589,0.0 +1136.088761589359,19.16690181002705,19.52487800038722,-15.817397057852368,84.69790070131815,2296.9 +1403.159449396431,5.003907582509789,18.16084262714153,0.910212229546512,71.35716132691414,157156.74 +871.1758487743051,1.13849573536965,4.229617000242798,-7.784502214130642,92.4745627596267,147211.79 +306.45257961048713,7.649828512882197,-13.930433210609422,11.648929630253033,60.89564506396448,206007.66 +1924.3503944152924,1.2328757297108697,-15.22632465747154,-7.010892078513535,71.15642670265844,54831.76 +1990.2769923952676,8.664326114822583,-9.327158705751687,9.343337070851147,10.419461582193206,0.19 +856.1843277687973,8.475356078784714,4.052518766574464,-13.581828076251607,61.06614594399942,1278.25 +1898.9622735535631,2.2774197078097,-4.550976879267012,-17.32130146045842,38.30178273461259,0.0 +501.9073237308156,37.027403668329654,7.960837370746603,-15.83590676588505,51.301113279888995,77981.2 +478.43200938543595,25.610536941015894,11.5111356099033,-9.58832744259016,33.3306727926994,240223.12 +331.60131201650864,13.154643454674426,-12.783134460419202,13.980571294097215,29.437562418711387,117427.24 +904.2849336514712,71.09141528699993,16.211764397484902,-13.98264872495874,82.25118576208548,1532092.23 +294.1440503268785,3.7529625129818025,-17.577078623563047,-18.66438088018136,56.20453476549015,7764.89 +910.382941303214,3.3424463334676147,-9.402872740791492,14.13843322683366,26.067945297295996,0.0 +449.1027715694028,2.327403221432054,12.592002716971056,-5.004709731310473,76.9046925958239,351457.07 +1514.9500320313232,12.270989247707323,-12.65071128045145,3.5493590524901864,8.405428130163255,102181.97 +1700.0527688055345,2.574627272878686,-11.194495013381133,-16.648058422293182,30.021932383986837,0.0 +1438.0677700333183,54.6752977515211,19.0262544870199,16.293781743979487,34.29419271278012,3815.67 +560.8894743850806,4.060874247529584,16.49457350962184,0.1777240929767298,18.581093295988993,42249.12 +1580.3267472343202,9.590958691367163,12.510373522941386,-16.41721642153735,84.42632942347637,0.0 +649.100354659895,11.455697308959818,-13.047956601343175,5.352449942368227,67.71595891531209,103656.01 +1567.0794745433493,4.123757276410614,-9.794469655811348,-5.377371394037227,67.36011115551295,1352423.55 +1221.3156348135035,29.98052558471553,-10.593291650668943,-5.8637178945225,59.67802839051175,508823.25 +860.0825293241775,24.21842367680682,-12.435026446891966,-3.671256381739716,38.450944078241896,192016.67 +350.28628042890386,33.237018317872135,18.81786038174011,0.3249330331379729,66.24219697058044,11806425.9 +1689.5171176526464,16.286994119904797,-13.358873124790144,4.773038622848209,73.89213071729353,452337.18 +1891.3752574368057,8.324623190459342,9.868526964851824,-14.143484655609488,54.30963155605586,0.0 +1398.6520040011476,7.90376816747984,-17.959409340917244,10.174651862969045,47.60159190647175,22.03 +1936.17482004819,27.106230261069644,1.7522554206462315,-18.914261477086363,23.128916643869022,0.0 +1881.400554277384,5.676367202976354,-17.16600273763897,7.966914307564434,9.315773715941171,3.16 +550.2951214467565,7.490650984041216,-17.52985869662496,-12.66810081505268,5.0889084197780825,2661.65 +1516.1822274767842,2.1249183084362775,-10.790700246622588,-2.127037986016176,71.71024171976927,2779395.74 +828.7486749878501,22.869723432612776,17.024135723928634,2.462043250364059,35.51607297769492,476933.01 +1077.5312490181268,1.4251136454600342,5.55320669166548,5.895192968065466,71.13241797450058,98828.27 +482.5377760679224,95.72476784629576,6.056060160819778,11.641415795879691,51.28271612393427,929367.81 +1954.6029705037745,1.938541730265001,-8.09377250210487,0.6478604511642461,45.24175503142109,2521542.95 +1507.047289537535,5.833870604695219,8.944658962616195,15.205086072775009,63.26377498928456,0.0 +680.4349573357426,2.9892433089031467,7.262099841020357,18.202043835021207,19.14272807866273,0.0 +868.6490423024603,3.813434154670804,-1.532582396778519,19.041874396758296,97.9868403990328,0.0 +960.469268291812,4.41475389716187,7.304216193761253,-7.217541120710873,33.692409604504725,195212.74 +1545.5607034589125,27.33211743923056,14.685417586194532,-18.713032781988986,77.14933708371049,0.02 +1866.255080185252,2.256828441321311,18.41522771970926,8.631870804158472,25.538896195750176,0.27 +778.592239372229,3.3706455417058483,19.86375616049441,-9.92409207485711,47.32516543988822,3623.09 +1050.5001589047552,1.59372057905571,-0.4675137083555647,10.707460551554975,50.431644286649984,0.0 +1267.773631102462,4.601717962705119,-18.689874015037837,-19.79997817911056,31.35918768779999,0.0 +908.019186320568,76.29278816277322,-10.832873961730929,11.087328097937426,35.513633954726764,84594.31 +1107.5263820582334,5.757288138070823,-12.126042445127348,-17.19423732565327,44.09349090763704,0.0 +390.2737322361836,35.86547674381841,-7.978449996505557,15.173881283287956,83.78310715800595,428793.92 +501.81389789629895,8.383162333132452,-5.579913502090745,6.052490818041858,50.50499755847357,74307.94 +921.9822629962608,7.9286522221277105,6.747090749000595,-13.5315139146636,9.768947867907142,101.81 +1846.8902211869945,44.45717763135867,1.027558371327375,0.3128776630420127,22.45100559301041,591000.64 +828.8444823403405,1.1314592236370329,5.989783344350688,0.2080547959618428,98.616324182321,2044767.22 +649.6270554890245,53.67511683225954,18.873581821376323,15.161543238756362,9.89734769372904,339349.01 +1537.1519975286967,9.341506131583886,-18.03712182978112,1.2934690846215835,65.12514649581703,169464.14 +1908.4342989378968,5.037956002175001,-19.42405277702477,2.0190768831943995,21.90456704029604,15529.5 +1026.4225107143857,65.11332932343836,6.6202176424406645,-7.240005076956235,43.76111757518948,154797.95 +215.4889200209296,4.783201796724118,1.8501506015929128,9.140171493765257,36.34495327067461,15679.63 +1438.6687966561124,90.23909063919224,-0.6900334778272699,-17.98807191370379,97.74057088733814,3419.84 +947.1094429090608,74.5955634270569,14.133100571278725,18.718123417781367,55.57596063160467,32419.48 +1412.5619659091874,3.4343648013804926,-13.644969911179716,4.250035951173579,25.7414555771482,233473.77 +699.8897284925664,4.799604365191996,2.9447747202963592,13.826611596476512,60.75399827803917,0.2 +204.3346588705323,42.1051377030648,17.27708624844498,11.242675221412584,8.068306240464926,492916.38 +820.0931937420868,2.461615197715465,-2.1658590215277096,-11.273902245033357,92.73810777214788,2206.22 +1468.6262167032949,29.10067938444806,3.196628270364701,-8.436957509728536,35.08001339798119,202778.79 +907.6039094165408,1.812601328729223,-17.20002581232201,-8.879550734228392,88.4536831404252,8108.23 +594.5134513758068,2.5775734725194983,-6.032677750843849,-10.97927757730406,81.11132516438772,14987.19 +1035.212355441383,10.023320542558183,-18.34406771604309,-19.36370831268861,19.492083002305495,0.0 +1554.2273419370938,31.0286909385664,2.8950529261069224,13.078058034076196,96.26762173566792,28.26 +414.97955622615086,30.120160871826343,3.618965787105654,1.5140992082948612,99.17604408609247,245818.34 +1445.153660563966,16.513705850951464,18.033613138075424,3.647362202958151,80.72380054771405,118638.39 +1401.219242847105,3.501267945572424,5.536240931619694,-0.3318642772224844,45.69788770122008,1619543.01 +867.3281834331284,6.772604709724728,-19.880681374170535,-15.025456421816465,67.58189745128276,142.84 +1946.60514448309,3.107624474758963,13.329375845557294,-2.5558844537854863,8.984541088303695,340591.53 +1810.4695390646327,3.581251738038906,-6.813748748076547,-8.254671526185184,92.190779701549,113194.89 +769.0906654437257,4.430452057867692,8.57086773182687,15.682341865897476,22.954027904983715,0.0 +255.96396810891756,15.765052525942332,-9.438858955690668,8.048324834397382,71.95411275278674,1104781.18 +754.9486521411379,2.6012960237866056,10.408993015881132,-13.493704383104276,80.35162584372023,13.86 +568.4994965738779,1.216575422098438,17.099626920237426,8.07669326467273,96.98798338742284,489.33 +1185.053445285667,24.26103384005428,-16.82723789051549,1.9347103483191883,82.55704378716274,289216.52 +1853.7399581278785,1.1056376041987497,1.7744780866842769,-16.732907249608683,81.98625737206449,0.0 +1766.6075180675386,87.41171391904761,1.616080733568093,-17.217955830416933,70.8329825751996,1117.85 +750.4924801966881,5.01846639673773,-8.542491107770056,-14.102506737024203,58.08801737759064,145.26 +971.4755604001466,1.030772312868523,-6.333025644270158,12.419897048180966,5.14645569331621,0.0 +265.77595834321966,58.77202069218154,7.046430720884134,13.197961730473043,97.29759964795144,3031202.11 +1179.494313768469,15.834671812775287,-8.29555684661428,4.327228401253516,45.44811760649275,309567.66 +314.06236409131196,43.1305096183975,-18.774911726562603,-19.374947276739512,79.88203856404897,4340285.51 +1889.4910992123791,7.413946218195024,10.767448048995549,-7.3151345631145,38.35124449679107,317651.35 +1760.48090273409,5.10932779232817,5.007716410971006,-3.963651843774758,46.14995202028629,1684760.31 +585.5377275875054,20.43519969756313,-9.981806580999702,-8.624588519025203,46.77267914304193,78854.18 +1458.863623751682,6.486370469162567,18.461639696260285,3.2451045544339863,99.0108252833816,116644.68 +1222.4366883799996,12.95439681346488,15.937121192547226,-17.511549407558512,21.923470652987895,0.0 +1642.4438825291295,3.5945601574717636,18.57503428254975,-19.201202310857457,50.67480471030803,0.0 +1056.1737921527358,4.626907459341072,0.4894531576518934,3.514672623218087,16.31435122320508,198634.13 +545.1895471984004,1.460096387464321,-10.593340440262525,-9.418785552448842,49.918077513168896,29538.79 +1351.718120221097,36.537932861023435,-13.04683290118977,7.461169172437292,55.05054154539925,50886.62 +344.504588592701,4.985418878851303,17.94094073390616,11.10371349456592,14.528404139924628,75768.96 +1252.2583841031596,89.12474306804164,15.633144108272482,4.442286681459207,70.12726195753989,2036285.25 +582.8686498360237,3.30763552882024,9.637496696154702,19.587818879751552,82.97076152424528,0.0 +1432.8855868224084,8.914671832728777,0.4205933106863391,5.7170733507826865,81.78673637178848,273539.66 +1690.4776911105953,4.083799400791978,-4.623697758111716,10.910013291853492,73.19300621250471,0.0 +397.1445127077304,24.425909846569617,8.137804854870438,5.640693347690853,14.947513300622145,81714.88 +920.4833938674662,41.3744124256983,-19.618843722817452,12.217668338213665,62.52526972920419,1380046.12 +1520.338857996794,9.419361419582623,0.971104409177701,-4.3759239293996055,70.13737750286498,1780487.56 +494.66551073394527,5.418201033860496,7.146390638835545,-2.625694022690217,76.17605905225845,465056.21 +1219.7426060642836,30.867583961824536,10.150399361930816,-6.59250046685155,71.230730799574,524888.83 +1409.3101673763017,2.414960813987322,-1.956754352463026,3.059117332926462,63.25142513380683,1670567.62 +838.6284930308881,15.810029359459447,9.805567339296775,-5.014281797936686,73.04652750912071,487711.42 +1697.568093564682,29.3257359969692,-16.16633199784875,19.514478366974934,85.38001635695588,0.0 +1119.1847330840849,3.45572538116288,-10.66901410188235,4.120149404282971,57.36256838021598,579834.33 +1328.590711892918,20.483241255246487,-14.215491225721305,-6.571965783037057,15.384379696106205,89542.0 +453.5710340686017,29.5428432498682,-6.40648263875911,0.3266412397068752,81.77973876847346,297597.1 +241.6883141588043,1.7172489478883122,-6.2322789656871835,11.224515867181667,66.44065891052472,3487.46 +291.34742748497536,4.444418725049674,-5.0424134661138975,12.244690125407669,68.97450561729053,5862.81 +1827.0562667567883,6.495492652811092,-1.3670043387189112,5.484060432358171,30.126498717384777,153050.93 +1788.756291646852,35.63812067873828,-2.546650580923129,-19.90677920700453,15.816328678056037,0.0 +1653.6645904913164,13.646153928987315,-0.3811227600549172,14.744523882088396,78.291439444576,0.0 +559.3017642227494,7.927257148155247,10.10386658017278,16.392080564626824,5.892575268901149,0.64 +1145.825573509106,4.340551339233702,-14.319330438743233,14.865964325661915,40.83239926692201,0.0 +1633.0107809870722,1.0188792892953915,-5.971736991979846,6.844640306021952,51.377298730085904,209.86 +1414.404526260393,1.0975901019690462,-19.994598317799284,-18.91602192536878,2.725624598273235,0.0 +407.93814861668767,3.026163937166958,-18.870832405549564,18.031210298205025,60.10362916838382,18.99 +1811.9741596623628,1.711516978144621,4.25683793130331,-17.28769917541687,12.8430173030259,0.0 +489.22830700033205,1.7344955663607444,15.04006206402578,-14.020630228387931,24.903371874691743,7.46 +509.2322481440038,16.05015563902415,-7.763611516300024,5.116044035380476,99.3632886775252,155269.47 +1821.8155325072748,16.252143429667615,-3.924178214392562,-1.5276252285858494,56.46697618340242,2210834.77 +1072.310490370129,1.2289783119801274,-11.60494327290191,10.190322795003944,96.85896116662477,0.0 +871.2052867216404,15.412408226667294,-14.288013228014565,5.3257711796833185,49.77081290853032,79062.6 +1196.5821361365015,1.9572089275413032,15.363927927542507,-19.832400934568,80.53905128721408,0.0 +1966.5151990978004,5.681349015835906,2.8848005213602024,5.712597874175245,4.761013920052615,17060.38 +415.3348194338771,95.36032429871608,8.194991322011509,14.328797337227831,29.83478767959696,812361.63 +1562.5079278257174,11.066511163102156,15.275658819860825,14.08585607790132,29.039181541395894,0.0 +801.7865520394296,1.1705124213014184,3.5357312116999484,-13.703678011832206,7.910144094562125,0.0 +410.68868752572274,4.9581128040845455,-12.78863397191776,-6.10553685080792,95.25806517773688,214537.03 +959.4800396352896,21.968293272204075,8.53267298561426,-15.218823791899585,50.96323641303834,1726.93 +1187.7551799054877,2.8131686518593706,9.912242002209414,10.059293396955448,59.70419021939258,0.0 +570.7309479106644,84.8981983242351,-3.44205708905458,5.102419929301925,52.525656158839105,361937.06 +929.4850263738844,7.089039492524864,4.672561065416709,-0.6226544892178998,25.607844576836342,396849.65 +1344.216845850123,1.1019822861354904,-0.6180066447343435,-8.009641334438644,92.50600435616492,34044.68 +1237.6064354964,12.054031699273311,-6.68002329475522,11.483926581970016,67.23038419921765,16.54 +1501.689069298731,22.510194559816423,6.896644678433246,11.657336796671396,13.236502473705418,12.46 +1705.5281592873223,8.165491933287013,-10.101904045080104,-0.3527956929918208,46.71711711541981,1868261.84 +936.4525971848726,71.83592354309289,-6.9011679812281645,-15.023171326120872,1.1458980474157534,479.43 +961.3410958320094,63.65966295571391,-3.772449986096515,-1.385638950710053,67.79957682317465,329210.82 +1094.0458420192756,1.8963572060928389,4.584810145655633,15.842672530614228,52.83476942976896,0.0 +1219.4360810863463,1.4450947880495009,14.088163479543446,3.3634156709677043,90.51551500971227,1087376.42 +394.980813628205,4.213257425480958,4.59666507517368,10.160031297203592,94.78633081453292,11752.19 +762.7436375505933,16.453766299804197,9.043254298788138,-8.213281298264455,10.71954486091851,30550.2 +509.4052316786437,15.96579794023717,-8.293708155245799,-6.273460086269065,9.86015925133103,22723.54 +894.5349722194368,3.493704742820898,3.4966022873085745,-15.315167839536228,90.00999789827318,0.01 +1952.0373306332656,79.83642723125541,-15.845929222649936,-6.2877969452438265,51.69808141721549,322238.44 +1248.9157220257634,4.117782782964091,-1.469119968186301,-13.215459922527971,47.498109186347484,0.25 +972.8867358569834,40.588114064805175,7.595153446035128,1.5591933656804136,57.50812090483488,316132.15 +1218.686411402676,46.12754712054566,-12.8110991352343,-4.247780349246617,47.17375535280157,314520.49 +1404.3377997689229,1.5735119222958172,16.083883170936065,13.430067505636384,61.81254529452676,0.0 +982.9162339227216,2.918137988886054,-3.3122925591281627,-4.690875178126714,94.95785461783524,1442989.29 +1005.8776476551968,2.6939095873806735,6.845674626273497,-11.506465520655889,60.99229578365748,230.78 +1462.5220328870755,69.07209578240747,-1.2042200765613842,-16.630605255456835,32.752783044818095,1294.72 +309.5526497702623,5.037439553407325,9.290326742114816,-9.897145524074364,22.125012394741766,19244.32 +1172.1450229190195,47.091515461241215,3.3721296565280534,7.89453253539715,96.64547205571402,121873.98 +1185.1900619918626,9.037243921614552,-15.097101894832472,5.0492346846210845,58.36055020826493,124830.11 +1562.1540700310857,8.211794798082435,16.988578869455637,4.797837607608066,57.10011046111575,86194.77 +1968.7605542059848,64.09773971018357,6.4024257954995045,14.326828914337998,4.2997051903216335,1.04 +1632.3586162162546,7.617330767647287,-1.117106045938714,-9.887623921247284,91.92032885576565,36020.78 +1106.8195027708423,30.88188735221998,7.064194502278789,-1.168296208702713,47.49069231730829,516153.68 +505.0157232929214,7.0591921516713265,-9.564161701437977,-13.272622857333133,99.97525395408154,15465.78 +1258.869748939707,1.5985987651234028,10.75843553748673,-11.248206147081168,17.618666141973907,0.2 +1701.7379960828346,1.2769961531715184,-3.5509836588164,-5.163261362038054,33.29430514234354,761888.44 +1878.3453145615983,2.609037696128596,12.201360588262578,8.283195999622412,21.79746493393452,0.01 +1685.558683089381,27.831465321121193,-9.037872574115546,13.348375864746496,38.51424375760742,0.54 +540.1434914526143,5.588553851973514,11.611198757817206,-7.711440115376393,97.68680919949034,235870.07 +1482.6365558287964,8.094968493571669,16.267670677691118,-4.089428100535439,42.06301286928233,274668.37 +1784.278905474518,1.5986478098837773,19.232831025780207,15.506426488062557,82.88295374644119,0.0 +1425.8305399285553,17.622811650106613,11.068399486386994,11.20960390427192,75.7715563649185,67.36 +1434.3536736707874,40.44794118881918,8.1605288590316,7.61340151899641,30.49697325130568,38985.18 +1100.2921152519416,17.756872977504138,0.7976787203694569,-3.714264091935759,58.41049992454262,777959.94 +1346.5571998259093,93.15971766132871,-15.770628482031947,-6.357638631343621,85.31911809986319,2317765.72 +729.885294601438,1.0781589267052183,2.3941560296680997,8.937187281013696,61.521564297438886,5.52 +359.85815621434136,1.07482969016344,2.530120838565822,-16.266941063659225,27.228051823356733,0.15 +1689.886828541721,10.000258036312404,-17.410645564733336,1.7386520315714282,86.45387152227842,377518.49 +1897.659753304728,3.4104847958030207,7.625048774634258,-17.567790705076245,56.06036399257268,0.0 +1742.2802036784994,23.60591346259664,-14.042302476148718,4.933503936494255,98.02087033128626,454683.21 +801.0443968054454,38.5851601456908,3.864476906112242,2.736457244350583,65.90695108535436,225567.05 +368.35427235427096,1.6027722610968784,-1.0946707422594004,-17.608291577968703,45.43647517928519,0.27 +704.2490977365318,68.34022518529885,15.00217049279485,-3.2053956878920964,44.15466804328545,3821335.08 +1717.1036764578205,1.1477462318449618,-10.710222381029617,-12.302003177035331,88.13045844873518,0.0 +1380.4661137397889,23.812656956072264,-13.15171883372614,11.924888575519992,98.07878662159786,139.18 +1940.0496393852868,5.874914256336806,2.046844552090623,16.53131097426904,41.62495354979255,0.0 +816.8258331867861,21.62113187079493,-1.5902827240004536,-7.412885986365807,17.1388795624726,65944.31 +1192.6498165249563,1.56773496050694,-13.54809764934188,-18.827242155756625,4.937883400423419,0.0 +1622.06879894881,74.84462881376734,4.548487276057336,15.90618240104491,32.91486203512755,32.4 +621.1854969172622,74.95777378085266,16.232694341371907,13.780892059526844,34.855903610658906,1519561.04 +1935.3619543873983,10.934567965515308,9.61015354837402,11.87394946763382,43.16044979201337,0.0 +1266.3158104852666,10.451270014531907,-11.617718826021433,-5.744846792078326,15.357555686956786,187230.23 +214.21561397537573,18.604430296500517,-10.4637538531524,-16.811737189706847,49.773505958382046,991115.79 +245.27589613042232,14.45898812675024,2.302449300280398,18.99484005362854,94.39314579916282,58628.44 +1787.9888295228714,12.220617009569407,7.100685592342426,-0.263576310613054,24.016925306256,976125.1 +1361.5067499699394,15.079338758273618,19.159817275417428,-5.735550924209125,68.79091538201136,108422.35 +1573.530534314952,52.15072427780144,-15.807208347486362,11.088423119756982,4.76026187928609,416.16 +1611.2288017224346,16.677600221596844,1.8537969973910504,6.828044045605983,64.73716494103097,78411.64 +956.8275972513976,2.4641588996891426,19.49497397567441,-18.325376835999045,93.81431361580334,0.0 +1637.5002430561433,67.27041094913513,-15.56412852663588,18.335907158950548,28.952089138572937,6.61 +1887.5584006625688,2.703468023746254,18.902745999068912,2.242549054955383,81.807293668966,91787.67 +509.90799398531897,2.1395546774272365,-1.5128825489664075,-12.470457245862413,9.162446040988945,236.91 +1575.4455191756372,98.65421793428058,8.695586417836152,-19.36121360878865,36.46532779163878,263.49 +754.0256137080171,2.6719811432623835,-2.989140496189538,2.0895026865299204,1.6634890564152407,21728.73 +778.687405496937,1.5855747360755887,13.641764518345935,3.761609914644493,36.15583588881404,224647.45 +942.9587318654952,13.304985994844696,16.34071558080173,-16.015013899137806,31.67415205671337,19.19 +1754.695135834554,45.12191128840301,-13.333392636624914,1.79712231474634,69.58280783221913,883827.4 +239.7009211580885,1.3228220932809502,9.889694304380736,-2.7310579660263956,30.156523385879087,123472.03 +981.0671722584752,9.554508484821952,-19.17041884398269,-2.4949226469538877,82.4863776306882,227781.86 +1424.085769224687,1.3708965418861003,-8.92559430759241,19.01046537665133,29.854203134657055,0.0 +398.74782490853954,7.2008246565959615,2.0937004097012046,-8.164571370719077,23.108633003499406,40638.33 +1626.0564746313496,4.874389813633698,4.128201735313151,15.366422679050157,49.95813777108226,0.0 +1895.4246762152352,1.880437209423249,-5.389341983375173,-6.219232281675162,65.98934059376633,667563.32 +363.6826779385615,72.78502690223814,-9.182472603083776,-12.81993185378413,88.98400172311155,3174926.58 +475.3066480955806,18.61118211853813,-13.133993621143208,-13.90936044721959,81.53738348793793,190332.59 +1953.3750049031653,48.54143390412358,-10.411493329222846,17.62552218430536,52.925888985033374,0.0 +556.1401534143348,64.84687593838525,-14.790917200505053,-19.068322051702893,97.85084050694924,1780723.09 +342.0914162657681,72.5054516141548,-9.55335786059014,-11.23357445095444,30.355119514855737,1269963.21 +1913.9465655126205,31.34939996446173,12.85117301295292,-6.381040951679826,99.9468577494302,1387618.84 +1806.720877657044,4.1105187206808305,-8.499108948372607,6.271996482332254,39.13329479390789,31110.01 +1380.305850919636,45.48468985119974,16.307557762028612,-4.967971678915037,26.97841338188067,158016.84 +1192.575669117596,10.97402191050097,-10.190835331727378,-19.18345705769617,38.89697352350658,0.0 +1854.6188533449867,3.493878865090252,-0.3214443411431178,0.6783877955617212,58.99594687376947,2961064.85 +1379.936135200561,5.909457586777636,-13.297203977837784,15.37862756789469,47.919606584611174,0.0 +1385.113986767126,4.003566637626383,-19.3162127217932,15.462841345509318,5.968567990897267,0.0 +1718.6340155635153,8.558705444598688,5.021609461621601,19.663809819175967,36.24467130131077,0.0 +1375.8422191263576,36.53173311680979,-6.489367768910692,-6.304298809552309,49.69018098089148,512497.72 +1106.6183966678195,9.326843373636528,-6.196996681608162,-15.101487980538192,66.6660572761447,8.1 +901.4986962172062,3.4333427108722017,-3.6899149634091266,-17.21845867930053,95.35195747155348,0.0 +1105.6410070242334,1.4955679489695066,11.110384682570247,14.68366767853421,95.63448423416752,0.0 +1140.46156835695,51.46502336246659,-4.010336637923402,9.928551593792484,51.889297214940775,24393.94 +849.4973860128533,6.834979456193701,-16.54372986609227,5.102947624218643,57.34001074312674,50666.07 +1006.6131361646228,7.653235736290994,-8.849856029895186,-0.1295860102865953,70.10528842331081,1177371.31 +1643.3694791543385,33.68551104636931,3.045168504885729,-1.706373526174079,83.6973615153596,2069816.71 +949.724063616598,50.055636910344575,19.739476194875927,-0.2419242793026876,74.77749659751514,19765931.29 +246.00757994377284,10.52664109495266,-14.27412045269477,-5.446214473050963,72.33065132204524,3454968.01 +709.4347791929284,18.39651960521871,-7.061936132207118,-1.0129135348546336,45.28020592701076,264934.26 +617.1353553650567,3.0082463683383285,-0.5762682881671699,-11.586820665566382,87.02602457158477,8628.81 +1628.447621297543,74.154223423235,17.785745057776378,-15.289281920717483,66.59216384907468,43636.06 +1008.7275052492558,13.67233012609046,-15.663122245514018,-11.548193406765115,16.760633436550417,2413.23 +704.5589774632397,27.49221812625125,11.752878092441929,18.83855930509536,60.23928866879539,452.91 +1659.2687909149245,1.6921003243124055,8.918187070904464,19.627459716724736,31.7453418357519,0.0 +234.59024820190163,18.786328176563263,-7.7424848141865965,10.060458740812225,21.103611320898047,324713.64 +513.6515169161917,5.468894742926614,10.95014636036156,13.487648315314908,65.23607673116571,107.02 +1688.51867491244,7.945586323865243,2.9949543119082156,-15.857345551803505,64.58275445202872,0.0 +1191.1731097887248,23.13790665570209,-13.14559105097696,-15.078935692405596,95.51702539231566,799.65 +1592.5695942430646,39.14308820115986,-8.570411469861593,-16.293814349060764,97.64589896313282,197.35 +1708.7168265717396,4.997243096166435,-6.866387919011725,-17.472173283701014,41.470013529891894,0.0 +1895.5342794593712,55.77938279870016,-7.078823892470805,9.893663883158457,18.67336644989909,2716.1 +314.1642787460084,2.7414517610509694,9.854615247096245,-17.743877118434618,14.905363143001289,28.61 +1638.6225379372495,13.359692636132978,6.411793486665607,17.96162255009464,97.45158081611072,0.0 +1475.7790667957026,2.006924157690798,12.794206242537204,6.161481803003324,40.19285175542957,22168.65 +572.6460812178066,3.788781366223426,0.4318336032124392,-13.164949328524012,34.935508941854565,1002.96 +1877.0640794122216,61.77644871396342,-5.9787337256897555,12.700903165373347,62.49350674282939,325.16 +927.5633845515056,1.0546626161102797,-17.289949312744127,12.947750481314454,6.674068716574929,0.0 +1797.6989494186475,67.79885778036247,11.775696690288706,2.5555513018576947,65.0289797354651,748336.23 +1289.2046683968658,4.537368668532354,-17.0092402361829,-16.360640505389274,87.69931583113517,0.0 +1148.146303773722,24.637171108475865,-7.941416844972475,-3.9688747543760616,72.70266982307615,869258.02 +487.14308101276293,1.52558562850963,6.755346006230631,1.941492504453044,42.32785304732818,377121.07 +1845.789723717163,19.16650490724704,10.566812569009125,9.751829363235975,12.498043938528404,39.61 +1201.9914332520432,65.9056366269736,-17.259489006255006,-8.059850606806167,24.883027396773084,880140.6 +210.9663298942714,12.89448053180215,4.304707357765225,14.926285938692928,27.277057545336056,87299.47 +232.91217392650975,5.299598842506912,-14.514443569492412,-9.970481159641407,39.10735344711084,494734.4 +1599.7386890324856,38.65051100665961,10.289598575877148,19.927939631863573,14.201346008439078,0.0 +491.48543608110134,26.634886395116943,9.194113489871931,-15.397787872096416,57.98973898217653,50719.93 +1277.7291841306617,1.7194324624272772,9.922302762211114,13.317983985007215,37.264826106917475,0.0 +1425.9475314811646,21.44880365997172,-17.449697085684033,-14.711324754461522,50.14071237814735,43.81 +702.8580673072943,21.345763441544864,2.377011213118343,10.37252208903042,29.228508258760993,8640.76 +1224.7648551405423,31.903794167503623,-10.36601539884462,14.492049141553624,45.93247276066453,31.96 +632.4657427803345,4.29154558795026,-0.1676824699244905,-7.483258783092492,71.5523380759011,281597.91 +1903.367769262311,6.346816809318156,19.57645323539278,-15.946642913245483,9.734143009410651,0.0 +1748.3062814285006,83.1909556154138,-16.38108335860533,19.99636634091765,51.49932913023143,9.51 +718.4770246954445,14.025354319532555,3.76208091390954,18.842089703709593,62.21450648354695,0.37 +1151.8660837106115,10.39944001471737,-13.400018715948878,10.272843682276813,67.09993408303102,178.95 +1101.1391428770305,94.12378527393923,0.402036852172527,-4.540385525701649,92.35643698936244,435798.94 +1928.0418643101332,2.8781621911188697,0.8360058264131798,-14.623974239080916,78.33103709363495,0.0 +909.2518043309371,6.249910815378763,-1.750972850926078,-3.277988327553003,74.16047836396554,1074468.21 +1212.0095983188205,33.09536103904706,5.584620597717027,8.813703101412734,86.93198800588898,45825.76 +1871.6718707973869,26.68094223422691,18.967717862653277,-13.905441227572869,91.52792686610456,195.79 +493.0598921178047,85.78301103205122,12.208748083670535,-19.32798498672476,84.09556847901656,1991998.52 +1190.8740859010086,20.35169950474506,18.34094627425879,16.161410352104568,61.78549558333804,18.54 +390.2112566512933,4.228535164129995,-12.421881273098553,7.999594196518558,84.46663195060117,31812.91 +1311.498077273301,6.241714991987543,19.72917448898396,7.7536051489316415,33.31479619905276,3503.19 +858.2297660966084,1.5115615914677276,-7.793449183939409,17.887430286214588,95.24571321722368,0.0 +1941.744931723281,70.37858269652573,-18.63337310545541,0.8282135602220153,18.17274929173549,479838.57 +947.7365260673474,1.808573010312676,-2.550556213101145,-7.276921832212273,23.6922664575802,87906.98 +445.1377475750723,12.342622553594124,-10.152118854368087,16.37702581273055,16.694028790691842,431.68 +1701.1999296711274,6.350241608029382,10.484821620232175,19.432462842166952,77.9243390281255,0.0 +1677.5600445612454,1.8554413290443053,-16.522347831885966,-19.18160319128889,44.01499899151355,0.0 +1450.7473151770118,3.854646065966041,1.9201282782342988,-6.773084881467595,74.06500903586009,646288.85 +1547.8612433916103,18.498564654063884,-8.424133098897254,-5.503775788105902,51.49642864332033,961102.24 +676.4873918409323,1.1547899143959075,-11.730673671200638,-15.550887697667516,40.92427195046561,0.0 +1355.6963007610063,85.50254990650711,15.025547239836602,-11.137069883162688,89.74129724153583,426193.05 +268.4357681697085,65.79474922191383,0.6202095363820748,-19.021696128632797,43.78230285323939,1009209.12 +554.4022590020622,1.476396111375069,-6.982217077274542,7.856646279605988,62.22157487350694,5300.75 +1878.103005595556,54.53899071167104,9.844715842561556,-15.72379399156684,86.00119197644457,519.23 +1530.6235347487857,4.540905219040906,14.127619559925456,15.505103166051333,22.047013021004375,0.0 +615.210573780664,1.3646110920232537,-2.316486424730515,3.359018210602147,40.869678537395366,360688.31 +400.4895611347186,4.094733754721714,-12.715038193111257,-5.75363814616733,15.34562233335817,39249.51 +1908.0550007633028,41.47391071953087,19.773510381440012,12.355481821631448,54.72615135931448,8206.23 +401.93779890823896,21.46163993315643,-5.640950439371881,6.026816656866711,79.16722476189273,128671.95 +662.7260864850467,2.9999858157947004,-11.779825264931358,10.120912188610244,6.448185080857553,13.47 +528.7411873990229,27.43803167612656,-15.867636597391249,15.111054748682871,6.9727526387538115,46618.14 +213.4348767411823,26.040074896783526,-15.045842554345027,12.306601312964048,74.37798037082214,3975817.63 +765.4425933764793,30.600091634478144,17.721707632335377,11.165703329857736,71.24958370860075,868290.31 +1953.521968877773,12.0590566492062,17.866416183180934,9.193737854966546,40.8172720131792,38.24 +815.4259504568416,43.44014880246127,0.3173199008810856,-4.900463669861677,36.70861559607998,143902.38 +1107.7487830419927,19.17451712782775,7.685410883622588,6.07324563734422,28.92129016989597,72108.95 +1542.6844110592065,1.7815516571186274,13.305661757705964,2.627955333005363,7.114339004538067,169084.08 +1191.944183742589,41.73611068857259,2.298183266957823,18.5378354601729,51.84138038246554,1.3 +1538.464713342152,4.441566921903877,6.67924959111819,0.037421337800465,61.99145001946976,2394372.31 +1390.9445627429277,25.708067787448996,18.67895740686243,-11.127287192890524,86.6710293844628,50567.48 +1295.4134413982265,22.400793996592903,-13.098549996599791,-1.6908658172127788,54.644271916995955,665720.08 +1369.3680329811414,4.697048472977752,-14.448658758996174,-3.413995546979929,16.043680484745543,229680.94 +1638.4958517408518,2.105558523214698,10.121270674757197,-1.259345537907932,31.50963432783379,1433883.46 +1478.3445106419874,24.542351727171862,8.133136898158785,3.2412172044625542,78.71734377711168,1026552.94 +1625.1948572693448,49.89381428299763,-12.561911359193058,17.920900203717967,62.20082176064625,0.03 +462.0757489103564,47.474744253343665,-7.903407392667159,-8.756786858037922,77.34003438384202,937252.66 +1419.8127188789726,17.90645780726884,7.410202566273734,18.765152615426672,41.93513669199285,0.0 +1526.6394421859598,2.8498010324258205,-0.225388143146934,11.1833049241904,7.684206199916547,0.0 +739.9395784943022,4.289630994343364,15.739005565030029,-12.683162929321464,89.32061400953266,595.31 +1774.2391901179085,32.303930101096164,13.486187955862816,-8.782375738383141,35.57246176287706,132404.14 +748.4808859448608,6.632967348069769,-0.5152093614354358,16.373009990158607,9.255017888593356,0.0 +638.8978148776952,29.173923306873636,6.6745785866210205,12.05372326397542,59.10190180126298,12866.58 +1760.77426786492,4.158148403781703,5.738442447257994,-14.265568026046983,74.65221937668582,0.0 +644.635708609568,1.029524042289946,-16.31685385630165,3.382743459080122,48.32236559375087,113842.1 +947.9044323772404,16.105719434667108,-2.976325449247361,-8.920269695820213,61.7723216106534,175312.76 +862.261094066274,15.915955279912192,-2.4047492700220108,5.19001372301386,42.30855699238038,131359.44 +1816.5112806048903,17.99323970155863,15.894690005975702,-13.056719701400649,81.55443021092988,100.96 +1019.4243289183356,3.438517757744204,15.411228934314336,-5.923483377523557,78.58789380803016,306511.11 +1449.756079933188,41.89304233557171,-17.694581199296124,-4.458861095809712,72.27714267131644,620116.25 +1629.2700283588922,9.439167170858246,13.806759225083043,1.508350340330824,2.9679932436306222,59632.23 +1330.2264453449172,33.47925752205692,4.467298923455254,-10.427320971737238,52.11915482095391,95690.46 +1898.6500969848464,16.679649824875842,-19.350961312539496,9.109854097520689,78.74927910770576,3501.83 +1644.5135526608146,6.794251666983371,-4.733906084997717,12.37066852888331,25.24240727117668,0.0 +920.3719298147536,22.869343267917397,15.52361822476577,5.599587635083831,26.66092050420501,49780.93 +1911.4613178638297,14.12390253709292,-5.67065603933695,16.12326021509981,90.52054334301803,0.0 +1144.2346998884016,10.505634005116915,7.057861344820737,11.61980771173781,84.32985341198453,16.47 +240.63918130081265,19.820794180924313,2.626536278018743,-18.239423001077785,98.82525745990098,338382.75 +668.0239033752142,1.4855181170587135,3.594404011110943,-16.611150737415016,50.244739779085165,0.0 +1319.11325666708,66.14883177510032,-0.76798693185268,6.398744970027175,13.299360178159564,36478.26 +482.2668241839861,4.679119019338422,-0.7063253700125482,8.875019214115651,1.817086348149887,442.6 +1251.3224808077666,2.814400680834792,16.105817816992435,18.716197635158505,70.90718337298978,0.0 +850.8764401535536,34.961713964305986,-3.44735282227401,-19.866698291001377,81.85058182090613,529.09 +1161.8938641048933,2.9003056871124375,-12.343509139631824,-10.521579625175628,43.40034772785034,966.92 +203.37472617185517,98.07069350189629,-3.210774898829305,13.270038138142146,43.15389810757757,1490677.64 +1727.158438403657,6.934019890731006,9.316508437976498,15.66134292998136,84.18679354016305,0.0 +851.465877995951,3.919663793703691,-0.990313793048614,-1.422712107739672,19.418782483584778,322960.97 +452.2851817003155,1.3308531756870408,9.283867384201727,-0.6497814059897911,7.280710874802455,72787.4 +988.248542609144,1.2122951138046587,-10.4086460992281,14.14477366993857,96.60377745231708,0.0 +1075.1191282799014,1.5498195048115126,3.3104472041693267,-1.6012527967546353,54.69716027929414,1515214.95 +1347.32487889314,1.0234477077297277,14.5730234671362,11.497132528161943,77.46520364051536,0.0 +1144.2123926341037,4.510035483832388,1.1719813332100015,17.94920539145554,95.51955782292605,0.0 +278.34244772071276,4.177426334470966,5.472769731360758,-9.526150600365597,81.23157862892697,84020.82 +1768.7221797399766,7.247421013694422,7.152276287318409,-9.024003555509005,47.29327031435851,59740.75 +1021.7160772165304,2.9231146294873076,9.5871825875801,17.544108248816702,65.16379229028719,0.0 +338.57799055941604,1.335003228229371,-5.988415190002305,-3.0280283085749904,63.59232922015011,425411.5 +1591.0908257525332,1.387794160989714,5.073868320975188,-19.370914546011782,92.6274321804847,0.0 +1388.2779538095228,2.313623839593534,-3.3532609803198143,0.0995893201864239,14.966777224338506,541240.97 +1368.9879909845993,4.297135553327137,-4.361648458785168,4.670405936219524,69.87563521939012,651773.48 +968.4452031240098,1.976897264359716,-0.9919371535433674,-10.210489355997227,86.4194331400638,4392.36 +938.8947127177792,5.373232677082486,-3.687421463903111,9.096415411598716,36.5491494288965,586.54 +1165.409545497217,69.8940661571672,-18.96525568103054,-10.68229418221967,71.12144276838175,5016944.94 +291.0699432183859,3.335846199113789,9.67980305350883,-15.214027041926329,25.734776341062545,1475.48 +738.1239755922576,2.1716940127667157,3.3735451952728024,-10.025372979377993,9.715234974934496,2674.44 +1978.2095124122725,21.357602828817072,-14.49680942574409,1.3563939029432204,3.515153865078059,65708.91 +1391.9464804305364,9.58875177000794,-9.547680927362697,14.231527026869411,53.46294396533677,0.0 +954.0814977511798,1.243105624987355,4.441385854240534,1.1732877826462706,6.115131302947709,139119.34 +600.2535852928155,37.636970819809555,0.7206741265168182,13.9594208543574,59.650312639788815,9525.34 +1541.3768514204205,26.957892907429393,8.936853242262828,-17.43254443411972,38.176926691331936,0.61 +668.5225574711445,90.0734346602987,-0.4307223456219899,-5.096543407045182,1.6799719908619286,4576.55 +492.2661869233317,75.2684961713892,13.785439074933926,-2.592860195682234,23.421187347623373,2172269.37 +478.126820421717,14.739969580447772,-16.901799146902945,12.069029115402156,74.10234674184723,595649.82 +1512.6739024965184,23.55280232677015,4.527532535221037,4.425872551014316,38.500803090934085,338673.59 +1357.0584577196914,6.591946105186129,-5.137979639303816,11.401465291238203,72.8299552386193,0.01 +325.6509788682151,59.8321174947817,-7.726287578014515,-6.457730194809859,81.68233668738301,3030290.23 +407.0770676519645,12.753155362001582,17.745674857439198,17.361310901992766,79.89742019246388,203739.79 +1340.9243612364387,4.478191411142754,14.552299966078747,12.546260949288248,67.38983794690417,0.0 +1228.0089833698862,1.0446792866263224,-12.65135883452822,16.619421930936387,74.91230907401406,0.0 +1434.7983086692643,14.890165675338825,-17.702519396381167,-9.488157261924504,57.40975826665998,15792.95 +520.4700350538716,11.24262645235104,14.690196232844093,-19.73723088939448,47.01123697377499,342.76 +1507.8582311909008,42.04887256043768,-13.228120915321986,4.619246811454865,7.109323579176161,31748.53 +1884.9736411949896,2.3659701037748126,17.13000159867905,-0.2968431435048124,97.5354053779884,744108.34 +1281.890566163794,42.73685267460813,-8.907205855563639,11.158166413345324,84.18413210463443,8082.97 +553.034035357011,1.0729197025116128,-3.533845161593794,-16.100244039894026,67.52061937977781,0.0 +1423.1789395113915,14.94950302508275,-18.200643085088267,3.817864790313612,64.7653759570354,79603.65 +817.5470303829159,6.218774405693606,1.501254928008473,-12.044064857948014,58.10411089698595,5493.88 +288.71794349429854,4.60300071850123,-12.450561095204488,0.5839548068392153,10.347588331928591,29444.51 +744.2096516344973,7.355156778288839,-2.7569604647957613,-13.66714653951782,32.62099830664949,882.99 +1830.0531835102377,2.80016080554742,16.776228401060603,16.493702005911587,34.6221916477345,0.0 +940.0507763167552,2.3272943019222647,-9.897090003014934,-12.668914655597211,79.57660152881787,4.01 +1756.3976084559663,40.75808474819868,5.396755089376932,3.003067022393764,60.89096993001322,980639.3 +1115.586818341025,2.854411618658892,-11.92041381381872,-19.77561356605247,40.4165361580992,0.0 +1130.56038012728,29.7813231460672,4.393869827465093,-13.742459404978916,33.48077922297562,5383.18 +209.3893779168098,26.467997739782557,-8.433830720746535,-0.0266321861225193,85.53379631122905,3304170.12 +1346.78733192015,1.1662746377977369,7.262543081003216,-18.361533845639833,78.77787653372027,0.0 +394.0649210547565,57.82888788045594,10.824902154740776,1.7113062658554634,81.49675187246982,4203495.07 +1061.7471464276978,37.906200915928515,15.227046595095157,-12.626638883539512,40.145614035281035,25851.23 +668.5703401845781,39.09619560240086,16.74380479014845,9.061569257274824,48.44492189293565,1806876.34 +906.2893384927668,41.53192914672545,-10.347923814694727,14.731659563386238,57.75447904092974,1967.58 +1166.7392402002415,14.625356403448816,-14.840248954507388,10.341839698697145,19.98963262183541,136.69 +226.0354062835511,96.99776640857355,-18.059312465761305,-17.464386069870358,36.86573868923413,1746337.74 +712.250449888921,2.2819403142555212,8.81431468859526,-0.1461520626726775,49.621452158783406,749829.64 +1981.3014817253568,1.395313711167374,-12.524306763791415,-15.552925008339358,67.36714921648469,0.0 +303.31842647700734,25.60559928767996,12.006661420765386,-3.637697341708383,45.500480637875846,2174201.41 +774.908278683263,3.8714573106050936,18.59272616739272,13.581881060214291,16.305834813890495,0.32 +778.5586549363668,16.46138786235762,-14.081418383353036,-18.353587169732005,43.08559326901449,45.07 +882.8946576789726,6.072999227477812,-8.666768154140083,-9.933919823943151,53.60556174610519,46318.29 +1432.6056531962215,4.6456695728402,0.9625880988052238,13.06280106870926,65.4266525548466,0.0 +645.9388376293363,61.164192881789816,-2.778031123161395,-3.7628976472848352,85.52679670586119,197165.94 +1028.484819444895,1.923476644050916,-2.962334649427265,-10.585776194860577,24.01723069296041,261.62 +1360.7544203344085,2.3876535398579013,-11.315776310319272,17.976417602686666,56.413085371720086,0.0 +780.1797049914595,21.6611597734967,15.568601002869173,-13.770787389614858,42.32008280169636,17824.14 +1907.7906449058585,36.74531929813874,7.263572308504118,11.544316712377718,69.00802525995309,110.97 +1963.4107428968264,46.17734763134917,-13.84526842575513,-12.876895806286296,87.55262357713016,7955.21 +415.41242183752007,2.8993419057805356,-19.82243842078267,18.522083736774388,48.232144397705646,8.48 +818.8757919214582,58.10678361216761,10.507317926356205,11.442847885177796,84.57319296570675,114700.17 +574.3497256516556,16.561562689547593,-19.365695187179096,-8.94286005032578,1.2001210561536635,80688.33 +536.2212720028073,44.30337766212231,15.21666404378028,19.34456855346907,91.31019399310064,523709.35 +1083.763709008903,1.3710202848213473,1.1770583419319405,-15.421614352401756,79.06045688033481,0.0 +1214.888794642782,5.173550253373693,17.203428104988028,14.38387530920204,14.249935142159645,0.0 +966.1736730756786,11.213158705401806,10.87426111614957,7.9771754809630435,67.8549529209142,24907.85 +690.5987715752493,14.25325533296928,15.773744094413718,-13.044625582902384,51.90884985692111,15218.78 +701.5188336565514,1.578131207753354,9.752708424696957,1.8548558383638936,97.0994429815456,1350890.3 +1985.8306814133157,11.94858532445144,3.06467821290092,-19.523007536272065,31.130425322792014,0.0 +1862.619273182451,21.427567219644043,-13.077589099426367,2.9251072621330287,61.29169094511349,1045202.44 +336.6179137808429,5.286767012912161,9.105860813222325,3.2881422973638585,52.763005376469536,102922.04 +1381.791173593026,10.034101470876356,3.692298954439086,-3.658951389360982,22.89166941741284,550283.08 +1022.3796934727196,3.84709440117662,-1.8136667305274037,12.976631419612552,81.55342813478882,0.0 +1439.8653749584917,55.080838602630386,2.343651602370902,17.22988100118389,74.55921360835868,6.04 +1274.5292699729962,15.791130164036074,-10.709744433132771,1.3504746836364625,54.86924803923204,879445.47 +1800.6543201483514,12.663326143944396,-3.822910850828944,6.958142414446269,94.4608458830055,59586.29 +320.57896571988505,77.3953470045612,-15.032094718659582,-14.165765008154096,92.7397767275615,5740969.64 +829.2762417038699,21.37287999712931,-3.6092147430295674,19.923921057428625,81.98104064426505,0.38 +1973.8894263960524,3.6278296261006338,-1.3227017949463835,14.316645318308408,16.085736693182465,0.0 +528.1136281831102,19.209062181085752,14.310883505378284,17.96111014588179,89.52122692469365,22053.69 +429.200191111965,83.80055854882177,1.087193196761067,11.122569253574754,31.275273722225844,393070.43 +1512.1496108010358,1.1145935149160209,16.35474177828595,-7.083423577344816,57.437720302505774,25933.54 +1599.3832880314342,17.91356459194773,18.71671389597867,-11.132742003161034,97.49985189054722,4007.98 +1410.0923858143883,2.059064361123363,-18.040495041467427,0.4419041846959803,23.864981781067243,60500.28 +1597.1524917678655,42.945634354348435,3.885738132704733,-16.696026948574243,20.77552312622763,38.34 +1448.69882976771,19.114769233249152,-8.030652748820092,2.0727394702914825,85.34138600962115,1601578.72 +444.38722812051816,74.8133299961264,14.05302477037746,-5.203199842639625,2.2928082674637578,209040.48 +1294.7994154613127,21.83512709734588,-0.236881271556113,9.117359508679158,18.24892366580218,3044.85 +1598.3780286071585,1.0825246298731268,-16.87659200074927,5.027688600342457,33.40541470860332,52215.73 +1757.929891384042,10.48836249333545,-11.399734814736416,-10.139195353720458,74.09006361544316,26649.63 +643.2234368306738,64.17060402429048,6.955526737121134,9.33767496460952,48.566018062968645,157482.49 +429.3753696893694,2.914781526380507,-16.815396403595418,-7.555483130371425,39.93952835185531,31236.87 +1605.9627984486433,1.4648488294482247,-4.836864107575973,-10.056310037457328,91.95568242788669,11.41 +661.7870210641977,27.5280683823826,14.864874640876904,-3.257857312736392,75.83514893789963,1331394.27 +257.4730609775972,10.11619364094871,-18.83194353276628,-13.685863378577835,63.650251954139065,3547130.36 +1685.3844145687476,1.245060693800751,7.848014832846997,-6.993597385272254,34.66323511946085,88984.06 +1110.784040859548,3.629363479982022,7.019366916163827,-9.606055584212836,86.02950866389138,36447.1 +787.9396383711595,4.502951769158795,-7.170521948980966,-19.130803354574883,26.055904477334117,0.0 +220.5723894167885,21.663217295295414,-15.491333057436584,-7.964948472199587,94.64593669138166,7340444.94 +263.5894004743058,8.774056797607686,-15.903709229135128,-1.3266636563825562,26.786402628609675,1734725.4 +1626.7218870085303,9.42715511659292,18.76912192836408,13.189535125809698,82.18845445462726,0.1 +1081.470592936756,41.040004449480264,7.076651527082216,-12.780939127217469,91.50693691483468,51317.7 +469.49968873362826,3.604410092007939,-4.960351235630576,-6.90443824016469,23.424623869246265,86071.86 +845.3101290482326,22.13836192488819,13.341817741331766,-18.825046959304565,23.713674022971375,34.37 +497.5492655675412,5.433937133522269,-15.866551794491514,-16.99567151437495,8.78125296729409,12.64 +403.1867957246959,6.8665738474337115,-14.92288456583192,-5.7554039073141094,34.79186367952088,129119.36 +697.3540772134585,12.936143553891334,-12.097481048443983,-0.0028650968526244,50.52552747717539,259741.48 +1189.1153854323154,24.62031525366062,10.542496070733268,9.930479412393062,9.509871369788849,1008.13 +578.0118940620084,77.69454394663212,-3.644171611916645,10.527203232204396,15.486722212425349,53259.65 +818.6079463125808,3.4516148207167148,5.703051848164673,16.55914892482308,42.79348781476941,0.0 +1060.2755911216277,1.6124655295474666,-10.701954899994044,16.311844450476606,18.833622178399217,0.0 +956.0535305296734,7.204168222356821,11.091931178052585,-15.940012726939957,77.57576978398804,1.02 +431.53003841832134,12.400294445796868,12.066609156804644,-15.517900005160282,32.92275729807525,10500.2 +269.9581439645987,2.8576379718102505,-3.469684314837864,-0.1283479298607259,5.587611637967909,18594.11 +263.8257085080901,60.39368756771449,-11.6287138430189,3.578947371221446,16.297792298155407,921848.25 +830.3222324501612,39.599894760512655,5.20201103414208,3.9156100977933095,31.416793144497895,92405.04 +1493.843741367181,9.712428325787103,-9.75458475503153,-0.5489515788063404,15.433341540770114,475457.23 +436.2595377126872,7.945621372678279,-14.068272858078856,19.247971937570902,22.339569781140856,50.99 +1616.564209455966,1.2063755132772114,4.631902567068846,0.3582277785320675,21.45289667137206,969645.37 +1488.2137567649063,11.85166768445288,0.5163516860608253,17.41243866091501,42.44975700475775,0.0 +207.09828359410017,15.541545021573084,11.338287835115835,19.52765470255102,52.88381269415896,610329.27 +248.1461713673212,60.71046550675462,-8.307620075739921,-2.239123896143269,62.63476337308486,2904237.47 +551.059787968493,10.050695867265496,-10.987903264022304,-14.649430867151075,91.02898845672624,6763.32 +301.0176398910531,2.0642145995504917,5.620915402055493,-6.963278001020097,69.11896301396648,185088.27 +1156.4175894865507,2.291468029966923,8.042406024749988,-5.658406331773063,20.660143966303984,262525.73 +271.3290706251484,2.0880208790073373,-3.465459514894635,15.533118610518828,45.469852670186405,28.1 +1644.7625083917158,75.3476563077224,-2.3056093297581626,18.467889872746717,73.2214986566847,1.52 +1087.331724102459,38.61699844971389,-15.058200558946004,-13.213835223142958,55.95787901693277,22115.31 +1510.3178600104598,44.62027603523811,-1.2232355032124564,-19.197054695015048,17.76603956525497,1.33 +1551.264591684514,47.95865972720816,18.4531206075467,13.226522518506162,78.96286152633971,18145.81 +1112.175091406419,1.5533498691724166,-15.452086850406332,2.345844788292566,20.468009511787407,168474.17 +1865.6531772562391,25.37194214192862,2.7187183888765265,10.046889854383643,35.08683296678419,229.81 +1982.4333929395543,25.625563549780296,-19.264364351018468,-6.733155570999703,73.63242300062653,92870.84 +846.5864348261825,2.8160698045202595,-6.985041447316451,-13.659209066610622,96.96617787402272,3.21 +426.5554524486204,9.57925072393012,10.445773525567802,-9.413584873670128,89.14718987221816,99373.0 +853.8287215661604,21.128164436173822,2.6864506010400246,-18.060826532078305,97.01164143334252,318.66 +602.0370146256862,62.32651929392743,-16.754706858696302,-4.566143003369141,40.27778836460367,5909054.23 +1155.8102007111502,1.6628421397285496,-1.9267447873975652,-16.03092486250326,44.14893352684873,0.0 +881.0976822543226,60.867618231998655,-16.83696737508853,-1.4491387785380327,17.12420016065059,1709920.0 +1064.8089457162237,69.95679962125196,-5.05882155794438,11.968978488086922,47.78932620038119,12620.03 +1573.7376369368028,70.34280294807513,10.758176196447376,-18.094787551273175,78.26278386725933,353.21 +693.2377541753339,1.0225152272247078,-9.670013734633866,15.868498747538515,7.823508276538648,0.0 +1167.454504351506,2.766926007606535,-1.864426465018525,-15.07390507643683,32.58233147133777,0.0 +803.2902487916391,24.12628601559784,0.0135667787752069,6.239232852942256,92.63129976941386,173051.72 +1612.9295554171904,4.400272395400476,14.13103247759349,-10.37857019152328,19.07327968653297,230.79 +1351.165938333853,1.324849612439451,-15.13986557648236,13.796729543834395,30.415401154964325,0.0 +215.30851491909937,33.56480752509741,2.016741928929986,-19.585919136528176,93.57085882059135,1481358.41 +1388.092413989393,1.1407339970630883,-18.76840048245427,-3.144512288310075,35.13487079484237,34903.83 +506.29161451984817,7.799067082291753,-16.266517015588782,18.47608387541197,83.26040523993251,153.26 +1504.0528223654708,78.55108379330132,-11.171084181753235,-15.484212597149018,29.42277632034886,3179.43 +1221.2096003218246,7.593913619163099,8.788570933002884,10.425773911816014,26.444154113110624,5.28 +922.6688199017144,66.64607397034473,-18.355647302147663,9.064716409207954,19.521961962538455,1469972.74 +1449.3195725730652,6.576706968138994,17.802764634482642,-7.233008701560384,7.204053959904651,5624.35 +1741.8679145638043,4.935966666956425,-2.8932868945233636,-17.58181616042918,42.120633021933365,0.0 +1601.7386849517318,1.6397045628703435,13.546077616377108,13.323815000877248,71.62817977125137,0.0 +1181.6826978294337,5.202137392351186,-11.124970537758385,16.195146925613443,51.02904887194491,0.0 +1500.8497764671536,4.720336724216139,-6.487571807229489,-14.886772364533636,41.325812433348815,0.0 +945.0461979069564,49.32900686530844,9.080633071260776,13.913112024859032,21.239215353687193,1458.87 +1620.2470188136317,69.15607688042016,-4.832112823983983,13.32893433713458,68.6672156304483,1007.85 +1692.2934049210726,1.1062675449846846,0.2995158334320713,3.0809151326379425,26.03276485153262,974447.2 +447.1289063775177,1.5722182062690406,12.370089251092208,11.341269907884724,4.175865366295776,0.96 +628.4564472691033,19.340020682156503,6.043806137999286,-18.42084476048364,96.48948298568628,1627.56 +685.9797272284851,9.321499404829028,13.435041042804771,-0.1529205292228885,94.30655238940996,475433.62 +498.9470941677648,3.924255450012178,-16.540550309950653,18.679673315016704,22.231456693312975,0.02 +906.5630124153572,3.3098942575973354,4.322815106030622,11.008618607195038,24.620262863770492,0.07 +547.4597806093021,2.8141625483922463,4.048172508178247,-9.274624095632142,58.43020599863472,72128.15 +1271.970759667897,11.243505547705604,4.283941379813996,4.941247982654624,43.3142426284906,255927.5 +382.9077972157087,1.083826768254634,3.5524085477107414,-11.49800734288814,88.89110760466913,6300.72 +685.8544754481616,30.044760951554604,8.953522279307734,-11.114977260878106,43.26401569069619,43650.97 +1397.937162703442,3.9881916123189,13.761455268707795,-12.426165630190551,14.447157641722418,0.16 +917.3812216400286,7.139419522466496,-10.816083434087176,-12.400736185016772,55.11887807999065,2392.27 +958.632935336134,11.326726022928405,-15.817447128126624,-0.0283576044363353,12.211878766574324,54025.24 +1636.265455325101,2.646788295473673,-17.040986208831125,-7.608063158559513,45.27379267071291,17012.56 +1972.1207959237756,58.53360801109601,-13.662881768312891,11.11837663526472,58.150630250873775,978.57 +1217.1220098575832,23.130579334353925,6.238109238928415,15.764469704669573,94.58878874124082,0.49 +342.32090863449395,55.02913473720756,-3.3400654524120643,-0.4963620347127184,30.042297489444543,605849.48 +385.22535360254466,8.93102305604123,-6.0204145194937375,-12.347403200359183,65.29305922220449,30697.44 +1943.301299652949,7.326910996348511,16.39803902169244,19.91996335873295,1.0176846471966774,0.0 +1422.622842947249,2.9804726231873557,16.007035161578216,-18.11871047086582,87.2730444599114,0.0 +1554.4444130008749,12.29364654115704,1.5556621257303949,1.9857617197699229,32.39255145378262,849449.5 +1416.3747638339746,15.357734191402864,-1.659981848154768,-11.214032943655823,24.841425412851137,8056.02 +523.311683051276,6.915868932885547,-9.182371340922437,17.50630363691945,11.14755758529308,0.22 +1007.0518894845716,1.9532827766297107,-1.6039182399966023,-7.0014705054838755,78.73964619724285,380179.06 +1636.544787714858,3.517296052179223,-3.563233455015804,18.32172470246725,6.6005245257038005,0.0 +1759.453333295732,1.06783221563904,-19.72192644948216,18.91205013306559,62.16953762470477,0.0 +627.2039265434697,4.3478798641981955,10.34306602913052,17.718993566626118,32.23767152005304,0.0 +1272.7312235008771,14.505007351446045,-2.4570683857176423,11.708991893657124,71.40292884022034,26.13 +482.783424929216,81.5496676933895,-11.086027903911775,9.648624100816509,96.61465407506508,3909306.53 +1924.8983716191528,2.2687863091031995,6.650467092511807,18.11084880003171,28.211741074726245,0.0 +653.9677201864777,1.2910083792633,-2.093266981352913,-11.05320216018942,62.35174300401959,1058.11 +1507.943231487014,3.914015811431466,-7.450798268708958,12.396093221718523,37.68308480915908,0.0 +616.0032996083378,2.058711053610948,-10.7675701882342,-15.460485397947036,51.43383364754653,0.05 +1308.8970971813749,24.605828561906232,-17.634333311248835,-5.524881360987717,9.245911681418711,27280.42 +1386.6757526407816,1.0268294809372511,0.1208840259020904,-3.926725340098765,21.2318636317718,635451.41 +791.1705862185548,91.56598773153968,-4.982230189933716,19.81305691857598,79.62934419650966,12392.47 +1673.900957766892,51.443836647959955,-18.38683244766523,-7.160933389948716,35.14879009232618,354815.02 +1793.667616845411,9.5794634371563,12.496265205921109,2.1893429601430414,1.0999243229716749,30358.3 +1739.125874457191,69.48394048230897,12.331370551981582,5.339629131559196,32.764235908012594,139606.59 +795.4367950364912,18.03510459301193,-0.3989771256227215,7.113557214374855,67.29851118628653,85839.55 +1539.8124662227772,97.16945197826811,13.556016188936614,-15.193988665374526,97.18725315993034,25417.52 +1207.0833587646034,3.6025697898008033,-0.7597786890911395,2.3650530901465583,85.55769619498226,1938514.67 +1266.730984085621,98.58532789349964,-13.243889295781043,5.388866888032626,75.92970156507225,635755.48 +1059.3651534652313,2.293478030050776,0.7039270971835432,16.133940867026073,93.0023046152168,0.0 +1280.470066343969,5.091394338226924,-7.497321622679118,18.291735133600184,66.28348747556322,0.0 +444.1774844643499,74.24174321582876,-1.9054156613825857,-10.598911857467082,52.398479137657944,528578.67 +935.9250196114195,5.509149660671285,18.826795889797655,-11.579245624206775,54.41975930493521,454.47 +519.8091715783028,2.6282868013928837,-5.778765147063614,7.349852428125612,94.47933330514248,42767.49 +704.1899557485664,1.3151467345004937,-11.364405969891047,-0.4206563257691886,1.2114808119955982,18770.66 +430.0661646598407,1.9857127275032045,-14.857938146653726,9.742674844418143,52.050595805691806,599.66 +582.492089399636,5.133893800623718,15.357108129783311,13.938877789870062,77.13877010389072,10.43 +1607.4726604178886,6.957674461455001,-19.402464107343853,-19.572613914693108,4.772813349285521,0.0 +1189.7056319198064,12.159123478594124,16.298149001194865,15.149220048594948,82.49483446903542,0.01 +242.557613322023,42.38146735807023,-17.529119031800903,-9.382607440973704,84.55340905928693,7138415.92 +1619.344070843808,1.0637258164799743,10.10637432699793,18.775877093266192,52.83559841994147,0.0 +1837.043112673083,48.10965720714382,-8.25396196935646,-2.789519696868923,83.04929968987916,2119694.71 +1784.7726964087478,14.2724551204078,-10.003703699604412,14.09789913966467,15.120839156971646,0.0 +1681.4303891719792,32.58037783870796,-12.802584274718942,-12.002580724343282,94.36334644636888,23300.86 +1985.9895970416865,32.65565817665369,-14.619393345284974,1.006279419120406,5.835583643032798,93675.74 +1255.5235199682793,64.03322252656805,-17.350613009746407,-17.468478029983125,4.687889872298128,2560.95 +1932.6577313268288,1.5373063379148957,-13.798216148211935,9.393715673041708,52.87813310698498,0.0 +1907.9196185025696,13.90050494944883,3.5390927680500317,17.68399349763917,73.78905856813599,0.0 +763.8297149061908,65.77472739083434,2.787144451386969,13.724921563928431,70.30549318579715,17208.87 +1754.1807609005675,27.441802102297327,-8.757012296212903,7.214122978444037,55.47094357470885,62235.01 +1626.4507980057988,1.5601624568412458,7.1952748187146875,-15.242476103326736,78.57842998384902,0.0 +1596.437799321954,16.901631229458154,10.785160946398737,19.358391564287984,61.1639716224319,0.0 +1813.3053883254595,39.78888951457196,19.20699783806097,-6.241501975926016,85.16985862222532,664146.21 +891.5420178565539,3.5458762322583546,-2.409227332850654,5.310914307806893,12.46324825219612,41190.05 +920.0989385972874,18.40714655136604,-5.016437422447413,-9.08079649896167,98.16103072791586,255088.62 +1352.0941565665455,47.95395625756835,18.926994394405995,13.092885678366702,88.19188536352435,132094.71 +1528.0481680658158,11.161791656587884,17.686101880751124,-4.863187339418933,89.63184941612651,232784.27 +1783.526784783706,2.4455379222628357,17.077914245716137,-4.3728998829411125,36.99721452049672,186182.25 +1776.5215771867074,12.57083842107275,4.35143002243823,-19.820798900043965,94.73969962686948,0.0 +1498.4113238952675,14.997119993117115,4.709271463637101,3.0134107606207072,15.008723848005149,266570.69 +1922.4070000787408,6.393012365674471,17.11920779115884,-9.97073734975801,8.710943939252942,124.06 +521.5315141032361,22.868266728753746,-0.8072370900078063,16.873983054209365,40.47296692339104,1085.29 +1910.6117249241552,7.356407684383385,-11.460988303794345,11.325995958733849,93.3752742479991,0.0 +315.5446676605188,56.860434666669015,19.41034890388687,18.082880831152497,96.81872987260844,5685842.19 +1200.1193861454528,38.30460030807251,13.682789125174416,-4.410188340261545,49.85918165903461,308061.35 +362.35452261462007,40.69525102183887,-17.757848351301607,6.469202380240695,75.44014860437841,9157562.4 +1222.4017553566457,11.275956986827351,-15.50139893870111,-1.9279211069581548,54.28554331460637,413668.87 +902.197482420295,2.469992537716455,15.28470030439954,16.373498234640206,12.232091353437871,0.0 +346.8969767042964,28.10888626221934,-7.956532916530459,-7.029552994236279,65.66052119562171,859872.08 +1366.610249043539,1.3735444017401182,7.855431661389365,-6.858972074070153,15.539746483071257,61765.74 +1516.1563993211153,10.843010349609209,-15.287124688549838,-5.362259136335514,65.96403514627112,511856.41 +513.5337445159663,1.2763158511231412,-13.178653107260004,-0.0884312815482024,24.80381063078677,205950.82 +1449.986094755784,11.398228912010389,9.894668346725148,15.508770734469156,27.069666899457,0.0 +522.2855884659192,23.542053280089323,19.171667480653,-11.701300316223762,67.81790009046725,4641102.81 +447.3136087674977,6.8928129439238335,0.0879520162677716,6.052316140246301,47.0290903512251,65359.27 +465.2538797445424,6.820344836133061,-18.28335474086654,-7.761707967165354,83.19351277938436,1103267.3 +1278.341244117803,1.760304100157954,-10.627319132056408,-16.693550421965618,68.34723560772368,0.0 +1601.8234546278857,4.0151262961141665,-11.491961638601587,18.146279205326692,30.20497478653232,0.0 +1274.4086626528645,7.736551861867231,17.410888197764432,11.43116433900457,77.93454488521941,2.6 +1656.832615432841,53.3487535889215,-3.234000350948487,18.08075301659144,7.403055620104222,0.0 +1264.6592139266645,62.511483375192626,17.9069121210054,-3.9892132076656184,73.74801731196023,4680645.85 +1635.1782452272762,80.75328607619522,14.383384430298038,10.279209818112207,39.15368904083541,14728.29 +1957.7405020399412,1.5868190085286125,-1.9677437842622636,6.045792878501288,30.909014629908786,23673.44 +903.7276543428044,3.912205168851758,-19.005598307581284,4.760688192680114,52.743468284029866,15494.82 +469.89591846841046,8.429966281229778,18.9180207604694,-18.3891856843869,90.80480158659456,22925.18 +443.7142610689238,19.208243332405537,-19.59714270015062,-17.130835196340506,26.41824219985146,511235.96 +1275.4596739818764,25.44467916653303,14.24518686760154,-12.189488267514136,99.93924378346723,18943.69 +1184.7855185396156,37.327815703524976,-3.470726662838066,9.986158348759323,59.29893854093725,15921.58 +531.6236813756553,9.811775893585772,-7.947642604484457,11.93368940877801,25.959094725325752,1513.77 +1787.7889328018125,12.976827548561731,-3.667975597405686,5.888834544920281,69.41928370229947,232605.54 +1922.1470632175392,83.39526212966716,-5.723622525815575,-12.317251975939952,73.8037774943538,69125.73 +655.788157585943,3.020345044123772,7.56477048435634,11.104690539239638,53.620287235663845,14.1 +572.3892756219207,40.50601188202639,2.9089253935712156,-15.461260441371966,13.927963329363122,5070.34 +585.059334153585,26.52381980093191,-9.723805874852973,15.760935939984224,81.69560371580756,9137.65 +897.3587534444471,1.9062491957278067,1.1000459853574407,-4.609035446104626,81.2139523001764,1177266.7 +1735.8089155381033,71.28257594240604,-3.8019964247557336,9.083507807238789,76.75779127269702,50642.83 +1272.7290978940125,51.37032487085177,16.825850236871467,-13.22019774152396,75.814977336625,107522.58 +321.5961771188059,36.2250760418702,15.695121471242196,-7.428698911312526,38.75126659430324,3521110.48 +1051.362353309721,1.7928632596484293,4.693836410792129,-0.189073437792655,49.78013819037107,1304340.09 +362.59702945056665,1.9025718300460064,18.61471238631478,-0.1458004915490107,66.4846219418856,178134.39 +931.1854052151922,23.248605943331068,-4.994918075592474,-16.112009907450275,17.40386282001173,357.64 +926.3362561459708,1.6388531128326111,-16.48118896024701,1.9327566751951508,60.81835721946712,254875.62 +1367.034798277362,1.6851214694676309,-18.093907845539658,-16.99528336353236,11.909631249480364,0.0 +1189.0171405335818,6.317699048608553,13.337809375680235,16.947199273293002,84.93485299861214,0.0 +1774.5586082103548,1.0250753202414984,-4.660375095697877,-3.1293014698779276,12.862876766486377,636682.94 +229.29532879785023,27.73108139973635,14.41095155359427,-2.4368394018861705,77.46905647106375,5963288.88 +1593.1978797703684,12.034110261221732,-1.6505924044582445,3.079741083423744,22.977908099141125,490189.11 +240.7850137205151,1.433336955725116,-19.55305587199572,11.266988797722435,92.90827351610932,261695.0 +747.7216912574588,12.222653410028558,1.145936250765618,-17.218606454554827,66.13831712480479,126.74 +1783.3936487232145,1.2828496078094402,3.781847495247983,8.11912181648751,43.68330113251713,0.0 +1442.7455090188191,1.3848164442218711,-1.9396449788586256,16.42123379668066,5.319876044451573,0.0 +509.5940210590579,9.352600427221592,13.52137114820776,-2.4321307144173465,61.10992839835273,199126.4 +1083.4121794014973,9.991863697210247,5.760326349361167,-19.469385649343103,38.425657446350726,0.0 +1499.4275257603745,4.764195184318595,-5.410430546619209,-10.10525907466899,80.03133976433487,7815.06 +1887.217978411153,17.52035560368039,8.760095521477123,17.641839478730223,79.47928126569738,0.0 +1341.7781585927669,5.952738508470427,-7.215462523187912,-15.279218057098015,69.01628164254473,0.0 +244.4157405792691,14.925234317507435,13.54190541363494,-19.45545677789656,27.514399371363847,336132.99 +1099.4633474533105,5.0069110357769695,-8.795851813139336,17.43440140669291,18.122710255276836,0.0 +475.3309505074899,26.911253628188813,6.664443150544184,14.521029129541718,50.20886218898576,17642.33 +286.0031908548584,14.406956169683138,-3.396318301310659,-1.5843180814477795,45.78291159946493,99215.07 +1277.3191424268516,2.0897151616094214,-15.952668962137366,-19.78419991942171,67.62154092116357,0.0 +1598.459424518764,23.57966932411851,5.18819056856394,3.350821269333286,53.7486046843746,817075.82 +264.9089998935277,36.97190641561679,-4.677847768623744,12.670475254759817,49.99834807293528,820465.87 +1610.460687737935,1.354403713694474,5.3705359203545155,-8.557168618614925,48.59869249456831,3878.04 +1471.4981836607158,16.59285777246997,1.5961431964674944,-13.090581639944276,50.920240344822375,813.74 +1553.5763987030505,38.09423986251584,-18.33619500424883,16.186348864901344,87.34405224198444,82.22 +640.5110708882609,1.6955312381858838,-11.800868666330366,10.717052420510708,17.91604734713788,0.21 +908.4718198881724,63.57770391366683,8.016843307175199,-2.0767507579019195,2.857483540689636,12091.06 +415.55148897299415,6.754567911486903,-1.2937665334712367,16.20059099507971,22.963300960801508,48.48 +630.0037104220397,29.900582031947536,-1.3412235470630218,4.326239158387053,31.71814974135829,63821.39 +745.0214086593742,62.82025481255887,-19.90405599234542,17.763543760909425,61.629382492833,1108134.68 +774.985951166215,95.33981431193035,-7.888072108242525,-15.873559760907996,84.42053855429768,223922.84 +515.0717985742613,14.718045055159022,6.7786385281743655,-2.543402778803925,71.59252762901227,247168.57 +539.6812365280581,25.61815547361577,15.479523559986514,7.168670141615623,99.83113964619132,2636022.53 +1822.646719625888,3.187126843955358,2.960282601623949,-3.6841043696535225,1.0701746396331675,45660.08 +1611.0085066680904,3.8027059512238313,1.6258123312382544,-6.009362748914042,19.821858297376473,301164.7 +820.0598662845872,50.29662613081656,-1.1874094460389273,7.816955135869028,9.622328759345557,10911.3 +1905.7583710657293,6.258752924021406,7.1392449555926385,4.227498063527406,66.69546277344173,1373511.99 +630.0608830261831,44.14361636388058,11.925246482275522,-8.698433855800873,43.269628743165946,492591.47 +932.2768162100912,1.262390242580724,-11.172651303385113,-2.2399233198755253,31.81853219202846,671999.31 +1664.345560582227,2.7321644968199403,8.559056677228751,8.27604901291374,31.952977193412043,0.34 +997.195466366528,2.188709777098497,-10.24580794976516,5.076233737064948,89.40472531109276,403588.48 +622.3255812346628,11.327522654102657,-18.728308012128497,-1.878947572017453,8.475358418732533,283735.7 +863.363841718679,1.4489756763201118,-17.012804792359617,-9.59980859231321,32.026671486368826,741.17 +1101.2979302744268,4.872376892267196,-18.13833877607229,-15.416453981569989,50.48913329550895,0.0 +1317.1598905886071,93.8620898719419,-8.793057747626584,13.607005812208657,41.747014611905094,4284.46 +930.091699246742,38.76450774431772,-14.913067968966889,12.812542920204384,69.06491723218056,42724.08 +976.3477960159536,33.203420525686674,-16.591838161364958,4.5321078380326485,61.14132548760314,630315.12 +675.0985030425653,1.8630709703487132,-14.096512367515782,2.85368597802909,80.2466945960124,479353.64 +1163.625137151341,5.359425190008392,-18.47206790903918,-14.54680874421912,84.5723706410668,0.04 +595.0212207851835,22.97079058617958,-6.257933827294604,-2.1307384631561455,40.59401559487438,139407.06 +1761.5471925945365,1.104715568560764,12.912640351957346,-0.6453884742593541,86.74110345132429,3344920.56 +1545.2607264793426,7.378243466865213,2.151143339105448,-1.543401686163728,63.58456423251107,2290586.19 +938.5021791455314,71.97465278216964,-17.401335208690565,-10.31633631813876,86.1772226673975,5657621.18 +1545.010124659126,1.461098900023244,-5.003068791761769,-15.047532340456453,47.07184880466427,0.0 +212.59269525687145,64.94095596977853,-2.8066127109594508,17.255124960442977,3.531153474222382,105882.16 +820.0806007563139,2.449307142971182,-13.103542524695465,2.2537859545777073,66.13938389465723,671667.64 +992.5420666642194,2.3889906316879643,-5.0795248845587615,14.502775879445805,96.63466867629994,0.0 +1045.637313582255,2.4596420975719666,-6.529798712651411,6.879403584879884,93.09825974355375,21741.13 +1547.71665987861,72.86385834242957,-0.2476659345299214,12.81235004867742,16.051946165265075,677.37 +1933.0533696110847,16.12463856926111,7.891686273745933,-11.360096235219752,49.465570841729765,4038.13 +883.9948347970454,31.7378783075358,-0.8465217645772372,-15.758632234064285,87.40784745474795,7893.78 +831.0797291501744,5.405242864911876,-17.04183795437863,4.554811500285738,42.236597867146045,39563.92 +1298.9274078447131,55.78300065593254,-17.79085176439354,1.973860425606042,52.298158561450066,2036496.27 +706.2565055448421,14.58391994949552,15.518377242663696,-16.141474781945348,99.76227479267848,2556.64 +454.4306008673406,15.836888767753557,7.790562536466905,4.451814465593249,48.781654133097355,78733.39 +1930.7735668859575,31.96260032098811,6.287170287907293,-12.724034948205984,19.812825267954903,1326.37 +1657.1539222562396,35.260238592582965,16.528051087477618,-15.67331836625832,4.828670315077896,3.27 +1925.29919544343,23.106126314370947,1.6602345657537398,19.40914235880689,46.675285800660845,0.0 +592.09918163105,1.7290990301220457,-17.0510674874636,2.2286542668097953,51.945823177430775,92930.08 +232.05658694540705,54.13188935667772,8.575388856107056,-6.809308936886924,92.0734239112268,4090250.15 +987.0708363285916,3.325050396870556,-13.509109145069766,-16.07776722359624,79.4067826745965,0.0 +1880.4961333848464,98.26261480372636,6.647780930070009,16.668898069371657,7.223695224690179,2.45 +448.985609969166,5.902226389255723,-3.9716928856385225,17.703166908979444,81.86459148338578,4.61 +410.93394110227706,1.7377792019233549,-18.87096763569645,-9.721786254325052,7.8837416365296225,1524.9 +324.1150116425157,4.2871927062721955,-17.778817525590664,-2.598996721051874,2.3908793394887646,58669.15 +1577.0323980775545,14.030349423729076,-4.294644253732054,5.821903060332794,55.14906359145501,193156.98 +1614.66776090037,6.065861310506165,3.7817251702522903,-15.553728437030284,53.44938860748621,0.0 +1451.6769001942353,45.43215924580783,-13.164111508946233,1.4782906744305313,32.327955963944746,283590.08 +295.925321220205,23.14262354435666,-15.730004714568192,-11.254320318706371,46.595065731425834,2933680.81 +1501.919004467367,2.672397957840988,-4.950783116743209,-10.989445813804837,92.1168325499335,18.89 +1007.531855231037,11.959323395482205,12.167229141199552,4.122466752602971,67.96244068608212,338726.77 +484.209959485889,37.589279415943736,11.360220733868545,-7.597004891675834,34.898756147939665,701940.52 +731.2268188722837,60.59928542846071,7.365605173308984,2.0141178657060133,93.4612139395119,355464.87 +1102.0643118793298,6.164369597034251,-2.9857275196618183,-9.507632085889576,17.134323283328545,18379.66 +793.3726500854259,70.62028083786596,-2.3224959832909065,-0.4924231264784895,18.343305854967475,51679.91 +1945.5486081348663,1.1801546427227034,-10.962245477305515,17.289264097056428,24.06742197578915,0.0 +1054.5351350729588,22.562249857844435,-14.51429996243399,-0.6109858341220642,24.01660958486161,141010.52 +869.8709184538585,36.64118323604798,-19.36636836812173,0.0540525986242723,8.028199814684427,1372632.23 +1411.697772142466,7.084068651674332,14.406001646161911,-0.286395819805656,31.656420170334783,510543.66 +1370.9811023406469,1.0518382306114962,-0.1526155475401402,14.26249649137187,55.31661479814443,0.0 +204.39070472948137,23.66302815912003,-19.878280695005127,7.269563415013107,23.05541878421925,2454330.13 +1313.2526569413374,4.843156301147664,1.166936193319379,-18.774988175274498,11.577140065683574,0.0 +638.7841545842607,2.011990424027966,-9.667043896921404,-15.281835281793304,65.39627535890928,0.04 +875.4205548582589,2.0616624121978573,-2.9054941554294578,3.1155106526242005,42.57883358532594,568139.58 +1471.4280033227196,34.54045956913992,6.896442402110123,10.407235277076602,65.68065322460842,4242.43 +1203.2951978192525,2.370166461386785,12.389769017691773,-15.319717361302605,25.555765917729996,0.0 +863.5792594791744,9.293870061764729,8.019271896080063,0.1113841024994233,75.85272965125134,891154.67 +501.3386333068233,87.25266873980515,15.851945528419057,5.699809715443589,97.3046179685674,11114215.54 +1109.8679370459556,32.93346269268691,-10.610154351216517,-3.9679082324293935,26.86226532596297,226315.65 +774.8588423129657,12.427600887307367,6.455405842499071,7.7402866884637245,64.29738437171673,49572.93 +1843.2700551345351,11.390707642112734,15.593250826279451,-6.294945677920305,76.74079195951543,490515.96 +1161.8239525202912,2.1610005782477986,-7.660003424101602,4.9207487981639275,54.78426425618812,361879.78 +1758.7351895067425,7.813527590387157,11.978064197891104,10.62841310596104,29.822573698821323,0.0 +902.3258512703204,1.9489437635935825,17.6086227975497,18.232675541590233,22.228259485796755,0.0 +1689.386894818329,1.469481863935254,5.755075229572815,5.555806436910138,65.01265921098279,226412.24 +301.76642390974155,1.6530061597204715,-13.429417526193808,-5.936822730429574,48.50941213828182,112751.1 +736.6142460224269,16.338881135054283,-9.56559315604597,8.849625484548405,83.89148650333782,38618.58 +340.7166794804589,2.438405703701706,7.199209855102557,12.179181800327813,9.846037943140862,87.01 +256.97032528677306,1.989257618389474,14.64701660179728,-3.4145485971246226,4.2395825856450085,9311.57 +1853.952041581614,54.23278712177711,-19.04973246922088,-5.497319191535803,37.71417384028029,701732.38 +1490.3637399194238,1.7539852079513405,-6.946745213208745,-13.901280206671004,47.961834411743304,0.0 +1325.1981160432472,25.779247009372284,-10.657202465101152,7.075985862512906,64.31719505852779,84589.86 +1158.4870569412994,6.823395178842113,-3.1175593009147207,-2.205231740589535,12.290891478551648,274268.66 +1225.1972651903156,14.393270107105984,10.739111394706043,-14.683652952959235,59.14194702332474,92.63 +1349.6426864956163,1.1135528377279953,0.1122201223299468,2.4582901256847967,81.49046309894156,2525763.07 +1687.843630532186,1.000088605173348,0.7316291167160571,19.59515116565381,91.04540224474972,0.0 +1274.3994004319509,43.10196679909163,4.361037615925687,-17.946813280905364,90.0762766930016,310.39 +1547.4453735995885,8.930634530051107,0.626949083397701,0.6207349511559768,52.32856916045095,1731850.81 +705.7604932935228,1.3887173867255682,7.530453605183305,17.433024114659407,90.02545715945234,0.0 +1958.1711280696495,4.863088873047018,-15.718505857908504,18.36509466364452,54.22342754451372,0.0 +257.41497518665204,10.296956368514582,-19.087953952571617,-6.331117438671092,8.26248403053842,1207623.92 +895.8378714991678,1.8663236252021376,13.071596372900576,-13.135755674804228,97.39351914637292,0.12 +1787.689192706667,12.378724560902656,-0.8436838434911298,-3.1709269359671888,1.2579068032321623,46658.2 +524.9413328351422,11.41567088876774,-8.061048294698239,-7.258840505439985,29.293517003881163,71945.9 +454.4085672805843,16.057219075913455,-1.827793632414636,-0.6965659053660378,5.591636878419574,14372.45 +857.7753804198443,41.73722883808068,6.003662893948687,3.838405090480883,54.82312397066576,166880.74 +970.7504609302896,6.692026110174744,-15.131884357590213,10.729611362008267,57.17577983730886,18.36 +1880.1093091911096,59.857704359176,0.944460047412794,5.36629561127691,64.15513876824305,420540.05 +1705.0151624758778,8.89912907289702,-15.57167411701609,15.682174266347715,14.895651446003184,0.0 +1035.3613478429254,8.209145031235323,14.382774413659485,9.42841002434089,2.724915658150969,27.6 +1951.3551815868857,20.48195448936485,2.495356375223392,0.7458973550178971,27.302522761263035,1069254.7 +1356.1011274863158,17.180762353175286,12.434384781411293,-15.228030341083551,6.098102396705934,2.33 +1772.5857175674043,1.0540710303276677,8.840216887601313,12.150110238406832,4.493185299423637,0.0 +642.9025648762859,92.22765800157426,12.610224581411638,8.566638714722842,27.13100628973435,1206789.77 +1080.135333739969,76.804589496313,-6.3277038742569,-6.553231810545683,99.88467974129688,402099.26 +253.4909840415799,3.6523457635872454,-14.4214966963027,-10.721709254507203,80.53563294951381,180513.46 +215.98434787960792,13.09684477755078,15.664192815655396,6.323181862149312,36.813299762449525,2684313.16 +1469.815797691036,34.75124331295799,15.385582644142533,-16.630971988820175,38.233347135316386,22.86 +412.9285204380813,69.33230649097742,15.330914071361722,11.490037981734083,93.05485990677644,6323262.0 +1186.0548267994716,14.85296919233152,19.570870064255903,-10.92461215992639,66.53589742208929,41934.16 +1452.813467978036,1.0911394699979693,3.846699981275448,3.7390087070784577,83.85985278080912,2064941.91 +258.02225521335066,22.980310642004863,0.4998613084190584,-7.857520822208346,86.5808545848908,588036.11 +1007.7345184622276,1.535168808356389,11.893238923978997,-0.9103956215529108,17.75980058296041,388394.2 +1431.4734865745115,21.996599477203095,-15.594619295174006,12.025178501230606,2.5946846864021267,0.84 +1801.5157781387304,14.957368868410178,11.32188262032816,-8.518880093174989,27.557362113823,122501.9 +738.6141810829816,19.113457527479756,12.48903303421709,-18.67637238837372,59.846629401001806,185.14 +1953.5897534317944,2.3906466945505844,3.087680235537938,-16.90429763336898,90.94570135917728,0.0 +1720.1746993874551,9.710011083272782,-4.4832076602784054,-17.02099859180859,31.552757483355663,0.0 +1371.1431297473378,17.21526010884794,6.249082601940383,-1.639206728537732,85.1627246869541,1915440.9 +905.4659130430362,3.986445424182597,16.60070738391832,-16.668762900389016,66.55665329758051,0.0 +1479.9986771590975,2.3080569620126425,-13.68142605550306,-3.493231126389169,65.79679900958098,1408251.87 +1669.147884326636,2.7884411154922195,-7.55588835404128,7.914212127100995,71.91225171578182,12.91 +745.9397747958031,52.003591508376886,6.856818042555015,15.194746205789396,51.64178666778497,7630.96 +1987.0941168326528,8.493506834546066,13.328683825073169,-11.142729121898864,67.68594298346687,336.54 +1835.51486555835,20.996492635196883,6.082762752763338,15.066716152007764,79.53438096908512,0.0 +1073.9025926172608,10.70971042497025,3.6337002513677152,19.123362505902215,59.34913601204623,0.0 +1501.0938483957111,46.58590146333217,-16.570352024359995,5.028311069271596,4.882869834977228,14347.55 +1143.2160103138074,10.39895584839974,-2.6513368204286447,9.48882289195829,51.54897008125543,1092.84 +1569.674993954647,1.536917748275278,15.60698795110901,-0.6785012047042382,60.100646093910655,860266.66 +1688.5679669803665,2.488681887688684,-5.534373884327497,-17.00608094255117,87.66020933018527,0.0 +241.80059928267653,1.0629940420028257,-4.759776178602104,18.397622601200517,1.5175230906690698,0.0 +342.4376534611687,46.0308045857761,-5.697700598059807,17.81066427742224,5.8086388157343265,44119.46 +805.6413485781086,21.21024409770358,-5.490058538011566,-7.0889991855188805,37.42602550091981,152083.02 +1851.704538738229,32.99163480183856,-3.809648819388296,-12.170358047504871,80.49376133114443,16777.18 +916.8924496581014,26.917856241840084,10.934568888372702,-17.380612940839196,48.947955284394766,455.22 +1797.5219873634635,44.561456507683566,-1.7974897281642344,-0.0872474703919889,31.22018872818245,792432.34 +1032.3810427371552,94.17573236951584,4.283425585396046,16.990757383030413,69.63228665400315,3333.65 +719.9352565608322,20.27415020944555,-2.303187736310144,-18.362345173677696,50.93187433269439,437.67 +1821.1613295124912,3.1954439629108364,14.953364189542832,4.461913437321998,57.79803222312066,457814.96 +1209.2073840536195,1.59507123956083,-12.850031287150925,13.422480107805876,43.4049755259596,0.0 +848.8717310540744,15.118052765257826,-15.08390533707277,-4.811899912581041,72.78027310280818,255976.09 +279.93260653007025,34.79478221715448,-3.690957116445897,4.479071038300897,2.5428466098952676,42429.91 +399.679638406803,13.278329102455189,18.971507122834065,-2.2474706497260843,1.1663400540607625,174262.53 +450.7585897547549,4.046779451662694,7.991854750951202,-17.38401671783957,68.60017345281288,42.48 +856.7053227390913,27.50867648325439,4.650794152646545,0.1784387049695901,3.639160742394786,23238.42 +1293.1993203398192,7.869461085679734,-4.386617384088614,-16.43768529514834,34.38166227344757,0.0 +753.6622059594737,3.7426412730177496,-8.19392125922759,7.398778768863612,37.26666813877441,13139.1 +317.94974077664034,48.102647065635544,18.26312249739506,-7.596098291683351,61.76721394209705,7389146.44 +676.6557271712009,14.224518100090426,-2.9232164233269664,12.100119134578048,77.47050395726201,3654.05 +935.6269716192984,3.68889246917027,8.443397684262832,3.481442934454395,82.36045493437068,893384.3 +1986.0858716101925,4.541597776967135,12.417525766851746,17.401229564418767,28.73530926078595,0.0 +907.3764285516896,13.910099315028086,6.300916859238215,9.509694530282168,17.06827314748634,2418.01 +360.55175374539914,7.0120852590314335,-10.6957683306008,8.994140883233804,98.09922076739812,44232.89 +1246.0066660530802,2.094296834365984,-8.48065214022997,-7.815487956610161,5.330848248859737,10214.92 +1855.3521307273213,16.631823394685316,-19.080684448284877,-2.3233285131330828,81.56764249422243,143211.55 +1616.05225795115,23.89021906538504,18.77514242145584,9.822746961063498,2.992494082945686,301.41 +1705.1929565370258,1.0005011509350097,13.386119994966972,8.88033444505501,49.02656925091798,0.0 +1870.8172329841948,11.85055341578982,-3.8395384296423303,7.691597500531553,64.5077908818755,6557.74 +1345.7783060939685,14.266681300512357,15.696832743722393,-19.681957044113915,48.29389227314107,0.0 +1990.8609151762976,4.614536743795095,-13.852785120062189,-19.30714055077808,56.905885760090655,0.0 +259.90682578337146,4.7584172154509,-18.31848999494539,-17.30132594230497,3.51119957847977,13276.94 +1702.711417058412,4.318349263138717,-14.588268420031154,-18.736660835524425,16.26810478712205,0.0 +1742.619205140071,7.774207652669896,15.33677381230297,10.91396234634827,55.776426396162904,0.0 +1850.0607033715369,42.06101587327699,-13.580369586587477,1.875785223511417,82.94319198937626,1163271.44 +1060.7050237445285,8.670659550556431,-17.274948990303155,0.1958221159021933,55.29401479044726,159303.35 +1617.96066251708,97.11748190936942,-12.578124871271532,-16.576023430031455,50.44878882243793,2995.58 +551.1447184181236,5.653499388539225,-3.397499030542983,10.98493118668079,98.83001224730609,2867.12 +1285.6344053207858,25.03366938772339,-0.1427524876709274,-16.28622619464375,39.592567038297986,58.21 +845.5612742542305,12.52943082654734,-10.563314712151772,-11.12745132102515,39.162495382499166,23347.75 +1273.1125711915558,33.46395304909257,12.2286696302505,12.756368428585017,8.328006396716338,48.52 +1416.0089128849406,59.80384924269301,18.393777134995695,7.703086238231047,78.53485080319186,1711761.78 +824.723600143122,10.552772758966736,-8.366553667840627,-16.29546993974465,7.704216322144225,8.52 +589.2289387451696,9.748962915394513,17.243504221037476,-17.04423934505856,14.479404024857548,489.38 +779.0382359468025,76.81358943196237,12.716779138977705,-3.740119699350708,6.619007064505934,237756.26 +1395.1230411933966,73.67483048244583,15.440811023305937,4.135750073721298,20.046049028264093,184119.94 +1418.3736206110589,98.62646316049468,-17.61204929364712,-10.129568985628584,44.45028707997538,1872776.33 +1534.370484843378,2.055662581171584,13.361677186815966,3.406953232821359,5.157828800443752,96839.01 +427.7658954308708,1.0165703702590458,3.4370036100268653,-5.623878476605473,41.7327386158107,258343.93 +1673.331302458031,7.492393943842373,-18.469656702366603,3.545247454336553,48.62434850856434,59310.43 +1438.6660427737197,29.287366820065436,10.146015806919896,9.02047380880572,11.968986504200672,2693.26 +254.9091380431505,1.3986595668418436,-10.331396458003486,13.726484927240836,6.458472336168254,7.33 +804.0761289830914,5.587316386489602,11.88302854558556,-12.166130425051316,32.12500163964507,1719.63 +1040.0802606316588,14.551874935507907,5.039565573323719,-16.595181375469007,65.40288141408587,20.36 +849.1114826962666,2.661306226761746,-0.306729163537276,-15.264793240965066,61.1071490256113,0.0 +411.3503987751436,28.992388496317208,-19.064660183592785,-13.384804272480068,13.53454107778033,1112261.42 +573.2233121090127,2.877897420671989,15.586989272032866,-7.025816985905098,10.09929764584982,15928.61 +244.21051083823855,48.01136245260203,-14.097424918246285,-18.854577982260064,19.501891841373617,819025.19 +367.5388904346131,4.972178088299641,13.187793985986056,13.30154646562622,87.56146710933454,2696.71 +679.3402119041806,15.75059247211438,7.526500766602866,13.962204952223614,93.23451220615377,1100.95 +1675.946478144315,12.25485040538815,-17.21709087183063,8.526208113616804,52.63923661667141,239.97 +1147.9475178869604,3.916457634005687,1.6886039829068178,-5.740708808581982,90.32497248154502,1173636.73 +964.0962032439908,7.553413282379263,18.470150640639492,8.269953145851145,14.008620551175673,985.35 +1391.8932991253882,49.19785676832869,16.91235375316266,2.984264665531562,66.06597506515965,571586.28 +1174.7190085850093,12.493628018551348,-14.148065250034144,6.493820904653953,65.22701224445798,58744.27 +436.7250681601272,1.291736470987402,-13.07266300441122,-16.4846511178572,45.48356312099808,0.01 +600.7220548835412,26.672552697288765,-13.854635648859324,14.988671272616395,74.04145486414652,78554.72 +600.5402497830937,2.316887762048123,10.246978955645488,-6.052798297134214,48.024219236256776,305051.45 +1279.914522702216,9.378330358560078,-13.569842428649594,-9.230988401684815,85.79049080600034,104352.75 +1030.9238591408237,8.651228071139414,-17.4167411291357,-4.367428256826322,14.44925827377717,31582.73 +897.6531126095366,9.39666744447344,-4.386715012488773,-10.108076980162494,2.7143751835534964,2954.41 +1201.9505111872184,1.153527659703059,18.675576926344224,19.766772333862065,38.433862152204675,0.0 +1946.208414408603,3.5057184834744923,-7.669605105702528,5.848587282498063,13.732439067209928,30668.56 +765.5482209005783,1.2631965923681956,8.969441712547695,15.856454424590169,18.733886682972223,0.0 +1136.351780540331,6.759481834296262,-14.24155686667564,18.041050760248933,5.7276015660660935,0.0 +1064.666028159408,17.485314758056095,4.845834853320841,3.2496239380831726,43.62977467842785,354065.33 +1489.9574571425203,20.330508978134375,3.246637697483754,12.020739195289948,73.98618385533314,16.3 +1514.522482369249,1.3461579095926248,16.16692690480889,16.211575738620596,56.110394360232085,0.0 +1512.327298543473,1.7289331839515347,8.662287871238599,-13.999646268009704,36.31178412528823,0.0 +562.7352438897407,21.03844114224627,-15.168608475126693,-9.23365913119854,2.1591592184932957,24487.54 +1008.367645450138,11.544504546357478,-3.8080028476826433,-3.9354204789424903,51.39731852580749,676590.2 +1660.1144438524475,46.43270838299598,-19.977745369286637,4.913692836186785,33.442889374468365,1659767.15 +886.7543069731588,2.5720791827313723,-10.36012519907436,10.731884414380003,24.648504279684133,0.02 +1971.659211121872,1.7405422713249616,18.853043816584613,-6.199829826034637,45.702996096728896,10795.01 +856.6161352259585,5.29722344190377,-1.7703417325740212,13.707553996779694,17.836655261940646,0.0 +1095.8002892155428,18.798979313818144,14.703105529780853,6.174443971672403,32.840068275495945,37009.06 +1054.1460706445844,9.37420577801969,-19.05083881157946,-5.119116447953864,92.69140377250324,125005.31 +980.5948444446366,1.5746590451507858,15.202313602391053,7.22855249572131,61.474467006820966,1081.09 +1722.1364629753189,1.388622435907737,15.575842437062924,14.081381096739872,98.98555296093504,0.0 +479.49542758642434,22.66664559842004,6.137304352369095,-6.561943959021073,63.160187309674505,116789.87 +1221.7964715451694,3.925874595937234,-15.349963795278132,-4.520721009680417,10.60069178739068,78126.45 +1313.4828392397626,21.825537203764465,15.040643155875838,7.673356745363686,66.9158469043847,22429.9 +1732.1983545248677,3.888926777722959,15.994555911170124,-2.807112942595027,86.72132351785393,1051297.46 +1296.5602878669952,4.261754453763786,-11.958132161106384,-12.893282034556828,91.35795318412411,1.21 +1928.036626018005,2.6280248217440696,17.606546719169877,14.166638888465624,55.8979471333472,0.0 +1769.9018820696722,92.775632329664,15.241660489944069,-11.938222290545122,12.89269611271115,14260.4 +827.7319070349166,1.076813719500062,-11.804942249487144,-10.14628843771208,64.6636190045203,1144.3 +1747.831601523502,1.7968212194564226,-4.247171119724209,14.712617751016586,15.15452309306492,0.0 +1925.26006536822,47.05224631830112,-6.532848190609575,5.678237662193002,6.547600614289986,37108.09 +662.9549256642554,1.8893980731663576,-0.0709443150506405,-2.7356756628787116,21.96064683892309,304913.66 +1298.3758519959351,3.6424515513544127,15.560011281582184,-4.727625730629175,10.606287537742883,73074.25 +707.247042215844,3.3540531205262387,14.97389425531189,-12.67054494063807,45.094774816782454,216.6 +1369.2211023479915,24.772575717921644,-12.97309094843274,-17.283351964766336,94.44746551288674,5.64 +368.5570481846394,6.643582861590115,2.0453132914213024,16.376878068869743,66.3791829730159,320.09 +1521.5384393643037,47.99275103911961,1.3613672547945033,-18.210781559273368,69.75311952162913,43.65 +955.6756914716173,31.250314433827484,-1.9840685916561451,-17.53283890449014,80.55689965045232,1067.21 +1257.152921617586,11.53991639458232,8.588391895597539,10.084064113007445,24.684087819637966,111.07 +246.55232454229665,3.148643935719254,5.838788759128692,15.74975623106193,57.66918277767501,475.36 +1451.7946193785908,38.44480116325732,-8.995699046797263,8.38850493556318,71.58063504364091,46590.35 +1092.7844374434385,53.948715431221366,-6.073143207207359,-10.3169405134061,31.101718561364713,61084.56 +1325.4518138381156,47.050584420582126,15.53473118861223,-9.173993473592343,39.36923936951569,85162.52 +768.2023502771133,1.268900402734806,-6.969124113018226,18.455115813948257,70.43261877576468,0.0 +462.4763121585459,24.88383802272315,-2.2365873297538075,8.003300274733283,81.03774273249623,61315.23 +983.7720955930556,25.578629573390984,18.91586647968502,13.112181775377568,36.80173348932159,42464.01 +1899.162418315454,76.93980473732408,14.291234098148356,-2.1452927723283777,62.943202723982274,760224.29 +610.0292479768495,3.3647804611580363,7.958517558753884,11.060929020115625,66.7665292209566,90.14 +1416.510221663453,37.38467926250663,-7.839091151419826,19.230860135498812,92.95858330812644,0.0 +289.7183792621745,23.8887266128098,5.149999640091467,-5.731195344310911,78.95880804345626,751281.41 +1492.5796134804712,57.20762818333221,5.680809118332877,-7.179083389198371,20.25813534424728,167804.72 +629.1869362426875,24.356566165755712,-3.5375143334186454,-18.282092633668267,62.93919814342693,2398.96 +1012.7307084127984,50.68845727286507,-18.55526025553669,9.48090123849208,95.81568547470646,3441919.02 +861.9555810705933,5.237821500935258,-5.338860961384189,-10.373203271169205,38.44840715909855,18485.09 +403.1126179712399,2.066563913637266,0.3253389040984666,-9.843550850561432,76.76351735002451,62041.6 +822.0475145211963,5.32971601872563,18.00568701636896,5.280287989515751,54.38165026380701,21470.63 +830.224924927734,42.66810721398645,9.099839799651347,9.553137083459484,44.34309406580829,27618.72 +1139.7901502535528,1.833580389117178,-15.682933905662884,-3.700952343224011,57.45613681616382,423933.12 +1950.2327592919771,18.87514769461087,-7.943107853726508,17.78166908074745,43.08774968649302,0.0 +1046.0315405191343,94.43046110784842,0.8673552864307688,-13.531530699418468,32.48480719856393,25589.75 +1845.967080138741,61.66372435005035,-1.9553889787237064,1.0939996353560355,76.35072907205225,1580824.12 +1030.8037854125996,21.997162174121566,-19.795092247409865,4.693185159236535,53.735707857635695,2235983.14 +393.57794157489104,38.48226745545589,17.40400008433449,4.695252606358995,93.55205581205485,12098148.06 +614.2752114966924,1.7098299029923554,16.16159153074667,6.274057231646015,1.8653562002563349,478.7 +933.5318169036804,9.946436744408516,16.949782817567836,5.355331108790278,77.16570597693757,56632.83 +785.6637913463326,11.583101088331333,-2.857806011126116,11.668103244633471,16.57643605359827,263.78 +1758.492717558485,36.7613557132543,13.335020277137652,12.563283614629462,76.36009705495896,25.98 +1421.5620839537924,3.674402191413116,8.341490834701325,19.09803246384254,87.15290569526717,0.0 +1240.9552134536125,1.632941298590842,0.4697977079186488,17.587935398522344,78.62186962043106,0.0 +1084.213192226043,24.90162479885902,-16.91471284962101,0.7971005634629336,59.79037029409276,297072.51 +915.0871129203204,9.664697361059352,-13.285920187413502,8.237902752253765,13.148176803585276,2457.8 +1301.9463916976204,48.371340100543165,-10.470675717628616,-3.902853501468875,96.07880472486896,941296.45 +424.2928977998858,9.182890106902311,15.836427378252132,6.025908693952764,33.30861217915027,295304.28 +492.5597387904302,49.26534839427502,6.614729564974939,-19.702222920813707,3.794768871474128,5616.52 +745.6094361140599,10.367403547832682,19.321239694167712,-5.296292358146704,1.1860211987933582,19203.87 +508.1323096299339,36.761821303374894,2.657279242443633,16.581406766182344,74.12369741157515,10802.19 +1418.77769424467,27.636965591885197,-16.6118116415643,7.000138880531317,83.46868880676847,40892.26 +244.5829785312415,3.405376077033736,-0.8894731337490569,-19.30880906149334,80.50078791494194,818.98 +488.31948500015017,4.157159141382427,-15.5286218766398,0.9074704801690904,56.34482148570058,139666.68 +1824.694597097846,62.86241263259244,16.05453099040245,-5.364465579645588,63.55644641735896,402323.95 +1995.5776667997563,2.8974386915208723,-8.862626998743256,12.351017569651074,90.77426022543132,0.0 +1077.6628600905676,24.83139466286953,-12.10920441530416,-15.40622244161668,66.69904860797617,1119.93 +1091.666131439165,1.9509236073976144,0.4652641999209672,4.1625211006131035,35.76774990420015,414744.4 +1592.1177720273888,32.38297484602084,12.283473000321766,8.48280745922529,95.08984368233082,29527.62 +265.1412397170351,2.796273836159466,0.4139212453415064,3.8181952233510152,96.59264801808774,192321.66 +968.6386674217606,15.421646558204817,-18.471336212810343,-9.022597223446589,63.16130116784095,139298.42 +379.6901872669277,13.44271451259438,9.718221023004547,11.727614787799856,57.043911298185726,44499.28 +921.6674887816748,2.552868861462187,-18.637146561742,11.743774914690214,93.74867451257737,1.36 +1970.879314031975,9.611842420907752,4.175135527704965,-5.562814460334007,78.02931682487986,2063463.71 +1556.53990544605,57.34506520371925,4.6773388370964675,-9.333143629801182,12.75294750675526,54391.7 +1973.0825762333925,22.964590010016924,-11.659224255841236,6.555802966734929,95.85872761481548,163230.08 +1542.887526207083,96.67380183952096,-2.136986561780354,-5.287222536566967,72.71228705495378,720535.05 +1294.598129251859,37.077335947094205,-19.75232445732447,-6.186027590993239,74.1622691882914,4569476.69 +1557.597499269038,19.36024587773896,-8.652825835662696,-1.977660303689004,40.692358058858325,1096870.07 +1386.3650113477725,13.378398507649036,4.774049268453537,-1.6763774080519278,1.8361968920884464,46192.31 +1035.3188538234351,74.96478366900016,-8.633225064519907,13.184894474715277,27.90145373359793,6013.13 +726.583401209378,11.324704398049628,-18.094760891228972,18.112761961960977,33.78010804241078,21.33 +1136.3205068018387,6.3877151506654295,6.970564006521953,8.538516043668096,46.13286762059704,1346.5 +665.288253022575,46.66455822879999,9.695807544536232,-16.470623350880906,70.4319855087674,56882.49 +1076.0174235958616,75.94319036337266,14.519451047962226,-6.488600169816374,45.610146076016186,895369.19 +463.0437306579548,9.074731492816372,15.021838482700389,-12.415453304389017,37.84077442795326,30937.13 +1217.7111781460735,1.8813822711886317,-0.1473271912347584,6.530601914119747,25.564196897030065,7645.47 +641.5106434617886,16.471973557037735,-3.705636673074446,3.925630622760825,77.0814325841403,229134.09 +728.4945870948254,30.322466425801952,3.434607420747886,19.298165032214335,78.96287336926784,106.56 +1098.2506552082991,5.588202900001835,11.706763599765008,-2.0921439769876615,36.95780019152323,688467.45 +492.54725543884535,31.31538209575148,-0.9867129255235296,-15.78165593071014,22.538607226319883,6687.08 +1932.2837905446545,11.537260144055292,19.80667141549747,3.935737028520294,22.78466451181669,17117.73 +1004.499767707177,4.006012137734918,5.500624520244979,-5.322239887615696,66.61874235793125,866185.6 +834.102613328152,18.15693157334967,-7.675737463656409,-12.880642601009672,77.48507561089309,22183.48 +252.5538891666457,5.996462623566596,11.748364535962924,-5.16045420668878,78.7134462496557,474869.69 +1717.8578536020193,37.46718009833409,-13.969348118686964,-10.472653243809669,87.19585451661644,92196.08 +1326.501047551492,1.0142851237106976,17.43148613874423,-12.111499051799806,75.69254007776674,0.0 +949.5292787143352,43.2868747896277,-6.385922901550121,-0.6543887837533058,49.107412446813015,295229.02 +641.9590388092563,4.10346331388116,7.401906486590053,12.400430115029838,27.46894365483232,3.72 +1541.247353615693,83.03345839991066,5.012327558591929,15.426586953284229,38.00452199194791,212.23 +1901.854236335001,32.986006122444756,-16.16507648755423,-9.587370588923282,29.089358987408175,27930.78 +885.4574701736364,3.034454078444873,8.864788326243346,-2.063682091774912,10.84958231781439,199106.71 +442.7769230826163,90.69812676860336,-7.527252991897835,13.715660073668822,15.246239272711096,334890.88 +396.5505450909272,9.980704188075906,-4.7527644262460855,19.547094056765264,2.256778760134034,3.16 +211.45155020099463,11.113416595317222,-16.139021516490594,13.99728320471974,20.47717775258294,712413.28 +1539.1197933890994,65.92289455427932,12.403373580136943,-0.2385618401154898,83.68570288079401,872524.59 +1966.5116946230069,68.67618074669045,14.410883902395415,14.80543768854995,54.175599601177375,8.96 +1987.0719549564228,24.76081916692225,-14.629307221399356,8.265091100433644,39.5547303360896,3004.29 +1611.555057817266,90.55225692108804,12.504491608932804,-15.4593826122643,24.50125156277487,2796.01 +491.93080093287847,4.547164012910421,15.919984195621817,-16.634338860182467,59.396864584809016,43.17 +1959.8770206436188,2.915232310852437,-16.108229241981014,17.45056593097914,97.3658058063099,0.0 +790.0641974035117,1.1442302970963905,19.89711642541293,16.97769415860214,35.448842627620124,0.0 +800.5152970865786,4.928217617964599,-19.817986325204732,-1.6653746884277076,84.9034678556463,202170.05 +1437.20651520639,16.04230195753219,13.696227443809867,6.47299196809489,93.9782956433645,107457.38 +288.2885367340125,4.080920175105675,2.331628213845036,-7.808321019734321,78.90614094099763,130221.43 +1686.3855138336066,14.429142227705384,18.29134380207277,8.05594710432771,59.55216998085426,1604.25 +1995.1350976779393,1.2496014035369725,-6.4760032705298975,-2.1526267406422184,30.901394658778425,1863673.88 +1595.1256005618511,5.107191344326345,-5.56608165698028,-6.06069429174704,4.3051111935017286,68195.23 +1607.0176841731998,31.333565222660145,13.615114210483688,-2.375825596979104,73.92228112208866,1090432.39 +902.5646070197918,1.6167903946875009,8.42743995162094,-1.7778359421146694,95.64068913800548,2093513.7 +318.65850022818245,26.89520824575635,4.020736718939006,17.710384288256815,69.23051410525785,119706.29 +1626.801381621962,33.621897979367475,5.77538422700171,15.399216873158185,4.586011161298188,0.01 +1274.884556428641,13.725337053451993,7.305524734790136,-12.222640520840011,14.805148697243274,1260.81 +1836.809640419752,59.180019801957194,-18.086334158839144,-8.861282745174464,39.902556290832266,177971.85 +408.73322030029857,81.1198286172087,-15.288665513742044,-8.025007226571862,98.9395865883819,9343943.51 +749.2215135693949,1.1731538384239757,-12.749727221850849,-19.537180975234904,9.404690027766692,0.0 +849.1810767020955,22.81214104625632,-12.928522634324512,1.2172110320757357,32.47046974323439,141822.57 +1429.903475380445,2.980910967718276,13.716267281415412,-0.6923351213272344,55.63622181708343,1306539.22 +1617.941293585679,6.551890310585473,-4.219607440739512,-15.015890642766848,12.08384720752782,0.0 +1929.8367354519564,17.6322837031718,-0.4230372706228902,19.60950184520549,12.642950768026555,0.0 +731.732884983478,26.57936129888147,-16.424131907111065,10.451410453838289,7.800964049325646,45504.31 +1088.5455354156452,47.90511195791488,14.823722917858287,-12.676529659512228,50.775332846846425,54784.18 +252.12967414633712,25.7497985986014,-19.58945859973528,8.213255121556955,29.36541798647548,3496907.12 +655.3781805959982,35.87550207688899,-16.66815587566792,-6.374656365239839,4.9106828770301805,314025.36 +873.2063146153527,15.781286298470526,12.484374896630186,5.31390338089893,50.68060394402121,109303.14 +1268.8511717458068,1.714423722619828,-14.776117830613362,-1.180364002318255,73.31459429709082,1127986.06 +1047.5218884785131,1.103724364876199,11.734309555002778,-14.445685061643603,67.21525122618776,0.0 +856.0551075985952,11.470070779225768,-5.983297430059369,-1.5965317747950003,68.74634870807621,759675.52 +1323.3403397528148,26.982494418965658,11.04391601442563,18.467486510111257,55.512598628993345,0.0 +1691.5082188106007,1.6509395699363143,-17.98578630163954,9.925221715845195,78.34243793030136,0.0 +635.0260393726206,7.220909396177444,-6.349519257371785,5.063289438842231,7.175697757852005,19740.71 +817.1765826687422,3.253529834439742,-0.7490445275045898,13.74107492838483,19.880637906444935,0.0 +1468.8625694366358,13.620282024771193,5.028180436238889,13.148845457589609,70.62709108395998,0.01 +1600.2930777653546,6.039562847033666,13.448802561701315,15.52815674093884,34.23860485301965,0.0 +1685.714369122365,2.5289194747785873,-10.221253202206665,-15.64560791750872,24.64584525043337,0.0 +576.7961940146516,1.020435191205853,6.355537640491997,-14.821976710278593,3.677596827094362,0.0 +1170.6805302399482,4.395924155384271,-13.929182542041133,11.955773748852758,86.97933838999728,0.0 +1820.019977345512,10.772693244736873,11.806718837922766,19.813687501722853,83.95948970432461,0.0 +905.5108191646852,72.18021411378636,17.328848211351765,2.5017341052074737,6.986728586472608,922966.97 +973.7895623988004,2.8507033741602097,-18.108821433706296,18.570641976051355,31.134652487345697,0.0 +1972.6812990212345,10.580595998416586,-16.805676944005388,6.512579797750027,22.24078035045515,4395.6 +403.4947628585098,13.582917689802688,11.501632762556504,-16.587240834907195,21.471693533466297,9264.01 +1470.0835810309447,19.881782283270653,15.209201307770272,17.050118686955106,26.549921726964584,0.0 +1730.3314286736054,4.540803429133274,5.928710387216376,13.568498801303717,30.40673551658517,0.0 +471.4283299412313,1.5811156558595496,-1.552514156008864,1.433920533504356,70.9459727698405,638882.82 +1486.0158248130274,69.61654732196149,10.7626783784464,9.756265954779476,97.01529452819268,41447.73 +1045.528799618796,80.44718607365677,-8.011627496865943,-5.9378447239429955,5.49838877133047,21695.53 +1735.203592414358,7.524233706499969,19.670169184198947,4.631211300056535,32.96625074547098,13795.73 +1833.414170304631,14.49272073873858,13.919734286086545,-3.470424904820497,67.07449742948775,1427376.27 +1770.472825678232,1.1430172549999766,15.485320613597562,1.0853287513290644,31.286646554580297,517001.21 +315.89324764222295,1.2428859602890845,14.195308740166904,5.462120401403037,19.921409286751476,17820.76 +1562.3394982669536,1.4234257946875393,17.315441997244836,-17.84522180028162,17.614664057623674,0.0 +1858.749634974493,30.025664646304225,-17.4202123698413,-16.159062581084164,60.19651008559067,0.72 +1318.4271932076758,2.8475344186627822,16.34511054353223,-16.70350161231456,15.954445235119069,0.0 +1281.5769088612824,2.3382688599267887,-10.05588940993733,3.7971786005564256,10.558184655477438,178811.85 +281.0096973165998,1.0391318717903448,-5.633081984062351,-3.483690842790552,75.21967048272498,440343.36 +1740.8594399706892,1.1112073070119552,-5.177187587701799,0.0024139163433556,35.03233574600618,1762717.71 +283.52640949249076,6.467962669542708,-10.702645618303958,0.0112576837199984,89.55922573722681,296957.14 +764.3172914924131,12.115905054517349,-2.462966091393528,-18.381174715247056,50.14290361517818,12.87 +1866.553517516988,14.391907649020611,0.2207986546241658,11.842354860087235,14.046676156236115,0.0 +1909.541256913122,8.2380109021027,-14.053434182071442,8.027520029429391,20.08345050474665,106.58 +1985.420972856661,8.300849584205132,-5.619246594196654,7.516041205519755,88.2654694641602,4150.56 +1057.5241141031952,32.08369436585484,-6.07414161854309,-18.629963212632717,13.430778192201242,25.48 +519.3731834858195,3.7943751658538742,6.986815536746422,6.068724053978616,32.23724042964221,47860.07 +1078.300076292351,2.9883787258157124,3.231352595538164,0.0183110403371999,31.038632876564037,770797.31 +384.1632651494886,51.126772305925,8.644367468701372,10.422705820571272,98.78479769687873,2111225.81 +1770.5649961459455,23.9071394855838,11.357740909702589,-16.125140285213128,97.46865712578072,0.88 +1208.9670198797087,8.989445383831475,6.680244069863335,9.868343831079065,69.51483583472381,217.48 +928.1106185001596,3.5547548143153436,-10.35022693146002,18.467527293830287,24.31575145101636,0.0 +343.15526446544794,1.8757011261467968,0.0847830854476772,14.039457456062262,18.748775083561263,2.59 +929.4332182699349,1.1880709954052349,-1.337004427173727,15.766822394289097,6.949412741464717,0.0 +1759.144895102196,50.66764464472153,-17.037992234731366,-16.96796397771515,7.068833898555377,7.13 +1466.1306784589829,15.37343807373505,15.77926419362953,1.1857384251175995,94.14029563635808,733923.95 +348.41993151973986,1.2349773309393002,-16.34258573469514,-10.13350157543274,60.74808043712568,8371.42 +487.8329595071165,2.0757488012512977,19.057703550634884,1.7969585806532873,20.632263778913252,20494.47 +906.1552832735084,3.623502258164486,-18.730165737650303,8.263389044746692,78.35088851200366,1178.41 +382.4751488346536,3.3584831631946392,9.187153990002836,9.87296922764926,8.56528560628177,940.17 +1881.2741455878877,12.496315412129867,-8.497019897852201,19.663838730924496,52.71655261464646,0.0 +1374.1256803355766,6.29342768642506,16.18867347665128,18.305059670270616,20.38234519870796,0.0 +370.6814023471011,58.13440187591423,12.96127673145518,-10.113851998708032,45.41408605225311,2703731.34 +1618.5034322848292,27.46764344464268,-18.999563880690467,16.624611699624502,23.67782639300782,0.28 +863.1306714294972,66.29261315967288,-19.121973101136064,15.36057281584255,14.513590435096097,301073.29 +640.7671601957975,53.16639950179437,4.127641297598883,8.937447793056341,92.75857082612973,92055.52 +1225.972895491444,69.62068098930331,-14.01633655334086,-9.693694940375735,92.0727545607946,334496.29 +224.06983961697435,91.205893143736,-19.433654607043465,-12.469997085611286,49.835833214927106,2739194.14 +1037.715788187659,4.201388826604476,18.710482346604884,-2.5757057951646,78.83339588455613,81919.14 +1718.848987571305,2.626402043974557,5.314501113390375,-18.437690083423888,20.973630444538564,0.0 +1870.503672774023,2.139462725413795,-19.566693078968576,-8.643339878626438,40.299458222201515,146.04 +816.5984679495916,18.037524335376737,-0.3792088511395208,-17.064613353389447,23.328716940671665,163.37 +1356.3858586970798,23.01088894053616,-13.698526828424551,0.980301426498058,9.292703285346988,98594.2 +608.2821890639004,1.498562940983429,12.207285015194858,4.661889909086203,42.963603156149745,152011.47 +1208.3835277724763,43.867531182416776,-18.85271592598229,-15.547785266709372,74.74555399052119,100522.14 +657.2499070757402,36.824178145071215,-5.16335927446963,14.95730473967539,74.73581479974247,6426.79 +1228.4417155294152,18.069572021921896,-10.478867099052655,-16.12801552530549,44.89537644908905,16.02 +509.0998111278157,7.43404111922435,19.234921485353432,-4.151591674988135,45.18575255714797,1742982.13 +1894.218602169338,2.029151982753247,-16.875535480293664,0.0392653537530751,60.687254755064785,546768.21 +1796.451457533125,10.2608784230716,8.795565272281266,3.2848775964612864,93.37824768516111,2410819.96 +806.4528490079117,2.081318723189076,-0.8788840540803067,-7.235783507435984,15.856048387325169,69590.79 +1597.9932000648969,16.216516570483122,12.659595196026505,8.523359517961397,41.08636988359946,2462.25 +371.90743531795016,4.168016798493353,-11.43021770405705,-6.345607628427907,90.66241107909096,214125.63 +1532.649635669763,3.1232915383762094,14.211804717916188,-9.89238688131497,55.3218978752395,1036.47 +708.4264333028675,7.622593494936039,18.01468992432784,-1.872941791900642,79.49709814054407,226728.67 +444.15518361655216,14.501923189250428,-11.475698996822828,-15.4627000825802,46.800435960383616,18330.19 +1420.7441922265048,5.431604396060653,-10.290206733715856,18.646326965039396,92.18412320796142,0.0 +1045.6522720749008,84.56814457524267,18.546703043004875,2.0039038816967736,89.13624416579978,19789296.46 +1154.2512831147992,1.0275318013515196,-2.6349051884289354,-14.23784962493749,45.14906754995709,0.0 +1136.9536114482576,66.94559978681622,13.40972436347554,11.842723928966665,1.4960441079260267,1208.48 +307.00636779083516,1.0031551312649214,13.697181031140849,8.815179271873422,57.04988867654447,2593.98 +292.48444836681864,2.712838107108109,-7.565897684373319,-2.7797369758636625,21.188077758320684,80898.97 +1282.1015071065744,98.3337156345315,-12.84859728841241,19.348068244839943,24.814990777989355,759.62 +1322.95635623975,28.588459339514777,-5.3387894183138185,0.0246012747448798,43.54418082863081,703714.25 +284.91420172720626,19.453454943284413,3.676113241583163,-11.489938883443443,45.54891815826124,134811.3 +881.1907973980719,28.326033322195567,-0.1165700942176295,11.650220007932337,86.20527947148351,9632.13 +1303.1323032087694,6.555297015736064,9.471876539134012,17.149694212893603,4.0975871410953655,0.0 +1382.0251803555375,37.018555030991486,1.952359972102964,-9.5050767553699,30.21290135735293,99139.58 +1690.8963666977927,2.0404974944596717,12.220592124520904,-19.731163820599814,63.59951186925878,0.0 +957.3181104743855,38.70657775092875,-15.842485504184278,4.371202905621723,62.57611138582647,681934.83 +1186.8640060645437,75.69258894093896,-2.436221082824286,9.311201568732908,32.45891380865,27903.5 +1241.408676095871,51.92466472679142,-19.35748974739616,-9.565807677366989,18.61650143564837,1016406.29 +761.6815099405742,30.15240144421384,-15.16771559481672,18.546242212396955,28.424592455923385,1705.82 +296.8857243949009,20.079580082950077,-6.739708526750641,-13.294509841704114,89.34116753666446,430755.33 +207.60666716918837,11.020069428052077,16.06052070688073,12.04626733501602,27.023381533182125,1205847.6 +1705.0257490133447,6.172293357364071,-4.793789180272938,15.052405594332914,49.683473957115304,0.0 +560.4172805402955,53.86506418961809,-9.061328745370403,-13.164628913135276,94.28908702976652,602029.56 +1334.458395486444,19.720464913495828,6.831543569740313,0.0537534711356579,12.723392830648216,248905.25 +1238.6854615590553,7.409700050818464,8.138840286298024,-18.878127396965496,87.2027752787416,0.0 +919.339538132934,37.117903319409535,-0.7468551856013717,5.675565040450952,74.59420036585657,178391.65 +1700.2879556611408,1.282943433025122,-8.459250039322388,1.85917157383388,49.05677164079232,2168703.88 +1457.122872248082,42.290079529171365,-7.92758155177907,11.13087513477919,94.94547133740689,5095.52 +240.93463419051128,41.821956453866726,-12.578156602026755,0.0511063130408961,8.366747786008165,524147.56 +1598.0493320420326,2.864565958698578,-5.496426011500075,-5.844629520226823,85.60464345489186,1316158.87 +1112.597872403172,1.1894417539427202,-13.269860115582798,-14.53312895390166,20.570546065026864,0.0 +824.6347203491243,26.755674944726454,5.716910678141027,-17.957055307589464,36.06577671216274,490.0 +1508.3923817210202,2.5104019110999327,15.787590479196489,1.1532810737054344,13.112950513616932,148145.93 +1434.9181333632848,98.1846466348758,-9.82987756844972,16.755362543242907,50.033629656640365,385.64 +759.0588281641084,1.0431935435255386,-10.311393753355942,10.6401931590522,17.739750182170624,0.0 +1969.4699686961865,2.8812700341620268,15.92610705179698,-4.275172956275748,26.255376376646897,296364.27 +1367.675276081156,1.213737567922332,2.721325631609637,19.349035675249183,6.902859003885819,0.0 +1290.4034824170085,36.75458055293239,9.19100940668558,-12.639996951503871,31.20475468278309,12487.41 +325.7846542671897,14.367823501196671,15.565376509608043,19.905158216487372,17.221728093132565,50196.77 +702.7738046205274,49.758705004024094,6.598912166051636,-10.794568851260342,68.8493566278336,92990.94 +1004.5532041875946,84.1834541373887,9.698354263597723,-13.271255935340216,64.17955199686342,79834.35 +1335.1262677574175,16.604649807570222,-4.522121143732161,14.333292037861964,66.8806715896007,0.03 +1122.97453531468,2.90741486949882,17.52673027492071,-1.245859280730568,67.92529726007605,206503.85 +1573.4592802485042,1.5321415192010015,8.155998476871344,15.674304029902544,11.212964043831764,0.0 +672.6218824422234,54.015958874879615,-17.13221583552224,9.921609862646417,22.169103408240375,1320171.33 +1463.8825915084717,3.0919076231707305,3.808663195165321,-13.730798652209586,74.00991148082366,0.0 +1669.8746844040925,61.24017871248907,-16.213731408730837,-15.12302884247787,48.7363755728381,2044.34 +1577.089956049316,57.091992389590295,0.88476184455335,-2.129337376132447,63.37974523356468,1109521.39 +1587.5238522584602,18.014342872265825,-16.460502215179478,2.461793538328907,6.603730870086048,34413.15 +1799.3127030718977,16.143274856266235,5.089643354850635,-3.071435001488476,39.244814333346994,1396765.38 +351.5213764648811,79.73572309674572,-1.7453669063502808,-11.52044961875072,44.36244775121795,1034941.18 +1454.9448284733855,32.51099067870199,2.123165810033671,-11.298783692745769,69.54276417649523,63388.29 +1943.6207620096295,23.257527458037924,5.95802231300822,0.3963606711856737,91.29405817208914,3476938.66 +1232.5711697741688,7.438433830376424,-9.986077302018984,-19.428025598342657,57.87893488885839,0.0 +591.1693615719067,9.289597375910375,-7.219156224735568,-2.4420729779019945,76.35013347231688,475725.18 +1997.7568503935831,5.995731783923521,-0.7172791097850562,-18.670997258494335,64.70619587133949,0.0 +514.4191270786621,78.09838276019316,2.6524585113876498,14.925396720851918,91.08062372684851,318959.19 +804.0038552747467,18.890281353352172,16.945848936627172,4.8044638399640816,81.26776973206604,517467.45 +509.711939150902,36.36864958577989,-5.923876980255809,-13.592465178071524,25.483335282969655,27202.4 +1036.1231637501228,1.1868599366868535,3.669212242982849,10.742670091770956,23.008027774485537,0.0 +953.9768172997248,50.681866929630914,16.901807605672168,-0.2953465491974283,91.27751269818594,5369228.26 +1084.233613719031,6.843473579004444,8.713067733654643,0.42826617267818,60.14742101926064,1176786.02 +1870.3701200997732,29.80717035165024,-6.866326156958307,-9.754908713093382,45.51210930135465,123828.55 +1060.9838945016052,1.202404601642658,-3.41175409589475,-4.24974280480118,70.31383974804228,1362165.92 +1126.3273871845597,61.34036650984544,15.15136507687672,15.12615705797482,28.88990356719252,11478.81 +1796.0277906532426,20.878109893559607,-2.492536945956534,-14.111982508797356,81.05092774942905,62.6 +1671.964389226698,8.222456446400605,-9.918250445417993,4.948283940484983,53.24648949253365,448103.28 +631.4996562057996,4.046841528179304,0.9228237969610164,-11.324027207553842,87.22716446956575,19726.82 +223.2667194119304,4.188401292105594,-12.56007212055748,-2.207825194520301,64.7262318404344,462068.36 +1333.099265963692,4.043861277671409,3.281808719292263,1.3208495691043254,26.76159403353981,792350.43 +1720.729682907536,1.828317875931047,19.66006727703665,-15.12841076618967,96.58044905317058,0.0 +1195.13020269872,8.464846284811545,18.771193834578902,-16.859586308511773,40.840663911994035,0.0 +580.1184560231213,8.071843039543484,4.551978427806462,-0.6376301027230991,76.82737564067719,508380.29 +1534.4391632155523,6.666122935456288,15.45117916888644,-3.626254509170423,26.297815823076668,285427.16 +1405.1707087002858,25.47935764965892,12.606111901184288,16.839814937832223,42.29076853398739,0.0 +1217.058567335395,6.912413749078886,18.026759756973995,7.919847788346526,74.09018114787811,1161.14 +1754.0051132377707,1.5066328544753584,14.92384701435621,15.872502204948235,69.92965836408075,0.0 +1611.636235290259,50.59635658051173,15.9932952222904,17.132181401698308,93.96036981188384,9.13 +1402.3137645610043,7.082747024140599,-10.818102036855134,-19.237378839385087,79.9843817694846,0.0 +1396.565604241793,20.444255909723942,-13.679250849890964,15.194445717912243,33.09418429961559,0.0 +1391.964741736895,72.40902661904133,-18.241127344085232,18.339038353321545,86.46609341037048,7635.41 +1145.296540849815,34.26338022746091,6.3722361861589105,-1.8942813235183609,92.18586118349226,1029238.7 +1035.0589603589249,11.956325845758336,17.340231134970594,5.439505072483541,95.45556959658374,65534.97 +1477.2808270976952,12.303948774649326,19.75399937294796,-6.160907048834976,90.14551789415567,91707.8 +1298.890066646416,50.01060105650237,14.09370210583976,-16.05369696030565,69.84140039449552,2145.69 +1081.9650121409777,44.38789869429182,13.24041903740322,-9.49580844594874,79.78568719244507,153807.5 +427.9904370398749,2.276698200366552,0.755311794678426,-16.778233916149663,65.13742048541457,4.26 +1463.471819575698,17.906147723068717,-1.9216745075399189,-0.5283669253246615,32.65173985667074,816967.71 +1362.7974270403377,53.88046273561801,5.6126596741967605,6.14347885208649,81.79347280476762,254328.85 +816.0471667523065,40.4217260140789,-19.091700825981164,-19.790954619588742,23.529256705392736,37882.75 +841.3816991871381,1.775955308351001,11.772943350442208,-10.845455983381116,43.69905182890416,645.69 +644.1002914434541,7.436792168150338,6.299346923664442,-17.049259036912673,35.0066212170205,24.11 +1931.447461457034,10.875925129537045,-13.19803875808779,18.629705466960765,18.042699438798135,0.0 +1748.3624531637008,3.278076686323955,5.427874287010002,12.124450304404832,80.0920025813287,0.0 +1209.8882529419902,22.855923359515604,3.9787780605055056,-18.76043934197464,47.72072938674821,0.78 +922.9756638053256,8.962991511558018,11.519997930481336,12.5595144824932,53.17175418736009,6.73 +1526.285474653562,3.935658590307523,13.499100022267662,13.09049309936967,50.70197747936483,0.0 +1149.910717026795,4.717686212394771,-9.863221578078868,12.2095903634118,69.24746128712216,0.0 +1956.5318610472052,51.68169039164417,12.579103828648464,15.136771062083517,18.41373042051652,0.08 +299.2207050598782,54.000727533968046,-12.716166895473933,-1.2629613290526498,50.57993244076651,3466383.26 +261.7143212962552,42.14551012155784,-4.231488908551633,-10.42346268129998,26.76469663006193,634893.69 +1223.499832352072,67.25702333356718,-0.2941324787122479,14.817919426728109,97.1940395568456,2331.03 +565.9026008400322,80.28104507370914,12.197250750816352,13.385873719709146,6.957495351128213,177960.81 +1287.7474943903464,9.630654915719186,16.043232197503357,-9.011625289028093,92.9117220195692,63844.88 +1606.561451384919,1.561015605376964,-19.311334672739484,3.228771047774881,6.931639681200173,2687.03 +448.5975701327711,39.823737318228495,9.489780001821092,2.277541701340859,11.817394304960205,227004.12 +993.0948035411504,18.486889987533527,15.10084496210634,-0.4988614087450571,90.72018359316122,450025.24 +1439.6007502088394,5.768121243011546,18.17221303382653,4.344497828961287,65.13736233724514,55961.58 +1700.9544272113485,89.34418781974776,-9.28443234495298,-16.641213168957094,33.1170983894813,1224.28 +1093.419362065443,4.75740807522641,-13.081584521032772,-1.8142479929599853,59.2480345466704,955051.85 +571.0764564308389,65.35336549877586,-0.0422056421479233,-8.805123234597097,17.44911061183931,33178.94 +1254.4386600541393,15.316830138436217,16.0401323519582,-19.905093519180017,7.421847906637682,0.0 +1018.1307237049992,1.1838153532128075,-7.375457414259383,0.7669925344635464,5.873633129599768,148739.79 +1589.4657686080743,52.561798398139395,0.2024281679837436,-5.411849546934087,27.73225955454668,397426.43 +1200.0369155653063,33.45214345350687,19.822198826677155,-2.7504827651936736,18.760562042859114,1658846.12 +702.9611209467754,19.27414370354133,-1.7587087040976312,-15.54597471248602,40.928643122545665,3311.43 +1557.9072554981387,16.950178659835032,5.130023952273914,0.2248212874801369,87.79004122977551,2462394.89 +1131.9446233315275,2.7394979848756247,19.823828198974955,-9.19496397049986,38.47693424154229,658.12 +519.5837941009895,2.685172918321988,-5.309657739305491,-19.97671703242064,40.45786138765142,0.0 +1213.53018165559,1.1437862115817776,-9.082800292288267,11.200440008676598,12.956527046756996,0.0 +1906.9761077225712,2.0336439830658963,-8.690418068873559,5.113546091855472,98.88159259490156,981173.16 +1469.929269687925,4.709366917066968,4.680531428347323,1.1166401149192495,15.379352324119909,520291.8 +737.8460506243621,12.062846256496456,-13.49184747100221,4.882278602281298,34.492503162781034,69013.74 +1479.5717155271443,1.82648922698302,-13.419196679769328,-7.053336992708403,94.62845596991836,245376.18 +708.6913598039221,13.036000262753314,-9.594666539585592,-15.078531869369437,46.03758419237182,1755.39 +1176.8399075742714,3.362329278935867,1.6374155741954377,-5.7229192244815685,34.47205967149542,454412.21 +1147.872374817595,3.220492187011273,13.767032551374545,11.555140949285608,71.8010433488606,0.0 +645.3035820412466,78.6843596542512,1.170829758655021,4.330641248938378,4.2697580319195305,9285.74 +826.1861597836725,96.53595286549503,11.305658113338586,11.649709951504391,32.79850456775632,319164.15 +1895.9266186148825,41.9640304221221,18.302283931497698,16.091260456897047,58.44296473374407,3.05 +651.0773655477805,1.2846474568122357,9.600060626793976,-10.013704962182125,99.1098956900651,14382.61 +1641.8486785357743,28.659157625091165,5.711541459845071,16.57711810813518,96.78702790866156,0.0 +1401.267044021852,2.274319440213828,-19.67222372807852,6.503961254806323,62.99254707974307,5314.79 +1158.732438546376,13.754430950913571,-2.063545419409172,2.431127815658649,34.67115594189505,452812.47 +447.5267650372942,61.29531177768488,-9.2780205295188,0.1283808012714127,55.455247472986926,1985958.12 +568.2273548714801,5.759585948315687,0.4969119431488433,-1.2511916333546136,93.45305841498312,723310.65 +522.159722462727,72.0581934967919,18.04337867233027,-17.044082759150655,67.05009943452272,4245167.46 +1256.2296661527544,26.106246517685744,-7.1821022421544445,-17.814382844040875,15.771275966721884,2.83 +1952.0897540932608,3.999665083562115,-13.568716959638367,-6.7609893006684185,97.18285689830898,607904.54 +1779.0306729949905,1.548226147195629,13.035847782800696,-11.857795677660814,90.31836742004246,0.0 +245.45338927323905,42.72701661293104,19.62331943449744,-16.535538227668972,22.46099482052727,1629133.62 +692.7079240322238,8.243636186911967,11.202840874244288,-19.02250928089961,66.02771371726,0.9 +483.0634260866399,1.397613143863752,-14.464320276880557,19.135516014721073,87.9444003534413,0.0 +1956.220115416223,1.6078469800805315,2.02779409021844,-11.516241012912843,22.831485667980903,0.0 +624.0984222760671,85.88607655958435,-3.7923899341532863,19.387595497336136,92.44056516918614,74711.75 +562.3637330698291,3.0619909938883656,5.337309675756807,1.7800670640813945,18.82492484945745,158916.44 +1317.5755284480667,85.73977820274636,6.744481913292657,-12.326699561767075,36.35979993295436,41448.78 +1201.1358504346156,23.031337494396126,12.28360835772615,-14.187955563830798,94.3692695806162,2715.26 +606.5326708062228,3.99008551616977,-10.396539322121608,-11.967817444363904,94.71996583317517,10363.39 +1406.656756167036,5.854040847767855,18.58714126218225,-5.448884040753121,3.3051236117063816,2977.13 +374.6129803304405,35.81598407026726,-11.412435232487963,-11.800339030433417,86.77295408958013,2267672.9 +234.86431885560592,7.427282757159794,-15.036079534313318,13.120858891867284,69.67860181066065,911840.71 +348.3466232714243,1.410917289333819,13.154849753102344,-5.318717845530241,87.30033970981837,302541.41 +856.7628067563907,2.8815639294334447,-1.4700329415201496,1.0778088717588696,46.72962018872537,797469.71 +1955.029390174671,52.56418631501332,-0.3907891719984002,0.0492351214370323,98.16924826422633,2751470.25 +1185.044597856855,24.680177223535356,-7.2505814534573965,6.381487337764886,75.07494363466132,169855.65 +1558.5069854278408,10.046903302124726,-18.14347072152615,19.896058413503734,76.17655188367775,0.0 +778.6923540168068,3.09735751634649,-12.255956628142712,-2.257483678974883,43.2669348252855,530926.64 +1494.8103178699926,8.895722570591808,10.465372510634708,-7.093995808714313,39.83984695968325,374815.81 +1939.1261566202431,37.81796151501518,-11.023747570778092,18.963059704499575,21.35022370323445,0.0 +843.9696025076959,1.455748644135734,19.706636682785582,19.904906111649407,6.76607189713771,0.0 +1998.306982523045,97.6192883880197,11.44907080224356,11.237309570591188,90.24483915669894,9275.83 +1349.137911856999,52.42338833455656,13.943605906334074,11.90679574476582,59.47860007859664,4085.14 +1547.4645424365028,4.324456826883716,14.931227603575229,-3.70703354252385,56.25344490750114,784301.63 +653.9010299266699,55.10023203909634,8.756178848123962,1.556091125341066,34.464643139369336,251514.23 +1357.5633845190348,23.090272581348145,-1.3526878484720717,-5.927560109510388,74.23025450972584,958126.5 +1119.8112526322973,21.51339019364972,16.680493167638367,4.754088158322043,41.28123283420252,70078.81 +1921.5247618593849,1.9029156500989612,-2.9389289942068997,13.029583407753176,81.1228629369905,0.0 +1828.415086021128,64.8319794090671,-16.167236840295665,-5.037359616763624,8.90256134193695,58841.56 +914.010678065139,7.95579518094506,3.857715886515014,1.4077324611311148,25.495722887121,322148.12 +1904.36555276882,40.406898496926594,-15.777408549039276,10.998797964258513,29.05754578307384,98.44 +1792.6625949500174,3.9723506762477903,6.21553596503583,-11.645488763835225,3.309689018826601,0.03 +1262.690930664451,4.130544745896187,19.901070305989336,4.414685629992987,66.68070094851818,25066.63 +347.8122358211725,84.99206085294144,7.0083193137373945,11.030318562523806,70.46031827351773,2323847.08 +489.42243318716794,9.847360774786036,-11.577915972539492,-17.914085792405192,41.92580976587723,414.16 +338.3736404128404,1.3175934486556684,-14.485619510454123,-9.851556078613632,79.74986970610624,28166.75 +394.38760636830983,46.9259738292148,-5.744552396981097,-18.98969551667539,95.41930333200182,423666.2 +1958.5142739075395,2.847475818982394,-14.169393356317608,-19.74348402240741,73.93350688528511,0.0 +581.9011385890741,57.21468425941275,2.787732128537135,-0.8953139778870245,67.65406740474904,173315.7 +1443.5382482131934,68.05808987001278,11.32393774581939,8.026979849981224,45.512480290041886,52025.98 +1345.7508638289853,1.398080011095069,6.32553386569767,-4.6784242066001624,55.79466402393267,1222825.34 +1336.0607567354068,14.617007006901442,4.687941625235488,4.843500736824167,29.523044131390012,191352.06 +572.0671992728536,91.84345465043934,-2.57574068249554,-12.340533287438015,25.16698491853859,127018.97 +1242.8238698922971,72.7510438875679,-13.090831342529846,13.456984986770482,3.5948574179195547,758.67 +1325.9690292529128,11.232762387306536,5.511186114816966,-5.496373341591831,48.60580357681098,785032.48 +1226.7295699612,22.96076694959908,-3.226089350497907,8.288299398953205,23.282767456872723,11798.54 +535.0924410962216,16.163078057964736,-7.7815409179546124,-14.802316625876934,47.26898561442316,8680.25 +1501.509074734476,2.549803379975074,6.371450882567524,12.72432239918019,81.42330170929661,0.0 +331.83769144971984,20.229965822043145,-4.8585581006433065,0.7224035418934216,37.34615658656936,131520.79 +1264.1600212753194,4.637483388732821,-13.266785794298016,18.810723874907687,32.86779522822205,0.0 +985.266798322364,4.741806835673057,-0.6594570929956101,-3.785165800876236,45.23650065973261,753554.79 +650.5158676395326,6.917932527112281,-8.432690337568364,14.919982751380228,50.053872968970154,1.93 +1653.30018024705,50.623686344282575,9.33954911387938,-3.516020911317881,27.994209744957892,516841.52 +516.606620009931,2.9970338735409383,-18.117314318920545,-15.684306762023724,60.39212433109373,12.85 +1879.3671678163116,3.17382760724077,14.11375796316471,7.505376140619178,3.8705290066798983,3.42 +1792.2170509781365,1.0343793151373908,-1.546149404265793,-12.681358583465428,49.12615789946825,0.0 +849.0575848917493,2.041802531049663,-19.36224678816441,11.994091420071369,65.25324761876824,1.29 +749.2752755454679,90.64807269274696,-14.665501354277009,-6.60543068444102,47.16020096643739,3928826.01 +447.4760301540238,7.374624145776734,17.81761948866113,10.25698375853616,97.84799419551176,475019.22 +1849.3900686811205,2.4565713618118212,1.4802666953805677,-0.7423881791534237,16.34845378103712,877060.13 +1329.5573458818897,85.38146878078604,10.741813421177122,1.4802003029402977,45.85219967889453,290530.38 +257.2104478581257,1.1330151996883129,15.311088557250606,9.385268038029915,29.88781608068241,1299.07 +1119.7989462108987,9.2967846964188,-7.187785195694643,6.602230830672395,90.41914714301332,114162.68 +354.4381060928964,40.66345455423076,1.8766808205203267,6.568609510005725,18.78096561643679,127829.4 +1232.7512329151152,35.127756142532384,6.012958475219543,6.357805261015779,52.62117351863176,132075.17 +1116.1310929774625,2.3902015901644904,13.663403943920308,3.4107991914786373,43.00769868008426,449747.6 +349.1228819048996,26.03630478126691,-3.196424545380543,12.287109816736637,91.80536297072584,133054.06 +1668.549067610191,17.56213120053845,18.070111180220056,-7.999196439275713,56.20277259033385,42445.36 +672.1709188992999,22.41570653888489,4.2848273248360425,-12.737441237526967,47.10021018578932,24904.52 +1174.6718555000582,3.405725422877557,14.954892386989773,9.406402079413674,59.07091578045932,0.92 +1350.2699779349618,41.82816148914048,-16.665678653139576,1.5931488975613073,71.43041218890593,452820.59 +1932.1481604353,13.136359301373636,-1.466306526206922,16.024465061464266,4.1665949902024595,0.0 +1088.8610471837228,28.19396102287333,-12.833221420964588,18.603416065742664,25.429566399400457,0.07 +1851.1683901182623,75.70891456544713,16.475325149638515,14.685360238524714,24.336807525344355,340.3 +838.7432144258579,51.403719584989155,-10.600507225863677,1.902357838649582,42.14238535640644,192454.24 +1743.386962969991,36.70075014067349,8.519205348577641,10.164999815650502,58.06064397580092,2389.76 +624.4872085125502,3.795749109932509,-17.48522462176488,-6.626676122471493,91.67305178137732,79380.7 +1473.463572383752,1.282821485978953,-11.966214364420296,-19.40954205630661,57.01123952936971,0.0 +359.5015887589937,14.1022667729503,-7.205900779558343,11.218792163935875,18.96403159786253,11391.44 +1974.8906420305864,1.1722658310217182,11.274932913458288,11.25991624486771,53.05979043777463,0.0 +1917.0855197522624,26.81510787521075,-9.95332899665295,-19.678460979211454,43.42884401138245,0.0 +995.98454933128,29.760713744978386,12.67537571832861,14.54388818980663,64.92777530574458,281.01 +1143.0833923824564,13.360494188923091,11.544430562787053,15.257542577256146,64.04581411881038,0.0 +1275.9947521724398,2.169221124569642,19.68813382604321,-7.174182701768461,66.35430361081622,4008.25 +695.067607441406,56.421271502847304,7.085619584909657,-19.31015025184482,99.7318771201728,21419.97 +1414.0485833692926,15.554013229505696,5.497505022490379,15.040817674711132,3.7329306089553578,0.0 +1457.411503888129,10.709862623999182,4.061436758264736,-17.179277621566644,76.46162726006328,0.0 +1145.1376861854962,13.651598880250484,-15.615234472108806,-10.71182388219064,85.62969201561124,22189.49 +465.9332464733919,1.4647859769791856,0.5288856240114725,1.7029774392387864,25.268896972560448,222905.09 +1854.53469900488,30.26036132847538,14.05931544534479,12.661382338089616,75.98193369204095,1.52 +407.0811482221075,1.3229735691438211,-19.16572798101656,11.27270043924446,11.393298967032182,113.61 +1332.5099036789206,14.347502762261808,-14.933795238656655,7.247054657621099,54.71074954392912,18288.59 +385.5594738975592,2.1802895544959173,4.021970503416208,13.1470071546603,32.917117213925884,13.12 +462.9812764392607,2.602578740850644,13.88063415178582,7.417256088212167,23.571994213961688,6638.55 +236.9689652518922,2.9275781788335458,-7.706729524670615,5.507556191967629,65.0696690655709,71720.18 +854.0553509421673,1.0680984306899524,14.859129661582786,-13.292078772079442,40.85979175962618,0.0 +1351.248615959668,60.768380477010275,-6.4989351085485,-2.4031324759644246,17.439995461992726,200240.5 +1138.7795955191696,40.59481279540052,-1.3816648969544687,-1.9447086717363191,61.05302003510915,617258.53 +1414.1704722472743,1.1549758284651064,18.121226685391143,-19.260065076563464,51.17431685039387,0.0 +1415.0339495677151,1.300086282568084,-3.2963165068392186,-3.779238821665203,5.1819133331951654,163441.25 +452.3127391896295,36.79202527840841,3.9792502415717217,-10.91644674175237,82.25514212660569,147825.26 +303.207326159088,1.0318262568110448,17.418628174635415,-16.413289586153127,98.6882248250855,2.04 +1325.6446527824055,8.669575387412614,-9.424713035694584,1.8528377229811488,34.8836498903577,771447.52 +1375.8037489554367,1.6390587047092002,-16.32256279733184,-10.519530616590275,98.7424773798258,4.78 +1202.066723255068,15.249810746877609,18.321194873483204,-12.38486913584284,99.58628584313168,3256.32 +642.3724393833273,99.23864727717172,2.393184116915048,11.471804091151094,46.97258596191061,131654.08 +1659.377390568057,2.2082235189948447,18.633621505728065,12.403728767752256,92.14682552517608,0.0 +336.2348278932628,81.91580334464261,14.669784921763611,6.4342767645002485,78.44615733007547,5892875.34 +1338.1612207784467,53.821659933826766,3.785060232243116,-12.413248317402946,83.61408124926153,65057.27 +416.7407645828699,93.69360217250642,-1.1463730468249445,5.3077393331448475,13.128267117935309,286512.02 +1378.0058895798134,34.07040273146231,-0.7899908950315115,8.53289678262903,78.25176461469682,43907.81 +951.9064180822936,51.75931295072924,-13.359340179140716,-10.667604925432546,24.41745400235668,72057.49 +1492.5854997878084,15.459494145819695,-1.8575192887064065,-14.682259598072608,75.00051154430288,17.19 +293.9459644584824,54.27104228335608,12.869277961616689,-2.658904153300319,24.35390699495638,1676302.98 +1199.1493792646622,1.6711849340126148,19.55152861632775,-3.027723582402917,78.60830763099602,28298.23 +460.78021798414335,30.430466400481833,18.413682555650396,-13.86787938112037,89.48220105802723,5291600.16 +1428.286936898853,18.09035852343805,18.487143619929913,-12.331402367042514,50.67238542339986,1011.01 +415.9201363610283,1.3173250958407905,-19.239564479830875,-0.0153117944328418,43.889835205655345,36006.6 +332.4499813134665,3.829840987306023,0.6308822969483829,1.096907547586885,15.423586226122302,53867.68 +1483.6210367305027,2.7052885895713628,-11.994755376010374,1.5143443352864503,24.362376260793972,738333.39 +314.3574822229082,6.461761160563411,4.611369058635493,19.28134311645131,99.22932580388178,179.88 +604.1554722767289,2.492910478313374,17.833476338011202,-18.415680496926036,73.34981902069173,0.0 +1684.5233548262097,3.5453514101894963,15.066042418812016,11.451619245942046,77.14014001425767,0.0 +1657.4389540548073,3.908951396435519,14.663299071086474,-5.927679835421884,81.58678697691073,633193.29 +1737.4263640053969,15.83513572977296,-5.371263689680443,10.11629638595879,58.780434667188445,43.46 +786.9798012596847,1.86100491506938,0.0468521618252504,9.417604961208102,44.67031345550847,7.57 +1150.4864517503768,3.0353059234946516,-8.722227627168326,4.793814348956644,35.460677169214634,247840.49 +1592.0252346910736,4.308202634454862,2.1541732355911725,5.246167036416747,3.6991954081641345,22605.83 +446.5739270199449,7.909260442080879,-7.864485653116069,6.543862288492672,81.16231731625614,88560.3 +1503.9035825882927,1.1917283356488262,12.349251379655444,9.904073027755352,86.62343203718675,0.0 +375.4754289103783,99.63751881448184,-1.4232270381494103,-14.735199208590156,34.95158276282851,824609.44 +1843.8510955283616,3.988264980145901,8.015951573384573,-5.566446054953533,51.98706835474827,1136377.5 +1347.1583285209265,3.7556898588911576,14.906688267303668,13.680345275313748,58.22421303815376,0.0 +1087.9495628415605,12.874820213489173,-8.010036358707143,1.91536674912844,66.08894671117334,858536.56 +1072.5126584008956,51.05806579577291,4.883660503331098,-14.522571393531756,65.33875448509158,18329.97 +526.4516861208388,8.196316798709368,13.832527681276634,18.46594881147894,20.47545551064136,2.35 +822.6512704183766,3.145418245693635,18.029303931813697,19.513459156015603,68.98016227235466,0.0 +1508.8225975708683,13.544126656839868,-13.477334957682276,0.507088491846508,75.50106146746023,1363978.93 +1173.6985175378993,9.244535617604384,7.256808952868639,1.3277628009635567,2.7094053330475223,51282.42 +1152.7511673804731,7.016970553747518,-2.591247589088299,-8.319039653136757,62.17050764820695,220094.42 +551.4426101820429,92.84657795140872,-8.579076135873219,0.6464730614889369,42.25505218369466,1465663.83 +1442.6521615166312,98.1523108644354,-13.69081967390722,18.751391959039783,88.62775040333733,1177.58 +905.6610219104303,13.301103011878928,3.4152253827818058,-9.817247824497466,94.42950111269364,154363.64 +528.9560091893615,1.3677535609683138,-6.636487026575866,-7.815325452689805,58.791035456069345,147370.1 +1898.8125528733929,13.609280361544968,6.717747501496736,15.900041286973622,40.5613470390691,0.0 +1112.2377443580892,80.34230673798253,-8.760127098322785,-4.624188528277298,93.86883549839294,469023.36 +1150.465965522258,71.02071845843709,-19.976339273143925,18.901092085441192,27.710153471042503,30268.61 +1966.4694383866508,2.697749985417393,10.68911133442102,-6.016456166718074,49.762573772000906,702611.8 +859.5310469068882,2.4001532042516116,-13.5469128016793,-19.81470703427363,35.95918731023993,0.0 +1897.4372322124093,2.016098330645453,-9.899865595928905,18.149032167311063,16.209387296482024,0.0 +1450.865650043864,43.60825402132594,-10.585831728391868,-10.520465466901236,89.53546010668593,159347.26 +1339.5721389406397,9.552347520407215,-6.310359361401359,7.764819283840083,25.798152899302128,4853.25 +621.9529434964651,4.743437048597593,-0.5863231537792979,-18.104658489938732,79.7387599317993,0.29 +293.1602102980222,4.462871041196045,12.498088119884647,9.930116585200564,75.5658548236121,34987.9 +988.01090891325,3.554892612269578,6.0087988990496655,-11.197239971676996,67.01692488714524,2119.77 +218.30773159230515,58.24243829349579,-14.160068129659074,12.010052442288316,11.7897721110315,581248.38 +327.8045193866902,6.5972020536157086,-12.652957999140542,18.66399971516381,40.66359453580881,1041.55 +1271.5881602498714,3.0763480672055783,13.88250596998731,-18.190942946116124,92.75948566907516,0.0 +1504.0492995314494,26.351759129042332,-10.00578167398582,-5.280317080336676,37.22580923568809,591455.12 +502.3069974636985,18.65989148363014,-11.25267551255174,8.631140550025322,3.011626030037975,4737.97 +1518.5007428127929,26.96069660297453,-19.85719516105634,19.857410252490354,72.83087837028529,0.0 +1909.5064878705532,44.04658363392949,10.963029162215294,-5.478211279197152,69.07188104396369,1340800.99 +1537.716945307154,1.5939233364714862,9.53807301078617,19.799191895921343,58.43478672657392,0.0 +1612.4873952350592,1.0092005601556866,-6.095434031276952,15.967401545199555,36.92369256990812,0.0 +1461.2826444830691,1.2622125160647746,-19.707406028123625,8.772473382352652,32.95808975955408,186.74 +604.5273928185521,25.9171067949663,11.42301351651938,-4.724127035955146,23.724428222369355,102684.62 +849.6018958805048,73.95934912143979,-16.025391508084873,1.4766019559880217,59.583048373490314,5739023.39 +1908.680532985671,4.59420916689439,-1.581282574465139,8.813870777034246,99.61824148701672,0.21 +1390.1790421462138,36.50802445645749,13.605904679488754,7.429154185395199,78.5591395625733,67115.1 +1620.24452108133,28.732209322695976,-10.228715370746958,-8.463998798060057,65.82917169535928,388575.18 +1943.6503139204192,90.39057697726716,-4.813252113887012,2.288702918589101,57.38076878445598,909377.71 +616.5864569227983,8.741504047230388,6.434250250371982,13.400990808226148,70.82756008187609,272.0 +779.0360011877963,2.1485523239498314,6.9265101600678225,-0.9969761377066488,50.68963588910352,888437.68 +1360.6429751020994,33.92054341784318,-1.491744924052547,2.6497116993745085,84.8953433287413,948320.13 +243.8434528112132,43.414792338023254,-2.649895616669502,-6.898613809027134,58.6054648334748,1643973.29 +1228.1943392006704,25.97766735899124,-3.219631764139294,-13.595893627277944,25.49789847234006,2513.79 +1655.6390831260978,53.25536266694471,-0.5586917922432422,-17.36081489575954,56.76677147099481,95.15 +1298.7980728834252,5.52541836253501,-6.134199299162049,-3.757776718114889,25.295395391679417,611303.47 +731.7079110129996,24.023152955223484,-9.743421952054248,5.270793162505392,54.03119746854407,109780.63 +1503.387350004911,3.3705228701870844,-7.357944675198227,10.400564520978412,80.65557327143327,0.0 +462.856924423902,7.814123878491805,-0.88930869082533,-16.63782631471439,73.02836070931667,1608.17 +1810.5922447013304,3.0548109475031446,-4.71436500314796,-7.260488793326436,27.76512887567619,123692.58 +381.64705587281975,2.037357982800261,3.4215204816527445,12.316212445684544,73.20007593537271,90.85 +1754.2840407723827,1.18006653890249,5.245647984334769,-15.509785919454874,13.255028087318273,0.0 +1096.0569699252185,22.021582076728272,19.8457485384486,19.73122150879096,64.88927499684107,3.47 +971.5646062780432,56.30489806461336,4.606778682067492,5.307546050920275,32.17224383836972,80265.9 +1101.1911690357765,4.254405374497046,9.385327170063784,17.600703932773598,62.09757727093808,0.0 +560.3713455672581,7.218895696798234,-16.078728413593847,9.21124892986288,86.37359041570664,22846.43 +1023.8340432058644,1.0164684345951511,10.417952432570644,18.555109881947676,14.242695687713368,0.0 +1729.4956686175854,6.694367422426783,0.3561393954087277,6.613312632399646,69.95131952630254,41711.14 +1641.7194359938385,3.652954225354691,14.662323529002714,-9.27694060626722,68.64875261678218,7125.55 +493.4873620843927,14.073433335575508,18.836350383037622,12.010869152416102,75.93556077833956,1265939.42 +1412.1577606323112,65.61971891015631,-10.785375613724677,-10.957209129496018,96.96047996290612,156805.68 +1742.3070769377655,10.287388431396757,17.14700447665518,2.600231037716485,48.812948301933304,224593.95 +1675.5816595138567,22.442194389029684,6.865635076939238,-5.078357390631605,14.494505729391909,328032.43 +966.1383979349264,25.76117569681716,9.564546077214334,11.964337858194662,69.89872372621535,2885.28 +286.5671126230085,2.017733591961714,-1.1055573394409812,10.379592850866477,54.98535495783567,4242.13 +1876.1049613527484,4.9333419091161,-5.8082567183262235,14.555772078026196,81.37821665001519,0.0 +912.5932085265116,1.683802315969687,12.001361079265846,-10.12210880296399,79.50558373429354,3558.88 +849.7579470614188,7.611902337972441,-19.1211282698592,19.902253741111306,73.57894424382445,0.0 +1567.1269000618634,59.50745313043856,1.6238291281644468,12.214829459769314,40.30740020962089,1402.73 +675.1499878856406,9.159435346890806,-17.0468090248316,-4.5318723352958346,48.09365683338114,135994.06 +1702.5462617011256,8.171578675730697,-9.814606689936872,-14.893450257208642,91.68894512549495,0.0 +336.8928094747681,2.6220869652639953,9.007964720235089,-6.0229784619988,44.16120125313385,142465.47 +1533.2801612891797,4.172867166451312,10.18954447855534,-15.752701947593817,59.07354051544406,0.0 +1938.421082794757,74.67911198341541,15.561733351944316,4.614887347616055,68.66796156421543,264405.07 +1992.3838343735124,4.036367015388867,8.617489378220725,-15.483104183579297,12.45786197629771,0.0 +1862.8478481154991,29.025063002389572,6.989839043808264,-2.779494807583714,77.17205145166997,2506067.89 +1767.372329731357,1.2141807127535629,17.804691895716598,6.7026981442115074,2.480116935244302,2.8 +701.9844040239144,1.8056265008991128,1.4963841092435135,-1.8771734848887431,98.22535858900466,1555890.59 +1939.9670527335752,4.197162970195911,6.1552659579307,15.266025303410732,57.271625819195904,0.0 +1870.2138688658351,63.50994296480223,14.722514167005274,-10.360297668842634,17.637774031551345,24528.68 +1161.8705126453358,2.745258909968529,10.547805847317004,0.9556802720496104,78.63492711635887,1993673.53 +923.7397779086232,28.41117663374622,10.797021958832572,16.52723070176091,84.60791372388127,64.27 +396.6810564047388,2.1629622201154133,1.4702318748773635,-5.87200755429532,21.272238468729437,97885.72 +1263.1413400852246,16.81450521431874,1.113792275464922,-1.0916203845505557,5.084258864036815,98676.19 +1460.9827073399558,14.91614036373115,5.948267624255124,17.31378911774865,52.925012529325414,0.0 +927.1938497267522,17.53459754084531,8.021855615892868,-0.0274554199300736,64.4160870443626,623765.96 +930.8532091349572,3.737257682527615,1.844073641066677,14.569642385398993,17.658037303736375,0.0 +1231.9605032857469,2.109628548499491,-12.581322311398534,17.618413700208126,56.5990077136672,0.0 +250.01137263289124,59.2886413561636,-10.063534502461769,-9.755907100814564,53.11270093280873,2481039.12 +1924.1586134961483,13.768539505027553,-0.2769955238962085,11.433630793307756,86.49628965380826,0.01 +721.8302727740769,2.6551333604080085,-11.837405462640335,6.150198899071917,81.76723625917872,93765.13 +453.60355118398417,6.709004858643147,-3.0605047534980256,19.468766957938584,14.063714396013836,0.18 +209.87911304226273,1.3620184351015834,-14.114359152283756,3.4228338779555445,70.99488775392103,102361.98 +1742.404774494284,8.927959946127547,-14.150702674703703,11.711084240635008,50.78385990445934,0.0 +1753.7732764394043,7.043387015241803,13.72860692048592,-6.172279287660878,47.1595581949693,514613.99 +371.55188813187823,1.842690830547962,1.689999810459608,4.25565916958929,17.071234287300108,52521.05 +474.0343451998418,7.740066114270406,11.217395490902051,11.143213753170372,75.01676645535315,6281.01 +1006.2240162639824,19.013614273182533,-19.53842501240316,18.676533611038977,86.96821055229412,27.92 +534.2675115193681,71.94173203344968,-8.574761326778155,-9.926363961222044,21.3453570277839,397936.1 +1524.4780463061625,25.490032424897116,-19.292774472075163,-16.844208760440335,3.9111895750269015,1.5 +304.47154227030023,10.112780310187164,-19.864714181744745,19.05218844027734,61.30583251979875,423016.09 +1189.4767982945589,34.68184841517898,-18.71934382288764,4.105666295130934,98.14694123797756,2823137.39 +889.0248172050274,3.629698589679241,0.860970311476934,-19.30996565121925,68.20262550321809,0.0 +1036.903670646053,21.755205845113505,-16.367117787257698,0.7995813386432848,26.017759209540863,102103.84 +964.5628118520832,1.0235859914269902,11.934959566341195,17.441731574252792,87.40053402803441,0.0 +475.68652856237657,1.3966971948374334,0.6475050774294999,19.376987529266824,54.268214732790845,0.0 +596.5066735554121,17.722756595720632,-10.185877546018808,-6.971553421919161,51.46612675837612,123278.74 +316.65385803876785,2.4271641497537595,13.546285759681478,11.27636390085577,6.6706378974108524,158.06 +407.51403553832824,23.84839589197198,0.3855065721439654,-1.6520577079518528,7.006370188028219,11065.44 +1960.2106803540469,18.771826389676807,-5.968038469270964,-4.079608357404361,58.350803660215526,2078561.87 +703.6162610190535,1.3407058328443726,2.7180258738171448,10.327737621962749,80.86275893064646,0.09 +752.6459708112156,6.095275403727363,6.904349325225327,-9.20129641133518,75.56369785792438,133676.67 +428.7913947778179,16.82691095838215,2.3521479398353096,-2.9449085706088907,94.13572279471252,204886.5 +1559.2955680941527,26.72780309457016,17.311411414735673,-10.138727875102166,50.77341924997422,18431.47 +1863.4570583371076,42.871464665923625,-5.841050820797169,-14.294495285870608,62.451526941508725,1289.97 +1621.5509667199717,4.5802143526481975,-3.6020235801953637,-4.828044237925231,63.09173935069019,1647825.21 +1302.7084929815092,47.144614026032826,14.354178083059498,18.369135560339764,38.63940971656199,5.71 +1663.8192480990372,5.111034965029615,5.499501924672638,-3.244751279300102,1.2810073231276826,49080.78 +927.6144192791452,1.0326988238516857,18.650669972750965,7.328984858623637,84.05113361920942,157.44 +1747.0952391452374,16.596319986173327,11.686586320808615,-8.597087355521097,7.642094369595267,32684.88 +1637.3339293487277,3.0432469421856525,0.5171311511783694,14.614282016801551,95.96715556757202,0.0 +203.10435966137425,1.773219930429992,5.3887326680053915,4.996013959075785,84.54153674699116,112691.47 +1078.0294428515306,3.286363663130879,-3.756623631343614,18.01816061835124,11.27461262079296,0.0 +676.3098369426071,45.27182437564142,-14.894175230404766,-6.961916161320376,13.080824431034522,508633.28 +355.21924946185186,67.29807108198996,-3.715578343934025,1.5213428739169732,73.97468574619707,1850363.08 +1723.1528769459946,83.82879969400881,-8.740568784958448,-12.358173610612816,54.82299277908214,53799.93 +214.30943174202017,4.033301853959537,7.12319444581027,-14.564630584580073,65.24229491383863,16436.96 +1514.2943036996485,8.163143224512227,6.767888829754378,3.414385348639386,29.705445969434805,577445.59 +1978.745817794935,40.27654469937201,17.494715741611238,12.1366698406672,88.48546059206558,212.26 +1067.6355800712242,4.32320049446325,-16.8217023806857,-12.008220184201196,54.75423991150608,56.1 +868.2329538945824,5.8923206533944805,-1.2972617818817378,8.116659624413739,56.98144740951227,9622.69 +1290.499318054484,2.9822838621975323,-4.054432629174913,6.862195924576513,99.06771559275396,18686.39 +1648.4560897658098,13.955154169051902,1.0975353194695536,-0.6980467526217593,77.38320133345364,2656297.36 +632.4535887955019,20.822525262241943,-15.21747681299441,10.67647004179716,69.1919330136672,185083.09 +651.2625724763652,4.333900238938498,-0.3429383975697986,3.756257835648196,86.79814523231272,486464.57 +1292.920425356324,1.1180495033378488,6.280440147858779,17.85999561430635,99.10384070867286,0.0 +1891.7836775377496,29.63572981612212,-7.448547848151859,10.548223812230187,81.44094583723374,345.96 +737.1919563657742,17.107816317442552,6.017686453068971,15.463731272042471,80.8324759857316,156.73 +878.1583938122235,2.741558839683184,-9.37313254222464,-5.545274885567153,19.942710015005854,212874.95 +1987.9999426285212,4.258879479768551,-5.2277836987128135,12.439967243815296,87.46109806515885,0.0 +517.1998973717284,82.07807807713782,16.291532012716917,19.68096755661977,88.2400952011978,2407877.85 +338.5427030755473,18.214073720132852,-18.99766437380592,-13.461406514191507,60.10820063116793,4114304.96 +1261.559429985091,15.522279984026412,-9.08706264338038,0.4471778134637505,65.41214422896357,1208439.58 +243.6805791589394,19.027488797761247,17.429024726332244,14.493439323461006,62.75345316490242,3207700.71 +524.7798162946808,81.07539431879651,-14.11828726096056,-4.134945324524764,54.94995000567751,5373890.0 +1319.9765252428424,4.78319566691504,-4.103687437161669,0.3293269529629761,19.154906691809444,576683.27 +1387.1223212443997,3.646128347550507,-1.836173299935839,9.905094357822176,66.1125519543517,0.01 +1118.7654493657155,5.668719406120711,6.105893492687051,12.987898393867171,38.56120546731326,0.0 +890.74648321289,39.98510015274476,4.470931619639504,-12.01878066904741,54.11374666642415,48065.24 +1237.1556519593269,1.7454915422149762,5.0704937502054515,-4.355600597578322,90.21008013456373,1984654.74 +1358.0943554598298,2.5920859372345357,17.616430054899006,-4.219791752472255,11.80842929276551,30116.7 +1646.2676833249711,2.860823238810821,-4.288602448112697,-13.887029923667836,95.59004518497882,0.0 +1626.9514907777254,18.73936120403597,-0.4074866561462054,-16.353933778910186,57.251185249139,0.11 +1396.641377926906,19.19402469622927,18.558966556316182,9.787768494070068,95.03237785483442,8529.07 +1809.618649811238,5.543355954773841,-14.873900007752052,14.079696922269504,20.864202165366255,0.0 +1708.445456471754,3.567668920787795,17.92846895663979,18.07674601458402,6.374549877343287,0.0 +439.8428147922923,32.30753791267172,17.931216476123716,18.25179972681916,62.48005725169115,1035188.49 +1922.02299438227,1.1573191353605403,18.13899826231208,19.787366552587052,53.15939880215823,0.0 +1805.1361441722568,30.024474952496753,-17.31883709352492,-16.68027385453691,73.75379645554267,0.43 +777.6689231143276,2.6335889343331313,3.1026532596996947,-4.128104587249912,60.54359561622323,805466.0 +236.33195349267103,63.90783627333957,13.526873958744943,-16.71375661570159,51.91440055267387,2380709.53 +1287.1567041649175,6.7202664318514165,-7.451939325390744,7.115599080702459,90.35197514912356,33890.94 +989.1516383594984,19.257229522226027,3.6224611562947695,18.89566249859871,33.017423253021434,0.0 +1549.2199926550377,1.7455754267783048,-9.74219210742481,-18.53265407156171,27.88299003998224,0.0 +1144.2795761155205,3.219354612231204,-14.815462084870807,1.053187502155053,80.59520333016837,915218.54 +337.6827834517042,25.189363215144827,14.090254994766036,1.3305332384110535,35.81204348720314,2398205.39 +640.4373564585966,12.609878460224282,19.24881506415785,-13.469003331969828,56.744531732000155,241105.54 +1788.5427610277532,34.749996239541744,-17.21014357255668,13.338744152002048,61.79079424273782,23.87 +267.8414522870902,13.390743139899936,-15.14716427567583,-4.211088296833521,30.15202613002793,2090774.42 +1526.0054049169166,13.761391852508664,3.544276154793624,-3.1814168306521617,36.21897078819697,993758.27 +725.4983143125781,52.061654230203125,-16.547549039649088,18.47833301091253,5.029300735591875,16313.54 +1014.7516454764948,7.069355708854943,5.246614465902688,-10.104652343905478,28.67408625936463,20778.49 +1155.8097774408957,61.67219975197499,8.779429750202365,-4.5812792473934705,33.283136468501766,213201.42 +650.1464431529619,5.55175760420809,-3.4148225691932987,10.806014048088205,2.6638549146939265,32.03 +1373.528797395793,4.541385965936671,10.24972667049845,-0.8006986737554511,82.49329176189818,2637805.9 +1448.195992576177,36.21116968116437,-15.454839154848775,4.136799487316569,88.64957605101812,286856.67 +353.1070634073952,1.054612219301014,-7.950543489419681,-0.887474495650018,18.55066275893049,151356.13 +873.0687365325571,2.2099591176192743,12.305555904089328,-8.666979097254437,60.9385450206729,58177.8 +1539.8791421713247,1.3916546644442431,-16.46608251208864,-13.490913729987328,44.754665546868296,0.0 +1498.9476077140373,10.573291022320374,-8.59657986797993,14.00536614546724,13.653918499210617,0.0 +1180.2860190294305,18.03607375735017,4.846512246800008,-8.99149267182636,3.4713818187731187,11325.34 +1599.8146037624251,1.0489430063606533,-10.104321064855618,19.89469521176972,66.69145771316394,0.0 +393.76080747171784,2.103425318269181,-0.7649569859018301,-19.59742782142943,8.889223024375182,0.0 +412.78028212015414,4.027937444747344,13.48766126499601,15.277891350698996,89.21121645048613,28.41 +1383.4807405334209,3.8766149874191256,-9.213344729762714,17.894732078823125,79.17610389446953,0.0 +1448.000962211232,1.5641033053043774,-2.565966145628358,-17.651802191853974,72.70482370810251,0.0 +1666.1483395779264,2.2166387043204656,-19.26990555100153,5.1029336823870475,84.43340389587347,11828.64 +525.8663799918627,49.4428528923879,8.334779086846673,11.307164572326752,11.555201184425396,62293.02 +1130.188986975989,25.18617886260707,-5.797631663020009,4.614537067910289,63.06334118050699,316493.68 +1389.4963348440483,3.910108110189227,14.402144070315174,15.20475446213181,21.43292758547459,0.0 +602.6592328922271,3.3636819802006075,-16.457537964696485,-14.700789262432409,52.45633538449439,11.0 +1130.4701580691833,1.446766367500617,11.28921405697506,17.95027758746786,36.49650344178375,0.0 +1349.2010439030728,4.986684303247311,12.551797426831644,2.020333775266292,13.116575261234974,270819.11 +586.0091206598246,6.25372859278611,11.042755148442197,-6.225079153567656,73.71894518073125,309920.18 +876.0141384502546,64.32255881897952,9.37517872571732,1.0073810493406476,30.885219347698364,141924.1 +589.4098582442743,30.635955359543384,-10.48842803173243,-6.42739742076647,13.16748849848928,55887.11 +1825.2972279714777,9.084636373679915,-3.330700407902354,-1.7822763403043451,88.06208572296057,3970430.97 +626.2379874739852,1.860863586136328,-4.561906065705372,-13.74154124277058,14.32880788227017,1.42 +417.50232677443455,20.526896759033654,-10.358476709472844,13.785895776329903,21.33623584786809,34613.65 +263.2795607488586,74.47742031980779,-0.3323821548586814,-4.41522839371391,3.3477060796627915,124960.93 +280.9162503404303,1.4324837498513654,7.901321438796432,-1.319536751292265,52.338753572463915,279768.26 +544.8552229402704,49.798416789679486,-0.8509289599959624,16.383036706510016,82.70585246290459,18855.66 +1294.7753203525142,2.2920765103118796,18.978575598215095,16.280081056936382,85.2713806054804,0.0 +231.76977412002077,25.267476393553796,8.350337673687012,11.523285335138764,74.63439231412585,1718982.97 +716.1390645628649,2.3319115553047167,-2.292035892121151,-18.799378347670185,47.663304285540754,0.0 +304.70040438193877,15.849921286439816,-3.841698435678782,16.255066897067096,89.05577777367235,31655.33 +926.5857865385018,2.987095918639111,3.3442649789246204,-12.45056717487953,76.94608476202912,66.2 +287.43812809374367,12.117028358495084,-2.729439861409064,-2.4683227584972833,89.03477352257813,137606.61 +1293.5751979174904,15.860458513979845,-11.122468005691758,16.119634563008375,24.707191702162287,0.0 +1439.1636779342275,17.259994389737965,0.8418387756301149,-16.198247433215887,60.52731483645432,1.04 +1516.4075893587744,23.205864690301983,6.908584202818284,-14.675878355279428,3.1364399345491956,9.24 +603.8181175632592,1.3742291318362203,-5.662202184074374,3.0423071113224065,52.62716913461904,503533.29 +1763.300291531138,25.513780076338502,-8.66705115346531,-1.291391836132112,87.81164327375242,2750937.51 +1442.5187011956675,2.0379590277873247,-11.304295931072726,-4.41293091548431,74.10831046711537,1752590.4 +301.9703947396767,22.597734731442554,-5.487128137405097,12.386547986874138,77.84090521270895,310167.87 +993.3800756625689,1.770415603086397,-10.225297754957856,15.78718775879672,32.39191162494894,0.0 +1581.9616880704662,9.095559539673683,10.523948922763855,19.65713845213205,40.41725588299266,0.0 +759.6090680964136,5.9365872083553475,5.548569574551134,-15.08154970872753,98.63950387980526,80.56 +886.8057930330766,86.03847682484157,-8.522710746209302,7.049837932887897,27.46028449914843,92868.3 +1333.286889133777,18.264943431321328,19.673251074191803,14.853711980671322,9.53773373110736,8.51 +299.86558420861604,1.5011076094686808,5.826885384613951,-10.379291469808347,39.512495538313914,23605.54 +1940.4830729142511,25.221616791019265,-14.301082721083668,-0.7985726570976981,76.95649051465291,1563115.29 +514.0658190975101,2.4449883750017616,13.173491786730466,-19.7132806018546,52.83759042833177,0.0 +248.0095993632686,3.73508702835319,10.1480837932045,-14.615494934671776,5.327343032973487,900.2 +209.58136767275647,5.7132875265745895,0.0011458226270555,-14.977428988022128,66.80770794183049,17623.44 +919.1978749989124,35.68213899454933,-10.661459025403577,8.302510107985466,73.82499450882432,57684.47 +1791.6560578556798,77.2968645332847,12.435050141743575,4.88996894918265,60.67480495578164,310575.95 +1675.571742592272,70.57816353463863,-15.019271305226932,-18.4521103275852,17.962529653628266,26.61 +1841.682436849451,2.1946600775570544,-3.2785895283460276,3.827781975400644,19.91442805580652,610068.37 +1160.8081747920182,1.3207692670659998,12.692903781919693,-17.27428828896744,41.32630565394954,0.0 +1007.7432209752958,45.4010647989078,12.05763188473378,-11.91200019772304,36.46248411754575,30148.12 +894.5497569922301,3.770826284487235,5.19568947581162,16.054508141053784,11.086248617784584,0.0 +283.55253642435054,14.643746685635726,-19.69030989998459,-2.1094573770909797,86.07474367373676,17633161.53 +1837.1382613492765,90.62644211989598,-6.6751076077068605,11.2538516268766,92.53725643991967,13398.58 +1093.1169661125095,2.3596305523098904,14.127916773288325,-7.427533250887186,15.238059037506098,31512.41 +1019.1213758927182,5.6196825537993025,8.854633673810381,-15.569024919552469,56.67204926806758,0.05 +1127.3014766254112,54.34979274316843,12.423812390765152,15.527666733876808,43.54824226788955,868.7 +1629.4781326055609,19.95083579363311,-17.480749955263505,-13.446917103360844,41.49174554889061,56.09 +604.0479547686151,75.00772846908772,17.63077782669809,-6.01433832832623,58.45259205212081,10452592.34 +1477.8212221908618,18.341659631113306,-10.838004428592289,8.049379840528452,46.03664271630606,12844.19 +1479.385533537259,4.047062730156565,-6.708279624617193,3.672146728019547,45.69884526214177,931155.73 +1729.195008064729,40.75840787539208,13.623320947294976,17.11960204863445,15.219552977712477,0.0 +215.630477234966,33.00103113402473,-3.7512334719246887,19.506821635014028,71.35310624968274,1040328.56 +506.7119778232377,73.66104609089297,5.723068003034952,-14.134763351842157,58.412989442364534,472801.57 +1047.8843336805598,8.960533429712648,2.0945429357316137,-10.93652722128526,6.544297328234545,2418.53 +1730.9726974306611,10.131612573050974,14.643052137043862,5.566521368913495,38.16799015699291,83896.14 +1937.2103509303713,4.442691948015109,-13.755058573296388,-14.13073333186054,22.560264277676897,0.0 +1270.7635064229223,3.447598388296314,-16.088353045204155,1.6887673969910866,39.6064472605734,285691.95 +581.8411557614363,98.4137177349406,5.294149937924066,-5.086834405726712,12.76700172970252,192452.25 +532.2524524843622,90.05566395182524,13.785668255733068,15.52519894263668,61.44400833444632,2144120.03 +1350.9991171752813,11.4628583571028,16.924064907540178,16.723792305461483,58.570858967868055,0.0 +578.1244647069283,81.31509331622081,-4.002974326352491,-9.646796207742176,59.684720013340474,337323.88 +1195.557363057595,5.155976095898399,9.3942640474515,-16.173275583757302,37.24450087180446,0.0 +1702.6614724590238,50.11741334648397,-4.368539989268805,19.64319199844068,72.48216676710447,0.0 +901.675367231762,18.609569032532608,-7.244986515605727,-14.00418258033488,84.42199641401314,8100.88 +881.2499415354725,27.172664605066704,-19.031509930291037,-13.062607672653732,42.21823313032595,373674.56 +265.05260640393277,27.315293090144618,-9.995578575185888,-9.913068838485051,43.87217392590021,1398886.41 +657.3522411641989,18.692065750491484,-13.1931093666021,-6.365836675147514,89.94617532973581,260743.57 +1456.744627314694,50.65893117850848,-9.255495261992536,-14.088833961979065,60.91158960438551,9495.83 +848.7042412379536,6.081721117402209,-8.450914917795567,-7.110758343960866,51.458424220407565,296192.17 +484.93805112185953,49.9318781389516,14.356378837532816,-19.119038705661424,73.97736419219206,1129151.86 +390.3819207685888,2.3271818859513136,-11.864955622796504,12.039347911652143,31.704189604250853,75.67 +371.096080671276,2.511417061856694,12.771949783431849,-9.457916778402248,4.243009341952935,3400.45 +1386.4401796122113,27.207362359832818,14.373695344196648,12.711371050185925,70.49024074222797,42.75 +1302.7186618283877,31.64169796362443,-1.4489499926468774,5.876870514143482,64.96049238571383,217986.97 +1133.3378100837529,63.76790509029875,8.980622657858328,-0.7781561294955308,43.42552495463807,284673.91 +1100.587606686451,3.542956414012843,-7.255694948809017,18.891713648559453,5.538820392364452,0.0 +475.64633483816885,1.2946098433284423,-19.289162729844005,-4.533191636887746,94.06684141745428,40463.66 +1101.087604568157,10.350073903035268,8.386060914543659,-12.86447232018256,73.34611780006078,1977.04 +307.8879978806838,56.32237122849389,4.256512403855486,3.097571854911778,39.16902339585408,1075655.88 +1866.5452254848385,87.68629238108848,-1.5454545766072592,-14.394010848053792,20.90429881144183,4160.44 +304.44959720469234,51.958019719046185,15.947601155919378,-8.927359936497098,55.979039638973994,4751577.09 +962.3543508090534,9.54801075094208,9.090313573562147,16.309565593614668,3.1048351577999305,0.0 +201.02790152571,53.30457341584346,-2.976751413274803,15.686343914934312,46.263252838662986,1368610.95 +1615.07078980984,2.678809606773327,-17.8648463533885,-1.3709914483140873,98.8508702383997,359167.57 +499.1063393641341,69.55675333618,15.04342940153668,-0.8691697182043656,74.18066982049727,8517253.22 +1864.848832079021,13.604792491223016,19.38571227232822,2.6713473310906544,98.50811753620803,106094.07 +279.15994614901615,6.0079619237202655,5.380841563674261,-16.632772655450903,40.20540310772811,3856.59 +1677.4172022159685,14.564056810383532,10.72802423571822,-9.873757874610316,9.625469714657491,10762.53 +1381.948063068059,36.98421624476271,0.2409935825413933,3.199412622438454,96.54592624742595,938553.67 +649.5242939946029,3.021642118927547,-10.534286611671083,-7.153353065631065,86.65952918547613,373290.74 +564.3552966150708,1.598672872331455,16.482699639063583,-11.46436923554598,56.6912062004546,448.19 +843.8202800786403,29.257701674596767,7.534025121514225,5.894432857562331,23.754437720092728,47965.77 +1691.125189715639,80.34112941995694,1.9425224084709525,2.6574317178583584,74.13600282141421,851612.85 +1751.52178700382,18.79127221742368,7.283374111834586,-6.91708727925723,2.90392806300385,42253.86 +515.5136831437864,1.92826584248905,0.4744558320919623,17.495650981498592,91.52862097187725,0.0 +836.2064714317953,19.354000098043887,-17.664620234353144,11.10758722594297,70.02099857392702,97614.03 +627.484491024057,1.7110558772985116,6.417645760356598,3.8456659992274167,18.403384494650336,127741.77 +420.7571257482162,4.046220126882746,-19.791324594201907,-11.621378319406055,17.28916986749916,87243.39 +1363.6088975520704,1.15663252956094,-11.18616835060388,5.9238649742952365,6.739737775601473,7104.98 +822.5678418239636,9.440679371335452,-13.760829308269034,7.509540623396447,77.27840342905482,31397.66 +605.6912805974014,4.392465620758982,-6.395109783481132,3.2506602593109113,13.657463997228554,80371.96 +1758.7959923035571,1.5669090167034372,16.332625584076716,5.518411589041281,52.486969902448095,46629.39 +1546.9722756264196,4.150062187741968,-16.81193507408469,-13.51085962390211,36.46056603746914,0.0 +1592.7700676534164,19.730597576246044,-5.703749823485751,-6.6002719693167755,55.35857147710107,796962.78 +270.5526041299043,3.7858474572684897,10.382478039793286,15.62979663496661,69.78611665719166,877.14 +1847.2348086159193,1.932610055114053,14.523664755918254,-14.5155201257087,21.786173955321377,0.0 +1234.5290803536234,12.291218242233482,9.445165481253133,3.587644929075311,20.84912079941152,222814.64 +1106.8450484321338,32.09626825944194,18.60846525029592,15.906213176271368,34.42239102874135,2964.42 +219.0536228500061,45.73858369028665,7.836697024397936,-19.43376839255205,93.5837312627144,2619318.97 +1815.7919787813885,8.79415723321047,9.79203497267978,18.684861157595883,44.95906040564448,0.0 +1179.002846874801,26.432901758332303,-3.1172905839299325,15.33368005113871,26.4387977676255,2.2 +1685.2762322129636,46.41469456428786,-7.917868857113994,8.602619701810452,52.435554242564855,29115.0 +1379.9197293289287,22.170651795901087,-1.5249869127211468,8.365386420872714,18.85680143864575,6525.48 +1634.0485043195847,11.338165974926724,10.716679339039302,14.708927298212563,76.75396207843455,0.0 +1447.2771474040442,1.3178887001848216,6.010522299033916,-13.160300488944172,32.60793987388056,0.0 +1857.735024204488,3.8024958539429337,10.875959198020483,7.997378053894533,98.28117211699656,19.33 +605.8715354111895,4.3614441435213305,5.103463425074408,-6.2622683333705265,63.35939301559937,362452.16 +563.780188519233,6.166269499968154,9.324053909467583,15.025552413296088,61.54492815507555,7.5 +1482.5748115012195,79.76004798977667,-13.773237071121098,1.3332423580682562,29.7616732397671,216932.11 +1102.5106410502442,2.616680420073314,-7.053658669062597,10.63266776471493,18.662193987699386,0.0 +1278.490106602766,12.109043016984003,2.4476706813925997,-13.31896805997133,8.698560211578721,65.12 +1475.3764445442089,96.03647553177464,-19.338103459265593,-10.318412114830316,85.71149743067905,8151018.47 +1185.3707546000046,17.281805840231094,16.49188907942655,13.526725721373282,97.98258458056432,18.21 +1617.8482057991532,2.6171068089315885,-10.420406882735866,-4.1906210225644,22.31052364625899,689536.08 +773.9612406845345,83.24954404267315,-16.459912086192652,1.1129867032689411,99.34929544901767,14478450.16 +1746.182798479446,4.705278545447754,6.570008516717598,9.021444480074845,61.97549433029192,0.22 +393.8174352660813,1.2466410377914408,-12.250438116191123,-13.21253344538054,78.88394391103832,347.53 +1341.2071585301362,7.289932967736722,2.477388528093196,-7.899044033160609,98.84677891524818,506369.94 +1802.2385135482357,3.0290845256316454,-10.040933063728623,-6.974053021512061,97.55158367871284,607404.01 +654.8494302230683,43.42377205030283,-13.362339288048108,16.6671465963989,57.23550268574383,103747.42 +788.3024148630433,2.7536685755017385,9.39984335730173,-14.49645132349589,53.18005324690109,0.23 +749.79520128693,43.62224820213589,-4.465088159173649,-5.147269350328947,67.89969802847612,216049.69 +1215.6746811950609,1.1812505754073002,2.977528541687251,18.372669057911853,22.757859938947217,0.0 +943.1692680172672,72.1630093380882,-11.355021294179384,13.394800200102566,39.49176259106815,38498.92 +394.32671299082426,1.2144707334918778,2.0965821362778403,6.8185792337496,82.93083581793678,47536.87 +1804.316999161628,75.34938083790315,-3.150782604755329,1.9572793350927764,11.869733866860914,184999.45 +568.4179324856134,1.4040499282832484,-17.951022197814307,13.549224150714824,46.446180204655555,0.01 +1161.3440197793534,55.61183238439636,9.067672651921743,17.855856500111287,32.25347315087674,27.71 +1270.6488126870706,45.99007049763656,2.09457345574108,16.962859763450524,58.66751653969352,11.47 +273.3533185655751,15.44712550828326,17.093594160069138,5.564969631354537,19.750231857251993,1918337.69 +372.28218977780705,1.180244996937317,12.317998641187792,9.115108644345597,92.87777269626466,2322.34 +1949.041478773193,17.469706695669732,2.8447684807076623,11.012250294675535,79.37721355984972,1.03 +1396.1222122688885,17.206511998165677,-18.27761594198404,12.373894744341296,9.045266611509517,13.8 +260.41731868356845,13.013524976846094,10.0767442159676,9.322858407712044,33.260148007304515,352877.95 +1629.5585971753978,18.32530210006223,1.9617680192933973,-12.802036754133669,5.276083859530729,107.54 +1115.377056699474,86.3405491355643,13.401260869153862,10.383211979402818,13.196100295424618,56842.44 +335.3592297412561,97.95226780915878,3.1098007648412596,-4.384901820251308,42.94057558366331,1605095.96 +1425.3537764860243,10.989846166152706,-19.9189008207751,-12.008061448688094,33.61626163250389,487.01 +1098.8332505632434,1.5261641532772638,12.596484453564884,-15.898706247350065,52.541184560180255,0.0 +568.8556419996618,1.853267404110774,11.97095408109881,-10.387443406297812,29.79858808345254,6221.76 +1779.8640897598752,27.586827463683083,-16.02389367057477,0.3099945905745516,33.88579194867747,304350.67 +724.4837449404574,92.02952372341788,7.352938624991294,-10.124845362186372,95.85953832014484,655723.69 +712.201943815954,7.449213942677105,1.0440260734857087,6.636401906644491,87.61565112746986,116455.17 +690.9924472261017,1.5706430315511526,3.5966837586359057,18.575722173446287,2.3242684032913115,0.0 +1581.4203987602923,5.082637132787217,15.574130446969976,-18.238132487677813,60.6253300677361,0.0 +1471.0136066849575,5.888715247422587,-10.017258775672513,-14.773856569659106,15.07394108681228,0.0 +1825.6622338466432,98.44432097888688,-19.47360426027883,-10.10874820212785,79.15405230099951,4845396.09 +612.8105952517035,23.61384491089163,-11.657515336251215,12.174468541208414,83.75922936282366,35189.4 +1615.456271977055,1.7208070321336475,16.605041409594033,-9.149182645668198,66.37738941554318,344.67 +1231.4820377505728,4.722298480398162,-11.543073803539304,-12.338879698499184,67.64345539053578,43.04 +755.6232973748021,1.2505971222713623,6.98042392173599,-13.88534833782236,85.29278427738822,0.0 +263.81743833395115,20.23582971824472,11.5874273928565,-14.003287126855838,11.081836207443072,251222.43 +1674.1055897319982,22.155346048839945,12.528410938090428,8.792751825308262,71.05915448804211,5126.89 +633.9284687240414,1.3031472447951666,-19.58251746782494,8.324891281858747,12.873412907804545,322.36 +1337.137465186855,4.688564366964149,-19.62390355187829,-7.554735715101537,5.188389468706362,683.56 +1187.9622849076625,63.92588274688376,19.560404260140864,-2.0223121472583516,64.22151910484314,15472824.51 +208.009169564211,45.04349285978951,1.0970720104338172,5.127645881912097,27.93638785890595,927116.11 +1989.8185338915723,14.074246063098428,-17.451865856194168,19.002356496028728,5.5420916811935355,0.0 +1665.792840440232,9.316369843867143,-18.92764478290761,9.725866215577147,7.249659031445781,31.03 +1075.6482871460278,96.76177447956124,12.430849140733905,12.121163548884171,97.98954991995328,308387.52 +1424.6144664362896,27.822177630490348,16.198204860856734,19.109176748433143,23.0863934380746,0.0 +1057.8696258633906,80.40266100556966,0.9796999357105208,-4.756115029479133,41.37556210542659,194768.85 +1540.2552883017154,1.3904981926361772,-5.131437253121227,-17.23600938046088,27.386339209853286,0.0 +441.79138247400937,2.656454078215782,8.094263609731186,9.875975929448488,93.59764610151768,3787.68 +1003.4317914212546,1.1540432137026828,-19.104466125311863,-15.156146934359883,8.308341547660476,0.0 +803.966918731148,54.42961086033187,15.956630765679389,-2.4561839400681773,54.77749303125693,3769233.3 +1027.379438289263,24.460362127381703,-9.756379961105592,9.534948999878573,48.301326075428335,11887.75 +1010.8507751486555,2.2662264584831497,-12.363649744265125,2.334176281582643,69.51877905354661,1079358.41 +457.56910960254976,88.79350814603202,-7.568305676234037,-5.3141847517070895,89.93338684717386,3148866.59 +1957.679427276252,81.58201827713191,-17.450894570931755,0.574107203080052,1.0393788425048285,14369.47 +227.88585701863047,2.81316761920195,-4.417583691985345,-10.190977737386206,2.63941300395314,2165.39 +218.13130067131792,19.679746781660945,8.589913842314076,-17.03445338833823,38.35093810268486,574095.64 +872.194373360584,21.687317296926963,-0.0717455488618545,-3.500508330888752,40.76024703815872,316957.68 +1316.6774288242716,1.018669985317986,6.719161319558928,-17.667416363683973,89.15727240474949,0.0 +523.3758082668709,23.853910450093014,-11.449121742753094,19.18627090444115,28.60772094518601,3364.19 +1159.74920702749,2.7712798852565066,-4.084382157815294,-2.0945551250082195,84.98516231926871,2347277.5 +1500.989542334262,63.48008523372756,0.7792552997573088,15.294726745914744,9.837679963845062,18.44 +369.309096272272,47.53508393692331,2.90233886858164,18.07151054626026,8.662939110231093,31559.91 +1971.96033442868,64.6527748682648,-12.544140641511987,-2.025182393991476,74.766915613294,1467442.17 +806.0611659307298,32.742205104165244,12.306765405876764,-3.1856730364931307,76.50175287750429,353739.36 +1356.347744817048,2.137031270457455,-16.391351164088718,15.737005769022083,10.354153469233747,0.0 +399.29574473583625,5.261488505768079,-16.06850996683065,-18.61272219014053,99.31241925639635,748.42 +1477.0754996983876,26.17356903386271,-10.011971042850426,-0.5118606850344243,8.96582800468593,181792.12 +1712.8214247124747,4.432513699237776,6.170958548332157,-9.255415138660762,88.53415568744659,28909.75 +389.5132561951203,26.306669415060405,-16.916513487368583,10.110337283263258,20.1982205283691,1221062.63 +426.5536778661192,4.702377058556269,-19.690976115369423,13.46891020023846,3.1762927641075795,3467.66 +705.8853458970099,2.267038568401729,-1.1127369764767092,4.80007477339893,85.62448141038502,386415.72 +221.48446767559273,10.872455449104711,-6.133717455022953,-3.7226241412048022,19.249007642348765,133797.14 +1974.8923298070135,23.575207233265548,-13.730147431507527,2.1999991724661827,53.412335010685304,1029995.2 +1277.0913349147695,10.82408949891377,6.2369548290214505,2.9657081003589036,82.85347224040461,1258778.39 +1293.6610099343818,19.219168598193654,5.657256585290713,5.405369158462974,16.31710711334074,70388.3 +1926.1319053729449,7.517995063485907,-15.124285500774066,16.88772100533198,74.36456922262671,0.0 +1697.6526577749687,36.02986691603975,-10.807946475792068,-10.035070001725872,53.62259354486666,121603.33 +1665.637275743029,19.94953812535802,-5.40082725678547,-11.93713510300579,26.3307628624994,3074.39 +811.1042658229261,14.099810251606083,19.60159615048687,-12.390980654600384,5.114076243894469,17767.14 +802.7541082363618,7.425803125802163,10.743622559536226,7.890095353645741,27.030424150445057,9538.9 +725.1283276627643,11.78840674563092,-6.513386527681151,16.195554031503754,43.05131967730512,2.93 +824.0523711973758,1.2647929710401782,18.617512883423256,-6.928424175292913,37.42478229533403,6849.85 +865.115770447731,21.54960695151557,-1.8027156269354536,-3.173034776097343,71.97290407399431,563545.1 +452.006640165068,2.5634417811094266,-4.786722355255244,18.727500065485714,41.57278234712501,0.0 +840.7061528637684,52.51675953564597,17.771431436217114,-14.188772177279125,38.65378387601278,852377.63 +1004.1446634405096,42.13932128453583,9.447019268279906,15.18219367356596,81.41266327070763,849.24 +756.8252097439854,11.37389808354267,1.913770506128918,18.371408162174745,46.92885258969006,0.02 +497.624542683586,49.46091389685404,4.027862315160617,11.980193334471275,98.56355038696312,174551.98 +872.1387167212957,21.95869303336306,18.912420686510988,-6.543765657823846,57.87171583080842,2010021.67 +1065.6339917895846,1.91654971727346,-13.883938001419477,6.1432443840054285,93.78367831057898,53243.87 diff --git a/tests/test_utils.py b/tests/test_utils.py index 4ce15e403..9c33322c5 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -48,18 +48,19 @@ def test_save_data(self, mock_science_file_path_class, mock_write_cdf, mock_toda input_metadata = InputMetadata("swapi", "l2", datetime(2024, 9, 17), datetime(2024, 9, 18), "v002", "descriptor", repointing=None) epoch = np.array([1, 2, 3]) - alpha_sw_speed = np.array([4, 5, 6]) - alpha_sw_density = np.array([5, 5, 5]) - alpha_sw_temperature = np.array([4, 3, 5]) data_product = SwapiL3AlphaSolarWindData(input_metadata=input_metadata, epoch=epoch, - alpha_sw_speed=alpha_sw_speed, - alpha_sw_temperature=alpha_sw_temperature, - alpha_sw_density=alpha_sw_density, + alpha_sw_density=np.array([5, 5, 5]), + alpha_sw_density_uncert=np.array([0.1, 0.1, 0.1]), + alpha_sw_temperature=np.array([4, 3, 5]), + alpha_sw_temperature_uncert=np.array([0.1, 0.1, 0.1]), + alpha_sw_velocity_rtn=np.zeros((3, 3)), + alpha_sw_velocity_covariance_rtn=np.zeros((3, 3, 3)), + alpha_sw_delta_v=np.array([0.0, 0.0, 0.0]), + alpha_sw_delta_v_uncert=np.array([0.0, 0.0, 0.0]), + alpha_sw_b_hat_rtn=np.zeros((3, 3)), parent_file_names=sentinel.parent_files, - bad_fit_flag=sentinel.bad_fit_flag, - alpha_sw_pre_lut_density=sentinel.alpha_sw_pre_lut_density, - alpha_sw_pre_lut_temperature=sentinel.alpha_sw_pre_lut_temperature, + quality_flags=sentinel.quality_flags, ) mock_science_file_path = Mock() @@ -196,19 +197,20 @@ def test_save_data_does_not_add_parent_attribute_if_empty(self, mock_write_cdf, input_metadata = InputMetadata("swapi", "l2", datetime(2024, 9, 17), datetime(2024, 9, 18), "v002", "descriptor") epoch = np.array([1, 2, 3]) - alpha_sw_speed = np.array([4, 5, 6]) - alpha_sw_density = np.array([5, 5, 5]) - alpha_sw_temperature = np.array([4, 3, 5]) - bad_fit_flag = np.repeat([SwapiL3Flags.NONE], 3) + quality_flags = np.repeat([SwapiL3Flags.NONE], 3) data_product = SwapiL3AlphaSolarWindData(input_metadata=input_metadata, epoch=epoch, - alpha_sw_speed=alpha_sw_speed, - alpha_sw_temperature=alpha_sw_temperature, - alpha_sw_density=alpha_sw_density, - bad_fit_flag=bad_fit_flag, - alpha_sw_pre_lut_density=sentinel.alpha_sw_pre_lut_density, - alpha_sw_pre_lut_temperature=sentinel.alpha_sw_pre_lut_temperature, + alpha_sw_density=np.array([5, 5, 5]), + alpha_sw_density_uncert=np.array([0.1, 0.1, 0.1]), + alpha_sw_temperature=np.array([4, 3, 5]), + alpha_sw_temperature_uncert=np.array([0.1, 0.1, 0.1]), + alpha_sw_velocity_rtn=np.zeros((3, 3)), + alpha_sw_velocity_covariance_rtn=np.zeros((3, 3, 3)), + alpha_sw_delta_v=np.array([0.0, 0.0, 0.0]), + alpha_sw_delta_v_uncert=np.array([0.0, 0.0, 0.0]), + alpha_sw_b_hat_rtn=np.zeros((3, 3)), + quality_flags=quality_flags, ) save_data(data_product) @@ -232,19 +234,20 @@ def test_save_data_custom_path(self, mock_write_cdf, mock_today, _): input_metadata = InputMetadata("swapi", "l2", datetime(2024, 9, 17), datetime(2024, 9, 18), "v002", "descriptor") epoch = np.array([1, 2, 3]) - alpha_sw_speed = np.array([4, 5, 6]) - alpha_sw_density = np.array([5, 5, 5]) - alpha_sw_temperature = np.array([4, 3, 5]) - bad_fit_flag = np.repeat([SwapiL3Flags.NONE], 3) + quality_flags = np.repeat([SwapiL3Flags.NONE], 3) data_product = SwapiL3AlphaSolarWindData(input_metadata=input_metadata, epoch=epoch, - alpha_sw_speed=alpha_sw_speed, - alpha_sw_temperature=alpha_sw_temperature, - alpha_sw_density=alpha_sw_density, - bad_fit_flag=bad_fit_flag, - alpha_sw_pre_lut_density=sentinel.alpha_sw_pre_lut_density, - alpha_sw_pre_lut_temperature=sentinel.alpha_sw_pre_lut_temperature, + alpha_sw_density=np.array([5, 5, 5]), + alpha_sw_density_uncert=np.array([0.1, 0.1, 0.1]), + alpha_sw_temperature=np.array([4, 3, 5]), + alpha_sw_temperature_uncert=np.array([0.1, 0.1, 0.1]), + alpha_sw_velocity_rtn=np.zeros((3, 3)), + alpha_sw_velocity_covariance_rtn=np.zeros((3, 3, 3)), + alpha_sw_delta_v=np.array([0.0, 0.0, 0.0]), + alpha_sw_delta_v_uncert=np.array([0.0, 0.0, 0.0]), + alpha_sw_b_hat_rtn=np.zeros((3, 3)), + quality_flags=quality_flags, ) custom_path = TEMP_CDF_FOLDER_PATH / "fancy_path" diff --git a/uv.lock b/uv.lock index 4671b839a..7118eb515 100644 --- a/uv.lock +++ b/uv.lock @@ -1,5 +1,5 @@ version = 1 -revision = 2 +revision = 3 requires-python = ">=3.10" resolution-markers = [ "python_full_version >= '3.12' and platform_machine == 'ARM64' and sys_platform == 'win32'", @@ -714,6 +714,7 @@ dependencies = [ { name = "lmfit" }, { name = "netcdf4", version = "1.7.3", source = { registry = "https://pypi.org/simple" }, marker = "platform_machine == 'ARM64' and sys_platform == 'win32'" }, { name = "netcdf4", version = "1.7.4", source = { registry = "https://pypi.org/simple" }, marker = "platform_machine != 'ARM64' or sys_platform != 'win32'" }, + { name = "numba" }, { name = "numdifftools" }, { name = "numpy" }, { name = "pandas" }, @@ -744,6 +745,7 @@ requires-dist = [ { name = "imap-processing", specifier = ">=1.0.29" }, { name = "lmfit", specifier = "==1.3.3" }, { name = "netcdf4", specifier = ">=1.6" }, + { name = "numba", specifier = ">=0.65.1" }, { name = "numdifftools", specifier = "==0.9.41" }, { name = "numpy", specifier = ">=2.0.1,<2.4" }, { name = "pandas", specifier = "==2.2.3" }, @@ -911,6 +913,38 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/da/e9/0d4add7873a73e462aeb45c036a2dead2562b825aa46ba326727b3f31016/kiwisolver-1.4.9-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:fb940820c63a9590d31d88b815e7a3aa5915cad3ce735ab45f0c730b39547de1", size = 73929, upload-time = "2025-08-10T21:27:48.236Z" }, ] +[[package]] +name = "llvmlite" +version = "0.47.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/01/88/a8952b6d5c21e74cbf158515b779666f692846502623e9e3c39d8e8ba25f/llvmlite-0.47.0.tar.gz", hash = "sha256:62031ce968ec74e95092184d4b0e857e444f8fdff0b8f9213707699570c33ccc", size = 193614, upload-time = "2026-03-31T18:29:53.497Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f4/f5/a1bde3aa8c43524b0acaf3f72fb3d80a32dd29dbb42d7dc434f84584cdcc/llvmlite-0.47.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:41270b0b1310717f717cf6f2a9c68d3c43bd7905c33f003825aebc361d0d1b17", size = 37232772, upload-time = "2026-03-31T18:28:12.198Z" }, + { url = "https://files.pythonhosted.org/packages/7c/fb/76d88fc05ee1f9c1a6efe39eb493c4a727e5d1690412469017cd23bcb776/llvmlite-0.47.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f9d118bc1dd7623e0e65ca9ac485ec6dd543c3b77bc9928ddc45ebd34e1e30a7", size = 56275179, upload-time = "2026-03-31T18:28:15.725Z" }, + { url = "https://files.pythonhosted.org/packages/4d/08/29da7f36217abd56a0c389ef9a18bea47960826e691ced1a36c92c6ce93c/llvmlite-0.47.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9ea5cfb04a6ab5b18e46be72b41b015975ba5980c4ddb41f1975b83e19031063", size = 55128632, upload-time = "2026-03-31T18:28:19.946Z" }, + { url = "https://files.pythonhosted.org/packages/df/f8/5e12e9ed447d65f04acf6fcf2d79cded2355640b5131a46cee4c99a5949d/llvmlite-0.47.0-cp310-cp310-win_amd64.whl", hash = "sha256:166b896a2262a2039d5fc52df5ee1659bd1ccd081183df7a2fba1b74702dd5ea", size = 38138402, upload-time = "2026-03-31T18:28:23.327Z" }, + { url = "https://files.pythonhosted.org/packages/34/0b/b9d1911cfefa61399821dfb37f486d83e0f42630a8d12f7194270c417002/llvmlite-0.47.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:74090f0dcfd6f24ebbef3f21f11e38111c4d7e6919b54c4416e1e357c3446b07", size = 37232770, upload-time = "2026-03-31T18:28:26.765Z" }, + { url = "https://files.pythonhosted.org/packages/46/27/5799b020e4cdfb25a7c951c06a96397c135efcdc21b78d853bbd9c814c7d/llvmlite-0.47.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ca14f02e29134e837982497959a8e2193d6035235de1cb41a9cb2bd6da4eedbb", size = 56275177, upload-time = "2026-03-31T18:28:31.01Z" }, + { url = "https://files.pythonhosted.org/packages/7e/51/48a53fedf01cb1f3f43ef200be17ebf83c8d9a04018d3783c1a226c342c2/llvmlite-0.47.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:12a69d4bb05f402f30477e21eeabe81911e7c251cecb192bed82cd83c9db10d8", size = 55128631, upload-time = "2026-03-31T18:28:36.046Z" }, + { url = "https://files.pythonhosted.org/packages/a2/50/59227d06bdc96e23322713c381af4e77420949d8cd8a042c79e0043096cc/llvmlite-0.47.0-cp311-cp311-win_amd64.whl", hash = "sha256:c37d6eb7aaabfa83ab9c2ff5b5cdb95a5e6830403937b2c588b7490724e05327", size = 38138400, upload-time = "2026-03-31T18:28:40.076Z" }, + { url = "https://files.pythonhosted.org/packages/fa/48/4b7fe0e34c169fa2f12532916133e0b219d2823b540733651b34fdac509a/llvmlite-0.47.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:306a265f408c259067257a732c8e159284334018b4083a9e35f67d19792b164f", size = 37232769, upload-time = "2026-03-31T18:28:43.735Z" }, + { url = "https://files.pythonhosted.org/packages/e6/4b/e3f2cd17822cf772a4a51a0a8080b0032e6d37b2dbe8cfb724eac4e31c52/llvmlite-0.47.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:5853bf26160857c0c2573415ff4efe01c4c651e59e2c55c2a088740acfee51cd", size = 56275178, upload-time = "2026-03-31T18:28:48.342Z" }, + { url = "https://files.pythonhosted.org/packages/b6/55/a3b4a543185305a9bdf3d9759d53646ed96e55e7dfd43f53e7a421b8fbae/llvmlite-0.47.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:003bcf7fa579e14db59c1a1e113f93ab8a06b56a4be31c7f08264d1d4072d077", size = 55128632, upload-time = "2026-03-31T18:28:52.901Z" }, + { url = "https://files.pythonhosted.org/packages/2f/f5/d281ae0f79378a5a91f308ea9fdb9f9cc068fddd09629edc0725a5a8fde1/llvmlite-0.47.0-cp312-cp312-win_amd64.whl", hash = "sha256:f3079f25bdc24cd9d27c4b2b5e68f5f60c4fdb7e8ad5ee2b9b006007558f9df7", size = 38138692, upload-time = "2026-03-31T18:28:57.147Z" }, + { url = "https://files.pythonhosted.org/packages/77/6f/4615353e016799f80fa52ccb270a843c413b22361fadda2589b2922fb9b0/llvmlite-0.47.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:a3c6a735d4e1041808434f9d440faa3d78d9b4af2ee64d05a66f351883b6ceec", size = 37232771, upload-time = "2026-03-31T18:29:01.324Z" }, + { url = "https://files.pythonhosted.org/packages/31/b8/69f5565f1a280d032525878a86511eebed0645818492feeb169dfb20ae8e/llvmlite-0.47.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2699a74321189e812d476a43d6d7f652f51811e7b5aad9d9bba842a1c7927acb", size = 56275178, upload-time = "2026-03-31T18:29:05.748Z" }, + { url = "https://files.pythonhosted.org/packages/d6/da/b32cafcb926fb0ce2aa25553bf32cb8764af31438f40e2481df08884c947/llvmlite-0.47.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6c6951e2b29930227963e53ee152441f0e14be92e9d4231852102d986c761e40", size = 55128632, upload-time = "2026-03-31T18:29:11.235Z" }, + { url = "https://files.pythonhosted.org/packages/46/9f/4898b44e4042c60fafcb1162dfb7014f6f15b1ec19bf29cfea6bf26df90d/llvmlite-0.47.0-cp313-cp313-win_amd64.whl", hash = "sha256:c2e9adf8698d813a9a5efb2d4370caf344dbc1e145019851fee6a6f319ba760e", size = 38138695, upload-time = "2026-03-31T18:29:15.43Z" }, + { url = "https://files.pythonhosted.org/packages/1c/d4/33c8af00f0bf6f552d74f3a054f648af2c5bc6bece97972f3bfadce4f5ec/llvmlite-0.47.0-cp314-cp314-macosx_12_0_arm64.whl", hash = "sha256:de966c626c35c9dff5ae7bf12db25637738d0df83fc370cf793bc94d43d92d14", size = 37232773, upload-time = "2026-03-31T18:29:19.453Z" }, + { url = "https://files.pythonhosted.org/packages/64/1d/a760e993e0c0ba6db38d46b9f48f6c7dceb8ac838824997fb9e25f97bc04/llvmlite-0.47.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ddbccff2aeaff8670368340a158abefc032fe9b3ccf7d9c496639263d00151aa", size = 56275176, upload-time = "2026-03-31T18:29:24.149Z" }, + { url = "https://files.pythonhosted.org/packages/84/3b/e679bc3b29127182a7f4aa2d2e9e5bea42adb93fb840484147d59c236299/llvmlite-0.47.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d4a7b778a2e144fc64468fb9bf509ac1226c9813a00b4d7afea5d988c4e22fca", size = 55128631, upload-time = "2026-03-31T18:29:29.536Z" }, + { url = "https://files.pythonhosted.org/packages/be/f7/19e2a09c62809c9e63bbd14ce71fb92c6ff7b7b3045741bb00c781efc3c9/llvmlite-0.47.0-cp314-cp314-win_amd64.whl", hash = "sha256:694e3c2cdc472ed2bd8bd4555ca002eec4310961dd58ef791d508f57b5cc4c94", size = 39153826, upload-time = "2026-03-31T18:29:33.681Z" }, + { url = "https://files.pythonhosted.org/packages/40/a1/581a8c707b5e80efdbbe1dd94527404d33fe50bceb71f39d5a7e11bd57b7/llvmlite-0.47.0-cp314-cp314t-macosx_12_0_arm64.whl", hash = "sha256:92ec8a169a20b473c1c54d4695e371bde36489fc1efa3688e11e99beba0abf9c", size = 37232772, upload-time = "2026-03-31T18:29:37.952Z" }, + { url = "https://files.pythonhosted.org/packages/11/03/16090dd6f74ba2b8b922276047f15962fbeea0a75d5601607edb301ba945/llvmlite-0.47.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:fa1cbd800edd3b20bc141521f7fd45a6185a5b84109aa6855134e81397ffe72b", size = 56275178, upload-time = "2026-03-31T18:29:42.58Z" }, + { url = "https://files.pythonhosted.org/packages/f5/cb/0abf1dd4c5286a95ffe0c1d8c67aec06b515894a0dd2ac97f5e27b82ab0b/llvmlite-0.47.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f6725179b89f03b17dabe236ff3422cb8291b4c1bf40af152826dfd34e350ae8", size = 55128632, upload-time = "2026-03-31T18:29:46.939Z" }, + { url = "https://files.pythonhosted.org/packages/4f/79/d3bbab197e86e0ff4f9c07122895b66a3e0d024247fcff7f12c473cb36d9/llvmlite-0.47.0-cp314-cp314t-win_amd64.whl", hash = "sha256:6842cf6f707ec4be3d985a385ad03f72b2d724439e118fcbe99b2929964f0453", size = 39153839, upload-time = "2026-03-31T18:29:51.004Z" }, +] + [[package]] name = "lmfit" version = "1.3.3" @@ -1287,6 +1321,42 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/af/2e/39d5e9179c543f2e6e149a65908f83afd9b6d64379a90789b323111761db/netcdf4-1.7.4-cp314-cp314t-win_arm64.whl", hash = "sha256:034220887d48da032cb2db5958f69759dbb04eb33e279ec6390571d4aea734fe", size = 2531682, upload-time = "2026-01-05T02:27:37.062Z" }, ] +[[package]] +name = "numba" +version = "0.65.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "llvmlite" }, + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f6/c5/db2ac3685833d626c0dcae6bd2330cd68433e1fd248d15f70998160d3ad7/numba-0.65.1.tar.gz", hash = "sha256:19357146c32fe9ed25059ab915e8465fb13951cf6b0aace3826b76886373ab23", size = 2765600, upload-time = "2026-04-24T02:02:56.551Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/de/1b/3c5a7daf683a95465bf23504bcd1a2d5db8cd5e5e276ca87505d020dffe9/numba-0.65.1-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:9d993ed0a257aa4116e6f553f114004bcfdee540c7276ab8ea48f650d514c452", size = 2680870, upload-time = "2026-04-24T02:02:10.623Z" }, + { url = "https://files.pythonhosted.org/packages/0f/a4/1831836814018a898e7d252aebe09c0f3ce1f26d145b68264b4ae0be6822/numba-0.65.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:5f098109f361681e57295f7e84d8ab2426902539a141811de0703ace52826981", size = 3739780, upload-time = "2026-04-24T02:02:13.097Z" }, + { url = "https://files.pythonhosted.org/packages/9c/1b/a813ddc81def09e257d2b1f67521982ce4b06204a87268796ffc8187271c/numba-0.65.1-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:973fd8173f2312815e6b7aaae887c4ce8a817eeff46a4f8840b828305b75bc95", size = 3446722, upload-time = "2026-04-24T02:02:15.083Z" }, + { url = "https://files.pythonhosted.org/packages/09/52/ee1d8b3becda384fe0552221641e05aa668a35e8a77470db4db7f6475000/numba-0.65.1-cp310-cp310-win_amd64.whl", hash = "sha256:c63aa0c4193694026452da55d0ef9d85156c1a7a333454c103bb30dec81b7bf8", size = 2747539, upload-time = "2026-04-24T02:02:16.79Z" }, + { url = "https://files.pythonhosted.org/packages/96/b3/650500c2eab4534d98e9166f4298e0f3c69c742afdf24e6eabccd1f16ad8/numba-0.65.1-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:7020d74b19cdb8cff16506542fdd510756e28c5e7f3bd0b7f574f0f42272fcd9", size = 2680563, upload-time = "2026-04-24T02:02:18.414Z" }, + { url = "https://files.pythonhosted.org/packages/44/0b/0615dbedb98f5b32a35a53290fbdc6e22306968109278d7e58df82d7a9f6/numba-0.65.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f80ed83774b5173abd6581cd8d2165d1d38e13d2e5c8155c0c0b421784745420", size = 3745018, upload-time = "2026-04-24T02:02:20.252Z" }, + { url = "https://files.pythonhosted.org/packages/49/aa/4361698f35bf63bff67dfe6c90493731177f48ede954f77b0588731537bc/numba-0.65.1-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7ed425a43b0a5f9772f2f4e2dd0bbd12eabecae1af0b24efcfd4e053f012aac6", size = 3450962, upload-time = "2026-04-24T02:02:22.449Z" }, + { url = "https://files.pythonhosted.org/packages/bd/9a/af61ec03b3116c161fd7a06b9e8a265729a8718458333e8ffbb06d9a3978/numba-0.65.1-cp311-cp311-win_amd64.whl", hash = "sha256:df40a5028a975b9ea66f6a2a3f7abbdbd541a863070e34ed367aff21141248e4", size = 2747417, upload-time = "2026-04-24T02:02:24.43Z" }, + { url = "https://files.pythonhosted.org/packages/57/bc/76f8f8c5cf9adee47fdb7bbb03be8900f76f902d451d7477cf12b845e1de/numba-0.65.1-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:ac3f1e77c352dd0ea9712732c2d8f9ca507717435eec5b5013bf138ac33c4a08", size = 2681371, upload-time = "2026-04-24T02:02:26.105Z" }, + { url = "https://files.pythonhosted.org/packages/69/47/a415af0283e4db0398104c6d1c11c9861a98dc67a7aa442a7769ed5d6196/numba-0.65.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:52bc6f3ceb8fcaff9b2ae26b4c6b1e9fee39db8d355534c0fe4f39a901246b84", size = 3802467, upload-time = "2026-04-24T02:02:27.712Z" }, + { url = "https://files.pythonhosted.org/packages/46/36/246f73ec99cfeab2f2cb2ce7d4218766cc36a2da418901223f4f4da9c813/numba-0.65.1-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:90ca10b3463bae0bd70589726fe3c77d01d6b5fc86bee54bcdf9fb6b47c28977", size = 3502628, upload-time = "2026-04-24T02:02:29.763Z" }, + { url = "https://files.pythonhosted.org/packages/db/9e/3c679b2ee078425b9e99a91e44f8d132a6830d8ccce5227bc5e9181aeed8/numba-0.65.1-cp312-cp312-win_amd64.whl", hash = "sha256:5971c632be2a2351500431f46213821dba8d02b18a9f7d02fd36bd2743e41a6a", size = 2750611, upload-time = "2026-04-24T02:02:31.477Z" }, + { url = "https://files.pythonhosted.org/packages/79/37/14a4579049c1eb673afd0de0cb4842982acd55b9ce2643e763db858bcea0/numba-0.65.1-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:1735c15c1134a5108b4d6a5c77fc0947924ea066a738dc09a52008c13df9cad3", size = 2681344, upload-time = "2026-04-24T02:02:33.65Z" }, + { url = "https://files.pythonhosted.org/packages/a0/22/b8d873f6466b20aa563fc9b33acd48dec89a07803ddaa2f1c8ca1cd33126/numba-0.65.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c09f49117ef255e1f1c6dad0c7a1ed39868243862a73be5706793241a3755f1b", size = 3810619, upload-time = "2026-04-24T02:02:36.041Z" }, + { url = "https://files.pythonhosted.org/packages/62/08/e16a8b5d9a018962ebb5c66be662317cde32b9f5dab08441f90bed5522fb/numba-0.65.1-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:594a8680b3fadac99e97e489b1fd89007177e5336713745c3b769528c635a464", size = 3509783, upload-time = "2026-04-24T02:02:38.245Z" }, + { url = "https://files.pythonhosted.org/packages/fd/a5/03c970d57f4c1741354837353ce39fb5206952ae1dba8922d29c86f64805/numba-0.65.1-cp313-cp313-win_amd64.whl", hash = "sha256:85be74c0d036842699a30058f82fb88fc5ffdc59f7615cab5792ea92914c9b62", size = 2750534, upload-time = "2026-04-24T02:02:39.903Z" }, + { url = "https://files.pythonhosted.org/packages/4f/2e/8aed9b726d9ba5f11ad287645fd479e88278db3060a25cb1225d730eb2b7/numba-0.65.1-cp314-cp314-macosx_12_0_arm64.whl", hash = "sha256:33f5eb68eb1c843511615d14663ce60258525d6a4c65ab040e2c2b0c4cf17450", size = 2681554, upload-time = "2026-04-24T02:02:41.812Z" }, + { url = "https://files.pythonhosted.org/packages/87/96/f3eb235fafa82a34e2ab5dd7dc9ffff998ebf5f0bbc23fa56a96aeb44da6/numba-0.65.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:71e73029bf53a62cc6afcf96be4bd942290d8b4c55f0a454fb536158115790f7", size = 3779602, upload-time = "2026-04-24T02:02:43.726Z" }, + { url = "https://files.pythonhosted.org/packages/09/90/b0f09b48752d23640b8284f22aa597737e8adaddc7fbfacc4708b7f73a4c/numba-0.65.1-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3a07635e0be926b9bdbffb09137c230fb13f6ec0e564914ba937cee12ce3eb35", size = 3479532, upload-time = "2026-04-24T02:02:45.427Z" }, + { url = "https://files.pythonhosted.org/packages/56/46/3f7fc04fb853559e74b210e0b62c19974ec844cefec611f9e535f4da3761/numba-0.65.1-cp314-cp314-win_amd64.whl", hash = "sha256:2a20fcdabdefbdacf88d85caf70c3b18c4bcb7ebb8f82e6a19486383dd26ab63", size = 2752637, upload-time = "2026-04-24T02:02:47.664Z" }, + { url = "https://files.pythonhosted.org/packages/81/7b/c1a341a9067367778f4152a5f01061cf281fb09582c92c510ec4918cabf6/numba-0.65.1-cp314-cp314t-macosx_12_0_arm64.whl", hash = "sha256:548dd4b3a4508d5062768d1514b2cd7b015f9a25ec7af651c50dee243965e652", size = 2684600, upload-time = "2026-04-24T02:02:49.653Z" }, + { url = "https://files.pythonhosted.org/packages/03/36/98ddbcf3e4f04a6dd07e1c67249955920579ba4af6bb6868e3088f4ed282/numba-0.65.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:78abc28feff2c2ff8307fff3975b6438352759c9acb797ecd6b1fb6e7e39e31d", size = 3817198, upload-time = "2026-04-24T02:02:51.266Z" }, + { url = "https://files.pythonhosted.org/packages/a3/83/0dad21057ece5a835599f5d24099b091703995e23dbbf894f259e91c010b/numba-0.65.1-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ee7676cb389555805f9b9a1840cbcd1ea6c8bd5376ab6918e3a29c5ea1dbda20", size = 3533862, upload-time = "2026-04-24T02:02:52.987Z" }, + { url = "https://files.pythonhosted.org/packages/32/36/8be7118ffd4c8440881046eac3d0982cc5ab42909508cf5d67024d62a2e4/numba-0.65.1-cp314-cp314t-win_amd64.whl", hash = "sha256:20609346e3bd75204950dcbbfe383a8d7dbf4902f442aedbf00f97fef4aa8f38", size = 2758237, upload-time = "2026-04-24T02:02:54.612Z" }, +] + [[package]] name = "numdifftools" version = "0.9.41"