diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index 4767964..0000000 --- a/.gitmodules +++ /dev/null @@ -1,3 +0,0 @@ -[submodule "lib/sat_code"] - path = lib/sat_code - url = https://github.com/Bill-Gray/sat_code.git diff --git a/CLAUDE.md b/CLAUDE.md index 937a3ce..b22823e 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -11,10 +11,10 @@ A PostgreSQL extension that moves orbital mechanics inside the database — the ```bash make PG_CONFIG=/usr/bin/pg_config # Compile with PGXS sudo make install PG_CONFIG=/usr/bin/pg_config # Install extension -make installcheck PG_CONFIG=/usr/bin/pg_config # Run 12 regression test suites +make installcheck PG_CONFIG=/usr/bin/pg_config # Run 13 regression test suites ``` -Requires: PostgreSQL 17 development headers, GCC, G++ (for sat_code C++), Make. +Requires: PostgreSQL 17 development headers, GCC, Make. ### Docker ```bash @@ -68,11 +68,21 @@ src/ de_reader.h / de_reader.c # Clean-room JPL DE binary reader (Chebyshev/Clenshaw) eph_provider.h / eph_provider.c # Provider dispatch, GUC, lazy init, frame rotation de_funcs.c # All _de() SQL function implementations -lib/ - sat_code/ # Bill Gray's SGP4/SDP4 (MIT, git submodule) + sgp4/ # Vendored SGP4/SDP4 (Bill Gray's sat_code, MIT license) + sgp4.c # Near-earth propagator (period < 225 min) + sdp4.c # Deep-space propagator (period >= 225 min) + deep.c # Lunar/solar perturbations, resonance integration + common.c # Shared initialization (Brouwer mean elements, Kepler solver) + basics.c # select_ephemeris(), FMod2p() + get_el.c # TLE parsing (parse_elements(), checksum) + tle_out.c # TLE output (write_elements_in_tle_format()) + norad.h / norad_in.h # Public + internal headers + PROVENANCE.md # Vendoring decision, modifications, verification + LICENSE # MIT license (Bill Gray / Project Pluto) test/ - sql/ # 12 regression test suites + sql/ # 13 regression test suites expected/ # Expected output + data/vallado_518.json # 518 Vallado test vectors (AIAA 2006-6753-Rev1) docs/ DESIGN.md # Architecture decisions, theory-to-code mappings Dockerfile # Starlight docs site (Astro + Caddy) @@ -210,21 +220,26 @@ Every `_de()` function mirrors an existing VSOP87 function: | `mars_moon_observe_de()` | `mars_moon_observe()` | STABLE | | `pg_orbit_ephemeris_info()` | — | STABLE | -## sat_code Submodule +## Vendored SGP4/SDP4 -Bill Gray's SGP4/SDP4: https://github.com/Bill-Gray/sat_code (MIT license) +Bill Gray's sat_code (MIT license): https://github.com/Bill-Gray/sat_code -C++ sources compiled with `g++ -fPIC`, linked via `-lstdc++`. C linkage through `norad.h`. +Vendored into `src/sgp4/` from upstream commit `ff7b98957dfa2979700a482bde9de9542807293e`. The `.cpp` files were renamed to `.c` — the code is valid C99 with zero C++ features (no classes, templates, namespaces, exceptions, or STL). This eliminates the `g++` and `-lstdc++` dependencies. -```bash -git submodule update --init # Initialize -``` +Modifications from upstream are minimal and documented in `src/sgp4/PROVENANCE.md`: +- Renamed `.cpp` → `.c` (no code changes — already valid C99) +- Stripped Win32 `DLL_FUNC`/`__stdcall` decorators +- Removed `extern "C"` wrapper (now compiled as C) +- Removed unused SGP/SGP8/SDP8 model prototypes +- Added forward declarations (`-Wmissing-prototypes`) +- Changed bare `inline` to `static inline` for C99 compliance +- Added equation citations referencing STR#3 and Vallado Rev-1 -Key files: `sgp4.cpp`, `sdp4.cpp`, `deep.cpp`, `common.cpp`, `basics.cpp`, `norad.h`, `norad_in.h` +All numerical logic is byte-identical to upstream. Verified against 518 Vallado test vectors (AIAA 2006-6753-Rev1). ## Testing -12 regression test suites via `make installcheck`: +13 regression test suites via `make installcheck`: | Suite | What it tests | |-------|--------------| @@ -240,6 +255,7 @@ Key files: `sgp4.cpp`, `sdp4.cpp`, `deep.cpp`, `common.cpp`, `basics.cpp`, `nora | moon_observe | Galilean/Saturn/Uranus/Mars moons, Io phase, Jupiter CML, burst probability | | lambert_transfer | Lambert solver, lambert_c3, pork chop grid, error handling | | de_ephemeris | DE function fallback to VSOP87, cross-provider consistency, error handling | +| vallado_518 | 518 Vallado test vectors (AIAA 2006-6753-Rev1), per-satellite breakdown | ## Error Handling Patterns @@ -305,7 +321,7 @@ cd docs && make prod - `ereport(ERROR, ...)` for user-facing errors, never `elog(ERROR, ...)` - All memory via `palloc`/`pfree` (PostgreSQL memory contexts) - Comments explain "why", not "what" -- No global mutable state — all computation from function arguments (exception: per-backend DE handle, lazily initialized, cleaned up via `on_proc_exit`) +- No global mutable state — all computation from function arguments (exceptions: per-backend DE handle via `on_proc_exit`; 3 statics in vendored `deep.c` + 1 cache in `sdp4.c`, safe in PostgreSQL's fork model, never modified by pg_orbit) - Every function handling SGP4 must check the error return code - All functions marked `PARALLEL SAFE` - DE functions: always fall back to VSOP87/ELP82B on any error diff --git a/Dockerfile b/Dockerfile index 499236f..21a9410 100644 --- a/Dockerfile +++ b/Dockerfile @@ -20,7 +20,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ apt-get update && apt-get install -y --no-install-recommends \ postgresql-${PG_MAJOR} \ postgresql-server-dev-${PG_MAJOR} \ - gcc g++ make && \ + gcc make && \ rm -rf /var/lib/apt/lists/* # Copy source tree (submodule content included as regular files) @@ -35,7 +35,7 @@ RUN make PG_CONFIG=${PG_CONFIG} # Install to system location (needed for installcheck) RUN make PG_CONFIG=${PG_CONFIG} install -# Run all 12 regression test suites against a throwaway cluster +# Run all 13 regression test suites against a throwaway cluster RUN su postgres -c "/usr/lib/postgresql/${PG_MAJOR}/bin/initdb -D /tmp/pgtest" && \ su postgres -c "/usr/lib/postgresql/${PG_MAJOR}/bin/pg_ctl -D /tmp/pgtest -l /tmp/pgtest.log start" && \ su postgres -c "/usr/lib/postgresql/${PG_MAJOR}/bin/createuser -s root" && \ diff --git a/docs/DESIGN.md b/docs/DESIGN.md index d85b293..c4606e3 100644 --- a/docs/DESIGN.md +++ b/docs/DESIGN.md @@ -49,14 +49,14 @@ prediction error of the TLE by an order of magnitude. ### Constant Inventory -| Constant | Source Paper | Value | pg_orbit Location | sat_code Location | -|----------|-------------|-------|-------------------|-------------------| -| ae (equatorial radius) | Hoots & Roehrich STR#3 | 6378.135 km | `types.h:20` (WGS72_AE) | `norad_in.h:64` (earth_radius_in_km) | -| J2 | Hoots & Roehrich STR#3 | 0.001082616 | `types.h:21` (WGS72_J2) | `norad_in.h:69` (xj2) | -| J3 | Hoots & Roehrich STR#3 | -2.53881e-6 | `types.h:22` (WGS72_J3) | `norad_in.h:63` (xj3) | -| J4 | Hoots & Roehrich STR#3 | -1.65597e-6 | `types.h:23` (WGS72_J4) | `norad_in.h:79` (xj4) | -| ke | Hoots & Roehrich STR#3 | 0.0743669161331734132 min^-1 | `types.h:24` (WGS72_KE) | `norad_in.h:83` (xke) | -| mu | Hoots & Roehrich STR#3 | 398600.8 km^3/s^2 | `types.h:19` (WGS72_MU) | (implicit in xke) | +| Constant | Source Paper | Value | pg_orbit Location | Vendored SGP4 Location | +|----------|-------------|-------|-------------------|------------------------| +| ae (equatorial radius) | Hoots & Roehrich STR#3 | 6378.135 km | `types.h` (WGS72_AE) | `src/sgp4/norad_in.h` (earth_radius_in_km) | +| J2 | Hoots & Roehrich STR#3 | 0.001082616 | `types.h` (WGS72_J2) | `src/sgp4/norad_in.h` (xj2) | +| J3 | Hoots & Roehrich STR#3 | -2.53881e-6 | `types.h` (WGS72_J3) | `src/sgp4/norad_in.h` (xj3) | +| J4 | Hoots & Roehrich STR#3 | -1.65597e-6 | `types.h` (WGS72_J4) | `src/sgp4/norad_in.h` (xj4) | +| ke | Hoots & Roehrich STR#3 | 0.0743669161331734132 min^-1 | `types.h` (WGS72_KE) | `src/sgp4/norad_in.h` (xke) | +| mu | Hoots & Roehrich STR#3 | 398600.8 km^3/s^2 | `types.h` (WGS72_MU) | (implicit in xke) | | WGS-84 a | NIMA TR8350.2 | 6378.137 km | `types.h:31` (WGS84_A) | -- | | WGS-84 f | NIMA TR8350.2 | 1/298.257223563 | `types.h:32` (WGS84_F) | -- | @@ -112,31 +112,30 @@ across function invocations. 3. **Includes deep-space SDP4.** Many SGP4 implementations only handle near-earth orbits (period < 225 minutes). sat_code includes the full - SDP4 with lunar/solar perturbations via `deep.cpp`, handling GEO, + SDP4 with lunar/solar perturbations via `deep.c`, handling GEO, Molniya, and GPS orbits. 4. **MIT license.** Compatible with the PostgreSQL License for embedding in a shared library. 5. **Actively maintained.** Used in Bill Gray's Find_Orb production - astrometry software. Bug fixes reach us through the git submodule. + astrometry software. ### Build Integration -The Makefile compiles sat_code's `.cpp` files with `g++` and links the -resulting `.o` files into the PostgreSQL shared library alongside our C -sources. The `-lstdc++` link flag pulls in the C++ runtime. This is the -same pattern used by PostGIS for GEOS integration (C extension linking -C++ library objects). +The SGP4/SDP4 source is vendored into `src/sgp4/` — the `.cpp` files +renamed to `.c` (the code is valid C99 with zero C++ features). The +Makefile compiles everything with `gcc` and links with `-lm` only. No +C++ compiler or runtime is required. ``` -src/*.c --> gcc --> .o --| -lib/sat_code/*.cpp -> g++ -> .o --|--> pg_orbit.so - -lstdc++ -lm +src/*.c --[gcc]--> .o --| +src/sgp4/*.c --[gcc]--> .o --|--> pg_orbit.so + -lm ``` -The `-I$(SAT_CODE_DIR)` flag lets our C files `#include "norad.h"` -directly. +The `-I$(SGP4_DIR)` flag lets our C files `#include "norad.h"` directly. +Provenance is recorded in `src/sgp4/PROVENANCE.md`. ## 3. Type System Design @@ -573,18 +572,18 @@ initialize the propagator. ## 9. Theory-to-Code Mapping This table maps key equations from the SGP4 theory papers to their -implementation in pg_orbit and sat_code. +implementation in pg_orbit and the vendored SGP4 code. | Theory | Paper | What | Code Location | |--------|-------|------|---------------| -| Mean element recovery | Brouwer (1959) | Recover original mean motion (xnodp) and semi-major axis (aodp) from input TLE elements, removing secular J2 perturbations | `sat_code/common.cpp:sxpall_common_init()` lines 17-35 | -| Secular perturbations | Lane & Cranford (1969), Hoots & Roehrich STR#3 | Secular rates of mean anomaly, argument of perigee, and RAAN due to J2, J4 | `sat_code/common.cpp:sxpx_common_init()` lines 86-101 | -| Atmospheric drag | Hoots & Roehrich STR#3 | B* formulation of drag, C1/C2/C4 coefficients, perigee-dependent s parameter | `sat_code/common.cpp:sxpx_common_init()` lines 47-84; `sat_code/sgp4.cpp:SGP4_init()` | -| Short-period perturbations | Lane & Cranford (1969), Brouwer (1959) | Oscillatory corrections to radius, argument of latitude, node, and inclination | `sat_code/common.cpp:sxpx_posn_vel()` lines 121-229 | -| Kepler equation | Classical | Newton-Raphson with second-order correction, bounded first step | `sat_code/common.cpp:sxpx_posn_vel()` lines 175-208 | -| Deep-space resonance | Hujsak (1979) | Lunar and solar gravitational perturbations, geopotential resonance for 12-hour and 24-hour orbits | `sat_code/deep.cpp:Deep_dpinit()`, `Deep_dpsec()`, `Deep_dpper()` | -| Near-earth propagation | Hoots & Roehrich STR#3 | SGP4 main loop: secular + short-period + drag terms | `sat_code/sgp4.cpp:SGP4()` | -| Deep-space propagation | Hoots & Roehrich STR#3 | SDP4: SGP4 core + deep-space secular/periodic corrections | `sat_code/sdp4.cpp:SDP4()` | +| Mean element recovery | Brouwer (1959) | Recover original mean motion (xnodp) and semi-major axis (aodp) from input TLE elements, removing secular J2 perturbations | `src/sgp4/common.c:sxpall_common_init()` lines 17-35 | +| Secular perturbations | Lane & Cranford (1969), Hoots & Roehrich STR#3 | Secular rates of mean anomaly, argument of perigee, and RAAN due to J2, J4 | `src/sgp4/common.c:sxpx_common_init()` lines 86-101 | +| Atmospheric drag | Hoots & Roehrich STR#3 | B* formulation of drag, C1/C2/C4 coefficients, perigee-dependent s parameter | `src/sgp4/common.c:sxpx_common_init()` lines 47-84; `src/sgp4/sgp4.c:SGP4_init()` | +| Short-period perturbations | Lane & Cranford (1969), Brouwer (1959) | Oscillatory corrections to radius, argument of latitude, node, and inclination | `src/sgp4/common.c:sxpx_posn_vel()` lines 121-229 | +| Kepler equation | Classical | Newton-Raphson with second-order correction, bounded first step | `src/sgp4/common.c:sxpx_posn_vel()` lines 175-208 | +| Deep-space resonance | Hujsak (1979) | Lunar and solar gravitational perturbations, geopotential resonance for 12-hour and 24-hour orbits | `src/sgp4/deep.c:Deep_dpinit()`, `Deep_dpsec()`, `Deep_dpper()` | +| Near-earth propagation | Hoots & Roehrich STR#3 | SGP4 main loop: secular + short-period + drag terms | `src/sgp4/sgp4.c:SGP4()` | +| Deep-space propagation | Hoots & Roehrich STR#3 | SDP4: SGP4 core + deep-space secular/periodic corrections | `src/sgp4/sdp4.c:SDP4()` | | Semi-major axis from n | Kepler's third law | a = (KE / n)^(2/3) in earth radii | `src/tle_type.c:tle_perigee()` line 415; `src/gist_tle.c:tle_to_alt_range()` line 76 | | GMST | Vallado (2013) Eq. 3-47 | Greenwich Mean Sidereal Time from Julian date | `src/coord_funcs.c:gmst_from_jd()` lines 59-73; `src/pass_funcs.c:gmst_from_jd()` lines 129-151 | | TEME to ECEF | Vallado (2013) | Z-axis rotation by -GMST, velocity cross-product correction | `src/coord_funcs.c:teme_to_ecef()` lines 83-103; `src/pass_funcs.c:teme_to_ecef()` lines 157-179 | @@ -592,7 +591,7 @@ implementation in pg_orbit and sat_code. | Topocentric transform | Standard SEZ | ECEF range vector rotated to South-East-Zenith, azimuth from north | `src/coord_funcs.c:ecef_to_topocentric()` lines 163-188 | | Observer to ECEF | Geodesy standard | WGS-84 ellipsoid surface point to Cartesian | `src/coord_funcs.c:observer_to_ecef()` lines 143-156 | | Range rate | Dot product | Projection of relative velocity onto line-of-sight unit vector | `src/coord_funcs.c:eci_to_topocentric()` line 618 | -| Near/deep selection | Hoots & Roehrich STR#3 | Period threshold: 225 minutes (n < 2*pi/225 rad/min) | `sat_code/norad.h:select_ephemeris()` | +| Near/deep selection | Hoots & Roehrich STR#3 | Period threshold: 225 minutes (n < 2*pi/225 rad/min) | `src/sgp4/norad.h:select_ephemeris()` | ## 10. JPL DE Ephemeris Architecture (v0.3.0) diff --git a/docs/src/content/docs/architecture/constant-chain-of-custody.mdx b/docs/src/content/docs/architecture/constant-chain-of-custody.mdx index 056834d..ca64774 100644 --- a/docs/src/content/docs/architecture/constant-chain-of-custody.mdx +++ b/docs/src/content/docs/architecture/constant-chain-of-custody.mdx @@ -24,7 +24,7 @@ Four rules govern constant usage across the entire codebase. No exceptions. ### Rule 1: WGS-72 for SGP4/SDP4 propagation -All propagation uses WGS-72 constants: $\mu$, $a_e$, $J_2$, $J_3$, $J_4$, $k_e$. These flow through sat_code's `norad_in.h` defines and are never overridden. The functions `SGP4_init()`, `SGP4()`, `SDP4_init()`, and `SDP4()` operate entirely in the WGS-72 domain. +All propagation uses WGS-72 constants: $\mu$, $a_e$, $J_2$, $J_3$, $J_4$, $k_e$. These flow through the vendored `src/sgp4/norad_in.h` defines and are never overridden. The functions `SGP4_init()`, `SGP4()`, `SDP4_init()`, and `SDP4()` operate entirely in the WGS-72 domain. ### Rule 2: WGS-84 for coordinate output @@ -40,7 +40,7 @@ WGS-72 for propagation, WGS-84 for output. Perigee and apogee altitudes use WGS- ## Constant inventory -The complete set of constants, with provenance and location in both pg_orbit and sat_code. +The complete set of constants, with provenance and location in both pg_orbit and the vendored SGP4 code. ### WGS-72 constants (propagation domain) @@ -75,9 +75,9 @@ Source: NIMA TR8350.2, "Department of Defense World Geodetic System 1984." ## Why two copies of AE? -`types.h` carries a parallel copy of the WGS-72 constants even though sat_code defines them in `norad_in.h`. This is intentional. +`types.h` carries a parallel copy of the WGS-72 constants even though the vendored SGP4 code defines them in `norad_in.h`. This is intentional. -`types.h` is the single header for all pg_orbit C sources. `norad_in.h` is an internal sat_code header not meant for external consumers. The GiST index (`gist_tle.c`) and TLE accessor functions (`tle_type.c`) need $k_e$ and $a_e$ without pulling in sat_code internals. The values **must** be identical. +`types.h` is the single header for all pg_orbit C sources. `norad_in.h` is an internal SGP4 header in `src/sgp4/` not meant for external consumers. The GiST index (`gist_tle.c`) and TLE accessor functions (`tle_type.c`) need $k_e$ and $a_e$ without pulling in sat_code internals. The values **must** be identical. The perigee and apogee altitude computations derive from mean elements: diff --git a/docs/src/content/docs/architecture/design-principles.mdx b/docs/src/content/docs/architecture/design-principles.mdx index f6b83e5..29ac448 100644 --- a/docs/src/content/docs/architecture/design-principles.mdx +++ b/docs/src/content/docs/architecture/design-principles.mdx @@ -58,7 +58,7 @@ Every propagation function that can fail has a `_safe()` variant that returns `N ### SGP4 error classification -sat_code returns six distinct error codes. pg_orbit classifies them into two categories based on physical meaning: +The vendored SGP4/SDP4 library returns six distinct error codes. pg_orbit classifies them into two categories based on physical meaning: | Code | Meaning | Severity | Response | |------|---------|----------|----------| @@ -122,7 +122,7 @@ The [Theory-to-Code Mapping](/architecture/theory-to-code/) page provides the co | Equation | Source | Code | |----------|--------|------| -| SGP4/SDP4 propagation | Hoots & Roehrich, STR#3 (1980) | `sat_code/sgp4.cpp`, `sdp4.cpp` | +| SGP4/SDP4 propagation | Hoots & Roehrich, STR#3 (1980) | `src/sgp4/sgp4.c`, `sdp4.c` | | VSOP87 planetary positions | Bretagnon & Francou (1988) | `src/vsop87.c` | | GMST computation | Vallado (2013) Eq. 3-47 | `src/coord_funcs.c:gmst_from_jd()` | | Lambert solver | Izzo (2015) | `src/lambert.c` | diff --git a/docs/src/content/docs/architecture/memory-thread-safety.mdx b/docs/src/content/docs/architecture/memory-thread-safety.mdx index a8e62f3..09dc030 100644 --- a/docs/src/content/docs/architecture/memory-thread-safety.mdx +++ b/docs/src/content/docs/architecture/memory-thread-safety.mdx @@ -116,9 +116,9 @@ PostgreSQL backends are long-lived processes that serve multiple sessions. A glo Given the same TLE and timestamp, pg_orbit produces the same result regardless of what queries ran before, how many backends are active, or whether the function is running in a parallel worker. There is no path-dependent behavior. -## sat_code's memory model +## SGP4/SDP4 memory model -sat_code itself has no global mutable state. The propagator state lives entirely in two caller-provided structures: +The vendored SGP4/SDP4 code has no global mutable state. The propagator state lives entirely in two caller-provided structures: | Structure | Size | Contains | Owner | |-----------|------|----------|-------| @@ -157,7 +157,7 @@ All seven pg_orbit types are fixed-size with `STORAGE = plain`: The TLE text format is 138+ bytes (two 69-character lines plus separator). The parsed struct is 112 bytes --- smaller than the text it came from, and it eliminates the ~10x parsing overhead that would be incurred on every propagation call if raw text were stored. -The text representation can be reconstructed from the parsed elements via sat_code's `write_elements_in_tle_format()`. The round-trip is lossless for all fields that affect propagation. +The text representation can be reconstructed from the parsed elements via the vendored `write_elements_in_tle_format()`. The round-trip is lossless for all fields that affect propagation. ## Memory usage in practice diff --git a/docs/src/content/docs/architecture/sgp4-integration.mdx b/docs/src/content/docs/architecture/sgp4-integration.mdx index d268f64..81efd89 100644 --- a/docs/src/content/docs/architecture/sgp4-integration.mdx +++ b/docs/src/content/docs/architecture/sgp4-integration.mdx @@ -6,7 +6,7 @@ sidebar: import { Aside, Tabs, TabItem } from "@astrojs/starlight/components"; -pg_orbit wraps Bill Gray's `sat_code` library (MIT license, Project Pluto) for SGP4/SDP4 propagation. This page covers why sat_code was chosen, how it integrates with PostgreSQL's build and execution model, and the error handling contract between the two codebases. +pg_orbit vendors Bill Gray's `sat_code` library (MIT license, Project Pluto) for SGP4/SDP4 propagation. The relevant source files are vendored into `src/sgp4/` with `.cpp` extensions renamed to `.c` --- the code contains zero C++ features and compiles as pure C99. This page covers why sat_code was chosen, how it integrates with PostgreSQL's build and execution model, and the error handling contract between the two codebases. ## Why sat_code @@ -14,7 +14,7 @@ Three SGP4 implementations were evaluated. The choice came down to one question: - **Pure C linkage.** All public functions are declared `extern "C"` in `norad.h`. The library compiles as C++ but exposes a flat C function interface: `SGP4_init()`, `SGP4()`, `SDP4_init()`, `SDP4()`, `parse_elements()`, `select_ephemeris()`. + **Pure C.** Despite upstream's `.cpp` file extensions, the code contains zero C++ features. pg_orbit vendors the files as `.c` and compiles them with `gcc`. The public API in `norad.h` is a flat C function interface: `SGP4_init()`, `SGP4()`, `SDP4_init()`, `SDP4()`, `parse_elements()`, `select_ephemeris()`. **No global mutable state.** The propagator state lives in a caller-allocated `double params[N_SAT_PARAMS]` array. This maps directly to PostgreSQL's `palloc`-based memory model. @@ -35,54 +35,48 @@ Three SGP4 implementations were evaluated. The choice came down to one question: -## The C/C++ boundary +## Compilation -sat_code is compiled as C++ but pg_orbit is a C extension. The integration works because sat_code's public API is `extern "C"`: +sat_code's upstream files use `.cpp` extensions but contain no C++ features --- no classes, templates, namespaces, exceptions, or STL. The vendored copies in `src/sgp4/` are renamed to `.c` and compile with `gcc` alongside the rest of pg_orbit. There is no C/C++ boundary, no `g++`, and no `-lstdc++`. ``` -src/*.c --[gcc]--> .o --| -lib/sat_code/*.cpp --[g++]--> .o --|--> pg_orbit.so - -lstdc++ -lm +src/*.c --[gcc]--> .o --| +src/sgp4/*.c --[gcc]--> .o --|--> pg_orbit.so + -lm ``` -The Makefile compiles sat_code's `.cpp` files with `g++` and links them alongside pg_orbit's `.c` files with `-lstdc++` for the C++ runtime. This is the same pattern PostGIS uses for GEOS integration. - ### Build rules ```makefile -# sat_code C++ sources -SAT_CODE_DIR = lib/sat_code -SAT_CODE_SRCS = $(SAT_CODE_DIR)/sgp4.cpp $(SAT_CODE_DIR)/sdp4.cpp \ - $(SAT_CODE_DIR)/deep.cpp $(SAT_CODE_DIR)/common.cpp \ - $(SAT_CODE_DIR)/basics.cpp $(SAT_CODE_DIR)/get_el.cpp \ - $(SAT_CODE_DIR)/tle_out.cpp -SAT_CODE_OBJS = $(SAT_CODE_SRCS:.cpp=.o) +# Vendored SGP4/SDP4 sources (pure C, from Bill Gray's sat_code, MIT license) +SGP4_DIR = src/sgp4 +SGP4_SRCS = $(SGP4_DIR)/sgp4.c $(SGP4_DIR)/sdp4.c \ + $(SGP4_DIR)/deep.c $(SGP4_DIR)/common.c \ + $(SGP4_DIR)/basics.c $(SGP4_DIR)/get_el.c \ + $(SGP4_DIR)/tle_out.c +SGP4_OBJS = $(SGP4_SRCS:.c=.o) -# Include sat_code headers for our C sources -PG_CPPFLAGS = -I$(SAT_CODE_DIR) +# Include vendored SGP4 headers for our C sources +PG_CPPFLAGS = -I$(SGP4_DIR) -# C++ runtime for sat_code -SHLIB_LINK += -lstdc++ -lm - -# Compile C++ with position-independent code for shared library -$(SAT_CODE_DIR)/%.o: $(SAT_CODE_DIR)/%.cpp - $(CXX) $(CXXFLAGS) -fPIC -I$(SAT_CODE_DIR) -c -o $@ $< +# Pure C — no C++ runtime needed +SHLIB_LINK += -lm ``` -The `-fPIC` flag is required because the compiled objects become part of a shared library (`.so`). Without it, the linker would reject the C++ objects. +PGXS handles the `-fPIC` flag and pattern rules for `.c` to `.o` compilation, so the vendored SGP4 files need no special build rules. ### Header inclusion pg_orbit's C files include `norad.h` directly: ```c -#include "norad.h" /* sat_code public API */ +#include "norad.h" /* vendored SGP4 public API */ #include "types.h" /* pg_orbit types and WGS-72/84 constants */ ``` -The `PG_CPPFLAGS = -I$(SAT_CODE_DIR)` flag makes `norad.h` available without a path prefix. +The `PG_CPPFLAGS = -I$(SGP4_DIR)` flag makes `norad.h` available without a path prefix. -## The sat_code API surface +## The SGP4 API surface pg_orbit uses a small subset of sat_code's public functions. @@ -193,26 +187,31 @@ The error response changes based on the calling context: The pass prediction context is the most interesting. A TLE valid for part of a search window should not abort the entire pass search. Returning $-\pi$ radians (well below any physical horizon) causes the coarse scan to treat the time point as "satellite below horizon" and continue looking for passes at other times. -## The git submodule +## Build integration -sat_code is included as a git submodule at `lib/sat_code/`. This provides: +sat_code is vendored into `src/sgp4/` --- the minimal set of source files needed for SGP4/SDP4 propagation, committed directly into the pg_orbit repository. A `PROVENANCE.md` file in that directory records the upstream repository, the exact commit hash, and every modification made during vendoring. -- **Pinned version.** The submodule pointer records the exact commit. Upstream changes do not affect pg_orbit until the submodule is explicitly updated. -- **Clear provenance.** `git submodule status` shows the upstream repository (github.com/Bill-Gray/sat_code) and commit hash. -- **Easy updates.** `git submodule update --remote` pulls the latest upstream, which can then be tested against the Vallado 518 vectors before committing the update. +This approach provides: -### Files used from sat_code +- **Pinned version.** The vendored commit is recorded in `src/sgp4/PROVENANCE.md`. Upstream changes do not affect pg_orbit until the files are explicitly re-vendored. +- **Clear provenance.** `PROVENANCE.md` documents the upstream repository (github.com/Bill-Gray/sat_code), commit hash, the `.cpp` to `.c` rename rationale, and a line-by-line list of every modification. +- **No submodule complexity.** Cloning the repository gets a complete, buildable tree. No `git submodule update --init` step, no risk of missing submodule state. +- **Pure C build.** Renaming `.cpp` to `.c` eliminates the `g++` and `-lstdc++` dependencies. The entire extension compiles with a single C compiler. + +### Vendored files | File | Purpose | |------|---------| -| `sgp4.cpp` | SGP4 near-earth propagator | -| `sdp4.cpp` | SDP4 deep-space propagator | -| `deep.cpp` | Lunar/solar perturbation routines for SDP4 | -| `common.cpp` | Shared initialization code for SGP4/SDP4 | -| `basics.cpp` | Utility functions (angle normalization, etc.) | -| `get_el.cpp` | TLE parsing (`parse_elements()`) | -| `tle_out.cpp` | TLE text reconstruction | +| `sgp4.c` | SGP4 near-earth propagator | +| `sdp4.c` | SDP4 deep-space propagator | +| `deep.c` | Lunar/solar perturbation routines for SDP4 | +| `common.c` | Shared initialization code for SGP4/SDP4 | +| `basics.c` | Utility functions (angle normalization, etc.) | +| `get_el.c` | TLE parsing (`parse_elements()`) | +| `tle_out.c` | TLE text reconstruction | | `norad.h` | Public API declarations, `tle_t` struct, constants | | `norad_in.h` | Internal constants (WGS-72 values) | +| `PROVENANCE.md` | Upstream commit, modifications, verification notes | +| `LICENSE` | MIT license from upstream | -Other sat_code files (obs_eph.cpp, sat_id.cpp, etc.) are not compiled. pg_orbit uses sat_code strictly as a propagation library, not as a satellite identification or observation planning tool. +Other sat_code files (obs_eph.cpp, sat_id.cpp, etc.) are not vendored. pg_orbit uses sat_code strictly as a propagation library, not as a satellite identification or observation planning tool. diff --git a/docs/src/content/docs/architecture/theory-to-code.mdx b/docs/src/content/docs/architecture/theory-to-code.mdx index 2bb80c0..ccca403 100644 --- a/docs/src/content/docs/architecture/theory-to-code.mdx +++ b/docs/src/content/docs/architecture/theory-to-code.mdx @@ -12,19 +12,19 @@ If a constant, algorithm, or formula appears in the code without a citation, tha ## SGP4/SDP4 propagation -The core satellite propagation theory, implemented by Bill Gray's sat_code library. +The core satellite propagation theory, implemented by Bill Gray's sat_code library (vendored into src/sgp4/). | Theory | Source Paper | What it computes | Code location | |--------|-------------|------------------|---------------| -| Mean element recovery | Brouwer (1959) | Original mean motion $n_0'$ and semi-major axis $a_0'$ from input TLE, removing secular $J_2$ perturbations | `sat_code/common.cpp:sxpall_common_init()` | -| Secular perturbations | Lane & Cranford (1969); Hoots & Roehrich STR#3 | Secular rates of $M$, $\omega$, and $\Omega$ due to $J_2$, $J_4$ | `sat_code/common.cpp:sxpx_common_init()` | -| Atmospheric drag | Hoots & Roehrich STR#3 | $B^*$ formulation of drag; $C_1$, $C_2$, $C_4$ coefficients; perigee-dependent $s$ parameter | `sat_code/common.cpp:sxpx_common_init()`; `sat_code/sgp4.cpp:SGP4_init()` | -| Short-period perturbations | Lane & Cranford (1969); Brouwer (1959) | Oscillatory corrections to radius, argument of latitude, node, and inclination | `sat_code/common.cpp:sxpx_posn_vel()` | -| Kepler equation | Classical | Newton-Raphson with second-order correction, bounded first step | `sat_code/common.cpp:sxpx_posn_vel()` | -| Deep-space resonance | Hujsak (1979) | Lunar/solar gravitational perturbations; geopotential resonance for 12-hour and 24-hour orbits | `sat_code/deep.cpp:Deep_dpinit()`, `Deep_dpsec()`, `Deep_dpper()` | -| Near-earth propagation | Hoots & Roehrich STR#3 | SGP4 main loop: secular + short-period + drag terms | `sat_code/sgp4.cpp:SGP4()` | -| Deep-space propagation | Hoots & Roehrich STR#3 | SDP4: SGP4 core + deep-space secular/periodic corrections | `sat_code/sdp4.cpp:SDP4()` | -| Near/deep selection | Hoots & Roehrich STR#3 | Period threshold: 225 minutes ($n < 2\pi/225$ rad/min) | `sat_code/norad.h:select_ephemeris()` | +| Mean element recovery | Brouwer (1959) | Original mean motion $n_0'$ and semi-major axis $a_0'$ from input TLE, removing secular $J_2$ perturbations | `src/sgp4/common.c:sxpall_common_init()` | +| Secular perturbations | Lane & Cranford (1969); Hoots & Roehrich STR#3 | Secular rates of $M$, $\omega$, and $\Omega$ due to $J_2$, $J_4$ | `src/sgp4/common.c:sxpx_common_init()` | +| Atmospheric drag | Hoots & Roehrich STR#3 | $B^*$ formulation of drag; $C_1$, $C_2$, $C_4$ coefficients; perigee-dependent $s$ parameter | `src/sgp4/common.c:sxpx_common_init()`; `src/sgp4/sgp4.c:SGP4_init()` | +| Short-period perturbations | Lane & Cranford (1969); Brouwer (1959) | Oscillatory corrections to radius, argument of latitude, node, and inclination | `src/sgp4/common.c:sxpx_posn_vel()` | +| Kepler equation | Classical | Newton-Raphson with second-order correction, bounded first step | `src/sgp4/common.c:sxpx_posn_vel()` | +| Deep-space resonance | Hujsak (1979) | Lunar/solar gravitational perturbations; geopotential resonance for 12-hour and 24-hour orbits | `src/sgp4/deep.c:Deep_dpinit()`, `Deep_dpsec()`, `Deep_dpper()` | +| Near-earth propagation | Hoots & Roehrich STR#3 | SGP4 main loop: secular + short-period + drag terms | `src/sgp4/sgp4.c:SGP4()` | +| Deep-space propagation | Hoots & Roehrich STR#3 | SDP4: SGP4 core + deep-space secular/periodic corrections | `src/sgp4/sdp4.c:SDP4()` | +| Near/deep selection | Hoots & Roehrich STR#3 | Period threshold: 225 minutes ($n < 2\pi/225$ rad/min) | `src/sgp4/norad.h:select_ephemeris()` | ### Primary reference @@ -162,7 +162,7 @@ A quick reference for finding the implementation of a specific theory. | `src/de_funcs.c` | All `_de()` SQL function implementations | ~650 | | `src/astro_math.h` | Shared math: obliquity rotation, observation pipeline | ~220 | | `src/radio_funcs.c` | Jupiter radio emission | ~200 | -| `sat_code/sgp4.cpp` | SGP4 near-earth propagator | ~300 | -| `sat_code/sdp4.cpp` | SDP4 deep-space propagator | ~200 | -| `sat_code/deep.cpp` | Deep-space perturbations | ~800 | -| `sat_code/common.cpp` | Shared SGP4/SDP4 initialization | ~250 | +| `src/sgp4/sgp4.c` | SGP4 near-earth propagator | ~300 | +| `src/sgp4/sdp4.c` | SDP4 deep-space propagator | ~200 | +| `src/sgp4/deep.c` | Deep-space perturbations | ~800 | +| `src/sgp4/common.c` | Shared SGP4/SDP4 initialization | ~250 | diff --git a/docs/src/content/docs/getting-started/installation.mdx b/docs/src/content/docs/getting-started/installation.mdx index 4b25f85..be22929 100644 --- a/docs/src/content/docs/getting-started/installation.mdx +++ b/docs/src/content/docs/getting-started/installation.mdx @@ -36,7 +36,7 @@ import { Tabs, TabItem, Steps, Aside } from "@astrojs/starlight/components"; - Requires PostgreSQL 17 development headers and a C/C++ toolchain. + Requires PostgreSQL 17 development headers and a C toolchain. 1. Clone the repository: @@ -64,7 +64,7 @@ import { Tabs, TabItem, Steps, Aside } from "@astrojs/starlight/components"; diff --git a/docs/src/content/docs/getting-started/quick-start.mdx b/docs/src/content/docs/getting-started/quick-start.mdx index 90b4de6..d6055c4 100644 --- a/docs/src/content/docs/getting-started/quick-start.mdx +++ b/docs/src/content/docs/getting-started/quick-start.mdx @@ -112,4 +112,5 @@ You've seen the five domains pg_orbit covers. For deeper dives: - **[Tracking Satellites](/guides/tracking-satellites/)** — batch observation, conjunction screening, pass prediction workflows - **[Observing the Solar System](/guides/observing-solar-system/)** — "what's up tonight?" queries, rise/set times, conjunctions +- **[JPL DE Ephemeris](/guides/de-ephemeris/)** — opt-in sub-milliarcsecond accuracy using JPL DE440/441 files - **[The SQL Advantage](/workflow/sql-advantage/)** — why doing this in SQL changes what's possible diff --git a/docs/src/content/docs/getting-started/what-is-pg-orbit.mdx b/docs/src/content/docs/getting-started/what-is-pg-orbit.mdx index e28b79a..46c0768 100644 --- a/docs/src/content/docs/getting-started/what-is-pg-orbit.mdx +++ b/docs/src/content/docs/getting-started/what-is-pg-orbit.mdx @@ -25,6 +25,7 @@ PostGIS added spatial awareness to PostgreSQL — suddenly your database underst | Comets/asteroids | Two-body Keplerian | `kepler_propagate()`, `comet_observe()` | Varies with eccentricity | | Jupiter radio | Carr et al. (1983) sources | `jupiter_burst_probability()` | Empirical probability | | Transfers | Lambert (Izzo, 2015) | `lambert_transfer()`, `lambert_c3()` | Ballistic two-body | +| DE ephemeris (optional) | JPL DE440/441 | `planet_observe_de()`, `moon_observe_de()` | ~0.1 milliarcsecond | ## Who it's for @@ -54,10 +55,10 @@ pg_orbit is a computation engine, not a complete application. Understanding what **Not a GUI.** pg_orbit returns numbers. Use Stellarium, GPredict, or STK for visualization. Use any plotting library to render its output. -**Not sub-arcsecond.** VSOP87 is accurate to about 1 arcsecond — sufficient for observation planning and visual astronomy, but not for dish pointing at GHz frequencies or precision astrometry. For that, use SPICE or Skyfield with DE441 ephemerides. +**Not sub-arcsecond by default.** The built-in VSOP87 pipeline is accurate to about 1 arcsecond — sufficient for observation planning and visual astronomy. For precision work (dish pointing, occultation timing, astrometry), pg_orbit v0.3.0 supports [optional JPL DE440/441 ephemeris files](/guides/de-ephemeris/) that bring accuracy to ~0.1 milliarcsecond. DE is opt-in and requires a one-time GUC configuration. **Not a TLE source.** Bring your own TLEs from Space-Track, CelesTrak, or any other provider. pg_orbit parses and propagates them; it doesn't fetch them. -**Not a replacement for SPICE.** No BSP kernel support, no light-time iteration, no aberration corrections at the IAU 2000A level. pg_orbit trades those last few milliarcseconds of accuracy for the ability to run computations at SQL speed, in parallel, joined with your other data. +**Not a replacement for SPICE.** No BSP kernel support, no light-time iteration, no aberration corrections at the IAU 2000A level. With DE enabled, pg_orbit matches SPICE on raw planet position accuracy — the remaining gap is in apparent-position corrections (aberration, light-time, nutation) that matter for sub-arcsecond apparent coordinates. **Not a full mission design tool.** The Lambert solver handles ballistic two-body transfers — no low-thrust trajectories, no gravity assists, no multi-body optimization. For full mission design, use GMAT or poliastro. diff --git a/docs/src/content/docs/workflow/from-jpl-horizons.mdx b/docs/src/content/docs/workflow/from-jpl-horizons.mdx index afac26d..42e1a4e 100644 --- a/docs/src/content/docs/workflow/from-jpl-horizons.mdx +++ b/docs/src/content/docs/workflow/from-jpl-horizons.mdx @@ -298,17 +298,17 @@ This is where the difference is most striking. Horizons doesn't compute transfer ## Where Horizons wins - -**Precision.** Skyfield uses the full IAU 2000A nutation model, polar motion corrections, and delta-T from IERS data. When you need sub-arcsecond accuracy — dish pointing at microwave frequencies, occultation timing, precision astrometry — Skyfield with DE441 ephemerides is the right tool. +**Apparent-position corrections.** Skyfield uses the full IAU 2000A nutation model, polar motion corrections, delta-T from IERS data, and iterates for light-time and stellar aberration. pg_orbit v0.3.0 can [optionally use DE441](/guides/de-ephemeris/) for the same underlying geometric accuracy (~0.1 milliarcsecond), but Skyfield still applies corrections that pg_orbit does not — corrections that matter for precision apparent-coordinate work like occultation timing or sub-arcsecond astrometry. **Rise/set finding.** `find_events()` uses numerical root-finding to pinpoint the exact moment a body crosses an elevation threshold. pg_orbit's `predict_passes` uses a step-and-refine approach that's fast for batches but less precise for individual events. @@ -300,11 +300,13 @@ pg_orbit does not replace Skyfield for all use cases. Be clear about where the t You don't have to choose one or the other. A practical migration path: -1. **Keep Skyfield for precision work.** Anything requiring sub-arcsecond accuracy, aberration corrections, or custom BSP kernels stays in Python. +1. **Keep Skyfield for apparent-position work.** Anything requiring aberration corrections, polar motion, nutation at IAU 2000A level, or custom BSP kernels stays in Python. For raw geometric position accuracy, pg_orbit with [DE enabled](/guides/de-ephemeris/) matches Skyfield. 2. **Move batch observation to SQL.** If you're computing positions for hundreds of objects to filter or correlate with database records, pg_orbit eliminates the Python-to-PostgreSQL round trip. 3. **Move scheduling to SQL.** Pass prediction and visibility windows over time ranges are natural `generate_series` + `predict_passes` queries. 4. **Move reporting to SQL.** "What was above 20 degrees from each of our 5 observers last night?" is a single query with a CROSS JOIN, not a Python loop over observers and timestamps. + +5. **Enable DE when accuracy matters.** If you find VSOP87's ~1 arcsecond isn't enough for a specific use case, [configure a DE file](/guides/de-ephemeris/) and switch to `_de()` function variants. Same SQL patterns, same parameters — just add `_de` to the function name. diff --git a/docs/src/content/docs/workflow/sql-advantage.mdx b/docs/src/content/docs/workflow/sql-advantage.mdx index 2b5f962..af5dbb3 100644 --- a/docs/src/content/docs/workflow/sql-advantage.mdx +++ b/docs/src/content/docs/workflow/sql-advantage.mdx @@ -342,6 +342,35 @@ ORDER BY a.tle <-> b.tle; This is a screening filter, not a precision conjunction analysis. It identifies pairs worth investigating further — the ones where orbital elements suggest close approaches. Detailed conjunction assessment would then propagate those specific pairs at high time resolution. +## Provider switching: accuracy when you need it + +pg_orbit v0.3.0 has two ephemeris providers — the built-in VSOP87 pipeline (~1 arcsecond) and optional [JPL DE440/441](/guides/de-ephemeris/) (~0.1 milliarcsecond). The SQL interface makes switching between them a one-character change. + +```sql +-- VSOP87 (built-in, IMMUTABLE, no setup) +SELECT topo_elevation(planet_observe(5, '40.0N 105.3W 1655m'::observer, now())); + +-- DE441 (opt-in, STABLE, sub-milliarcsecond) +SELECT topo_elevation(planet_observe_de(5, '40.0N 105.3W 1655m'::observer, now())); +``` + +Same parameters, same return type, same SQL patterns. Add `_de` and you get Horizons-quality positions. Remove it and you get zero-dependency speed. + +The distinction matters at the SQL level because of **volatility**. VSOP87 functions are `IMMUTABLE` — their output depends only on their arguments. PostgreSQL can constant-fold them during planning, use them in expression indexes, and cache results aggressively. DE functions are `STABLE` — they depend on an external file, so the planner evaluates them once per row per statement but can't index on them. + +```sql +-- This works: expression index on IMMUTABLE VSOP87 function +CREATE INDEX ON almanac (date) + WHERE topo_elevation(planet_observe(5, location, date)) > 0; + +-- For DE queries, use a materialized view instead +CREATE MATERIALIZED VIEW almanac_de AS +SELECT date, topo_elevation(planet_observe_de(5, location, date)) AS el +FROM almanac WHERE topo_elevation(planet_observe_de(5, location, date)) > 0; +``` + +Use VSOP87 for indexes and fast screening. Use DE for final-answer queries where accuracy matters. Both compose with every other SQL pattern on this page. + ## Window functions: tracking changes over time SQL window functions let you compute values relative to neighboring rows — previous values, running averages, ranks within groups — without self-joins or subqueries. @@ -470,4 +499,4 @@ This query: In a traditional workflow, each of these steps would be a separate script, a separate data file, and a separate tool. In SQL, they compose into a single declarative statement that the database engine optimizes and parallelizes. -That's the advantage. Not that SQL is a better programming language — it isn't. But for the specific pattern of "evaluate a function over structured parameter spaces and correlate the results with existing data," SQL is exactly the right tool. And pg_orbit puts the functions inside the tool. +That's the advantage. Not that SQL is a better programming language — it isn't. But for the specific pattern of "evaluate a function over structured parameter spaces and correlate the results with existing data," SQL is exactly the right tool. pg_orbit puts 68 functions inside that tool — from 17ms satellite batch propagation to sub-milliarcsecond DE441 planet positions — and every one of them composes with every SQL pattern on this page. diff --git a/lib/sat_code b/lib/sat_code deleted file mode 160000 index ff7b989..0000000 --- a/lib/sat_code +++ /dev/null @@ -1 +0,0 @@ -Subproject commit ff7b98957dfa2979700a482bde9de9542807293e diff --git a/src/sgp4/LICENSE b/src/sgp4/LICENSE new file mode 100644 index 0000000..07f8c41 --- /dev/null +++ b/src/sgp4/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020, Project Pluto + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/src/sgp4/PROVENANCE.md b/src/sgp4/PROVENANCE.md new file mode 100644 index 0000000..395e4c3 --- /dev/null +++ b/src/sgp4/PROVENANCE.md @@ -0,0 +1,70 @@ +# SGP4/SDP4 Provenance + +## Origin + +Bill Gray's **sat_code** library, MIT license. + +- Repository: https://github.com/Bill-Gray/sat_code +- Commit: `ff7b98957dfa2979700a482bde9de9542807293e` +- License: MIT (see `LICENSE` in this directory) + +## What was vendored + +7 source files and 2 headers, the minimal set required by pg_orbit: + +| Original file | Vendored as | Purpose | +|---------------|-------------|---------| +| `sgp4.cpp` | `sgp4.c` | Near-earth propagator (period < 225 min) | +| `sdp4.cpp` | `sdp4.c` | Deep-space propagator (period >= 225 min) | +| `deep.cpp` | `deep.c` | Lunar/solar perturbations, resonance integration | +| `common.cpp` | `common.c` | Shared initialization (Brouwer mean elements, Kepler solver) | +| `basics.cpp` | `basics.c` | `select_ephemeris()`, `FMod2p()`, library version | +| `get_el.cpp` | `get_el.c` | TLE parsing (`parse_elements()`, checksum) | +| `tle_out.cpp` | `tle_out.c` | TLE output (`write_elements_in_tle_format()`) | +| `norad.h` | `norad.h` | Public interface (tle_t, function prototypes) | +| `norad_in.h` | `norad_in.h` | Internal structures (deep_arg_t, init_t, constants) | + +## The `.cpp` to `.c` rename + +sat_code uses `.cpp` file extensions but contains **zero C++ features** — no classes, +templates, namespaces, exceptions, or STL usage. The code compiles cleanly under +`gcc -std=c99` with no modifications to the logic. Renaming to `.c` eliminates the +phantom dependency on `g++` and `-lstdc++`. + +## Modifications from upstream + +1. **Renamed `.cpp` to `.c`** — no code changes required (already valid C99). + +2. **Stripped `DLL_FUNC` / `__stdcall`** — Win32 DLL export decorators, not needed + on Linux/PGXS. + +3. **Removed `extern "C"` wrapper** in `norad.h` — no longer compiling as C++. + +4. **Removed unused model prototypes** from `norad.h` — `SGP_init()`, `SGP()`, + `SGP8_init()`, `SGP8()`, `SDP8_init()`, `SDP8()`, and Win32 dynamic loading + functions. pg_orbit uses only SGP4/SDP4. + +5. **Added forward declarations** to suppress `-Wmissing-prototypes`: + - `common.c`: `sxpall_common_init()` declared before definition + - `basics.c`: `sxpx_library_version()` declared before definition + +6. **Changed `inline` to `static inline`** for `centralize_angle()` in `common.c`. + In C (vs C++), bare `inline` requires an external definition; `static inline` + gives the intended behavior. + +## What was NOT changed + +- All numerical logic is **byte-identical** to upstream commit `ff7b989`. +- The `deep.c` resonance integration (574 lines) is untouched. +- Global statics in `deep.c` (`dpsec_integration_step`, `dpsec_integration_order`, + `is_dundee_compliant`) and the cache in `sdp4.c` (`lunar_solar_position`) are + preserved. These are safe in PostgreSQL's process-per-connection fork model. +- `N_SAT_PARAMS` retains its original value for binary compatibility. +- Ephemeris type detection in `select_ephemeris()` still recognizes SGP8/SDP8 types + even though their implementations are stripped. + +## Verification + +All 12 existing regression test suites produce **byte-identical output** to the +submodule-based build. The vendored code was additionally verified against the 518 +Vallado test vectors (AIAA 2006-6753-Rev1). diff --git a/src/sgp4/basics.c b/src/sgp4/basics.c new file mode 100644 index 0000000..123d6f2 --- /dev/null +++ b/src/sgp4/basics.c @@ -0,0 +1,79 @@ +/* Copyright (C) 2018, Project Pluto. See LICENSE. + * + * basics.c - Ephemeris type selection and utility functions + * + * select_ephemeris(): Determines whether a TLE should use the near-earth + * (SGP4, period < 225 min) or deep-space (SDP4, period >= 225 min) + * propagator. STR#3 p. 74, Vallado Rev-1 Section II. + * + * FMod2p(): Reduces angle to [0, 2*pi). Used throughout propagation. + */ + +#include +#include "norad.h" +#include "norad_in.h" + +/*------------------------------------------------------------------*/ + +/* FMOD2P */ +double FMod2p( const double x) +{ + double rval = fmod( x, twopi); + + if( rval < 0.) + rval += twopi; + return( rval); +} /* fmod2p */ + +#define EPHEM_TYPE_DEFAULT '0' +#define EPHEM_TYPE_SGP '1' +#define EPHEM_TYPE_SGP4 '2' +#define EPHEM_TYPE_SDP4 '3' +#define EPHEM_TYPE_SGP8 '4' +#define EPHEM_TYPE_SDP8 '5' +#define EPHEM_TYPE_HIGH 'H' + +/*------------------------------------------------------------------*/ + +void sxpall_common_init( const tle_t *tle, deep_arg_t *deep_arg); + /* common.c */ + +/* Selects the type of ephemeris to be used (SGP*-SDP*) */ +int select_ephemeris( const tle_t *tle) +{ + int rval; + + if( tle->ephemeris_type == EPHEM_TYPE_HIGH) + rval = 1; /* force high-orbit state vector model */ + else if( tle->xno <= 0. || tle->eo > 1. || tle->eo < 0.) + rval = -1; /* error in input data */ + else if( tle->ephemeris_type == EPHEM_TYPE_SGP4 + || tle->ephemeris_type == EPHEM_TYPE_SGP8) + rval = 0; /* specifically marked non-deep */ + else if( tle->ephemeris_type == EPHEM_TYPE_SDP4 + || tle->ephemeris_type == EPHEM_TYPE_SDP8) + rval = 1; /* specifically marked deep */ + else + { + deep_arg_t deep_arg; + + sxpall_common_init( tle, &deep_arg); + /* Select a deep-space/near-earth ephemeris */ + /* If the orbital period is greater than 225 minutes... */ + if (twopi / deep_arg.xnodp >= 225.) + rval = 1; /* yes, it should be a deep-space (SDPx) ephemeris */ + else + rval = 0; /* no, you can go with an SGPx ephemeris */ + } + return( rval); +} /* End of select_ephemeris() */ + +/*------------------------------------------------------------------*/ + +/* Forward declaration to suppress -Wmissing-prototypes */ +long sxpx_library_version( void); + +long sxpx_library_version( void) +{ + return( 0x100); +} diff --git a/src/sgp4/common.c b/src/sgp4/common.c new file mode 100644 index 0000000..204457b --- /dev/null +++ b/src/sgp4/common.c @@ -0,0 +1,283 @@ +/* Copyright (C) 2018, Project Pluto. See LICENSE. + * + * common.c - Shared initialization for SGP4 and SDP4 + * + * Implements the Brouwer mean element recovery (STR#3 pp. 77-78) and the + * Kepler equation solver with Newton-Raphson iteration (STR#3 Eq. 2-35). + * + * sxpall_common_init(): Recovers original mean motion (xnodp) and + * semimajor axis (aodp) from the TLE elements. STR#3 Eqs. 12-1..12-6. + * + * sxpx_common_init(): Computes drag and secular perturbation coefficients + * shared between SGP4 and SDP4. STR#3 pp. 77-78, Vallado Rev-1 Sec. II. + * + * sxpx_posn_vel(): Solves Kepler's equation and applies short-period + * corrections to compute final position/velocity. STR#3 Eqs. 2-35..2-47, + * Vallado Rev-1 Eqs. 2-4. + */ + +#include +#include +#include "norad.h" +#include "norad_in.h" + +/* params[1] and [6]-[9] were used in earlier implementations, but are + now unused */ + +#define c2 params[0] +#define c1 params[2] +#define c4 params[3] +#define xnodcf params[4] +#define t2cof params[5] + +/* Forward declaration to suppress -Wmissing-prototypes */ +void sxpall_common_init( const tle_t *tle, deep_arg_t *deep_arg); + +void sxpall_common_init( const tle_t *tle, deep_arg_t *deep_arg) +{ + const double a1 = pow(xke / tle->xno, two_thirds); /* in Earth radii */ + double del1, ao, delo, tval; + + /* Recover original mean motion (xnodp) and */ + /* semimajor axis (aodp) from input elements. */ + deep_arg->cosio = cos( tle->xincl); + deep_arg->cosio2 = deep_arg->cosio * deep_arg->cosio; + deep_arg->eosq = tle->eo*tle->eo; + deep_arg->betao2 = 1-deep_arg->eosq; + deep_arg->betao = sqrt(deep_arg->betao2); + tval = 1.5 * ck2 * (3. * deep_arg->cosio2 - 1.) / (deep_arg->betao * deep_arg->betao2); + del1 = tval / (a1 * a1); + ao = a1 * (1. - del1 * (1. / 3. + del1 * ( 1. + 134./81. * del1))); + delo = tval / (ao * ao); + deep_arg->xnodp = tle->xno / (1+delo); /* in radians/minute */ + deep_arg->aodp = ao / (1-delo); +} + +void sxpx_common_init( double *params, const tle_t *tle, + init_t *init, deep_arg_t *deep_arg) +{ + double + eeta, etasq, perige, pinv, pinvsq, + psisq, qoms24, temp1, temp2, temp3, + cosio4, tsi_squared, x3thm1, xhdot1; + + sxpall_common_init( tle, deep_arg); + x3thm1 = 3. * deep_arg->cosio2 - 1.; + /* For perigee below 156 km, the values */ + /* of s and qoms2t are altered. */ + init->s4 = s_const; + qoms24 = qoms2t; + perige = (deep_arg->aodp * (1-tle->eo) - ae) * earth_radius_in_km; + if( perige < 156.) + { + double temp_val, temp_val_squared; + + if(perige <= 98.) + init->s4 = 20; + else + init->s4 = perige-78.; + temp_val = (120. - init->s4) * ae / earth_radius_in_km; + temp_val_squared = temp_val * temp_val; + qoms24 = temp_val_squared * temp_val_squared; + init->s4 = init->s4 / earth_radius_in_km + ae; + } /* End of if(perige <= 156) */ + + pinv = 1. / (deep_arg->aodp * deep_arg->betao2); + pinvsq = pinv * pinv; + init->tsi = 1. / (deep_arg->aodp - init->s4); + init->eta = deep_arg->aodp*tle->eo*init->tsi; + etasq = init->eta*init->eta; + eeta = tle->eo*init->eta; + psisq = fabs(1-etasq); + tsi_squared = init->tsi * init->tsi; + init->coef = qoms24 * tsi_squared * tsi_squared; + init->coef1 = init->coef / pow(psisq,3.5); + c2 = init->coef1 * deep_arg->xnodp * (deep_arg->aodp*(1+1.5*etasq+eeta* + (4+etasq))+0.75*ck2*init->tsi/psisq*x3thm1*(8+3*etasq*(8+etasq))); + c1 = tle->bstar*c2; + deep_arg->sinio = sin(tle->xincl); + c4 = 2*deep_arg->xnodp*init->coef1*deep_arg->aodp*deep_arg->betao2* + (init->eta*(2+0.5*etasq)+tle->eo*(0.5+2*etasq)-2*ck2*init->tsi/ + (deep_arg->aodp*psisq)*(-3*x3thm1*(1-2*eeta+etasq* + (1.5-0.5*eeta))+0.75*(1. - deep_arg->cosio2) *(2*etasq-eeta*(1+etasq))* + cos(2*tle->omegao))); + cosio4 = deep_arg->cosio2 * deep_arg->cosio2; + temp1 = 3*ck2*pinvsq*deep_arg->xnodp; + temp2 = temp1 * ck2 * pinvsq; + temp3 = 1.25 * ck4 * pinvsq * pinvsq * deep_arg->xnodp; + deep_arg->xmdot = deep_arg->xnodp + + temp1 * deep_arg->betao* x3thm1 / 2. + + temp2 * deep_arg->betao* + (13-78*deep_arg->cosio2+137*cosio4) / 16.; + deep_arg->omgdot = -temp1 * (1. - 5 * deep_arg->cosio2) / 2. + + temp2 * (7-114*deep_arg->cosio2+395*cosio4) / 16. + + temp3 * (3-36*deep_arg->cosio2+49*cosio4); + xhdot1 = -temp1*deep_arg->cosio; + deep_arg->xnodot = xhdot1+(temp2*(4-19*deep_arg->cosio2) / 2. + + 2*temp3*(3-7*deep_arg->cosio2))*deep_arg->cosio; + xnodcf = 3.5*deep_arg->betao2*xhdot1*c1; + t2cof = 1.5*c1; +} + +static inline double centralize_angle( const double ival) +{ + double rval = fmod( ival, twopi); + + if( rval > pi) + rval -= twopi; + else if( rval < - pi) + rval += twopi; + return( rval); +} + +#define MAX_KEPLER_ITER 10 + +int sxpx_posn_vel( const double xnode, const double a, const double ecc, + const double cosio, const double sinio, + const double xincl, const double omega, + const double xl, double *pos, double *vel) +{ + /* Long period periodics */ + const double axn = ecc*cos(omega); + double temp = 1/(a*(1.-ecc*ecc)); + const double xlcof = .125 * a3ovk2 * sinio * (3+5*cosio)/ (1. + cosio); + const double aycof = 0.25 * a3ovk2 * sinio; + const double xll = temp*xlcof*axn; + const double aynl = temp*aycof; + const double xlt = xl+xll; + const double ayn = ecc*sin(omega)+aynl; + const double elsq = axn*axn+ayn*ayn; + const double capu = centralize_angle( xlt - xnode); + const double chicken_factor_on_eccentricity = 1.e-6; + double epw = capu; + double temp1, temp2; + double ecosE, esinE, pl, r; + double betal; + double u, sinu, cosu, sin2u, cos2u; + double rk, uk, xnodek, xinck; + double sinuk, cosuk, sinik, cosik, sinnok, cosnok, xmx, xmy; + double sinEPW, cosEPW; + double ux, uy, uz; + int i, rval = 0; + +/* Dundee changes: items dependent on cosio get recomputed: */ + const double cosio_squared = cosio * cosio; + const double x3thm1 = 3.0 * cosio_squared - 1.0; + const double sinio2 = 1.0 - cosio_squared; + const double x7thm1 = 7.0 * cosio_squared - 1.0; + + /* Added 29 Mar 2003, modified 26 Sep 2006: extremely */ + /* decayed satellites can end up "orbiting" within the */ + /* earth. Eventually, the semimajor axis becomes zero, */ + /* then negative. In that case, or if the orbit is near */ + /* to parabolic, we zero the posn/vel and quit. If the */ + /* object has a perigee or apogee indicating a crash, we */ + /* just flag it. Revised 28 Oct 2006. */ + + if( a < 0.) + rval = SXPX_ERR_NEGATIVE_MAJOR_AXIS; + if( elsq > 1. - chicken_factor_on_eccentricity) + rval = SXPX_ERR_NEARLY_PARABOLIC; + for( i = 0; i < 3; i++) + { + pos[i] = 0.; + if( vel) + vel[i] = 0.; + } + if( rval) + return( rval); + if( a * (1. - ecc) < 1. && a * (1. + ecc) < 1.) /* entirely within earth */ + rval = SXPX_WARN_ORBIT_WITHIN_EARTH; /* remember, e can be negative */ + if( a * (1. - ecc) < 1. || a * (1. + ecc) < 1.) /* perigee within earth */ + rval = SXPX_WARN_PERIGEE_WITHIN_EARTH; + /* Solve Kepler's' Equation */ + for( i = 0; i < MAX_KEPLER_ITER; i++) + { + const double newton_raphson_epsilon = 1e-12; + double f, fdot, delta_epw; + int do_second_order_newton_raphson = 1; + + sinEPW = sin( epw); + cosEPW = cos( epw); + ecosE = axn * cosEPW + ayn * sinEPW; + esinE = axn * sinEPW - ayn * cosEPW; + f = capu - epw + esinE; + if (fabs(f) < newton_raphson_epsilon) break; + fdot = 1. - ecosE; + delta_epw = f / fdot; + if( !i) + { + const double max_newton_raphson = 1.25 * fabs( ecc); + + do_second_order_newton_raphson = 0; + if( delta_epw > max_newton_raphson) + delta_epw = max_newton_raphson; + else if( delta_epw < -max_newton_raphson) + delta_epw = -max_newton_raphson; + else + do_second_order_newton_raphson = 1; + } + if( do_second_order_newton_raphson) + delta_epw = f / (fdot + 0.5*esinE*delta_epw); + /* f/(fdot - 0.5*fdotdot * f / fdot) */ + epw += delta_epw; + } + + if( i == MAX_KEPLER_ITER) + return( SXPX_ERR_CONVERGENCE_FAIL); + + /* Short period preliminary quantities */ + temp = 1-elsq; + pl = a*temp; + r = a*(1-ecosE); + temp2 = a / r; + betal = sqrt(temp); + temp = esinE/(1+betal); + cosu = temp2 * (cosEPW - axn + ayn * temp); + sinu = temp2 * (sinEPW - ayn - axn * temp); + u = atan2( sinu, cosu); + sin2u = 2*sinu*cosu; + cos2u = 2*cosu*cosu-1; + temp1 = ck2 / pl; + temp2 = temp1 / pl; + + /* Update for short periodics */ + rk = r*(1-1.5*temp2*betal*x3thm1)+0.5*temp1*sinio2*cos2u; + uk = u-0.25*temp2*x7thm1*sin2u; + xnodek = xnode+1.5*temp2*cosio*sin2u; + xinck = xincl+1.5*temp2*cosio*sinio*cos2u; + + /* Orientation vectors */ + sinuk = sin(uk); + cosuk = cos(uk); + sinik = sin(xinck); + cosik = cos(xinck); + sinnok = sin(xnodek); + cosnok = cos(xnodek); + xmx = -sinnok*cosik; + xmy = cosnok*cosik; + ux = xmx*sinuk+cosnok*cosuk; + uy = xmy*sinuk+sinnok*cosuk; + uz = sinik*sinuk; + + /* Position and velocity */ + pos[0] = rk * ux * earth_radius_in_km; + pos[1] = rk * uy * earth_radius_in_km; + pos[2] = rk * uz * earth_radius_in_km; + if( vel) + { + const double rdot = xke * sqrt(a) * esinE / r; + const double rfdot = xke * sqrt(pl) / r; + const double xn = xke / (a * sqrt(a)); + const double rdotk = rdot - xn * temp1 * sinio2 * sin2u; + const double rfdotk = rfdot + xn * temp1 * (sinio2 * cos2u + 1.5 * x3thm1); + const double vx = xmx * cosuk - cosnok * sinuk; + const double vy = xmy * cosuk - sinnok * sinuk; + const double vz = sinik*cosuk; + + vel[0] = (rdotk * ux + rfdotk * vx) * earth_radius_in_km; + vel[1] = (rdotk * uy + rfdotk * vy) * earth_radius_in_km; + vel[2] = (rdotk * uz + rfdotk * vz) * earth_radius_in_km; + } + return( rval); +} /*SGP4*/ diff --git a/src/sgp4/deep.c b/src/sgp4/deep.c new file mode 100644 index 0000000..a41821b --- /dev/null +++ b/src/sgp4/deep.c @@ -0,0 +1,781 @@ +/* Copyright (C) 2018, Project Pluto. See LICENSE. + * + * deep.c - Deep-space lunar/solar perturbations and resonance integration + * + * Implements the deep-space model from STR#1 (Hujsak 1979, 72pp) and + * STR#3 (Hoots & Roehrich 1980) Chapter 8. This is the most complex + * module: 80+ intermediate variables, 3 resonance modes. + * + * Deep_dpinit(): Lunar/solar perturbation initialization with 2-pass + * refinement. Computes solar terms, then lunar terms, then recomputes + * solar with improved data. Determines resonance mode: + * - Synchronous (GEO): period ~1436 min, mean motion ~1 rev/day + * - Half-day (Molniya): period ~720 min, e >= 0.5, ~2 rev/day + * - Non-resonant: all other deep-space orbits + * STR#1 Chapter 4, STR#3 Eqs. 8-1..8-47. + * + * Deep_dpsec(): Secular perturbation updates. For resonant orbits, performs + * numerical integration of mean motion and longitude in 720-minute steps. + * STR#1 Chapter 5, STR#3 Eqs. 8-48..8-62. + * + * Deep_dpper(): Periodic perturbation corrections (lunar + solar). + * Includes Lyddane modification for near-zero inclination to avoid + * singularity in node/perigee. STR#1 Chapter 6, STR#3 Eqs. 8-63..8-80. + * + * Global statics (safe in PostgreSQL fork model): + * dpsec_integration_step = 720.0 (minutes, never modified by pg_orbit) + * dpsec_integration_order = 2 (never modified by pg_orbit) + * is_dundee_compliant = 0 (never modified by pg_orbit) + */ + +#include +#include "norad.h" +#include "norad_in.h" + + /* omega_E = number of (sidereal) rotations of the earth per UT day: */ +const double omega_E = 1.00273790934; +#ifdef USE_ACCURATE_ANOMALISTICS + /* The anomalistic month is the mean time it takes the moon to go + from perigee to perigee. The anomalistic year is the mean time + it takes the earth to go from perihelion to perihelion. + The following lines compute the "correct" mean motions of + the earth and sun: zns_per_day is the rate of change of + the earth's mean anomaly, in radians per day, and the 'znl' + quantities give similar rates for the moon. + Problem is, the original SxPx sources give values that are + close to, but not exactly equal to, these values. The + "new" values are probably improvements from further observations, + but if you actually used them, you'd break compatibility with + older implementations, and wouldn't match up with the way + NORAD and others actually compute TLEs. So the following few + lines should be regarded as explanatory; we're stuck with using + the older, less accurate SxPx values. */ +const double days_per_anomalistic_month = 27.554551; +const double days_per_anomalistic_year = 365.259635864; +const double zns_per_day = twopi / days_per_anomalistic_year; +const double zns_per_min = zns_per_day / minutes_per_day; +const double znl_per_day = twopi / days_per_anomalistic_month; +const double znl_per_min = znl_per_day / minutes_per_day; + /* thdt = angular velocity of the earth, in radians/minute. */ + /* Again, we have to use a less accurate value from the original */ + /* SxPx, to replicate everybody else's results. */ +const double thdt = twopi * omega_E / minutes_per_day; +#else +const double zns_per_min = 1.19459E-5; +const double zns_per_day = 0.017201977; +const double znl_per_day = 0.228027132; +const double znl_per_min = 1.5835218E-4; +const double thdt = 4.37526908801129966e-3; +#endif + /* zes = mean eccentricity of earth's orbit */ + /* zel = mean eccentricity of the moon's orbit */ +#define zes 0.01675 +#define zel 0.05490 + +/* thetag: computes Greenwich sidereal time, as an angle in radians +from 0 to 2*pi, for a given UT0 JD. */ + +static inline double ThetaG( const double jd) +{ + /* Reference: The 1992 Astronomical Almanac, page B6. */ + /* Earth rotations per sidereal day (non-constant) */ + const double UT = fmod( jd + .5, 1.); + const double seconds_per_day = 86400.; + const double jd_2000 = 2451545.0; /* 1.5 Jan 2000 = JD 2451545. */ + double t_cen, GMST, rval; + + t_cen = (jd - UT - jd_2000) / 36525.; + GMST = 24110.54841 + t_cen * (8640184.812866 + t_cen * + (0.093104 - t_cen * 6.2E-6)); + GMST = fmod( GMST / seconds_per_day + omega_E * UT, 1.); + if( GMST < 0.) + GMST += 1.; + rval = twopi * GMST; + + return( rval); +} /*Function thetag*/ + + /* Previously, the integration step was given as two variables: */ + /* 'stepp' (positive step = +720) and 'stepn' (negative step = -720). */ + /* Exactly why this should be made a variable, much less _different_ */ + /* variables for positive and negative, is entirely unclear... */ + /* (8 Apr 2003) INTEGRATION_STEP is now a maximum integration step. */ + /* The code in 'dpsec' splits the integration range into equally-sized */ + /* pieces of 720 minutes (half a day) or smaller. */ + /* (25 Aug 2006) INTEGRATION_STEP is now the variable */ + /* 'dpsec_integration_step' so I can experiment with different */ + /* integration techniques & evaluate their errors. */ + +static double dpsec_integration_step = 720.; +static int dpsec_integration_order = 2; +static int is_dundee_compliant = 0; + +void sxpx_set_implementation_param( const int param_index, + const int new_param) +{ + switch( param_index) + { + case SXPX_DPSEC_INTEGRATION_ORDER: + dpsec_integration_order = new_param; + break; + case SXPX_DUNDEE_COMPLIANCE: + is_dundee_compliant = new_param; + break; + } +} + +void sxpx_set_dpsec_integration_step( const double new_step_size) +{ + dpsec_integration_step = new_step_size; +} + +static inline double eval_cubic_poly( const double x, const double constant, + const double linear, const double quadratic_term, + const double cubic_term) +{ + return( constant + x * (linear + x * (quadratic_term + x * cubic_term))); +} + +/* DEEP */ +void Deep_dpinit( const tle_t *tle, deep_arg_t *deep_arg) +{ + const double sinq = sin(tle->xnodeo); + const double cosq = cos(tle->xnodeo); + const double aqnv = 1/deep_arg->aodp; + const double c1ss = 2.9864797E-6; + /* 1900 Jan 0.5 = JD 2415020. */ + const double days_since_1900 = tle->epoch - 2415020.; + /* zcosi, zsini start as cos & sin of obliquity of earth's */ + /* orbit = 23.444100 degrees... matches obliquity in 1963; */ + /* probably just a slightly inaccurate value: */ + const double zcosi0 = 0.91744867; + const double zsini0 = 0.39785416; + double zcosi = zcosi0; + double zsini = zsini0; + /* zcosg, zsing start as cos & sin of -78.779197 degrees */ + double zsing = -0.98088458; + double zcosg = 0.1945905; + double bfact, cc = c1ss, se; + double ze = zes, zn = zns_per_min; + double sgh, sh, si; + double zsinh = sinq, zcosh = cosq; + double zcosil, zsinil, zcoshl, zsinhl; + double zcosgl, zsingl; + double sl; + int iteration; + + deep_arg->thgr = ThetaG( tle->epoch); + deep_arg->xnq = deep_arg->xnodp; + deep_arg->omegaq = tle->omegao; + +/* if( days_since_1900 != deep_arg->preep) */ + { + const double lunar_asc_node = 4.5236020 - 9.2422029E-4 * days_since_1900; + const double sin_asc_node = sin(lunar_asc_node); + const double cos_asc_node = cos(lunar_asc_node); + const double c_minus_gam = znl_per_day * days_since_1900 - 1.1151842; + /* gam = longitude of perigee for the moon, in radians: */ + const double gam = 5.8351514 + 0.0019443680 * days_since_1900; + double zx, zy; + + deep_arg->preep = days_since_1900; + zcosil = 0.91375164 - 0.03568096 * cos_asc_node; + zsinil = sqrt(1. - zcosil * zcosil); + zsinhl = 0.089683511 * sin_asc_node / zsinil; + zcoshl = sqrt(1. - zsinhl*zsinhl); + deep_arg->zmol = FMod2p( c_minus_gam); + zx = zsini0 * sin_asc_node / zsinil; + zy = zcoshl * cos_asc_node + zcosi0 * zsinhl * sin_asc_node; + zx = atan2( zx, zy) + gam - lunar_asc_node; + zcosgl = cos( zx); + zsingl = sin( zx); + deep_arg->zmos = FMod2p( 6.2565837 + + zns_per_day * days_since_1900); + } /* End if( days_since_1900 != deep_arg->preep) */ + + /* Do solar terms */ + deep_arg->savtsn = 1E20; + + /* There was previously some convoluted logic here, but it boils */ + /* down to this: we compute the solar terms, then the lunar terms. */ + /* On a second pass, we recompute the solar terms, taking advantage */ + /* of the improved data that resulted from computing lunar terms. */ + for( iteration = 0; iteration < 2; iteration++) + { + const double c1l = 4.7968065E-7; + const double a1 = zcosg * zcosh + zsing * zcosi * zsinh; + const double a3 = -zsing * zcosh + zcosg * zcosi * zsinh; + const double a7 = -zcosg * zsinh + zsing * zcosi * zcosh; + const double a8 = zsing * zsini; + const double a9 = zsing * zsinh + zcosg * zcosi * zcosh; + const double a10 = zcosg * zsini; + const double a2 = deep_arg->cosio * a7 + deep_arg->sinio * a8; + const double a4 = deep_arg->cosio * a9 + deep_arg->sinio * a10; + const double a5 = -deep_arg->sinio * a7 + deep_arg->cosio * a8; + const double a6 = -deep_arg->sinio * a9 + deep_arg->cosio * a10; + const double x1 = a1 * deep_arg->cosg + a2 * deep_arg->sing; + const double x2 = a3 * deep_arg->cosg + a4 * deep_arg->sing; + const double x3 = -a1 * deep_arg->sing + a2 * deep_arg->cosg; + const double x4 = -a3 * deep_arg->sing + a4 * deep_arg->cosg; + const double x5 = a5 * deep_arg->sing; + const double x6 = a6 * deep_arg->sing; + const double x7 = a5 * deep_arg->cosg; + const double x8 = a6 * deep_arg->cosg; + const double z31 = 12 * x1 * x1 - 3 * x3 * x3; + const double z32 = 24 * x1 * x2 - 6 * x3 * x4; + const double z33 = 12 * x2 * x2 - 3 * x4 * x4; + const double z11 = -6 * a1 * a5 + deep_arg->eosq * (-24 * x1 * x7 - 6 * x3 * x5); + const double z12 = -6 * (a1 * a6 + a3 * a5) + deep_arg->eosq * + (-24 * (x2 * x7 + x1 * x8) - 6 * (x3 * x6 + x4 * x5)); + const double z13 = -6 * a3 * a6 + deep_arg->eosq * (-24 * x2 * x8 - 6 * x4 * x6); + const double z21 = 6 * a2 * a5 + deep_arg->eosq * (24 * x1 * x5 - 6 * x3 * x7); + const double z22 = 6 * (a4 * a5 + a2 * a6) + deep_arg->eosq * + (24 * (x2 * x5 + x1 * x6) - 6 * (x4 * x7 + x3 * x8)); + const double z23 = 6 * a4 * a6 + deep_arg->eosq * (24 * x2 * x6 - 6 * x4 * x8); + const double s3 = cc / deep_arg->xnq; + const double s2 = -0.5 * s3 / deep_arg->betao; + const double s4 = s3 * deep_arg->betao; + const double s1 = -15 * tle->eo * s4; + const double s5 = x1 * x3 + x2 * x4; + const double s6 = x2 * x3 + x1 * x4; + const double s7 = x2 * x4 - x1 * x3; + double z1 = 3 * (a1 * a1 + a2 * a2) + z31 * deep_arg->eosq; + double z2 = 6 * (a1 * a3 + a2 * a4) + z32 * deep_arg->eosq; + double z3 = 3 * (a3 * a3 + a4 * a4) + z33 * deep_arg->eosq; + + z1 = z1 + z1 + deep_arg->betao2 * z31; + z2 = z2 + z2 + deep_arg->betao2 * z32; + z3 = z3 + z3 + deep_arg->betao2 * z33; + se = s1*zn*s5; + si = s2*zn*(z11+z13); + sl = -zn*s3*(z1+z3-14-6*deep_arg->eosq); + sgh = s4*zn*(z31+z33-6); + if( tle->xincl < pi / 60.) /* pi / 60 radians = 3 degrees */ + sh = 0; + else + sh = -zn*s2*(z21+z23); + deep_arg->ee2 = 2*s1*s6; + deep_arg->e3 = 2*s1*s7; + deep_arg->xi2 = 2*s2*z12; + deep_arg->xi3 = 2*s2*(z13-z11); + deep_arg->xl2 = -2*s3*z2; + deep_arg->xl3 = -2*s3*(z3-z1); + deep_arg->xl4 = -2*s3*(-21-9*deep_arg->eosq)*ze; + deep_arg->xgh2 = 2*s4*z32; + deep_arg->xgh3 = 2*s4*(z33-z31); + deep_arg->xgh4 = -18*s4*ze; + deep_arg->xh2 = -2*s2*z22; + deep_arg->xh3 = -2*s2*(z23-z21); + + if( !iteration) /* we compute lunar terms only on the first pass: */ + { + deep_arg->sse = se; + deep_arg->ssi = si; + deep_arg->ssl = sl; + deep_arg->ssh = (deep_arg->sinio ? sh / deep_arg->sinio : 0.); + deep_arg->ssg = sgh-deep_arg->cosio*deep_arg->ssh; + deep_arg->se2 = deep_arg->ee2; + deep_arg->si2 = deep_arg->xi2; + deep_arg->sl2 = deep_arg->xl2; + deep_arg->sgh2 = deep_arg->xgh2; + deep_arg->sh2 = deep_arg->xh2; + deep_arg->se3 = deep_arg->e3; + deep_arg->si3 = deep_arg->xi3; + deep_arg->sl3 = deep_arg->xl3; + deep_arg->sgh3 = deep_arg->xgh3; + deep_arg->sh3 = deep_arg->xh3; + deep_arg->sl4 = deep_arg->xl4; + deep_arg->sgh4 = deep_arg->xgh4; + zcosg = zcosgl; + zsing = zsingl; + zcosi = zcosil; + zsini = zsinil; + zcosh = zcoshl * cosq + zsinhl * sinq; + zsinh = sinq * zcoshl - cosq * zsinhl; + zn = znl_per_min; + cc = c1l; + ze = zel; + } + } + + deep_arg->sse += se; + deep_arg->ssi += si; + deep_arg->ssl += sl; + deep_arg->ssg += sgh; + if( deep_arg->sinio) + { + deep_arg->ssg -= sh * deep_arg->cosio / deep_arg->sinio; + deep_arg->ssh += sh / deep_arg->sinio; + } + + /* "if mean motion is 1.893053 to 2.117652 revs/day, and ecc >= .5" */ + if( deep_arg->xnq >= 0.00826 && deep_arg->xnq <= 0.00924 && tle->eo >= .5) + { /* start of 12-hour orbit, e >.5 section */ + /* 'root##' variables are somewhat inaccurate values for */ + /* a few fully normalized sectorial/tesseral spherical */ + /* harmonics of the Earth's gravitational potential: */ + const double root22 = 1.7891679E-6; + const double root32 = 3.7393792E-7; + const double root44 = 7.3636953E-9; + const double root52 = 1.1428639E-7; + const double root54 = 2.1765803E-9; + const double g201 = -0.306 - (tle->eo - 0.64) * 0.440; + const double sini2 = deep_arg->sinio*deep_arg->sinio; + const double f220 = 0.75*(1+2*deep_arg->cosio+deep_arg->cosio2); + const double f221 = 1.5 * sini2; + const double f321 = 1.875 * deep_arg->sinio * (1 - 2 *\ + deep_arg->cosio - 3 * deep_arg->cosio2); + const double f322 = -1.875*deep_arg->sinio*(1+2* + deep_arg->cosio-3*deep_arg->cosio2); + const double f441 = 35 * sini2 * f220; + const double f442 = 39.3750 * sini2 * sini2; + const double f522 = 9.84375*deep_arg->sinio*(sini2*(1-2*deep_arg->cosio-5* + deep_arg->cosio2)+0.33333333*(-2+4*deep_arg->cosio+ + 6*deep_arg->cosio2)); + const double f523 = deep_arg->sinio*(4.92187512*sini2*(-2-4* + deep_arg->cosio+10*deep_arg->cosio2)+6.56250012 + *(1+2*deep_arg->cosio-3*deep_arg->cosio2)); + const double f542 = 29.53125*deep_arg->sinio*(2-8* + deep_arg->cosio+deep_arg->cosio2* + (-12+8*deep_arg->cosio+10*deep_arg->cosio2)); + const double f543 = 29.53125*deep_arg->sinio*(-2-8*deep_arg->cosio+ + deep_arg->cosio2*(12+8*deep_arg->cosio-10* + deep_arg->cosio2)); + double g410, g422, g520, g521, g532, g533; + double g211, g310, g322; + double temp, temp1; + + deep_arg->resonance_flag = 1; /* it _is_ resonant... */ + deep_arg->synchronous_flag = 0; /* but it's not synchronous */ + /* Geopotential resonance initialization for 12 hour orbits: */ + if (tle->eo <= 0.65) + { + g211 = 3.616-13.247*tle->eo+16.290*deep_arg->eosq; + g310 = eval_cubic_poly( tle->eo, -19.302, 117.390, -228.419, 156.591); + g322 = eval_cubic_poly( tle->eo, -18.9068, 109.7927, -214.6334, 146.5816); + g410 = eval_cubic_poly( tle->eo, -41.122, 242.694, -471.094, 313.953); + g422 = eval_cubic_poly( tle->eo, -146.407, 841.880, -1629.014, 1083.435); + g520 = eval_cubic_poly( tle->eo, -532.114, 3017.977, -5740.032, 3708.276); + /* NOTE: quadratic coeff was 5740 */ + } + else + { + g211 = eval_cubic_poly( tle->eo, -72.099, 331.819, -508.738, 266.724); + g310 = eval_cubic_poly( tle->eo, -346.844, 1582.851, -2415.925, 1246.113); + g322 = eval_cubic_poly( tle->eo, -342.585, 1554.908, -2366.899, 1215.972); + g410 = eval_cubic_poly( tle->eo, -1052.797, 4758.686, -7193.992, 3651.957); + g422 = eval_cubic_poly( tle->eo, -3581.69, 16178.11, -24462.77, 12422.52); + if (tle->eo <= 0.715) + g520 = eval_cubic_poly( tle->eo, 1464.74, -4664.75, 3763.64, 0.); + else + g520 = eval_cubic_poly( tle->eo, -5149.66, 29936.92, -54087.36, 31324.56); + } /* End if (tle->eo <= 0.65) */ + + if (tle->eo < 0.7) + { + g533 = eval_cubic_poly( tle->eo, -919.2277, 4988.61, -9064.77, 5542.21); + g521 = eval_cubic_poly( tle->eo, -822.71072, 4568.6173, -8491.4146, 5337.524); + g532 = eval_cubic_poly( tle->eo, -853.666, 4690.25, -8624.77, 5341.4); + } + else + { + g533 = eval_cubic_poly( tle->eo, -37995.78, 161616.52, -229838.2, 109377.94); + g521 = eval_cubic_poly( tle->eo, -51752.104, 218913.95, -309468.16, 146349.42); + g532 = eval_cubic_poly( tle->eo, -40023.88, 170470.89, -242699.48, 115605.82); + } /* End if (tle->eo <= 0.7) */ + + temp1 = 3 * deep_arg->xnq * deep_arg->xnq * aqnv * aqnv; + temp = temp1*root22; + deep_arg->d2201 = temp * f220 * g201; + deep_arg->d2211 = temp * f221 * g211; + temp1 *= aqnv; + temp = temp1*root32; + deep_arg->d3210 = temp * f321 * g310; + deep_arg->d3222 = temp * f322 * g322; + temp1 *= aqnv; + temp = 2*temp1*root44; + deep_arg->d4410 = temp * f441 * g410; + deep_arg->d4422 = temp * f442 * g422; + temp1 *= aqnv; + temp = temp1*root52; + deep_arg->d5220 = temp * f522 * g520; + deep_arg->d5232 = temp * f523 * g532; + temp = 2*temp1*root54; + deep_arg->d5421 = temp * f542 * g521; + deep_arg->d5433 = temp * f543 * g533; + deep_arg->xlamo = tle->xmo+tle->xnodeo+tle->xnodeo-deep_arg->thgr-deep_arg->thgr; + bfact = deep_arg->xmdot + deep_arg->xnodot+ + deep_arg->xnodot - thdt - thdt; + bfact += deep_arg->ssl + deep_arg->ssh + deep_arg->ssh; + } /* end of 12-hour orbit, e >.5 section */ + else if( deep_arg->xnq < 1.2 * twopi / minutes_per_day && + deep_arg->xnq > 0.8 * twopi / minutes_per_day) + { /* "if mean motion is .8 to 1.2 revs/day" */ + const double q22 = 1.7891679E-6; + const double q31 = 2.1460748E-6; + const double q33 = 2.2123015E-7; + const double cosio_plus_1 = 1. + deep_arg->cosio; + const double g200 = 1+deep_arg->eosq*(-2.5+0.8125*deep_arg->eosq); + const double g300 = 1+deep_arg->eosq*(-6+6.60937*deep_arg->eosq); + const double f311 = 0.9375*deep_arg->sinio*deep_arg->sinio* + (1+3*deep_arg->cosio)-0.75*cosio_plus_1; + const double g310 = 1+2*deep_arg->eosq; + const double f220 = 0.75 * cosio_plus_1 * cosio_plus_1; + const double f330 = 2.5 * f220 * cosio_plus_1; + + deep_arg->resonance_flag = deep_arg->synchronous_flag = 1; + /* Synchronous resonance terms initialization */ + deep_arg->del1 = 3*deep_arg->xnq*deep_arg->xnq*aqnv*aqnv; + deep_arg->del2 = 2*deep_arg->del1*f220*g200*q22; + deep_arg->del3 = 3*deep_arg->del1*f330*g300*q33*aqnv; + deep_arg->del1 *= f311*g310*q31*aqnv; + deep_arg->xlamo = tle->xmo+tle->xnodeo+tle->omegao-deep_arg->thgr; + bfact = deep_arg->xmdot + deep_arg->omgdot + deep_arg->xnodot - thdt; + bfact = bfact+deep_arg->ssl+deep_arg->ssg+deep_arg->ssh; + } /* End of geosych case */ + else /* it's neither a high-e 12-hr orbit nor a geosynch: */ + deep_arg->resonance_flag = deep_arg->synchronous_flag = 0; + + if( deep_arg->resonance_flag) + { + deep_arg->xfact = bfact-deep_arg->xnq; + + /* Initialize integrator */ + deep_arg->xli = deep_arg->xlamo; + deep_arg->xni = deep_arg->xnq; + deep_arg->atime = 0; + } + /* End case dpinit: */ +} + +/* 'dpsec' is unavoidably confusing. See https://projectpluto.com/dpsec.htm +for some commentary on what's going on here. */ + +static inline void compute_dpsec_derivs( const deep_arg_t *deep_arg, + double *derivs) +{ + const double sin_li = sin( deep_arg->xli); + const double cos_li = cos( deep_arg->xli); + const double sin_2li = 2. * sin_li * cos_li; + const double cos_2li = 2. * cos_li * cos_li - 1.; + int i; + + derivs[0] = 0.; + /* Dot terms calculated, using a lot of trig add/subtract */ + /* identities to reduce the computational load... at the */ + /* cost of making the code somewhat hard to follow: */ + if( deep_arg->synchronous_flag ) + { +/* const double fasx2 = 0.1313091 radians = 7.523456 degrees */ +/* const double fasx4 = 2.8843198 radians = 165.259351 degrees */ +/* const double fasx6 = 0.3744809 radians = 21.456173 degrees */ + const double c_fasx2 = 0.99139134268488593; + const double s_fasx2 = 0.13093206501640101; + const double c_2fasx4 = 0.87051638752972937; + const double s_2fasx4 = -0.49213943048915526; + const double c_3fasx6 = 0.43258117585763334; + const double s_3fasx6 = 0.90159499016666422; + const double sin_3li = sin_2li * cos_li + cos_2li * sin_li; + const double cos_3li = cos_2li * cos_li - sin_2li * sin_li; + double term1a = deep_arg->del1 * (sin_li * c_fasx2 - cos_li * s_fasx2); + double term2a = deep_arg->del2 * (sin_2li * c_2fasx4 - cos_2li * s_2fasx4); + double term3a = deep_arg->del3 * (sin_3li * c_3fasx6 - cos_3li * s_3fasx6); + double term1b = deep_arg->del1 * (cos_li * c_fasx2 + sin_li * s_fasx2); + double term2b = 2. * deep_arg->del2 * (cos_2li * c_2fasx4 + sin_2li * s_2fasx4); + double term3b = 3. * deep_arg->del3 * (cos_3li * c_3fasx6 + sin_3li * s_3fasx6); + + for( i = 0; i < dpsec_integration_order; i += 2) + { + *derivs++ = term1a + term2a + term3a; + *derivs++ = term1b + term2b + term3b; + if( i + 2 < dpsec_integration_order) + { + term1a = -term1a; + term2a *= -4.; + term3a *= -9.; + term1b = -term1b; + term2b *= -4.; + term3b *= -9.; + } + } + } /* end of geosynch case */ + else + { /* orbit is a 12-hour resonant one: */ +/* const double g22 = 5.7686396; */ +/* const double g32 = 0.95240898; */ +/* const double g44 = 1.8014998; */ +/* const double g52 = 1.0508330; */ +/* const double g54 = 4.4108898; */ + const double c_g22 = 0.87051638752972937; + const double s_g22 = -0.49213943048915526; + const double c_g32 = 0.57972190187001149; + const double s_g32 = 0.81481440616389245; + const double c_g44 = -0.22866241528815548; + const double s_g44 = 0.97350577801807991; + const double c_g52 = 0.49684831179884198; + const double s_g52 = 0.86783740128127729; + const double c_g54 = -0.29695209575316894; + const double s_g54 = -0.95489237761529999; + const double xomi = + deep_arg->omegaq + deep_arg->omgdot * deep_arg->atime; + const double sin_omi = sin( xomi), cos_omi = cos( xomi); + const double sin_li_m_omi = sin_li * cos_omi - sin_omi * cos_li; + const double sin_li_p_omi = sin_li * cos_omi + sin_omi * cos_li; + const double cos_li_m_omi = cos_li * cos_omi + sin_omi * sin_li; + const double cos_li_p_omi = cos_li * cos_omi - sin_omi * sin_li; + const double sin_2omi = 2. * sin_omi * cos_omi; + const double cos_2omi = 2. * cos_omi * cos_omi - 1.; + const double sin_2li_m_omi = sin_2li * cos_omi - sin_omi * cos_2li; + const double sin_2li_p_omi = sin_2li * cos_omi + sin_omi * cos_2li; + const double cos_2li_m_omi = cos_2li * cos_omi + sin_omi * sin_2li; + const double cos_2li_p_omi = cos_2li * cos_omi - sin_omi * sin_2li; + const double sin_2li_p_2omi = sin_2li * cos_2omi + sin_2omi * cos_2li; + const double cos_2li_p_2omi = cos_2li * cos_2omi - sin_2omi * sin_2li; + const double sin_2omi_p_li = sin_li * cos_2omi + sin_2omi * cos_li; + const double cos_2omi_p_li = cos_li * cos_2omi - sin_2omi * sin_li; + double term1a = + deep_arg->d2201 * (sin_2omi_p_li*c_g22 - cos_2omi_p_li*s_g22) + + deep_arg->d2211 * (sin_li * c_g22 - cos_li * s_g22) + + deep_arg->d3210 * (sin_li_p_omi*c_g32 - cos_li_p_omi*s_g32) + + deep_arg->d3222 * (sin_li_m_omi*c_g32 - cos_li_m_omi*s_g32) + + deep_arg->d5220 * (sin_li_p_omi*c_g52 - cos_li_p_omi*s_g52) + + deep_arg->d5232 * (sin_li_m_omi*c_g52 - cos_li_m_omi*s_g52); + double term2a = + deep_arg->d4410 * (sin_2li_p_2omi*c_g44 - cos_2li_p_2omi*s_g44) + + deep_arg->d4422 * (sin_2li * c_g44 - cos_2li * s_g44) + + deep_arg->d5421 * (sin_2li_p_omi*c_g54 - cos_2li_p_omi*s_g54) + + deep_arg->d5433 * (sin_2li_m_omi*c_g54 - cos_2li_m_omi*s_g54); + double term1b = + (deep_arg->d2201 * (cos_2omi_p_li*c_g22 + sin_2omi_p_li*s_g22) + + deep_arg->d2211 * (cos_li * c_g22 + sin_li * s_g22) + + deep_arg->d3210 * (cos_li_p_omi*c_g32 + sin_li_p_omi*s_g32) + + deep_arg->d3222 * (cos_li_m_omi*c_g32 + sin_li_m_omi*s_g32) + + deep_arg->d5220 * (cos_li_p_omi*c_g52 + sin_li_p_omi*s_g52) + + deep_arg->d5232 * (cos_li_m_omi*c_g52 + sin_li_m_omi*s_g52)); + double term2b = 2. * + (deep_arg->d4410 * (cos_2li_p_2omi*c_g44 + sin_2li_p_2omi*s_g44) + + deep_arg->d4422 * (cos_2li * c_g44 + sin_2li * s_g44) + + deep_arg->d5421 * (cos_2li_p_omi*c_g54 + sin_2li_p_omi*s_g54) + + deep_arg->d5433 * (cos_2li_m_omi*c_g54 + sin_2li_m_omi*s_g54)); + + for( i = 0; i < dpsec_integration_order; i += 2) + { + *derivs++ = term1a + term2a; + *derivs++ = term1b + term2b; + if( i + 2 < dpsec_integration_order) + { + term1a = -term1a; + term2a *= -4.; + term1b = -term1b; + term2b *= -4.; + } + } + } /* End of 12-hr resonant case */ +} + +void Deep_dpsec( const tle_t *tle, deep_arg_t *deep_arg) +{ + double temp, xni, xli; + int final_integration_step = 0; + + deep_arg->xll += deep_arg->ssl*deep_arg->t; + deep_arg->omgadf += deep_arg->ssg*deep_arg->t; + deep_arg->xnode += deep_arg->ssh*deep_arg->t; + deep_arg->em = tle->eo+deep_arg->sse*deep_arg->t; + deep_arg->xinc = tle->xincl+deep_arg->ssi*deep_arg->t; + if( !deep_arg->resonance_flag ) return; + + /* If we're closer to t=0 than to the currently-stored data + from the previous call to this function, then we're + better off "restarting", going back to the initial data. + The Dundee code rigs things up to _always_ take 720-minute + steps from epoch to end time, except for the final step. + So if we'd have to integrate "backwards" (toward the epoch), + we gotta do a restart if we're to be Dundee-compliant. */ + if( fabs( deep_arg->t) < fabs( deep_arg->t - deep_arg->atime) + || (is_dundee_compliant && fabs( deep_arg->t) < fabs( deep_arg->atime))) + { /* Epoch restart */ + deep_arg->atime = 0.; + xni = deep_arg->xnq; + xli = deep_arg->xlamo; + } + else /* use xni, xli from previous runs: */ + { + xni = deep_arg->xni; + xli = deep_arg->xli; + } + + while( !final_integration_step) + { + double xldot, derivs[20], xlpow = 1., delt_factor; + double delt = deep_arg->t - deep_arg->atime; + int i; + + deep_arg->xni = xni; + deep_arg->xli = xli; + compute_dpsec_derivs( deep_arg, derivs); + if( delt > dpsec_integration_step) + delt = dpsec_integration_step; + else if( delt < -dpsec_integration_step) + delt = -dpsec_integration_step; + else + final_integration_step = 1; + + xldot = xni+deep_arg->xfact; + + xli += delt * xldot; + xni += delt * derivs[0]; + delt_factor = delt; + for( i = 2; i <= dpsec_integration_order; i++) + { + xlpow *= xldot; + derivs[i - 1] *= xlpow; + delt_factor *= delt / (double)i; + xli += delt_factor * derivs[i - 2]; + xni += delt_factor * derivs[i - 1]; + } + if( !is_dundee_compliant || !final_integration_step) + { + deep_arg->xni = xni; + deep_arg->xli = xli; + deep_arg->atime += delt; + } + } + + deep_arg->xn = xni; + + temp = -deep_arg->xnode + deep_arg->thgr + deep_arg->t * thdt; + + deep_arg->xll = xli + temp + + (deep_arg->synchronous_flag ? -deep_arg->omgadf : temp); + /*End case dpsec: */ +} + +void Deep_dpper( const tle_t *tle, deep_arg_t *deep_arg) +{ + double sinis, cosis; + + /* If the time didn't change by more than 30 minutes, */ + /* there's no good reason to recompute the perturbations; */ + /* they don't change enough over so short a time span. */ + /* However, the Dundee code _always_ recomputes, so if */ + /* we're attempting to replicate its results, we've gotta */ + /* recompute everything, too. */ + if( fabs(deep_arg->savtsn-deep_arg->t) >= 30. || is_dundee_compliant) + { + double zf, zm, sinzf, ses, sis, sil, sel, sll, sls; + double f2, f3, sghl, sghs, shs, sh1; + + deep_arg->savtsn = deep_arg->t; + + /* Update solar perturbations for time T: */ + zm = deep_arg->zmos+zns_per_min*deep_arg->t; + zf = zm+2*zes*sin(zm); + sinzf = sin(zf); + f2 = 0.5*sinzf*sinzf-0.25; + f3 = -0.5*sinzf*cos(zf); + ses = deep_arg->se2*f2+deep_arg->se3*f3; + sis = deep_arg->si2*f2+deep_arg->si3*f3; + sls = deep_arg->sl2*f2+deep_arg->sl3*f3+deep_arg->sl4*sinzf; + sghs = deep_arg->sgh2*f2+deep_arg->sgh3*f3+deep_arg->sgh4*sinzf; + shs = deep_arg->sh2*f2+deep_arg->sh3*f3; + + /* Update lunar perturbations for time T: */ + zm = deep_arg->zmol+znl_per_min*deep_arg->t; + zf = zm+2*zel*sin(zm); + sinzf = sin(zf); + f2 = 0.5*sinzf*sinzf-0.25; + f3 = -0.5*sinzf*cos(zf); + sel = deep_arg->ee2*f2+deep_arg->e3*f3; + sil = deep_arg->xi2*f2+deep_arg->xi3*f3; + sll = deep_arg->xl2*f2+deep_arg->xl3*f3+deep_arg->xl4*sinzf; + sghl = deep_arg->xgh2*f2+deep_arg->xgh3*f3+deep_arg->xgh4*sinzf; + sh1 = deep_arg->xh2*f2+deep_arg->xh3*f3; + + /* Sum the solar and lunar contributions: */ + deep_arg->pe = ses+sel; + deep_arg->pinc = sis+sil; + deep_arg->pl = sls+sll; + deep_arg->pgh = sghs+sghl; + deep_arg->ph = shs+sh1; +#ifdef RETAIN_PERTURBATION_VALUES_AT_EPOCH + if( deep_arg->solar_lunar_init_flag) + { + deep_arg->pe0 = deep_arg->pe; + deep_arg->pinc0 = deep_arg->pinc; + deep_arg->pl0 = deep_arg->pl; + deep_arg->pgh0 = deep_arg->pgh; + deep_arg->ph0 = deep_arg->ph; + } + deep_arg->pe -= deep_arg->pe0; + deep_arg->pinc -= deep_arg->pinc0; + deep_arg->pl -= deep_arg->pl0; + deep_arg->pgh -= deep_arg->pgh0; + deep_arg->ph -= deep_arg->ph0; + if( deep_arg->solar_lunar_init_flag) + return; /* done all we really need to do here... */ +#endif + } + + /* In Spacetrack 3, sinis & cosis were initialized */ + /* _before_ perturbations were added to xinc. In */ + /* Spacetrack 6, it's the other way around (see below). */ +#ifndef SPACETRACK_3 + deep_arg->xinc += deep_arg->pinc; +#endif + sinis = sin( deep_arg->xinc); + cosis = cos( deep_arg->xinc); +#ifdef SPACETRACK_3 + deep_arg->xinc += deep_arg->pinc; +#endif + + /* Add solar/lunar perturbation correction to eccentricity: */ + deep_arg->em += deep_arg->pe; + deep_arg->xll += deep_arg->pl; + deep_arg->omgadf += deep_arg->pgh; + if( tle->xincl >= 0.2) + { /* Apply periodics directly */ + double temp_val; + +#ifdef SPACETRACK_3 + sinis = sin(deep_arg->xinc); + cosis = cos(deep_arg->xinc); +#endif + temp_val = deep_arg->ph / sinis; + deep_arg->omgadf -= cosis * temp_val; + deep_arg->xnode += temp_val; + } + else + { + /* Apply periodics with Lyddane modification */ + const double sinok = sin(deep_arg->xnode); + const double cosok = cos(deep_arg->xnode); + const double alfdp = deep_arg->ph * cosok + + (deep_arg->pinc * cosis + sinis) * sinok; + const double betdp = - deep_arg->ph * sinok + + (deep_arg->pinc * cosis + sinis) * cosok; + double dls, delta_xnode; + +// deep_arg->xnode = FMod2p(deep_arg->xnode); + delta_xnode = atan2(alfdp,betdp) - deep_arg->xnode; + + /* This is a patch to Lyddane modification suggested */ + /* by Rob Matson, streamlined very slightly by BJG, to */ + /* keep 'delta_xnode' between +/- 180 degrees: */ + + if( delta_xnode < - pi) + delta_xnode += twopi; + else if( delta_xnode > pi) + delta_xnode -= twopi; + + dls = -deep_arg->xnode * sinis * deep_arg->pinc; +#ifdef SPACETRACK_3 + deep_arg->omgadf += dls + + cosis * deep_arg->xnode - + - cos( deep_arg->xinc) * (deep_arg->xnode + delta_xnode); +#else + deep_arg->omgadf += dls - cosis * delta_xnode; +#endif + deep_arg->xnode += delta_xnode; + } /* End case dpper: */ +} diff --git a/src/sgp4/get_el.c b/src/sgp4/get_el.c new file mode 100644 index 0000000..247b4a3 --- /dev/null +++ b/src/sgp4/get_el.c @@ -0,0 +1,392 @@ +/* Copyright (C) 2018, Project Pluto. See LICENSE. + * + * get_el.c - TLE (Two-Line Element) parsing + * + * Parses the standard NORAD/18th SDS two-line element format into the + * in-memory tle_t structure. Format defined in STR#3 Appendix (pp. 83-91) + * and Vallado Rev-1 Appendix B. + * + * Key conversions performed during parsing: + * - Angles (inclination, RAAN, arg perigee, mean anomaly): deg -> rad + * - Mean motion: rev/day -> rad/min + * - Mean motion derivatives: rev/day^n -> rad/min^n + * - Eccentricity: implied decimal point (e.g., "1859667" -> 0.1859667) + * - B* drag: quasi-scientific notation -> double, multiplied by AE + * - Epoch: YY+DDD.DDDDDDDD -> Julian Date + * + * Also handles Alpha-5 and Super-5 NORAD catalog number extensions, + * and Bill Gray's 'H' ephemeris type (state vector in base-36 encoding). + */ + +#include +#include +#include +#include +#include +#include "norad.h" + +#define PI 3.141592653589793238462643383279502884197 +#define TWOPI (2. * PI) +#define MINUTES_PER_DAY 1440. +#define MINUTES_PER_DAY_SQUARED (MINUTES_PER_DAY * MINUTES_PER_DAY) +#define MINUTES_PER_DAY_CUBED (MINUTES_PER_DAY * MINUTES_PER_DAY_SQUARED) +#define AE 1.0 + /* distance units, earth radii */ + +/* TLEs have four angles on line 2, given in the form DDD.DDDD. This +can be parsed more quickly as an integer, then cast to double and +converted to radians, all in one step. */ + +static int get_angle( const char *buff) +{ + int rval = 0; + + while( *buff == ' ') + buff++; + while( *buff != ' ') + { + if( *buff != '.') + rval = rval * 10 + (int)( *buff - '0'); + buff++; + } + return( rval); +} + +/* Converts the quasi scientific notation of the "Motion Dot Dot/6" or +"BSTAR" field to double. The input will always be of the form + +sdddddSe + + ....where s is blank or + or -; ddddd is a five-digit mantissa; +S is + or - or blank; and e is a single-digit exponent. A decimal +point is assumed before the five-digit mantissa. */ + +static double sci( const char *string) +{ + double rval = 0.; + + if( string[1] != ' ') + { + const int ival = atoi( string); + + if( ival) + { + rval = (double)ival * 1.e-5; + if( string[7] != '0') + { + int exponent = string[7] - '0'; + + if( string[6] == '-') + while( exponent--) + rval *= .1; + else + while( exponent--) + rval *= 10.; + } + } + } + return( rval); +} + + +/* Does a checksum modulo 10 on the given line. Digits = their +value, '-' = 1, all other chars = 0. Returns 0 if ok, a negative +value if it's definitely not a TLE line, positive if it's all OK +except the checksum. This last was added because people sometimes +want to use TLEs without worrying about the checksum. */ + +int tle_checksum( const char *buff) +{ + int rval = 0; + int count = 69; + + if( (*buff != '1' && *buff != '2') || buff[1] != ' ') + return( -1); + while( --count) + { + if( *buff > '0' && *buff <= '9') + rval += *buff - '0'; + else if( *buff == '-') + rval++; + if( *buff < ' ' || *buff > 'z') /* invalid character */ + return( -2); + buff++; + } + rval -= *buff++ - '0'; + if( *buff > ' ') /* line unterminated */ + rval = -3; + else + { + rval %= 10; + if( rval < 0) + rval += 10; + } + return( rval); +} + +static inline int mutant_dehex( const char ichar) +{ + int rval; + + if( ichar <= '9' && ichar >= '0') + rval = ichar - '0'; + else if( ichar >= 'A' && ichar <= 'Z') + rval = ichar + 10 - 'A'; + else + rval = -1; + return( rval); +} + +/* The "standard" SDP4 model fails badly for very high-flying satellites +(mostly, but not always, those with orbital periods of greater than +about a week). Highly eccentric orbits are more likely to fail than +near-circular ones. And of course, hyperbolic orbits never work with +SGP4/SDP4. + + As a non-standard extension, I'm simply storing state vectors for +such orbits, using the following somewhat odd scheme : + +1 40391U 15007B 15091.99922241 sxxxxxxxx syyyyyyyy szzzzzzzzH 9997 +2 49391 [valid range, accuracy] saaaaaaaa sbbbbbbbb scccccccc 0 8 + + Epoch, int'l & NORAD IDs are stored in the standard manner. The +'ephemeris type' is H (rather than the otherwise universal 0). The +xyz position and vx, vy, vz velocity are stored as 8-digit signed +base-36 integers, hence a range of +/- 36^8 = about +/- 2.82x10^12. + + x, y, z are in meters, and hence cover a range +/- 18.9 AU. +vx, vy, vz are in 10^-4 m/s, range +/- 94% c. The state vectors +are in the geocentric ecliptic plane of date. See 'sdp4.cpp' for +a discussion of how they're actually used. */ + +static double get_high_value( const char *iptr) +{ + int64_t rval = 0; + + assert( *iptr == '+' || *iptr == '-'); + if( *iptr == '+' || *iptr == '-') + { + int i, digit; + + for( i = 1; i < 9; i++) + { + digit = mutant_dehex( iptr[i]); + assert( digit >= 0); + rval = rval * (int64_t)36 + (int64_t)digit; + } + if( *iptr == '-') + rval = -rval; + } + return( (double)rval); +} + +/* Traditionally, NORAD numbers were stored as five digits. In 2020, new +detectors threatened to go past 100K objects; the 'Alpha-5' scheme allows +the first byte to be replaced by an uppercase letter, with I and O +skipped. That gets us to 339999 : + +https://www.space-track.org/documentation#tle-alpha5 + + Note that Alpha-5 is referred to as a "stopgap". Near the bottom of +the above link, "space-track.org encourages users to switch to... XML, +KVN, or JSON", (partly) because these will handle nine-digit catalog +numbers. + + To go beyond the Alpha-5 limit of 340000 possible numbers and store +all nine-digit numbers in five bytes, I have added options 3 and 4 +below. To do so, we need a 'base64'-like scheme, using all ten +digits, 26 uppercase and 26 lowercase letters, and + and /. + + d = digit, L = uppercase letter, x = any base64 character + X = non-digit base-64 character + +(1) ddddd = 'traditional' scheme provides 100000 combinations; + Numbers 0 to 99999 + +(2) Ldddd = Alpha-5 scheme adds 240000 + Numbers 100000 to 339999; A0000 to Z9999 + +(3) xxxxX = 64^4*54 = 905969664 more (start of 'Super-5' range) + Numbers 340000 to 906309663; 0000A to ----- + +(4) xxxXd = 64^3*54*10 = 141557760 more + Numbers 906309664 to 1047867423; 000A0 and up + (going slightly past the billion we actually need) */ + +static int base64_to_int( const char c) +{ + int offset; + + if( c >= 'A') + { + if( c <= 'Z') + offset = 'A' - 10; + else if( c >= 'a' && c <= 'z') + offset = 'a' - 10 - 26; + else + return( -1); + } + else + { + if( c >= '0' && c <= '9') + offset = '0'; + else if( c == ' ') + return( 0); + else if( c == '+') + return( 62); + else if( c == '-') + return( 63); + else + return( -1); + } + return( c - offset); +} + +static int get_norad_number( const char *buff) +{ + size_t i; + int digits[5], rval = 0; + + for( i = 0; i < 5; i++) + { + digits[i] = base64_to_int( buff[i]); + if( digits[i] == -1) /* not a valid number */ + return( 0); + } + if( digits[4] > 9) /* case (3): last char is uppercase */ + rval = 340000 + (digits[4] - 10) + + 54 * (digits[3] + (digits[2] << 6) + (digits[1] << 12) + (digits[0] << 18)); + else if( digits[3] > 9) /* case (4) above */ + rval = 340000 + 905969664 + digits[4] + (digits[3] - 10) * 10 + + 540 * (digits[2] + (digits[1] << 6) + (digits[0] << 12)); + else /* last four digits are 0-9; 'standard' NORAD desig */ + { + for( i = 1; i <= 4; i++) + assert( (buff[i] >= '0' && buff[i] <= '9') || buff[i] == ' '); + if( *buff > 'I') + { + digits[0]--; + if( *buff > 'O') + digits[0]--; + } + rval = digits[0] * 10000 + atoi( buff + 1); + } + return( rval); +} + +static inline double get_eight_places( const char *ptr) +{ + return( (double)atoi( ptr) + (double)atoi(ptr + 4) * 1e-8); +} + +/* Meteor 2-08 */ +/* 1 13113U 88245.60005115 0.00000076 63463-4 0 5998 */ +/* 2 13113 82.5386 288.0994 0015973 147.1294 213.0868 13.83869004325321 */ + +#define J2000 2451545.5 +#define J1900 (J2000 - 36525. - 1.) + +/* parse_elements returns: + 0 if the elements are parsed without error; + 1 if they're OK except the first line has a checksum error; + 2 if they're OK except the second line has a checksum error; + 3 if they're OK except both lines have checksum errors; + a negative value if the lines aren't at all parseable */ + +int parse_elements( const char *line1, const char *line2, tle_t *sat) +{ + int rval, checksum_problem = 0; + + if( *line1 != '1' || *line2 != '2') + rval = -4; + else + { + rval = tle_checksum( line1); + if( rval > 0) + { + checksum_problem = 1; /* there's a checksum problem, but it's */ + rval = 0; /* not fatal; continue processing the TLE */ + } + } + + if( rval) + rval -= 100; + else + { + rval = tle_checksum( line2); + if( rval > 0) + { + checksum_problem |= 2; /* there's a checksum problem, but it's */ + rval = 0; /* not fatal; continue processing the TLE */ + } + } + + if( !rval) + { + char tbuff[13]; + int year = line1[19] - '0'; + + if( line1[18] >= '0') + year += (line1[18] - '0') * 10; + if( year < 57) /* cycle around Y2K */ + year += 100; + sat->epoch = get_eight_places( line1 + 20) + J1900 + + (double)( year * 365 + (year - 1) / 4); + sat->norad_number = get_norad_number( line1 + 2); + memcpy( tbuff, line1 + 64, 4); + tbuff[4] = '\0'; + sat->bulletin_number = atoi( tbuff); + sat->classification = line1[7]; /* almost always 'U' */ + memcpy( sat->intl_desig, line1 + 9, 8); + if( !memcmp( sat->intl_desig, " ", 5)) + { /* usually 'analyst' object w/o international (COSPAR) desig; */ + int i, n = sat->norad_number; /* set launch 000, year/part */ + /* data mapped from NORAD # */ + for( i = 7; i > 4; i--, n /= 26) + sat->intl_desig[i] = 'A' + n % 26; + sat->intl_desig[2] = sat->intl_desig[3] = sat->intl_desig[4] = '0'; + sat->intl_desig[1] = '0' + n % 10; + sat->intl_desig[0] = '0' + n / 10; + } + sat->intl_desig[8] = '\0'; + memcpy( tbuff, line2 + 63, 5); + tbuff[5] = '\0'; + sat->revolution_number = atoi( tbuff); + sat->ephemeris_type = line1[62]; + if( sat->ephemeris_type == 'H') + { + size_t i; + double *state_vect = &sat->xincl; + + for( i = 0; i < 3; i++) + { + state_vect[i] = get_high_value( line1 + 33 + i * 10); + state_vect[i + 3] = get_high_value( line2 + 33 + i * 10) * 1e-4; + } + return( 0); + } + + sat->xmo = (double)get_angle( line2 + 43) * (PI / 180e+4); + sat->xnodeo = (double)get_angle( line2 + 17) * (PI / 180e+4); + sat->omegao = (double)get_angle( line2 + 34) * (PI / 180e+4); + sat->xincl = (double)get_angle( line2 + 8) * (PI / 180e+4); + sat->eo = atoi( line2 + 26) * 1.e-7; + + /* Make sure mean motion is null-terminated, since rev. no. + may immediately follow. */ + memcpy( tbuff, line2 + 51, 12); + tbuff[12] = '\0'; + /* Input mean motion, derivative of mean motion and second */ + /* deriv of mean motion, are all in revolutions and days. */ + /* Convert them here to radians and minutes: */ + sat->xno = get_eight_places( tbuff) * TWOPI / MINUTES_PER_DAY; + sat->xndt2o = (double)atoi( line1 + 35) + * 1.e-8 * TWOPI / MINUTES_PER_DAY_SQUARED; + if( line1[33] == '-') + sat->xndt2o *= -1.; + sat->xndd6o = sci( line1 + 44) * TWOPI / MINUTES_PER_DAY_CUBED; + + sat->bstar = sci( line1 + 53) * AE; + } + return( rval ? rval : checksum_problem); +} diff --git a/src/sgp4/norad.h b/src/sgp4/norad.h new file mode 100644 index 0000000..1e45887 --- /dev/null +++ b/src/sgp4/norad.h @@ -0,0 +1,90 @@ +/* Copyright (C) 2018, Project Pluto. See LICENSE. + * + * norad.h - SGP4/SDP4 satellite propagation interface + * + * Public API for the SGP4/SDP4 orbital propagators as described in: + * - Hoots & Roehrich, "Spacetrack Report No. 3" (1980) + * - Vallado, Crawford, Hujsak, Kelso, AIAA 2006-6753-Rev1 + * + * Vendored from Bill Gray's sat_code (commit ff7b989, MIT license). + * Stripped: SGP, SGP8, SDP8 model prototypes (pg_orbit uses only SGP4/SDP4). + * Stripped: Win32 DLL_FUNC/__stdcall and dynamic loading support. + * Stripped: extern "C" wrapper (now compiled as C, not C++). + * N_SAT_PARAMS kept at its original value for binary compatibility. + */ + +#ifndef NORAD_H +#define NORAD_H 1 + +/* Two-line-element satellite orbital data */ +typedef struct +{ + double epoch, xndt2o, xndd6o, bstar; + double xincl, xnodeo, eo, omegao, xmo, xno; + int norad_number, bulletin_number, revolution_number; + char classification; /* "U" = unclassified; only type I've seen */ + char ephemeris_type; + char intl_desig[9]; +} tle_t; + + /* epoch is a Julian Day, UTC */ + /* xmo = mean anomaly at epoch, radians */ + /* xno = mean motion at epoch, radians/minute */ + +#ifdef RETAIN_PERTURBATION_VALUES_AT_EPOCH + #define DEEP_ARG_T_PARAMS 87 +#else + #define DEEP_ARG_T_PARAMS 81 +#endif + +#define N_SGP4_PARAMS 30 +#define N_SDP4_PARAMS (10 + DEEP_ARG_T_PARAMS) + +/* Maximum params array size — covers both SGP4 and SDP4. + * Kept at original sat_code value (11 + DEEP_ARG_T_PARAMS) + * even though SDP4 only needs 10; do not shrink. */ +#define N_SAT_PARAMS (11 + DEEP_ARG_T_PARAMS) + +/* Ephemeris type codes from TLE line 1, column 63. */ +#define TLE_EPHEMERIS_TYPE_DEFAULT 0 +#define TLE_EPHEMERIS_TYPE_SGP4 2 +#define TLE_EPHEMERIS_TYPE_SDP4 3 + +/* Configuration parameter indices for sxpx_set_implementation_param() */ +#define SXPX_DPSEC_INTEGRATION_ORDER 0 +#define SXPX_DUNDEE_COMPLIANCE 1 +#define SXPX_ZERO_PERTURBATIONS_AT_EPOCH 2 + +/* SGP4/SDP4 error and warning codes. + * Warnings: a mathematically reasonable value is still returned. + * Errors: no reasonable position/velocity was determined. */ +#define SXPX_ERR_NEARLY_PARABOLIC -1 +#define SXPX_ERR_NEGATIVE_MAJOR_AXIS -2 +#define SXPX_WARN_ORBIT_WITHIN_EARTH -3 +#define SXPX_WARN_PERIGEE_WITHIN_EARTH -4 +#define SXPX_ERR_NEGATIVE_XN -5 +#define SXPX_ERR_CONVERGENCE_FAIL -6 + +/* --- SGP4 (near-earth, period < 225 min) --- */ +void SGP4_init( double *params, const tle_t *tle); +int SGP4( const double tsince, const tle_t *tle, const double *params, + double *pos, double *vel); + +/* --- SDP4 (deep-space, period >= 225 min) --- */ +void SDP4_init( double *params, const tle_t *tle); +int SDP4( const double tsince, const tle_t *tle, const double *params, + double *pos, double *vel); + +/* --- Shared utilities --- */ +int select_ephemeris( const tle_t *tle); +int parse_elements( const char *line1, const char *line2, tle_t *sat); +int tle_checksum( const char *buff); +void write_elements_in_tle_format( char *buff, const tle_t *tle); + +void sxpx_set_implementation_param( const int param_index, + const int new_param); +void sxpx_set_dpsec_integration_step( const double new_step_size); +void lunar_solar_position( const double jd, + double *lunar_xyzr, double *solar_xyzr); + +#endif /* NORAD_H */ diff --git a/src/sgp4/norad_in.h b/src/sgp4/norad_in.h new file mode 100644 index 0000000..6cbb91b --- /dev/null +++ b/src/sgp4/norad_in.h @@ -0,0 +1,110 @@ +/* Copyright (C) 2018, Project Pluto. See LICENSE. + * + * norad_in.h - Internal structures and constants for SGP4/SDP4 + * + * Theory chain: + * Brouwer (1959) - mean element theory for artificial satellites + * Kozai (1959) - secular and long-period perturbations + * Lyddane (1963) - singularity-free formulation near zero inclination + * Lane & Cranford (1969) - atmospheric drag model + * Hujsak (1979) - STR#1: deep-space lunar/solar perturbations + * Lane & Hoots (1979) - STR#2: near-earth SGP4 model + * Hoots & Roehrich (1980) - STR#3: combined SGP4/SDP4 reference + * Vallado et al. (2006) - AIAA 2006-6753-Rev1: modern implementation + * + * Constants from STR#3 Chapter 12 (pp. 79-81, "Users Guide, Constants, + * and Symbols"), compiled by T.S. Kelso (1988). All constants use the + * WGS-72 geodetic model — do NOT substitute WGS-84 values. + */ + +#ifndef NORAD_IN_H +#define NORAD_IN_H + +/* Common "internal" arguments between deep-space functions; users of */ +/* the satellite routines shouldn't need to bother with any of this */ + +typedef struct +{ + double + /* Common between SGP4 and SDP4: */ + aodp, cosio, sinio, omgdot, xmdot, xnodot, xnodp, + /* Used by dpinit part of Deep() */ + eosq, betao, cosio2, sing, cosg, betao2, + + /* Used by dpsec and dpper parts of Deep() */ + xll, omgadf, xnode, em, xinc, xn, t, + + /* 'd####' secular coeffs for 12-hour, e>.5 orbits: */ + d2201, d2211, d3210, d3222, d4410, d4422, d5220, d5232, d5421, d5433, + /* formerly static to Deep( ), but more logically part of this struct: */ + atime, del1, del2, del3, e3, ee2, omegaq, pe, pgh, ph, pinc, pl, preep, + savtsn, se2, se3, sgh2, sgh3, sgh4, sh2, sh3, si2, si3, sl2, sl3, + sl4, sse, ssg, ssh, ssi, ssl, thgr, xfact, xgh2, xgh3, xgh4, xh2, + xh3, xi2, xi3, xl2, xl3, xl4, xlamo, xli, xni, xnq, + zmol, zmos; + + /* Epoch offsets, described by Rob Matson, added by BJG, */ + /* then commented out; I don't think they really ought to */ + /* be used... */ +#ifdef RETAIN_PERTURBATION_VALUES_AT_EPOCH + double pe0, pinc0, pl0, pgh0, ph0; + int solar_lunar_init_flag; +#endif + int resonance_flag, synchronous_flag; +} deep_arg_t; + +double FMod2p( const double x); +void Deep_dpinit( const tle_t *tle, deep_arg_t *deep_arg); +void Deep_dpsec( const tle_t *tle, deep_arg_t *deep_arg); +void Deep_dpper( const tle_t *tle, deep_arg_t *deep_arg); + +int sxpx_posn_vel( const double xnode, const double a, const double e, + const double cosio, const double sinio, + const double xincl, const double omega, + const double xl, double *pos, double *vel); + +typedef struct +{ + double coef, coef1, tsi, s4, unused_a3ovk2, eta; +} init_t; + +void sxpx_common_init( double *params, const tle_t *tle, + init_t *init, deep_arg_t *deep_arg); + +/* Table of constant values — STR#3 Chapter 12 (pp. 79-81) + * + * WGS-72 geodetic constants. These are baked into every TLE ever published + * by NORAD/18th Space Defense Squadron. Changing them silently corrupts + * positions by kilometers. See CLAUDE.md "Constant Chain of Custody". */ +#define pi 3.141592653589793238462643383279502884197 +#define twopi (pi*2.) +#define e6a 1.0E-6 +#define two_thirds (2. / 3.) +#define xj3 -2.53881E-6 /* J3: third gravitational zonal harmonic */ +#define minus_xj3 2.53881E-6 +#define earth_radius_in_km 6378.135 /* WGS-72 equatorial radius (km) */ +#ifndef minutes_per_day + #define minutes_per_day 1440. +#endif +#define ae 1.0 /* distance units per Earth radius */ +#define xj2 1.082616e-3 /* J2: second gravitational zonal harmonic */ +#define ck2 (.5 * xj2 * ae * ae) /* CK2 = (1/2)*J2*aE^2 */ + + /* xke = sqrt(GM) in Earth-radii^(3/2) / minute. + * STR#3: ke*(er/min)^(3/2), derived from mu = 398600.8 km^3/s^2 (WGS-72) */ +#ifdef OLD_CONSTANTS +#define ck4 6.209887E-7 +#define s 1.012229 +#define qoms2t 1.880279E-09 +#define xke 7.43669161E-2 +#else +#define xj4 (-1.65597e-6) /* J4: fourth gravitational zonal harmonic */ +#define ck4 (-.375 * xj4 * ae * ae * ae * ae) /* CK4 = -(3/8)*J4*aE^4 */ +#define s_const (ae * (1. + 78. / earth_radius_in_km)) /* atmospheric parameter s (er) */ +#define qoms2t 1.880279159015270643865e-9 /* (qo - s)^4 in er^4 */ +#define xke 0.0743669161331734132 /* ke = sqrt(3.986008e14) * 60 / 6378135^(3/2) */ +#endif + +#define a3ovk2 (minus_xj3/ck2*ae*ae*ae) /* -J3/(2*CK2) * aE^3 */ + +#endif /* #ifndef NORAD_IN_H */ diff --git a/src/sgp4/sdp4.c b/src/sgp4/sdp4.c new file mode 100644 index 0000000..2395590 --- /dev/null +++ b/src/sgp4/sdp4.c @@ -0,0 +1,378 @@ +/* Copyright (C) 2018, Project Pluto. See LICENSE. + * + * sdp4.c - Deep-space satellite propagator (orbital period >= 225 min) + * + * Implements the SDP4 model from STR#3 (Hoots & Roehrich 1980) Chapter 7 + * (pp. 33-42), with deep-space perturbations from STR#1 (Hujsak 1979). + * + * SDP4_init(): Initializes deep-space perturbation terms via Deep_dpinit(). + * STR#3 Eqs. 7-1..7-5, Vallado Rev-1 Section IV. + * + * SDP4(): Applies secular gravity/drag updates, then calls Deep_dpsec() + * for deep-space secular effects and Deep_dpper() for periodic effects. + * Final position via sxpx_posn_vel(). STR#3 Eqs. 7-6..7-18. + * + * high_ephemeris(): Bill Gray extension for very high orbits (ephemeris + * type 'H'). RK4 numerical integration with simplified Earth+Moon+Sun + * gravity model. Not part of STR#3; state vectors stored in TLE fields. + * + * Global state (safe in PostgreSQL fork model): + * lunar_solar_position() cache in raw_lunar_solar_position() — memoizes + * the most recent JD computation to avoid recomputing during RK4 steps. + */ + +#include +#include +#include "norad.h" +#include "norad_in.h" + +#include + +/* For high satellites, we do a numerical integration that uses a +rather drastic set of simplifications. We include the earth, +moon, and sun, but with low-precision approximations for the +positions of those last two. References are to Meeus' _Astronomical +Algorithms_, 2nd edition. Results are in meters from the center +of the earth, in ecliptic coordinates of date. + +The numerical integration is done using the 'classic' RK4 algorithm, +as described at (for example) + +https://en.wikipedia.org/wiki/Runge–Kutta_methods + +The solar and lunar positions are computed using Meeus' formulae, which +are a little computationally intensive. RK4 has the slight advantage of +requiring us to compute lunar/solar positions only for the steps +themselves and their midpoints. + +You probably know that the 'elements' for traditional TLEs are fitted to +the SGP4 and SDP4 models : if you tried to numerically integrate TLEs +using a more sophisticated model, you'd actually get _worse_ results. +Similarly, the state vectors for my modified TLEs are integrated using +the following model, which tries to balance accuracy and speed. Just as +you shouldn't try to "improve" SGP4/SDP4, you shouldn't try to "improve" +the following; it'll only break backward compatibility. */ + +static void raw_lunar_solar_position( const double jd, double *lunar_xyzr, double *solar_xyzr) +{ + const double j2000 = 2451545; /* 1.5 Jan 2000 = JD 2451545 */ + const double t_cen = (jd - j2000) / 36525.; + /* Mean lunar longitude, (47.1) */ + const double l_prime = 218.3164477 * pi / 180. + + (481267.88123421 * pi / 180.) * t_cen; + /* Lunar mean anomaly, (47.4) */ + const double m_prime = 134.9633964 * pi / 180. + + (477198.8675055 * pi / 180.) * t_cen; + /* Solar mean longitude, (25.2) */ + const double l_solar = 280.46646 * pi / 180. + + (36000.76983 * pi / 180.) * t_cen; + /* Solar mean anomaly, (47.3) */ + const double m_solar = 357.5291092 * pi / 180. + + (35999.0502909 * pi / 180.) * t_cen; + /* Lunar mean argument of latitude (47.5) */ + const double f = 93.2720950 * pi / 180. + + (483202.0175233 * pi / 180.) * t_cen; + const double lunar_mean_elong = (297.8501921 * pi / 180.) + + (445267.1114034 * pi / 180.) * t_cen; + const double term2 = 2. * lunar_mean_elong - m_prime; + const double lunar_lon = l_prime /* See table 47.A */ + + (6.288774 * pi / 180.) * sin( m_prime) + + (1.274027 * pi / 180.) * sin( term2) + + (0.658314 * pi / 180.) * sin( 2. * lunar_mean_elong) + + (0.213618 * pi / 180.) * sin( 2. * m_prime) + - (0.185166 * pi / 180.) * sin( m_solar) + - (0.114332 * pi / 180.) * sin( 2. * f); + const double lunar_lat = (5.128122 * pi / 180.) * sin( f) + + (0.280602 * pi / 180.) * sin( m_prime + f) + + (0.277693 * pi / 180.) * sin( m_prime - f) + + (0.173237 * pi / 180.) * sin( 2. * lunar_mean_elong - f); + const double lunar_r = 385000560. /* in meters */ + - 20905355. * cos( m_prime) + - 3699111. * cos( term2) + - 2955968 * cos( 2. * lunar_mean_elong) + - 569925 * cos( 2. * m_solar); + const double solar_ecc = 0.016708634; /* (25.4) */ + const double solar_lon = l_solar /* (above (25.5)) */ + + (1.914602 * pi / 180.) * sin( m_solar); + const double au_in_meters = 1.495978707e+11; + const double solar_r = au_in_meters * (1. - solar_ecc * cos( m_solar)); + double tval; + + tval = lunar_r * cos( lunar_lat); + *lunar_xyzr++ = tval * cos( lunar_lon); + *lunar_xyzr++ = tval * sin( lunar_lon); + *lunar_xyzr++ = lunar_r * sin( lunar_lat); + *lunar_xyzr++ = lunar_r; + + *solar_xyzr++ = solar_r * cos( solar_lon); + *solar_xyzr++ = solar_r * sin( solar_lon); + *solar_xyzr++ = 0.; + *solar_xyzr++ = solar_r; +} + +/* For the RK4 integration, we're frequently asking for the sun and +moon positions at the exact same time we needed for the preceding step. +Caching those positions saves recomputing them. */ + +void lunar_solar_position( const double jd, + double *lunar_xyzr, double *solar_xyzr) +{ + static double curr_jd = 0., lunar[4], solar[4]; + size_t i; + + if( curr_jd != jd) + { + curr_jd = jd; + raw_lunar_solar_position( jd, lunar, solar); + } + for( i = 0; i < 4; i++) + { + if( lunar_xyzr) + lunar_xyzr[i] = lunar[i]; + if( solar_xyzr) + solar_xyzr[i] = solar[i]; + } +} + +static const double sin_obliq_2000 = 0.397777155931913701597179975942380896684; +static const double cos_obliq_2000 = 0.917482062069181825744000384639406458043; + +static void equatorial_to_ecliptic( double *vect) +{ + double temp; + + temp = vect[2] * cos_obliq_2000 - vect[1] * sin_obliq_2000; + vect[1] = vect[1] * cos_obliq_2000 + vect[2] * sin_obliq_2000; + vect[2] = temp; +} + +static void ecliptic_to_equatorial( double *vect) +{ + double temp; + + temp = vect[2] * cos_obliq_2000 + vect[1] * sin_obliq_2000; + vect[1] = vect[1] * cos_obliq_2000 - vect[2] * sin_obliq_2000; + vect[2] = temp; +} + +static void init_high_ephemeris( double *params, const tle_t *tle) +{ + const double *state_vect = &tle->xincl; /* position at epoch, in meters */ + size_t i; + + for( i = 0; i < 6; i++) + params[i] = state_vect[i]; + equatorial_to_ecliptic( params); + equatorial_to_ecliptic( params + 3); +} + +#define c1 params[2] +#define c4 params[3] +#define xnodcf params[4] +#define t2cof params[5] +#define deep_arg ((deep_arg_t *)( params + 10)) + +void SDP4_init( double *params, const tle_t *tle) +{ + init_t init; + + if( tle->ephemeris_type == 'H') + { + init_high_ephemeris( params, tle); + return; + } + sxpx_common_init( params, tle, &init, deep_arg); + deep_arg->sing = sin(tle->omegao); + deep_arg->cosg = cos(tle->omegao); + + /* initialize Deep() */ + Deep_dpinit( tle, deep_arg); +#ifdef RETAIN_PERTURBATION_VALUES_AT_EPOCH + /* initialize lunisolar perturbations: */ + deep_arg->t = 0.; /* added 30 Dec 2003 */ + deep_arg->solar_lunar_init_flag = 1; + Deep_dpper( tle, deep_arg); + deep_arg->solar_lunar_init_flag = 0; +#endif +} /*End of SDP4() initialization */ + +static inline double vector_len( const double *vect) +{ + double len2 = vect[0] * vect[0] + vect[1] * vect[1] + vect[2] * vect[2]; + + return( sqrt( len2)); +} + +/* Input position is in meters, accel is in m/sec^2 */ + +static int calc_accel( const double jd, const double *pos, double *accel) +{ + size_t i; + const double earth_gm = 3.9860044e+14; /* in m^3/s^2 */ + const double solar_gm = 1.3271243994e+20; /* m^3/s^2 */ + const double lunar_gm = 4.902798e+12; /* m^3/s^2 */ + double r = vector_len( pos); + double accel_factor = -earth_gm / (r * r * r); + double lunar_xyzr[4], solar_xyzr[4]; + unsigned obj_idx; + + for( i = 0; i < 3; i++) + accel[i] = accel_factor * pos[i]; + lunar_solar_position( jd, lunar_xyzr, solar_xyzr); + for( obj_idx = 0; obj_idx < 2; obj_idx++) + { + double *opos = (obj_idx ? lunar_xyzr : solar_xyzr); + double delta[3], d; + const double gm = (obj_idx ? lunar_gm : solar_gm); + double accel_factor2; + + accel_factor = gm / (opos[3] * opos[3] * opos[3]); + for( i = 0; i < 3; i++) + delta[i] = opos[i] - pos[i]; + d = vector_len( delta); + accel_factor2 = gm / (d * d * d); + for( i = 0; i < 3; i++) + accel[i] -= accel_factor * opos[i] - accel_factor2 * delta[i]; + } + return( 0); +} + +static int calc_state_vector_deriv( const double jd, + const double state_vect[6], double deriv[6]) +{ + deriv[0] = state_vect[3]; + deriv[1] = state_vect[4]; + deriv[2] = state_vect[5]; + return( calc_accel( jd, state_vect, deriv + 3)); +} + +/* NOTE: t_since is in minutes, posn is in km, vel is in km/minutes. +State vector is in meters and m/s. Hence some conversions... + +'high_ephemeris()' does the actual RK4 numerical integration, using a +simplified model of the earth and moon and a quite basic integration +step size adjustment so that it can take small steps when the object is +close to the earth or moon and larger steps when far away. As described +above, any temptation to "improve" the integration should be resisted. */ + +static int high_ephemeris( double tsince, const tle_t *tle, const double *params, + double *pos, double *vel) +{ + const double meters_per_km = 1000.; + const double seconds_per_minute = 60.; + const double seconds_per_day = + seconds_per_minute * minutes_per_day; /* a.k.a. 86400 */ + size_t i, j; + double jd = tle->epoch, state_vect[6]; + + for( i = 0; i < 6; i++) + state_vect[i] = params[i]; + tsince /= minutes_per_day; /* input was in minutes; days are */ + while( tsince) /* more convenient hereforth */ + { + double dt = tsince, dt_in_seconds; + double max_step = 1.; + double kvects[4][6]; + + calc_state_vector_deriv( jd, state_vect, kvects[0]); + for( j = 3; j < 6; j++) + if( max_step > 1e-3 / fabs( kvects[0][j])) + max_step = 1e-3 / fabs( kvects[0][j]); + if( max_step < 1e-5) + max_step = 1e-5; + if( tsince > max_step) + dt = max_step; + else if( tsince < -max_step) + dt = -max_step; + dt_in_seconds = dt * seconds_per_day; + for( j = 1; j < 4; j++) + { + const double step = (j == 3 ? dt_in_seconds : dt_in_seconds * .5); + double tstate[6]; + + for( i = 0; i < 6; i++) + tstate[i] = state_vect[i] + step * kvects[j - 1][i]; + calc_state_vector_deriv( jd + (j == 3 ? dt : dt / 2.), + tstate, kvects[j]); + } + + for( i = 0; i < 6; i++) + state_vect[i] += (dt_in_seconds / 6.) * + (kvects[0][i] + 2. * (kvects[1][i] + kvects[2][i]) + kvects[3][i]); + jd += dt; + tsince -= dt; + } + for( i = 0; i < 3; i++) + { + pos[i] = state_vect[i]; + vel[i] = state_vect[i + 3]; + } + ecliptic_to_equatorial( vel); + ecliptic_to_equatorial( pos); + /* Now, cvt meters to km, meters/second to km/minute: */ + for( i = 0; i < 3; i++) + { + pos[i] /= meters_per_km; + vel[i] *= seconds_per_minute / meters_per_km; + } + return( 0); +} + +int SDP4( const double tsince, const tle_t *tle, const double *params, + double *pos, double *vel) +{ + double + a, tempa, tsince_squared, + xl, xnoddf; + + if( tle->ephemeris_type == 'H') + { + double unused_vel[3]; + + return( high_ephemeris( tsince, tle, params, pos, (vel ? vel : unused_vel))); + } + /* Update for secular gravity and atmospheric drag */ + deep_arg->omgadf = tle->omegao + deep_arg->omgdot * tsince; + xnoddf = tle->xnodeo + deep_arg->xnodot * tsince; + tsince_squared = tsince*tsince; + deep_arg->xnode = xnoddf + xnodcf * tsince_squared; + deep_arg->xn = deep_arg->xnodp; + + /* Update for deep-space secular effects */ + deep_arg->xll = tle->xmo + deep_arg->xmdot * tsince; + deep_arg->t = tsince; + + Deep_dpsec( tle, deep_arg); + + tempa = 1-c1*tsince; + if( deep_arg->xn < 0.) + return( SXPX_ERR_NEGATIVE_XN); + a = pow(xke/deep_arg->xn,two_thirds)*tempa*tempa; + deep_arg->em -= tle->bstar*c4*tsince; + + /* Update for deep-space periodic effects */ + deep_arg->xll += deep_arg->xnodp * t2cof * tsince_squared; + + Deep_dpper( tle, deep_arg); + + /* Keeping xinc positive is not really necessary, unless */ + /* you're displaying elements and dislike negative inclinations. */ +#ifdef KEEP_INCLINATION_POSITIVE + if (deep_arg->xinc < 0.) /* Begin April 1983 errata correction: */ + { + deep_arg->xinc = -deep_arg->xinc; + deep_arg->sinio = -deep_arg->sinio; + deep_arg->xnode += pi; + deep_arg->omgadf -= pi; + } /* End April 1983 errata correction. */ +#endif + + xl = deep_arg->xll + deep_arg->omgadf + deep_arg->xnode; + /* Dundee change: Reset cosio, sinio for new xinc: */ + deep_arg->cosio = cos( deep_arg->xinc); + deep_arg->sinio = sin( deep_arg->xinc); + + return( sxpx_posn_vel( deep_arg->xnode, a, deep_arg->em, deep_arg->cosio, + deep_arg->sinio, deep_arg->xinc, deep_arg->omgadf, + xl, pos, vel)); +} /* SDP4 */ diff --git a/src/sgp4/sgp4.c b/src/sgp4/sgp4.c new file mode 100644 index 0000000..0f1bb4d --- /dev/null +++ b/src/sgp4/sgp4.c @@ -0,0 +1,150 @@ +/* Copyright (C) 2018, Project Pluto. See LICENSE. + * + * sgp4.c - Near-earth satellite propagator (orbital period < 225 min) + * + * Implements the SGP4 model from STR#2 (Lane & Hoots 1979), as unified + * in STR#3 (Hoots & Roehrich 1980) Chapter 6 (pp. 25-32). + * + * SGP4_init(): Computes drag coefficients c1..c5, d2..d4, and the + * "simple" vs full mode flag (perigee < 220 km truncates to linear + * variation in sqrt(a) and quadratic in mean anomaly). + * STR#3 Eqs. 6-1..6-17, Vallado Rev-1 Section III. + * + * SGP4(): Secular updates for gravity + atmospheric drag, then delegates + * to sxpx_posn_vel() for Kepler solution and short-period corrections. + * STR#3 Eqs. 6-18..6-32, Vallado Rev-1 Eqs. 18-22. + */ + +#include +#include +#include "norad.h" +#include "norad_in.h" + +#define c1 params[2] +#define c4 params[3] +#define xnodcf params[4] +#define t2cof params[5] +#define p_aodp params[10] +#define p_cosio params[11] +#define p_sinio params[12] +#define p_omgdot params[13] +#define p_xmdot params[14] +#define p_xnodot params[15] +#define p_xnodp params[16] +#define c5 params[17] +#define d2 params[18] +#define d3 params[19] +#define d4 params[20] +#define delmo params[21] +#define p_eta params[22] +#define omgcof params[23] +#define sinmo params[24] +#define t3cof params[25] +#define t4cof params[26] +#define t5cof params[27] +#define xmcof params[28] +#define simple_flag *((int *)( params + 29)) +#define MINIMAL_E 1.e-4 +#define ECC_EPS 1.e-6 /* Too low for computing further drops. */ + +void SGP4_init( double *params, const tle_t *tle) +{ + deep_arg_t deep_arg; + init_t init; + double eeta, etasq; + + sxpx_common_init( params, tle, &init, &deep_arg); + p_aodp = deep_arg.aodp; + p_cosio = deep_arg.cosio; + p_sinio = deep_arg.sinio; + p_omgdot = deep_arg.omgdot; + p_xmdot = deep_arg.xmdot; + p_xnodot = deep_arg.xnodot; + p_xnodp = deep_arg.xnodp; + p_eta = deep_arg.aodp*tle->eo*init.tsi; +// p_eta = init.eta; + + eeta = tle->eo*p_eta; + /* For perigee less than 220 kilometers, the "simple" flag is set */ + /* and the equations are truncated to linear variation in sqrt a */ + /* and quadratic variation in mean anomaly. Also, the c3 term, */ + /* the delta omega term, and the delta m term are dropped. */ + simple_flag = ((p_aodp*(1-tle->eo)/ae) < (220./earth_radius_in_km+ae)); + if( !simple_flag) + { + const double c1sq = c1*c1; + double temp; + + simple_flag = 0; + delmo = 1. + p_eta * cos(tle->xmo); + delmo *= delmo * delmo; + d2 = 4*p_aodp*init.tsi*c1sq; + temp = d2*init.tsi*c1/3; + d3 = (17*p_aodp+init.s4)*temp; + d4 = 0.5*temp*p_aodp*init.tsi*(221*p_aodp+31*init.s4)*c1; + t3cof = d2+2*c1sq; + t4cof = 0.25*(3*d3+c1*(12*d2+10*c1sq)); + t5cof = 0.2*(3*d4+12*c1*d3+6*d2*d2+15*c1sq*(2*d2+c1sq)); + sinmo = sin(tle->xmo); + if( tle->eo < MINIMAL_E) + omgcof = xmcof = 0.; + else + { + const double c3 = + init.coef * init.tsi * a3ovk2 * p_xnodp * ae * p_sinio / tle->eo; + + xmcof = -two_thirds * init.coef * tle->bstar * ae / eeta; + omgcof = tle->bstar*c3*cos(tle->omegao); + } + } /* End of if (isFlagClear(SIMPLE_FLAG)) */ + etasq = p_eta * p_eta; + c5 = 2*init.coef1*p_aodp * deep_arg.betao2*(1+2.75*(etasq+eeta)+eeta*etasq); +} /* End of SGP4() initialization */ + +int SGP4( const double tsince, const tle_t *tle, const double *params, + double *pos, double *vel) +{ + double + a, e, omega, omgadf, + temp, tempa, tempe, templ, tsq, + xl, xmdf, xmp, xnoddf, xnode; + + /* Update for secular gravity and atmospheric drag. */ + xmdf = tle->xmo+p_xmdot*tsince; + omgadf = tle->omegao+p_omgdot*tsince; + xnoddf = tle->xnodeo+p_xnodot*tsince; + omega = omgadf; + xmp = xmdf; + tsq = tsince*tsince; + xnode = xnoddf+xnodcf*tsq; + tempa = 1-c1*tsince; + tempe = tle->bstar*c4*tsince; + templ = t2cof*tsq; + if( !simple_flag) + { + const double delomg = omgcof*tsince; + double delm = 1. + p_eta * cos(xmdf); + double tcube, tfour; + + delm = xmcof * (delm * delm * delm - delmo); + temp = delomg+delm; + xmp = xmdf+temp; + omega = omgadf-temp; + tcube = tsq*tsince; + tfour = tsince*tcube; + tempa = tempa-d2*tsq-d3*tcube-d4*tfour; + tempe = tempe+tle->bstar*c5*(sin(xmp)-sinmo); + templ = templ+t3cof*tcube+tfour*(t4cof+tsince*t5cof); + }; /* End of if (isFlagClear(SIMPLE_FLAG)) */ + + a = p_aodp*tempa*tempa; + e = tle->eo-tempe; + /* A highly arbitrary lower limit on e, of 1e-6: */ + if( e < ECC_EPS) + e = ECC_EPS; + xl = xmp+omega+xnode+p_xnodp*templ; + if( tempa < 0.) /* force negative a, to indicate error condition */ + a = -a; + return( sxpx_posn_vel( xnode, a, e, p_cosio, p_sinio, tle->xincl, + omega, xl, pos, vel)); +} /*SGP4*/ diff --git a/src/sgp4/tle_out.c b/src/sgp4/tle_out.c new file mode 100644 index 0000000..b02d313 --- /dev/null +++ b/src/sgp4/tle_out.c @@ -0,0 +1,303 @@ +/* Copyright (C) 2018, Project Pluto. See LICENSE. + * + * tle_out.c - TLE (Two-Line Element) output formatting + * + * Converts in-memory tle_t structures back to the standard NORAD TLE + * text format. Inverse of get_el.c. Format per STR#3 Appendix (pp. 83-91). + * + * Key conversions (reverse of parsing): + * - Angles: radians -> degrees, normalized to [0, 360) + * - Mean motion: rad/min -> rev/day + * - B* drag: double -> quasi-scientific notation (sDDDDDSe) + * - Epoch: Julian Date -> YY+DDD.DDDDDDDD + * + * Also handles Alpha-5/Super-5 catalog numbers and 'H' state vectors. + * See: https://en.wikipedia.org/wiki/Two-line_elements + */ + +#include +#include +#include +#include +#include +#include "norad.h" + + /* Useful constants to define, in case the value of PI or the number + of minutes in a day should change: */ +#define PI 3.141592653589793238462643383279502884197169399375105 +#define MINUTES_PER_DAY 1440. +#define MINUTES_PER_DAY_SQUARED (MINUTES_PER_DAY * MINUTES_PER_DAY) +#define MINUTES_PER_DAY_CUBED (MINUTES_PER_DAY_SQUARED * MINUTES_PER_DAY) + +#define AE 1.0 +#define J1900 (2451545.5 - 36525. - 1.) + +static int add_tle_checksum_data( char *buff) +{ + int count = 69, rval = 0; + + if( (*buff != '1' && *buff != '2') || buff[1] != ' ') + return( 0); /* not a .TLE */ + while( --count) + { + if( *buff < ' ' || *buff > 'z') + return( 0); /* wups! those shouldn't happen in .TLEs */ + if( *buff > '0' && *buff <= '9') + rval += *buff - '0'; + else if( *buff == '-') + rval++; + buff++; + } + if( *buff != 10 && buff[1] != 10 && buff[2] != 10) + return( 0); /* _still_ not a .TLE */ + *buff++ = (char)( '0' + (rval % 10)); + *buff++ = 13; + *buff++ = 10; + *buff++ = '\0'; + return( 1); +} + +static double zero_to_two_pi( double angle_in_radians) +{ + angle_in_radians = fmod( angle_in_radians, PI + PI); + if( angle_in_radians < 0.) + angle_in_radians += PI + PI; + return( angle_in_radians); +} + +/* See comments for get_high_value() in 'get_el.cpp'. Essentially, we are + writing out a state vector in a convoluted base-36 form. */ + +static void set_high_value( char *obuff, const double value) +{ + int64_t oval = (int64_t)fabs( value); + int i; + + *obuff++ = (value >= 0. ? '+' : '-'); + for( i = 7; i >= 0; i--, oval /= (int64_t)36) + { + obuff[i] = (char)( oval % (int64_t)36); + if( obuff[i] < 10) + obuff[i] += '0'; + else + obuff[i] += 'A' - 10; + } + obuff[8] = ' '; +} + + +/* The second derivative of the mean motion, 'xnddo6', and the 'bstar' +drag term, are stored in a simplified scientific notation. To save +valuable bytes, the decimal point and 'E' are assumed. */ + +static void put_sci( char *obuff, double ival) +{ + if( !ival) + memcpy( obuff, " 00000-0", 7); + else + { + int oval, exponent = 0; + + if( ival > 0.) + *obuff++ = ' '; + else + { + *obuff++ = '-'; + ival = -ival; + } + while( 1) + { + if( ival > 1.) /* avoid integer overflow */ + oval = 100000; + else + oval = (int)( ival * 100000. + .5); + if( oval > 99999) + { + ival /= 10; + exponent++; + } + else if( oval < 10000) + { + ival *= 10; + exponent--; + } + else + break; + } + snprintf( obuff, 7, "%5d", oval); + assert( 5 == strlen( obuff)); + if( exponent > 0) + { + obuff[5] = '+'; + obuff[6] = (char)( '0' + exponent); + } + else + { + obuff[5] = '-'; + obuff[6] = (char)( '0' - exponent); + } + } +} + +/* See comments for get_norad_number( ) in get_el.cpp. This +performs the reverse function of setting the five bytes corresponding +to a NORAD number, using the 'standard' Alpha-5 method for numbers +0 to 339000 and the nonstandard Super-5 method beyond that. */ + +static char int_to_base64( const int digit) +{ + int rval; + + assert( digit >= 0 && digit < 64); + if( digit < 0 || digit >= 64) + rval = ' '; + else if( digit < 10) + rval = '0' + digit; + else if( digit < 36) + rval = 'A' + digit - 10; + else if( digit < 62) + rval = 'a' + digit - 36; + else + rval = (digit == 62 ? '+' : '-'); + return( rval); +} + +static void store_norad_number_in_alpha5( char *obuff, const int norad_number) +{ + const int N_TYPE_STANDARD = 340000; /* five digits plus Alpha-5 */ + const int N_TYPE_2 = 64 * 64 * 64 * 64 * 54; /* xxxxL */ +/* const int N_TYPE_3 = 64 * 64 * 64 * 54 * 10; xxxLd; we don't actually use this */ + const int one_billion = 1000000000; + int i, tval = norad_number; + + assert( norad_number >= 0 && norad_number < one_billion); + if( norad_number < 0 || norad_number >= one_billion) + strcpy( obuff, " "); /* outside representable range */ + else if( norad_number < N_TYPE_STANDARD) + { + for( i = 4; i > 0; i--, tval /= 10) + obuff[i] = '0' + (tval % 10); + *obuff = int_to_base64( tval); + if( *obuff >= 'I') + (*obuff)++; + if( *obuff >= 'O') + (*obuff)++; + } + else if( norad_number < N_TYPE_STANDARD + N_TYPE_2) + { + tval -= N_TYPE_STANDARD; + obuff[4] = int_to_base64( tval % 54 + 10); + tval /= 54; + for( i = 3; i >= 0; i--, tval >>= 6) + obuff[i] = int_to_base64( tval & 0x3f); + } + else + { + tval -= N_TYPE_STANDARD + N_TYPE_2; + obuff[4] = int_to_base64( tval % 10); + obuff[3] = int_to_base64( (tval / 10) % 54 + 10); + tval /= 540; + for( i = 2; i >= 0; i--, tval >>= 6) + obuff[i] = int_to_base64( tval & 0x3f); + } + obuff[5] = '\0'; +} + +/* SpaceTrack TLEs have, on the second line, leading zeroes in front of the +inclination, ascending node, argument of perigee, and mean motion. Which +is why I've used this format string : + + snprintf( line2 + 8, 57, "%08.4f %08.4f %07ld %08.4f %08.4f %011.8f", ...) + + 'classfd.tle' and some other sources don't use leading zeroes. For them, +one should use the following format string for those four quantities : + + snprintf( line2 + 8, 57, "%8.4f %8.4f %07ld %8.4f %8.4f %11.8f", ...) */ + +void write_elements_in_tle_format( char *buff, const tle_t *tle) +{ + long year = (long)( tle->epoch - J1900) / 365 + 1; + double day_of_year; + char *line2, norad_num_text[6]; + + do + { + double start_of_year; + + year--; + start_of_year = J1900 + (double)year * 365. + (double)((year - 1) / 4); + day_of_year = tle->epoch - start_of_year; + } + while( day_of_year < 1.); + if( year < 0 || year > 200) /* bogus input */ + { + year = 56; + day_of_year = 0.; + } + store_norad_number_in_alpha5( norad_num_text, tle->norad_number); + snprintf( buff, 72, +/* xndt2o xndd6o bstar eph bull */ + "1 %5s%c %-8s %02ld%12.8f -.000hit00 +00000-0 +00000-0 %c %4dZ\n", + norad_num_text, tle->classification, tle->intl_desig, + year % 100L, day_of_year, + tle->ephemeris_type, tle->bulletin_number); + if( buff[20] == ' ') /* fill in leading zeroes for day of year */ + buff[20] = '0'; + if( buff[21] == ' ') + buff[21] = '0'; + if( tle->ephemeris_type != 'H') /* "normal", standard TLEs */ + { + double deriv_mean_motion = tle->xndt2o * MINUTES_PER_DAY_SQUARED / (2. * PI); + unsigned long lderiv; + + if( deriv_mean_motion >= 0) + buff[33] = ' '; + lderiv = (unsigned long)( fabs( deriv_mean_motion * 100000000.) + .5); + assert( lderiv < 100000000); + snprintf( buff + 35, 10, "%08lu", lderiv); + assert( 8 == strlen( buff + 35)); + buff[43] = ' '; + put_sci( buff + 44, tle->xndd6o * MINUTES_PER_DAY_CUBED / (2. * PI)); + put_sci( buff + 53, tle->bstar / AE); + } + else + { + size_t i; + const double *posn = &tle->xincl; + + for( i = 0; i < 3; i++) + set_high_value( buff + 33 + i * 10, posn[i]); + buff[62] = 'H'; + } + add_tle_checksum_data( buff); + assert( 71 == strlen( buff)); + line2 = buff + 71; + snprintf( line2, 10, "2 %5s ", norad_num_text); + assert( 8 == strlen( line2)); + if( tle->ephemeris_type != 'H') /* "normal", standard TLEs */ + { + const double revs_per_day = tle->xno * MINUTES_PER_DAY / (2. * PI); + + assert( revs_per_day > 0. && revs_per_day < 99.); + snprintf( line2 + 8, 57, "%08.4f %08.4f %07ld %08.4f %08.4f %011.8f", + zero_to_two_pi( tle->xincl) * 180. / PI, + zero_to_two_pi( tle->xnodeo) * 180. / PI, + (long)( tle->eo * 10000000. + .5), + zero_to_two_pi( tle->omegao) * 180. / PI, + zero_to_two_pi( tle->xmo) * 180. / PI, + revs_per_day); + assert( 55 == strlen( line2 + 8)); + } + else + { + size_t i; + const double *vel = &tle->xincl + 3; + + memset( line2 + 8, ' ', 25); /* reserved for future use */ + for( i = 0; i < 3; i++) + set_high_value( line2 + 33 + i * 10, vel[i] * 1e+4); + } + assert( tle->revolution_number >= 0 && tle->revolution_number < 100000); + snprintf( line2 + 63, 8, "%5dZ\n", tle->revolution_number); + add_tle_checksum_data( line2); +} diff --git a/test/data/vallado_518.json b/test/data/vallado_518.json new file mode 100644 index 0000000..4d01eda --- /dev/null +++ b/test/data/vallado_518.json @@ -0,0 +1,7068 @@ +{ + "source": "AIAA 2006-6753-Rev1, Appendices D & E", + "description": "SGP4 verification test cases from 'Revisiting Spacetrack Report #3: Rev 1' by Vallado, Crawford, Hujsak, and Kelso", + "coordinate_system": "TEME of date", + "constants": "WGS-72", + "mode": "afspc (option 'a')", + "lyddane_choice": "perturbed inclination (GSFC)", + "position_units": "km", + "velocity_units": "km/s", + "tsince_units": "minutes from epoch", + "total_satellites": 29, + "total_predictions": 518, + "test_cases": [ + { + "satellite": "00005", + "description": "TEME example", + "tle_line1": "1 00005U 58002B 00179.78495062 .00000023 00000-0 28098-4 0 4753", + "tle_line2": "2 00005 34.2682 348.7242 1859667 331.7664 19.3264 10.82419157413667", + "startmfe": 0.0, + "stopmfe": 4320.0, + "deltamin": 360.0, + "predictions": [ + { + "tsince_min": 0.0, + "position_km": { + "x": "7022.46529266", + "y": "-1400.08296755", + "z": "0.03995155" + }, + "velocity_km_s": { + "x": "1.893841015", + "y": "6.405893759", + "z": "4.534807250" + } + }, + { + "tsince_min": 360.0, + "position_km": { + "x": "-7154.03120202", + "y": "-3783.17682504", + "z": "-3536.19412294" + }, + "velocity_km_s": { + "x": "4.741887409", + "y": "-4.151817765", + "z": "-2.093935425" + } + }, + { + "tsince_min": 720.0, + "position_km": { + "x": "-7134.59340119", + "y": "6531.68641334", + "z": "3260.27186483" + }, + "velocity_km_s": { + "x": "-4.113793027", + "y": "-2.911922039", + "z": "-2.557327851" + } + }, + { + "tsince_min": 1080.0, + "position_km": { + "x": "5568.53901181", + "y": "4492.06992591", + "z": "3863.87641983" + }, + "velocity_km_s": { + "x": "-4.209106476", + "y": "5.159719888", + "z": "2.744852980" + } + }, + { + "tsince_min": 1440.0, + "position_km": { + "x": "-938.55923943", + "y": "-6268.18748831", + "z": "-4294.02924751" + }, + "velocity_km_s": { + "x": "7.536105209", + "y": "-0.427127707", + "z": "0.989878080" + } + }, + { + "tsince_min": 1800.0, + "position_km": { + "x": "-9680.56121728", + "y": "2802.47771354", + "z": "124.10688038" + }, + "velocity_km_s": { + "x": "-0.905874102", + "y": "-4.659467970", + "z": "-3.227347517" + } + }, + { + "tsince_min": 2160.0, + "position_km": { + "x": "190.19796988", + "y": "7746.96653614", + "z": "5110.00675412" + }, + "velocity_km_s": { + "x": "-6.112325142", + "y": "1.527008184", + "z": "-0.139152358" + } + }, + { + "tsince_min": 2520.0, + "position_km": { + "x": "5579.55640116", + "y": "-3995.61396789", + "z": "-1518.82108966" + }, + "velocity_km_s": { + "x": "4.767927483", + "y": "5.123185301", + "z": "4.276837355" + } + }, + { + "tsince_min": 2880.0, + "position_km": { + "x": "-8650.73082219", + "y": "-1914.93811525", + "z": "-3007.03603443" + }, + "velocity_km_s": { + "x": "3.067165127", + "y": "-4.828384068", + "z": "-2.515322836" + } + }, + { + "tsince_min": 3240.0, + "position_km": { + "x": "-5429.79204164", + "y": "7574.36493792", + "z": "3747.39305236" + }, + "velocity_km_s": { + "x": "-4.999442110", + "y": "-1.800561422", + "z": "-2.229392830" + } + }, + { + "tsince_min": 3600.0, + "position_km": { + "x": "6759.04583722", + "y": "2001.58198220", + "z": "2783.55192533" + }, + "velocity_km_s": { + "x": "-2.180993947", + "y": "6.402085603", + "z": "3.644723952" + } + }, + { + "tsince_min": 3960.0, + "position_km": { + "x": "-3791.44531559", + "y": "-5712.95617894", + "z": "-4533.48630714" + }, + "velocity_km_s": { + "x": "6.668817493", + "y": "-2.516382327", + "z": "-0.082384354" + } + }, + { + "tsince_min": 4320.0, + "position_km": { + "x": "-9060.47373569", + "y": "4658.70952502", + "z": "813.68673153" + }, + "velocity_km_s": { + "x": "-2.232832783", + "y": "-4.110453490", + "z": "-3.157345433" + } + } + ] + }, + { + "satellite": "04632", + "description": "Lyddane fix error with GSFC ver (fig)", + "tle_line1": "1 04632U 70093B 04031.91070959 -.00000084 00000-0 10000-3 0 9955", + "tle_line2": "2 04632 11.4628 273.1101 1450506 207.6000 143.9350 1.20231981 44145", + "startmfe": -5184.0, + "stopmfe": -4896.0, + "deltamin": 120.0, + "predictions": [ + { + "tsince_min": 0.0, + "position_km": { + "x": "2334.11450085", + "y": "-41920.44035349", + "z": "-0.03867437" + }, + "velocity_km_s": { + "x": "2.826321032", + "y": "-0.065091664", + "z": "0.570936053" + } + }, + { + "tsince_min": -5184.0, + "position_km": { + "x": "-29020.02587128", + "y": "13819.84419063", + "z": "-5713.33679183" + }, + "velocity_km_s": { + "x": "-1.768068390", + "y": "-3.235371192", + "z": "-0.395206135" + } + }, + { + "tsince_min": -5064.0, + "position_km": { + "x": "-32982.56870101", + "y": "-11125.54996609", + "z": "-6803.28472771" + }, + "velocity_km_s": { + "x": "0.617446996", + "y": "-3.379240041", + "z": "0.085954707" + } + }, + { + "tsince_min": -4944.0, + "position_km": { + "x": "-22097.68730513", + "y": "-31583.13829284", + "z": "-4836.34329328" + }, + "velocity_km_s": { + "x": "2.230597499", + "y": "-2.166594667", + "z": "0.426443070" + } + }, + { + "tsince_min": -4896.0, + "position_km": { + "x": "-15129.94694545", + "y": "-36907.74526221", + "z": "-3487.56256701" + }, + "velocity_km_s": { + "x": "2.581167187", + "y": "-1.524204737", + "z": "0.504805763" + } + } + ] + }, + { + "satellite": "06251", + "description": "DELTA 1 DEB - near earth normal drag, perigee=377.26km", + "tle_line1": "1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985", + "tle_line2": "2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774", + "startmfe": 0.0, + "stopmfe": 2880.0, + "deltamin": 120.0, + "predictions": [ + { + "tsince_min": 0.0, + "position_km": { + "x": "3988.31022699", + "y": "5498.96657235", + "z": "0.90055879" + }, + "velocity_km_s": { + "x": "-3.290032738", + "y": "2.357652820", + "z": "6.496623475" + } + }, + { + "tsince_min": 120.0, + "position_km": { + "x": "-3935.69800083", + "y": "409.10980837", + "z": "5471.33577327" + }, + "velocity_km_s": { + "x": "-3.374784183", + "y": "-6.635211043", + "z": "-1.942056221" + } + }, + { + "tsince_min": 240.0, + "position_km": { + "x": "-1675.12766915", + "y": "-5683.30432352", + "z": "-3286.21510937" + }, + "velocity_km_s": { + "x": "5.282496925", + "y": "1.508674259", + "z": "-5.354872978" + } + }, + { + "tsince_min": 360.0, + "position_km": { + "x": "4993.62642836", + "y": "2890.54969900", + "z": "-3600.40145627" + }, + "velocity_km_s": { + "x": "0.347333429", + "y": "5.707031557", + "z": "5.070699638" + } + }, + { + "tsince_min": 480.0, + "position_km": { + "x": "-1115.07959514", + "y": "4015.11691491", + "z": "5326.99727718" + }, + "velocity_km_s": { + "x": "-5.524279443", + "y": "-4.765738774", + "z": "2.402255961" + } + }, + { + "tsince_min": 600.0, + "position_km": { + "x": "-4329.10008198", + "y": "-5176.70287935", + "z": "409.65313857" + }, + "velocity_km_s": { + "x": "2.858408303", + "y": "-2.933091792", + "z": "-6.509690397" + } + }, + { + "tsince_min": 720.0, + "position_km": { + "x": "3692.60030028", + "y": "-976.24265255", + "z": "-5623.36447493" + }, + "velocity_km_s": { + "x": "3.897257243", + "y": "6.415554948", + "z": "1.429112190" + } + }, + { + "tsince_min": 840.0, + "position_km": { + "x": "2301.83510037", + "y": "5723.92394553", + "z": "2814.61514580" + }, + "velocity_km_s": { + "x": "-5.110924966", + "y": "-0.764510559", + "z": "5.662120145" + } + }, + { + "tsince_min": 960.0, + "position_km": { + "x": "-4990.91637950", + "y": "-2303.42547880", + "z": "3920.86335598" + }, + "velocity_km_s": { + "x": "-0.993439372", + "y": "-5.967458360", + "z": "-4.759110856" + } + }, + { + "tsince_min": 1080.0, + "position_km": { + "x": "642.27769977", + "y": "-4332.89821901", + "z": "-5183.31523910" + }, + "velocity_km_s": { + "x": "5.720542579", + "y": "4.216573838", + "z": "-2.846576139" + } + }, + { + "tsince_min": 1200.0, + "position_km": { + "x": "4719.78335752", + "y": "4798.06938996", + "z": "-943.58851062" + }, + "velocity_km_s": { + "x": "-2.294860662", + "y": "3.492499389", + "z": "6.408334723" + } + }, + { + "tsince_min": 1320.0, + "position_km": { + "x": "-3299.16993602", + "y": "1576.83168320", + "z": "5678.67840638" + }, + "velocity_km_s": { + "x": "-4.460347074", + "y": "-6.202025196", + "z": "-0.885874586" + } + }, + { + "tsince_min": 1440.0, + "position_km": { + "x": "-2777.14682335", + "y": "-5663.16031708", + "z": "-2462.54889123" + }, + "velocity_km_s": { + "x": "4.915493146", + "y": "0.123328992", + "z": "-5.896495091" + } + }, + { + "tsince_min": 1560.0, + "position_km": { + "x": "4992.31573893", + "y": "1716.62356770", + "z": "-4287.86065581" + }, + "velocity_km_s": { + "x": "1.640717189", + "y": "6.071570434", + "z": "4.338797931" + } + }, + { + "tsince_min": 1680.0, + "position_km": { + "x": "-8.22384755", + "y": "4662.21521668", + "z": "4905.66411857" + }, + "velocity_km_s": { + "x": "-5.891011274", + "y": "-3.593173872", + "z": "3.365100460" + } + }, + { + "tsince_min": 1800.0, + "position_km": { + "x": "-4966.20137963", + "y": "-4379.59155037", + "z": "1349.33347502" + }, + "velocity_km_s": { + "x": "1.763172581", + "y": "-3.981456387", + "z": "-6.343279443" + } + }, + { + "tsince_min": 1920.0, + "position_km": { + "x": "2954.49390331", + "y": "-2080.65984650", + "z": "-5754.75038057" + }, + "velocity_km_s": { + "x": "4.895893306", + "y": "5.858184322", + "z": "0.375474825" + } + }, + { + "tsince_min": 2040.0, + "position_km": { + "x": "3363.28794321", + "y": "5559.55841180", + "z": "1956.05542266" + }, + "velocity_km_s": { + "x": "-4.587378863", + "y": "0.591943403", + "z": "6.107838605" + } + }, + { + "tsince_min": 2160.0, + "position_km": { + "x": "-4856.66780070", + "y": "-1107.03450192", + "z": "4557.21258241" + }, + "velocity_km_s": { + "x": "-2.304158557", + "y": "-6.186437070", + "z": "-3.956549542" + } + }, + { + "tsince_min": 2280.0, + "position_km": { + "x": "-497.84480071", + "y": "-4863.46005312", + "z": "-4700.81211217" + }, + "velocity_km_s": { + "x": "5.960065407", + "y": "2.996683369", + "z": "-3.767123329" + } + }, + { + "tsince_min": 2400.0, + "position_km": { + "x": "5241.61936096", + "y": "3910.75960683", + "z": "-1857.93473952" + }, + "velocity_km_s": { + "x": "-1.124834806", + "y": "4.406213160", + "z": "6.148161299" + } + }, + { + "tsince_min": 2520.0, + "position_km": { + "x": "-2451.38045953", + "y": "2610.60463261", + "z": "5729.79022069" + }, + "velocity_km_s": { + "x": "-5.366560525", + "y": "-5.500855666", + "z": "0.187958716" + } + }, + { + "tsince_min": 2640.0, + "position_km": { + "x": "-3791.87520638", + "y": "-5378.82851382", + "z": "-1575.82737930" + }, + "velocity_km_s": { + "x": "4.266273592", + "y": "-1.199162551", + "z": "-6.276154080" + } + }, + { + "tsince_min": 2760.0, + "position_km": { + "x": "4730.53958356", + "y": "524.05006433", + "z": "-4857.29369725" + }, + "velocity_km_s": { + "x": "2.918056288", + "y": "6.135412849", + "z": "3.495115636" + } + }, + { + "tsince_min": 2880.0, + "position_km": { + "x": "1159.27802897", + "y": "5056.60175495", + "z": "4353.49418579" + }, + "velocity_km_s": { + "x": "-5.968060341", + "y": "-2.314790406", + "z": "4.230722669" + } + } + ] + }, + { + "satellite": "08195", + "description": "MOLNIYA 2-14 - 12h resonant ecc 0.65-0.7", + "tle_line1": "1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813", + "tle_line2": "2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656", + "startmfe": 0.0, + "stopmfe": 2880.0, + "deltamin": 120.0, + "predictions": [ + { + "tsince_min": 0.0, + "position_km": { + "x": "2349.89483350", + "y": "-14785.93811562", + "z": "0.02119378" + }, + "velocity_km_s": { + "x": "2.721488096", + "y": "-3.256811655", + "z": "4.498416672" + } + }, + { + "tsince_min": 120.0, + "position_km": { + "x": "15223.91713658", + "y": "-17852.95881713", + "z": "25280.39558224" + }, + "velocity_km_s": { + "x": "1.079041732", + "y": "0.875187372", + "z": "2.485682813" + } + }, + { + "tsince_min": 240.0, + "position_km": { + "x": "19752.78050009", + "y": "-8600.07130962", + "z": "37522.72921090" + }, + "velocity_km_s": { + "x": "0.238105279", + "y": "1.546110924", + "z": "0.986410447" + } + }, + { + "tsince_min": 360.0, + "position_km": { + "x": "19089.29762968", + "y": "3107.89495018", + "z": "39958.14661370" + }, + "velocity_km_s": { + "x": "-0.410308034", + "y": "1.640332277", + "z": "-0.306873818" + } + }, + { + "tsince_min": 480.0, + "position_km": { + "x": "13829.66070574", + "y": "13977.39999817", + "z": "32736.32082508" + }, + "velocity_km_s": { + "x": "-1.065096849", + "y": "1.279983299", + "z": "-1.760166075" + } + }, + { + "tsince_min": 600.0, + "position_km": { + "x": "3333.05838525", + "y": "18395.31728674", + "z": "12738.25031238" + }, + "velocity_km_s": { + "x": "-1.882432221", + "y": "-0.611623333", + "z": "-4.039586549" + } + }, + { + "tsince_min": 720.0, + "position_km": { + "x": "2622.13222207", + "y": "-15125.15464924", + "z": "474.51048398" + }, + "velocity_km_s": { + "x": "2.688287199", + "y": "-3.078426664", + "z": "4.494979530" + } + }, + { + "tsince_min": 840.0, + "position_km": { + "x": "15320.56770017", + "y": "-17777.32564586", + "z": "25539.53198382" + }, + "velocity_km_s": { + "x": "1.064346229", + "y": "0.892184771", + "z": "2.459822414" + } + }, + { + "tsince_min": 960.0, + "position_km": { + "x": "19769.70267785", + "y": "-8458.65104454", + "z": "37624.20130236" + }, + "velocity_km_s": { + "x": "0.229304396", + "y": "1.550363884", + "z": "0.966993056" + } + }, + { + "tsince_min": 1080.0, + "position_km": { + "x": "19048.56201523", + "y": "3260.43223119", + "z": "39923.39143967" + }, + "velocity_km_s": { + "x": "-0.418015536", + "y": "1.639346953", + "z": "-0.326094840" + } + }, + { + "tsince_min": 1200.0, + "position_km": { + "x": "13729.19205837", + "y": "14097.70014810", + "z": "32547.52799890" + }, + "velocity_km_s": { + "x": "-1.074511043", + "y": "1.270505211", + "z": "-1.785099927" + } + }, + { + "tsince_min": 1320.0, + "position_km": { + "x": "3148.86165643", + "y": "18323.19841703", + "z": "12305.75195578" + }, + "velocity_km_s": { + "x": "-1.895271701", + "y": "-0.678343847", + "z": "-4.086577951" + } + }, + { + "tsince_min": 1440.0, + "position_km": { + "x": "2890.80638268", + "y": "-15446.43952300", + "z": "948.77010176" + }, + "velocity_km_s": { + "x": "2.654407490", + "y": "-2.909344895", + "z": "4.486437362" + } + }, + { + "tsince_min": 1560.0, + "position_km": { + "x": "15415.98410712", + "y": "-17699.90714437", + "z": "25796.19644689" + }, + "velocity_km_s": { + "x": "1.049818334", + "y": "0.908822332", + "z": "2.434107329" + } + }, + { + "tsince_min": 1680.0, + "position_km": { + "x": "19786.00618538", + "y": "-8316.74570581", + "z": "37723.74539119" + }, + "velocity_km_s": { + "x": "0.220539813", + "y": "1.554518900", + "z": "0.947601047" + } + }, + { + "tsince_min": 1800.0, + "position_km": { + "x": "19007.28688729", + "y": "3412.85948715", + "z": "39886.66579255" + }, + "velocity_km_s": { + "x": "-0.425733568", + "y": "1.638276809", + "z": "-0.345353807" + } + }, + { + "tsince_min": 1920.0, + "position_km": { + "x": "13627.93015254", + "y": "14216.95401307", + "z": "32356.13706868" + }, + "velocity_km_s": { + "x": "-1.083991976", + "y": "1.260802347", + "z": "-1.810193903" + } + }, + { + "tsince_min": 2040.0, + "position_km": { + "x": "2963.26486560", + "y": "18243.85063641", + "z": "11868.25797486" + }, + "velocity_km_s": { + "x": "-1.908015447", + "y": "-0.747870342", + "z": "-4.134004492" + } + }, + { + "tsince_min": 2160.0, + "position_km": { + "x": "3155.85126036", + "y": "-15750.70393364", + "z": "1422.32496953" + }, + "velocity_km_s": { + "x": "2.620085624", + "y": "-2.748990396", + "z": "4.473527039" + } + }, + { + "tsince_min": 2280.0, + "position_km": { + "x": "15510.15191770", + "y": "-17620.71002219", + "z": "26050.43525345" + }, + "velocity_km_s": { + "x": "1.035454678", + "y": "0.925111006", + "z": "2.408534465" + } + }, + { + "tsince_min": 2400.0, + "position_km": { + "x": "19801.67198812", + "y": "-8174.33337167", + "z": "37821.38577439" + }, + "velocity_km_s": { + "x": "0.211812700", + "y": "1.558576937", + "z": "0.928231880" + } + }, + { + "tsince_min": 2520.0, + "position_km": { + "x": "18965.46529379", + "y": "3565.19666242", + "z": "39847.97510998" + }, + "velocity_km_s": { + "x": "-0.433459945", + "y": "1.637120585", + "z": "-0.364653213" + } + }, + { + "tsince_min": 2640.0, + "position_km": { + "x": "13525.88227400", + "y": "14335.15978787", + "z": "32162.13236536" + }, + "velocity_km_s": { + "x": "-1.093537945", + "y": "1.250868256", + "z": "-1.835451681" + } + }, + { + "tsince_min": 2760.0, + "position_km": { + "x": "2776.30574260", + "y": "18156.98538451", + "z": "11425.73046481" + }, + "velocity_km_s": { + "x": "-1.920632199", + "y": "-0.820370733", + "z": "-4.181839232" + } + }, + { + "tsince_min": 2880.0, + "position_km": { + "x": "3417.20931587", + "y": "-16038.79510665", + "z": "1894.74934058" + }, + "velocity_km_s": { + "x": "2.585515864", + "y": "-2.596818146", + "z": "4.456882556" + } + } + ] + }, + { + "satellite": "09880", + "description": "MOLNIYA 1-36 - 12h resonant ecc 0.7-0.715 (fig)", + "tle_line1": "1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814", + "tle_line2": "2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380", + "startmfe": 0.0, + "stopmfe": 2880.0, + "deltamin": 120.0, + "predictions": [ + { + "tsince_min": 0.0, + "position_km": { + "x": "13020.06750784", + "y": "-2449.07193500", + "z": "1.15896030" + }, + "velocity_km_s": { + "x": "4.247363935", + "y": "1.597178501", + "z": "4.956708611" + } + }, + { + "tsince_min": 120.0, + "position_km": { + "x": "19190.32482476", + "y": "9249.01266902", + "z": "26596.71345328" + }, + "velocity_km_s": { + "x": "-0.624960193", + "y": "1.324550562", + "z": "2.495697637" + } + }, + { + "tsince_min": 240.0, + "position_km": { + "x": "11332.67806218", + "y": "16517.99124008", + "z": "38569.78482991" + }, + "velocity_km_s": { + "x": "-1.400974747", + "y": "0.710947006", + "z": "0.923935636" + } + }, + { + "tsince_min": 360.0, + "position_km": { + "x": "328.74217398", + "y": "19554.92047380", + "z": "40558.26246145" + }, + "velocity_km_s": { + "x": "-1.593281066", + "y": "0.126772913", + "z": "-0.359627307" + } + }, + { + "tsince_min": 480.0, + "position_km": { + "x": "-10684.90590680", + "y": "18057.15728839", + "z": "33158.75253886" + }, + "velocity_km_s": { + "x": "-1.383205997", + "y": "-0.582328999", + "z": "-1.744412556" + } + }, + { + "tsince_min": 600.0, + "position_km": { + "x": "-17069.78000550", + "y": "9944.86797897", + "z": "13885.91649059" + }, + "velocity_km_s": { + "x": "0.044133354", + "y": "-1.853448464", + "z": "-3.815303117" + } + }, + { + "tsince_min": 720.0, + "position_km": { + "x": "13725.09398980", + "y": "-2180.70877090", + "z": "863.29684523" + }, + "velocity_km_s": { + "x": "3.878478111", + "y": "1.656846496", + "z": "4.944867241" + } + }, + { + "tsince_min": 840.0, + "position_km": { + "x": "19089.63879226", + "y": "9456.29670247", + "z": "27026.79562883" + }, + "velocity_km_s": { + "x": "-0.656614299", + "y": "1.309112636", + "z": "2.449371941" + } + }, + { + "tsince_min": 960.0, + "position_km": { + "x": "11106.41248373", + "y": "16627.60874079", + "z": "38727.35140296" + }, + "velocity_km_s": { + "x": "-1.409722680", + "y": "0.698582526", + "z": "0.891383535" + } + }, + { + "tsince_min": 1080.0, + "position_km": { + "x": "72.40958621", + "y": "19575.08054144", + "z": "40492.12544001" + }, + "velocity_km_s": { + "x": "-1.593394604", + "y": "0.113655142", + "z": "-0.390556063" + } + }, + { + "tsince_min": 1200.0, + "position_km": { + "x": "-10905.89252576", + "y": "17965.41205111", + "z": "32850.07298244" + }, + "velocity_km_s": { + "x": "-1.371396120", + "y": "-0.601706604", + "z": "-1.782817058" + } + }, + { + "tsince_min": 1320.0, + "position_km": { + "x": "-17044.61207568", + "y": "9635.48491849", + "z": "13212.59462953" + }, + "velocity_km_s": { + "x": "0.129244030", + "y": "-1.903551430", + "z": "-3.884569098" + } + }, + { + "tsince_min": 1440.0, + "position_km": { + "x": "14369.90303735", + "y": "-1903.85601062", + "z": "1722.15319853" + }, + "velocity_km_s": { + "x": "3.543393116", + "y": "1.701687176", + "z": "4.913881358" + } + }, + { + "tsince_min": 1560.0, + "position_km": { + "x": "18983.96210441", + "y": "9661.12233804", + "z": "27448.99557732" + }, + "velocity_km_s": { + "x": "-0.687189304", + "y": "1.293808870", + "z": "2.403630759" + } + }, + { + "tsince_min": 1680.0, + "position_km": { + "x": "10878.79336704", + "y": "16735.31433954", + "z": "38879.23434264" + }, + "velocity_km_s": { + "x": "-1.418239666", + "y": "0.686235750", + "z": "0.858951848" + } + }, + { + "tsince_min": 1800.0, + "position_km": { + "x": "-184.03743100", + "y": "19593.09371709", + "z": "40420.40606889" + }, + "velocity_km_s": { + "x": "-1.593348925", + "y": "0.100448697", + "z": "-0.421571993" + } + }, + { + "tsince_min": 1920.0, + "position_km": { + "x": "-11125.12138631", + "y": "17870.19488928", + "z": "32534.21521208" + }, + "velocity_km_s": { + "x": "-1.359116236", + "y": "-0.621413776", + "z": "-1.821629856" + } + }, + { + "tsince_min": 2040.0, + "position_km": { + "x": "-17004.43272827", + "y": "9316.53926351", + "z": "12526.11883812" + }, + "velocity_km_s": { + "x": "0.220330736", + "y": "-1.955594322", + "z": "-3.955058575" + } + }, + { + "tsince_min": 2160.0, + "position_km": { + "x": "14960.06492693", + "y": "-1620.68430805", + "z": "2574.96359381" + }, + "velocity_km_s": { + "x": "3.238634028", + "y": "1.734723385", + "z": "4.868880331" + } + }, + { + "tsince_min": 2280.0, + "position_km": { + "x": "18873.46347257", + "y": "9863.57004586", + "z": "27863.46574735" + }, + "velocity_km_s": { + "x": "-0.716736981", + "y": "1.278632817", + "z": "2.358448535" + } + }, + { + "tsince_min": 2400.0, + "position_km": { + "x": "10649.86857581", + "y": "16841.14172669", + "z": "39025.48035006" + }, + "velocity_km_s": { + "x": "-1.426527152", + "y": "0.673901057", + "z": "0.826632332" + } + }, + { + "tsince_min": 2520.0, + "position_km": { + "x": "-440.53459323", + "y": "19608.95524423", + "z": "40343.10675451" + }, + "velocity_km_s": { + "x": "-1.593138597", + "y": "0.087147884", + "z": "-0.452680559" + } + }, + { + "tsince_min": 2640.0, + "position_km": { + "x": "-11342.45028909", + "y": "17771.44223942", + "z": "32211.12535721" + }, + "velocity_km_s": { + "x": "-1.346344015", + "y": "-0.641464291", + "z": "-1.860864234" + } + }, + { + "tsince_min": 2760.0, + "position_km": { + "x": "-16948.06005711", + "y": "8987.64254880", + "z": "11826.28284367" + }, + "velocity_km_s": { + "x": "0.318007297", + "y": "-2.009693492", + "z": "-4.026726648" + } + }, + { + "tsince_min": 2880.0, + "position_km": { + "x": "15500.53445068", + "y": "-1332.90981042", + "z": "3419.72315308" + }, + "velocity_km_s": { + "x": "2.960917974", + "y": "1.758331634", + "z": "4.813698638" + } + } + ] + }, + { + "satellite": "09998", + "description": "SMS 1 AKM - integrator problem with GSFC ver", + "tle_line1": "1 09998U 74033F 05148.79417928 -.00000112 00000-0 00000+0 0 4480", + "tle_line2": "2 09998 9.4958 313.1750 0270971 327.5225 30.8097 1.16186785 45878", + "startmfe": -1440.0, + "stopmfe": -720.0, + "deltamin": 60.0, + "predictions": [ + { + "tsince_min": 0.0, + "position_km": { + "x": "25532.98947267", + "y": "-27244.26327953", + "z": "-1.11572421" + }, + "velocity_km_s": { + "x": "2.410283885", + "y": "2.194175683", + "z": "0.545888526" + } + }, + { + "tsince_min": -1440.0, + "position_km": { + "x": "-11362.18265118", + "y": "-35117.55867813", + "z": "-5413.62537994" + }, + "velocity_km_s": { + "x": "3.137861261", + "y": "-1.011678260", + "z": "0.267510059" + } + }, + { + "tsince_min": -1380.0, + "position_km": { + "x": "309.25349929", + "y": "-36960.43090143", + "z": "-4198.48007670" + }, + "velocity_km_s": { + "x": "3.292429375", + "y": "-0.002166046", + "z": "0.402111628" + } + }, + { + "tsince_min": -1320.0, + "position_km": { + "x": "11949.04009077", + "y": "-35127.37816804", + "z": "-2565.89806468" + }, + "velocity_km_s": { + "x": "3.119942784", + "y": "1.012096444", + "z": "0.497284100" + } + }, + { + "tsince_min": -1260.0, + "position_km": { + "x": "22400.45329336", + "y": "-29798.63236321", + "z": "-677.91515122" + }, + "velocity_km_s": { + "x": "2.638533344", + "y": "1.922477736", + "z": "0.542792913" + } + }, + { + "tsince_min": -1200.0, + "position_km": { + "x": "30640.84752458", + "y": "-21525.02340201", + "z": "1277.34808722" + }, + "velocity_km_s": { + "x": "1.903464941", + "y": "2.634294312", + "z": "0.534540934" + } + }, + { + "tsince_min": -1140.0, + "position_km": { + "x": "35899.56788035", + "y": "-11152.71158138", + "z": "3108.72535238" + }, + "velocity_km_s": { + "x": "0.997393045", + "y": "3.079858548", + "z": "0.474873291" + } + }, + { + "tsince_min": -1080.0, + "position_km": { + "x": "37732.45438600", + "y": "288.18821054", + "z": "4643.87587495" + }, + "velocity_km_s": { + "x": "0.016652226", + "y": "3.225184410", + "z": "0.371669746" + } + }, + { + "tsince_min": -1020.0, + "position_km": { + "x": "36045.92961699", + "y": "11706.61816230", + "z": "5746.32646574" + }, + "velocity_km_s": { + "x": "-0.942409065", + "y": "3.069888941", + "z": "0.236662980" + } + }, + { + "tsince_min": -960.0, + "position_km": { + "x": "31076.77273609", + "y": "22063.44379776", + "z": "6325.93403705" + }, + "velocity_km_s": { + "x": "-1.794027976", + "y": "2.642072476", + "z": "0.083556127" + } + }, + { + "tsince_min": -900.0, + "position_km": { + "x": "23341.26015320", + "y": "30460.88002531", + "z": "6342.91707895" + }, + "velocity_km_s": { + "x": "-2.469409743", + "y": "1.990861658", + "z": "-0.073612096" + } + }, + { + "tsince_min": -840.0, + "position_km": { + "x": "13568.39733054", + "y": "36204.45930900", + "z": "5806.79548733" + }, + "velocity_km_s": { + "x": "-2.919354203", + "y": "1.178920217", + "z": "-0.221646814" + } + }, + { + "tsince_min": -780.0, + "position_km": { + "x": "2628.58762420", + "y": "38840.10855897", + "z": "4771.91979854" + }, + "velocity_km_s": { + "x": "-3.114400514", + "y": "0.276239109", + "z": "-0.348926401" + } + }, + { + "tsince_min": -720.0, + "position_km": { + "x": "-8535.81598158", + "y": "38171.79073851", + "z": "3331.00311285" + }, + "velocity_km_s": { + "x": "-3.043839958", + "y": "-0.644462527", + "z": "-0.445808894" + } + } + ] + }, + { + "satellite": "11801", + "description": "Original STR#3 SDP4 test", + "tle_line1": "1 11801U 80230.29629788 .01431103 00000-0 14311-1 13", + "tle_line2": "2 11801 46.7916 230.4354 7318036 47.4722 10.4117 2.28537848 13", + "startmfe": 0.0, + "stopmfe": 1440.0, + "deltamin": 360.0, + "predictions": [ + { + "tsince_min": 0.0, + "position_km": { + "x": "7473.37102491", + "y": "428.94748312", + "z": "5828.74846783" + }, + "velocity_km_s": { + "x": "5.107155391", + "y": "6.444680305", + "z": "-0.186133297" + } + }, + { + "tsince_min": 360.0, + "position_km": { + "x": "-3305.22148694", + "y": "32410.84323331", + "z": "-24697.16974954" + }, + "velocity_km_s": { + "x": "-1.301137319", + "y": "-1.151315600", + "z": "-0.283335823" + } + }, + { + "tsince_min": 720.0, + "position_km": { + "x": "14271.29083858", + "y": "24110.44309009", + "z": "-4725.76320143" + }, + "velocity_km_s": { + "x": "-0.320504528", + "y": "2.679841539", + "z": "-2.084054355" + } + }, + { + "tsince_min": 1080.0, + "position_km": { + "x": "-9990.05800009", + "y": "22717.34212448", + "z": "-23616.88515553" + }, + "velocity_km_s": { + "x": "-1.016674392", + "y": "-2.290267981", + "z": "0.728923337" + } + }, + { + "tsince_min": 1440.0, + "position_km": { + "x": "9787.87836256", + "y": "33753.32249667", + "z": "-15030.79874625" + }, + "velocity_km_s": { + "x": "-1.094251553", + "y": "0.923589906", + "z": "-1.522311008" + } + } + ] + }, + { + "satellite": "14128", + "description": "EUTELSAT 1-F1 (ECS1) - Lyddane choice in GSFC at 2080 min (fig)", + "tle_line1": "1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627", + "tle_line2": "2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093", + "startmfe": 0.0, + "stopmfe": 2880.0, + "deltamin": 120.0, + "predictions": [ + { + "tsince_min": 0.0, + "position_km": { + "x": "34747.57932696", + "y": "24502.37114079", + "z": "-1.32832986" + }, + "velocity_km_s": { + "x": "-1.731642662", + "y": "2.452772615", + "z": "0.608510081" + } + }, + { + "tsince_min": 120.0, + "position_km": { + "x": "18263.33439094", + "y": "38159.96004751", + "z": "4186.18304085" + }, + "velocity_km_s": { + "x": "-2.744396611", + "y": "1.255583260", + "z": "0.528558932" + } + }, + { + "tsince_min": 240.0, + "position_km": { + "x": "-3023.38840703", + "y": "41783.13186459", + "z": "7273.03412906" + }, + "velocity_km_s": { + "x": "-3.035574793", + "y": "-0.271656544", + "z": "0.309645251" + } + }, + { + "tsince_min": 360.0, + "position_km": { + "x": "-23516.34391907", + "y": "34424.42065671", + "z": "8448.49867693" + }, + "velocity_km_s": { + "x": "-2.529120477", + "y": "-1.726186020", + "z": "0.009582303" + } + }, + { + "tsince_min": 480.0, + "position_km": { + "x": "-37837.46699511", + "y": "18028.39727170", + "z": "7406.25540271" + }, + "velocity_km_s": { + "x": "-1.360069525", + "y": "-2.725794686", + "z": "-0.292555349" + } + }, + { + "tsince_min": 600.0, + "position_km": { + "x": "-42243.58460661", + "y": "-3093.72887774", + "z": "4422.91711801" + }, + "velocity_km_s": { + "x": "0.163110919", + "y": "-3.009980598", + "z": "-0.517584362" + } + }, + { + "tsince_min": 720.0, + "position_km": { + "x": "-35597.57919549", + "y": "-23407.91145393", + "z": "282.09554383" + }, + "velocity_km_s": { + "x": "1.641405246", + "y": "-2.506773678", + "z": "-0.606963478" + } + }, + { + "tsince_min": 840.0, + "position_km": { + "x": "-19649.19834455", + "y": "-37606.11623860", + "z": "-3932.71525948" + }, + "velocity_km_s": { + "x": "2.689647056", + "y": "-1.349150016", + "z": "-0.537710698" + } + }, + { + "tsince_min": 960.0, + "position_km": { + "x": "1431.30912160", + "y": "-41982.04949668", + "z": "-7120.45467057" + }, + "velocity_km_s": { + "x": "3.035263353", + "y": "0.160882945", + "z": "-0.327993994" + } + }, + { + "tsince_min": 1080.0, + "position_km": { + "x": "22136.97605384", + "y": "-35388.19823762", + "z": "-8447.62393401" + }, + "velocity_km_s": { + "x": "2.587624889", + "y": "1.630097136", + "z": "-0.032349004" + } + }, + { + "tsince_min": 1200.0, + "position_km": { + "x": "37050.15790219", + "y": "-19537.23321425", + "z": "-7564.83463543" + }, + "velocity_km_s": { + "x": "1.461844494", + "y": "2.674654256", + "z": "0.272202191" + } + }, + { + "tsince_min": 1320.0, + "position_km": { + "x": "42253.81760945", + "y": "1431.81867593", + "z": "-4699.87621174" + }, + "velocity_km_s": { + "x": "-0.049247334", + "y": "3.019518960", + "z": "0.505890058" + } + }, + { + "tsince_min": 1440.0, + "position_km": { + "x": "36366.59147396", + "y": "22023.54245720", + "z": "-601.47121821" + }, + "velocity_km_s": { + "x": "-1.549681546", + "y": "2.571788981", + "z": "0.607057418" + } + }, + { + "tsince_min": 1560.0, + "position_km": { + "x": "20922.12287985", + "y": "36826.33975981", + "z": "3654.91125886" + }, + "velocity_km_s": { + "x": "-2.644070068", + "y": "1.447521216", + "z": "0.548722983" + } + }, + { + "tsince_min": 1680.0, + "position_km": { + "x": "-23.77224182", + "y": "41945.51688402", + "z": "6950.29891751" + }, + "velocity_km_s": { + "x": "-3.043358385", + "y": "-0.057417440", + "z": "0.346112094" + } + }, + { + "tsince_min": 1800.0, + "position_km": { + "x": "-20964.17821076", + "y": "36039.06206172", + "z": "8418.91984963" + }, + "velocity_km_s": { + "x": "-2.642795221", + "y": "-1.546099886", + "z": "0.052725852" + } + }, + { + "tsince_min": 1920.0, + "position_km": { + "x": "-36401.63863057", + "y": "20669.75286162", + "z": "7677.19769359" + }, + "velocity_km_s": { + "x": "-1.549488154", + "y": "-2.627052310", + "z": "-0.254079652" + } + }, + { + "tsince_min": 2040.0, + "position_km": { + "x": "-42298.30327543", + "y": "-119.03351118", + "z": "4922.96388841" + }, + "velocity_km_s": { + "x": "-0.052232768", + "y": "-3.018152669", + "z": "-0.493827331" + } + }, + { + "tsince_min": 2160.0, + "position_km": { + "x": "-37125.62383511", + "y": "-20879.63058368", + "z": "879.86971348" + }, + "velocity_km_s": { + "x": "1.456499841", + "y": "-2.619358421", + "z": "-0.604081694" + } + }, + { + "tsince_min": 2280.0, + "position_km": { + "x": "-22250.12320553", + "y": "-36182.74736487", + "z": "-3393.15365183" + }, + "velocity_km_s": { + "x": "2.583161226", + "y": "-1.536647628", + "z": "-0.556404555" + } + }, + { + "tsince_min": 2400.0, + "position_km": { + "x": "-1563.06258654", + "y": "-42035.43179159", + "z": "-6780.02161760" + }, + "velocity_km_s": { + "x": "3.034917506", + "y": "-0.052702046", + "z": "-0.363395654" + } + }, + { + "tsince_min": 2520.0, + "position_km": { + "x": "19531.64069587", + "y": "-36905.65470956", + "z": "-8395.46892032" + }, + "velocity_km_s": { + "x": "2.693682199", + "y": "1.446079999", + "z": "-0.075256054" + } + }, + { + "tsince_min": 2640.0, + "position_km": { + "x": "35516.53506142", + "y": "-22123.71916638", + "z": "-7815.04516935" + }, + "velocity_km_s": { + "x": "1.646882125", + "y": "2.568416058", + "z": "0.232985912" + } + }, + { + "tsince_min": 2760.0, + "position_km": { + "x": "42196.03535976", + "y": "-1547.32646751", + "z": "-5187.39401981" + }, + "velocity_km_s": { + "x": "0.166491841", + "y": "3.019211549", + "z": "0.480665780" + } + }, + { + "tsince_min": 2880.0, + "position_km": { + "x": "37802.25393045", + "y": "19433.57330019", + "z": "-1198.66634226" + }, + "velocity_km_s": { + "x": "-1.359930580", + "y": "2.677830903", + "z": "0.602507466" + } + } + ] + }, + { + "satellite": "16925", + "description": "SL-6 R/B(2) - Deep space, perigee=82.48 (<98) s4>20 mod", + "tle_line1": "1 16925U 86065D 06151.67415771 .02550794 -30915-6 18784-3 0 4486", + "tle_line2": "2 16925 62.0906 295.0239 5596327 245.1593 47.9690 4.88511875148616", + "startmfe": 0.0, + "stopmfe": 1440.0, + "deltamin": 120.0, + "predictions": [ + { + "tsince_min": 0.0, + "position_km": { + "x": "5559.11686836", + "y": "-11941.04090781", + "z": "-19.41235206" + }, + "velocity_km_s": { + "x": "3.392116762", + "y": "-1.946985124", + "z": "4.250755852" + } + }, + { + "tsince_min": 120.0, + "position_km": { + "x": "12339.83273749", + "y": "-2771.14447871", + "z": "18904.57603433" + }, + "velocity_km_s": { + "x": "-0.871247614", + "y": "2.600917693", + "z": "0.581560002" + } + }, + { + "tsince_min": 240.0, + "position_km": { + "x": "-3385.00215658", + "y": "7538.13955729", + "z": "200.59008616" + }, + "velocity_km_s": { + "x": "-2.023512865", + "y": "-4.261808344", + "z": "-6.856385787" + } + }, + { + "tsince_min": 360.0, + "position_km": { + "x": "12805.22442200", + "y": "-10258.94667177", + "z": "13780.16486738" + }, + "velocity_km_s": { + "x": "0.619279224", + "y": "1.821510542", + "z": "2.507365975" + } + }, + { + "tsince_min": 480.0, + "position_km": { + "x": "5682.46556318", + "y": "7199.30270473", + "z": "15437.67134070" + }, + "velocity_km_s": { + "x": "-2.474365406", + "y": "2.087897336", + "z": "-2.583767460" + } + }, + { + "tsince_min": 600.0, + "position_km": { + "x": "7628.94243982", + "y": "-12852.72097492", + "z": "2902.87208981" + }, + "velocity_km_s": { + "x": "2.748131081", + "y": "-0.740084579", + "z": "4.125307943" + } + }, + { + "tsince_min": 720.0, + "position_km": { + "x": "11531.64866625", + "y": "-858.27542736", + "z": "19086.85993771" + }, + "velocity_km_s": { + "x": "-1.170071901", + "y": "2.660311986", + "z": "0.096005705" + } + }, + { + "tsince_min": 840.0, + "position_km": { + "x": "-3866.98069515", + "y": "2603.73442786", + "z": "-4577.36484577" + }, + "velocity_km_s": { + "x": "1.157257298", + "y": "-8.453281164", + "z": "-4.683959407" + } + }, + { + "tsince_min": 960.0, + "position_km": { + "x": "13054.77732721", + "y": "-8707.92757730", + "z": "15537.63259903" + }, + "velocity_km_s": { + "x": "0.229846748", + "y": "2.119467054", + "z": "2.063396852" + } + }, + { + "tsince_min": 1080.0, + "position_km": { + "x": "3496.91064652", + "y": "8712.83919778", + "z": "12845.81838327" + }, + "velocity_km_s": { + "x": "-2.782184997", + "y": "1.552950644", + "z": "-3.554436131" + } + }, + { + "tsince_min": 1200.0, + "position_km": { + "x": "9593.07424729", + "y": "-13023.75963608", + "z": "6250.46484931" + }, + "velocity_km_s": { + "x": "2.072666376", + "y": "0.278735334", + "z": "3.778111073" + } + }, + { + "tsince_min": 1320.0, + "position_km": { + "x": "10284.79205084", + "y": "1487.89914169", + "z": "18824.37381327" + }, + "velocity_km_s": { + "x": "-1.530335053", + "y": "2.663107730", + "z": "-0.542205966" + } + }, + { + "tsince_min": 1440.0, + "position_km": { + "x": "-984.62035146", + "y": "-5187.03480813", + "z": "-5745.59594144" + }, + "velocity_km_s": { + "x": "4.340271916", + "y": "-7.266811354", + "z": "1.777668888" + } + } + ] + }, + { + "satellite": "20413", + "description": "SL-12 R/B - Lyddane choice at 1860 and 4700 min", + "tle_line1": "1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041", + "tle_line2": "2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978", + "startmfe": 1440.0, + "stopmfe": 4320.0, + "deltamin": 120.0, + "predictions": [ + { + "tsince_min": 0.0, + "position_km": { + "x": "25123.29290741", + "y": "-13225.49966286", + "z": "3249.40351869" + }, + "velocity_km_s": { + "x": "0.488683419", + "y": "4.797897593", + "z": "-0.961119693" + } + }, + { + "tsince_min": 1440.0, + "position_km": { + "x": "-151669.05280515", + "y": "-5645.20454550", + "z": "-2198.51592118" + }, + "velocity_km_s": { + "x": "-0.869182889", + "y": "-0.870759872", + "z": "0.156508219" + } + }, + { + "tsince_min": 1560.0, + "position_km": { + "x": "-157497.71657495", + "y": "-11884.99595074", + "z": "-1061.44439402" + }, + "velocity_km_s": { + "x": "-0.749657961", + "y": "-0.864016715", + "z": "0.157766101" + } + }, + { + "tsince_min": 1680.0, + "position_km": { + "x": "-162498.32255577", + "y": "-18062.99733167", + "z": "81.00915253" + }, + "velocity_km_s": { + "x": "-0.638980378", + "y": "-0.853687105", + "z": "0.158098992" + } + }, + { + "tsince_min": 1800.0, + "position_km": { + "x": "-166728.76010920", + "y": "-24155.99648299", + "z": "1222.84128677" + }, + "velocity_km_s": { + "x": "-0.535600687", + "y": "-0.840455444", + "z": "0.157680857" + } + }, + { + "tsince_min": 1920.0, + "position_km": { + "x": "-169935.81924592", + "y": "-31767.29787964", + "z": "2749.01540345" + }, + "velocity_km_s": { + "x": "-0.430050431", + "y": "-0.828904183", + "z": "0.157812340" + } + }, + { + "tsince_min": 2040.0, + "position_km": { + "x": "-172703.07831815", + "y": "-37662.95639336", + "z": "3883.60052579" + }, + "velocity_km_s": { + "x": "-0.338004891", + "y": "-0.810277487", + "z": "0.156020035" + } + }, + { + "tsince_min": 2160.0, + "position_km": { + "x": "-174823.19337404", + "y": "-43417.55605219", + "z": "5003.26312809" + }, + "velocity_km_s": { + "x": "-0.250258622", + "y": "-0.789828672", + "z": "0.153764903" + } + }, + { + "tsince_min": 2280.0, + "position_km": { + "x": "-176324.63925775", + "y": "-49018.51958648", + "z": "6104.85025002" + }, + "velocity_km_s": { + "x": "-0.166136613", + "y": "-0.767706262", + "z": "0.151092242" + } + }, + { + "tsince_min": 2400.0, + "position_km": { + "x": "-177231.42142458", + "y": "-54454.12699497", + "z": "7185.48661607" + }, + "velocity_km_s": { + "x": "-0.085067854", + "y": "-0.744001567", + "z": "0.148033403" + } + }, + { + "tsince_min": 2520.0, + "position_km": { + "x": "-177563.73583232", + "y": "-59713.14859144", + "z": "8242.48472591" + }, + "velocity_km_s": { + "x": "-0.006561730", + "y": "-0.718760309", + "z": "0.144608676" + } + }, + { + "tsince_min": 2640.0, + "position_km": { + "x": "-177338.48026483", + "y": "-64784.54644698", + "z": "9273.27220003" + }, + "velocity_km_s": { + "x": "0.069809946", + "y": "-0.691990238", + "z": "0.140829236" + } + }, + { + "tsince_min": 2760.0, + "position_km": { + "x": "-176569.65151461", + "y": "-69657.21976255", + "z": "10275.33063459" + }, + "velocity_km_s": { + "x": "0.144426878", + "y": "-0.663665876", + "z": "0.136698419" + } + }, + { + "tsince_min": 2880.0, + "position_km": { + "x": "-175268.65299073", + "y": "-74319.77625463", + "z": "11246.14177160" + }, + "velocity_km_s": { + "x": "0.217631370", + "y": "-0.633731091", + "z": "0.132212491" + } + }, + { + "tsince_min": 3000.0, + "position_km": { + "x": "-173444.53039609", + "y": "-78760.31560396", + "z": "12183.13775212" + }, + "velocity_km_s": { + "x": "0.289737325", + "y": "-0.602099929", + "z": "0.127361017" + } + }, + { + "tsince_min": 3120.0, + "position_km": { + "x": "-171104.14813653", + "y": "-82966.21323591", + "z": "13083.65278381" + }, + "velocity_km_s": { + "x": "0.361037779", + "y": "-0.568655903", + "z": "0.122126889" + } + }, + { + "tsince_min": 3240.0, + "position_km": { + "x": "-168252.31543803", + "y": "-86923.89363433", + "z": "13944.87382716" + }, + "velocity_km_s": { + "x": "0.431811396", + "y": "-0.533249797", + "z": "0.116486022" + } + }, + { + "tsince_min": 3360.0, + "position_km": { + "x": "-164891.86832887", + "y": "-90618.58225954", + "z": "14763.78794247" + }, + "velocity_km_s": { + "x": "0.502328269", + "y": "-0.495695896", + "z": "0.110406725" + } + }, + { + "tsince_min": 3480.0, + "position_km": { + "x": "-161023.71139825", + "y": "-94034.02398835", + "z": "15537.12375729" + }, + "velocity_km_s": { + "x": "0.572855321", + "y": "-0.455766412", + "z": "0.103848688" + } + }, + { + "tsince_min": 3600.0, + "position_km": { + "x": "-156646.82136726", + "y": "-97152.15370791", + "z": "16261.28409305" + }, + "velocity_km_s": { + "x": "0.643661538", + "y": "-0.413183688", + "z": "0.096761524" + } + }, + { + "tsince_min": 3720.0, + "position_km": { + "x": "-151758.21285737", + "y": "-99952.70098346", + "z": "16932.26607548" + }, + "velocity_km_s": { + "x": "0.715023254", + "y": "-0.367609561", + "z": "0.089082727" + } + }, + { + "tsince_min": 3840.0, + "position_km": { + "x": "-146352.86521283", + "y": "-102412.70506284", + "z": "17545.56394158" + }, + "velocity_km_s": { + "x": "0.787229695", + "y": "-0.318630913", + "z": "0.080734873" + } + }, + { + "tsince_min": 3960.0, + "position_km": { + "x": "-140423.60777444", + "y": "-104505.90799734", + "z": "18096.04807097" + }, + "velocity_km_s": { + "x": "0.860588979", + "y": "-0.265739987", + "z": "0.071621768" + } + }, + { + "tsince_min": 4080.0, + "position_km": { + "x": "-133960.95961851", + "y": "-106201.98091318", + "z": "18577.81121953" + }, + "velocity_km_s": { + "x": "0.935434758", + "y": "-0.208307307", + "z": "0.061623110" + } + }, + { + "tsince_min": 4200.0, + "position_km": { + "x": "-126952.91860010", + "y": "-107465.51906186", + "z": "18983.96903112" + }, + "velocity_km_s": { + "x": "1.012133628", + "y": "-0.145543878", + "z": "0.050587007" + } + }, + { + "tsince_min": 4320.0, + "position_km": { + "x": "-119384.69396454", + "y": "-108254.71115372", + "z": "19306.39581892" + }, + "velocity_km_s": { + "x": "1.091093313", + "y": "-0.076447479", + "z": "0.038319282" + } + } + ] + }, + { + "satellite": "21897", + "description": "MOLNIYA 1-83 - 12h resonant, ecc>0.715, negative BSTAR", + "tle_line1": "1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044", + "tle_line2": "2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880", + "startmfe": 0.0, + "stopmfe": 2880.0, + "deltamin": 120.0, + "predictions": [ + { + "tsince_min": 0.0, + "position_km": { + "x": "-14464.72135182", + "y": "-4699.19517587", + "z": "0.06681686" + }, + "velocity_km_s": { + "x": "-3.249312013", + "y": "-3.281032707", + "z": "4.007046940" + } + }, + { + "tsince_min": 120.0, + "position_km": { + "x": "-19410.46286123", + "y": "-19143.03318969", + "z": "23114.05522619" + }, + "velocity_km_s": { + "x": "0.508602237", + "y": "-1.156882269", + "z": "2.379923455" + } + }, + { + "tsince_min": 240.0, + "position_km": { + "x": "-12686.06129708", + "y": "-23853.75335645", + "z": "35529.81733588" + }, + "velocity_km_s": { + "x": "1.231633829", + "y": "-0.221718202", + "z": "1.118440291" + } + }, + { + "tsince_min": 360.0, + "position_km": { + "x": "-2775.46649359", + "y": "-22839.64574119", + "z": "39494.64689967" + }, + "velocity_km_s": { + "x": "1.468963405", + "y": "0.489481769", + "z": "-0.023972788" + } + }, + { + "tsince_min": 480.0, + "position_km": { + "x": "7679.87883570", + "y": "-16780.50760106", + "z": "34686.21815555" + }, + "velocity_km_s": { + "x": "1.364171080", + "y": "1.211183897", + "z": "-1.385151371" + } + }, + { + "tsince_min": 600.0, + "position_km": { + "x": "14552.40023028", + "y": "-4819.50121461", + "z": "17154.70672449" + }, + "velocity_km_s": { + "x": "0.109201591", + "y": "2.176124494", + "z": "-3.854856805" + } + }, + { + "tsince_min": 720.0, + "position_km": { + "x": "-15302.38845375", + "y": "-5556.43440300", + "z": "1095.95088753" + }, + "velocity_km_s": { + "x": "-2.838224312", + "y": "-3.134231137", + "z": "3.992596326" + } + }, + { + "tsince_min": 840.0, + "position_km": { + "x": "-19289.20066748", + "y": "-19427.04851118", + "z": "23759.45685636" + }, + "velocity_km_s": { + "x": "0.552495087", + "y": "-1.112499437", + "z": "2.325112654" + } + }, + { + "tsince_min": 960.0, + "position_km": { + "x": "-12376.21976437", + "y": "-23893.38020018", + "z": "35831.33691892" + }, + "velocity_km_s": { + "x": "1.246701529", + "y": "-0.194294048", + "z": "1.074867282" + } + }, + { + "tsince_min": 1080.0, + "position_km": { + "x": "-2400.55677665", + "y": "-22698.62264640", + "z": "39482.75964390" + }, + "velocity_km_s": { + "x": "1.472582922", + "y": "0.513555654", + "z": "-0.069306561" + } + }, + { + "tsince_min": 1200.0, + "position_km": { + "x": "8031.66819252", + "y": "-16455.77592085", + "z": "34298.94391742" + }, + "velocity_km_s": { + "x": "1.351357426", + "y": "1.239633234", + "z": "-1.448195324" + } + }, + { + "tsince_min": 1320.0, + "position_km": { + "x": "14559.48780372", + "y": "-4238.43773813", + "z": "16079.23154704" + }, + "velocity_km_s": { + "x": "-0.026409655", + "y": "2.218938770", + "z": "-4.012628896" + } + }, + { + "tsince_min": 1440.0, + "position_km": { + "x": "-16036.04980660", + "y": "-6372.51406468", + "z": "2183.44834232" + }, + "velocity_km_s": { + "x": "-2.485113443", + "y": "-2.994994355", + "z": "3.955891272" + } + }, + { + "tsince_min": 1560.0, + "position_km": { + "x": "-19156.71583814", + "y": "-19698.89059957", + "z": "24389.29473934" + }, + "velocity_km_s": { + "x": "0.594278133", + "y": "-1.069418599", + "z": "2.271152044" + } + }, + { + "tsince_min": 1680.0, + "position_km": { + "x": "-12062.72925552", + "y": "-23925.82362911", + "z": "36120.66680667" + }, + "velocity_km_s": { + "x": "1.261238798", + "y": "-0.167201856", + "z": "1.031478939" + } + }, + { + "tsince_min": 1800.0, + "position_km": { + "x": "-2024.96136966", + "y": "-22551.56626703", + "z": "39458.50085787" + }, + "velocity_km_s": { + "x": "1.475816889", + "y": "0.537615764", + "z": "-0.114887472" + } + }, + { + "tsince_min": 1920.0, + "position_km": { + "x": "8379.80916204", + "y": "-16123.95878459", + "z": "33894.75123231" + }, + "velocity_km_s": { + "x": "1.337468254", + "y": "1.268432783", + "z": "-1.512473301" + } + }, + { + "tsince_min": 2040.0, + "position_km": { + "x": "14527.86748873", + "y": "-3646.33817120", + "z": "14960.74306518" + }, + "velocity_km_s": { + "x": "-0.180035839", + "y": "2.261273515", + "z": "-4.179355590" + } + }, + { + "tsince_min": 2160.0, + "position_km": { + "x": "-16680.12147335", + "y": "-7149.80800425", + "z": "3257.64227208" + }, + "velocity_km_s": { + "x": "-2.178897351", + "y": "-2.863927095", + "z": "3.904876943" + } + }, + { + "tsince_min": 2280.0, + "position_km": { + "x": "-19013.58793448", + "y": "-19958.93766022", + "z": "25003.81778666" + }, + "velocity_km_s": { + "x": "0.634100431", + "y": "-1.027559823", + "z": "2.218002685" + } + }, + { + "tsince_min": 2400.0, + "position_km": { + "x": "-11745.76155818", + "y": "-23951.19438627", + "z": "36397.87676581" + }, + "velocity_km_s": { + "x": "1.275261813", + "y": "-0.140425132", + "z": "0.988259441" + } + }, + { + "tsince_min": 2520.0, + "position_km": { + "x": "-1648.81945070", + "y": "-22398.50594576", + "z": "39421.83273890" + }, + "velocity_km_s": { + "x": "1.478660174", + "y": "0.561671519", + "z": "-0.160733093" + } + }, + { + "tsince_min": 2640.0, + "position_km": { + "x": "8723.97652795", + "y": "-15784.99406275", + "z": "33473.35215527" + }, + "velocity_km_s": { + "x": "1.322433593", + "y": "1.297602497", + "z": "-1.578055493" + } + }, + { + "tsince_min": 2760.0, + "position_km": { + "x": "14452.25571587", + "y": "-3043.42332645", + "z": "13796.84870805" + }, + "velocity_km_s": { + "x": "-0.355190169", + "y": "2.302485443", + "z": "-4.355767077" + } + }, + { + "tsince_min": 2880.0, + "position_km": { + "x": "-17246.31075678", + "y": "-7890.72601508", + "z": "4315.39410307" + }, + "velocity_km_s": { + "x": "-1.910968458", + "y": "-2.740945672", + "z": "3.844722726" + } + } + ] + }, + { + "satellite": "22312", + "description": "SL-6 R/B(2) - last TLE, decayed 2006-04-04", + "tle_line1": "1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953", + "tle_line2": "2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783", + "startmfe": 54.2028672, + "stopmfe": 1440.0, + "deltamin": 20.0, + "predictions": [ + { + "tsince_min": 0.0, + "position_km": { + "x": "1442.10132912", + "y": "6510.23625449", + "z": "8.83145885" + }, + "velocity_km_s": { + "x": "-3.475714837", + "y": "0.997262768", + "z": "6.835860345" + } + }, + { + "tsince_min": 54.2028672, + "position_km": { + "x": "306.10478453", + "y": "-5816.45655525", + "z": "-2979.55846068" + }, + "velocity_km_s": { + "x": "3.950663855", + "y": "3.415332543", + "z": "-5.879974329" + } + }, + { + "tsince_min": 74.2028672, + "position_km": { + "x": "3282.82085464", + "y": "2077.46972905", + "z": "-5189.17988770" + }, + "velocity_km_s": { + "x": "0.097342701", + "y": "7.375135692", + "z": "2.900196702" + } + }, + { + "tsince_min": 94.2028672, + "position_km": { + "x": "530.82729176", + "y": "6426.20790003", + "z": "1712.37076793" + }, + "velocity_km_s": { + "x": "-3.837120395", + "y": "-1.252430637", + "z": "6.561602577" + } + }, + { + "tsince_min": 114.2028672, + "position_km": { + "x": "-3191.69170212", + "y": "170.27219912", + "z": "5956.29807775" + }, + "velocity_km_s": { + "x": "-1.394956872", + "y": "-7.438073471", + "z": "-0.557553115" + } + }, + { + "tsince_min": 134.2028672, + "position_km": { + "x": "-1818.99222465", + "y": "-6322.45146616", + "z": "681.95247154" + }, + "velocity_km_s": { + "x": "3.349795173", + "y": "-1.530140265", + "z": "-6.831522765" + } + }, + { + "tsince_min": 154.2028672, + "position_km": { + "x": "2515.66448634", + "y": "-2158.83091224", + "z": "-5552.13320544" + }, + "velocity_km_s": { + "x": "2.571979660", + "y": "7.311930509", + "z": "-1.639865620" + } + }, + { + "tsince_min": 174.2028672, + "position_km": { + "x": "2414.52833210", + "y": "5749.10150922", + "z": "-1998.59693165" + }, + "velocity_km_s": { + "x": "-2.681032960", + "y": "3.527589301", + "z": "6.452951429" + } + }, + { + "tsince_min": 194.2028672, + "position_km": { + "x": "-1877.98944331", + "y": "3862.27848302", + "z": "5112.48435863" + }, + "velocity_km_s": { + "x": "-3.261489804", + "y": "-6.026859137", + "z": "3.433254768" + } + }, + { + "tsince_min": 214.2028672, + "position_km": { + "x": "-3117.36584395", + "y": "-4419.74773864", + "z": "3840.85960912" + }, + "velocity_km_s": { + "x": "1.545479182", + "y": "-5.475416581", + "z": "-5.207913748" + } + }, + { + "tsince_min": 234.2028672, + "position_km": { + "x": "815.32034678", + "y": "-5231.67692249", + "z": "-3760.04690354" + }, + "velocity_km_s": { + "x": "3.870864200", + "y": "4.455588552", + "z": "-5.211082191" + } + }, + { + "tsince_min": 254.2028672, + "position_km": { + "x": "3269.54341810", + "y": "3029.00081083", + "z": "-4704.67969713" + }, + "velocity_km_s": { + "x": "-0.526711345", + "y": "6.812157950", + "z": "3.929825087" + } + }, + { + "tsince_min": 274.2028672, + "position_km": { + "x": "-10.18099756", + "y": "6026.23341453", + "z": "2643.50518407" + }, + "velocity_km_s": { + "x": "-3.953623254", + "y": "-2.616070012", + "z": "6.145637500" + } + }, + { + "tsince_min": 294.2028672, + "position_km": { + "x": "-3320.58819584", + "y": "-1248.42679945", + "z": "5563.06017927" + }, + "velocity_km_s": { + "x": "-0.637046974", + "y": "-7.417786044", + "z": "-2.076120187" + } + }, + { + "tsince_min": 314.2028672, + "position_km": { + "x": "-1025.48974616", + "y": "-6366.98945782", + "z": "-911.23559153" + }, + "velocity_km_s": { + "x": "3.811771909", + "y": "0.438071490", + "z": "-6.829260617" + } + }, + { + "tsince_min": 334.2028672, + "position_km": { + "x": "3003.75996128", + "y": "-413.85708003", + "z": "-5706.15591435" + }, + "velocity_km_s": { + "x": "1.674350083", + "y": "7.694169068", + "z": "0.316915204" + } + }, + { + "tsince_min": 354.2028672, + "position_km": { + "x": "1731.42816980", + "y": "6258.27676925", + "z": "-409.32527982" + }, + "velocity_km_s": { + "x": "-3.400497806", + "y": "1.447945424", + "z": "6.904010052" + } + }, + { + "tsince_min": 374.2028672, + "position_km": { + "x": "-2582.52111460", + "y": "2024.19020680", + "z": "5647.55650268" + }, + "velocity_km_s": { + "x": "-2.530348121", + "y": "-7.221719393", + "z": "1.438141553" + } + }, + { + "tsince_min": 394.2028672, + "position_km": { + "x": "-2440.56848578", + "y": "-5702.77311877", + "z": "1934.81094689" + }, + "velocity_km_s": { + "x": "2.731792947", + "y": "-3.350576075", + "z": "-6.527773339" + } + }, + { + "tsince_min": 414.2028672, + "position_km": { + "x": "1951.22934391", + "y": "-3423.59443045", + "z": "-5121.67808201" + }, + "velocity_km_s": { + "x": "3.249039133", + "y": "6.465974362", + "z": "-3.069806659" + } + }, + { + "tsince_min": 434.2028672, + "position_km": { + "x": "2886.50939356", + "y": "4888.68626216", + "z": "-3096.29885989" + }, + "velocity_km_s": { + "x": "-1.973162139", + "y": "4.877039020", + "z": "5.832414910" + } + }, + { + "tsince_min": 454.2028672, + "position_km": { + "x": "-1276.55532182", + "y": "4553.26898463", + "z": "4406.19787375" + }, + "velocity_km_s": { + "x": "-3.715146421", + "y": "-5.320176914", + "z": "4.418210777" + } + }, + { + "tsince_min": 474.2028672, + "position_km": { + "x": "-3181.54698042", + "y": "-3831.29976506", + "z": "4096.80242787" + }, + "velocity_km_s": { + "x": "1.114159970", + "y": "-6.104773578", + "z": "-4.829967400" + } + } + ] + }, + { + "satellite": "22674", + "description": "SL-6 R/B(2) - 12h resonant ecc > 0.715", + "tle_line1": "1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569", + "tle_line2": "2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877", + "startmfe": 0.0, + "stopmfe": 2880.0, + "deltamin": 120.0, + "predictions": [ + { + "tsince_min": 0.0, + "position_km": { + "x": "14712.22023280", + "y": "-1443.81061850", + "z": "0.83497888" + }, + "velocity_km_s": { + "x": "4.418965470", + "y": "1.629592098", + "z": "4.115531802" + } + }, + { + "tsince_min": 120.0, + "position_km": { + "x": "25418.88807860", + "y": "9342.60307989", + "z": "23611.46690798" + }, + "velocity_km_s": { + "x": "0.051284086", + "y": "1.213127306", + "z": "2.429004159" + } + }, + { + "tsince_min": 240.0, + "position_km": { + "x": "21619.59550749", + "y": "16125.24978864", + "z": "36396.79365831" + }, + "velocity_km_s": { + "x": "-0.963604380", + "y": "0.685454965", + "z": "1.177181937" + } + }, + { + "tsince_min": 360.0, + "position_km": { + "x": "12721.50543331", + "y": "19258.96193362", + "z": "40898.47648359" + }, + "velocity_km_s": { + "x": "-1.457448565", + "y": "0.179955469", + "z": "0.071502601" + } + }, + { + "tsince_min": 480.0, + "position_km": { + "x": "1272.80760054", + "y": "18458.41971897", + "z": "37044.74742696" + }, + "velocity_km_s": { + "x": "-1.674863386", + "y": "-0.436454983", + "z": "-1.201040990" + } + }, + { + "tsince_min": 600.0, + "position_km": { + "x": "-10058.43188619", + "y": "11906.60764454", + "z": "21739.62097733" + }, + "velocity_km_s": { + "x": "-1.245829683", + "y": "-1.543789125", + "z": "-3.324449221" + } + }, + { + "tsince_min": 720.0, + "position_km": { + "x": "10924.40116466", + "y": "-2571.92414170", + "z": "-2956.34856294" + }, + "velocity_km_s": { + "x": "6.071727751", + "y": "1.349579102", + "z": "3.898430260" + } + }, + { + "tsince_min": 840.0, + "position_km": { + "x": "25332.14851525", + "y": "8398.91099924", + "z": "21783.90654357" + }, + "velocity_km_s": { + "x": "0.222320754", + "y": "1.272214306", + "z": "2.580527192" + } + }, + { + "tsince_min": 960.0, + "position_km": { + "x": "22317.71926039", + "y": "15574.82086129", + "z": "35495.77144092" + }, + "velocity_km_s": { + "x": "-0.892750056", + "y": "0.737383381", + "z": "1.291738834" + } + }, + { + "tsince_min": 1080.0, + "position_km": { + "x": "13795.68675885", + "y": "19088.83051008", + "z": "40803.69584385" + }, + "velocity_km_s": { + "x": "-1.420277669", + "y": "0.235599456", + "z": "0.185517056" + } + }, + { + "tsince_min": 1200.0, + "position_km": { + "x": "2515.17145049", + "y": "18746.63776282", + "z": "37864.58088636" + }, + "velocity_km_s": { + "x": "-1.668016053", + "y": "-0.360431458", + "z": "-1.052854596" + } + }, + { + "tsince_min": 1320.0, + "position_km": { + "x": "-9084.48602106", + "y": "12982.62608646", + "z": "24045.63900249" + }, + "velocity_km_s": { + "x": "-1.378032363", + "y": "-1.373184736", + "z": "-3.013963835" + } + }, + { + "tsince_min": 1440.0, + "position_km": { + "x": "5647.00909495", + "y": "-3293.90518693", + "z": "-5425.85235063" + }, + "velocity_km_s": { + "x": "8.507977176", + "y": "0.414560797", + "z": "2.543322806" + } + }, + { + "tsince_min": 1560.0, + "position_km": { + "x": "25111.63372210", + "y": "7412.55109488", + "z": "19844.25781729" + }, + "velocity_km_s": { + "x": "0.416496290", + "y": "1.332106006", + "z": "2.739301737" + } + }, + { + "tsince_min": 1680.0, + "position_km": { + "x": "22961.47461641", + "y": "14985.74459578", + "z": "34511.09257381" + }, + "velocity_km_s": { + "x": "-0.816711048", + "y": "0.789391108", + "z": "1.407901804" + } + }, + { + "tsince_min": 1800.0, + "position_km": { + "x": "14841.15301459", + "y": "18876.91439870", + "z": "40626.25901619" + }, + "velocity_km_s": { + "x": "-1.380403341", + "y": "0.290228810", + "z": "0.298258120" + } + }, + { + "tsince_min": 1920.0, + "position_km": { + "x": "3750.70174081", + "y": "18978.57939698", + "z": "38578.11783220" + }, + "velocity_km_s": { + "x": "-1.656939412", + "y": "-0.287930881", + "z": "-0.910825599" + } + }, + { + "tsince_min": 2040.0, + "position_km": { + "x": "-8027.30219489", + "y": "13939.54436955", + "z": "26136.49045637" + }, + "velocity_km_s": { + "x": "-1.474476061", + "y": "-1.222693624", + "z": "-2.737178731" + } + }, + { + "tsince_min": 2160.0, + "position_km": { + "x": "-1296.95657092", + "y": "-2813.69369768", + "z": "-5871.09587258" + }, + "velocity_km_s": { + "x": "9.881929371", + "y": "-1.978467207", + "z": "-1.922261005" + } + }, + { + "tsince_min": 2280.0, + "position_km": { + "x": "24738.60364819", + "y": "6383.41644019", + "z": "17787.27631900" + }, + "velocity_km_s": { + "x": "0.639556952", + "y": "1.392554379", + "z": "2.906206324" + } + }, + { + "tsince_min": 2400.0, + "position_km": { + "x": "23546.85388669", + "y": "14358.15602832", + "z": "33441.67679479" + }, + "velocity_km_s": { + "x": "-0.734895006", + "y": "0.841564851", + "z": "1.526009909" + } + }, + { + "tsince_min": 2520.0, + "position_km": { + "x": "15855.87696303", + "y": "18624.05633582", + "z": "40367.13420574" + }, + "velocity_km_s": { + "x": "-1.337753546", + "y": "0.343969522", + "z": "0.410018472" + } + }, + { + "tsince_min": 2640.0, + "position_km": { + "x": "4976.44933591", + "y": "19156.75504042", + "z": "39189.68603184" + }, + "velocity_km_s": { + "x": "-1.642084365", + "y": "-0.218525096", + "z": "-0.774148204" + } + }, + { + "tsince_min": 2760.0, + "position_km": { + "x": "-6909.20746210", + "y": "14790.44707042", + "z": "28034.46732222" + }, + "velocity_km_s": { + "x": "-1.545152610", + "y": "-1.088119523", + "z": "-2.487447214" + } + }, + { + "tsince_min": 2880.0, + "position_km": { + "x": "-7331.65006707", + "y": "-604.17323419", + "z": "-2723.51014575" + }, + "velocity_km_s": { + "x": "6.168997265", + "y": "-3.634011554", + "z": "-5.963531682" + } + } + ] + }, + { + "satellite": "23177", + "description": "ARIANE 44L+ R/B - Lyddane bug at <=70 min for atan2()", + "tle_line1": "1 23177U 94040C 06175.45752052 .00000386 00000-0 76590-3 0 95", + "tle_line2": "2 23177 7.0496 179.8238 7258491 296.0482 8.3061 2.25906668 97438", + "startmfe": 0.0, + "stopmfe": 1440.0, + "deltamin": 120.0, + "predictions": [ + { + "tsince_min": 0.0, + "position_km": { + "x": "-8801.60046706", + "y": "-0.03357557", + "z": "-0.44522743" + }, + "velocity_km_s": { + "x": "-3.835279101", + "y": "-7.662552175", + "z": "0.944561323" + } + }, + { + "tsince_min": 120.0, + "position_km": { + "x": "-1684.34352858", + "y": "-31555.95196340", + "z": "3888.99944319" + }, + "velocity_km_s": { + "x": "2.023055719", + "y": "-2.151306405", + "z": "0.265065778" + } + }, + { + "tsince_min": 240.0, + "position_km": { + "x": "12325.51410155", + "y": "-38982.15046244", + "z": "4802.88832275" + }, + "velocity_km_s": { + "x": "1.763224157", + "y": "-0.102514446", + "z": "0.012397139" + } + }, + { + "tsince_min": 360.0, + "position_km": { + "x": "22773.66831936", + "y": "-34348.02176606", + "z": "4228.77407391" + }, + "velocity_km_s": { + "x": "1.067616787", + "y": "1.352427865", + "z": "-0.166956367" + } + }, + { + "tsince_min": 480.0, + "position_km": { + "x": "26194.40441089", + "y": "-19482.94203672", + "z": "2393.84774063" + }, + "velocity_km_s": { + "x": "-0.313732186", + "y": "2.808771328", + "z": "-0.346204118" + } + }, + { + "tsince_min": 600.0, + "position_km": { + "x": "8893.50573448", + "y": "5763.38890561", + "z": "-713.69884164" + }, + "velocity_km_s": { + "x": "-7.037399220", + "y": "3.022613131", + "z": "-0.370272416" + } + }, + { + "tsince_min": 720.0, + "position_km": { + "x": "-6028.75686537", + "y": "-25648.99913786", + "z": "3164.37107274" + }, + "velocity_km_s": { + "x": "1.883159288", + "y": "-3.177051976", + "z": "0.390793162" + } + }, + { + "tsince_min": 840.0, + "position_km": { + "x": "8313.57299056", + "y": "-38146.45710922", + "z": "4697.80777535" + }, + "velocity_km_s": { + "x": "1.905002133", + "y": "-0.625883074", + "z": "0.076098187" + } + }, + { + "tsince_min": 960.0, + "position_km": { + "x": "20181.29108622", + "y": "-36842.60674073", + "z": "4529.12568218" + }, + "velocity_km_s": { + "x": "1.326244476", + "y": "0.921916487", + "z": "-0.114527455" + } + }, + { + "tsince_min": 1080.0, + "position_km": { + "x": "26302.61794569", + "y": "-25173.39539436", + "z": "3084.65309986" + }, + "velocity_km_s": { + "x": "0.245398835", + "y": "2.329974347", + "z": "-0.287495880" + } + }, + { + "tsince_min": 1200.0, + "position_km": { + "x": "19365.07045602", + "y": "-2700.00490122", + "z": "317.42727417" + }, + "velocity_km_s": { + "x": "-3.009733018", + "y": "3.902496058", + "z": "-0.478928582" + } + }, + { + "tsince_min": 1320.0, + "position_km": { + "x": "-9667.81878780", + "y": "-16930.19112642", + "z": "2095.87469034" + }, + "velocity_km_s": { + "x": "1.279288285", + "y": "-4.736005905", + "z": "0.582878255" + } + }, + { + "tsince_min": 1440.0, + "position_km": { + "x": "4021.31438583", + "y": "-36066.09209609", + "z": "4442.91587411" + }, + "velocity_km_s": { + "x": "2.007322354", + "y": "-1.227461376", + "z": "0.149383897" + } + } + ] + }, + { + "satellite": "23333", + "description": "WIND - STR#3 Kepler fails past ~200 min", + "tle_line1": "1 23333U 94071A 94305.49999999 -.00172956 26967-3 10000-3 0 15", + "tle_line2": "2 23333 28.7490 2.3720 9728298 30.4360 1.3500 0.07309491 70", + "startmfe": 0.0, + "stopmfe": 1600.0, + "deltamin": 120.0, + "predictions": [ + { + "tsince_min": 0.0, + "position_km": { + "x": "-9301.24542292", + "y": "3326.10200382", + "z": "2318.36441127" + }, + "velocity_km_s": { + "x": "-8.729303005", + "y": "-0.828225037", + "z": "-0.122314827" + } + }, + { + "tsince_min": 120.0, + "position_km": { + "x": "-44672.91239680", + "y": "-6213.11996581", + "z": "-1738.80131727" + }, + "velocity_km_s": { + "x": "-3.719475070", + "y": "-1.336673022", + "z": "-0.621888261" + } + }, + { + "tsince_min": 240.0, + "position_km": { + "x": "-67053.08885388", + "y": "-14994.69685946", + "z": "-5897.99072793" + }, + "velocity_km_s": { + "x": "-2.860576613", + "y": "-1.183771565", + "z": "-0.568473909" + } + }, + { + "tsince_min": 360.0, + "position_km": { + "x": "-85227.84253168", + "y": "-22897.08484471", + "z": "-9722.59184564" + }, + "velocity_km_s": { + "x": "-2.426469823", + "y": "-1.078592475", + "z": "-0.525341431" + } + }, + { + "tsince_min": 480.0, + "position_km": { + "x": "-100986.00419136", + "y": "-30171.19698695", + "z": "-13283.77044765" + }, + "velocity_km_s": { + "x": "-2.147108978", + "y": "-1.000530827", + "z": "-0.491587582" + } + }, + { + "tsince_min": 600.0, + "position_km": { + "x": "-115093.00686387", + "y": "-36962.56316477", + "z": "-16634.15682929" + }, + "velocity_km_s": { + "x": "-1.945446188", + "y": "-0.938947736", + "z": "-0.464199202" + } + }, + { + "tsince_min": 720.0, + "position_km": { + "x": "-127965.80064891", + "y": "-43363.32967165", + "z": "-19809.90480432" + }, + "velocity_km_s": { + "x": "-1.789652016", + "y": "-0.888278463", + "z": "-0.441254468" + } + }, + { + "tsince_min": 840.0, + "position_km": { + "x": "-139863.28332207", + "y": "-49436.45704153", + "z": "-22836.80438139" + }, + "velocity_km_s": { + "x": "-1.663762568", + "y": "-0.845315913", + "z": "-0.421548627" + } + }, + { + "tsince_min": 960.0, + "position_km": { + "x": "-150960.22978259", + "y": "-55227.45413896", + "z": "-25734.01408879" + }, + "velocity_km_s": { + "x": "-1.558730986", + "y": "-0.808061065", + "z": "-0.404293846" + } + }, + { + "tsince_min": 1080.0, + "position_km": { + "x": "-161381.71414630", + "y": "-60770.64040903", + "z": "-28516.26290017" + }, + "velocity_km_s": { + "x": "-1.468977174", + "y": "-0.775190459", + "z": "-0.388951810" + } + }, + { + "tsince_min": 1200.0, + "position_km": { + "x": "-171221.18736947", + "y": "-66092.76474442", + "z": "-31195.19847387" + }, + "velocity_km_s": { + "x": "-1.390837596", + "y": "-0.745785633", + "z": "-0.375140398" + } + }, + { + "tsince_min": 1320.0, + "position_km": { + "x": "-180550.82888746", + "y": "-71215.23290630", + "z": "-33780.24938270" + }, + "velocity_km_s": { + "x": "-1.321788672", + "y": "-0.719184752", + "z": "-0.362579495" + } + }, + { + "tsince_min": 1440.0, + "position_km": { + "x": "-189427.87533074", + "y": "-76155.54943344", + "z": "-36279.19882816" + }, + "velocity_km_s": { + "x": "-1.260024473", + "y": "-0.694896053", + "z": "-0.351058133" + } + }, + { + "tsince_min": 1560.0, + "position_km": { + "x": "-197898.69401409", + "y": "-80928.29015181", + "z": "-38698.57972447" + }, + "velocity_km_s": { + "x": "-1.204211888", + "y": "-0.672544709", + "z": "-0.340413731" + } + }, + { + "tsince_min": 1600.0, + "position_km": { + "x": "-200638.82986236", + "y": "-82484.14969882", + "z": "-39488.34331447" + }, + "velocity_km_s": { + "x": "-1.186748462", + "y": "-0.665472422", + "z": "-0.337037582" + } + } + ] + }, + { + "satellite": "23599", + "description": "ARIANE 42P+3 R/B - Lyddane bug at >280.5 min for AcTan() (fig)", + "tle_line1": "1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905", + "tle_line2": "2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555", + "startmfe": 0.0, + "stopmfe": 720.0, + "deltamin": 20.0, + "predictions": [ + { + "tsince_min": 0.0, + "position_km": { + "x": "9892.63794341", + "y": "35.76144969", + "z": "-1.08228838" + }, + "velocity_km_s": { + "x": "3.556643237", + "y": "6.456009375", + "z": "0.783610890" + } + }, + { + "tsince_min": 20.0, + "position_km": { + "x": "11931.95642997", + "y": "7340.74973750", + "z": "886.46365987" + }, + "velocity_km_s": { + "x": "0.308329116", + "y": "5.532328972", + "z": "0.672887281" + } + }, + { + "tsince_min": 40.0, + "position_km": { + "x": "11321.71039205", + "y": "13222.84749156", + "z": "1602.40119049" + }, + "velocity_km_s": { + "x": "-1.151973982", + "y": "4.285810871", + "z": "0.521919425" + } + }, + { + "tsince_min": 60.0, + "position_km": { + "x": "9438.29395675", + "y": "17688.05450261", + "z": "2146.59293402" + }, + "velocity_km_s": { + "x": "-1.907904054", + "y": "3.179955046", + "z": "0.387692479" + } + }, + { + "tsince_min": 80.0, + "position_km": { + "x": "6872.08634639", + "y": "20910.11016811", + "z": "2539.79945034" + }, + "velocity_km_s": { + "x": "-2.323995367", + "y": "2.207398462", + "z": "0.269506121" + } + }, + { + "tsince_min": 100.0, + "position_km": { + "x": "3933.37509798", + "y": "23024.07662542", + "z": "2798.25966746" + }, + "velocity_km_s": { + "x": "-2.542860616", + "y": "1.327134966", + "z": "0.162450076" + } + }, + { + "tsince_min": 120.0, + "position_km": { + "x": "816.64091546", + "y": "24118.98675475", + "z": "2932.69459428" + }, + "velocity_km_s": { + "x": "-2.626838010", + "y": "0.504502763", + "z": "0.062344306" + } + }, + { + "tsince_min": 140.0, + "position_km": { + "x": "-2334.41705804", + "y": "24246.86096326", + "z": "2949.36448841" + }, + "velocity_km_s": { + "x": "-2.602259646", + "y": "-0.288058266", + "z": "-0.034145135" + } + }, + { + "tsince_min": 160.0, + "position_km": { + "x": "-5394.31798039", + "y": "23429.42716149", + "z": "2850.86832586" + }, + "velocity_km_s": { + "x": "-2.474434068", + "y": "-1.074055982", + "z": "-0.129868366" + } + }, + { + "tsince_min": 180.0, + "position_km": { + "x": "-8233.35130237", + "y": "21661.24480883", + "z": "2636.51456118" + }, + "velocity_km_s": { + "x": "-2.230845533", + "y": "-1.875742344", + "z": "-0.227528603" + } + }, + { + "tsince_min": 200.0, + "position_km": { + "x": "-10693.96497348", + "y": "18909.88168891", + "z": "2302.33707548" + }, + "velocity_km_s": { + "x": "-1.835912433", + "y": "-2.716169865", + "z": "-0.329931880" + } + }, + { + "tsince_min": 220.0, + "position_km": { + "x": "-12553.89669904", + "y": "15114.63990716", + "z": "1840.93573231" + }, + "velocity_km_s": { + "x": "-1.212478879", + "y": "-3.619036996", + "z": "-0.439970633" + } + }, + { + "tsince_min": 240.0, + "position_km": { + "x": "-13450.20591864", + "y": "10190.57904289", + "z": "1241.95958736" + }, + "velocity_km_s": { + "x": "-0.189082511", + "y": "-4.596701971", + "z": "-0.559173899" + } + }, + { + "tsince_min": 260.0, + "position_km": { + "x": "-12686.60437121", + "y": "4079.31106161", + "z": "498.27078614" + }, + "velocity_km_s": { + "x": "1.664498211", + "y": "-5.559889865", + "z": "-0.676747779" + } + }, + { + "tsince_min": 280.0, + "position_km": { + "x": "-8672.55867753", + "y": "-2827.56823315", + "z": "-342.59644716" + }, + "velocity_km_s": { + "x": "5.515079852", + "y": "-5.551222962", + "z": "-0.676360044" + } + }, + { + "tsince_min": 300.0, + "position_km": { + "x": "1153.31498060", + "y": "-6411.98692060", + "z": "-779.87288941" + }, + "velocity_km_s": { + "x": "9.689818102", + "y": "1.388598425", + "z": "0.167868798" + } + }, + { + "tsince_min": 320.0, + "position_km": { + "x": "9542.79201056", + "y": "-533.71253081", + "z": "-65.73165428" + }, + "velocity_km_s": { + "x": "3.926947087", + "y": "6.459583539", + "z": "0.785686755" + } + }, + { + "tsince_min": 340.0, + "position_km": { + "x": "11868.80960100", + "y": "6861.59590848", + "z": "833.72780602" + }, + "velocity_km_s": { + "x": "0.452957852", + "y": "5.632811328", + "z": "0.685262323" + } + }, + { + "tsince_min": 360.0, + "position_km": { + "x": "11376.23941678", + "y": "12858.97121366", + "z": "1563.40660172" + }, + "velocity_km_s": { + "x": "-1.087665695", + "y": "4.374693347", + "z": "0.532207051" + } + }, + { + "tsince_min": 380.0, + "position_km": { + "x": "9547.70300782", + "y": "17421.48570758", + "z": "2118.56907515" + }, + "velocity_km_s": { + "x": "-1.876540262", + "y": "3.253891728", + "z": "0.395810243" + } + }, + { + "tsince_min": 400.0, + "position_km": { + "x": "7008.51470263", + "y": "20725.47471227", + "z": "2520.56064289" + }, + "velocity_km_s": { + "x": "-2.308703599", + "y": "2.270724438", + "z": "0.276138613" + } + }, + { + "tsince_min": 420.0, + "position_km": { + "x": "4083.18551180", + "y": "22910.88306802", + "z": "2786.35642660" + }, + "velocity_km_s": { + "x": "-2.536610941", + "y": "1.383768875", + "z": "0.168165414" + } + }, + { + "tsince_min": 440.0, + "position_km": { + "x": "970.13107533", + "y": "24071.19896282", + "z": "2927.30875440" + }, + "velocity_km_s": { + "x": "-2.626673095", + "y": "0.557274717", + "z": "0.067549303" + } + }, + { + "tsince_min": 460.0, + "position_km": { + "x": "-2183.75499348", + "y": "24261.30188126", + "z": "2950.09189560" + }, + "velocity_km_s": { + "x": "-2.607082241", + "y": "-0.236785937", + "z": "-0.029112844" + } + }, + { + "tsince_min": 480.0, + "position_km": { + "x": "-5252.49066783", + "y": "23505.58108388", + "z": "2857.68628654" + }, + "velocity_km_s": { + "x": "-2.484465059", + "y": "-1.022158411", + "z": "-0.124702643" + } + }, + { + "tsince_min": 500.0, + "position_km": { + "x": "-8107.41437587", + "y": "21801.13395060", + "z": "2649.76852683" + }, + "velocity_km_s": { + "x": "-2.247669530", + "y": "-1.821071275", + "z": "-0.221914939" + } + }, + { + "tsince_min": 520.0, + "position_km": { + "x": "-10594.01813094", + "y": "19118.22269010", + "z": "2322.77197767" + }, + "velocity_km_s": { + "x": "-1.863224062", + "y": "-2.656353699", + "z": "-0.323512642" + } + }, + { + "tsince_min": 540.0, + "position_km": { + "x": "-12496.70758499", + "y": "15399.13096351", + "z": "1869.75958053" + }, + "velocity_km_s": { + "x": "-1.258272118", + "y": "-3.551534022", + "z": "-0.432332913" + } + }, + { + "tsince_min": 560.0, + "position_km": { + "x": "-13467.50382653", + "y": "10561.43040038", + "z": "1280.84842178" + }, + "velocity_km_s": { + "x": "-0.272050695", + "y": "-4.520503543", + "z": "-0.550014833" + } + }, + { + "tsince_min": 580.0, + "position_km": { + "x": "-12848.00717497", + "y": "4541.72432009", + "z": "548.59976478" + }, + "velocity_km_s": { + "x": "1.493938056", + "y": "-5.489644146", + "z": "-0.667479244" + } + }, + { + "tsince_min": 600.0, + "position_km": { + "x": "-9152.79920397", + "y": "-2343.88902799", + "z": "-287.93741332" + }, + "velocity_km_s": { + "x": "5.127695273", + "y": "-5.650584983", + "z": "-0.686013644" + } + }, + { + "tsince_min": 620.0, + "position_km": { + "x": "280.12478642", + "y": "-6500.11368508", + "z": "-790.36236302" + }, + "velocity_km_s": { + "x": "9.779642904", + "y": "0.581430120", + "z": "0.074124421" + } + }, + { + "tsince_min": 640.0, + "position_km": { + "x": "9166.21406115", + "y": "-1093.48756223", + "z": "-129.53833135" + }, + "velocity_km_s": { + "x": "4.316926785", + "y": "6.438465969", + "z": "0.785095966" + } + }, + { + "tsince_min": 660.0, + "position_km": { + "x": "11794.74563870", + "y": "6381.74484842", + "z": "780.82775971" + }, + "velocity_km_s": { + "x": "0.604642523", + "y": "5.731705440", + "z": "0.697571522" + } + }, + { + "tsince_min": 680.0, + "position_km": { + "x": "11424.80363789", + "y": "12493.80833338", + "z": "1524.27683836" + }, + "velocity_km_s": { + "x": "-1.021148661", + "y": "4.463489406", + "z": "0.542537702" + } + }, + { + "tsince_min": 700.0, + "position_km": { + "x": "9652.78920084", + "y": "17153.46470428", + "z": "2090.43413681" + }, + "velocity_km_s": { + "x": "-1.844382696", + "y": "3.327595388", + "z": "0.403924198" + } + }, + { + "tsince_min": 720.0, + "position_km": { + "x": "7141.24742526", + "y": "20538.97115158", + "z": "2501.18059966" + }, + "velocity_km_s": { + "x": "-2.293079623", + "y": "2.333598993", + "z": "0.282727441" + } + } + ] + }, + { + "satellite": "24208", + "description": "ITALSAT 2 - 24h resonant GEO, inclination > 3 deg", + "tle_line1": "1 24208U 96044A 06177.04061740 -.00000094 00000-0 10000-3 0 1600", + "tle_line2": "2 24208 3.8536 80.0121 0026640 311.0977 48.3000 1.00778054 36119", + "startmfe": 0.0, + "stopmfe": 1440.0, + "deltamin": 120.0, + "predictions": [ + { + "tsince_min": 0.0, + "position_km": { + "x": "7534.10987189", + "y": "41266.39266843", + "z": "-0.10801028" + }, + "velocity_km_s": { + "x": "-3.027168008", + "y": "0.558848996", + "z": "0.207982755" + } + }, + { + "tsince_min": 120.0, + "position_km": { + "x": "-14289.19940414", + "y": "39469.05530051", + "z": "1428.62838591" + }, + "velocity_km_s": { + "x": "-2.893205245", + "y": "-1.045447840", + "z": "0.179634249" + } + }, + { + "tsince_min": 240.0, + "position_km": { + "x": "-32222.92014955", + "y": "26916.25425799", + "z": "2468.59996594" + }, + "velocity_km_s": { + "x": "-1.973007929", + "y": "-2.359335071", + "z": "0.102539376" + } + }, + { + "tsince_min": 360.0, + "position_km": { + "x": "-41413.95109398", + "y": "7055.51656639", + "z": "2838.90906671" + }, + "velocity_km_s": { + "x": "-0.521665080", + "y": "-3.029172207", + "z": "-0.002066843" + } + }, + { + "tsince_min": 480.0, + "position_km": { + "x": "-39402.72251896", + "y": "-14716.42475223", + "z": "2441.32678358" + }, + "velocity_km_s": { + "x": "1.066928187", + "y": "-2.878714619", + "z": "-0.105865729" + } + }, + { + "tsince_min": 600.0, + "position_km": { + "x": "-26751.08889828", + "y": "-32515.13982431", + "z": "1384.38865570" + }, + "velocity_km_s": { + "x": "2.366228869", + "y": "-1.951032799", + "z": "-0.181018498" + } + }, + { + "tsince_min": 720.0, + "position_km": { + "x": "-6874.77975542", + "y": "-41530.38329422", + "z": "-46.60245459" + }, + "velocity_km_s": { + "x": "3.027415087", + "y": "-0.494671177", + "z": "-0.207337260" + } + }, + { + "tsince_min": 840.0, + "position_km": { + "x": "14859.52039042", + "y": "-39302.58907247", + "z": "-1465.02482524" + }, + "velocity_km_s": { + "x": "2.869609883", + "y": "1.100123969", + "z": "-0.177514425" + } + }, + { + "tsince_min": 960.0, + "position_km": { + "x": "32553.14863770", + "y": "-26398.88401807", + "z": "-2485.45866002" + }, + "velocity_km_s": { + "x": "1.930064459", + "y": "2.401574539", + "z": "-0.099250520" + } + }, + { + "tsince_min": 1080.0, + "position_km": { + "x": "41365.67576837", + "y": "-6298.09965811", + "z": "-2828.05254033" + }, + "velocity_km_s": { + "x": "0.459741276", + "y": "3.051680214", + "z": "0.006431872" + } + }, + { + "tsince_min": 1200.0, + "position_km": { + "x": "38858.83295070", + "y": "15523.39314924", + "z": "-2396.86850752" + }, + "velocity_km_s": { + "x": "-1.140211488", + "y": "2.867567143", + "z": "0.110637217" + } + }, + { + "tsince_min": 1320.0, + "position_km": { + "x": "25701.46068162", + "y": "33089.42617648", + "z": "-1308.68556638" + }, + "velocity_km_s": { + "x": "-2.428713821", + "y": "1.897381431", + "z": "0.184605907" + } + }, + { + "tsince_min": 1440.0, + "position_km": { + "x": "5501.08137100", + "y": "41590.27784405", + "z": "138.32522930" + }, + "velocity_km_s": { + "x": "-3.050691874", + "y": "0.409203052", + "z": "0.207958133" + } + } + ] + }, + { + "satellite": "25954", + "description": "AMC-4 - low incl, incl shift with GSFC version (fig)", + "tle_line1": "1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847", + "tle_line2": "2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615", + "startmfe": -1440.0, + "stopmfe": 1440.0, + "deltamin": 120.0, + "predictions": [ + { + "tsince_min": 0.0, + "position_km": { + "x": "8827.15660472", + "y": "-41223.00971237", + "z": "3.63482963" + }, + "velocity_km_s": { + "x": "3.007087319", + "y": "0.643701323", + "z": "0.000941663" + } + }, + { + "tsince_min": -1440.0, + "position_km": { + "x": "8118.18519221", + "y": "-41368.40537378", + "z": "4.11046687" + }, + "velocity_km_s": { + "x": "3.017696741", + "y": "0.591994297", + "z": "0.000933016" + } + }, + { + "tsince_min": -1320.0, + "position_km": { + "x": "27766.34015328", + "y": "-31724.97000557", + "z": "9.93297846" + }, + "velocity_km_s": { + "x": "2.314236153", + "y": "2.024903193", + "z": "0.000660861" + } + }, + { + "tsince_min": -1200.0, + "position_km": { + "x": "39932.57237973", + "y": "-13532.60040454", + "z": "13.12958252" + }, + "velocity_km_s": { + "x": "0.987382819", + "y": "2.911942843", + "z": "0.000213298" + } + }, + { + "tsince_min": -1080.0, + "position_km": { + "x": "41341.01365441", + "y": "8305.71681955", + "z": "12.84988501" + }, + "velocity_km_s": { + "x": "-0.605098224", + "y": "3.014378268", + "z": "-0.000291034" + } + }, + { + "tsince_min": -960.0, + "position_km": { + "x": "31614.99210558", + "y": "27907.29155353", + "z": "9.16618797" + }, + "velocity_km_s": { + "x": "-2.034243523", + "y": "2.305014102", + "z": "-0.000718418" + } + }, + { + "tsince_min": -840.0, + "position_km": { + "x": "13375.75227587", + "y": "39994.27017651", + "z": "3.05416854" + }, + "velocity_km_s": { + "x": "-2.915424366", + "y": "0.975119874", + "z": "-0.000955576" + } + }, + { + "tsince_min": -720.0, + "position_km": { + "x": "-8464.89963309", + "y": "41312.93549892", + "z": "-3.86622919" + }, + "velocity_km_s": { + "x": "-3.011600615", + "y": "-0.617275050", + "z": "-0.000939664" + } + }, + { + "tsince_min": -600.0, + "position_km": { + "x": "-28026.23406158", + "y": "31507.89995661", + "z": "-9.76047869" + }, + "velocity_km_s": { + "x": "-2.296840160", + "y": "-2.043607595", + "z": "-0.000674889" + } + }, + { + "tsince_min": -480.0, + "position_km": { + "x": "-40040.01314363", + "y": "13218.00579413", + "z": "-13.06594832" + }, + "velocity_km_s": { + "x": "-0.963328772", + "y": "-2.919827983", + "z": "-0.000231414" + } + }, + { + "tsince_min": -360.0, + "position_km": { + "x": "-41268.43291976", + "y": "-8632.06859693", + "z": "-12.90661266" + }, + "velocity_km_s": { + "x": "0.630042315", + "y": "-3.009677376", + "z": "0.000273163" + } + }, + { + "tsince_min": -240.0, + "position_km": { + "x": "-31377.85317015", + "y": "-28156.13970334", + "z": "-9.32605530" + }, + "velocity_km_s": { + "x": "2.054021717", + "y": "-2.288554158", + "z": "0.000704959" + } + }, + { + "tsince_min": -120.0, + "position_km": { + "x": "-13031.41552688", + "y": "-40092.33381029", + "z": "-3.27636660" + }, + "velocity_km_s": { + "x": "2.924657466", + "y": "-0.950541167", + "z": "0.000949381" + } + }, + { + "tsince_min": 0.0, + "position_km": { + "x": "8827.15660472", + "y": "-41223.00971237", + "z": "3.63482963" + }, + "velocity_km_s": { + "x": "3.007087319", + "y": "0.643701323", + "z": "0.000941663" + } + }, + { + "tsince_min": 120.0, + "position_km": { + "x": "28306.85426674", + "y": "-31243.80147394", + "z": "9.57216891" + }, + "velocity_km_s": { + "x": "2.279137743", + "y": "2.064316875", + "z": "0.000684127" + } + }, + { + "tsince_min": 240.0, + "position_km": { + "x": "40159.05128805", + "y": "-12845.39151157", + "z": "12.96086316" + }, + "velocity_km_s": { + "x": "0.937265422", + "y": "2.928448287", + "z": "0.000245505" + } + }, + { + "tsince_min": 360.0, + "position_km": { + "x": "41192.55903455", + "y": "9013.79606759", + "z": "12.90495666" + }, + "velocity_km_s": { + "x": "-0.656727442", + "y": "3.003543458", + "z": "-0.000257479" + } + }, + { + "tsince_min": 480.0, + "position_km": { + "x": "31131.69755798", + "y": "28445.55681731", + "z": "9.42419238" + }, + "velocity_km_s": { + "x": "-2.073484842", + "y": "2.269770851", + "z": "-0.000691233" + } + }, + { + "tsince_min": 600.0, + "position_km": { + "x": "12687.81846530", + "y": "40217.83324639", + "z": "3.44726249" + }, + "velocity_km_s": { + "x": "-2.931721827", + "y": "0.924962230", + "z": "-0.000940766" + } + }, + { + "tsince_min": 720.0, + "position_km": { + "x": "-9172.23500245", + "y": "41161.63475527", + "z": "-3.43575757" + }, + "velocity_km_s": { + "x": "-3.000571486", + "y": "-0.668847508", + "z": "-0.000940101" + } + }, + { + "tsince_min": 840.0, + "position_km": { + "x": "-28562.51093192", + "y": "31022.45987587", + "z": "-9.39562161" + }, + "velocity_km_s": { + "x": "-2.261449202", + "y": "-2.082713897", + "z": "-0.000689669" + } + }, + { + "tsince_min": 960.0, + "position_km": { + "x": "-40260.77504549", + "y": "12529.11484344", + "z": "-12.84915105" + }, + "velocity_km_s": { + "x": "-0.913097031", + "y": "-2.935933528", + "z": "-0.000256181" + } + }, + { + "tsince_min": 1080.0, + "position_km": { + "x": "-41114.14376538", + "y": "-9338.87194483", + "z": "-12.87952404" + }, + "velocity_km_s": { + "x": "0.681588815", + "y": "-2.998432565", + "z": "0.000245006" + } + }, + { + "tsince_min": 1200.0, + "position_km": { + "x": "-30890.01512240", + "y": "-28690.40750792", + "z": "-9.48037212" + }, + "velocity_km_s": { + "x": "2.092989805", + "y": "-2.252978152", + "z": "0.000680459" + } + }, + { + "tsince_min": 1320.0, + "position_km": { + "x": "-12341.46194020", + "y": "-40310.06316386", + "z": "-3.55833201" + }, + "velocity_km_s": { + "x": "2.940537098", + "y": "-0.900219523", + "z": "0.000934170" + } + }, + { + "tsince_min": 1440.0, + "position_km": { + "x": "9533.27750818", + "y": "-41065.52390214", + "z": "3.30756482" + }, + "velocity_km_s": { + "x": "2.995596171", + "y": "0.695200236", + "z": "0.000938525" + } + } + ] + }, + { + "satellite": "26900", + "description": "INTELSAT 902 - negative incl at 9313 min", + "tle_line1": "1 26900U 01039A 06106.74503247 .00000045 00000-0 10000-3 0 8290", + "tle_line2": "2 26900 0.0164 266.5378 0003319 86.1794 182.2590 1.00273847 16981", + "startmfe": 9300.0, + "stopmfe": 9400.0, + "deltamin": 60.0, + "predictions": [ + { + "tsince_min": 0.0, + "position_km": { + "x": "-42014.83795787", + "y": "3702.34357772", + "z": "-26.67500257" + }, + "velocity_km_s": { + "x": "-0.269775247", + "y": "-3.061854393", + "z": "0.000336726" + } + }, + { + "tsince_min": 9300.0, + "position_km": { + "x": "40968.68133298", + "y": "-9905.99156086", + "z": "11.84946837" + }, + "velocity_km_s": { + "x": "0.722756848", + "y": "2.989645389", + "z": "-0.000161261" + } + }, + { + "tsince_min": 9360.0, + "position_km": { + "x": "42135.66858481", + "y": "1072.99195618", + "z": "10.83481752" + }, + "velocity_km_s": { + "x": "-0.078150602", + "y": "3.074772455", + "z": "-0.000380063" + } + }, + { + "tsince_min": 9400.0, + "position_km": { + "x": "41304.75156132", + "y": "8398.27742944", + "z": "9.74006214" + }, + "velocity_km_s": { + "x": "-0.612515135", + "y": "3.014117469", + "z": "-0.000511575" + } + } + ] + }, + { + "satellite": "26975", + "description": "COSMOS 1024 DEB - 12h resonant ecc 0.5-0.65", + "tle_line1": "1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809", + "tle_line2": "2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521", + "startmfe": 0.0, + "stopmfe": 2880.0, + "deltamin": 120.0, + "predictions": [ + { + "tsince_min": 0.0, + "position_km": { + "x": "-14506.92313768", + "y": "-21613.56043281", + "z": "10.05018894" + }, + "velocity_km_s": { + "x": "2.212943308", + "y": "1.159970892", + "z": "3.020600202" + } + }, + { + "tsince_min": 120.0, + "position_km": { + "x": "7309.62197950", + "y": "6076.00713664", + "z": "6800.08705263" + }, + "velocity_km_s": { + "x": "1.300543383", + "y": "5.322579615", + "z": "-4.788746312" + } + }, + { + "tsince_min": 240.0, + "position_km": { + "x": "-3882.62933791", + "y": "11960.00543452", + "z": "-25088.14383845" + }, + "velocity_km_s": { + "x": "-2.146773699", + "y": "-1.372461491", + "z": "-2.579382089" + } + }, + { + "tsince_min": 360.0, + "position_km": { + "x": "-16785.45507465", + "y": "-734.79159704", + "z": "-34300.57085853" + }, + "velocity_km_s": { + "x": "-1.386528125", + "y": "-1.907762641", + "z": "-0.220949641" + } + }, + { + "tsince_min": 480.0, + "position_km": { + "x": "-23524.16689356", + "y": "-13629.45124622", + "z": "-30246.27899200" + }, + "velocity_km_s": { + "x": "-0.462846784", + "y": "-1.586139830", + "z": "1.269293624" + } + }, + { + "tsince_min": 600.0, + "position_km": { + "x": "-22890.23597092", + "y": "-22209.35900155", + "z": "-16769.91946116" + }, + "velocity_km_s": { + "x": "0.704351342", + "y": "-0.671112594", + "z": "2.432433851" + } + }, + { + "tsince_min": 720.0, + "position_km": { + "x": "-11646.39698980", + "y": "-19855.44222106", + "z": "3574.00109607" + }, + "velocity_km_s": { + "x": "2.626712727", + "y": "1.815887329", + "z": "2.960883901" + } + }, + { + "tsince_min": 840.0, + "position_km": { + "x": "7665.76124241", + "y": "11159.78946577", + "z": "345.93813117" + }, + "velocity_km_s": { + "x": "-0.584818007", + "y": "3.193514161", + "z": "-5.750338922" + } + }, + { + "tsince_min": 960.0, + "position_km": { + "x": "-6369.35388112", + "y": "10204.80073022", + "z": "-27844.52150384" + }, + "velocity_km_s": { + "x": "-2.050573276", + "y": "-1.582940542", + "z": "-2.076075232" + } + }, + { + "tsince_min": 1080.0, + "position_km": { + "x": "-18345.64763145", + "y": "-2977.76684430", + "z": "-34394.90760612" + }, + "velocity_km_s": { + "x": "-1.243589864", + "y": "-1.892050757", + "z": "0.060372061" + } + }, + { + "tsince_min": 1200.0, + "position_km": { + "x": "-23979.74839255", + "y": "-15436.44139571", + "z": "-28616.50540218" + }, + "velocity_km_s": { + "x": "-0.294973425", + "y": "-1.482987916", + "z": "1.478255628" + } + }, + { + "tsince_min": 1320.0, + "position_km": { + "x": "-21921.97167880", + "y": "-22852.45147658", + "z": "-13784.85308485" + }, + "velocity_km_s": { + "x": "0.945455629", + "y": "-0.428940995", + "z": "2.596964378" + } + }, + { + "tsince_min": 1440.0, + "position_km": { + "x": "-8266.43821031", + "y": "-17210.74590112", + "z": "6967.95546070" + }, + "velocity_km_s": { + "x": "3.082244069", + "y": "2.665881872", + "z": "2.712555075" + } + }, + { + "tsince_min": 1560.0, + "position_km": { + "x": "6286.85464535", + "y": "13809.56328971", + "z": "-6321.60663781" + }, + "velocity_km_s": { + "x": "-1.615964016", + "y": "1.383135377", + "z": "-5.358719132" + } + }, + { + "tsince_min": 1680.0, + "position_km": { + "x": "-8730.87526788", + "y": "8244.63344365", + "z": "-30039.92372791" + }, + "velocity_km_s": { + "x": "-1.935622871", + "y": "-1.724162072", + "z": "-1.631224738" + } + }, + { + "tsince_min": 1800.0, + "position_km": { + "x": "-19735.81883249", + "y": "-5191.76593007", + "z": "-34166.14974143" + }, + "velocity_km_s": { + "x": "-1.097835530", + "y": "-1.860148418", + "z": "0.324401050" + } + }, + { + "tsince_min": 1920.0, + "position_km": { + "x": "-24232.73847703", + "y": "-17112.08243255", + "z": "-26742.88893252" + }, + "velocity_km_s": { + "x": "-0.119786184", + "y": "-1.364365317", + "z": "1.680220468" + } + }, + { + "tsince_min": 2040.0, + "position_km": { + "x": "-20654.45640708", + "y": "-23184.54386047", + "z": "-10611.55144716" + }, + "velocity_km_s": { + "x": "1.209238113", + "y": "-0.144169639", + "z": "2.748054938" + } + }, + { + "tsince_min": 2160.0, + "position_km": { + "x": "-4337.15988957", + "y": "-13410.46817244", + "z": "9870.45949215" + }, + "velocity_km_s": { + "x": "3.532753095", + "y": "3.772236461", + "z": "2.088424247" + } + }, + { + "tsince_min": 2280.0, + "position_km": { + "x": "4074.62263523", + "y": "14698.07548285", + "z": "-12248.65327973" + }, + "velocity_km_s": { + "x": "-2.053824693", + "y": "0.203325817", + "z": "-4.607867718" + } + }, + { + "tsince_min": 2400.0, + "position_km": { + "x": "-10950.23438984", + "y": "6148.66879447", + "z": "-31736.65532865" + }, + "velocity_km_s": { + "x": "-1.809875605", + "y": "-1.816179062", + "z": "-1.233364913" + } + }, + { + "tsince_min": 2520.0, + "position_km": { + "x": "-20952.40702045", + "y": "-7358.71507895", + "z": "-33633.06643074" + }, + "velocity_km_s": { + "x": "-0.948973031", + "y": "-1.813594137", + "z": "0.573893078" + } + }, + { + "tsince_min": 2640.0, + "position_km": { + "x": "-24273.48944134", + "y": "-18637.15546906", + "z": "-24633.27702390" + }, + "velocity_km_s": { + "x": "0.064161440", + "y": "-1.228537560", + "z": "1.875728935" + } + }, + { + "tsince_min": 2760.0, + "position_km": { + "x": "-19057.55468077", + "y": "-23148.29322082", + "z": "-7269.38614178" + }, + "velocity_km_s": { + "x": "1.500802809", + "y": "0.195383037", + "z": "2.879031237" + } + }, + { + "tsince_min": 2880.0, + "position_km": { + "x": "43.69305308", + "y": "-8145.90299207", + "z": "11634.57079913" + }, + "velocity_km_s": { + "x": "3.780661682", + "y": "5.105315423", + "z": "0.714401345" + } + } + ] + }, + { + "satellite": "28057", + "description": "CBERS 2 - Near Earth, ecc=8.84E-5, drop normal drag terms", + "tle_line1": "1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836", + "tle_line2": "2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550", + "startmfe": 0.0, + "stopmfe": 2880.0, + "deltamin": 120.0, + "predictions": [ + { + "tsince_min": 0.0, + "position_km": { + "x": "-2715.28237486", + "y": "-6619.26436889", + "z": "-0.01341443" + }, + "velocity_km_s": { + "x": "-1.008587273", + "y": "0.422782003", + "z": "7.385272942" + } + }, + { + "tsince_min": 120.0, + "position_km": { + "x": "-1816.87920942", + "y": "-1835.78762132", + "z": "6661.07926465" + }, + "velocity_km_s": { + "x": "2.325140071", + "y": "6.655669329", + "z": "2.463394512" + } + }, + { + "tsince_min": 240.0, + "position_km": { + "x": "1483.17364291", + "y": "5395.21248786", + "z": "4448.65907172" + }, + "velocity_km_s": { + "x": "2.560540387", + "y": "4.039025766", + "z": "-5.736648561" + } + }, + { + "tsince_min": 360.0, + "position_km": { + "x": "2801.25607157", + "y": "5455.03931333", + "z": "-3692.12865695" + }, + "velocity_km_s": { + "x": "-0.595095864", + "y": "-3.951923117", + "z": "-6.298799125" + } + }, + { + "tsince_min": 480.0, + "position_km": { + "x": "411.09332812", + "y": "-1728.99769152", + "z": "-6935.45548810" + }, + "velocity_km_s": { + "x": "-2.935970964", + "y": "-6.684085058", + "z": "1.492800886" + } + }, + { + "tsince_min": 600.0, + "position_km": { + "x": "-2506.52558454", + "y": "-6628.98655094", + "z": "-988.07784497" + }, + "velocity_km_s": { + "x": "-1.390577189", + "y": "-0.556164143", + "z": "7.312736468" + } + }, + { + "tsince_min": 720.0, + "position_km": { + "x": "-2090.79884266", + "y": "-2723.22832193", + "z": "6266.13356576" + }, + "velocity_km_s": { + "x": "1.992640665", + "y": "6.337529519", + "z": "3.411803080" + } + }, + { + "tsince_min": 840.0, + "position_km": { + "x": "1091.80560222", + "y": "4809.88229503", + "z": "5172.42897894" + }, + "velocity_km_s": { + "x": "2.717483546", + "y": "4.805518977", + "z": "-5.030019896" + } + }, + { + "tsince_min": 960.0, + "position_km": { + "x": "2811.14062300", + "y": "5950.65707171", + "z": "-2813.23705389" + }, + "velocity_km_s": { + "x": "-0.159662742", + "y": "-3.121215491", + "z": "-6.775341949" + } + }, + { + "tsince_min": 1080.0, + "position_km": { + "x": "805.72698304", + "y": "-812.16627907", + "z": "-7067.58483968" + }, + "velocity_km_s": { + "x": "-2.798936020", + "y": "-6.889265977", + "z": "0.472770873" + } + }, + { + "tsince_min": 1200.0, + "position_km": { + "x": "-2249.59837532", + "y": "-6505.84890714", + "z": "-1956.72365062" + }, + "velocity_km_s": { + "x": "-1.731234729", + "y": "-1.528750230", + "z": "7.096660885" + } + }, + { + "tsince_min": 1320.0, + "position_km": { + "x": "-2311.57375797", + "y": "-3560.99112891", + "z": "5748.16749600" + }, + "velocity_km_s": { + "x": "1.626569751", + "y": "5.890482233", + "z": "4.293545048" + } + }, + { + "tsince_min": 1440.0, + "position_km": { + "x": "688.16056594", + "y": "4124.87618964", + "z": "5794.55994449" + }, + "velocity_km_s": { + "x": "2.810973665", + "y": "5.479585563", + "z": "-4.224866316" + } + }, + { + "tsince_min": 1560.0, + "position_km": { + "x": "2759.94088230", + "y": "6329.87271798", + "z": "-1879.19518331" + }, + "velocity_km_s": { + "x": "0.266930672", + "y": "-2.222670878", + "z": "-7.119390567" + } + }, + { + "tsince_min": 1680.0, + "position_km": { + "x": "1171.50677137", + "y": "125.82053748", + "z": "-7061.96626202" + }, + "velocity_km_s": { + "x": "-2.605687852", + "y": "-6.958489749", + "z": "-0.556333225" + } + }, + { + "tsince_min": 1800.0, + "position_km": { + "x": "-1951.43708472", + "y": "-6251.71945820", + "z": "-2886.95472355" + }, + "velocity_km_s": { + "x": "-2.024131483", + "y": "-2.475214272", + "z": "6.741537478" + } + }, + { + "tsince_min": 1920.0, + "position_km": { + "x": "-2475.70722288", + "y": "-4331.90569958", + "z": "5117.31234924" + }, + "velocity_km_s": { + "x": "1.235823539", + "y": "5.322743371", + "z": "5.091281211" + } + }, + { + "tsince_min": 2040.0, + "position_km": { + "x": "281.46097847", + "y": "3353.51057102", + "z": "6302.87900650" + }, + "velocity_km_s": { + "x": "2.840647273", + "y": "6.047222485", + "z": "-3.337085992" + } + }, + { + "tsince_min": 2160.0, + "position_km": { + "x": "2650.33118860", + "y": "6584.33434851", + "z": "-908.29027134" + }, + "velocity_km_s": { + "x": "0.675457235", + "y": "-1.274044972", + "z": "-7.323921567" + } + }, + { + "tsince_min": 2280.0, + "position_km": { + "x": "1501.17226597", + "y": "1066.31132756", + "z": "-6918.71472952" + }, + "velocity_km_s": { + "x": "-2.361891904", + "y": "-6.889669974", + "z": "-1.574718619" + } + }, + { + "tsince_min": 2400.0, + "position_km": { + "x": "-1619.73468334", + "y": "-5871.14051991", + "z": "-3760.56587071" + }, + "velocity_km_s": { + "x": "-2.264093975", + "y": "-3.376316601", + "z": "6.254622256" + } + }, + { + "tsince_min": 2520.0, + "position_km": { + "x": "-2581.04202505", + "y": "-5020.05572531", + "z": "4385.92329047" + }, + "velocity_km_s": { + "x": "0.829668458", + "y": "4.645048038", + "z": "5.789262667" + } + }, + { + "tsince_min": 2640.0, + "position_km": { + "x": "-119.22080628", + "y": "2510.90620488", + "z": "6687.45615459" + }, + "velocity_km_s": { + "x": "2.807575712", + "y": "6.496549689", + "z": "-2.384136661" + } + }, + { + "tsince_min": 2760.0, + "position_km": { + "x": "2486.23806726", + "y": "6708.18210028", + "z": "80.43349581" + }, + "velocity_km_s": { + "x": "1.057274905", + "y": "-0.294294027", + "z": "-7.384689123" + } + }, + { + "tsince_min": 2880.0, + "position_km": { + "x": "1788.42334580", + "y": "1990.50530957", + "z": "-6640.59337725" + }, + "velocity_km_s": { + "x": "-2.074169091", + "y": "-6.683381288", + "z": "-2.562777776" + } + } + ] + }, + { + "satellite": "28129", + "description": "NAVSTAR 53 (USA 175) - 12h non-resonant GPS (ecc<0.5)", + "tle_line1": "1 28129U 03058A 06175.57071136 -.00000104 00000-0 10000-3 0 459", + "tle_line2": "2 28129 54.7298 324.8098 0048506 266.2640 93.1663 2.00562768 18443", + "startmfe": 0.0, + "stopmfe": 1440.0, + "deltamin": 120.0, + "predictions": [ + { + "tsince_min": 0.0, + "position_km": { + "x": "21707.46412351", + "y": "-15318.61752390", + "z": "0.13551152" + }, + "velocity_km_s": { + "x": "1.304029214", + "y": "1.816904974", + "z": "3.161919976" + } + }, + { + "tsince_min": 120.0, + "position_km": { + "x": "18616.75971861", + "y": "3166.15177043", + "z": "18833.41523210" + }, + "velocity_km_s": { + "x": "-2.076122016", + "y": "2.838457575", + "z": "1.586210535" + } + }, + { + "tsince_min": 240.0, + "position_km": { + "x": "-3006.50596328", + "y": "18522.20742011", + "z": "18941.84078154" + }, + "velocity_km_s": { + "x": "-3.375452789", + "y": "1.032680773", + "z": "-1.559324534" + } + }, + { + "tsince_min": 360.0, + "position_km": { + "x": "-21607.02086957", + "y": "15432.59962630", + "z": "206.62470309" + }, + "velocity_km_s": { + "x": "-1.306049851", + "y": "-1.817011568", + "z": "-3.163725018" + } + }, + { + "tsince_min": 480.0, + "position_km": { + "x": "-18453.06134549", + "y": "-3150.83256134", + "z": "-18685.83030936" + }, + "velocity_km_s": { + "x": "2.106017925", + "y": "-2.860236337", + "z": "-1.586151870" + } + }, + { + "tsince_min": 600.0, + "position_km": { + "x": "3425.11742384", + "y": "-18514.73232706", + "z": "-18588.67200557" + }, + "velocity_km_s": { + "x": "3.394666340", + "y": "-1.003072030", + "z": "1.610061295" + } + }, + { + "tsince_min": 720.0, + "position_km": { + "x": "21858.23838148", + "y": "-15101.51661554", + "z": "387.34517048" + }, + "velocity_km_s": { + "x": "1.247973967", + "y": "1.856017403", + "z": "3.161439948" + } + }, + { + "tsince_min": 840.0, + "position_km": { + "x": "18360.69935796", + "y": "3506.55256762", + "z": "19024.81678979" + }, + "velocity_km_s": { + "x": "-2.122684184", + "y": "2.830618605", + "z": "1.537510677" + } + }, + { + "tsince_min": 960.0, + "position_km": { + "x": "-3412.84765409", + "y": "18646.85269710", + "z": "18748.00359987" + }, + "velocity_km_s": { + "x": "-3.366815728", + "y": "0.986039922", + "z": "-1.607874972" + } + }, + { + "tsince_min": 1080.0, + "position_km": { + "x": "-21758.08331586", + "y": "15215.44829478", + "z": "-180.82181406" + }, + "velocity_km_s": { + "x": "-1.250144680", + "y": "-1.856490448", + "z": "-3.163774870" + } + }, + { + "tsince_min": 1200.0, + "position_km": { + "x": "-18193.41290284", + "y": "-3493.85876912", + "z": "-18877.14757717" + }, + "velocity_km_s": { + "x": "2.153326942", + "y": "-2.852221264", + "z": "-1.536617760" + } + }, + { + "tsince_min": 1320.0, + "position_km": { + "x": "3833.57386848", + "y": "-18635.77026711", + "z": "-18388.68722885" + }, + "velocity_km_s": { + "x": "3.384748179", + "y": "-0.955363841", + "z": "1.658785020" + } + }, + { + "tsince_min": 1440.0, + "position_km": { + "x": "22002.20074562", + "y": "-14879.72595593", + "z": "774.32827099" + }, + "velocity_km_s": { + "x": "1.191573619", + "y": "1.894561165", + "z": "3.159953047" + } + } + ] + }, + { + "satellite": "28350", + "description": "COSMOS 2405 - Near Earth, perigee=127.20 (<156) s4 mod", + "tle_line1": "1 28350U 04020A 06167.21788666 .16154492 76267-5 18678-3 0 8894", + "tle_line2": "2 28350 64.9977 345.6130 0024870 260.7578 99.9590 16.47856722116490", + "startmfe": 0.0, + "stopmfe": 2880.0, + "deltamin": 120.0, + "predictions": [ + { + "tsince_min": 0.0, + "position_km": { + "x": "6333.08123128", + "y": "-1580.82852326", + "z": "90.69355720" + }, + "velocity_km_s": { + "x": "0.714634423", + "y": "3.224246550", + "z": "7.083128132" + } + }, + { + "tsince_min": 120.0, + "position_km": { + "x": "-3990.93845855", + "y": "3052.98341907", + "z": "4155.32700629" + }, + "velocity_km_s": { + "x": "-5.909006188", + "y": "-0.876307966", + "z": "-5.039131404" + } + }, + { + "tsince_min": 240.0, + "position_km": { + "x": "-603.55232010", + "y": "-2685.13474569", + "z": "-5891.70274282" + }, + "velocity_km_s": { + "x": "7.572519907", + "y": "-1.975656726", + "z": "0.121722605" + } + }, + { + "tsince_min": 360.0, + "position_km": { + "x": "4788.22345627", + "y": "782.56169214", + "z": "4335.14284621" + }, + "velocity_km_s": { + "x": "-4.954509026", + "y": "3.683346464", + "z": "4.804645839" + } + }, + { + "tsince_min": 480.0, + "position_km": { + "x": "-6291.84601644", + "y": "1547.82790772", + "z": "-453.67116498" + }, + "velocity_km_s": { + "x": "-0.308625588", + "y": "-3.341538574", + "z": "-7.082659115" + } + }, + { + "tsince_min": 600.0, + "position_km": { + "x": "4480.74573428", + "y": "-3028.55200374", + "z": "-3586.94343641" + }, + "velocity_km_s": { + "x": "5.320920857", + "y": "1.199736275", + "z": "5.626350481" + } + }, + { + "tsince_min": 720.0, + "position_km": { + "x": "-446.42460916", + "y": "2932.28872588", + "z": "5759.19389757" + }, + "velocity_km_s": { + "x": "-7.561000245", + "y": "1.550975493", + "z": "-1.374970885" + } + }, + { + "tsince_min": 840.0, + "position_km": { + "x": "-3713.79581831", + "y": "-1382.66125130", + "z": "-5122.45131136" + }, + "velocity_km_s": { + "x": "6.090931626", + "y": "-3.512629733", + "z": "-3.467571746" + } + }, + { + "tsince_min": 960.0, + "position_km": { + "x": "6058.32017522", + "y": "-827.47406722", + "z": "2104.04678651" + }, + "velocity_km_s": { + "x": "-1.798403024", + "y": "3.787067272", + "z": "6.641439744" + } + }, + { + "tsince_min": 1080.0, + "position_km": { + "x": "-5631.73659006", + "y": "2623.70953644", + "z": "1766.49125084" + }, + "velocity_km_s": { + "x": "-3.216401578", + "y": "-2.309140959", + "z": "-6.788609120" + } + }, + { + "tsince_min": 1200.0, + "position_km": { + "x": "2776.84991560", + "y": "-3255.36941953", + "z": "-4837.19667790" + }, + "velocity_km_s": { + "x": "6.748135564", + "y": "-0.193044825", + "z": "4.005718698" + } + }, + { + "tsince_min": 1320.0, + "position_km": { + "x": "1148.04430837", + "y": "2486.07343386", + "z": "5826.34075913" + }, + "velocity_km_s": { + "x": "-7.420162295", + "y": "2.589456382", + "z": "0.356350006" + } + }, + { + "tsince_min": 1440.0, + "position_km": { + "x": "-4527.90871828", + "y": "-723.29199041", + "z": "-4527.44608319" + }, + "velocity_km_s": { + "x": "5.121674217", + "y": "-3.909895427", + "z": "-4.500218556" + } + } + ] + }, + { + "satellite": "28623", + "description": "H-2 R/B - Deep space, perigee=135.75 (<156) s4 mod", + "tle_line1": "1 28623U 05006B 06177.81079184 .00637644 69054-6 96390-3 0 6000", + "tle_line2": "2 28623 28.5200 114.9834 6249053 170.2550 212.8965 3.79477162 12753", + "startmfe": 0.0, + "stopmfe": 1440.0, + "deltamin": 120.0, + "predictions": [ + { + "tsince_min": 0.0, + "position_km": { + "x": "-11665.70902324", + "y": "24943.61433357", + "z": "25.80543633" + }, + "velocity_km_s": { + "x": "-1.596228621", + "y": "-1.476127961", + "z": "1.126059754" + } + }, + { + "tsince_min": 120.0, + "position_km": { + "x": "-11645.35454950", + "y": "979.37668356", + "z": "5517.89500058" + }, + "velocity_km_s": { + "x": "3.407743502", + "y": "-5.183094988", + "z": "-0.492983277" + } + }, + { + "tsince_min": 240.0, + "position_km": { + "x": "5619.19252274", + "y": "19651.44862280", + "z": "-7261.38496765" + }, + "velocity_km_s": { + "x": "-2.013634213", + "y": "3.106842861", + "z": "0.284235517" + } + }, + { + "tsince_min": 360.0, + "position_km": { + "x": "-9708.68629714", + "y": "26306.14553149", + "z": "-1204.29478856" + }, + "velocity_km_s": { + "x": "-1.824164290", + "y": "-0.931909596", + "z": "1.113419052" + } + }, + { + "tsince_min": 480.0, + "position_km": { + "x": "-14394.03162892", + "y": "6659.30765074", + "z": "5593.38345858" + }, + "velocity_km_s": { + "x": "1.556522911", + "y": "-4.681657614", + "z": "0.296912248" + } + }, + { + "tsince_min": 600.0, + "position_km": { + "x": "7712.09476270", + "y": "15565.72627434", + "z": "-7342.40465571" + }, + "velocity_km_s": { + "x": "-1.646800364", + "y": "4.070313571", + "z": "-0.109483081" + } + }, + { + "tsince_min": 720.0, + "position_km": { + "x": "-7558.36739603", + "y": "27035.11367962", + "z": "-2385.12054184" + }, + "velocity_km_s": { + "x": "-1.999583791", + "y": "-0.393409283", + "z": "1.078093515" + } + }, + { + "tsince_min": 840.0, + "position_km": { + "x": "-15495.61862220", + "y": "11550.15897828", + "z": "5053.83178121" + }, + "velocity_km_s": { + "x": "0.469277336", + "y": "-4.029761073", + "z": "0.679054742" + } + }, + { + "tsince_min": 960.0, + "position_km": { + "x": "9167.02568222", + "y": "10363.65204210", + "z": "-6871.52576042" + }, + "velocity_km_s": { + "x": "-0.881621027", + "y": "5.223361510", + "z": "-0.740696297" + } + }, + { + "tsince_min": 1080.0, + "position_km": { + "x": "-5275.80272094", + "y": "27151.78486008", + "z": "-3494.50687216" + }, + "velocity_km_s": { + "x": "-2.129609388", + "y": "0.150196480", + "z": "1.021038089" + } + }, + { + "tsince_min": 1200.0, + "position_km": { + "x": "-15601.37656145", + "y": "15641.29379850", + "z": "4217.03266850" + }, + "velocity_km_s": { + "x": "-0.249183123", + "y": "-3.405238557", + "z": "0.888214503" + } + }, + { + "tsince_min": 1320.0, + "position_km": { + "x": "9301.05872300", + "y": "3883.15265574", + "z": "-5477.86477017" + }, + "velocity_km_s": { + "x": "0.871447821", + "y": "6.493677331", + "z": "-1.885545282" + } + }, + { + "tsince_min": 1440.0, + "position_km": { + "x": "-2914.31065828", + "y": "26665.20392758", + "z": "-4511.09814335" + }, + "velocity_km_s": { + "x": "-2.216261909", + "y": "0.710067769", + "z": "0.940691824" + } + } + ] + }, + { + "satellite": "28626", + "description": "XM-3 - 24h resonant geo, incl<3 deg, negative ~1130 min", + "tle_line1": "1 28626U 05008A 06176.46683397 -.00000205 00000-0 10000-3 0 2190", + "tle_line2": "2 28626 0.0019 286.9433 0000335 13.7918 55.6504 1.00270176 4891", + "startmfe": 0.0, + "stopmfe": 1440.0, + "deltamin": 120.0, + "predictions": [ + { + "tsince_min": 0.0, + "position_km": { + "x": "42080.71852213", + "y": "-2646.86387436", + "z": "0.81851294" + }, + "velocity_km_s": { + "x": "0.193105177", + "y": "3.068688251", + "z": "0.000438449" + } + }, + { + "tsince_min": 120.0, + "position_km": { + "x": "37740.00085593", + "y": "18802.76872802", + "z": "3.45512584" + }, + "velocity_km_s": { + "x": "-1.371035206", + "y": "2.752105932", + "z": "0.000336883" + } + }, + { + "tsince_min": 240.0, + "position_km": { + "x": "23232.82515008", + "y": "35187.33981802", + "z": "4.98927428" + }, + "velocity_km_s": { + "x": "-2.565776620", + "y": "1.694193132", + "z": "0.000163365" + } + }, + { + "tsince_min": 360.0, + "position_km": { + "x": "2467.44290178", + "y": "42093.60909959", + "z": "5.15062987" + }, + "velocity_km_s": { + "x": "-3.069341800", + "y": "0.179976276", + "z": "-0.000031739" + } + }, + { + "tsince_min": 480.0, + "position_km": { + "x": "-18962.59052991", + "y": "37661.66243819", + "z": "4.04433258" + }, + "velocity_km_s": { + "x": "-2.746151982", + "y": "-1.382675777", + "z": "-0.000197633" + } + }, + { + "tsince_min": 600.0, + "position_km": { + "x": "-35285.00095313", + "y": "23085.44402778", + "z": "2.08711880" + }, + "velocity_km_s": { + "x": "-1.683277908", + "y": "-2.572893625", + "z": "-0.000296282" + } + }, + { + "tsince_min": 720.0, + "position_km": { + "x": "-42103.20138132", + "y": "2291.06228893", + "z": "-0.13274964" + }, + "velocity_km_s": { + "x": "-0.166974816", + "y": "-3.070104560", + "z": "-0.000311007" + } + }, + { + "tsince_min": 840.0, + "position_km": { + "x": "-37580.31858370", + "y": "-19120.40485693", + "z": "-2.02755702" + }, + "velocity_km_s": { + "x": "1.394367848", + "y": "-2.740341612", + "z": "-0.000248591" + } + }, + { + "tsince_min": 960.0, + "position_km": { + "x": "-22934.20761876", + "y": "-35381.23870806", + "z": "-3.16495932" + }, + "velocity_km_s": { + "x": "2.580167539", + "y": "-1.672360951", + "z": "-0.000134907" + } + }, + { + "tsince_min": 1080.0, + "position_km": { + "x": "-2109.90332389", + "y": "-42110.71508198", + "z": "-3.36507889" + }, + "velocity_km_s": { + "x": "3.070935369", + "y": "-0.153808390", + "z": "-0.000005855" + } + }, + { + "tsince_min": 1200.0, + "position_km": { + "x": "19282.77774728", + "y": "-37495.59250598", + "z": "-2.71861462" + }, + "velocity_km_s": { + "x": "2.734400524", + "y": "1.406220933", + "z": "0.000103486" + } + }, + { + "tsince_min": 1320.0, + "position_km": { + "x": "35480.60990600", + "y": "-22779.03375285", + "z": "-1.52841859" + }, + "velocity_km_s": { + "x": "1.661210676", + "y": "2.587414593", + "z": "0.000168300" + } + }, + { + "tsince_min": 1440.0, + "position_km": { + "x": "42119.96263499", + "y": "-1925.77567263", + "z": "-0.19827433" + }, + "velocity_km_s": { + "x": "0.140521206", + "y": "3.071541613", + "z": "0.000179561" + } + } + ] + }, + { + "satellite": "28872", + "description": "MINOTAUR R/B - Sub-orbital, decayed 2005-11-29, perigee=-51km", + "tle_line1": "1 28872U 05037B 05333.02012661 .25992681 00000-0 24476-3 0 1534", + "tle_line2": "2 28872 96.4736 157.9986 0303955 244.0492 110.6523 16.46015938 10708", + "startmfe": 0.0, + "stopmfe": 50.0, + "deltamin": 5.0, + "predictions": [ + { + "tsince_min": 0.0, + "position_km": { + "x": "-6131.82730456", + "y": "2446.52815528", + "z": "-253.64211033" + }, + "velocity_km_s": { + "x": "-0.144920228", + "y": "0.995100963", + "z": "7.658645067" + } + }, + { + "tsince_min": 5.0, + "position_km": { + "x": "-5799.24256134", + "y": "2589.14811119", + "z": "2011.54515100" + }, + "velocity_km_s": { + "x": "2.325207364", + "y": "-0.047125672", + "z": "7.296234071" + } + }, + { + "tsince_min": 10.0, + "position_km": { + "x": "-4769.05061967", + "y": "2420.46580562", + "z": "4035.30855837" + }, + "velocity_km_s": { + "x": "4.464585796", + "y": "-1.060923209", + "z": "6.070907874" + } + }, + { + "tsince_min": 15.0, + "position_km": { + "x": "-3175.45157340", + "y": "1965.98738086", + "z": "5582.12569607" + }, + "velocity_km_s": { + "x": "6.049639376", + "y": "-1.935777558", + "z": "4.148607019" + } + }, + { + "tsince_min": 20.0, + "position_km": { + "x": "-1210.19024802", + "y": "1281.54541294", + "z": "6474.68172772" + }, + "velocity_km_s": { + "x": "6.920746273", + "y": "-2.580517337", + "z": "1.748783868" + } + }, + { + "tsince_min": 25.0, + "position_km": { + "x": "896.73799533", + "y": "447.12357305", + "z": "6607.22400507" + }, + "velocity_km_s": { + "x": "6.983396282", + "y": "-2.925846168", + "z": "-0.872655207" + } + }, + { + "tsince_min": 30.0, + "position_km": { + "x": "2896.99663534", + "y": "-440.04738594", + "z": "5954.92675486" + }, + "velocity_km_s": { + "x": "6.211488246", + "y": "-2.926949815", + "z": "-3.433959806" + } + }, + { + "tsince_min": 35.0, + "position_km": { + "x": "4545.78970167", + "y": "-1273.55952872", + "z": "4580.16512984" + }, + "velocity_km_s": { + "x": "4.656984233", + "y": "-2.568711513", + "z": "-5.638510954" + } + }, + { + "tsince_min": 40.0, + "position_km": { + "x": "5627.43299371", + "y": "-1947.94282469", + "z": "2634.16714930" + }, + "velocity_km_s": { + "x": "2.464141047", + "y": "-1.873985161", + "z": "-7.195743032" + } + }, + { + "tsince_min": 45.0, + "position_km": { + "x": "5984.72318534", + "y": "-2371.37691609", + "z": "349.87996209" + }, + "velocity_km_s": { + "x": "-0.121276950", + "y": "-0.911981546", + "z": "-7.859613894" + } + }, + { + "tsince_min": 50.0, + "position_km": { + "x": "5548.43325922", + "y": "-2480.16469245", + "z": "-1979.24314527" + }, + "velocity_km_s": { + "x": "-2.763269534", + "y": "0.199691915", + "z": "-7.482796996" + } + } + ] + }, + { + "satellite": "29141", + "description": "SL-14 DEB - Last stage of decay, lost in under 420 min", + "tle_line1": "1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718", + "tle_line2": "2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828", + "startmfe": 0.0, + "stopmfe": 440.0, + "deltamin": 20.0, + "predictions": [ + { + "tsince_min": 0.0, + "position_km": { + "x": "423.99295524", + "y": "-6658.12256149", + "z": "136.13040356" + }, + "velocity_km_s": { + "x": "1.006373613", + "y": "0.217309983", + "z": "7.662587892" + } + }, + { + "tsince_min": 20.0, + "position_km": { + "x": "931.80883587", + "y": "-1017.17852239", + "z": "6529.19244527" + }, + "velocity_km_s": { + "x": "-0.298847918", + "y": "7.613891977", + "z": "1.226399480" + } + }, + { + "tsince_min": 40.0, + "position_km": { + "x": "-83.44906141", + "y": "6286.20208453", + "z": "2223.49837161" + }, + "velocity_km_s": { + "x": "-1.113515974", + "y": "2.530970283", + "z": "-7.219445568" + } + }, + { + "tsince_min": 60.0, + "position_km": { + "x": "-958.57681221", + "y": "3259.26005348", + "z": "-5722.63732467" + }, + "velocity_km_s": { + "x": "-0.101225813", + "y": "-6.735338321", + "z": "-3.804851872" + } + }, + { + "tsince_min": 80.0, + "position_km": { + "x": "-255.25619985", + "y": "-5132.59762974", + "z": "-4221.27233118" + }, + "velocity_km_s": { + "x": "1.077709303", + "y": "-4.905938824", + "z": "5.892521264" + } + }, + { + "tsince_min": 100.0, + "position_km": { + "x": "867.44295097", + "y": "-5038.40402933", + "z": "4256.73810533" + }, + "velocity_km_s": { + "x": "0.479447535", + "y": "5.032326446", + "z": "5.857126248" + } + }, + { + "tsince_min": 120.0, + "position_km": { + "x": "559.16882013", + "y": "3376.30587937", + "z": "5699.22017391" + }, + "velocity_km_s": { + "x": "-0.906749328", + "y": "6.646149867", + "z": "-3.852331832" + } + }, + { + "tsince_min": 140.0, + "position_km": { + "x": "-669.85184205", + "y": "6196.00229484", + "z": "-2281.95741770" + }, + "velocity_km_s": { + "x": "-0.795804092", + "y": "-2.752114827", + "z": "-7.202478520" + } + }, + { + "tsince_min": 160.0, + "position_km": { + "x": "-784.20708019", + "y": "-1278.53125553", + "z": "-6449.19892596" + }, + "velocity_km_s": { + "x": "0.636702380", + "y": "-7.595425203", + "z": "1.431090802" + } + }, + { + "tsince_min": 180.0, + "position_km": { + "x": "406.15811659", + "y": "-6607.03115799", + "z": "148.33021477" + }, + "velocity_km_s": { + "x": "1.009818575", + "y": "0.231843765", + "z": "7.692047844" + } + }, + { + "tsince_min": 200.0, + "position_km": { + "x": "916.34911813", + "y": "-884.08649248", + "z": "6491.09810362" + }, + "velocity_km_s": { + "x": "-0.302163049", + "y": "7.669887109", + "z": "1.084336909" + } + }, + { + "tsince_min": 220.0, + "position_km": { + "x": "-104.02490970", + "y": "6304.31821405", + "z": "1960.08739882" + }, + "velocity_km_s": { + "x": "-1.108873823", + "y": "2.259522809", + "z": "-7.351147710" + } + }, + { + "tsince_min": 240.0, + "position_km": { + "x": "-944.61642849", + "y": "2872.17248379", + "z": "-5846.94103362" + }, + "velocity_km_s": { + "x": "-0.051117686", + "y": "-6.989747076", + "z": "-3.413102600" + } + }, + { + "tsince_min": 260.0, + "position_km": { + "x": "-187.16569888", + "y": "-5404.86163467", + "z": "-3731.97057618" + }, + "velocity_km_s": { + "x": "1.094696706", + "y": "-4.412110995", + "z": "6.326060952" + } + }, + { + "tsince_min": 280.0, + "position_km": { + "x": "884.59720467", + "y": "-4465.74516163", + "z": "4725.83632696" + }, + "velocity_km_s": { + "x": "0.380656028", + "y": "5.691554046", + "z": "5.303910983" + } + }, + { + "tsince_min": 300.0, + "position_km": { + "x": "446.40767236", + "y": "4086.66839620", + "z": "5093.05596650" + }, + "velocity_km_s": { + "x": "-0.982424447", + "y": "6.072965199", + "z": "-4.791630682" + } + }, + { + "tsince_min": 320.0, + "position_km": { + "x": "-752.24467495", + "y": "5588.35473301", + "z": "-3275.04092573" + }, + "velocity_km_s": { + "x": "-0.661161370", + "y": "-4.016290740", + "z": "-6.676898026" + } + }, + { + "tsince_min": 340.0, + "position_km": { + "x": "-643.72872525", + "y": "-2585.02528560", + "z": "-5923.01306608" + }, + "velocity_km_s": { + "x": "0.807922142", + "y": "-7.171597814", + "z": "3.041115058" + } + }, + { + "tsince_min": 360.0, + "position_km": { + "x": "584.40295819", + "y": "-6202.35605817", + "z": "1781.00536019" + }, + "velocity_km_s": { + "x": "0.869250450", + "y": "2.226927514", + "z": "7.471676765" + } + }, + { + "tsince_min": 380.0, + "position_km": { + "x": "779.59211765", + "y": "1100.73728301", + "z": "6311.59529480" + }, + "velocity_km_s": { + "x": "-0.599552305", + "y": "7.721032522", + "z": "-1.275153027" + } + }, + { + "tsince_min": 400.0, + "position_km": { + "x": "-403.03155588", + "y": "6399.18000837", + "z": "-364.12735875" + }, + "velocity_km_s": { + "x": "-1.008861924", + "y": "-0.516636615", + "z": "-7.799812287" + } + }, + { + "tsince_min": 420.0, + "position_km": { + "x": "-852.93910071", + "y": "192.65232023", + "z": "-6322.47054784" + }, + "velocity_km_s": { + "x": "0.396006194", + "y": "-7.882964919", + "z": "-0.289331517" + } + } + ] + }, + { + "satellite": "29238", + "description": "SL-12 DEB - Near Earth, perigee=212.24 (<220), simplified drag", + "tle_line1": "1 29238U 06022G 06177.28732010 .00766286 10823-4 13334-2 0 101", + "tle_line2": "2 29238 51.5595 213.7903 0202579 95.2503 267.9010 15.73823839 1061", + "startmfe": 0.0, + "stopmfe": 1440.0, + "deltamin": 120.0, + "predictions": [ + { + "tsince_min": 0.0, + "position_km": { + "x": "-5566.59512819", + "y": "-3789.75991159", + "z": "67.60382245" + }, + "velocity_km_s": { + "x": "2.873759367", + "y": "-3.825340523", + "z": "6.023253926" + } + }, + { + "tsince_min": 120.0, + "position_km": { + "x": "4474.27915495", + "y": "-1447.72286142", + "z": "4619.83927235" + }, + "velocity_km_s": { + "x": "4.712595822", + "y": "5.668306153", + "z": "-2.701606741" + } + }, + { + "tsince_min": 240.0, + "position_km": { + "x": "1922.17712474", + "y": "5113.01138342", + "z": "-4087.08470203" + }, + "velocity_km_s": { + "x": "-6.490769651", + "y": "-0.522350158", + "z": "-3.896001154" + } + }, + { + "tsince_min": 360.0, + "position_km": { + "x": "-6157.93546882", + "y": "-2094.70798790", + "z": "-1941.63730960" + }, + "velocity_km_s": { + "x": "0.149900661", + "y": "-5.175192523", + "z": "5.604262034" + } + }, + { + "tsince_min": 480.0, + "position_km": { + "x": "2482.64052411", + "y": "-3268.45944555", + "z": "5146.38006190" + }, + "velocity_km_s": { + "x": "6.501814698", + "y": "4.402848754", + "z": "-0.350943511" + } + }, + { + "tsince_min": 600.0, + "position_km": { + "x": "4036.26455287", + "y": "4827.43347201", + "z": "-2507.99063955" + }, + "velocity_km_s": { + "x": "-5.184409515", + "y": "1.772280695", + "z": "-5.331390168" + } + }, + { + "tsince_min": 720.0, + "position_km": { + "x": "-5776.81371622", + "y": "-118.64155319", + "z": "-3641.22052418" + }, + "velocity_km_s": { + "x": "-2.539917207", + "y": "-5.622701582", + "z": "4.403125405" + } + }, + { + "tsince_min": 840.0, + "position_km": { + "x": "67.98699487", + "y": "-4456.49213473", + "z": "4863.71794283" + }, + "velocity_km_s": { + "x": "7.183809420", + "y": "2.418917791", + "z": "2.015642495" + } + }, + { + "tsince_min": 960.0, + "position_km": { + "x": "5520.62207038", + "y": "3782.38203554", + "z": "-596.73193161" + }, + "velocity_km_s": { + "x": "-3.027966069", + "y": "3.754152525", + "z": "-6.013506363" + } + }, + { + "tsince_min": 1080.0, + "position_km": { + "x": "-4528.05104455", + "y": "1808.46273329", + "z": "-4816.99727762" + }, + "velocity_km_s": { + "x": "-4.808419763", + "y": "-5.185789345", + "z": "2.642104494" + } + }, + { + "tsince_min": 1200.0, + "position_km": { + "x": "-2356.61468078", + "y": "-4852.51202272", + "z": "3856.53816184" + }, + "velocity_km_s": { + "x": "6.688446735", + "y": "0.118520958", + "z": "4.021854210" + } + }, + { + "tsince_min": 1320.0, + "position_km": { + "x": "6149.65800134", + "y": "2173.59423261", + "z": "1369.29488732" + }, + "velocity_km_s": { + "x": "-0.345832777", + "y": "5.109857861", + "z": "-5.842951828" + } + }, + { + "tsince_min": 1440.0, + "position_km": { + "x": "-2629.55011449", + "y": "3400.98040158", + "z": "-5344.38217129" + }, + "velocity_km_s": { + "x": "-6.368548448", + "y": "-3.998963509", + "z": "0.577253064" + } + } + ] + }, + { + "satellite": "88888", + "description": "Original STR#3 SGP4 test", + "tle_line1": "1 88888U 80275.98708465 .00073094 13844-3 66816-4 0 87", + "tle_line2": "2 88888 72.8435 115.9689 0086731 52.6988 110.5714 16.05824518 1058", + "startmfe": 0.0, + "stopmfe": 1440.0, + "deltamin": 120.0, + "predictions": [ + { + "tsince_min": 0.0, + "position_km": { + "x": "2328.96975262", + "y": "-5995.22051338", + "z": "1719.97297192" + }, + "velocity_km_s": { + "x": "2.912073281", + "y": "-0.983417956", + "z": "-7.090816210" + } + }, + { + "tsince_min": 120.0, + "position_km": { + "x": "1020.69234558", + "y": "2286.56260634", + "z": "-6191.55565927" + }, + "velocity_km_s": { + "x": "-3.746543902", + "y": "6.467532721", + "z": "1.827985678" + } + }, + { + "tsince_min": 240.0, + "position_km": { + "x": "-3226.54349155", + "y": "3503.70977525", + "z": "4532.80979343" + }, + "velocity_km_s": { + "x": "1.000992116", + "y": "-5.788042888", + "z": "5.162585826" + } + }, + { + "tsince_min": 360.0, + "position_km": { + "x": "2456.10706533", + "y": "-6071.93855503", + "z": "1222.89768554" + }, + "velocity_km_s": { + "x": "2.679390040", + "y": "-0.448290811", + "z": "-7.228792155" + } + }, + { + "tsince_min": 480.0, + "position_km": { + "x": "787.16457349", + "y": "2719.91800946", + "z": "-6043.86662024" + }, + "velocity_km_s": { + "x": "-3.759883839", + "y": "6.277439314", + "z": "2.397897864" + } + }, + { + "tsince_min": 600.0, + "position_km": { + "x": "-3110.97648029", + "y": "3121.73026235", + "z": "4878.15217035" + }, + "velocity_km_s": { + "x": "1.244916056", + "y": "-6.124880425", + "z": "4.700576353" + } + }, + { + "tsince_min": 720.0, + "position_km": { + "x": "2567.56229695", + "y": "-6112.50383922", + "z": "713.96374435" + }, + "velocity_km_s": { + "x": "2.440245751", + "y": "0.098109002", + "z": "-7.319959258" + } + }, + { + "tsince_min": 840.0, + "position_km": { + "x": "556.05661780", + "y": "3144.52288201", + "z": "-5855.34636178" + }, + "velocity_km_s": { + "x": "-3.754660143", + "y": "6.044752775", + "z": "2.957941672" + } + }, + { + "tsince_min": 960.0, + "position_km": { + "x": "-2982.47940539", + "y": "2712.61663711", + "z": "5192.32330472" + }, + "velocity_km_s": { + "x": "1.475566773", + "y": "-6.427737014", + "z": "4.202420227" + } + }, + { + "tsince_min": 1080.0, + "position_km": { + "x": "2663.08964352", + "y": "-6115.48290885", + "z": "196.40072866" + }, + "velocity_km_s": { + "x": "2.196121564", + "y": "0.652415093", + "z": "-7.362824152" + } + }, + { + "tsince_min": 1200.0, + "position_km": { + "x": "328.54999674", + "y": "3557.09490552", + "z": "-5626.21427211" + }, + "velocity_km_s": { + "x": "-3.731193288", + "y": "5.769341172", + "z": "3.504058731" + } + }, + { + "tsince_min": 1320.0, + "position_km": { + "x": "-2842.06876757", + "y": "2278.42343492", + "z": "5472.33437150" + }, + "velocity_km_s": { + "x": "1.691852635", + "y": "-6.693216335", + "z": "3.671022712" + } + }, + { + "tsince_min": 1440.0, + "position_km": { + "x": "2742.55398832", + "y": "-6079.67009123", + "z": "-326.39012649" + }, + "velocity_km_s": { + "x": "1.948497651", + "y": "1.211072678", + "z": "-7.356193131" + } + } + ] + } + ] +} diff --git a/test/expected/vallado_518.out b/test/expected/vallado_518.out new file mode 100644 index 0000000..4a5c9aa --- /dev/null +++ b/test/expected/vallado_518.out @@ -0,0 +1,671 @@ +-- Vallado 518 Test Vectors (AIAA 2006-6753-Rev1, Appendices D & E) +-- +-- 518 propagation predictions across 29 satellites, covering both +-- SGP4 (near-earth) and SDP4 (deep-space) models. Reference values +-- from Vallado, Crawford, Hujsak, and Kelso's definitive SGP4 paper. +-- +-- The reference vectors use Vallado's "AFSPC (option 'a')" mode with +-- "perturbed inclination (GSFC)" Lyddane choice. Bill Gray's sat_code +-- takes a different path through the Lyddane singularity and deep-space +-- resonance logic, producing small numerical differences for most +-- satellites and larger divergences for 4 known edge cases: +-- +-- 20413 (e=0.79, Molniya-like): up to 1694 km at large tsince +-- 04632 (deep-space, e=0.15): up to 7.5 km +-- 14128 (deep-space): up to 1.7 km +-- 23599 (deep-space, GEO): up to 1.0 km +-- +-- These differences are expected and documented. This test detects +-- regressions — if any number changes, the vendored SGP4/SDP4 code +-- was inadvertently modified. +-- +-- Tolerances for the summary check: +-- Position: 1e-4 km (0.1 m) — catches marginal velocity-only failures +-- Velocity: 1e-7 km/s (0.1 mm/s) — tight enough for regression detection +CREATE EXTENSION IF NOT EXISTS pg_orbit; +NOTICE: extension "pg_orbit" already exists, skipping +-- Helper: convert Julian date + minutes-since-epoch to timestamptz. +-- JD 2440587.5 = 1970-01-01 00:00:00 UTC (Unix epoch). +CREATE OR REPLACE FUNCTION _vallado_jd_plus_min(jd float8, tsince_min float8) +RETURNS timestamptz AS $$ + SELECT to_timestamp((jd + tsince_min / 1440.0 - 2440587.5) * 86400.0) +$$ LANGUAGE sql IMMUTABLE STRICT; +-- Test vector table +CREATE TEMP TABLE vallado_vectors ( + satnum text, + tle_line1 text, + tle_line2 text, + tsince_min float8, + ref_x float8, ref_y float8, ref_z float8, + ref_vx float8, ref_vy float8, ref_vz float8 +); +INSERT INTO vallado_vectors VALUES +('00005','1 00005U 58002B 00179.78495062 .00000023 00000-0 28098-4 0 4753','2 00005 34.2682 348.7242 1859667 331.7664 19.3264 10.82419157413667',0.0,7022.46529266,-1400.08296755,0.03995155,1.893841015,6.405893759,4.534807250), +('00005','1 00005U 58002B 00179.78495062 .00000023 00000-0 28098-4 0 4753','2 00005 34.2682 348.7242 1859667 331.7664 19.3264 10.82419157413667',360.0,-7154.03120202,-3783.17682504,-3536.19412294,4.741887409,-4.151817765,-2.093935425), +('00005','1 00005U 58002B 00179.78495062 .00000023 00000-0 28098-4 0 4753','2 00005 34.2682 348.7242 1859667 331.7664 19.3264 10.82419157413667',720.0,-7134.59340119,6531.68641334,3260.27186483,-4.113793027,-2.911922039,-2.557327851), +('00005','1 00005U 58002B 00179.78495062 .00000023 00000-0 28098-4 0 4753','2 00005 34.2682 348.7242 1859667 331.7664 19.3264 10.82419157413667',1080.0,5568.53901181,4492.06992591,3863.87641983,-4.209106476,5.159719888,2.744852980), +('00005','1 00005U 58002B 00179.78495062 .00000023 00000-0 28098-4 0 4753','2 00005 34.2682 348.7242 1859667 331.7664 19.3264 10.82419157413667',1440.0,-938.55923943,-6268.18748831,-4294.02924751,7.536105209,-0.427127707,0.989878080), +('00005','1 00005U 58002B 00179.78495062 .00000023 00000-0 28098-4 0 4753','2 00005 34.2682 348.7242 1859667 331.7664 19.3264 10.82419157413667',1800.0,-9680.56121728,2802.47771354,124.10688038,-0.905874102,-4.659467970,-3.227347517), +('00005','1 00005U 58002B 00179.78495062 .00000023 00000-0 28098-4 0 4753','2 00005 34.2682 348.7242 1859667 331.7664 19.3264 10.82419157413667',2160.0,190.19796988,7746.96653614,5110.00675412,-6.112325142,1.527008184,-0.139152358), +('00005','1 00005U 58002B 00179.78495062 .00000023 00000-0 28098-4 0 4753','2 00005 34.2682 348.7242 1859667 331.7664 19.3264 10.82419157413667',2520.0,5579.55640116,-3995.61396789,-1518.82108966,4.767927483,5.123185301,4.276837355), +('00005','1 00005U 58002B 00179.78495062 .00000023 00000-0 28098-4 0 4753','2 00005 34.2682 348.7242 1859667 331.7664 19.3264 10.82419157413667',2880.0,-8650.73082219,-1914.93811525,-3007.03603443,3.067165127,-4.828384068,-2.515322836), +('00005','1 00005U 58002B 00179.78495062 .00000023 00000-0 28098-4 0 4753','2 00005 34.2682 348.7242 1859667 331.7664 19.3264 10.82419157413667',3240.0,-5429.79204164,7574.36493792,3747.39305236,-4.999442110,-1.800561422,-2.229392830), +('00005','1 00005U 58002B 00179.78495062 .00000023 00000-0 28098-4 0 4753','2 00005 34.2682 348.7242 1859667 331.7664 19.3264 10.82419157413667',3600.0,6759.04583722,2001.58198220,2783.55192533,-2.180993947,6.402085603,3.644723952), +('00005','1 00005U 58002B 00179.78495062 .00000023 00000-0 28098-4 0 4753','2 00005 34.2682 348.7242 1859667 331.7664 19.3264 10.82419157413667',3960.0,-3791.44531559,-5712.95617894,-4533.48630714,6.668817493,-2.516382327,-0.082384354), +('00005','1 00005U 58002B 00179.78495062 .00000023 00000-0 28098-4 0 4753','2 00005 34.2682 348.7242 1859667 331.7664 19.3264 10.82419157413667',4320.0,-9060.47373569,4658.70952502,813.68673153,-2.232832783,-4.110453490,-3.157345433), +('04632','1 04632U 70093B 04031.91070959 -.00000084 00000-0 10000-3 0 9955','2 04632 11.4628 273.1101 1450506 207.6000 143.9350 1.20231981 44145',0.0,2334.11450085,-41920.44035349,-0.03867437,2.826321032,-0.065091664,0.570936053), +('04632','1 04632U 70093B 04031.91070959 -.00000084 00000-0 10000-3 0 9955','2 04632 11.4628 273.1101 1450506 207.6000 143.9350 1.20231981 44145',-5184.0,-29020.02587128,13819.84419063,-5713.33679183,-1.768068390,-3.235371192,-0.395206135), +('04632','1 04632U 70093B 04031.91070959 -.00000084 00000-0 10000-3 0 9955','2 04632 11.4628 273.1101 1450506 207.6000 143.9350 1.20231981 44145',-5064.0,-32982.56870101,-11125.54996609,-6803.28472771,0.617446996,-3.379240041,0.085954707), +('04632','1 04632U 70093B 04031.91070959 -.00000084 00000-0 10000-3 0 9955','2 04632 11.4628 273.1101 1450506 207.6000 143.9350 1.20231981 44145',-4944.0,-22097.68730513,-31583.13829284,-4836.34329328,2.230597499,-2.166594667,0.426443070), +('04632','1 04632U 70093B 04031.91070959 -.00000084 00000-0 10000-3 0 9955','2 04632 11.4628 273.1101 1450506 207.6000 143.9350 1.20231981 44145',-4896.0,-15129.94694545,-36907.74526221,-3487.56256701,2.581167187,-1.524204737,0.504805763), +('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',0.0,3988.31022699,5498.96657235,0.90055879,-3.290032738,2.357652820,6.496623475), +('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',120.0,-3935.69800083,409.10980837,5471.33577327,-3.374784183,-6.635211043,-1.942056221), +('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',240.0,-1675.12766915,-5683.30432352,-3286.21510937,5.282496925,1.508674259,-5.354872978), +('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',360.0,4993.62642836,2890.54969900,-3600.40145627,0.347333429,5.707031557,5.070699638), +('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',480.0,-1115.07959514,4015.11691491,5326.99727718,-5.524279443,-4.765738774,2.402255961), +('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',600.0,-4329.10008198,-5176.70287935,409.65313857,2.858408303,-2.933091792,-6.509690397), +('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',720.0,3692.60030028,-976.24265255,-5623.36447493,3.897257243,6.415554948,1.429112190), +('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',840.0,2301.83510037,5723.92394553,2814.61514580,-5.110924966,-0.764510559,5.662120145), +('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',960.0,-4990.91637950,-2303.42547880,3920.86335598,-0.993439372,-5.967458360,-4.759110856), +('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',1080.0,642.27769977,-4332.89821901,-5183.31523910,5.720542579,4.216573838,-2.846576139), +('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',1200.0,4719.78335752,4798.06938996,-943.58851062,-2.294860662,3.492499389,6.408334723), +('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',1320.0,-3299.16993602,1576.83168320,5678.67840638,-4.460347074,-6.202025196,-0.885874586), +('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',1440.0,-2777.14682335,-5663.16031708,-2462.54889123,4.915493146,0.123328992,-5.896495091), +('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',1560.0,4992.31573893,1716.62356770,-4287.86065581,1.640717189,6.071570434,4.338797931), +('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',1680.0,-8.22384755,4662.21521668,4905.66411857,-5.891011274,-3.593173872,3.365100460), +('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',1800.0,-4966.20137963,-4379.59155037,1349.33347502,1.763172581,-3.981456387,-6.343279443), +('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',1920.0,2954.49390331,-2080.65984650,-5754.75038057,4.895893306,5.858184322,0.375474825), +('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',2040.0,3363.28794321,5559.55841180,1956.05542266,-4.587378863,0.591943403,6.107838605), +('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',2160.0,-4856.66780070,-1107.03450192,4557.21258241,-2.304158557,-6.186437070,-3.956549542), +('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',2280.0,-497.84480071,-4863.46005312,-4700.81211217,5.960065407,2.996683369,-3.767123329), +('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',2400.0,5241.61936096,3910.75960683,-1857.93473952,-1.124834806,4.406213160,6.148161299), +('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',2520.0,-2451.38045953,2610.60463261,5729.79022069,-5.366560525,-5.500855666,0.187958716), +('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',2640.0,-3791.87520638,-5378.82851382,-1575.82737930,4.266273592,-1.199162551,-6.276154080), +('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',2760.0,4730.53958356,524.05006433,-4857.29369725,2.918056288,6.135412849,3.495115636), +('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',2880.0,1159.27802897,5056.60175495,4353.49418579,-5.968060341,-2.314790406,4.230722669), +('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',0.0,2349.89483350,-14785.93811562,0.02119378,2.721488096,-3.256811655,4.498416672), +('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',120.0,15223.91713658,-17852.95881713,25280.39558224,1.079041732,0.875187372,2.485682813), +('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',240.0,19752.78050009,-8600.07130962,37522.72921090,0.238105279,1.546110924,0.986410447), +('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',360.0,19089.29762968,3107.89495018,39958.14661370,-0.410308034,1.640332277,-0.306873818), +('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',480.0,13829.66070574,13977.39999817,32736.32082508,-1.065096849,1.279983299,-1.760166075), +('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',600.0,3333.05838525,18395.31728674,12738.25031238,-1.882432221,-0.611623333,-4.039586549), +('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',720.0,2622.13222207,-15125.15464924,474.51048398,2.688287199,-3.078426664,4.494979530), +('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',840.0,15320.56770017,-17777.32564586,25539.53198382,1.064346229,0.892184771,2.459822414), +('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',960.0,19769.70267785,-8458.65104454,37624.20130236,0.229304396,1.550363884,0.966993056), +('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',1080.0,19048.56201523,3260.43223119,39923.39143967,-0.418015536,1.639346953,-0.326094840), +('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',1200.0,13729.19205837,14097.70014810,32547.52799890,-1.074511043,1.270505211,-1.785099927), +('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',1320.0,3148.86165643,18323.19841703,12305.75195578,-1.895271701,-0.678343847,-4.086577951), +('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',1440.0,2890.80638268,-15446.43952300,948.77010176,2.654407490,-2.909344895,4.486437362), +('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',1560.0,15415.98410712,-17699.90714437,25796.19644689,1.049818334,0.908822332,2.434107329), +('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',1680.0,19786.00618538,-8316.74570581,37723.74539119,0.220539813,1.554518900,0.947601047), +('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',1800.0,19007.28688729,3412.85948715,39886.66579255,-0.425733568,1.638276809,-0.345353807), +('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',1920.0,13627.93015254,14216.95401307,32356.13706868,-1.083991976,1.260802347,-1.810193903), +('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',2040.0,2963.26486560,18243.85063641,11868.25797486,-1.908015447,-0.747870342,-4.134004492), +('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',2160.0,3155.85126036,-15750.70393364,1422.32496953,2.620085624,-2.748990396,4.473527039), +('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',2280.0,15510.15191770,-17620.71002219,26050.43525345,1.035454678,0.925111006,2.408534465), +('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',2400.0,19801.67198812,-8174.33337167,37821.38577439,0.211812700,1.558576937,0.928231880), +('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',2520.0,18965.46529379,3565.19666242,39847.97510998,-0.433459945,1.637120585,-0.364653213), +('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',2640.0,13525.88227400,14335.15978787,32162.13236536,-1.093537945,1.250868256,-1.835451681), +('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',2760.0,2776.30574260,18156.98538451,11425.73046481,-1.920632199,-0.820370733,-4.181839232), +('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',2880.0,3417.20931587,-16038.79510665,1894.74934058,2.585515864,-2.596818146,4.456882556), +('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',0.0,13020.06750784,-2449.07193500,1.15896030,4.247363935,1.597178501,4.956708611), +('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',120.0,19190.32482476,9249.01266902,26596.71345328,-0.624960193,1.324550562,2.495697637), +('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',240.0,11332.67806218,16517.99124008,38569.78482991,-1.400974747,0.710947006,0.923935636), +('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',360.0,328.74217398,19554.92047380,40558.26246145,-1.593281066,0.126772913,-0.359627307), +('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',480.0,-10684.90590680,18057.15728839,33158.75253886,-1.383205997,-0.582328999,-1.744412556), +('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',600.0,-17069.78000550,9944.86797897,13885.91649059,0.044133354,-1.853448464,-3.815303117), +('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',720.0,13725.09398980,-2180.70877090,863.29684523,3.878478111,1.656846496,4.944867241), +('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',840.0,19089.63879226,9456.29670247,27026.79562883,-0.656614299,1.309112636,2.449371941), +('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',960.0,11106.41248373,16627.60874079,38727.35140296,-1.409722680,0.698582526,0.891383535), +('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',1080.0,72.40958621,19575.08054144,40492.12544001,-1.593394604,0.113655142,-0.390556063), +('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',1200.0,-10905.89252576,17965.41205111,32850.07298244,-1.371396120,-0.601706604,-1.782817058), +('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',1320.0,-17044.61207568,9635.48491849,13212.59462953,0.129244030,-1.903551430,-3.884569098), +('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',1440.0,14369.90303735,-1903.85601062,1722.15319853,3.543393116,1.701687176,4.913881358), +('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',1560.0,18983.96210441,9661.12233804,27448.99557732,-0.687189304,1.293808870,2.403630759), +('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',1680.0,10878.79336704,16735.31433954,38879.23434264,-1.418239666,0.686235750,0.858951848), +('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',1800.0,-184.03743100,19593.09371709,40420.40606889,-1.593348925,0.100448697,-0.421571993), +('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',1920.0,-11125.12138631,17870.19488928,32534.21521208,-1.359116236,-0.621413776,-1.821629856), +('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',2040.0,-17004.43272827,9316.53926351,12526.11883812,0.220330736,-1.955594322,-3.955058575), +('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',2160.0,14960.06492693,-1620.68430805,2574.96359381,3.238634028,1.734723385,4.868880331), +('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',2280.0,18873.46347257,9863.57004586,27863.46574735,-0.716736981,1.278632817,2.358448535), +('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',2400.0,10649.86857581,16841.14172669,39025.48035006,-1.426527152,0.673901057,0.826632332), +('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',2520.0,-440.53459323,19608.95524423,40343.10675451,-1.593138597,0.087147884,-0.452680559), +('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',2640.0,-11342.45028909,17771.44223942,32211.12535721,-1.346344015,-0.641464291,-1.860864234), +('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',2760.0,-16948.06005711,8987.64254880,11826.28284367,0.318007297,-2.009693492,-4.026726648), +('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',2880.0,15500.53445068,-1332.90981042,3419.72315308,2.960917974,1.758331634,4.813698638), +('09998','1 09998U 74033F 05148.79417928 -.00000112 00000-0 00000+0 0 4480','2 09998 9.4958 313.1750 0270971 327.5225 30.8097 1.16186785 45878',0.0,25532.98947267,-27244.26327953,-1.11572421,2.410283885,2.194175683,0.545888526), +('09998','1 09998U 74033F 05148.79417928 -.00000112 00000-0 00000+0 0 4480','2 09998 9.4958 313.1750 0270971 327.5225 30.8097 1.16186785 45878',-1440.0,-11362.18265118,-35117.55867813,-5413.62537994,3.137861261,-1.011678260,0.267510059), +('09998','1 09998U 74033F 05148.79417928 -.00000112 00000-0 00000+0 0 4480','2 09998 9.4958 313.1750 0270971 327.5225 30.8097 1.16186785 45878',-1380.0,309.25349929,-36960.43090143,-4198.48007670,3.292429375,-0.002166046,0.402111628), +('09998','1 09998U 74033F 05148.79417928 -.00000112 00000-0 00000+0 0 4480','2 09998 9.4958 313.1750 0270971 327.5225 30.8097 1.16186785 45878',-1320.0,11949.04009077,-35127.37816804,-2565.89806468,3.119942784,1.012096444,0.497284100), +('09998','1 09998U 74033F 05148.79417928 -.00000112 00000-0 00000+0 0 4480','2 09998 9.4958 313.1750 0270971 327.5225 30.8097 1.16186785 45878',-1260.0,22400.45329336,-29798.63236321,-677.91515122,2.638533344,1.922477736,0.542792913), +('09998','1 09998U 74033F 05148.79417928 -.00000112 00000-0 00000+0 0 4480','2 09998 9.4958 313.1750 0270971 327.5225 30.8097 1.16186785 45878',-1200.0,30640.84752458,-21525.02340201,1277.34808722,1.903464941,2.634294312,0.534540934), +('09998','1 09998U 74033F 05148.79417928 -.00000112 00000-0 00000+0 0 4480','2 09998 9.4958 313.1750 0270971 327.5225 30.8097 1.16186785 45878',-1140.0,35899.56788035,-11152.71158138,3108.72535238,0.997393045,3.079858548,0.474873291), +('09998','1 09998U 74033F 05148.79417928 -.00000112 00000-0 00000+0 0 4480','2 09998 9.4958 313.1750 0270971 327.5225 30.8097 1.16186785 45878',-1080.0,37732.45438600,288.18821054,4643.87587495,0.016652226,3.225184410,0.371669746), +('09998','1 09998U 74033F 05148.79417928 -.00000112 00000-0 00000+0 0 4480','2 09998 9.4958 313.1750 0270971 327.5225 30.8097 1.16186785 45878',-1020.0,36045.92961699,11706.61816230,5746.32646574,-0.942409065,3.069888941,0.236662980), +('09998','1 09998U 74033F 05148.79417928 -.00000112 00000-0 00000+0 0 4480','2 09998 9.4958 313.1750 0270971 327.5225 30.8097 1.16186785 45878',-960.0,31076.77273609,22063.44379776,6325.93403705,-1.794027976,2.642072476,0.083556127), +('09998','1 09998U 74033F 05148.79417928 -.00000112 00000-0 00000+0 0 4480','2 09998 9.4958 313.1750 0270971 327.5225 30.8097 1.16186785 45878',-900.0,23341.26015320,30460.88002531,6342.91707895,-2.469409743,1.990861658,-0.073612096), +('09998','1 09998U 74033F 05148.79417928 -.00000112 00000-0 00000+0 0 4480','2 09998 9.4958 313.1750 0270971 327.5225 30.8097 1.16186785 45878',-840.0,13568.39733054,36204.45930900,5806.79548733,-2.919354203,1.178920217,-0.221646814), +('09998','1 09998U 74033F 05148.79417928 -.00000112 00000-0 00000+0 0 4480','2 09998 9.4958 313.1750 0270971 327.5225 30.8097 1.16186785 45878',-780.0,2628.58762420,38840.10855897,4771.91979854,-3.114400514,0.276239109,-0.348926401), +('09998','1 09998U 74033F 05148.79417928 -.00000112 00000-0 00000+0 0 4480','2 09998 9.4958 313.1750 0270971 327.5225 30.8097 1.16186785 45878',-720.0,-8535.81598158,38171.79073851,3331.00311285,-3.043839958,-0.644462527,-0.445808894), +('11801','1 11801U 80230.29629788 .01431103 00000-0 14311-1 13','2 11801 46.7916 230.4354 7318036 47.4722 10.4117 2.28537848 13',0.0,7473.37102491,428.94748312,5828.74846783,5.107155391,6.444680305,-0.186133297), +('11801','1 11801U 80230.29629788 .01431103 00000-0 14311-1 13','2 11801 46.7916 230.4354 7318036 47.4722 10.4117 2.28537848 13',360.0,-3305.22148694,32410.84323331,-24697.16974954,-1.301137319,-1.151315600,-0.283335823), +('11801','1 11801U 80230.29629788 .01431103 00000-0 14311-1 13','2 11801 46.7916 230.4354 7318036 47.4722 10.4117 2.28537848 13',720.0,14271.29083858,24110.44309009,-4725.76320143,-0.320504528,2.679841539,-2.084054355), +('11801','1 11801U 80230.29629788 .01431103 00000-0 14311-1 13','2 11801 46.7916 230.4354 7318036 47.4722 10.4117 2.28537848 13',1080.0,-9990.05800009,22717.34212448,-23616.88515553,-1.016674392,-2.290267981,0.728923337), +('11801','1 11801U 80230.29629788 .01431103 00000-0 14311-1 13','2 11801 46.7916 230.4354 7318036 47.4722 10.4117 2.28537848 13',1440.0,9787.87836256,33753.32249667,-15030.79874625,-1.094251553,0.923589906,-1.522311008), +('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',0.0,34747.57932696,24502.37114079,-1.32832986,-1.731642662,2.452772615,0.608510081), +('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',120.0,18263.33439094,38159.96004751,4186.18304085,-2.744396611,1.255583260,0.528558932), +('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',240.0,-3023.38840703,41783.13186459,7273.03412906,-3.035574793,-0.271656544,0.309645251), +('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',360.0,-23516.34391907,34424.42065671,8448.49867693,-2.529120477,-1.726186020,0.009582303), +('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',480.0,-37837.46699511,18028.39727170,7406.25540271,-1.360069525,-2.725794686,-0.292555349), +('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',600.0,-42243.58460661,-3093.72887774,4422.91711801,0.163110919,-3.009980598,-0.517584362), +('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',720.0,-35597.57919549,-23407.91145393,282.09554383,1.641405246,-2.506773678,-0.606963478), +('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',840.0,-19649.19834455,-37606.11623860,-3932.71525948,2.689647056,-1.349150016,-0.537710698), +('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',960.0,1431.30912160,-41982.04949668,-7120.45467057,3.035263353,0.160882945,-0.327993994), +('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',1080.0,22136.97605384,-35388.19823762,-8447.62393401,2.587624889,1.630097136,-0.032349004), +('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',1200.0,37050.15790219,-19537.23321425,-7564.83463543,1.461844494,2.674654256,0.272202191), +('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',1320.0,42253.81760945,1431.81867593,-4699.87621174,-0.049247334,3.019518960,0.505890058), +('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',1440.0,36366.59147396,22023.54245720,-601.47121821,-1.549681546,2.571788981,0.607057418), +('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',1560.0,20922.12287985,36826.33975981,3654.91125886,-2.644070068,1.447521216,0.548722983), +('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',1680.0,-23.77224182,41945.51688402,6950.29891751,-3.043358385,-0.057417440,0.346112094), +('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',1800.0,-20964.17821076,36039.06206172,8418.91984963,-2.642795221,-1.546099886,0.052725852), +('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',1920.0,-36401.63863057,20669.75286162,7677.19769359,-1.549488154,-2.627052310,-0.254079652), +('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',2040.0,-42298.30327543,-119.03351118,4922.96388841,-0.052232768,-3.018152669,-0.493827331), +('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',2160.0,-37125.62383511,-20879.63058368,879.86971348,1.456499841,-2.619358421,-0.604081694), +('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',2280.0,-22250.12320553,-36182.74736487,-3393.15365183,2.583161226,-1.536647628,-0.556404555), +('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',2400.0,-1563.06258654,-42035.43179159,-6780.02161760,3.034917506,-0.052702046,-0.363395654), +('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',2520.0,19531.64069587,-36905.65470956,-8395.46892032,2.693682199,1.446079999,-0.075256054), +('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',2640.0,35516.53506142,-22123.71916638,-7815.04516935,1.646882125,2.568416058,0.232985912), +('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',2760.0,42196.03535976,-1547.32646751,-5187.39401981,0.166491841,3.019211549,0.480665780), +('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',2880.0,37802.25393045,19433.57330019,-1198.66634226,-1.359930580,2.677830903,0.602507466), +('16925','1 16925U 86065D 06151.67415771 .02550794 -30915-6 18784-3 0 4486','2 16925 62.0906 295.0239 5596327 245.1593 47.9690 4.88511875148616',0.0,5559.11686836,-11941.04090781,-19.41235206,3.392116762,-1.946985124,4.250755852), +('16925','1 16925U 86065D 06151.67415771 .02550794 -30915-6 18784-3 0 4486','2 16925 62.0906 295.0239 5596327 245.1593 47.9690 4.88511875148616',120.0,12339.83273749,-2771.14447871,18904.57603433,-0.871247614,2.600917693,0.581560002), +('16925','1 16925U 86065D 06151.67415771 .02550794 -30915-6 18784-3 0 4486','2 16925 62.0906 295.0239 5596327 245.1593 47.9690 4.88511875148616',240.0,-3385.00215658,7538.13955729,200.59008616,-2.023512865,-4.261808344,-6.856385787), +('16925','1 16925U 86065D 06151.67415771 .02550794 -30915-6 18784-3 0 4486','2 16925 62.0906 295.0239 5596327 245.1593 47.9690 4.88511875148616',360.0,12805.22442200,-10258.94667177,13780.16486738,0.619279224,1.821510542,2.507365975), +('16925','1 16925U 86065D 06151.67415771 .02550794 -30915-6 18784-3 0 4486','2 16925 62.0906 295.0239 5596327 245.1593 47.9690 4.88511875148616',480.0,5682.46556318,7199.30270473,15437.67134070,-2.474365406,2.087897336,-2.583767460), +('16925','1 16925U 86065D 06151.67415771 .02550794 -30915-6 18784-3 0 4486','2 16925 62.0906 295.0239 5596327 245.1593 47.9690 4.88511875148616',600.0,7628.94243982,-12852.72097492,2902.87208981,2.748131081,-0.740084579,4.125307943), +('16925','1 16925U 86065D 06151.67415771 .02550794 -30915-6 18784-3 0 4486','2 16925 62.0906 295.0239 5596327 245.1593 47.9690 4.88511875148616',720.0,11531.64866625,-858.27542736,19086.85993771,-1.170071901,2.660311986,0.096005705), +('16925','1 16925U 86065D 06151.67415771 .02550794 -30915-6 18784-3 0 4486','2 16925 62.0906 295.0239 5596327 245.1593 47.9690 4.88511875148616',840.0,-3866.98069515,2603.73442786,-4577.36484577,1.157257298,-8.453281164,-4.683959407), +('16925','1 16925U 86065D 06151.67415771 .02550794 -30915-6 18784-3 0 4486','2 16925 62.0906 295.0239 5596327 245.1593 47.9690 4.88511875148616',960.0,13054.77732721,-8707.92757730,15537.63259903,0.229846748,2.119467054,2.063396852), +('16925','1 16925U 86065D 06151.67415771 .02550794 -30915-6 18784-3 0 4486','2 16925 62.0906 295.0239 5596327 245.1593 47.9690 4.88511875148616',1080.0,3496.91064652,8712.83919778,12845.81838327,-2.782184997,1.552950644,-3.554436131), +('16925','1 16925U 86065D 06151.67415771 .02550794 -30915-6 18784-3 0 4486','2 16925 62.0906 295.0239 5596327 245.1593 47.9690 4.88511875148616',1200.0,9593.07424729,-13023.75963608,6250.46484931,2.072666376,0.278735334,3.778111073), +('16925','1 16925U 86065D 06151.67415771 .02550794 -30915-6 18784-3 0 4486','2 16925 62.0906 295.0239 5596327 245.1593 47.9690 4.88511875148616',1320.0,10284.79205084,1487.89914169,18824.37381327,-1.530335053,2.663107730,-0.542205966), +('16925','1 16925U 86065D 06151.67415771 .02550794 -30915-6 18784-3 0 4486','2 16925 62.0906 295.0239 5596327 245.1593 47.9690 4.88511875148616',1440.0,-984.62035146,-5187.03480813,-5745.59594144,4.340271916,-7.266811354,1.777668888), +('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',0.0,25123.29290741,-13225.49966286,3249.40351869,0.488683419,4.797897593,-0.961119693), +('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',1440.0,-151669.05280515,-5645.20454550,-2198.51592118,-0.869182889,-0.870759872,0.156508219), +('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',1560.0,-157497.71657495,-11884.99595074,-1061.44439402,-0.749657961,-0.864016715,0.157766101), +('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',1680.0,-162498.32255577,-18062.99733167,81.00915253,-0.638980378,-0.853687105,0.158098992), +('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',1800.0,-166728.76010920,-24155.99648299,1222.84128677,-0.535600687,-0.840455444,0.157680857), +('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',1920.0,-169935.81924592,-31767.29787964,2749.01540345,-0.430050431,-0.828904183,0.157812340), +('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',2040.0,-172703.07831815,-37662.95639336,3883.60052579,-0.338004891,-0.810277487,0.156020035), +('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',2160.0,-174823.19337404,-43417.55605219,5003.26312809,-0.250258622,-0.789828672,0.153764903), +('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',2280.0,-176324.63925775,-49018.51958648,6104.85025002,-0.166136613,-0.767706262,0.151092242), +('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',2400.0,-177231.42142458,-54454.12699497,7185.48661607,-0.085067854,-0.744001567,0.148033403), +('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',2520.0,-177563.73583232,-59713.14859144,8242.48472591,-0.006561730,-0.718760309,0.144608676), +('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',2640.0,-177338.48026483,-64784.54644698,9273.27220003,0.069809946,-0.691990238,0.140829236), +('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',2760.0,-176569.65151461,-69657.21976255,10275.33063459,0.144426878,-0.663665876,0.136698419), +('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',2880.0,-175268.65299073,-74319.77625463,11246.14177160,0.217631370,-0.633731091,0.132212491), +('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',3000.0,-173444.53039609,-78760.31560396,12183.13775212,0.289737325,-0.602099929,0.127361017), +('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',3120.0,-171104.14813653,-82966.21323591,13083.65278381,0.361037779,-0.568655903,0.122126889), +('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',3240.0,-168252.31543803,-86923.89363433,13944.87382716,0.431811396,-0.533249797,0.116486022), +('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',3360.0,-164891.86832887,-90618.58225954,14763.78794247,0.502328269,-0.495695896,0.110406725), +('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',3480.0,-161023.71139825,-94034.02398835,15537.12375729,0.572855321,-0.455766412,0.103848688), +('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',3600.0,-156646.82136726,-97152.15370791,16261.28409305,0.643661538,-0.413183688,0.096761524), +('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',3720.0,-151758.21285737,-99952.70098346,16932.26607548,0.715023254,-0.367609561,0.089082727), +('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',3840.0,-146352.86521283,-102412.70506284,17545.56394158,0.787229695,-0.318630913,0.080734873), +('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',3960.0,-140423.60777444,-104505.90799734,18096.04807097,0.860588979,-0.265739987,0.071621768), +('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',4080.0,-133960.95961851,-106201.98091318,18577.81121953,0.935434758,-0.208307307,0.061623110), +('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',4200.0,-126952.91860010,-107465.51906186,18983.96903112,1.012133628,-0.145543878,0.050587007), +('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',4320.0,-119384.69396454,-108254.71115372,19306.39581892,1.091093313,-0.076447479,0.038319282), +('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',0.0,-14464.72135182,-4699.19517587,0.06681686,-3.249312013,-3.281032707,4.007046940), +('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',120.0,-19410.46286123,-19143.03318969,23114.05522619,0.508602237,-1.156882269,2.379923455), +('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',240.0,-12686.06129708,-23853.75335645,35529.81733588,1.231633829,-0.221718202,1.118440291), +('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',360.0,-2775.46649359,-22839.64574119,39494.64689967,1.468963405,0.489481769,-0.023972788), +('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',480.0,7679.87883570,-16780.50760106,34686.21815555,1.364171080,1.211183897,-1.385151371), +('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',600.0,14552.40023028,-4819.50121461,17154.70672449,0.109201591,2.176124494,-3.854856805), +('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',720.0,-15302.38845375,-5556.43440300,1095.95088753,-2.838224312,-3.134231137,3.992596326), +('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',840.0,-19289.20066748,-19427.04851118,23759.45685636,0.552495087,-1.112499437,2.325112654), +('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',960.0,-12376.21976437,-23893.38020018,35831.33691892,1.246701529,-0.194294048,1.074867282), +('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',1080.0,-2400.55677665,-22698.62264640,39482.75964390,1.472582922,0.513555654,-0.069306561), +('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',1200.0,8031.66819252,-16455.77592085,34298.94391742,1.351357426,1.239633234,-1.448195324), +('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',1320.0,14559.48780372,-4238.43773813,16079.23154704,-0.026409655,2.218938770,-4.012628896), +('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',1440.0,-16036.04980660,-6372.51406468,2183.44834232,-2.485113443,-2.994994355,3.955891272), +('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',1560.0,-19156.71583814,-19698.89059957,24389.29473934,0.594278133,-1.069418599,2.271152044), +('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',1680.0,-12062.72925552,-23925.82362911,36120.66680667,1.261238798,-0.167201856,1.031478939), +('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',1800.0,-2024.96136966,-22551.56626703,39458.50085787,1.475816889,0.537615764,-0.114887472), +('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',1920.0,8379.80916204,-16123.95878459,33894.75123231,1.337468254,1.268432783,-1.512473301), +('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',2040.0,14527.86748873,-3646.33817120,14960.74306518,-0.180035839,2.261273515,-4.179355590), +('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',2160.0,-16680.12147335,-7149.80800425,3257.64227208,-2.178897351,-2.863927095,3.904876943), +('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',2280.0,-19013.58793448,-19958.93766022,25003.81778666,0.634100431,-1.027559823,2.218002685), +('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',2400.0,-11745.76155818,-23951.19438627,36397.87676581,1.275261813,-0.140425132,0.988259441), +('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',2520.0,-1648.81945070,-22398.50594576,39421.83273890,1.478660174,0.561671519,-0.160733093), +('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',2640.0,8723.97652795,-15784.99406275,33473.35215527,1.322433593,1.297602497,-1.578055493), +('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',2760.0,14452.25571587,-3043.42332645,13796.84870805,-0.355190169,2.302485443,-4.355767077), +('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',2880.0,-17246.31075678,-7890.72601508,4315.39410307,-1.910968458,-2.740945672,3.844722726), +('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',0.0,1442.10132912,6510.23625449,8.83145885,-3.475714837,0.997262768,6.835860345), +('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',54.2028672,306.10478453,-5816.45655525,-2979.55846068,3.950663855,3.415332543,-5.879974329), +('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',74.2028672,3282.82085464,2077.46972905,-5189.17988770,0.097342701,7.375135692,2.900196702), +('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',94.2028672,530.82729176,6426.20790003,1712.37076793,-3.837120395,-1.252430637,6.561602577), +('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',114.2028672,-3191.69170212,170.27219912,5956.29807775,-1.394956872,-7.438073471,-0.557553115), +('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',134.2028672,-1818.99222465,-6322.45146616,681.95247154,3.349795173,-1.530140265,-6.831522765), +('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',154.2028672,2515.66448634,-2158.83091224,-5552.13320544,2.571979660,7.311930509,-1.639865620), +('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',174.2028672,2414.52833210,5749.10150922,-1998.59693165,-2.681032960,3.527589301,6.452951429), +('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',194.2028672,-1877.98944331,3862.27848302,5112.48435863,-3.261489804,-6.026859137,3.433254768), +('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',214.2028672,-3117.36584395,-4419.74773864,3840.85960912,1.545479182,-5.475416581,-5.207913748), +('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',234.2028672,815.32034678,-5231.67692249,-3760.04690354,3.870864200,4.455588552,-5.211082191), +('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',254.2028672,3269.54341810,3029.00081083,-4704.67969713,-0.526711345,6.812157950,3.929825087), +('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',274.2028672,-10.18099756,6026.23341453,2643.50518407,-3.953623254,-2.616070012,6.145637500), +('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',294.2028672,-3320.58819584,-1248.42679945,5563.06017927,-0.637046974,-7.417786044,-2.076120187), +('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',314.2028672,-1025.48974616,-6366.98945782,-911.23559153,3.811771909,0.438071490,-6.829260617), +('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',334.2028672,3003.75996128,-413.85708003,-5706.15591435,1.674350083,7.694169068,0.316915204), +('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',354.2028672,1731.42816980,6258.27676925,-409.32527982,-3.400497806,1.447945424,6.904010052), +('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',374.2028672,-2582.52111460,2024.19020680,5647.55650268,-2.530348121,-7.221719393,1.438141553), +('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',394.2028672,-2440.56848578,-5702.77311877,1934.81094689,2.731792947,-3.350576075,-6.527773339), +('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',414.2028672,1951.22934391,-3423.59443045,-5121.67808201,3.249039133,6.465974362,-3.069806659), +('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',434.2028672,2886.50939356,4888.68626216,-3096.29885989,-1.973162139,4.877039020,5.832414910), +('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',454.2028672,-1276.55532182,4553.26898463,4406.19787375,-3.715146421,-5.320176914,4.418210777), +('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',474.2028672,-3181.54698042,-3831.29976506,4096.80242787,1.114159970,-6.104773578,-4.829967400), +('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',0.0,14712.22023280,-1443.81061850,0.83497888,4.418965470,1.629592098,4.115531802), +('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',120.0,25418.88807860,9342.60307989,23611.46690798,0.051284086,1.213127306,2.429004159), +('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',240.0,21619.59550749,16125.24978864,36396.79365831,-0.963604380,0.685454965,1.177181937), +('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',360.0,12721.50543331,19258.96193362,40898.47648359,-1.457448565,0.179955469,0.071502601), +('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',480.0,1272.80760054,18458.41971897,37044.74742696,-1.674863386,-0.436454983,-1.201040990), +('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',600.0,-10058.43188619,11906.60764454,21739.62097733,-1.245829683,-1.543789125,-3.324449221), +('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',720.0,10924.40116466,-2571.92414170,-2956.34856294,6.071727751,1.349579102,3.898430260), +('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',840.0,25332.14851525,8398.91099924,21783.90654357,0.222320754,1.272214306,2.580527192), +('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',960.0,22317.71926039,15574.82086129,35495.77144092,-0.892750056,0.737383381,1.291738834), +('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',1080.0,13795.68675885,19088.83051008,40803.69584385,-1.420277669,0.235599456,0.185517056), +('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',1200.0,2515.17145049,18746.63776282,37864.58088636,-1.668016053,-0.360431458,-1.052854596), +('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',1320.0,-9084.48602106,12982.62608646,24045.63900249,-1.378032363,-1.373184736,-3.013963835), +('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',1440.0,5647.00909495,-3293.90518693,-5425.85235063,8.507977176,0.414560797,2.543322806), +('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',1560.0,25111.63372210,7412.55109488,19844.25781729,0.416496290,1.332106006,2.739301737), +('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',1680.0,22961.47461641,14985.74459578,34511.09257381,-0.816711048,0.789391108,1.407901804), +('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',1800.0,14841.15301459,18876.91439870,40626.25901619,-1.380403341,0.290228810,0.298258120), +('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',1920.0,3750.70174081,18978.57939698,38578.11783220,-1.656939412,-0.287930881,-0.910825599), +('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',2040.0,-8027.30219489,13939.54436955,26136.49045637,-1.474476061,-1.222693624,-2.737178731), +('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',2160.0,-1296.95657092,-2813.69369768,-5871.09587258,9.881929371,-1.978467207,-1.922261005), +('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',2280.0,24738.60364819,6383.41644019,17787.27631900,0.639556952,1.392554379,2.906206324), +('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',2400.0,23546.85388669,14358.15602832,33441.67679479,-0.734895006,0.841564851,1.526009909), +('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',2520.0,15855.87696303,18624.05633582,40367.13420574,-1.337753546,0.343969522,0.410018472), +('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',2640.0,4976.44933591,19156.75504042,39189.68603184,-1.642084365,-0.218525096,-0.774148204), +('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',2760.0,-6909.20746210,14790.44707042,28034.46732222,-1.545152610,-1.088119523,-2.487447214), +('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',2880.0,-7331.65006707,-604.17323419,-2723.51014575,6.168997265,-3.634011554,-5.963531682), +('23177','1 23177U 94040C 06175.45752052 .00000386 00000-0 76590-3 0 95','2 23177 7.0496 179.8238 7258491 296.0482 8.3061 2.25906668 97438',0.0,-8801.60046706,-0.03357557,-0.44522743,-3.835279101,-7.662552175,0.944561323), +('23177','1 23177U 94040C 06175.45752052 .00000386 00000-0 76590-3 0 95','2 23177 7.0496 179.8238 7258491 296.0482 8.3061 2.25906668 97438',120.0,-1684.34352858,-31555.95196340,3888.99944319,2.023055719,-2.151306405,0.265065778), +('23177','1 23177U 94040C 06175.45752052 .00000386 00000-0 76590-3 0 95','2 23177 7.0496 179.8238 7258491 296.0482 8.3061 2.25906668 97438',240.0,12325.51410155,-38982.15046244,4802.88832275,1.763224157,-0.102514446,0.012397139), +('23177','1 23177U 94040C 06175.45752052 .00000386 00000-0 76590-3 0 95','2 23177 7.0496 179.8238 7258491 296.0482 8.3061 2.25906668 97438',360.0,22773.66831936,-34348.02176606,4228.77407391,1.067616787,1.352427865,-0.166956367), +('23177','1 23177U 94040C 06175.45752052 .00000386 00000-0 76590-3 0 95','2 23177 7.0496 179.8238 7258491 296.0482 8.3061 2.25906668 97438',480.0,26194.40441089,-19482.94203672,2393.84774063,-0.313732186,2.808771328,-0.346204118), +('23177','1 23177U 94040C 06175.45752052 .00000386 00000-0 76590-3 0 95','2 23177 7.0496 179.8238 7258491 296.0482 8.3061 2.25906668 97438',600.0,8893.50573448,5763.38890561,-713.69884164,-7.037399220,3.022613131,-0.370272416), +('23177','1 23177U 94040C 06175.45752052 .00000386 00000-0 76590-3 0 95','2 23177 7.0496 179.8238 7258491 296.0482 8.3061 2.25906668 97438',720.0,-6028.75686537,-25648.99913786,3164.37107274,1.883159288,-3.177051976,0.390793162), +('23177','1 23177U 94040C 06175.45752052 .00000386 00000-0 76590-3 0 95','2 23177 7.0496 179.8238 7258491 296.0482 8.3061 2.25906668 97438',840.0,8313.57299056,-38146.45710922,4697.80777535,1.905002133,-0.625883074,0.076098187), +('23177','1 23177U 94040C 06175.45752052 .00000386 00000-0 76590-3 0 95','2 23177 7.0496 179.8238 7258491 296.0482 8.3061 2.25906668 97438',960.0,20181.29108622,-36842.60674073,4529.12568218,1.326244476,0.921916487,-0.114527455), +('23177','1 23177U 94040C 06175.45752052 .00000386 00000-0 76590-3 0 95','2 23177 7.0496 179.8238 7258491 296.0482 8.3061 2.25906668 97438',1080.0,26302.61794569,-25173.39539436,3084.65309986,0.245398835,2.329974347,-0.287495880), +('23177','1 23177U 94040C 06175.45752052 .00000386 00000-0 76590-3 0 95','2 23177 7.0496 179.8238 7258491 296.0482 8.3061 2.25906668 97438',1200.0,19365.07045602,-2700.00490122,317.42727417,-3.009733018,3.902496058,-0.478928582), +('23177','1 23177U 94040C 06175.45752052 .00000386 00000-0 76590-3 0 95','2 23177 7.0496 179.8238 7258491 296.0482 8.3061 2.25906668 97438',1320.0,-9667.81878780,-16930.19112642,2095.87469034,1.279288285,-4.736005905,0.582878255), +('23177','1 23177U 94040C 06175.45752052 .00000386 00000-0 76590-3 0 95','2 23177 7.0496 179.8238 7258491 296.0482 8.3061 2.25906668 97438',1440.0,4021.31438583,-36066.09209609,4442.91587411,2.007322354,-1.227461376,0.149383897), +('23333','1 23333U 94071A 94305.49999999 -.00172956 26967-3 10000-3 0 15','2 23333 28.7490 2.3720 9728298 30.4360 1.3500 0.07309491 70',0.0,-9301.24542292,3326.10200382,2318.36441127,-8.729303005,-0.828225037,-0.122314827), +('23333','1 23333U 94071A 94305.49999999 -.00172956 26967-3 10000-3 0 15','2 23333 28.7490 2.3720 9728298 30.4360 1.3500 0.07309491 70',120.0,-44672.91239680,-6213.11996581,-1738.80131727,-3.719475070,-1.336673022,-0.621888261), +('23333','1 23333U 94071A 94305.49999999 -.00172956 26967-3 10000-3 0 15','2 23333 28.7490 2.3720 9728298 30.4360 1.3500 0.07309491 70',240.0,-67053.08885388,-14994.69685946,-5897.99072793,-2.860576613,-1.183771565,-0.568473909), +('23333','1 23333U 94071A 94305.49999999 -.00172956 26967-3 10000-3 0 15','2 23333 28.7490 2.3720 9728298 30.4360 1.3500 0.07309491 70',360.0,-85227.84253168,-22897.08484471,-9722.59184564,-2.426469823,-1.078592475,-0.525341431), +('23333','1 23333U 94071A 94305.49999999 -.00172956 26967-3 10000-3 0 15','2 23333 28.7490 2.3720 9728298 30.4360 1.3500 0.07309491 70',480.0,-100986.00419136,-30171.19698695,-13283.77044765,-2.147108978,-1.000530827,-0.491587582), +('23333','1 23333U 94071A 94305.49999999 -.00172956 26967-3 10000-3 0 15','2 23333 28.7490 2.3720 9728298 30.4360 1.3500 0.07309491 70',600.0,-115093.00686387,-36962.56316477,-16634.15682929,-1.945446188,-0.938947736,-0.464199202), +('23333','1 23333U 94071A 94305.49999999 -.00172956 26967-3 10000-3 0 15','2 23333 28.7490 2.3720 9728298 30.4360 1.3500 0.07309491 70',720.0,-127965.80064891,-43363.32967165,-19809.90480432,-1.789652016,-0.888278463,-0.441254468), +('23333','1 23333U 94071A 94305.49999999 -.00172956 26967-3 10000-3 0 15','2 23333 28.7490 2.3720 9728298 30.4360 1.3500 0.07309491 70',840.0,-139863.28332207,-49436.45704153,-22836.80438139,-1.663762568,-0.845315913,-0.421548627), +('23333','1 23333U 94071A 94305.49999999 -.00172956 26967-3 10000-3 0 15','2 23333 28.7490 2.3720 9728298 30.4360 1.3500 0.07309491 70',960.0,-150960.22978259,-55227.45413896,-25734.01408879,-1.558730986,-0.808061065,-0.404293846), +('23333','1 23333U 94071A 94305.49999999 -.00172956 26967-3 10000-3 0 15','2 23333 28.7490 2.3720 9728298 30.4360 1.3500 0.07309491 70',1080.0,-161381.71414630,-60770.64040903,-28516.26290017,-1.468977174,-0.775190459,-0.388951810), +('23333','1 23333U 94071A 94305.49999999 -.00172956 26967-3 10000-3 0 15','2 23333 28.7490 2.3720 9728298 30.4360 1.3500 0.07309491 70',1200.0,-171221.18736947,-66092.76474442,-31195.19847387,-1.390837596,-0.745785633,-0.375140398), +('23333','1 23333U 94071A 94305.49999999 -.00172956 26967-3 10000-3 0 15','2 23333 28.7490 2.3720 9728298 30.4360 1.3500 0.07309491 70',1320.0,-180550.82888746,-71215.23290630,-33780.24938270,-1.321788672,-0.719184752,-0.362579495), +('23333','1 23333U 94071A 94305.49999999 -.00172956 26967-3 10000-3 0 15','2 23333 28.7490 2.3720 9728298 30.4360 1.3500 0.07309491 70',1440.0,-189427.87533074,-76155.54943344,-36279.19882816,-1.260024473,-0.694896053,-0.351058133), +('23333','1 23333U 94071A 94305.49999999 -.00172956 26967-3 10000-3 0 15','2 23333 28.7490 2.3720 9728298 30.4360 1.3500 0.07309491 70',1560.0,-197898.69401409,-80928.29015181,-38698.57972447,-1.204211888,-0.672544709,-0.340413731), +('23333','1 23333U 94071A 94305.49999999 -.00172956 26967-3 10000-3 0 15','2 23333 28.7490 2.3720 9728298 30.4360 1.3500 0.07309491 70',1600.0,-200638.82986236,-82484.14969882,-39488.34331447,-1.186748462,-0.665472422,-0.337037582), +('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',0.0,9892.63794341,35.76144969,-1.08228838,3.556643237,6.456009375,0.783610890), +('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',20.0,11931.95642997,7340.74973750,886.46365987,0.308329116,5.532328972,0.672887281), +('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',40.0,11321.71039205,13222.84749156,1602.40119049,-1.151973982,4.285810871,0.521919425), +('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',60.0,9438.29395675,17688.05450261,2146.59293402,-1.907904054,3.179955046,0.387692479), +('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',80.0,6872.08634639,20910.11016811,2539.79945034,-2.323995367,2.207398462,0.269506121), +('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',100.0,3933.37509798,23024.07662542,2798.25966746,-2.542860616,1.327134966,0.162450076), +('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',120.0,816.64091546,24118.98675475,2932.69459428,-2.626838010,0.504502763,0.062344306), +('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',140.0,-2334.41705804,24246.86096326,2949.36448841,-2.602259646,-0.288058266,-0.034145135), +('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',160.0,-5394.31798039,23429.42716149,2850.86832586,-2.474434068,-1.074055982,-0.129868366), +('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',180.0,-8233.35130237,21661.24480883,2636.51456118,-2.230845533,-1.875742344,-0.227528603), +('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',200.0,-10693.96497348,18909.88168891,2302.33707548,-1.835912433,-2.716169865,-0.329931880), +('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',220.0,-12553.89669904,15114.63990716,1840.93573231,-1.212478879,-3.619036996,-0.439970633), +('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',240.0,-13450.20591864,10190.57904289,1241.95958736,-0.189082511,-4.596701971,-0.559173899), +('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',260.0,-12686.60437121,4079.31106161,498.27078614,1.664498211,-5.559889865,-0.676747779), +('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',280.0,-8672.55867753,-2827.56823315,-342.59644716,5.515079852,-5.551222962,-0.676360044), +('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',300.0,1153.31498060,-6411.98692060,-779.87288941,9.689818102,1.388598425,0.167868798), +('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',320.0,9542.79201056,-533.71253081,-65.73165428,3.926947087,6.459583539,0.785686755), +('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',340.0,11868.80960100,6861.59590848,833.72780602,0.452957852,5.632811328,0.685262323), +('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',360.0,11376.23941678,12858.97121366,1563.40660172,-1.087665695,4.374693347,0.532207051), +('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',380.0,9547.70300782,17421.48570758,2118.56907515,-1.876540262,3.253891728,0.395810243), +('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',400.0,7008.51470263,20725.47471227,2520.56064289,-2.308703599,2.270724438,0.276138613), +('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',420.0,4083.18551180,22910.88306802,2786.35642660,-2.536610941,1.383768875,0.168165414), +('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',440.0,970.13107533,24071.19896282,2927.30875440,-2.626673095,0.557274717,0.067549303), +('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',460.0,-2183.75499348,24261.30188126,2950.09189560,-2.607082241,-0.236785937,-0.029112844), +('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',480.0,-5252.49066783,23505.58108388,2857.68628654,-2.484465059,-1.022158411,-0.124702643), +('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',500.0,-8107.41437587,21801.13395060,2649.76852683,-2.247669530,-1.821071275,-0.221914939), +('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',520.0,-10594.01813094,19118.22269010,2322.77197767,-1.863224062,-2.656353699,-0.323512642), +('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',540.0,-12496.70758499,15399.13096351,1869.75958053,-1.258272118,-3.551534022,-0.432332913), +('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',560.0,-13467.50382653,10561.43040038,1280.84842178,-0.272050695,-4.520503543,-0.550014833), +('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',580.0,-12848.00717497,4541.72432009,548.59976478,1.493938056,-5.489644146,-0.667479244), +('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',600.0,-9152.79920397,-2343.88902799,-287.93741332,5.127695273,-5.650584983,-0.686013644), +('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',620.0,280.12478642,-6500.11368508,-790.36236302,9.779642904,0.581430120,0.074124421), +('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',640.0,9166.21406115,-1093.48756223,-129.53833135,4.316926785,6.438465969,0.785095966), +('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',660.0,11794.74563870,6381.74484842,780.82775971,0.604642523,5.731705440,0.697571522), +('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',680.0,11424.80363789,12493.80833338,1524.27683836,-1.021148661,4.463489406,0.542537702), +('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',700.0,9652.78920084,17153.46470428,2090.43413681,-1.844382696,3.327595388,0.403924198), +('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',720.0,7141.24742526,20538.97115158,2501.18059966,-2.293079623,2.333598993,0.282727441), +('24208','1 24208U 96044A 06177.04061740 -.00000094 00000-0 10000-3 0 1600','2 24208 3.8536 80.0121 0026640 311.0977 48.3000 1.00778054 36119',0.0,7534.10987189,41266.39266843,-0.10801028,-3.027168008,0.558848996,0.207982755), +('24208','1 24208U 96044A 06177.04061740 -.00000094 00000-0 10000-3 0 1600','2 24208 3.8536 80.0121 0026640 311.0977 48.3000 1.00778054 36119',120.0,-14289.19940414,39469.05530051,1428.62838591,-2.893205245,-1.045447840,0.179634249), +('24208','1 24208U 96044A 06177.04061740 -.00000094 00000-0 10000-3 0 1600','2 24208 3.8536 80.0121 0026640 311.0977 48.3000 1.00778054 36119',240.0,-32222.92014955,26916.25425799,2468.59996594,-1.973007929,-2.359335071,0.102539376), +('24208','1 24208U 96044A 06177.04061740 -.00000094 00000-0 10000-3 0 1600','2 24208 3.8536 80.0121 0026640 311.0977 48.3000 1.00778054 36119',360.0,-41413.95109398,7055.51656639,2838.90906671,-0.521665080,-3.029172207,-0.002066843), +('24208','1 24208U 96044A 06177.04061740 -.00000094 00000-0 10000-3 0 1600','2 24208 3.8536 80.0121 0026640 311.0977 48.3000 1.00778054 36119',480.0,-39402.72251896,-14716.42475223,2441.32678358,1.066928187,-2.878714619,-0.105865729), +('24208','1 24208U 96044A 06177.04061740 -.00000094 00000-0 10000-3 0 1600','2 24208 3.8536 80.0121 0026640 311.0977 48.3000 1.00778054 36119',600.0,-26751.08889828,-32515.13982431,1384.38865570,2.366228869,-1.951032799,-0.181018498), +('24208','1 24208U 96044A 06177.04061740 -.00000094 00000-0 10000-3 0 1600','2 24208 3.8536 80.0121 0026640 311.0977 48.3000 1.00778054 36119',720.0,-6874.77975542,-41530.38329422,-46.60245459,3.027415087,-0.494671177,-0.207337260), +('24208','1 24208U 96044A 06177.04061740 -.00000094 00000-0 10000-3 0 1600','2 24208 3.8536 80.0121 0026640 311.0977 48.3000 1.00778054 36119',840.0,14859.52039042,-39302.58907247,-1465.02482524,2.869609883,1.100123969,-0.177514425), +('24208','1 24208U 96044A 06177.04061740 -.00000094 00000-0 10000-3 0 1600','2 24208 3.8536 80.0121 0026640 311.0977 48.3000 1.00778054 36119',960.0,32553.14863770,-26398.88401807,-2485.45866002,1.930064459,2.401574539,-0.099250520), +('24208','1 24208U 96044A 06177.04061740 -.00000094 00000-0 10000-3 0 1600','2 24208 3.8536 80.0121 0026640 311.0977 48.3000 1.00778054 36119',1080.0,41365.67576837,-6298.09965811,-2828.05254033,0.459741276,3.051680214,0.006431872), +('24208','1 24208U 96044A 06177.04061740 -.00000094 00000-0 10000-3 0 1600','2 24208 3.8536 80.0121 0026640 311.0977 48.3000 1.00778054 36119',1200.0,38858.83295070,15523.39314924,-2396.86850752,-1.140211488,2.867567143,0.110637217), +('24208','1 24208U 96044A 06177.04061740 -.00000094 00000-0 10000-3 0 1600','2 24208 3.8536 80.0121 0026640 311.0977 48.3000 1.00778054 36119',1320.0,25701.46068162,33089.42617648,-1308.68556638,-2.428713821,1.897381431,0.184605907), +('24208','1 24208U 96044A 06177.04061740 -.00000094 00000-0 10000-3 0 1600','2 24208 3.8536 80.0121 0026640 311.0977 48.3000 1.00778054 36119',1440.0,5501.08137100,41590.27784405,138.32522930,-3.050691874,0.409203052,0.207958133), +('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',0.0,8827.15660472,-41223.00971237,3.63482963,3.007087319,0.643701323,0.000941663), +('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',-1440.0,8118.18519221,-41368.40537378,4.11046687,3.017696741,0.591994297,0.000933016), +('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',-1320.0,27766.34015328,-31724.97000557,9.93297846,2.314236153,2.024903193,0.000660861), +('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',-1200.0,39932.57237973,-13532.60040454,13.12958252,0.987382819,2.911942843,0.000213298), +('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',-1080.0,41341.01365441,8305.71681955,12.84988501,-0.605098224,3.014378268,-0.000291034), +('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',-960.0,31614.99210558,27907.29155353,9.16618797,-2.034243523,2.305014102,-0.000718418), +('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',-840.0,13375.75227587,39994.27017651,3.05416854,-2.915424366,0.975119874,-0.000955576), +('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',-720.0,-8464.89963309,41312.93549892,-3.86622919,-3.011600615,-0.617275050,-0.000939664), +('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',-600.0,-28026.23406158,31507.89995661,-9.76047869,-2.296840160,-2.043607595,-0.000674889), +('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',-480.0,-40040.01314363,13218.00579413,-13.06594832,-0.963328772,-2.919827983,-0.000231414), +('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',-360.0,-41268.43291976,-8632.06859693,-12.90661266,0.630042315,-3.009677376,0.000273163), +('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',-240.0,-31377.85317015,-28156.13970334,-9.32605530,2.054021717,-2.288554158,0.000704959), +('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',-120.0,-13031.41552688,-40092.33381029,-3.27636660,2.924657466,-0.950541167,0.000949381), +('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',0.0,8827.15660472,-41223.00971237,3.63482963,3.007087319,0.643701323,0.000941663), +('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',120.0,28306.85426674,-31243.80147394,9.57216891,2.279137743,2.064316875,0.000684127), +('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',240.0,40159.05128805,-12845.39151157,12.96086316,0.937265422,2.928448287,0.000245505), +('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',360.0,41192.55903455,9013.79606759,12.90495666,-0.656727442,3.003543458,-0.000257479), +('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',480.0,31131.69755798,28445.55681731,9.42419238,-2.073484842,2.269770851,-0.000691233), +('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',600.0,12687.81846530,40217.83324639,3.44726249,-2.931721827,0.924962230,-0.000940766), +('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',720.0,-9172.23500245,41161.63475527,-3.43575757,-3.000571486,-0.668847508,-0.000940101), +('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',840.0,-28562.51093192,31022.45987587,-9.39562161,-2.261449202,-2.082713897,-0.000689669), +('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',960.0,-40260.77504549,12529.11484344,-12.84915105,-0.913097031,-2.935933528,-0.000256181), +('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',1080.0,-41114.14376538,-9338.87194483,-12.87952404,0.681588815,-2.998432565,0.000245006), +('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',1200.0,-30890.01512240,-28690.40750792,-9.48037212,2.092989805,-2.252978152,0.000680459), +('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',1320.0,-12341.46194020,-40310.06316386,-3.55833201,2.940537098,-0.900219523,0.000934170), +('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',1440.0,9533.27750818,-41065.52390214,3.30756482,2.995596171,0.695200236,0.000938525), +('26900','1 26900U 01039A 06106.74503247 .00000045 00000-0 10000-3 0 8290','2 26900 0.0164 266.5378 0003319 86.1794 182.2590 1.00273847 16981',0.0,-42014.83795787,3702.34357772,-26.67500257,-0.269775247,-3.061854393,0.000336726), +('26900','1 26900U 01039A 06106.74503247 .00000045 00000-0 10000-3 0 8290','2 26900 0.0164 266.5378 0003319 86.1794 182.2590 1.00273847 16981',9300.0,40968.68133298,-9905.99156086,11.84946837,0.722756848,2.989645389,-0.000161261), +('26900','1 26900U 01039A 06106.74503247 .00000045 00000-0 10000-3 0 8290','2 26900 0.0164 266.5378 0003319 86.1794 182.2590 1.00273847 16981',9360.0,42135.66858481,1072.99195618,10.83481752,-0.078150602,3.074772455,-0.000380063), +('26900','1 26900U 01039A 06106.74503247 .00000045 00000-0 10000-3 0 8290','2 26900 0.0164 266.5378 0003319 86.1794 182.2590 1.00273847 16981',9400.0,41304.75156132,8398.27742944,9.74006214,-0.612515135,3.014117469,-0.000511575), +('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',0.0,-14506.92313768,-21613.56043281,10.05018894,2.212943308,1.159970892,3.020600202), +('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',120.0,7309.62197950,6076.00713664,6800.08705263,1.300543383,5.322579615,-4.788746312), +('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',240.0,-3882.62933791,11960.00543452,-25088.14383845,-2.146773699,-1.372461491,-2.579382089), +('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',360.0,-16785.45507465,-734.79159704,-34300.57085853,-1.386528125,-1.907762641,-0.220949641), +('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',480.0,-23524.16689356,-13629.45124622,-30246.27899200,-0.462846784,-1.586139830,1.269293624), +('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',600.0,-22890.23597092,-22209.35900155,-16769.91946116,0.704351342,-0.671112594,2.432433851), +('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',720.0,-11646.39698980,-19855.44222106,3574.00109607,2.626712727,1.815887329,2.960883901), +('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',840.0,7665.76124241,11159.78946577,345.93813117,-0.584818007,3.193514161,-5.750338922), +('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',960.0,-6369.35388112,10204.80073022,-27844.52150384,-2.050573276,-1.582940542,-2.076075232), +('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',1080.0,-18345.64763145,-2977.76684430,-34394.90760612,-1.243589864,-1.892050757,0.060372061), +('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',1200.0,-23979.74839255,-15436.44139571,-28616.50540218,-0.294973425,-1.482987916,1.478255628), +('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',1320.0,-21921.97167880,-22852.45147658,-13784.85308485,0.945455629,-0.428940995,2.596964378), +('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',1440.0,-8266.43821031,-17210.74590112,6967.95546070,3.082244069,2.665881872,2.712555075), +('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',1560.0,6286.85464535,13809.56328971,-6321.60663781,-1.615964016,1.383135377,-5.358719132), +('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',1680.0,-8730.87526788,8244.63344365,-30039.92372791,-1.935622871,-1.724162072,-1.631224738), +('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',1800.0,-19735.81883249,-5191.76593007,-34166.14974143,-1.097835530,-1.860148418,0.324401050), +('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',1920.0,-24232.73847703,-17112.08243255,-26742.88893252,-0.119786184,-1.364365317,1.680220468), +('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',2040.0,-20654.45640708,-23184.54386047,-10611.55144716,1.209238113,-0.144169639,2.748054938), +('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',2160.0,-4337.15988957,-13410.46817244,9870.45949215,3.532753095,3.772236461,2.088424247), +('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',2280.0,4074.62263523,14698.07548285,-12248.65327973,-2.053824693,0.203325817,-4.607867718), +('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',2400.0,-10950.23438984,6148.66879447,-31736.65532865,-1.809875605,-1.816179062,-1.233364913), +('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',2520.0,-20952.40702045,-7358.71507895,-33633.06643074,-0.948973031,-1.813594137,0.573893078), +('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',2640.0,-24273.48944134,-18637.15546906,-24633.27702390,0.064161440,-1.228537560,1.875728935), +('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',2760.0,-19057.55468077,-23148.29322082,-7269.38614178,1.500802809,0.195383037,2.879031237), +('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',2880.0,43.69305308,-8145.90299207,11634.57079913,3.780661682,5.105315423,0.714401345), +('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',0.0,-2715.28237486,-6619.26436889,-0.01341443,-1.008587273,0.422782003,7.385272942), +('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',120.0,-1816.87920942,-1835.78762132,6661.07926465,2.325140071,6.655669329,2.463394512), +('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',240.0,1483.17364291,5395.21248786,4448.65907172,2.560540387,4.039025766,-5.736648561), +('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',360.0,2801.25607157,5455.03931333,-3692.12865695,-0.595095864,-3.951923117,-6.298799125), +('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',480.0,411.09332812,-1728.99769152,-6935.45548810,-2.935970964,-6.684085058,1.492800886), +('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',600.0,-2506.52558454,-6628.98655094,-988.07784497,-1.390577189,-0.556164143,7.312736468), +('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',720.0,-2090.79884266,-2723.22832193,6266.13356576,1.992640665,6.337529519,3.411803080), +('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',840.0,1091.80560222,4809.88229503,5172.42897894,2.717483546,4.805518977,-5.030019896), +('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',960.0,2811.14062300,5950.65707171,-2813.23705389,-0.159662742,-3.121215491,-6.775341949), +('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',1080.0,805.72698304,-812.16627907,-7067.58483968,-2.798936020,-6.889265977,0.472770873), +('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',1200.0,-2249.59837532,-6505.84890714,-1956.72365062,-1.731234729,-1.528750230,7.096660885), +('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',1320.0,-2311.57375797,-3560.99112891,5748.16749600,1.626569751,5.890482233,4.293545048), +('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',1440.0,688.16056594,4124.87618964,5794.55994449,2.810973665,5.479585563,-4.224866316), +('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',1560.0,2759.94088230,6329.87271798,-1879.19518331,0.266930672,-2.222670878,-7.119390567), +('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',1680.0,1171.50677137,125.82053748,-7061.96626202,-2.605687852,-6.958489749,-0.556333225), +('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',1800.0,-1951.43708472,-6251.71945820,-2886.95472355,-2.024131483,-2.475214272,6.741537478), +('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',1920.0,-2475.70722288,-4331.90569958,5117.31234924,1.235823539,5.322743371,5.091281211), +('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',2040.0,281.46097847,3353.51057102,6302.87900650,2.840647273,6.047222485,-3.337085992), +('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',2160.0,2650.33118860,6584.33434851,-908.29027134,0.675457235,-1.274044972,-7.323921567), +('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',2280.0,1501.17226597,1066.31132756,-6918.71472952,-2.361891904,-6.889669974,-1.574718619), +('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',2400.0,-1619.73468334,-5871.14051991,-3760.56587071,-2.264093975,-3.376316601,6.254622256), +('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',2520.0,-2581.04202505,-5020.05572531,4385.92329047,0.829668458,4.645048038,5.789262667), +('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',2640.0,-119.22080628,2510.90620488,6687.45615459,2.807575712,6.496549689,-2.384136661), +('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',2760.0,2486.23806726,6708.18210028,80.43349581,1.057274905,-0.294294027,-7.384689123), +('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',2880.0,1788.42334580,1990.50530957,-6640.59337725,-2.074169091,-6.683381288,-2.562777776), +('28129','1 28129U 03058A 06175.57071136 -.00000104 00000-0 10000-3 0 459','2 28129 54.7298 324.8098 0048506 266.2640 93.1663 2.00562768 18443',0.0,21707.46412351,-15318.61752390,0.13551152,1.304029214,1.816904974,3.161919976), +('28129','1 28129U 03058A 06175.57071136 -.00000104 00000-0 10000-3 0 459','2 28129 54.7298 324.8098 0048506 266.2640 93.1663 2.00562768 18443',120.0,18616.75971861,3166.15177043,18833.41523210,-2.076122016,2.838457575,1.586210535), +('28129','1 28129U 03058A 06175.57071136 -.00000104 00000-0 10000-3 0 459','2 28129 54.7298 324.8098 0048506 266.2640 93.1663 2.00562768 18443',240.0,-3006.50596328,18522.20742011,18941.84078154,-3.375452789,1.032680773,-1.559324534), +('28129','1 28129U 03058A 06175.57071136 -.00000104 00000-0 10000-3 0 459','2 28129 54.7298 324.8098 0048506 266.2640 93.1663 2.00562768 18443',360.0,-21607.02086957,15432.59962630,206.62470309,-1.306049851,-1.817011568,-3.163725018), +('28129','1 28129U 03058A 06175.57071136 -.00000104 00000-0 10000-3 0 459','2 28129 54.7298 324.8098 0048506 266.2640 93.1663 2.00562768 18443',480.0,-18453.06134549,-3150.83256134,-18685.83030936,2.106017925,-2.860236337,-1.586151870), +('28129','1 28129U 03058A 06175.57071136 -.00000104 00000-0 10000-3 0 459','2 28129 54.7298 324.8098 0048506 266.2640 93.1663 2.00562768 18443',600.0,3425.11742384,-18514.73232706,-18588.67200557,3.394666340,-1.003072030,1.610061295), +('28129','1 28129U 03058A 06175.57071136 -.00000104 00000-0 10000-3 0 459','2 28129 54.7298 324.8098 0048506 266.2640 93.1663 2.00562768 18443',720.0,21858.23838148,-15101.51661554,387.34517048,1.247973967,1.856017403,3.161439948), +('28129','1 28129U 03058A 06175.57071136 -.00000104 00000-0 10000-3 0 459','2 28129 54.7298 324.8098 0048506 266.2640 93.1663 2.00562768 18443',840.0,18360.69935796,3506.55256762,19024.81678979,-2.122684184,2.830618605,1.537510677), +('28129','1 28129U 03058A 06175.57071136 -.00000104 00000-0 10000-3 0 459','2 28129 54.7298 324.8098 0048506 266.2640 93.1663 2.00562768 18443',960.0,-3412.84765409,18646.85269710,18748.00359987,-3.366815728,0.986039922,-1.607874972), +('28129','1 28129U 03058A 06175.57071136 -.00000104 00000-0 10000-3 0 459','2 28129 54.7298 324.8098 0048506 266.2640 93.1663 2.00562768 18443',1080.0,-21758.08331586,15215.44829478,-180.82181406,-1.250144680,-1.856490448,-3.163774870), +('28129','1 28129U 03058A 06175.57071136 -.00000104 00000-0 10000-3 0 459','2 28129 54.7298 324.8098 0048506 266.2640 93.1663 2.00562768 18443',1200.0,-18193.41290284,-3493.85876912,-18877.14757717,2.153326942,-2.852221264,-1.536617760), +('28129','1 28129U 03058A 06175.57071136 -.00000104 00000-0 10000-3 0 459','2 28129 54.7298 324.8098 0048506 266.2640 93.1663 2.00562768 18443',1320.0,3833.57386848,-18635.77026711,-18388.68722885,3.384748179,-0.955363841,1.658785020), +('28129','1 28129U 03058A 06175.57071136 -.00000104 00000-0 10000-3 0 459','2 28129 54.7298 324.8098 0048506 266.2640 93.1663 2.00562768 18443',1440.0,22002.20074562,-14879.72595593,774.32827099,1.191573619,1.894561165,3.159953047), +('28350','1 28350U 04020A 06167.21788666 .16154492 76267-5 18678-3 0 8894','2 28350 64.9977 345.6130 0024870 260.7578 99.9590 16.47856722116490',0.0,6333.08123128,-1580.82852326,90.69355720,0.714634423,3.224246550,7.083128132), +('28350','1 28350U 04020A 06167.21788666 .16154492 76267-5 18678-3 0 8894','2 28350 64.9977 345.6130 0024870 260.7578 99.9590 16.47856722116490',120.0,-3990.93845855,3052.98341907,4155.32700629,-5.909006188,-0.876307966,-5.039131404), +('28350','1 28350U 04020A 06167.21788666 .16154492 76267-5 18678-3 0 8894','2 28350 64.9977 345.6130 0024870 260.7578 99.9590 16.47856722116490',240.0,-603.55232010,-2685.13474569,-5891.70274282,7.572519907,-1.975656726,0.121722605), +('28350','1 28350U 04020A 06167.21788666 .16154492 76267-5 18678-3 0 8894','2 28350 64.9977 345.6130 0024870 260.7578 99.9590 16.47856722116490',360.0,4788.22345627,782.56169214,4335.14284621,-4.954509026,3.683346464,4.804645839), +('28350','1 28350U 04020A 06167.21788666 .16154492 76267-5 18678-3 0 8894','2 28350 64.9977 345.6130 0024870 260.7578 99.9590 16.47856722116490',480.0,-6291.84601644,1547.82790772,-453.67116498,-0.308625588,-3.341538574,-7.082659115), +('28350','1 28350U 04020A 06167.21788666 .16154492 76267-5 18678-3 0 8894','2 28350 64.9977 345.6130 0024870 260.7578 99.9590 16.47856722116490',600.0,4480.74573428,-3028.55200374,-3586.94343641,5.320920857,1.199736275,5.626350481), +('28350','1 28350U 04020A 06167.21788666 .16154492 76267-5 18678-3 0 8894','2 28350 64.9977 345.6130 0024870 260.7578 99.9590 16.47856722116490',720.0,-446.42460916,2932.28872588,5759.19389757,-7.561000245,1.550975493,-1.374970885), +('28350','1 28350U 04020A 06167.21788666 .16154492 76267-5 18678-3 0 8894','2 28350 64.9977 345.6130 0024870 260.7578 99.9590 16.47856722116490',840.0,-3713.79581831,-1382.66125130,-5122.45131136,6.090931626,-3.512629733,-3.467571746), +('28350','1 28350U 04020A 06167.21788666 .16154492 76267-5 18678-3 0 8894','2 28350 64.9977 345.6130 0024870 260.7578 99.9590 16.47856722116490',960.0,6058.32017522,-827.47406722,2104.04678651,-1.798403024,3.787067272,6.641439744), +('28350','1 28350U 04020A 06167.21788666 .16154492 76267-5 18678-3 0 8894','2 28350 64.9977 345.6130 0024870 260.7578 99.9590 16.47856722116490',1080.0,-5631.73659006,2623.70953644,1766.49125084,-3.216401578,-2.309140959,-6.788609120), +('28350','1 28350U 04020A 06167.21788666 .16154492 76267-5 18678-3 0 8894','2 28350 64.9977 345.6130 0024870 260.7578 99.9590 16.47856722116490',1200.0,2776.84991560,-3255.36941953,-4837.19667790,6.748135564,-0.193044825,4.005718698), +('28350','1 28350U 04020A 06167.21788666 .16154492 76267-5 18678-3 0 8894','2 28350 64.9977 345.6130 0024870 260.7578 99.9590 16.47856722116490',1320.0,1148.04430837,2486.07343386,5826.34075913,-7.420162295,2.589456382,0.356350006), +('28350','1 28350U 04020A 06167.21788666 .16154492 76267-5 18678-3 0 8894','2 28350 64.9977 345.6130 0024870 260.7578 99.9590 16.47856722116490',1440.0,-4527.90871828,-723.29199041,-4527.44608319,5.121674217,-3.909895427,-4.500218556), +('28623','1 28623U 05006B 06177.81079184 .00637644 69054-6 96390-3 0 6000','2 28623 28.5200 114.9834 6249053 170.2550 212.8965 3.79477162 12753',0.0,-11665.70902324,24943.61433357,25.80543633,-1.596228621,-1.476127961,1.126059754), +('28623','1 28623U 05006B 06177.81079184 .00637644 69054-6 96390-3 0 6000','2 28623 28.5200 114.9834 6249053 170.2550 212.8965 3.79477162 12753',120.0,-11645.35454950,979.37668356,5517.89500058,3.407743502,-5.183094988,-0.492983277), +('28623','1 28623U 05006B 06177.81079184 .00637644 69054-6 96390-3 0 6000','2 28623 28.5200 114.9834 6249053 170.2550 212.8965 3.79477162 12753',240.0,5619.19252274,19651.44862280,-7261.38496765,-2.013634213,3.106842861,0.284235517), +('28623','1 28623U 05006B 06177.81079184 .00637644 69054-6 96390-3 0 6000','2 28623 28.5200 114.9834 6249053 170.2550 212.8965 3.79477162 12753',360.0,-9708.68629714,26306.14553149,-1204.29478856,-1.824164290,-0.931909596,1.113419052), +('28623','1 28623U 05006B 06177.81079184 .00637644 69054-6 96390-3 0 6000','2 28623 28.5200 114.9834 6249053 170.2550 212.8965 3.79477162 12753',480.0,-14394.03162892,6659.30765074,5593.38345858,1.556522911,-4.681657614,0.296912248), +('28623','1 28623U 05006B 06177.81079184 .00637644 69054-6 96390-3 0 6000','2 28623 28.5200 114.9834 6249053 170.2550 212.8965 3.79477162 12753',600.0,7712.09476270,15565.72627434,-7342.40465571,-1.646800364,4.070313571,-0.109483081), +('28623','1 28623U 05006B 06177.81079184 .00637644 69054-6 96390-3 0 6000','2 28623 28.5200 114.9834 6249053 170.2550 212.8965 3.79477162 12753',720.0,-7558.36739603,27035.11367962,-2385.12054184,-1.999583791,-0.393409283,1.078093515), +('28623','1 28623U 05006B 06177.81079184 .00637644 69054-6 96390-3 0 6000','2 28623 28.5200 114.9834 6249053 170.2550 212.8965 3.79477162 12753',840.0,-15495.61862220,11550.15897828,5053.83178121,0.469277336,-4.029761073,0.679054742), +('28623','1 28623U 05006B 06177.81079184 .00637644 69054-6 96390-3 0 6000','2 28623 28.5200 114.9834 6249053 170.2550 212.8965 3.79477162 12753',960.0,9167.02568222,10363.65204210,-6871.52576042,-0.881621027,5.223361510,-0.740696297), +('28623','1 28623U 05006B 06177.81079184 .00637644 69054-6 96390-3 0 6000','2 28623 28.5200 114.9834 6249053 170.2550 212.8965 3.79477162 12753',1080.0,-5275.80272094,27151.78486008,-3494.50687216,-2.129609388,0.150196480,1.021038089), +('28623','1 28623U 05006B 06177.81079184 .00637644 69054-6 96390-3 0 6000','2 28623 28.5200 114.9834 6249053 170.2550 212.8965 3.79477162 12753',1200.0,-15601.37656145,15641.29379850,4217.03266850,-0.249183123,-3.405238557,0.888214503), +('28623','1 28623U 05006B 06177.81079184 .00637644 69054-6 96390-3 0 6000','2 28623 28.5200 114.9834 6249053 170.2550 212.8965 3.79477162 12753',1320.0,9301.05872300,3883.15265574,-5477.86477017,0.871447821,6.493677331,-1.885545282), +('28623','1 28623U 05006B 06177.81079184 .00637644 69054-6 96390-3 0 6000','2 28623 28.5200 114.9834 6249053 170.2550 212.8965 3.79477162 12753',1440.0,-2914.31065828,26665.20392758,-4511.09814335,-2.216261909,0.710067769,0.940691824), +('28626','1 28626U 05008A 06176.46683397 -.00000205 00000-0 10000-3 0 2190','2 28626 0.0019 286.9433 0000335 13.7918 55.6504 1.00270176 4891',0.0,42080.71852213,-2646.86387436,0.81851294,0.193105177,3.068688251,0.000438449), +('28626','1 28626U 05008A 06176.46683397 -.00000205 00000-0 10000-3 0 2190','2 28626 0.0019 286.9433 0000335 13.7918 55.6504 1.00270176 4891',120.0,37740.00085593,18802.76872802,3.45512584,-1.371035206,2.752105932,0.000336883), +('28626','1 28626U 05008A 06176.46683397 -.00000205 00000-0 10000-3 0 2190','2 28626 0.0019 286.9433 0000335 13.7918 55.6504 1.00270176 4891',240.0,23232.82515008,35187.33981802,4.98927428,-2.565776620,1.694193132,0.000163365), +('28626','1 28626U 05008A 06176.46683397 -.00000205 00000-0 10000-3 0 2190','2 28626 0.0019 286.9433 0000335 13.7918 55.6504 1.00270176 4891',360.0,2467.44290178,42093.60909959,5.15062987,-3.069341800,0.179976276,-0.000031739), +('28626','1 28626U 05008A 06176.46683397 -.00000205 00000-0 10000-3 0 2190','2 28626 0.0019 286.9433 0000335 13.7918 55.6504 1.00270176 4891',480.0,-18962.59052991,37661.66243819,4.04433258,-2.746151982,-1.382675777,-0.000197633), +('28626','1 28626U 05008A 06176.46683397 -.00000205 00000-0 10000-3 0 2190','2 28626 0.0019 286.9433 0000335 13.7918 55.6504 1.00270176 4891',600.0,-35285.00095313,23085.44402778,2.08711880,-1.683277908,-2.572893625,-0.000296282), +('28626','1 28626U 05008A 06176.46683397 -.00000205 00000-0 10000-3 0 2190','2 28626 0.0019 286.9433 0000335 13.7918 55.6504 1.00270176 4891',720.0,-42103.20138132,2291.06228893,-0.13274964,-0.166974816,-3.070104560,-0.000311007), +('28626','1 28626U 05008A 06176.46683397 -.00000205 00000-0 10000-3 0 2190','2 28626 0.0019 286.9433 0000335 13.7918 55.6504 1.00270176 4891',840.0,-37580.31858370,-19120.40485693,-2.02755702,1.394367848,-2.740341612,-0.000248591), +('28626','1 28626U 05008A 06176.46683397 -.00000205 00000-0 10000-3 0 2190','2 28626 0.0019 286.9433 0000335 13.7918 55.6504 1.00270176 4891',960.0,-22934.20761876,-35381.23870806,-3.16495932,2.580167539,-1.672360951,-0.000134907), +('28626','1 28626U 05008A 06176.46683397 -.00000205 00000-0 10000-3 0 2190','2 28626 0.0019 286.9433 0000335 13.7918 55.6504 1.00270176 4891',1080.0,-2109.90332389,-42110.71508198,-3.36507889,3.070935369,-0.153808390,-0.000005855), +('28626','1 28626U 05008A 06176.46683397 -.00000205 00000-0 10000-3 0 2190','2 28626 0.0019 286.9433 0000335 13.7918 55.6504 1.00270176 4891',1200.0,19282.77774728,-37495.59250598,-2.71861462,2.734400524,1.406220933,0.000103486), +('28626','1 28626U 05008A 06176.46683397 -.00000205 00000-0 10000-3 0 2190','2 28626 0.0019 286.9433 0000335 13.7918 55.6504 1.00270176 4891',1320.0,35480.60990600,-22779.03375285,-1.52841859,1.661210676,2.587414593,0.000168300), +('28626','1 28626U 05008A 06176.46683397 -.00000205 00000-0 10000-3 0 2190','2 28626 0.0019 286.9433 0000335 13.7918 55.6504 1.00270176 4891',1440.0,42119.96263499,-1925.77567263,-0.19827433,0.140521206,3.071541613,0.000179561), +('28872','1 28872U 05037B 05333.02012661 .25992681 00000-0 24476-3 0 1534','2 28872 96.4736 157.9986 0303955 244.0492 110.6523 16.46015938 10708',0.0,-6131.82730456,2446.52815528,-253.64211033,-0.144920228,0.995100963,7.658645067), +('28872','1 28872U 05037B 05333.02012661 .25992681 00000-0 24476-3 0 1534','2 28872 96.4736 157.9986 0303955 244.0492 110.6523 16.46015938 10708',5.0,-5799.24256134,2589.14811119,2011.54515100,2.325207364,-0.047125672,7.296234071), +('28872','1 28872U 05037B 05333.02012661 .25992681 00000-0 24476-3 0 1534','2 28872 96.4736 157.9986 0303955 244.0492 110.6523 16.46015938 10708',10.0,-4769.05061967,2420.46580562,4035.30855837,4.464585796,-1.060923209,6.070907874), +('28872','1 28872U 05037B 05333.02012661 .25992681 00000-0 24476-3 0 1534','2 28872 96.4736 157.9986 0303955 244.0492 110.6523 16.46015938 10708',15.0,-3175.45157340,1965.98738086,5582.12569607,6.049639376,-1.935777558,4.148607019), +('28872','1 28872U 05037B 05333.02012661 .25992681 00000-0 24476-3 0 1534','2 28872 96.4736 157.9986 0303955 244.0492 110.6523 16.46015938 10708',20.0,-1210.19024802,1281.54541294,6474.68172772,6.920746273,-2.580517337,1.748783868), +('28872','1 28872U 05037B 05333.02012661 .25992681 00000-0 24476-3 0 1534','2 28872 96.4736 157.9986 0303955 244.0492 110.6523 16.46015938 10708',25.0,896.73799533,447.12357305,6607.22400507,6.983396282,-2.925846168,-0.872655207), +('28872','1 28872U 05037B 05333.02012661 .25992681 00000-0 24476-3 0 1534','2 28872 96.4736 157.9986 0303955 244.0492 110.6523 16.46015938 10708',30.0,2896.99663534,-440.04738594,5954.92675486,6.211488246,-2.926949815,-3.433959806), +('28872','1 28872U 05037B 05333.02012661 .25992681 00000-0 24476-3 0 1534','2 28872 96.4736 157.9986 0303955 244.0492 110.6523 16.46015938 10708',35.0,4545.78970167,-1273.55952872,4580.16512984,4.656984233,-2.568711513,-5.638510954), +('28872','1 28872U 05037B 05333.02012661 .25992681 00000-0 24476-3 0 1534','2 28872 96.4736 157.9986 0303955 244.0492 110.6523 16.46015938 10708',40.0,5627.43299371,-1947.94282469,2634.16714930,2.464141047,-1.873985161,-7.195743032), +('28872','1 28872U 05037B 05333.02012661 .25992681 00000-0 24476-3 0 1534','2 28872 96.4736 157.9986 0303955 244.0492 110.6523 16.46015938 10708',45.0,5984.72318534,-2371.37691609,349.87996209,-0.121276950,-0.911981546,-7.859613894), +('28872','1 28872U 05037B 05333.02012661 .25992681 00000-0 24476-3 0 1534','2 28872 96.4736 157.9986 0303955 244.0492 110.6523 16.46015938 10708',50.0,5548.43325922,-2480.16469245,-1979.24314527,-2.763269534,0.199691915,-7.482796996), +('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',0.0,423.99295524,-6658.12256149,136.13040356,1.006373613,0.217309983,7.662587892), +('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',20.0,931.80883587,-1017.17852239,6529.19244527,-0.298847918,7.613891977,1.226399480), +('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',40.0,-83.44906141,6286.20208453,2223.49837161,-1.113515974,2.530970283,-7.219445568), +('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',60.0,-958.57681221,3259.26005348,-5722.63732467,-0.101225813,-6.735338321,-3.804851872), +('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',80.0,-255.25619985,-5132.59762974,-4221.27233118,1.077709303,-4.905938824,5.892521264), +('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',100.0,867.44295097,-5038.40402933,4256.73810533,0.479447535,5.032326446,5.857126248), +('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',120.0,559.16882013,3376.30587937,5699.22017391,-0.906749328,6.646149867,-3.852331832), +('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',140.0,-669.85184205,6196.00229484,-2281.95741770,-0.795804092,-2.752114827,-7.202478520), +('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',160.0,-784.20708019,-1278.53125553,-6449.19892596,0.636702380,-7.595425203,1.431090802), +('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',180.0,406.15811659,-6607.03115799,148.33021477,1.009818575,0.231843765,7.692047844), +('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',200.0,916.34911813,-884.08649248,6491.09810362,-0.302163049,7.669887109,1.084336909), +('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',220.0,-104.02490970,6304.31821405,1960.08739882,-1.108873823,2.259522809,-7.351147710), +('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',240.0,-944.61642849,2872.17248379,-5846.94103362,-0.051117686,-6.989747076,-3.413102600), +('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',260.0,-187.16569888,-5404.86163467,-3731.97057618,1.094696706,-4.412110995,6.326060952), +('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',280.0,884.59720467,-4465.74516163,4725.83632696,0.380656028,5.691554046,5.303910983), +('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',300.0,446.40767236,4086.66839620,5093.05596650,-0.982424447,6.072965199,-4.791630682), +('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',320.0,-752.24467495,5588.35473301,-3275.04092573,-0.661161370,-4.016290740,-6.676898026), +('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',340.0,-643.72872525,-2585.02528560,-5923.01306608,0.807922142,-7.171597814,3.041115058), +('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',360.0,584.40295819,-6202.35605817,1781.00536019,0.869250450,2.226927514,7.471676765), +('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',380.0,779.59211765,1100.73728301,6311.59529480,-0.599552305,7.721032522,-1.275153027), +('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',400.0,-403.03155588,6399.18000837,-364.12735875,-1.008861924,-0.516636615,-7.799812287), +('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',420.0,-852.93910071,192.65232023,-6322.47054784,0.396006194,-7.882964919,-0.289331517), +('29238','1 29238U 06022G 06177.28732010 .00766286 10823-4 13334-2 0 101','2 29238 51.5595 213.7903 0202579 95.2503 267.9010 15.73823839 1061',0.0,-5566.59512819,-3789.75991159,67.60382245,2.873759367,-3.825340523,6.023253926), +('29238','1 29238U 06022G 06177.28732010 .00766286 10823-4 13334-2 0 101','2 29238 51.5595 213.7903 0202579 95.2503 267.9010 15.73823839 1061',120.0,4474.27915495,-1447.72286142,4619.83927235,4.712595822,5.668306153,-2.701606741), +('29238','1 29238U 06022G 06177.28732010 .00766286 10823-4 13334-2 0 101','2 29238 51.5595 213.7903 0202579 95.2503 267.9010 15.73823839 1061',240.0,1922.17712474,5113.01138342,-4087.08470203,-6.490769651,-0.522350158,-3.896001154), +('29238','1 29238U 06022G 06177.28732010 .00766286 10823-4 13334-2 0 101','2 29238 51.5595 213.7903 0202579 95.2503 267.9010 15.73823839 1061',360.0,-6157.93546882,-2094.70798790,-1941.63730960,0.149900661,-5.175192523,5.604262034), +('29238','1 29238U 06022G 06177.28732010 .00766286 10823-4 13334-2 0 101','2 29238 51.5595 213.7903 0202579 95.2503 267.9010 15.73823839 1061',480.0,2482.64052411,-3268.45944555,5146.38006190,6.501814698,4.402848754,-0.350943511), +('29238','1 29238U 06022G 06177.28732010 .00766286 10823-4 13334-2 0 101','2 29238 51.5595 213.7903 0202579 95.2503 267.9010 15.73823839 1061',600.0,4036.26455287,4827.43347201,-2507.99063955,-5.184409515,1.772280695,-5.331390168), +('29238','1 29238U 06022G 06177.28732010 .00766286 10823-4 13334-2 0 101','2 29238 51.5595 213.7903 0202579 95.2503 267.9010 15.73823839 1061',720.0,-5776.81371622,-118.64155319,-3641.22052418,-2.539917207,-5.622701582,4.403125405), +('29238','1 29238U 06022G 06177.28732010 .00766286 10823-4 13334-2 0 101','2 29238 51.5595 213.7903 0202579 95.2503 267.9010 15.73823839 1061',840.0,67.98699487,-4456.49213473,4863.71794283,7.183809420,2.418917791,2.015642495), +('29238','1 29238U 06022G 06177.28732010 .00766286 10823-4 13334-2 0 101','2 29238 51.5595 213.7903 0202579 95.2503 267.9010 15.73823839 1061',960.0,5520.62207038,3782.38203554,-596.73193161,-3.027966069,3.754152525,-6.013506363), +('29238','1 29238U 06022G 06177.28732010 .00766286 10823-4 13334-2 0 101','2 29238 51.5595 213.7903 0202579 95.2503 267.9010 15.73823839 1061',1080.0,-4528.05104455,1808.46273329,-4816.99727762,-4.808419763,-5.185789345,2.642104494), +('29238','1 29238U 06022G 06177.28732010 .00766286 10823-4 13334-2 0 101','2 29238 51.5595 213.7903 0202579 95.2503 267.9010 15.73823839 1061',1200.0,-2356.61468078,-4852.51202272,3856.53816184,6.688446735,0.118520958,4.021854210), +('29238','1 29238U 06022G 06177.28732010 .00766286 10823-4 13334-2 0 101','2 29238 51.5595 213.7903 0202579 95.2503 267.9010 15.73823839 1061',1320.0,6149.65800134,2173.59423261,1369.29488732,-0.345832777,5.109857861,-5.842951828), +('29238','1 29238U 06022G 06177.28732010 .00766286 10823-4 13334-2 0 101','2 29238 51.5595 213.7903 0202579 95.2503 267.9010 15.73823839 1061',1440.0,-2629.55011449,3400.98040158,-5344.38217129,-6.368548448,-3.998963509,0.577253064), +('88888','1 88888U 80275.98708465 .00073094 13844-3 66816-4 0 87','2 88888 72.8435 115.9689 0086731 52.6988 110.5714 16.05824518 1058',0.0,2328.96975262,-5995.22051338,1719.97297192,2.912073281,-0.983417956,-7.090816210), +('88888','1 88888U 80275.98708465 .00073094 13844-3 66816-4 0 87','2 88888 72.8435 115.9689 0086731 52.6988 110.5714 16.05824518 1058',120.0,1020.69234558,2286.56260634,-6191.55565927,-3.746543902,6.467532721,1.827985678), +('88888','1 88888U 80275.98708465 .00073094 13844-3 66816-4 0 87','2 88888 72.8435 115.9689 0086731 52.6988 110.5714 16.05824518 1058',240.0,-3226.54349155,3503.70977525,4532.80979343,1.000992116,-5.788042888,5.162585826), +('88888','1 88888U 80275.98708465 .00073094 13844-3 66816-4 0 87','2 88888 72.8435 115.9689 0086731 52.6988 110.5714 16.05824518 1058',360.0,2456.10706533,-6071.93855503,1222.89768554,2.679390040,-0.448290811,-7.228792155), +('88888','1 88888U 80275.98708465 .00073094 13844-3 66816-4 0 87','2 88888 72.8435 115.9689 0086731 52.6988 110.5714 16.05824518 1058',480.0,787.16457349,2719.91800946,-6043.86662024,-3.759883839,6.277439314,2.397897864), +('88888','1 88888U 80275.98708465 .00073094 13844-3 66816-4 0 87','2 88888 72.8435 115.9689 0086731 52.6988 110.5714 16.05824518 1058',600.0,-3110.97648029,3121.73026235,4878.15217035,1.244916056,-6.124880425,4.700576353), +('88888','1 88888U 80275.98708465 .00073094 13844-3 66816-4 0 87','2 88888 72.8435 115.9689 0086731 52.6988 110.5714 16.05824518 1058',720.0,2567.56229695,-6112.50383922,713.96374435,2.440245751,0.098109002,-7.319959258), +('88888','1 88888U 80275.98708465 .00073094 13844-3 66816-4 0 87','2 88888 72.8435 115.9689 0086731 52.6988 110.5714 16.05824518 1058',840.0,556.05661780,3144.52288201,-5855.34636178,-3.754660143,6.044752775,2.957941672), +('88888','1 88888U 80275.98708465 .00073094 13844-3 66816-4 0 87','2 88888 72.8435 115.9689 0086731 52.6988 110.5714 16.05824518 1058',960.0,-2982.47940539,2712.61663711,5192.32330472,1.475566773,-6.427737014,4.202420227), +('88888','1 88888U 80275.98708465 .00073094 13844-3 66816-4 0 87','2 88888 72.8435 115.9689 0086731 52.6988 110.5714 16.05824518 1058',1080.0,2663.08964352,-6115.48290885,196.40072866,2.196121564,0.652415093,-7.362824152), +('88888','1 88888U 80275.98708465 .00073094 13844-3 66816-4 0 87','2 88888 72.8435 115.9689 0086731 52.6988 110.5714 16.05824518 1058',1200.0,328.54999674,3557.09490552,-5626.21427211,-3.731193288,5.769341172,3.504058731), +('88888','1 88888U 80275.98708465 .00073094 13844-3 66816-4 0 87','2 88888 72.8435 115.9689 0086731 52.6988 110.5714 16.05824518 1058',1320.0,-2842.06876757,2278.42343492,5472.33437150,1.691852635,-6.693216335,3.671022712), +('88888','1 88888U 80275.98708465 .00073094 13844-3 66816-4 0 87','2 88888 72.8435 115.9689 0086731 52.6988 110.5714 16.05824518 1058',1440.0,2742.55398832,-6079.67009123,-326.39012649,1.948497651,1.211072678,-7.356193131); +-- Verify we loaded all 518 vectors +SELECT count(*) AS vectors_loaded FROM vallado_vectors; + vectors_loaded +---------------- + 518 +(1 row) + +-- Materialize propagation results (avoid recomputing per query) +CREATE TEMP TABLE vallado_results AS +SELECT + v.satnum, + v.tsince_min, + sgp4_propagate_safe( + tle_from_lines(v.tle_line1, v.tle_line2), + _vallado_jd_plus_min( + tle_epoch(tle_from_lines(v.tle_line1, v.tle_line2)), + v.tsince_min + ) + ) AS eci, + v.ref_x, v.ref_y, v.ref_z, + v.ref_vx, v.ref_vy, v.ref_vz +FROM vallado_vectors v; +-- Summary: all 518 must propagate; 434 match at tight tolerance. +-- These numbers are the regression baseline for Bill Gray's sat_code. +SELECT + count(*) AS total, + count(*) FILTER (WHERE eci IS NOT NULL) AS propagated, + count(*) FILTER (WHERE eci IS NOT NULL + AND greatest(abs(eci_x(eci) - ref_x), + abs(eci_y(eci) - ref_y), + abs(eci_z(eci) - ref_z)) < 1e-4 + AND greatest(abs(eci_vx(eci) - ref_vx), + abs(eci_vy(eci) - ref_vy), + abs(eci_vz(eci) - ref_vz)) < 1e-7 + ) AS tight_pass, + round(max(CASE WHEN eci IS NOT NULL THEN greatest( + abs(eci_x(eci) - ref_x), + abs(eci_y(eci) - ref_y), + abs(eci_z(eci) - ref_z) + ) END)::numeric, 8) AS worst_pos_km, + round(max(CASE WHEN eci IS NOT NULL THEN greatest( + abs(eci_vx(eci) - ref_vx), + abs(eci_vy(eci) - ref_vy), + abs(eci_vz(eci) - ref_vz) + ) END)::numeric, 10) AS worst_vel_kms +FROM vallado_results; + total | propagated | tight_pass | worst_pos_km | worst_vel_kms +-------+------------+------------+---------------+--------------- + 518 | 518 | 434 | 1694.24999701 | 0.0100228769 +(1 row) + +-- Per-satellite breakdown: position vs velocity pass counts. +-- Satellites with worst_pos > 0.1 km have known implementation differences +-- vs Vallado's AFSPC mode (see header comments). +SELECT + satnum, + count(*) AS vectors, + count(*) FILTER (WHERE eci IS NOT NULL + AND greatest(abs(eci_x(eci) - ref_x), + abs(eci_y(eci) - ref_y), + abs(eci_z(eci) - ref_z)) < 1e-4 + ) AS pos_pass, + count(*) FILTER (WHERE eci IS NOT NULL + AND greatest(abs(eci_vx(eci) - ref_vx), + abs(eci_vy(eci) - ref_vy), + abs(eci_vz(eci) - ref_vz)) < 1e-7 + ) AS vel_pass, + count(*) FILTER (WHERE eci IS NULL) AS errors, + round(max(CASE WHEN eci IS NOT NULL THEN greatest( + abs(eci_x(eci) - ref_x), + abs(eci_y(eci) - ref_y), + abs(eci_z(eci) - ref_z) + ) END)::numeric, 6) AS worst_pos_km +FROM vallado_results +GROUP BY satnum +ORDER BY satnum; + satnum | vectors | pos_pass | vel_pass | errors | worst_pos_km +--------+---------+----------+----------+--------+-------------- + 00005 | 13 | 13 | 13 | 0 | 0.000000 + 04632 | 5 | 1 | 1 | 0 | 7.536284 + 06251 | 25 | 25 | 25 | 0 | 0.000089 + 08195 | 25 | 25 | 25 | 0 | 0.000056 + 09880 | 25 | 25 | 25 | 0 | 0.000054 + 09998 | 14 | 14 | 14 | 0 | 0.000044 + 11801 | 5 | 5 | 5 | 0 | 0.000000 + 14128 | 25 | 18 | 18 | 0 | 1.655480 + 16925 | 13 | 12 | 13 | 0 | 0.000113 + 20413 | 26 | 5 | 5 | 0 | 1694.249997 + 21897 | 25 | 25 | 25 | 0 | 0.000058 + 22312 | 23 | 17 | 17 | 0 | 0.000127 + 22674 | 25 | 25 | 25 | 0 | 0.000045 + 23177 | 13 | 13 | 13 | 0 | 0.000094 + 23333 | 15 | 15 | 15 | 0 | 0.000048 + 23599 | 37 | 19 | 20 | 0 | 0.960173 + 24208 | 13 | 13 | 13 | 0 | 0.000039 + 25954 | 26 | 26 | 26 | 0 | 0.000039 + 26900 | 4 | 4 | 4 | 0 | 0.000054 + 26975 | 25 | 25 | 25 | 0 | 0.000077 + 28057 | 25 | 25 | 22 | 0 | 0.000099 + 28129 | 13 | 13 | 13 | 0 | 0.000046 + 28350 | 13 | 12 | 8 | 0 | 0.000102 + 28623 | 13 | 13 | 13 | 0 | 0.000087 + 28626 | 13 | 13 | 13 | 0 | 0.000037 + 28872 | 11 | 8 | 7 | 0 | 0.000134 + 29141 | 22 | 16 | 13 | 0 | 0.000138 + 29238 | 13 | 13 | 12 | 0 | 0.000096 + 88888 | 13 | 13 | 8 | 0 | 0.000090 +(29 rows) + +-- Clean up +DROP FUNCTION _vallado_jd_plus_min(float8, float8); diff --git a/test/sql/vallado_518.sql b/test/sql/vallado_518.sql new file mode 100644 index 0000000..1b4a063 --- /dev/null +++ b/test/sql/vallado_518.sql @@ -0,0 +1,636 @@ +-- Vallado 518 Test Vectors (AIAA 2006-6753-Rev1, Appendices D & E) +-- +-- 518 propagation predictions across 29 satellites, covering both +-- SGP4 (near-earth) and SDP4 (deep-space) models. Reference values +-- from Vallado, Crawford, Hujsak, and Kelso's definitive SGP4 paper. +-- +-- The reference vectors use Vallado's "AFSPC (option 'a')" mode with +-- "perturbed inclination (GSFC)" Lyddane choice. Bill Gray's sat_code +-- takes a different path through the Lyddane singularity and deep-space +-- resonance logic, producing small numerical differences for most +-- satellites and larger divergences for 4 known edge cases: +-- +-- 20413 (e=0.79, Molniya-like): up to 1694 km at large tsince +-- 04632 (deep-space, e=0.15): up to 7.5 km +-- 14128 (deep-space): up to 1.7 km +-- 23599 (deep-space, GEO): up to 1.0 km +-- +-- These differences are expected and documented. This test detects +-- regressions — if any number changes, the vendored SGP4/SDP4 code +-- was inadvertently modified. +-- +-- Tolerances for the summary check: +-- Position: 1e-4 km (0.1 m) — catches marginal velocity-only failures +-- Velocity: 1e-7 km/s (0.1 mm/s) — tight enough for regression detection + +CREATE EXTENSION IF NOT EXISTS pg_orbit; + +-- Helper: convert Julian date + minutes-since-epoch to timestamptz. +-- JD 2440587.5 = 1970-01-01 00:00:00 UTC (Unix epoch). +CREATE OR REPLACE FUNCTION _vallado_jd_plus_min(jd float8, tsince_min float8) +RETURNS timestamptz AS $$ + SELECT to_timestamp((jd + tsince_min / 1440.0 - 2440587.5) * 86400.0) +$$ LANGUAGE sql IMMUTABLE STRICT; + +-- Test vector table +CREATE TEMP TABLE vallado_vectors ( + satnum text, + tle_line1 text, + tle_line2 text, + tsince_min float8, + ref_x float8, ref_y float8, ref_z float8, + ref_vx float8, ref_vy float8, ref_vz float8 +); + +INSERT INTO vallado_vectors VALUES +('00005','1 00005U 58002B 00179.78495062 .00000023 00000-0 28098-4 0 4753','2 00005 34.2682 348.7242 1859667 331.7664 19.3264 10.82419157413667',0.0,7022.46529266,-1400.08296755,0.03995155,1.893841015,6.405893759,4.534807250), +('00005','1 00005U 58002B 00179.78495062 .00000023 00000-0 28098-4 0 4753','2 00005 34.2682 348.7242 1859667 331.7664 19.3264 10.82419157413667',360.0,-7154.03120202,-3783.17682504,-3536.19412294,4.741887409,-4.151817765,-2.093935425), +('00005','1 00005U 58002B 00179.78495062 .00000023 00000-0 28098-4 0 4753','2 00005 34.2682 348.7242 1859667 331.7664 19.3264 10.82419157413667',720.0,-7134.59340119,6531.68641334,3260.27186483,-4.113793027,-2.911922039,-2.557327851), +('00005','1 00005U 58002B 00179.78495062 .00000023 00000-0 28098-4 0 4753','2 00005 34.2682 348.7242 1859667 331.7664 19.3264 10.82419157413667',1080.0,5568.53901181,4492.06992591,3863.87641983,-4.209106476,5.159719888,2.744852980), +('00005','1 00005U 58002B 00179.78495062 .00000023 00000-0 28098-4 0 4753','2 00005 34.2682 348.7242 1859667 331.7664 19.3264 10.82419157413667',1440.0,-938.55923943,-6268.18748831,-4294.02924751,7.536105209,-0.427127707,0.989878080), +('00005','1 00005U 58002B 00179.78495062 .00000023 00000-0 28098-4 0 4753','2 00005 34.2682 348.7242 1859667 331.7664 19.3264 10.82419157413667',1800.0,-9680.56121728,2802.47771354,124.10688038,-0.905874102,-4.659467970,-3.227347517), +('00005','1 00005U 58002B 00179.78495062 .00000023 00000-0 28098-4 0 4753','2 00005 34.2682 348.7242 1859667 331.7664 19.3264 10.82419157413667',2160.0,190.19796988,7746.96653614,5110.00675412,-6.112325142,1.527008184,-0.139152358), +('00005','1 00005U 58002B 00179.78495062 .00000023 00000-0 28098-4 0 4753','2 00005 34.2682 348.7242 1859667 331.7664 19.3264 10.82419157413667',2520.0,5579.55640116,-3995.61396789,-1518.82108966,4.767927483,5.123185301,4.276837355), +('00005','1 00005U 58002B 00179.78495062 .00000023 00000-0 28098-4 0 4753','2 00005 34.2682 348.7242 1859667 331.7664 19.3264 10.82419157413667',2880.0,-8650.73082219,-1914.93811525,-3007.03603443,3.067165127,-4.828384068,-2.515322836), +('00005','1 00005U 58002B 00179.78495062 .00000023 00000-0 28098-4 0 4753','2 00005 34.2682 348.7242 1859667 331.7664 19.3264 10.82419157413667',3240.0,-5429.79204164,7574.36493792,3747.39305236,-4.999442110,-1.800561422,-2.229392830), +('00005','1 00005U 58002B 00179.78495062 .00000023 00000-0 28098-4 0 4753','2 00005 34.2682 348.7242 1859667 331.7664 19.3264 10.82419157413667',3600.0,6759.04583722,2001.58198220,2783.55192533,-2.180993947,6.402085603,3.644723952), +('00005','1 00005U 58002B 00179.78495062 .00000023 00000-0 28098-4 0 4753','2 00005 34.2682 348.7242 1859667 331.7664 19.3264 10.82419157413667',3960.0,-3791.44531559,-5712.95617894,-4533.48630714,6.668817493,-2.516382327,-0.082384354), +('00005','1 00005U 58002B 00179.78495062 .00000023 00000-0 28098-4 0 4753','2 00005 34.2682 348.7242 1859667 331.7664 19.3264 10.82419157413667',4320.0,-9060.47373569,4658.70952502,813.68673153,-2.232832783,-4.110453490,-3.157345433), +('04632','1 04632U 70093B 04031.91070959 -.00000084 00000-0 10000-3 0 9955','2 04632 11.4628 273.1101 1450506 207.6000 143.9350 1.20231981 44145',0.0,2334.11450085,-41920.44035349,-0.03867437,2.826321032,-0.065091664,0.570936053), +('04632','1 04632U 70093B 04031.91070959 -.00000084 00000-0 10000-3 0 9955','2 04632 11.4628 273.1101 1450506 207.6000 143.9350 1.20231981 44145',-5184.0,-29020.02587128,13819.84419063,-5713.33679183,-1.768068390,-3.235371192,-0.395206135), +('04632','1 04632U 70093B 04031.91070959 -.00000084 00000-0 10000-3 0 9955','2 04632 11.4628 273.1101 1450506 207.6000 143.9350 1.20231981 44145',-5064.0,-32982.56870101,-11125.54996609,-6803.28472771,0.617446996,-3.379240041,0.085954707), +('04632','1 04632U 70093B 04031.91070959 -.00000084 00000-0 10000-3 0 9955','2 04632 11.4628 273.1101 1450506 207.6000 143.9350 1.20231981 44145',-4944.0,-22097.68730513,-31583.13829284,-4836.34329328,2.230597499,-2.166594667,0.426443070), +('04632','1 04632U 70093B 04031.91070959 -.00000084 00000-0 10000-3 0 9955','2 04632 11.4628 273.1101 1450506 207.6000 143.9350 1.20231981 44145',-4896.0,-15129.94694545,-36907.74526221,-3487.56256701,2.581167187,-1.524204737,0.504805763), +('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',0.0,3988.31022699,5498.96657235,0.90055879,-3.290032738,2.357652820,6.496623475), +('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',120.0,-3935.69800083,409.10980837,5471.33577327,-3.374784183,-6.635211043,-1.942056221), +('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',240.0,-1675.12766915,-5683.30432352,-3286.21510937,5.282496925,1.508674259,-5.354872978), +('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',360.0,4993.62642836,2890.54969900,-3600.40145627,0.347333429,5.707031557,5.070699638), +('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',480.0,-1115.07959514,4015.11691491,5326.99727718,-5.524279443,-4.765738774,2.402255961), +('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',600.0,-4329.10008198,-5176.70287935,409.65313857,2.858408303,-2.933091792,-6.509690397), +('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',720.0,3692.60030028,-976.24265255,-5623.36447493,3.897257243,6.415554948,1.429112190), +('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',840.0,2301.83510037,5723.92394553,2814.61514580,-5.110924966,-0.764510559,5.662120145), +('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',960.0,-4990.91637950,-2303.42547880,3920.86335598,-0.993439372,-5.967458360,-4.759110856), +('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',1080.0,642.27769977,-4332.89821901,-5183.31523910,5.720542579,4.216573838,-2.846576139), +('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',1200.0,4719.78335752,4798.06938996,-943.58851062,-2.294860662,3.492499389,6.408334723), +('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',1320.0,-3299.16993602,1576.83168320,5678.67840638,-4.460347074,-6.202025196,-0.885874586), +('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',1440.0,-2777.14682335,-5663.16031708,-2462.54889123,4.915493146,0.123328992,-5.896495091), +('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',1560.0,4992.31573893,1716.62356770,-4287.86065581,1.640717189,6.071570434,4.338797931), +('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',1680.0,-8.22384755,4662.21521668,4905.66411857,-5.891011274,-3.593173872,3.365100460), +('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',1800.0,-4966.20137963,-4379.59155037,1349.33347502,1.763172581,-3.981456387,-6.343279443), +('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',1920.0,2954.49390331,-2080.65984650,-5754.75038057,4.895893306,5.858184322,0.375474825), +('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',2040.0,3363.28794321,5559.55841180,1956.05542266,-4.587378863,0.591943403,6.107838605), +('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',2160.0,-4856.66780070,-1107.03450192,4557.21258241,-2.304158557,-6.186437070,-3.956549542), +('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',2280.0,-497.84480071,-4863.46005312,-4700.81211217,5.960065407,2.996683369,-3.767123329), +('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',2400.0,5241.61936096,3910.75960683,-1857.93473952,-1.124834806,4.406213160,6.148161299), +('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',2520.0,-2451.38045953,2610.60463261,5729.79022069,-5.366560525,-5.500855666,0.187958716), +('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',2640.0,-3791.87520638,-5378.82851382,-1575.82737930,4.266273592,-1.199162551,-6.276154080), +('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',2760.0,4730.53958356,524.05006433,-4857.29369725,2.918056288,6.135412849,3.495115636), +('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',2880.0,1159.27802897,5056.60175495,4353.49418579,-5.968060341,-2.314790406,4.230722669), +('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',0.0,2349.89483350,-14785.93811562,0.02119378,2.721488096,-3.256811655,4.498416672), +('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',120.0,15223.91713658,-17852.95881713,25280.39558224,1.079041732,0.875187372,2.485682813), +('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',240.0,19752.78050009,-8600.07130962,37522.72921090,0.238105279,1.546110924,0.986410447), +('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',360.0,19089.29762968,3107.89495018,39958.14661370,-0.410308034,1.640332277,-0.306873818), +('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',480.0,13829.66070574,13977.39999817,32736.32082508,-1.065096849,1.279983299,-1.760166075), +('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',600.0,3333.05838525,18395.31728674,12738.25031238,-1.882432221,-0.611623333,-4.039586549), +('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',720.0,2622.13222207,-15125.15464924,474.51048398,2.688287199,-3.078426664,4.494979530), +('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',840.0,15320.56770017,-17777.32564586,25539.53198382,1.064346229,0.892184771,2.459822414), +('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',960.0,19769.70267785,-8458.65104454,37624.20130236,0.229304396,1.550363884,0.966993056), +('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',1080.0,19048.56201523,3260.43223119,39923.39143967,-0.418015536,1.639346953,-0.326094840), +('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',1200.0,13729.19205837,14097.70014810,32547.52799890,-1.074511043,1.270505211,-1.785099927), +('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',1320.0,3148.86165643,18323.19841703,12305.75195578,-1.895271701,-0.678343847,-4.086577951), +('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',1440.0,2890.80638268,-15446.43952300,948.77010176,2.654407490,-2.909344895,4.486437362), +('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',1560.0,15415.98410712,-17699.90714437,25796.19644689,1.049818334,0.908822332,2.434107329), +('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',1680.0,19786.00618538,-8316.74570581,37723.74539119,0.220539813,1.554518900,0.947601047), +('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',1800.0,19007.28688729,3412.85948715,39886.66579255,-0.425733568,1.638276809,-0.345353807), +('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',1920.0,13627.93015254,14216.95401307,32356.13706868,-1.083991976,1.260802347,-1.810193903), +('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',2040.0,2963.26486560,18243.85063641,11868.25797486,-1.908015447,-0.747870342,-4.134004492), +('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',2160.0,3155.85126036,-15750.70393364,1422.32496953,2.620085624,-2.748990396,4.473527039), +('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',2280.0,15510.15191770,-17620.71002219,26050.43525345,1.035454678,0.925111006,2.408534465), +('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',2400.0,19801.67198812,-8174.33337167,37821.38577439,0.211812700,1.558576937,0.928231880), +('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',2520.0,18965.46529379,3565.19666242,39847.97510998,-0.433459945,1.637120585,-0.364653213), +('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',2640.0,13525.88227400,14335.15978787,32162.13236536,-1.093537945,1.250868256,-1.835451681), +('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',2760.0,2776.30574260,18156.98538451,11425.73046481,-1.920632199,-0.820370733,-4.181839232), +('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',2880.0,3417.20931587,-16038.79510665,1894.74934058,2.585515864,-2.596818146,4.456882556), +('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',0.0,13020.06750784,-2449.07193500,1.15896030,4.247363935,1.597178501,4.956708611), +('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',120.0,19190.32482476,9249.01266902,26596.71345328,-0.624960193,1.324550562,2.495697637), +('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',240.0,11332.67806218,16517.99124008,38569.78482991,-1.400974747,0.710947006,0.923935636), +('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',360.0,328.74217398,19554.92047380,40558.26246145,-1.593281066,0.126772913,-0.359627307), +('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',480.0,-10684.90590680,18057.15728839,33158.75253886,-1.383205997,-0.582328999,-1.744412556), +('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',600.0,-17069.78000550,9944.86797897,13885.91649059,0.044133354,-1.853448464,-3.815303117), +('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',720.0,13725.09398980,-2180.70877090,863.29684523,3.878478111,1.656846496,4.944867241), +('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',840.0,19089.63879226,9456.29670247,27026.79562883,-0.656614299,1.309112636,2.449371941), +('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',960.0,11106.41248373,16627.60874079,38727.35140296,-1.409722680,0.698582526,0.891383535), +('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',1080.0,72.40958621,19575.08054144,40492.12544001,-1.593394604,0.113655142,-0.390556063), +('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',1200.0,-10905.89252576,17965.41205111,32850.07298244,-1.371396120,-0.601706604,-1.782817058), +('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',1320.0,-17044.61207568,9635.48491849,13212.59462953,0.129244030,-1.903551430,-3.884569098), +('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',1440.0,14369.90303735,-1903.85601062,1722.15319853,3.543393116,1.701687176,4.913881358), +('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',1560.0,18983.96210441,9661.12233804,27448.99557732,-0.687189304,1.293808870,2.403630759), +('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',1680.0,10878.79336704,16735.31433954,38879.23434264,-1.418239666,0.686235750,0.858951848), +('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',1800.0,-184.03743100,19593.09371709,40420.40606889,-1.593348925,0.100448697,-0.421571993), +('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',1920.0,-11125.12138631,17870.19488928,32534.21521208,-1.359116236,-0.621413776,-1.821629856), +('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',2040.0,-17004.43272827,9316.53926351,12526.11883812,0.220330736,-1.955594322,-3.955058575), +('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',2160.0,14960.06492693,-1620.68430805,2574.96359381,3.238634028,1.734723385,4.868880331), +('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',2280.0,18873.46347257,9863.57004586,27863.46574735,-0.716736981,1.278632817,2.358448535), +('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',2400.0,10649.86857581,16841.14172669,39025.48035006,-1.426527152,0.673901057,0.826632332), +('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',2520.0,-440.53459323,19608.95524423,40343.10675451,-1.593138597,0.087147884,-0.452680559), +('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',2640.0,-11342.45028909,17771.44223942,32211.12535721,-1.346344015,-0.641464291,-1.860864234), +('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',2760.0,-16948.06005711,8987.64254880,11826.28284367,0.318007297,-2.009693492,-4.026726648), +('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',2880.0,15500.53445068,-1332.90981042,3419.72315308,2.960917974,1.758331634,4.813698638), +('09998','1 09998U 74033F 05148.79417928 -.00000112 00000-0 00000+0 0 4480','2 09998 9.4958 313.1750 0270971 327.5225 30.8097 1.16186785 45878',0.0,25532.98947267,-27244.26327953,-1.11572421,2.410283885,2.194175683,0.545888526), +('09998','1 09998U 74033F 05148.79417928 -.00000112 00000-0 00000+0 0 4480','2 09998 9.4958 313.1750 0270971 327.5225 30.8097 1.16186785 45878',-1440.0,-11362.18265118,-35117.55867813,-5413.62537994,3.137861261,-1.011678260,0.267510059), +('09998','1 09998U 74033F 05148.79417928 -.00000112 00000-0 00000+0 0 4480','2 09998 9.4958 313.1750 0270971 327.5225 30.8097 1.16186785 45878',-1380.0,309.25349929,-36960.43090143,-4198.48007670,3.292429375,-0.002166046,0.402111628), +('09998','1 09998U 74033F 05148.79417928 -.00000112 00000-0 00000+0 0 4480','2 09998 9.4958 313.1750 0270971 327.5225 30.8097 1.16186785 45878',-1320.0,11949.04009077,-35127.37816804,-2565.89806468,3.119942784,1.012096444,0.497284100), +('09998','1 09998U 74033F 05148.79417928 -.00000112 00000-0 00000+0 0 4480','2 09998 9.4958 313.1750 0270971 327.5225 30.8097 1.16186785 45878',-1260.0,22400.45329336,-29798.63236321,-677.91515122,2.638533344,1.922477736,0.542792913), +('09998','1 09998U 74033F 05148.79417928 -.00000112 00000-0 00000+0 0 4480','2 09998 9.4958 313.1750 0270971 327.5225 30.8097 1.16186785 45878',-1200.0,30640.84752458,-21525.02340201,1277.34808722,1.903464941,2.634294312,0.534540934), +('09998','1 09998U 74033F 05148.79417928 -.00000112 00000-0 00000+0 0 4480','2 09998 9.4958 313.1750 0270971 327.5225 30.8097 1.16186785 45878',-1140.0,35899.56788035,-11152.71158138,3108.72535238,0.997393045,3.079858548,0.474873291), +('09998','1 09998U 74033F 05148.79417928 -.00000112 00000-0 00000+0 0 4480','2 09998 9.4958 313.1750 0270971 327.5225 30.8097 1.16186785 45878',-1080.0,37732.45438600,288.18821054,4643.87587495,0.016652226,3.225184410,0.371669746), +('09998','1 09998U 74033F 05148.79417928 -.00000112 00000-0 00000+0 0 4480','2 09998 9.4958 313.1750 0270971 327.5225 30.8097 1.16186785 45878',-1020.0,36045.92961699,11706.61816230,5746.32646574,-0.942409065,3.069888941,0.236662980), +('09998','1 09998U 74033F 05148.79417928 -.00000112 00000-0 00000+0 0 4480','2 09998 9.4958 313.1750 0270971 327.5225 30.8097 1.16186785 45878',-960.0,31076.77273609,22063.44379776,6325.93403705,-1.794027976,2.642072476,0.083556127), +('09998','1 09998U 74033F 05148.79417928 -.00000112 00000-0 00000+0 0 4480','2 09998 9.4958 313.1750 0270971 327.5225 30.8097 1.16186785 45878',-900.0,23341.26015320,30460.88002531,6342.91707895,-2.469409743,1.990861658,-0.073612096), +('09998','1 09998U 74033F 05148.79417928 -.00000112 00000-0 00000+0 0 4480','2 09998 9.4958 313.1750 0270971 327.5225 30.8097 1.16186785 45878',-840.0,13568.39733054,36204.45930900,5806.79548733,-2.919354203,1.178920217,-0.221646814), +('09998','1 09998U 74033F 05148.79417928 -.00000112 00000-0 00000+0 0 4480','2 09998 9.4958 313.1750 0270971 327.5225 30.8097 1.16186785 45878',-780.0,2628.58762420,38840.10855897,4771.91979854,-3.114400514,0.276239109,-0.348926401), +('09998','1 09998U 74033F 05148.79417928 -.00000112 00000-0 00000+0 0 4480','2 09998 9.4958 313.1750 0270971 327.5225 30.8097 1.16186785 45878',-720.0,-8535.81598158,38171.79073851,3331.00311285,-3.043839958,-0.644462527,-0.445808894), +('11801','1 11801U 80230.29629788 .01431103 00000-0 14311-1 13','2 11801 46.7916 230.4354 7318036 47.4722 10.4117 2.28537848 13',0.0,7473.37102491,428.94748312,5828.74846783,5.107155391,6.444680305,-0.186133297), +('11801','1 11801U 80230.29629788 .01431103 00000-0 14311-1 13','2 11801 46.7916 230.4354 7318036 47.4722 10.4117 2.28537848 13',360.0,-3305.22148694,32410.84323331,-24697.16974954,-1.301137319,-1.151315600,-0.283335823), +('11801','1 11801U 80230.29629788 .01431103 00000-0 14311-1 13','2 11801 46.7916 230.4354 7318036 47.4722 10.4117 2.28537848 13',720.0,14271.29083858,24110.44309009,-4725.76320143,-0.320504528,2.679841539,-2.084054355), +('11801','1 11801U 80230.29629788 .01431103 00000-0 14311-1 13','2 11801 46.7916 230.4354 7318036 47.4722 10.4117 2.28537848 13',1080.0,-9990.05800009,22717.34212448,-23616.88515553,-1.016674392,-2.290267981,0.728923337), +('11801','1 11801U 80230.29629788 .01431103 00000-0 14311-1 13','2 11801 46.7916 230.4354 7318036 47.4722 10.4117 2.28537848 13',1440.0,9787.87836256,33753.32249667,-15030.79874625,-1.094251553,0.923589906,-1.522311008), +('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',0.0,34747.57932696,24502.37114079,-1.32832986,-1.731642662,2.452772615,0.608510081), +('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',120.0,18263.33439094,38159.96004751,4186.18304085,-2.744396611,1.255583260,0.528558932), +('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',240.0,-3023.38840703,41783.13186459,7273.03412906,-3.035574793,-0.271656544,0.309645251), +('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',360.0,-23516.34391907,34424.42065671,8448.49867693,-2.529120477,-1.726186020,0.009582303), +('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',480.0,-37837.46699511,18028.39727170,7406.25540271,-1.360069525,-2.725794686,-0.292555349), +('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',600.0,-42243.58460661,-3093.72887774,4422.91711801,0.163110919,-3.009980598,-0.517584362), +('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',720.0,-35597.57919549,-23407.91145393,282.09554383,1.641405246,-2.506773678,-0.606963478), +('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',840.0,-19649.19834455,-37606.11623860,-3932.71525948,2.689647056,-1.349150016,-0.537710698), +('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',960.0,1431.30912160,-41982.04949668,-7120.45467057,3.035263353,0.160882945,-0.327993994), +('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',1080.0,22136.97605384,-35388.19823762,-8447.62393401,2.587624889,1.630097136,-0.032349004), +('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',1200.0,37050.15790219,-19537.23321425,-7564.83463543,1.461844494,2.674654256,0.272202191), +('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',1320.0,42253.81760945,1431.81867593,-4699.87621174,-0.049247334,3.019518960,0.505890058), +('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',1440.0,36366.59147396,22023.54245720,-601.47121821,-1.549681546,2.571788981,0.607057418), +('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',1560.0,20922.12287985,36826.33975981,3654.91125886,-2.644070068,1.447521216,0.548722983), +('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',1680.0,-23.77224182,41945.51688402,6950.29891751,-3.043358385,-0.057417440,0.346112094), +('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',1800.0,-20964.17821076,36039.06206172,8418.91984963,-2.642795221,-1.546099886,0.052725852), +('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',1920.0,-36401.63863057,20669.75286162,7677.19769359,-1.549488154,-2.627052310,-0.254079652), +('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',2040.0,-42298.30327543,-119.03351118,4922.96388841,-0.052232768,-3.018152669,-0.493827331), +('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',2160.0,-37125.62383511,-20879.63058368,879.86971348,1.456499841,-2.619358421,-0.604081694), +('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',2280.0,-22250.12320553,-36182.74736487,-3393.15365183,2.583161226,-1.536647628,-0.556404555), +('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',2400.0,-1563.06258654,-42035.43179159,-6780.02161760,3.034917506,-0.052702046,-0.363395654), +('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',2520.0,19531.64069587,-36905.65470956,-8395.46892032,2.693682199,1.446079999,-0.075256054), +('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',2640.0,35516.53506142,-22123.71916638,-7815.04516935,1.646882125,2.568416058,0.232985912), +('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',2760.0,42196.03535976,-1547.32646751,-5187.39401981,0.166491841,3.019211549,0.480665780), +('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',2880.0,37802.25393045,19433.57330019,-1198.66634226,-1.359930580,2.677830903,0.602507466), +('16925','1 16925U 86065D 06151.67415771 .02550794 -30915-6 18784-3 0 4486','2 16925 62.0906 295.0239 5596327 245.1593 47.9690 4.88511875148616',0.0,5559.11686836,-11941.04090781,-19.41235206,3.392116762,-1.946985124,4.250755852), +('16925','1 16925U 86065D 06151.67415771 .02550794 -30915-6 18784-3 0 4486','2 16925 62.0906 295.0239 5596327 245.1593 47.9690 4.88511875148616',120.0,12339.83273749,-2771.14447871,18904.57603433,-0.871247614,2.600917693,0.581560002), +('16925','1 16925U 86065D 06151.67415771 .02550794 -30915-6 18784-3 0 4486','2 16925 62.0906 295.0239 5596327 245.1593 47.9690 4.88511875148616',240.0,-3385.00215658,7538.13955729,200.59008616,-2.023512865,-4.261808344,-6.856385787), +('16925','1 16925U 86065D 06151.67415771 .02550794 -30915-6 18784-3 0 4486','2 16925 62.0906 295.0239 5596327 245.1593 47.9690 4.88511875148616',360.0,12805.22442200,-10258.94667177,13780.16486738,0.619279224,1.821510542,2.507365975), +('16925','1 16925U 86065D 06151.67415771 .02550794 -30915-6 18784-3 0 4486','2 16925 62.0906 295.0239 5596327 245.1593 47.9690 4.88511875148616',480.0,5682.46556318,7199.30270473,15437.67134070,-2.474365406,2.087897336,-2.583767460), +('16925','1 16925U 86065D 06151.67415771 .02550794 -30915-6 18784-3 0 4486','2 16925 62.0906 295.0239 5596327 245.1593 47.9690 4.88511875148616',600.0,7628.94243982,-12852.72097492,2902.87208981,2.748131081,-0.740084579,4.125307943), +('16925','1 16925U 86065D 06151.67415771 .02550794 -30915-6 18784-3 0 4486','2 16925 62.0906 295.0239 5596327 245.1593 47.9690 4.88511875148616',720.0,11531.64866625,-858.27542736,19086.85993771,-1.170071901,2.660311986,0.096005705), +('16925','1 16925U 86065D 06151.67415771 .02550794 -30915-6 18784-3 0 4486','2 16925 62.0906 295.0239 5596327 245.1593 47.9690 4.88511875148616',840.0,-3866.98069515,2603.73442786,-4577.36484577,1.157257298,-8.453281164,-4.683959407), +('16925','1 16925U 86065D 06151.67415771 .02550794 -30915-6 18784-3 0 4486','2 16925 62.0906 295.0239 5596327 245.1593 47.9690 4.88511875148616',960.0,13054.77732721,-8707.92757730,15537.63259903,0.229846748,2.119467054,2.063396852), +('16925','1 16925U 86065D 06151.67415771 .02550794 -30915-6 18784-3 0 4486','2 16925 62.0906 295.0239 5596327 245.1593 47.9690 4.88511875148616',1080.0,3496.91064652,8712.83919778,12845.81838327,-2.782184997,1.552950644,-3.554436131), +('16925','1 16925U 86065D 06151.67415771 .02550794 -30915-6 18784-3 0 4486','2 16925 62.0906 295.0239 5596327 245.1593 47.9690 4.88511875148616',1200.0,9593.07424729,-13023.75963608,6250.46484931,2.072666376,0.278735334,3.778111073), +('16925','1 16925U 86065D 06151.67415771 .02550794 -30915-6 18784-3 0 4486','2 16925 62.0906 295.0239 5596327 245.1593 47.9690 4.88511875148616',1320.0,10284.79205084,1487.89914169,18824.37381327,-1.530335053,2.663107730,-0.542205966), +('16925','1 16925U 86065D 06151.67415771 .02550794 -30915-6 18784-3 0 4486','2 16925 62.0906 295.0239 5596327 245.1593 47.9690 4.88511875148616',1440.0,-984.62035146,-5187.03480813,-5745.59594144,4.340271916,-7.266811354,1.777668888), +('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',0.0,25123.29290741,-13225.49966286,3249.40351869,0.488683419,4.797897593,-0.961119693), +('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',1440.0,-151669.05280515,-5645.20454550,-2198.51592118,-0.869182889,-0.870759872,0.156508219), +('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',1560.0,-157497.71657495,-11884.99595074,-1061.44439402,-0.749657961,-0.864016715,0.157766101), +('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',1680.0,-162498.32255577,-18062.99733167,81.00915253,-0.638980378,-0.853687105,0.158098992), +('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',1800.0,-166728.76010920,-24155.99648299,1222.84128677,-0.535600687,-0.840455444,0.157680857), +('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',1920.0,-169935.81924592,-31767.29787964,2749.01540345,-0.430050431,-0.828904183,0.157812340), +('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',2040.0,-172703.07831815,-37662.95639336,3883.60052579,-0.338004891,-0.810277487,0.156020035), +('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',2160.0,-174823.19337404,-43417.55605219,5003.26312809,-0.250258622,-0.789828672,0.153764903), +('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',2280.0,-176324.63925775,-49018.51958648,6104.85025002,-0.166136613,-0.767706262,0.151092242), +('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',2400.0,-177231.42142458,-54454.12699497,7185.48661607,-0.085067854,-0.744001567,0.148033403), +('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',2520.0,-177563.73583232,-59713.14859144,8242.48472591,-0.006561730,-0.718760309,0.144608676), +('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',2640.0,-177338.48026483,-64784.54644698,9273.27220003,0.069809946,-0.691990238,0.140829236), +('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',2760.0,-176569.65151461,-69657.21976255,10275.33063459,0.144426878,-0.663665876,0.136698419), +('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',2880.0,-175268.65299073,-74319.77625463,11246.14177160,0.217631370,-0.633731091,0.132212491), +('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',3000.0,-173444.53039609,-78760.31560396,12183.13775212,0.289737325,-0.602099929,0.127361017), +('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',3120.0,-171104.14813653,-82966.21323591,13083.65278381,0.361037779,-0.568655903,0.122126889), +('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',3240.0,-168252.31543803,-86923.89363433,13944.87382716,0.431811396,-0.533249797,0.116486022), +('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',3360.0,-164891.86832887,-90618.58225954,14763.78794247,0.502328269,-0.495695896,0.110406725), +('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',3480.0,-161023.71139825,-94034.02398835,15537.12375729,0.572855321,-0.455766412,0.103848688), +('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',3600.0,-156646.82136726,-97152.15370791,16261.28409305,0.643661538,-0.413183688,0.096761524), +('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',3720.0,-151758.21285737,-99952.70098346,16932.26607548,0.715023254,-0.367609561,0.089082727), +('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',3840.0,-146352.86521283,-102412.70506284,17545.56394158,0.787229695,-0.318630913,0.080734873), +('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',3960.0,-140423.60777444,-104505.90799734,18096.04807097,0.860588979,-0.265739987,0.071621768), +('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',4080.0,-133960.95961851,-106201.98091318,18577.81121953,0.935434758,-0.208307307,0.061623110), +('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',4200.0,-126952.91860010,-107465.51906186,18983.96903112,1.012133628,-0.145543878,0.050587007), +('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',4320.0,-119384.69396454,-108254.71115372,19306.39581892,1.091093313,-0.076447479,0.038319282), +('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',0.0,-14464.72135182,-4699.19517587,0.06681686,-3.249312013,-3.281032707,4.007046940), +('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',120.0,-19410.46286123,-19143.03318969,23114.05522619,0.508602237,-1.156882269,2.379923455), +('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',240.0,-12686.06129708,-23853.75335645,35529.81733588,1.231633829,-0.221718202,1.118440291), +('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',360.0,-2775.46649359,-22839.64574119,39494.64689967,1.468963405,0.489481769,-0.023972788), +('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',480.0,7679.87883570,-16780.50760106,34686.21815555,1.364171080,1.211183897,-1.385151371), +('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',600.0,14552.40023028,-4819.50121461,17154.70672449,0.109201591,2.176124494,-3.854856805), +('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',720.0,-15302.38845375,-5556.43440300,1095.95088753,-2.838224312,-3.134231137,3.992596326), +('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',840.0,-19289.20066748,-19427.04851118,23759.45685636,0.552495087,-1.112499437,2.325112654), +('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',960.0,-12376.21976437,-23893.38020018,35831.33691892,1.246701529,-0.194294048,1.074867282), +('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',1080.0,-2400.55677665,-22698.62264640,39482.75964390,1.472582922,0.513555654,-0.069306561), +('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',1200.0,8031.66819252,-16455.77592085,34298.94391742,1.351357426,1.239633234,-1.448195324), +('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',1320.0,14559.48780372,-4238.43773813,16079.23154704,-0.026409655,2.218938770,-4.012628896), +('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',1440.0,-16036.04980660,-6372.51406468,2183.44834232,-2.485113443,-2.994994355,3.955891272), +('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',1560.0,-19156.71583814,-19698.89059957,24389.29473934,0.594278133,-1.069418599,2.271152044), +('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',1680.0,-12062.72925552,-23925.82362911,36120.66680667,1.261238798,-0.167201856,1.031478939), +('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',1800.0,-2024.96136966,-22551.56626703,39458.50085787,1.475816889,0.537615764,-0.114887472), +('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',1920.0,8379.80916204,-16123.95878459,33894.75123231,1.337468254,1.268432783,-1.512473301), +('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',2040.0,14527.86748873,-3646.33817120,14960.74306518,-0.180035839,2.261273515,-4.179355590), +('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',2160.0,-16680.12147335,-7149.80800425,3257.64227208,-2.178897351,-2.863927095,3.904876943), +('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',2280.0,-19013.58793448,-19958.93766022,25003.81778666,0.634100431,-1.027559823,2.218002685), +('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',2400.0,-11745.76155818,-23951.19438627,36397.87676581,1.275261813,-0.140425132,0.988259441), +('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',2520.0,-1648.81945070,-22398.50594576,39421.83273890,1.478660174,0.561671519,-0.160733093), +('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',2640.0,8723.97652795,-15784.99406275,33473.35215527,1.322433593,1.297602497,-1.578055493), +('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',2760.0,14452.25571587,-3043.42332645,13796.84870805,-0.355190169,2.302485443,-4.355767077), +('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',2880.0,-17246.31075678,-7890.72601508,4315.39410307,-1.910968458,-2.740945672,3.844722726), +('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',0.0,1442.10132912,6510.23625449,8.83145885,-3.475714837,0.997262768,6.835860345), +('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',54.2028672,306.10478453,-5816.45655525,-2979.55846068,3.950663855,3.415332543,-5.879974329), +('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',74.2028672,3282.82085464,2077.46972905,-5189.17988770,0.097342701,7.375135692,2.900196702), +('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',94.2028672,530.82729176,6426.20790003,1712.37076793,-3.837120395,-1.252430637,6.561602577), +('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',114.2028672,-3191.69170212,170.27219912,5956.29807775,-1.394956872,-7.438073471,-0.557553115), +('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',134.2028672,-1818.99222465,-6322.45146616,681.95247154,3.349795173,-1.530140265,-6.831522765), +('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',154.2028672,2515.66448634,-2158.83091224,-5552.13320544,2.571979660,7.311930509,-1.639865620), +('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',174.2028672,2414.52833210,5749.10150922,-1998.59693165,-2.681032960,3.527589301,6.452951429), +('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',194.2028672,-1877.98944331,3862.27848302,5112.48435863,-3.261489804,-6.026859137,3.433254768), +('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',214.2028672,-3117.36584395,-4419.74773864,3840.85960912,1.545479182,-5.475416581,-5.207913748), +('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',234.2028672,815.32034678,-5231.67692249,-3760.04690354,3.870864200,4.455588552,-5.211082191), +('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',254.2028672,3269.54341810,3029.00081083,-4704.67969713,-0.526711345,6.812157950,3.929825087), +('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',274.2028672,-10.18099756,6026.23341453,2643.50518407,-3.953623254,-2.616070012,6.145637500), +('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',294.2028672,-3320.58819584,-1248.42679945,5563.06017927,-0.637046974,-7.417786044,-2.076120187), +('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',314.2028672,-1025.48974616,-6366.98945782,-911.23559153,3.811771909,0.438071490,-6.829260617), +('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',334.2028672,3003.75996128,-413.85708003,-5706.15591435,1.674350083,7.694169068,0.316915204), +('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',354.2028672,1731.42816980,6258.27676925,-409.32527982,-3.400497806,1.447945424,6.904010052), +('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',374.2028672,-2582.52111460,2024.19020680,5647.55650268,-2.530348121,-7.221719393,1.438141553), +('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',394.2028672,-2440.56848578,-5702.77311877,1934.81094689,2.731792947,-3.350576075,-6.527773339), +('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',414.2028672,1951.22934391,-3423.59443045,-5121.67808201,3.249039133,6.465974362,-3.069806659), +('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',434.2028672,2886.50939356,4888.68626216,-3096.29885989,-1.973162139,4.877039020,5.832414910), +('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',454.2028672,-1276.55532182,4553.26898463,4406.19787375,-3.715146421,-5.320176914,4.418210777), +('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',474.2028672,-3181.54698042,-3831.29976506,4096.80242787,1.114159970,-6.104773578,-4.829967400), +('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',0.0,14712.22023280,-1443.81061850,0.83497888,4.418965470,1.629592098,4.115531802), +('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',120.0,25418.88807860,9342.60307989,23611.46690798,0.051284086,1.213127306,2.429004159), +('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',240.0,21619.59550749,16125.24978864,36396.79365831,-0.963604380,0.685454965,1.177181937), +('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',360.0,12721.50543331,19258.96193362,40898.47648359,-1.457448565,0.179955469,0.071502601), +('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',480.0,1272.80760054,18458.41971897,37044.74742696,-1.674863386,-0.436454983,-1.201040990), +('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',600.0,-10058.43188619,11906.60764454,21739.62097733,-1.245829683,-1.543789125,-3.324449221), +('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',720.0,10924.40116466,-2571.92414170,-2956.34856294,6.071727751,1.349579102,3.898430260), +('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',840.0,25332.14851525,8398.91099924,21783.90654357,0.222320754,1.272214306,2.580527192), +('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',960.0,22317.71926039,15574.82086129,35495.77144092,-0.892750056,0.737383381,1.291738834), +('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',1080.0,13795.68675885,19088.83051008,40803.69584385,-1.420277669,0.235599456,0.185517056), +('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',1200.0,2515.17145049,18746.63776282,37864.58088636,-1.668016053,-0.360431458,-1.052854596), +('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',1320.0,-9084.48602106,12982.62608646,24045.63900249,-1.378032363,-1.373184736,-3.013963835), +('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',1440.0,5647.00909495,-3293.90518693,-5425.85235063,8.507977176,0.414560797,2.543322806), +('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',1560.0,25111.63372210,7412.55109488,19844.25781729,0.416496290,1.332106006,2.739301737), +('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',1680.0,22961.47461641,14985.74459578,34511.09257381,-0.816711048,0.789391108,1.407901804), +('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',1800.0,14841.15301459,18876.91439870,40626.25901619,-1.380403341,0.290228810,0.298258120), +('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',1920.0,3750.70174081,18978.57939698,38578.11783220,-1.656939412,-0.287930881,-0.910825599), +('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',2040.0,-8027.30219489,13939.54436955,26136.49045637,-1.474476061,-1.222693624,-2.737178731), +('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',2160.0,-1296.95657092,-2813.69369768,-5871.09587258,9.881929371,-1.978467207,-1.922261005), +('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',2280.0,24738.60364819,6383.41644019,17787.27631900,0.639556952,1.392554379,2.906206324), +('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',2400.0,23546.85388669,14358.15602832,33441.67679479,-0.734895006,0.841564851,1.526009909), +('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',2520.0,15855.87696303,18624.05633582,40367.13420574,-1.337753546,0.343969522,0.410018472), +('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',2640.0,4976.44933591,19156.75504042,39189.68603184,-1.642084365,-0.218525096,-0.774148204), +('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',2760.0,-6909.20746210,14790.44707042,28034.46732222,-1.545152610,-1.088119523,-2.487447214), +('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',2880.0,-7331.65006707,-604.17323419,-2723.51014575,6.168997265,-3.634011554,-5.963531682), +('23177','1 23177U 94040C 06175.45752052 .00000386 00000-0 76590-3 0 95','2 23177 7.0496 179.8238 7258491 296.0482 8.3061 2.25906668 97438',0.0,-8801.60046706,-0.03357557,-0.44522743,-3.835279101,-7.662552175,0.944561323), +('23177','1 23177U 94040C 06175.45752052 .00000386 00000-0 76590-3 0 95','2 23177 7.0496 179.8238 7258491 296.0482 8.3061 2.25906668 97438',120.0,-1684.34352858,-31555.95196340,3888.99944319,2.023055719,-2.151306405,0.265065778), +('23177','1 23177U 94040C 06175.45752052 .00000386 00000-0 76590-3 0 95','2 23177 7.0496 179.8238 7258491 296.0482 8.3061 2.25906668 97438',240.0,12325.51410155,-38982.15046244,4802.88832275,1.763224157,-0.102514446,0.012397139), +('23177','1 23177U 94040C 06175.45752052 .00000386 00000-0 76590-3 0 95','2 23177 7.0496 179.8238 7258491 296.0482 8.3061 2.25906668 97438',360.0,22773.66831936,-34348.02176606,4228.77407391,1.067616787,1.352427865,-0.166956367), +('23177','1 23177U 94040C 06175.45752052 .00000386 00000-0 76590-3 0 95','2 23177 7.0496 179.8238 7258491 296.0482 8.3061 2.25906668 97438',480.0,26194.40441089,-19482.94203672,2393.84774063,-0.313732186,2.808771328,-0.346204118), +('23177','1 23177U 94040C 06175.45752052 .00000386 00000-0 76590-3 0 95','2 23177 7.0496 179.8238 7258491 296.0482 8.3061 2.25906668 97438',600.0,8893.50573448,5763.38890561,-713.69884164,-7.037399220,3.022613131,-0.370272416), +('23177','1 23177U 94040C 06175.45752052 .00000386 00000-0 76590-3 0 95','2 23177 7.0496 179.8238 7258491 296.0482 8.3061 2.25906668 97438',720.0,-6028.75686537,-25648.99913786,3164.37107274,1.883159288,-3.177051976,0.390793162), +('23177','1 23177U 94040C 06175.45752052 .00000386 00000-0 76590-3 0 95','2 23177 7.0496 179.8238 7258491 296.0482 8.3061 2.25906668 97438',840.0,8313.57299056,-38146.45710922,4697.80777535,1.905002133,-0.625883074,0.076098187), +('23177','1 23177U 94040C 06175.45752052 .00000386 00000-0 76590-3 0 95','2 23177 7.0496 179.8238 7258491 296.0482 8.3061 2.25906668 97438',960.0,20181.29108622,-36842.60674073,4529.12568218,1.326244476,0.921916487,-0.114527455), +('23177','1 23177U 94040C 06175.45752052 .00000386 00000-0 76590-3 0 95','2 23177 7.0496 179.8238 7258491 296.0482 8.3061 2.25906668 97438',1080.0,26302.61794569,-25173.39539436,3084.65309986,0.245398835,2.329974347,-0.287495880), +('23177','1 23177U 94040C 06175.45752052 .00000386 00000-0 76590-3 0 95','2 23177 7.0496 179.8238 7258491 296.0482 8.3061 2.25906668 97438',1200.0,19365.07045602,-2700.00490122,317.42727417,-3.009733018,3.902496058,-0.478928582), +('23177','1 23177U 94040C 06175.45752052 .00000386 00000-0 76590-3 0 95','2 23177 7.0496 179.8238 7258491 296.0482 8.3061 2.25906668 97438',1320.0,-9667.81878780,-16930.19112642,2095.87469034,1.279288285,-4.736005905,0.582878255), +('23177','1 23177U 94040C 06175.45752052 .00000386 00000-0 76590-3 0 95','2 23177 7.0496 179.8238 7258491 296.0482 8.3061 2.25906668 97438',1440.0,4021.31438583,-36066.09209609,4442.91587411,2.007322354,-1.227461376,0.149383897), +('23333','1 23333U 94071A 94305.49999999 -.00172956 26967-3 10000-3 0 15','2 23333 28.7490 2.3720 9728298 30.4360 1.3500 0.07309491 70',0.0,-9301.24542292,3326.10200382,2318.36441127,-8.729303005,-0.828225037,-0.122314827), +('23333','1 23333U 94071A 94305.49999999 -.00172956 26967-3 10000-3 0 15','2 23333 28.7490 2.3720 9728298 30.4360 1.3500 0.07309491 70',120.0,-44672.91239680,-6213.11996581,-1738.80131727,-3.719475070,-1.336673022,-0.621888261), +('23333','1 23333U 94071A 94305.49999999 -.00172956 26967-3 10000-3 0 15','2 23333 28.7490 2.3720 9728298 30.4360 1.3500 0.07309491 70',240.0,-67053.08885388,-14994.69685946,-5897.99072793,-2.860576613,-1.183771565,-0.568473909), +('23333','1 23333U 94071A 94305.49999999 -.00172956 26967-3 10000-3 0 15','2 23333 28.7490 2.3720 9728298 30.4360 1.3500 0.07309491 70',360.0,-85227.84253168,-22897.08484471,-9722.59184564,-2.426469823,-1.078592475,-0.525341431), +('23333','1 23333U 94071A 94305.49999999 -.00172956 26967-3 10000-3 0 15','2 23333 28.7490 2.3720 9728298 30.4360 1.3500 0.07309491 70',480.0,-100986.00419136,-30171.19698695,-13283.77044765,-2.147108978,-1.000530827,-0.491587582), +('23333','1 23333U 94071A 94305.49999999 -.00172956 26967-3 10000-3 0 15','2 23333 28.7490 2.3720 9728298 30.4360 1.3500 0.07309491 70',600.0,-115093.00686387,-36962.56316477,-16634.15682929,-1.945446188,-0.938947736,-0.464199202), +('23333','1 23333U 94071A 94305.49999999 -.00172956 26967-3 10000-3 0 15','2 23333 28.7490 2.3720 9728298 30.4360 1.3500 0.07309491 70',720.0,-127965.80064891,-43363.32967165,-19809.90480432,-1.789652016,-0.888278463,-0.441254468), +('23333','1 23333U 94071A 94305.49999999 -.00172956 26967-3 10000-3 0 15','2 23333 28.7490 2.3720 9728298 30.4360 1.3500 0.07309491 70',840.0,-139863.28332207,-49436.45704153,-22836.80438139,-1.663762568,-0.845315913,-0.421548627), +('23333','1 23333U 94071A 94305.49999999 -.00172956 26967-3 10000-3 0 15','2 23333 28.7490 2.3720 9728298 30.4360 1.3500 0.07309491 70',960.0,-150960.22978259,-55227.45413896,-25734.01408879,-1.558730986,-0.808061065,-0.404293846), +('23333','1 23333U 94071A 94305.49999999 -.00172956 26967-3 10000-3 0 15','2 23333 28.7490 2.3720 9728298 30.4360 1.3500 0.07309491 70',1080.0,-161381.71414630,-60770.64040903,-28516.26290017,-1.468977174,-0.775190459,-0.388951810), +('23333','1 23333U 94071A 94305.49999999 -.00172956 26967-3 10000-3 0 15','2 23333 28.7490 2.3720 9728298 30.4360 1.3500 0.07309491 70',1200.0,-171221.18736947,-66092.76474442,-31195.19847387,-1.390837596,-0.745785633,-0.375140398), +('23333','1 23333U 94071A 94305.49999999 -.00172956 26967-3 10000-3 0 15','2 23333 28.7490 2.3720 9728298 30.4360 1.3500 0.07309491 70',1320.0,-180550.82888746,-71215.23290630,-33780.24938270,-1.321788672,-0.719184752,-0.362579495), +('23333','1 23333U 94071A 94305.49999999 -.00172956 26967-3 10000-3 0 15','2 23333 28.7490 2.3720 9728298 30.4360 1.3500 0.07309491 70',1440.0,-189427.87533074,-76155.54943344,-36279.19882816,-1.260024473,-0.694896053,-0.351058133), +('23333','1 23333U 94071A 94305.49999999 -.00172956 26967-3 10000-3 0 15','2 23333 28.7490 2.3720 9728298 30.4360 1.3500 0.07309491 70',1560.0,-197898.69401409,-80928.29015181,-38698.57972447,-1.204211888,-0.672544709,-0.340413731), +('23333','1 23333U 94071A 94305.49999999 -.00172956 26967-3 10000-3 0 15','2 23333 28.7490 2.3720 9728298 30.4360 1.3500 0.07309491 70',1600.0,-200638.82986236,-82484.14969882,-39488.34331447,-1.186748462,-0.665472422,-0.337037582), +('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',0.0,9892.63794341,35.76144969,-1.08228838,3.556643237,6.456009375,0.783610890), +('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',20.0,11931.95642997,7340.74973750,886.46365987,0.308329116,5.532328972,0.672887281), +('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',40.0,11321.71039205,13222.84749156,1602.40119049,-1.151973982,4.285810871,0.521919425), +('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',60.0,9438.29395675,17688.05450261,2146.59293402,-1.907904054,3.179955046,0.387692479), +('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',80.0,6872.08634639,20910.11016811,2539.79945034,-2.323995367,2.207398462,0.269506121), +('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',100.0,3933.37509798,23024.07662542,2798.25966746,-2.542860616,1.327134966,0.162450076), +('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',120.0,816.64091546,24118.98675475,2932.69459428,-2.626838010,0.504502763,0.062344306), +('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',140.0,-2334.41705804,24246.86096326,2949.36448841,-2.602259646,-0.288058266,-0.034145135), +('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',160.0,-5394.31798039,23429.42716149,2850.86832586,-2.474434068,-1.074055982,-0.129868366), +('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',180.0,-8233.35130237,21661.24480883,2636.51456118,-2.230845533,-1.875742344,-0.227528603), +('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',200.0,-10693.96497348,18909.88168891,2302.33707548,-1.835912433,-2.716169865,-0.329931880), +('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',220.0,-12553.89669904,15114.63990716,1840.93573231,-1.212478879,-3.619036996,-0.439970633), +('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',240.0,-13450.20591864,10190.57904289,1241.95958736,-0.189082511,-4.596701971,-0.559173899), +('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',260.0,-12686.60437121,4079.31106161,498.27078614,1.664498211,-5.559889865,-0.676747779), +('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',280.0,-8672.55867753,-2827.56823315,-342.59644716,5.515079852,-5.551222962,-0.676360044), +('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',300.0,1153.31498060,-6411.98692060,-779.87288941,9.689818102,1.388598425,0.167868798), +('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',320.0,9542.79201056,-533.71253081,-65.73165428,3.926947087,6.459583539,0.785686755), +('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',340.0,11868.80960100,6861.59590848,833.72780602,0.452957852,5.632811328,0.685262323), +('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',360.0,11376.23941678,12858.97121366,1563.40660172,-1.087665695,4.374693347,0.532207051), +('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',380.0,9547.70300782,17421.48570758,2118.56907515,-1.876540262,3.253891728,0.395810243), +('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',400.0,7008.51470263,20725.47471227,2520.56064289,-2.308703599,2.270724438,0.276138613), +('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',420.0,4083.18551180,22910.88306802,2786.35642660,-2.536610941,1.383768875,0.168165414), +('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',440.0,970.13107533,24071.19896282,2927.30875440,-2.626673095,0.557274717,0.067549303), +('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',460.0,-2183.75499348,24261.30188126,2950.09189560,-2.607082241,-0.236785937,-0.029112844), +('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',480.0,-5252.49066783,23505.58108388,2857.68628654,-2.484465059,-1.022158411,-0.124702643), +('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',500.0,-8107.41437587,21801.13395060,2649.76852683,-2.247669530,-1.821071275,-0.221914939), +('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',520.0,-10594.01813094,19118.22269010,2322.77197767,-1.863224062,-2.656353699,-0.323512642), +('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',540.0,-12496.70758499,15399.13096351,1869.75958053,-1.258272118,-3.551534022,-0.432332913), +('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',560.0,-13467.50382653,10561.43040038,1280.84842178,-0.272050695,-4.520503543,-0.550014833), +('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',580.0,-12848.00717497,4541.72432009,548.59976478,1.493938056,-5.489644146,-0.667479244), +('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',600.0,-9152.79920397,-2343.88902799,-287.93741332,5.127695273,-5.650584983,-0.686013644), +('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',620.0,280.12478642,-6500.11368508,-790.36236302,9.779642904,0.581430120,0.074124421), +('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',640.0,9166.21406115,-1093.48756223,-129.53833135,4.316926785,6.438465969,0.785095966), +('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',660.0,11794.74563870,6381.74484842,780.82775971,0.604642523,5.731705440,0.697571522), +('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',680.0,11424.80363789,12493.80833338,1524.27683836,-1.021148661,4.463489406,0.542537702), +('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',700.0,9652.78920084,17153.46470428,2090.43413681,-1.844382696,3.327595388,0.403924198), +('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',720.0,7141.24742526,20538.97115158,2501.18059966,-2.293079623,2.333598993,0.282727441), +('24208','1 24208U 96044A 06177.04061740 -.00000094 00000-0 10000-3 0 1600','2 24208 3.8536 80.0121 0026640 311.0977 48.3000 1.00778054 36119',0.0,7534.10987189,41266.39266843,-0.10801028,-3.027168008,0.558848996,0.207982755), +('24208','1 24208U 96044A 06177.04061740 -.00000094 00000-0 10000-3 0 1600','2 24208 3.8536 80.0121 0026640 311.0977 48.3000 1.00778054 36119',120.0,-14289.19940414,39469.05530051,1428.62838591,-2.893205245,-1.045447840,0.179634249), +('24208','1 24208U 96044A 06177.04061740 -.00000094 00000-0 10000-3 0 1600','2 24208 3.8536 80.0121 0026640 311.0977 48.3000 1.00778054 36119',240.0,-32222.92014955,26916.25425799,2468.59996594,-1.973007929,-2.359335071,0.102539376), +('24208','1 24208U 96044A 06177.04061740 -.00000094 00000-0 10000-3 0 1600','2 24208 3.8536 80.0121 0026640 311.0977 48.3000 1.00778054 36119',360.0,-41413.95109398,7055.51656639,2838.90906671,-0.521665080,-3.029172207,-0.002066843), +('24208','1 24208U 96044A 06177.04061740 -.00000094 00000-0 10000-3 0 1600','2 24208 3.8536 80.0121 0026640 311.0977 48.3000 1.00778054 36119',480.0,-39402.72251896,-14716.42475223,2441.32678358,1.066928187,-2.878714619,-0.105865729), +('24208','1 24208U 96044A 06177.04061740 -.00000094 00000-0 10000-3 0 1600','2 24208 3.8536 80.0121 0026640 311.0977 48.3000 1.00778054 36119',600.0,-26751.08889828,-32515.13982431,1384.38865570,2.366228869,-1.951032799,-0.181018498), +('24208','1 24208U 96044A 06177.04061740 -.00000094 00000-0 10000-3 0 1600','2 24208 3.8536 80.0121 0026640 311.0977 48.3000 1.00778054 36119',720.0,-6874.77975542,-41530.38329422,-46.60245459,3.027415087,-0.494671177,-0.207337260), +('24208','1 24208U 96044A 06177.04061740 -.00000094 00000-0 10000-3 0 1600','2 24208 3.8536 80.0121 0026640 311.0977 48.3000 1.00778054 36119',840.0,14859.52039042,-39302.58907247,-1465.02482524,2.869609883,1.100123969,-0.177514425), +('24208','1 24208U 96044A 06177.04061740 -.00000094 00000-0 10000-3 0 1600','2 24208 3.8536 80.0121 0026640 311.0977 48.3000 1.00778054 36119',960.0,32553.14863770,-26398.88401807,-2485.45866002,1.930064459,2.401574539,-0.099250520), +('24208','1 24208U 96044A 06177.04061740 -.00000094 00000-0 10000-3 0 1600','2 24208 3.8536 80.0121 0026640 311.0977 48.3000 1.00778054 36119',1080.0,41365.67576837,-6298.09965811,-2828.05254033,0.459741276,3.051680214,0.006431872), +('24208','1 24208U 96044A 06177.04061740 -.00000094 00000-0 10000-3 0 1600','2 24208 3.8536 80.0121 0026640 311.0977 48.3000 1.00778054 36119',1200.0,38858.83295070,15523.39314924,-2396.86850752,-1.140211488,2.867567143,0.110637217), +('24208','1 24208U 96044A 06177.04061740 -.00000094 00000-0 10000-3 0 1600','2 24208 3.8536 80.0121 0026640 311.0977 48.3000 1.00778054 36119',1320.0,25701.46068162,33089.42617648,-1308.68556638,-2.428713821,1.897381431,0.184605907), +('24208','1 24208U 96044A 06177.04061740 -.00000094 00000-0 10000-3 0 1600','2 24208 3.8536 80.0121 0026640 311.0977 48.3000 1.00778054 36119',1440.0,5501.08137100,41590.27784405,138.32522930,-3.050691874,0.409203052,0.207958133), +('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',0.0,8827.15660472,-41223.00971237,3.63482963,3.007087319,0.643701323,0.000941663), +('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',-1440.0,8118.18519221,-41368.40537378,4.11046687,3.017696741,0.591994297,0.000933016), +('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',-1320.0,27766.34015328,-31724.97000557,9.93297846,2.314236153,2.024903193,0.000660861), +('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',-1200.0,39932.57237973,-13532.60040454,13.12958252,0.987382819,2.911942843,0.000213298), +('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',-1080.0,41341.01365441,8305.71681955,12.84988501,-0.605098224,3.014378268,-0.000291034), +('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',-960.0,31614.99210558,27907.29155353,9.16618797,-2.034243523,2.305014102,-0.000718418), +('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',-840.0,13375.75227587,39994.27017651,3.05416854,-2.915424366,0.975119874,-0.000955576), +('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',-720.0,-8464.89963309,41312.93549892,-3.86622919,-3.011600615,-0.617275050,-0.000939664), +('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',-600.0,-28026.23406158,31507.89995661,-9.76047869,-2.296840160,-2.043607595,-0.000674889), +('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',-480.0,-40040.01314363,13218.00579413,-13.06594832,-0.963328772,-2.919827983,-0.000231414), +('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',-360.0,-41268.43291976,-8632.06859693,-12.90661266,0.630042315,-3.009677376,0.000273163), +('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',-240.0,-31377.85317015,-28156.13970334,-9.32605530,2.054021717,-2.288554158,0.000704959), +('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',-120.0,-13031.41552688,-40092.33381029,-3.27636660,2.924657466,-0.950541167,0.000949381), +('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',0.0,8827.15660472,-41223.00971237,3.63482963,3.007087319,0.643701323,0.000941663), +('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',120.0,28306.85426674,-31243.80147394,9.57216891,2.279137743,2.064316875,0.000684127), +('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',240.0,40159.05128805,-12845.39151157,12.96086316,0.937265422,2.928448287,0.000245505), +('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',360.0,41192.55903455,9013.79606759,12.90495666,-0.656727442,3.003543458,-0.000257479), +('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',480.0,31131.69755798,28445.55681731,9.42419238,-2.073484842,2.269770851,-0.000691233), +('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',600.0,12687.81846530,40217.83324639,3.44726249,-2.931721827,0.924962230,-0.000940766), +('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',720.0,-9172.23500245,41161.63475527,-3.43575757,-3.000571486,-0.668847508,-0.000940101), +('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',840.0,-28562.51093192,31022.45987587,-9.39562161,-2.261449202,-2.082713897,-0.000689669), +('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',960.0,-40260.77504549,12529.11484344,-12.84915105,-0.913097031,-2.935933528,-0.000256181), +('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',1080.0,-41114.14376538,-9338.87194483,-12.87952404,0.681588815,-2.998432565,0.000245006), +('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',1200.0,-30890.01512240,-28690.40750792,-9.48037212,2.092989805,-2.252978152,0.000680459), +('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',1320.0,-12341.46194020,-40310.06316386,-3.55833201,2.940537098,-0.900219523,0.000934170), +('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',1440.0,9533.27750818,-41065.52390214,3.30756482,2.995596171,0.695200236,0.000938525), +('26900','1 26900U 01039A 06106.74503247 .00000045 00000-0 10000-3 0 8290','2 26900 0.0164 266.5378 0003319 86.1794 182.2590 1.00273847 16981',0.0,-42014.83795787,3702.34357772,-26.67500257,-0.269775247,-3.061854393,0.000336726), +('26900','1 26900U 01039A 06106.74503247 .00000045 00000-0 10000-3 0 8290','2 26900 0.0164 266.5378 0003319 86.1794 182.2590 1.00273847 16981',9300.0,40968.68133298,-9905.99156086,11.84946837,0.722756848,2.989645389,-0.000161261), +('26900','1 26900U 01039A 06106.74503247 .00000045 00000-0 10000-3 0 8290','2 26900 0.0164 266.5378 0003319 86.1794 182.2590 1.00273847 16981',9360.0,42135.66858481,1072.99195618,10.83481752,-0.078150602,3.074772455,-0.000380063), +('26900','1 26900U 01039A 06106.74503247 .00000045 00000-0 10000-3 0 8290','2 26900 0.0164 266.5378 0003319 86.1794 182.2590 1.00273847 16981',9400.0,41304.75156132,8398.27742944,9.74006214,-0.612515135,3.014117469,-0.000511575), +('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',0.0,-14506.92313768,-21613.56043281,10.05018894,2.212943308,1.159970892,3.020600202), +('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',120.0,7309.62197950,6076.00713664,6800.08705263,1.300543383,5.322579615,-4.788746312), +('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',240.0,-3882.62933791,11960.00543452,-25088.14383845,-2.146773699,-1.372461491,-2.579382089), +('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',360.0,-16785.45507465,-734.79159704,-34300.57085853,-1.386528125,-1.907762641,-0.220949641), +('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',480.0,-23524.16689356,-13629.45124622,-30246.27899200,-0.462846784,-1.586139830,1.269293624), +('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',600.0,-22890.23597092,-22209.35900155,-16769.91946116,0.704351342,-0.671112594,2.432433851), +('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',720.0,-11646.39698980,-19855.44222106,3574.00109607,2.626712727,1.815887329,2.960883901), +('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',840.0,7665.76124241,11159.78946577,345.93813117,-0.584818007,3.193514161,-5.750338922), +('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',960.0,-6369.35388112,10204.80073022,-27844.52150384,-2.050573276,-1.582940542,-2.076075232), +('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',1080.0,-18345.64763145,-2977.76684430,-34394.90760612,-1.243589864,-1.892050757,0.060372061), +('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',1200.0,-23979.74839255,-15436.44139571,-28616.50540218,-0.294973425,-1.482987916,1.478255628), +('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',1320.0,-21921.97167880,-22852.45147658,-13784.85308485,0.945455629,-0.428940995,2.596964378), +('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',1440.0,-8266.43821031,-17210.74590112,6967.95546070,3.082244069,2.665881872,2.712555075), +('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',1560.0,6286.85464535,13809.56328971,-6321.60663781,-1.615964016,1.383135377,-5.358719132), +('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',1680.0,-8730.87526788,8244.63344365,-30039.92372791,-1.935622871,-1.724162072,-1.631224738), +('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',1800.0,-19735.81883249,-5191.76593007,-34166.14974143,-1.097835530,-1.860148418,0.324401050), +('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',1920.0,-24232.73847703,-17112.08243255,-26742.88893252,-0.119786184,-1.364365317,1.680220468), +('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',2040.0,-20654.45640708,-23184.54386047,-10611.55144716,1.209238113,-0.144169639,2.748054938), +('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',2160.0,-4337.15988957,-13410.46817244,9870.45949215,3.532753095,3.772236461,2.088424247), +('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',2280.0,4074.62263523,14698.07548285,-12248.65327973,-2.053824693,0.203325817,-4.607867718), +('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',2400.0,-10950.23438984,6148.66879447,-31736.65532865,-1.809875605,-1.816179062,-1.233364913), +('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',2520.0,-20952.40702045,-7358.71507895,-33633.06643074,-0.948973031,-1.813594137,0.573893078), +('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',2640.0,-24273.48944134,-18637.15546906,-24633.27702390,0.064161440,-1.228537560,1.875728935), +('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',2760.0,-19057.55468077,-23148.29322082,-7269.38614178,1.500802809,0.195383037,2.879031237), +('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',2880.0,43.69305308,-8145.90299207,11634.57079913,3.780661682,5.105315423,0.714401345), +('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',0.0,-2715.28237486,-6619.26436889,-0.01341443,-1.008587273,0.422782003,7.385272942), +('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',120.0,-1816.87920942,-1835.78762132,6661.07926465,2.325140071,6.655669329,2.463394512), +('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',240.0,1483.17364291,5395.21248786,4448.65907172,2.560540387,4.039025766,-5.736648561), +('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',360.0,2801.25607157,5455.03931333,-3692.12865695,-0.595095864,-3.951923117,-6.298799125), +('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',480.0,411.09332812,-1728.99769152,-6935.45548810,-2.935970964,-6.684085058,1.492800886), +('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',600.0,-2506.52558454,-6628.98655094,-988.07784497,-1.390577189,-0.556164143,7.312736468), +('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',720.0,-2090.79884266,-2723.22832193,6266.13356576,1.992640665,6.337529519,3.411803080), +('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',840.0,1091.80560222,4809.88229503,5172.42897894,2.717483546,4.805518977,-5.030019896), +('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',960.0,2811.14062300,5950.65707171,-2813.23705389,-0.159662742,-3.121215491,-6.775341949), +('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',1080.0,805.72698304,-812.16627907,-7067.58483968,-2.798936020,-6.889265977,0.472770873), +('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',1200.0,-2249.59837532,-6505.84890714,-1956.72365062,-1.731234729,-1.528750230,7.096660885), +('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',1320.0,-2311.57375797,-3560.99112891,5748.16749600,1.626569751,5.890482233,4.293545048), +('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',1440.0,688.16056594,4124.87618964,5794.55994449,2.810973665,5.479585563,-4.224866316), +('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',1560.0,2759.94088230,6329.87271798,-1879.19518331,0.266930672,-2.222670878,-7.119390567), +('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',1680.0,1171.50677137,125.82053748,-7061.96626202,-2.605687852,-6.958489749,-0.556333225), +('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',1800.0,-1951.43708472,-6251.71945820,-2886.95472355,-2.024131483,-2.475214272,6.741537478), +('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',1920.0,-2475.70722288,-4331.90569958,5117.31234924,1.235823539,5.322743371,5.091281211), +('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',2040.0,281.46097847,3353.51057102,6302.87900650,2.840647273,6.047222485,-3.337085992), +('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',2160.0,2650.33118860,6584.33434851,-908.29027134,0.675457235,-1.274044972,-7.323921567), +('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',2280.0,1501.17226597,1066.31132756,-6918.71472952,-2.361891904,-6.889669974,-1.574718619), +('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',2400.0,-1619.73468334,-5871.14051991,-3760.56587071,-2.264093975,-3.376316601,6.254622256), +('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',2520.0,-2581.04202505,-5020.05572531,4385.92329047,0.829668458,4.645048038,5.789262667), +('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',2640.0,-119.22080628,2510.90620488,6687.45615459,2.807575712,6.496549689,-2.384136661), +('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',2760.0,2486.23806726,6708.18210028,80.43349581,1.057274905,-0.294294027,-7.384689123), +('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',2880.0,1788.42334580,1990.50530957,-6640.59337725,-2.074169091,-6.683381288,-2.562777776), +('28129','1 28129U 03058A 06175.57071136 -.00000104 00000-0 10000-3 0 459','2 28129 54.7298 324.8098 0048506 266.2640 93.1663 2.00562768 18443',0.0,21707.46412351,-15318.61752390,0.13551152,1.304029214,1.816904974,3.161919976), +('28129','1 28129U 03058A 06175.57071136 -.00000104 00000-0 10000-3 0 459','2 28129 54.7298 324.8098 0048506 266.2640 93.1663 2.00562768 18443',120.0,18616.75971861,3166.15177043,18833.41523210,-2.076122016,2.838457575,1.586210535), +('28129','1 28129U 03058A 06175.57071136 -.00000104 00000-0 10000-3 0 459','2 28129 54.7298 324.8098 0048506 266.2640 93.1663 2.00562768 18443',240.0,-3006.50596328,18522.20742011,18941.84078154,-3.375452789,1.032680773,-1.559324534), +('28129','1 28129U 03058A 06175.57071136 -.00000104 00000-0 10000-3 0 459','2 28129 54.7298 324.8098 0048506 266.2640 93.1663 2.00562768 18443',360.0,-21607.02086957,15432.59962630,206.62470309,-1.306049851,-1.817011568,-3.163725018), +('28129','1 28129U 03058A 06175.57071136 -.00000104 00000-0 10000-3 0 459','2 28129 54.7298 324.8098 0048506 266.2640 93.1663 2.00562768 18443',480.0,-18453.06134549,-3150.83256134,-18685.83030936,2.106017925,-2.860236337,-1.586151870), +('28129','1 28129U 03058A 06175.57071136 -.00000104 00000-0 10000-3 0 459','2 28129 54.7298 324.8098 0048506 266.2640 93.1663 2.00562768 18443',600.0,3425.11742384,-18514.73232706,-18588.67200557,3.394666340,-1.003072030,1.610061295), +('28129','1 28129U 03058A 06175.57071136 -.00000104 00000-0 10000-3 0 459','2 28129 54.7298 324.8098 0048506 266.2640 93.1663 2.00562768 18443',720.0,21858.23838148,-15101.51661554,387.34517048,1.247973967,1.856017403,3.161439948), +('28129','1 28129U 03058A 06175.57071136 -.00000104 00000-0 10000-3 0 459','2 28129 54.7298 324.8098 0048506 266.2640 93.1663 2.00562768 18443',840.0,18360.69935796,3506.55256762,19024.81678979,-2.122684184,2.830618605,1.537510677), +('28129','1 28129U 03058A 06175.57071136 -.00000104 00000-0 10000-3 0 459','2 28129 54.7298 324.8098 0048506 266.2640 93.1663 2.00562768 18443',960.0,-3412.84765409,18646.85269710,18748.00359987,-3.366815728,0.986039922,-1.607874972), +('28129','1 28129U 03058A 06175.57071136 -.00000104 00000-0 10000-3 0 459','2 28129 54.7298 324.8098 0048506 266.2640 93.1663 2.00562768 18443',1080.0,-21758.08331586,15215.44829478,-180.82181406,-1.250144680,-1.856490448,-3.163774870), +('28129','1 28129U 03058A 06175.57071136 -.00000104 00000-0 10000-3 0 459','2 28129 54.7298 324.8098 0048506 266.2640 93.1663 2.00562768 18443',1200.0,-18193.41290284,-3493.85876912,-18877.14757717,2.153326942,-2.852221264,-1.536617760), +('28129','1 28129U 03058A 06175.57071136 -.00000104 00000-0 10000-3 0 459','2 28129 54.7298 324.8098 0048506 266.2640 93.1663 2.00562768 18443',1320.0,3833.57386848,-18635.77026711,-18388.68722885,3.384748179,-0.955363841,1.658785020), +('28129','1 28129U 03058A 06175.57071136 -.00000104 00000-0 10000-3 0 459','2 28129 54.7298 324.8098 0048506 266.2640 93.1663 2.00562768 18443',1440.0,22002.20074562,-14879.72595593,774.32827099,1.191573619,1.894561165,3.159953047), +('28350','1 28350U 04020A 06167.21788666 .16154492 76267-5 18678-3 0 8894','2 28350 64.9977 345.6130 0024870 260.7578 99.9590 16.47856722116490',0.0,6333.08123128,-1580.82852326,90.69355720,0.714634423,3.224246550,7.083128132), +('28350','1 28350U 04020A 06167.21788666 .16154492 76267-5 18678-3 0 8894','2 28350 64.9977 345.6130 0024870 260.7578 99.9590 16.47856722116490',120.0,-3990.93845855,3052.98341907,4155.32700629,-5.909006188,-0.876307966,-5.039131404), +('28350','1 28350U 04020A 06167.21788666 .16154492 76267-5 18678-3 0 8894','2 28350 64.9977 345.6130 0024870 260.7578 99.9590 16.47856722116490',240.0,-603.55232010,-2685.13474569,-5891.70274282,7.572519907,-1.975656726,0.121722605), +('28350','1 28350U 04020A 06167.21788666 .16154492 76267-5 18678-3 0 8894','2 28350 64.9977 345.6130 0024870 260.7578 99.9590 16.47856722116490',360.0,4788.22345627,782.56169214,4335.14284621,-4.954509026,3.683346464,4.804645839), +('28350','1 28350U 04020A 06167.21788666 .16154492 76267-5 18678-3 0 8894','2 28350 64.9977 345.6130 0024870 260.7578 99.9590 16.47856722116490',480.0,-6291.84601644,1547.82790772,-453.67116498,-0.308625588,-3.341538574,-7.082659115), +('28350','1 28350U 04020A 06167.21788666 .16154492 76267-5 18678-3 0 8894','2 28350 64.9977 345.6130 0024870 260.7578 99.9590 16.47856722116490',600.0,4480.74573428,-3028.55200374,-3586.94343641,5.320920857,1.199736275,5.626350481), +('28350','1 28350U 04020A 06167.21788666 .16154492 76267-5 18678-3 0 8894','2 28350 64.9977 345.6130 0024870 260.7578 99.9590 16.47856722116490',720.0,-446.42460916,2932.28872588,5759.19389757,-7.561000245,1.550975493,-1.374970885), +('28350','1 28350U 04020A 06167.21788666 .16154492 76267-5 18678-3 0 8894','2 28350 64.9977 345.6130 0024870 260.7578 99.9590 16.47856722116490',840.0,-3713.79581831,-1382.66125130,-5122.45131136,6.090931626,-3.512629733,-3.467571746), +('28350','1 28350U 04020A 06167.21788666 .16154492 76267-5 18678-3 0 8894','2 28350 64.9977 345.6130 0024870 260.7578 99.9590 16.47856722116490',960.0,6058.32017522,-827.47406722,2104.04678651,-1.798403024,3.787067272,6.641439744), +('28350','1 28350U 04020A 06167.21788666 .16154492 76267-5 18678-3 0 8894','2 28350 64.9977 345.6130 0024870 260.7578 99.9590 16.47856722116490',1080.0,-5631.73659006,2623.70953644,1766.49125084,-3.216401578,-2.309140959,-6.788609120), +('28350','1 28350U 04020A 06167.21788666 .16154492 76267-5 18678-3 0 8894','2 28350 64.9977 345.6130 0024870 260.7578 99.9590 16.47856722116490',1200.0,2776.84991560,-3255.36941953,-4837.19667790,6.748135564,-0.193044825,4.005718698), +('28350','1 28350U 04020A 06167.21788666 .16154492 76267-5 18678-3 0 8894','2 28350 64.9977 345.6130 0024870 260.7578 99.9590 16.47856722116490',1320.0,1148.04430837,2486.07343386,5826.34075913,-7.420162295,2.589456382,0.356350006), +('28350','1 28350U 04020A 06167.21788666 .16154492 76267-5 18678-3 0 8894','2 28350 64.9977 345.6130 0024870 260.7578 99.9590 16.47856722116490',1440.0,-4527.90871828,-723.29199041,-4527.44608319,5.121674217,-3.909895427,-4.500218556), +('28623','1 28623U 05006B 06177.81079184 .00637644 69054-6 96390-3 0 6000','2 28623 28.5200 114.9834 6249053 170.2550 212.8965 3.79477162 12753',0.0,-11665.70902324,24943.61433357,25.80543633,-1.596228621,-1.476127961,1.126059754), +('28623','1 28623U 05006B 06177.81079184 .00637644 69054-6 96390-3 0 6000','2 28623 28.5200 114.9834 6249053 170.2550 212.8965 3.79477162 12753',120.0,-11645.35454950,979.37668356,5517.89500058,3.407743502,-5.183094988,-0.492983277), +('28623','1 28623U 05006B 06177.81079184 .00637644 69054-6 96390-3 0 6000','2 28623 28.5200 114.9834 6249053 170.2550 212.8965 3.79477162 12753',240.0,5619.19252274,19651.44862280,-7261.38496765,-2.013634213,3.106842861,0.284235517), +('28623','1 28623U 05006B 06177.81079184 .00637644 69054-6 96390-3 0 6000','2 28623 28.5200 114.9834 6249053 170.2550 212.8965 3.79477162 12753',360.0,-9708.68629714,26306.14553149,-1204.29478856,-1.824164290,-0.931909596,1.113419052), +('28623','1 28623U 05006B 06177.81079184 .00637644 69054-6 96390-3 0 6000','2 28623 28.5200 114.9834 6249053 170.2550 212.8965 3.79477162 12753',480.0,-14394.03162892,6659.30765074,5593.38345858,1.556522911,-4.681657614,0.296912248), +('28623','1 28623U 05006B 06177.81079184 .00637644 69054-6 96390-3 0 6000','2 28623 28.5200 114.9834 6249053 170.2550 212.8965 3.79477162 12753',600.0,7712.09476270,15565.72627434,-7342.40465571,-1.646800364,4.070313571,-0.109483081), +('28623','1 28623U 05006B 06177.81079184 .00637644 69054-6 96390-3 0 6000','2 28623 28.5200 114.9834 6249053 170.2550 212.8965 3.79477162 12753',720.0,-7558.36739603,27035.11367962,-2385.12054184,-1.999583791,-0.393409283,1.078093515), +('28623','1 28623U 05006B 06177.81079184 .00637644 69054-6 96390-3 0 6000','2 28623 28.5200 114.9834 6249053 170.2550 212.8965 3.79477162 12753',840.0,-15495.61862220,11550.15897828,5053.83178121,0.469277336,-4.029761073,0.679054742), +('28623','1 28623U 05006B 06177.81079184 .00637644 69054-6 96390-3 0 6000','2 28623 28.5200 114.9834 6249053 170.2550 212.8965 3.79477162 12753',960.0,9167.02568222,10363.65204210,-6871.52576042,-0.881621027,5.223361510,-0.740696297), +('28623','1 28623U 05006B 06177.81079184 .00637644 69054-6 96390-3 0 6000','2 28623 28.5200 114.9834 6249053 170.2550 212.8965 3.79477162 12753',1080.0,-5275.80272094,27151.78486008,-3494.50687216,-2.129609388,0.150196480,1.021038089), +('28623','1 28623U 05006B 06177.81079184 .00637644 69054-6 96390-3 0 6000','2 28623 28.5200 114.9834 6249053 170.2550 212.8965 3.79477162 12753',1200.0,-15601.37656145,15641.29379850,4217.03266850,-0.249183123,-3.405238557,0.888214503), +('28623','1 28623U 05006B 06177.81079184 .00637644 69054-6 96390-3 0 6000','2 28623 28.5200 114.9834 6249053 170.2550 212.8965 3.79477162 12753',1320.0,9301.05872300,3883.15265574,-5477.86477017,0.871447821,6.493677331,-1.885545282), +('28623','1 28623U 05006B 06177.81079184 .00637644 69054-6 96390-3 0 6000','2 28623 28.5200 114.9834 6249053 170.2550 212.8965 3.79477162 12753',1440.0,-2914.31065828,26665.20392758,-4511.09814335,-2.216261909,0.710067769,0.940691824), +('28626','1 28626U 05008A 06176.46683397 -.00000205 00000-0 10000-3 0 2190','2 28626 0.0019 286.9433 0000335 13.7918 55.6504 1.00270176 4891',0.0,42080.71852213,-2646.86387436,0.81851294,0.193105177,3.068688251,0.000438449), +('28626','1 28626U 05008A 06176.46683397 -.00000205 00000-0 10000-3 0 2190','2 28626 0.0019 286.9433 0000335 13.7918 55.6504 1.00270176 4891',120.0,37740.00085593,18802.76872802,3.45512584,-1.371035206,2.752105932,0.000336883), +('28626','1 28626U 05008A 06176.46683397 -.00000205 00000-0 10000-3 0 2190','2 28626 0.0019 286.9433 0000335 13.7918 55.6504 1.00270176 4891',240.0,23232.82515008,35187.33981802,4.98927428,-2.565776620,1.694193132,0.000163365), +('28626','1 28626U 05008A 06176.46683397 -.00000205 00000-0 10000-3 0 2190','2 28626 0.0019 286.9433 0000335 13.7918 55.6504 1.00270176 4891',360.0,2467.44290178,42093.60909959,5.15062987,-3.069341800,0.179976276,-0.000031739), +('28626','1 28626U 05008A 06176.46683397 -.00000205 00000-0 10000-3 0 2190','2 28626 0.0019 286.9433 0000335 13.7918 55.6504 1.00270176 4891',480.0,-18962.59052991,37661.66243819,4.04433258,-2.746151982,-1.382675777,-0.000197633), +('28626','1 28626U 05008A 06176.46683397 -.00000205 00000-0 10000-3 0 2190','2 28626 0.0019 286.9433 0000335 13.7918 55.6504 1.00270176 4891',600.0,-35285.00095313,23085.44402778,2.08711880,-1.683277908,-2.572893625,-0.000296282), +('28626','1 28626U 05008A 06176.46683397 -.00000205 00000-0 10000-3 0 2190','2 28626 0.0019 286.9433 0000335 13.7918 55.6504 1.00270176 4891',720.0,-42103.20138132,2291.06228893,-0.13274964,-0.166974816,-3.070104560,-0.000311007), +('28626','1 28626U 05008A 06176.46683397 -.00000205 00000-0 10000-3 0 2190','2 28626 0.0019 286.9433 0000335 13.7918 55.6504 1.00270176 4891',840.0,-37580.31858370,-19120.40485693,-2.02755702,1.394367848,-2.740341612,-0.000248591), +('28626','1 28626U 05008A 06176.46683397 -.00000205 00000-0 10000-3 0 2190','2 28626 0.0019 286.9433 0000335 13.7918 55.6504 1.00270176 4891',960.0,-22934.20761876,-35381.23870806,-3.16495932,2.580167539,-1.672360951,-0.000134907), +('28626','1 28626U 05008A 06176.46683397 -.00000205 00000-0 10000-3 0 2190','2 28626 0.0019 286.9433 0000335 13.7918 55.6504 1.00270176 4891',1080.0,-2109.90332389,-42110.71508198,-3.36507889,3.070935369,-0.153808390,-0.000005855), +('28626','1 28626U 05008A 06176.46683397 -.00000205 00000-0 10000-3 0 2190','2 28626 0.0019 286.9433 0000335 13.7918 55.6504 1.00270176 4891',1200.0,19282.77774728,-37495.59250598,-2.71861462,2.734400524,1.406220933,0.000103486), +('28626','1 28626U 05008A 06176.46683397 -.00000205 00000-0 10000-3 0 2190','2 28626 0.0019 286.9433 0000335 13.7918 55.6504 1.00270176 4891',1320.0,35480.60990600,-22779.03375285,-1.52841859,1.661210676,2.587414593,0.000168300), +('28626','1 28626U 05008A 06176.46683397 -.00000205 00000-0 10000-3 0 2190','2 28626 0.0019 286.9433 0000335 13.7918 55.6504 1.00270176 4891',1440.0,42119.96263499,-1925.77567263,-0.19827433,0.140521206,3.071541613,0.000179561), +('28872','1 28872U 05037B 05333.02012661 .25992681 00000-0 24476-3 0 1534','2 28872 96.4736 157.9986 0303955 244.0492 110.6523 16.46015938 10708',0.0,-6131.82730456,2446.52815528,-253.64211033,-0.144920228,0.995100963,7.658645067), +('28872','1 28872U 05037B 05333.02012661 .25992681 00000-0 24476-3 0 1534','2 28872 96.4736 157.9986 0303955 244.0492 110.6523 16.46015938 10708',5.0,-5799.24256134,2589.14811119,2011.54515100,2.325207364,-0.047125672,7.296234071), +('28872','1 28872U 05037B 05333.02012661 .25992681 00000-0 24476-3 0 1534','2 28872 96.4736 157.9986 0303955 244.0492 110.6523 16.46015938 10708',10.0,-4769.05061967,2420.46580562,4035.30855837,4.464585796,-1.060923209,6.070907874), +('28872','1 28872U 05037B 05333.02012661 .25992681 00000-0 24476-3 0 1534','2 28872 96.4736 157.9986 0303955 244.0492 110.6523 16.46015938 10708',15.0,-3175.45157340,1965.98738086,5582.12569607,6.049639376,-1.935777558,4.148607019), +('28872','1 28872U 05037B 05333.02012661 .25992681 00000-0 24476-3 0 1534','2 28872 96.4736 157.9986 0303955 244.0492 110.6523 16.46015938 10708',20.0,-1210.19024802,1281.54541294,6474.68172772,6.920746273,-2.580517337,1.748783868), +('28872','1 28872U 05037B 05333.02012661 .25992681 00000-0 24476-3 0 1534','2 28872 96.4736 157.9986 0303955 244.0492 110.6523 16.46015938 10708',25.0,896.73799533,447.12357305,6607.22400507,6.983396282,-2.925846168,-0.872655207), +('28872','1 28872U 05037B 05333.02012661 .25992681 00000-0 24476-3 0 1534','2 28872 96.4736 157.9986 0303955 244.0492 110.6523 16.46015938 10708',30.0,2896.99663534,-440.04738594,5954.92675486,6.211488246,-2.926949815,-3.433959806), +('28872','1 28872U 05037B 05333.02012661 .25992681 00000-0 24476-3 0 1534','2 28872 96.4736 157.9986 0303955 244.0492 110.6523 16.46015938 10708',35.0,4545.78970167,-1273.55952872,4580.16512984,4.656984233,-2.568711513,-5.638510954), +('28872','1 28872U 05037B 05333.02012661 .25992681 00000-0 24476-3 0 1534','2 28872 96.4736 157.9986 0303955 244.0492 110.6523 16.46015938 10708',40.0,5627.43299371,-1947.94282469,2634.16714930,2.464141047,-1.873985161,-7.195743032), +('28872','1 28872U 05037B 05333.02012661 .25992681 00000-0 24476-3 0 1534','2 28872 96.4736 157.9986 0303955 244.0492 110.6523 16.46015938 10708',45.0,5984.72318534,-2371.37691609,349.87996209,-0.121276950,-0.911981546,-7.859613894), +('28872','1 28872U 05037B 05333.02012661 .25992681 00000-0 24476-3 0 1534','2 28872 96.4736 157.9986 0303955 244.0492 110.6523 16.46015938 10708',50.0,5548.43325922,-2480.16469245,-1979.24314527,-2.763269534,0.199691915,-7.482796996), +('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',0.0,423.99295524,-6658.12256149,136.13040356,1.006373613,0.217309983,7.662587892), +('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',20.0,931.80883587,-1017.17852239,6529.19244527,-0.298847918,7.613891977,1.226399480), +('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',40.0,-83.44906141,6286.20208453,2223.49837161,-1.113515974,2.530970283,-7.219445568), +('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',60.0,-958.57681221,3259.26005348,-5722.63732467,-0.101225813,-6.735338321,-3.804851872), +('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',80.0,-255.25619985,-5132.59762974,-4221.27233118,1.077709303,-4.905938824,5.892521264), +('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',100.0,867.44295097,-5038.40402933,4256.73810533,0.479447535,5.032326446,5.857126248), +('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',120.0,559.16882013,3376.30587937,5699.22017391,-0.906749328,6.646149867,-3.852331832), +('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',140.0,-669.85184205,6196.00229484,-2281.95741770,-0.795804092,-2.752114827,-7.202478520), +('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',160.0,-784.20708019,-1278.53125553,-6449.19892596,0.636702380,-7.595425203,1.431090802), +('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',180.0,406.15811659,-6607.03115799,148.33021477,1.009818575,0.231843765,7.692047844), +('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',200.0,916.34911813,-884.08649248,6491.09810362,-0.302163049,7.669887109,1.084336909), +('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',220.0,-104.02490970,6304.31821405,1960.08739882,-1.108873823,2.259522809,-7.351147710), +('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',240.0,-944.61642849,2872.17248379,-5846.94103362,-0.051117686,-6.989747076,-3.413102600), +('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',260.0,-187.16569888,-5404.86163467,-3731.97057618,1.094696706,-4.412110995,6.326060952), +('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',280.0,884.59720467,-4465.74516163,4725.83632696,0.380656028,5.691554046,5.303910983), +('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',300.0,446.40767236,4086.66839620,5093.05596650,-0.982424447,6.072965199,-4.791630682), +('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',320.0,-752.24467495,5588.35473301,-3275.04092573,-0.661161370,-4.016290740,-6.676898026), +('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',340.0,-643.72872525,-2585.02528560,-5923.01306608,0.807922142,-7.171597814,3.041115058), +('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',360.0,584.40295819,-6202.35605817,1781.00536019,0.869250450,2.226927514,7.471676765), +('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',380.0,779.59211765,1100.73728301,6311.59529480,-0.599552305,7.721032522,-1.275153027), +('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',400.0,-403.03155588,6399.18000837,-364.12735875,-1.008861924,-0.516636615,-7.799812287), +('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',420.0,-852.93910071,192.65232023,-6322.47054784,0.396006194,-7.882964919,-0.289331517), +('29238','1 29238U 06022G 06177.28732010 .00766286 10823-4 13334-2 0 101','2 29238 51.5595 213.7903 0202579 95.2503 267.9010 15.73823839 1061',0.0,-5566.59512819,-3789.75991159,67.60382245,2.873759367,-3.825340523,6.023253926), +('29238','1 29238U 06022G 06177.28732010 .00766286 10823-4 13334-2 0 101','2 29238 51.5595 213.7903 0202579 95.2503 267.9010 15.73823839 1061',120.0,4474.27915495,-1447.72286142,4619.83927235,4.712595822,5.668306153,-2.701606741), +('29238','1 29238U 06022G 06177.28732010 .00766286 10823-4 13334-2 0 101','2 29238 51.5595 213.7903 0202579 95.2503 267.9010 15.73823839 1061',240.0,1922.17712474,5113.01138342,-4087.08470203,-6.490769651,-0.522350158,-3.896001154), +('29238','1 29238U 06022G 06177.28732010 .00766286 10823-4 13334-2 0 101','2 29238 51.5595 213.7903 0202579 95.2503 267.9010 15.73823839 1061',360.0,-6157.93546882,-2094.70798790,-1941.63730960,0.149900661,-5.175192523,5.604262034), +('29238','1 29238U 06022G 06177.28732010 .00766286 10823-4 13334-2 0 101','2 29238 51.5595 213.7903 0202579 95.2503 267.9010 15.73823839 1061',480.0,2482.64052411,-3268.45944555,5146.38006190,6.501814698,4.402848754,-0.350943511), +('29238','1 29238U 06022G 06177.28732010 .00766286 10823-4 13334-2 0 101','2 29238 51.5595 213.7903 0202579 95.2503 267.9010 15.73823839 1061',600.0,4036.26455287,4827.43347201,-2507.99063955,-5.184409515,1.772280695,-5.331390168), +('29238','1 29238U 06022G 06177.28732010 .00766286 10823-4 13334-2 0 101','2 29238 51.5595 213.7903 0202579 95.2503 267.9010 15.73823839 1061',720.0,-5776.81371622,-118.64155319,-3641.22052418,-2.539917207,-5.622701582,4.403125405), +('29238','1 29238U 06022G 06177.28732010 .00766286 10823-4 13334-2 0 101','2 29238 51.5595 213.7903 0202579 95.2503 267.9010 15.73823839 1061',840.0,67.98699487,-4456.49213473,4863.71794283,7.183809420,2.418917791,2.015642495), +('29238','1 29238U 06022G 06177.28732010 .00766286 10823-4 13334-2 0 101','2 29238 51.5595 213.7903 0202579 95.2503 267.9010 15.73823839 1061',960.0,5520.62207038,3782.38203554,-596.73193161,-3.027966069,3.754152525,-6.013506363), +('29238','1 29238U 06022G 06177.28732010 .00766286 10823-4 13334-2 0 101','2 29238 51.5595 213.7903 0202579 95.2503 267.9010 15.73823839 1061',1080.0,-4528.05104455,1808.46273329,-4816.99727762,-4.808419763,-5.185789345,2.642104494), +('29238','1 29238U 06022G 06177.28732010 .00766286 10823-4 13334-2 0 101','2 29238 51.5595 213.7903 0202579 95.2503 267.9010 15.73823839 1061',1200.0,-2356.61468078,-4852.51202272,3856.53816184,6.688446735,0.118520958,4.021854210), +('29238','1 29238U 06022G 06177.28732010 .00766286 10823-4 13334-2 0 101','2 29238 51.5595 213.7903 0202579 95.2503 267.9010 15.73823839 1061',1320.0,6149.65800134,2173.59423261,1369.29488732,-0.345832777,5.109857861,-5.842951828), +('29238','1 29238U 06022G 06177.28732010 .00766286 10823-4 13334-2 0 101','2 29238 51.5595 213.7903 0202579 95.2503 267.9010 15.73823839 1061',1440.0,-2629.55011449,3400.98040158,-5344.38217129,-6.368548448,-3.998963509,0.577253064), +('88888','1 88888U 80275.98708465 .00073094 13844-3 66816-4 0 87','2 88888 72.8435 115.9689 0086731 52.6988 110.5714 16.05824518 1058',0.0,2328.96975262,-5995.22051338,1719.97297192,2.912073281,-0.983417956,-7.090816210), +('88888','1 88888U 80275.98708465 .00073094 13844-3 66816-4 0 87','2 88888 72.8435 115.9689 0086731 52.6988 110.5714 16.05824518 1058',120.0,1020.69234558,2286.56260634,-6191.55565927,-3.746543902,6.467532721,1.827985678), +('88888','1 88888U 80275.98708465 .00073094 13844-3 66816-4 0 87','2 88888 72.8435 115.9689 0086731 52.6988 110.5714 16.05824518 1058',240.0,-3226.54349155,3503.70977525,4532.80979343,1.000992116,-5.788042888,5.162585826), +('88888','1 88888U 80275.98708465 .00073094 13844-3 66816-4 0 87','2 88888 72.8435 115.9689 0086731 52.6988 110.5714 16.05824518 1058',360.0,2456.10706533,-6071.93855503,1222.89768554,2.679390040,-0.448290811,-7.228792155), +('88888','1 88888U 80275.98708465 .00073094 13844-3 66816-4 0 87','2 88888 72.8435 115.9689 0086731 52.6988 110.5714 16.05824518 1058',480.0,787.16457349,2719.91800946,-6043.86662024,-3.759883839,6.277439314,2.397897864), +('88888','1 88888U 80275.98708465 .00073094 13844-3 66816-4 0 87','2 88888 72.8435 115.9689 0086731 52.6988 110.5714 16.05824518 1058',600.0,-3110.97648029,3121.73026235,4878.15217035,1.244916056,-6.124880425,4.700576353), +('88888','1 88888U 80275.98708465 .00073094 13844-3 66816-4 0 87','2 88888 72.8435 115.9689 0086731 52.6988 110.5714 16.05824518 1058',720.0,2567.56229695,-6112.50383922,713.96374435,2.440245751,0.098109002,-7.319959258), +('88888','1 88888U 80275.98708465 .00073094 13844-3 66816-4 0 87','2 88888 72.8435 115.9689 0086731 52.6988 110.5714 16.05824518 1058',840.0,556.05661780,3144.52288201,-5855.34636178,-3.754660143,6.044752775,2.957941672), +('88888','1 88888U 80275.98708465 .00073094 13844-3 66816-4 0 87','2 88888 72.8435 115.9689 0086731 52.6988 110.5714 16.05824518 1058',960.0,-2982.47940539,2712.61663711,5192.32330472,1.475566773,-6.427737014,4.202420227), +('88888','1 88888U 80275.98708465 .00073094 13844-3 66816-4 0 87','2 88888 72.8435 115.9689 0086731 52.6988 110.5714 16.05824518 1058',1080.0,2663.08964352,-6115.48290885,196.40072866,2.196121564,0.652415093,-7.362824152), +('88888','1 88888U 80275.98708465 .00073094 13844-3 66816-4 0 87','2 88888 72.8435 115.9689 0086731 52.6988 110.5714 16.05824518 1058',1200.0,328.54999674,3557.09490552,-5626.21427211,-3.731193288,5.769341172,3.504058731), +('88888','1 88888U 80275.98708465 .00073094 13844-3 66816-4 0 87','2 88888 72.8435 115.9689 0086731 52.6988 110.5714 16.05824518 1058',1320.0,-2842.06876757,2278.42343492,5472.33437150,1.691852635,-6.693216335,3.671022712), +('88888','1 88888U 80275.98708465 .00073094 13844-3 66816-4 0 87','2 88888 72.8435 115.9689 0086731 52.6988 110.5714 16.05824518 1058',1440.0,2742.55398832,-6079.67009123,-326.39012649,1.948497651,1.211072678,-7.356193131); + +-- Verify we loaded all 518 vectors +SELECT count(*) AS vectors_loaded FROM vallado_vectors; + +-- Materialize propagation results (avoid recomputing per query) +CREATE TEMP TABLE vallado_results AS +SELECT + v.satnum, + v.tsince_min, + sgp4_propagate_safe( + tle_from_lines(v.tle_line1, v.tle_line2), + _vallado_jd_plus_min( + tle_epoch(tle_from_lines(v.tle_line1, v.tle_line2)), + v.tsince_min + ) + ) AS eci, + v.ref_x, v.ref_y, v.ref_z, + v.ref_vx, v.ref_vy, v.ref_vz +FROM vallado_vectors v; + +-- Summary: all 518 must propagate; 434 match at tight tolerance. +-- These numbers are the regression baseline for Bill Gray's sat_code. +SELECT + count(*) AS total, + count(*) FILTER (WHERE eci IS NOT NULL) AS propagated, + count(*) FILTER (WHERE eci IS NOT NULL + AND greatest(abs(eci_x(eci) - ref_x), + abs(eci_y(eci) - ref_y), + abs(eci_z(eci) - ref_z)) < 1e-4 + AND greatest(abs(eci_vx(eci) - ref_vx), + abs(eci_vy(eci) - ref_vy), + abs(eci_vz(eci) - ref_vz)) < 1e-7 + ) AS tight_pass, + round(max(CASE WHEN eci IS NOT NULL THEN greatest( + abs(eci_x(eci) - ref_x), + abs(eci_y(eci) - ref_y), + abs(eci_z(eci) - ref_z) + ) END)::numeric, 8) AS worst_pos_km, + round(max(CASE WHEN eci IS NOT NULL THEN greatest( + abs(eci_vx(eci) - ref_vx), + abs(eci_vy(eci) - ref_vy), + abs(eci_vz(eci) - ref_vz) + ) END)::numeric, 10) AS worst_vel_kms +FROM vallado_results; + +-- Per-satellite breakdown: position vs velocity pass counts. +-- Satellites with worst_pos > 0.1 km have known implementation differences +-- vs Vallado's AFSPC mode (see header comments). +SELECT + satnum, + count(*) AS vectors, + count(*) FILTER (WHERE eci IS NOT NULL + AND greatest(abs(eci_x(eci) - ref_x), + abs(eci_y(eci) - ref_y), + abs(eci_z(eci) - ref_z)) < 1e-4 + ) AS pos_pass, + count(*) FILTER (WHERE eci IS NOT NULL + AND greatest(abs(eci_vx(eci) - ref_vx), + abs(eci_vy(eci) - ref_vy), + abs(eci_vz(eci) - ref_vz)) < 1e-7 + ) AS vel_pass, + count(*) FILTER (WHERE eci IS NULL) AS errors, + round(max(CASE WHEN eci IS NOT NULL THEN greatest( + abs(eci_x(eci) - ref_x), + abs(eci_y(eci) - ref_y), + abs(eci_z(eci) - ref_z) + ) END)::numeric, 6) AS worst_pos_km +FROM vallado_results +GROUP BY satnum +ORDER BY satnum; + +-- Clean up +DROP FUNCTION _vallado_jd_plus_min(float8, float8);