diff --git a/.gitignore b/.gitignore index bb31686..505a571 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,13 @@ pkg/ *.log *.tmp .claude/settings.local.json + +# Python bytecode +__pycache__/ +*.pyc + +# Saleae captures +*.sal + +# ...but do keep the archived Logic 2 captures +!data/*.sal diff --git a/HANDOFF.md b/HANDOFF.md new file mode 100644 index 0000000..8cb899b --- /dev/null +++ b/HANDOFF.md @@ -0,0 +1,223 @@ +# Handoff — Caesium accuracy investigation + +**Date:** 2026-08-30. Written to resume this work in a fresh session or on +another machine. Self-contained: all key numbers are inline, because the +`report_*.log` files are gitignored (`*.log`) and will NOT travel with the repo. + +Related: [HWTIMESTAMPING.md](HWTIMESTAMPING.md) (design sketch, conditional on +the outcome below), [report_20260830.log](report_20260830.log) (full data, +local only), [TESTING.md](TESTING.md) (how the chrony soak works). + +--- + +## RESOLVED 2026-08-31 + +**`E_c` = +5.07 us** measured over 600 s with a Saleae Logic 8 against the +GPIO33/32 validation pulse. Caesium's served time tracks its own PPS to five +microseconds — 160x too small to explain 0.81 ms. **Hypothesis (b) is dead; +>=0.56 ms is WAN asymmetry (a).** Full method and numbers in +[TIMEBASE.md](TIMEBASE.md). The section below is retained as the record of what +the question was and why it was shaped this way. + +--- + +## The one open question + +Caesium reads **0.81 ms behind** the internet stratum-1 consensus. That gap +**cannot be attributed from the endpoints** — two equations, three unknowns. +Two hypotheses fit the data identically: + +- **(a)** Shared-segment WAN asymmetry of ≥1.12 ms upstream-slower. +- **(b)** Caesium genuinely running 0.78 ms slow. + +Everything below exists to distinguish these two. + +The device's contribution is capped at **0.25 ms** by `|bias| ≤ delta/2` — an +airtight inequality, since all six un-stamped legs are non-negative durations +and the measured round trip is 0.504 ms. So (b) has no available mechanism... +**provided** the GPS time base is faithful, which is the one thing never +actually measured. That assumption is the weakest link in the whole chain, and +closing it is the next action. + +--- + +## Setup + +| Thing | Value | +|---|---| +| Caesium | `192.168.71.54`, `caesium.ubnt.local`, ESP32-PoE-ISO + u-blox NEO-M9N | +| Measuring host | `serv1` — `192.168.75.3/22`, `eno1` (e1000e), chrony 4.2, Lenovo ThinkServer TS140 | +| Path | **Routed, not switched** — Caesium is outside the /22, via `192.168.72.1` | +| Client NIC | Hardware timestamping available and unused (`hwtimestamp eno1`) | + +--- + +## Key numbers (28.8 days, 4119 samples, 2026-08-02 → 08-31) + +| Quantity | Value | +|---|---| +| Caesium offset (self-referential — see gotcha 1) | median +0.001 ms, sd 0.103 ms | +| Independent stratum-1 sources vs local clock | +0.74 … +0.82 ms (NIST ×3, Google ×2) | +| NTP round-trip floor (kernel-stamped) | 0.504 ms | +| ICMP round-trip floor to same device | 0.407 ms | +| Stamped server processing (T3−T2) | 23.7 µs | +| Un-stamped ESP32 latency (`s_rx + s_tx`) | ~390 µs | +| `s_tx` lower bound (from NTP−ICMP gap) | ≥ ~100 µs | +| Estimated device bias `½(s_rx − s_tx)` | +95 µs (range −195 … +95) | +| Jitter (chrony regression) | 0.024 ms | +| Differential, April vs August | 0.97 ms → 0.81 ms (**stable**) | + +--- + +## Ruled out (with evidence — do not re-litigate) + +- **Thermal.** Offset by local hour varies 0.128 ms peak-to-peak over 28.8 days + with no coherent daily cycle. Structurally impossible anyway: thermal drift is + a frequency effect and PPS re-disciplines every second. +- **Interpolation-rate error.** 400 live queries swept across sub-second phase: + offset flat, slope +15 µs per full second (~15 ppm residual). The EMA crystal + calibration works. +- **Leap seconds.** LI=`N` on all 4119 samples. Leap errors are 1 s anyway. +- **Aging / drift.** Differential stable across 5 months, a config change, a + reboot, and different server IPs. +- **The switch.** Queueing is non-negative in both directions and chrony's + clock filter selects minimum-delay samples, so bursty gear adds variance that + gets rejected — it cannot produce a systematic one-directional bias. The + router forwards cleanly (mdev 0.041 ms through it). +- **The GPS receiver itself.** NEO-M9N PPS is spec'd ~30 ns RMS — four orders of + magnitude below the effect. +- **IEEE 1588 as an option.** The original ESP32 EMAC has **no** timestamp unit. + Espressif (esp-idf #13423): *"IEEE1588 is not supported by ESP32. The ESP32 TRM + used to list it as supported feature in past but it was a mistake."* +- **The 310 ms excursion on 2026-08-20.** That was the measuring host rebooting. + All sources saw +308…+312 ms simultaneously; Caesium was the tightest. + +--- + +## NEXT ACTION: time-base validation pulse + +> **Status 2026-08-31 — DONE. `E_c` = +5.07 us over 600 pulses.** Landed in +> row 1 of the decision tree below: the served time tracks the PPS, so +> `0.81 - 0.25` = **>=0.56 ms is WAN**. The pulse lives in `src/main.cpp` +> behind `-D TIMEBASE_PULSE` (env `esp32-poe-iso-timebase`) and drives GPIO33 +> and GPIO32 together. Method, tooling and full numbers in +> [TIMEBASE.md](TIMEBASE.md). + +Cheapest, sharpest, and needs no purchases beyond a ~$15 logic analyzer. +Measures `E_c` — whether the *served* time actually tracks the PPS edge. + +Add a debug pulse fired from the same time base that serves NTP: + +```c +#define TIMEBASE_PIN 33 // free on EXT header; NOT bootstrap/SD/input-only + // avoid GPIO17 — Ethernet clock, not led out + +// setup(): pinMode(TIMEBASE_PIN, OUTPUT); + +// loop(): +static uint32_t lastPulseSec = 0; +TimeState s; +getTimeStateAtomic(s); +if (s.valid && s.epochSec != lastPulseSec) { + int64_t target = s.ppsTimeMicros + s.usPerPps; // one *served* second after last PPS + int64_t delta = target - esp_timer_get_time(); + if (delta > 0 && delta < 2000) { // only arm when close + lastPulseSec = s.epochSec; + while (esp_timer_get_time() < target) { } // busy-wait, sub-us + digitalWrite(TIMEBASE_PIN, HIGH); + esp_rom_delay_us(50); + digitalWrite(TIMEBASE_PIN, LOW); + } +} +``` + +**Probe:** GPIO16 (PPS) on ch1, GPIO33 on ch2. Trigger ch1 rising. Measure +edge-to-edge. + +**Reading it:** the pulse fires one *served* second after the last PPS; the next +*real* PPS arrives one true second after it. ISR latency makes `ppsTimeMicros` +late, which makes the pulse late **and** the served time slow by the same amount. + +> **Pulse landing after the PPS edge = Caesium running slow by exactly that much.** + +Caveats: `digitalWrite` adds ~1 µs constant overhead (use direct register writes +on a pin <32 for sub-µs). Blocks `loop()` up to 2 ms/sec — harmless, NTP is +served from `tcpip_thread`, but keep it to a debug build. + +### Decision tree + +| Result | Meaning | Then | +|---|---|---| +| Pulse within ~10 µs of PPS | `E_c ≈ 0` confirmed | 0.81 − 0.25 = **≥0.56 ms is WAN**. Investigation closed. HWTIMESTAMPING.md becomes optional polish. | +| Pulse ~800 µs late | Device time base IS the culprit | WAN theory dead. Debug PPS↔epoch pairing and interpolation. | +| Something in between | Partial | Need the local reference clock (parked item below). | + +--- + +## Parked + +**Local GPS reference on the measuring host** (~$60–100) — only needed if the +pulse test is inconclusive. The TS140 enumerates a real 16550A at `0x3F8` +(`ttyS0`, idle, verified silent), `pps_ldisc`/`pps_gpio` modules present, chrony +has `+REFCLOCK`. Plan: GPS PPS → MAX3232 → DCD, `ldattach PPS /dev/ttyS0`, +`refclock PPS /dev/pps0 refid GPS`. Check first whether the port is brought out +to a rear DB9 or needs a COM-header bracket. Prefer a **timing-grade** module +(NEO-M8T / LEA-M8T) or a different chipset, for independence from the M9N. + +**Shared-PPS between the two machines — ABANDONED.** Would buy ~30 ns of +common-mode cancellation against an 800,000 ns question, at the cost of a 5.5 m +run, ground-loop risk against the PoE-**ISO** isolation, and level shifting. +Not worth it. Also: never put a microcontroller in a PPS path — it *regenerates* +the edge with µs-scale variable latency. Buffer, never regenerate. + +**`hwtimestamp eno1`** — one line, works today, sharpens all future measurement +by 10–20 µs and cuts jitter. Note the date when enabling; it shifts measured +delays and would otherwise look like a device change in the logs. + +**`setDynamicModel(DYN_MODEL_STATIONARY)`** — not currently set anywhere in +`main.cpp`; the receiver runs the default portable model. Correct setting for a +fixed install. Sub-µs improvement, free. + +--- + +## Gotchas that would silently ruin things + +1. **`prefer` on the Caesium line makes the measurement circular.** `chrony.conf` + currently has `server 192.168.71.54 iburst prefer`, so the system clock is + disciplined TO Caesium and its measured offset is ~0 by construction. Remove + `prefer` before using any local reference clock, or you will measure Caesium + against itself again. +2. **A one-sided timestamping fix makes accuracy WORSE.** `s_rx` and `s_tx` + currently point in opposite directions and partially cancel. Fixing TX alone + takes the bias from ~+95 µs to ~+145 µs. See HWTIMESTAMPING.md. Fix the + larger leg (`s_rx`) first, or both, never TX alone. +3. **Never calibrate against an internet reference.** Tuning a constant until + the NIST comparison reads zero would bake ≥1.12 ms of ISP asymmetry into a + device whose LAN clients never traverse that path. +4. **Google is not a usable reference.** `216.239.35.0` is anycast and its NTP + path does not match its ICMP path: ICMP min 2.22 ms vs NTP peer delay + 13.78 ms. NIST is consistent by the same check (5.40 vs 6.83 ms). Effective + independent references: **two organisations, not five sources.** + +--- + +## Config changes already made (2026-08-30) + +- `/etc/chrony/sources.d/caesium-ntp-server.sources` — removed the `noselect` + Caesium entry (it duplicated the `chrony.conf` one and chrony was already + discarding it). File is now empty; original saved as `.bak` alongside. + `nist.sources` untouched. No chronyd restart was needed. +- Nothing else changed. No firmware modified. + +## Repo files + +| File | Purpose | Tracked? | +|---|---|---| +| `HANDOFF.md` | This file | yes | +| `HWTIMESTAMPING.md` | Design sketch, conditional on the pulse test | yes | +| `report_20260830.log` | Full 28.8-day analysis + notes | **no — `*.log` ignored** | +| `report_20260401.log` | April run, for comparison | **no — `*.log` ignored** | +| `analyze_chrony.py` | Log analyser. Only reads un-rotated logs — concatenate `.1`–`.4` first or you get ~18 h instead of 29 days | yes | + +To resume on another machine, commit `HANDOFF.md` and `HWTIMESTAMPING.md`. The +reports will not travel; every number needed is reproduced above. diff --git a/HWTIMESTAMPING.md b/HWTIMESTAMPING.md new file mode 100644 index 0000000..5091bc3 --- /dev/null +++ b/HWTIMESTAMPING.md @@ -0,0 +1,286 @@ +# Hardware Timestamping — Design Notes + +**Status: design sketch. None of this is built.** Items marked **[UNKNOWN]** are +genuinely unresolved and need investigation before anyone plans around them. + +Measurement background is in [report_20260830.log](report_20260830.log). + +## Why bother + +Caesium currently timestamps inside the lwIP UDP callback. That is as close to +the wire as the Arduino/lwIP stack allows, but it is not close to the wire. +Measured on 2026-08-30: + +| Quantity | Value | +|---|---| +| NTP round-trip floor (chrony, kernel-stamped client) | 0.504 ms | +| ICMP round-trip floor to the same device | 0.407 ms | +| Stamped server processing (T3 − T2) | 23.7 µs | +| Estimated network share (switch + router, both ways) | ~0.10 ms | +| **Remainder inside the ESP32** | **~0.39 ms** | + +That ~0.39 ms is time the packet spends inside the device *outside* the two +timestamps — invisible to NTP, and therefore uncorrectable by the client. + +## The six legs + +NTP can only see what happens between T2 and T3. Six legs are invisible: + +| Leg | Meaning | Effect on measured offset | +|---|---|---| +| `c_tx` | client stamps T1 → packet actually on wire | server looks **ahead** | +| `d_fwd` | forward network transit | server looks **ahead** | +| `s_rx` | packet on server wire → server stamps T2 | server looks **ahead** | +| *`s_proc`* | *T2 → T3 — the only **stamped** leg* | *cancels* | +| `s_tx` | server stamps T3 → packet actually on wire | server looks **behind** | +| `d_rev` | reverse network transit | server looks **behind** | +| `c_rx` | packet on client wire → client stamps T4 | server looks **behind** | + +With `E` the server's true clock error: + +``` +theta = E + ½[(c_tx + d_fwd + s_rx) − (s_tx + d_rev + c_rx)] +delta = (c_tx + d_fwd + s_rx) + (s_tx + d_rev + c_rx) +``` + +So **bias = ½(upstream legs − downstream legs)**, and `|bias| ≤ delta/2` exactly. +`s_proc` drops out entirely — separate T2/T3 stamps are what buy that, so the +23.7 µs of packet handling already costs nothing. + +**Only the difference matters, never the magnitude.** Two legs of 10 ms each +produce zero bias. This is the single most important property of the system and +it drives everything below. + +## The asymmetry trap — read this before writing any code + +Because bias is a *difference*, fixing one leg while leaving the other is not a +partial win. It can be a net loss. + +Best current estimate of the split — note that only the **sum** (~390 µs) is +measured. `s_tx ≥ ~100 µs` is a lower bound derived from the NTP-minus-ICMP gap +(0.504 − 0.407 ms), since lwIP's `icmp_input` builds its echo reply in the +received pbuf while our TX path does `pbuf_alloc` + `memcpy` + `udp_sendto`. +The individual values are **[UNKNOWN]**: + +| Scenario | `s_rx` | `s_tx` | bias = ½(`s_rx` − `s_tx`) | +|---|---|---|---| +| Today | ~290 µs | ~100 µs | **+95 µs** | +| **TX fixed only** | ~290 µs | ~0 | **+145 µs — WORSE THAN TODAY** | +| RX fixed only | ~0 | ~100 µs | **−50 µs** | +| Both fixed | ~0 | ~0 | **~0** | + +The legs currently point in opposite directions and partially cancel. Some of +today's accuracy is *luck*. Removing the smaller leg destroys the cancellation +and leaves the larger one fully exposed. + +**Hard rules:** + +1. Never ship a one-sided fix without measuring the resulting bias against a + local reference. +2. If only one leg can be fixed, fix the **larger** one. Present evidence says + that is `s_rx`. +3. A calibration constant applied to the stamped value is the escape hatch if + a leg cannot be shrunk — see "Calibration" below. + +The perverse consequence: the TX side is the one people reach for first, because +interleaved mode is the interesting standards work. It is also the side that +makes things worse on its own. + +## What is local, and what is on the wire + +The protocol question, answered in three parts: + +**1. Client-side timestamping — purely local.** `SO_TIMESTAMPING` on the socket, +NIC or kernel stamps, value returned via control message. Nothing on the wire +changes. Any NTP server works unmodified. This is what `hwtimestamp eno1` in +`chrony.conf` turns on, and this machine's e1000e already supports it +(`hardware-transmit`, `hardware-receive`, RX filter mode `all`). + +**2. Server-side RX timestamping — also purely local.** The server stamps its +own receive as close to the wire as it can and puts that value in the T2 field. +Wire format unchanged, no negotiation, works with every existing client. **This +is free standards-wise and it is the larger leg.** + +**3. Server-side TX timestamping — needs a protocol mode.** You cannot put a +packet's own departure time inside that packet. This is not an implementation +limitation; it is causality. Hence interleaved mode. + +So: two thirds local configuration, one third a standardized mode. Not a new +protocol, and not purely local either. + +## RFC 9769 — NTP Interleaved Modes + +Published May 2025, updates RFC 5905. Chrony implements it as `xleave`, and the +chrony on this network (4.2) supports it. + +The shape is friendlier than expected: + +- **No packet header change, no extension fields.** The 48-byte header is + untouched. The mode is expressed by assigning different *values* to the + origin and transmit timestamp fields. +- **Implicit negotiation.** No capability exchange, no version bump. +- **Graceful fallback.** A client asking for interleaved gets a basic-mode + response from a server that does not implement it, or from one that has lost + its state. Chrony's docs are explicit that interleaved is compatible with + basic-only servers. + +Server algorithm, per the RFC: + +- Keep **pairs of local receive and transmit timestamps** per client. The RFC + recommends a fixed-length queue, dropping old entries, keyed by IP address + but *not* by port. +- Detect an interleaved request when both: the request's receive timestamp is + not equal to its transmit timestamp, **and** the request's origin timestamp + matches the local receive timestamp of a previous request from that client. +- Interleaved response fields: origin = receive timestamp of this request; + receive = receive timestamp of this request; transmit = actual transmission + time of the *previous* response whose receive timestamp equals this request's + origin timestamp. +- A server **MUST NOT** send a packet whose transmit timestamp equals its + receive timestamp — that equality is what makes detection work. +- Transmit and receive timestamps in responses must be unique. +- The server **SHOULD** save the new timestamp pair even when it could not + answer in interleaved mode. + +Clients cannot open in interleaved mode; they must see one basic response +first, then echo the server's receive timestamp in their origin field. + +## Hardware reality: this board cannot do IEEE 1588 + +The original ESP32 has **no 1588 timestamp unit in the EMAC**. Espressif's +kostaond, in esp-idf issue #13423: *"ESP32 does not support hardware time +stamping in MAC module"* and *"IEEE1588 is not supported by ESP32. The ESP32 TRM +used to list it as supported feature in past but it was a mistake."* Only the +ESP32-P4 has the silicon. This is why esp32.com thread t=30889 finds +`TxTimestampStatus` permanently reading 0. + +There is also no separate NIC to patch. The MAC is on the ESP32 die; the +LAN8720A is a PHY with no CPU and no firmware. Everything is ordinary C in our +own binary — no vendor dependency, no second flashing step. + +**So "hardware timestamping" here means ISR-boundary timestamping**, not 1588. +The name is kept because the goal and the standards shape are identical: get the +stamp as close to the wire as the silicon allows. + +Realistic floor: stamping in the EMAC RX ISR and the TX-done ISR reduces both +legs to ISR latency — single-digit µs — leaving MAC/DMA/PHY time of roughly +10–20 µs. Against ~390 µs today, that is the large majority of the available +win without any 1588 hardware. + +## Proposed architecture + +``` +EMAC RX ISR -- stamp here, not in the UDP callback + | carry timestamp alongside the frame + v +emac_rx task -> tcpip_thread -> udp_recv callback + | build response; T2 = the ISR stamp + v +udp_sendto + | +EMAC TX-done ISR -- stamp actual departure, store in client table + | + +--> served as the transmit timestamp of the NEXT response (RFC 9769) +``` + +Layers that need patching: + +| Layer | Change | Difficulty | +|---|---|---| +| `emac_esp32` RX ISR | capture `esp_timer_get_time()`, attach to frame | **[UNKNOWN]** — how to carry it up without a custom pbuf field | +| `emac_esp32` TX path | hook TX-done, stamp, correlate to the packet just sent | **[UNKNOWN]** — is TX-done per-descriptor and identifiable? | +| `ntp.cpp` | use ISR stamp for T2; client state table; RFC 9769 detect/respond | tractable | +| build system | `framework = arduino` ships `esp_eth` as a **precompiled `.a`** | move to `framework = espidf`, Arduino as component | + +The build-system change is the real cost of entry, not the timestamping itself. + +**[UNKNOWN]** Whether the RX timestamp can be carried up to the UDP callback +without forking lwIP's pbuf. Options not yet evaluated: a side-channel ring +buffer keyed by frame, a custom pbuf, or `LWIP_PBUF_CUSTOM_DATA` if the build +exposes it. + +## Client state table + +The ESP32 must keep per-client `(receive, transmit)` timestamp pairs. Sizing: + +- 16 bytes per pair plus a key. A 32-entry table is ~1 KB — trivial for this + device, and 32 concurrent NTP clients is far beyond a home LAN. +- Keyed by IP, not port, per the RFC. +- Fixed-length queue, evict oldest. +- **NAT caveat** (from chrony's docs): multiple clients behind one address share + a table entry and clobber each other, which silently degrades them to basic + mode. Acceptable on a LAN; worth a debug counter. + +Losing state is safe — it degrades to basic mode, which is exactly today's +behaviour. + +## Reference points — a subtle trap **[UNKNOWN]** + +Hardware 1588 units typically stamp at the start-of-frame delimiter. An ISR +fires on DMA completion, i.e. at **end of frame**. Those differ by the frame +serialization time — about 7.2 µs for a 114-byte frame at 100 Mbps. + +If our stamps are end-of-frame and the client's NIC stamps at SFD, each leg +picks up a fixed offset, and the two do not obviously cancel. This is small +relative to the ~95 µs being fixed, but it becomes the new floor, and it is +precisely the class of fixed asymmetry this whole exercise exists to remove. + +Needs investigation: what reference point e1000e uses, what reference point the +ESP32 EMAC DMA-done interrupt corresponds to, and whether the residual is worth +a compile-time constant. + +## Calibration + +If a leg cannot be shrunk, correct the *value*, never the timing. Stamping +`T3' = T3 + k` shifts theta by `+k/2` at zero cost, and it makes `delta` more +honest: `delta = (T4−T1) − (T3−T2)`, so raising T3 moves hidden latency out of +the invisible legs into the visible stamped leg. Inserting a real delay to +"balance" the legs is strictly worse — it burns CPU in `tcpip_thread`, inflates +`delta`, and buys nothing the constant does not. + +**Never calibrate against an internet reference.** Tuning `k` until the NIST +comparison reads zero would bake this network's ISP asymmetry — measured at +≥1.12 ms upstream-slower — into a device whose LAN clients never traverse that +path. Calibrate against a local reference or not at all. + +## Sequencing + +1. **`hwtimestamp eno1` on the client.** One line, no firmware. Sharpens every + measurement taken afterwards. Note the date — it shifts measured delays by + 10–20 µs and will otherwise look like a device change in the logs. +2. **Local reference clock.** A Pi with a GPS HAT on kernel PPS reaches ~1–5 µs. + Without this, none of the work below can be *verified*, only asserted. +3. **RX-side ISR stamping.** Larger leg, no protocol change, safe direction. +4. **TX-side + RFC 9769 interleaved.** Only after step 3, per the trap above. + +Steps 3 and 4 both depend on the `framework = espidf` migration. + +## Validation + +Success is not "the offset got smaller." Required: + +- `delta` floor drops from 0.504 ms toward the network-only ~0.10 ms. This is + the direct evidence that the invisible legs shrank. +- Measured bias against the **local** GPS reference, before and after each step. + A step that improves `delta` but worsens bias has hit the asymmetry trap. +- Interleaved mode confirmed active: `chronyc ntpdata ` reports + `Interleaved : Yes`. It currently reports `No`. +- Basic-mode clients still work. `sntp` and a stock `ntpdate` must be unaffected. + +## Open questions + +- **[UNKNOWN]** Can the RX ISR timestamp reach the UDP callback without forking lwIP? +- **[UNKNOWN]** Is ESP32 EMAC TX-done per-descriptor and correlatable to a specific packet? +- **[UNKNOWN]** Reference-point mismatch (SFD vs end-of-frame) between e1000e and our ISRs. +- **[UNKNOWN]** Does `framework = espidf` with Arduino as a component still build this project cleanly? +- **[UNKNOWN]** Actual `s_rx` / `s_tx` split. Only the ~390 µs sum is measured. Cannot be resolved from the endpoints — needs the local reference or GPIO instrumentation against a scope. +- **[UNKNOWN]** Whether any of this is worth it: the local budget is capped at `delta/2` = 0.25 ms, while the residual being chased is 0.8 ms. If that residual is ISP path asymmetry, **all** of this work is invisible to LAN clients, who never traverse that path. + +## References + +- [RFC 9769 — NTP Interleaved Modes](https://www.rfc-editor.org/rfc/rfc9769.html) +- [RFC 5905 — NTPv4](rfc5905.txt) (in this repo) +- [esp-idf issue #13423 — IEEE 1588 on ESP32](https://github.com/espressif/esp-idf/issues/13423) +- [esp-idf Ethernet PTP example](https://github.com/espressif/esp-idf/blob/master/examples/ethernet/ptp/README.md) +- [esp32.com t=30889 — TxTimestampStatus always 0](https://esp32.com/viewtopic.php?t=30889) +- `man chrony.conf` — `xleave`, `hwtimestamp`, `clientloglimit` diff --git a/TIMEBASE.md b/TIMEBASE.md new file mode 100644 index 0000000..b50f400 --- /dev/null +++ b/TIMEBASE.md @@ -0,0 +1,484 @@ +# Time-base validation — measuring the served second against the PPS + +**Date:** 2026-08-31. Measuring host: `starship` (macOS, USB-C Ethernet `en9`, +`192.168.75.100/22`). Instrument: **Saleae Logic 8**, serial `9096B49FF5A5B2E4`, +driven through the Logic 2 MCP automation server. + +Closes the open item in [HANDOFF.md](HANDOFF.md): *"the GPS time base was never +actually measured — the weakest link"*. See [session.md](session.md) for the +full investigation this follows from. + +--- + +## Result + +**`E_c` = +5.07 µs** over 600 consecutive seconds. Caesium's served time tracks +its own PPS to five microseconds — **160x too small** to explain the 0.81 ms +gap. Hypothesis (b) is dead; the remaining **>=0.56 ms is WAN asymmetry**. + +| | 60 s pilot | 600 s soak | +|---|---|---| +| Pulses | 60 | **600** | +| `E_c` median | +5.080 us | **+5.070 us** | +| `E_c` mean / sd | +5.151 / 0.327 us | **+5.122 / 0.246 us** | +| `E_c` range | +4.890 .. +7.340 us | +4.880 .. +8.930 us | + +Two independent runs agree to **10 ns** on the median. See +[Results](#results-1) for the full budget. + +--- + +## The question + +Caesium reads **0.81 ms behind** internet stratum-1 consensus. Two hypotheses +survive, and they are observationally identical from the network endpoints: + +- **(a)** shared-segment WAN asymmetry of ≥1.12 ms upstream-slower +- **(b)** Caesium genuinely serving ~0.78 ms slow + +Hypothesis (b) requires the served time to disagree with the device's own PPS, +because the device's packet-path contribution is capped at 0.25 ms by +`|bias| <= delta/2`. So the discriminating measurement is: + +> Does the time Caesium **serves** agree with the PPS edge it **derives that +> time from**? + +Call that error `E_c`. + +--- + +## Why the obvious approach does not work + +The tempting design is: timestamp the PPS edge with the analyzer, query NTP +from the host, compare. It cannot work, and it is worth recording why so nobody +retries it. + +An NTP offset is an **epoch** quantity — "server clock minus my clock". The +analyzer measures **intervals**. Joining them requires converting Saleae time +into host time, and Logic 2's absolute (ISO8601) timestamps are applied in +software at capture start, so they carry USB and scheduling latency. + +Measured directly — eight identical captures of the same free-running PPS, +recording where the rising edge lands in host-clock phase: + +| Run | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | +|---|---|---|---|---|---|---|---|---| +| phase (s) | .888731 | .871371 | .886806 | .891237 | .987026 | .888778 | .889316 | .916521 | + +**Spread 115.7 ms, sd 34.0 ms.** The PPS itself is stable to ~73 ns, so all of +that is the anchor. It is ~40x larger than the effect being chased. No amount +of averaging fixes it: the error is a constant per capture, not noise. + +> The analyzer is an excellent interval instrument and a useless epoch +> instrument. Any design that needs it to know *what time it is* has already +> failed. + +--- + +## The design that does work + +Put **both** edges in Caesium's own clock domain, and measure only the interval +between them. The host clock then drops out of the measurement entirely. + +Firmware built with `-D TIMEBASE_PULSE` (see `src/main.cpp`) emits a 50 us pulse +on **GPIO33**, one *served* second after the PPS the NTP path is currently +interpolating from: + +```c +int64_t target = s.ppsTimeMicros + (int64_t)s.usPerPps; +``` + +`usPerPps` is the same calibrated interval `hwTimeToNtp()` uses, so if the +crystal calibration is wrong the pulse is wrong by exactly the amount the +served time is wrong. The next *real* PPS arrives one *true* second after that +reference edge. Therefore: + +``` +E_c = t_pulse - t_PPS(next) +``` + +> **Pulse landing after the PPS edge = Caesium serving slow by exactly that +> much.** + +This also captures PPS ISR latency, which is the point: latency makes +`ppsTimeMicros` late, which makes the pulse late *and* the served time slow by +the same amount. + +The measurement is immune to the analyzer's own limitations. Its crystal is +9.6 ppm off and wanders ~9 us over 5 minutes (below), but `E_c` is an interval +of about one second, over which that wander contributes ~33 ns. + +### Wiring + +| Signal | ESP32 pin | Analyzer channel | +|---|---|---| +| GPS PPS | GPIO16 | 1 | +| Validation pulse | **GPIO33 or GPIO32** | 0 | +| Ground | GND | probe ground (**short lead, see below**) | + +The pulse is driven on **both GPIO32 and GPIO33 simultaneously** — same output +register bank, one atomic write, no skew. Probe whichever is easier: GPIO32 sits +directly adjacent to the PPS pin, GPIO33 two above it. This removes a fiddly +pin-counting step on a dense header where GPIO34-39 are input-only and a slip +onto one is indistinguishable from a bad contact. + +GPIO17 is the Ethernet clock and is not led out. The PPS is also available on +the **GPS breakout's silkscreened PPS pin** — the same net as GPIO16, and a much +easier probe target. + +### Running it + +```bash +# Build and flash the debug firmware (default env is unaffected) +~/.platformio/penv/bin/pio run -e esp32-poe-iso-timebase -t upload + +# Measure +python3 pps_capture.py --mode timebase --duration 600 --json timebase.json +``` + +### Decision tree + +| Result | Meaning | Then | +|---|---|---| +| **`E_c` within ~10 us** | **served time tracks PPS** | **`0.81 - 0.25` = >=0.56 ms is WAN. Investigation closed.** | +| `E_c` ~ +800 us | the device time base is the culprit | WAN theory dead; debug PPS/epoch pairing and interpolation | +| in between | partial | fall back to the parked local GPS reference clock | + +> **Outcome: row 1, at +5.07 us.** Investigation closed. + +--- + +## Results + +### Time-base validation — 600 s, 600 pulses + +| Quantity | Value | +|---|---| +| Pulses emitted / captured | 600 / 600 | +| PPS edges | 600, **0 dropped** | +| **`E_c` median** | **+5.070 us** | +| `E_c` mean / sd | +5.122 / **0.246 us** | +| `E_c` range | +4.880 .. +8.930 us | +| PPS pulse width | 99.998941 ms, sd 20.3 ns | + +**The sign is the consistency check.** `hwTimeToNtp()` anchors served time to +`ppsTimeMicros`, which the PPS ISR records *after* interrupt-entry latency L. +For any request, `elapsed = hwTime - ppsTimeMicros` is then short by L and the +served time comes out **slow** by L. The same L delays the pulse, which targets +`ppsTimeMicros + usPerPps`. So a faithful time base with real ISR latency +predicts a *positive* `E_c` — which is what HANDOFF.md said before any of this +was wired, and what was observed. A negative or scattered result would have +meant the rig was wrong, not the device. + ++5 us is an entirely ordinary ESP32 GPIO interrupt latency, and sd 0.246 us +across 600 samples says it is a stable systematic, not noise. + +### Under NTP load — 180 s at 4711 req/s + +Run while flooding the device from six threads, to check whether serving +traffic perturbs the time base. It does, but read the caveat before drawing +conclusions. + +| Quantity | Quiet | Under load | +|---|---|---| +| NTP queries | ~0 | **838,510 (4711 req/s)** | +| NTP RTT median / p99 | — | 1.259 / **1.406 ms** | +| Failed queries | — | **0** | +| `E_c` median | +5.070 us | **+22.900 us** | +| `E_c` mean / sd | +5.122 / 0.246 us | +42.537 / 43.740 us | +| `E_c` max | +8.930 us | **+189.490 us** | + +**The robustness result is genuinely good.** Caesium sustained 4711 requests +per second with zero failures and a p99 round trip of 1.406 ms — barely above +its 1.05 ms floor. It does not fall over, drop requests, or lose GPS lock under +load far beyond anything a home network will produce. + +**The `E_c` degradation is mostly instrument, not device.** This is important +and easy to get wrong. The two paths are not equally exposed to scheduling: + +- The **pulse** is emitted from `loop()` on core 1. It busy-waits to `target` + and then writes the GPIO — so any preemption of core 1 *at that instant* + delays the edge. Under 4711 req/s of Ethernet and lwIP interrupt activity, + preemption is frequent. The pulse is late; the time base need not be. +- The **NTP response** is timestamped inline in `tcpip_thread` with + `esp_timer_get_time()` the moment the packet arrives. No `loop()` scheduling + enters that path, and separate T2/T3 stamps make `s_proc` cancel regardless. + +So this run bounds *pulse emission jitter under load*, and only indirectly says +anything about served accuracy. A component of it could be genuine — PPS ISR +latency may also rise under load, which would affect served time — but this +measurement cannot separate the two. + +**It does not affect the WAN conclusion.** The 28.8-day chrony comparison ran at +normal poll intervals (a few queries per minute), which is the quiet regime. The ++5.07 us figure is the applicable one. + +Separating device from instrument here would need the pulse emitted from an ISR +or a hardware timer rather than from `loop()`. Worth doing only if serving +accuracy under sustained heavy load ever becomes a real question. + +### Post-fix verification — the load test redone properly + +The load run above predated `b7fa5eb` and recorded only RTT, so it could not +have detected the epoch-labelling failure that commit guards against. Redone on +merged firmware, recording NTP **offset** concurrently — a 1 s epoch error shows +up there and nowhere else. + +| | pre-fix quiet | pre-fix load | **post-fix quiet** | **post-fix load** | +|---|---|---|---|---| +| Requests/s | ~0 | 4711 | ~0 | **4258** | +| `E_c` median | +5.070 us | +22.900 us | **+5.120 us** | **+5.980 us** | +| `E_c` sd | 0.246 us | 43.740 us | **0.206 us** | 40.977 us | +| `E_c` max | +8.930 us | +189.490 us | +7.310 us | +127.670 us | + +**The guard holds: 0 whole-second errors in 757,859 queries.** That is the +result the previous run could not produce, taken at the exact request rate that +provokes Core 1 starvation. + +**Served accuracy does not degrade under load.** NTP offset held at median ++0.359 ms with **sd 0.084 ms** across 757,859 samples at 4258 req/s — *tighter* +than the quiet spot-checks taken earlier in the session. Two failures out of +757,859 (0.0003%). Delay floor 0.419 ms, better than the 1.05 ms idle figure. + +**This confirms the caveat above: the `E_c` tail is instrument, not device.** If +the time base genuinely wandered by 128 us under load, the NTP offsets would +show it — 0.084 ms of spread across three quarters of a million samples says it +does not. Note also that the *median* barely moves (5.120 -> 5.980 us) while the +mean and max blow out: that is the signature of occasional preemption spikes on +an otherwise clean distribution, exactly as predicted for an edge emitted from +`loop()`. + +The post-fix median under load (+5.980 us) is markedly better than pre-fix +(+22.900 us). Suggestive, but one run each — not a controlled comparison. + +**Quiet `E_c` is unchanged by the fix** (+5.070 -> +5.120 us, sd 0.246 -> 0.206), +so the starvation guard costs nothing in the normal regime. + +### The accuracy budget, now fully bounded + +| Contribution | Bound | Source | +|---|---|---| +| Device packet path | <= 0.25 ms | `\|bias\| <= delta/2`, delta = 0.504 ms | +| Device time base (`E_c`) | **0.005 ms** | **measured here** | +| **Device total** | **<= 0.255 ms** | | +| Observed gap to internet stratum-1 | 0.81 ms | 28.8-day chrony soak | +| **Unaccounted -> WAN asymmetry** | **>= 0.56 ms** | by difference | + +The time-base term was the only unmeasured quantity in that table and the one +HANDOFF.md called "the weakest link in the whole chain". It is now measured and +negligible. + +### PPS characterisation — 274 s at 100 MS/s, uninterrupted + +| Quantity | Value | +|---|---| +| Rising edges | 274 in 274 s, **0 dropped, 0 extra** | +| Period mean | 0.999990377 s | +| Cycle-to-cycle sd | **73.1 ns** (10 ns quantization) | +| Period peak-to-peak | 330 ns | +| Pulse width | 99.999041 ms, sd **10.8 ns** | + +The PPS is clean. No missing pulses, no width modulation, jitter bounded at +73 ns including the instrument's own contribution — consistent with the +NEO-M9N's ~30 ns RMS spec. This does not prove absolute accuracy (nothing +on hand can), but it eliminates the entire "PPS is glitching" class of +explanation for hypothesis (b). + +### The analyzer's clock, as a by-product + +Because a GPS-disciplined PPS is many orders of magnitude better than an +uncompensated crystal, this run measures the **Logic 8**, not Caesium: + +- **-9.62 ppm** constant frequency error +- **9.0 us peak-to-peak wander** over 274 s, against 73 ns cycle-to-cycle + +Record it as the correction factor for any long interval this instrument +reports. It is irrelevant to `E_c`, which is a one-second interval. + +### NTP from this host + +`python3 measure_ntp.py 192.168.71.54 -n 120` + +| Quantity | Value | +|---|---| +| Stratum / LI | 1 / 0 | +| Round-trip floor | 1.053 ms | +| Server processing (T3-T2) | **24.0 us** | +| `|bias| <= delta/2` | 0.527 ms | + +The 24.0 us independently reproduces serv1's 23.7 us on different hardware, +a different OS and a different NTP client. The separate T2/T3 stamps are +working as designed. + +**This host is not the right one for the headline number.** Its round-trip +floor is 1.053 ms against serv1's 0.504 ms — the USB-C NIC costs ~0.55 ms and +it has no hardware timestamping. Keep serv1 for NTP; use this host for the +analyzer. + +--- + +## Two hazards found while setting this up + +**1. Tailscale captures the route to Caesium.** `192.168.72/22` is advertised +over `utun6`, so NTP traffic leaves through the tunnel: 2.9 ms round trip +versus 1.04 ms wired, with jitter roughly doubled. Any measurement taken with +the tunnel up is measuring Tailscale. `measure_ntp.py -I en9` pins the socket +to the wired interface; disabling Tailscale also works. + +Note that Caesium is one router hop away regardless (TTL 63, no ARP entry) — +`.71.54` is outside this host's `/22`, matching serv1's routed topology. + +**2. Probe interference — currently unresolved.** At t=275.86 s of the soak the +PPS line erupted into roughly 1.2 MHz of superimposed noise, ~60,000 edges per +second, and it is still present. The PPS survives intact underneath it (100.00 ms +pulses continuing at exactly 1 s spacing), so this is pickup on the probe, not +a device fault. + +A 5 us glitch filter cuts it about 1000-fold but does not clear it, so +`pps_capture.py` identifies the PPS by matching its 100 ms pulse width, which is +robust to interference of any width but the right one. It reports how many edges +it rejected — if that number is large, fix the wiring rather than trusting the +result: + +``` +# rejected 4055 of 4109 rising edges on ch1 as interference (wrong pulse width) +``` + +**Before the timebase run, check the probe ground lead.** A long or floating +ground return is the usual cause. The 274 s of clean data above was captured +before the onset and is the trustworthy dataset. + +--- + +## Pairing guard — residual case found and closed + +Reviewing `b7fa5eb` before fleet deployment turned up a case its sequence +counter cannot reach. The counter only catches a PPS edge firing *after* +`latchUartCycleSequence()`. But that latch is the first statement in `loop()`, +so if the task is simply never **scheduled** for a full second — blocked at +`vTaskDelay(1)` while `tcpip_thread` holds the core — it resumes, latches +`ppsSequence` at its already-incremented value, and the comparison comes out +equal: + +``` +resume t=1010ms -> latch seq = n+1 (edge already fired) + -> parse PVT(n) from FIFO (still unread) + -> ppsAge = 10ms (PPS(n+1)'s stamp is fresh, passes) + -> seq n+1 == n+1 (guard passes) + -> publish epoch(n) with PPS(n+1)'s timestamp == 1s stale +``` + +Nothing observable separates the two states: the timestamp is fresh either way, +so the `ppsAge` check cannot help. The gap between loop iterations is the only +remaining evidence, so `latchUartCycleSequence()` now records it and marks the +cycle suspect past `UART_CYCLE_MAX_GAP_US` (500 ms). `pvtCallback` drops such a +publish but **leaves `ppsFlag` set** — the edge is good, only the PVT is stale, +so the next PVT pairs correctly one second later rather than two. + +A `getDroppedPairingCount()` counter is surfaced on the periodic debug line; +non-zero in the field means that device was starved across a second boundary. + +### Validated on hardware, both directions + +An `esp32-poe-iso-starvetest` env stalls `loop()` 1050 ms once every ~6 s. The +1050 ms is deliberate: it walks the resume phase forward 50 ms each time, +sweeping the whole second so the narrow window is hit repeatedly instead of by +luck, while leaving clean seconds in between so normal syncing still runs. + +Identical injection, identical probe, only the guard differs: + +| | pre-fix (`b7fa5eb`) | **fixed** | +|---|---|---| +| Samples | 5990 | 5988 | +| **Whole-second errors** | **1005 (16.8%)** | **0** | +| Offset sd | 373.669 ms | **0.242 ms** | +| Offset range | -1.003646 .. +0.003391 s | -0.008810 .. +0.003522 s | +| Unsynced (LI=3) | 0 | 0 | + +Every pre-fix error sat at exactly **-1.000000 s** — the predicted signature. +Note that LI=3 was never set: the device reported itself synchronised while +serving time a full second wrong, one sample in six. That is the failure mode +worth caring about, because a client has no way to detect it. + +Regression check on the real production build, no injection: 4294 samples, +0 failures, 0 unsynced, offset sd 0.191 ms, 0 dropped pairings. The guard costs +nothing in normal operation. + +> **`esp32-poe-iso-starvetest` is a test fixture. Never deploy it.** Under +> *continuous* starvation it correctly refuses to publish at all and the device +> reports LI=3 — the right failure direction for a time server, but not a state +> to ship into. + +## Shipping + +The debug pulse is behind `-D TIMEBASE_PULSE` and the default `esp32-poe-iso` +env is unaffected. Verified rather than assumed: building the default env from +this branch and from `origin/main` gives binaries differing in **69 bytes of +579,136** — the embedded build timestamp and the app-descriptor hash that +includes it. The firmware source diff against main is **84 lines added, 0 +removed**, every one inside the `#ifdef`. + +Caesium was returned to the production build after measurement and confirmed: +stratum 1 within ~5 s, GPIO32/33 silent, PPS still running. + +```bash +pio run -e esp32-poe-iso -t upload # production +pio run -e esp32-poe-iso-timebase -t upload # debug, for re-measuring +``` + +## Status + +- [x] Analyzer plumbing, PPS located on channel 1, capture tooling +- [x] Anchoring approach tested and ruled out, with numbers +- [x] PPS characterised: clean, no dropped pulses, 73 ns jitter +- [x] `-D TIMEBASE_PULSE` firmware written and **building** (44.2% flash, 8.2% RAM) +- [x] Flash the debug build to Caesium +- [x] Wire the pulse to channel 0, fix the probe ground +- [x] Run `--mode timebase` — **resolved: (a) WAN asymmetry** +- [x] Load test at 4711 req/s — device robust; see caveat above +- [x] Raw captures archived in [data/](data/) — the rig was awkward to build + +### What this does not prove + +**`E_c` is blind to whole-second errors.** This is structural, not a limitation +of the run length. Commit `b7fa5eb` fixes a bug where PVT(n) could pair with +PPS(n+1)'s timestamp under Core 1 starvation, publishing a `timeState` exactly +1.000000 s in the past. Trace the pulse in that state: `target` becomes +`ppsTimeMicros(n+1) + usPerPps`, so it fires one second after PPS(n+1) and lands +on PPS(n+2). Nearest-edge matching then reports a *small* `E_c`, exactly as if +nothing were wrong. + +So this measurement certifies the **sub-second phase** of the time base and says +nothing about **epoch labelling**. The two are complementary. It does not weaken +the conclusions here — the 0.81 ms gap is sub-second, and a 1 s error would have +been unmissable across 4119 chrony samples at sd 0.103 ms — but do not read +`E_c` as validating the whole time base. + +Note also that the load test above ran on **pre-`b7fa5eb` firmware**, at exactly +the request rate that provokes the starvation path, and recorded only RTT rather +than offset. It therefore could not have detected that failure mode either. +Re-running the flood on merged firmware while recording NTP offset would close +this; the rig is described above. + +The served time tracks the PPS. It does **not** independently verify the PPS +against UTC — that still rests on the NEO-M9N's ~30 ns spec. The assumption is +far better supported than before (0 dropped pulses across 874 s of capture, +14.5-184 ns jitter, pulse width stable to 9-20 ns), but it is still an +assumption. Closing it needs the parked independent reference clock. + +The packet-path term likewise remains *bounded*, not measured. Measuring it is +what RFC 9769 interleaved mode plus RX timestamping would buy. + +### Consequences + +- **Caesium is better than 0.81 ms implied.** That number came from comparing + through an asymmetric internet path. LAN clients are one router hop away and + never traverse it; what they see is bounded by the ~0.25 ms packet term. +- **The asymmetry is not fixable from here.** It is in the shared upstream + segment every traceroute crosses before diverging + (`192.168.72.1 -> 207.225.112.10 -> 63.225.124.73`). +- **Gotcha 3 in HANDOFF.md is now load-bearing.** Tuning a constant until the + NIST comparison reads zero would bake >=1.12 ms of ISP asymmetry into a device + whose clients never see that path — making it materially worse for every real + consumer while the graph looked perfect. +- **`HWTIMESTAMPING.md` is optional polish**, exactly as the decision tree said. diff --git a/data/README.md b/data/README.md new file mode 100644 index 0000000..5de07b2 --- /dev/null +++ b/data/README.md @@ -0,0 +1,60 @@ +# Captured data — 2026-08-31 + +Raw logic-analyzer captures from the time-base validation measurement. Kept in +the repo because the rig was awkward to assemble and these are not cheap to +reproduce. Analysis and conclusions live in [../TIMEBASE.md](../TIMEBASE.md). + +Instrument: **Saleae Logic 8**, serial `9096B49FF5A5B2E4`, 100 MS/s digital +(25 MS/s for 8-channel scans). Device: Caesium (ESP32-PoE-ISO + NEO-M9N) +running the `esp32-poe-iso-timebase` build. + +## Channel map + +| Channel | Signal | Shape | +|---|---|---| +| 0 | Time-base validation pulse (GPIO33 + GPIO32) | 50 us, 1 Hz | +| 1 | GPS PPS (GPIO16) | 100 ms, 1 Hz | + +## CSV format + +Transition lists, not sample dumps — one row per edge, `Time [s]` relative to +capture start. Times are in the **analyzer's** timebase, which runs about +-9.6 ppm against the GPS-disciplined PPS. That error is irrelevant to `E_c` +(a one-second interval) but matters for anything long. Absolute wall-clock +timestamps are deliberately absent; see the anchoring file below for why. + +## Files + +| File | What | +|---|---| +| `timebase_600s_edges.csv` | **The result.** 600 s, both channels. `E_c` = +5.070 us median | +| `timebase_600s_summary.json` | Computed statistics for the above | +| `timebase_60s_edges.csv` | 60 s pilot run. `E_c` = +5.080 us — agrees to 10 ns | +| `timebase_60s_summary.json` | Computed statistics for the above | +| `timebase_180s_under_load_edges.csv` | 180 s while serving 4711 NTP req/s | +| `timebase_180s_under_load_summary.json` | Load-test statistics — **read the caveat in TIMEBASE.md** | +| `timebase_180s_quiet_postfix_edges.csv` | 180 s quiet on merged firmware (incl. `b7fa5eb`). `E_c` = +5.120 us | +| `timebase_180s_quiet_postfix_summary.json` | Statistics for the above | +| `timebase_180s_quiet_postfix.sal` | Raw Logic 2 capture — reopen directly in the GUI | +| `timebase_180s_load_postfix_edges.csv` | 180 s at 4258 req/s on merged firmware | +| `timebase_180s_load_postfix_summary.json` | **0 whole-second errors in 757,859 queries**; NTP offset sd 0.084 ms | +| `pps_soak_274s_clean_edges.csv` | PPS characterisation, clean window. 0 dropped, 73.1 ns jitter | +| `pps_soak_300s_edges.csv.gz` | Full 300 s soak including the interference event at t=275.86 s | +| `pps_60s_interference_a.csv` | PPS during the interference, ~4000 spurious edges/60 s | +| `pps_60s_interference_b.csv` | Second interference capture | +| `pps_60s_interference_summary.json` | Shows how width-matching recovers the PPS | +| `starvation_prefix_periodic.json` | Pre-fix under induced starvation: **1005 whole-second errors in 5990 samples** | +| `starvation_postfix_periodic.json` | Same injection, with the gap guard: **0 errors**, offset sd 0.242 ms | +| `starvation_prefix.json` | Continuous-starvation variant, pre-fix: 803 errors | +| `starvation_postfix.json` | Continuous-starvation variant, fixed: 0 errors, device correctly reports LI=3 | +| `starvation_production_normal.json` | Production build, no injection: 4294 samples, 0 errors, sd 0.191 ms | +| `anchor_test_phases.json` | 8 captures of the same PPS in host-clock phase. **115.7 ms spread** — why absolute timestamps cannot anchor this measurement | + +## Reproducing + +```bash +python3 pps_capture.py --mode timebase --duration 600 --outdir data/ --json out.json +``` + +Requires Logic 2 running with Settings -> Automation -> MCP Server enabled, and +firmware built from the `esp32-poe-iso-timebase` env. diff --git a/data/anchor_test_phases.json b/data/anchor_test_phases.json new file mode 100644 index 0000000..2701850 --- /dev/null +++ b/data/anchor_test_phases.json @@ -0,0 +1 @@ +[0.8887307643890381, 0.8713712692260742, 0.8868060111999512, 0.8912365436553955, 0.9870259761810303, 0.8887782096862793, 0.8893160820007324, 0.9165210723876953] \ No newline at end of file diff --git a/data/pps_60s_interference_a.csv b/data/pps_60s_interference_a.csv new file mode 100644 index 0000000..0bf9a1f --- /dev/null +++ b/data/pps_60s_interference_a.csv @@ -0,0 +1,6615 @@ +Time [s],Channel 1 +0.000000000,0 +0.005603100,1 +0.006895380,0 +0.022253130,1 +0.023441990,0 +0.038925480,1 +0.040067560,0 +0.055597070,1 +0.056773850,0 +0.072279270,1 +0.073350040,0 +0.088908950,1 +0.090116920,0 +0.105601110,1 +0.106756710,0 +0.122252950,1 +0.123379400,0 +0.138899740,1 +0.140054430,0 +0.155568420,1 +0.156751030,0 +0.172265090,1 +0.173439920,0 +0.188893940,1 +0.190106230,0 +0.205570890,1 +0.206715360,0 +0.222250080,1 +0.223588360,0 +0.238893840,1 +0.240155430,0 +0.255583800,1 +0.256743430,0 +0.272233080,1 +0.273415130,0 +0.288883320,1 +0.290091070,0 +0.305581870,1 +0.306704340,0 +0.322230350,1 +0.323320710,0 +0.338879610,1 +0.340109460,0 +0.355528200,1 +0.356681360,0 +0.372230930,1 +0.373528120,0 +0.388890660,1 +0.390178930,0 +0.405541620,1 +0.406713730,0 +0.422366490,1 +0.423466800,0 +0.438869720,1 +0.439975160,0 +0.455518280,1 +0.456788240,0 +0.472221020,1 +0.473421730,0 +0.488860480,1 +0.490119600,0 +0.505529620,1 +0.506649200,0 +0.522207290,1 +0.523304090,0 +0.538871680,1 +0.540143460,0 +0.555522860,1 +0.556693620,0 +0.572210200,1 +0.573449820,0 +0.588845640,1 +0.590160520,0 +0.605533040,1 +0.606700890,0 +0.622189160,1 +0.623322400,0 +0.638827350,1 +0.640124230,0 +0.655482950,1 +0.656714860,0 +0.672184350,1 +0.673387380,0 +0.688842850,1 +0.690000160,0 +0.705532000,1 +0.706747620,0 +0.722172080,1 +0.723283240,0 +0.732523520,1 +0.832522590,0 +0.838837640,1 +0.840054000,0 +0.855509280,1 +0.856775870,0 +0.872164610,1 +0.873238230,0 +0.888827690,1 +0.890011710,0 +0.905479490,1 +0.906674160,0 +0.922138070,1 +0.923342180,0 +0.938822460,1 +0.939942640,0 +0.955475880,1 +0.956660660,0 +0.972180920,1 +0.973351270,0 +0.988819190,1 +0.990085070,0 +1.005475240,1 +1.006742820,0 +1.022138890,1 +1.023247280,0 +1.038827210,1 +1.039894660,0 +1.055468800,1 +1.056646920,0 +1.072120400,1 +1.073246330,0 +1.088805300,1 +1.090117530,0 +1.105476140,1 +1.106665070,0 +1.122198210,1 +1.123449290,0 +1.138907090,1 +1.139965660,0 +1.155454090,1 +1.156725260,0 +1.172101160,1 +1.173396320,0 +1.188801280,1 +1.189892120,0 +1.205446220,1 +1.206593240,0 +1.222126200,1 +1.223202030,0 +1.238789610,1 +1.240137130,0 +1.255420150,1 +1.256703340,0 +1.272129440,1 +1.273204430,0 +1.288773320,1 +1.289938650,0 +1.305451380,1 +1.306601820,0 +1.322101630,1 +1.323277570,0 +1.338776890,1 +1.340007690,0 +1.355428900,1 +1.356788090,0 +1.372082160,1 +1.373208230,0 +1.373231920,1 +1.373353630,0 +1.388758310,1 +1.390026080,0 +1.405425950,1 +1.406768230,0 +1.422078240,1 +1.423243590,0 +1.438720280,1 +1.439977180,0 +1.455433580,1 +1.456682870,0 +1.472107880,1 +1.473230430,0 +1.488753370,1 +1.489854290,0 +1.505424450,1 +1.506600760,0 +1.522095920,1 +1.523285600,0 +1.538739630,1 +1.540163160,0 +1.555391960,1 +1.556649530,0 +1.572053800,1 +1.573229550,0 +1.588697840,1 +1.589920770,0 +1.605411400,1 +1.606597650,0 +1.622063660,1 +1.623224040,0 +1.638704710,1 +1.639828240,0 +1.655394790,1 +1.656521570,0 +1.672045460,1 +1.673431180,0 +1.688682400,1 +1.689889610,0 +1.705393250,1 +1.706559310,0 +1.722040400,1 +1.723334250,0 +1.732514150,1 +1.832513220,0 +1.838687380,1 +1.839956350,0 +1.855357470,1 +1.856441670,0 +1.872042730,1 +1.873112680,0 +1.888686730,1 +1.889896580,0 +1.905335870,1 +1.906527020,0 +1.922023840,1 +1.923218470,0 +1.938689180,1 +1.939905330,0 +1.955335660,1 +1.956654030,0 +1.972016870,1 +1.973073870,0 +1.988654630,1 +1.989914000,0 +2.005329750,1 +2.006445530,0 +2.022013110,1 +2.023248260,0 +2.038681930,1 +2.040037470,0 +2.055314460,1 +2.056485360,0 +2.071998860,1 +2.073065190,0 +2.088652970,1 +2.090009310,0 +2.105326970,1 +2.106551540,0 +2.121985490,1 +2.123054940,0 +2.138640420,1 +2.139971580,0 +2.155304230,1 +2.156499640,0 +2.172010300,1 +2.173154580,0 +2.188621840,1 +2.189880370,0 +2.205305120,1 +2.206652690,0 +2.221962790,1 +2.223204200,0 +2.238645210,1 +2.239737300,0 +2.255368590,1 +2.256576540,0 +2.271996170,1 +2.273046870,0 +2.288660260,1 +2.290021740,0 +2.305304000,1 +2.306448230,0 +2.321965240,1 +2.323133280,0 +2.338647710,1 +2.339808480,0 +2.355312930,1 +2.356555860,0 +2.371940650,1 +2.373223700,0 +2.388624490,1 +2.389718320,0 +2.405296340,1 +2.406407140,0 +2.421935900,1 +2.423151080,0 +2.438617600,1 +2.439770380,0 +2.455280670,1 +2.456478950,0 +2.471941100,1 +2.473114040,0 +2.488609630,1 +2.489768060,0 +2.505265310,1 +2.506452100,0 +2.521935440,1 +2.523237640,0 +2.538607500,1 +2.539725440,0 +2.555253920,1 +2.556579880,0 +2.571934130,1 +2.573280350,0 +2.588593780,1 +2.589722230,0 +2.605269470,1 +2.606514400,0 +2.622018560,1 +2.623608970,0 +2.638566960,1 +2.639847100,0 +2.655265760,1 +2.656542310,0 +2.671922860,1 +2.673159410,0 +2.688576280,1 +2.689681870,0 +2.705227240,1 +2.706455630,0 +2.721877650,1 +2.723240690,0 +2.732504790,1 +2.832503870,0 +2.838575470,1 +2.839875640,0 +2.855241890,1 +2.856492750,0 +2.871913300,1 +2.873529180,0 +2.888564590,1 +2.889864540,0 +2.905240240,1 +2.906498930,0 +2.921902550,1 +2.923075650,0 +2.938552760,1 +2.939719630,0 +2.955200330,1 +2.956463820,0 +2.971898770,1 +2.972986730,0 +2.988570130,1 +2.989816360,0 +3.005223340,1 +3.006433230,0 +3.021891060,1 +3.022962520,0 +3.038548560,1 +3.040397160,0 +3.055197540,1 +3.056394710,0 +3.071879590,1 +3.073182600,0 +3.088544750,1 +3.089729060,0 +3.105220670,1 +3.106316880,0 +3.121860200,1 +3.122973200,0 +3.138547030,1 +3.139849780,0 +3.155178500,1 +3.156295970,0 +3.171867960,1 +3.173070290,0 +3.188563300,1 +3.189688130,0 +3.205206710,1 +3.206502080,0 +3.221852590,1 +3.223081320,0 +3.238528010,1 +3.239686430,0 +3.255195530,1 +3.256525530,0 +3.271871160,1 +3.273245000,0 +3.288519660,1 +3.289752510,0 +3.305187600,1 +3.306419510,0 +3.321870770,1 +3.323075920,0 +3.338518800,1 +3.339596540,0 +3.355188030,1 +3.356413350,0 +3.371834660,1 +3.373132130,0 +3.388491220,1 +3.389769560,0 +3.405186800,1 +3.406387120,0 +3.421853280,1 +3.423066930,0 +3.438512980,1 +3.439591800,0 +3.455175710,1 +3.456426160,0 +3.471844660,1 +3.473060240,0 +3.488511640,1 +3.489665300,0 +3.505181120,1 +3.506391200,0 +3.521828000,1 +3.523000930,0 +3.538478960,1 +3.539662410,0 +3.555164030,1 +3.556309910,0 +3.571822880,1 +3.572934830,0 +3.588502250,1 +3.589655460,0 +3.605130550,1 +3.606369040,0 +3.621823310,1 +3.623194840,0 +3.638477800,1 +3.639565870,0 +3.655130360,1 +3.656384520,0 +3.671819020,1 +3.673222630,0 +3.688440650,1 +3.689706690,0 +3.705154410,1 +3.706269720,0 +3.721815470,1 +3.722979840,0 +3.732495430,1 +3.832494490,0 +3.838442650,1 +3.839512180,0 +3.855094400,1 +3.856193240,0 +3.871768690,1 +3.873099690,0 +3.888436720,1 +3.889696510,0 +3.905070080,1 +3.906210410,0 +3.921758870,1 +3.922950910,0 +3.938433470,1 +3.939681240,0 +3.955093800,1 +3.956190090,0 +3.971783450,1 +3.972938790,0 +3.988404390,1 +3.989559910,0 +4.005095780,1 +4.006340780,0 +4.021774260,1 +4.023096890,0 +4.038438500,1 +4.039602120,0 +4.055074090,1 +4.056236930,0 +4.071727510,1 +4.072977460,0 +4.088411890,1 +4.089691390,0 +4.105064650,1 +4.106239750,0 +4.121716460,1 +4.122833710,0 +4.138371560,1 +4.139758400,0 +4.155062420,1 +4.156224970,0 +4.171737250,1 +4.172885430,0 +4.188372510,1 +4.189584220,0 +4.205032030,1 +4.206305280,0 +4.221712040,1 +4.222801560,0 +4.238398120,1 +4.239609010,0 +4.255040760,1 +4.256191960,0 +4.271718860,1 +4.272804830,0 +4.288388850,1 +4.289576740,0 +4.305048800,1 +4.306231520,0 +4.321718690,1 +4.322902750,0 +4.338362360,1 +4.339510930,0 +4.355028560,1 +4.356265990,0 +4.371702520,1 +4.372954350,0 +4.388360100,1 +4.389513650,0 +4.405023090,1 +4.406250690,0 +4.421669290,1 +4.422868480,0 +4.438352390,1 +4.439522800,0 +4.455022740,1 +4.456270580,0 +4.471697330,1 +4.472874440,0 +4.488345280,1 +4.489601410,0 +4.505026100,1 +4.506187270,0 +4.521670920,1 +4.522767310,0 +4.538328930,1 +4.539652200,0 +4.555011770,1 +4.556310330,0 +4.571675150,1 +4.572921760,0 +4.588358900,1 +4.589675480,0 +4.604988580,1 +4.606158930,0 +4.621656500,1 +4.622775790,0 +4.638327790,1 +4.639459890,0 +4.654988310,1 +4.656189810,0 +4.671666250,1 +4.672882160,0 +4.688320830,1 +4.689504200,0 +4.704995400,1 +4.706197200,0 +4.721643020,1 +4.722916420,0 +4.732486080,1 +4.832485130,0 +4.838297740,1 +4.839468180,0 +4.854969400,1 +4.856202700,0 +4.871665600,1 +4.872848680,0 +4.888297940,1 +4.889486850,0 +4.904936070,1 +4.906150140,0 +4.921611910,1 +4.922863530,0 +4.938275670,1 +4.939435070,0 +4.954943140,1 +4.956197460,0 +4.971643200,1 +4.972810680,0 +4.988300080,1 +4.989568300,0 +5.004932120,1 +5.006195380,0 +5.021599960,1 +5.022672000,0 +5.038267030,1 +5.039517440,0 +5.054921870,1 +5.056176450,0 +5.071610100,1 +5.072806380,0 +5.088458370,1 +5.089427760,0 +5.104919640,1 +5.106170740,0 +5.121589350,1 +5.122754710,0 +5.138262860,1 +5.139371990,0 +5.154924330,1 +5.156240380,0 +5.171593970,1 +5.172682120,0 +5.188291780,1 +5.189497350,0 +5.204896990,1 +5.206018670,0 +5.221583680,1 +5.222760040,0 +5.238222190,1 +5.239405810,0 +5.254879240,1 +5.256139070,0 +5.271591430,1 +5.272800830,0 +5.288234700,1 +5.289422970,0 +5.304887670,1 +5.306124240,0 +5.321577740,1 +5.322858760,0 +5.338210090,1 +5.339513900,0 +5.354868920,1 +5.355976560,0 +5.371550800,1 +5.372767630,0 +5.388195550,1 +5.389440520,0 +5.404879770,1 +5.406165390,0 +5.421547250,1 +5.422779920,0 +5.438219200,1 +5.439284880,0 +5.454872340,1 +5.456027550,0 +5.471603400,1 +5.472795980,0 +5.488213460,1 +5.489501300,0 +5.504854830,1 +5.505923480,0 +5.521547990,1 +5.522787290,0 +5.538207270,1 +5.539453790,0 +5.554834230,1 +5.556067960,0 +5.571532430,1 +5.572705100,0 +5.588189610,1 +5.589386920,0 +5.604863260,1 +5.606127420,0 +5.621519610,1 +5.622739410,0 +5.638187630,1 +5.639357910,0 +5.654845610,1 +5.656044600,0 +5.671529190,1 +5.672600200,0 +5.688144230,1 +5.689352460,0 +5.704840010,1 +5.706052910,0 +5.721496300,1 +5.722678810,0 +5.732476710,1 +5.832475780,0 +5.838149960,1 +5.839241840,0 +5.854813020,1 +5.855996630,0 +5.871485180,1 +5.872613490,0 +5.888138820,1 +5.889171550,0 +5.904799650,1 +5.906091220,0 +5.921494620,1 +5.922561440,0 +5.938133960,1 +5.939425880,0 +5.954799930,1 +5.956036400,0 +5.971482440,1 +5.972656560,0 +5.988130400,1 +5.989294740,0 +6.004778080,1 +6.006024480,0 +6.021479120,1 +6.022712620,0 +6.038134550,1 +6.039346940,0 +6.054808390,1 +6.056101780,0 +6.071457690,1 +6.072735900,0 +6.088137840,1 +6.089338310,0 +6.104762140,1 +6.106062870,0 +6.121438470,1 +6.122546430,0 +6.138134100,1 +6.139377170,0 +6.154774870,1 +6.156120470,0 +6.171587980,1 +6.172792080,0 +6.188078900,1 +6.189405420,0 +6.204735060,1 +6.206102310,0 +6.221410760,1 +6.222598350,0 +6.238116780,1 +6.239316400,0 +6.254778690,1 +6.255857660,0 +6.271443270,1 +6.272554200,0 +6.288099590,1 +6.289305210,0 +6.304755160,1 +6.306044680,0 +6.321415630,1 +6.322635700,0 +6.338073360,1 +6.339286810,0 +6.354765440,1 +6.355973890,0 +6.371435800,1 +6.372578610,0 +6.388071680,1 +6.389203420,0 +6.404752570,1 +6.405984340,0 +6.421406040,1 +6.422485040,0 +6.438068570,1 +6.439286100,0 +6.454725650,1 +6.455807470,0 +6.471410060,1 +6.472507670,0 +6.488025900,1 +6.489176130,0 +6.504740820,1 +6.505874900,0 +6.521383450,1 +6.522536260,0 +6.538047030,1 +6.539243100,0 +6.554729520,1 +6.555921970,0 +6.571389670,1 +6.572646220,0 +6.588051900,1 +6.589223520,0 +6.604718150,1 +6.605914450,0 +6.621374890,1 +6.622563430,0 +6.638020270,1 +6.639294480,0 +6.654712110,1 +6.656008360,0 +6.671420400,1 +6.672542370,0 +6.688042250,1 +6.689356820,0 +6.704700060,1 +6.706032380,0 +6.721351410,1 +6.722526190,0 +6.732467350,1 +6.832466420,0 +6.838027790,1 +6.839242960,0 +6.854685300,1 +6.856020090,0 +6.871335860,1 +6.872469170,0 +6.887990990,1 +6.889218590,0 +6.904671070,1 +6.905846040,0 +6.921333660,1 +6.922649970,0 +6.938009420,1 +6.939246030,0 +6.954655760,1 +6.955905060,0 +6.971335850,1 +6.972543180,0 +6.987964350,1 +6.989244140,0 +7.004645770,1 +7.005803940,0 +7.021308210,1 +7.022403120,0 +7.037986910,1 +7.039221580,0 +7.054640340,1 +7.055904450,0 +7.071316480,1 +7.072532000,0 +7.087958970,1 +7.089162000,0 +7.104649360,1 +7.105950910,0 +7.121277440,1 +7.122526520,0 +7.137978150,1 +7.139232440,0 +7.154685640,1 +7.155882260,0 +7.171337340,1 +7.172471530,0 +7.187966140,1 +7.189279800,0 +7.204634110,1 +7.205735140,0 +7.221268920,1 +7.222518670,0 +7.237932590,1 +7.239294710,0 +7.254615090,1 +7.255741450,0 +7.271301830,1 +7.272566050,0 +7.287908810,1 +7.289245520,0 +7.304608010,1 +7.305754580,0 +7.321293640,1 +7.322631690,0 +7.337947720,1 +7.339257370,0 +7.354595400,1 +7.355788230,0 +7.371269030,1 +7.372534910,0 +7.387945010,1 +7.389085380,0 +7.404575570,1 +7.405804080,0 +7.421268380,1 +7.422429940,0 +7.437914260,1 +7.439273720,0 +7.454757750,1 +7.455749480,0 +7.471242980,1 +7.472429520,0 +7.487860870,1 +7.489277030,0 +7.504573530,1 +7.505819760,0 +7.521223650,1 +7.522391420,0 +7.537916850,1 +7.539146660,0 +7.554548760,1 +7.555710910,0 +7.571229760,1 +7.572370030,0 +7.587916780,1 +7.589080530,0 +7.604576900,1 +7.605741290,0 +7.621256290,1 +7.622470730,0 +7.637891430,1 +7.639095400,0 +7.654564190,1 +7.655763080,0 +7.671237870,1 +7.672376560,0 +7.687893960,1 +7.689191980,0 +7.704526160,1 +7.706338170,0 +7.721215140,1 +7.722434990,0 +7.732458000,1 +7.832457070,0 +7.837882570,1 +7.839079470,0 +7.854516680,1 +7.855762310,0 +7.871205430,1 +7.872300340,0 +7.887844550,1 +7.889097740,0 +7.904528760,1 +7.905660080,0 +7.921177240,1 +7.922490780,0 +7.937855040,1 +7.939113120,0 +7.954531640,1 +7.955893640,0 +7.971198090,1 +7.972402030,0 +7.987861260,1 +7.989024070,0 +8.004490270,1 +8.005716030,0 +8.021189150,1 +8.022304250,0 +8.037821490,1 +8.039163920,0 +8.054496490,1 +8.055718400,0 +8.071149770,1 +8.072440750,0 +8.087835900,1 +8.089117640,0 +8.104499880,1 +8.105704320,0 +8.121146080,1 +8.122330270,0 +8.137814510,1 +8.139039580,0 +8.154500230,1 +8.155678140,0 +8.171151520,1 +8.172333640,0 +8.187829800,1 +8.189047600,0 +8.204497920,1 +8.205652470,0 +8.221139630,1 +8.222345290,0 +8.237822540,1 +8.239004760,0 +8.254475050,1 +8.255617960,0 +8.271165910,1 +8.272277410,0 +8.287788110,1 +8.289004110,0 +8.304449890,1 +8.305545780,0 +8.321081520,1 +8.322281140,0 +8.337783930,1 +8.339123530,0 +8.354477870,1 +8.355677790,0 +8.371144160,1 +8.372379190,0 +8.387796130,1 +8.388895180,0 +8.404480280,1 +8.405646340,0 +8.421100970,1 +8.422343120,0 +8.437786160,1 +8.438994540,0 +8.454433000,1 +8.455699540,0 +8.471112240,1 +8.472291350,0 +8.487777840,1 +8.488878860,0 +8.504475560,1 +8.505596840,0 +8.521088750,1 +8.522275320,0 +8.537743060,1 +8.539069540,0 +8.554420940,1 +8.555590500,0 +8.571123560,1 +8.572304060,0 +8.587768020,1 +8.588950630,0 +8.604425400,1 +8.605710250,0 +8.621063170,1 +8.622322370,0 +8.637758670,1 +8.638833570,0 +8.654434770,1 +8.655593600,0 +8.671085170,1 +8.672340020,0 +8.687754380,1 +8.689062210,0 +8.704396670,1 +8.705612320,0 +8.721074980,1 +8.722283770,0 +8.732448640,1 +8.832447700,0 +8.837730060,1 +8.838788070,0 +8.854373270,1 +8.855555310,0 +8.871048800,1 +8.872234830,0 +8.887724060,1 +8.889018940,0 +8.904394010,1 +8.905549150,0 +8.921051110,1 +8.922250440,0 +8.937676660,1 +8.939001080,0 +8.954368120,1 +8.955618030,0 +8.971015350,1 +8.972289240,0 +8.987692560,1 +8.988885590,0 +9.004361870,1 +9.005690960,0 +9.020994530,1 +9.022322020,0 +9.037672930,1 +9.038896900,0 +9.054329700,1 +9.055507330,0 +9.071028600,1 +9.072198200,0 +9.087718660,1 +9.089100180,0 +9.104365700,1 +9.105558930,0 +9.120993340,1 +9.122187990,0 +9.137647370,1 +9.138893130,0 +9.154332130,1 +9.155668680,0 +9.170990670,1 +9.172218200,0 +9.187666720,1 +9.188911800,0 +9.204344740,1 +9.205616760,0 +9.220987980,1 +9.222066520,0 +9.237646360,1 +9.238941050,0 +9.254311530,1 +9.255489370,0 +9.271005870,1 +9.272138470,0 +9.287614930,1 +9.288760830,0 +9.304290680,1 +9.305446500,0 +9.320949370,1 +9.322187700,0 +9.337633780,1 +9.338864800,0 +9.354318260,1 +9.355517650,0 +9.370971730,1 +9.372119210,0 +9.387621970,1 +9.388810430,0 +9.404265520,1 +9.405439260,0 +9.420946970,1 +9.422265700,0 +9.437629010,1 +9.438786790,0 +9.454277700,1 +9.455512610,0 +9.470967720,1 +9.472229610,0 +9.487597340,1 +9.488960650,0 +9.504265190,1 +9.505451960,0 +9.520919390,1 +9.522027500,0 +9.537579850,1 +9.538853680,0 +9.554263250,1 +9.555459420,0 +9.570924110,1 +9.572197060,0 +9.587564030,1 +9.588794870,0 +9.604236780,1 +9.605446080,0 +9.620884480,1 +9.622205530,0 +9.637590590,1 +9.638743390,0 +9.654234390,1 +9.655394000,0 +9.670904230,1 +9.672079000,0 +9.687728550,1 +9.688900520,0 +9.704249560,1 +9.705433430,0 +9.720872760,1 +9.722160300,0 +9.732439280,1 +9.832438350,0 +9.837581940,1 +9.838790920,0 +9.854244200,1 +9.855445440,0 +9.870877340,1 +9.872113550,0 +9.887537120,1 +9.888716380,0 +9.904209510,1 +9.905280610,0 +9.920869370,1 +9.922111310,0 +9.937714920,1 +9.938773580,0 +9.954194800,1 +9.955411890,0 +9.970880660,1 +9.972033550,0 +9.987505860,1 +9.988751150,0 +10.004173220,1 +10.005406290,0 +10.020851680,1 +10.021936900,0 +10.037504750,1 +10.038855430,0 +10.054173790,1 +10.055316690,0 +10.070850300,1 +10.072630040,0 +10.087500670,1 +10.088639370,0 +10.104170560,1 +10.105372440,0 +10.120814340,1 +10.122078650,0 +10.137496220,1 +10.138704400,0 +10.154162060,1 +10.155258860,0 +10.170845910,1 +10.172097620,0 +10.187502720,1 +10.188689390,0 +10.204157820,1 +10.205398520,0 +10.220793340,1 +10.222011550,0 +10.237466180,1 +10.238641360,0 +10.254122530,1 +10.255329740,0 +10.270795680,1 +10.272085100,0 +10.287456090,1 +10.288643550,0 +10.304131410,1 +10.305469890,0 +10.320797820,1 +10.322013500,0 +10.337467880,1 +10.338754790,0 +10.354116260,1 +10.355189830,0 +10.370797600,1 +10.372131680,0 +10.387577190,1 +10.388568700,0 +10.404130910,1 +10.405235150,0 +10.420770290,1 +10.421980080,0 +10.437397340,1 +10.438596150,0 +10.454113300,1 +10.455450680,0 +10.470800980,1 +10.472014330,0 +10.487430380,1 +10.488669170,0 +10.504124780,1 +10.505248690,0 +10.520756870,1 +10.521941640,0 +10.537435510,1 +10.538621820,0 +10.554098130,1 +10.555243220,0 +10.570749620,1 +10.571856400,0 +10.587424870,1 +10.588588590,0 +10.604087550,1 +10.605183310,0 +10.620741660,1 +10.621917550,0 +10.637378570,1 +10.638615160,0 +10.654025590,1 +10.655343550,0 +10.670745760,1 +10.672085010,0 +10.687381650,1 +10.688639740,0 +10.704079330,1 +10.705315580,0 +10.720732120,1 +10.721855150,0 +10.732429930,1 +10.832429000,0 +10.837343340,1 +10.838479420,0 +10.854036520,1 +10.855323320,0 +10.870724340,1 +10.871915590,0 +10.887355230,1 +10.888607670,0 +10.904024250,1 +10.905276000,0 +10.920689950,1 +10.921880440,0 +10.937375510,1 +10.938581160,0 +10.954001440,1 +10.955281300,0 +10.970703020,1 +10.971878030,0 +10.987361340,1 +10.988591190,0 +11.003991850,1 +11.005201150,0 +11.020689450,1 +11.021884550,0 +11.037314930,1 +11.038673030,0 +11.053960990,1 +11.055226760,0 +11.070696570,1 +11.071858600,0 +11.087361460,1 +11.088590680,0 +11.104002360,1 +11.105174830,0 +11.120671160,1 +11.121763110,0 +11.137298490,1 +11.138501170,0 +11.153966310,1 +11.155211270,0 +11.170665950,1 +11.171929400,0 +11.187325190,1 +11.188500940,0 +11.203988940,1 +11.205169880,0 +11.220633580,1 +11.221865930,0 +11.237341600,1 +11.238618570,0 +11.253968760,1 +11.255155040,0 +11.270660770,1 +11.271843620,0 +11.287299730,1 +11.288389720,0 +11.303956810,1 +11.305216500,0 +11.320626480,1 +11.321842130,0 +11.337293780,1 +11.338513620,0 +11.353940370,1 +11.355222530,0 +11.370612090,1 +11.371777530,0 +11.387258730,1 +11.388419870,0 +11.403938730,1 +11.405125280,0 +11.420602450,1 +11.421747460,0 +11.437273620,1 +11.438422800,0 +11.453889700,1 +11.455015020,0 +11.470617220,1 +11.471694580,0 +11.487246320,1 +11.488512680,0 +11.503876890,1 +11.505104650,0 +11.520579510,1 +11.521735000,0 +11.537232770,1 +11.538481870,0 +11.553912660,1 +11.555119840,0 +11.570550910,1 +11.571724490,0 +11.587237680,1 +11.588467630,0 +11.603886020,1 +11.605055540,0 +11.620569640,1 +11.621731470,0 +11.637232390,1 +11.638390420,0 +11.653878930,1 +11.654995650,0 +11.670556090,1 +11.671638560,0 +11.687215770,1 +11.688469140,0 +11.703872680,1 +11.705170430,0 +11.720580320,1 +11.721813030,0 +11.732420580,1 +11.832419640,0 +11.837207880,1 +11.838457430,0 +11.853856960,1 +11.855099990,0 +11.870510160,1 +11.871750950,0 +11.887276520,1 +11.888359190,0 +11.903838630,1 +11.905165700,0 +11.920508400,1 +11.921700440,0 +11.937171600,1 +11.938365240,0 +11.953830500,1 +11.954916380,0 +11.970515920,1 +11.971746670,0 +11.987152120,1 +11.988248240,0 +12.003840830,1 +12.005123390,0 +12.020495480,1 +12.021736890,0 +12.037117690,1 +12.038312370,0 +12.053808470,1 +12.055632970,0 +12.070490060,1 +12.071718140,0 +12.087133520,1 +12.088235230,0 +12.103802160,1 +12.104910070,0 +12.120463760,1 +12.121656840,0 +12.137135990,1 +12.138311480,0 +12.153797270,1 +12.155092430,0 +12.170483090,1 +12.171730320,0 +12.187097990,1 +12.188326430,0 +12.203765740,1 +12.205057930,0 +12.220469200,1 +12.221523190,0 +12.237107160,1 +12.238374680,0 +12.253750920,1 +12.254991680,0 +12.270432630,1 +12.271629910,0 +12.287098910,1 +12.288360580,0 +12.303770780,1 +12.305587060,0 +12.320440900,1 +12.321572250,0 +12.337110420,1 +12.338302040,0 +12.353754520,1 +12.354857230,0 +12.370463640,1 +12.371784990,0 +12.387078650,1 +12.388193670,0 +12.403752630,1 +12.404953450,0 +12.420398000,1 +12.421589340,0 +12.437056000,1 +12.438164640,0 +12.453718940,1 +12.454967040,0 +12.470396690,1 +12.471596560,0 +12.487065390,1 +12.488208870,0 +12.503733150,1 +12.504900690,0 +12.520397850,1 +12.521567710,0 +12.537040410,1 +12.538184360,0 +12.553720440,1 +12.555031010,0 +12.570394860,1 +12.571572290,0 +12.587040000,1 +12.588278300,0 +12.603702510,1 +12.604883060,0 +12.620337800,1 +12.621538260,0 +12.637023340,1 +12.638231070,0 +12.653703220,1 +12.655002620,0 +12.670372560,1 +12.671628160,0 +12.687031140,1 +12.688316750,0 +12.703706760,1 +12.704904510,0 +12.720346400,1 +12.721493290,0 +12.732411230,1 +12.832410290,0 +12.837122560,1 +12.838159910,0 +12.853657830,1 +12.854985690,0 +12.870353020,1 +12.871616080,0 +12.886986770,1 +12.888111960,0 +12.903670630,1 +12.904862060,0 +12.920304450,1 +12.921481950,0 +12.937106970,1 +12.938139000,0 +12.953751160,1 +12.954873110,0 +12.970454520,1 +12.972086720,0 +12.987095970,1 +12.988806270,0 +13.003617370,1 +13.005460960,0 +13.020328110,1 +13.021391770,0 +13.036974890,1 +13.038247570,0 +13.053615720,1 +13.054951460,0 +13.070294000,1 +13.071624170,0 +13.086935800,1 +13.088237640,0 +13.103600930,1 +13.104757910,0 +13.120292840,1 +13.121542500,0 +13.136958090,1 +13.138335200,0 +13.153613730,1 +13.154839390,0 +13.170276270,1 +13.171489940,0 +13.186924300,1 +13.188221140,0 +13.203605180,1 +13.204829150,0 +13.220263950,1 +13.221433680,0 +13.236945910,1 +13.238235270,0 +13.253590890,1 +13.254873830,0 +13.270275650,1 +13.271415930,0 +13.286914190,1 +13.288210540,0 +13.303594340,1 +13.304972970,0 +13.320236740,1 +13.321342800,0 +13.336925280,1 +13.338153530,0 +13.353587440,1 +13.354871190,0 +13.370267450,1 +13.371453760,0 +13.386894110,1 +13.388005800,0 +13.403592650,1 +13.404753300,0 +13.420215310,1 +13.421549340,0 +13.436894670,1 +13.437998900,0 +13.453577920,1 +13.454676230,0 +13.470231130,1 +13.471316490,0 +13.486848280,1 +13.488147580,0 +13.503536270,1 +13.504668350,0 +13.520214270,1 +13.521428820,0 +13.536870390,1 +13.538080810,0 +13.553525360,1 +13.554799550,0 +13.570212360,1 +13.571333210,0 +13.586863960,1 +13.588104570,0 +13.603547650,1 +13.604797080,0 +13.620179850,1 +13.621355040,0 +13.636844490,1 +13.638227520,0 +13.653527650,1 +13.654691180,0 +13.670193990,1 +13.671590730,0 +13.686824100,1 +13.688136600,0 +13.703500360,1 +13.704724330,0 +13.720167620,1 +13.721509510,0 +13.732401870,1 +13.832400940,0 +13.836819920,1 +13.838094220,0 +13.853478860,1 +13.854686050,0 +13.870190940,1 +13.871261080,0 +13.886826930,1 +13.888099130,0 +13.903481210,1 +13.904694400,0 +13.920132110,1 +13.921474720,0 +13.936806300,1 +13.938078920,0 +13.953479180,1 +13.954666710,0 +13.970171440,1 +13.971226950,0 +13.986812450,1 +13.988064250,0 +14.003453170,1 +14.004597590,0 +14.020124150,1 +14.021344120,0 +14.036802660,1 +14.038007270,0 +14.053458040,1 +14.054611620,0 +14.070092120,1 +14.071290930,0 +14.086774320,1 +14.087853430,0 +14.103455810,1 +14.104810860,0 +14.120110080,1 +14.121217810,0 +14.136755850,1 +14.138002910,0 +14.153434720,1 +14.154709560,0 +14.170116170,1 +14.171315030,0 +14.186761620,1 +14.188116240,0 +14.203414380,1 +14.204682860,0 +14.220074030,1 +14.221303870,0 +14.236740710,1 +14.238007750,0 +14.253407250,1 +14.254579390,0 +14.270095410,1 +14.271334560,0 +14.286726730,1 +14.287984940,0 +14.303399090,1 +14.304564130,0 +14.320065620,1 +14.321218750,0 +14.336750780,1 +14.338115520,0 +14.353410090,1 +14.354660780,0 +14.370057390,1 +14.371265350,0 +14.386712170,1 +14.388020400,0 +14.403384790,1 +14.404485720,0 +14.420034800,1 +14.421307410,0 +14.436712730,1 +14.438016210,0 +14.453385410,1 +14.454582710,0 +14.470031480,1 +14.471290690,0 +14.486716410,1 +14.487854020,0 +14.503368360,1 +14.504605060,0 +14.520013750,1 +14.521255020,0 +14.536697330,1 +14.537909740,0 +14.553365400,1 +14.554497420,0 +14.570047760,1 +14.571114470,0 +14.586691800,1 +14.587877790,0 +14.603335580,1 +14.604541240,0 +14.620015110,1 +14.621153800,0 +14.636679160,1 +14.637855930,0 +14.653342480,1 +14.654622690,0 +14.670010400,1 +14.671362040,0 +14.686678120,1 +14.687893260,0 +14.703329870,1 +14.704576250,0 +14.719971570,1 +14.721279270,0 +14.732392520,1 +14.832391600,0 +14.836628460,1 +14.837802200,0 +14.853298970,1 +14.854556470,0 +14.869956870,1 +14.871133220,0 +14.886629690,1 +14.887713100,0 +14.903276570,1 +14.904372570,0 +14.919925170,1 +14.921199360,0 +14.936605100,1 +14.937819690,0 +14.953297360,1 +14.954458500,0 +14.969968470,1 +14.971222580,0 +14.986585840,1 +14.988020600,0 +15.003270160,1 +15.004591100,0 +15.020009340,1 +15.021170580,0 +15.036685610,1 +15.037792540,0 +15.053268220,1 +15.054451630,0 +15.070053770,1 +15.071693750,0 +15.086588010,1 +15.087950140,0 +15.103362350,1 +15.104496360,0 +15.119916570,1 +15.121662180,0 +15.136700680,1 +15.138252660,0 +15.153247510,1 +15.154355890,0 +15.169899600,1 +15.171175060,0 +15.186589300,1 +15.187761400,0 +15.203227850,1 +15.204336060,0 +15.219883830,1 +15.221117130,0 +15.236544170,1 +15.237721900,0 +15.253204180,1 +15.254462900,0 +15.269880520,1 +15.271150460,0 +15.286558440,1 +15.287851010,0 +15.303183320,1 +15.304430810,0 +15.319840390,1 +15.321050160,0 +15.336528060,1 +15.337672760,0 +15.353176370,1 +15.354421230,0 +15.369875340,1 +15.371076500,0 +15.386524960,1 +15.387734210,0 +15.403168450,1 +15.404272450,0 +15.419819110,1 +15.421114510,0 +15.436526370,1 +15.437589310,0 +15.453167970,1 +15.454264750,0 +15.469852850,1 +15.470940780,0 +15.486521210,1 +15.487746440,0 +15.503184240,1 +15.504388680,0 +15.519826380,1 +15.521033360,0 +15.536513630,1 +15.537605420,0 +15.553170840,1 +15.554428350,0 +15.569817460,1 +15.571073650,0 +15.586465530,1 +15.587707170,0 +15.603144510,1 +15.604445300,0 +15.619813560,1 +15.620966340,0 +15.636465960,1 +15.637604690,0 +15.653141620,1 +15.654289690,0 +15.669826800,1 +15.671118370,0 +15.686475200,1 +15.687542680,0 +15.703128210,1 +15.704335380,0 +15.719756410,1 +15.721065050,0 +15.732383180,1 +15.832382240,0 +15.836429370,1 +15.837688920,0 +15.853082100,1 +15.854280930,0 +15.869752160,1 +15.870818900,0 +15.886399800,1 +15.887578630,0 +15.903070960,1 +15.904341590,0 +15.919750410,1 +15.920830450,0 +15.936402420,1 +15.937611180,0 +15.953073220,1 +15.954223980,0 +15.969749040,1 +15.970958930,0 +15.986403940,1 +15.987580250,0 +16.003057180,1 +16.004251830,0 +16.019702540,1 +16.020994010,0 +16.036375820,1 +16.037487000,0 +16.053043090,1 +16.054266940,0 +16.069712390,1 +16.070832280,0 +16.086391200,1 +16.087608500,0 +16.103034260,1 +16.104200310,0 +16.119713120,1 +16.120988950,0 +16.136382070,1 +16.137597650,0 +16.153006280,1 +16.154211010,0 +16.169661110,1 +16.170828070,0 +16.186342160,1 +16.187549360,0 +16.203017750,1 +16.204149890,0 +16.219695760,1 +16.220856770,0 +16.236348740,1 +16.237652510,0 +16.253002180,1 +16.254161770,0 +16.269704970,1 +16.271398780,0 +16.286354790,1 +16.287504990,0 +16.302986130,1 +16.304085080,0 +16.319669410,1 +16.320793680,0 +16.336310330,1 +16.337513150,0 +16.352987640,1 +16.354410990,0 +16.369647790,1 +16.370916900,0 +16.386296130,1 +16.387570300,0 +16.403095900,1 +16.404154000,0 +16.419630090,1 +16.420809140,0 +16.436311960,1 +16.437425480,0 +16.452944080,1 +16.454083380,0 +16.469632040,1 +16.470756650,0 +16.486301030,1 +16.487403290,0 +16.502940870,1 +16.504153300,0 +16.519624730,1 +16.520779160,0 +16.536261770,1 +16.537516330,0 +16.552941790,1 +16.554177240,0 +16.569630980,1 +16.570651100,0 +16.586265870,1 +16.587514900,0 +16.602928100,1 +16.604101270,0 +16.619606240,1 +16.620790840,0 +16.636267770,1 +16.637420940,0 +16.652918860,1 +16.654097030,0 +16.669611470,1 +16.670818730,0 +16.686227200,1 +16.687538350,0 +16.702875200,1 +16.704146570,0 +16.719563600,1 +16.720896430,0 +16.732373830,1 +16.832372900,0 +16.836218540,1 +16.837515370,0 +16.852837520,1 +16.854120420,0 +16.869542710,1 +16.870729340,0 +16.886200430,1 +16.887438460,0 +16.902851190,1 +16.904109990,0 +16.919506120,1 +16.920861990,0 +16.936210820,1 +16.937361660,0 +16.952848280,1 +16.954005290,0 +16.969506090,1 +16.970634240,0 +16.986182070,1 +16.987427010,0 +17.002843650,1 +17.003893600,0 +17.019506890,1 +17.020665680,0 +17.036187040,1 +17.037341520,0 +17.052802400,1 +17.054085420,0 +17.069466280,1 +17.070574550,0 +17.086188900,1 +17.087330550,0 +17.102809130,1 +17.104127410,0 +17.119477170,1 +17.120595740,0 +17.136142940,1 +17.137408980,0 +17.152830140,1 +17.154094210,0 +17.169493370,1 +17.170602110,0 +17.186141840,1 +17.187232390,0 +17.202754750,1 +17.204109190,0 +17.219462840,1 +17.220643000,0 +17.236114110,1 +17.237312500,0 +17.252787320,1 +17.254137460,0 +17.269446690,1 +17.270604510,0 +17.286096220,1 +17.287321390,0 +17.302748290,1 +17.303968090,0 +17.319417380,1 +17.320556100,0 +17.336077670,1 +17.337275260,0 +17.352770590,1 +17.353866620,0 +17.369418100,1 +17.370651770,0 +17.386063520,1 +17.387387110,0 +17.402765460,1 +17.403912060,0 +17.419387840,1 +17.420676830,0 +17.436059570,1 +17.437229100,0 +17.452718560,1 +17.453998400,0 +17.469406690,1 +17.470505110,0 +17.486034300,1 +17.487302300,0 +17.502710620,1 +17.503808050,0 +17.519349520,1 +17.520529350,0 +17.536032730,1 +17.537116520,0 +17.552709910,1 +17.553838490,0 +17.569384510,1 +17.570430160,0 +17.586023990,1 +17.587102860,0 +17.602684630,1 +17.603915420,0 +17.619329740,1 +17.620436530,0 +17.636014040,1 +17.637176510,0 +17.652656210,1 +17.654022610,0 +17.669357180,1 +17.670673320,0 +17.685998510,1 +17.687199260,0 +17.702654140,1 +17.703863590,0 +17.719328260,1 +17.720449720,0 +17.732364490,1 +17.832363560,0 +17.835955210,1 +17.837074530,0 +17.852623160,1 +17.853793690,0 +17.869294570,1 +17.870359970,0 +17.885933020,1 +17.887250960,0 +17.902632020,1 +17.903953480,0 +17.919283070,1 +17.920433060,0 +17.935912470,1 +17.937225820,0 +17.952577130,1 +17.953968470,0 +17.969261450,1 +17.970305770,0 +17.985928460,1 +17.987148890,0 +18.002566340,1 +18.003921180,0 +18.019240930,1 +18.020312540,0 +18.035922730,1 +18.037118080,0 +18.052682120,1 +18.053809580,0 +18.069216790,1 +18.070441520,0 +18.085967970,1 +18.087071350,0 +18.102721100,1 +18.103667170,0 +18.119221610,1 +18.120916620,0 +18.135974820,1 +18.137580010,0 +18.152566630,1 +18.154343580,0 +18.169303940,1 +18.170462880,0 +18.185866130,1 +18.187659160,0 +18.202659760,1 +18.204299850,0 +18.219190780,1 +18.220368690,0 +18.235853930,1 +18.237061210,0 +18.252533880,1 +18.253703830,0 +18.269182870,1 +18.270355000,0 +18.285856360,1 +18.287068260,0 +18.302519580,1 +18.303585800,0 +18.319157160,1 +18.320386870,0 +18.335792940,1 +18.337100710,0 +18.352509070,1 +18.353563760,0 +18.369185250,1 +18.370281540,0 +18.385786460,1 +18.387024990,0 +18.402482660,1 +18.403809370,0 +18.419166970,1 +18.420429860,0 +18.435798920,1 +18.437123390,0 +18.452482090,1 +18.453715540,0 +18.469149430,1 +18.470441600,0 +18.485803580,1 +18.486975070,0 +18.502453960,1 +18.503834840,0 +18.519121970,1 +18.520310480,0 +18.535769010,1 +18.536953410,0 +18.552457540,1 +18.553667220,0 +18.569134850,1 +18.570280350,0 +18.585740290,1 +18.587063780,0 +18.602448290,1 +18.603618080,0 +18.619090100,1 +18.620194730,0 +18.635765610,1 +18.636933850,0 +18.652421840,1 +18.653532640,0 +18.669107880,1 +18.670346320,0 +18.685743700,1 +18.686988210,0 +18.702406550,1 +18.703488200,0 +18.719048750,1 +18.720302060,0 +18.732355150,1 +18.832354210,0 +18.835688210,1 +18.836929020,0 +18.852362310,1 +18.853655110,0 +18.869037540,1 +18.870272020,0 +18.885667340,1 +18.887039560,0 +18.902359410,1 +18.903456230,0 +18.919009850,1 +18.920298860,0 +18.935712590,1 +18.936903720,0 +18.952350390,1 +18.953546570,0 +18.969010350,1 +18.970368260,0 +18.985656160,1 +18.986814350,0 +19.002309960,1 +19.003482060,0 +19.019135700,1 +19.020080870,0 +19.035632710,1 +19.036917650,0 +19.052315790,1 +19.053485560,0 +19.068967900,1 +19.070168080,0 +19.085640020,1 +19.086828170,0 +19.102304030,1 +19.103600610,0 +19.118939980,1 +19.120165150,0 +19.135615540,1 +19.136916750,0 +19.152283110,1 +19.153580520,0 +19.168936350,1 +19.170131020,0 +19.185623030,1 +19.186719410,0 +19.202254160,1 +19.203659060,0 +19.218923360,1 +19.220239700,0 +19.235568170,1 +19.236699410,0 +19.252250410,1 +19.253574900,0 +19.268948930,1 +19.270288650,0 +19.285582710,1 +19.286841820,0 +19.302235460,1 +19.303526730,0 +19.318893920,1 +19.320185390,0 +19.335572800,1 +19.336736990,0 +19.352212120,1 +19.353426000,0 +19.368872510,1 +19.370155530,0 +19.385535010,1 +19.386735350,0 +19.402213300,1 +19.403449100,0 +19.418869350,1 +19.420031900,0 +19.435515160,1 +19.436732870,0 +19.452168040,1 +19.453555610,0 +19.468860230,1 +19.470165650,0 +19.485523510,1 +19.486648230,0 +19.502184130,1 +19.503315740,0 +19.518833470,1 +19.520026490,0 +19.535509560,1 +19.536617810,0 +19.552169140,1 +19.553356260,0 +19.568836470,1 +19.570017150,0 +19.585454290,1 +19.586745270,0 +19.602148640,1 +19.603333160,0 +19.618816350,1 +19.620046440,0 +19.635464370,1 +19.636802030,0 +19.652139500,1 +19.653310400,0 +19.668791780,1 +19.670042040,0 +19.685438260,1 +19.686621350,0 +19.702110170,1 +19.703363470,0 +19.718785640,1 +19.720039090,0 +19.732345820,1 +19.832344880,0 +19.835422110,1 +19.836604200,0 +19.852047330,1 +19.853267320,0 +19.868756420,1 +19.870052530,0 +19.885389870,1 +19.886640780,0 +19.902061250,1 +19.903235380,0 +19.918705980,1 +19.919960970,0 +19.935395810,1 +19.936507150,0 +19.952059800,1 +19.953328630,0 +19.968721440,1 +19.970010180,0 +19.985384770,1 +19.986564990,0 +20.002044120,1 +20.003190320,0 +20.018690240,1 +20.020013150,0 +20.035360500,1 +20.036589390,0 +20.052031270,1 +20.053192700,0 +20.068689810,1 +20.069923760,0 +20.085336270,1 +20.086427240,0 +20.101985110,1 +20.103282760,0 +20.118666520,1 +20.119891350,0 +20.135342660,1 +20.136487130,0 +20.151993210,1 +20.153204630,0 +20.168668160,1 +20.169934590,0 +20.185305310,1 +20.186585600,0 +20.201988400,1 +20.203273600,0 +20.218643870,1 +20.219932280,0 +20.235304020,1 +20.236457580,0 +20.251967240,1 +20.253128550,0 +20.268629680,1 +20.269716560,0 +20.285277350,1 +20.286593440,0 +20.301978120,1 +20.303105780,0 +20.318621990,1 +20.319986790,0 +20.335425100,1 +20.336519760,0 +20.351966200,1 +20.353095510,0 +20.368632990,1 +20.369771190,0 +20.385273260,1 +20.386485990,0 +20.401915400,1 +20.403173540,0 +20.418589830,1 +20.419879310,0 +20.435255270,1 +20.436458290,0 +20.451920010,1 +20.453096070,0 +20.468592300,1 +20.469826080,0 +20.485244480,1 +20.486400210,0 +20.501915340,1 +20.503060850,0 +20.518575630,1 +20.519745210,0 +20.535229310,1 +20.536462400,0 +20.551895280,1 +20.553083260,0 +20.568561430,1 +20.569789560,0 +20.585228600,1 +20.586457240,0 +20.601898280,1 +20.603057940,0 +20.618538080,1 +20.619721420,0 +20.635227090,1 +20.636514760,0 +20.651869230,1 +20.653077440,0 +20.668542050,1 +20.669770220,0 +20.685199580,1 +20.686417680,0 +20.701854140,1 +20.703079590,0 +20.718512740,1 +20.719639810,0 +20.732336470,1 +20.832335550,0 +20.835168780,1 +20.836410690,0 +20.851854250,1 +20.853038880,0 +20.868502370,1 +20.869664220,0 +20.885143510,1 +20.886480690,0 +20.901798610,1 +20.903039210,0 +20.918472310,1 +20.919697530,0 +20.935151120,1 +20.936335410,0 +20.951794520,1 +20.953044450,0 +20.968481660,1 +20.969711620,0 +20.985127490,1 +20.986307670,0 +21.001771710,1 +21.003108730,0 +21.018424970,1 +21.019662960,0 +21.035097680,1 +21.036179390,0 +21.051761270,1 +21.052934970,0 +21.068416220,1 +21.069677890,0 +21.085108840,1 +21.086430090,0 +21.101755640,1 +21.103088470,0 +21.118430170,1 +21.119618580,0 +21.135132910,1 +21.136285780,0 +21.151749370,1 +21.152869790,0 +21.168417700,1 +21.169855210,0 +21.185050920,1 +21.186373700,0 +21.201720350,1 +21.202898530,0 +21.218386440,1 +21.219749790,0 +21.235029530,1 +21.236252970,0 +21.251730220,1 +21.252887500,0 +21.268363960,1 +21.269713430,0 +21.285046550,1 +21.286283990,0 +21.301700760,1 +21.302864580,0 +21.318359550,1 +21.319514870,0 +21.335003270,1 +21.336287410,0 +21.351665790,1 +21.352904270,0 +21.368346400,1 +21.369533910,0 +21.384998140,1 +21.386357250,0 +21.401683590,1 +21.402868320,0 +21.418336840,1 +21.419536390,0 +21.435008150,1 +21.436160470,0 +21.451645770,1 +21.452790320,0 +21.468342570,1 +21.469655250,0 +21.484990270,1 +21.486061960,0 +21.501626770,1 +21.502850710,0 +21.518313620,1 +21.520169870,0 +21.534946220,1 +21.536110050,0 +21.551614880,1 +21.552770050,0 +21.568281930,1 +21.569427530,0 +21.584957790,1 +21.586157380,0 +21.601620890,1 +21.602715950,0 +21.618243020,1 +21.619446060,0 +21.634901520,1 +21.636134500,0 +21.651573940,1 +21.652789970,0 +21.668269930,1 +21.669687990,0 +21.684912890,1 +21.686190370,0 +21.701588190,1 +21.702817060,0 +21.718226700,1 +21.719433930,0 +21.732327140,1 +21.832326230,0 +21.834873430,1 +21.836086890,0 +21.851524700,1 +21.852741430,0 +21.868178420,1 +21.869430310,0 +21.884864620,1 +21.886029100,0 +21.901529070,1 +21.902778650,0 +21.918176910,1 +21.919346790,0 +21.934848050,1 +21.936123780,0 +21.951503280,1 +21.952785960,0 +21.968159080,1 +21.969335450,0 +21.984825480,1 +21.986074790,0 +22.001487580,1 +22.002697150,0 +22.018135850,1 +22.019323460,0 +22.034816160,1 +22.036078240,0 +22.051469080,1 +22.052672440,0 +22.068143280,1 +22.069210850,0 +22.084791580,1 +22.086037570,0 +22.101464460,1 +22.102789920,0 +22.118114830,1 +22.119918750,0 +22.134767050,1 +22.136115220,0 +22.151439090,1 +22.152522400,0 +22.168128310,1 +22.169323900,0 +22.184746340,1 +22.186537220,0 +22.201431800,1 +22.202736830,0 +22.218107360,1 +22.219325630,0 +22.234729420,1 +22.236081630,0 +22.251431810,1 +22.252564420,0 +22.268095610,1 +22.269392510,0 +22.284744720,1 +22.285927440,0 +22.301404920,1 +22.302710600,0 +22.318058920,1 +22.319345990,0 +22.334718920,1 +22.335904500,0 +22.351384350,1 +22.352573420,0 +22.368093970,1 +22.369320640,0 +22.384728990,1 +22.385901210,0 +22.401353700,1 +22.402498580,0 +22.418029470,1 +22.419275240,0 +22.434684760,1 +22.435922310,0 +22.451352960,1 +22.452525160,0 +22.468066870,1 +22.469226770,0 +22.484669600,1 +22.485868500,0 +22.501341630,1 +22.502566970,0 +22.517996950,1 +22.519254540,0 +22.534641440,1 +22.535897220,0 +22.551323960,1 +22.552577740,0 +22.567983720,1 +22.569127450,0 +22.584649170,1 +22.585833370,0 +22.601342570,1 +22.602538650,0 +22.617949140,1 +22.619156440,0 +22.634648060,1 +22.635886960,0 +22.651303380,1 +22.652524710,0 +22.667991620,1 +22.669144170,0 +22.684607460,1 +22.685897440,0 +22.701277350,1 +22.702366750,0 +22.717944830,1 +22.719208640,0 +22.732317820,1 +22.832316880,0 +22.834618070,1 +22.835769110,0 +22.851267810,1 +22.852523280,0 +22.867929140,1 +22.869129420,0 +22.884586330,1 +22.885837620,0 +22.901258830,1 +22.902540590,0 +22.917889880,1 +22.919152470,0 +22.934573830,1 +22.935782800,0 +22.951227790,1 +22.952446480,0 +22.967889860,1 +22.969118180,0 +22.984673010,1 +22.985842100,0 +23.001229360,1 +23.002404890,0 +23.017865320,1 +23.019227040,0 +23.034514500,1 +23.035759380,0 +23.051206730,1 +23.052514040,0 +23.067868290,1 +23.069140810,0 +23.084513370,1 +23.085732680,0 +23.101191560,1 +23.102438310,0 +23.117856730,1 +23.118942750,0 +23.134515610,1 +23.135639470,0 +23.151170620,1 +23.152377790,0 +23.167831930,1 +23.169078860,0 +23.184512850,1 +23.185701500,0 +23.201148150,1 +23.202373240,0 +23.217774100,1 +23.219090220,0 +23.234503620,1 +23.235548470,0 +23.251141270,1 +23.252297330,0 +23.267852130,1 +23.269134960,0 +23.284480540,1 +23.285701820,0 +23.301127210,1 +23.302570560,0 +23.317792640,1 +23.319087750,0 +23.334471120,1 +23.335533470,0 +23.351104400,1 +23.352401980,0 +23.367781590,1 +23.368941270,0 +23.384453940,1 +23.385624160,0 +23.401101250,1 +23.402421000,0 +23.417780140,1 +23.419065590,0 +23.434436350,1 +23.435661630,0 +23.451091880,1 +23.452321480,0 +23.467781840,1 +23.468984810,0 +23.484413980,1 +23.485556850,0 +23.501046810,1 +23.502304250,0 +23.517748010,1 +23.519089220,0 +23.534422060,1 +23.535648590,0 +23.551082100,1 +23.552349260,0 +23.567762940,1 +23.568999900,0 +23.584409400,1 +23.585626750,0 +23.601065230,1 +23.602332530,0 +23.617721900,1 +23.618875700,0 +23.634381410,1 +23.635756390,0 +23.651055460,1 +23.652160680,0 +23.667719440,1 +23.668916810,0 +23.684371160,1 +23.685610440,0 +23.701029190,1 +23.702265520,0 +23.717679650,1 +23.718954330,0 +23.732308480,1 +23.832307560,0 +23.834342670,1 +23.835614520,0 +23.850989010,1 +23.852207300,0 +23.867644400,1 +23.868992400,0 +23.884312380,1 +23.885639470,0 +23.900972940,1 +23.902242220,0 +23.917622360,1 +23.918841950,0 +23.934269610,1 +23.935338650,0 +23.950912510,1 +23.952177080,0 +23.967623910,1 +23.968704270,0 +23.984284140,1 +23.985464080,0 +24.000916430,1 +24.002115320,0 +24.017602580,1 +24.018866910,0 +24.034222620,1 +24.035387890,0 +24.050904570,1 +24.052123210,0 +24.067580270,1 +24.068873370,0 +24.084233380,1 +24.085509220,0 +24.100886000,1 +24.102120640,0 +24.117578280,1 +24.118807800,0 +24.134243760,1 +24.135528090,0 +24.150881010,1 +24.152165690,0 +24.167570010,1 +24.168829360,0 +24.184216880,1 +24.185371120,0 +24.200885870,1 +24.202017690,0 +24.217519080,1 +24.218810730,0 +24.234189300,1 +24.235340190,0 +24.250835680,1 +24.252154310,0 +24.267516530,1 +24.268838320,0 +24.284163330,1 +24.285509950,0 +24.300906450,1 +24.302106220,0 +24.317510590,1 +24.318652410,0 +24.334225560,1 +24.335242380,0 +24.350813740,1 +24.351994910,0 +24.367485400,1 +24.368692660,0 +24.384139370,1 +24.385235850,0 +24.400811070,1 +24.402058090,0 +24.417458790,1 +24.418763410,0 +24.434133120,1 +24.435430490,0 +24.450748460,1 +24.452067650,0 +24.467456900,1 +24.468519270,0 +24.484079490,1 +24.485275690,0 +24.500769460,1 +24.501950000,0 +24.517435210,1 +24.518679990,0 +24.534087250,1 +24.535331240,0 +24.550767160,1 +24.551960250,0 +24.567436270,1 +24.568603730,0 +24.584085860,1 +24.585433920,0 +24.600754460,1 +24.601970650,0 +24.617432190,1 +24.618651680,0 +24.634060810,1 +24.635354280,0 +24.650738470,1 +24.651933400,0 +24.667401570,1 +24.668521580,0 +24.684059000,1 +24.685130740,0 +24.700722530,1 +24.701907970,0 +24.717398190,1 +24.718620400,0 +24.732299150,1 +24.832298230,0 +24.834033930,1 +24.835170000,0 +24.850630470,1 +24.851879480,0 +24.867358590,1 +24.868635200,0 +24.883981110,1 +24.885205860,0 +24.900651340,1 +24.901882890,0 +24.917318660,1 +24.918579090,0 +24.933929410,1 +24.935137320,0 +24.950610450,1 +24.951911370,0 +24.967268970,1 +24.968540640,0 +24.983957150,1 +24.985043820,0 +25.000606950,1 +25.001788040,0 +25.017284220,1 +25.018469540,0 +25.033954820,1 +25.035184360,0 +25.050593370,1 +25.051956910,0 +25.067265390,1 +25.068558370,0 +25.083896010,1 +25.085143010,0 +25.100666460,1 +25.101686880,0 +25.117234080,1 +25.118442210,0 +25.133897010,1 +25.135114930,0 +25.150661850,1 +25.151954590,0 +25.167265650,1 +25.168471500,0 +25.183899210,1 +25.185117410,0 +25.200545530,1 +25.201717710,0 +25.217218110,1 +25.218518780,0 +25.233892500,1 +25.235124960,0 +25.250572750,1 +25.251836630,0 +25.267232540,1 +25.268450710,0 +25.283864330,1 +25.285192170,0 +25.300520970,1 +25.301741430,0 +25.317195040,1 +25.318436690,0 +25.333838630,1 +25.335009500,0 +25.350524700,1 +25.351743660,0 +25.367199390,1 +25.368413870,0 +25.383823470,1 +25.385106490,0 +25.400484390,1 +25.401718650,0 +25.417176570,1 +25.418390580,0 +25.433828140,1 +25.434998160,0 +25.450474020,1 +25.452227850,0 +25.467151840,1 +25.468225120,0 +25.483815520,1 +25.484997620,0 +25.500482650,1 +25.501716510,0 +25.517122870,1 +25.518290650,0 +25.533815450,1 +25.534900400,0 +25.550458590,1 +25.551742810,0 +25.567134820,1 +25.568267900,0 +25.583764870,1 +25.585001590,0 +25.600461000,1 +25.601528200,0 +25.617129070,1 +25.618374540,0 +25.633750370,1 +25.635087350,0 +25.650431760,1 +25.651611750,0 +25.667105840,1 +25.668482090,0 +25.683748310,1 +25.684892740,0 +25.700442580,1 +25.701623120,0 +25.717114550,1 +25.718298880,0 +25.732289830,1 +25.832288900,0 +25.833782670,1 +25.834825010,0 +25.850363920,1 +25.851760290,0 +25.867211590,1 +25.868164300,0 +25.883690260,1 +25.884771040,0 +25.900360360,1 +25.901553680,0 +25.917033090,1 +25.918237330,0 +25.933701200,1 +25.934838610,0 +25.950364850,1 +25.951548560,0 +25.966994690,1 +25.968189640,0 +25.983670370,1 +25.984886620,0 +26.000337180,1 +26.001540180,0 +26.016993170,1 +26.018215550,0 +26.033666100,1 +26.034832630,0 +26.050309530,1 +26.051580770,0 +26.066983080,1 +26.068121070,0 +26.083634030,1 +26.084813310,0 +26.100289930,1 +26.101522240,0 +26.116959150,1 +26.118223420,0 +26.133638320,1 +26.134952850,0 +26.150286150,1 +26.151406860,0 +26.166971860,1 +26.168308850,0 +26.183611530,1 +26.184913410,0 +26.200267360,1 +26.201496460,0 +26.216941850,1 +26.218314350,0 +26.233604470,1 +26.234886120,0 +26.250261590,1 +26.251523250,0 +26.266908040,1 +26.268276570,0 +26.283588190,1 +26.284766850,0 +26.300249520,1 +26.301588300,0 +26.316880240,1 +26.318042900,0 +26.333579780,1 +26.334781360,0 +26.350248550,1 +26.351297390,0 +26.366923030,1 +26.368131840,0 +26.383554300,1 +26.384723760,0 +26.400214870,1 +26.401436920,0 +26.416874040,1 +26.418079630,0 +26.433549870,1 +26.434790510,0 +26.450198470,1 +26.451460120,0 +26.466894260,1 +26.468152520,0 +26.483530240,1 +26.484758800,0 +26.500214560,1 +26.501508190,0 +26.516862100,1 +26.518066750,0 +26.533507810,1 +26.534721870,0 +26.550191310,1 +26.551413720,0 +26.566841840,1 +26.568127080,0 +26.583513400,1 +26.584727100,0 +26.600178620,1 +26.601390360,0 +26.616831920,1 +26.618032850,0 +26.633491190,1 +26.634591450,0 +26.650170050,1 +26.651333350,0 +26.666812130,1 +26.668075940,0 +26.683470570,1 +26.684748580,0 +26.700157110,1 +26.701413370,0 +26.716810940,1 +26.717886490,0 +26.732280490,1 +26.832279580,0 +26.833568980,1 +26.834539270,0 +26.850061170,1 +26.851264950,0 +26.866733040,1 +26.867887670,0 +26.883433310,1 +26.884728930,0 +26.900065310,1 +26.901241280,0 +26.916741530,1 +26.917929340,0 +26.933392380,1 +26.934605370,0 +26.950058690,1 +26.951285290,0 +26.966674200,1 +26.967823630,0 +26.983374210,1 +26.984732870,0 +27.000035190,1 +27.001342310,0 +27.016694950,1 +27.017890930,0 +27.033369970,1 +27.034618610,0 +27.050025300,1 +27.051324550,0 +27.066701900,1 +27.067982530,0 +27.083359180,1 +27.084518070,0 +27.099984750,1 +27.101225480,0 +27.116781160,1 +27.118524600,0 +27.133439890,1 +27.134552560,0 +27.150114740,1 +27.151211180,0 +27.166806800,1 +27.167886870,0 +27.183449160,1 +27.185114440,0 +27.200088570,1 +27.201212760,0 +27.216723170,1 +27.217762980,0 +27.233313750,1 +27.234610730,0 +27.249953190,1 +27.251190400,0 +27.266658770,1 +27.267769880,0 +27.283274400,1 +27.284625650,0 +27.299946700,1 +27.301242130,0 +27.316607850,1 +27.317855230,0 +27.333264910,1 +27.334476520,0 +27.349925930,1 +27.351085500,0 +27.366601870,1 +27.367857830,0 +27.383250870,1 +27.384587530,0 +27.399924060,1 +27.401234390,0 +27.416575530,1 +27.417860160,0 +27.433262690,1 +27.434489030,0 +27.449881590,1 +27.451184950,0 +27.466600190,1 +27.467733680,0 +27.483215140,1 +27.484454060,0 +27.499859580,1 +27.501122330,0 +27.516550040,1 +27.517696750,0 +27.533194620,1 +27.534401860,0 +27.549860330,1 +27.551081480,0 +27.566566370,1 +27.567904070,0 +27.583217000,1 +27.584354760,0 +27.599862140,1 +27.600937620,0 +27.616513780,1 +27.617735560,0 +27.633189630,1 +27.634485300,0 +27.649859790,1 +27.651144350,0 +27.666526670,1 +27.667580610,0 +27.683160650,1 +27.684362810,0 +27.699840850,1 +27.701046080,0 +27.716477150,1 +27.717676000,0 +27.732271170,1 +27.832270260,0 +27.833305150,1 +27.834340700,0 +27.849773200,1 +27.851030870,0 +27.866474320,1 +27.867646430,0 +27.883100760,1 +27.884192350,0 +27.899760150,1 +27.901108020,0 +27.916414950,1 +27.917640360,0 +27.933062980,1 +27.934429270,0 +27.949730560,1 +27.951025950,0 +27.966439130,1 +27.967781020,0 +27.983066840,1 +27.984293350,0 +27.999740880,1 +28.001010850,0 +28.016407950,1 +28.017566310,0 +28.033045090,1 +28.034232890,0 +28.049719600,1 +28.050912300,0 +28.066424810,1 +28.067609570,0 +28.083059200,1 +28.084297790,0 +28.099848530,1 +28.101019770,0 +28.116367190,1 +28.117568010,0 +28.133179430,1 +28.134811680,0 +28.149681630,1 +28.150934920,0 +28.166384530,1 +28.168184260,0 +28.183157630,1 +28.184241110,0 +28.199851260,1 +28.201286780,0 +28.216474910,1 +28.218055180,0 +28.233132270,1 +28.234807470,0 +28.249736420,1 +28.251022510,0 +28.266512950,1 +28.267846070,0 +28.283004480,1 +28.284240960,0 +28.299763620,1 +28.300974520,0 +28.316297130,1 +28.317533690,0 +28.332974810,1 +28.334229870,0 +28.349689270,1 +28.351416470,0 +28.366465960,1 +28.368157380,0 +28.382961730,1 +28.384789410,0 +28.399746260,1 +28.401373560,0 +28.416292320,1 +28.417594420,0 +28.432934600,1 +28.434135470,0 +28.449612640,1 +28.451459750,0 +28.466423920,1 +28.468065680,0 +28.482941810,1 +28.484539960,0 +28.499752560,1 +28.501383780,0 +28.516253990,1 +28.517490570,0 +28.532940850,1 +28.534141520,0 +28.549592480,1 +28.550728190,0 +28.566223180,1 +28.567355070,0 +28.582878250,1 +28.584081310,0 +28.599551530,1 +28.600866120,0 +28.616204670,1 +28.617325080,0 +28.632884970,1 +28.634221760,0 +28.649542680,1 +28.650726900,0 +28.666226000,1 +28.667381600,0 +28.682862070,1 +28.684098950,0 +28.699529450,1 +28.700604430,0 +28.716191610,1 +28.717430220,0 +28.732261850,1 +28.832260920,0 +28.833094030,1 +28.833823420,0 +28.849473430,1 +28.850555820,0 +28.866187680,1 +28.867417460,0 +28.882805870,1 +28.884051390,0 +28.899471360,1 +28.900685130,0 +28.916132750,1 +28.917340840,0 +28.932810810,1 +28.934007540,0 +28.949444210,1 +28.950750330,0 +28.966099850,1 +28.967287770,0 +28.982755080,1 +28.983963640,0 +28.999435220,1 +29.000806730,0 +29.016098030,1 +29.017335950,0 +29.032737530,1 +29.033978230,0 +29.049408720,1 +29.050609060,0 +29.066077710,1 +29.067340940,0 +29.082704740,1 +29.083879760,0 +29.099378680,1 +29.100605170,0 +29.116069380,1 +29.117249110,0 +29.132803290,1 +29.134077250,0 +29.149400110,1 +29.150599100,0 +29.166059130,1 +29.167417030,0 +29.182720540,1 +29.184193460,0 +29.199356470,1 +29.200626480,0 +29.216051280,1 +29.217294000,0 +29.232697130,1 +29.234036810,0 +29.249358960,1 +29.250687550,0 +29.266017950,1 +29.267242410,0 +29.282672590,1 +29.283984510,0 +29.299338930,1 +29.300588040,0 +29.316001840,1 +29.317826120,0 +29.332651960,1 +29.333902440,0 +29.349337390,1 +29.350479360,0 +29.365964520,1 +29.367159510,0 +29.382652630,1 +29.383831630,0 +29.399298670,1 +29.400503490,0 +29.415985250,1 +29.417269480,0 +29.432771360,1 +29.433828020,0 +29.449298450,1 +29.450660740,0 +29.465926690,1 +29.467174770,0 +29.482640210,1 +29.483847480,0 +29.499272510,1 +29.500494810,0 +29.515936400,1 +29.517124420,0 +29.532571830,1 +29.533858620,0 +29.549294220,1 +29.550468070,0 +29.565910930,1 +29.567387160,0 +29.582586380,1 +29.583868530,0 +29.599245530,1 +29.600400830,0 +29.615922810,1 +29.617336440,0 +29.632565550,1 +29.633795730,0 +29.649218340,1 +29.650446920,0 +29.665891050,1 +29.667214840,0 +29.682552960,1 +29.683855090,0 +29.699220380,1 +29.700316850,0 +29.715883710,1 +29.716964080,0 +29.732252520,1 +29.832251610,0 +29.832947490,1 +29.833407500,0 +29.849223530,1 +29.850373310,0 +29.865823170,1 +29.867074600,0 +29.882503410,1 +29.883717500,0 +29.899128260,1 +29.900336530,0 +29.915816920,1 +29.916898680,0 +29.932501260,1 +29.933654160,0 +29.949137910,1 +29.950284080,0 +29.965789960,1 +29.967077150,0 +29.982452330,1 +29.983527750,0 +29.999115300,1 +30.000351240,0 +30.015792260,1 +30.017038210,0 +30.032460060,1 +30.033802280,0 +30.049122480,1 +30.050269170,0 +30.065765730,1 +30.067068390,0 +30.082443430,1 +30.083737380,0 +30.099087850,1 +30.100293880,0 +30.115743490,1 +30.116964240,0 +30.132426000,1 +30.133628720,0 +30.149088630,1 +30.150375730,0 +30.165733830,1 +30.167131810,0 +30.182422410,1 +30.183477350,0 +30.199065900,1 +30.200295760,0 +30.215713300,1 +30.217097180,0 +30.232372400,1 +30.233684300,0 +30.249045170,1 +30.250340330,0 +30.265718680,1 +30.266866780,0 +30.282367470,1 +30.283680510,0 +30.299043950,1 +30.300334970,0 +30.315694210,1 +30.316944560,0 +30.332376230,1 +30.333807640,0 +30.349050740,1 +30.350300990,0 +30.365667840,1 +30.366916930,0 +30.382370330,1 +30.383489210,0 +30.399006350,1 +30.400330660,0 +30.415672260,1 +30.416781680,0 +30.432327830,1 +30.433532820,0 +30.449008480,1 +30.450079620,0 +30.465642840,1 +30.467237830,0 +30.482306010,1 +30.483534160,0 +30.498979560,1 +30.500134150,0 +30.515631150,1 +30.516935040,0 +30.532303760,1 +30.533533190,0 +30.548950610,1 +30.550245780,0 +30.565618340,1 +30.566792140,0 +30.582277780,1 +30.583359450,0 +30.598960170,1 +30.600731120,0 +30.615602340,1 +30.616832910,0 +30.632322690,1 +30.633538170,0 +30.648952750,1 +30.650135310,0 +30.665604100,1 +30.666928540,0 +30.682258520,1 +30.683625170,0 +30.698936460,1 +30.700171400,0 +30.715589910,1 +30.716934570,0 +30.732242580,1 +30.832242300,0 +30.848881830,1 +30.850302600,0 +30.865557950,1 +30.866794830,0 +30.882215250,1 +30.883450860,0 +30.898843040,1 +30.900074760,0 +30.915514440,1 +30.916877810,0 +30.932198530,1 +30.933365220,0 +30.948855200,1 +30.950075020,0 +30.965502390,1 +30.966700150,0 +30.982186740,1 +30.983415120,0 +30.998833640,1 +31.000162300,0 +31.015477850,1 +31.016737950,0 +31.032160100,1 +31.033460220,0 +31.048828510,1 +31.049907410,0 +31.065501980,1 +31.066808090,0 +31.082140790,1 +31.083517150,0 +31.098800000,1 +31.100084380,0 +31.115452560,1 +31.116703040,0 +31.132132240,1 +31.133445400,0 +31.148796340,1 +31.150158800,0 +31.165447780,1 +31.166631490,0 +31.182115920,1 +31.183490610,0 +31.198767070,1 +31.199898850,0 +31.215443550,1 +31.216797400,0 +31.232096440,1 +31.233314740,0 +31.248772860,1 +31.250074610,0 +31.265427760,1 +31.266717100,0 +31.282056140,1 +31.283281350,0 +31.298736070,1 +31.299966820,0 +31.315396270,1 +31.316604280,0 +31.332059630,1 +31.333217660,0 +31.348714960,1 +31.350053120,0 +31.365377520,1 +31.366640220,0 +31.382041620,1 +31.383269870,0 +31.398703200,1 +31.399958200,0 +31.415378770,1 +31.416664160,0 +31.432038850,1 +31.433397900,0 +31.448707600,1 +31.450091290,0 +31.465348340,1 +31.466749840,0 +31.481999760,1 +31.483252740,0 +31.498650920,1 +31.499904550,0 +31.499963280,1 +31.499968650,0 +31.515334040,1 +31.516619730,0 +31.531986630,1 +31.533260690,0 +31.548657350,1 +31.549903550,0 +31.565324270,1 +31.566658800,0 +31.582005570,1 +31.583204870,0 +31.598656030,1 +31.600077310,0 +31.615326320,1 +31.616639800,0 +31.631958920,1 +31.633224330,0 +31.648714550,1 +31.650293910,0 +31.665280010,1 +31.666449740,0 +31.681980570,1 +31.683063750,0 +31.698616130,1 +31.699867850,0 +31.715296800,1 +31.716572800,0 +31.731951580,1 +31.832232980,0 +31.848572580,1 +31.849727530,0 +31.865243450,1 +31.866385090,0 +31.881889890,1 +31.883186060,0 +31.898573750,1 +31.899800120,0 +31.915193260,1 +31.916485060,0 +31.931836520,1 +31.933210920,0 +31.948555680,1 +31.949828330,0 +31.965190620,1 +31.966454250,0 +31.981858630,1 +31.983046730,0 +31.998501630,1 +31.999823190,0 +32.015189030,1 +32.016465580,0 +32.031831300,1 +32.033065580,0 +32.048519180,1 +32.049854410,0 +32.065182500,1 +32.066483800,0 +32.081822150,1 +32.083108880,0 +32.098480820,1 +32.099867060,0 +32.115161010,1 +32.116334780,0 +32.131830690,1 +32.133178440,0 +32.148495060,1 +32.149838160,0 +32.165147140,1 +32.166372170,0 +32.181814700,1 +32.183207330,0 +32.198442280,1 +32.199816890,0 +32.215113070,1 +32.216410480,0 +32.231788990,1 +32.233269220,0 +32.248450560,1 +32.249719010,0 +32.265126960,1 +32.266311160,0 +32.281779880,1 +32.283129460,0 +32.298445300,1 +32.299738910,0 +32.315076980,1 +32.316406070,0 +32.331754480,1 +32.333072160,0 +32.348450110,1 +32.349785550,0 +32.365085140,1 +32.366507220,0 +32.381751080,1 +32.382998630,0 +32.398425400,1 +32.399803790,0 +32.415075050,1 +32.416333860,0 +32.431721590,1 +32.433068610,0 +32.448413410,1 +32.449794930,0 +32.465066780,1 +32.466295670,0 +32.481704170,1 +32.482796240,0 +32.498371670,1 +32.499676370,0 +32.515056260,1 +32.516268330,0 +32.531707410,1 +32.532985450,0 +32.548373470,1 +32.549582150,0 +32.565037030,1 +32.566283280,0 +32.581676110,1 +32.583054980,0 +32.598357450,1 +32.599756960,0 +32.615035820,1 +32.616225740,0 +32.631681630,1 +32.633060870,0 +32.648349300,1 +32.649711440,0 +32.664969510,1 +32.666215800,0 +32.681673770,1 +32.682937730,0 +32.698318640,1 +32.699697590,0 +32.714985760,1 +32.716377730,0 +32.731648390,1 +32.832223670,0 +32.848278540,1 +32.849512840,0 +32.864930900,1 +32.866225760,0 +32.881598260,1 +32.882855720,0 +32.898276890,1 +32.899519140,0 +32.914929270,1 +32.916158300,0 +32.931566610,1 +32.932812100,0 +32.948270620,1 +32.949751590,0 +32.964917460,1 +32.966170430,0 +32.981563280,1 +32.982884870,0 +32.998221570,1 +32.999603630,0 +33.014893370,1 +33.016253620,0 +33.031566860,1 +33.032858170,0 +33.048220860,1 +33.049472700,0 +33.064886240,1 +33.066163190,0 +33.081537200,1 +33.082704340,0 +33.098192160,1 +33.099543930,0 +33.114861010,1 +33.116131020,0 +33.131540790,1 +33.132727320,0 +33.148194310,1 +33.149400200,0 +33.164855200,1 +33.166216900,0 +33.181532440,1 +33.182850190,0 +33.198167540,1 +33.199389180,0 +33.214849970,1 +33.216060250,0 +33.231502280,1 +33.232817800,0 +33.248165650,1 +33.249525850,0 +33.264809460,1 +33.266153650,0 +33.281481430,1 +33.282915280,0 +33.298136280,1 +33.299244350,0 +33.314807100,1 +33.316204310,0 +33.331466210,1 +33.332851420,0 +33.348121090,1 +33.349344230,0 +33.364791130,1 +33.366108240,0 +33.381464720,1 +33.382617540,0 +33.398111380,1 +33.399303720,0 +33.414772540,1 +33.416118010,0 +33.431471460,1 +33.432773230,0 +33.448138680,1 +33.449459020,0 +33.464757890,1 +33.466216800,0 +33.481416010,1 +33.482779320,0 +33.498073670,1 +33.499233310,0 +33.514761880,1 +33.515929850,0 +33.531408820,1 +33.532603310,0 +33.548077400,1 +33.549239440,0 +33.564721870,1 +33.566061390,0 +33.581419810,1 +33.582649820,0 +33.598062490,1 +33.599245520,0 +33.614718110,1 +33.616410580,0 +33.631347810,1 +33.632793820,0 +33.648088840,1 +33.649218610,0 +33.664708170,1 +33.666120550,0 +33.681383570,1 +33.682687580,0 +33.698018050,1 +33.699354200,0 +33.714682670,1 +33.715905640,0 +33.731352490,1 +33.832214360,0 +33.847995600,1 +33.849264020,0 +33.864638420,1 +33.865801730,0 +33.881307140,1 +33.882569260,0 +33.897991210,1 +33.899338600,0 +33.914634880,1 +33.915925640,0 +33.931305530,1 +33.932526540,0 +33.947981890,1 +33.949168220,0 +33.964627200,1 +33.965957350,0 +33.981237260,1 +33.982673450,0 +33.997935800,1 +33.999195930,0 +34.014580960,1 +34.015972430,0 +34.031212610,1 +34.032622610,0 +34.047950790,1 +34.049274640,0 +34.064568730,1 +34.065899560,0 +34.081265560,1 +34.082525270,0 +34.097924040,1 +34.099184160,0 +34.114566380,1 +34.115801350,0 +34.131248930,1 +34.132422690,0 +34.147910650,1 +34.149065720,0 +34.164556980,1 +34.165766420,0 +34.181341380,1 +34.182439530,0 +34.197896340,1 +34.199146170,0 +34.214649200,1 +34.216417570,0 +34.231214630,1 +34.232301330,0 +34.248003110,1 +34.249749500,0 +34.264517190,1 +34.266386200,0 +34.281273470,1 +34.282455610,0 +34.298015420,1 +34.299620540,0 +34.314616000,1 +34.316442970,0 +34.331308810,1 +34.332350740,0 +34.347832700,1 +34.349086850,0 +34.364497190,1 +34.365901880,0 +34.381168450,1 +34.382430100,0 +34.397812190,1 +34.399000070,0 +34.414485460,1 +34.415854200,0 +34.431144320,1 +34.432419240,0 +34.447799190,1 +34.449048950,0 +34.464483670,1 +34.465666260,0 +34.481136750,1 +34.482325200,0 +34.497793130,1 +34.499000650,0 +34.514460100,1 +34.515715100,0 +34.531126480,1 +34.532326680,0 +34.547771660,1 +34.549181090,0 +34.564453850,1 +34.565833090,0 +34.581108150,1 +34.582366350,0 +34.597765510,1 +34.598954020,0 +34.614441870,1 +34.615759540,0 +34.631091960,1 +34.632325570,0 +34.647764310,1 +34.649055710,0 +34.664422520,1 +34.665703750,0 +34.681081990,1 +34.682428110,0 +34.697749210,1 +34.698827670,0 +34.714384110,1 +34.715622760,0 +34.731078590,1 +34.732162470,0 +34.732205970,1 +34.832205040,0 +34.847663850,1 +34.849026440,0 +34.864364920,1 +34.865551810,0 +34.881020200,1 +34.882193920,0 +34.897668090,1 +34.898907240,0 +34.914344600,1 +34.915539890,0 +34.930974490,1 +34.932375830,0 +34.947684870,1 +34.948942440,0 +34.964312760,1 +34.965462920,0 +34.981004040,1 +34.982172040,0 +34.997644770,1 +34.999019500,0 +35.014331600,1 +35.015452830,0 +35.030975270,1 +35.032158790,0 +35.047636980,1 +35.048950380,0 +35.064307470,1 +35.065626320,0 +35.080971120,1 +35.082321220,0 +35.097602420,1 +35.099039290,0 +35.114295120,1 +35.115493970,0 +35.130931640,1 +35.132261930,0 +35.147627130,1 +35.148937290,0 +35.164279970,1 +35.165437010,0 +35.180954830,1 +35.182050560,0 +35.197588920,1 +35.198905320,0 +35.214252300,1 +35.215481470,0 +35.230926140,1 +35.232115190,0 +35.247581430,1 +35.248849590,0 +35.264244670,1 +35.265419870,0 +35.280899190,1 +35.282183370,0 +35.297565170,1 +35.298901820,0 +35.314219900,1 +35.315567750,0 +35.330888890,1 +35.332222460,0 +35.347556130,1 +35.348898230,0 +35.364200410,1 +35.365573550,0 +35.380881770,1 +35.382128000,0 +35.397534930,1 +35.398916440,0 +35.414199530,1 +35.415383080,0 +35.430853150,1 +35.432093900,0 +35.447537240,1 +35.448999400,0 +35.464235550,1 +35.465343530,0 +35.480859430,1 +35.482253460,0 +35.497507670,1 +35.498669220,0 +35.514165730,1 +35.515458140,0 +35.530834080,1 +35.532070680,0 +35.547521660,1 +35.548784410,0 +35.564158880,1 +35.565350790,0 +35.580807510,1 +35.582078450,0 +35.597477430,1 +35.598770360,0 +35.614162070,1 +35.615341620,0 +35.630781250,1 +35.632151780,0 +35.647445190,1 +35.648865800,0 +35.664125700,1 +35.665400150,0 +35.680900910,1 +35.682019050,0 +35.697467630,1 +35.698790500,0 +35.714128470,1 +35.715293930,0 +35.730792650,1 +35.732038280,0 +35.732196650,1 +35.832195740,0 +35.847442680,1 +35.848648040,0 +35.864066450,1 +35.865229160,0 +35.880745370,1 +35.881996080,0 +35.897408220,1 +35.898634470,0 +35.914044420,1 +35.915159960,0 +35.930698620,1 +35.931961690,0 +35.947390070,1 +35.948528760,0 +35.964045720,1 +35.965298690,0 +35.980693470,1 +35.981893720,0 +35.997369760,1 +35.998557210,0 +36.014021950,1 +36.015287780,0 +36.030688850,1 +36.032025930,0 +36.047383610,1 +36.048614430,0 +36.064023040,1 +36.065237780,0 +36.080640240,1 +36.081873120,0 +36.097326370,1 +36.098608980,0 +36.113997440,1 +36.115226220,0 +36.130675550,1 +36.131859850,0 +36.147351370,1 +36.148638230,0 +36.163992200,1 +36.165150540,0 +36.180645510,1 +36.181987460,0 +36.197310950,1 +36.198534080,0 +36.213972490,1 +36.215240280,0 +36.230620020,1 +36.232013560,0 +36.247402170,1 +36.249058250,0 +36.264037630,1 +36.265150400,0 +36.280629290,1 +36.281795270,0 +36.297261970,1 +36.298651970,0 +36.313909790,1 +36.315290060,0 +36.330615020,1 +36.331768960,0 +36.347270220,1 +36.348528690,0 +36.363919840,1 +36.365228570,0 +36.380597910,1 +36.381802000,0 +36.397254510,1 +36.398581590,0 +36.413926040,1 +36.415123360,0 +36.430574190,1 +36.431794790,0 +36.447263070,1 +36.448650760,0 +36.463907620,1 +36.465029530,0 +36.480555020,1 +36.481781370,0 +36.497254970,1 +36.498439720,0 +36.513874100,1 +36.515161560,0 +36.530561930,1 +36.531783310,0 +36.547221430,1 +36.548375780,0 +36.563891480,1 +36.565085440,0 +36.580535980,1 +36.581803650,0 +36.597194600,1 +36.598469680,0 +36.613857730,1 +36.615092140,0 +36.630520290,1 +36.631947380,0 +36.647226350,1 +36.648390440,0 +36.663872440,1 +36.664981270,0 +36.680522760,1 +36.681648870,0 +36.697191190,1 +36.698329160,0 +36.713846940,1 +36.715155790,0 +36.730494430,1 +36.731827920,0 +36.732187350,1 +36.832186420,0 +36.847127930,1 +36.848539230,0 +36.863789940,1 +36.864911270,0 +36.880482840,1 +36.881776240,0 +36.897098000,1 +36.898624640,0 +36.913778400,1 +36.915048610,0 +36.930462940,1 +36.931780760,0 +36.947104010,1 +36.948332160,0 +36.963769160,1 +36.965020800,0 +36.980441330,1 +36.981651080,0 +36.997126310,1 +36.998432850,0 +37.013750280,1 +37.014940990,0 +37.030447020,1 +37.031792890,0 +37.047096830,1 +37.048331010,0 +37.063739350,1 +37.065074410,0 +37.080413090,1 +37.081746760,0 +37.097083430,1 +37.098193700,0 +37.113751780,1 +37.114961110,0 +37.130389920,1 +37.131717100,0 +37.147089080,1 +37.148426610,0 +37.163728020,1 +37.165110040,0 +37.180424450,1 +37.181649490,0 +37.197059390,1 +37.198350950,0 +37.213738110,1 +37.214922210,0 +37.230387200,1 +37.231498180,0 +37.247059340,1 +37.248291730,0 +37.263692040,1 +37.264934080,0 +37.280371550,1 +37.281560280,0 +37.297019070,1 +37.298290800,0 +37.313691770,1 +37.315025370,0 +37.330350160,1 +37.331647260,0 +37.347019160,1 +37.348281630,0 +37.363674080,1 +37.364852910,0 +37.380348500,1 +37.381628580,0 +37.397024600,1 +37.398263120,0 +37.413666870,1 +37.414997470,0 +37.430314750,1 +37.431647940,0 +37.447012250,1 +37.448214940,0 +37.463636260,1 +37.464761200,0 +37.480322410,1 +37.481496210,0 +37.496991860,1 +37.498352050,0 +37.513631860,1 +37.514910630,0 +37.530294710,1 +37.531394050,0 +37.546982030,1 +37.548283330,0 +37.563634580,1 +37.565034520,0 +37.580312700,1 +37.581593310,0 +37.596967590,1 +37.598139500,0 +37.613601690,1 +37.614824600,0 +37.630278810,1 +37.631612800,0 +37.646943550,1 +37.648234800,0 +37.663594870,1 +37.664877220,0 +37.680252240,1 +37.681564960,0 +37.696913170,1 +37.698259270,0 +37.713567120,1 +37.714784730,0 +37.730260320,1 +37.731456610,0 +37.732178030,1 +37.832177120,0 +37.846883710,1 +37.848300230,0 +37.863525700,1 +37.864908690,0 +37.880397780,1 +37.881470720,0 +37.896858760,1 +37.898154960,0 +37.913524800,1 +37.914830940,0 +37.930193160,1 +37.931382940,0 +37.946877310,1 +37.948244370,0 +37.963524290,1 +37.964722690,0 +37.980159830,1 +37.981476540,0 +37.996827170,1 +37.998032620,0 +38.013506270,1 +38.014853780,0 +38.030155100,1 +38.031483740,0 +38.046845540,1 +38.048073230,0 +38.063500360,1 +38.064815450,0 +38.080128650,1 +38.081390310,0 +38.096815670,1 +38.097915810,0 +38.113479650,1 +38.114767730,0 +38.130106780,1 +38.131506560,0 +38.146788940,1 +38.148170540,0 +38.163449640,1 +38.164863490,0 +38.180107790,1 +38.181321320,0 +38.196772370,1 +38.198063510,0 +38.213449750,1 +38.214736560,0 +38.230123330,1 +38.231383460,0 +38.246760470,1 +38.248139170,0 +38.263451730,1 +38.264519510,0 +38.280103900,1 +38.281298590,0 +38.296760950,1 +38.298049970,0 +38.313430340,1 +38.314595930,0 +38.330074290,1 +38.331331030,0 +38.346735990,1 +38.347909580,0 +38.363406730,1 +38.364736490,0 +38.380058330,1 +38.381320540,0 +38.396744680,1 +38.397907580,0 +38.413502940,1 +38.414589630,0 +38.430068850,1 +38.431142090,0 +38.446739250,1 +38.447918700,0 +38.463397670,1 +38.464636520,0 +38.480061010,1 +38.481420290,0 +38.496718000,1 +38.497867470,0 +38.513365580,1 +38.514607550,0 +38.530027790,1 +38.531236230,0 +38.546739930,1 +38.547945380,0 +38.563362930,1 +38.564659430,0 +38.580048550,1 +38.581172010,0 +38.596667000,1 +38.597909330,0 +38.613340210,1 +38.614690210,0 +38.630006440,1 +38.631274530,0 +38.646668250,1 +38.647956650,0 +38.663347720,1 +38.664602070,0 +38.680001110,1 +38.681194180,0 +38.696706330,1 +38.698024380,0 +38.713317540,1 +38.714524500,0 +38.729971240,1 +38.731205280,0 +38.732168730,1 +38.832167820,0 +38.846623120,1 +38.847780090,0 +38.863300590,1 +38.864364390,0 +38.879934370,1 +38.881286560,0 +38.896611870,1 +38.897812440,0 +38.913274040,1 +38.914441360,0 +38.929941360,1 +38.931167180,0 +38.946581100,1 +38.947800210,0 +38.963262870,1 +38.964552010,0 +38.979917370,1 +38.981135890,0 +38.996573840,1 +38.997735180,0 +39.013242710,1 +39.014384290,0 +39.029897690,1 +39.031199640,0 +39.046582640,1 +39.047783210,0 +39.063224780,1 +39.064572940,0 +39.079867160,1 +39.081235190,0 +39.096566940,1 +39.097776740,0 +39.113225410,1 +39.114506470,0 +39.129828030,1 +39.130955660,0 +39.146527040,1 +39.147765270,0 +39.163240160,1 +39.164440860,0 +39.179856310,1 +39.181166520,0 +39.196504910,1 +39.197676340,0 +39.213357310,1 +39.214286980,0 +39.229985070,1 +39.231653190,0 +39.246638280,1 +39.247646380,0 +39.263184440,1 +39.264907500,0 +39.279859120,1 +39.281122400,0 +39.296625560,1 +39.297758930,0 +39.313291100,1 +39.314508720,0 +39.329959730,1 +39.331449160,0 +39.346513660,1 +39.347613020,0 +39.363247180,1 +39.364241930,0 +39.379802620,1 +39.381086840,0 +39.396476720,1 +39.397733190,0 +39.413139950,1 +39.414341650,0 +39.429802990,1 +39.431025430,0 +39.446476370,1 +39.447629300,0 +39.463156040,1 +39.464438660,0 +39.479793640,1 +39.481134600,0 +39.496455780,1 +39.497743500,0 +39.513119960,1 +39.514344370,0 +39.529753780,1 +39.531195430,0 +39.546453470,1 +39.547726350,0 +39.563105260,1 +39.564350160,0 +39.579771330,1 +39.581042980,0 +39.596414790,1 +39.597656600,0 +39.613106370,1 +39.614260900,0 +39.629744860,1 +39.630898370,0 +39.646427990,1 +39.647819940,0 +39.663097040,1 +39.664349470,0 +39.679745000,1 +39.680908720,0 +39.696418410,1 +39.697630150,0 +39.713072990,1 +39.714326760,0 +39.729739030,1 +39.730959420,0 +39.732159430,1 +39.832158500,0 +39.846381290,1 +39.847448700,0 +39.863036560,1 +39.864328220,0 +39.879693120,1 +39.880858470,0 +39.896352310,1 +39.897684470,0 +39.912984040,1 +39.914344630,0 +39.929697630,1 +39.931008020,0 +39.946361910,1 +39.947712640,0 +39.963021500,1 +39.964196460,0 +39.979623390,1 +39.981078640,0 +39.996311740,1 +39.997594240,0 +40.012993810,1 +40.014280810,0 +40.029661050,1 +40.030921110,0 +40.046333320,1 +40.047550860,0 +40.062981170,1 +40.064142390,0 +40.079628100,1 +40.080908080,0 +40.096281700,1 +40.097404720,0 +40.112951440,1 +40.114171490,0 +40.129631230,1 +40.130989140,0 +40.146314790,1 +40.147610130,0 +40.162985470,1 +40.164353530,0 +40.179621410,1 +40.180957110,0 +40.196289080,1 +40.197491930,0 +40.212956480,1 +40.214252110,0 +40.229590250,1 +40.230773810,0 +40.246286750,1 +40.247482760,0 +40.262938910,1 +40.264242460,0 +40.279596620,1 +40.280976690,0 +40.296262970,1 +40.297607020,0 +40.312928400,1 +40.314203830,0 +40.329591500,1 +40.330899290,0 +40.346256800,1 +40.347432590,0 +40.362916570,1 +40.364192030,0 +40.379588950,1 +40.380641330,0 +40.396230450,1 +40.397328650,0 +40.412896750,1 +40.414006120,0 +40.429542220,1 +40.430811950,0 +40.446241200,1 +40.447434650,0 +40.462900920,1 +40.464202110,0 +40.479551550,1 +40.480748320,0 +40.496211390,1 +40.497373950,0 +40.512869290,1 +40.514024360,0 +40.529512960,1 +40.530729170,0 +40.546200260,1 +40.547262480,0 +40.562850620,1 +40.564088640,0 +40.579501580,1 +40.580718250,0 +40.596186700,1 +40.597346560,0 +40.612816370,1 +40.614087080,0 +40.629529770,1 +40.630705620,0 +40.646157030,1 +40.647379460,0 +40.662835140,1 +40.664051260,0 +40.679474160,1 +40.680728950,0 +40.696166200,1 +40.697407850,0 +40.712820610,1 +40.713939560,0 +40.729460010,1 +40.730668380,0 +40.732150120,1 +40.832149210,0 +40.846126650,1 +40.847214870,0 +40.862738800,1 +40.863977930,0 +40.879454780,1 +40.880746600,0 +40.896080170,1 +40.897308340,0 +40.912743480,1 +40.913948050,0 +40.929419680,1 +40.930614000,0 +40.946097860,1 +40.947253010,0 +40.962743790,1 +40.963957840,0 +40.979419610,1 +40.980750910,0 +40.996075600,1 +40.997262960,0 +41.012731280,1 +41.013939190,0 +41.029413850,1 +41.030636260,0 +41.046088410,1 +41.047355860,0 +41.062712970,1 +41.063963380,0 +41.079371090,1 +41.080740030,0 +41.096028750,1 +41.097248900,0 +41.112732040,1 +41.113967540,0 +41.129354120,1 +41.130520610,0 +41.146231110,1 +41.147241870,0 +41.162684780,1 +41.163948030,0 +41.179373450,1 +41.180594880,0 +41.196044520,1 +41.197178650,0 +41.212662160,1 +41.213858900,0 +41.229355760,1 +41.230546730,0 +41.246030820,1 +41.247196910,0 +41.262666430,1 +41.263885200,0 +41.279315410,1 +41.280638370,0 +41.296005490,1 +41.297103800,0 +41.312641510,1 +41.313863210,0 +41.329334720,1 +41.330534720,0 +41.345988980,1 +41.347077620,0 +41.362661980,1 +41.363911640,0 +41.379313150,1 +41.380662730,0 +41.396125980,1 +41.397192440,0 +41.412616270,1 +41.413859300,0 +41.429300550,1 +41.430509930,0 +41.445991240,1 +41.447181780,0 +41.462644680,1 +41.463795120,0 +41.479296360,1 +41.480613090,0 +41.495965540,1 +41.497197910,0 +41.512623630,1 +41.513807540,0 +41.529263410,1 +41.530609760,0 +41.546037190,1 +41.546998220,0 +41.562590430,1 +41.563761920,0 +41.579279760,1 +41.580345790,0 +41.595940240,1 +41.597206430,0 +41.612597890,1 +41.613847670,0 +41.629238970,1 +41.630448650,0 +41.645949600,1 +41.647087180,0 +41.662575300,1 +41.663752460,0 +41.679240360,1 +41.680342970,0 +41.695909460,1 +41.697102830,0 +41.712554280,1 +41.713799310,0 +41.729231810,1 +41.730483510,0 +41.732140820,1 +41.832139910,0 +41.845904290,1 +41.847003260,0 +41.862525300,1 +41.863801590,0 +41.879222640,1 +41.880372510,0 +41.895864240,1 +41.897145280,0 +41.912497120,1 +41.913671530,0 +41.929173610,1 +41.930329450,0 +41.945852510,1 +41.946982140,0 +41.962500820,1 +41.963724650,0 +41.979170070,1 +41.980518760,0 +41.995819490,1 +41.997152340,0 +42.012499540,1 +42.013673410,0 +42.029161900,1 +42.030412490,0 +42.045816220,1 +42.047106170,0 +42.062475400,1 +42.063570850,0 +42.079150170,1 +42.080422650,0 +42.095786690,1 +42.097055820,0 +42.112484390,1 +42.113629840,0 +42.129126670,1 +42.130315470,0 +42.145799160,1 +42.147036090,0 +42.162474920,1 +42.163762630,0 +42.179114350,1 +42.180234080,0 +42.195785330,1 +42.196986200,0 +42.212465440,1 +42.213725140,0 +42.229217600,1 +42.230355320,0 +42.245780100,1 +42.247076910,0 +42.262438410,1 +42.263702750,0 +42.279094190,1 +42.280299910,0 +42.295793570,1 +42.297038110,0 +42.312430600,1 +42.313583500,0 +42.329067990,1 +42.330254340,0 +42.345769610,1 +42.347103530,0 +42.362391940,1 +42.363565480,0 +42.379091160,1 +42.380250630,0 +42.395730160,1 +42.396914270,0 +42.412362520,1 +42.413611630,0 +42.429044790,1 +42.430262660,0 +42.445741540,1 +42.446972540,0 +42.462372180,1 +42.463619300,0 +42.479026770,1 +42.480324570,0 +42.495727320,1 +42.496980400,0 +42.512420390,1 +42.513554510,0 +42.529011070,1 +42.530323010,0 +42.545726620,1 +42.546898780,0 +42.562350940,1 +42.563645820,0 +42.579005320,1 +42.580217660,0 +42.595686250,1 +42.596969530,0 +42.612372190,1 +42.613671570,0 +42.629002780,1 +42.630273700,0 +42.645715850,1 +42.646992680,0 +42.662345990,1 +42.663745890,0 +42.679014600,1 +42.680177560,0 +42.695665800,1 +42.696974450,0 +42.712309680,1 +42.713609040,0 +42.728964700,1 +42.730167710,0 +42.732131530,1 +42.832130600,0 +42.845630090,1 +42.846835760,0 +42.862282830,1 +42.863444440,0 +42.878953130,1 +42.880170020,0 +42.895594480,1 +42.896925740,0 +42.912268880,1 +42.913471970,0 +42.928900680,1 +42.930139840,0 +42.945599320,1 +42.946853610,0 +42.962251090,1 +42.963596640,0 +42.978893850,1 +42.980181190,0 +42.995571990,1 +42.996835950,0 +43.012233640,1 +43.013499510,0 +43.028894300,1 +43.030092030,0 +43.045567720,1 +43.046916530,0 +43.062217620,1 +43.063602670,0 +43.078897550,1 +43.080222010,0 +43.095572430,1 +43.096844380,0 +43.112215440,1 +43.113616590,0 +43.128870240,1 +43.130100270,0 +43.145559860,1 +43.146909550,0 +43.162178520,1 +43.163545560,0 +43.178848180,1 +43.180227540,0 +43.195520100,1 +43.196681490,0 +43.212217280,1 +43.213395200,0 +43.228915680,1 +43.229983470,0 +43.245566330,1 +43.246797090,0 +43.262163210,1 +43.263309830,0 +43.278817150,1 +43.280065320,0 +43.295534940,1 +43.296770820,0 +43.312138110,1 +43.313290880,0 +43.328816290,1 +43.330184360,0 +43.345491900,1 +43.346733830,0 +43.362134840,1 +43.363421690,0 +43.378816600,1 +43.380004690,0 +43.395464300,1 +43.396721900,0 +43.412134330,1 +43.413353120,0 +43.428786560,1 +43.430102620,0 +43.445487430,1 +43.446845960,0 +43.462127630,1 +43.463365800,0 +43.478811660,1 +43.480073800,0 +43.495457620,1 +43.496687450,0 +43.512117050,1 +43.513354800,0 +43.528756090,1 +43.529980210,0 +43.545467750,1 +43.546678110,0 +43.562121380,1 +43.563339610,0 +43.578764540,1 +43.579861480,0 +43.595406990,1 +43.596749460,0 +43.612082240,1 +43.613253840,0 +43.628749920,1 +43.629929840,0 +43.645437710,1 +43.646791280,0 +43.662063740,1 +43.663241400,0 +43.678736620,1 +43.680036890,0 +43.695395840,1 +43.696728170,0 +43.712086000,1 +43.713351530,0 +43.728724710,1 +43.729799910,0 +43.732122210,1 +43.832121300,0 +43.845386210,1 +43.846712600,0 +43.862019690,1 +43.863332560,0 +43.878688060,1 +43.880080340,0 +43.895485750,1 +43.896643110,0 +43.911981800,1 +43.913222630,0 +43.928705600,1 +43.929860690,0 +43.945358280,1 +43.946502760,0 +43.962027690,1 +43.963291480,0 +43.978667850,1 +43.979875130,0 +43.995339400,1 +43.996567220,0 +44.012016520,1 +44.013305960,0 +44.028669500,1 +44.029956770,0 +44.045355760,1 +44.046546570,0 +44.061968830,1 +44.063904800,0 +44.078778720,1 +44.079976110,0 +44.095310860,1 +44.097171670,0 +44.112000700,1 +44.113084490,0 +44.128655960,1 +44.129822880,0 +44.145333290,1 +44.146666590,0 +44.161945100,1 +44.163844390,0 +44.178757780,1 +44.179712100,0 +44.195289560,1 +44.196455200,0 +44.211944690,1 +44.213210550,0 +44.228586850,1 +44.229837230,0 +44.245310720,1 +44.246563870,0 +44.261962320,1 +44.263221730,0 +44.278606320,1 +44.279942930,0 +44.295268190,1 +44.296445770,0 +44.311948190,1 +44.313028260,0 +44.328583590,1 +44.329901140,0 +44.345419150,1 +44.346627380,0 +44.361900780,1 +44.363094150,0 +44.378592340,1 +44.379848250,0 +44.395236380,1 +44.396486150,0 +44.411921050,1 +44.412994660,0 +44.428567790,1 +44.429812080,0 +44.445252220,1 +44.446346580,0 +44.461921240,1 +44.463164610,0 +44.478580590,1 +44.479890840,0 +44.495225140,1 +44.496498590,0 +44.511920350,1 +44.513087830,0 +44.528559510,1 +44.529885910,0 +44.545226370,1 +44.546507760,0 +44.561914630,1 +44.563187770,0 +44.578566010,1 +44.579834410,0 +44.595241320,1 +44.597115980,0 +44.611893030,1 +44.613130850,0 +44.628526440,1 +44.629873870,0 +44.645230590,1 +44.646488190,0 +44.661878320,1 +44.663154180,0 +44.678518220,1 +44.679821720,0 +44.695198400,1 +44.696525820,0 +44.711860540,1 +44.713107310,0 +44.728527820,1 +44.729841810,0 +44.732112920,1 +44.832112000,0 +44.845193670,1 +44.846454010,0 +44.861832450,1 +44.862999760,0 +44.878458850,1 +44.879696290,0 +44.895145880,1 +44.896233710,0 +44.911786720,1 +44.912999130,0 +44.928466840,1 +44.929858250,0 +44.945171480,1 +44.946215590,0 +44.961789510,1 +44.963041910,0 +44.978451690,1 +44.979559620,0 +44.995123600,1 +44.996282960,0 +45.011765290,1 +45.012958930,0 +45.028436990,1 +45.029838530,0 +45.045127240,1 +45.046380790,0 +45.061796840,1 +45.063043510,0 +45.078423410,1 +45.079644820,0 +45.095076030,1 +45.096308280,0 +45.111758870,1 +45.112967870,0 +45.128423170,1 +45.129706780,0 +45.145108580,1 +45.146340950,0 +45.161738450,1 +45.163009680,0 +45.178404160,1 +45.179641830,0 +45.195072630,1 +45.196292640,0 +45.211747690,1 +45.213033120,0 +45.228429330,1 +45.229864520,0 +45.245114540,1 +45.246335050,0 +45.261702920,1 +45.263052550,0 +45.278370640,1 +45.279803390,0 +45.295062350,1 +45.296278760,0 +45.311745450,1 +45.312820520,0 +45.328373200,1 +45.329680870,0 +45.345080150,1 +45.346383480,0 +45.361710680,1 +45.362970000,0 +45.378397040,1 +45.379746090,0 +45.395047330,1 +45.396209910,0 +45.411723450,1 +45.412928020,0 +45.428360450,1 +45.429598760,0 +45.445032610,1 +45.446336990,0 +45.461707190,1 +45.462991480,0 +45.478345950,1 +45.479726710,0 +45.495041900,1 +45.496259280,0 +45.511701240,1 +45.512823140,0 +45.528352230,1 +45.529679550,0 +45.545004510,1 +45.546276440,0 +45.561676480,1 +45.562884040,0 +45.578338520,1 +45.579542800,0 +45.594992880,1 +45.596185430,0 +45.611665000,1 +45.612944990,0 +45.628345420,1 +45.629641790,0 +45.644999990,1 +45.646336340,0 +45.661652220,1 +45.662738430,0 +45.678326270,1 +45.679543200,0 +45.695005750,1 +45.696277760,0 +45.711650100,1 +45.712987110,0 +45.728323360,1 +45.729680390,0 +45.732103620,1 +45.832102690,0 +45.844951760,1 +45.846081470,0 +45.861588030,1 +45.862774460,0 +45.878280430,1 +45.879463480,0 +45.894942400,1 +45.896244410,0 +45.911581750,1 +45.912757480,0 +45.928280600,1 +45.929554830,0 +45.944943160,1 +45.946239550,0 +45.961592920,1 +45.962823190,0 +45.978273950,1 +45.979566620,0 +45.994904950,1 +45.995983110,0 +46.011581850,1 +46.012818440,0 +46.028230290,1 +46.029327520,0 +46.044896800,1 +46.046170610,0 +46.061571530,1 +46.062930710,0 +46.078236900,1 +46.079431390,0 +46.094899760,1 +46.096155120,0 +46.111559950,1 +46.112764760,0 +46.128210770,1 +46.129386240,0 +46.144977770,1 +46.146140160,0 +46.161564960,1 +46.162841940,0 +46.178220340,1 +46.179597090,0 +46.194879600,1 +46.196063910,0 +46.211565230,1 +46.212778400,0 +46.228200750,1 +46.229313620,0 +46.244881110,1 +46.246138640,0 +46.261534290,1 +46.262706000,0 +46.278210180,1 +46.279441040,0 +46.294861920,1 +46.296147670,0 +46.311524530,1 +46.312751170,0 +46.328194010,1 +46.329452070,0 +46.344880730,1 +46.346065160,0 +46.361510820,1 +46.362716480,0 +46.378163090,1 +46.379430750,0 +46.394822640,1 +46.396043980,0 +46.411536460,1 +46.412744990,0 +46.428188570,1 +46.429392390,0 +46.444870750,1 +46.446071760,0 +46.461494370,1 +46.462819040,0 +46.478160660,1 +46.479325050,0 +46.494835560,1 +46.496086790,0 +46.511475320,1 +46.512788910,0 +46.528147470,1 +46.529454640,0 +46.544824580,1 +46.546009260,0 +46.561475800,1 +46.562672200,0 +46.578138970,1 +46.579227570,0 +46.594790330,1 +46.595994600,0 +46.611455310,1 +46.612715060,0 +46.628133330,1 +46.629378320,0 +46.644821990,1 +46.646143980,0 +46.661466480,1 +46.662784480,0 +46.678103830,1 +46.679514130,0 +46.694797270,1 +46.696002580,0 +46.711469170,1 +46.712690620,0 +46.728111380,1 +46.729192260,0 +46.732094310,1 +46.832093390,0 +46.844745620,1 +46.845944270,0 +46.861428780,1 +46.862788050,0 +46.878081480,1 +46.879264250,0 +46.894726930,1 +46.895922800,0 +46.911412390,1 +46.912530940,0 +46.928040670,1 +46.929314700,0 +46.944746390,1 +46.945974570,0 +46.961384860,1 +46.962613080,0 +46.978065520,1 +46.979330750,0 +46.994717110,1 +46.995811890,0 +47.011392150,1 +47.012668580,0 +47.028049290,1 +47.029247860,0 +47.044736520,1 +47.046075280,0 +47.061400460,1 +47.062684860,0 +47.078032820,1 +47.079260930,0 +47.094707080,1 +47.095978790,0 +47.111385150,1 +47.112731780,0 +47.128049340,1 +47.129199160,0 +47.144695530,1 +47.145941360,0 +47.161347740,1 +47.162635400,0 +47.178030880,1 +47.179206170,0 +47.194683760,1 +47.195888110,0 +47.211335050,1 +47.212563220,0 +47.228048330,1 +47.229191180,0 +47.244703670,1 +47.246020260,0 +47.261338970,1 +47.262605140,0 +47.278005350,1 +47.279282700,0 +47.294667500,1 +47.295933400,0 +47.311362540,1 +47.312677340,0 +47.328005790,1 +47.329316010,0 +47.344672340,1 +47.345875440,0 +47.361327350,1 +47.362669060,0 +47.377987400,1 +47.379169540,0 +47.394653640,1 +47.395895510,0 +47.411326020,1 +47.412592110,0 +47.427996140,1 +47.429255070,0 +47.444690430,1 +47.445822210,0 +47.461328690,1 +47.462548450,0 +47.477987010,1 +47.479190740,0 +47.494638410,1 +47.495833060,0 +47.511316700,1 +47.512484150,0 +47.527998080,1 +47.529167350,0 +47.544633450,1 +47.545875270,0 +47.561313740,1 +47.562534860,0 +47.577976260,1 +47.579218680,0 +47.594618430,1 +47.595861050,0 +47.611281440,1 +47.612578390,0 +47.627968950,1 +47.629199170,0 +47.644638790,1 +47.645900460,0 +47.661276850,1 +47.662451510,0 +47.677930850,1 +47.679171750,0 +47.694590740,1 +47.695852390,0 +47.711291420,1 +47.712432420,0 +47.727930900,1 +47.729186760,0 +47.732085010,1 +47.832084090,0 +47.844563560,1 +47.845791750,0 +47.861250060,1 +47.862488520,0 +47.877921130,1 +47.879082270,0 +47.894557810,1 +47.895789360,0 +47.911199850,1 +47.912500220,0 +47.927912240,1 +47.929155760,0 +47.944554960,1 +47.945750690,0 +47.961230420,1 +47.962451950,0 +47.977886660,1 +47.979505440,0 +47.994551930,1 +47.995878310,0 +48.011185180,1 +48.012494800,0 +48.027874470,1 +48.029096100,0 +48.044547210,1 +48.045800730,0 +48.061210690,1 +48.062430340,0 +48.077855720,1 +48.079035190,0 +48.094523700,1 +48.095769830,0 +48.111222820,1 +48.112500470,0 +48.127873500,1 +48.128949380,0 +48.144511270,1 +48.145697460,0 +48.161180550,1 +48.162354570,0 +48.177833270,1 +48.179038890,0 +48.194522650,1 +48.195601950,0 +48.211169240,1 +48.212409760,0 +48.227864770,1 +48.229045040,0 +48.244515730,1 +48.245766810,0 +48.261175210,1 +48.262350360,0 +48.277948980,1 +48.279030600,0 +48.294467740,1 +48.295630030,0 +48.311139190,1 +48.312443720,0 +48.327811620,1 +48.329044130,0 +48.344486370,1 +48.345587270,0 +48.361102550,1 +48.362300310,0 +48.377791980,1 +48.379003330,0 +48.394446600,1 +48.395653690,0 +48.411132000,1 +48.412271470,0 +48.427796330,1 +48.428987850,0 +48.444462090,1 +48.445801470,0 +48.461104630,1 +48.462301100,0 +48.477788290,1 +48.478951920,0 +48.494418080,1 +48.495674020,0 +48.511086280,1 +48.512341530,0 +48.527730680,1 +48.528996470,0 +48.544431970,1 +48.545806490,0 +48.561225030,1 +48.562340730,0 +48.577767720,1 +48.578986320,0 +48.594401390,1 +48.595572090,0 +48.611078880,1 +48.612277770,0 +48.627729210,1 +48.628920460,0 +48.644393600,1 +48.645656450,0 +48.661068190,1 +48.662380210,0 +48.677728620,1 +48.678977660,0 +48.694375380,1 +48.695630190,0 +48.711047150,1 +48.712241820,0 +48.727745520,1 +48.729055830,0 +48.732075710,1 +48.832074780,0 +48.844388340,1 +48.845540470,0 +48.861037460,1 +48.862208710,0 +48.877679860,1 +48.878918550,0 +48.894347190,1 +48.895799890,0 +48.911026070,1 +48.912304180,0 +48.927663620,1 +48.928856380,0 +48.944368280,1 +48.945547550,0 +48.961033120,1 +48.962236390,0 +48.977676170,1 +48.978841640,0 +48.994339040,1 +48.995576990,0 +49.011012870,1 +49.012190860,0 +49.027667320,1 +49.028822700,0 +49.044321770,1 +49.045560340,0 +49.060971660,1 +49.062177700,0 +49.077756760,1 +49.079313070,0 +49.094424840,1 +49.095791140,0 +49.110977450,1 +49.112793680,0 +49.127754100,1 +49.128863120,0 +49.144311670,1 +49.146073380,0 +49.160984340,1 +49.162133860,0 +49.177755470,1 +49.179528870,0 +49.194382290,1 +49.196111410,0 +49.210947180,1 +49.212255250,0 +49.227765980,1 +49.229187890,0 +49.244397190,1 +49.245532300,0 +49.260917150,1 +49.262179000,0 +49.277588240,1 +49.278805520,0 +49.294266160,1 +49.295549050,0 +49.310946510,1 +49.312120790,0 +49.327573100,1 +49.328859910,0 +49.344268590,1 +49.345549040,0 +49.360891080,1 +49.362095440,0 +49.377591530,1 +49.378805310,0 +49.394259140,1 +49.395489950,0 +49.410910360,1 +49.412176170,0 +49.427571940,1 +49.428742070,0 +49.444235940,1 +49.445553250,0 +49.460902090,1 +49.462151250,0 +49.477560020,1 +49.478732140,0 +49.494226080,1 +49.495546340,0 +49.510893860,1 +49.512231530,0 +49.527578280,1 +49.528764090,0 +49.544235280,1 +49.545524710,0 +49.560863500,1 +49.562012690,0 +49.577533790,1 +49.578777340,0 +49.594166710,1 +49.595437840,0 +49.610895380,1 +49.612157320,0 +49.627511120,1 +49.628810370,0 +49.644218440,1 +49.645520810,0 +49.660842050,1 +49.662143780,0 +49.677495210,1 +49.678748330,0 +49.694176230,1 +49.695496400,0 +49.710859110,1 +49.712028360,0 +49.727491350,1 +49.728783560,0 +49.732066400,1 +49.832065480,0 +49.844158560,1 +49.845290470,0 +49.860808250,1 +49.861963390,0 +49.877418580,1 +49.878680160,0 +49.894127630,1 +49.895386170,0 +49.910796600,1 +49.912078840,0 +49.927457000,1 +49.928687500,0 +49.944124120,1 +49.945332570,0 +49.960771500,1 +49.962038260,0 +49.977451260,1 +49.978668330,0 +49.994109940,1 +49.995297910,0 +50.010755580,1 +50.012078230,0 +50.027410850,1 +50.028629480,0 +50.044063420,1 +50.045266430,0 +50.060786840,1 +50.062043980,0 +50.077432160,1 +50.078631080,0 +50.094089200,1 +50.095307060,0 +50.110737240,1 +50.111978660,0 +50.127416430,1 +50.128697800,0 +50.144092480,1 +50.145142700,0 +50.160754740,1 +50.161955740,0 +50.177393390,1 +50.178669270,0 +50.194066680,1 +50.195215480,0 +50.210728290,1 +50.211799360,0 +50.227381090,1 +50.228672070,0 +50.244077610,1 +50.245102500,0 +50.260684310,1 +50.261906560,0 +50.277386300,1 +50.278774550,0 +50.294042570,1 +50.295206160,0 +50.310683900,1 +50.311878910,0 +50.327339650,1 +50.328562580,0 +50.344062610,1 +50.345259890,0 +50.360693510,1 +50.361960820,0 +50.377362320,1 +50.378540960,0 +50.394009580,1 +50.395296410,0 +50.410657980,1 +50.411892510,0 +50.427350190,1 +50.428481470,0 +50.444032000,1 +50.445202500,0 +50.460633610,1 +50.461803020,0 +50.477342750,1 +50.478484500,0 +50.493993590,1 +50.495205410,0 +50.510660510,1 +50.511839670,0 +50.527307000,1 +50.528640530,0 +50.543986370,1 +50.545136810,0 +50.560657270,1 +50.561950720,0 +50.577307830,1 +50.578576310,0 +50.593989060,1 +50.595220020,0 +50.610634860,1 +50.611924650,0 +50.627285900,1 +50.628604610,0 +50.643967410,1 +50.645180110,0 +50.660579590,1 +50.661839160,0 +50.677289190,1 +50.678616370,0 +50.693944320,1 +50.695078700,0 +50.710581000,1 +50.711788330,0 +50.727267280,1 +50.728502290,0 +50.732057100,1 +50.832056180,0 +50.843929690,1 +50.845171410,0 +50.860547160,1 +50.861758610,0 +50.877257090,1 +50.878472750,0 +50.893862080,1 +50.895153070,0 +50.910546440,1 +50.911770500,0 +50.927218140,1 +50.928501150,0 +50.943891240,1 +50.945134820,0 +50.960544490,1 +50.961743650,0 +50.977208210,1 +50.978533030,0 +50.993861270,1 +50.995128860,0 +51.010502320,1 +51.011779070,0 +51.027198520,1 +51.028288220,0 +51.043864120,1 +51.045125800,0 +51.060507020,1 +51.061743720,0 +51.077189680,1 +51.078408470,0 +51.093861880,1 +51.095025710,0 +51.110500410,1 +51.111805030,0 +51.127177320,1 +51.128385640,0 +51.143842870,1 +51.145030820,0 +51.160490180,1 +51.161743650,0 +51.177145420,1 +51.178370050,0 +51.193794740,1 +51.195078340,0 +51.210463550,1 +51.211772030,0 +51.227170570,1 +51.228351220,0 +51.243807300,1 +51.244885950,0 +51.260445620,1 +51.261770370,0 +51.277136280,1 +51.278350830,0 +51.293804330,1 +51.295043530,0 +51.310447090,1 +51.311655880,0 +51.327125730,1 +51.328508870,0 +51.343777000,1 +51.344980100,0 +51.360435070,1 +51.361711520,0 +51.377095940,1 +51.378275160,0 +51.393780360,1 +51.395013590,0 +51.410459420,1 +51.411662750,0 +51.427084390,1 +51.428311920,0 +51.443781960,1 +51.444890640,0 +51.460433310,1 +51.461695160,0 +51.477092660,1 +51.478193160,0 +51.493754940,1 +51.495010530,0 +51.510411950,1 +51.511719820,0 +51.527085980,1 +51.528267600,0 +51.543734730,1 +51.544940020,0 +51.560401490,1 +51.561640570,0 +51.577053980,1 +51.578246110,0 +51.593723880,1 +51.594948640,0 +51.610405170,1 +51.611563330,0 +51.627072230,1 +51.628357030,0 +51.643732310,1 +51.644963500,0 +51.660372670,1 +51.661617910,0 +51.677040870,1 +51.678440620,0 +51.693716610,1 +51.695006630,0 +51.710350000,1 +51.711677070,0 +51.727041620,1 +51.728333490,0 +51.732047800,1 +51.832046860,0 +51.843653730,1 +51.844944380,0 +51.860328390,1 +51.861551160,0 +51.877006890,1 +51.878105360,0 +51.893674030,1 +51.894857240,0 +51.910333070,1 +51.911621040,0 +51.926972860,1 +51.928156230,0 +51.943665480,1 +51.944781140,0 +51.960315100,1 +51.961599960,0 +51.976979550,1 +51.978218050,0 +51.993644370,1 +51.994873140,0 +52.010318510,1 +52.011534230,0 +52.026963260,1 +52.028258890,0 +52.043626420,1 +52.044828690,0 +52.060290490,1 +52.061444630,0 +52.076970470,1 +52.078235000,0 +52.093590700,1 +52.094789590,0 +52.110270370,1 +52.111609720,0 +52.126943280,1 +52.128159570,0 +52.143590860,1 +52.144764790,0 +52.160264440,1 +52.161478130,0 +52.176913110,1 +52.178143010,0 +52.193602890,1 +52.194816970,0 +52.210239600,1 +52.211515460,0 +52.226902750,1 +52.228148360,0 +52.243578370,1 +52.244825620,0 +52.260239500,1 +52.261412240,0 +52.276893240,1 +52.278161030,0 +52.293562650,1 +52.294748970,0 +52.310237650,1 +52.311529140,0 +52.326896860,1 +52.328062480,0 +52.343567520,1 +52.344771130,0 +52.360214610,1 +52.361456240,0 +52.376881060,1 +52.378140590,0 +52.393525120,1 +52.394682650,0 +52.410195790,1 +52.411449290,0 +52.426866570,1 +52.428064480,0 +52.443545100,1 +52.444770600,0 +52.460193830,1 +52.461447830,0 +52.476865300,1 +52.478074550,0 +52.493511660,1 +52.494718330,0 +52.510160530,1 +52.511401240,0 +52.526834510,1 +52.528144450,0 +52.543511420,1 +52.544619770,0 +52.560145320,1 +52.561379450,0 +52.576837020,1 +52.578042600,0 +52.593481530,1 +52.594643860,0 +52.610137190,1 +52.611294320,0 +52.626812750,1 +52.627992290,0 +52.643475350,1 +52.644613220,0 +52.660125300,1 +52.661373980,0 +52.676831250,1 +52.677990310,0 +52.693482340,1 +52.694687180,0 +52.710096830,1 +52.711295710,0 +52.726778490,1 +52.728034410,0 +52.732038480,1 +52.832037560,0 +52.843447100,1 +52.844682090,0 +52.860074550,1 +52.861257700,0 +52.876738150,1 +52.878009860,0 +52.893411680,1 +52.894652410,0 +52.910056460,1 +52.911416680,0 +52.926726360,1 +52.927901200,0 +52.943397890,1 +52.944622500,0 +52.960034160,1 +52.961280730,0 +52.976696320,1 +52.977917700,0 +52.993360040,1 +52.994623540,0 +53.010029870,1 +53.011262320,0 +53.026696090,1 +53.027934010,0 +53.043376490,1 +53.044643260,0 +53.060025610,1 +53.061278540,0 +53.076682950,1 +53.077886540,0 +53.093508970,1 +53.094652280,0 +53.110009440,1 +53.111236070,0 +53.126646740,1 +53.127951830,0 +53.143366930,1 +53.144518140,0 +53.160010950,1 +53.161248090,0 +53.176640360,1 +53.177900230,0 +53.193330940,1 +53.194573080,0 +53.209983280,1 +53.211178240,0 +53.226640660,1 +53.227937530,0 +53.243330740,1 +53.244633490,0 +53.259977270,1 +53.261279230,0 +53.276638510,1 +53.277922970,0 +53.293305230,1 +53.294536140,0 +53.310061660,1 +53.311333700,0 +53.326692020,1 +53.328428020,0 +53.343290660,1 +53.344420090,0 +53.359948330,1 +53.361262950,0 +53.376603590,1 +53.377813910,0 +53.393273720,1 +53.394477330,0 +53.409929310,1 +53.411136640,0 +53.426627710,1 +53.427853130,0 +53.443257620,1 +53.444467440,0 +53.459929960,1 +53.461160290,0 +53.476584630,1 +53.477773130,0 +53.493260110,1 +53.494459020,0 +53.509906980,1 +53.511091320,0 +53.526595780,1 +53.527833940,0 +53.543256480,1 +53.544571260,0 +53.559902420,1 +53.561061810,0 +53.576589500,1 +53.577782390,0 +53.593219330,1 +53.594472460,0 +53.609883320,1 +53.611079720,0 +53.626550960,1 +53.627738680,0 +53.643225010,1 +53.644513910,0 +53.659869530,1 +53.660959530,0 +53.676513380,1 +53.677836290,0 +53.693175000,1 +53.694507830,0 +53.709829880,1 +53.711183680,0 +53.726525210,1 +53.727746280,0 +53.732029180,1 +53.832028250,0 +53.843179340,1 +53.844343570,0 +53.859833480,1 +53.860972080,0 +53.876450840,1 +53.877647490,0 +53.893136820,1 +53.894239350,0 +53.909789400,1 +53.911011460,0 +53.926461890,1 +53.927573900,0 +53.943254370,1 +53.944273960,0 +53.959776400,1 +53.960955020,0 +53.976472780,1 +53.977769440,0 +53.993115840,1 +53.994352830,0 +54.009787790,1 +54.011020900,0 +54.026439190,1 +54.027693440,0 +54.043114650,1 +54.044332390,0 +54.059774390,1 +54.060929160,0 +54.076417320,1 +54.077493220,0 +54.077510080,1 +54.077668260,0 +54.093074200,1 +54.094424090,0 +54.109741810,1 +54.111028910,0 +54.126522160,1 +54.127579270,0 +54.143076820,1 +54.144284270,0 +54.159744130,1 +54.161583940,0 +54.176410960,1 +54.178279560,0 +54.193055700,1 +54.194930800,0 +54.209717610,1 +54.211096510,0 +54.226384440,1 +54.228233830,0 +54.243060770,1 +54.244226270,0 +54.259831570,1 +54.261224240,0 +54.276390470,1 +54.277636320,0 +54.293166130,1 +54.294237140,0 +54.309677230,1 +54.310972440,0 +54.326353260,1 +54.327583280,0 +54.343012440,1 +54.344225780,0 +54.359674860,1 +54.360945940,0 +54.376361790,1 +54.377484600,0 +54.393001770,1 +54.394169230,0 +54.409665840,1 +54.410885610,0 +54.426323740,1 +54.427569900,0 +54.443033730,1 +54.444225020,0 +54.459650310,1 +54.460889200,0 +54.476323050,1 +54.477584660,0 +54.492986700,1 +54.494303060,0 +54.509652550,1 +54.510874910,0 +54.526313110,1 +54.527585490,0 +54.542987660,1 +54.544222420,0 +54.559622870,1 +54.560935490,0 +54.576286670,1 +54.577594760,0 +54.592944960,1 +54.594258510,0 +54.609618740,1 +54.610863750,0 +54.626288760,1 +54.627460470,0 +54.642977910,1 +54.644208840,0 +54.659612950,1 +54.660834670,0 +54.676262390,1 +54.677620400,0 +54.692923750,1 +54.694250900,0 +54.709605080,1 +54.710768550,0 +54.726246500,1 +54.727551080,0 +54.732019880,1 +54.832018940,0 +54.842923320,1 +54.844081310,0 +54.859539980,1 +54.860900580,0 +54.876210310,1 +54.877492990,0 +54.892868290,1 +54.894102780,0 +54.909530200,1 +54.910846920,0 +54.926173370,1 +54.927418290,0 +54.942872180,1 +54.944019510,0 +54.959501210,1 +54.960676000,0 +54.976184370,1 +54.977410830,0 +54.992841020,1 +54.994091420,0 +55.009516500,1 +55.010743540,0 +55.026184660,1 +55.027507370,0 +55.042834260,1 +55.044037760,0 +55.059460250,1 +55.060768010,0 +55.076168310,1 +55.077248150,0 +55.092816550,1 +55.094184140,0 +55.109471380,1 +55.110751920,0 +55.126141440,1 +55.127423900,0 +55.142817400,1 +55.143976930,0 +55.159476230,1 +55.160680470,0 +55.176127650,1 +55.177340380,0 +55.192784410,1 +55.194096330,0 +55.209452490,1 +55.210521640,0 +55.226122750,1 +55.227356780,0 +55.242783370,1 +55.243984150,0 +55.259447320,1 +55.260662980,0 +55.276092700,1 +55.277285680,0 +55.292740360,1 +55.294090200,0 +55.309455630,1 +55.310621020,0 +55.326108080,1 +55.327422480,0 +55.342768160,1 +55.344089740,0 +55.359401720,1 +55.360770450,0 +55.376079240,1 +55.377254490,0 +55.392735330,1 +55.393980870,0 +55.409392000,1 +55.410727440,0 +55.426070090,1 +55.427365160,0 +55.442734020,1 +55.443874360,0 +55.459349780,1 +55.460558870,0 +55.476060780,1 +55.477218810,0 +55.492724890,1 +55.493978130,0 +55.509367330,1 +55.510679300,0 +55.526047530,1 +55.527241500,0 +55.542714800,1 +55.543910080,0 +55.559353640,1 +55.560670170,0 +55.576027740,1 +55.577157990,0 +55.592821440,1 +55.593907870,0 +55.609362830,1 +55.610437100,0 +55.626019470,1 +55.627085020,0 +55.642686920,1 +55.643895970,0 +55.659332400,1 +55.660624770,0 +55.675989070,1 +55.677133420,0 +55.692655140,1 +55.693972730,0 +55.709334890,1 +55.710527610,0 +55.725958130,1 +55.727190680,0 +55.732010560,1 +55.832009640,0 +55.842614750,1 +55.843843700,0 +55.859273540,1 +55.860599190,0 +55.875945840,1 +55.877103590,0 +55.892614240,1 +55.893841450,0 +55.909251930,1 +55.910567990,0 +55.925941480,1 +55.927060010,0 +55.942572990,1 +55.943909420,0 +55.959247580,1 +55.960460920,0 +55.975903260,1 +55.977216370,0 +55.992571120,1 +55.993971290,0 +56.009245980,1 +56.010485470,0 +56.025907880,1 +56.027234560,0 +56.042580390,1 +56.043739050,0 +56.059214770,1 +56.060339230,0 +56.075863640,1 +56.077035040,0 +56.092572520,1 +56.093746350,0 +56.109211080,1 +56.110479970,0 +56.125865890,1 +56.127074930,0 +56.142534910,1 +56.143754960,0 +56.159175490,1 +56.160368480,0 +56.175851690,1 +56.177164660,0 +56.192490520,1 +56.193727070,0 +56.209177660,1 +56.210357170,0 +56.225823210,1 +56.227148830,0 +56.242490370,1 +56.243813660,0 +56.259156920,1 +56.260500670,0 +56.275818340,1 +56.277121790,0 +56.292482360,1 +56.293631200,0 +56.309130440,1 +56.310308780,0 +56.325820860,1 +56.327096870,0 +56.342480630,1 +56.343709740,0 +56.359106930,1 +56.360261800,0 +56.375777960,1 +56.377002380,0 +56.392450100,1 +56.393812220,0 +56.409103720,1 +56.410395260,0 +56.425855750,1 +56.426968520,0 +56.442444490,1 +56.443618060,0 +56.459089550,1 +56.460231390,0 +56.475760210,1 +56.476919540,0 +56.492390820,1 +56.493595340,0 +56.509084660,1 +56.510237330,0 +56.525727470,1 +56.526929850,0 +56.542410910,1 +56.543523880,0 +56.559085920,1 +56.560312080,0 +56.575718580,1 +56.576892360,0 +56.592380260,1 +56.593710540,0 +56.609063840,1 +56.610334010,0 +56.625732500,1 +56.626907980,0 +56.642395090,1 +56.643755610,0 +56.659006790,1 +56.660332350,0 +56.675698130,1 +56.677115890,0 +56.692353560,1 +56.693604360,0 +56.709012320,1 +56.710333480,0 +56.725677460,1 +56.726939790,0 +56.732001250,1 +56.832000320,0 +56.842294030,1 +56.843450370,0 +56.858972090,1 +56.860126650,0 +56.875608870,1 +56.876854920,0 +56.892291450,1 +56.893447320,0 +56.908973580,1 +56.910192030,0 +56.925641000,1 +56.926825570,0 +56.942299650,1 +56.943690430,0 +56.958940910,1 +56.960227650,0 +56.975606270,1 +56.976921880,0 +56.992261640,1 +56.993554100,0 +57.008948710,1 +57.010169060,0 +57.025604560,1 +57.026949250,0 +57.042282570,1 +57.043450610,0 +57.058911180,1 +57.060181250,0 +57.075570650,1 +57.076745240,0 +57.092235430,1 +57.093554080,0 +57.108927980,1 +57.110108570,0 +57.125559060,1 +57.126822040,0 +57.142246480,1 +57.143475020,0 +57.158902240,1 +57.160156630,0 +57.175606740,1 +57.176733720,0 +57.192203630,1 +57.193396040,0 +57.208890120,1 +57.210047920,0 +57.225532460,1 +57.226827340,0 +57.242220200,1 +57.243416400,0 +57.258867790,1 +57.259972930,0 +57.275529830,1 +57.276731940,0 +57.292220910,1 +57.293500080,0 +57.308856290,1 +57.310008360,0 +57.325511900,1 +57.326656400,0 +57.342175120,1 +57.343482770,0 +57.358858440,1 +57.360089620,0 +57.375507320,1 +57.376796920,0 +57.392191970,1 +57.393451080,0 +57.408840790,1 +57.409994240,0 +57.425509670,1 +57.426870140,0 +57.442187880,1 +57.443357630,0 +57.458840530,1 +57.460163290,0 +57.475467520,1 +57.476684140,0 +57.492131550,1 +57.493406290,0 +57.508799650,1 +57.509994360,0 +57.525494380,1 +57.526691150,0 +57.542130460,1 +57.543300040,0 +57.558927590,1 +57.559942390,0 +57.575435760,1 +57.576753310,0 +57.592131310,1 +57.593437090,0 +57.608774050,1 +57.609959200,0 +57.625434990,1 +57.626693330,0 +57.642114510,1 +57.643386840,0 +57.658740130,1 +57.659941650,0 +57.675449990,1 +57.676606330,0 +57.692086970,1 +57.693345050,0 +57.708748330,1 +57.709945640,0 +57.725424940,1 +57.726801910,0 +57.731991950,1 +57.831991010,0 +57.842067000,1 +57.843321880,0 +57.858744540,1 +57.859895150,0 +57.875337680,1 +57.876674720,0 +57.892040610,1 +57.893367010,0 +57.908682160,1 +57.909876860,0 +57.925362100,1 +57.926683170,0 +57.942045060,1 +57.943166790,0 +57.958690600,1 +57.959839270,0 +57.975343740,1 +57.976639170,0 +57.992023290,1 +57.993179800,0 +58.008645610,1 +58.009933570,0 +58.025326640,1 +58.026479460,0 +58.041988610,1 +58.043181800,0 +58.058663040,1 +58.059887760,0 +58.075321400,1 +58.076572960,0 +58.091970710,1 +58.093174380,0 +58.108646870,1 +58.109808650,0 +58.125289960,1 +58.126538820,0 +58.141978000,1 +58.143588310,0 +58.158606780,1 +58.159825960,0 +58.175255870,1 +58.176588710,0 +58.191936040,1 +58.193185350,0 +58.208591250,1 +58.210456520,0 +58.225286850,1 +58.226484640,0 +58.241922150,1 +58.243239800,0 +58.258574390,1 +58.259790070,0 +58.275257640,1 +58.276471080,0 +58.291900310,1 +58.293089580,0 +58.308570150,1 +58.309814590,0 +58.325252910,1 +58.326520940,0 +58.341911660,1 +58.343150660,0 +58.358554300,1 +58.359730290,0 +58.375192340,1 +58.376472870,0 +58.391896210,1 +58.393178730,0 +58.408527570,1 +58.409850400,0 +58.425159550,1 +58.426454740,0 +58.441878910,1 +58.443046520,0 +58.458501140,1 +58.459630090,0 +58.475173500,1 +58.476381120,0 +58.491838670,1 +58.493056890,0 +58.508499750,1 +58.509752300,0 +58.525146090,1 +58.526471200,0 +58.541827380,1 +58.543097440,0 +58.558465450,1 +58.559685920,0 +58.575148300,1 +58.576291190,0 +58.591807980,1 +58.593156170,0 +58.608481250,1 +58.609794260,0 +58.625121930,1 +58.626294130,0 +58.641792170,1 +58.643175280,0 +58.658433090,1 +58.659608630,0 +58.675077620,1 +58.676230830,0 +58.691751560,1 +58.693142210,0 +58.708437700,1 +58.709642210,0 +58.725087330,1 +58.726271520,0 +58.731982620,1 +58.831981700,0 +58.841725580,1 +58.842951120,0 +58.858346900,1 +58.859589360,0 +58.875003860,1 +58.876113590,0 +58.891678300,1 +58.892962750,0 +58.908350720,1 +58.909534380,0 +58.925019290,1 +58.926248860,0 +58.941702640,1 +58.943083500,0 +58.958319380,1 +58.959529290,0 +58.974989720,1 +58.976251350,0 +58.991606760,1 +58.992868430,0 +59.008311250,1 +59.009504120,0 +59.024968070,1 +59.026154400,0 +59.041622690,1 +59.042906110,0 +59.058305740,1 +59.059533390,0 +59.074954320,1 +59.076204700,0 +59.091601060,1 +59.092693950,0 +59.108270810,1 +59.109665880,0 +59.124933990,1 +59.126041660,0 +59.141623870,1 +59.142806060,0 +59.158240270,1 +59.159950640,0 +59.174924740,1 +59.176104270,0 +59.191715800,1 +59.192772470,0 +59.208237490,1 +59.210051670,0 +59.225017860,1 +59.226409240,0 +59.241730370,1 +59.242622090,0 +59.258244880,1 +59.259461820,0 +59.274895930,1 +59.276054570,0 +59.291560940,1 +59.292684470,0 +59.308198530,1 +59.309516380,0 +59.324878470,1 +59.326057400,0 +59.341532570,1 +59.342771430,0 +59.358185560,1 +59.359277230,0 +59.374820760,1 +59.376015440,0 +59.391491590,1 +59.392763030,0 +59.408194110,1 +59.409339000,0 +59.424841090,1 +59.425952320,0 +59.441513150,1 +59.442581660,0 +59.458160300,1 +59.459309530,0 +59.474835080,1 +59.476085830,0 +59.491489340,1 +59.492687870,0 +59.508144970,1 +59.509215780,0 +59.524839420,1 +59.526059240,0 +59.541493450,1 +59.542630410,0 +59.558113590,1 +59.559335650,0 +59.574782440,1 +59.575961510,0 +59.591434400,1 +59.592641580,0 +59.608088990,1 +59.609409370,0 +59.624765020,1 +59.625930350,0 +59.641442830,1 +59.642513840,0 +59.658098430,1 +59.659319840,0 +59.674750780,1 +59.675849430,0 +59.691430010,1 +59.692620990,0 +59.708096430,1 +59.709279880,0 +59.724745390,1 +59.725904970,0 +59.731973310,1 +59.831972370,0 +59.841391260,1 +59.842558960,0 +59.858047630,1 +59.859250240,0 +59.874705260,1 +59.875973570,0 +59.891345280,1 +59.892573770,0 +59.908032620,1 +59.909337850,0 +59.924681110,1 +59.925951840,0 +59.941350570,1 +59.942518600,0 +59.957994020,1 +59.959220420,0 +59.974653980,1 +59.975921310,0 +59.991287090,1 +59.992398090,0 +60.007983650,1 +60.009034330,0 +60.024640850,1 +60.025839770,0 +60.041302470,1 +60.042570480,0 +60.057957120,1 +60.059250010,0 +60.074645900,1 +60.075854710,0 +60.091263740,1 +60.092485530,0 +60.095201280,0 diff --git a/data/pps_60s_interference_b.csv b/data/pps_60s_interference_b.csv new file mode 100644 index 0000000..21a730f --- /dev/null +++ b/data/pps_60s_interference_b.csv @@ -0,0 +1,8221 @@ +Time [s],Channel 1 +0.000000000,0 +0.014998390,1 +0.016291960,0 +0.031674790,1 +0.032863060,0 +0.048342660,1 +0.049545940,0 +0.065000160,1 +0.066238990,0 +0.081667980,1 +0.082964910,0 +0.098334800,1 +0.099594720,0 +0.114966730,1 +0.116153060,0 +0.131671170,1 +0.132888150,0 +0.148330180,1 +0.149563370,0 +0.164976480,1 +0.166188700,0 +0.181642000,1 +0.182864570,0 +0.198293430,1 +0.199523250,0 +0.214956790,1 +0.216190800,0 +0.231615810,1 +0.232853740,0 +0.248258990,1 +0.249412080,0 +0.264949000,1 +0.266305340,0 +0.281597040,1 +0.282822370,0 +0.298268980,1 +0.299445890,0 +0.313540860,1 +0.413539950,0 +0.415003270,1 +0.416076190,0 +0.431555710,1 +0.432672040,0 +0.448214690,1 +0.449444250,0 +0.464858310,1 +0.465990180,0 +0.481545650,1 +0.482724820,0 +0.498202600,1 +0.499365120,0 +0.514893140,1 +0.516264360,0 +0.531547600,1 +0.532718090,0 +0.548177300,1 +0.549431470,0 +0.564877760,1 +0.566078250,0 +0.581509350,1 +0.582683500,0 +0.598182860,1 +0.599417700,0 +0.614864880,1 +0.616009450,0 +0.631522960,1 +0.632748870,0 +0.648162810,1 +0.649340760,0 +0.664825390,1 +0.665988010,0 +0.681479730,1 +0.682659340,0 +0.698140450,1 +0.699519330,0 +0.714853610,1 +0.715998140,0 +0.731504630,1 +0.732640680,0 +0.748121800,1 +0.749408650,0 +0.764792950,1 +0.766030270,0 +0.781440490,1 +0.782756580,0 +0.798110870,1 +0.799223270,0 +0.814802570,1 +0.816013560,0 +0.831438830,1 +0.832691840,0 +0.848113560,1 +0.849417770,0 +0.864769360,1 +0.866026630,0 +0.881422070,1 +0.882615190,0 +0.898083510,1 +0.899420940,0 +0.914759990,1 +0.915954750,0 +0.931447050,1 +0.932538870,0 +0.948109740,1 +0.949182200,0 +0.964754800,1 +0.965974600,0 +0.981420120,1 +0.982592190,0 +0.998127130,1 +0.999356850,0 +1.014759110,1 +1.015800120,0 +1.031421010,1 +1.032542110,0 +1.048032450,1 +1.049290170,0 +1.064711240,1 +1.065890750,0 +1.081401260,1 +1.082540960,0 +1.098031840,1 +1.099360490,0 +1.114769120,1 +1.115919120,0 +1.131406770,1 +1.132498860,0 +1.148038470,1 +1.149135780,0 +1.164680250,1 +1.166047980,0 +1.181364620,1 +1.182504010,0 +1.198032320,1 +1.199103970,0 +1.214677590,1 +1.215831370,0 +1.231364010,1 +1.232532560,0 +1.247984010,1 +1.249222560,0 +1.264676200,1 +1.265829790,0 +1.281347450,1 +1.282636640,0 +1.297995620,1 +1.299200720,0 +1.313531560,1 +1.413530650,0 +1.414784090,1 +1.415812060,0 +1.431317200,1 +1.432534050,0 +1.447952640,1 +1.449285440,0 +1.464636840,1 +1.465712150,0 +1.481285080,1 +1.482373440,0 +1.497946740,1 +1.499200040,0 +1.514630850,1 +1.515807460,0 +1.531272840,1 +1.532488850,0 +1.547921040,1 +1.549152530,0 +1.564594920,1 +1.565944610,0 +1.581263650,1 +1.582502860,0 +1.597944010,1 +1.599204060,0 +1.614718660,1 +1.615809900,0 +1.631251840,1 +1.632382050,0 +1.647907700,1 +1.649144960,0 +1.664549380,1 +1.665684200,0 +1.681217710,1 +1.682413970,0 +1.697884960,1 +1.698976870,0 +1.714590620,1 +1.715615740,0 +1.731235560,1 +1.732581090,0 +1.747853600,1 +1.749625530,0 +1.764680770,1 +1.765754100,0 +1.781360850,1 +1.782426050,0 +1.797861300,1 +1.799655910,0 +1.814669200,1 +1.815890600,0 +1.831275840,1 +1.832989870,0 +1.847862380,1 +1.849101490,0 +1.864647400,1 +1.866309140,0 +1.881161120,1 +1.882286490,0 +1.897817780,1 +1.899033950,0 +1.914530200,1 +1.915580630,0 +1.931145230,1 +1.932399060,0 +1.947813690,1 +1.949033900,0 +1.964468650,1 +1.965630930,0 +1.981147860,1 +1.982466390,0 +1.997800280,1 +1.999029630,0 +2.014463680,1 +2.015709870,0 +2.031147790,1 +2.032344210,0 +2.047790470,1 +2.049102980,0 +2.064412690,1 +2.065559960,0 +2.081126800,1 +2.082289150,0 +2.097769270,1 +2.098986870,0 +2.114482420,1 +2.115505470,0 +2.131083300,1 +2.132318280,0 +2.147761310,1 +2.148931860,0 +2.164448920,1 +2.165579600,0 +2.181080880,1 +2.182249920,0 +2.197748920,1 +2.198998770,0 +2.214411800,1 +2.215674580,0 +2.231075620,1 +2.232162420,0 +2.247760970,1 +2.249371270,0 +2.264386650,1 +2.265660520,0 +2.281050210,1 +2.282366540,0 +2.297751780,1 +2.298914290,0 +2.313522260,1 +2.413521340,0 +2.414559670,1 +2.415432000,0 +2.431017960,1 +2.432208550,0 +2.447668960,1 +2.449022740,0 +2.464355360,1 +2.465661090,0 +2.481012880,1 +2.482269190,0 +2.497653750,1 +2.498776740,0 +2.514362610,1 +2.515606020,0 +2.530962900,1 +2.532186260,0 +2.547655260,1 +2.548848870,0 +2.564333510,1 +2.565544910,0 +2.580961330,1 +2.582149160,0 +2.597626090,1 +2.598833590,0 +2.614314540,1 +2.615525960,0 +2.630946270,1 +2.632239360,0 +2.647617800,1 +2.648881450,0 +2.664283120,1 +2.665595020,0 +2.680950600,1 +2.682145030,0 +2.697628760,1 +2.698828590,0 +2.714292750,1 +2.715354940,0 +2.730973180,1 +2.732218760,0 +2.747620570,1 +2.748857740,0 +2.764271440,1 +2.765491460,0 +2.780942080,1 +2.782129370,0 +2.797610610,1 +2.798873910,0 +2.814275580,1 +2.815548870,0 +2.830913950,1 +2.832010980,0 +2.847600850,1 +2.848762190,0 +2.864255920,1 +2.865425830,0 +2.880909380,1 +2.882247890,0 +2.897571720,1 +2.898803750,0 +2.914237570,1 +2.915520190,0 +2.930899690,1 +2.932063310,0 +2.947511310,1 +2.948716020,0 +2.964217910,1 +2.965463460,0 +2.980866290,1 +2.982117260,0 +2.997539350,1 +2.998641830,0 +3.014227200,1 +3.015263750,0 +3.030856050,1 +3.032031410,0 +3.047533650,1 +3.048654420,0 +3.064214430,1 +3.065435200,0 +3.080887820,1 +3.081949200,0 +3.097508260,1 +3.098679690,0 +3.114225480,1 +3.115510860,0 +3.130853160,1 +3.132081410,0 +3.147529680,1 +3.148773180,0 +3.164175350,1 +3.165353190,0 +3.180845420,1 +3.182146520,0 +3.197501630,1 +3.198614600,0 +3.214201760,1 +3.215267340,0 +3.230834460,1 +3.232152400,0 +3.247503670,1 +3.248824470,0 +3.264144540,1 +3.265371180,0 +3.280817520,1 +3.282171230,0 +3.297580080,1 +3.298646030,0 +3.313512960,1 +3.413512030,0 +3.414402430,1 +3.415113390,0 +3.430766920,1 +3.431941470,0 +3.447445180,1 +3.448629780,0 +3.464097410,1 +3.465401750,0 +3.480783130,1 +3.482057100,0 +3.497438030,1 +3.498665720,0 +3.514114080,1 +3.515171180,0 +3.530751780,1 +3.531972590,0 +3.547426000,1 +3.548616600,0 +3.564091090,1 +3.565312230,0 +3.580749550,1 +3.582029740,0 +3.597424830,1 +3.598763350,0 +3.614070480,1 +3.615174510,0 +3.630755590,1 +3.632083740,0 +3.647411560,1 +3.648867500,0 +3.664028020,1 +3.665385790,0 +3.680747810,1 +3.682017820,0 +3.697367330,1 +3.698573500,0 +3.714054490,1 +3.715323180,0 +3.730717700,1 +3.731994480,0 +3.747366750,1 +3.748473360,0 +3.764028660,1 +3.765329330,0 +3.780705710,1 +3.781892020,0 +3.797391510,1 +3.798639000,0 +3.814046250,1 +3.815276620,0 +3.830693820,1 +3.831852300,0 +3.847349650,1 +3.848600900,0 +3.864008460,1 +3.865266790,0 +3.880678440,1 +3.881758490,0 +3.897305240,1 +3.898598320,0 +3.914031600,1 +3.915227520,0 +3.930683220,1 +3.931802480,0 +3.947314470,1 +3.948423840,0 +3.963976080,1 +3.965183630,0 +3.980655990,1 +3.982522330,0 +3.997306470,1 +3.998538890,0 +4.014155370,1 +4.015172860,0 +4.030643720,1 +4.031768630,0 +4.047315370,1 +4.048431220,0 +4.063953640,1 +4.065265490,0 +4.080643420,1 +4.081915710,0 +4.097307770,1 +4.098586630,0 +4.113941250,1 +4.115224550,0 +4.130631190,1 +4.131937970,0 +4.147276750,1 +4.148423710,0 +4.163948600,1 +4.165220750,0 +4.180599840,1 +4.181872080,0 +4.197258680,1 +4.198479730,0 +4.213946290,1 +4.215119890,0 +4.230593730,1 +4.231685950,0 +4.247269330,1 +4.248407400,0 +4.263933310,1 +4.265227460,0 +4.280553640,1 +4.281769220,0 +4.297229170,1 +4.298474000,0 +4.313503650,1 +4.413502720,0 +4.414260040,1 +4.414789010,0 +4.430527770,1 +4.431858370,0 +4.447215070,1 +4.448496380,0 +4.463886350,1 +4.465192280,0 +4.480533240,1 +4.481835340,0 +4.497191000,1 +4.498438470,0 +4.513863800,1 +4.515222650,0 +4.530517450,1 +4.531739520,0 +4.547192670,1 +4.548390020,0 +4.563847560,1 +4.564936800,0 +4.580502400,1 +4.581632490,0 +4.597140540,1 +4.598263360,0 +4.613828930,1 +4.615027190,0 +4.630500490,1 +4.631642730,0 +4.647172370,1 +4.648230390,0 +4.663834030,1 +4.665127590,0 +4.680461820,1 +4.681723420,0 +4.697143000,1 +4.698386280,0 +4.713820340,1 +4.714994730,0 +4.730481460,1 +4.731544150,0 +4.747131970,1 +4.748240230,0 +4.763791200,1 +4.764879530,0 +4.780433380,1 +4.781629760,0 +4.797135160,1 +4.798334000,0 +4.813797520,1 +4.814947190,0 +4.830455000,1 +4.831631290,0 +4.847091410,1 +4.848274520,0 +4.863757670,1 +4.864983430,0 +4.880436280,1 +4.881615800,0 +4.897094560,1 +4.898252380,0 +4.913758860,1 +4.915210780,0 +4.930421160,1 +4.931680090,0 +4.947063130,1 +4.948383650,0 +4.963730870,1 +4.965009200,0 +4.980436430,1 +4.981520390,0 +4.997038580,1 +4.998234310,0 +5.013743360,1 +5.014981710,0 +5.030406320,1 +5.031629210,0 +5.047058160,1 +5.048120970,0 +5.063730120,1 +5.064872610,0 +5.080394410,1 +5.081540420,0 +5.097044040,1 +5.098374700,0 +5.113745700,1 +5.114930600,0 +5.130377360,1 +5.131672830,0 +5.147013620,1 +5.148339790,0 +5.163816170,1 +5.165396530,0 +5.180366410,1 +5.181590780,0 +5.197037400,1 +5.198291960,0 +5.213697380,1 +5.214991760,0 +5.230348580,1 +5.231501400,0 +5.247014290,1 +5.248169080,0 +5.263646430,1 +5.264941620,0 +5.280332470,1 +5.281441830,0 +5.296988530,1 +5.298222420,0 +5.313494330,1 +5.413493400,0 +5.414149570,1 +5.414437580,0 +5.430289460,1 +5.431507690,0 +5.447019900,1 +5.448133420,0 +5.463627070,1 +5.464909940,0 +5.480317610,1 +5.481539410,0 +5.496936550,1 +5.498094760,0 +5.513628480,1 +5.514777290,0 +5.530266540,1 +5.531520030,0 +5.546945940,1 +5.548201890,0 +5.563616830,1 +5.564909730,0 +5.580269050,1 +5.581594510,0 +5.596944170,1 +5.598048800,0 +5.613616840,1 +5.614632880,0 +5.630277380,1 +5.631440930,0 +5.646924330,1 +5.648120770,0 +5.663592450,1 +5.664700090,0 +5.680271190,1 +5.681613760,0 +5.696894350,1 +5.698160470,0 +5.713593330,1 +5.714739740,0 +5.730240410,1 +5.731512240,0 +5.746879980,1 +5.748179290,0 +5.763582550,1 +5.764750600,0 +5.780233290,1 +5.781551940,0 +5.796891840,1 +5.798118390,0 +5.813532150,1 +5.814647200,0 +5.830225880,1 +5.831314290,0 +5.846874530,1 +5.848119190,0 +5.863529870,1 +5.864749060,0 +5.880235610,1 +5.881411390,0 +5.896855310,1 +5.897953730,0 +5.913563420,1 +5.914641640,0 +5.930206270,1 +5.931359100,0 +5.946858480,1 +5.947976270,0 +5.963553400,1 +5.964578010,0 +5.980216710,1 +5.981340240,0 +5.996839590,1 +5.998020160,0 +6.013521290,1 +6.014620760,0 +6.030196410,1 +6.031380270,0 +6.046846960,1 +6.048119220,0 +6.063520150,1 +6.064744110,0 +6.080201830,1 +6.081445630,0 +6.096840350,1 +6.098108400,0 +6.113497920,1 +6.114856100,0 +6.130168560,1 +6.131347440,0 +6.146852880,1 +6.148114860,0 +6.163477700,1 +6.164866310,0 +6.180150540,1 +6.181474860,0 +6.196830330,1 +6.197999860,0 +6.213484510,1 +6.214788670,0 +6.230147900,1 +6.231460570,0 +6.246814860,1 +6.248066090,0 +6.263480640,1 +6.264719790,0 +6.280131270,1 +6.281491890,0 +6.296807120,1 +6.298000240,0 +6.313472430,1 +6.413484080,0 +6.430118720,1 +6.431391790,0 +6.446783720,1 +6.447974240,0 +6.463463530,1 +6.464691860,0 +6.480217730,1 +6.481183490,0 +6.496749750,1 +6.498052820,0 +6.513465900,1 +6.514514030,0 +6.530090120,1 +6.531357080,0 +6.546760960,1 +6.548071330,0 +6.563425100,1 +6.564628980,0 +6.580064530,1 +6.581477940,0 +6.596731650,1 +6.598053480,0 +6.613446780,1 +6.614761300,0 +6.630074210,1 +6.631119040,0 +6.646734220,1 +6.648066050,0 +6.663384730,1 +6.664717610,0 +6.680031950,1 +6.681410900,0 +6.696714730,1 +6.697995290,0 +6.713378000,1 +6.714578610,0 +6.730037790,1 +6.731262790,0 +6.746706320,1 +6.747834190,0 +6.763352380,1 +6.764698280,0 +6.780031550,1 +6.781344950,0 +6.796695570,1 +6.798089470,0 +6.813369710,1 +6.814666120,0 +6.830164510,1 +6.831847660,0 +6.846838450,1 +6.848581760,0 +6.863436410,1 +6.865197300,0 +6.880119170,1 +6.881090280,0 +6.896776090,1 +6.897821040,0 +6.913514920,1 +6.914492150,0 +6.929987180,1 +6.931169060,0 +6.946675320,1 +6.947985620,0 +6.963319500,1 +6.964552090,0 +6.979967770,1 +6.981120910,0 +6.996633110,1 +6.997823640,0 +7.013323750,1 +7.014615370,0 +7.029975740,1 +7.031217640,0 +7.046596960,1 +7.047762970,0 +7.063264250,1 +7.064625160,0 +7.079979910,1 +7.081113660,0 +7.096615570,1 +7.097841480,0 +7.113253540,1 +7.114589860,0 +7.129943560,1 +7.131181800,0 +7.146600900,1 +7.147891830,0 +7.163275050,1 +7.164441910,0 +7.179926090,1 +7.181138530,0 +7.196614930,1 +7.197676200,0 +7.213262470,1 +7.214392640,0 +7.229912740,1 +7.231118890,0 +7.246592850,1 +7.247751750,0 +7.263251380,1 +7.264477240,0 +7.279935550,1 +7.281228320,0 +7.296572820,1 +7.297757380,0 +7.313264960,1 +7.413474750,0 +7.429853120,1 +7.431030130,0 +7.446536080,1 +7.447628530,0 +7.463196290,1 +7.464409960,0 +7.479834250,1 +7.480942480,0 +7.496478200,1 +7.497593640,0 +7.513157220,1 +7.514441550,0 +7.529842420,1 +7.531126000,0 +7.546471910,1 +7.547623710,0 +7.563187550,1 +7.564253850,0 +7.579818990,1 +7.580907470,0 +7.596485240,1 +7.597687580,0 +7.613154720,1 +7.614360390,0 +7.629820100,1 +7.631115880,0 +7.646485770,1 +7.647750820,0 +7.663159030,1 +7.664363440,0 +7.679825710,1 +7.681054620,0 +7.696470260,1 +7.697608510,0 +7.713132620,1 +7.714325920,0 +7.729785450,1 +7.730963250,0 +7.746444210,1 +7.747546730,0 +7.763105330,1 +7.764259640,0 +7.779797090,1 +7.781052600,0 +7.796428600,1 +7.797673950,0 +7.813123320,1 +7.814366230,0 +7.829754880,1 +7.830845040,0 +7.846426450,1 +7.847721520,0 +7.863098100,1 +7.864306260,0 +7.879763380,1 +7.881043670,0 +7.896414220,1 +7.897635880,0 +7.913095700,1 +7.914336570,0 +7.929761210,1 +7.930987840,0 +7.946406270,1 +7.947591800,0 +7.963164700,1 +7.964432960,0 +7.979742220,1 +7.981092900,0 +7.996410640,1 +7.997551210,0 +8.013039690,1 +8.014252290,0 +8.029670290,1 +8.030986320,0 +8.046385110,1 +8.047528680,0 +8.063040860,1 +8.064127970,0 +8.079719940,1 +8.080961890,0 +8.096367810,1 +8.097566780,0 +8.112997330,1 +8.114267720,0 +8.129664570,1 +8.131024020,0 +8.146352670,1 +8.147598080,0 +8.163019920,1 +8.164227090,0 +8.179668640,1 +8.180882560,0 +8.196509360,1 +8.197700930,0 +8.213001820,1 +8.214159800,0 +8.229642810,1 +8.230851750,0 +8.246339560,1 +8.247569500,0 +8.262987800,1 +8.264303910,0 +8.279683020,1 +8.280856160,0 +8.296289550,1 +8.297601430,0 +8.312977480,1 +8.413465420,0 +8.429634710,1 +8.430980660,0 +8.446314520,1 +8.447389070,0 +8.462954820,1 +8.464281700,0 +8.479625260,1 +8.480744770,0 +8.496345530,1 +8.497475490,0 +8.512955100,1 +8.514193060,0 +8.529615760,1 +8.530823940,0 +8.546297760,1 +8.547470430,0 +8.562926000,1 +8.564179320,0 +8.579570390,1 +8.580797010,0 +8.596265060,1 +8.597386330,0 +8.612894290,1 +8.614220280,0 +8.629591290,1 +8.630670260,0 +8.646264760,1 +8.647342210,0 +8.662916020,1 +8.664152710,0 +8.679559180,1 +8.680717770,0 +8.696223140,1 +8.697448850,0 +8.712922130,1 +8.714065050,0 +8.729568960,1 +8.730782740,0 +8.746217980,1 +8.747425220,0 +8.762872180,1 +8.764060640,0 +8.779561130,1 +8.780684600,0 +8.796218640,1 +8.797377000,0 +8.812831440,1 +8.813989590,0 +8.829543930,1 +8.830728190,0 +8.846213420,1 +8.847458310,0 +8.862863000,1 +8.864083750,0 +8.879516760,1 +8.880710660,0 +8.896188340,1 +8.897285180,0 +8.912845900,1 +8.913972740,0 +8.929516380,1 +8.930591350,0 +8.946177970,1 +8.947406060,0 +8.962834010,1 +8.964006280,0 +8.979514040,1 +8.980634680,0 +8.996159850,1 +8.997311160,0 +9.012834120,1 +9.014141890,0 +9.029503580,1 +9.030787400,0 +9.046162640,1 +9.047368340,0 +9.062828270,1 +9.064047900,0 +9.079472250,1 +9.080711260,0 +9.096133000,1 +9.097435520,0 +9.112823910,1 +9.114045760,0 +9.129465990,1 +9.130764550,0 +9.146118650,1 +9.147230060,0 +9.162786540,1 +9.163966320,0 +9.179465540,1 +9.180552460,0 +9.196107100,1 +9.197442810,0 +9.212783520,1 +9.213953930,0 +9.229439090,1 +9.230708580,0 +9.246089830,1 +9.247351460,0 +9.262771120,1 +9.264107400,0 +9.279436540,1 +9.280715030,0 +9.296099820,1 +9.297299180,0 +9.312777830,1 +9.413456070,0 +9.429392750,1 +9.430584600,0 +9.446057410,1 +9.447319280,0 +9.462703520,1 +9.464024550,0 +9.479354680,1 +9.480788310,0 +9.496049130,1 +9.497205890,0 +9.512750690,1 +9.513914270,0 +9.529375910,1 +9.530610940,0 +9.546031440,1 +9.547286770,0 +9.562687940,1 +9.563874940,0 +9.579335410,1 +9.580514070,0 +9.595994290,1 +9.597298940,0 +9.612661980,1 +9.613849890,0 +9.629354420,1 +9.630558650,0 +9.646009380,1 +9.647396830,0 +9.662685170,1 +9.663822340,0 +9.679335890,1 +9.680534770,0 +9.695967170,1 +9.697216080,0 +9.712674420,1 +9.713892880,0 +9.729325020,1 +9.730628450,0 +9.746130140,1 +9.747133870,0 +9.762638540,1 +9.763879720,0 +9.779324930,1 +9.780534440,0 +9.795966690,1 +9.797306240,0 +9.812620260,1 +9.813773330,0 +9.829296320,1 +9.830572460,0 +9.845954740,1 +9.847188970,0 +9.862641550,1 +9.863843030,0 +9.879289120,1 +9.880422140,0 +9.895925860,1 +9.897135700,0 +9.912608520,1 +9.913757070,0 +9.929273630,1 +9.930386150,0 +9.945938720,1 +9.947158640,0 +9.962599630,1 +9.963713160,0 +9.979264470,1 +9.980535880,0 +9.995910600,1 +9.997144770,0 +10.012590800,1 +10.013740820,0 +10.029240460,1 +10.030415630,0 +10.045895420,1 +10.046960230,0 +10.062580290,1 +10.063913030,0 +10.079246330,1 +10.080460350,0 +10.095881760,1 +10.097215610,0 +10.112543760,1 +10.113694760,0 +10.129203600,1 +10.130312680,0 +10.145879530,1 +10.147061850,0 +10.162524900,1 +10.163739020,0 +10.179197100,1 +10.180405590,0 +10.195867110,1 +10.197062810,0 +10.212509650,1 +10.214220890,0 +10.229181710,1 +10.230379600,0 +10.245840120,1 +10.247068410,0 +10.262525020,1 +10.263771170,0 +10.279199090,1 +10.280429690,0 +10.295816790,1 +10.297147290,0 +10.312464630,1 +10.413446720,0 +10.429077810,1 +10.430987730,0 +10.445800840,1 +10.447077210,0 +10.462421930,1 +10.463685410,0 +10.479103040,1 +10.480191860,0 +10.495742230,1 +10.496915940,0 +10.512566100,1 +10.513578510,0 +10.529108330,1 +10.530308630,0 +10.545745480,1 +10.546963000,0 +10.562399370,1 +10.563564970,0 +10.579052750,1 +10.580280680,0 +10.595740100,1 +10.596952530,0 +10.612424820,1 +10.613591030,0 +10.629033020,1 +10.630125190,0 +10.645716440,1 +10.646977900,0 +10.662369840,1 +10.663639730,0 +10.679030590,1 +10.680286440,0 +10.695702840,1 +10.697075180,0 +10.712387260,1 +10.713650630,0 +10.729009720,1 +10.730414280,0 +10.745672930,1 +10.746922640,0 +10.762355710,1 +10.763552120,0 +10.778984940,1 +10.780315810,0 +10.795681660,1 +10.796892370,0 +10.812308560,1 +10.813476430,0 +10.828989720,1 +10.830309220,0 +10.845668040,1 +10.846746860,0 +10.862317880,1 +10.863602330,0 +10.878993490,1 +10.880157090,0 +10.895620870,1 +10.896963170,0 +10.912287900,1 +10.913428710,0 +10.928942820,1 +10.930213310,0 +10.945618140,1 +10.946955440,0 +10.962289620,1 +10.963442690,0 +10.978941910,1 +10.980134970,0 +10.995610530,1 +10.996764280,0 +11.012249490,1 +11.013335450,0 +11.028916940,1 +11.030212480,0 +11.045601600,1 +11.046700000,0 +11.062254550,1 +11.063580890,0 +11.078918700,1 +11.080097560,0 +11.095576210,1 +11.096794460,0 +11.112233030,1 +11.113478920,0 +11.128903560,1 +11.130058670,0 +11.145546180,1 +11.146713690,0 +11.162199110,1 +11.163448190,0 +11.178861230,1 +11.180160840,0 +11.195548300,1 +11.196715710,0 +11.212232090,1 +11.213387030,0 +11.228850960,1 +11.230252100,0 +11.245527410,1 +11.246688790,0 +11.262203430,1 +11.263389740,0 +11.278841350,1 +11.280170220,0 +11.295588460,1 +11.296574090,0 +11.312172820,1 +11.313379430,0 +11.313437280,1 +11.413437350,0 +11.428817990,1 +11.429959640,0 +11.445496850,1 +11.446677020,0 +11.462146680,1 +11.463320490,0 +11.478812360,1 +11.479997070,0 +11.495486650,1 +11.496557080,0 +11.512125450,1 +11.513408660,0 +11.528783970,1 +11.530035120,0 +11.545439340,1 +11.546710670,0 +11.562078800,1 +11.563332550,0 +11.578770470,1 +11.580159610,0 +11.595463950,1 +11.596886200,0 +11.612229660,1 +11.613269740,0 +11.628754770,1 +11.630427060,0 +11.645528260,1 +11.646660270,0 +11.662175370,1 +11.663737870,0 +11.678896590,1 +11.680511680,0 +11.695418390,1 +11.696552510,0 +11.712066290,1 +11.713898060,0 +11.728742510,1 +11.729931610,0 +11.745408220,1 +11.746687210,0 +11.762041370,1 +11.763213650,0 +11.778700170,1 +11.780091660,0 +11.795374810,1 +11.796646940,0 +11.812047540,1 +11.813285630,0 +11.828700140,1 +11.829905010,0 +11.845371030,1 +11.846576910,0 +11.862005350,1 +11.863284840,0 +11.878689610,1 +11.879793980,0 +11.895336380,1 +11.896621930,0 +11.912011850,1 +11.913304690,0 +11.928696320,1 +11.929930490,0 +11.945335050,1 +11.946523240,0 +11.961988390,1 +11.963195720,0 +11.978628800,1 +11.979872930,0 +11.995299260,1 +11.996502720,0 +12.011957950,1 +12.013073990,0 +12.028647700,1 +12.029838550,0 +12.045314560,1 +12.046464510,0 +12.061956330,1 +12.063296020,0 +12.078639420,1 +12.079683610,0 +12.095290570,1 +12.096442030,0 +12.111978310,1 +12.113236740,0 +12.128625770,1 +12.129879140,0 +12.145286790,1 +12.146672390,0 +12.161889660,1 +12.163125690,0 +12.178628000,1 +12.179827030,0 +12.195257490,1 +12.196456690,0 +12.211937190,1 +12.213112150,0 +12.228583500,1 +12.229952980,0 +12.245270860,1 +12.246408640,0 +12.261929440,1 +12.263100170,0 +12.278538270,1 +12.279725770,0 +12.295235270,1 +12.296409180,0 +12.311910390,1 +12.312989760,0 +12.313428920,1 +12.413427990,0 +12.428524060,1 +12.429808270,0 +12.445179630,1 +12.446413500,0 +12.461855930,1 +12.463005220,0 +12.478508080,1 +12.479734340,0 +12.495179700,1 +12.496310420,0 +12.511809580,1 +12.512906830,0 +12.528492500,1 +12.529707950,0 +12.545128990,1 +12.546342340,0 +12.561813390,1 +12.563069040,0 +12.578457250,1 +12.579778280,0 +12.595121340,1 +12.596269890,0 +12.611817780,1 +12.613118250,0 +12.628461270,1 +12.629569570,0 +12.645107630,1 +12.646349280,0 +12.661763240,1 +12.663020660,0 +12.678454340,1 +12.679587990,0 +12.695081520,1 +12.696284710,0 +12.711736690,1 +12.712885880,0 +12.728422850,1 +12.729630990,0 +12.745062840,1 +12.746317330,0 +12.761732020,1 +12.762971260,0 +12.778375870,1 +12.779597050,0 +12.795044610,1 +12.796205770,0 +12.811741190,1 +12.812961600,0 +12.828345860,1 +12.829640980,0 +12.845012940,1 +12.846274610,0 +12.861669050,1 +12.862919870,0 +12.878358910,1 +12.879428880,0 +12.895006040,1 +12.896206320,0 +12.911706820,1 +12.912935700,0 +12.928448140,1 +12.929715340,0 +12.944993920,1 +12.946244170,0 +12.961658210,1 +12.963047330,0 +12.978329490,1 +12.979421020,0 +12.994971160,1 +12.996322120,0 +13.011642520,1 +13.012909680,0 +13.028312840,1 +13.029451530,0 +13.044949310,1 +13.046131650,0 +13.061644900,1 +13.062903720,0 +13.078288620,1 +13.079525190,0 +13.094935340,1 +13.096188650,0 +13.111565240,1 +13.112944090,0 +13.128259760,1 +13.129412010,0 +13.144915260,1 +13.146187120,0 +13.161591370,1 +13.162745690,0 +13.178230220,1 +13.179567780,0 +13.194896980,1 +13.196160450,0 +13.211593870,1 +13.212789250,0 +13.228228020,1 +13.229486410,0 +13.244876800,1 +13.246062200,0 +13.261560580,1 +13.262851650,0 +13.278199590,1 +13.279441750,0 +13.294840690,1 +13.296122460,0 +13.311527590,1 +13.312709700,0 +13.313419560,1 +13.413418620,0 +13.428152520,1 +13.429393500,0 +13.444814250,1 +13.446074960,0 +13.461492970,1 +13.462677700,0 +13.478135290,1 +13.479302900,0 +13.494789700,1 +13.496058020,0 +13.511490980,1 +13.512553580,0 +13.528136700,1 +13.529204190,0 +13.544787250,1 +13.545867870,0 +13.561448580,1 +13.562539210,0 +13.578094920,1 +13.579308730,0 +13.594742220,1 +13.596016390,0 +13.611462940,1 +13.612574770,0 +13.628089110,1 +13.629313430,0 +13.644719150,1 +13.645992540,0 +13.661426660,1 +13.662665810,0 +13.678052980,1 +13.679250990,0 +13.694749240,1 +13.696089140,0 +13.711408480,1 +13.712838830,0 +13.728055920,1 +13.729264540,0 +13.744706060,1 +13.745943950,0 +13.761361760,1 +13.762447560,0 +13.778016140,1 +13.779243910,0 +13.794721570,1 +13.795951400,0 +13.811369380,1 +13.812428190,0 +13.828003780,1 +13.829157920,0 +13.844655420,1 +13.846008250,0 +13.861330460,1 +13.862603650,0 +13.878016330,1 +13.879355600,0 +13.894668630,1 +13.895909430,0 +13.911347930,1 +13.912672170,0 +13.927992120,1 +13.929068760,0 +13.944667840,1 +13.945697670,0 +13.961318590,1 +13.962616760,0 +13.977970770,1 +13.979120300,0 +13.994662180,1 +13.995872130,0 +14.011308080,1 +14.012585170,0 +14.027934650,1 +14.029151750,0 +14.044574290,1 +14.045756410,0 +14.061300490,1 +14.062483340,0 +14.077941480,1 +14.079171540,0 +14.094600860,1 +14.095839030,0 +14.111253140,1 +14.112505870,0 +14.127922530,1 +14.129122960,0 +14.144581150,1 +14.145789320,0 +14.161262090,1 +14.162604080,0 +14.177893640,1 +14.179125990,0 +14.194561140,1 +14.195823080,0 +14.211258110,1 +14.212479690,0 +14.227888130,1 +14.229061890,0 +14.244551380,1 +14.245863670,0 +14.261222540,1 +14.262602730,0 +14.277883120,1 +14.279174080,0 +14.294544910,1 +14.295741260,0 +14.311230630,1 +14.312438270,0 +14.313410190,1 +14.413409250,0 +14.427834490,1 +14.429125880,0 +14.444493880,1 +14.445777180,0 +14.461167930,1 +14.462518140,0 +14.477802200,1 +14.479046060,0 +14.494440600,1 +14.495674500,0 +14.511133540,1 +14.512426510,0 +14.527809930,1 +14.528963500,0 +14.544463630,1 +14.545705750,0 +14.561119680,1 +14.562306370,0 +14.577780960,1 +14.578932680,0 +14.594449090,1 +14.595670770,0 +14.611105640,1 +14.612293610,0 +14.627766990,1 +14.628959810,0 +14.644386340,1 +14.645634640,0 +14.661077080,1 +14.662285560,0 +14.677735360,1 +14.678881950,0 +14.694396700,1 +14.695599620,0 +14.711072330,1 +14.712379900,0 +14.727706760,1 +14.728981000,0 +14.744478940,1 +14.745612400,0 +14.761031660,1 +14.762115210,0 +14.777707450,1 +14.778845540,0 +14.794377130,1 +14.795442220,0 +14.811048350,1 +14.812333240,0 +14.827679110,1 +14.828831960,0 +14.844334270,1 +14.845588600,0 +14.860992040,1 +14.862255550,0 +14.877681020,1 +14.878881480,0 +14.894326500,1 +14.895547550,0 +14.911080880,1 +14.912128830,0 +14.927660230,1 +14.928758610,0 +14.944309430,1 +14.945488480,0 +14.960952370,1 +14.962151190,0 +14.977642080,1 +14.978835020,0 +14.994274880,1 +14.995452990,0 +15.010937280,1 +15.012162690,0 +15.027610110,1 +15.028763450,0 +15.044271810,1 +15.045493620,0 +15.060874960,1 +15.062104780,0 +15.077601400,1 +15.078810220,0 +15.094246540,1 +15.095529510,0 +15.110913260,1 +15.112140430,0 +15.127574620,1 +15.128641690,0 +15.144234480,1 +15.145300270,0 +15.160908440,1 +15.162195110,0 +15.177547620,1 +15.178849750,0 +15.194219670,1 +15.195517640,0 +15.210867130,1 +15.212028640,0 +15.227528900,1 +15.228746260,0 +15.244181360,1 +15.245350980,0 +15.260952320,1 +15.262241570,0 +15.277508810,1 +15.278654150,0 +15.294174590,1 +15.295544900,0 +15.310860250,1 +15.312018900,0 +15.313400820,1 +15.413399880,0 +15.427613460,1 +15.428651310,0 +15.444128520,1 +15.445277530,0 +15.460766920,1 +15.462170960,0 +15.477430340,1 +15.478608450,0 +15.494091820,1 +15.495214580,0 +15.510764530,1 +15.512057590,0 +15.527415370,1 +15.528633630,0 +15.544054690,1 +15.546083160,0 +15.560760290,1 +15.561866140,0 +15.577414890,1 +15.578545290,0 +15.594076990,1 +15.595276190,0 +15.610740630,1 +15.611968790,0 +15.627395930,1 +15.628609260,0 +15.644064000,1 +15.645287080,0 +15.660706990,1 +15.661913880,0 +15.677360180,1 +15.678448300,0 +15.694018250,1 +15.695296680,0 +15.710734290,1 +15.711849320,0 +15.727353780,1 +15.728558330,0 +15.744004880,1 +15.745222300,0 +15.760693350,1 +15.761995440,0 +15.777351670,1 +15.778479950,0 +15.793986230,1 +15.795167520,0 +15.810641700,1 +15.811928440,0 +15.827309040,1 +15.828662820,0 +15.843973810,1 +15.845204850,0 +15.860636410,1 +15.861786420,0 +15.877296650,1 +15.878474620,0 +15.893971120,1 +15.895158970,0 +15.910631420,1 +15.911821930,0 +15.927295970,1 +15.928532710,0 +15.943942470,1 +15.945117100,0 +15.960624310,1 +15.961746320,0 +15.977284550,1 +15.978498010,0 +15.993947630,1 +15.995148350,0 +16.010592130,1 +16.011715800,0 +16.027255270,1 +16.028622470,0 +16.043901300,1 +16.045160630,0 +16.060585600,1 +16.061895630,0 +16.077247340,1 +16.078407860,0 +16.093883610,1 +16.095121900,0 +16.110589110,1 +16.111626520,0 +16.127225240,1 +16.128373860,0 +16.143891340,1 +16.145208810,0 +16.160542260,1 +16.161867470,0 +16.177185470,1 +16.178291930,0 +16.193876410,1 +16.195081660,0 +16.210547550,1 +16.211798660,0 +16.227202700,1 +16.228479530,0 +16.243835390,1 +16.245034650,0 +16.260501420,1 +16.261735490,0 +16.277151880,1 +16.278340270,0 +16.293827620,1 +16.295007520,0 +16.310529800,1 +16.311676370,0 +16.313391440,1 +16.413390510,0 +16.427092370,1 +16.428366600,0 +16.443761500,1 +16.444950400,0 +16.460450860,1 +16.461622050,0 +16.477097640,1 +16.478252670,0 +16.493751740,1 +16.494911350,0 +16.510452670,1 +16.511574590,0 +16.527090610,1 +16.528300440,0 +16.543710310,1 +16.544935240,0 +16.560401380,1 +16.561564210,0 +16.577067730,1 +16.578253610,0 +16.593755960,1 +16.595038100,0 +16.610405020,1 +16.611549440,0 +16.627034680,1 +16.628254500,0 +16.643722880,1 +16.645055830,0 +16.660363510,1 +16.661506080,0 +16.677030000,1 +16.678361300,0 +16.693680630,1 +16.694769480,0 +16.710345260,1 +16.711661520,0 +16.727007460,1 +16.728233060,0 +16.743684090,1 +16.744983390,0 +16.760318730,1 +16.761655740,0 +16.776965680,1 +16.778159700,0 +16.793662200,1 +16.794916130,0 +16.810317600,1 +16.811541990,0 +16.826984750,1 +16.828319040,0 +16.843624830,1 +16.844900700,0 +16.860294180,1 +16.861554230,0 +16.876959660,1 +16.878146220,0 +16.893617340,1 +16.894775810,0 +16.910305660,1 +16.911426600,0 +16.926920550,1 +16.928095220,0 +16.943596070,1 +16.944759130,0 +16.960259820,1 +16.961500150,0 +16.976898170,1 +16.978225150,0 +16.993574080,1 +16.994660870,0 +17.010264530,1 +17.011431300,0 +17.026895500,1 +17.028132740,0 +17.043542220,1 +17.044810110,0 +17.060212080,1 +17.061496640,0 +17.076880430,1 +17.078167250,0 +17.093514980,1 +17.094746660,0 +17.110219880,1 +17.111469510,0 +17.126853940,1 +17.128118030,0 +17.143563200,1 +17.144733870,0 +17.160169510,1 +17.161247920,0 +17.176826280,1 +17.178138260,0 +17.193494560,1 +17.194597690,0 +17.210182300,1 +17.211376090,0 +17.226797440,1 +17.228017920,0 +17.243507300,1 +17.244777980,0 +17.260157930,1 +17.261295010,0 +17.276797920,1 +17.278072130,0 +17.293472340,1 +17.294623150,0 +17.310167170,1 +17.311396800,0 +17.313382060,1 +17.413381140,0 +17.426759270,1 +17.428192200,0 +17.443412080,1 +17.444695410,0 +17.460067420,1 +17.461350410,0 +17.476738650,1 +17.477989520,0 +17.493399930,1 +17.494648620,0 +17.510056680,1 +17.511197030,0 +17.526739600,1 +17.527893910,0 +17.543393560,1 +17.544543650,0 +17.560030290,1 +17.561308490,0 +17.576688080,1 +17.577976540,0 +17.593377080,1 +17.594527000,0 +17.610019100,1 +17.611245310,0 +17.626688610,1 +17.627997390,0 +17.643367300,1 +17.644576000,0 +17.660034530,1 +17.661281330,0 +17.676772740,1 +17.677936640,0 +17.693401370,1 +17.694432930,0 +17.709991890,1 +17.711192850,0 +17.726684710,1 +17.727890940,0 +17.743329200,1 +17.744502460,0 +17.759991820,1 +17.761175280,0 +17.776638840,1 +17.777804710,0 +17.793346410,1 +17.794380460,0 +17.809995410,1 +17.811182140,0 +17.826643870,1 +17.827899700,0 +17.843280310,1 +17.844504660,0 +17.859954240,1 +17.861260010,0 +17.876741660,1 +17.878053410,0 +17.893278470,1 +17.894511910,0 +17.909938070,1 +17.911238060,0 +17.926568850,1 +17.927767700,0 +17.943231980,1 +17.944476900,0 +17.959943120,1 +17.961020660,0 +17.976570650,1 +17.977801860,0 +17.993238030,1 +17.994534440,0 +18.009893240,1 +18.011111550,0 +18.026550090,1 +18.027811390,0 +18.043241970,1 +18.044412340,0 +18.059889700,1 +18.061134640,0 +18.076557620,1 +18.077840360,0 +18.093211180,1 +18.094332300,0 +18.109871360,1 +18.111024630,0 +18.126527990,1 +18.127712440,0 +18.143206090,1 +18.144321690,0 +18.159863440,1 +18.161122360,0 +18.176520490,1 +18.177761540,0 +18.193167340,1 +18.194395490,0 +18.209850390,1 +18.211147050,0 +18.226525070,1 +18.227714590,0 +18.243159720,1 +18.244387580,0 +18.259813030,1 +18.260962600,0 +18.276471410,1 +18.277707690,0 +18.293144350,1 +18.294297250,0 +18.309799850,1 +18.311128540,0 +18.313372690,1 +18.413371760,0 +18.426445950,1 +18.427639060,0 +18.443091110,1 +18.444373710,0 +18.459733760,1 +18.460920080,0 +18.476392800,1 +18.477676040,0 +18.493064440,1 +18.494280690,0 +18.509763320,1 +18.510877330,0 +18.526395120,1 +18.527627600,0 +18.543043180,1 +18.544294860,0 +18.559744050,1 +18.560942660,0 +18.576391800,1 +18.577579660,0 +18.593051200,1 +18.594259670,0 +18.609731140,1 +18.610787410,0 +18.626342690,1 +18.627574700,0 +18.643029920,1 +18.644256940,0 +18.659701680,1 +18.660785250,0 +18.676356340,1 +18.677564330,0 +18.693027720,1 +18.694264780,0 +18.709685290,1 +18.710939980,0 +18.726339110,1 +18.727724580,0 +18.743097800,1 +18.744200330,0 +18.759634270,1 +18.760830120,0 +18.776330310,1 +18.777514690,0 +18.792976690,1 +18.794181970,0 +18.809650960,1 +18.810761960,0 +18.826338160,1 +18.827397790,0 +18.842984760,1 +18.844265680,0 +18.859638170,1 +18.860815840,0 +18.876268150,1 +18.877516630,0 +18.892947280,1 +18.894133160,0 +18.909633780,1 +18.910642890,0 +18.910745920,1 +18.910910630,0 +18.926267660,1 +18.927469220,0 +18.942965850,1 +18.944144980,0 +18.959599890,1 +18.960800360,0 +18.976272010,1 +18.977480480,0 +18.992925780,1 +18.994133210,0 +19.009619480,1 +19.010828680,0 +19.026251330,1 +19.027337690,0 +19.042924700,1 +19.044139710,0 +19.059572820,1 +19.060756260,0 +19.076235060,1 +19.077491240,0 +19.092899640,1 +19.094121170,0 +19.109601370,1 +19.110903670,0 +19.126230450,1 +19.127389540,0 +19.142879130,1 +19.144061500,0 +19.159511040,1 +19.160775350,0 +19.176192970,1 +19.177405260,0 +19.192984600,1 +19.194014480,0 +19.209590190,1 +19.210883010,0 +19.226175620,1 +19.227346700,0 +19.242838900,1 +19.243991670,0 +19.259501000,1 +19.260601170,0 +19.276188870,1 +19.277364190,0 +19.292832170,1 +19.294115940,0 +19.309505700,1 +19.310673650,0 +19.313363320,1 +19.413362390,0 +19.426126510,1 +19.427371300,0 +19.442805630,1 +19.444019170,0 +19.459500390,1 +19.460678830,0 +19.476121560,1 +19.477271490,0 +19.492787880,1 +19.493970140,0 +19.509427940,1 +19.510644850,0 +19.526090250,1 +19.527317620,0 +19.542750450,1 +19.543997370,0 +19.559425960,1 +19.560495290,0 +19.576078320,1 +19.577202100,0 +19.592742130,1 +19.593794190,0 +19.609421570,1 +19.610570220,0 +19.626049580,1 +19.627283680,0 +19.642716980,1 +19.643880870,0 +19.659358310,1 +19.660599030,0 +19.676057790,1 +19.677408570,0 +19.692738090,1 +19.693931800,0 +19.709385530,1 +19.710607300,0 +19.726027060,1 +19.727179060,0 +19.742708840,1 +19.743908890,0 +19.759360770,1 +19.760530740,0 +19.775999130,1 +19.777189940,0 +19.792673360,1 +19.793756550,0 +19.809340500,1 +19.810499790,0 +19.826002140,1 +19.827231880,0 +19.842657950,1 +19.843874040,0 +19.859351170,1 +19.860561500,0 +19.876000370,1 +19.877310200,0 +19.892652300,1 +19.893965460,0 +19.909316560,1 +19.910675370,0 +19.925974350,1 +19.927163640,0 +19.942623940,1 +19.943906500,0 +19.959279060,1 +19.960389970,0 +19.975942620,1 +19.977116290,0 +19.992639120,1 +19.993740250,0 +20.009261850,1 +20.010481570,0 +20.025923150,1 +20.027106560,0 +20.042576260,1 +20.043815920,0 +20.059257400,1 +20.060507790,0 +20.075940210,1 +20.077195800,0 +20.092733620,1 +20.094126680,0 +20.109229710,1 +20.110468810,0 +20.125881490,1 +20.127090280,0 +20.142574080,1 +20.143967540,0 +20.159218680,1 +20.160317390,0 +20.175870300,1 +20.177091490,0 +20.192533580,1 +20.193717540,0 +20.209208280,1 +20.210413980,0 +20.225880940,1 +20.226998290,0 +20.242475660,1 +20.243749900,0 +20.259183950,1 +20.260263260,0 +20.275856530,1 +20.277044000,0 +20.292502190,1 +20.293685980,0 +20.309177290,1 +20.310242640,0 +20.313353950,1 +20.413353020,0 +20.425806130,1 +20.426969000,0 +20.442436630,1 +20.443770120,0 +20.459126900,1 +20.460292240,0 +20.475771950,1 +20.477044690,0 +20.492453680,1 +20.493624050,0 +20.509122600,1 +20.510368100,0 +20.525752580,1 +20.526986140,0 +20.542572000,1 +20.543566740,0 +20.559094200,1 +20.560406330,0 +20.575749780,1 +20.577090970,0 +20.592400250,1 +20.593742270,0 +20.609089530,1 +20.610335940,0 +20.625733110,1 +20.626971250,0 +20.642397700,1 +20.643579450,0 +20.659070360,1 +20.660227470,0 +20.675709510,1 +20.676962740,0 +20.692360950,1 +20.693542160,0 +20.709029260,1 +20.710249920,0 +20.725690380,1 +20.726927230,0 +20.742354890,1 +20.743626530,0 +20.759025600,1 +20.760205520,0 +20.775674630,1 +20.777007520,0 +20.792349840,1 +20.793487050,0 +20.809008940,1 +20.810280790,0 +20.825664260,1 +20.826813980,0 +20.842334430,1 +20.843414520,0 +20.858979760,1 +20.860316790,0 +20.875650320,1 +20.876980180,0 +20.892312600,1 +20.893488450,0 +20.908994530,1 +20.910125390,0 +20.925624770,1 +20.926803760,0 +20.942308730,1 +20.943533300,0 +20.958979630,1 +20.960209720,0 +20.975611560,1 +20.976806430,0 +20.992319040,1 +20.993478690,0 +21.008972250,1 +21.010176410,0 +21.025622970,1 +21.026786980,0 +21.042242040,1 +21.043600030,0 +21.058955660,1 +21.060194070,0 +21.075618940,1 +21.076827680,0 +21.092270630,1 +21.093458210,0 +21.109015140,1 +21.110088960,0 +21.125574310,1 +21.126820080,0 +21.142217000,1 +21.143324390,0 +21.158879460,1 +21.160184530,0 +21.175580630,1 +21.176815050,0 +21.192214750,1 +21.193415840,0 +21.208879020,1 +21.210042140,0 +21.225571800,1 +21.226717970,0 +21.242218540,1 +21.243434820,0 +21.258855090,1 +21.260149900,0 +21.275529450,1 +21.276750440,0 +21.292202870,1 +21.293466370,0 +21.308877100,1 +21.310138460,0 +21.313344570,1 +21.413343650,0 +21.425473450,1 +21.426580260,0 +21.442153700,1 +21.443390360,0 +21.458779360,1 +21.460092930,0 +21.475488700,1 +21.476631890,0 +21.492119410,1 +21.493325610,0 +21.508813870,1 +21.510084380,0 +21.525481350,1 +21.526677770,0 +21.542154250,1 +21.543328070,0 +21.558787240,1 +21.559992150,0 +21.575428570,1 +21.576698890,0 +21.592109930,1 +21.593456920,0 +21.608778160,1 +21.610104360,0 +21.625441730,1 +21.626655030,0 +21.642094640,1 +21.643432310,0 +21.658739800,1 +21.660066930,0 +21.675416210,1 +21.676702600,0 +21.692072370,1 +21.693307250,0 +21.708736420,1 +21.709911220,0 +21.725512900,1 +21.726595350,0 +21.742051430,1 +21.743417810,0 +21.758726190,1 +21.760394900,0 +21.775361470,1 +21.776589570,0 +21.792195980,1 +21.793863190,0 +21.808687660,1 +21.809995370,0 +21.825367270,1 +21.826626690,0 +21.842177810,1 +21.843196240,0 +21.858823290,1 +21.860412910,0 +21.875357030,1 +21.877041500,0 +21.892031290,1 +21.893219000,0 +21.908705670,1 +21.909961550,0 +21.925367140,1 +21.926578150,0 +21.942009630,1 +21.943141740,0 +21.958671540,1 +21.960011280,0 +21.975351180,1 +21.976501550,0 +21.991981760,1 +21.993231770,0 +22.008654160,1 +22.009878310,0 +22.025331820,1 +22.026486090,0 +22.041977870,1 +22.043196980,0 +22.058613080,1 +22.059778370,0 +22.075305240,1 +22.076480790,0 +22.091948230,1 +22.093140520,0 +22.108624490,1 +22.110121700,0 +22.125287300,1 +22.126612120,0 +22.141975420,1 +22.143250460,0 +22.158608240,1 +22.159835830,0 +22.175309570,1 +22.176431640,0 +22.191943990,1 +22.193244260,0 +22.208612530,1 +22.209835360,0 +22.225266560,1 +22.226481390,0 +22.241933900,1 +22.242992430,0 +22.258584290,1 +22.259878130,0 +22.275251990,1 +22.276428400,0 +22.291891710,1 +22.293084020,0 +22.308582450,1 +22.309889700,0 +22.313335200,1 +22.413334260,0 +22.425211770,1 +22.426438440,0 +22.441846210,1 +22.443098140,0 +22.458517000,1 +22.459724720,0 +22.475195220,1 +22.476237870,0 +22.491817320,1 +22.493082290,0 +22.508544280,1 +22.509823950,0 +22.525177370,1 +22.526324200,0 +22.541832900,1 +22.543012330,0 +22.558492440,1 +22.559710260,0 +22.575169030,1 +22.576349170,0 +22.591816560,1 +22.593134940,0 +22.608488950,1 +22.609774240,0 +22.625139860,1 +22.626346490,0 +22.641805900,1 +22.643151030,0 +22.658465060,1 +22.659852320,0 +22.675118570,1 +22.676314660,0 +22.691802030,1 +22.692936310,0 +22.708471210,1 +22.709608400,0 +22.725126100,1 +22.726410630,0 +22.741759590,1 +22.743083330,0 +22.758400320,1 +22.759671080,0 +22.775076270,1 +22.776354680,0 +22.791755200,1 +22.793068270,0 +22.808518570,1 +22.810110500,0 +22.825085980,1 +22.826291490,0 +22.841850950,1 +22.842949640,0 +22.858384630,1 +22.859638020,0 +22.875054990,1 +22.876477000,0 +22.891716620,1 +22.892903130,0 +22.908407460,1 +22.909552430,0 +22.925044850,1 +22.926219260,0 +22.941695570,1 +22.942991540,0 +22.958371810,1 +22.959604620,0 +22.975038980,1 +22.976206710,0 +22.991688000,1 +22.992990890,0 +23.008357750,1 +23.009611840,0 +23.025025830,1 +23.026311880,0 +23.041682550,1 +23.042985600,0 +23.058311020,1 +23.059555920,0 +23.074981000,1 +23.076222590,0 +23.091653640,1 +23.092749270,0 +23.108338810,1 +23.109541840,0 +23.124956280,1 +23.126151180,0 +23.141651320,1 +23.142864360,0 +23.158444940,1 +23.159476850,0 +23.174963130,1 +23.176224890,0 +23.191592170,1 +23.192850620,0 +23.208324940,1 +23.209706430,0 +23.224938470,1 +23.226130850,0 +23.241594600,1 +23.242861000,0 +23.258265860,1 +23.259578570,0 +23.274927770,1 +23.276178840,0 +23.291595830,1 +23.292837820,0 +23.308249540,1 +23.309426370,0 +23.313325830,1 +23.413324890,0 +23.425013750,1 +23.426660160,0 +23.441532390,1 +23.442841120,0 +23.458289310,1 +23.460023910,0 +23.474929500,1 +23.476640040,0 +23.491520900,1 +23.493340250,0 +23.508351240,1 +23.510011990,0 +23.524956700,1 +23.526101500,0 +23.541548060,1 +23.542702730,0 +23.558174800,1 +23.559340990,0 +23.574946620,1 +23.575978410,0 +23.591478790,1 +23.592771250,0 +23.608188920,1 +23.609433940,0 +23.624768670,1 +23.626176140,0 +23.641468500,1 +23.642718720,0 +23.658147060,1 +23.659394110,0 +23.674781570,1 +23.675990590,0 +23.691470420,1 +23.692658440,0 +23.708113900,1 +23.709266920,0 +23.724764120,1 +23.725947290,0 +23.741442580,1 +23.742743240,0 +23.758117030,1 +23.759310370,0 +23.774784300,1 +23.775935370,0 +23.791436260,1 +23.792644870,0 +23.808082300,1 +23.809291360,0 +23.824735950,1 +23.825912520,0 +23.841400470,1 +23.842558360,0 +23.858055610,1 +23.859365250,0 +23.874722090,1 +23.875935060,0 +23.891381920,1 +23.892642580,0 +23.908055190,1 +23.909236910,0 +23.924716680,1 +23.925975880,0 +23.941380110,1 +23.942598350,0 +23.958015610,1 +23.959261480,0 +23.974671700,1 +23.975933530,0 +23.991356100,1 +23.992534270,0 +24.008065230,1 +24.009218360,0 +24.024684690,1 +24.025941390,0 +24.041343870,1 +24.042545330,0 +24.058017670,1 +24.059221350,0 +24.074666410,1 +24.075846590,0 +24.091319220,1 +24.092563910,0 +24.108018210,1 +24.109214680,0 +24.124628170,1 +24.125870530,0 +24.141255940,1 +24.142482500,0 +24.157951200,1 +24.159182290,0 +24.174619290,1 +24.175842780,0 +24.191312170,1 +24.192566710,0 +24.207970630,1 +24.209125040,0 +24.224608830,1 +24.225939290,0 +24.241289930,1 +24.242669990,0 +24.257908880,1 +24.259187990,0 +24.274589370,1 +24.275848560,0 +24.291263930,1 +24.292460100,0 +24.307926360,1 +24.309114360,0 +24.313316470,1 +24.413315520,0 +24.424563430,1 +24.425837670,0 +24.441205710,1 +24.442412850,0 +24.457877200,1 +24.459083110,0 +24.474519740,1 +24.475659880,0 +24.491189680,1 +24.492411330,0 +24.507874120,1 +24.509083270,0 +24.524497620,1 +24.525717480,0 +24.541187790,1 +24.542493900,0 +24.557820060,1 +24.559049640,0 +24.574520750,1 +24.575808800,0 +24.591152170,1 +24.592441510,0 +24.607792470,1 +24.609158070,0 +24.624504410,1 +24.625688340,0 +24.641143320,1 +24.642334580,0 +24.657798690,1 +24.659018460,0 +24.674474260,1 +24.675752610,0 +24.691128960,1 +24.692436370,0 +24.707771240,1 +24.709015940,0 +24.724458970,1 +24.725599520,0 +24.741099760,1 +24.742292730,0 +24.757779530,1 +24.759080650,0 +24.774515710,1 +24.775605020,0 +24.791073610,1 +24.792353380,0 +24.807792510,1 +24.809054440,0 +24.824461220,1 +24.825595700,0 +24.841080480,1 +24.842334310,0 +24.857726630,1 +24.858955650,0 +24.874432250,1 +24.875726840,0 +24.891058090,1 +24.892286290,0 +24.907738220,1 +24.908970590,0 +24.924472330,1 +24.925604710,0 +24.941054110,1 +24.942242650,0 +24.957698830,1 +24.958906960,0 +24.974385270,1 +24.975523920,0 +24.991041700,1 +24.992241570,0 +25.007703980,1 +25.008825090,0 +25.024385830,1 +25.025475870,0 +25.041020070,1 +25.042151920,0 +25.057691700,1 +25.058940820,0 +25.074363340,1 +25.075454520,0 +25.091009620,1 +25.092163650,0 +25.107662030,1 +25.108888640,0 +25.124355450,1 +25.125518110,0 +25.140963910,1 +25.142256440,0 +25.157673380,1 +25.158978360,0 +25.174327680,1 +25.175460940,0 +25.190972920,1 +25.192262040,0 +25.207665790,1 +25.208837230,0 +25.224307680,1 +25.225441760,0 +25.241007700,1 +25.242175340,0 +25.257589770,1 +25.258838900,0 +25.274276970,1 +25.275439490,0 +25.290976220,1 +25.292068840,0 +25.307647610,1 +25.308828100,0 +25.313307080,1 +25.413306160,0 +25.424208640,1 +25.425500230,0 +25.440888120,1 +25.442186450,0 +25.457578060,1 +25.458793390,0 +25.474208700,1 +25.475484940,0 +25.490874880,1 +25.492147050,0 +25.507546600,1 +25.508868790,0 +25.524185190,1 +25.525406310,0 +25.540828680,1 +25.542046040,0 +25.557529280,1 +25.558765820,0 +25.574171000,1 +25.575420610,0 +25.590832930,1 +25.592040690,0 +25.607525970,1 +25.608728950,0 +25.624146040,1 +25.625447120,0 +25.640800470,1 +25.642073820,0 +25.657484640,1 +25.658754650,0 +25.674126610,1 +25.675342190,0 +25.690769850,1 +25.692000580,0 +25.707476580,1 +25.708659560,0 +25.724124980,1 +25.725260910,0 +25.740792800,1 +25.741988970,0 +25.757444680,1 +25.758640770,0 +25.774094060,1 +25.775407020,0 +25.790764950,1 +25.791942310,0 +25.807450740,1 +25.808573600,0 +25.824094600,1 +25.825333750,0 +25.840738950,1 +25.841975770,0 +25.857395250,1 +25.858571550,0 +25.874077210,1 +25.875513520,0 +25.890699550,1 +25.891976340,0 +25.907400320,1 +25.908701890,0 +25.924068260,1 +25.925272950,0 +25.940703410,1 +25.941952500,0 +25.957401410,1 +25.958649590,0 +25.974037570,1 +25.975254360,0 +25.990697260,1 +25.991979860,0 +26.007348520,1 +26.008561470,0 +26.024018930,1 +26.025240090,0 +26.040690450,1 +26.041992570,0 +26.057331380,1 +26.058560710,0 +26.074002040,1 +26.075319890,0 +26.090662140,1 +26.091920040,0 +26.107352690,1 +26.108593810,0 +26.123961710,1 +26.125206230,0 +26.140668850,1 +26.141861970,0 +26.157308350,1 +26.158450410,0 +26.173951820,1 +26.175252790,0 +26.190603830,1 +26.191920870,0 +26.207279650,1 +26.208434660,0 +26.223925930,1 +26.225862600,0 +26.240618560,1 +26.241824280,0 +26.257247260,1 +26.258455110,0 +26.273922520,1 +26.275182510,0 +26.290585420,1 +26.291824290,0 +26.307291530,1 +26.308613290,0 +26.313297720,1 +26.413296790,0 +26.423891020,1 +26.425074330,0 +26.440550760,1 +26.441703810,0 +26.457220210,1 +26.458452240,0 +26.473842370,1 +26.475068460,0 +26.490543270,1 +26.491699510,0 +26.507221880,1 +26.508470700,0 +26.523826880,1 +26.525080170,0 +26.540486260,1 +26.541826780,0 +26.557173010,1 +26.558444710,0 +26.573831890,1 +26.575126170,0 +26.590496660,1 +26.591684470,0 +26.607135960,1 +26.608494700,0 +26.623778020,1 +26.624975070,0 +26.640442720,1 +26.641692990,0 +26.657135040,1 +26.658354800,0 +26.673808200,1 +26.674963640,0 +26.690446580,1 +26.691668470,0 +26.707081730,1 +26.708266020,0 +26.723751750,1 +26.724996950,0 +26.740434530,1 +26.741570530,0 +26.757096280,1 +26.758765940,0 +26.773889570,1 +26.775111220,0 +26.790405900,1 +26.791611440,0 +26.807074770,1 +26.808633870,0 +26.823741580,1 +26.825057470,0 +26.840397220,1 +26.841597370,0 +26.857230720,1 +26.858830280,0 +26.873702600,1 +26.875507630,0 +26.890456360,1 +26.891566120,0 +26.907148180,1 +26.908248540,0 +26.923689220,1 +26.924948830,0 +26.940337850,1 +26.941574380,0 +26.957024570,1 +26.958266470,0 +26.973682210,1 +26.974946080,0 +26.990344980,1 +26.991572110,0 +27.007024660,1 +27.008259570,0 +27.023679560,1 +27.024876550,0 +27.040314410,1 +27.041511160,0 +27.056980090,1 +27.058198110,0 +27.073623190,1 +27.074937240,0 +27.090303290,1 +27.091533250,0 +27.106977910,1 +27.108225490,0 +27.123617020,1 +27.124930580,0 +27.140296530,1 +27.141476830,0 +27.156966370,1 +27.158153820,0 +27.173616880,1 +27.174842350,0 +27.190287380,1 +27.191400970,0 +27.206938870,1 +27.208164350,0 +27.223597610,1 +27.224818470,0 +27.240281610,1 +27.241500030,0 +27.256900140,1 +27.258079110,0 +27.273572400,1 +27.274779030,0 +27.290235670,1 +27.291389860,0 +27.306885870,1 +27.308119450,0 +27.313288350,1 +27.413287420,0 +27.423502710,1 +27.424746150,0 +27.440194730,1 +27.441400430,0 +27.456802090,1 +27.458160070,0 +27.473506450,1 +27.474695220,0 +27.490158110,1 +27.491348340,0 +27.506808740,1 +27.508095520,0 +27.523484530,1 +27.524778390,0 +27.540269000,1 +27.541313270,0 +27.556815430,1 +27.558061140,0 +27.573445120,1 +27.574811380,0 +27.590125010,1 +27.591279010,0 +27.606800640,1 +27.608133430,0 +27.623453480,1 +27.624616440,0 +27.640080530,1 +27.641377280,0 +27.656770790,1 +27.657976480,0 +27.673423940,1 +27.674627030,0 +27.690081410,1 +27.691281870,0 +27.706736890,1 +27.707973920,0 +27.723397230,1 +27.724641600,0 +27.740062880,1 +27.741267720,0 +27.756727960,1 +27.757952350,0 +27.773380380,1 +27.774681380,0 +27.790050870,1 +27.791274860,0 +27.806716290,1 +27.807997210,0 +27.823392380,1 +27.824684860,0 +27.840023080,1 +27.841222390,0 +27.856653650,1 +27.857932050,0 +27.873364870,1 +27.874595660,0 +27.890009830,1 +27.891188860,0 +27.906655240,1 +27.907931300,0 +27.923331180,1 +27.924644040,0 +27.940006400,1 +27.941219530,0 +27.956643010,1 +27.957852840,0 +27.973304170,1 +27.974565720,0 +27.989981510,1 +27.991244470,0 +28.006662110,1 +28.007933960,0 +28.023305820,1 +28.024508860,0 +28.039935630,1 +28.041314730,0 +28.056621540,1 +28.057914500,0 +28.073270260,1 +28.074556880,0 +28.089919980,1 +28.091149310,0 +28.106622120,1 +28.107899530,0 +28.123255230,1 +28.124409910,0 +28.139889050,1 +28.141140760,0 +28.156569460,1 +28.157806820,0 +28.173218410,1 +28.174432790,0 +28.189902870,1 +28.191049750,0 +28.206568080,1 +28.207736880,0 +28.223235000,1 +28.224446680,0 +28.239857970,1 +28.241081980,0 +28.256548630,1 +28.257694440,0 +28.273188080,1 +28.274454330,0 +28.289819610,1 +28.291104820,0 +28.306495870,1 +28.307679830,0 +28.313278990,1 +28.413278040,0 +28.423146700,1 +28.424292640,0 +28.439803380,1 +28.441109280,0 +28.456448030,1 +28.457698930,0 +28.473111080,1 +28.474402530,0 +28.489764780,1 +28.490840380,0 +28.506416000,1 +28.507661720,0 +28.523087000,1 +28.524307870,0 +28.539757500,1 +28.540960210,0 +28.556395670,1 +28.557631890,0 +28.573067330,1 +28.574295450,0 +28.589715350,1 +28.590929420,0 +28.606405140,1 +28.607679110,0 +28.623039910,1 +28.624247130,0 +28.639692450,1 +28.641015040,0 +28.656394370,1 +28.657506300,0 +28.673029200,1 +28.674206720,0 +28.689690180,1 +28.690878630,0 +28.706390290,1 +28.707529940,0 +28.722995010,1 +28.724207230,0 +28.739654470,1 +28.740921760,0 +28.756305750,1 +28.757547150,0 +28.772990060,1 +28.774188950,0 +28.789671490,1 +28.790994370,0 +28.806336170,1 +28.807598420,0 +28.822979010,1 +28.824170970,0 +28.839643620,1 +28.840778600,0 +28.856265370,1 +28.857529200,0 +28.872988900,1 +28.874226090,0 +28.889610570,1 +28.890926660,0 +28.906265530,1 +28.907451830,0 +28.922922080,1 +28.924102640,0 +28.939583660,1 +28.940788430,0 +28.956252770,1 +28.957451510,0 +28.972876910,1 +28.974130150,0 +28.989549960,1 +28.990835140,0 +29.006257670,1 +29.007418890,0 +29.022885260,1 +29.024049090,0 +29.039536800,1 +29.040817410,0 +29.056222090,1 +29.057413710,0 +29.072877330,1 +29.074145180,0 +29.089524760,1 +29.090862420,0 +29.106190520,1 +29.107346770,0 +29.122845730,1 +29.124112930,0 +29.139507330,1 +29.140748440,0 +29.156166700,1 +29.157349900,0 +29.172796540,1 +29.174039020,0 +29.189471920,1 +29.190720670,0 +29.206172870,1 +29.207469710,0 +29.222813240,1 +29.223922520,0 +29.239486080,1 +29.240738040,0 +29.256126260,1 +29.257368290,0 +29.272809880,1 +29.274017530,0 +29.289448980,1 +29.290669710,0 +29.306144970,1 +29.307425130,0 +29.313269610,1 +29.413268680,0 +29.422752680,1 +29.423929010,0 +29.439399820,1 +29.440575270,0 +29.456019940,1 +29.457375770,0 +29.472689900,1 +29.473955700,0 +29.489363050,1 +29.490672620,0 +29.506028560,1 +29.507261170,0 +29.522686420,1 +29.523895070,0 +29.539329670,1 +29.540528170,0 +29.556012160,1 +29.557204300,0 +29.572682910,1 +29.573892740,0 +29.589327570,1 +29.590494920,0 +29.606007820,1 +29.607178190,0 +29.622666340,1 +29.623873580,0 +29.639329920,1 +29.640520370,0 +29.655976590,1 +29.657238010,0 +29.672598130,1 +29.673838020,0 +29.689301500,1 +29.690540790,0 +29.705960540,1 +29.707174370,0 +29.722608630,1 +29.723850260,0 +29.739249480,1 +29.740543960,0 +29.755934640,1 +29.757198320,0 +29.772604010,1 +29.773811300,0 +29.789228000,1 +29.790487370,0 +29.805916830,1 +29.807123300,0 +29.822561080,1 +29.823847820,0 +29.839249180,1 +29.840515310,0 +29.855867740,1 +29.857169770,0 +29.872560040,1 +29.873856760,0 +29.889198210,1 +29.890420130,0 +29.905875530,1 +29.907275580,0 +29.922524030,1 +29.923784470,0 +29.939169030,1 +29.940329590,0 +29.955949090,1 +29.957643350,0 +29.972516830,1 +29.973736610,0 +29.989132970,1 +29.990433160,0 +30.005838930,1 +30.007096320,0 +30.022496800,1 +30.023695840,0 +30.039127060,1 +30.040335270,0 +30.055806890,1 +30.057026670,0 +30.072459070,1 +30.073656820,0 +30.089156500,1 +30.090372740,0 +30.105759810,1 +30.106911080,0 +30.122444010,1 +30.123732790,0 +30.139105210,1 +30.140255250,0 +30.155776880,1 +30.156976460,0 +30.172433130,1 +30.173672290,0 +30.189094630,1 +30.190222320,0 +30.205751800,1 +30.206944030,0 +30.222398950,1 +30.223665950,0 +30.239053640,1 +30.240269130,0 +30.255740030,1 +30.257032710,0 +30.272403630,1 +30.273599750,0 +30.289057810,1 +30.290383850,0 +30.305732530,1 +30.306908710,0 +30.313260240,1 +30.413259310,0 +30.422304430,1 +30.423584440,0 +30.438997420,1 +30.440281640,0 +30.455661200,1 +30.456807280,0 +30.472308510,1 +30.473625670,0 +30.488931710,1 +30.490109940,0 +30.505628630,1 +30.506886080,0 +30.522293820,1 +30.523550250,0 +30.538966340,1 +30.540216790,0 +30.555630210,1 +30.556817330,0 +30.572277730,1 +30.574128860,0 +30.588934470,1 +30.590162250,0 +30.605617070,1 +30.606787850,0 +30.622220660,1 +30.623472150,0 +30.638913810,1 +30.640155310,0 +30.655590870,1 +30.656763040,0 +30.672234120,1 +30.673412520,0 +30.688904850,1 +30.690110390,0 +30.705560170,1 +30.706786490,0 +30.722212620,1 +30.723419830,0 +30.738846290,1 +30.740103730,0 +30.755528030,1 +30.756854640,0 +30.772191830,1 +30.773487640,0 +30.788835140,1 +30.790083820,0 +30.805510760,1 +30.806736430,0 +30.822162930,1 +30.823423020,0 +30.838843010,1 +30.840035200,0 +30.855481880,1 +30.856790640,0 +30.872157380,1 +30.873357620,0 +30.888801640,1 +30.890134510,0 +30.905473490,1 +30.906777000,0 +30.922138320,1 +30.923377740,0 +30.938797660,1 +30.940004980,0 +30.955461820,1 +30.956724650,0 +30.972112680,1 +30.973372280,0 +30.988781190,1 +30.990136460,0 +31.005436200,1 +31.006674550,0 +31.022096000,1 +31.023367940,0 +31.038714530,1 +31.039975910,0 +31.055434610,1 +31.056653370,0 +31.072097040,1 +31.073239880,0 +31.088739370,1 +31.090020360,0 +31.105408290,1 +31.106593360,0 +31.122059660,1 +31.123259490,0 +31.138723280,1 +31.139924880,0 +31.155361380,1 +31.156607720,0 +31.172042770,1 +31.173283680,0 +31.188700610,1 +31.189897000,0 +31.205378450,1 +31.206493540,0 +31.222040160,1 +31.223282350,0 +31.238657370,1 +31.239908140,0 +31.255353910,1 +31.256650820,0 +31.271996300,1 +31.273229290,0 +31.288644700,1 +31.289888750,0 +31.305325050,1 +31.306564670,0 +31.313250880,1 +31.413249940,0 +31.421937970,1 +31.423143570,0 +31.438604200,1 +31.439899340,0 +31.455250380,1 +31.456400710,0 +31.471912580,1 +31.473055560,0 +31.488568450,1 +31.489904890,0 +31.505208330,1 +31.506508150,0 +31.521892770,1 +31.523146860,0 +31.538535340,1 +31.539689010,0 +31.555222410,1 +31.556538420,0 +31.571871860,1 +31.573020750,0 +31.588526290,1 +31.589782060,0 +31.605189550,1 +31.606351710,0 +31.621837510,1 +31.623107350,0 +31.638501060,1 +31.639883120,0 +31.655163520,1 +31.656317850,0 +31.671830230,1 +31.673069850,0 +31.688475410,1 +31.689701060,0 +31.705159390,1 +31.706400490,0 +31.721816280,1 +31.723030270,0 +31.738497000,1 +31.739669450,0 +31.755147280,1 +31.756485700,0 +31.771785710,1 +31.773564880,0 +31.788462880,1 +31.789667650,0 +31.805085300,1 +31.806352270,0 +31.821774520,1 +31.823023430,0 +31.838621690,1 +31.840218480,0 +31.855198660,1 +31.856273500,0 +31.871837960,1 +31.873563930,0 +31.888542190,1 +31.890284100,0 +31.905068880,1 +31.906293250,0 +31.921705430,1 +31.922977430,0 +31.938387630,1 +31.939599380,0 +31.955028670,1 +31.956321530,0 +31.971680200,1 +31.973008810,0 +31.988373800,1 +31.989599970,0 +32.005028310,1 +32.006268730,0 +32.021672950,1 +32.022863370,0 +32.038319290,1 +32.039610280,0 +32.055000800,1 +32.056273440,0 +32.071640490,1 +32.072894950,0 +32.088275920,1 +32.089572860,0 +32.104986910,1 +32.106222100,0 +32.121639720,1 +32.122906080,0 +32.138306560,1 +32.139606470,0 +32.154937640,1 +32.156191070,0 +32.171631750,1 +32.172787240,0 +32.188272340,1 +32.189460230,0 +32.204958550,1 +32.206146540,0 +32.221588810,1 +32.222817630,0 +32.238246080,1 +32.239392390,0 +32.254913970,1 +32.256164300,0 +32.271567010,1 +32.272793270,0 +32.288221990,1 +32.289394120,0 +32.304889880,1 +32.306195510,0 +32.313241520,1 +32.413240570,0 +32.421515920,1 +32.422757090,0 +32.438145860,1 +32.439391670,0 +32.454821260,1 +32.456020490,0 +32.471482110,1 +32.472721620,0 +32.488155500,1 +32.489408770,0 +32.504815410,1 +32.506103830,0 +32.521450260,1 +32.522680270,0 +32.538113390,1 +32.539371620,0 +32.554747690,1 +32.556021880,0 +32.571448140,1 +32.572613440,0 +32.588100300,1 +32.589326540,0 +32.604751080,1 +32.605893320,0 +32.621411530,1 +32.622606650,0 +32.638091030,1 +32.639345030,0 +32.654732860,1 +32.656021400,0 +32.671417240,1 +32.672570010,0 +32.688033820,1 +32.689188170,0 +32.704744370,1 +32.705960970,0 +32.721392980,1 +32.722513190,0 +32.738058020,1 +32.739317290,0 +32.754689180,1 +32.755885420,0 +32.771358800,1 +32.772593350,0 +32.788017410,1 +32.789297730,0 +32.804697030,1 +32.805939270,0 +32.821343760,1 +32.822524620,0 +32.838002500,1 +32.839286340,0 +32.854671020,1 +32.855895630,0 +32.871324690,1 +32.872574970,0 +32.887976190,1 +32.889217140,0 +32.904646620,1 +32.905907420,0 +32.921285420,1 +32.922502120,0 +32.937933120,1 +32.939798330,0 +32.954593930,1 +32.955874920,0 +32.971272010,1 +32.972531200,0 +32.987945490,1 +32.989178700,0 +33.004614240,1 +33.005792560,0 +33.021255400,1 +33.022446860,0 +33.038009150,1 +33.039160840,0 +33.054587130,1 +33.055783820,0 +33.071244150,1 +33.072458910,0 +33.087904380,1 +33.089133990,0 +33.104577620,1 +33.105860260,0 +33.121199290,1 +33.122582330,0 +33.137831040,1 +33.139077410,0 +33.154528380,1 +33.155763150,0 +33.171195340,1 +33.172442810,0 +33.187858960,1 +33.189159370,0 +33.204520520,1 +33.205721770,0 +33.221183630,1 +33.222386330,0 +33.237829430,1 +33.239052670,0 +33.254489990,1 +33.255765000,0 +33.271172480,1 +33.272372750,0 +33.287807440,1 +33.289094150,0 +33.304507550,1 +33.305775880,0 +33.313232150,1 +33.413231220,0 +33.421086690,1 +33.422239490,0 +33.437767570,1 +33.438931330,0 +33.454382790,1 +33.455606730,0 +33.471039670,1 +33.472290730,0 +33.487734350,1 +33.489092330,0 +33.504433800,1 +33.505650490,0 +33.521062280,1 +33.522272440,0 +33.537684360,1 +33.539077080,0 +33.554363440,1 +33.555714600,0 +33.571057630,1 +33.572286180,0 +33.587692100,1 +33.589079390,0 +33.604363380,1 +33.605525190,0 +33.621014900,1 +33.622276790,0 +33.637668550,1 +33.638856410,0 +33.654344450,1 +33.655624360,0 +33.670997450,1 +33.672243940,0 +33.687642140,1 +33.688832620,0 +33.704336370,1 +33.705583890,0 +33.720961770,1 +33.722259050,0 +33.737631460,1 +33.738763460,0 +33.754327170,1 +33.755476270,0 +33.770952740,1 +33.772222720,0 +33.787619970,1 +33.788844850,0 +33.804288950,1 +33.805594090,0 +33.820932440,1 +33.822186290,0 +33.837716730,1 +33.838765030,0 +33.854222330,1 +33.855492560,0 +33.870906960,1 +33.872130940,0 +33.887578440,1 +33.888760630,0 +33.904258660,1 +33.905377930,0 +33.920871500,1 +33.922170840,0 +33.937538690,1 +33.938746130,0 +33.954224270,1 +33.955526180,0 +33.970864870,1 +33.972122260,0 +33.987538390,1 +33.988734850,0 +34.004186490,1 +34.005469110,0 +34.020839430,1 +34.022033290,0 +34.037501800,1 +34.038803360,0 +34.054137960,1 +34.055361860,0 +34.070816380,1 +34.072137560,0 +34.087469890,1 +34.088681560,0 +34.104157910,1 +34.105309740,0 +34.120798640,1 +34.122076990,0 +34.137444070,1 +34.138698460,0 +34.154102260,1 +34.155306420,0 +34.170793520,1 +34.171999280,0 +34.187452750,1 +34.188727800,0 +34.204121130,1 +34.205369030,0 +34.220708840,1 +34.222000490,0 +34.237440620,1 +34.238750410,0 +34.254076800,1 +34.255271530,0 +34.270747310,1 +34.271881110,0 +34.287409750,1 +34.288713160,0 +34.304088470,1 +34.305343880,0 +34.313222800,1 +34.413221850,0 +34.420667240,1 +34.421830270,0 +34.437322070,1 +34.438481960,0 +34.453982050,1 +34.455189210,0 +34.470635230,1 +34.471877080,0 +34.487322160,1 +34.488602660,0 +34.503990760,1 +34.505205000,0 +34.520628210,1 +34.521856410,0 +34.537317680,1 +34.538482070,0 +34.553945550,1 +34.555190440,0 +34.570611410,1 +34.571840880,0 +34.587253940,1 +34.588500100,0 +34.603945910,1 +34.605178190,0 +34.620591670,1 +34.621756990,0 +34.637266130,1 +34.638561640,0 +34.653927870,1 +34.655056850,0 +34.670594940,1 +34.671907780,0 +34.687228580,1 +34.688562050,0 +34.703927460,1 +34.705200840,0 +34.720537820,1 +34.721807770,0 +34.737232850,1 +34.738424240,0 +34.753906240,1 +34.755015580,0 +34.770506680,1 +34.771770240,0 +34.787313600,1 +34.789042980,0 +34.803890180,1 +34.805137390,0 +34.820503370,1 +34.821706120,0 +34.837191380,1 +34.838504860,0 +34.853845530,1 +34.855038730,0 +34.870495260,1 +34.871830150,0 +34.887165590,1 +34.888316790,0 +34.903797420,1 +34.905118440,0 +34.920489030,1 +34.921671140,0 +34.937140610,1 +34.938368180,0 +34.953813410,1 +34.955052450,0 +34.970477630,1 +34.971727560,0 +34.987143450,1 +34.988404070,0 +35.003785770,1 +35.005054430,0 +35.020429010,1 +35.021584480,0 +35.037104260,1 +35.038241290,0 +35.053757350,1 +35.055075970,0 +35.070447990,1 +35.071617060,0 +35.087104350,1 +35.088336140,0 +35.103740390,1 +35.104968620,0 +35.120420430,1 +35.121691090,0 +35.137041480,1 +35.138173050,0 +35.153702480,1 +35.154881840,0 +35.170387850,1 +35.171607530,0 +35.187039450,1 +35.188245150,0 +35.203691750,1 +35.204887130,0 +35.220361260,1 +35.221545620,0 +35.237026240,1 +35.238121610,0 +35.253703450,1 +35.254963340,0 +35.270362610,1 +35.271710020,0 +35.286995850,1 +35.288297790,0 +35.303689110,1 +35.304960880,0 +35.313213450,1 +35.413212500,0 +35.420284020,1 +35.421499970,0 +35.436946650,1 +35.438186820,0 +35.453583630,1 +35.454917740,0 +35.470275980,1 +35.471439700,0 +35.486929510,1 +35.488156070,0 +35.503609240,1 +35.504887190,0 +35.520214830,1 +35.521477390,0 +35.536906290,1 +35.538086190,0 +35.553584810,1 +35.554924460,0 +35.570213100,1 +35.571429720,0 +35.586874300,1 +35.588113370,0 +35.603558750,1 +35.604797270,0 +35.620171180,1 +35.621367650,0 +35.636867490,1 +35.638144440,0 +35.653547440,1 +35.654734940,0 +35.670186450,1 +35.671452330,0 +35.686856140,1 +35.688133010,0 +35.703483000,1 +35.704862930,0 +35.720183410,1 +35.721495240,0 +35.736824160,1 +35.738028260,0 +35.753468300,1 +35.754636140,0 +35.770116620,1 +35.771371040,0 +35.786749830,1 +35.787998810,0 +35.803498050,1 +35.804695020,0 +35.820114440,1 +35.821419220,0 +35.836799320,1 +35.838037230,0 +35.853441570,1 +35.854709450,0 +35.870111480,1 +35.871317110,0 +35.886733850,1 +35.888031250,0 +35.903442190,1 +35.904491840,0 +35.920064540,1 +35.921330240,0 +35.936733500,1 +35.937875390,0 +35.953401140,1 +35.954821530,0 +35.970071370,1 +35.971239190,0 +35.986755650,1 +35.987910760,0 +36.003379030,1 +36.004642250,0 +36.020102040,1 +36.021313450,0 +36.036707970,1 +36.037851480,0 +36.053359770,1 +36.054584850,0 +36.070024190,1 +36.071253550,0 +36.086699650,1 +36.087932200,0 +36.103336290,1 +36.104592370,0 +36.120056550,1 +36.121241310,0 +36.136645760,1 +36.138004560,0 +36.153317690,1 +36.154588100,0 +36.169950610,1 +36.171413850,0 +36.186633810,1 +36.187827240,0 +36.203312010,1 +36.204597730,0 +36.219948310,1 +36.221218150,0 +36.236603330,1 +36.237805050,0 +36.253290680,1 +36.254457040,0 +36.269912930,1 +36.271233160,0 +36.286588880,1 +36.287945720,0 +36.303272060,1 +36.304488740,0 +36.313204090,1 +36.413203160,0 +36.419854190,1 +36.421166510,0 +36.436528170,1 +36.437816960,0 +36.453172130,1 +36.454990530,0 +36.469822630,1 +36.471105460,0 +36.486536320,1 +36.487764530,0 +36.503147480,1 +36.504461320,0 +36.519833220,1 +36.521086580,0 +36.536462910,1 +36.537741340,0 +36.553130230,1 +36.554380410,0 +36.569790770,1 +36.571056350,0 +36.586474380,1 +36.587788790,0 +36.603127280,1 +36.604940890,0 +36.619888370,1 +36.620984100,0 +36.636594610,1 +36.638321050,0 +36.653093770,1 +36.654787080,0 +36.669845370,1 +36.671607070,0 +36.686519070,1 +36.688284780,0 +36.703200340,1 +36.704312230,0 +36.719858330,1 +36.721021270,0 +36.736426810,1 +36.737607840,0 +36.753052080,1 +36.754273820,0 +36.769698860,1 +36.770901650,0 +36.786387270,1 +36.787611230,0 +36.803016690,1 +36.804198800,0 +36.819687210,1 +36.820875120,0 +36.836358090,1 +36.837520780,0 +36.853026960,1 +36.854296950,0 +36.869683240,1 +36.870960430,0 +36.886322480,1 +36.887530790,0 +36.903029970,1 +36.904147690,0 +36.919650620,1 +36.921027200,0 +36.936323590,1 +36.937594240,0 +36.952999360,1 +36.954198890,0 +36.969627990,1 +36.970848210,0 +36.986305440,1 +36.987612280,0 +37.002940970,1 +37.004094240,0 +37.019601640,1 +37.020903560,0 +37.036283900,1 +37.037419940,0 +37.052931700,1 +37.054233590,0 +37.069578510,1 +37.070808390,0 +37.086242650,1 +37.087697900,0 +37.102952670,1 +37.104122220,0 +37.119576630,1 +37.120785160,0 +37.136204960,1 +37.137452550,0 +37.152877080,1 +37.154119410,0 +37.169537150,1 +37.170852050,0 +37.186208260,1 +37.187432160,0 +37.202853570,1 +37.204186850,0 +37.219512620,1 +37.220774020,0 +37.236174860,1 +37.237549620,0 +37.252848820,1 +37.254031950,0 +37.269507370,1 +37.270692710,0 +37.286147230,1 +37.287447600,0 +37.302833960,1 +37.304206200,0 +37.313194750,1 +37.413193800,0 +37.419429780,1 +37.420738430,0 +37.436093720,1 +37.437276890,0 +37.452724370,1 +37.453994640,0 +37.469431890,1 +37.470573960,0 +37.486094090,1 +37.487384980,0 +37.502745700,1 +37.504030920,0 +37.519400640,1 +37.520680550,0 +37.536031930,1 +37.537394950,0 +37.552722690,1 +37.553977870,0 +37.569381780,1 +37.570684710,0 +37.586040690,1 +37.587184510,0 +37.602699220,1 +37.603854610,0 +37.619347730,1 +37.620552710,0 +37.636029490,1 +37.637286640,0 +37.652669590,1 +37.653856520,0 +37.669320910,1 +37.670599270,0 +37.685969860,1 +37.687260870,0 +37.702658050,1 +37.703891690,0 +37.719284950,1 +37.720595920,0 +37.735956570,1 +37.737209910,0 +37.752626310,1 +37.753810380,0 +37.769297760,1 +37.770619720,0 +37.785952780,1 +37.787247010,0 +37.802611920,1 +37.803770010,0 +37.819269660,1 +37.820466990,0 +37.835956170,1 +37.837206740,0 +37.852571420,1 +37.853885370,0 +37.869264170,1 +37.870586510,0 +37.885908800,1 +37.886973750,0 +37.902582390,1 +37.903899930,0 +37.919242670,1 +37.920539450,0 +37.935876470,1 +37.937185180,0 +37.952515240,1 +37.953881910,0 +37.969182800,1 +37.970428590,0 +37.985867180,1 +37.987128830,0 +38.002538580,1 +38.003788100,0 +38.019185570,1 +38.020472350,0 +38.035836020,1 +38.037112510,0 +38.052508050,1 +38.053702730,0 +38.069161400,1 +38.070393950,0 +38.085796650,1 +38.087028270,0 +38.102549300,1 +38.103805250,0 +38.119168390,1 +38.120493200,0 +38.135793880,1 +38.137085300,0 +38.152455020,1 +38.153685860,0 +38.169126700,1 +38.170420280,0 +38.185777300,1 +38.186982950,0 +38.202480530,1 +38.203721740,0 +38.219092630,1 +38.220413320,0 +38.235741980,1 +38.236942540,0 +38.252459640,1 +38.253461730,0 +38.269090310,1 +38.270277430,0 +38.285722170,1 +38.287049080,0 +38.302395740,1 +38.303594540,0 +38.313185390,1 +38.413184460,0 +38.419059860,1 +38.420238550,0 +38.435696320,1 +38.436891720,0 +38.452322500,1 +38.453647170,0 +38.469017850,1 +38.470246830,0 +38.485652780,1 +38.486919610,0 +38.502339250,1 +38.503602570,0 +38.519003840,1 +38.520160780,0 +38.535620240,1 +38.536954920,0 +38.552309540,1 +38.553520290,0 +38.568958310,1 +38.570201800,0 +38.585602640,1 +38.586939920,0 +38.602303680,1 +38.603540260,0 +38.618945910,1 +38.620195390,0 +38.635598570,1 +38.636846170,0 +38.652287710,1 +38.653505610,0 +38.668938190,1 +38.670110410,0 +38.685589310,1 +38.686804740,0 +38.702232380,1 +38.703559820,0 +38.718900880,1 +38.720084400,0 +38.735564920,1 +38.736777180,0 +38.752213970,1 +38.753398610,0 +38.768877410,1 +38.770054120,0 +38.785561530,1 +38.786788430,0 +38.802212200,1 +38.803293750,0 +38.818847620,1 +38.820139750,0 +38.835543470,1 +38.836725910,0 +38.852201370,1 +38.853464040,0 +38.868847790,1 +38.870021680,0 +38.885517400,1 +38.886672840,0 +38.902204720,1 +38.903458110,0 +38.918801540,1 +38.920071620,0 +38.935497090,1 +38.936705800,0 +38.952272850,1 +38.953277350,0 +38.968812650,1 +38.970104400,0 +38.985447580,1 +38.986834720,0 +39.002142830,1 +39.003338910,0 +39.018767540,1 +39.019939120,0 +39.035419810,1 +39.036802850,0 +39.052103470,1 +39.053281360,0 +39.068769050,1 +39.070090850,0 +39.085417220,1 +39.086684560,0 +39.102087340,1 +39.103270530,0 +39.118741580,1 +39.119978200,0 +39.135385130,1 +39.136605960,0 +39.152047090,1 +39.153405620,0 +39.168725830,1 +39.169959740,0 +39.185356060,1 +39.186639240,0 +39.202056940,1 +39.203319260,0 +39.218708490,1 +39.220011990,0 +39.235366470,1 +39.236687700,0 +39.252013550,1 +39.253283660,0 +39.268665410,1 +39.269900370,0 +39.285341200,1 +39.286590270,0 +39.302022070,1 +39.303264190,0 +39.313176060,1 +39.413175130,0 +39.418622980,1 +39.419832770,0 +39.435265880,1 +39.436469890,0 +39.451929930,1 +39.453149730,0 +39.468568150,1 +39.469834010,0 +39.485214780,1 +39.486484630,0 +39.501909300,1 +39.503131510,0 +39.518578150,1 +39.519788600,0 +39.535248050,1 +39.536459580,0 +39.551871640,1 +39.553140680,0 +39.568541980,1 +39.569942680,0 +39.585195890,1 +39.586318870,0 +39.601896640,1 +39.603159710,0 +39.618519070,1 +39.619724020,0 +39.635189490,1 +39.636426920,0 +39.651838600,1 +39.653055910,0 +39.668513840,1 +39.669827280,0 +39.685173210,1 +39.686360210,0 +39.701825640,1 +39.703191280,0 +39.718461450,1 +39.719643480,0 +39.735110840,1 +39.736330660,0 +39.751796920,1 +39.753134530,0 +39.768458840,1 +39.769759820,0 +39.785109800,1 +39.786293470,0 +39.801771930,1 +39.802972310,0 +39.818441650,1 +39.819789600,0 +39.835101920,1 +39.836448950,0 +39.851760540,1 +39.852976240,0 +39.868380970,1 +39.869788210,0 +39.885074960,1 +39.886308860,0 +39.901757910,1 +39.903024680,0 +39.918388030,1 +39.919588040,0 +39.935051120,1 +39.936333840,0 +39.951727800,1 +39.952918310,0 +39.968382660,1 +39.969700600,0 +39.985050330,1 +39.986279890,0 +40.001712680,1 +40.002896680,0 +40.018366120,1 +40.019668020,0 +40.034993300,1 +40.036156130,0 +40.051678580,1 +40.052955080,0 +40.068343590,1 +40.069551630,0 +40.084997470,1 +40.086159450,0 +40.101668270,1 +40.102918180,0 +40.118318200,1 +40.119582660,0 +40.134989320,1 +40.136264630,0 +40.151638780,1 +40.152803650,0 +40.168322760,1 +40.169578660,0 +40.184917250,1 +40.186208190,0 +40.201597270,1 +40.203027180,0 +40.218285480,1 +40.219443960,0 +40.234936000,1 +40.236177210,0 +40.251578400,1 +40.252820700,0 +40.268245780,1 +40.269432750,0 +40.284895250,1 +40.286120010,0 +40.301550230,1 +40.302895960,0 +40.313166720,1 +40.413165780,0 +40.418183160,1 +40.419475020,0 +40.434849520,1 +40.436079610,0 +40.451514290,1 +40.452877540,0 +40.468189210,1 +40.469477010,0 +40.484814790,1 +40.486085520,0 +40.501499680,1 +40.502882580,0 +40.518143840,1 +40.519390600,0 +40.534816480,1 +40.536067090,0 +40.551443960,1 +40.552832910,0 +40.568138230,1 +40.569395240,0 +40.584787090,1 +40.586113410,0 +40.601471920,1 +40.602776800,0 +40.618080460,1 +40.619514950,0 +40.634765740,1 +40.635947800,0 +40.651448320,1 +40.652744600,0 +40.668105980,1 +40.669390720,0 +40.684712450,1 +40.686133170,0 +40.701429560,1 +40.702698380,0 +40.718073130,1 +40.719321030,0 +40.734722370,1 +40.735912830,0 +40.751396270,1 +40.752663630,0 +40.768018100,1 +40.769267530,0 +40.784725150,1 +40.785951360,0 +40.801479940,1 +40.802489480,0 +40.818007150,1 +40.819260050,0 +40.834686760,1 +40.835969520,0 +40.851332120,1 +40.852525750,0 +40.867998290,1 +40.869296030,0 +40.884651480,1 +40.885822500,0 +40.901325340,1 +40.902500960,0 +40.917977840,1 +40.919168400,0 +40.934636980,1 +40.936450980,0 +40.951308880,1 +40.952508950,0 +40.967962170,1 +40.969196900,0 +40.984619000,1 +40.985989370,0 +41.001286060,1 +41.002589460,0 +41.017960510,1 +41.019112830,0 +41.034608820,1 +41.035905170,0 +41.051242840,1 +41.052562610,0 +41.067932710,1 +41.069200460,0 +41.084581650,1 +41.085856180,0 +41.101278440,1 +41.102464700,0 +41.117924040,1 +41.119132590,0 +41.134536700,1 +41.135888030,0 +41.151192990,1 +41.152588630,0 +41.167856310,1 +41.169193740,0 +41.184546470,1 +41.185747960,0 +41.201214670,1 +41.202469970,0 +41.217888280,1 +41.219070410,0 +41.234526210,1 +41.235776080,0 +41.251183390,1 +41.252417160,0 +41.267851470,1 +41.269108920,0 +41.284501860,1 +41.285797950,0 +41.301203840,1 +41.302616430,0 +41.313157370,1 +41.413156450,0 +41.417786060,1 +41.419012300,0 +41.434441430,1 +41.435668130,0 +41.451112850,1 +41.452300780,0 +41.467776190,1 +41.468930530,0 +41.484420100,1 +41.485761340,0 +41.501062400,1 +41.502382620,0 +41.517729660,1 +41.519112890,0 +41.534384760,1 +41.535727770,0 +41.551049510,1 +41.552356360,0 +41.567724030,1 +41.569061320,0 +41.584401380,1 +41.585561300,0 +41.601053670,1 +41.602215320,0 +41.617687010,1 +41.618979690,0 +41.634488850,1 +41.635517680,0 +41.651138670,1 +41.652862390,0 +41.667780480,1 +41.669006450,0 +41.684485960,1 +41.685485690,0 +41.701011360,1 +41.702178900,0 +41.717638120,1 +41.718911750,0 +41.734325350,1 +41.736102370,0 +41.751103930,1 +41.752786880,0 +41.767626200,1 +41.769366780,0 +41.784399240,1 +41.786113430,0 +41.800982960,1 +41.802190230,0 +41.817621380,1 +41.818907770,0 +41.834267690,1 +41.835484810,0 +41.850925530,1 +41.852121830,0 +41.867592950,1 +41.868968760,0 +41.884236280,1 +41.885418200,0 +41.900936440,1 +41.902113030,0 +41.917569970,1 +41.918761770,0 +41.934251050,1 +41.935437940,0 +41.950907050,1 +41.952057540,0 +41.967566610,1 +41.968878800,0 +41.984240540,1 +41.985462750,0 +42.000872580,1 +42.002026020,0 +42.017543530,1 +42.018685510,0 +42.034197950,1 +42.035420390,0 +42.050843160,1 +42.052042350,0 +42.067517850,1 +42.068739090,0 +42.084181320,1 +42.085322750,0 +42.100831800,1 +42.102112140,0 +42.117503510,1 +42.118713950,0 +42.134162480,1 +42.135343070,0 +42.150793110,1 +42.152144480,0 +42.167472990,1 +42.168790910,0 +42.184132360,1 +42.185337230,0 +42.200782540,1 +42.202076040,0 +42.217477100,1 +42.218606440,0 +42.234122750,1 +42.235424060,0 +42.250786170,1 +42.252058540,0 +42.267468120,1 +42.268621800,0 +42.284098360,1 +42.285267930,0 +42.300786020,1 +42.302027910,0 +42.313148050,1 +42.413147110,0 +42.417375070,1 +42.418553000,0 +42.434045190,1 +42.435270830,0 +42.450688580,1 +42.451762330,0 +42.467370680,1 +42.468672230,0 +42.484030720,1 +42.485344790,0 +42.500705820,1 +42.501935480,0 +42.517362090,1 +42.518507550,0 +42.534002550,1 +42.535170120,0 +42.550668570,1 +42.551765900,0 +42.567340320,1 +42.568540980,0 +42.583984360,1 +42.585174640,0 +42.600671230,1 +42.601808730,0 +42.617331730,1 +42.618438500,0 +42.633961560,1 +42.635160420,0 +42.650614470,1 +42.651882060,0 +42.667286070,1 +42.668557930,0 +42.683936860,1 +42.685180780,0 +42.700612200,1 +42.701787190,0 +42.717273530,1 +42.718395440,0 +42.733919850,1 +42.735250590,0 +42.750576530,1 +42.751797210,0 +42.767228040,1 +42.768515060,0 +42.783903700,1 +42.785194670,0 +42.800578330,1 +42.801903980,0 +42.817228990,1 +42.818520910,0 +42.833878940,1 +42.835201560,0 +42.850545170,1 +42.851767630,0 +42.867184910,1 +42.868518560,0 +42.883893450,1 +42.885123440,0 +42.900539100,1 +42.901868390,0 +42.917179940,1 +42.918499580,0 +42.933862090,1 +42.935060450,0 +42.950494530,1 +42.951726940,0 +42.967157990,1 +42.968343180,0 +42.983824270,1 +42.985029050,0 +43.000491890,1 +43.001635430,0 +43.017154320,1 +43.018268100,0 +43.033803310,1 +43.035015500,0 +43.050469110,1 +43.051675380,0 +43.067127610,1 +43.068421230,0 +43.083781260,1 +43.084967620,0 +43.100453380,1 +43.101685730,0 +43.117098520,1 +43.118315870,0 +43.133755210,1 +43.135054580,0 +43.150442130,1 +43.151651030,0 +43.167081200,1 +43.168494720,0 +43.183744030,1 +43.184952730,0 +43.200419920,1 +43.201704310,0 +43.217057360,1 +43.218384410,0 +43.233725830,1 +43.235009870,0 +43.250390000,1 +43.251593260,0 +43.267050370,1 +43.268302060,0 +43.283744860,1 +43.284946960,0 +43.300407990,1 +43.301678570,0 +43.313138710,1 +43.413137790,0 +43.416971450,1 +43.418178770,0 +43.433802510,1 +43.434805380,0 +43.450329130,1 +43.451525900,0 +43.466998580,1 +43.468143480,0 +43.483676110,1 +43.484839450,0 +43.500309380,1 +43.501565050,0 +43.516983080,1 +43.518215560,0 +43.533597430,1 +43.534861220,0 +43.550271730,1 +43.551470690,0 +43.566959290,1 +43.568204600,0 +43.583603600,1 +43.584913080,0 +43.600302700,1 +43.601568830,0 +43.616917310,1 +43.618231840,0 +43.633584740,1 +43.634798680,0 +43.650233470,1 +43.651503740,0 +43.666913540,1 +43.668154200,0 +43.683565780,1 +43.684871600,0 +43.700218520,1 +43.701417350,0 +43.716910980,1 +43.718064130,0 +43.733525490,1 +43.734839990,0 +43.750188590,1 +43.751478580,0 +43.766868290,1 +43.768067000,0 +43.783519860,1 +43.784665970,0 +43.800196520,1 +43.801378950,0 +43.816809240,1 +43.818025760,0 +43.833484090,1 +43.834893270,0 +43.850165380,1 +43.851456340,0 +43.866813250,1 +43.868083290,0 +43.883469280,1 +43.884719780,0 +43.900154600,1 +43.901303190,0 +43.916779860,1 +43.918050200,0 +43.933455940,1 +43.934688990,0 +43.950122800,1 +43.951397510,0 +43.966800450,1 +43.968093830,0 +43.983450940,1 +43.984614280,0 +44.000105780,1 +44.001469680,0 +44.016764280,1 +44.018032090,0 +44.033412110,1 +44.034597470,0 +44.050097450,1 +44.051380700,0 +44.066723800,1 +44.068052700,0 +44.083395600,1 +44.084594020,0 +44.100077980,1 +44.101307940,0 +44.116741340,1 +44.117958640,0 +44.133392200,1 +44.134546440,0 +44.150034070,1 +44.151318420,0 +44.166688630,1 +44.167998970,0 +44.183378510,1 +44.184715980,0 +44.200025500,1 +44.201166390,0 +44.216695910,1 +44.218047170,0 +44.233374440,1 +44.234491990,0 +44.250012490,1 +44.251172340,0 +44.266657090,1 +44.267998280,0 +44.283348260,1 +44.284628300,0 +44.299991420,1 +44.301233090,0 +44.313129390,1 +44.413128470,0 +44.416624770,1 +44.417923020,0 +44.433271500,1 +44.434694280,0 +44.449906120,1 +44.451176330,0 +44.466584530,1 +44.467856500,0 +44.483237330,1 +44.484540950,0 +44.499917120,1 +44.501167110,0 +44.516556710,1 +44.517795450,0 +44.533233420,1 +44.534441690,0 +44.549902690,1 +44.551071540,0 +44.566567790,1 +44.567766350,0 +44.583203530,1 +44.584471280,0 +44.599867980,1 +44.601272300,0 +44.616500100,1 +44.617868260,0 +44.633215350,1 +44.634256010,0 +44.649840950,1 +44.651098250,0 +44.666514650,1 +44.667744790,0 +44.683157020,1 +44.684512720,0 +44.699844230,1 +44.701059570,0 +44.716497360,1 +44.717796670,0 +44.733153500,1 +44.734285370,0 +44.749808280,1 +44.751059970,0 +44.766465270,1 +44.767676670,0 +44.783118270,1 +44.784356320,0 +44.799799480,1 +44.801027820,0 +44.816464380,1 +44.817619830,0 +44.833095340,1 +44.834408610,0 +44.849775010,1 +44.850987570,0 +44.866428270,1 +44.867754180,0 +44.883071900,1 +44.884326040,0 +44.899884430,1 +44.900929160,0 +44.916411260,1 +44.917626290,0 +44.933075840,1 +44.934310770,0 +44.949737130,1 +44.950793770,0 +44.966401830,1 +44.967641240,0 +44.983035690,1 +44.984241130,0 +44.999728610,1 +45.000996070,0 +45.016366820,1 +45.017588700,0 +45.033024980,1 +45.034346420,0 +45.049667100,1 +45.050954900,0 +45.066364570,1 +45.067659700,0 +45.082992650,1 +45.084264380,0 +45.099660730,1 +45.100913580,0 +45.116320680,1 +45.117690940,0 +45.132982600,1 +45.134170520,0 +45.149619740,1 +45.150791310,0 +45.166304210,1 +45.167609480,0 +45.182986650,1 +45.184167160,0 +45.199630390,1 +45.201003220,0 +45.216292260,1 +45.217588760,0 +45.232964820,1 +45.234175760,0 +45.249608500,1 +45.250786500,0 +45.266281070,1 +45.267402700,0 +45.282920110,1 +45.284170250,0 +45.299578590,1 +45.300861080,0 +45.313120080,1 +45.413119140,0 +45.416228460,1 +45.417366750,0 +45.432871750,1 +45.434042650,0 +45.449529960,1 +45.450664710,0 +45.466216880,1 +45.467409980,0 +45.482848210,1 +45.483951480,0 +45.499520030,1 +45.500572580,0 +45.516176920,1 +45.517256960,0 +45.532835070,1 +45.534031040,0 +45.549479680,1 +45.550745480,0 +45.566172120,1 +45.567409810,0 +45.582832970,1 +45.584077250,0 +45.599487630,1 +45.600692990,0 +45.616131880,1 +45.617444100,0 +45.632787400,1 +45.634003310,0 +45.649430260,1 +45.650812820,0 +45.666122250,1 +45.667371280,0 +45.682769250,1 +45.684039480,0 +45.699416080,1 +45.700602630,0 +45.716115850,1 +45.717262420,0 +45.732758070,1 +45.734152450,0 +45.749412500,1 +45.750789410,0 +45.766071810,1 +45.767303480,0 +45.782762310,1 +45.783897950,0 +45.799416330,1 +45.800550390,0 +45.816049180,1 +45.817334080,0 +45.832751490,1 +45.833919800,0 +45.849381200,1 +45.850772510,0 +45.866063850,1 +45.867324720,0 +45.882731450,1 +45.883906330,0 +45.899388270,1 +45.900453110,0 +45.916038710,1 +45.917414310,0 +45.932701840,1 +45.934059760,0 +45.949351650,1 +45.950589090,0 +45.966005220,1 +45.967199600,0 +45.982658110,1 +45.983898370,0 +45.999303220,1 +46.000549270,0 +46.015977800,1 +46.017212300,0 +46.032649010,1 +46.034030100,0 +46.049320050,1 +46.050651760,0 +46.065969380,1 +46.067139250,0 +46.082609470,1 +46.083881880,0 +46.099293850,1 +46.100486000,0 +46.115964310,1 +46.117226190,0 +46.132614150,1 +46.133957160,0 +46.149276600,1 +46.150536390,0 +46.165956420,1 +46.167099000,0 +46.182611720,1 +46.183825360,0 +46.199266590,1 +46.200491870,0 +46.215907670,1 +46.217033750,0 +46.232607150,1 +46.233692560,0 +46.249249390,1 +46.250554490,0 +46.265911580,1 +46.267023630,0 +46.282581900,1 +46.283862590,0 +46.299258320,1 +46.300492010,0 +46.313110740,1 +46.413109830,0 +46.415874540,1 +46.417209200,0 +46.432532630,1 +46.433779430,0 +46.449184470,1 +46.450484030,0 +46.465808120,1 +46.467124920,0 +46.482499580,1 +46.483680110,0 +46.499168600,1 +46.500397010,0 +46.515808720,1 +46.517060910,0 +46.532471230,1 +46.533864580,0 +46.549150110,1 +46.550301270,0 +46.565792510,1 +46.567177680,0 +46.582468560,1 +46.583748450,0 +46.599145300,1 +46.600272950,0 +46.615760110,1 +46.617073670,0 +46.632439630,1 +46.633669130,0 +46.649074230,1 +46.650440950,0 +46.665758120,1 +46.667020200,0 +46.682585790,1 +46.683682610,0 +46.699109290,1 +46.700338310,0 +46.715872680,1 +46.716979280,0 +46.732536210,1 +46.733664040,0 +46.749218310,1 +46.750223130,0 +46.765829650,1 +46.767668800,0 +46.782517770,1 +46.783621760,0 +46.799078460,1 +46.800125000,0 +46.815700200,1 +46.816901290,0 +46.832349120,1 +46.833769840,0 +46.849023230,1 +46.850345220,0 +46.865688920,1 +46.866908700,0 +46.882354020,1 +46.883636600,0 +46.899002000,1 +46.900306100,0 +46.915652310,1 +46.916904250,0 +46.932341720,1 +46.933463270,0 +46.948996570,1 +46.950239190,0 +46.965646180,1 +46.966970640,0 +46.982317960,1 +46.983696520,0 +46.998968660,1 +47.000217750,0 +47.015631780,1 +47.016973100,0 +47.032302940,1 +47.033590480,0 +47.048951930,1 +47.050307940,0 +47.065581450,1 +47.066784200,0 +47.082258010,1 +47.083374970,0 +47.098940970,1 +47.100138280,0 +47.115597060,1 +47.116810810,0 +47.132235000,1 +47.133498190,0 +47.148906850,1 +47.150098740,0 +47.165550490,1 +47.166837310,0 +47.182254780,1 +47.183342240,0 +47.198899880,1 +47.200022870,0 +47.215546420,1 +47.216747940,0 +47.232212320,1 +47.233386870,0 +47.248885570,1 +47.250016190,0 +47.265544830,1 +47.266766320,0 +47.282188700,1 +47.283388050,0 +47.298865900,1 +47.300095730,0 +47.313101430,1 +47.413100500,0 +47.415506860,1 +47.416722490,0 +47.432138980,1 +47.433402590,0 +47.448832370,1 +47.450011920,0 +47.465455570,1 +47.466705320,0 +47.482108490,1 +47.483485360,0 +47.498774800,1 +47.500057050,0 +47.515433840,1 +47.516649090,0 +47.532120020,1 +47.533233080,0 +47.548760220,1 +47.549934900,0 +47.565390730,1 +47.566661520,0 +47.582071770,1 +47.583275140,0 +47.598771070,1 +47.599909400,0 +47.615361560,1 +47.616640850,0 +47.632033200,1 +47.633166590,0 +47.648723650,1 +47.649886370,0 +47.665351410,1 +47.666618060,0 +47.682055010,1 +47.683268550,0 +47.698732130,1 +47.699919350,0 +47.715358590,1 +47.716604240,0 +47.732012920,1 +47.733225190,0 +47.748678870,1 +47.750014370,0 +47.765355280,1 +47.766603420,0 +47.781974850,1 +47.783384320,0 +47.798675960,1 +47.800010240,0 +47.815322720,1 +47.816626320,0 +47.831984920,1 +47.833269030,0 +47.848625040,1 +47.849899240,0 +47.865320760,1 +47.866721840,0 +47.881939090,1 +47.883150880,0 +47.898628320,1 +47.900011370,0 +47.915268390,1 +47.916408700,0 +47.931929800,1 +47.933157270,0 +47.948593620,1 +47.949917460,0 +47.965276920,1 +47.966707670,0 +47.981939310,1 +47.983270590,0 +47.998611390,1 +47.999888220,0 +48.015266890,1 +48.016493670,0 +48.031890920,1 +48.033018640,0 +48.048558900,1 +48.049757030,0 +48.065247800,1 +48.066443330,0 +48.081892380,1 +48.083127570,0 +48.098572390,1 +48.099794810,0 +48.115219480,1 +48.116437480,0 +48.131863310,1 +48.133130280,0 +48.148514960,1 +48.149793930,0 +48.165199000,1 +48.166410430,0 +48.181860960,1 +48.183219390,0 +48.198545610,1 +48.199805560,0 +48.215192330,1 +48.216438580,0 +48.231856500,1 +48.233127700,0 +48.248507260,1 +48.249777940,0 +48.265175550,1 +48.266324870,0 +48.281824380,1 +48.283050120,0 +48.298495510,1 +48.299711010,0 +48.313092100,1 +48.413091190,0 +48.415111830,1 +48.416286280,0 +48.431771860,1 +48.432966520,0 +48.448435150,1 +48.449641120,0 +48.465123300,1 +48.466414210,0 +48.481752320,1 +48.483069970,0 +48.498404310,1 +48.499732990,0 +48.515089430,1 +48.516268760,0 +48.531744470,1 +48.532993600,0 +48.548407600,1 +48.549603700,0 +48.565061700,1 +48.566353950,0 +48.581731300,1 +48.582995120,0 +48.598397150,1 +48.599679770,0 +48.615060670,1 +48.616355750,0 +48.631692330,1 +48.632860680,0 +48.648356320,1 +48.649703360,0 +48.665052400,1 +48.666308220,0 +48.681712460,1 +48.682880130,0 +48.698383580,1 +48.699705840,0 +48.715019190,1 +48.716198770,0 +48.731672390,1 +48.732890990,0 +48.748343350,1 +48.749448820,0 +48.765008260,1 +48.766205060,0 +48.781646590,1 +48.782877790,0 +48.798347660,1 +48.799771230,0 +48.815000010,1 +48.816173730,0 +48.831652290,1 +48.832899830,0 +48.848315760,1 +48.849533790,0 +48.864992550,1 +48.866222040,0 +48.881639040,1 +48.882805680,0 +48.898315040,1 +48.899524520,0 +48.914969320,1 +48.916136670,0 +48.931590930,1 +48.932829350,0 +48.948271730,1 +48.949379910,0 +48.964934270,1 +48.966169980,0 +48.981587210,1 +48.982921040,0 +48.998232420,1 +48.999597230,0 +49.014917660,1 +49.016115780,0 +49.031581500,1 +49.032757840,0 +49.048242210,1 +49.049688080,0 +49.064918460,1 +49.066201020,0 +49.081558530,1 +49.082861890,0 +49.098215660,1 +49.099440280,0 +49.114885580,1 +49.116149850,0 +49.131534540,1 +49.132692370,0 +49.148206650,1 +49.149591610,0 +49.164889050,1 +49.166207850,0 +49.181492720,1 +49.182967900,0 +49.198238000,1 +49.199560570,0 +49.214877740,1 +49.216169850,0 +49.231539520,1 +49.232728350,0 +49.248199270,1 +49.249245020,0 +49.264870390,1 +49.265992580,0 +49.281511030,1 +49.282668140,0 +49.298212020,1 +49.299415860,0 +49.313082800,1 +49.413081880,0 +49.414836980,1 +49.416032860,0 +49.431459660,1 +49.432836560,0 +49.448120430,1 +49.449382470,0 +49.464798190,1 +49.465945550,0 +49.481453490,1 +49.482829150,0 +49.498131110,1 +49.499300650,0 +49.514754990,1 +49.516034970,0 +49.531440160,1 +49.532656310,0 +49.548080900,1 +49.549253540,0 +49.564754160,1 +49.565904310,0 +49.581415840,1 +49.582575640,0 +49.598084510,1 +49.599366970,0 +49.614756410,1 +49.616075500,0 +49.631406300,1 +49.632740030,0 +49.648057740,1 +49.649219210,0 +49.664720140,1 +49.666012020,0 +49.681395090,1 +49.682591970,0 +49.698043930,1 +49.699374120,0 +49.714693370,1 +49.715951930,0 +49.731385560,1 +49.732621100,0 +49.748043070,1 +49.749227750,0 +49.764690320,1 +49.765824830,0 +49.781346480,1 +49.782684930,0 +49.797999340,1 +49.799356120,0 +49.814691820,1 +49.815954400,0 +49.831341180,1 +49.832647270,0 +49.848004350,1 +49.849310490,0 +49.864659280,1 +49.866016000,0 +49.881436210,1 +49.882616160,0 +49.897965310,1 +49.899255290,0 +49.914634850,1 +49.915909760,0 +49.931293170,1 +49.932501380,0 +49.947969150,1 +49.949122640,0 +49.964582160,1 +49.965889810,0 +49.981288880,1 +49.982514960,0 +49.997944280,1 +49.999186630,0 +50.014604700,1 +50.015941910,0 +50.031274030,1 +50.032567320,0 +50.047939350,1 +50.049188390,0 +50.064584600,1 +50.065864990,0 +50.081254610,1 +50.082401770,0 +50.097927820,1 +50.099106650,0 +50.114561600,1 +50.115842170,0 +50.131217590,1 +50.132458370,0 +50.147903370,1 +50.149116900,0 +50.164534580,1 +50.165760300,0 +50.181195020,1 +50.182435720,0 +50.197877480,1 +50.199032470,0 +50.214533760,1 +50.215611190,0 +50.231199290,1 +50.232485470,0 +50.247874250,1 +50.249134370,0 +50.264498370,1 +50.265753040,0 +50.281199180,1 +50.282502860,0 +50.297862120,1 +50.299002320,0 +50.313073490,1 +50.413072560,0 +50.414552720,1 +50.415732910,0 +50.431117640,1 +50.432312230,0 +50.447808690,1 +50.448854150,0 +50.464459050,1 +50.465626320,0 +50.481110190,1 +50.482260400,0 +50.497869690,1 +50.499069870,0 +50.514436410,1 +50.515683050,0 +50.531091220,1 +50.532375710,0 +50.547783760,1 +50.548864350,0 +50.564426180,1 +50.565635300,0 +50.581078370,1 +50.582458430,0 +50.597746650,1 +50.598958080,0 +50.614420370,1 +50.615555140,0 +50.631071150,1 +50.632239160,0 +50.647738960,1 +50.648926660,0 +50.664367830,1 +50.665550230,0 +50.681048110,1 +50.682209560,0 +50.697719240,1 +50.698878120,0 +50.714393970,1 +50.715812960,0 +50.731053570,1 +50.732279360,0 +50.747705900,1 +50.748917420,0 +50.764360960,1 +50.765680350,0 +50.781019490,1 +50.782891960,0 +50.797679340,1 +50.798723240,0 +50.814337410,1 +50.815423860,0 +50.831001240,1 +50.832401720,0 +50.847666980,1 +50.848893910,0 +50.864327100,1 +50.865394670,0 +50.880990030,1 +50.882266430,0 +50.897658320,1 +50.898820920,0 +50.914325320,1 +50.915530850,0 +50.930973700,1 +50.932174120,0 +50.947632560,1 +50.948986680,0 +50.964314960,1 +50.965570890,0 +50.980953290,1 +50.982221100,0 +50.997610280,1 +50.999105170,0 +51.014292170,1 +51.015501840,0 +51.030959570,1 +51.032273890,0 +51.047607300,1 +51.048828200,0 +51.064278010,1 +51.065814300,0 +51.080918310,1 +51.082297610,0 +51.097587350,1 +51.098826330,0 +51.114257160,1 +51.115619430,0 +51.130865670,1 +51.132137070,0 +51.147594890,1 +51.148861640,0 +51.164236670,1 +51.165487780,0 +51.180912480,1 +51.182091580,0 +51.197562160,1 +51.198763090,0 +51.214251590,1 +51.215455510,0 +51.230909990,1 +51.232067120,0 +51.247563750,1 +51.248777590,0 +51.264231010,1 +51.265378060,0 +51.280863290,1 +51.282008250,0 +51.297558120,1 +51.298612210,0 +51.313064170,1 +51.413063270,0 +51.414335180,1 +51.415368920,0 +51.430842530,1 +51.432081670,0 +51.447493150,1 +51.448753210,0 +51.464158710,1 +51.465504130,0 +51.480823950,1 +51.482041860,0 +51.497499390,1 +51.498737990,0 +51.514150320,1 +51.515518720,0 +51.530794800,1 +51.531989440,0 +51.547476740,1 +51.548744790,0 +51.564138440,1 +51.565446190,0 +51.580818570,1 +51.582021700,0 +51.597490500,1 +51.598732280,0 +51.614107670,1 +51.615356950,0 +51.630806360,1 +51.632050760,0 +51.647447300,1 +51.648667040,0 +51.664108180,1 +51.665343070,0 +51.680771910,1 +51.681952090,0 +51.697449560,1 +51.698674560,0 +51.714208680,1 +51.715345190,0 +51.730782000,1 +51.732598220,0 +51.747543870,1 +51.749044050,0 +51.764184910,1 +51.765620280,0 +51.780739800,1 +51.781945220,0 +51.797460430,1 +51.798605480,0 +51.814199540,1 +51.815173360,0 +51.830744900,1 +51.832438420,0 +51.847403620,1 +51.848629870,0 +51.864075760,1 +51.865347660,0 +51.880718480,1 +51.881914510,0 +51.897399690,1 +51.898648510,0 +51.914042130,1 +51.915291170,0 +51.930733090,1 +51.931920960,0 +51.947387760,1 +51.948630200,0 +51.964030080,1 +51.965355760,0 +51.980697610,1 +51.981996010,0 +51.997357670,1 +51.998518870,0 +52.014023130,1 +52.015241300,0 +52.030695490,1 +52.031800740,0 +52.047356050,1 +52.048673010,0 +52.064033500,1 +52.065324230,0 +52.080672920,1 +52.081872900,0 +52.097339280,1 +52.098540530,0 +52.113991480,1 +52.115219810,0 +52.130656940,1 +52.131855240,0 +52.147322000,1 +52.148633840,0 +52.163976800,1 +52.165246740,0 +52.180658390,1 +52.181809660,0 +52.197363880,1 +52.198549410,0 +52.213981220,1 +52.215186430,0 +52.230632480,1 +52.231949970,0 +52.247274990,1 +52.248721840,0 +52.263971670,1 +52.265347270,0 +52.280625200,1 +52.281798310,0 +52.297316360,1 +52.298548720,0 +52.313054570,1 +52.413053950,0 +52.414114900,1 +52.414971730,0 +52.430564600,1 +52.431847390,0 +52.447269720,1 +52.448473390,0 +52.463904120,1 +52.465225050,0 +52.480595250,1 +52.481808200,0 +52.497253100,1 +52.498596740,0 +52.513916650,1 +52.515268390,0 +52.530586460,1 +52.531826440,0 +52.547232900,1 +52.548364850,0 +52.563862700,1 +52.565159270,0 +52.580546580,1 +52.581704830,0 +52.597225750,1 +52.598262250,0 +52.613864560,1 +52.615117770,0 +52.630521400,1 +52.631760010,0 +52.647180800,1 +52.648482090,0 +52.663865060,1 +52.665065490,0 +52.680500310,1 +52.681748060,0 +52.697163250,1 +52.698541520,0 +52.713842370,1 +52.715092250,0 +52.730522680,1 +52.731721520,0 +52.747147660,1 +52.748480470,0 +52.763823000,1 +52.765088880,0 +52.780488320,1 +52.781740690,0 +52.797191850,1 +52.798531370,0 +52.813831770,1 +52.815064030,0 +52.830496180,1 +52.831739480,0 +52.847167780,1 +52.848352530,0 +52.863812160,1 +52.865103590,0 +52.880470700,1 +52.881604320,0 +52.897151950,1 +52.898329190,0 +52.913810930,1 +52.915140530,0 +52.930478130,1 +52.931699010,0 +52.947117240,1 +52.948332030,0 +52.963780720,1 +52.965010520,0 +52.980433600,1 +52.981751450,0 +52.997117920,1 +52.998310170,0 +53.013775970,1 +53.015050670,0 +53.030427770,1 +53.031593130,0 +53.047089940,1 +53.048299180,0 +53.063760210,1 +53.065078640,0 +53.080432140,1 +53.081675330,0 +53.097099740,1 +53.098326170,0 +53.113770860,1 +53.115012040,0 +53.130435030,1 +53.131635610,0 +53.147066250,1 +53.148360700,0 +53.163747910,1 +53.164942280,0 +53.180392600,1 +53.181767610,0 +53.197096580,1 +53.198225920,0 +53.213731040,1 +53.214906130,0 +53.230390010,1 +53.231627620,0 +53.247059530,1 +53.248259070,0 +53.263703530,1 +53.265022280,0 +53.280375180,1 +53.281723180,0 +53.297073960,1 +53.298324930,0 +53.313045570,1 +53.413044660,0 +53.413934480,1 +53.414719080,0 +53.430336960,1 +53.431658250,0 +53.447007580,1 +53.448224590,0 +53.463648060,1 +53.472077400,0 +53.476458150,1 +53.477004810,0 +53.480218840,1 +53.488154070,0 +53.488198640,1 +53.488380130,0 +53.491799660,1 +53.491804920,0 +53.492058840,1 +53.492257050,0 +53.492343510,1 +53.492349090,0 +53.492372840,1 +53.499517750,0 +53.499523540,1 +53.499533340,0 +53.499540280,1 +53.499550100,0 +53.499573760,1 +53.499642200,0 +53.513682800,1 +53.514940190,0 +53.515376090,1 +53.515434730,0 +53.530299860,1 +53.531471450,0 +53.531493120,1 +53.531530110,0 +53.546967180,1 +53.548220640,0 +53.548244520,1 +53.548251330,0 +53.563596840,1 +53.564816630,0 +53.580347450,1 +53.581299260,0 +53.597064570,1 +53.597904220,0 +53.613610250,1 +53.613615990,0 +53.613652040,1 +53.614729640,0 +53.614748900,1 +53.614808970,0 +53.614883270,1 +53.614888530,0 +53.614962840,1 +53.614968080,0 +53.630298720,1 +53.631372510,0 +53.631378250,1 +53.631484900,0 +53.631508090,1 +53.631513670,0 +53.646944130,1 +53.646949790,0 +53.646964740,1 +53.648135400,0 +53.648216920,1 +53.648222470,0 +53.663620010,1 +53.664781850,0 +53.680295440,1 +53.681465300,0 +53.696967400,1 +53.698128550,0 +53.698210830,1 +53.698216450,0 +53.713605740,1 +53.714938530,0 +53.730264840,1 +53.731584920,0 +53.731596260,1 +53.731602530,0 +53.746936250,1 +53.748127250,0 +53.748210680,1 +53.748215910,0 +53.763608160,1 +53.764833790,0 +53.780237840,1 +53.781357780,0 +53.781372270,1 +53.781465900,0 +53.781481220,1 +53.781488170,0 +53.781548170,1 +53.781587320,0 +53.796934030,1 +53.798109920,0 +53.813577590,1 +53.813583970,0 +53.813593200,1 +53.814666400,0 +53.814685870,1 +53.814775790,0 +53.830264540,1 +53.831438780,0 +53.831479050,1 +53.831513760,0 +53.846919570,1 +53.848139500,0 +53.863566160,1 +53.864781760,0 +53.864818430,1 +53.864824050,0 +53.880229910,1 +53.881436840,0 +53.881464700,1 +53.881470470,0 +53.896904710,1 +53.898087440,0 +53.913564390,1 +53.914731570,0 +53.930231760,1 +53.931427570,0 +53.946866040,1 +53.948090230,0 +53.948100730,1 +53.948106300,0 +53.963557640,1 +53.964756960,0 +53.964797380,1 +53.964809140,0 +53.964856010,1 +53.964861700,0 +53.964969150,1 +53.964974730,0 +53.980217140,1 +53.981303770,0 +53.981340210,1 +53.981396400,0 +53.981515050,1 +53.981520610,0 +53.996872280,1 +53.998054470,0 +53.998107140,1 +53.998129640,0 +53.998333250,1 +53.998338550,0 +54.013539560,1 +54.014715200,0 +54.014737200,1 +54.014771800,0 +54.030165210,1 +54.030170830,0 +54.030194510,1 +54.031377060,0 +54.031400310,1 +54.031406650,0 +54.031458920,1 +54.031465300,0 +54.046837020,1 +54.046843340,0 +54.046854120,1 +54.048037500,0 +54.048088880,1 +54.048094480,0 +54.048114020,1 +54.048119900,0 +54.063521450,1 +54.064663110,0 +54.064672810,1 +54.064737420,0 +54.080179520,1 +54.081385110,0 +54.096872010,1 +54.098055730,0 +54.113511800,1 +54.114706500,0 +54.114717630,1 +54.114729170,0 +54.114831230,1 +54.114837710,0 +54.130187670,1 +54.131349280,0 +54.131461410,1 +54.131467770,0 +54.146838840,1 +54.148024680,0 +54.163493550,1 +54.164688850,0 +54.180169350,1 +54.181246810,0 +54.181253590,1 +54.181322320,0 +54.196832590,1 +54.197940270,0 +54.197946260,1 +54.198028340,0 +54.198080290,1 +54.198085870,0 +54.213475670,1 +54.214606600,0 +54.230196880,1 +54.230202500,0 +54.230210040,1 +54.231263100,0 +54.231314750,1 +54.231320320,0 +54.231369570,1 +54.231374830,0 +54.246797770,1 +54.247875160,0 +54.247882120,1 +54.248002760,0 +54.263457730,1 +54.263464480,0 +54.263482380,1 +54.264668910,0 +54.264709140,1 +54.264715790,0 +54.264755560,1 +54.264836160,0 +54.280129240,1 +54.281355160,0 +54.281381380,1 +54.281386710,0 +54.281473270,1 +54.281478800,0 +54.296817620,1 +54.297993490,0 +54.298006450,1 +54.298016320,0 +54.298052520,1 +54.298058160,0 +54.298086030,1 +54.298091670,0 +54.298115730,1 +54.298122300,0 +54.298179130,1 +54.298184260,0 +54.313464410,1 +54.314579330,0 +54.314590390,1 +54.314642030,0 +54.314665710,1 +54.314805650,0 +54.330115440,1 +54.331280870,0 +54.331304010,1 +54.331339650,0 +54.346782360,1 +54.347922990,0 +54.347940310,1 +54.347981590,0 +54.348038400,1 +54.348044010,0 +54.363458260,1 +54.364561400,0 +54.364575080,1 +54.364711510,0 +54.380101090,1 +54.381321210,0 +54.381407250,1 +54.381414040,0 +54.396784540,1 +54.398005140,0 +54.398028870,1 +54.398035160,0 +54.398059410,1 +54.398067960,0 +54.398091670,1 +54.398118830,0 +54.413436780,1 +54.414627200,0 +54.414650430,1 +54.414706990,0 +54.414742490,1 +54.414748120,0 +54.430091010,1 +54.431298220,0 +54.431347040,1 +54.431352670,0 +54.446758230,1 +54.448007960,0 +54.448090640,1 +54.448095840,0 +54.463442490,1 +54.464683820,0 +54.480097450,1 +54.481351250,0 +54.496772690,1 +54.497930530,0 +54.497954220,1 +54.497990850,0 +54.513415480,1 +54.514589500,0 +54.514608660,1 +54.514615180,0 +54.514813870,1 +54.514819940,0 +54.530144410,1 +54.531281920,0 +54.531305290,1 +54.531310890,0 +54.531330400,1 +54.531336000,0 +54.531358280,1 +54.531365310,0 +54.546758280,1 +54.547866720,0 +54.547872490,1 +54.547958670,0 +54.563410080,1 +54.564596600,0 +54.564611770,1 +54.564627220,0 +54.564679340,1 +54.564688930,0 +54.564745690,1 +54.564751300,0 +54.564841960,1 +54.564856070,0 +54.580057090,1 +54.580063250,0 +54.580077980,1 +54.581335530,0 +54.581363370,1 +54.581368970,0 +54.596745800,1 +54.597970100,0 +54.613364200,1 +54.613370340,0 +54.613406670,1 +54.614584690,0 +54.614590040,1 +54.614645890,0 +54.630076970,1 +54.631238160,0 +54.631257640,1 +54.631321910,0 +54.631341770,1 +54.631348830,0 +54.646715040,1 +54.647951600,0 +54.663386910,1 +54.664607480,0 +54.664630720,1 +54.664649010,0 +54.664730910,1 +54.664736530,0 +54.680046570,1 +54.681196660,0 +54.681239550,1 +54.681270290,0 +54.681332030,1 +54.681341650,0 +54.681356800,1 +54.681363000,0 +54.696722530,1 +54.697983890,0 +54.698007550,1 +54.698039190,0 +54.698062360,1 +54.698068700,0 +54.713372840,1 +54.714585070,0 +54.714641460,1 +54.714678100,0 +54.714825690,1 +54.714831330,0 +54.730052910,1 +54.731281080,0 +54.731363390,1 +54.731369580,0 +54.746707930,1 +54.747883330,0 +54.747908350,1 +54.747915150,0 +54.747972750,1 +54.747978800,0 +54.748001630,1 +54.748040780,0 +54.763370690,1 +54.764546350,0 +54.764551930,1 +54.764578500,0 +54.764598940,1 +54.764637120,0 +54.764723810,1 +54.764729240,0 +54.780034240,1 +54.781253970,0 +54.781332140,1 +54.781370930,0 +54.781424250,1 +54.781429830,0 +54.781454080,1 +54.781460200,0 +54.781545710,1 +54.781551260,0 +54.796693550,1 +54.797838150,0 +54.797888710,1 +54.797929540,0 +54.798011840,1 +54.798017480,0 +54.813331360,1 +54.813337550,0 +54.813360330,1 +54.814592640,0 +54.814679160,1 +54.814686850,0 +54.814805130,1 +54.814812670,0 +54.830019310,1 +54.831268390,0 +54.831287860,1 +54.831352100,0 +54.831393100,1 +54.831400290,0 +54.831451260,1 +54.831458340,0 +54.831480800,1 +54.831486230,0 +54.846674300,1 +54.847940190,0 +54.848026690,1 +54.848049640,0 +54.863379500,1 +54.864411240,0 +54.864434630,1 +54.864440610,0 +54.880045340,1 +54.881287820,0 +54.881332620,1 +54.881337840,0 +54.881361480,1 +54.881367220,0 +54.896684880,1 +54.897956110,0 +54.897970250,1 +54.897997180,0 +54.898037300,1 +54.898043240,0 +54.898122370,1 +54.898127520,0 +54.913327790,1 +54.913334490,0 +54.913340260,1 +54.914539110,0 +54.914563130,1 +54.914600070,0 +54.914625600,1 +54.914661560,0 +54.914717700,1 +54.914723320,0 +54.929995330,1 +54.931202750,0 +54.931211010,1 +54.931301190,0 +54.931327810,1 +54.931334900,0 +54.946658630,1 +54.947950660,0 +54.947969150,1 +54.948012650,0 +54.948132360,1 +54.948138000,0 +54.963321930,1 +54.964517020,0 +54.964540310,1 +54.964579400,0 +54.964632410,1 +54.964639740,0 +54.980014190,1 +54.981310400,0 +54.981333030,1 +54.981338650,0 +54.981388000,1 +54.981393790,0 +54.996689800,1 +54.998190960,0 +55.013294990,1 +55.013300630,0 +55.013315890,1 +55.014603200,0 +55.014718510,1 +55.014724770,0 +55.029979000,1 +55.031198890,0 +55.031256030,1 +55.031328550,0 +55.046658640,1 +55.047912700,0 +55.047961090,1 +55.047998010,0 +55.063314120,1 +55.064588370,0 +55.064704130,1 +55.064709730,0 +55.079978250,1 +55.081198580,0 +55.081212880,1 +55.081317900,0 +55.096645320,1 +55.097915830,0 +55.097943200,1 +55.098008910,0 +55.098094480,1 +55.098101100,0 +55.098127450,1 +55.098133000,0 +55.113316940,1 +55.114584760,0 +55.114673400,1 +55.114678970,0 +55.129959120,1 +55.131224950,0 +55.146637890,1 +55.147834770,0 +55.147858170,1 +55.147863420,0 +55.163302740,1 +55.164497630,0 +55.164521370,1 +55.164581840,0 +55.164605820,1 +55.164612420,0 +55.164663690,1 +55.164669330,0 +55.164810640,1 +55.164816680,0 +55.179962200,1 +55.181156810,0 +55.181243290,1 +55.181279820,0 +55.196633630,1 +55.198035190,0 +55.213287970,1 +55.214534490,0 +55.214590010,1 +55.214596120,0 +55.229955270,1 +55.231209830,0 +55.231345260,1 +55.231350890,0 +55.246614050,1 +55.247894030,0 +55.247916350,1 +55.247951240,0 +55.248000100,1 +55.248005990,0 +55.263277260,1 +55.264509620,0 +55.264562550,1 +55.264626790,0 +55.264650520,1 +55.264673130,0 +55.264710200,1 +55.264715680,0 +55.279934450,1 +55.281176990,0 +55.281321710,1 +55.281328140,0 +55.281380920,1 +55.281394290,0 +55.296623940,1 +55.297810190,0 +55.297816140,1 +55.297877210,0 +55.297901370,1 +55.297907150,0 +55.297967780,1 +55.297977650,0 +55.298094230,1 +55.298099700,0 +55.313270110,1 +55.314494220,0 +55.314521920,1 +55.314590340,0 +55.314643370,1 +55.314674080,0 +55.314806620,1 +55.314812250,0 +55.329912400,1 +55.329919200,0 +55.329936780,1 +55.331087540,0 +55.331109490,1 +55.331207700,0 +55.331231800,1 +55.331238270,0 +55.346576170,1 +55.347920110,0 +55.347939630,1 +55.348062340,0 +55.348078360,1 +55.348087530,0 +55.363245990,1 +55.364459590,0 +55.364736410,1 +55.364771310,0 +55.364820530,1 +55.364826390,0 +55.379913290,1 +55.381141420,0 +55.396576160,1 +55.397758250,0 +55.397782170,1 +55.397788560,0 +55.397815450,1 +55.397821020,0 +55.413246570,1 +55.414518200,0 +55.414575190,1 +55.414580790,0 +55.414667270,1 +55.414701820,0 +55.429918150,1 +55.431148920,0 +55.431175320,1 +55.431210250,0 +55.431263250,1 +55.431298180,0 +55.446590920,1 +55.447866940,0 +55.447909780,1 +55.447923780,0 +55.447947490,1 +55.447953110,0 +55.448031230,1 +55.448037030,0 +55.463245880,1 +55.464520280,0 +55.464543990,1 +55.464582900,0 +55.479900680,1 +55.481188260,0 +55.481194400,1 +55.481200930,0 +55.481324180,1 +55.481329870,0 +55.496568090,1 +55.497838700,0 +55.497865980,1 +55.497871600,0 +55.497895270,1 +55.497947610,0 +55.498017920,1 +55.498024590,0 +55.498080360,1 +55.498093680,0 +55.513256660,1 +55.513263160,0 +55.513294330,1 +55.514279920,0 +55.529907360,1 +55.531198590,0 +55.546632950,1 +55.547752540,0 +55.547772010,1 +55.547832060,0 +55.547843160,1 +55.547949760,0 +55.563199920,1 +55.564574530,0 +55.564581430,1 +55.564587510,0 +55.564610740,1 +55.564616370,0 +55.579875230,1 +55.581091640,0 +55.581143770,1 +55.581205570,0 +55.581227200,1 +55.581234060,0 +55.596544090,1 +55.597837720,0 +55.613193840,1 +55.614576380,0 +55.629884160,1 +55.631122380,0 +55.631204730,1 +55.631210370,0 +55.631326150,1 +55.631331710,0 +55.646545350,1 +55.647892690,0 +55.647943750,1 +55.647949610,0 +55.647998180,1 +55.648003770,0 +55.663167100,1 +55.663172700,0 +55.663194490,1 +55.664508310,0 +55.664523610,1 +55.664529200,0 +55.664578000,1 +55.664612940,0 +55.679838840,1 +55.679844640,0 +55.679859740,1 +55.681152220,0 +55.681207860,1 +55.681230290,0 +55.681270650,1 +55.681276250,0 +55.696523040,1 +55.697904250,0 +55.697984270,1 +55.698002450,0 +55.713215550,1 +55.714453280,0 +55.714588800,1 +55.714594870,0 +55.714618400,1 +55.714623740,0 +55.729824630,1 +55.729830880,0 +55.729848100,1 +55.731091670,0 +55.731101160,1 +55.731282660,0 +55.746520830,1 +55.747842990,0 +55.747961070,1 +55.747966690,0 +55.763180170,1 +55.764420940,0 +55.764444600,1 +55.764450670,0 +55.764502770,1 +55.764517800,0 +55.779851960,1 +55.781078390,0 +55.781090920,1 +55.781176850,0 +55.796485610,1 +55.796491150,0 +55.796514830,1 +55.797782190,0 +55.797808490,1 +55.797814080,0 +55.797926000,1 +55.797931300,0 +55.813161050,1 +55.814402310,0 +55.814425670,1 +55.814556680,0 +55.814580560,1 +55.814586510,0 +55.814643210,1 +55.814648790,0 +55.829820160,1 +55.831075840,0 +55.831101350,1 +55.831107350,0 +55.831185090,1 +55.831193080,0 +55.831310710,1 +55.831316300,0 +55.846500320,1 +55.847780800,0 +55.847898630,1 +55.847904200,0 +55.848020030,1 +55.848026180,0 +55.863159160,1 +55.864376830,0 +55.864402620,1 +55.864408300,0 +55.864431960,1 +55.864471070,0 +55.864490590,1 +55.864531820,0 +55.879858020,1 +55.881122700,0 +55.881241430,1 +55.881276850,0 +55.896452020,1 +55.896457870,0 +55.896481000,1 +55.897813780,0 +55.897837480,1 +55.897843120,0 +55.897866830,1 +55.897872380,0 +55.897896510,1 +55.897903140,0 +55.913145690,1 +55.914465900,0 +55.914500660,1 +55.914540150,0 +55.914585300,1 +55.914620850,0 +55.929815840,1 +55.931012520,0 +55.931063460,1 +55.931069120,0 +55.931088600,1 +55.931124380,0 +55.946474940,1 +55.947804790,0 +55.947840900,1 +55.947847460,0 +55.963148180,1 +55.964387390,0 +55.964423610,1 +55.964510330,0 +55.964566010,1 +55.964572240,0 +55.979792850,1 +55.981029630,0 +55.981044640,1 +55.981063200,0 +55.981074430,1 +55.981126050,0 +55.981140890,1 +55.981192600,0 +55.996456130,1 +55.997690380,0 +55.997699340,1 +55.997813820,0 +55.997896310,1 +55.997943610,0 +56.013127360,1 +56.014444090,0 +56.014563560,1 +56.014573320,0 +56.029799200,1 +56.029805110,0 +56.029820100,1 +56.031027780,0 +56.031109740,1 +56.031115350,0 +56.046451420,1 +56.047724990,0 +56.047904190,1 +56.047910310,0 +56.063077190,1 +56.063082380,0 +56.063106020,1 +56.063111740,0 +56.063134010,1 +56.064414160,0 +56.064533910,1 +56.064539380,0 +56.079802680,1 +56.081044830,0 +56.081067670,1 +56.081075680,0 +56.081193320,1 +56.081198900,0 +56.096458690,1 +56.097716160,0 +56.097731930,1 +56.097825350,0 +56.097861550,1 +56.097868120,0 +56.098071590,1 +56.098076650,0 +56.113114290,1 +56.114338400,0 +56.114424040,1 +56.114492850,0 +56.129777790,1 +56.131056300,0 +56.131075770,1 +56.131148810,0 +56.131205580,1 +56.131241330,0 +56.146429640,1 +56.147833460,0 +56.147890870,1 +56.147925760,0 +56.148012120,1 +56.148017850,0 +56.163131360,1 +56.164192760,0 +56.179794450,1 +56.181026920,0 +56.181072040,1 +56.181135720,0 +56.181185020,1 +56.181192310,0 +56.196440950,1 +56.197787390,0 +56.213097840,1 +56.214390850,0 +56.214395910,1 +56.214575540,0 +56.229728120,1 +56.231045790,0 +56.231072460,1 +56.231148840,0 +56.231210230,1 +56.231215830,0 +56.231243690,1 +56.231249310,0 +56.246399710,1 +56.247615330,0 +56.247664140,1 +56.247671210,0 +56.247693440,1 +56.247699480,0 +56.247752020,1 +56.247783000,0 +56.247835780,1 +56.247870680,0 +56.247948890,1 +56.247954820,0 +56.263084110,1 +56.264312650,0 +56.264319210,1 +56.264370870,0 +56.264382030,1 +56.264459890,0 +56.264570900,1 +56.264576070,0 +56.279805320,1 +56.281088760,0 +56.281171480,1 +56.281176740,0 +56.281200430,1 +56.281236460,0 +56.281318120,1 +56.281323350,0 +56.296439210,1 +56.297819400,0 +56.297843220,1 +56.297849390,0 +56.313075160,1 +56.314437720,0 +56.329767360,1 +56.331054140,0 +56.331065290,1 +56.331117050,0 +56.346409820,1 +56.347726320,0 +56.347812490,1 +56.347818050,0 +56.363052690,1 +56.364322790,0 +56.364333880,1 +56.364340330,0 +56.364375760,1 +56.364494440,0 +56.364518170,1 +56.364532140,0 +56.364547450,1 +56.364565630,0 +56.379725050,1 +56.380987280,0 +56.381010370,1 +56.381075790,0 +56.381156930,1 +56.381170910,0 +56.381183260,1 +56.381189720,0 +56.396409860,1 +56.397667390,0 +56.397674330,1 +56.397759450,0 +56.397817290,1 +56.397823830,0 +56.397850130,1 +56.397855770,0 +56.413061730,1 +56.413068190,0 +56.413073780,1 +56.414349540,0 +56.414375910,1 +56.414410990,0 +56.414497350,1 +56.414515580,0 +56.429695850,1 +56.429701690,0 +56.429725700,1 +56.431008250,0 +56.431031440,1 +56.431067890,0 +56.446401980,1 +56.447751770,0 +56.447817050,1 +56.447823560,0 +56.463053300,1 +56.464316160,0 +56.464321900,1 +56.464348440,0 +56.464426550,1 +56.464432470,0 +56.479717280,1 +56.480979200,0 +56.480994260,1 +56.481012750,0 +56.481073820,1 +56.481113170,0 +56.481141010,1 +56.481180180,0 +56.496389310,1 +56.497727590,0 +56.497813290,1 +56.497819020,0 +56.497843170,1 +56.497849980,0 +56.513049660,1 +56.514342000,0 +56.514360540,1 +56.514399220,0 +56.514448060,1 +56.514455580,0 +56.529696950,1 +56.531034310,0 +56.531057680,1 +56.531063300,0 +56.531112800,1 +56.531118670,0 +56.546398760,1 +56.547694000,0 +56.547743500,1 +56.547781890,0 +56.547830820,1 +56.547848970,0 +56.563029790,1 +56.564353660,0 +56.564369110,1 +56.564379060,0 +56.579709450,1 +56.581013000,0 +56.581032440,1 +56.581040080,0 +56.581061790,1 +56.581068440,0 +56.596330890,1 +56.596336790,0 +56.596360980,1 +56.597730650,0 +56.597750090,1 +56.597764160,0 +56.597792060,1 +56.597797650,0 +56.597859030,1 +56.597864640,0 +56.613040580,1 +56.614319140,0 +56.614329840,1 +56.614386060,0 +56.614422040,1 +56.614429100,0 +56.614547550,1 +56.614552830,0 +56.629720640,1 +56.630802340,0 +56.630809270,1 +56.630882020,0 +56.646363920,1 +56.647639470,0 +56.647645050,1 +56.647698330,0 +56.647808370,1 +56.647813970,0 +56.663036280,1 +56.664276890,0 +56.664330240,1 +56.664399220,0 +56.664455890,1 +56.664461060,0 +56.679695400,1 +56.681007360,0 +56.681022620,1 +56.681036940,0 +56.681064450,1 +56.681070100,0 +56.696363370,1 +56.697710100,0 +56.697736640,1 +56.697818200,0 +56.697828690,1 +56.697834360,0 +56.697858090,1 +56.697864130,0 +56.713019190,1 +56.714369610,0 +56.729683140,1 +56.730957470,0 +56.730977000,1 +56.731038710,0 +56.731060700,1 +56.731066340,0 +56.746346810,1 +56.747537950,0 +56.747544870,1 +56.747630290,0 +56.747657940,1 +56.747692910,0 +56.747750080,1 +56.747786690,0 +56.763063950,1 +56.764842610,0 +56.779715650,1 +56.781456520,0 +56.796315520,1 +56.796320790,0 +56.796348110,1 +56.798375990,0 +56.813041320,1 +56.814127630,0 +56.829746270,1 +56.831355400,0 +56.846309630,1 +56.846315210,0 +56.846334740,1 +56.847568950,0 +56.847578150,1 +56.847675870,0 +56.847687040,1 +56.847692630,0 +56.863051850,1 +56.864364120,0 +56.864441860,1 +56.864447460,0 +56.879709000,1 +56.880905350,0 +56.880954190,1 +56.880989350,0 +56.896344440,1 +56.897568720,0 +56.897580710,1 +56.897836350,0 +56.912989200,1 +56.914658730,0 +56.929638600,1 +56.931052670,0 +56.931141830,1 +56.931146920,0 +56.946315600,1 +56.947563260,0 +56.947586970,1 +56.947593690,0 +56.947620460,1 +56.947688890,0 +56.947716770,1 +56.947735510,0 +56.962969030,1 +56.964268570,0 +56.964292350,1 +56.964331110,0 +56.964384840,1 +56.964391220,0 +56.964413740,1 +56.964419560,0 +56.979650680,1 +56.980891170,0 +56.980942920,1 +56.980975410,0 +56.996308890,1 +56.997558780,0 +56.997573320,1 +56.997621100,0 +56.997644540,1 +56.997650540,0 +56.997703140,1 +56.997712940,0 +56.997766810,1 +56.997772980,0 +57.012939550,1 +57.012945950,0 +57.012972410,1 +57.014314450,0 +57.014341580,1 +57.014347970,0 +57.014442390,1 +57.014456020,0 +57.029611330,1 +57.029617470,0 +57.029636060,1 +57.030865280,0 +57.030879520,1 +57.030927000,0 +57.030950860,1 +57.030957870,0 +57.030984260,1 +57.030989890,0 +57.031075880,1 +57.031081880,0 +57.046307550,1 +57.047537550,0 +57.047563600,1 +57.047661360,0 +57.062960410,1 +57.064182070,0 +57.064201490,1 +57.064271050,0 +57.064322950,1 +57.064329750,0 +57.079632470,1 +57.080908600,0 +57.080931620,1 +57.080937580,0 +57.080956710,1 +57.080966520,0 +57.096296980,1 +57.097667450,0 +57.097691480,1 +57.097697800,0 +57.097816750,1 +57.097822970,0 +57.112939960,1 +57.114297500,0 +57.114379730,1 +57.114388370,0 +57.114506320,1 +57.114515190,0 +57.129611090,1 +57.130818580,0 +57.130825030,1 +57.130864750,0 +57.130879710,1 +57.130889540,0 +57.130902860,1 +57.130958170,0 +57.130977330,1 +57.131010960,0 +57.131055560,1 +57.131061140,0 +57.131139330,1 +57.131145340,0 +57.131256560,1 +57.131265950,0 +57.146249750,1 +57.146254970,0 +57.146303770,1 +57.147558480,0 +57.147568170,1 +57.147619830,0 +57.147644540,1 +57.147680000,0 +57.162933890,1 +57.164192610,0 +57.164219180,1 +57.164254600,0 +57.164312510,1 +57.164319090,0 +57.179621900,1 +57.180865260,0 +57.180891020,1 +57.180930110,0 +57.196265050,1 +57.197560470,0 +57.197567130,1 +57.197614660,0 +57.197638920,1 +57.197677450,0 +57.212936960,1 +57.212942660,0 +57.212949340,1 +57.214099080,0 +57.214109310,1 +57.214190690,0 +57.214239120,1 +57.214307980,0 +57.229600500,1 +57.230863560,0 +57.230869400,1 +57.230925270,0 +57.246255610,1 +57.247548500,0 +57.247607910,1 +57.247613470,0 +57.247708370,1 +57.247713990,0 +57.262931370,1 +57.264176680,0 +57.264183230,1 +57.264189460,0 +57.264212590,1 +57.264220230,0 +57.264246090,1 +57.264251630,0 +57.264497250,1 +57.264502840,0 +57.279569470,1 +57.279575070,0 +57.279598740,1 +57.280810210,0 +57.280817600,1 +57.280840450,0 +57.280921810,1 +57.280948360,0 +57.280955370,1 +57.280970350,0 +57.296270550,1 +57.297603400,0 +57.312929950,1 +57.314205290,0 +57.314227900,1 +57.314266970,0 +57.329575580,1 +57.330821620,0 +57.330858510,1 +57.330919850,0 +57.330946190,1 +57.330953490,0 +57.330979230,1 +57.331018320,0 +57.346247700,1 +57.347493420,0 +57.347542570,1 +57.347548830,0 +57.362899720,1 +57.364282510,0 +57.379559210,1 +57.379564530,0 +57.379575200,1 +57.380863410,0 +57.380886120,1 +57.380975520,0 +57.396251780,1 +57.397472930,0 +57.397497420,1 +57.397535140,0 +57.397553910,1 +57.397628290,0 +57.397746700,1 +57.397752260,0 +57.411956500,1 +57.411962060,0 +57.412077880,1 +57.412112880,0 +57.412873390,1 +57.412879850,0 +57.412896610,1 +57.414190250,0 +57.414199880,1 +57.414298410,0 +57.429541830,1 +57.430926040,0 +57.430977190,1 +57.431012070,0 +57.431127860,1 +57.431133430,0 +57.445501170,1 +57.445933660,0 +57.445953410,1 +57.445985590,0 +57.446074610,1 +57.448035730,0 +57.462935570,1 +57.463947560,0 +57.463973580,1 +57.463979070,0 +57.479544270,1 +57.480684520,0 +57.480691860,1 +57.480814330,0 +57.480842170,1 +57.481006900,0 +57.481093910,1 +57.481099720,0 +57.496229140,1 +57.497415880,0 +57.497430720,1 +57.497570590,0 +57.512876650,1 +57.514188720,0 +57.529548310,1 +57.530857560,0 +57.530938310,1 +57.530944300,0 +57.530967620,1 +57.530973240,0 +57.546212370,1 +57.547508390,0 +57.547532830,1 +57.547540400,0 +57.547560970,1 +57.547599020,0 +57.562871070,1 +57.564090880,0 +57.564114530,1 +57.564120180,0 +57.564127130,1 +57.564178770,0 +57.564202450,1 +57.564208950,0 +57.579534670,1 +57.579540300,0 +57.579555610,1 +57.580756580,0 +57.580782340,1 +57.580909540,0 +57.596231740,1 +57.597330170,0 +57.597336790,1 +57.597501820,0 +57.597525500,1 +57.597560430,0 +57.612891240,1 +57.614056600,0 +57.614063530,1 +57.614148680,0 +57.614205890,1 +57.614211450,0 +57.629538090,1 +57.630732880,0 +57.630756280,1 +57.630791390,0 +57.630802520,1 +57.630850130,0 +57.630932660,1 +57.630938760,0 +57.646201460,1 +57.647450820,0 +57.647499490,1 +57.647556120,0 +57.647562230,1 +57.647597200,0 +57.662877310,1 +57.664105630,0 +57.664162690,1 +57.664197560,0 +57.679536650,1 +57.680765930,0 +57.680792720,1 +57.680798360,0 +57.680814130,1 +57.680861160,0 +57.680947670,1 +57.680953330,0 +57.680979870,1 +57.680985020,0 +57.696197530,1 +57.697428530,0 +57.697445240,1 +57.697458470,0 +57.712814320,1 +57.712819970,0 +57.712866210,1 +57.714150400,0 +57.714179540,1 +57.714252410,0 +57.714308040,1 +57.714313760,0 +57.729502630,1 +57.729509070,0 +57.729518870,1 +57.730759790,0 +57.730808450,1 +57.730845040,0 +57.730871260,1 +57.730906150,0 +57.730930490,1 +57.730936740,0 +57.746152960,1 +57.747937260,0 +57.762824840,1 +57.764117510,0 +57.764144530,1 +57.764151340,0 +57.764178970,1 +57.764184960,0 +57.764210760,1 +57.764250940,0 +57.764311190,1 +57.764333560,0 +57.764374010,1 +57.764379650,0 +57.779487380,1 +57.779493990,0 +57.779512500,1 +57.780775200,0 +57.780828100,1 +57.780862770,0 +57.780882620,1 +57.780888620,0 +57.796186460,1 +57.797426050,0 +57.797445540,1 +57.797593530,0 +57.812807000,1 +57.812812600,0 +57.812832450,1 +57.814028350,0 +57.814046260,1 +57.814056500,0 +57.814071420,1 +57.814177540,0 +57.814192130,1 +57.814198470,0 +57.829499830,1 +57.830778260,0 +57.830801950,1 +57.830807960,0 +57.830814480,1 +57.830895520,0 +57.830978260,1 +57.830984490,0 +57.846151070,1 +57.847262650,0 +57.847269190,1 +57.847370800,0 +57.847486700,1 +57.847492280,0 +57.862826850,1 +57.864205730,0 +57.879498650,1 +57.880760360,0 +57.880784560,1 +57.880823260,0 +57.896178960,1 +57.897415480,0 +57.897455890,1 +57.897504970,0 +57.897529740,1 +57.897537350,0 +57.897560610,1 +57.897566190,0 +57.897619200,1 +57.897628980,0 +57.897741070,1 +57.897746290,0 +57.912830140,1 +57.914075000,0 +57.914178810,1 +57.914229930,0 +57.914283490,1 +57.914290170,0 +57.929485410,1 +57.930730300,0 +57.930756140,1 +57.930794810,0 +57.930821320,1 +57.930827120,0 +57.946137630,1 +57.947390290,0 +57.947442690,1 +57.947512960,0 +57.962800020,1 +57.964139310,0 +57.964194530,1 +57.964262660,0 +57.979467870,1 +57.980805600,0 +57.980820200,1 +57.980834270,0 +57.980853690,1 +57.980890130,0 +57.980942000,1 +57.980947240,0 +57.996142170,1 +57.997384870,0 +57.997429510,1 +57.997445440,0 +57.997472290,1 +57.997510460,0 +58.012816070,1 +58.014045410,0 +58.014059610,1 +58.014078960,0 +58.014105640,1 +58.014112540,0 +58.014126580,1 +58.014178210,0 +58.014235690,1 +58.014241020,0 +58.014298750,1 +58.014304880,0 +58.029433740,1 +58.029439050,0 +58.029486480,1 +58.030696730,0 +58.030731660,1 +58.030820980,0 +58.046139040,1 +58.047379770,0 +58.047428540,1 +58.047434170,0 +58.047453670,1 +58.047461120,0 +58.047483310,1 +58.047489780,0 +58.047655000,1 +58.047660240,0 +58.062790000,1 +58.064047530,0 +58.064062750,1 +58.064127030,0 +58.079478790,1 +58.080631610,0 +58.080636890,1 +58.080711110,0 +58.080810170,1 +58.080912560,0 +58.080923140,1 +58.080928810,0 +58.094966470,1 +58.095379810,0 +58.095405380,1 +58.095474060,0 +58.096083300,1 +58.097418300,0 +58.112801590,1 +58.112807160,0 +58.112827740,1 +58.113920870,0 +58.113932010,1 +58.113941830,0 +58.129469410,1 +58.130698890,0 +58.130725320,1 +58.130789880,0 +58.130813280,1 +58.130819300,0 +58.130968160,1 +58.130973770,0 +58.146124590,1 +58.147319690,0 +58.147342580,1 +58.147449080,0 +58.162792750,1 +58.164235040,0 +58.179448100,1 +58.180676680,0 +58.180732690,1 +58.180773770,0 +58.180800470,1 +58.180806570,0 +58.180896760,1 +58.180902880,0 +58.196120040,1 +58.197407430,0 +58.197431600,1 +58.197438210,0 +58.197522730,1 +58.197530520,0 +58.197648330,1 +58.197653910,0 +58.212767190,1 +58.214037800,0 +58.214053840,1 +58.214158630,0 +58.229443510,1 +58.230757020,0 +58.230808420,1 +58.230831290,0 +58.230867020,1 +58.230872610,0 +58.246118270,1 +58.247387360,0 +58.247402660,1 +58.247418870,0 +58.247425840,1 +58.247481940,0 +58.262766440,1 +58.264045140,0 +58.264064440,1 +58.264112080,0 +58.264169130,1 +58.264176760,0 +58.264336590,1 +58.264342180,0 +58.279409370,1 +58.280638130,0 +58.280661970,1 +58.280668830,0 +58.280674280,1 +58.280760860,0 +58.280816160,1 +58.280842750,0 +58.280879000,1 +58.280884590,0 +58.296077390,1 +58.297502350,0 +58.312753840,1 +58.314090480,0 +58.314140520,1 +58.314146270,0 +58.329429620,1 +58.330558200,0 +58.330568780,1 +58.330720840,0 +58.330748310,1 +58.330775350,0 +58.346072070,1 +58.347398290,0 +58.347424460,1 +58.347430070,0 +58.347483580,1 +58.347490440,0 +58.362735560,1 +58.363951200,0 +58.363966400,1 +58.364040490,0 +58.364066840,1 +58.364115000,0 +58.364154830,1 +58.364160520,0 +58.379423850,1 +58.380683830,0 +58.380738720,1 +58.380806930,0 +58.396066820,1 +58.397370000,0 +58.397427530,1 +58.397433840,0 +58.397494200,1 +58.397500600,0 +58.412745970,1 +58.413960070,0 +58.413965450,1 +58.413991560,0 +58.414015130,1 +58.414083910,0 +58.414140730,1 +58.414146370,0 +58.414203550,1 +58.414209140,0 +58.429406110,1 +58.430645080,0 +58.430670580,1 +58.430676440,0 +58.430699860,1 +58.430797820,0 +58.446065720,1 +58.447361040,0 +58.447505970,1 +58.447553830,0 +58.447560440,1 +58.447566690,0 +58.462736590,1 +58.464096290,0 +58.479413420,1 +58.480639220,0 +58.480644950,1 +58.480672980,0 +58.480690420,1 +58.480739960,0 +58.480769980,1 +58.480809090,0 +58.480937790,1 +58.480943050,0 +58.496051980,1 +58.497313980,0 +58.497337380,1 +58.497388980,0 +58.497400110,1 +58.497468510,0 +58.512732740,1 +58.513979230,0 +58.514001070,1 +58.514063210,0 +58.529396350,1 +58.530578420,0 +58.530597890,1 +58.530634980,0 +58.530654770,1 +58.530745770,0 +58.530794790,1 +58.530802210,0 +58.546051730,1 +58.547318080,0 +58.547370420,1 +58.547379940,0 +58.547533710,1 +58.547539290,0 +58.562727910,1 +58.563923230,0 +58.563946300,1 +58.563981310,0 +58.564055270,1 +58.564061200,0 +58.579391490,1 +58.580619820,0 +58.580636690,1 +58.580642780,0 +58.580681080,1 +58.580713680,0 +58.580731300,1 +58.580737200,0 +58.580752250,1 +58.580792320,0 +58.580802490,1 +58.580808120,0 +58.580873870,1 +58.580880310,0 +58.580953210,1 +58.580958820,0 +58.596063210,1 +58.597339010,0 +58.597394620,1 +58.597429540,0 +58.597512230,1 +58.597517460,0 +58.612727470,1 +58.613821050,0 +58.613836340,1 +58.614049360,0 +58.614129470,1 +58.614135070,0 +58.614214000,1 +58.614219220,0 +58.629369270,1 +58.630689510,0 +58.630713180,1 +58.630719550,0 +58.630746670,1 +58.630756490,0 +58.630884860,1 +58.630890440,0 +58.630918370,1 +58.630923940,0 +58.646041120,1 +58.647157720,0 +58.647163150,1 +58.647434220,0 +58.647460440,1 +58.647466060,0 +58.662696090,1 +58.663920990,0 +58.663927350,1 +58.663984160,0 +58.664036270,1 +58.664043010,0 +58.679360330,1 +58.680668100,0 +58.680691710,1 +58.680759990,0 +58.696037180,1 +58.697498940,0 +58.712711910,1 +58.713953220,0 +58.713976670,1 +58.713984040,0 +58.714043660,1 +58.714049280,0 +58.714077200,1 +58.714082740,0 +58.714173430,1 +58.714179330,0 +58.729354740,1 +58.730616860,0 +58.730669420,1 +58.730675610,0 +58.746030740,1 +58.747175360,0 +58.747186370,1 +58.747234090,0 +58.762735910,1 +58.763801560,0 +58.763841220,1 +58.763893280,0 +58.763916570,1 +58.763924220,0 +58.763979450,1 +58.763985420,0 +58.764042460,1 +58.764047820,0 +58.779361550,1 +58.780673590,0 +58.780801760,1 +58.780807370,0 +58.796033610,1 +58.796040970,0 +58.796046230,1 +58.797271240,0 +58.797289660,1 +58.797437650,0 +58.812672030,1 +58.813975510,0 +58.813999220,1 +58.814005510,0 +58.814062010,1 +58.814097420,0 +58.829339590,1 +58.830630450,0 +58.830637000,1 +58.830643440,0 +58.830665920,1 +58.830671950,0 +58.846014390,1 +58.847343060,0 +58.847398970,1 +58.847405870,0 +58.862665380,1 +58.863906080,0 +58.863921420,1 +58.863936520,0 +58.863992560,1 +58.864031770,0 +58.879347140,1 +58.880700830,0 +58.880986880,1 +58.880992050,0 +58.895980490,1 +58.895986480,0 +58.896009220,1 +58.897230830,0 +58.897248500,1 +58.897291950,0 +58.897491570,1 +58.897498170,0 +58.912668650,1 +58.913834970,0 +58.913840920,1 +58.913897270,0 +58.913912150,1 +58.913926330,0 +58.913949800,1 +58.913959650,0 +58.914142370,1 +58.914148010,0 +58.929315560,1 +58.930669310,0 +58.945991860,1 +58.945997490,0 +58.946012770,1 +58.947274540,0 +58.947298160,1 +58.947379160,0 +58.947390470,1 +58.947429820,0 +58.962663760,1 +58.963829150,0 +58.963836160,1 +58.963921260,0 +58.963936580,1 +58.964038470,0 +58.964062270,1 +58.964097100,0 +58.979302010,1 +58.980563690,0 +58.980616670,1 +58.980685080,0 +58.995982310,1 +58.997210520,0 +58.997217430,1 +58.997300040,0 +58.997313790,1 +58.997392840,0 +58.997418390,1 +58.997424170,0 +58.997548210,1 +58.997554460,0 +59.012654390,1 +59.014012390,0 +59.014065360,1 +59.014100330,0 +59.029301110,1 +59.030542140,0 +59.030561240,1 +59.030625520,0 +59.030732980,1 +59.030739440,0 +59.030791560,1 +59.030797180,0 +59.045968390,1 +59.047285310,0 +59.047363090,1 +59.047369980,0 +59.047421210,1 +59.047426800,0 +59.062643740,1 +59.063830950,0 +59.063857950,1 +59.063863580,0 +59.063912420,1 +59.063922400,0 +59.064033840,1 +59.064041660,0 +59.079298650,1 +59.080543610,0 +59.080558870,1 +59.080635720,0 +59.080722390,1 +59.080744640,0 +59.095978970,1 +59.097430670,0 +59.112616860,1 +59.113855180,0 +59.113879640,1 +59.113917320,0 +59.113969160,1 +59.114008220,0 +59.114065430,1 +59.114100380,0 +59.114157560,1 +59.114163540,0 +59.129284380,1 +59.129292030,0 +59.129297500,1 +59.130485540,0 +59.130509230,1 +59.130514340,0 +59.130594780,1 +59.130600390,0 +59.130649750,1 +59.130656450,0 +59.130737130,1 +59.130742680,0 +59.145960560,1 +59.147318160,0 +59.147434020,1 +59.147469140,0 +59.162627340,1 +59.163785550,0 +59.163804290,1 +59.163877650,0 +59.163888480,1 +59.163906320,0 +59.163912740,1 +59.164056870,0 +59.164173140,1 +59.164178330,0 +59.179282940,1 +59.180565660,0 +59.180584970,1 +59.180599010,0 +59.180605930,1 +59.180665950,0 +59.180693850,1 +59.180699450,0 +59.195925590,1 +59.195931240,0 +59.195938470,1 +59.197258420,0 +59.197319800,1 +59.197354980,0 +59.197445640,1 +59.197451080,0 +59.212601740,1 +59.212608200,0 +59.212622600,1 +59.213867560,0 +59.213916360,1 +59.213952760,0 +59.213975010,1 +59.214011550,0 +59.229269750,1 +59.230518580,0 +59.230538080,1 +59.230543900,0 +59.230580000,1 +59.230623230,0 +59.230642820,1 +59.230660970,0 +59.245941300,1 +59.247254420,0 +59.247302010,1 +59.247307660,0 +59.262567490,1 +59.262573080,0 +59.262596780,1 +59.263884450,0 +59.263911460,1 +59.263950960,0 +59.279252290,1 +59.279258070,0 +59.279273220,1 +59.280652150,0 +59.295916630,1 +59.295923190,0 +59.295942110,1 +59.297194600,0 +59.312596700,1 +59.313888690,0 +59.313974140,1 +59.314009060,0 +59.329273000,1 +59.330451850,0 +59.330474670,1 +59.330536870,0 +59.330587680,1 +59.330593360,0 +59.345916060,1 +59.345922320,0 +59.345931320,1 +59.347190820,0 +59.347272590,1 +59.347278910,0 +59.362657600,1 +59.363801170,0 +59.363818940,1 +59.364368840,0 +59.379263600,1 +59.380586170,0 +59.380730220,1 +59.380735300,0 +59.395912930,1 +59.395918390,0 +59.395935390,1 +59.397032250,0 +59.397058580,1 +59.397097670,0 +59.412640750,1 +59.413715030,0 +59.413726080,1 +59.413790670,0 +59.413797290,1 +59.413836400,0 +59.429238630,1 +59.430488690,0 +59.430548940,1 +59.430589100,0 +59.430682600,1 +59.430688180,0 +59.445905550,1 +59.447130330,0 +59.447149520,1 +59.447159790,0 +59.447170450,1 +59.447193090,0 +59.447212530,1 +59.447223960,0 +59.447379760,1 +59.447385790,0 +59.462569570,1 +59.463811010,0 +59.463835940,1 +59.463915970,0 +59.479207960,1 +59.479213560,0 +59.479249790,1 +59.480557490,0 +59.480610890,1 +59.480632860,0 +59.480639790,1 +59.480645660,0 +59.480669750,1 +59.480683420,0 +59.495879910,1 +59.497125680,0 +59.497148500,1 +59.497166960,0 +59.497181970,1 +59.497187580,0 +59.497270450,1 +59.497296440,0 +59.497303920,1 +59.497309420,0 +59.497433310,1 +59.497438820,0 +59.512539640,1 +59.512545690,0 +59.512556960,1 +59.513872200,0 +59.513895910,1 +59.513901750,0 +59.529219450,1 +59.530485270,0 +59.530571780,1 +59.530615050,0 +59.545903970,1 +59.547190740,0 +59.547201940,1 +59.547208920,0 +59.547231160,1 +59.547266140,0 +59.547285640,1 +59.547292560,0 +59.562546770,1 +59.563808470,0 +59.563827920,1 +59.563867320,0 +59.563924220,1 +59.563992650,0 +59.564046590,1 +59.564068030,0 +59.579215150,1 +59.580548560,0 +59.580559190,1 +59.580610910,0 +59.580627240,1 +59.580632390,0 +59.595900030,1 +59.597183080,0 +59.597202080,1 +59.597211850,0 +59.597227230,1 +59.597310550,0 +59.597336350,1 +59.597375100,0 +59.612562990,1 +59.613803940,0 +59.613859950,1 +59.613896120,0 +59.613919670,1 +59.613954510,0 +59.614008090,1 +59.614013350,0 +59.629212260,1 +59.630459180,0 +59.630499610,1 +59.630555470,0 +59.630637810,1 +59.630643470,0 +59.630667450,1 +59.630681070,0 +59.645882140,1 +59.647236390,0 +59.647293160,1 +59.647298770,0 +59.662541650,1 +59.663913560,0 +59.663940040,1 +59.663945700,0 +59.679212480,1 +59.680563450,0 +59.680608690,1 +59.680614810,0 +59.680670890,1 +59.680676680,0 +59.695848510,1 +59.697074690,0 +59.697096210,1 +59.697106030,0 +59.697112990,1 +59.697164620,0 +59.697188320,1 +59.697194690,0 +59.697218670,1 +59.697223960,0 +59.697280500,1 +59.697286610,0 +59.697403050,1 +59.697409020,0 +59.712516350,1 +59.713794790,0 +59.713818460,1 +59.713824160,0 +59.713881870,1 +59.713888070,0 +59.713906430,1 +59.713918840,0 +59.729188150,1 +59.730608910,0 +59.730670330,1 +59.730675980,0 +59.745855640,1 +59.747176680,0 +59.747228880,1 +59.747234470,0 +59.747284170,1 +59.747290410,0 +59.747371320,1 +59.747376820,0 +59.762527030,1 +59.763771930,0 +59.763795980,1 +59.763801910,0 +59.779194110,1 +59.780469390,0 +59.780491950,1 +59.780510800,0 +59.795832390,1 +59.797160700,0 +59.797180220,1 +59.797218470,0 +59.812511250,1 +59.813732030,0 +59.813751170,1 +59.813811610,0 +59.813830350,1 +59.813920070,0 +59.829163290,1 +59.829170010,0 +59.829191980,1 +59.830538120,0 +59.830623850,1 +59.830629520,0 +59.830686920,1 +59.830692240,0 +59.845834520,1 +59.845841830,0 +59.845855590,1 +59.847102000,0 +59.847111110,1 +59.847183720,0 +59.847232560,1 +59.847267500,0 +59.862489150,1 +59.863788720,0 +59.863803790,1 +59.863940280,0 +59.863967190,1 +59.863972910,0 +59.879140390,1 +59.880399120,0 +59.880404810,1 +59.880432880,0 +59.880458900,1 +59.880535670,0 +59.895855980,1 +59.897092020,0 +59.912491880,1 +59.913838960,0 +59.913865120,1 +59.913870740,0 +59.929167720,1 +59.930504510,0 +59.945818050,1 +59.947056550,0 +59.947082360,1 +59.947100570,0 +59.962489530,1 +59.962496690,0 +59.962502080,1 +59.963732140,0 +59.963783200,1 +59.963789550,0 +59.963930160,1 +59.963935400,0 +59.979165460,1 +59.980414750,0 +59.980434010,1 +59.980477340,0 +59.980530310,1 +59.980535920,0 +59.980559660,1 +59.980565530,0 +59.995828430,1 +59.997044820,0 +59.997067790,1 +59.997162330,0 +59.997187080,1 +59.997192840,0 +60.012479200,1 +60.013786890,0 +60.013810570,1 +60.013816210,0 +60.029154960,1 +60.030370850,0 +60.030431990,1 +60.030471350,0 +60.030495690,1 +60.030502560,0 +60.045843590,1 +60.046892520,0 +60.046915870,1 +60.046923070,0 +60.062511000,1 +60.062516910,0 +60.062527790,1 +60.063661150,0 +60.063670740,1 +60.063676920,0 +60.063712650,1 +60.063718310,0 +60.063737750,1 +60.063802450,0 +60.079161910,1 +60.080369760,0 +60.080376030,1 +60.080461280,0 +60.080547710,1 +60.080553350,0 +60.095201280,0 diff --git a/data/pps_60s_interference_summary.json b/data/pps_60s_interference_summary.json new file mode 100644 index 0000000..e1f13c4 --- /dev/null +++ b/data/pps_60s_interference_summary.json @@ -0,0 +1,17 @@ +{ + "mode": "pps", + "duration_s": 60.0, + "pps": { + "edges": 3306, + "period_mean_s": 0.018180230148260212, + "period_sd_ns": 12360850.269380264, + "period_pp_ns": 115550349.99999237, + "analyzer_ppm": -981819.7698517398, + "dropped_pulses": 0, + "wander_sd_ns": 28567282.9011483, + "wander_pp_ns": 139113914.45783627, + "quantization_ns": 10.0, + "width_mean_ms": 3.027292683000574, + "width_sd_ns": 13188407.59114201 + } +} \ No newline at end of file diff --git a/data/pps_soak_274s_clean_edges.csv b/data/pps_soak_274s_clean_edges.csv new file mode 100644 index 0000000..1ffa645 --- /dev/null +++ b/data/pps_soak_274s_clean_edges.csv @@ -0,0 +1,550 @@ +Time [s],Channel 1 +0.000000000,0 +0.052903620,1 +0.152902660,0 +1.052894180,1 +1.152893220,0 +2.052884730,1 +2.152883780,0 +3.052875290,1 +3.152874340,0 +4.052865850,1 +4.152864890,0 +5.052856400,1 +5.152855440,0 +6.052846940,1 +6.152845980,0 +7.052837480,1 +7.152836520,0 +8.052828010,1 +8.152827070,0 +9.052818530,1 +9.152817590,0 +10.052809050,1 +10.152808110,0 +11.052799560,1 +11.152798630,0 +12.052790080,1 +12.152789140,0 +13.052780580,1 +13.152779640,0 +14.052771080,1 +14.152770140,0 +15.052761580,1 +15.152760630,0 +16.052752070,1 +16.152751120,0 +17.052742550,1 +17.152741610,0 +18.052733050,1 +18.152732090,0 +19.052723520,1 +19.152722570,0 +20.052714000,1 +20.152713040,0 +21.052704470,1 +21.152703510,0 +22.052694930,1 +22.152693990,0 +23.052685390,1 +23.152684450,0 +24.052675850,1 +24.152674910,0 +25.052666300,1 +25.152665360,0 +26.052656750,1 +26.152655810,0 +27.052647210,1 +27.152646250,0 +28.052637660,1 +28.152636710,0 +29.052628100,1 +29.152627150,0 +30.052618550,1 +30.152617590,0 +31.052608990,1 +31.152608030,0 +32.052599430,1 +32.152598480,0 +33.052589860,1 +33.152588920,0 +34.052580310,1 +34.152579350,0 +35.052570750,1 +35.152569800,0 +36.052561170,1 +36.152560230,0 +37.052551620,1 +37.152550660,0 +38.052542050,1 +38.152541100,0 +39.052532480,1 +39.152531530,0 +40.052522920,1 +40.152521960,0 +41.052513360,1 +41.152512410,0 +42.052503790,1 +42.152502840,0 +43.052494230,1 +43.152493270,0 +44.052484670,1 +44.152483720,0 +45.052475100,1 +45.152474150,0 +46.052465550,1 +46.152464590,0 +47.052455990,1 +47.152455040,0 +48.052446430,1 +48.152445480,0 +49.052436880,1 +49.152435920,0 +50.052427330,1 +50.152426380,0 +51.052417770,1 +51.152416820,0 +52.052408220,1 +52.152407260,0 +53.052398670,1 +53.152397710,0 +54.052389110,1 +54.152388160,0 +55.052379550,1 +55.152378600,0 +56.052370000,1 +56.152369050,0 +57.052360440,1 +57.152359500,0 +58.052350880,1 +58.152349940,0 +59.052341340,1 +59.152340380,0 +60.052331780,1 +60.152330820,0 +61.052322220,1 +61.152321280,0 +62.052312660,1 +62.152311720,0 +63.052303110,1 +63.152302160,0 +64.052293550,1 +64.152292610,0 +65.052283990,1 +65.152283050,0 +66.052274430,1 +66.152273490,0 +67.052264890,1 +67.152263930,0 +68.052255330,1 +68.152254370,0 +69.052245760,1 +69.152244820,0 +70.052236200,1 +70.152235250,0 +71.052226640,1 +71.152225690,0 +72.052217090,1 +72.152216130,0 +73.052207530,1 +73.152206560,0 +74.052197960,1 +74.152197010,0 +75.052188400,1 +75.152187450,0 +76.052178830,1 +76.152177880,0 +77.052169280,1 +77.152168320,0 +78.052159720,1 +78.152158760,0 +79.052150150,1 +79.152149190,0 +80.052140590,1 +80.152139640,0 +81.052131020,1 +81.152130070,0 +82.052121460,1 +82.152120510,0 +83.052111890,1 +83.152110940,0 +84.052102340,1 +84.152101380,0 +85.052092780,1 +85.152091810,0 +86.052083210,1 +86.152082250,0 +87.052073640,1 +87.152072700,0 +88.052064080,1 +88.152063130,0 +89.052054510,1 +89.152053570,0 +90.052044950,1 +90.152044000,0 +91.052035390,1 +91.152034440,0 +92.052025840,1 +92.152024880,0 +93.052016280,1 +93.152015310,0 +94.052006710,1 +94.152005750,0 +95.051997150,1 +95.151996200,0 +96.051987580,1 +96.151986640,0 +97.051978020,1 +97.151977070,0 +98.051968450,1 +98.151967500,0 +99.051958880,1 +99.151957930,0 +100.051949330,1 +100.151948360,0 +101.051939760,1 +101.151938790,0 +102.051930180,1 +102.151929220,0 +103.051920610,1 +103.151919660,0 +104.051911030,1 +104.151910080,0 +105.051901450,1 +105.151900500,0 +106.051891870,1 +106.151890920,0 +107.051882280,1 +107.151881330,0 +108.051872710,1 +108.151871750,0 +109.051863130,1 +109.151862160,0 +110.051853540,1 +110.151852590,0 +111.051843950,1 +111.151843000,0 +112.051834360,1 +112.151833410,0 +113.051824760,1 +113.151823810,0 +114.051815180,1 +114.151814220,0 +115.051805580,1 +115.151804620,0 +116.051795980,1 +116.151795030,0 +117.051786370,1 +117.151785420,0 +118.051776770,1 +118.151775820,0 +119.051767160,1 +119.151766210,0 +120.051757560,1 +120.151756590,0 +121.051747940,1 +121.151746980,0 +122.051738320,1 +122.151737360,0 +123.051728710,1 +123.151727750,0 +124.051719080,1 +124.151718130,0 +125.051709460,1 +125.151708510,0 +126.051699830,1 +126.151698880,0 +127.051690220,1 +127.151689250,0 +128.051680590,1 +128.151679620,0 +129.051670950,1 +129.151670000,0 +130.051661320,1 +130.151660360,0 +131.051651670,1 +131.151650730,0 +132.051642040,1 +132.151641090,0 +133.051632410,1 +133.151631440,0 +134.051622760,1 +134.151621800,0 +135.051613120,1 +135.151612150,0 +136.051603470,1 +136.151602500,0 +137.051593820,1 +137.151592870,0 +138.051584160,1 +138.151583210,0 +139.051574500,1 +139.151573550,0 +140.051564860,1 +140.151563890,0 +141.051555200,1 +141.151554240,0 +142.051545530,1 +142.151544570,0 +143.051535880,1 +143.151534900,0 +144.051526200,1 +144.151525240,0 +145.051516530,1 +145.151515570,0 +146.051506870,1 +146.151505890,0 +147.051497190,1 +147.151496230,0 +148.051487520,1 +148.151486550,0 +149.051477840,1 +149.151476880,0 +150.051468150,1 +150.151467190,0 +151.051458470,1 +151.151457510,0 +152.051448780,1 +152.151447820,0 +153.051439110,1 +153.151438150,0 +154.051429410,1 +154.151428450,0 +155.051419730,1 +155.151418770,0 +156.051410030,1 +156.151409070,0 +157.051400350,1 +157.151399390,0 +158.051390650,1 +158.151389690,0 +159.051380960,1 +159.151380000,0 +160.051371260,1 +160.151370300,0 +161.051361570,1 +161.151360610,0 +162.051351880,1 +162.151350910,0 +163.051342180,1 +163.151341220,0 +164.051332490,1 +164.151331520,0 +165.051322790,1 +165.151321840,0 +166.051313110,1 +166.151312140,0 +167.051303410,1 +167.151302460,0 +168.051293730,1 +168.151292760,0 +169.051284040,1 +169.151283090,0 +170.051274370,1 +170.151273400,0 +171.051264680,1 +171.151263730,0 +172.051255010,1 +172.151254040,0 +173.051245330,1 +173.151244370,0 +174.051235660,1 +174.151234690,0 +175.051225980,1 +175.151225030,0 +176.051216320,1 +176.151215350,0 +177.051206640,1 +177.151205680,0 +178.051196980,1 +178.151196010,0 +179.051187300,1 +179.151186350,0 +180.051177650,1 +180.151176680,0 +181.051167970,1 +181.151167020,0 +182.051158320,1 +182.151157360,0 +183.051148660,1 +183.151147680,0 +184.051138980,1 +184.151138030,0 +185.051129330,1 +185.151128360,0 +186.051119660,1 +186.151118700,0 +187.051110000,1 +187.151109040,0 +188.051100350,1 +188.151099380,0 +189.051090690,1 +189.151089730,0 +190.051081040,1 +190.151080070,0 +191.051071380,1 +191.151070420,0 +192.051061730,1 +192.151060760,0 +193.051052080,1 +193.151051120,0 +194.051042430,1 +194.151041480,0 +195.051032780,1 +195.151031820,0 +196.051023130,1 +196.151022180,0 +197.051013490,1 +197.151012520,0 +198.051003840,1 +198.151002880,0 +199.050994190,1 +199.150993220,0 +200.050984530,1 +200.150983580,0 +201.050974890,1 +201.150973940,0 +202.050965250,1 +202.150964280,0 +203.050955590,1 +203.150954630,0 +204.050945940,1 +204.150944990,0 +205.050936300,1 +205.150935330,0 +206.050926640,1 +206.150925680,0 +207.050916990,1 +207.150916040,0 +208.050907350,1 +208.150906370,0 +209.050897680,1 +209.150896720,0 +210.050888040,1 +210.150887080,0 +211.050878390,1 +211.150877410,0 +212.050868720,1 +212.150867760,0 +213.050859070,1 +213.150858110,0 +214.050849420,1 +214.150848440,0 +215.050839750,1 +215.150838790,0 +216.050830090,1 +216.150829130,0 +217.050820430,1 +217.150819460,0 +218.050810760,1 +218.150809800,0 +219.050801100,1 +219.150800140,0 +220.050791440,1 +220.150790480,0 +221.050781780,1 +221.150780800,0 +222.050772100,1 +222.150771140,0 +223.050762430,1 +223.150761470,0 +224.050752770,1 +224.150751800,0 +225.050743100,1 +225.150742120,0 +226.050733430,1 +226.150732450,0 +227.050723740,1 +227.150722780,0 +228.050714070,1 +228.150713110,0 +229.050704390,1 +229.150703430,0 +230.050694720,1 +230.150693740,0 +231.050685040,1 +231.150684060,0 +232.050675340,1 +232.150674380,0 +233.050665660,1 +233.150664700,0 +234.050655980,1 +234.150655020,0 +235.050646300,1 +235.150645320,0 +236.050636610,1 +236.150635640,0 +237.050626910,1 +237.150625950,0 +238.050617220,1 +238.150616260,0 +239.050607530,1 +239.150606570,0 +240.050597840,1 +240.150596860,0 +241.050588140,1 +241.150587170,0 +242.050578430,1 +242.150577470,0 +243.050568720,1 +243.150567770,0 +244.050559030,1 +244.150558070,0 +245.050549320,1 +245.150548350,0 +246.050539620,1 +246.150538640,0 +247.050529890,1 +247.150528930,0 +248.050520190,1 +248.150519220,0 +249.050510470,1 +249.150509510,0 +250.050500750,1 +250.150499790,0 +251.050491040,1 +251.150490070,0 +252.050481320,1 +252.150480340,0 +253.050471600,1 +253.150470620,0 +254.050461860,1 +254.150460890,0 +255.050452130,1 +255.150451160,0 +256.050442400,1 +256.150441440,0 +257.050432670,1 +257.150431710,0 +258.050422940,1 +258.150421960,0 +259.050413200,1 +259.150412220,0 +260.050403450,1 +260.150402480,0 +261.050393710,1 +261.150392740,0 +262.050383970,1 +262.150383000,0 +263.050374220,1 +263.150373260,0 +264.050364470,1 +264.150363490,0 +265.050354730,1 +265.150353750,0 +266.050344980,1 +266.150344000,0 +267.050335230,1 +267.150334250,0 +268.050325460,1 +268.150324490,0 +269.050315700,1 +269.150314740,0 +270.050305950,1 +270.150304980,0 +271.050296180,1 +271.150295220,0 +272.050286420,1 +272.150285460,0 +273.050276660,1 +273.150275690,0 diff --git a/data/pps_soak_300s_edges.csv.gz b/data/pps_soak_300s_edges.csv.gz new file mode 100644 index 0000000..6f9a09c Binary files /dev/null and b/data/pps_soak_300s_edges.csv.gz differ diff --git a/data/starvation_postfix.json b/data/starvation_postfix.json new file mode 100644 index 0000000..d6fc57a --- /dev/null +++ b/data/starvation_postfix.json @@ -0,0 +1,10 @@ +{ + "label": "postfix", + "samples": 0, + "failed": 0, + "unsynced": 211439, + "whole_second_errors": 0, + "offset_median_ms": null, + "offset_min_s": null, + "offset_max_s": null +} \ No newline at end of file diff --git a/data/starvation_postfix_periodic.json b/data/starvation_postfix_periodic.json new file mode 100644 index 0000000..33ce8bf --- /dev/null +++ b/data/starvation_postfix_periodic.json @@ -0,0 +1,10 @@ +{ + "label": "postfix_periodic", + "samples": 5988, + "failed": 0, + "unsynced": 0, + "whole_second_errors": 0, + "offset_median_ms": -0.23221969604492188, + "offset_min_s": -0.008809804916381836, + "offset_max_s": 0.0035219192504882812 +} \ No newline at end of file diff --git a/data/starvation_prefix.json b/data/starvation_prefix.json new file mode 100644 index 0000000..b640961 --- /dev/null +++ b/data/starvation_prefix.json @@ -0,0 +1,10 @@ +{ + "label": "prefix", + "samples": 4052, + "failed": 0, + "unsynced": 73402, + "whole_second_errors": 803, + "offset_median_ms": 0.020623207092285156, + "offset_min_s": -1.0067304372787476, + "offset_max_s": 0.0056231021881103516 +} \ No newline at end of file diff --git a/data/starvation_prefix_periodic.json b/data/starvation_prefix_periodic.json new file mode 100644 index 0000000..6bb1fed --- /dev/null +++ b/data/starvation_prefix_periodic.json @@ -0,0 +1,10 @@ +{ + "label": "prefix_periodic", + "samples": 5990, + "failed": 0, + "unsynced": 0, + "whole_second_errors": 1005, + "offset_median_ms": -0.13905763626098633, + "offset_min_s": -1.0036464929580688, + "offset_max_s": 0.003391265869140625 +} \ No newline at end of file diff --git a/data/starvation_production_normal.json b/data/starvation_production_normal.json new file mode 100644 index 0000000..c037377 --- /dev/null +++ b/data/starvation_production_normal.json @@ -0,0 +1,10 @@ +{ + "label": "production_normal", + "samples": 4294, + "failed": 0, + "unsynced": 0, + "whole_second_errors": 0, + "offset_median_ms": -0.3782510757446289, + "offset_min_s": -0.002821207046508789, + "offset_max_s": 0.0018982887268066406 +} \ No newline at end of file diff --git a/data/timebase_180s_load_postfix_edges.csv b/data/timebase_180s_load_postfix_edges.csv new file mode 100644 index 0000000..8b462e2 --- /dev/null +++ b/data/timebase_180s_load_postfix_edges.csv @@ -0,0 +1,723 @@ +Time [s],Channel 0,Channel 1 +0.000000000,0,0 +0.364961640,0,1 +0.364966920,1,1 +0.365136460,0,1 +0.464960570,0,0 +1.364950910,0,1 +1.365070060,1,1 +1.365120170,0,1 +1.464949850,0,0 +2.364940190,0,1 +2.365009630,1,1 +2.365060240,0,1 +2.464939130,0,0 +3.364929470,0,1 +3.365050480,1,1 +3.365100820,0,1 +3.464928400,0,0 +4.364918760,0,1 +4.364925830,1,1 +4.364976090,0,1 +4.464917680,0,0 +5.364908020,0,1 +5.365035690,1,1 +5.365086040,0,1 +5.464906960,0,0 +6.364897290,0,1 +6.364902250,1,1 +6.364952880,0,1 +6.464896230,0,0 +7.364886560,0,1 +7.364891890,1,1 +7.364941700,0,1 +7.464885490,0,0 +8.364875820,0,1 +8.364881180,1,1 +8.365009440,0,1 +8.464874750,0,0 +9.364865080,0,1 +9.364870110,1,1 +9.364980050,0,1 +9.464864020,0,0 +10.364854340,0,1 +10.364976520,1,1 +10.365026680,0,1 +10.464853260,0,0 +11.364843600,0,1 +11.364848860,1,1 +11.364898990,0,1 +11.464842520,0,0 +12.364832840,0,1 +12.364927010,1,1 +12.364977150,0,1 +12.464831770,0,0 +13.364822090,0,1 +13.364827560,1,1 +13.364878120,0,1 +13.464821020,0,0 +14.364811330,0,1 +14.364816440,1,1 +14.364866470,0,1 +14.464810250,0,0 +15.364800580,0,1 +15.364846720,1,1 +15.364896800,0,1 +15.464799500,0,0 +16.364789800,0,1 +16.364914150,1,1 +16.364964760,0,1 +16.464788740,0,0 +17.364779040,0,1 +17.364830830,1,1 +17.364881310,0,1 +17.464777980,0,0 +18.364768280,0,1 +18.364889130,1,1 +18.364939220,0,1 +18.464767200,0,0 +19.364757490,0,1 +19.364879140,1,1 +19.364929700,0,1 +19.464756430,0,0 +20.364746730,0,1 +20.364752330,1,1 +20.364802670,0,1 +20.464745660,0,0 +21.364735960,0,1 +21.364741080,1,1 +21.364790990,0,1 +21.464734880,0,0 +22.364725180,0,1 +22.364731000,1,1 +22.364850740,0,1 +22.464724100,0,0 +23.364714390,0,1 +23.364736770,1,1 +23.364787700,0,1 +23.464713330,0,0 +24.364703620,0,1 +24.364709100,1,1 +24.364759700,0,1 +24.464702550,0,0 +25.364692840,0,1 +25.364698080,1,1 +25.364749100,0,1 +25.464691760,0,0 +26.364682060,0,1 +26.364687620,1,1 +26.364825480,0,1 +26.464680980,0,0 +27.364671260,0,1 +27.364785590,1,1 +27.364836500,0,1 +27.464670190,0,0 +28.364660470,0,1 +28.364666070,1,1 +28.364716720,0,1 +28.464659410,0,0 +29.364649690,0,1 +29.364724320,1,1 +29.364774540,0,1 +29.464648610,0,0 +30.364638900,0,1 +30.364644850,1,1 +30.364776170,0,1 +30.464637820,0,0 +31.364628100,0,1 +31.364730360,1,1 +31.364780470,0,1 +31.464627030,0,0 +32.364617310,0,1 +32.364698650,1,1 +32.364749250,0,1 +32.464616240,0,0 +33.364606510,0,1 +33.364640760,1,1 +33.364690460,0,1 +33.464605430,0,0 +34.364595700,0,1 +34.364600940,1,1 +34.364762530,0,1 +34.464594640,0,0 +35.364584910,0,1 +35.364590190,1,1 +35.364717500,0,1 +35.464583840,0,0 +36.364574110,0,1 +36.364579310,1,1 +36.364694280,0,1 +36.464573040,0,0 +37.364563310,0,1 +37.364568380,1,1 +37.364618300,0,1 +37.464562230,0,0 +38.364552490,0,1 +38.364606500,1,1 +38.364656610,0,1 +38.464551430,0,0 +39.364541690,0,1 +39.364599720,1,1 +39.364649980,0,1 +39.464540630,0,0 +40.364530890,0,1 +40.364537210,1,1 +40.364587090,0,1 +40.464529820,0,0 +41.364520090,0,1 +41.364525210,1,1 +41.364683310,0,1 +41.464519000,0,0 +42.364509270,0,1 +42.364591430,1,1 +42.364641490,0,1 +42.464508200,0,0 +43.364498470,0,1 +43.364539100,1,1 +43.364592140,0,1 +43.464497400,0,0 +44.364487660,0,1 +44.364493610,1,1 +44.364544320,0,1 +44.464486580,0,0 +45.364476850,0,1 +45.364482060,1,1 +45.364615840,0,1 +45.464475770,0,0 +46.364466030,0,1 +46.364528980,1,1 +46.364579460,0,1 +46.464464970,0,0 +47.364455230,0,1 +47.364564790,1,1 +47.364614760,0,1 +47.464454160,0,0 +48.364444420,0,1 +48.364547180,1,1 +48.364597970,0,1 +48.464443340,0,0 +49.364433600,0,1 +49.364470610,1,1 +49.364521280,0,1 +49.464432530,0,0 +50.364422790,0,1 +50.364427790,1,1 +50.364560920,0,1 +50.464421720,0,0 +51.364411980,0,1 +51.364419260,1,1 +51.364469560,0,1 +51.464410900,0,0 +52.364401170,0,1 +52.364407290,1,1 +52.364457690,0,1 +52.464400090,0,0 +53.364390350,0,1 +53.364443700,1,1 +53.364494230,0,1 +53.464389280,0,0 +54.364379540,0,1 +54.364384810,1,1 +54.364532800,0,1 +54.464378470,0,0 +55.364368730,0,1 +55.364373910,1,1 +55.364424700,0,1 +55.464367650,0,0 +56.364357910,0,1 +56.364363450,1,1 +56.364413620,0,1 +56.464356840,0,0 +57.364347100,0,1 +57.364352660,1,1 +57.364511150,0,1 +57.464346030,0,0 +58.364336290,0,1 +58.364341950,1,1 +58.364392140,0,1 +58.464335200,0,0 +59.364325460,0,1 +59.364330680,1,1 +59.364381560,0,1 +59.464324390,0,0 +60.364314650,0,1 +60.364319770,1,1 +60.364370280,0,1 +60.464313580,0,0 +61.364303840,0,1 +61.364312620,1,1 +61.364362790,0,1 +61.464302750,0,0 +62.364293010,0,1 +62.364339500,1,1 +62.364389800,0,1 +62.464291940,0,0 +63.364282200,0,1 +63.364362900,1,1 +63.364413030,0,1 +63.464281130,0,0 +64.364271390,0,1 +64.364276960,1,1 +64.364327190,0,1 +64.464270300,0,0 +65.364260560,0,1 +65.364308030,1,1 +65.364358770,0,1 +65.464259490,0,0 +66.364249750,0,1 +66.364255390,1,1 +66.364305760,0,1 +66.464248680,0,0 +67.364238940,0,1 +67.364260610,1,1 +67.364310930,0,1 +67.464237850,0,0 +68.364228130,0,1 +68.364233770,1,1 +68.364284320,0,1 +68.464227040,0,0 +69.364217300,0,1 +69.364314090,1,1 +69.364364720,0,1 +69.464216230,0,0 +70.364206490,0,1 +70.364211750,1,1 +70.364345580,0,1 +70.464205410,0,0 +71.364195670,0,1 +71.364200750,1,1 +71.364250910,0,1 +71.464194600,0,0 +72.364184870,0,1 +72.364190410,1,1 +72.364343840,0,1 +72.464183800,0,0 +73.364174060,0,1 +73.364251800,1,1 +73.364302370,0,1 +73.464172980,0,0 +74.364163240,0,1 +74.364278280,1,1 +74.364328800,0,1 +74.464162180,0,0 +75.364152440,0,1 +75.364252350,1,1 +75.364302680,0,1 +75.464151360,0,0 +76.364141630,0,1 +76.364148660,1,1 +76.364198960,0,1 +76.464140560,0,0 +77.364130830,0,1 +77.364136290,1,1 +77.364186530,0,1 +77.464129760,0,0 +78.364120030,0,1 +78.364125130,1,1 +78.364175340,0,1 +78.464118950,0,0 +79.364109220,0,1 +79.364114440,1,1 +79.364165070,0,1 +79.464108150,0,0 +80.364098430,0,1 +80.364103490,1,1 +80.364154220,0,1 +80.464097350,0,0 +81.364087620,0,1 +81.364100350,1,1 +81.364150220,0,1 +81.464086560,0,0 +82.364076840,0,1 +82.364086320,1,1 +82.364190180,0,1 +82.464075750,0,0 +83.364066030,0,1 +83.364071700,1,1 +83.364122070,0,1 +83.464064970,0,0 +84.364055250,0,1 +84.364060220,1,1 +84.364205880,0,1 +84.464054160,0,0 +85.364044450,0,1 +85.364049830,1,1 +85.364100180,0,1 +85.464043380,0,0 +86.364033650,0,1 +86.364039240,1,1 +86.364089650,0,1 +86.464032580,0,0 +87.364022860,0,1 +87.364028550,1,1 +87.364161730,0,1 +87.464021780,0,0 +88.364012060,0,1 +88.364017470,1,1 +88.364067850,0,1 +88.464011000,0,0 +89.364001280,0,1 +89.364098560,1,1 +89.364149400,0,1 +89.464000200,0,0 +90.363990490,0,1 +90.363995760,1,1 +90.364046410,0,1 +90.463989430,0,0 +91.363979720,0,1 +91.363987510,1,1 +91.364037790,0,1 +91.463978640,0,0 +92.363968930,0,1 +92.363979410,1,1 +92.364115500,0,1 +92.463967870,0,0 +93.363958150,0,1 +93.363963830,1,1 +93.364014720,0,1 +93.463957080,0,0 +94.363947390,0,1 +94.363952470,1,1 +94.364002830,0,1 +94.463946310,0,0 +95.363936610,0,1 +95.364055570,1,1 +95.364105890,0,1 +95.463935550,0,0 +96.363925840,0,1 +96.363931590,1,1 +96.364086820,0,1 +96.463924770,0,0 +97.363915080,0,1 +97.364026770,1,1 +97.364077220,0,1 +97.463914000,0,0 +98.363904310,0,1 +98.364030160,1,1 +98.364080730,0,1 +98.463903240,0,0 +99.363893540,0,1 +99.363974800,1,1 +99.364025050,0,1 +99.463892480,0,0 +100.363882790,0,1 +100.363901110,1,1 +100.363951390,0,1 +100.463881710,0,0 +101.363872020,0,1 +101.363877200,1,1 +101.363927700,0,1 +101.463870960,0,0 +102.363861260,0,1 +102.363866770,1,1 +102.364018310,0,1 +102.463860200,0,0 +103.363850510,0,1 +103.363927440,1,1 +103.363977990,0,1 +103.463849430,0,0 +104.363839750,0,1 +104.363943600,1,1 +104.363994450,0,1 +104.463838690,0,0 +105.363829010,0,1 +105.363910120,1,1 +105.363960440,0,1 +105.463827930,0,0 +106.363818250,0,1 +106.363823500,1,1 +106.363873820,0,1 +106.463817190,0,0 +107.363807520,0,1 +107.363812850,1,1 +107.363863080,0,1 +107.463806440,0,0 +108.363796770,0,1 +108.363802470,1,1 +108.363852630,0,1 +108.463795710,0,0 +109.363786020,0,1 +109.363791140,1,1 +109.363940160,0,1 +109.463784960,0,0 +110.363775290,0,1 +110.363895920,1,1 +110.363946160,0,1 +110.463774220,0,0 +111.363764550,0,1 +111.363770310,1,1 +111.363888100,0,1 +111.463763490,0,0 +112.363753830,0,1 +112.363758940,1,1 +112.363809870,0,1 +112.463752760,0,0 +113.363743090,0,1 +113.363865270,1,1 +113.363916390,0,1 +113.463742030,0,0 +114.363732360,0,1 +114.363738330,1,1 +114.363853230,0,1 +114.463731300,0,0 +115.363721640,0,1 +115.363793580,1,1 +115.363843460,0,1 +115.463720560,0,0 +116.363710910,0,1 +116.363716190,1,1 +116.363766980,0,1 +116.463709850,0,0 +117.363700190,0,1 +117.363763080,1,1 +117.363813290,0,1 +117.463699120,0,0 +118.363689460,0,1 +118.363695490,1,1 +118.363745430,0,1 +118.463688400,0,0 +119.363678750,0,1 +119.363684020,1,1 +119.363734040,0,1 +119.463677680,0,0 +120.363668030,0,1 +120.363673440,1,1 +120.363723560,0,1 +120.463666950,0,0 +121.363657310,0,1 +121.363662290,1,1 +121.363712670,0,1 +121.463656250,0,0 +122.363646600,0,1 +122.363653520,1,1 +122.363703800,0,1 +122.463645530,0,0 +123.363635890,0,1 +123.363649590,1,1 +123.363700380,0,1 +123.463634830,0,0 +124.363625170,0,1 +124.363739460,1,1 +124.363789560,0,1 +124.463624110,0,0 +125.363614470,0,1 +125.363717140,1,1 +125.363768070,0,1 +125.463613400,0,0 +126.363603760,0,1 +126.363609320,1,1 +126.363776170,0,1 +126.463602700,0,0 +127.363593050,0,1 +127.363598720,1,1 +127.363649630,0,1 +127.463591990,0,0 +128.363582350,0,1 +128.363617510,1,1 +128.363667740,0,1 +128.463581280,0,0 +129.363571650,0,1 +129.363580470,1,1 +129.363631390,0,1 +129.463570590,0,0 +130.363560940,0,1 +130.363566650,1,1 +130.363616870,0,1 +130.463559880,0,0 +131.363550250,0,1 +131.363648550,1,1 +131.363698670,0,1 +131.463549180,0,0 +132.363539550,0,1 +132.363545050,1,1 +132.363595150,0,1 +132.463538490,0,0 +133.363528840,0,1 +133.363575860,1,1 +133.363626480,0,1 +133.463527790,0,0 +134.363518160,0,1 +134.363552660,1,1 +134.363602960,0,1 +134.463517080,0,0 +135.363507460,0,1 +135.363513400,1,1 +135.363651770,0,1 +135.463506400,0,0 +136.363496760,0,1 +136.363501970,1,1 +136.363634030,0,1 +136.463495700,0,0 +137.363486080,0,1 +137.363593480,1,1 +137.363644060,0,1 +137.463485000,0,0 +138.363475380,0,1 +138.363501620,1,1 +138.363552570,0,1 +138.463474310,0,0 +139.363464680,0,1 +139.363469760,1,1 +139.363519470,0,1 +139.463463620,0,0 +140.363453980,0,1 +140.363492590,1,1 +140.363542870,0,1 +140.463452930,0,0 +141.363443300,0,1 +141.363449290,1,1 +141.363499220,0,1 +141.463442230,0,0 +142.363432610,0,1 +142.363437990,1,1 +142.363605420,0,1 +142.463431550,0,0 +143.363421910,0,1 +143.363426980,1,1 +143.363550280,0,1 +143.463420860,0,0 +144.363411240,0,1 +144.363416370,1,1 +144.363466150,0,1 +144.463410160,0,0 +145.363400540,0,1 +145.363405750,1,1 +145.363455590,0,1 +145.463399470,0,0 +146.363389850,0,1 +146.363394910,1,1 +146.363555820,0,1 +146.463388790,0,0 +147.363379150,0,1 +147.363384280,1,1 +147.363434530,0,1 +147.463378100,0,0 +148.363368470,0,1 +148.363373560,1,1 +148.363523070,0,1 +148.463367400,0,0 +149.363357780,0,1 +149.363477450,1,1 +149.363528070,0,1 +149.463356710,0,0 +150.363347080,0,1 +150.363352200,1,1 +150.363402240,0,1 +150.463346030,0,0 +151.363336390,0,1 +151.363386010,1,1 +151.363436980,0,1 +151.463335330,0,0 +152.363325710,0,1 +152.363435280,1,1 +152.363486330,0,1 +152.463324640,0,0 +153.363315010,0,1 +153.363320620,1,1 +153.363371390,0,1 +153.463313940,0,0 +154.363304320,0,1 +154.363310180,1,1 +154.363360570,0,1 +154.463303260,0,0 +155.363293620,0,1 +155.363298690,1,1 +155.363349230,0,1 +155.463292560,0,0 +156.363282930,0,1 +156.363324510,1,1 +156.363374330,0,1 +156.463281860,0,0 +157.363272240,0,1 +157.363299180,1,1 +157.363349860,0,1 +157.463271160,0,0 +158.363261540,0,1 +158.363366340,1,1 +158.363415980,0,1 +158.463260480,0,0 +159.363250840,0,1 +159.363308410,1,1 +159.363358480,0,1 +159.463249780,0,0 +160.363240150,0,1 +160.363245390,1,1 +160.363296020,0,1 +160.463239080,0,0 +161.363229450,0,1 +161.363234920,1,1 +161.363351840,0,1 +161.463228390,0,0 +162.363218740,0,1 +162.363228610,1,1 +162.363374160,0,1 +162.463217690,0,0 +163.363208050,0,1 +163.363267300,1,1 +163.363317980,0,1 +163.463206980,0,0 +164.363197350,0,1 +164.363253710,1,1 +164.363304490,0,1 +164.463196280,0,0 +165.363186640,0,1 +165.363207020,1,1 +165.363257570,0,1 +165.463185580,0,0 +166.363175930,0,1 +166.363298060,1,1 +166.363347950,0,1 +166.463174880,0,0 +167.363165240,0,1 +167.363170320,1,1 +167.363220460,0,1 +167.463164170,0,0 +168.363154530,0,1 +168.363208460,1,1 +168.363258780,0,1 +168.463153460,0,0 +169.363143820,0,1 +169.363197400,1,1 +169.363248020,0,1 +169.463142760,0,0 +170.363133100,0,1 +170.363138130,1,1 +170.363188290,0,1 +170.463132050,0,0 +171.363122410,0,1 +171.363206310,1,1 +171.363256500,0,1 +171.463121330,0,0 +172.363111690,0,1 +172.363126500,1,1 +172.363176900,0,1 +172.463110630,0,0 +173.363100980,0,1 +173.363138420,1,1 +173.363189100,0,1 +173.463099920,0,0 +174.363090280,0,1 +174.363095500,1,1 +174.363145730,0,1 +174.463089200,0,0 +175.363079560,0,1 +175.363085000,1,1 +175.363135280,0,1 +175.463078480,0,0 +176.363068840,0,1 +176.363093910,1,1 +176.363144260,0,1 +176.463067780,0,0 +177.363058120,0,1 +177.363064190,1,1 +177.363114530,0,1 +177.463057060,0,0 +178.363047410,0,1 +178.363052480,1,1 +178.363103080,0,1 +178.463046340,0,0 +179.363036690,0,1 +179.363042140,1,1 +179.363092320,0,1 +179.463035630,0,0 +180.051640320,0,0 diff --git a/data/timebase_180s_load_postfix_summary.json b/data/timebase_180s_load_postfix_summary.json new file mode 100644 index 0000000..2525d45 --- /dev/null +++ b/data/timebase_180s_load_postfix_summary.json @@ -0,0 +1,19 @@ +{ + "firmware": "merged, includes b7fa5eb starvation guard", + "duration_s": 180.0, + "queries": 757859, + "req_per_s": 4258, + "failed": 2, + "ntp_delay_min_ms": 0.4189014434814453, + "ntp_delay_median_ms": 1.3628005981445312, + "ntp_offset_median_ms": 0.3587007522583008, + "ntp_offset_sd_ms": 0.08374116760728335, + "ntp_offset_min_ms": -7.554292678833008, + "ntp_offset_max_ms": 3.8874149322509766, + "whole_second_errors": 0, + "samples": 757859, + "E_c_median_us": 5.980000004512931, + "E_c_sd_us": 40.97693365979594, + "E_c_min_us": 4.96000000005381, + "E_c_max_us": 127.67000000035722 +} \ No newline at end of file diff --git a/data/timebase_180s_quiet_postfix.sal b/data/timebase_180s_quiet_postfix.sal new file mode 100644 index 0000000..03a7bff Binary files /dev/null and b/data/timebase_180s_quiet_postfix.sal differ diff --git a/data/timebase_180s_quiet_postfix_edges.csv b/data/timebase_180s_quiet_postfix_edges.csv new file mode 100644 index 0000000..f5283ac --- /dev/null +++ b/data/timebase_180s_quiet_postfix_edges.csv @@ -0,0 +1,723 @@ +Time [s],Channel 0,Channel 1 +0.000000000,0,0 +0.534927700,0,1 +0.534932780,1,1 +0.534983510,0,1 +0.634926640,0,0 +1.534917110,0,1 +1.534922310,1,1 +1.534972910,0,1 +1.634916070,0,0 +2.534906540,0,1 +2.534911690,1,1 +2.534961740,0,1 +2.634905490,0,0 +3.534895960,0,1 +3.534901030,1,1 +3.534951080,0,1 +3.634894900,0,0 +4.534885360,0,1 +4.534890630,1,1 +4.534940680,0,1 +4.634884320,0,0 +5.534874780,0,1 +5.534879860,1,1 +5.534929920,0,1 +5.634873730,0,0 +6.534864190,0,1 +6.534869290,1,1 +6.534920080,0,1 +6.634863120,0,0 +7.534853580,0,1 +7.534858650,1,1 +7.534909250,0,1 +7.634852530,0,0 +8.534842980,0,1 +8.534848180,1,1 +8.534898790,0,1 +8.634841930,0,0 +9.534832370,0,1 +9.534837530,1,1 +9.534888140,0,1 +9.634831310,0,0 +10.534821750,0,1 +10.534826870,1,1 +10.534877040,0,1 +10.634820700,0,0 +11.534811130,0,1 +11.534816470,1,1 +11.534866650,0,1 +11.634810080,0,0 +12.534800520,0,1 +12.534805690,1,1 +12.534855750,0,1 +12.634799450,0,0 +13.534789880,0,1 +13.534794820,1,1 +13.534845000,0,1 +13.634788830,0,0 +14.534779250,0,1 +14.534784320,1,1 +14.534834440,0,1 +14.634778200,0,0 +15.534768620,0,1 +15.534774010,1,1 +15.534824680,0,1 +15.634767550,0,0 +16.534757980,0,1 +16.534763260,1,1 +16.534813860,0,1 +16.634756910,0,0 +17.534747330,0,1 +17.534752390,1,1 +17.534802990,0,1 +17.634746270,0,0 +18.534736680,0,1 +18.534741940,1,1 +18.534792120,0,1 +18.634735630,0,0 +19.534726040,0,1 +19.534731170,1,1 +19.534781350,0,1 +19.634724970,0,0 +20.534715370,0,1 +20.534720330,1,1 +20.534770380,0,1 +20.634714320,0,0 +21.534704720,0,1 +21.534709800,1,1 +21.534759850,0,1 +21.634703660,0,0 +22.534694060,0,1 +22.534699130,1,1 +22.534748760,0,1 +22.634693010,0,0 +23.534683400,0,1 +23.534688550,1,1 +23.534739220,0,1 +23.634682330,0,0 +24.534672740,0,1 +24.534677920,1,1 +24.534728580,0,1 +24.634671670,0,0 +25.534662060,0,1 +25.534667340,1,1 +25.534717390,0,1 +25.634661000,0,0 +26.534651390,0,1 +26.534656470,1,1 +26.534706650,0,1 +26.634650340,0,0 +27.534640730,0,1 +27.534646280,1,1 +27.534697060,0,1 +27.634639670,0,0 +28.534630060,0,1 +28.534635370,1,1 +28.534686460,0,1 +28.634628990,0,0 +29.534619390,0,1 +29.534624460,1,1 +29.534674560,0,1 +29.634618310,0,0 +30.534608690,0,1 +30.534613650,1,1 +30.534663680,0,1 +30.634607640,0,0 +31.534598020,0,1 +31.534603100,1,1 +31.534653660,0,1 +31.634596960,0,0 +32.534587340,0,1 +32.534592410,1,1 +32.534645860,0,1 +32.634586280,0,0 +33.534576660,0,1 +33.534581880,1,1 +33.534632060,0,1 +33.634575590,0,0 +34.534565980,0,1 +34.534571110,1,1 +34.534621350,0,1 +34.634564900,0,0 +35.534555290,0,1 +35.534560610,1,1 +35.534610790,0,1 +35.634554220,0,0 +36.534544590,0,1 +36.534549670,1,1 +36.534599780,0,1 +36.634543530,0,0 +37.534533900,0,1 +37.534539090,1,1 +37.534589270,0,1 +37.634532840,0,0 +38.534523200,0,1 +38.534528410,1,1 +38.534579020,0,1 +38.634522150,0,0 +39.534512510,0,1 +39.534517620,1,1 +39.534568290,0,1 +39.634511440,0,0 +40.534501810,0,1 +40.534507090,1,1 +40.534557820,0,1 +40.634500740,0,0 +41.534491110,0,1 +41.534496230,1,1 +41.534546900,0,1 +41.634490040,0,0 +42.534480410,0,1 +42.534485430,1,1 +42.534536030,0,1 +42.634479330,0,0 +43.534469690,0,1 +43.534474820,1,1 +43.534524870,0,1 +43.634468630,0,0 +44.534458980,0,1 +44.534464040,1,1 +44.534514100,0,1 +44.634457930,0,0 +45.534448280,0,1 +45.534453600,1,1 +45.534503660,0,1 +45.634447220,0,0 +46.534437570,0,1 +46.534442650,1,1 +46.534492830,0,1 +46.634436510,0,0 +47.534426860,0,1 +47.534431960,1,1 +47.534482750,0,1 +47.634425800,0,0 +48.534416150,0,1 +48.534421230,1,1 +48.534471830,0,1 +48.634415090,0,0 +49.534405430,0,1 +49.534410830,1,1 +49.534460890,0,1 +49.634404360,0,0 +50.534394720,0,1 +50.534399940,1,1 +50.534450060,0,1 +50.634393650,0,0 +51.534384010,0,1 +51.534389130,1,1 +51.534439370,0,1 +51.634382930,0,0 +52.534373280,0,1 +52.534378610,1,1 +52.534428790,0,1 +52.634372220,0,0 +53.534362570,0,1 +53.534367640,1,1 +53.534417760,0,1 +53.634361510,0,0 +54.534351860,0,1 +54.534357050,1,1 +54.534407230,0,1 +54.634350800,0,0 +55.534341150,0,1 +55.534346360,1,1 +55.534396960,0,1 +55.634340090,0,0 +56.534330440,0,1 +56.534335710,1,1 +56.534386370,0,1 +56.634329370,0,0 +57.534319720,0,1 +57.534325490,1,1 +57.534375540,0,1 +57.634318650,0,0 +58.534309010,0,1 +58.534314120,1,1 +58.534364950,0,1 +58.634307940,0,0 +59.534298310,0,1 +59.534303590,1,1 +59.534354090,0,1 +59.634297230,0,0 +60.534287590,0,1 +60.534292660,1,1 +60.534343250,0,1 +60.634286530,0,0 +61.534276880,0,1 +61.534282280,1,1 +61.534332240,0,1 +61.634275820,0,0 +62.534266170,0,1 +62.534271460,1,1 +62.534324170,0,1 +62.634265120,0,0 +63.534255470,0,1 +63.534260540,1,1 +63.534310650,0,1 +63.634254410,0,0 +64.534244770,0,1 +64.534250030,1,1 +64.534300640,0,1 +64.634243710,0,0 +65.534234070,0,1 +65.534239140,1,1 +65.534289870,0,1 +65.634233000,0,0 +66.534223370,0,1 +66.534228450,1,1 +66.534279060,0,1 +66.634222290,0,0 +67.534212670,0,1 +67.534217880,1,1 +67.534268490,0,1 +67.634211590,0,0 +68.534201950,0,1 +68.534207070,1,1 +68.534257670,0,1 +68.634200890,0,0 +69.534191250,0,1 +69.534196520,1,1 +69.534246700,0,1 +69.634190200,0,0 +70.534180560,0,1 +70.534185630,1,1 +70.534235690,0,1 +70.634179500,0,0 +71.534169860,0,1 +71.534174830,1,1 +71.534224880,0,1 +71.634168800,0,0 +72.534159160,0,1 +72.534164310,1,1 +72.534214370,0,1 +72.634158080,0,0 +73.534148460,0,1 +73.534153570,1,1 +73.534204240,0,1 +73.634147380,0,0 +74.534137750,0,1 +74.534143090,1,1 +74.534193820,0,1 +74.634136680,0,0 +75.534127050,0,1 +75.534132180,1,1 +75.534182910,0,1 +75.634125980,0,0 +76.534116330,0,1 +76.534121310,1,1 +76.534172040,0,1 +76.634115270,0,0 +77.534105630,0,1 +77.534110760,1,1 +77.534161370,0,1 +77.634104570,0,0 +78.534094920,0,1 +78.534099990,1,1 +78.534150040,0,1 +78.634093860,0,0 +79.534084220,0,1 +79.534089480,1,1 +79.534139530,0,1 +79.634083160,0,0 +80.534073510,0,1 +80.534078630,1,1 +80.534128740,0,1 +80.634072450,0,0 +81.534062800,0,1 +81.534067800,1,1 +81.534117920,0,1 +81.634061740,0,0 +82.534052090,0,1 +82.534057180,1,1 +82.534107840,0,1 +82.634051030,0,0 +83.534041380,0,1 +83.534046450,1,1 +83.534097120,0,1 +83.634040310,0,0 +84.534030670,0,1 +84.534035930,1,1 +84.534086540,0,1 +84.634029590,0,0 +85.534019960,0,1 +85.534025100,1,1 +85.534075710,0,1 +85.634018880,0,0 +86.534009240,0,1 +86.534014520,1,1 +86.534064580,0,1 +86.634008170,0,0 +87.533998530,0,1 +87.534003600,1,1 +87.534053660,0,1 +87.633997450,0,0 +88.533987810,0,1 +88.533993020,1,1 +88.534043070,0,1 +88.633986740,0,0 +89.533977090,0,1 +89.533982310,1,1 +89.534032430,0,1 +89.633976020,0,0 +90.533966370,0,1 +90.533971490,1,1 +90.534021540,0,1 +90.633965300,0,0 +91.533955650,0,1 +91.533960980,1,1 +91.534011710,0,1 +91.633954580,0,0 +92.533944930,0,1 +92.533950010,1,1 +92.534000620,0,1 +92.633943860,0,0 +93.533934210,0,1 +93.533939180,1,1 +93.533989790,0,1 +93.633933130,0,0 +94.533923490,0,1 +94.533928640,1,1 +94.533978890,0,1 +94.633922410,0,0 +95.533912760,0,1 +95.533917880,1,1 +95.533967990,0,1 +95.633911680,0,0 +96.533902030,0,1 +96.533907310,1,1 +96.533957360,0,1 +96.633900960,0,0 +97.533891300,0,1 +97.533896430,1,1 +97.533946610,0,1 +97.633890230,0,0 +98.533880570,0,1 +98.533885530,1,1 +98.533935710,0,1 +98.633879490,0,0 +99.533869840,0,1 +99.533874920,1,1 +99.533925710,0,1 +99.633868780,0,0 +100.533859110,0,1 +100.533864170,1,1 +100.533914770,0,1 +100.633858040,0,0 +101.533848370,0,1 +101.533853700,1,1 +101.533904310,0,1 +101.633847310,0,0 +102.533837640,0,1 +102.533842710,1,1 +102.533893320,0,1 +102.633836580,0,0 +103.533826900,0,1 +103.533832010,1,1 +103.533882250,0,1 +103.633825840,0,0 +104.533816170,0,1 +104.533821250,1,1 +104.533871300,0,1 +104.633815110,0,0 +105.533805430,0,1 +105.533810830,1,1 +105.533861500,0,1 +105.633804370,0,0 +106.533794700,0,1 +106.533799910,1,1 +106.533849960,0,1 +106.633793640,0,0 +107.533783980,0,1 +107.533789100,1,1 +107.533839150,0,1 +107.633782900,0,0 +108.533773240,0,1 +108.533778570,1,1 +108.533829300,0,1 +108.633772160,0,0 +109.533762500,0,1 +109.533767580,1,1 +109.533818250,0,1 +109.633761420,0,0 +110.533751760,0,1 +110.533756950,1,1 +110.533807560,0,1 +110.633750680,0,0 +111.533741020,0,1 +111.533746240,1,1 +111.533796290,0,1 +111.633739960,0,0 +112.533730280,0,1 +112.533735390,1,1 +112.533785450,0,1 +112.633729210,0,0 +113.533719530,0,1 +113.533724700,1,1 +113.533774880,0,1 +113.633718470,0,0 +114.533708790,0,1 +114.533713930,1,1 +114.533763980,0,1 +114.633707720,0,0 +115.533698060,0,1 +115.533703030,1,1 +115.533753210,0,1 +115.633696980,0,0 +116.533687310,0,1 +116.533692460,1,1 +116.533743060,0,1 +116.633686230,0,0 +117.533676560,0,1 +117.533681670,1,1 +117.533732340,0,1 +117.633675480,0,0 +118.533665810,0,1 +118.533671080,1,1 +118.533721690,0,1 +118.633664750,0,0 +119.533655060,0,1 +119.533660590,1,1 +119.533710460,0,1 +119.633653990,0,0 +120.533644300,0,1 +120.533649410,1,1 +120.533699800,0,1 +120.633643240,0,0 +121.533633540,0,1 +121.533638810,1,1 +121.533688840,0,1 +121.633632480,0,0 +122.533622800,0,1 +122.533627880,1,1 +122.533677970,0,1 +122.633621720,0,0 +123.533612040,0,1 +123.533617020,1,1 +123.533667200,0,1 +123.633610960,0,0 +124.533601280,0,1 +124.533606430,1,1 +124.533656500,0,1 +124.633600210,0,0 +125.533590510,0,1 +125.533595630,1,1 +125.533646240,0,1 +125.633589450,0,0 +126.533579750,0,1 +126.533584850,1,1 +126.533635510,0,1 +126.633578680,0,0 +127.533568980,0,1 +127.533574060,1,1 +127.533624790,0,1 +127.633567920,0,0 +128.533558230,0,1 +128.533563210,1,1 +128.533613810,0,1 +128.633557150,0,0 +129.533547460,0,1 +129.533552600,1,1 +129.533602780,0,1 +129.633546380,0,0 +130.533536690,0,1 +130.533541800,1,1 +130.533591860,0,1 +130.633535620,0,0 +131.533525910,0,1 +131.533531010,1,1 +131.533581130,0,1 +131.633524850,0,0 +132.533515140,0,1 +132.533520220,1,1 +132.533570400,0,1 +132.633514070,0,0 +133.533504380,0,1 +133.533509360,1,1 +133.533559410,0,1 +133.633503300,0,0 +134.533493600,0,1 +134.533498750,1,1 +134.533549480,0,1 +134.633492520,0,0 +135.533482820,0,1 +135.533487940,1,1 +135.533538550,0,1 +135.633481760,0,0 +136.533472040,0,1 +136.533477140,1,1 +136.533527810,0,1 +136.633470970,0,0 +137.533461260,0,1 +137.533466330,1,1 +137.533516940,0,1 +137.633460190,0,0 +138.533450490,0,1 +138.533455470,1,1 +138.533506140,0,1 +138.633449410,0,0 +139.533439700,0,1 +139.533444920,1,1 +139.533495100,0,1 +139.633438640,0,0 +140.533428910,0,1 +140.533434040,1,1 +140.533484150,0,1 +140.633427850,0,0 +141.533418120,0,1 +141.533423070,1,1 +141.533473120,0,1 +141.633417060,0,0 +142.533407350,0,1 +142.533412420,1,1 +142.533462480,0,1 +142.633406270,0,0 +143.533396550,0,1 +143.533401610,1,1 +143.533451670,0,1 +143.633395470,0,0 +144.533385760,0,1 +144.533390980,1,1 +144.533441580,0,1 +144.633384690,0,0 +145.533374960,0,1 +145.533380090,1,1 +145.533430820,0,1 +145.633373890,0,0 +146.533364180,0,1 +146.533369130,1,1 +146.533419730,0,1 +146.633363090,0,0 +147.533353370,0,1 +147.533358500,1,1 +147.533409170,0,1 +147.633352300,0,0 +148.533342570,0,1 +148.533347790,1,1 +148.533397960,0,1 +148.633341500,0,0 +149.533331780,0,1 +149.533339090,1,1 +149.533389210,0,1 +149.633330690,0,0 +150.533320970,0,1 +150.533326610,1,1 +150.533377390,0,1 +150.633319900,0,0 +151.533310160,0,1 +151.533315090,1,1 +151.533365480,0,1 +151.633309090,0,0 +152.533299360,0,1 +152.533304440,1,1 +152.533354480,0,1 +152.633298280,0,0 +153.533288550,0,1 +153.533293610,1,1 +153.533343700,0,1 +153.633287480,0,0 +154.533277730,0,1 +154.533282950,1,1 +154.533337160,0,1 +154.633276660,0,0 +155.533266930,0,1 +155.533272050,1,1 +155.533322660,0,1 +155.633265840,0,0 +156.533256110,0,1 +156.533261090,1,1 +156.533311690,0,1 +156.633255040,0,0 +157.533245280,0,1 +157.533250500,1,1 +157.533300680,0,1 +157.633244210,0,0 +158.533234470,0,1 +158.533239600,1,1 +158.533289710,0,1 +158.633233390,0,0 +159.533223650,0,1 +159.533228600,1,1 +159.533279210,0,1 +159.633222580,0,0 +160.533212820,0,1 +160.533217900,1,1 +160.533268080,0,1 +160.633211750,0,0 +161.533202010,0,1 +161.533207070,1,1 +161.533257120,0,1 +161.633200920,0,0 +162.533191170,0,1 +162.533196440,1,1 +162.533247040,0,1 +162.633190100,0,0 +163.533180340,0,1 +163.533185420,1,1 +163.533235470,0,1 +163.633179270,0,0 +164.533169520,0,1 +164.533174920,1,1 +164.533225650,0,1 +164.633168430,0,0 +165.533158680,0,1 +165.533163890,1,1 +165.533214620,0,1 +165.633157610,0,0 +166.533147860,0,1 +166.533153040,1,1 +166.533203640,0,1 +166.633146770,0,0 +167.533137010,0,1 +167.533141970,1,1 +167.533192580,0,1 +167.633135940,0,0 +168.533126170,0,1 +168.533131330,1,1 +168.533181940,0,1 +168.633125100,0,0 +169.533115350,0,1 +169.533120470,1,1 +169.533170520,0,1 +169.633114260,0,0 +170.533104510,0,1 +170.533109450,1,1 +170.533159630,0,1 +170.633103430,0,0 +171.533093660,0,1 +171.533098740,1,1 +171.533148850,0,1 +171.633092590,0,0 +172.533082830,0,1 +172.533087890,1,1 +172.533138070,0,1 +172.633081750,0,0 +173.533071990,0,1 +173.533077260,1,1 +173.533127990,0,1 +173.633070920,0,0 +174.533061140,0,1 +174.533066220,1,1 +174.533116270,0,1 +174.633060070,0,0 +175.533050310,0,1 +175.533055710,1,1 +175.533106380,0,1 +175.633049230,0,0 +176.533039470,0,1 +176.533044680,1,1 +176.533095340,0,1 +176.633038400,0,0 +177.533028620,0,1 +177.533033810,1,1 +177.533084410,0,1 +177.633027550,0,0 +178.533017790,0,1 +178.533022740,1,1 +178.533073350,0,1 +178.633016710,0,0 +179.533006950,0,1 +179.533012100,1,1 +179.533062710,0,1 +179.633005880,0,0 +180.051640320,0,0 diff --git a/data/timebase_180s_quiet_postfix_summary.json b/data/timebase_180s_quiet_postfix_summary.json new file mode 100644 index 0000000..3f3f484 --- /dev/null +++ b/data/timebase_180s_quiet_postfix_summary.json @@ -0,0 +1,26 @@ +{ + "mode": "timebase", + "duration_s": 180.0, + "interference_edges": 0, + "pps": { + "edges": 180, + "period_mean_s": 0.9999892695530725, + "period_sd_ns": 63.578757328066445, + "period_pp_ns": 280.0000238334377, + "analyzer_ppm": -10.73044692745384, + "dropped_pulses": 0, + "wander_sd_ns": 1252.7587939668344, + "wander_pp_ns": 4480.005245000029, + "quantization_ns": 10.0, + "width_mean_ms": 99.99893227777798, + "width_sd_ns": 10.425958916159825 + }, + "timebase": { + "pulses": 180, + "E_c_median_us": 5.12000000174595, + "E_c_mean_us": 5.1613888891632875, + "E_c_sd_us": 0.20606839122361315, + "E_c_min_us": 4.929999988689815, + "E_c_max_us": 7.310000000870787 + } +} \ No newline at end of file diff --git a/data/timebase_180s_under_load_edges.csv b/data/timebase_180s_under_load_edges.csv new file mode 100644 index 0000000..36a74ee --- /dev/null +++ b/data/timebase_180s_under_load_edges.csv @@ -0,0 +1,723 @@ +Time [s],Channel 0,Channel 1 +0.000000000,0,0 +0.184781920,0,1 +0.184854840,1,1 +0.184905220,0,1 +0.284780860,0,0 +1.184771160,0,1 +1.184805640,1,1 +1.184855780,0,1 +1.284770090,0,0 +2.184760380,0,1 +2.184765480,1,1 +2.184816060,0,1 +2.284759320,0,0 +3.184749610,0,1 +3.184757480,1,1 +3.184808270,0,1 +3.284748540,0,0 +4.184738830,0,1 +4.184744160,1,1 +4.184893390,0,1 +4.284737770,0,0 +5.184728050,0,1 +5.184811470,1,1 +5.184861530,0,1 +5.284726980,0,0 +6.184717260,0,1 +6.184814060,1,1 +6.184969300,0,1 +6.284716190,0,0 +7.184706460,0,1 +7.184745920,1,1 +7.184796160,0,1 +7.284705390,0,0 +8.184695650,0,1 +8.184824380,1,1 +8.184874320,0,1 +8.284694580,0,0 +9.184684840,0,1 +9.184734580,1,1 +9.184784840,0,1 +9.284683770,0,0 +10.184674020,0,1 +10.184706200,1,1 +10.184760220,0,1 +10.284672950,0,0 +11.184663200,0,1 +11.184723440,1,1 +11.184773520,0,1 +11.284662130,0,0 +12.184652370,0,1 +12.184746470,1,1 +12.184796800,0,1 +12.284651300,0,0 +13.184641540,0,1 +13.184723400,1,1 +13.184773730,0,1 +13.284640470,0,0 +14.184630700,0,1 +14.184635850,1,1 +14.184686140,0,1 +14.284629630,0,0 +15.184619860,0,1 +15.184625520,1,1 +15.184676040,0,1 +15.284618780,0,0 +16.184609020,0,1 +16.184659600,1,1 +16.184710310,0,1 +16.284607930,0,0 +17.184598170,0,1 +17.184603520,1,1 +17.184653450,0,1 +17.284597080,0,0 +18.184587320,0,1 +18.184592730,1,1 +18.184744370,0,1 +18.284586230,0,0 +19.184576460,0,1 +19.184581850,1,1 +19.184729340,0,1 +19.284575370,0,0 +20.184565600,0,1 +20.184571200,1,1 +20.184621470,0,1 +20.284564510,0,0 +21.184554740,0,1 +21.184560220,1,1 +21.184717090,0,1 +21.284553650,0,0 +22.184543880,0,1 +22.184548950,1,1 +22.184599560,0,1 +22.284542790,0,0 +23.184533000,0,1 +23.184538040,1,1 +23.184588770,0,1 +23.284531930,0,0 +24.184522140,0,1 +24.184527540,1,1 +24.184687630,0,1 +24.284521060,0,0 +25.184511270,0,1 +25.184627450,1,1 +25.184677450,0,1 +25.284510200,0,0 +26.184500410,0,1 +26.184514190,1,1 +26.184564500,0,1 +26.284499330,0,0 +27.184489540,0,1 +27.184494850,1,1 +27.184545680,0,1 +27.284488470,0,0 +28.184478680,0,1 +28.184483760,1,1 +28.184624990,0,1 +28.284477600,0,0 +29.184467810,0,1 +29.184545650,1,1 +29.184697030,0,1 +29.284466740,0,0 +30.184456950,0,1 +30.184577000,1,1 +30.184627420,0,1 +30.284455880,0,0 +31.184446090,0,1 +31.184451370,1,1 +31.184501570,0,1 +31.284445010,0,0 +32.184435220,0,1 +32.184440500,1,1 +32.184491000,0,1 +32.284434150,0,0 +33.184424360,0,1 +33.184447890,1,1 +33.184497870,0,1 +33.284423280,0,0 +34.184413490,0,1 +34.184418870,1,1 +34.184584550,0,1 +34.284412400,0,0 +35.184402630,0,1 +35.184408170,1,1 +35.184458410,0,1 +35.284401540,0,0 +36.184391770,0,1 +36.184399980,1,1 +36.184450690,0,1 +36.284390680,0,0 +37.184380900,0,1 +37.184483270,1,1 +37.184533570,0,1 +37.284379810,0,0 +38.184370040,0,1 +38.184375550,1,1 +38.184425730,0,1 +38.284368950,0,0 +39.184359160,0,1 +39.184480290,1,1 +39.184530340,0,1 +39.284358080,0,0 +40.184348290,0,1 +40.184425110,1,1 +40.184475340,0,1 +40.284347220,0,0 +41.184337430,0,1 +41.184417150,1,1 +41.184467410,0,1 +41.284336360,0,0 +42.184326570,0,1 +42.184423070,1,1 +42.184473750,0,1 +42.284325490,0,0 +43.184315700,0,1 +43.184399190,1,1 +43.184449830,0,1 +43.284314630,0,0 +44.184304840,0,1 +44.184310470,1,1 +44.184361390,0,1 +44.284303760,0,0 +45.184293970,0,1 +45.184407380,1,1 +45.184457510,0,1 +45.284292900,0,0 +46.184283110,0,1 +46.184376190,1,1 +46.184426610,0,1 +46.284282020,0,0 +47.184272250,0,1 +47.184277400,1,1 +47.184432660,0,1 +47.284271160,0,0 +48.184261380,0,1 +48.184267050,1,1 +48.184407540,0,1 +48.284260290,0,0 +49.184250520,0,1 +49.184282210,1,1 +49.184332240,0,1 +49.284249430,0,0 +50.184239650,0,1 +50.184245290,1,1 +50.184295540,0,1 +50.284238570,0,0 +51.184228790,0,1 +51.184285940,1,1 +51.184336970,0,1 +51.284227710,0,0 +52.184217920,0,1 +52.184331880,1,1 +52.184381810,0,1 +52.284216850,0,0 +53.184207060,0,1 +53.184233530,1,1 +53.184284040,0,1 +53.284205990,0,0 +54.184196200,0,1 +54.184225460,1,1 +54.184275400,0,1 +54.284195130,0,0 +55.184185340,0,1 +55.184191370,1,1 +55.184241720,0,1 +55.284184270,0,0 +56.184174480,0,1 +56.184292380,1,1 +56.184342570,0,1 +56.284173390,0,0 +57.184163620,0,1 +57.184269950,1,1 +57.184320040,0,1 +57.284162530,0,0 +58.184152760,0,1 +58.184180230,1,1 +58.184230480,0,1 +58.284151670,0,0 +59.184141900,0,1 +59.184146980,1,1 +59.184244350,0,1 +59.284140810,0,0 +60.184131030,0,1 +60.184203930,1,1 +60.184254800,0,1 +60.284129950,0,0 +61.184120170,0,1 +61.184219840,1,1 +61.184269890,0,1 +61.284119090,0,0 +62.184109310,0,1 +62.184177920,1,1 +62.184227840,0,1 +62.284108230,0,0 +63.184098450,0,1 +63.184171870,1,1 +63.184222350,0,1 +63.284097370,0,0 +64.184087590,0,1 +64.184141970,1,1 +64.184192410,0,1 +64.284086520,0,0 +65.184076730,0,1 +65.184081890,1,1 +65.184205220,0,1 +65.284075660,0,0 +66.184065880,0,1 +66.184166410,1,1 +66.184217080,0,1 +66.284064790,0,0 +67.184055020,0,1 +67.184060240,1,1 +67.184110250,0,1 +67.284053930,0,0 +68.184044160,0,1 +68.184172530,1,1 +68.184315060,0,1 +68.284043070,0,0 +69.184033290,0,1 +69.184038620,1,1 +69.184161310,0,1 +69.284032210,0,0 +70.184022430,0,1 +70.184062200,1,1 +70.184112770,0,1 +70.284021360,0,0 +71.184011570,0,1 +71.184016610,1,1 +71.184153140,0,1 +71.284010500,0,0 +72.184000710,0,1 +72.184005890,1,1 +72.184153730,0,1 +72.283999640,0,0 +73.183989850,0,1 +73.183995110,1,1 +73.184045390,0,1 +73.283988760,0,0 +74.183978990,0,1 +74.184032540,1,1 +74.184082710,0,1 +74.283977900,0,0 +75.183968130,0,1 +75.183974140,1,1 +75.184024030,0,1 +75.283967040,0,0 +76.183957260,0,1 +76.184003020,1,1 +76.184053340,0,1 +76.283956170,0,0 +77.183946400,0,1 +77.183952550,1,1 +77.184115550,0,1 +77.283945310,0,0 +78.183935510,0,1 +78.183940910,1,1 +78.184093610,0,1 +78.283934440,0,0 +79.183924650,0,1 +79.183929730,1,1 +79.183979780,0,1 +79.283923570,0,0 +80.183913780,0,1 +80.183919360,1,1 +80.183969140,0,1 +80.283912700,0,0 +81.183902900,0,1 +81.184017440,1,1 +81.184067430,0,1 +81.283901830,0,0 +82.183892030,0,1 +82.184005400,1,1 +82.184056110,0,1 +82.283890960,0,0 +83.183881160,0,1 +83.183886580,1,1 +83.183936970,0,1 +83.283880080,0,0 +84.183870280,0,1 +84.183943590,1,1 +84.183994150,0,1 +84.283869190,0,0 +85.183859400,0,1 +85.183961240,1,1 +85.184011720,0,1 +85.283858310,0,0 +86.183848520,0,1 +86.183940310,1,1 +86.183990940,0,1 +86.283847430,0,0 +87.183837640,0,1 +87.183946830,1,1 +87.183997000,0,1 +87.283836550,0,0 +88.183826750,0,1 +88.183872780,1,1 +88.183923160,0,1 +88.283825660,0,0 +89.183815870,0,1 +89.183894880,1,1 +89.183945460,0,1 +89.283814770,0,0 +90.183804980,0,1 +90.183836990,1,1 +90.183887640,0,1 +90.283803890,0,0 +91.183794090,0,1 +91.183799470,1,1 +91.183849990,0,1 +91.283793000,0,0 +92.183783180,0,1 +92.183788300,1,1 +92.183838170,0,1 +92.283782100,0,0 +93.183772290,0,1 +93.183779520,1,1 +93.183829870,0,1 +93.283771210,0,0 +94.183761390,0,1 +94.183766840,1,1 +94.183884940,0,1 +94.283760310,0,0 +95.183750490,0,1 +95.183846740,1,1 +95.183896920,0,1 +95.283749420,0,0 +96.183739600,0,1 +96.183744570,1,1 +96.183894260,0,1 +96.283738520,0,0 +97.183728690,0,1 +97.183854570,1,1 +97.183904940,0,1 +97.283727620,0,0 +98.183717790,0,1 +98.183751430,1,1 +98.183801810,0,1 +98.283716720,0,0 +99.183706890,0,1 +99.183739530,1,1 +99.183790560,0,1 +99.283705810,0,0 +100.183695980,0,1 +100.183726910,1,1 +100.183780990,0,1 +100.283694910,0,0 +101.183685080,0,1 +101.183748730,1,1 +101.183799020,0,1 +101.283684000,0,0 +102.183674170,0,1 +102.183700070,1,1 +102.183749960,0,1 +102.283673090,0,0 +103.183663260,0,1 +103.183668970,1,1 +103.183838990,0,1 +103.283662180,0,0 +104.183652350,0,1 +104.183657630,1,1 +104.183708450,0,1 +104.283651270,0,0 +105.183641430,0,1 +105.183654760,1,1 +105.183761680,0,1 +105.283640350,0,0 +106.183630520,0,1 +106.183684570,1,1 +106.183735280,0,1 +106.283629440,0,0 +107.183619600,0,1 +107.183624760,1,1 +107.183675420,0,1 +107.283618520,0,0 +108.183608680,0,1 +108.183648720,1,1 +108.183698610,0,1 +108.283607600,0,0 +109.183597760,0,1 +109.183717070,1,1 +109.183767690,0,1 +109.283596680,0,0 +110.183586840,0,1 +110.183607300,1,1 +110.183658130,0,1 +110.283585760,0,0 +111.183575920,0,1 +111.183580950,1,1 +111.183631550,0,1 +111.283574840,0,0 +112.183564990,0,1 +112.183570560,1,1 +112.183620910,0,1 +112.283563890,0,0 +113.183554070,0,1 +113.183593780,1,1 +113.183643840,0,1 +113.283552970,0,0 +114.183543140,0,1 +114.183548380,1,1 +114.183685460,0,1 +114.283542040,0,0 +115.183532210,0,1 +115.183654840,1,1 +115.183705360,0,1 +115.283531110,0,0 +116.183521280,0,1 +116.183543550,1,1 +116.183593990,0,1 +116.283520180,0,0 +117.183510350,0,1 +117.183595490,1,1 +117.183646240,0,1 +117.283509270,0,0 +118.183499420,0,1 +118.183586810,1,1 +118.183637230,0,1 +118.283498330,0,0 +119.183488480,0,1 +119.183494010,1,1 +119.183544510,0,1 +119.283487400,0,0 +120.183477550,0,1 +120.183482610,1,1 +120.183604420,0,1 +120.283476450,0,0 +121.183466610,0,1 +121.183471830,1,1 +121.183614670,0,1 +121.283465510,0,0 +122.183455670,0,1 +122.183460880,1,1 +122.183511510,0,1 +122.283454580,0,0 +123.183444730,0,1 +123.183449670,1,1 +123.183499400,0,1 +123.283443640,0,0 +124.183433790,0,1 +124.183438820,1,1 +124.183554540,0,1 +124.283432690,0,0 +125.183422850,0,1 +125.183522250,1,1 +125.183573150,0,1 +125.283421750,0,0 +126.183411900,0,1 +126.183417520,1,1 +126.183580580,0,1 +126.283410800,0,0 +127.183400960,0,1 +127.183406440,1,1 +127.183456730,0,1 +127.283399870,0,0 +128.183390010,0,1 +128.183395780,1,1 +128.183528460,0,1 +128.283388930,0,0 +129.183379060,0,1 +129.183384590,1,1 +129.183435060,0,1 +129.283377980,0,0 +130.183368120,0,1 +130.183373460,1,1 +130.183423570,0,1 +130.283367030,0,0 +131.183357170,0,1 +131.183362700,1,1 +131.183412540,0,1 +131.283356090,0,0 +132.183346220,0,1 +132.183351910,1,1 +132.183402020,0,1 +132.283345130,0,0 +133.183335280,0,1 +133.183436990,1,1 +133.183486980,0,1 +133.283334180,0,0 +134.183324330,0,1 +134.183371240,1,1 +134.183421510,0,1 +134.283323230,0,0 +135.183313380,0,1 +135.183321260,1,1 +135.183371840,0,1 +135.283312280,0,0 +136.183302430,0,1 +136.183308030,1,1 +136.183358160,0,1 +136.283301330,0,0 +137.183291480,0,1 +137.183297130,1,1 +137.183430590,0,1 +137.283290380,0,0 +138.183280530,0,1 +138.183385720,1,1 +138.183435750,0,1 +138.283279430,0,0 +139.183269570,0,1 +139.183274630,1,1 +139.183324990,0,1 +139.283268480,0,0 +140.183258620,0,1 +140.183344600,1,1 +140.183395270,0,1 +140.283257520,0,0 +141.183247670,0,1 +141.183437160,1,1 +141.183487650,0,1 +141.283246570,0,0 +142.183236710,0,1 +142.183286890,1,1 +142.183454570,0,1 +142.283235630,0,0 +143.183225760,0,1 +143.183231360,1,1 +143.183394420,0,1 +143.283224680,0,0 +144.183214810,0,1 +144.183220460,1,1 +144.183362410,0,1 +144.283213730,0,0 +145.183203860,0,1 +145.183208890,1,1 +145.183259490,0,1 +145.283202780,0,0 +146.183192920,0,1 +146.183198400,1,1 +146.183248550,0,1 +146.283191830,0,0 +147.183181970,0,1 +147.183219360,1,1 +147.183270220,0,1 +147.283180890,0,0 +148.183171030,0,1 +148.183176640,1,1 +148.183227280,0,1 +148.283169950,0,0 +149.183160080,0,1 +149.183165490,1,1 +149.183215950,0,1 +149.283159000,0,0 +150.183149140,0,1 +150.183216730,1,1 +150.183267160,0,1 +150.283148060,0,0 +151.183138200,0,1 +151.183143930,1,1 +151.183274010,0,1 +151.283137120,0,0 +152.183127260,0,1 +152.183132330,1,1 +152.183257290,0,1 +152.283126180,0,0 +153.183116330,0,1 +153.183122020,1,1 +153.183175530,0,1 +153.283115240,0,0 +154.183105390,0,1 +154.183173980,1,1 +154.183224180,0,1 +154.283104310,0,0 +155.183094450,0,1 +155.183207670,1,1 +155.183258230,0,1 +155.283093370,0,0 +156.183083510,0,1 +156.183134690,1,1 +156.183185010,0,1 +156.283082430,0,0 +157.183072580,0,1 +157.183077640,1,1 +157.183128100,0,1 +157.283071500,0,0 +158.183061640,0,1 +158.183067240,1,1 +158.183117510,0,1 +158.283060560,0,0 +159.183050710,0,1 +159.183056920,1,1 +159.183221480,0,1 +159.283049620,0,0 +160.183039770,0,1 +160.183128360,1,1 +160.183178980,0,1 +160.283038690,0,0 +161.183028840,0,1 +161.183122300,1,1 +161.183171990,0,1 +161.283027760,0,0 +162.183017900,0,1 +162.183134480,1,1 +162.183184270,0,1 +162.283016820,0,0 +163.183006970,0,1 +163.183047440,1,1 +163.183097620,0,1 +163.283005890,0,0 +164.182996040,0,1 +164.183105900,1,1 +164.183250230,0,1 +164.282994960,0,0 +165.182985110,0,1 +165.182990810,1,1 +165.183111190,0,1 +165.282984030,0,0 +166.182974180,0,1 +166.183062260,1,1 +166.183112490,0,1 +166.282973100,0,0 +167.182963250,0,1 +167.183085100,1,1 +167.183134950,0,1 +167.282962170,0,0 +168.182952320,0,1 +168.182983720,1,1 +168.183034240,0,1 +168.282951240,0,0 +169.182941390,0,1 +169.182947160,1,1 +169.183113920,0,1 +169.282940310,0,0 +170.182930470,0,1 +170.183026490,1,1 +170.183077110,0,1 +170.282929380,0,0 +171.182919540,0,1 +171.182924700,1,1 +171.182974940,0,1 +171.282918450,0,0 +172.182908610,0,1 +172.183006170,1,1 +172.183056430,0,1 +172.282907530,0,0 +173.182897680,0,1 +173.182996240,1,1 +173.183046610,0,1 +173.282896580,0,0 +174.182886750,0,1 +174.182892190,1,1 +174.183020670,0,1 +174.282885650,0,0 +175.182875820,0,1 +175.182941830,1,1 +175.182992490,0,1 +175.282874720,0,0 +176.182864890,0,1 +176.183018430,1,1 +176.183166110,0,1 +176.282863790,0,0 +177.182853960,0,1 +177.182859640,1,1 +177.182988190,0,1 +177.282852860,0,0 +178.182843030,0,1 +178.182848190,1,1 +178.182898240,0,1 +178.282841930,0,0 +179.182832100,0,1 +179.182837170,1,1 +179.182887780,0,1 +179.282831000,0,0 +180.051640320,0,0 diff --git a/data/timebase_180s_under_load_summary.json b/data/timebase_180s_under_load_summary.json new file mode 100644 index 0000000..aa6c843 --- /dev/null +++ b/data/timebase_180s_under_load_summary.json @@ -0,0 +1,19 @@ +{ + "duration_s": 180.0, + "ntp_queries": 838510, + "req_per_s": 4711, + "ntp_rtt_median_ms": 1.259, + "ntp_rtt_p99_ms": 1.406, + "ntp_failures": 0, + "pps_edges": 180, + "pulses": 180, + "E_c_median_us": 22.9, + "E_c_mean_us": 42.537, + "E_c_sd_us": 43.74, + "E_c_min_us": 4.94, + "E_c_max_us": 189.49, + "quiet_baseline": { + "E_c_median_us": 5.07, + "E_c_sd_us": 0.246 + } +} \ No newline at end of file diff --git a/data/timebase_600s_edges.csv b/data/timebase_600s_edges.csv new file mode 100644 index 0000000..101a896 --- /dev/null +++ b/data/timebase_600s_edges.csv @@ -0,0 +1,2403 @@ +Time [s],Channel 0,Channel 1 +0.000000000,0,0 +0.553344400,0,1 +0.553349310,1,1 +0.553399360,0,1 +0.653343390,0,0 +1.553334180,0,1 +1.553339140,1,1 +1.553389250,0,1 +1.653333160,0,0 +2.553323970,0,1 +2.553328860,1,1 +2.553379460,0,1 +2.653322960,0,0 +3.553313740,0,1 +3.553318800,1,1 +3.553368910,0,1 +3.653312730,0,0 +4.553303530,0,1 +4.553308690,1,1 +4.553358810,0,1 +4.653302520,0,0 +5.553293300,0,1 +5.553298460,1,1 +5.553348520,0,1 +5.653292280,0,0 +6.553283070,0,1 +6.553288240,1,1 +6.553338840,0,1 +6.653282060,0,0 +7.553272820,0,1 +7.553277930,1,1 +7.553328530,0,1 +7.653271810,0,0 +8.553262590,0,1 +8.553267670,1,1 +8.553318390,0,1 +8.653261550,0,0 +9.553252330,0,1 +9.553257870,1,1 +9.553307930,0,1 +9.653251310,0,0 +10.553242070,0,1 +10.553247100,1,1 +10.553297830,0,1 +10.653241040,0,0 +11.553231800,0,1 +11.553236830,1,1 +11.553286880,0,1 +11.653230790,0,0 +12.553221540,0,1 +12.553226620,1,1 +12.553276730,0,1 +12.653220510,0,0 +13.553211260,0,1 +13.553216340,1,1 +13.553266390,0,1 +13.653210240,0,0 +14.553200980,0,1 +14.553206000,1,1 +14.553256120,0,1 +14.653199950,0,0 +15.553190690,0,1 +15.553195700,1,1 +15.553245750,0,1 +15.653189670,0,0 +16.553180400,0,1 +16.553185750,1,1 +16.553235380,0,1 +16.653179370,0,0 +17.553170100,0,1 +17.553175440,1,1 +17.553225560,0,1 +17.653169080,0,0 +18.553159810,0,1 +18.553164950,1,1 +18.553215130,0,1 +18.653158770,0,0 +19.553149490,0,1 +19.553154550,1,1 +19.553205150,0,1 +19.653148470,0,0 +20.553139190,0,1 +20.553144420,1,1 +20.553194600,0,1 +20.653138150,0,0 +21.553128870,0,1 +21.553134090,1,1 +21.553184210,0,1 +21.653127850,0,0 +22.553118560,0,1 +22.553123780,1,1 +22.553173960,0,1 +22.653117520,0,0 +23.553108230,0,1 +23.553113450,1,1 +23.553164060,0,1 +23.653107210,0,0 +24.553097910,0,1 +24.553103580,1,1 +24.553153950,0,1 +24.653096870,0,0 +25.553087580,0,1 +25.553092920,1,1 +25.553143640,0,1 +25.653086550,0,0 +26.553077250,0,1 +26.553082150,1,1 +26.553132230,0,1 +26.653076210,0,0 +27.553066910,0,1 +27.553071860,1,1 +27.553122120,0,1 +27.653065880,0,0 +28.553056580,0,1 +28.553061630,1,1 +28.553111850,0,1 +28.653055540,0,0 +29.553046230,0,1 +29.553051280,1,1 +29.553101180,0,1 +29.653045200,0,0 +30.553035890,0,1 +30.553041100,1,1 +30.553091160,0,1 +30.653034850,0,0 +31.553025540,0,1 +31.553030700,1,1 +31.553080880,0,1 +31.653024510,0,0 +32.553015200,0,1 +32.553020290,1,1 +32.553070350,0,1 +32.653014160,0,0 +33.553004840,0,1 +33.553009940,1,1 +33.553060120,0,1 +33.653003810,0,0 +34.552994490,0,1 +34.552999520,1,1 +34.553050190,0,1 +34.652993450,0,0 +35.552984130,0,1 +35.552989160,1,1 +35.553039760,0,1 +35.652983110,0,0 +36.552973770,0,1 +36.552978790,1,1 +36.553029520,0,1 +36.652972740,0,0 +37.552963420,0,1 +37.552969050,1,1 +37.553019100,0,1 +37.652962400,0,0 +38.552953060,0,1 +38.552958160,1,1 +38.553008760,0,1 +38.652952040,0,0 +39.552942710,0,1 +39.552947790,1,1 +39.552998390,0,1 +39.652941670,0,0 +40.552932350,0,1 +40.552937420,1,1 +40.552987050,0,1 +40.652931320,0,0 +41.552921990,0,1 +41.552927050,1,1 +41.552977170,0,1 +41.652920960,0,0 +42.552911640,0,1 +42.552916650,1,1 +42.552966700,0,1 +42.652910600,0,0 +43.552901280,0,1 +43.552906360,1,1 +43.552956410,0,1 +43.652900250,0,0 +44.552890910,0,1 +44.552895930,1,1 +44.552945980,0,1 +44.652889890,0,0 +45.552880570,0,1 +45.552885910,1,1 +45.552935960,0,1 +45.652879530,0,0 +46.552870200,0,1 +46.552875540,1,1 +46.552925720,0,1 +46.652869180,0,0 +47.552859840,0,1 +47.552864800,1,1 +47.552915410,0,1 +47.652858810,0,0 +48.552849490,0,1 +48.552854380,1,1 +48.552905110,0,1 +48.652848450,0,0 +49.552839120,0,1 +49.552844010,1,1 +49.552894680,0,1 +49.652838090,0,0 +50.552828750,0,1 +50.552833640,1,1 +50.552883690,0,1 +50.652827730,0,0 +51.552818400,0,1 +51.552823450,1,1 +51.552874050,0,1 +51.652817360,0,0 +52.552808030,0,1 +52.552813100,1,1 +52.552863770,0,1 +52.652807000,0,0 +53.552797660,0,1 +53.552803780,1,1 +53.552853830,0,1 +53.652796640,0,0 +54.552787290,0,1 +54.552792840,1,1 +54.552843430,0,1 +54.652786270,0,0 +55.552776940,0,1 +55.552782010,1,1 +55.552832050,0,1 +55.652775900,0,0 +56.552766570,0,1 +56.552771630,1,1 +56.552822110,0,1 +56.652765540,0,0 +57.552756200,0,1 +57.552761260,1,1 +57.552811820,0,1 +57.652755170,0,0 +58.552745820,0,1 +58.552750890,1,1 +58.552805240,0,1 +58.652744800,0,0 +59.552735460,0,1 +59.552740480,1,1 +59.552791150,0,1 +59.652734420,0,0 +60.552725090,0,1 +60.552730240,1,1 +60.552780360,0,1 +60.652724060,0,0 +61.552714710,0,1 +61.552719920,1,1 +61.552770520,0,1 +61.652713680,0,0 +62.552704340,0,1 +62.552709470,1,1 +62.552760070,0,1 +62.652703310,0,0 +63.552693970,0,1 +63.552698900,1,1 +63.552749570,0,1 +63.652692930,0,0 +64.552683600,0,1 +64.552688510,1,1 +64.552738620,0,1 +64.652682570,0,0 +65.552673220,0,1 +65.552678450,1,1 +65.552729180,0,1 +65.652672190,0,0 +66.552662840,0,1 +66.552668070,1,1 +66.552718730,0,1 +66.652661820,0,0 +67.552652480,0,1 +67.552657700,1,1 +67.552708490,0,1 +67.652651440,0,0 +68.552642100,0,1 +68.552647320,1,1 +68.552697440,0,1 +68.652641080,0,0 +69.552631720,0,1 +69.552636940,1,1 +69.552686990,0,1 +69.652630700,0,0 +70.552621350,0,1 +70.552626450,1,1 +70.552676510,0,1 +70.652620320,0,0 +71.552610960,0,1 +71.552616070,1,1 +71.552666250,0,1 +71.652609940,0,0 +72.552600600,0,1 +72.552605680,1,1 +72.552655800,0,1 +72.652599560,0,0 +73.552590220,0,1 +73.552595290,1,1 +73.552645890,0,1 +73.652589190,0,0 +74.552579830,0,1 +74.552584860,1,1 +74.552635590,0,1 +74.652578800,0,0 +75.552569450,0,1 +75.552574540,1,1 +75.552625150,0,1 +75.652568420,0,0 +76.552559080,0,1 +76.552564710,1,1 +76.552614830,0,1 +76.652558040,0,0 +77.552548700,0,1 +77.552553790,1,1 +77.552604520,0,1 +77.652547650,0,0 +78.552538310,0,1 +78.552543390,1,1 +78.552594120,0,1 +78.652537290,0,0 +79.552527930,0,1 +79.552533010,1,1 +79.552583060,0,1 +79.652526900,0,0 +80.552517550,0,1 +80.552522570,1,1 +80.552572620,0,1 +80.652516520,0,0 +81.552507160,0,1 +81.552512170,1,1 +81.552562350,0,1 +81.652506140,0,0 +82.552496800,0,1 +82.552501800,1,1 +82.552551860,0,1 +82.652495750,0,0 +83.552486410,0,1 +83.552491760,1,1 +83.552541940,0,1 +83.652485370,0,0 +84.552476020,0,1 +84.552481360,1,1 +84.552531480,0,1 +84.652475000,0,0 +85.552465640,0,1 +85.552470540,1,1 +85.552521270,0,1 +85.652464610,0,0 +86.552455240,0,1 +86.552460350,1,1 +86.552510960,0,1 +86.652454220,0,0 +87.552444850,0,1 +87.552449740,1,1 +87.552500340,0,1 +87.652443820,0,0 +88.552434460,0,1 +88.552439510,1,1 +88.552490180,0,1 +88.652433430,0,0 +89.552424080,0,1 +89.552429300,1,1 +89.552479910,0,1 +89.652423030,0,0 +90.552413680,0,1 +90.552418840,1,1 +90.552469450,0,1 +90.652412640,0,0 +91.552403280,0,1 +91.552408450,1,1 +91.552459110,0,1 +91.652402250,0,0 +92.552392880,0,1 +92.552398040,1,1 +92.552448650,0,1 +92.652391850,0,0 +93.552382480,0,1 +93.552387580,1,1 +93.552437760,0,1 +93.652381450,0,0 +94.552372070,0,1 +94.552377170,1,1 +94.552427230,0,1 +94.652371040,0,0 +95.552361680,0,1 +95.552366700,1,1 +95.552416760,0,1 +95.652360630,0,0 +96.552351270,0,1 +96.552356290,1,1 +96.552406410,0,1 +96.652350220,0,0 +97.552340860,0,1 +97.552345880,1,1 +97.552395930,0,1 +97.652339830,0,0 +98.552330440,0,1 +98.552335540,1,1 +98.552385590,0,1 +98.652329410,0,0 +99.552320030,0,1 +99.552325110,1,1 +99.552375290,0,1 +99.652318990,0,0 +100.552309610,0,1 +100.552314670,1,1 +100.552365340,0,1 +100.652308570,0,0 +101.552299200,0,1 +101.552304210,1,1 +101.552354940,0,1 +101.652298150,0,0 +102.552288780,0,1 +102.552294120,1,1 +102.552344240,0,1 +102.652287740,0,0 +103.552278350,0,1 +103.552283690,1,1 +103.552334290,0,1 +103.652277320,0,0 +104.552267920,0,1 +104.552273070,1,1 +104.552323730,0,1 +104.652266890,0,0 +105.552257510,0,1 +105.552262430,1,1 +105.552312490,0,1 +105.652256460,0,0 +106.552247070,0,1 +106.552252300,1,1 +106.552302960,0,1 +106.652246040,0,0 +107.552236630,0,1 +107.552241860,1,1 +107.552292460,0,1 +107.652235600,0,0 +108.552226190,0,1 +108.552231410,1,1 +108.552281530,0,1 +108.652225160,0,0 +109.552215770,0,1 +109.552220930,1,1 +109.552271110,0,1 +109.652214720,0,0 +110.552205320,0,1 +110.552210490,1,1 +110.552260540,0,1 +110.652204290,0,0 +111.552194870,0,1 +111.552199900,1,1 +111.552250010,0,1 +111.652193840,0,0 +112.552184420,0,1 +112.552189450,1,1 +112.552239690,0,1 +112.652183390,0,0 +113.552173980,0,1 +113.552179020,1,1 +113.552229620,0,1 +113.652172930,0,0 +114.552163530,0,1 +114.552169060,1,1 +114.552219290,0,1 +114.652162490,0,0 +115.552153070,0,1 +115.552158320,1,1 +115.552208740,0,1 +115.652152030,0,0 +116.552142600,0,1 +116.552147820,1,1 +116.552198300,0,1 +116.652141570,0,0 +117.552132160,0,1 +117.552137370,1,1 +117.552188060,0,1 +117.652131100,0,0 +118.552121690,0,1 +118.552126790,1,1 +118.552177520,0,1 +118.652120650,0,0 +119.552111220,0,1 +119.552116290,1,1 +119.552169710,0,1 +119.652110180,0,0 +120.552100760,0,1 +120.552105790,1,1 +120.552155420,0,1 +120.652099710,0,0 +121.552090290,0,1 +121.552095320,1,1 +121.552145370,0,1 +121.652089250,0,0 +122.552079810,0,1 +122.552084840,1,1 +122.552135020,0,1 +122.652078770,0,0 +123.552069350,0,1 +123.552074410,1,1 +123.552124460,0,1 +123.652068290,0,0 +124.552058860,0,1 +124.552064000,1,1 +124.552114050,0,1 +124.652057830,0,0 +125.552048380,0,1 +125.552053450,1,1 +125.552103500,0,1 +125.652047340,0,0 +126.552037910,0,1 +126.552042920,1,1 +126.552092970,0,1 +126.652036850,0,0 +127.552027420,0,1 +127.552032430,1,1 +127.552082610,0,1 +127.652026380,0,0 +128.552016930,0,1 +128.552021860,1,1 +128.552072590,0,1 +128.652015890,0,0 +129.552006430,0,1 +129.552011340,1,1 +129.552062070,0,1 +129.652005390,0,0 +130.551995950,0,1 +130.552000840,1,1 +130.552051450,0,1 +130.651994910,0,0 +131.551985460,0,1 +131.551990510,1,1 +131.552041170,0,1 +131.651984420,0,0 +132.551974960,0,1 +132.551980070,1,1 +132.552030800,0,1 +132.651973920,0,0 +133.551964470,0,1 +133.551969640,1,1 +133.552020370,0,1 +133.651963410,0,0 +134.551953970,0,1 +134.551959130,1,1 +134.552009730,0,1 +134.651952930,0,0 +135.551943460,0,1 +135.551948570,1,1 +135.551999300,0,1 +135.651942420,0,0 +136.551932970,0,1 +136.551938000,1,1 +136.551988110,0,1 +136.651931910,0,0 +137.551922460,0,1 +137.551927500,1,1 +137.551977680,0,1 +137.651921420,0,0 +138.551911950,0,1 +138.551917000,1,1 +138.551967050,0,1 +138.651910910,0,0 +139.551901460,0,1 +139.551906600,1,1 +139.551956660,0,1 +139.651900400,0,0 +140.551890950,0,1 +140.551896010,1,1 +140.551946070,0,1 +140.651889910,0,0 +141.551880440,0,1 +141.551885500,1,1 +141.551935680,0,1 +141.651879390,0,0 +142.551869940,0,1 +142.551875040,1,1 +142.551925090,0,1 +142.651868880,0,0 +143.551859420,0,1 +143.551864520,1,1 +143.551914700,0,1 +143.651858360,0,0 +144.551848900,0,1 +144.551854120,1,1 +144.551904650,0,1 +144.651847860,0,0 +145.551838390,0,1 +145.551843550,1,1 +145.551894070,0,1 +145.651837350,0,0 +146.551827870,0,1 +146.551833030,1,1 +146.551883660,0,1 +146.651826830,0,0 +147.551817360,0,1 +147.551822390,1,1 +147.551873110,0,1 +147.651816310,0,0 +148.551806840,0,1 +148.551811870,1,1 +148.551862920,0,1 +148.651805800,0,0 +149.551796320,0,1 +149.551801340,1,1 +149.551850970,0,1 +149.651795280,0,0 +150.551785800,0,1 +150.551790830,1,1 +150.551840890,0,1 +150.651784760,0,0 +151.551775280,0,1 +151.551780310,1,1 +151.551830430,0,1 +151.651774240,0,0 +152.551764770,0,1 +152.551769830,1,1 +152.551819890,0,1 +152.651763710,0,0 +153.551754250,0,1 +153.551759320,1,1 +153.551809370,0,1 +153.651753190,0,0 +154.551743720,0,1 +154.551748740,1,1 +154.551798920,0,1 +154.651742680,0,0 +155.551733190,0,1 +155.551738210,1,1 +155.551788270,0,1 +155.651732150,0,0 +156.551722670,0,1 +156.551728020,1,1 +156.551778080,0,1 +156.651721620,0,0 +157.551712140,0,1 +157.551717040,1,1 +157.551767710,0,1 +157.651711100,0,0 +158.551701610,0,1 +158.551706520,1,1 +158.551757120,0,1 +158.651700570,0,0 +159.551691110,0,1 +159.551696220,1,1 +159.551746820,0,1 +159.651690050,0,0 +160.551680580,0,1 +160.551685630,1,1 +160.551736360,0,1 +160.651679520,0,0 +161.551670050,0,1 +161.551675280,1,1 +161.551726010,0,1 +161.651669000,0,0 +162.551659530,0,1 +162.551664690,1,1 +162.551715360,0,1 +162.651658490,0,0 +163.551649000,0,1 +163.551654170,1,1 +163.551704770,0,1 +163.651647960,0,0 +164.551638480,0,1 +164.551643640,1,1 +164.551694310,0,1 +164.651637440,0,0 +165.551627950,0,1 +165.551633050,1,1 +165.551683100,0,1 +165.651626910,0,0 +166.551617430,0,1 +166.551622530,1,1 +166.551672700,0,1 +166.651616390,0,0 +167.551606900,0,1 +167.551611920,1,1 +167.551662100,0,1 +167.651605860,0,0 +168.551596380,0,1 +168.551601400,1,1 +168.551651450,0,1 +168.651595330,0,0 +169.551585850,0,1 +169.551590890,1,1 +169.551641000,0,1 +169.651584810,0,0 +170.551575340,0,1 +170.551580420,1,1 +170.551630600,0,1 +170.651574290,0,0 +171.551564820,0,1 +171.551569900,1,1 +171.551620500,0,1 +171.651563760,0,0 +172.551554300,0,1 +172.551559310,1,1 +172.551609920,0,1 +172.651553240,0,0 +173.551543770,0,1 +173.551548790,1,1 +173.551599450,0,1 +173.651542720,0,0 +174.551533250,0,1 +174.551538790,1,1 +174.551588910,0,1 +174.651532200,0,0 +175.551522730,0,1 +175.551528080,1,1 +175.551578260,0,1 +175.651521670,0,0 +176.551512210,0,1 +176.551517360,1,1 +176.551567970,0,1 +176.651511150,0,0 +177.551501690,0,1 +177.551506580,1,1 +177.551556760,0,1 +177.651500630,0,0 +178.551491170,0,1 +178.551496220,1,1 +178.551546270,0,1 +178.651490110,0,0 +179.551480650,0,1 +179.551485880,1,1 +179.551536610,0,1 +179.651479590,0,0 +180.551470130,0,1 +180.551475340,1,1 +180.551525460,0,1 +180.651469070,0,0 +181.551459610,0,1 +181.551464820,1,1 +181.551514870,0,1 +181.651458550,0,0 +182.551449090,0,1 +182.551454200,1,1 +182.551504310,0,1 +182.651448030,0,0 +183.551438570,0,1 +183.551443670,1,1 +183.551493720,0,1 +183.651437510,0,0 +184.551428050,0,1 +184.551433080,1,1 +184.551483260,0,1 +184.651426990,0,0 +185.551417530,0,1 +185.551422550,1,1 +185.551473160,0,1 +185.651416470,0,0 +186.551406990,0,1 +186.551412010,1,1 +186.551462620,0,1 +186.651405950,0,0 +187.551396470,0,1 +187.551401510,1,1 +187.551452110,0,1 +187.651395430,0,0 +188.551385950,0,1 +188.551391090,1,1 +188.551441690,0,1 +188.651384900,0,0 +189.551375420,0,1 +189.551381010,1,1 +189.551431190,0,1 +189.651374380,0,0 +190.551364900,0,1 +190.551369960,1,1 +190.551420630,0,1 +190.651363860,0,0 +191.551354380,0,1 +191.551359390,1,1 +191.551409020,0,1 +191.651353330,0,0 +192.551343850,0,1 +192.551348870,1,1 +192.551398930,0,1 +192.651342810,0,0 +193.551333330,0,1 +193.551338250,1,1 +193.551388310,0,1 +193.651332290,0,0 +194.551322800,0,1 +194.551327700,1,1 +194.551377760,0,1 +194.651321760,0,0 +195.551312270,0,1 +195.551317170,1,1 +195.551367280,0,1 +195.651311230,0,0 +196.551301750,0,1 +196.551306800,1,1 +196.551356920,0,1 +196.651300700,0,0 +197.551291220,0,1 +197.551296440,1,1 +197.551346550,0,1 +197.651290170,0,0 +198.551280690,0,1 +198.551285850,1,1 +198.551335900,0,1 +198.651279640,0,0 +199.551270160,0,1 +199.551275260,1,1 +199.551325370,0,1 +199.651269120,0,0 +200.551259630,0,1 +200.551264700,1,1 +200.551315310,0,1 +200.651258590,0,0 +201.551249100,0,1 +201.551254130,1,1 +201.551304790,0,1 +201.651248060,0,0 +202.551238570,0,1 +202.551243590,1,1 +202.551294320,0,1 +202.651237530,0,0 +203.551228040,0,1 +203.551233120,1,1 +203.551283720,0,1 +203.651227000,0,0 +204.551217510,0,1 +204.551222620,1,1 +204.551273290,0,1 +204.651216460,0,0 +205.551206970,0,1 +205.551212660,1,1 +205.551262770,0,1 +205.651205930,0,0 +206.551196440,0,1 +206.551201540,1,1 +206.551252200,0,1 +206.651195380,0,0 +207.551185900,0,1 +207.551190930,1,1 +207.551240630,0,1 +207.651184850,0,0 +208.551175370,0,1 +208.551180390,1,1 +208.551230310,0,1 +208.651174310,0,0 +209.551164830,0,1 +209.551169860,1,1 +209.551220170,0,1 +209.651163770,0,0 +210.551154290,0,1 +210.551159350,1,1 +210.551209410,0,1 +210.651153230,0,0 +211.551143750,0,1 +211.551148880,1,1 +211.551198930,0,1 +211.651142690,0,0 +212.551133200,0,1 +212.551138220,1,1 +212.551188400,0,1 +212.651132140,0,0 +213.551122660,0,1 +213.551127670,1,1 +213.551177730,0,1 +213.651121600,0,0 +214.551112110,0,1 +214.551117460,1,1 +214.551167580,0,1 +214.651111050,0,0 +215.551101560,0,1 +215.551106460,1,1 +215.551157190,0,1 +215.651100500,0,0 +216.551091010,0,1 +216.551096060,1,1 +216.551146670,0,1 +216.651089950,0,0 +217.551080460,0,1 +217.551085680,1,1 +217.551135860,0,1 +217.651079400,0,0 +218.551069890,0,1 +218.551075100,1,1 +218.551125770,0,1 +218.651068850,0,0 +219.551059340,0,1 +219.551064610,1,1 +219.551115280,0,1 +219.651058290,0,0 +220.551048780,0,1 +220.551053870,1,1 +220.551104530,0,1 +220.651047740,0,0 +221.551038230,0,1 +221.551043250,1,1 +221.551093980,0,1 +221.651037180,0,0 +222.551027670,0,1 +222.551032690,1,1 +222.551083480,0,1 +222.651026620,0,0 +223.551017100,0,1 +223.551022130,1,1 +223.551072180,0,1 +223.651016060,0,0 +224.551006540,0,1 +224.551011650,1,1 +224.551061280,0,1 +224.651005490,0,0 +225.550995970,0,1 +225.551001050,1,1 +225.551051170,0,1 +225.650994930,0,0 +226.550985410,0,1 +226.550990420,1,1 +226.551040480,0,1 +226.650984360,0,0 +227.550974840,0,1 +227.550980190,1,1 +227.551030850,0,1 +227.650973790,0,0 +228.550964270,0,1 +228.550969410,1,1 +228.551019590,0,1 +228.650963220,0,0 +229.550953690,0,1 +229.550958620,1,1 +229.551009220,0,1 +229.650952650,0,0 +230.550943120,0,1 +230.550948020,1,1 +230.550998620,0,1 +230.650942070,0,0 +231.550932540,0,1 +231.550937760,1,1 +231.550987940,0,1 +231.650931490,0,0 +232.550921960,0,1 +232.550927120,1,1 +232.550977180,0,1 +232.650920910,0,0 +233.550911370,0,1 +233.550916530,1,1 +233.550966640,0,1 +233.650910320,0,0 +234.550900790,0,1 +234.550907940,1,1 +234.550958120,0,1 +234.650899740,0,0 +235.550890200,0,1 +235.550895210,1,1 +235.550945740,0,1 +235.650889150,0,0 +236.550879610,0,1 +236.550884770,1,1 +236.550935210,0,1 +236.650878560,0,0 +237.550869020,0,1 +237.550873950,1,1 +237.550924610,0,1 +237.650867970,0,0 +238.550858420,0,1 +238.550863320,1,1 +238.550913490,0,1 +238.650857370,0,0 +239.550847820,0,1 +239.550853040,1,1 +239.550903700,0,1 +239.650846770,0,0 +240.550837220,0,1 +240.550842430,1,1 +240.550893160,0,1 +240.650836170,0,0 +241.550826620,0,1 +241.550831780,1,1 +241.550882570,0,1 +241.650825570,0,0 +242.550816010,0,1 +242.550821120,1,1 +242.550871170,0,1 +242.650814960,0,0 +243.550805410,0,1 +243.550810480,1,1 +243.550860540,0,1 +243.650804360,0,0 +244.550794800,0,1 +244.550799880,1,1 +244.550849940,0,1 +244.650793740,0,0 +245.550784180,0,1 +245.550789270,1,1 +245.550839320,0,1 +245.650783130,0,0 +246.550773570,0,1 +246.550778630,1,1 +246.550828810,0,1 +246.650772520,0,0 +247.550762950,0,1 +247.550768010,1,1 +247.550818070,0,1 +247.650761900,0,0 +248.550752330,0,1 +248.550757340,1,1 +248.550807940,0,1 +248.650751280,0,0 +249.550741700,0,1 +249.550746640,1,1 +249.550797240,0,1 +249.650740650,0,0 +250.550731080,0,1 +250.550735980,1,1 +250.550786710,0,1 +250.650730030,0,0 +251.550720450,0,1 +251.550725340,1,1 +251.550775950,0,1 +251.650719400,0,0 +252.550709820,0,1 +252.550714870,1,1 +252.550765480,0,1 +252.650708760,0,0 +253.550699180,0,1 +253.550704400,1,1 +253.550755000,0,1 +253.650698130,0,0 +254.550688550,0,1 +254.550693710,1,1 +254.550744380,0,1 +254.650687490,0,0 +255.550677910,0,1 +255.550683010,1,1 +255.550733610,0,1 +255.650676850,0,0 +256.550667280,0,1 +256.550672310,1,1 +256.550722370,0,1 +256.650666210,0,0 +257.550656640,0,1 +257.550661670,1,1 +257.550711790,0,1 +257.650655570,0,0 +258.550645990,0,1 +258.550651020,1,1 +258.550701200,0,1 +258.650644920,0,0 +259.550635340,0,1 +259.550640450,1,1 +259.550690560,0,1 +259.650634290,0,0 +260.550624690,0,1 +260.550629710,1,1 +260.550679820,0,1 +260.650623640,0,0 +261.550614040,0,1 +261.550619110,1,1 +261.550669230,0,1 +261.650612980,0,0 +262.550603380,0,1 +262.550608740,1,1 +262.550658790,0,1 +262.650602320,0,0 +263.550592720,0,1 +263.550597880,1,1 +263.550648000,0,1 +263.650591670,0,0 +264.550582070,0,1 +264.550586990,1,1 +264.550637600,0,1 +264.650581010,0,0 +265.550571410,0,1 +265.550576630,1,1 +265.550626750,0,1 +265.650570350,0,0 +266.550560760,0,1 +266.550565980,1,1 +266.550616100,0,1 +266.650559690,0,0 +267.550550100,0,1 +267.550555270,1,1 +267.550605450,0,1 +267.650549030,0,0 +268.550539440,0,1 +268.550544600,1,1 +268.550595210,0,1 +268.650538360,0,0 +269.550528770,0,1 +269.550533880,1,1 +269.550584540,0,1 +269.650527700,0,0 +270.550518110,0,1 +270.550523660,1,1 +270.550573840,0,1 +270.650517040,0,0 +271.550507440,0,1 +271.550512470,1,1 +271.550563130,0,1 +271.650506370,0,0 +272.550496770,0,1 +272.550501850,1,1 +272.550552580,0,1 +272.650495720,0,0 +273.550486100,0,1 +273.550491170,1,1 +273.550541220,0,1 +273.650485050,0,0 +274.550475440,0,1 +274.550480500,1,1 +274.550530610,0,1 +274.650474380,0,0 +275.550464770,0,1 +275.550470100,1,1 +275.550520710,0,1 +275.650463710,0,0 +276.550454100,0,1 +276.550459030,1,1 +276.550509150,0,1 +276.650453040,0,0 +277.550443430,0,1 +277.550448330,1,1 +277.550498390,0,1 +277.650442370,0,0 +278.550432760,0,1 +278.550437650,1,1 +278.550487830,0,1 +278.650431690,0,0 +279.550422090,0,1 +279.550427150,1,1 +279.550477330,0,1 +279.650421020,0,0 +280.550411430,0,1 +280.550416600,1,1 +280.550466780,0,1 +280.650410360,0,0 +281.550400760,0,1 +281.550405920,1,1 +281.550455980,0,1 +281.650399690,0,0 +282.550390080,0,1 +282.550395250,1,1 +282.550445430,0,1 +282.650389030,0,0 +283.550379420,0,1 +283.550384520,1,1 +283.550435130,0,1 +283.650378360,0,0 +284.550368760,0,1 +284.550373790,1,1 +284.550424390,0,1 +284.650367700,0,0 +285.550358100,0,1 +285.550363190,1,1 +285.550413790,0,1 +285.650357040,0,0 +286.550347440,0,1 +286.550353040,1,1 +286.550403100,0,1 +286.650346380,0,0 +287.550336780,0,1 +287.550341850,1,1 +287.550392450,0,1 +287.650335720,0,0 +288.550326120,0,1 +288.550331180,1,1 +288.550381840,0,1 +288.650325040,0,0 +289.550315450,0,1 +289.550320520,1,1 +289.550370150,0,1 +289.650314380,0,0 +290.550304800,0,1 +290.550309950,1,1 +290.550360000,0,1 +290.650303720,0,0 +291.550294120,0,1 +291.550299260,1,1 +291.550349320,0,1 +291.650293060,0,0 +292.550283460,0,1 +292.550288380,1,1 +292.550338560,0,1 +292.650282400,0,0 +293.550272800,0,1 +293.550277700,1,1 +293.550327820,0,1 +293.650271750,0,0 +294.550262140,0,1 +294.550267030,1,1 +294.550317630,0,1 +294.650261090,0,0 +295.550251480,0,1 +295.550256810,1,1 +295.550306590,0,1 +295.650250430,0,0 +296.550240830,0,1 +296.550245890,1,1 +296.550296130,0,1 +296.650239760,0,0 +297.550230170,0,1 +297.550235180,1,1 +297.550285630,0,1 +297.650229100,0,0 +298.550219500,0,1 +298.550224630,1,1 +298.550275200,0,1 +298.650218440,0,0 +299.550208840,0,1 +299.550213770,1,1 +299.550264710,0,1 +299.650207780,0,0 +300.550198180,0,1 +300.550203080,1,1 +300.550254150,0,1 +300.650197130,0,0 +301.550187520,0,1 +301.550192640,1,1 +301.550243310,0,1 +301.650186450,0,0 +302.550176870,0,1 +302.550182100,1,1 +302.550232760,0,1 +302.650175800,0,0 +303.550166190,0,1 +303.550171360,1,1 +303.550221970,0,1 +303.650165140,0,0 +304.550155540,0,1 +304.550160710,1,1 +304.550211380,0,1 +304.650154480,0,0 +305.550144880,0,1 +305.550149990,1,1 +305.550200040,0,1 +305.650143830,0,0 +306.550134230,0,1 +306.550139260,1,1 +306.550189440,0,1 +306.650133160,0,0 +307.550123560,0,1 +307.550128580,1,1 +307.550178700,0,1 +307.650122500,0,0 +308.550112900,0,1 +308.550118070,1,1 +308.550168250,0,1 +308.650111840,0,0 +309.550102240,0,1 +309.550107330,1,1 +309.550157510,0,1 +309.650101190,0,0 +310.550091590,0,1 +310.550096660,1,1 +310.550146710,0,1 +310.650090530,0,0 +311.550080930,0,1 +311.550086000,1,1 +311.550136120,0,1 +311.650079860,0,0 +312.550070260,0,1 +312.550075280,1,1 +312.550125890,0,1 +312.650069210,0,0 +313.550059610,0,1 +313.550064750,1,1 +313.550114930,0,1 +313.650058550,0,0 +314.550048960,0,1 +314.550053890,1,1 +314.550104490,0,1 +314.650047900,0,0 +315.550038300,0,1 +315.550043210,1,1 +315.550093810,0,1 +315.650037230,0,0 +316.550027650,0,1 +316.550032700,1,1 +316.550083310,0,1 +316.650026580,0,0 +317.550016980,0,1 +317.550022020,1,1 +317.550072630,0,1 +317.650015920,0,0 +318.550006320,0,1 +318.550011480,1,1 +318.550062090,0,1 +318.650005270,0,0 +319.549995670,0,1 +319.550000830,1,1 +319.550051430,0,1 +319.649994610,0,0 +320.549985010,0,1 +320.549990080,1,1 +320.550040140,0,1 +320.649983960,0,0 +321.549974350,0,1 +321.549979430,1,1 +321.550029540,0,1 +321.649973280,0,0 +322.549963700,0,1 +322.549968730,1,1 +322.550018850,0,1 +322.649962630,0,0 +323.549953020,0,1 +323.549957970,1,1 +323.550008150,0,1 +323.649951970,0,0 +324.549942370,0,1 +324.549947750,1,1 +324.549997800,0,1 +324.649941310,0,0 +325.549931710,0,1 +325.549936610,1,1 +325.549986890,0,1 +325.649930650,0,0 +326.549921050,0,1 +326.549926270,1,1 +326.549976710,0,1 +326.649919980,0,0 +327.549910370,0,1 +327.549915590,1,1 +327.549966110,0,1 +327.649909320,0,0 +328.549899710,0,1 +328.549904880,1,1 +328.549955510,0,1 +328.649898660,0,0 +329.549889050,0,1 +329.549894220,1,1 +329.549947240,0,1 +329.649887980,0,0 +330.549878380,0,1 +330.549883540,1,1 +330.549934210,0,1 +330.649877320,0,0 +331.549867710,0,1 +331.549872800,1,1 +331.549923400,0,1 +331.649866660,0,0 +332.549857050,0,1 +332.549862600,1,1 +332.549912650,0,1 +332.649855980,0,0 +333.549846370,0,1 +333.549851400,1,1 +333.549902000,0,1 +333.649845320,0,0 +334.549835710,0,1 +334.549840790,1,1 +334.549891400,0,1 +334.649834650,0,0 +335.549825040,0,1 +335.549830110,1,1 +335.549879740,0,1 +335.649823970,0,0 +336.549814360,0,1 +336.549819430,1,1 +336.549869480,0,1 +336.649813300,0,0 +337.549803690,0,1 +337.549809040,1,1 +337.549859770,0,1 +337.649802620,0,0 +338.549793010,0,1 +338.549798340,1,1 +338.549849010,0,1 +338.649791950,0,0 +339.549782340,0,1 +339.549787330,1,1 +339.549837450,0,1 +339.649781270,0,0 +340.549771650,0,1 +340.549776580,1,1 +340.549827180,0,1 +340.649770590,0,0 +341.549760980,0,1 +341.549765870,1,1 +341.549816480,0,1 +341.649759920,0,0 +342.549750300,0,1 +342.549755520,1,1 +342.549805700,0,1 +342.649749230,0,0 +343.549739610,0,1 +343.549744770,1,1 +343.549794830,0,1 +343.649738550,0,0 +344.549728930,0,1 +344.549734100,1,1 +344.549784700,0,1 +344.649727860,0,0 +345.549718230,0,1 +345.549723330,1,1 +345.549773940,0,1 +345.649717180,0,0 +346.549707550,0,1 +346.549712580,1,1 +346.549763250,0,1 +346.649706480,0,0 +347.549696850,0,1 +347.549702400,1,1 +347.549752520,0,1 +347.649695790,0,0 +348.549686160,0,1 +348.549691240,1,1 +348.549741850,0,1 +348.649685090,0,0 +349.549675460,0,1 +349.549680530,1,1 +349.549731200,0,1 +349.649674400,0,0 +350.549664770,0,1 +350.549669830,1,1 +350.549720560,0,1 +350.649663700,0,0 +351.549654060,0,1 +351.549659080,1,1 +351.549709130,0,1 +351.649653000,0,0 +352.549643370,0,1 +352.549648360,1,1 +352.549698480,0,1 +352.649642290,0,0 +353.549632650,0,1 +353.549637580,1,1 +353.549687630,0,1 +353.649631590,0,0 +354.549621960,0,1 +354.549626840,1,1 +354.549676900,0,1 +354.649620880,0,0 +355.549611240,0,1 +355.549616300,1,1 +355.549666350,0,1 +355.649610180,0,0 +356.549600530,0,1 +356.549605740,1,1 +356.549655800,0,1 +356.649599480,0,0 +357.549589810,0,1 +357.549594980,1,1 +357.549645030,0,1 +357.649588750,0,0 +358.549579110,0,1 +358.549584190,1,1 +358.549634240,0,1 +358.649578050,0,0 +359.549568380,0,1 +359.549573410,1,1 +359.549624070,0,1 +359.649567320,0,0 +360.549557670,0,1 +360.549562700,1,1 +360.549613360,0,1 +360.649556610,0,0 +361.549546940,0,1 +361.549551970,1,1 +361.549602700,0,1 +361.649545880,0,0 +362.549536230,0,1 +362.549541300,1,1 +362.549591900,0,1 +362.649535150,0,0 +363.549525500,0,1 +363.549530620,1,1 +363.549581220,0,1 +363.649524440,0,0 +364.549514780,0,1 +364.549520310,1,1 +364.549570370,0,1 +364.649513700,0,0 +365.549504040,0,1 +365.549509390,1,1 +365.549560000,0,1 +365.649502980,0,0 +366.549493320,0,1 +366.549498460,1,1 +366.549549060,0,1 +366.649492240,0,0 +367.549482570,0,1 +367.549487630,1,1 +367.549537690,0,1 +367.649481510,0,0 +368.549471850,0,1 +368.549477060,1,1 +368.549527660,0,1 +368.649470770,0,0 +369.549461100,0,1 +369.549466310,1,1 +369.549516980,0,1 +369.649460040,0,0 +370.549450370,0,1 +370.549455530,1,1 +370.549505650,0,1 +370.649449290,0,0 +371.549439610,0,1 +371.549444790,1,1 +371.549494960,0,1 +371.649438550,0,0 +372.549428860,0,1 +372.549433890,1,1 +372.549483940,0,1 +372.649427800,0,0 +373.549418120,0,1 +373.549423150,1,1 +373.549473200,0,1 +373.649417040,0,0 +374.549407360,0,1 +374.549412390,1,1 +374.549462450,0,1 +374.649406300,0,0 +375.549396620,0,1 +375.549401700,1,1 +375.549451750,0,1 +375.649395540,0,0 +376.549385850,0,1 +376.549390910,1,1 +376.549441520,0,1 +376.649384790,0,0 +377.549375110,0,1 +377.549380450,1,1 +377.549430510,0,1 +377.649374020,0,0 +378.549364340,0,1 +378.549369490,1,1 +378.549420160,0,1 +378.649363270,0,0 +379.549353580,0,1 +379.549358510,1,1 +379.549409120,0,1 +379.649352500,0,0 +380.549342810,0,1 +380.549347780,1,1 +380.549398450,0,1 +380.649341750,0,0 +381.549332040,0,1 +381.549336920,1,1 +381.549387040,0,1 +381.649330970,0,0 +382.549321280,0,1 +382.549326440,1,1 +382.549377040,0,1 +382.649320210,0,0 +383.549310500,0,1 +383.549315670,1,1 +383.549366270,0,1 +383.649309430,0,0 +384.549299730,0,1 +384.549304840,1,1 +384.549355510,0,1 +384.649298650,0,0 +385.549288950,0,1 +385.549294320,1,1 +385.549344940,0,1 +385.649287890,0,0 +386.549278190,0,1 +386.549283420,1,1 +386.549334420,0,1 +386.649277100,0,0 +387.549267400,0,1 +387.549272510,1,1 +387.549322650,0,1 +387.649266330,0,0 +388.549256630,0,1 +388.549261850,1,1 +388.549311580,0,1 +388.649255550,0,0 +389.549245840,0,1 +389.549251010,1,1 +389.549300850,0,1 +389.649244770,0,0 +390.549235050,0,1 +390.549240120,1,1 +390.549290300,0,1 +390.649233990,0,0 +391.549224280,0,1 +391.549229310,1,1 +391.549279370,0,1 +391.649223200,0,0 +392.549213490,0,1 +392.549218510,1,1 +392.549268630,0,1 +392.649212420,0,0 +393.549202700,0,1 +393.549207720,1,1 +393.549257900,0,1 +393.649201630,0,0 +394.549191920,0,1 +394.549197000,1,1 +394.549247180,0,1 +394.649190840,0,0 +395.549181130,0,1 +395.549186150,1,1 +395.549236750,0,1 +395.649180060,0,0 +396.549170350,0,1 +396.549175360,1,1 +396.549226030,0,1 +396.649169270,0,0 +397.549159560,0,1 +397.549165020,1,1 +397.549215200,0,1 +397.649158470,0,0 +398.549148760,0,1 +398.549153910,1,1 +398.549204580,0,1 +398.649147700,0,0 +399.549137970,0,1 +399.549142900,1,1 +399.549192950,0,1 +399.649136910,0,0 +400.549127200,0,1 +400.549132410,1,1 +400.549183080,0,1 +400.649126110,0,0 +401.549116400,0,1 +401.549121610,1,1 +401.549172220,0,1 +401.649115340,0,0 +402.549105610,0,1 +402.549110830,1,1 +402.549161430,0,1 +402.649104550,0,0 +403.549094840,0,1 +403.549100010,1,1 +403.549150060,0,1 +403.649093760,0,0 +404.549084050,0,1 +404.549089220,1,1 +404.549139400,0,1 +404.649082970,0,0 +405.549073270,0,1 +405.549078300,1,1 +405.549128480,0,1 +405.649072200,0,0 +406.549062480,0,1 +406.549067510,1,1 +406.549117570,0,1 +406.649061420,0,0 +407.549051700,0,1 +407.549056730,1,1 +407.549106910,0,1 +407.649050630,0,0 +408.549040930,0,1 +408.549046040,1,1 +408.549096090,0,1 +408.649039850,0,0 +409.549030150,0,1 +409.549035220,1,1 +409.549085830,0,1 +409.649029080,0,0 +410.549019360,0,1 +410.549024370,1,1 +410.549074980,0,1 +410.649018300,0,0 +411.549008600,0,1 +411.549013610,1,1 +411.549064220,0,1 +411.649007510,0,0 +412.548997810,0,1 +412.549003230,1,1 +412.549053340,0,1 +412.648996730,0,0 +413.548987030,0,1 +413.548992370,1,1 +413.549043030,0,1 +413.648985960,0,0 +414.548976260,0,1 +414.548981290,1,1 +414.549032020,0,1 +414.648975180,0,0 +415.548965480,0,1 +415.548974410,1,1 +415.549024460,0,1 +415.648964410,0,0 +416.548954700,0,1 +416.548959720,1,1 +416.549009800,0,1 +416.648953630,0,0 +417.548943930,0,1 +417.548948960,1,1 +417.548999130,0,1 +417.648942840,0,0 +418.548933150,0,1 +418.548938170,1,1 +418.548988280,0,1 +418.648932080,0,0 +419.548922380,0,1 +419.548927450,1,1 +419.548977600,0,1 +419.648921300,0,0 +420.548911600,0,1 +420.548916660,1,1 +420.548966720,0,1 +420.648910530,0,0 +421.548900820,0,1 +421.548905830,1,1 +421.548955950,0,1 +421.648899750,0,0 +422.548890050,0,1 +422.548895070,1,1 +422.548945190,0,1 +422.648888970,0,0 +423.548879270,0,1 +423.548884620,1,1 +423.548934680,0,1 +423.648878210,0,0 +424.548868510,0,1 +424.548873410,1,1 +424.548924070,0,1 +424.648867430,0,0 +425.548857730,0,1 +425.548862790,1,1 +425.548913520,0,1 +425.648856670,0,0 +426.548846970,0,1 +426.548852200,1,1 +426.548902310,0,1 +426.648845890,0,0 +427.548836190,0,1 +427.548841410,1,1 +427.548892010,0,1 +427.648835130,0,0 +428.548825420,0,1 +428.548830640,1,1 +428.548881300,0,1 +428.648824350,0,0 +429.548814660,0,1 +429.548819760,1,1 +429.548870360,0,1 +429.648813590,0,0 +430.548803880,0,1 +430.548808950,1,1 +430.548859560,0,1 +430.648802810,0,0 +431.548793110,0,1 +431.548798140,1,1 +431.548848200,0,1 +431.648792050,0,0 +432.548782340,0,1 +432.548787360,1,1 +432.548837480,0,1 +432.648781270,0,0 +433.548771570,0,1 +433.548776600,1,1 +433.548826720,0,1 +433.648770490,0,0 +434.548760790,0,1 +434.548765850,1,1 +434.548815910,0,1 +434.648759720,0,0 +435.548750020,0,1 +435.548755040,1,1 +435.548805100,0,1 +435.648748940,0,0 +436.548739240,0,1 +436.548744260,1,1 +436.548794440,0,1 +436.648738170,0,0 +437.548728470,0,1 +437.548733490,1,1 +437.548783540,0,1 +437.648727410,0,0 +438.548717690,0,1 +438.548723040,1,1 +438.548773220,0,1 +438.648716620,0,0 +439.548706920,0,1 +439.548711810,1,1 +439.548762420,0,1 +439.648705850,0,0 +440.548696130,0,1 +440.548701190,1,1 +440.548751790,0,1 +440.648695060,0,0 +441.548685360,0,1 +441.548690580,1,1 +441.548740830,0,1 +441.648684290,0,0 +442.548674590,0,1 +442.548679800,1,1 +442.548730410,0,1 +442.648673500,0,0 +443.548663800,0,1 +443.548669070,1,1 +443.548719740,0,1 +443.648662730,0,0 +444.548653030,0,1 +444.548658580,1,1 +444.548708630,0,1 +444.648651940,0,0 +445.548642240,0,1 +445.548647260,1,1 +445.548697860,0,1 +445.648641170,0,0 +446.548631460,0,1 +446.548636490,1,1 +446.548687280,0,1 +446.648630390,0,0 +447.548620670,0,1 +447.548625690,1,1 +447.548675810,0,1 +447.648619600,0,0 +448.548609900,0,1 +448.548615000,1,1 +448.548665050,0,1 +448.648608830,0,0 +449.548599120,0,1 +449.548604140,1,1 +449.548654320,0,1 +449.648598040,0,0 +450.548588330,0,1 +450.548593350,1,1 +450.548643400,0,1 +450.648587260,0,0 +451.548577550,0,1 +451.548582960,1,1 +451.548633630,0,1 +451.648576470,0,0 +452.548566760,0,1 +452.548571910,1,1 +452.548621970,0,1 +452.648565690,0,0 +453.548555990,0,1 +453.548560920,1,1 +453.548611040,0,1 +453.648554920,0,0 +454.548545210,0,1 +454.548550420,1,1 +454.548600480,0,1 +454.648544120,0,0 +455.548534410,0,1 +455.548539630,1,1 +455.548589740,0,1 +455.648533350,0,0 +456.548523630,0,1 +456.548528800,1,1 +456.548578920,0,1 +456.648522550,0,0 +457.548512840,0,1 +457.548518000,1,1 +457.548568610,0,1 +457.648511770,0,0 +458.548502060,0,1 +458.548507170,1,1 +458.548557770,0,1 +458.648500990,0,0 +459.548491270,0,1 +459.548496300,1,1 +459.548546910,0,1 +459.648490190,0,0 +460.548480480,0,1 +460.548486020,1,1 +460.548536080,0,1 +460.648479410,0,0 +461.548469690,0,1 +461.548474790,1,1 +461.548525400,0,1 +461.648468620,0,0 +462.548458890,0,1 +462.548463960,1,1 +462.548514570,0,1 +462.648457820,0,0 +463.548448110,0,1 +463.548453170,1,1 +463.548503230,0,1 +463.648447040,0,0 +464.548437320,0,1 +464.548442340,1,1 +464.548492390,0,1 +464.648436240,0,0 +465.548426520,0,1 +465.548431670,1,1 +465.548481730,0,1 +465.648425450,0,0 +466.548415720,0,1 +466.548420650,1,1 +466.548470830,0,1 +466.648414660,0,0 +467.548404930,0,1 +467.548409840,1,1 +467.548459890,0,1 +467.648403850,0,0 +468.548394120,0,1 +468.548399010,1,1 +468.548449260,0,1 +468.648393050,0,0 +469.548383330,0,1 +469.548388560,1,1 +469.548438620,0,1 +469.648382260,0,0 +470.548372530,0,1 +470.548377690,1,1 +470.548427870,0,1 +470.648371440,0,0 +471.548361730,0,1 +471.548366840,1,1 +471.548416890,0,1 +471.648360650,0,0 +472.548350920,0,1 +472.548355990,1,1 +472.548406600,0,1 +472.648349850,0,0 +473.548340110,0,1 +473.548345150,1,1 +473.548395750,0,1 +473.648339040,0,0 +474.548329310,0,1 +474.548334330,1,1 +474.548384940,0,1 +474.648328220,0,0 +475.548318490,0,1 +475.548323590,1,1 +475.548374200,0,1 +475.648317420,0,0 +476.548307680,0,1 +476.548313260,1,1 +476.548363430,0,1 +476.648306610,0,0 +477.548296870,0,1 +477.548301950,1,1 +477.548352730,0,1 +477.648295800,0,0 +478.548286060,0,1 +478.548291090,1,1 +478.548341820,0,1 +478.648284970,0,0 +479.548275230,0,1 +479.548280250,1,1 +479.548330320,0,1 +479.648274160,0,0 +480.548264410,0,1 +480.548269440,1,1 +480.548319270,0,1 +480.648263340,0,0 +481.548253590,0,1 +481.548258690,1,1 +481.548308870,0,1 +481.648252520,0,0 +482.548242770,0,1 +482.548247790,1,1 +482.548297970,0,1 +482.648241680,0,0 +483.548231940,0,1 +483.548236940,1,1 +483.548287000,0,1 +483.648230860,0,0 +484.548221110,0,1 +484.548226450,1,1 +484.548277180,0,1 +484.648220040,0,0 +485.548210280,0,1 +485.548215280,1,1 +485.548265460,0,1 +485.648209210,0,0 +486.548199460,0,1 +486.548204360,1,1 +486.548254530,0,1 +486.648198380,0,0 +487.548188630,0,1 +487.548193840,1,1 +487.548243960,0,1 +487.648187540,0,0 +488.548177780,0,1 +488.548182990,1,1 +488.548233050,0,1 +488.648176710,0,0 +489.548166940,0,1 +489.548172110,1,1 +489.548222170,0,1 +489.648165870,0,0 +490.548156110,0,1 +490.548161210,1,1 +490.548211870,0,1 +490.648155030,0,0 +491.548145270,0,1 +491.548150290,1,1 +491.548200900,0,1 +491.648144190,0,0 +492.548134420,0,1 +492.548139440,1,1 +492.548190050,0,1 +492.648133330,0,0 +493.548123560,0,1 +493.548128710,1,1 +493.548179310,0,1 +493.648122490,0,0 +494.548112720,0,1 +494.548118300,1,1 +494.548168420,0,1 +494.648111640,0,0 +495.548101870,0,1 +495.548106940,1,1 +495.548157540,0,1 +495.648100790,0,0 +496.548091020,0,1 +496.548096030,1,1 +496.548146080,0,1 +496.648089940,0,0 +497.548080160,0,1 +497.548085520,1,1 +497.548136190,0,1 +497.648079090,0,0 +498.548069310,0,1 +498.548074210,1,1 +498.548124390,0,1 +498.648068240,0,0 +499.548058450,0,1 +499.548063510,1,1 +499.548113690,0,1 +499.648057360,0,0 +500.548047600,0,1 +500.548052810,1,1 +500.548102440,0,1 +500.648046500,0,0 +501.548036720,0,1 +501.548041930,1,1 +501.548091980,0,1 +501.648035640,0,0 +502.548025860,0,1 +502.548031020,1,1 +502.548081080,0,1 +502.648024780,0,0 +503.548014990,0,1 +503.548020020,1,1 +503.548070070,0,1 +503.648013920,0,0 +504.548004120,0,1 +504.548009060,1,1 +504.548059660,0,1 +504.648003050,0,0 +505.547993260,0,1 +505.548000430,1,1 +505.548050550,0,1 +505.647992180,0,0 +506.547982390,0,1 +506.547987290,1,1 +506.548037920,0,1 +506.647981290,0,0 +507.547971510,0,1 +507.547976560,1,1 +507.548027150,0,1 +507.647970420,0,0 +508.547960640,0,1 +508.547965860,1,1 +508.548016090,0,1 +508.647959540,0,0 +509.547949740,0,1 +509.547954960,1,1 +509.548005480,0,1 +509.647948670,0,0 +510.547938860,0,1 +510.547944140,1,1 +510.547999060,0,1 +510.647937790,0,0 +511.547927980,0,1 +511.547933540,1,1 +511.547983590,0,1 +511.647926910,0,0 +512.547917100,0,1 +512.547922120,1,1 +512.547972850,0,1 +512.647916020,0,0 +513.547906220,0,1 +513.547911240,1,1 +513.547961970,0,1 +513.647905140,0,0 +514.547895330,0,1 +514.547900440,1,1 +514.547951040,0,1 +514.647894250,0,0 +515.547884440,0,1 +515.547889510,1,1 +515.547939570,0,1 +515.647883350,0,0 +516.547873560,0,1 +516.547878570,1,1 +516.547928620,0,1 +516.647872460,0,0 +517.547862650,0,1 +517.547868000,1,1 +517.547918610,0,1 +517.647861570,0,0 +518.547851760,0,1 +518.547856910,1,1 +518.547906960,0,1 +518.647850690,0,0 +519.547840880,0,1 +519.547845870,1,1 +519.547895980,0,1 +519.647839800,0,0 +520.547829990,0,1 +520.547834890,1,1 +520.547885000,0,1 +520.647828910,0,0 +521.547819100,0,1 +521.547824380,1,1 +521.547874440,0,1 +521.647818020,0,0 +522.547808210,0,1 +522.547813380,1,1 +522.547863500,0,1 +522.647807130,0,0 +523.547797330,0,1 +523.547802490,1,1 +523.547852670,0,1 +523.647796230,0,0 +524.547786440,0,1 +524.547791530,1,1 +524.547842190,0,1 +524.647785350,0,0 +525.547775550,0,1 +525.547780580,1,1 +525.547831180,0,1 +525.647774470,0,0 +526.547764670,0,1 +526.547769700,1,1 +526.547820300,0,1 +526.647763590,0,0 +527.547753790,0,1 +527.547758930,1,1 +527.547809530,0,1 +527.647752690,0,0 +528.547742910,0,1 +528.547748500,1,1 +528.547798610,0,1 +528.647741820,0,0 +529.547732020,0,1 +529.547737080,1,1 +529.547787750,0,1 +529.647730940,0,0 +530.547721140,0,1 +530.547726200,1,1 +530.547776930,0,1 +530.647720050,0,0 +531.547710250,0,1 +531.547715260,1,1 +531.547765320,0,1 +531.647709180,0,0 +532.547699380,0,1 +532.547704370,1,1 +532.547754550,0,1 +532.647698300,0,0 +533.547688510,0,1 +533.547693410,1,1 +533.547743590,0,1 +533.647687410,0,0 +534.547677620,0,1 +534.547682520,1,1 +534.547732580,0,1 +534.647676540,0,0 +535.547666750,0,1 +535.547671790,1,1 +535.547721910,0,1 +535.647665650,0,0 +536.547655860,0,1 +536.547661090,1,1 +536.547711140,0,1 +536.647654780,0,0 +537.547644990,0,1 +537.547650150,1,1 +537.547700330,0,1 +537.647643900,0,0 +538.547634100,0,1 +538.547639210,1,1 +538.547689260,0,1 +538.647633030,0,0 +539.547623240,0,1 +539.547628310,1,1 +539.547678920,0,1 +539.647622140,0,0 +540.547612350,0,1 +540.547617380,1,1 +540.547668040,0,1 +540.647611280,0,0 +541.547601480,0,1 +541.547606520,1,1 +541.547657180,0,1 +541.647600390,0,0 +542.547590600,0,1 +542.547595680,1,1 +542.547646280,0,1 +542.647589520,0,0 +543.547579730,0,1 +543.547585320,1,1 +543.547635380,0,1 +543.647578640,0,0 +544.547568850,0,1 +544.547573920,1,1 +544.547624650,0,1 +544.647567770,0,0 +545.547557970,0,1 +545.547563040,1,1 +545.547613640,0,1 +545.647556890,0,0 +546.547547110,0,1 +546.547552120,1,1 +546.547602230,0,1 +546.647546010,0,0 +547.547536220,0,1 +547.547541150,1,1 +547.547591270,0,1 +547.647535150,0,0 +548.547525360,0,1 +548.547530260,1,1 +548.547580310,0,1 +548.647524270,0,0 +549.547514480,0,1 +549.547519370,1,1 +549.547569550,0,1 +549.647513400,0,0 +550.547503600,0,1 +550.547508650,1,1 +550.547558700,0,1 +550.647502520,0,0 +551.547492730,0,1 +551.547497950,1,1 +551.547548130,0,1 +551.647491640,0,0 +552.547481850,0,1 +552.547487020,1,1 +552.547537070,0,1 +552.647480770,0,0 +553.547470970,0,1 +553.547476130,1,1 +553.547526310,0,1 +553.647469890,0,0 +554.547460100,0,1 +554.547465180,1,1 +554.547515300,0,1 +554.647459010,0,0 +555.547449220,0,1 +555.547454240,1,1 +555.547504850,0,1 +555.647448150,0,0 +556.547438340,0,1 +556.547443370,1,1 +556.547493970,0,1 +556.647437260,0,0 +557.547427470,0,1 +557.547432550,1,1 +557.547483160,0,1 +557.647426380,0,0 +558.547416590,0,1 +558.547422180,1,1 +558.547472290,0,1 +558.647415510,0,0 +559.547405710,0,1 +559.547410780,1,1 +559.547461380,0,1 +559.647404630,0,0 +560.547394840,0,1 +560.547399850,1,1 +560.547450520,0,1 +560.647393750,0,0 +561.547383960,0,1 +561.547388980,1,1 +561.547438600,0,1 +561.647382880,0,0 +562.547373080,0,1 +562.547378000,1,1 +562.547428060,0,1 +562.647372000,0,0 +563.547362210,0,1 +563.547367180,1,1 +563.547417230,0,1 +563.647361120,0,0 +564.547351330,0,1 +564.547356390,1,1 +564.547406570,0,1 +564.647350250,0,0 +565.547340450,0,1 +565.547345500,1,1 +565.547395550,0,1 +565.647339370,0,0 +566.547329580,0,1 +566.547334940,1,1 +566.547384640,0,1 +566.647328490,0,0 +567.547318710,0,1 +567.547323720,1,1 +567.547374130,0,1 +567.647317630,0,0 +568.547307830,0,1 +568.547312840,1,1 +568.547363120,0,1 +568.647306750,0,0 +569.547296960,0,1 +569.547302120,1,1 +569.547352510,0,1 +569.647295870,0,0 +570.547286080,0,1 +570.547290970,1,1 +570.547341440,0,1 +570.647284990,0,0 +571.547275200,0,1 +571.547280250,1,1 +571.547330890,0,1 +571.647274120,0,0 +572.547264320,0,1 +572.547269550,1,1 +572.547319730,0,1 +572.647263240,0,0 +573.547253450,0,1 +573.547258670,1,1 +573.547309270,0,1 +573.647252360,0,0 +574.547242570,0,1 +574.547247790,1,1 +574.547298460,0,1 +574.647241500,0,0 +575.547231690,0,1 +575.547236790,1,1 +575.547287390,0,1 +575.647230610,0,0 +576.547220800,0,1 +576.547225830,1,1 +576.547276620,0,1 +576.647219730,0,0 +577.547209930,0,1 +577.547214960,1,1 +577.547265020,0,1 +577.647208840,0,0 +578.547199050,0,1 +578.547204070,1,1 +578.547254190,0,1 +578.647197970,0,0 +579.547188160,0,1 +579.547193180,1,1 +579.547243360,0,1 +579.647187080,0,0 +580.547177270,0,1 +580.547182340,1,1 +580.547232390,0,1 +580.647176190,0,0 +581.547166390,0,1 +581.547171410,1,1 +581.547221470,0,1 +581.647165300,0,0 +582.547155500,0,1 +582.547160510,1,1 +582.547210690,0,1 +582.647154420,0,0 +583.547144610,0,1 +583.547149960,1,1 +583.547200010,0,1 +583.647143530,0,0 +584.547133720,0,1 +584.547138860,1,1 +584.547188980,0,1 +584.647132630,0,0 +585.547122820,0,1 +585.547127880,1,1 +585.547178000,0,1 +585.647121730,0,0 +586.547111920,0,1 +586.547117150,1,1 +586.547167260,0,1 +586.647110840,0,0 +587.547101040,0,1 +587.547106250,1,1 +587.547156430,0,1 +587.647099940,0,0 +588.547090130,0,1 +588.547095290,1,1 +588.547145900,0,1 +588.647089050,0,0 +589.547079220,0,1 +589.547084390,1,1 +589.547134990,0,1 +589.647078140,0,0 +590.547068330,0,1 +590.547073880,1,1 +590.547124000,0,1 +590.647067230,0,0 +591.547057410,0,1 +591.547062440,1,1 +591.547113050,0,1 +591.647056330,0,0 +592.547046510,0,1 +592.547051620,1,1 +592.547102350,0,1 +592.647045420,0,0 +593.547035600,0,1 +593.547040670,1,1 +593.547091400,0,1 +593.647034520,0,0 +594.547024690,0,1 +594.547029860,1,1 +594.547080460,0,1 +594.647023600,0,0 +595.547013780,0,1 +595.547018740,1,1 +595.547068790,0,1 +595.647012690,0,0 +596.547002870,0,1 +596.547008030,1,1 +596.547058030,0,1 +596.647001770,0,0 +597.546991950,0,1 +597.546997110,1,1 +597.547047170,0,1 +597.646990870,0,0 +598.546981020,0,1 +598.546986120,1,1 +598.547036110,0,1 +598.646979940,0,0 +599.546970110,0,1 +599.546975140,1,1 +599.547025250,0,1 +599.646969030,0,0 +600.049582080,0,0 diff --git a/data/timebase_600s_summary.json b/data/timebase_600s_summary.json new file mode 100644 index 0000000..25ce9df --- /dev/null +++ b/data/timebase_600s_summary.json @@ -0,0 +1,26 @@ +{ + "mode": "timebase", + "duration_s": 600.0, + "interference_edges": 0, + "pps": { + "edges": 600, + "period_mean_s": 0.9999893584474122, + "period_sd_ns": 184.04405422857738, + "period_pp_ns": 720.0000304852239, + "analyzer_ppm": -10.641552587786762, + "dropped_pulses": 0, + "wander_sd_ns": 13953.808077687718, + "wander_pp_ns": 49615.90418905981, + "quantization_ns": 10.0, + "width_mean_ms": 99.99894093333407, + "width_sd_ns": 20.292745630561658 + }, + "timebase": { + "pulses": 600, + "E_c_median_us": 5.070000042906031, + "E_c_mean_us": 5.122016667705546, + "E_c_sd_us": 0.24612415609341187, + "E_c_min_us": 4.87999994902566, + "E_c_max_us": 8.930000035434205 + } +} \ No newline at end of file diff --git a/data/timebase_60s_edges.csv b/data/timebase_60s_edges.csv new file mode 100644 index 0000000..fd6d32e --- /dev/null +++ b/data/timebase_60s_edges.csv @@ -0,0 +1,243 @@ +Time [s],Channel 0,Channel 1 +0.000000000,0,0 +0.191258560,0,1 +0.191263670,1,1 +0.191313780,0,1 +0.291257550,0,0 +1.191248480,0,1 +1.191253590,1,1 +1.191303640,0,1 +1.291247480,0,0 +2.191238400,0,1 +2.191243430,1,1 +2.191293610,0,1 +2.291237410,0,0 +3.191228340,0,1 +3.191233420,1,1 +3.191283670,0,1 +3.291227350,0,0 +4.191218260,0,1 +4.191223350,1,1 +4.191273530,0,1 +4.291217260,0,0 +5.191208200,0,1 +5.191213210,1,1 +5.191263880,0,1 +5.291207200,0,0 +6.191198110,0,1 +6.191203230,1,1 +6.191253830,0,1 +6.291197110,0,0 +7.191188030,0,1 +7.191193050,1,1 +7.191243780,0,1 +7.291187020,0,0 +8.191177940,0,1 +8.191182960,1,1 +8.191233630,0,1 +8.291176940,0,0 +9.191167860,0,1 +9.191172870,1,1 +9.191222930,0,1 +9.291166840,0,0 +10.191157760,0,1 +10.191162900,1,1 +10.191212950,0,1 +10.291156760,0,0 +11.191147650,0,1 +11.191152950,1,1 +11.191203680,0,1 +11.291146650,0,0 +12.191137550,0,1 +12.191143400,1,1 +12.191193820,0,1 +12.291136550,0,0 +13.191127440,0,1 +13.191132470,1,1 +13.191182530,0,1 +13.291126440,0,0 +14.191117340,0,1 +14.191122440,1,1 +14.191172500,0,1 +14.291116320,0,0 +15.191107220,0,1 +15.191112320,1,1 +15.191162710,0,1 +15.291106220,0,0 +16.191097100,0,1 +16.191102200,1,1 +16.191152380,0,1 +16.291096100,0,0 +17.191086990,0,1 +17.191092070,1,1 +17.191142740,0,1 +17.291085970,0,0 +18.191076860,0,1 +18.191081880,1,1 +18.191132540,0,1 +18.291075860,0,0 +19.191066740,0,1 +19.191072280,1,1 +19.191122400,0,1 +19.291065730,0,0 +20.191056610,0,1 +20.191061630,1,1 +20.191112300,0,1 +20.291055610,0,0 +21.191046470,0,1 +21.191051490,1,1 +21.191101540,0,1 +21.291045470,0,0 +22.191036350,0,1 +22.191041700,1,1 +22.191092430,0,1 +22.291035330,0,0 +23.191026210,0,1 +23.191031190,1,1 +23.191081370,0,1 +23.291025200,0,0 +24.191016060,0,1 +24.191020970,1,1 +24.191071020,0,1 +24.291015060,0,0 +25.191005930,0,1 +25.191010830,1,1 +25.191060950,0,1 +25.291004910,0,0 +26.190995780,0,1 +26.191000680,1,1 +26.191051280,0,1 +26.290994770,0,0 +27.190985630,0,1 +27.190990520,1,1 +27.191041120,0,1 +27.290984620,0,0 +28.190975470,0,1 +28.190980680,1,1 +28.191030740,0,1 +28.290974470,0,0 +29.190965330,0,1 +29.190970550,1,1 +29.191020660,0,1 +29.290964320,0,0 +30.190955160,0,1 +30.190960380,1,1 +30.191010980,0,1 +30.290954160,0,0 +31.190945000,0,1 +31.190950170,1,1 +31.191000900,0,1 +31.290943990,0,0 +32.190934850,0,1 +32.190940020,1,1 +32.190990620,0,1 +32.290933840,0,0 +33.190924680,0,1 +33.190929710,1,1 +33.190980370,0,1 +33.290923670,0,0 +34.190914520,0,1 +34.190919550,1,1 +34.190970280,0,1 +34.290913500,0,0 +35.190904350,0,1 +35.190909390,1,1 +35.190959440,0,1 +35.290903340,0,0 +36.190894180,0,1 +36.190899200,1,1 +36.190949260,0,1 +36.290893170,0,0 +37.190884000,0,1 +37.190889030,1,1 +37.190939150,0,1 +37.290882990,0,0 +38.190873840,0,1 +38.190878910,1,1 +38.190928960,0,1 +38.290872830,0,0 +39.190863650,0,1 +39.190868720,1,1 +39.190918900,0,1 +39.290862640,0,0 +40.190853480,0,1 +40.190858650,1,1 +40.190908710,0,1 +40.290852460,0,0 +41.190843300,0,1 +41.190850640,1,1 +41.190900700,0,1 +41.290842290,0,0 +42.190833110,0,1 +42.190838320,1,1 +42.190888410,0,1 +42.290832100,0,0 +43.190822930,0,1 +43.190828150,1,1 +43.190878300,0,1 +43.290821930,0,0 +44.190812740,0,1 +44.190817910,1,1 +44.190868390,0,1 +44.290811730,0,0 +45.190802560,0,1 +45.190807790,1,1 +45.190858280,0,1 +45.290801540,0,0 +46.190792370,0,1 +46.190797920,1,1 +46.190847980,0,1 +46.290791360,0,0 +47.190782170,0,1 +47.190787190,1,1 +47.190837860,0,1 +47.290781160,0,0 +48.190771980,0,1 +48.190777010,1,1 +48.190826640,0,1 +48.290770950,0,0 +49.190761770,0,1 +49.190766800,1,1 +49.190816910,0,1 +49.290760760,0,0 +50.190751560,0,1 +50.190756590,1,1 +50.190806650,0,1 +50.290750550,0,0 +51.190741370,0,1 +51.190746450,1,1 +51.190796510,0,1 +51.290740340,0,0 +52.190731150,0,1 +52.190736230,1,1 +52.190786280,0,1 +52.290730140,0,0 +53.190720940,0,1 +53.190726010,1,1 +53.190776190,0,1 +53.290719920,0,0 +54.190710730,0,1 +54.190715800,1,1 +54.190765860,0,1 +54.290709710,0,0 +55.190700510,0,1 +55.190705570,1,1 +55.190755750,0,1 +55.290699500,0,0 +56.190690280,0,1 +56.190695640,1,1 +56.190745750,0,1 +56.290689270,0,0 +57.190680070,0,1 +57.190685230,1,1 +57.190735400,0,1 +57.290679060,0,0 +58.190669840,0,1 +58.190674980,1,1 +58.190725650,0,1 +58.290668820,0,0 +59.190659620,0,1 +59.190664540,1,1 +59.190715140,0,1 +59.290658590,0,0 +60.061777920,0,0 diff --git a/data/timebase_60s_summary.json b/data/timebase_60s_summary.json new file mode 100644 index 0000000..8f13975 --- /dev/null +++ b/data/timebase_60s_summary.json @@ -0,0 +1,26 @@ +{ + "mode": "timebase", + "duration_s": 60.0, + "interference_edges": 0, + "pps": { + "edges": 60, + "period_mean_s": 0.9999898484745762, + "period_sd_ns": 46.716366010470864, + "period_pp_ns": 170.00000074318677, + "analyzer_ppm": -10.151525423829355, + "dropped_pulses": 0, + "wander_sd_ns": 356.8480516341034, + "wander_pp_ns": 1200.3845540620173, + "quantization_ns": 10.0, + "width_mean_ms": 99.9989908333337, + "width_sd_ns": 8.998456074676088 + }, + "timebase": { + "pulses": 60, + "E_c_median_us": 5.080000000656781, + "E_c_mean_us": 5.150833333329718, + "E_c_sd_us": 0.32711512630354206, + "E_c_min_us": 4.889999999591055, + "E_c_max_us": 7.340000003352998 + } +} \ No newline at end of file diff --git a/measure_ntp.py b/measure_ntp.py new file mode 100644 index 0000000..0a60809 --- /dev/null +++ b/measure_ntp.py @@ -0,0 +1,86 @@ +#!/usr/bin/env python3 +""" +Measure NTP offset/delay to a server, optionally pinning the socket to a +specific interface so a VPN tunnel cannot capture the route. + +theta = ((T2 - T1) + (T3 - T4)) / 2 offset (server - local) +delta = (T4 - T1) - (T3 - T2) round-trip delay +""" +import argparse, socket, statistics, struct, sys, time + +NTP_UNIX_DELTA = 2208988800 +IP_BOUND_IF = 25 # macOS + + +def to_unix(ts): + return ((ts >> 32) & 0xFFFFFFFF) - NTP_UNIX_DELTA + (ts & 0xFFFFFFFF) / 2**32 + + +def query(host, port, iface, timeout): + s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) + if iface: + s.setsockopt(socket.IPPROTO_IP, IP_BOUND_IF, + struct.pack("I", socket.if_nametoindex(iface))) + s.settimeout(timeout) + pkt = bytearray(48) + pkt[0] = 0x1B # LI=0 VN=3 Mode=3 (client) + try: + t1 = time.time() + s.sendto(bytes(pkt), (host, port)) + data, _ = s.recvfrom(48) + t4 = time.time() + finally: + s.close() + li_vn_mode, stratum = data[0], data[1] + t2 = to_unix(struct.unpack("!Q", data[32:40])[0]) + t3 = to_unix(struct.unpack("!Q", data[40:48])[0]) + return {"offset": ((t2 - t1) + (t3 - t4)) / 2, + "delay": (t4 - t1) - (t3 - t2), + "proc": t3 - t2, + "stratum": stratum, + "li": (li_vn_mode >> 6) & 0x3} + + +def main(): + ap = argparse.ArgumentParser() + ap.add_argument("host") + ap.add_argument("-n", "--count", type=int, default=100) + ap.add_argument("-i", "--interval", type=float, default=0.1) + ap.add_argument("-I", "--iface", help="pin socket to interface, e.g. en9") + ap.add_argument("-p", "--port", type=int, default=123) + ap.add_argument("-t", "--timeout", type=float, default=2.0) + a = ap.parse_args() + + rs, fails = [], 0 + for k in range(a.count): + try: + rs.append(query(a.host, a.port, a.iface, a.timeout)) + except Exception as e: + fails += 1 + if fails <= 3: + print(f" query {k} failed: {e}", file=sys.stderr) + if k + 1 < a.count: + time.sleep(a.interval) + if not rs: + print("all queries failed"); return 1 + + off = [r["offset"] for r in rs] + dly = [r["delay"] for r in rs] + best = min(rs, key=lambda r: r["delay"]) # min-delay sample: least asymmetry + + print(f"host : {a.host} iface={a.iface or 'default route'}") + print(f"samples : {len(rs)} ok, {fails} failed") + print(f"stratum : {rs[0]['stratum']} LI={rs[0]['li']}") + print(f"delay min : {min(dly)*1e3:.3f} ms median {statistics.median(dly)*1e3:.3f} ms" + f" max {max(dly)*1e3:.3f} ms") + print(f"offset median: {statistics.median(off)*1e3:+.3f} ms" + f" sd {statistics.pstdev(off)*1e3:.3f} ms") + print(f"offset @ min-delay sample : {best['offset']*1e3:+.3f} ms " + f"(delay {best['delay']*1e3:.3f} ms)") + print(f"server processing T3-T2 : {statistics.median([r['proc'] for r in rs])*1e6:.1f} us") + print(f"|bias| <= delay/2 : {min(dly)/2*1e3:.3f} ms") + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/platformio.ini b/platformio.ini index 4b70918..20d0dcc 100644 --- a/platformio.ini +++ b/platformio.ini @@ -15,3 +15,17 @@ framework = arduino monitor_speed = 115200 lib_deps = sparkfun/SparkFun u-blox GNSS Arduino Library@^2.2.28 + +; Debug build: adds the time-base validation pulse on GPIO33. +; Scope GPIO33 against the PPS on GPIO16 — see TIMEBASE.md. +; The default env above is unaffected. +[env:esp32-poe-iso-timebase] +extends = env:esp32-poe-iso +build_flags = -D TIMEBASE_PULSE + +; Starvation-injection build for validating the PPS/PVT pairing guards. +; Stalls loop() 1050ms per iteration to sweep the stale-pairing window. +; NEVER deploy this — it is a test fixture. See TIMEBASE.md. +[env:esp32-poe-iso-starvetest] +extends = env:esp32-poe-iso +build_flags = -D STARVE_TEST diff --git a/pps_capture.py b/pps_capture.py new file mode 100644 index 0000000..529f4e4 --- /dev/null +++ b/pps_capture.py @@ -0,0 +1,266 @@ +#!/usr/bin/env python3 +""" +Capture Caesium's PPS with a Saleae logic analyzer and characterise it. + +Two modes: + + --mode pps One channel: the GPS PPS. Reports period stability, jitter, + pulse width and dropped pulses. Measures the *analyzer's* + crystal error as a by-product, since a GPS-disciplined PPS + is the more accurate of the two clocks by orders of magnitude. + + --mode timebase Two channels: PPS plus the GPIO33 validation pulse emitted by + a firmware built with -D TIMEBASE_PULSE. Reports E_c, the + error between Caesium's *served* second and its own PPS. + + E_c = t_pulse - t_PPS(nearest) + + Positive E_c => the served second is long => Caesium serves + time that runs SLOW by that amount. See TIMEBASE.md. + +Both modes measure only intervals between edges that Caesium itself generates, +so the host clock never enters the result. That is deliberate: the analyzer's +absolute timestamps are software-applied at capture start and scatter by tens +of milliseconds, which is useless at this scale. + +Examples: + python3 pps_capture.py --mode pps --duration 300 + python3 pps_capture.py --mode timebase --duration 600 --json out.json +""" + +import argparse +import csv +import json +import os +import statistics +import sys +import tempfile + +import saleae_mcp + +# The PPS is 100 ms wide and the validation pulse 50 us, so a 5 us glitch +# filter rejects interference picked up on the probe without touching either. +DEFAULT_GLITCH_US = 5.0 + + +def capture(duration, channels, sample_rate, glitch_us, outdir, save_sal=None): + """Run one timed capture and return {channel: [(time, value), ...]}.""" + # Logic 2 resolves these paths in its own process, not ours, so a relative + # path would silently write somewhere else entirely. + outdir = os.path.abspath(outdir) + if save_sal: + save_sal = os.path.abspath(save_sal) + saleae_mcp.init() + cfg = { + "logicChannels": {"digitalChannels": list(channels)}, + "digitalSampleRate": sample_rate, + } + if glitch_us: + cfg["glitchFilters"] = [{"channelIndex": c, + "pulseWidthSeconds": glitch_us * 1e-6} + for c in channels] + started = saleae_mcp.tool_json("start_capture", { + "logicDeviceConfiguration": cfg, + "captureConfiguration": { + "bufferSizeMegabytes": 8000, + "timedCaptureMode": {"durationSeconds": duration}}, + }) + cid = started["captureId"] + try: + saleae_mcp.tool("wait_capture", {"captureId": cid}) + saleae_mcp.tool("export_raw_data_csv", { + "captureId": cid, "directory": outdir, "analogDownsampleRatio": 1}) + if save_sal: + # NOTE: the parameter is 'filepath', not 'filePath'. + saleae_mcp.tool("save_capture", {"captureId": cid, + "filepath": save_sal}) + finally: + saleae_mcp.tool("close_capture", {"captureId": cid}) + + path = os.path.join(outdir, "digital.csv") + with open(path) as fh: + reader = csv.reader(fh) + header = next(reader) + # Header is "Time [s], Channel N, Channel M, ..." + cols = [int(h.split()[-1]) for h in header[1:]] + series = {c: [] for c in cols} + for row in reader: + if not row: + continue + t = float(row[0]) + for c, v in zip(cols, row[1:]): + series[c].append((t, int(v))) + return series + + +def edges(samples): + """Return (rising, falling) edge times from a transition list.""" + rise, fall = [], [] + for i, (t, v) in enumerate(samples): + if i == 0: + continue + if v == 1 and samples[i - 1][1] == 0: + rise.append(t) + elif v == 0 and samples[i - 1][1] == 1: + fall.append(t) + return rise, fall + + +def select_pps_edges(rise, fall, width_ms, tol_ms): + """ + Keep only rising edges that begin a pulse of the expected PPS width. + + Interference picked up on the probe produces edges of essentially any + width except the configured one, so matching on pulse width identifies the + real PPS far more reliably than a glitch filter alone. Returns the matched + (rising, falling) pairs. + """ + lo, hi = (width_ms - tol_ms) / 1e3, (width_ms + tol_ms) / 1e3 + keep_r, keep_f = [], [] + j = 0 + for tr in rise: + while j < len(fall) and fall[j] <= tr: + j += 1 + if j < len(fall) and lo <= fall[j] - tr <= hi: + keep_r.append(tr) + keep_f.append(fall[j]) + return keep_r, keep_f + + +def analyse_pps(rise, fall, sample_rate): + """Period, jitter, width and continuity statistics for the PPS.""" + if len(rise) < 3: + raise SystemExit(f"only {len(rise)} PPS edges captured — check wiring") + per = [rise[i + 1] - rise[i] for i in range(len(rise) - 1)] + mean = statistics.fmean(per) + dropped = sum(1 for p in per if abs(p - mean) > 0.5) + + # A least-squares line through (index, time) removes the constant frequency + # difference between the two clocks; what is left is wander, dominated by + # the analyzer's uncompensated crystal. + k = list(range(len(rise))) + kb, tb = statistics.fmean(k), statistics.fmean(rise) + slope = (sum((x - kb) * (y - tb) for x, y in zip(k, rise)) + / sum((x - kb) ** 2 for x in k)) + resid = [(y - (tb + slope * (x - kb))) * 1e9 for x, y in zip(k, rise)] + + out = { + "edges": len(rise), + "period_mean_s": mean, + "period_sd_ns": statistics.pstdev(per) * 1e9, + "period_pp_ns": (max(per) - min(per)) * 1e9, + "analyzer_ppm": (mean - 1.0) * 1e6, + "dropped_pulses": dropped, + "wander_sd_ns": statistics.pstdev(resid), + "wander_pp_ns": max(resid) - min(resid), + "quantization_ns": 1e9 / sample_rate, + } + widths = [f - r for r, f in zip(rise, fall)] + if widths: + out["width_mean_ms"] = statistics.fmean(widths) * 1e3 + out["width_sd_ns"] = statistics.pstdev(widths) * 1e9 + return out + + +def analyse_timebase(pps_rise, pulse_rise): + """E_c for each validation pulse: signed distance to the nearest PPS edge.""" + if not pulse_rise: + raise SystemExit( + "no pulses on the validation channel — is the firmware built with " + "-D TIMEBASE_PULSE and GPIO33 wired to the analyzer?") + deltas = [] + i = 0 + for tp in pulse_rise: + while i + 1 < len(pps_rise) and abs(pps_rise[i + 1] - tp) < abs(pps_rise[i] - tp): + i += 1 + deltas.append((tp - pps_rise[i]) * 1e6) # microseconds + return { + "pulses": len(deltas), + "E_c_median_us": statistics.median(deltas), + "E_c_mean_us": statistics.fmean(deltas), + "E_c_sd_us": statistics.pstdev(deltas) if len(deltas) > 1 else 0.0, + "E_c_min_us": min(deltas), + "E_c_max_us": max(deltas), + } + + +def main(): + ap = argparse.ArgumentParser( + description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter) + ap.add_argument("--mode", choices=["pps", "timebase"], default="pps") + ap.add_argument("--duration", type=float, default=300.0, + help="capture length in seconds (default 300)") + ap.add_argument("--pps-channel", type=int, default=1) + ap.add_argument("--pulse-channel", type=int, default=0, + help="GPIO33 validation pulse channel (timebase mode)") + ap.add_argument("--sample-rate", type=int, default=100_000_000) + ap.add_argument("--glitch-us", type=float, default=DEFAULT_GLITCH_US, + help=f"glitch filter width (default {DEFAULT_GLITCH_US}), 0 to disable") + ap.add_argument("--pps-width-ms", type=float, default=100.0, + help="expected PPS pulse width (u-blox default 100 ms)") + ap.add_argument("--width-tol-ms", type=float, default=1.0, + help="tolerance when matching the PPS pulse width") + ap.add_argument("--outdir", help="where to write CSV (default: temp dir)") + ap.add_argument("--save-sal", help="also save the raw .sal capture here") + ap.add_argument("--json", help="write results as JSON to this path") + a = ap.parse_args() + + channels = [a.pps_channel] + if a.mode == "timebase": + channels.insert(0, a.pulse_channel) + + outdir = a.outdir or tempfile.mkdtemp(prefix="caesium-pps-") + os.makedirs(outdir, exist_ok=True) + print(f"# capturing {a.duration:.0f}s on channels {channels} " + f"at {a.sample_rate/1e6:.0f} MS/s (glitch filter {a.glitch_us} us)") + series = capture(a.duration, channels, a.sample_rate, a.glitch_us, + outdir, a.save_sal) + + raw_rise, raw_fall = edges(series[a.pps_channel]) + pps_rise, pps_fall = select_pps_edges(raw_rise, raw_fall, + a.pps_width_ms, a.width_tol_ms) + rejected = len(raw_rise) - len(pps_rise) + if rejected: + print(f"# rejected {rejected} of {len(raw_rise)} rising edges on " + f"ch{a.pps_channel} as interference (wrong pulse width)") + if rejected > len(pps_rise): + print("# WARNING: most edges were interference. Check the probe " + "ground lead — a floating return picks up switching noise.") + results = {"mode": a.mode, "duration_s": a.duration, + "interference_edges": rejected, + "pps": analyse_pps(pps_rise, pps_fall, a.sample_rate)} + + p = results["pps"] + print(f"\n--- PPS on channel {a.pps_channel} ---") + print(f"edges : {p['edges']} in {a.duration:.0f}s, " + f"{p['dropped_pulses']} dropped") + print(f"period mean : {p['period_mean_s']:.9f} s") + print(f" -> analyzer clock: {p['analyzer_ppm']:+.3f} ppm " + f"(PPS is the reference; this is the Saleae's error)") + print(f"cycle-to-cycle sd : {p['period_sd_ns']:.1f} ns " + f"(quantization {p['quantization_ns']:.0f} ns)") + print(f"wander over run : {p['wander_pp_ns']/1000:.2f} us peak-to-peak") + if "width_mean_ms" in p: + print(f"pulse width : {p['width_mean_ms']:.6f} ms " + f"(sd {p['width_sd_ns']:.1f} ns)") + + if a.mode == "timebase": + pulse_rise, _ = edges(series[a.pulse_channel]) + tb = analyse_timebase(pps_rise, pulse_rise) + results["timebase"] = tb + print(f"\n--- Time-base validation pulse on channel {a.pulse_channel} ---") + print(f"pulses : {tb['pulses']}") + print(f"E_c median : {tb['E_c_median_us']:+.3f} us") + print(f"E_c mean / sd : {tb['E_c_mean_us']:+.3f} / {tb['E_c_sd_us']:.3f} us") + print(f"E_c range : {tb['E_c_min_us']:+.3f} .. {tb['E_c_max_us']:+.3f} us") + print("\npositive E_c => Caesium's served second is long => it serves time SLOW") + + if a.json: + with open(a.json, "w") as fh: + json.dump(results, fh, indent=1) + print(f"\n# wrote {a.json}") + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/saleae_mcp.py b/saleae_mcp.py new file mode 100644 index 0000000..7b5243e --- /dev/null +++ b/saleae_mcp.py @@ -0,0 +1,97 @@ +#!/usr/bin/env python3 +""" +Minimal MCP-over-HTTP client for the Saleae Logic 2 automation server. + +Logic 2 exposes an MCP server at 127.0.0.1:10530 once it is enabled under +Settings -> Automation -> MCP Server. This module talks to it directly over +HTTP so the capture scripts work from a plain shell, with no agent or SDK +in the loop. + +Usage as a library: + import saleae_mcp + saleae_mcp.init() + print(saleae_mcp.tool("get_devices")) + +Usage from the shell: + python3 saleae_mcp.py get_devices + python3 saleae_mcp.py export_raw_data_csv '{"captureId":1, ...}' +""" + +import json +import sys +import urllib.error +import urllib.request + +URL = "http://127.0.0.1:10530" +TIMEOUT = 900 # captures block; wait_capture can run for minutes + +_next_id = [0] + + +class LogicError(RuntimeError): + """An error returned by the Logic 2 MCP server.""" + + +def call(method, params=None): + """Issue a JSON-RPC call and return the `result` object.""" + _next_id[0] += 1 + body = {"jsonrpc": "2.0", "id": _next_id[0], "method": method} + if params is not None: + body["params"] = params + req = urllib.request.Request( + URL, + data=json.dumps(body).encode(), + headers={"Content-Type": "application/json", + "Accept": "application/json, text/event-stream"}, + ) + try: + raw = urllib.request.urlopen(req, timeout=TIMEOUT).read().decode() + except urllib.error.URLError as e: + raise LogicError( + f"cannot reach Logic 2 at {URL}: {e}. Is Logic 2 running with " + f"Settings -> Automation -> MCP Server enabled?") from e + # Responses may arrive as plain JSON or as a text/event-stream frame. + for line in raw.splitlines(): + line = line[6:] if line.startswith("data: ") else line + if line.strip().startswith("{"): + msg = json.loads(line) + if "error" in msg: + raise LogicError(msg["error"]) + return msg.get("result") + raise LogicError(f"no JSON-RPC payload in response: {raw[:400]}") + + +def tool(name, args=None): + """Call a tool and return its concatenated text content.""" + result = call("tools/call", {"name": name, "arguments": args or {}}) + return "\n".join(c["text"] for c in result.get("content", []) + if c.get("type") == "text") + + +def tool_json(name, args=None): + """Call a tool whose text content is a JSON object, and parse it.""" + text = tool(name, args) + try: + return json.loads(text) + except json.JSONDecodeError as e: + raise LogicError(f"{name} did not return JSON: {text[:300]}") from e + + +def init(): + """Perform the MCP handshake. Call once before any tool().""" + call("initialize", {"protocolVersion": "2025-03-26", "capabilities": {}, + "clientInfo": {"name": "caesium", "version": "1"}}) + + +def main(): + if len(sys.argv) < 2: + print(__doc__.strip()) + return 2 + init() + args = json.loads(sys.argv[2]) if len(sys.argv) > 2 else {} + print(tool(sys.argv[1], args)) + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/session.md b/session.md new file mode 100644 index 0000000..394da4d --- /dev/null +++ b/session.md @@ -0,0 +1,264 @@ +# Session record — 2026-08-30 + +Full narrative of the Caesium accuracy investigation: what was measured, what +was concluded, and — importantly — where reasoning was wrong and had to be +corrected. For "what to do next" in condensed form, see +[HANDOFF.md](HANDOFF.md). For the conditional firmware design, see +[HWTIMESTAMPING.md](HWTIMESTAMPING.md). + +Machines: **serv1** (Lenovo ThinkServer TS140, `192.168.75.3/22`, `eno1` +e1000e, chrony 4.2) measuring **Caesium** (`192.168.71.54`, +`caesium.ubnt.local`, ESP32-PoE-ISO + u-blox NEO-M9N). + +--- + +## Phase 1 — Locating the test setup + +Question was where the skew testing lived and what the connection details were. + +Found in-repo: `TESTING.md` (chrony soak procedure), `analyze_chrony.py`, +`test_ntp.py`, `test_ntp_stability.py`, `report_20260401.log` (a completed +3.9-day run). Nothing skew-related elsewhere in the home dir except a stale copy +of `test_ntp_stability.py` in `~/tmp`, one blank line off from the repo version. + +Connection details: `caesium.ubnt.local` / `192.168.71.54`, port 123. Serial +console 115200; GPS UART 38400 UBX-only. Build is +`~/.platformio/penv/bin/pio run` per `AGENTS.md` — **but `~/.platformio` does +not exist on serv1**, so the project cannot be built here. + +**Config contradiction found.** Caesium was configured twice, contradictorily: + +- `/etc/chrony/chrony.conf` → `server 192.168.71.54 iburst prefer` +- `/etc/chrony/sources.d/caesium-ntp-server.sources` → `server caesium.ubnt.local minpoll 2 maxpoll 4 noselect` + +`chronyc sources` showed a single `^*` entry, so chrony was already discarding +the duplicate. Resolved by removing the `noselect` entry (below). + +--- + +## Phase 2 — The 29-day analysis + +`analyze_chrony.py` only opens the un-rotated `measurements.log` / +`statistics.log`, so running it directly at `/var/log/chrony/` would have +yielded ~18 hours. Concatenated `.4 .3 .2 .1` + current into a scratch dir +first, giving **2026-08-02 → 08-31, 28.8 days, 4119 Caesium samples**. +Retention is 4 weekly rotations, so the April data is long gone. + +Clean results, reboot window excluded: + +| Source | Offset mean | sd | Delay | +|---|---|---|---| +| **Caesium (S1)** | +0.002 ms | 0.103 ms | 0.701 ms | +| NIST ×3 (S1) | +0.77 … +0.82 ms | ~0.3 ms | ~7 ms | +| Google ×2 (S1) | +0.74, +0.77 ms | ~0.4 ms | ~14 ms | +| Canonical ×4 (S2) | −1.74 … −0.16 ms | 1.0–3.1 ms | 45–114 ms | + +Jitter 0.024 ms, freq offset +0.002 ppm, LI=`N` on all 4119 samples — no loss +of sync in four weeks. This closes the outstanding `TODO.md` item ("soak this +against a linux box for a week or so"). + +**Critical caveat.** Since 2026-03-30 `chrony.conf` carries `prefer`, so serv1's +clock is disciplined TO Caesium. Caesium's own measured offset is ~0 *by +construction* and is not evidence of accuracy. The real signal is the +0.81 ms +that independent stratum-1 servers show against the Caesium-disciplined clock. + +**The 310 ms excursion.** Nine of 4119 samples exceed |1 ms|; three are one +event at 2026-08-20 23:18:56–23:19:01 UTC. `journalctl --list-boots` showed boot +−1 ending 17:16 MDT and boot 0 starting 17:18 MDT — **serv1 rebooted**. Every +source saw +308…+312 ms simultaneously and Caesium was the tightest of them. +Not a device fault. + +--- + +## Phase 3 — Eliminating hypotheses + +**Thermal — ruled out.** Mean offset by local hour over 28.8 days varies only +0.128 ms peak-to-peak, with no coherent daily cycle (min at 20–21h, maxima at +07h *and* 15–16h). Structurally impossible regardless: thermal drift is a +frequency effect and PPS re-disciplines every second. + +**Interpolation-rate error — ruled out.** Wrote a live test sweeping 400 queries +uniformly across the sub-second phase. Offset flat vs phase, slope **+15 µs per +full second** (~15 ppm residual). The EMA crystal calibration in +`gps_time.cpp` provably works. Server processing (T3−T2) measured at **23.7 µs**. + +**Leap seconds — ruled out.** LI=`N` on all samples; leap errors are 1 s. + +**Aging / drift — ruled out.** See the April comparison in Phase 4. + +**Code review.** `ntp.cpp` and `gps_time.cpp` read clean. `hwTimeToNtp` uses the +calibrated interval; interpolation error is bounded by ppm × elapsed, i.e. +microseconds. Two minor gaps found in `main.cpp`: no +`setDynamicModel(DYN_MODEL_STATIONARY)` (receiver runs the default portable +model despite being bolted to a shelf), and `userConfigDelay` is inherited from +the module rather than set. Both sub-µs; neither relevant to the question. + +--- + +## Phase 4 — The asymmetry decomposition + +Six un-stamped legs, none visible to NTP: + +``` +theta = E + ½[(c_tx + d_fwd + s_rx) − (s_tx + d_rev + c_rx)] +delta = (c_tx + d_fwd + s_rx) + (s_tx + d_rev + c_rx) +``` + +So bias = ½(upstream − downstream) and **|bias| ≤ delta/2**, exactly. `s_proc` +cancels entirely — separate T2/T3 stamps buy that, so the 23.7 µs costs nothing. +Only the *difference* matters, never the magnitude. + +Budget from chrony's kernel-stamped 0.504 ms floor: ~40–50 µs wire, ~10–20 µs +client legs, leaving **~390 µs as `s_rx + s_tx` inside the ESP32**. The +NTP-minus-ICMP gap (0.504 − 0.407) pins `s_tx ≥ ~100 µs`, because lwIP's +`icmp_input` builds its echo reply in the received pbuf while the NTP path does +`pbuf_alloc` + `memcpy` + `udp_sendto`. + +**Therefore Caesium's own share is capped at ~0.25 ms** and cannot produce +0.81 ms. Expected sign works against it too: `s_rx` crosses two context +switches (EMAC ISR → `emac_rx` task → `tcpip_thread`) before stamping while +`s_tx` runs inline, so `s_rx > s_tx` is likely, giving a *positive* bias — +opposite to what's observed. + +**April vs August, done correctly.** (internet S1) − (Caesium), medians: +0.97 ms in April, 0.81 ms now. Stable across 5 months, a config change, a +reboot, and different server IPs. Nothing is drifting. + +--- + +## Phase 5 — Topology + +`ip route get 192.168.71.54` → **via 192.168.72.1**. serv1 is `192.168.75.3/22` +(covers .72.0–.75.255); Caesium at `.71.54` is outside it. The path is +**routed, not switched**: serv1 → switch → UniFi gateway → switch → ESP32. + +Ping evidence: + +``` +ICMP to Caesium min 0.407 avg 0.488 max 0.742 mdev 0.041 ms +ICMP to gateway min 0.127 avg 0.227 max 4.394 mdev 0.320 ms +NTP delta min 0.504 (chrony, kernel stamps) +``` + +Three readings: the **floor is the ESP32** (0.407 vs 0.127 to a router one hop +closer); NTP is ~100 µs slower than ICMP to the same device, pricing the +post-stamp TX path; and the network gear is **jittery, not biased** — the +gateway's own control-plane replies wander (4.4 ms max) but traffic *forwarded* +through it is tight (mdev 0.041 ms). Queueing is non-negative both ways and +chrony's clock filter takes minimum-delay samples, so it cannot manufacture a +one-directional bias. + +`traceroute` to NIST and Google share only hops 1–3 — +`192.168.72.1` → `207.225.112.10` → `63.225.124.73` — then diverge. A constant +absolute bias across both despite divergent onward paths points at that shared +segment. + +--- + +## Phase 6 — Hardware timestamping feasibility + +**serv1 can do it today.** `ethtool -T eno1` reports `hardware-transmit`, +`hardware-receive`, a PTP hardware clock, and RX filter mode `all` — that last +one is what chrony needs to stamp non-PTP packets. `hwtimestamp eno1` works +now, unused. + +**Caesium cannot.** Searched and confirmed: the original ESP32 EMAC has no IEEE +1588 unit. Espressif's kostaond in esp-idf #13423: *"ESP32 does not support +hardware time stamping in MAC module"* and *"IEEE1588 is not supported by ESP32. +The ESP32 TRM used to list it as supported feature in past but it was a +mistake."* Only ESP32-P4 has the silicon. This explains esp32.com t=30889, where +someone finds `TxTimestampStatus` permanently 0. + +No separate NIC firmware exists either — the MAC is on-die and the LAN8720A is a +PHY with no CPU. So any driver work is ordinary C in the project's own binary. +The obstacle is that `framework = arduino` ships `esp_eth` as a precompiled +`.a`; patching means moving to `framework = espidf`. + +**The protocol question.** Client-side and server-side *RX* stamping are purely +local — no wire change, works with any peer. Server-side *TX* stamping cannot +be local (you can't put a packet's departure time inside that packet), so it +needs [RFC 9769 — NTP Interleaved Modes](https://www.rfc-editor.org/rfc/rfc9769.html) +(May 2025). Friendly shape: no header change, no extension fields, implicit +negotiation via the origin timestamp, graceful fallback to basic mode. chrony +4.2 implements it as `xleave`; currently `Interleaved : No`. + +**The asymmetry trap.** Because bias is a difference, a one-sided fix can be a +net loss. With `s_rx ≈ 290 µs`, `s_tx ≈ 100 µs`: today ≈ +95 µs; **TX fixed +alone ≈ +145 µs, worse**; RX alone ≈ −50 µs; both ≈ 0. The TX side is the one +you'd naturally reach for first, and it's the harmful one alone. + +--- + +## Phase 7 — Reference clock options + +serv1 has a real 16550A at `0x3F8` (`ttyS0`, idle, verified silent at 9600 and +38400), `pps_ldisc` and `pps_gpio` modules present, chrony built `+REFCLOCK`. +No GPS is attached (`/sys/class/pps/` empty, no `/dev/pps*`, no USB serial, no +`gpsd`). So PPS-into-DCD is available: `ldattach PPS /dev/ttyS0` + +`refclock PPS /dev/pps0`. chrony's PPS driver needs a companion source for the +integer second, but the existing network servers serve that fine — their +sub-second error is discarded. + +**Shared PPS between the two machines — abandoned.** Would buy ~30 ns of +common-mode cancellation against an 800,000 ns question, at the cost of a 5.5 m +run, ground-loop risk against the PoE-**ISO** isolation, and level shifting. +Also established: never put a microcontroller in a PPS path — it *regenerates* +the edge with µs-scale variable latency, injecting exactly the error class being +measured. Buffer, never regenerate. Wire length is a non-issue regardless: +~5 ns/m, so 5.5 m is 27.5 ns and you'd need ~160 km to matter. + +--- + +## Phase 8 — Where it landed + +Two hypotheses remain, **observationally identical from serv1**: + +- **(a)** shared-segment WAN asymmetry ≥1.12 ms upstream-slower +- **(b)** Caesium genuinely 0.78 ms slow + +Both predict what we see. The tiebreaker is *mechanism*, not data: (a) has +plausible ones; (b) has none, since the device is capped at 0.25 ms and the GPS +is bounded at µs. But that is inference from bounds, and the GPS time base was +never actually measured — the weakest link. + +Chosen next action: a **time-base validation pulse** on GPIO33 (verified free +against `ESP32-POE-ISO-PINOUT.png`; GPIO17 is the Ethernet clock and isn't led +out), scoped against the PPS on GPIO16. Pulse landing after the PPS edge = +Caesium running slow by that much. Full code and decision tree in HANDOFF.md. + +--- + +## Corrections made during the session + +Recorded because they explain why the conclusions are shaped as they are. + +| Claim | Correction | +|---|---| +| "Bias can't be network asymmetry — it doesn't scale with RTT" | **Wrong.** Asymmetry in the *shared last mile* is a constant absolute offset regardless of remote distance. Exactly this signature. | +| "The differential roughly doubled since April" | **Wrong.** Compared Caesium's raw offset across two discipline regimes. Like-for-like, it's stable: 0.97 → 0.81 ms. | +| "Delay/jitter slightly better than April" | Marginally *worse* (0.693→0.701 ms, 0.020→0.024 ms), inside run-to-run noise. | +| "DesignWare MACs generally include a 1588 unit, so this is plausible" | **Wrong for ESP32.** No unit exists; the TRM listing it was an erratum. | +| "Five independent stratum-1 sources agree" | Google is unusable: anycast, ICMP min 2.22 ms vs NTP peer delay 13.78 ms. Effective references: **two organisations**. | +| "One switch between host and device" | **Routed, not switched** — different subnet, via the gateway. | +| "Sharing one GPS is better (common-mode cancellation)" | Over-sold. The cancelled error is ~30 ns against 800,000 ns — irrelevant at this scale. | +| User: "you don't have root, I may need to make the chrony change" | Passwordless sudo was available; the change had already been made. | + +--- + +## Changes made to the system + +- `/etc/chrony/sources.d/caesium-ntp-server.sources` — removed the `noselect` + Caesium entry. File now empty; original saved as `.bak` alongside. + `nist.sources` untouched. No chronyd restart needed (chrony was already + discarding the duplicate). +- **No firmware changes.** No code in `src/` was modified. +- Files created: `report_20260830.log`, `HWTIMESTAMPING.md`, `HANDOFF.md`, + `session.md`. + +## Still open + +- `TODO.md` soak item is unchecked but is now done, with 28.8 days behind it. +- `HANDOFF.md`, `HWTIMESTAMPING.md`, `session.md` are untracked and need + committing to travel. `report_*.log` are gitignored via `*.log` and will not. +- `AGENTS.md` points at `~/.platformio/penv/bin/pio`, which does not exist on + serv1. diff --git a/src/gps_time.cpp b/src/gps_time.cpp index 4cec8d9..eed4311 100644 --- a/src/gps_time.cpp +++ b/src/gps_time.cpp @@ -36,6 +36,16 @@ static volatile bool ppsIntervalValid = false; static volatile uint32_t ppsSequence = 0; static volatile uint32_t ppsSeqAtUartRead = 0; +// Longest gap between loop iterations that still lets us trust a buffered PVT. +// The PVT for a given second lands ~34ms after its PPS, so the stale-pairing +// window needs a gap of ~966ms. 500ms is comfortably conservative and costs at +// most one sync when it trips. +#define UART_CYCLE_MAX_GAP_US 500000 + +static volatile int64_t lastLatchUs = 0; +static volatile bool uartCycleSuspect = false; +static volatile uint32_t droppedPairings = 0; + // Debug counters volatile uint32_t ppsCount = 0; volatile bool ppsTriggered = false; @@ -167,10 +177,27 @@ void pvtCallback(UBX_NAV_PVT_data_t *pvtData) { // has already been overwritten. Pairing them would publish a 1s-stale // time. Drop the publish; the next edge+PVT will sync cleanly. if (ppsSequence != ppsSeqAtUartRead) { + droppedPairings++; ppsFlag = false; portEXIT_CRITICAL(&timeStateMux); return; } + // The same failure reached the other way. The sequence check only catches an + // edge that fires *after* the latch. If this task was never scheduled for a + // full second, the latch itself ran after the edge and the counters compare + // equal — yet the PVT we just parsed still predates the edge whose timestamp + // we are holding. Nothing else distinguishes them: that timestamp is fresh + // either way, so the ppsAge guard above passes too. The gap between loop + // iterations is the only remaining evidence. + // + // Leave ppsFlag set. The edge itself is perfectly good — only this PVT is + // stale — so the next PVT pairs with it correctly one second from now rather + // than waiting two. + if (uartCycleSuspect) { + droppedPairings++; + portEXIT_CRITICAL(&timeStateMux); + return; + } timeState.epochSec = epoch; timeState.ppsTimeMicros = capturedPpsUs; timeState.usPerPps = calibratedInterval; @@ -182,11 +209,22 @@ void pvtCallback(UBX_NAV_PVT_data_t *pvtData) { } void latchUartCycleSequence() { + int64_t now = esp_timer_get_time(); portENTER_CRITICAL(&timeStateMux); + uartCycleSuspect = + (lastLatchUs != 0) && ((now - lastLatchUs) > UART_CYCLE_MAX_GAP_US); + lastLatchUs = now; ppsSeqAtUartRead = ppsSequence; portEXIT_CRITICAL(&timeStateMux); } +uint32_t getDroppedPairingCount() { + portENTER_CRITICAL(&timeStateMux); + uint32_t n = droppedPairings; + portEXIT_CRITICAL(&timeStateMux); + return n; +} + void initGpsTime(uint8_t ppsPin) { timeState.epochSec = 0; timeState.ppsTimeMicros = 0; diff --git a/src/gps_time.h b/src/gps_time.h index e6813c4..eaa5e03 100644 --- a/src/gps_time.h +++ b/src/gps_time.h @@ -86,4 +86,11 @@ bool consumeSyncEvent(); */ void latchUartCycleSequence(); +/** + * Number of PVT publishes dropped because the PPS/PVT pairing could not be + * trusted. Non-zero means this device was starved across a second boundary; + * a steadily climbing value is worth investigating. + */ +uint32_t getDroppedPairingCount(); + #endif // GPS_TIME_H diff --git a/src/main.cpp b/src/main.cpp index f4442ff..624b40c 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -20,6 +20,72 @@ #include "gps_time.h" #include "ntp.h" +#ifdef TIMEBASE_PULSE +/* + * Time-base validation pulse (debug builds only — see TIMEBASE.md). + * + * Fires a pulse one *served* second after the PPS that the NTP time base is + * currently interpolating from. Scope it against the real PPS on GPIO16: + * the next real PPS arrives one *true* second after that reference edge, so + * + * pulse landing AFTER the PPS edge = Caesium serving slow by that much. + * + * Both edges originate on the device, so the measurement is a pure interval + * and never touches the host clock. + * + * The pulse is driven on GPIO33 *and* GPIO32 simultaneously. Both are free on + * the EXT header, both are output-capable, and both live in the out1 register + * bank -- so a single write drives them with no skew between them. Probing + * either one gives the same measurement, which removes a fiddly pin-counting + * step on a dense 10-pin header where GPIO34-39 are input-only and a slip onto + * one of them is indistinguishable from a bad contact. + * + * GPIO17 is the Ethernet clock and is not led out; do not use it. + */ +#include "soc/gpio_struct.h" + +#define TIMEBASE_PIN 33 // primary, 2 pins above the PPS on the EXT header +#define TIMEBASE_PIN_ALT 32 // secondary, directly adjacent to the PPS pin +#define TIMEBASE_BIT ((1UL << (TIMEBASE_PIN - 32)) | (1UL << (TIMEBASE_PIN_ALT - 32))) +#define TIMEBASE_ARM_WINDOW_US 2000 // only busy-wait when this close +#define TIMEBASE_PULSE_WIDTH_US 50 + +// Count of pulses actually emitted, for the periodic debug line. +static uint32_t timebasePulseCount = 0; + +/* + * Emit the pulse if we are within the arming window of the next served second. + * Cheap to call every loop() iteration; returns immediately in the common case. + */ +static void emitTimebasePulse() { + static uint32_t lastPulseSec = 0; + + TimeState s; + getTimeStateAtomic(s); + if (!s.valid || s.epochSec == lastPulseSec) { + return; + } + + // One served second after the reference PPS, using the same calibrated + // interval that hwTimeToNtp() uses. If the crystal calibration is wrong, + // this pulse is wrong by exactly the same amount the served time is. + int64_t target = s.ppsTimeMicros + (int64_t)s.usPerPps; + int64_t delta = target - esp_timer_get_time(); + if (delta <= 0 || delta > TIMEBASE_ARM_WINDOW_US) { + return; // too early to arm, or already missed it this second + } + + lastPulseSec = s.epochSec; + while (esp_timer_get_time() < target) { + // Busy-wait, sub-microsecond. Bounded by TIMEBASE_ARM_WINDOW_US. + } + GPIO.out1_w1ts.val = TIMEBASE_BIT; + delayMicroseconds(TIMEBASE_PULSE_WIDTH_US); + GPIO.out1_w1tc.val = TIMEBASE_BIT; + timebasePulseCount++; +} +#endif // TIMEBASE_PULSE + // Hostname used for both ETH and mDNS const char HOSTNAME[] = "caesium"; @@ -151,6 +217,15 @@ void setup() { // Initialize PPS interrupt initGpsTime(PPS_PIN); +#ifdef TIMEBASE_PULSE + pinMode(TIMEBASE_PIN, OUTPUT); + digitalWrite(TIMEBASE_PIN, LOW); + pinMode(TIMEBASE_PIN_ALT, OUTPUT); + digitalWrite(TIMEBASE_PIN_ALT, LOW); + Serial.printf("[INIT] Time-base validation pulse enabled on GPIO%d and GPIO%d\n", + TIMEBASE_PIN, TIMEBASE_PIN_ALT); +#endif + // Initialize Ethernet (NTP server starts when we get an IP) Serial.println(F("[INIT] Starting Ethernet...")); Network.onEvent(onEthEvent); @@ -190,6 +265,17 @@ void loop() { int32_t driftPpm = (int32_t)cal - 1000000; Serial.printf("[DRIFT] Crystal: %lu us/pps (%+ld ppm)\n", (unsigned long)cal, (long)driftPpm); + uint32_t dropped = getDroppedPairingCount(); + if (dropped > 0) { + Serial.printf("[PAIRING] %lu publishes dropped (starved across a " + "second boundary)\n", + (unsigned long)dropped); + } +#ifdef TIMEBASE_PULSE + Serial.printf("[TIMEBASE] %lu pulses emitted on GPIO%d+%d\n", + (unsigned long)timebasePulseCount, TIMEBASE_PIN, + TIMEBASE_PIN_ALT); +#endif } } } @@ -214,6 +300,28 @@ void loop() { } } +#ifdef TIMEBASE_PULSE + emitTimebasePulse(); +#endif + +#ifdef STARVE_TEST + /* + * Deliberately starve loop() across a second boundary, to exercise the + * PPS/PVT pairing guards. Debug builds only — never ship this. + * + * The stale-pairing window is narrow: the loop must resume after PPS(n+1) + * but before PVT(n+1) lands ~34ms later, with PVT(n) still unread in the + * UART FIFO. Stalling once every ~6 seconds walks the resume phase forward + * 50ms each time, sweeping the whole second across a run, while leaving + * several clean seconds in between so normal syncing is still exercised. + */ + static uint32_t lastStarveAt = 0; + if (ppsCount - lastStarveAt >= 6) { + lastStarveAt = ppsCount; + delay(1050); + } +#endif + // Yield briefly so other FreeRTOS tasks can run vTaskDelay(1); }