34 Commits

Author SHA1 Message Date
Emanuele Trabattoni
dce6b0fd4f working on second adc 2026-04-17 13:24:43 +02:00
Emanuele Trabattoni
bea29dc8f5 ADC ok with interrupt or drdy 2026-04-17 12:21:35 +02:00
Emanuele Trabattoni
1b8ba88b05 ADC working ok in sync with system 2026-04-17 11:01:41 +02:00
5aa5aaa07a ADC Testing 2026-04-17 09:13:05 +02:00
1b7a531d54 Updated test instrument with cli commands 2026-04-17 09:11:41 +02:00
8171cab9cb adc ok 2026-04-14 14:16:11 +02:00
Emanuele Trabattoni
899c8cffbc io expander class ok , adc not working 2026-04-14 11:02:33 +02:00
Emanuele Trabattoni
782aa95ee6 Merge branch 'task-refactor' 2026-04-13 10:28:24 +02:00
Emanuele Trabattoni
212b37c95f updated and fixed charts 2026-04-13 10:26:55 +02:00
Emanuele Trabattoni
f8c3c69e80 fix graph 2026-04-12 14:42:40 +02:00
Emanuele Trabattoni
7da58c8a49 Set time from browser 2026-04-12 14:40:58 +02:00
a153402d28 webpage chats 2026-04-12 02:38:27 +02:00
095aa59f36 task refactoring working, sometimes misses events, check priorities 2026-04-12 01:45:32 +02:00
Emanuele Trabattoni
fdba6d5ad5 refactor continued, at least it compiles 2026-04-11 16:39:59 +02:00
Emanuele Trabattoni
d1b96e932c task refactoring work in progress 2026-04-11 15:49:40 +02:00
684c34e209 adding pins and task class 2026-04-11 12:27:19 +02:00
37fa6a686f Merge branch 'datasave' 2026-04-11 11:40:20 +02:00
9c012efef1 refactor led class 2026-04-11 11:37:40 +02:00
d41a99ee88 rgb led 2026-04-11 00:40:33 +02:00
eaeb515074 Modified Task display to order based on task number or arbitraruy function 2026-04-10 23:33:22 +02:00
246ba7eeb2 Task A+B concurrency <check ok without ADC 2026-04-10 22:03:09 +02:00
Emanuele Trabattoni
736a8d8bd5 modified to also read channel B 2026-04-10 12:12:28 +02:00
Emanuele Trabattoni
2083119d79 Updated interface to show Box A+B 2026-04-10 09:27:41 +02:00
Emanuele Trabattoni
575730a340 Finalized PINMAP 2026-04-09 15:54:59 +02:00
Emanuele Trabattoni
155f58a347 refactored webserver code 2026-04-09 14:42:13 +02:00
Emanuele Trabattoni
1e068476af LittleFS mount OK, updated interface, upload to littlefs from browser 2026-04-09 13:41:50 +02:00
Emanuele Trabattoni
de9ffe40e5 refactor variables and LittleFS mount 2026-04-09 10:23:57 +02:00
Emanuele Trabattoni
97bce90ba6 changed partition to littlefs, not working yet 2026-04-08 17:10:30 +02:00
Emanuele Trabattoni
12e1e8e7a4 Fixed Filters, split file in html, script and css 2026-04-08 16:55:03 +02:00
Emanuele Trabattoni
4dc45954e9 Webpage is OK, html in memory since SPIFFS is to slow.
Moving average to be fixed
2026-04-08 15:23:21 +02:00
Emanuele Trabattoni
07eb06f67b Save History Sync on flash, still some issues in deleting previous file 2026-04-08 10:27:18 +02:00
Emanuele Trabattoni
481f12f526 Enable/Disable pickup simulation 2026-04-08 10:26:44 +02:00
Emanuele Trabattoni
7c96101cdd SPIFFS mount sometimes fail 2026-04-07 17:33:08 +02:00
Emanuele Trabattoni
877236ee4e Save files appending on same session and new file on new session 2026-04-07 15:53:52 +02:00
46 changed files with 3924 additions and 2140 deletions

View File

@@ -3,3 +3,4 @@
.vscode/c_cpp_properties.json
.vscode/launch.json
.vscode/ipch
unpacked_fs

View File

@@ -1,8 +1,7 @@
{
"recommendations": [
"Jason2866.esp-decoder",
"pioarduino.pioarduino-ide",
"platformio.platformio-ide"
"pioarduino.pioarduino-ide"
],
"unwantedRecommendations": [
"ms-vscode.cpptools-extension-pack"

File diff suppressed because one or more lines are too long

View File

@@ -1 +1,3 @@
{}
{
}

View File

@@ -0,0 +1,212 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Astro Rotax Monitor</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<header class="page-header">
<div class="header-content">
<img src="logo_astro_dev.svg" alt="Astro Tecnologie" class="logo">
</div>
<div>
<h1>Rotax Ignition Box Monitor</h1>
</div>
</header>
<!-- TAB BUTTONS -->
<div class="tabs">
<button class="tab-button active" onclick="openTab('tab1')">Monitor</button>
<button class="tab-button" onclick="openTab('tab2')">Grafico</button>
</div>
<!-- TAB 1 (contenuto attuale) -->
<div id="tab1" class="tab-content active">
<div id="loadingIndicator" class="loading-indicator">
<span class="spinner"></span> Waiting for data...
</div>
<div class="tables-container">
<div class="box">
<h2>Box_A</h2>
<div class="box-data">
<p><strong>Timestamp:</strong> <span id="a_timestamp">-</span></p>
<p><strong>Data Valid:</strong> <span id="a_datavalid">-</span></p>
<p><strong>Generator voltage:</strong> <span id="a_volts_gen">-</span></p>
<p><strong>ADC read time:</strong> <span id="a_adc_read_time">-</span></p>
<p><strong>Queue errors:</strong> <span id="a_n_queue_errors">-</span></p>
</div>
<div class="rpm-highlight">
<strong>Engine RPM:</strong> <span id="a_eng_rpm">-</span>
</div>
<table>
<thead>
<tr>
<th>Property</th>
<th>Pickup 12</th>
<th>Pickup 34</th>
</tr>
</thead>
<tbody>
<tr>
<td>Spark delay</td>
<td id="a_coils12_spark_delay">-</td>
<td id="a_coils34_spark_delay">-</td>
</tr>
<tr>
<td>Spark status</td>
<td id="a_coils12_spark_status">-</td>
<td id="a_coils34_spark_status">-</td>
</tr>
<tr>
<td>Soft start status</td>
<td id="a_coils12_sstart_status">-</td>
<td id="a_coils34_sstart_status">-</td>
</tr>
<tr>
<td>Peak P in</td>
<td id="a_coils12_peak_p_in">-</td>
<td id="a_coils34_peak_p_in">-</td>
</tr>
<tr>
<td>Peak N in</td>
<td id="a_coils12_peak_n_in">-</td>
<td id="a_coils34_peak_n_in">-</td>
</tr>
<tr>
<td>Peak P out</td>
<td id="a_coils12_peak_p_out">-</td>
<td id="a_coils34_peak_p_out">-</td>
</tr>
<tr>
<td>Peak N out</td>
<td id="a_coils12_peak_n_out">-</td>
<td id="a_coils34_peak_n_out">-</td>
</tr>
<tr>
<td>Level spark</td>
<td id="a_coils12_level_spark">-</td>
<td id="a_coils34_level_spark">-</td>
</tr>
<tr>
<td>Spark Events</td>
<td id="a_coils12_n_events">-</td>
<td id="a_coils34_n_events">-</td>
</tr>
<tr>
<td>Missed Events</td>
<td id="a_coils12_n_missed_firing">-</td>
<td id="a_coils34_n_missed_firing">-</td>
</tr>
</tbody>
</table>
</div>
<div class="box">
<h2>Box_B</h2>
<div class="box-data">
<p><strong>Timestamp:</strong> <span id="b_timestamp">-</span></p>
<p><strong>Data Valid:</strong> <span id="b_datavalid">-</span></p>
<p><strong>Generator voltage:</strong> <span id="b_volts_gen">-</span></p>
<p><strong>ADC read time:</strong> <span id="b_adc_read_time">-</span></p>
<p><strong>Queue errors:</strong> <span id="b_n_queue_errors">-</span></p>
</div>
<div class="rpm-highlight">
<strong>Engine RPM:</strong> <span id="b_eng_rpm">-</span>
</div>
<table>
<thead>
<tr>
<th>Property</th>
<th>Pickup 12</th>
<th>Pickup 34</th>
</tr>
</thead>
<tbody>
<tr>
<td>Spark delay</td>
<td id="b_coils12_spark_delay">-</td>
<td id="b_coils34_spark_delay">-</td>
</tr>
<tr>
<td>Spark status</td>
<td id="b_coils12_spark_status">-</td>
<td id="b_coils34_spark_status">-</td>
</tr>
<tr>
<td>Soft start status</td>
<td id="b_coils12_sstart_status">-</td>
<td id="b_coils34_sstart_status">-</td>
</tr>
<tr>
<td>Peak P in</td>
<td id="b_coils12_peak_p_in">-</td>
<td id="b_coils34_peak_p_in">-</td>
</tr>
<tr>
<td>Peak N in</td>
<td id="b_coils12_peak_n_in">-</td>
<td id="b_coils34_peak_n_in">-</td>
</tr>
<tr>
<td>Peak P out</td>
<td id="b_coils12_peak_p_out">-</td>
<td id="b_coils34_peak_p_out">-</td>
</tr>
<tr>
<td>Peak N out</td>
<td id="b_coils12_peak_n_out">-</td>
<td id="b_coils34_peak_n_out">-</td>
</tr>
<tr>
<td>Level spark</td>
<td id="b_coils12_level_spark">-</td>
<td id="b_coils34_level_spark">-</td>
</tr>
<tr>
<td>Spark Events</td>
<td id="b_coils12_n_events">-</td>
<td id="b_coils34_n_events">-</td>
</tr>
<tr>
<td>Missed Events</td>
<td id="b_coils12_n_missed_firing">-</td>
<td id="b_coils34_n_missed_firing">-</td>
</tr>
</tbody>
</table>
</div>
</div>
</div> <!-- END TAB1 -->
<!-- TAB 2 (grafico) -->
<div id="tab2" class="tab-content">
<div class="chart-container">
<h3>Box A</h3>
<canvas id="chartA" height="100"></canvas>
</div>
<div class="chart-container">
<h3>Box B</h3>
<canvas id="chartB" height="100"></canvas>
</div>
</div>
</body>
<div class="upload-section">
<h3>Upload file to Flash</h3>
<p>Select a file and upload it to Flash.</p>
<input type="file" id="littlefsFile">
<button onclick="uploadLittleFS()">Upload</button>
<div id="uploadStatus" class="upload-status">No file uploaded yet.</div>
</div>
<script src="chart.js"></script>
<script src="script.js"></script>
</html>

View File

@@ -0,0 +1,306 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 26.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="e_astro_logo_negativo" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
x="0px" y="0px" viewBox="0 0 374 56" style="enable-background:new 0 0 374 56;" xml:space="preserve">
<style type="text/css">
.st0{fill:#FFFFFF;}
</style>
<g>
<polygon class="st0" points="53.9,46 59.2,46 59.2,44.8 55.3,44.8 55.3,42.4 59,42.4 59,41.2 55.3,41.2 55.3,38.8 59.2,38.8
59.2,37.6 53.9,37.6 "/>
<rect x="61.5" y="37.1" class="st0" width="1.4" height="8.9"/>
<path class="st0" d="M70.3,41.8c-0.1-0.4-0.2-0.8-0.4-1.2c-0.2-0.3-0.5-0.6-0.9-0.8c-0.4-0.2-0.8-0.3-1.3-0.3c-0.5,0-1,0.1-1.5,0.4
c-0.4,0.3-0.8,0.6-1.1,1.1c-0.3,0.5-0.4,1.1-0.4,1.8c0,0.7,0.1,1.2,0.4,1.7c0.3,0.5,0.6,0.9,1.1,1.2c0.4,0.3,0.9,0.4,1.5,0.4
c0.5,0,0.9-0.1,1.3-0.3c0.4-0.2,0.7-0.4,0.9-0.7c0.2-0.3,0.4-0.7,0.5-1.1h-1.4c-0.1,0.3-0.2,0.5-0.4,0.7c-0.2,0.2-0.5,0.2-0.8,0.2
c-0.3,0-0.6-0.1-0.9-0.3c-0.2-0.2-0.4-0.4-0.5-0.7c-0.1-0.3-0.2-0.6-0.2-1h4.2C70.4,42.6,70.4,42.2,70.3,41.8z M66.2,42.3
c0-0.3,0.1-0.5,0.2-0.8c0.1-0.3,0.3-0.5,0.5-0.7c0.2-0.2,0.5-0.3,0.9-0.3c0.3,0,0.5,0.1,0.7,0.2c0.2,0.1,0.3,0.3,0.4,0.4
c0.1,0.2,0.2,0.4,0.2,0.6c0,0.2,0,0.3,0,0.5H66.2z"/>
<path class="st0" d="M73.8,41c0.2-0.1,0.5-0.2,0.7-0.2c0.3,0,0.6,0.1,0.8,0.3c0.2,0.2,0.4,0.4,0.4,0.7l1.4-0.1
c0-0.3-0.1-0.5-0.3-0.8c-0.1-0.3-0.3-0.5-0.5-0.7c-0.2-0.2-0.5-0.4-0.8-0.5c-0.3-0.1-0.7-0.2-1.1-0.2c-0.5,0-1,0.1-1.5,0.4
c-0.4,0.3-0.8,0.6-1.1,1.1c-0.3,0.5-0.4,1.1-0.4,1.8c0,0.7,0.1,1.3,0.4,1.8c0.3,0.5,0.6,0.9,1.1,1.2c0.5,0.3,0.9,0.4,1.5,0.4
c0.6,0,1-0.1,1.4-0.3c0.4-0.2,0.7-0.5,0.9-0.9c0.2-0.4,0.3-0.8,0.3-1.2h-1.4c0,0.3-0.1,0.6-0.3,0.8c-0.2,0.2-0.5,0.3-0.9,0.3
c-0.3,0-0.5-0.1-0.8-0.2c-0.2-0.2-0.4-0.4-0.6-0.7c-0.1-0.3-0.2-0.7-0.2-1.1c0-0.5,0.1-0.9,0.2-1.2C73.4,41.4,73.6,41.1,73.8,41z"
/>
<path class="st0" d="M81.8,45c-0.2,0-0.3,0.1-0.5,0.1c-0.5,0-0.8-0.3-0.8-0.8v-3.6h1.8v-0.9h-1.8V38h-1.4v1.7h-0.9v0.9h0.9v3.7
c0,0.4,0.1,0.8,0.3,1.1c0.2,0.3,0.4,0.5,0.7,0.6c0.3,0.1,0.6,0.2,1,0.2c0.2,0,0.5,0,0.7-0.1c0.2-0.1,0.5-0.1,0.7-0.2l-0.2-1
C82.2,44.9,82,45,81.8,45z"/>
<path class="st0" d="M87.3,39.6c-0.4,0-0.7,0.1-1.1,0.4c-0.3,0.2-0.5,0.6-0.6,1v-1.3h-1.4V46h1.4v-2.8h0c0-0.5,0.1-0.9,0.2-1.2
c0.1-0.3,0.3-0.6,0.5-0.8c0.2-0.2,0.5-0.3,0.9-0.3c0.1,0,0.2,0,0.4,0c0.1,0,0.3,0,0.4,0.1l0-1.4c-0.1,0-0.2-0.1-0.3-0.1
C87.5,39.6,87.4,39.6,87.3,39.6z"/>
<path class="st0" d="M93.1,39.9c-0.5-0.2-1-0.4-1.5-0.4c-0.6,0-1.1,0.1-1.5,0.4c-0.5,0.2-0.8,0.6-1.1,1.1c-0.3,0.5-0.4,1.1-0.4,1.9
c0,0.7,0.1,1.3,0.4,1.8c0.3,0.5,0.6,0.9,1.1,1.1c0.5,0.2,1,0.4,1.5,0.4c0.6,0,1.1-0.1,1.5-0.4c0.5-0.2,0.8-0.6,1.1-1.1
c0.3-0.5,0.4-1.1,0.4-1.8c0-0.7-0.1-1.4-0.4-1.9C94,40.5,93.6,40.1,93.1,39.9z M93,44c-0.1,0.3-0.3,0.6-0.6,0.7
c-0.3,0.2-0.5,0.2-0.9,0.2c-0.5,0-0.9-0.2-1.2-0.5C90.1,44,90,43.5,90,42.9c0-0.5,0.1-0.9,0.2-1.2c0.1-0.3,0.3-0.6,0.6-0.7
c0.3-0.2,0.5-0.2,0.9-0.2c0.5,0,0.9,0.2,1.2,0.5c0.3,0.4,0.4,0.9,0.4,1.6C93.2,43.3,93.2,43.7,93,44z"/>
<path class="st0" d="M101.2,39.9c-0.4-0.2-0.8-0.3-1.3-0.3c-0.5,0-1,0.1-1.3,0.4c-0.3,0.2-0.5,0.5-0.7,0.9l-0.2-1.1h-1.2V46h1.4
v-2.9c0-0.5,0.1-0.9,0.2-1.3c0.1-0.4,0.3-0.6,0.6-0.8c0.2-0.2,0.5-0.3,0.9-0.3c0.4,0,0.7,0.1,1,0.4c0.2,0.3,0.4,0.6,0.4,1.2V46h1.4
v-3.7c0-0.6-0.1-1.1-0.3-1.5C101.8,40.4,101.5,40.1,101.2,39.9z"/>
<rect x="104.7" y="39.7" class="st0" width="1.4" height="6.3"/>
<path class="st0" d="M105.4,36.8c-0.3,0-0.5,0.1-0.6,0.2c-0.2,0.1-0.2,0.3-0.2,0.6c0,0.3,0.1,0.5,0.2,0.6c0.2,0.1,0.4,0.2,0.6,0.2
c0.3,0,0.5-0.1,0.6-0.2c0.2-0.1,0.2-0.4,0.2-0.6c0-0.2-0.1-0.4-0.2-0.6C105.9,36.9,105.6,36.8,105.4,36.8z"/>
<path class="st0" d="M110.3,41c0.2-0.1,0.5-0.2,0.7-0.2c0.3,0,0.6,0.1,0.8,0.3c0.2,0.2,0.4,0.4,0.4,0.7l1.4-0.1
c0-0.3-0.1-0.5-0.3-0.8c-0.1-0.3-0.3-0.5-0.5-0.7c-0.2-0.2-0.5-0.4-0.8-0.5c-0.3-0.1-0.7-0.2-1.1-0.2c-0.5,0-1,0.1-1.5,0.4
c-0.5,0.3-0.8,0.6-1.1,1.1c-0.3,0.5-0.4,1.1-0.4,1.8c0,0.7,0.1,1.3,0.4,1.8c0.3,0.5,0.6,0.9,1.1,1.2c0.4,0.3,0.9,0.4,1.5,0.4
c0.6,0,1-0.1,1.4-0.3c0.4-0.2,0.7-0.5,0.9-0.9c0.2-0.4,0.3-0.8,0.3-1.2h-1.4c0,0.3-0.1,0.6-0.3,0.8c-0.2,0.2-0.5,0.3-0.9,0.3
c-0.3,0-0.5-0.1-0.8-0.2c-0.2-0.2-0.4-0.4-0.6-0.7c-0.1-0.3-0.2-0.7-0.2-1.1c0-0.5,0.1-0.9,0.2-1.2C109.9,41.4,110.1,41.1,110.3,41
z"/>
<path class="st0" d="M123.7,38.1c-0.6-0.3-1.4-0.5-2.2-0.5h-2.6V46h2.6c0.9,0,1.6-0.2,2.2-0.5c0.6-0.3,1.1-0.8,1.5-1.5
c0.4-0.6,0.5-1.4,0.5-2.2c0-0.9-0.2-1.6-0.5-2.2C124.9,38.9,124.4,38.5,123.7,38.1z M123.9,43.3c-0.2,0.4-0.5,0.8-1,1.1
c-0.4,0.3-0.9,0.4-1.5,0.4h-1.3v-5.9h1.3c0.6,0,1.1,0.1,1.5,0.4c0.4,0.3,0.7,0.6,1,1c0.2,0.4,0.3,1,0.3,1.5
C124.2,42.4,124.1,42.9,123.9,43.3z"/>
<path class="st0" d="M132.6,41.8c-0.1-0.4-0.2-0.8-0.4-1.2c-0.2-0.3-0.5-0.6-0.9-0.8c-0.4-0.2-0.8-0.3-1.3-0.3
c-0.5,0-1,0.1-1.5,0.4c-0.4,0.3-0.8,0.6-1.1,1.1c-0.3,0.5-0.4,1.1-0.4,1.8c0,0.7,0.1,1.2,0.4,1.7c0.3,0.5,0.6,0.9,1.1,1.2
c0.4,0.3,0.9,0.4,1.5,0.4c0.5,0,0.9-0.1,1.3-0.3c0.4-0.2,0.7-0.4,0.9-0.7c0.2-0.3,0.4-0.7,0.5-1.1h-1.4c-0.1,0.3-0.2,0.5-0.4,0.7
c-0.2,0.2-0.5,0.2-0.8,0.2c-0.3,0-0.6-0.1-0.9-0.3c-0.2-0.2-0.4-0.4-0.5-0.7c-0.1-0.3-0.2-0.6-0.2-1h4.2
C132.7,42.6,132.7,42.2,132.6,41.8z M128.5,42.3c0-0.3,0.1-0.5,0.2-0.8c0.1-0.3,0.3-0.5,0.5-0.7c0.2-0.2,0.5-0.3,0.9-0.3
c0.3,0,0.5,0.1,0.7,0.2c0.2,0.1,0.3,0.3,0.4,0.4c0.1,0.2,0.2,0.4,0.2,0.6c0,0.2,0,0.3,0,0.5H128.5z"/>
<path class="st0" d="M137.9,42.6l-1.4-0.5c-0.6-0.2-0.9-0.4-0.9-0.8c0-0.2,0.1-0.4,0.3-0.5c0.2-0.1,0.5-0.2,0.8-0.2
c0.4,0,0.7,0.1,0.9,0.2c0.2,0.1,0.3,0.3,0.3,0.5h1.3c0-0.5-0.2-1-0.7-1.3c-0.4-0.3-1.1-0.5-1.9-0.5c-0.8,0-1.4,0.2-1.9,0.5
c-0.5,0.3-0.7,0.7-0.7,1.3c0,0.4,0.1,0.8,0.4,1c0.3,0.3,0.7,0.5,1.2,0.7l1.3,0.5c0.3,0.1,0.5,0.2,0.7,0.3c0.1,0.1,0.2,0.3,0.2,0.5
c0,0.2-0.1,0.3-0.2,0.4c-0.1,0.1-0.3,0.2-0.4,0.3c-0.2,0.1-0.4,0.1-0.6,0.1c-0.4,0-0.8-0.1-1-0.2c-0.3-0.2-0.4-0.4-0.4-0.7H134
c0,0.4,0.1,0.8,0.4,1.1c0.2,0.3,0.6,0.6,1,0.7c0.4,0.2,0.9,0.3,1.6,0.3c0.5,0,1-0.1,1.4-0.3c0.4-0.2,0.7-0.4,0.9-0.7
c0.2-0.3,0.3-0.6,0.3-0.9c0-0.4-0.1-0.7-0.4-1C138.8,43,138.4,42.8,137.9,42.6z"/>
<rect x="141.6" y="39.7" class="st0" width="1.4" height="6.3"/>
<path class="st0" d="M142.3,36.8c-0.3,0-0.5,0.1-0.6,0.2c-0.2,0.1-0.2,0.3-0.2,0.6c0,0.3,0.1,0.5,0.2,0.6c0.2,0.1,0.4,0.2,0.6,0.2
c0.3,0,0.5-0.1,0.6-0.2c0.2-0.1,0.2-0.4,0.2-0.6c0-0.2-0.1-0.4-0.2-0.6C142.7,36.9,142.5,36.8,142.3,36.8z"/>
<path class="st0" d="M151.1,45.5c-0.4-0.2-0.9-0.4-1.5-0.4h-2.2c-0.4,0-0.7-0.1-0.8-0.2c-0.2-0.1-0.2-0.3-0.2-0.4
c0-0.2,0-0.3,0.1-0.4c0.1-0.1,0.2-0.2,0.3-0.2c0.1,0,0.1,0,0.2,0c0.4,0.1,0.7,0.2,1.2,0.2c0.5,0,0.9-0.1,1.3-0.3
c0.4-0.2,0.7-0.5,1-0.8c0.2-0.3,0.4-0.7,0.4-1.2c0-0.5-0.1-0.9-0.4-1.2c0,0-0.1-0.1-0.1-0.1c0-0.3,0.1-0.5,0.3-0.6
c0.2-0.1,0.5-0.2,0.9-0.2l0.1-1.3c-0.4,0-0.7,0.1-1,0.2c-0.3,0.2-0.5,0.4-0.7,0.7c-0.1,0.2-0.2,0.5-0.2,0.8
c-0.1-0.1-0.2-0.1-0.2-0.2c-0.4-0.2-0.8-0.3-1.3-0.3c-0.5,0-0.9,0.1-1.4,0.3c-0.4,0.2-0.7,0.5-1,0.8c-0.2,0.3-0.4,0.7-0.4,1.2
c0,0.5,0.1,0.9,0.4,1.2c0.1,0.2,0.3,0.3,0.4,0.4c-0.1,0-0.2,0-0.2,0.1c-0.3,0.1-0.4,0.2-0.6,0.4c-0.1,0.2-0.2,0.4-0.2,0.7
c0,0.3,0.1,0.5,0.3,0.7c0.1,0.2,0.3,0.3,0.5,0.4c-0.3,0.1-0.6,0.1-0.8,0.3c-0.3,0.2-0.5,0.6-0.5,1.1c0,0.4,0.1,0.7,0.4,1
c0.3,0.3,0.7,0.6,1.2,0.8c0.5,0.2,1.1,0.3,1.8,0.3c0.8,0,1.4-0.1,2-0.4c0.5-0.3,1-0.6,1.3-1c0.3-0.4,0.4-0.8,0.4-1.3
C151.7,46.1,151.5,45.8,151.1,45.5z M147.1,40.9c0.2-0.2,0.5-0.4,1-0.4c0.4,0,0.7,0.1,1,0.4c0.2,0.2,0.3,0.6,0.3,0.9
c0,0.4-0.1,0.7-0.3,0.9c-0.2,0.3-0.5,0.4-1,0.4c-0.4,0-0.7-0.1-1-0.4c-0.2-0.3-0.3-0.6-0.3-0.9C146.8,41.4,146.9,41.1,147.1,40.9z
M150,47.4c-0.2,0.2-0.5,0.4-0.8,0.5c-0.3,0.1-0.7,0.2-1.2,0.2c-0.6,0-1.1-0.1-1.5-0.3c-0.4-0.2-0.5-0.4-0.5-0.8
c0-0.3,0.1-0.5,0.4-0.7c0.2-0.2,0.6-0.3,1-0.3h2.2c0.2,0,0.4,0.1,0.5,0.2c0.1,0.1,0.2,0.3,0.2,0.4C150.3,47,150.2,47.2,150,47.4z"
/>
<path class="st0" d="M157.9,39.9c-0.3-0.2-0.8-0.3-1.3-0.3c-0.5,0-1,0.1-1.3,0.4c-0.3,0.2-0.5,0.5-0.7,0.9l-0.2-1.1h-1.2V46h1.4
v-2.9c0-0.5,0.1-0.9,0.2-1.3c0.1-0.4,0.3-0.6,0.6-0.8c0.2-0.2,0.5-0.3,0.9-0.3c0.4,0,0.7,0.1,1,0.4c0.2,0.3,0.4,0.6,0.4,1.2V46h1.4
v-3.7c0-0.6-0.1-1.1-0.3-1.5C158.5,40.4,158.2,40.1,157.9,39.9z"/>
<path class="st0" d="M166.7,37c-0.3,0-0.7,0.1-0.9,0.2c-0.3,0.1-0.5,0.3-0.7,0.6c-0.2,0.3-0.3,0.6-0.3,1.1v0.8h-1v0.9h1V46h1.4
v-5.4h1.2v-0.9h-1.2v-0.8c0-0.2,0-0.4,0.1-0.5c0.1-0.1,0.2-0.2,0.3-0.3c0.1,0,0.2-0.1,0.4-0.1c0.1,0,0.2,0,0.3,0
c0.1,0,0.2,0.1,0.3,0.1l0.3-1.1c-0.2,0-0.4-0.1-0.6-0.1C167.1,37,166.9,37,166.7,37z"/>
<path class="st0" d="M173.1,39.9c-0.5-0.2-1-0.4-1.5-0.4c-0.6,0-1.1,0.1-1.5,0.4c-0.5,0.2-0.8,0.6-1.1,1.1
c-0.3,0.5-0.4,1.1-0.4,1.9c0,0.7,0.1,1.3,0.4,1.8c0.3,0.5,0.6,0.9,1.1,1.1c0.5,0.2,1,0.4,1.5,0.4c0.6,0,1.1-0.1,1.5-0.4
c0.5-0.2,0.8-0.6,1.1-1.1c0.3-0.5,0.4-1.1,0.4-1.8c0-0.7-0.1-1.4-0.4-1.9C173.9,40.5,173.6,40.1,173.1,39.9z M173,44
c-0.1,0.3-0.3,0.6-0.6,0.7c-0.3,0.2-0.5,0.2-0.9,0.2c-0.5,0-0.9-0.2-1.2-0.5c-0.3-0.4-0.4-0.9-0.4-1.6c0-0.5,0.1-0.9,0.2-1.2
c0.1-0.3,0.3-0.6,0.6-0.7c0.3-0.2,0.5-0.2,0.9-0.2c0.5,0,0.9,0.2,1.2,0.5c0.3,0.4,0.4,0.9,0.4,1.6C173.2,43.3,173.2,43.7,173,44z"
/>
<path class="st0" d="M179.6,39.6c-0.4,0-0.7,0.1-1.1,0.4c-0.3,0.2-0.5,0.6-0.6,1v-1.3h-1.4V46h1.4v-2.8h0c0-0.5,0.1-0.9,0.2-1.2
c0.1-0.3,0.3-0.6,0.5-0.8c0.2-0.2,0.5-0.3,0.9-0.3c0.1,0,0.2,0,0.4,0c0.1,0,0.3,0,0.4,0.1l0-1.4c-0.1,0-0.2-0.1-0.3-0.1
C179.8,39.6,179.7,39.6,179.6,39.6z"/>
<path class="st0" d="M188.9,41.4l-1.8-0.7c-0.4-0.1-0.6-0.3-0.8-0.4c-0.2-0.1-0.3-0.4-0.3-0.6c0-0.3,0.1-0.5,0.4-0.7
c0.3-0.2,0.6-0.3,1.1-0.3c0.5,0,0.9,0.1,1.1,0.3c0.3,0.2,0.4,0.5,0.5,0.8h1.4c-0.1-0.7-0.4-1.3-0.9-1.8c-0.5-0.4-1.2-0.6-2.1-0.6
c-1,0-1.7,0.2-2.2,0.6c-0.5,0.4-0.8,1-0.8,1.6c0,0.6,0.2,1.1,0.5,1.4c0.3,0.3,0.9,0.6,1.5,0.9l1.6,0.6c0.4,0.1,0.7,0.3,0.9,0.5
c0.2,0.2,0.3,0.4,0.3,0.7c0,0.2-0.1,0.4-0.2,0.6c-0.1,0.2-0.3,0.3-0.6,0.4c-0.3,0.1-0.6,0.1-0.9,0.1c-0.3,0-0.6-0.1-0.9-0.2
c-0.3-0.1-0.5-0.3-0.7-0.5c-0.2-0.2-0.3-0.5-0.3-0.8h-1.4c0,0.6,0.2,1.1,0.5,1.6c0.3,0.4,0.7,0.7,1.2,0.9c0.5,0.2,1,0.3,1.6,0.3
c0.7,0,1.3-0.1,1.8-0.3c0.5-0.2,0.8-0.5,1.1-0.9c0.3-0.4,0.4-0.8,0.4-1.3c0-0.6-0.2-1-0.5-1.4C190,42,189.5,41.7,188.9,41.4z"/>
<path class="st0" d="M197.5,39.9c-0.4-0.3-0.9-0.4-1.4-0.4c-0.4,0-0.8,0.1-1.1,0.3c-0.3,0.2-0.5,0.4-0.7,0.8l-0.1-0.9h-1.1v9.4h1.4
v-3.7c0.1,0.2,0.3,0.3,0.5,0.5c0.3,0.2,0.7,0.3,1.2,0.3c0.5,0,1-0.1,1.4-0.4c0.4-0.3,0.8-0.6,1.1-1.1c0.3-0.5,0.4-1.1,0.4-1.8
c0-0.7-0.1-1.3-0.4-1.8C198.3,40.6,197.9,40.2,197.5,39.9z M197.3,44c-0.2,0.3-0.4,0.5-0.6,0.7c-0.3,0.2-0.5,0.2-0.8,0.2
c-0.3,0-0.5-0.1-0.7-0.2c-0.2-0.1-0.4-0.3-0.6-0.5c-0.1-0.2-0.2-0.5-0.2-0.8v-1.1c0-0.3,0.1-0.6,0.2-0.9c0.1-0.2,0.3-0.4,0.6-0.5
c0.2-0.1,0.5-0.2,0.8-0.2c0.3,0,0.6,0.1,0.9,0.2c0.3,0.2,0.5,0.4,0.6,0.7c0.1,0.3,0.2,0.7,0.2,1.1C197.5,43.3,197.4,43.7,197.3,44z
"/>
<path class="st0" d="M205.7,41.8c-0.1-0.4-0.2-0.8-0.4-1.2c-0.2-0.3-0.5-0.6-0.9-0.8c-0.4-0.2-0.8-0.3-1.3-0.3
c-0.5,0-1,0.1-1.5,0.4c-0.4,0.3-0.8,0.6-1.1,1.1c-0.3,0.5-0.4,1.1-0.4,1.8c0,0.7,0.1,1.2,0.4,1.7c0.3,0.5,0.6,0.9,1.1,1.2
c0.4,0.3,0.9,0.4,1.5,0.4c0.5,0,0.9-0.1,1.3-0.3c0.4-0.2,0.7-0.4,0.9-0.7c0.2-0.3,0.4-0.7,0.5-1.1h-1.4c-0.1,0.3-0.2,0.5-0.4,0.7
c-0.2,0.2-0.5,0.2-0.8,0.2c-0.3,0-0.6-0.1-0.9-0.3c-0.2-0.2-0.4-0.4-0.5-0.7c-0.1-0.3-0.2-0.6-0.2-1h4.2
C205.8,42.6,205.8,42.2,205.7,41.8z M201.6,42.3c0-0.3,0.1-0.5,0.2-0.8c0.1-0.3,0.3-0.5,0.5-0.7c0.2-0.2,0.5-0.3,0.9-0.3
c0.3,0,0.5,0.1,0.7,0.2c0.2,0.1,0.3,0.3,0.4,0.4c0.1,0.2,0.2,0.4,0.2,0.6c0,0.2,0,0.3,0,0.5H201.6z"/>
<path class="st0" d="M209.3,41c0.2-0.1,0.5-0.2,0.7-0.2c0.3,0,0.6,0.1,0.8,0.3c0.2,0.2,0.4,0.4,0.4,0.7l1.4-0.1
c0-0.3-0.1-0.5-0.3-0.8c-0.1-0.3-0.3-0.5-0.5-0.7c-0.2-0.2-0.5-0.4-0.8-0.5c-0.3-0.1-0.7-0.2-1.1-0.2c-0.5,0-1,0.1-1.5,0.4
c-0.5,0.3-0.8,0.6-1.1,1.1c-0.3,0.5-0.4,1.1-0.4,1.8c0,0.7,0.1,1.3,0.4,1.8c0.3,0.5,0.6,0.9,1.1,1.2c0.4,0.3,0.9,0.4,1.5,0.4
c0.6,0,1-0.1,1.4-0.3c0.4-0.2,0.7-0.5,0.9-0.9c0.2-0.4,0.3-0.8,0.3-1.2h-1.4c0,0.3-0.1,0.6-0.3,0.8c-0.2,0.2-0.5,0.3-0.9,0.3
c-0.3,0-0.5-0.1-0.8-0.2c-0.2-0.2-0.4-0.4-0.6-0.7c-0.1-0.3-0.2-0.7-0.2-1.1c0-0.5,0.1-0.9,0.2-1.2C208.8,41.4,209,41.1,209.3,41z"
/>
<path class="st0" d="M215.3,36.8c-0.3,0-0.5,0.1-0.6,0.2c-0.2,0.1-0.2,0.3-0.2,0.6c0,0.3,0.1,0.5,0.2,0.6c0.2,0.1,0.4,0.2,0.6,0.2
c0.3,0,0.5-0.1,0.6-0.2c0.2-0.1,0.2-0.4,0.2-0.6c0-0.2-0.1-0.4-0.2-0.6C215.8,36.9,215.6,36.8,215.3,36.8z"/>
<rect x="214.6" y="39.7" class="st0" width="1.4" height="6.3"/>
<path class="st0" d="M222.6,39.8c-0.4-0.2-0.9-0.3-1.4-0.3c-0.6,0-1.1,0.1-1.5,0.2c-0.4,0.1-0.7,0.4-1,0.6
c-0.2,0.3-0.3,0.7-0.3,1.2h1.5c0-0.2,0.1-0.4,0.2-0.5c0.1-0.1,0.3-0.3,0.5-0.3c0.2-0.1,0.4-0.1,0.7-0.1c0.4,0,0.8,0.1,1,0.3
c0.2,0.2,0.3,0.6,0.3,1.1v0.7c-0.3-0.1-0.5-0.1-0.8-0.2c-0.3-0.1-0.6-0.1-1-0.1c-0.5,0-0.9,0.1-1.3,0.2c-0.4,0.1-0.7,0.3-0.9,0.6
c-0.2,0.3-0.3,0.6-0.3,1c0,0.3,0.1,0.7,0.3,1c0.2,0.3,0.4,0.6,0.8,0.7c0.4,0.2,0.8,0.3,1.3,0.3c0.5,0,0.9-0.1,1.2-0.3
c0.3-0.2,0.6-0.5,0.7-0.9l0.1,1h1.2v-4c0-0.6-0.1-1-0.3-1.4C223.3,40.2,223,39.9,222.6,39.8z M222.5,43.7c0,0.2-0.1,0.4-0.2,0.7
c-0.1,0.2-0.3,0.4-0.5,0.5c-0.2,0.1-0.5,0.2-0.8,0.2c-0.4,0-0.8-0.1-1-0.3c-0.2-0.2-0.3-0.4-0.3-0.7c0-0.3,0.1-0.6,0.4-0.7
c0.2-0.1,0.6-0.2,0.9-0.2c0.3,0,0.5,0,0.8,0.1c0.2,0,0.5,0.1,0.7,0.2V43.7z"/>
<rect x="226.2" y="37.1" class="st0" width="1.4" height="8.9"/>
<polygon class="st0" points="233.3,46 238.7,46 238.7,44.8 234.7,44.8 234.7,42.4 238.4,42.4 238.4,41.2 234.7,41.2 234.7,38.8
238.7,38.8 238.7,37.6 233.3,37.6 "/>
<path class="st0" d="M246.4,47.6c-0.1-0.2-0.1-0.4-0.1-0.6v-7.3h-0.9l-0.3,1c-0.2-0.4-0.5-0.7-0.8-0.9c-0.3-0.2-0.7-0.3-1.1-0.3
c-0.5,0-1,0.1-1.4,0.4c-0.4,0.3-0.8,0.6-1.1,1.1c-0.3,0.5-0.4,1.1-0.4,1.8c0,0.7,0.1,1.3,0.4,1.8c0.3,0.5,0.6,0.9,1.1,1.1
c0.4,0.3,0.9,0.4,1.4,0.4c0.5,0,0.8-0.1,1.1-0.3c0.2-0.2,0.4-0.4,0.5-0.8v1.8c0,0.7,0.1,1.2,0.4,1.5c0.3,0.4,0.8,0.6,1.4,0.8l0.4-1
c-0.2-0.1-0.4-0.2-0.5-0.2C246.5,47.9,246.4,47.8,246.4,47.6z M244.9,43.4c0,0.3-0.1,0.6-0.2,0.8c-0.1,0.2-0.3,0.4-0.6,0.5
c-0.2,0.1-0.5,0.2-0.7,0.2c-0.3,0-0.5-0.1-0.8-0.2c-0.3-0.2-0.5-0.4-0.6-0.7c-0.2-0.3-0.3-0.7-0.3-1.2c0-0.4,0.1-0.8,0.2-1.1
c0.1-0.3,0.3-0.6,0.6-0.7c0.3-0.2,0.5-0.2,0.9-0.2c0.3,0,0.5,0.1,0.7,0.2c0.2,0.1,0.4,0.3,0.5,0.5c0.1,0.2,0.2,0.5,0.2,0.9V43.4z"
/>
<path class="st0" d="M253,42.7c0,0.5-0.1,0.9-0.2,1.2c-0.2,0.3-0.4,0.6-0.6,0.7c-0.3,0.2-0.6,0.3-0.9,0.3c-0.4,0-0.7-0.1-0.9-0.3
c-0.2-0.2-0.3-0.6-0.3-1v-3.9h-1.4v4c0,0.6,0.1,1,0.3,1.4c0.2,0.4,0.5,0.6,0.9,0.8c0.4,0.2,0.8,0.2,1.2,0.2c0.5,0,0.9-0.1,1.2-0.4
c0.3-0.2,0.5-0.5,0.7-0.9V46h1.4v-6.3H253V42.7z"/>
<path class="st0" d="M257.7,36.8c-0.3,0-0.5,0.1-0.6,0.2c-0.2,0.1-0.2,0.3-0.2,0.6c0,0.3,0.1,0.5,0.2,0.6c0.2,0.1,0.4,0.2,0.6,0.2
c0.3,0,0.5-0.1,0.6-0.2c0.2-0.1,0.2-0.4,0.2-0.6c0-0.2-0.1-0.4-0.2-0.6C258.2,36.9,258,36.8,257.7,36.8z"/>
<rect x="257" y="39.7" class="st0" width="1.4" height="6.3"/>
<path class="st0" d="M265.6,39.9c-0.4-0.3-0.9-0.4-1.4-0.4c-0.4,0-0.8,0.1-1.1,0.3c-0.3,0.2-0.5,0.4-0.7,0.8l-0.1-0.9h-1.1v9.4h1.4
v-3.7c0.1,0.2,0.3,0.3,0.5,0.5c0.3,0.2,0.7,0.3,1.2,0.3c0.5,0,1-0.1,1.4-0.4c0.4-0.3,0.8-0.6,1.1-1.1c0.3-0.5,0.4-1.1,0.4-1.8
c0-0.7-0.1-1.3-0.4-1.8C266.4,40.6,266,40.2,265.6,39.9z M265.4,44c-0.2,0.3-0.4,0.5-0.6,0.7c-0.3,0.2-0.5,0.2-0.8,0.2
c-0.3,0-0.5-0.1-0.7-0.2c-0.2-0.1-0.4-0.3-0.6-0.5c-0.1-0.2-0.2-0.5-0.2-0.8v-1.1c0-0.3,0.1-0.6,0.2-0.9c0.1-0.2,0.3-0.4,0.6-0.5
c0.2-0.1,0.5-0.2,0.8-0.2c0.3,0,0.6,0.1,0.9,0.2c0.3,0.2,0.5,0.4,0.6,0.7c0.1,0.3,0.2,0.7,0.2,1.1C265.6,43.3,265.6,43.7,265.4,44z
"/>
<path class="st0" d="M277.9,39.9c-0.3-0.2-0.8-0.3-1.3-0.3c-0.4,0-0.7,0.1-1,0.2c-0.3,0.1-0.6,0.3-0.8,0.6
c-0.1,0.2-0.2,0.4-0.3,0.6c0,0,0-0.1,0-0.1c-0.2-0.4-0.4-0.7-0.8-1c-0.4-0.2-0.8-0.3-1.3-0.3c-0.5,0-0.9,0.1-1.2,0.3
c-0.3,0.2-0.6,0.5-0.8,1l-0.2-1.1h-1.2V46h1.4v-2.9c0-0.5,0.1-0.9,0.2-1.3c0.1-0.4,0.3-0.6,0.6-0.8c0.2-0.2,0.5-0.3,0.9-0.3
c0.4,0,0.7,0.1,1,0.4c0.2,0.3,0.4,0.6,0.4,1.2V46h1.4v-2.9c0-0.8,0.1-1.3,0.4-1.7c0.3-0.4,0.7-0.6,1.2-0.6c0.4,0,0.7,0.1,1,0.4
c0.2,0.3,0.4,0.6,0.4,1.2V46h1.4v-3.7c0-0.6-0.1-1.1-0.3-1.5C278.5,40.4,278.3,40.1,277.9,39.9z"/>
<path class="st0" d="M286.2,41.8c-0.1-0.4-0.2-0.8-0.4-1.2c-0.2-0.3-0.5-0.6-0.9-0.8c-0.4-0.2-0.8-0.3-1.3-0.3
c-0.5,0-1,0.1-1.5,0.4c-0.4,0.3-0.8,0.6-1.1,1.1c-0.3,0.5-0.4,1.1-0.4,1.8c0,0.7,0.1,1.2,0.4,1.7c0.3,0.5,0.6,0.9,1.1,1.2
c0.4,0.3,0.9,0.4,1.5,0.4c0.5,0,0.9-0.1,1.3-0.3c0.4-0.2,0.7-0.4,0.9-0.7c0.2-0.3,0.4-0.7,0.5-1.1h-1.4c-0.1,0.3-0.2,0.5-0.4,0.7
c-0.2,0.2-0.5,0.2-0.8,0.2c-0.3,0-0.6-0.1-0.9-0.3c-0.2-0.2-0.4-0.4-0.5-0.7c-0.1-0.3-0.2-0.6-0.2-1h4.2
C286.3,42.6,286.2,42.2,286.2,41.8z M282,42.3c0-0.3,0.1-0.5,0.2-0.8c0.1-0.3,0.3-0.5,0.5-0.7c0.2-0.2,0.5-0.3,0.9-0.3
c0.3,0,0.5,0.1,0.7,0.2c0.2,0.1,0.3,0.3,0.4,0.4c0.1,0.2,0.2,0.4,0.2,0.6c0,0.2,0,0.3,0,0.5H282z"/>
<path class="st0" d="M292.8,39.9c-0.3-0.2-0.8-0.3-1.3-0.3c-0.5,0-1,0.1-1.3,0.4c-0.3,0.2-0.5,0.5-0.7,0.9l-0.2-1.1h-1.2V46h1.4
v-2.9c0-0.5,0.1-0.9,0.2-1.3c0.1-0.4,0.3-0.6,0.6-0.8c0.2-0.2,0.5-0.3,0.9-0.3c0.4,0,0.7,0.1,1,0.4c0.2,0.3,0.4,0.6,0.4,1.2V46h1.4
v-3.7c0-0.6-0.1-1.1-0.3-1.5C293.4,40.4,293.2,40.1,292.8,39.9z"/>
<path class="st0" d="M298.9,45c-0.2,0-0.3,0.1-0.5,0.1c-0.5,0-0.8-0.3-0.8-0.8v-3.6h1.8v-0.9h-1.8V38h-1.4v1.7h-0.9v0.9h0.9v3.7
c0,0.4,0.1,0.8,0.3,1.1c0.2,0.3,0.4,0.5,0.7,0.6c0.3,0.1,0.6,0.2,1,0.2c0.2,0,0.5,0,0.7-0.1c0.2-0.1,0.5-0.1,0.7-0.2l-0.2-1
C299.3,44.9,299.1,45,298.9,45z"/>
<path class="st0" d="M58.3,21.7H65l1.3,4h3.1L63.5,8.1h-3.6l-6,17.5H57L58.3,21.7z M61.7,11.6l2.6,7.9h-5.2L61.7,11.6z"/>
<path class="st0" d="M80.4,23.1c-0.5,0.2-1.2,0.3-1.9,0.3c-0.7,0-1.3-0.1-1.9-0.3c-0.6-0.2-1.1-0.6-1.4-1c-0.4-0.5-0.5-1.1-0.5-1.8
h-2.8c0,1.3,0.4,2.4,1,3.2c0.6,0.9,1.4,1.5,2.4,1.9c1,0.4,2.1,0.6,3.3,0.6c1.4,0,2.7-0.2,3.7-0.6c1-0.4,1.8-1,2.3-1.8
c0.5-0.8,0.8-1.7,0.8-2.7c0-1.2-0.4-2.1-1.1-2.9c-0.7-0.8-1.7-1.4-3-1.9l-3.8-1.4c-0.7-0.3-1.3-0.6-1.6-0.9
c-0.3-0.3-0.5-0.7-0.5-1.3c0-0.6,0.3-1.1,0.8-1.6c0.6-0.4,1.3-0.6,2.3-0.6c1.1,0,1.9,0.2,2.4,0.6c0.5,0.4,0.9,1,1,1.7h2.8
c-0.1-1.6-0.7-2.8-1.8-3.7c-1.1-0.9-2.5-1.3-4.4-1.3c-2,0-3.5,0.4-4.6,1.3c-1.1,0.9-1.7,2-1.7,3.4c0,1.2,0.4,2.2,1.1,2.9
c0.7,0.7,1.8,1.3,3.2,1.8l3.4,1.3c0.8,0.3,1.4,0.6,1.8,1c0.4,0.4,0.6,0.9,0.6,1.5c0,0.5-0.2,0.9-0.5,1.2
C81.3,22.6,80.9,22.9,80.4,23.1z"/>
<polygon class="st0" points="92.7,25.6 95.7,25.6 95.7,10.6 101.2,10.6 101.2,8.1 87.2,8.1 87.2,10.6 92.7,10.6 "/>
<path class="st0" d="M106.8,18.7h2.6l4,6.9h3.8l-4.8-7.2c1-0.2,1.9-0.6,2.5-1.2c1.1-1,1.6-2.2,1.6-3.8c0-1.6-0.5-2.9-1.6-3.9
c-1.1-1-2.7-1.5-4.7-1.5h-6.4v17.5h2.9V18.7z M106.8,10.6h3.5c1.1,0,2,0.3,2.6,0.8c0.6,0.6,0.9,1.3,0.9,2.2c0,0.9-0.3,1.6-0.9,2.2
c-0.6,0.6-1.5,0.9-2.8,0.9h-3.2V10.6z"/>
<path class="st0" d="M123.7,25c1.2,0.7,2.5,1,4.1,1c1.5,0,2.9-0.3,4.1-1c1.2-0.7,2.1-1.7,2.8-3c0.7-1.4,1-3.1,1-5.1
c0-2-0.3-3.7-1-5c-0.7-1.3-1.6-2.4-2.8-3c-1.2-0.7-2.5-1-4.1-1c-1.5,0-2.9,0.3-4.1,1c-1.2,0.7-2.1,1.7-2.8,3s-1,3-1,5.1
c0,2,0.3,3.7,1,5.1C121.6,23.3,122.5,24.3,123.7,25z M124.2,12.1c0.9-1.1,2-1.7,3.5-1.7c1.5,0,2.7,0.6,3.5,1.7s1.3,2.7,1.3,4.8
c0,2.1-0.4,3.7-1.3,4.8c-0.9,1.1-2.1,1.7-3.5,1.7c-1.5,0-2.6-0.6-3.5-1.7c-0.9-1.1-1.3-2.7-1.3-4.8
C122.9,14.8,123.4,13.2,124.2,12.1z"/>
<polygon class="st0" points="149.4,25.6 152.3,25.6 152.3,10.6 157.8,10.6 157.8,8.1 143.9,8.1 143.9,10.6 149.4,10.6 "/>
<polygon class="st0" points="171.6,23.1 163.4,23.1 163.4,18.1 171.1,18.1 171.1,15.6 163.4,15.6 163.4,10.6 171.6,10.6 171.6,8.1
160.5,8.1 160.5,25.6 171.6,25.6 "/>
<path class="st0" d="M178.6,24.9c1.1,0.7,2.5,1.1,4,1.1c1.4,0,2.7-0.2,3.7-0.7c1-0.5,1.8-1.2,2.4-2.1c0.6-0.9,0.8-2,0.8-3.3h-3.1
c0,1-0.3,1.8-1,2.5c-0.7,0.6-1.6,1-2.8,1c-1,0-1.8-0.3-2.4-0.8c-0.7-0.5-1.2-1.3-1.5-2.3c-0.3-1-0.5-2.1-0.5-3.4
c0-1.4,0.2-2.6,0.6-3.6c0.4-1,0.9-1.7,1.6-2.1c0.7-0.5,1.4-0.7,2.2-0.7c0.9,0,1.7,0.3,2.4,0.9c0.7,0.6,1.1,1.4,1.5,2.3l3.1-0.6
c-0.4-1.6-1.1-2.8-2.2-3.8c-1.1-1-2.7-1.5-4.7-1.5c-1.5,0-2.8,0.3-3.9,1c-1.1,0.7-2,1.7-2.7,3c-0.7,1.3-1,3-1,5
c0,1.9,0.3,3.5,0.9,4.9C176.6,23.1,177.5,24.1,178.6,24.9z"/>
<polygon class="st0" points="196.3,12.7 204.5,25.6 207.5,25.6 207.5,8.1 204.6,8.1 204.6,20.8 196.6,8.1 193.4,8.1 193.4,25.6
196.3,25.6 "/>
<path class="st0" d="M215.2,25c1.2,0.7,2.5,1,4.1,1c1.5,0,2.9-0.3,4.1-1c1.2-0.7,2.1-1.7,2.8-3c0.7-1.4,1-3.1,1-5.1
c0-2-0.3-3.7-1-5c-0.7-1.3-1.6-2.4-2.8-3c-1.2-0.7-2.5-1-4.1-1c-1.5,0-2.9,0.3-4.1,1c-1.2,0.7-2.1,1.7-2.8,3c-0.7,1.3-1,3-1,5.1
c0,2,0.3,3.7,1,5.1C213.1,23.3,214,24.3,215.2,25z M215.7,12.1c0.9-1.1,2-1.7,3.5-1.7c1.5,0,2.7,0.6,3.5,1.7
c0.9,1.1,1.3,2.7,1.3,4.8c0,2.1-0.4,3.7-1.3,4.8c-0.9,1.1-2.1,1.7-3.5,1.7c-1.5,0-2.6-0.6-3.5-1.7c-0.9-1.1-1.3-2.7-1.3-4.8
C214.4,14.8,214.9,13.2,215.7,12.1z"/>
<polygon class="st0" points="241.3,23.1 233.9,23.1 233.9,8.1 231,8.1 231,25.6 241.3,25.6 "/>
<path class="st0" d="M246.8,25c1.2,0.7,2.5,1,4.1,1c1.5,0,2.9-0.3,4.1-1c1.2-0.7,2.1-1.7,2.8-3c0.7-1.4,1-3.1,1-5.1
c0-2-0.3-3.7-1-5c-0.7-1.3-1.6-2.4-2.8-3c-1.2-0.7-2.5-1-4.1-1c-1.5,0-2.9,0.3-4.1,1c-1.2,0.7-2.1,1.7-2.8,3c-0.7,1.3-1,3-1,5.1
c0,2,0.3,3.7,1,5.1C244.7,23.3,245.6,24.3,246.8,25z M247.3,12.1c0.9-1.1,2-1.7,3.5-1.7c1.5,0,2.7,0.6,3.5,1.7
c0.9,1.1,1.3,2.7,1.3,4.8c0,2.1-0.4,3.7-1.3,4.8c-0.9,1.1-2.1,1.7-3.5,1.7c-1.5,0-2.6-0.6-3.5-1.7c-0.9-1.1-1.3-2.7-1.3-4.8
C246,14.8,246.4,13.2,247.3,12.1z"/>
<path class="st0" d="M265.1,24.9c1.2,0.7,2.4,1.1,3.8,1.1c1.2,0,2.1-0.3,2.9-0.9c0.7-0.6,1.2-1.4,1.6-2.4l0.3,2.9h2.4v-8.9h-6.9
v1.9l4.1,0.1v0.1c0,1-0.2,1.8-0.5,2.5c-0.4,0.7-0.8,1.2-1.5,1.5c-0.6,0.4-1.3,0.5-2.1,0.5c-0.9,0-1.8-0.3-2.5-0.8
c-0.7-0.5-1.3-1.3-1.7-2.2c-0.4-1-0.6-2.1-0.6-3.3c0-1.4,0.2-2.5,0.7-3.5c0.5-1,1.1-1.7,1.8-2.3c0.8-0.5,1.6-0.8,2.5-0.8
c0.8,0,1.5,0.2,2.1,0.6c0.6,0.4,1.2,1,1.7,1.7l2.9-0.7c-0.7-1.4-1.5-2.5-2.6-3.2c-1.1-0.7-2.4-1-4-1c-1.2,0-2.2,0.2-3.2,0.6
c-1,0.4-1.9,1-2.6,1.8c-0.8,0.8-1.3,1.8-1.8,2.9c-0.4,1.1-0.6,2.4-0.6,3.9c0,1.8,0.3,3.4,1,4.7C263,23.1,263.9,24.1,265.1,24.9z"/>
<rect x="280.8" y="8.1" class="st0" width="2.9" height="17.5"/>
<polygon class="st0" points="300,23.1 291.8,23.1 291.8,18.1 299.5,18.1 299.5,15.6 291.8,15.6 291.8,10.6 300,10.6 300,8.1
288.9,8.1 288.9,25.6 300,25.6 "/>
<path class="st0" d="M40.6,6.7H0v40.6h40.6V32.2H300v-1.2H40.6V6.7z M7.9,36.7H3.3c-0.4,0-0.7-0.3-0.7-0.7c0-0.4,0.3-0.7,0.7-0.7
h4.7c0.4,0,0.7,0.3,0.7,0.7C8.7,36.4,8.3,36.7,7.9,36.7z M7.9,32.2H3.3c-0.4,0-0.7-0.3-0.7-0.7c0-0.4,0.3-0.7,0.7-0.7h4.7
c0.4,0,0.7,0.3,0.7,0.7C8.7,31.9,8.3,32.2,7.9,32.2z M7.9,27.7H3.3c-0.4,0-0.7-0.3-0.7-0.7c0-0.4,0.3-0.7,0.7-0.7h4.7
c0.4,0,0.7,0.3,0.7,0.7C8.7,27.4,8.3,27.7,7.9,27.7z M7.9,23.3H3.3c-0.4,0-0.7-0.3-0.7-0.7c0-0.4,0.3-0.7,0.7-0.7h4.7
c0.4,0,0.7,0.3,0.7,0.7C8.7,22.9,8.3,23.3,7.9,23.3z M7.9,18.8H3.3c-0.4,0-0.7-0.3-0.7-0.7c0-0.4,0.3-0.7,0.7-0.7h4.7
c0.4,0,0.7,0.3,0.7,0.7C8.7,18.4,8.3,18.8,7.9,18.8z M12.1,43.5c0,0.4-0.3,0.7-0.7,0.7c-0.4,0-0.7-0.3-0.7-0.7v-4.7
c0-0.4,0.3-0.7,0.7-0.7c0.4,0,0.7,0.3,0.7,0.7V43.5z M12.1,15.2c0,0.4-0.3,0.7-0.7,0.7c-0.4,0-0.7-0.3-0.7-0.7v-4.7
c0-0.4,0.3-0.7,0.7-0.7c0.4,0,0.7,0.3,0.7,0.7V15.2z M16.6,43.5c0,0.4-0.3,0.7-0.7,0.7c-0.4,0-0.7-0.3-0.7-0.7v-4.7
c0-0.4,0.3-0.7,0.7-0.7c0.4,0,0.7,0.3,0.7,0.7V43.5z M16.6,15.2c0,0.4-0.3,0.7-0.7,0.7c-0.4,0-0.7-0.3-0.7-0.7v-4.7
c0-0.4,0.3-0.7,0.7-0.7c0.4,0,0.7,0.3,0.7,0.7V15.2z M21.1,43.5c0,0.4-0.3,0.7-0.7,0.7c-0.4,0-0.7-0.3-0.7-0.7v-4.7
c0-0.4,0.3-0.7,0.7-0.7c0.4,0,0.7,0.3,0.7,0.7V43.5z M21.1,15.2c0,0.4-0.3,0.7-0.7,0.7c-0.4,0-0.7-0.3-0.7-0.7v-4.7
c0-0.4,0.3-0.7,0.7-0.7c0.4,0,0.7,0.3,0.7,0.7V15.2z M25.5,43.5c0,0.4-0.3,0.7-0.7,0.7c-0.4,0-0.7-0.3-0.7-0.7v-4.7
c0-0.4,0.3-0.7,0.7-0.7c0.4,0,0.7,0.3,0.7,0.7V43.5z M25.5,15.2c0,0.4-0.3,0.7-0.7,0.7c-0.4,0-0.7-0.3-0.7-0.7v-4.7
c0-0.4,0.3-0.7,0.7-0.7c0.4,0,0.7,0.3,0.7,0.7V15.2z M30,43.5c0,0.4-0.3,0.7-0.7,0.7s-0.7-0.3-0.7-0.7v-4.7c0-0.4,0.3-0.7,0.7-0.7
s0.7,0.3,0.7,0.7V43.5z M30,15.2c0,0.4-0.3,0.7-0.7,0.7s-0.7-0.3-0.7-0.7v-4.7c0-0.4,0.3-0.7,0.7-0.7s0.7,0.3,0.7,0.7V15.2z
M37.3,36.7h-4.7c-0.4,0-0.7-0.3-0.7-0.7c0-0.4,0.3-0.7,0.7-0.7h4.7c0.4,0,0.7,0.3,0.7,0.7C38.1,36.4,37.7,36.7,37.3,36.7z
M37.3,32.2h-4.7c-0.4,0-0.7-0.3-0.7-0.7c0-0.4,0.3-0.7,0.7-0.7h4.7c0.4,0,0.7,0.3,0.7,0.7C38.1,31.9,37.7,32.2,37.3,32.2z
M37.3,27.7h-4.7c-0.4,0-0.7-0.3-0.7-0.7c0-0.4,0.3-0.7,0.7-0.7h4.7c0.4,0,0.7,0.3,0.7,0.7C38.1,27.4,37.7,27.7,37.3,27.7z
M37.3,23.3h-4.7c-0.4,0-0.7-0.3-0.7-0.7c0-0.4,0.3-0.7,0.7-0.7h4.7c0.4,0,0.7,0.3,0.7,0.7C38.1,22.9,37.7,23.3,37.3,23.3z
M37.3,18.8h-4.7c-0.4,0-0.7-0.3-0.7-0.7c0-0.4,0.3-0.7,0.7-0.7h4.7c0.4,0,0.7,0.3,0.7,0.7C38.1,18.4,37.7,18.8,37.3,18.8z"/>
<path class="st0" d="M360.9,50.7v0.7c0.3,0,0.6-0.1,0.9-0.3v4.6h0.7v-5.3h-0.5C361.6,50.5,361.3,50.7,360.9,50.7z"/>
<rect x="341" y="52.9" class="st0" width="2.3" height="0.6"/>
<path class="st0" d="M332.1,50.4c-0.3-0.1-0.5-0.2-0.8-0.2c-0.6,0-1,0.1-1.3,0.4c-0.3,0.3-0.5,0.7-0.5,1.2c0,0.5,0.2,0.9,0.5,1.2
c0.3,0.3,0.7,0.5,1.1,0.5c0.4,0,0.8-0.1,1.1-0.3c0.3-0.2,0.4-0.6,0.5-1c0,0.2,0,0.4,0,0.6c0,1.1-0.3,1.9-0.8,2.2
c-0.2,0.1-0.4,0.2-0.7,0.2c-0.3,0-0.5-0.1-0.7-0.3c-0.2-0.2-0.3-0.4-0.3-0.8h-0.7c0,0.5,0.2,0.9,0.5,1.2c0.3,0.3,0.8,0.5,1.4,0.5
c0.3,0,0.6-0.1,0.9-0.2c0.8-0.4,1.2-1.3,1.2-2.7c0-0.8-0.2-1.4-0.6-1.9C332.6,50.7,332.3,50.5,332.1,50.4z M332,52.6
c-0.2,0.2-0.5,0.3-0.8,0.3s-0.6-0.1-0.8-0.3c-0.2-0.2-0.3-0.4-0.3-0.8c0-0.3,0.1-0.6,0.3-0.8c0.2-0.2,0.5-0.3,0.8-0.3
c0.3,0,0.6,0.1,0.8,0.3c0.2,0.2,0.3,0.4,0.3,0.7C332.3,52.2,332.2,52.4,332,52.6z"/>
<path class="st0" d="M347,54.2c0.1-0.1,0.3-0.3,0.6-0.4l1.1-0.4c0.4-0.2,0.7-0.4,0.9-0.6c0.2-0.3,0.3-0.6,0.3-1
c0-0.4-0.2-0.8-0.5-1.1c-0.3-0.3-0.8-0.4-1.3-0.4c-0.5,0-1,0.1-1.3,0.4c-0.3,0.2-0.5,0.6-0.6,1.1h0.7c0-0.3,0.2-0.5,0.4-0.6
c0.2-0.1,0.5-0.2,0.8-0.2c0.3,0,0.6,0.1,0.8,0.3c0.2,0.2,0.3,0.4,0.3,0.7c0,0.5-0.3,0.8-0.8,1.1l-1.1,0.4c-0.2,0.1-0.4,0.2-0.5,0.3
c-0.5,0.3-0.7,0.8-0.7,1.4v0.8h3.8V55h-3.1v-0.3C346.8,54.5,346.9,54.4,347,54.2z"/>
<path class="st0" d="M336.5,52.4c-0.4,0-0.8,0.1-1.1,0.4c-0.3,0.2-0.4,0.6-0.5,1.1c0-0.2,0-0.4,0-0.7c0-0.7,0.1-1.3,0.4-1.7
c0.3-0.4,0.7-0.6,1.2-0.6c0.5,0,0.8,0.3,0.9,0.8h0.7c0-0.4-0.2-0.8-0.5-1c-0.3-0.3-0.7-0.4-1.2-0.4c-0.7,0-1.2,0.3-1.6,0.8
c-0.4,0.5-0.6,1.2-0.6,2s0.2,1.5,0.6,2c0.4,0.5,0.9,0.8,1.5,0.8c0.5,0,1-0.2,1.3-0.5c0.3-0.3,0.5-0.7,0.5-1.2
c0-0.5-0.2-0.9-0.5-1.2C337.3,52.6,337,52.4,336.5,52.4z M337.1,54.9c-0.2,0.2-0.5,0.3-0.8,0.3s-0.6-0.1-0.8-0.3
c-0.2-0.2-0.3-0.4-0.3-0.7c0-0.3,0.1-0.6,0.3-0.8c0.2-0.2,0.5-0.3,0.8-0.3c0.3,0,0.6,0.1,0.8,0.3c0.2,0.2,0.3,0.4,0.3,0.8
C337.5,54.4,337.3,54.7,337.1,54.9z"/>
<path class="st0" d="M353.1,50.2c-0.6,0-1.2,0.2-1.5,0.7c-0.4,0.5-0.6,1.2-0.6,2.1c0,0.9,0.2,1.6,0.6,2.1c0.4,0.5,0.9,0.7,1.5,0.7
c0.6,0,1.2-0.2,1.5-0.7c0.4-0.5,0.6-1.2,0.6-2c0-0.9-0.2-1.6-0.6-2C354.2,50.5,353.7,50.2,353.1,50.2z M354.1,54.6
c-0.2,0.4-0.6,0.6-1,0.6c-0.5,0-0.8-0.2-1-0.6c-0.2-0.4-0.4-0.9-0.4-1.6c0-0.7,0.1-1.2,0.4-1.6c0.2-0.4,0.6-0.6,1-0.6
c0.5,0,0.8,0.2,1,0.6c0.2,0.4,0.4,0.9,0.4,1.6C354.5,53.7,354.3,54.2,354.1,54.6z"/>
<path class="st0" d="M327.1,50.4c-0.3-0.1-0.5-0.2-0.8-0.2c-0.6,0-1,0.1-1.3,0.4c-0.3,0.3-0.5,0.7-0.5,1.2c0,0.5,0.2,0.9,0.5,1.2
c0.3,0.3,0.7,0.5,1.1,0.5c0.4,0,0.8-0.1,1.1-0.3c0.3-0.2,0.4-0.6,0.5-1c0,0.2,0,0.4,0,0.6c0,1.1-0.3,1.9-0.8,2.2
c-0.2,0.1-0.4,0.2-0.7,0.2c-0.3,0-0.5-0.1-0.7-0.3c-0.2-0.2-0.3-0.4-0.3-0.8h-0.7c0,0.5,0.2,0.9,0.5,1.2c0.3,0.3,0.8,0.5,1.4,0.5
c0.3,0,0.6-0.1,0.9-0.2c0.8-0.4,1.2-1.3,1.2-2.7c0-0.8-0.2-1.4-0.6-1.9C327.6,50.7,327.4,50.5,327.1,50.4z M327.1,52.6
c-0.2,0.2-0.5,0.3-0.8,0.3c-0.3,0-0.6-0.1-0.8-0.3c-0.2-0.2-0.3-0.4-0.3-0.8c0-0.3,0.1-0.6,0.3-0.8c0.2-0.2,0.5-0.3,0.8-0.3
c0.3,0,0.6,0.1,0.8,0.3c0.2,0.2,0.3,0.4,0.3,0.7C327.4,52.2,327.3,52.4,327.1,52.6z"/>
<path class="st0" d="M321.5,50.7v0.7c0.3,0,0.6-0.1,0.9-0.3v4.6h0.7v-5.3h-0.5C322.3,50.5,321.9,50.7,321.5,50.7z"/>
<path class="st0" d="M357,54.2c0.1-0.1,0.3-0.3,0.6-0.4l1.1-0.4c0.4-0.2,0.7-0.4,0.9-0.6c0.2-0.3,0.3-0.6,0.3-1
c0-0.4-0.2-0.8-0.5-1.1c-0.3-0.3-0.8-0.4-1.3-0.4c-0.5,0-1,0.1-1.3,0.4c-0.3,0.2-0.5,0.6-0.6,1.1h0.7c0-0.3,0.2-0.5,0.4-0.6
c0.2-0.1,0.5-0.2,0.8-0.2c0.3,0,0.6,0.1,0.8,0.3c0.2,0.2,0.3,0.4,0.3,0.7c0,0.5-0.3,0.8-0.8,1.1l-1.1,0.4c-0.2,0.1-0.4,0.2-0.5,0.3
c-0.5,0.3-0.7,0.8-0.7,1.4v0.8h3.8V55h-3.1v-0.3C356.8,54.5,356.9,54.4,357,54.2z"/>
<rect x="350.4" y="41" class="st0" width="1" height="5.5"/>
<polygon class="st0" points="342.8,46.5 342.8,41 341.8,41 341.8,44.9 339.4,41 338.3,41 338.3,46.5 339.3,46.5 339.3,42.5
341.8,46.5 "/>
<polygon class="st0" points="348.9,46.5 348.9,41 347.9,41 347.9,44.9 345.4,41 344.4,41 344.4,46.5 345.4,46.5 345.4,42.5
347.9,46.5 "/>
<path class="st0" d="M336.3,46.5h1.1l-1.8-5.5h-1.3l-1.9,5.5h1.1l0.4-1.2h2L336.3,46.5z M334.1,44.6l0.8-2.4l0.8,2.4H334.1z"/>
<path class="st0" d="M373.5,33.6c-0.1-0.1-0.2-0.2-0.3-0.3c-0.1-0.1-0.2-0.2-0.3-0.4c-0.1-0.1-0.3-0.3-0.4-0.4c0,0-0.1-0.1-0.1-0.1
c0,0-0.1-0.1-0.1-0.1c-0.1-0.1-0.2-0.2-0.2-0.2c-0.1-0.1-0.2-0.2-0.3-0.2c0,0-0.1-0.1-0.1-0.1c0,0-0.1-0.1-0.1-0.1
c-0.2-0.2-0.4-0.3-0.6-0.5c-0.2-0.2-0.5-0.4-0.7-0.6c-0.1-0.1-0.2-0.2-0.4-0.3c-0.1,0-0.1-0.1-0.2-0.1c-0.1,0-0.1-0.1-0.2-0.1
c-1.1-0.8-2.4-1.5-3.9-2.2c-0.2-0.1-0.4-0.2-0.6-0.3c-0.1,0-0.2-0.1-0.3-0.1c-0.1,0-0.2-0.1-0.3-0.1c-0.2-0.1-0.4-0.2-0.6-0.2
c-0.2-0.1-0.4-0.1-0.6-0.2c-0.1,0-0.2-0.1-0.3-0.1c-0.1,0-0.2-0.1-0.3-0.1c-0.2-0.1-0.4-0.1-0.7-0.2l-0.1,0l-0.1,0
c-0.1,0-0.1,0-0.2,0c-0.1,0-0.2-0.1-0.3-0.1c-0.2-0.1-0.5-0.1-0.7-0.2c-0.2,0-0.5-0.1-0.7-0.1c-0.1,0-0.2,0-0.4-0.1
c-0.1,0-0.2,0-0.4-0.1c-0.5-0.1-1-0.1-1.5-0.2c-0.3,0-0.5,0-0.8-0.1c-0.1,0-0.3,0-0.4,0c0.1,0,0.1,0,0.2,0c1.1-1.6,1.8-3.5,1.8-5.7
c0-2.8-0.9-5.1-2.6-6.8c-1.7-1.8-3.9-2.7-6.5-2.7c-0.3,0-0.6,0-0.9,0.1c-0.3,0-0.6,0.1-1,0.2l1.2-5.2h9.4V0.2h-13.5l-2.1,9.7
c-0.2-0.7-0.5-1.4-0.9-2c-0.8-1.4-1.9-2.5-3.2-3.2c-1.3-0.7-2.9-1.1-4.7-1.1c-2.9,0-5.2,0.9-7,2.7c-1.8,1.8-2.8,4.3-2.9,7.4h5.4
c0.1-1.5,0.5-2.7,1.3-3.6c0.8-0.9,1.8-1.3,3-1.3c1.2,0,2.1,0.4,2.9,1.1c0.7,0.7,1.1,1.7,1.1,2.8c0,1.1-0.4,2.3-1.1,3.6
c-0.7,1.3-2.2,3.1-4.3,5.3l-9,9.1v2.6c-0.1,0-0.2,0-0.3,0c-0.8,0-1.6,0-2.4-0.1c-1.5-0.1-2.9-0.4-4.1-0.8c-0.6-0.2-1.2-0.4-1.7-0.5
c-0.1,0-0.3-0.1-0.4-0.1c-0.1,0-0.1,0-0.2-0.1c-0.1,0-0.1,0-0.2-0.1c-0.1,0-0.2-0.1-0.3-0.1c-0.1,0-0.2-0.1-0.3-0.1
c-0.1,0-0.2-0.1-0.3-0.1c-0.1,0-0.2-0.1-0.3-0.1c-0.2-0.1-0.4-0.2-0.5-0.3c-0.2-0.1-0.3-0.2-0.4-0.2c-0.1-0.1-0.3-0.1-0.4-0.2
c-0.2-0.1-0.4-0.2-0.5-0.3c-0.1-0.1-0.2-0.1-0.2-0.1c0,0,0.1,0.1,0.1,0.1c0,0,0.1,0.1,0.2,0.2c0,0,0.1,0.1,0.1,0.1
c0,0,0.1,0.1,0.1,0.1c0.1,0.1,0.2,0.2,0.3,0.3c0.1,0.1,0.2,0.2,0.4,0.3c0.1,0.1,0.3,0.2,0.4,0.4c0.1,0.1,0.2,0.1,0.3,0.2
c0.1,0.1,0.2,0.1,0.3,0.2c0.1,0.1,0.2,0.1,0.3,0.2c0.1,0.1,0.2,0.1,0.3,0.2c0.1,0,0.1,0.1,0.2,0.1c0.1,0,0.1,0.1,0.2,0.1
c0.1,0.1,0.2,0.2,0.4,0.2c0.1,0.1,0.2,0.2,0.4,0.2c0.1,0.1,0.3,0.2,0.4,0.2c0.1,0.1,0.3,0.2,0.4,0.2c0.1,0,0.1,0.1,0.2,0.1
c0.1,0,0.1,0.1,0.2,0.1c1.2,0.6,2.6,1.2,4.2,1.6c0.8,0.2,1.7,0.4,2.5,0.5c0.9,0.1,1.8,0.2,2.8,0.2c1.9,0.1,3.9-0.1,6-0.4
c2-0.3,4.1-0.8,6.2-1.5c2.1-0.6,4.1-1.4,6.1-2.3c0.1-0.1,0.2-0.1,0.4-0.2l0.3-0.2c0.2-0.1,0.5-0.2,0.7-0.3l0.1,0l0.1,0l0.2-0.1
l0.3-0.1l0.2-0.1c0.1,0,0.1,0,0.2-0.1l0.3-0.1c0.9-0.3,1.9-0.6,2.8-0.9c0.1,0,0.1,0,0.2,0l0.2,0c0.1,0,0.2-0.1,0.4-0.1
c0.2-0.1,0.5-0.1,0.7-0.2c0.1,0,0.2-0.1,0.4-0.1c0.1,0,0.1,0,0.2,0l0.2,0c0.1,0,0.2,0,0.4-0.1l0.2,0c0.1,0,0.1,0,0.2,0
c0.2,0,0.5-0.1,0.7-0.1c0.1,0,0.2,0,0.4,0c0.1,0,0.2,0,0.4,0c0.1,0,0.2,0,0.4,0c0.1,0,0.2,0,0.4,0c0.1,0,0.2,0,0.3,0
c0.1,0,0.2,0,0.3,0c0.9-0.1,1.8-0.1,2.7-0.1c0.2,0,0.4,0,0.7,0c0.1,0,0.1,0,0.2,0l0.1,0l0.1,0c0.1,0,0.2,0,0.3,0c0.1,0,0.2,0,0.3,0
c0.1,0,0.2,0,0.3,0c0.2,0,0.4,0,0.6,0.1c0.2,0,0.4,0,0.6,0.1c0.1,0,0.2,0,0.3,0c0.1,0,0.1,0,0.2,0l0.1,0l0.1,0
c0.2,0,0.4,0.1,0.6,0.1c0.1,0,0.2,0,0.3,0c0.1,0,0.2,0,0.3,0.1c0.2,0,0.4,0.1,0.6,0.1c0,0,0.1,0,0.1,0c0,0,0.1,0,0.1,0
c0.1,0,0.2,0,0.3,0.1c0.1,0,0.2,0,0.3,0.1c0.1,0,0.2,0,0.3,0.1c0.2,0.1,0.4,0.1,0.6,0.2c1.5,0.4,2.8,0.9,3.9,1.4
c0.1,0,0.1,0.1,0.2,0.1c0.1,0,0.1,0.1,0.2,0.1c0.1,0.1,0.3,0.1,0.4,0.2c0.1,0.1,0.3,0.1,0.4,0.2c0.1,0.1,0.3,0.1,0.4,0.2
c0.2,0.1,0.5,0.3,0.7,0.4c0.1,0,0.1,0.1,0.2,0.1c0.1,0,0.1,0.1,0.2,0.1c0.1,0.1,0.2,0.1,0.3,0.2c0.1,0.1,0.2,0.1,0.3,0.2
c0,0,0.1,0.1,0.1,0.1c0,0,0.1,0.1,0.1,0.1c0.2,0.1,0.3,0.2,0.5,0.3c0.2,0.1,0.3,0.2,0.4,0.3c0.1,0.1,0.2,0.2,0.3,0.2
c0.4,0.3,0.6,0.4,0.6,0.4C374,34.2,373.8,34,373.5,33.6z M335.8,24.8c2.6-2.7,4.4-5,5.4-7c0.2-0.4,0.4-0.9,0.6-1.3l3.6,0.8
c0.6-0.6,1.1-1,1.7-1.3c0.6-0.3,1.2-0.4,1.8-0.4c1.1,0,2.1,0.4,2.9,1.3c0.8,0.9,1.2,1.9,1.2,3.3c0,1.4-0.4,2.5-1.3,3.4
c-0.8,0.9-1.9,1.3-3.1,1.3c-0.9,0-1.7-0.2-2.4-0.7c-0.7-0.5-1.3-1.1-1.7-2h-5.7c0.5,2.4,1.7,4.3,3.5,5.7c0.2,0.1,0.3,0.2,0.5,0.4
c0,0,0,0,0,0c-0.2,0.1-0.3,0.1-0.5,0.2c0,0,0,0,0,0h-9.6L335.8,24.8z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 31 KiB

292
RotaxMonitor/data/script.js Normal file
View File

@@ -0,0 +1,292 @@
let ws;
let lastMessageTimestamp = 0;
const IDLE_THRESHOLD_MS = 1000;
const loadingIndicator = document.getElementById("loadingIndicator");
let chartA, chartB;
let dataA = {
labels: [],
datasets: [
{ label: "RPM", data: [] },
{ label: "Coils12 Delay", data: [] },
{ label: "Coils34 Delay", data: [] }
]
};
let dataB = {
labels: [],
datasets: [
{ label: "RPM", data: [] },
{ label: "Coils12 Delay", data: [] },
{ label: "Coils34 Delay", data: [] }
]
};
function setLoadingIndicator(visible) {
if (!loadingIndicator) {
return;
}
loadingIndicator.classList.toggle("hidden", !visible);
}
function updateLoadingState() {
const isConnected = ws && ws.readyState === WebSocket.OPEN;
const idle = Date.now() - lastMessageTimestamp >= IDLE_THRESHOLD_MS;
setLoadingIndicator(isConnected && idle);
}
function connectWS() {
ws = new WebSocket("ws://" + location.host + "/ws");
ws.onopen = () => {
console.log("WebSocket connesso");
lastMessageTimestamp = Date.now();
setLoadingIndicator(false);
ws.send(JSON.stringify({
cmd: "setTime",
time: Math.floor(Date.now() / 1000)
}));
};
ws.onclose = () => {
console.log("WebSocket disconnesso, retry...");
setLoadingIndicator(false);
setTimeout(connectWS, 5000);
};
ws.onmessage = (event) => {
let data;
try {
data = JSON.parse(event.data);
} catch (e) {
console.error("Invalid JSON received", e);
return;
}
lastMessageTimestamp = Date.now();
setLoadingIndicator(false);
updateCharts(data)
// Update Box_A
if (data.box_a) {
const boxA = data.box_a;
document.getElementById("a_datavalid").textContent = boxA.datavalid ?? "-";
document.getElementById("a_timestamp").textContent = boxA.timestamp ?? "-";
document.getElementById("a_volts_gen").textContent = boxA.volts_gen ?? "-";
document.getElementById("a_eng_rpm").textContent = boxA.eng_rpm ?? "-";
document.getElementById("a_adc_read_time").textContent = boxA.adc_read_time ?? "-";
document.getElementById("a_n_queue_errors").textContent = boxA.n_queue_errors ?? "-";
const coils12A = boxA.coils12 || {};
const coils34A = boxA.coils34 || {};
document.getElementById("a_coils12_spark_delay").textContent = coils12A.spark_delay ?? "-";
document.getElementById("a_coils34_spark_delay").textContent = coils34A.spark_delay ?? "-";
document.getElementById("a_coils12_spark_status").textContent = coils12A.spark_status ?? "-";
document.getElementById("a_coils34_spark_status").textContent = coils34A.spark_status ?? "-";
document.getElementById("a_coils12_sstart_status").textContent = coils12A.sstart_status ?? "-";
document.getElementById("a_coils34_sstart_status").textContent = coils34A.sstart_status ?? "-";
document.getElementById("a_coils12_peak_p_in").textContent = coils12A.peak_p_in ?? "-";
document.getElementById("a_coils34_peak_p_in").textContent = coils34A.peak_p_in ?? "-";
document.getElementById("a_coils12_peak_n_in").textContent = coils12A.peak_n_in ?? "-";
document.getElementById("a_coils34_peak_n_in").textContent = coils34A.peak_n_in ?? "-";
document.getElementById("a_coils12_peak_p_out").textContent = coils12A.peak_p_out ?? "-";
document.getElementById("a_coils34_peak_p_out").textContent = coils34A.peak_p_out ?? "-";
document.getElementById("a_coils12_peak_n_out").textContent = coils12A.peak_n_out ?? "-";
document.getElementById("a_coils34_peak_n_out").textContent = coils34A.peak_n_out ?? "-";
document.getElementById("a_coils12_level_spark").textContent = coils12A.level_spark ?? "-";
document.getElementById("a_coils34_level_spark").textContent = coils34A.level_spark ?? "-";
document.getElementById("a_coils12_n_events").textContent = coils12A.n_events ?? "-";
document.getElementById("a_coils34_n_events").textContent = coils34A.n_events ?? "-";
document.getElementById("a_coils12_n_missed_firing").textContent = coils12A.n_missed_firing ?? "-";
document.getElementById("a_coils34_n_missed_firing").textContent = coils34A.n_missed_firing ?? "-";
}
// Update Box_B
if (data.box_b) {
const boxB = data.box_b;
document.getElementById("b_datavalid").textContent = boxB.datavalid ?? "-";
document.getElementById("b_timestamp").textContent = boxB.timestamp ?? "-";
document.getElementById("b_volts_gen").textContent = boxB.volts_gen ?? "-";
document.getElementById("b_eng_rpm").textContent = boxB.eng_rpm ?? "-";
document.getElementById("b_adc_read_time").textContent = boxB.adc_read_time ?? "-";
document.getElementById("b_n_queue_errors").textContent = boxB.n_queue_errors ?? "-";
const coils12B = boxB.coils12 || {};
const coils34B = boxB.coils34 || {};
document.getElementById("b_coils12_spark_delay").textContent = coils12B.spark_delay ?? "-";
document.getElementById("b_coils34_spark_delay").textContent = coils34B.spark_delay ?? "-";
document.getElementById("b_coils12_spark_status").textContent = coils12B.spark_status ?? "-";
document.getElementById("b_coils34_spark_status").textContent = coils34B.spark_status ?? "-";
document.getElementById("b_coils12_sstart_status").textContent = coils12B.sstart_status ?? "-";
document.getElementById("b_coils34_sstart_status").textContent = coils34B.sstart_status ?? "-";
document.getElementById("b_coils12_peak_p_in").textContent = coils12B.peak_p_in ?? "-";
document.getElementById("b_coils34_peak_p_in").textContent = coils34B.peak_p_in ?? "-";
document.getElementById("b_coils12_peak_n_in").textContent = coils12B.peak_n_in ?? "-";
document.getElementById("b_coils34_peak_n_in").textContent = coils34B.peak_n_in ?? "-";
document.getElementById("b_coils12_peak_p_out").textContent = coils12B.peak_p_out ?? "-";
document.getElementById("b_coils34_peak_p_out").textContent = coils34B.peak_p_out ?? "-";
document.getElementById("b_coils12_peak_n_out").textContent = coils12B.peak_n_out ?? "-";
document.getElementById("b_coils34_peak_n_out").textContent = coils34B.peak_n_out ?? "-";
document.getElementById("b_coils12_level_spark").textContent = coils12B.level_spark ?? "-";
document.getElementById("b_coils34_level_spark").textContent = coils34B.level_spark ?? "-";
document.getElementById("b_coils12_n_events").textContent = coils12B.n_events ?? "-";
document.getElementById("b_coils34_n_events").textContent = coils34B.n_events ?? "-";
document.getElementById("b_coils12_n_missed_firing").textContent = coils12B.n_missed_firing ?? "-";
document.getElementById("b_coils34_n_missed_firing").textContent = coils34B.n_missed_firing ?? "-";
}
};
}
function updateCharts(data) {
const t = new Date().toLocaleTimeString();
// ===== BOX A =====
dataA.labels.push(t);
if (data.box_a) {
dataA.datasets[0].data.push(data.box_a.eng_rpm / 10);
dataA.datasets[1].data.push(data.box_a.coils12.spark_delay);
dataA.datasets[2].data.push(data.box_a.coils34.spark_delay);
} else {
dataA.datasets[0].data.push(undefined);
dataA.datasets[1].data.push(undefined);
dataA.datasets[2].data.push(undefined);
}
// ===== BOX B =====
dataB.labels.push(t);
if (data.box_b) {
dataB.datasets[0].data.push(data.box_b.eng_rpm / 10);
dataB.datasets[1].data.push(data.box_b.coils12.spark_delay);
dataB.datasets[2].data.push(data.box_b.coils34.spark_delay);
} else {
dataB.datasets[0].data.push(undefined);
dataB.datasets[1].data.push(undefined);
dataB.datasets[2].data.push(undefined);
}
// limite buffer
const maxPoints = 100;
if (dataA.labels.length > maxPoints) {
dataA.labels.shift();
dataA.datasets.forEach(d => d.data.shift());
}
if (dataB.labels.length > maxPoints) {
dataB.labels.shift();
dataB.datasets.forEach(d => d.data.shift());
}
chartA.update();
chartB.update();
}
function start() {
fetch("/start");
}
function stop() {
fetch("/stop");
}
function uploadLittleFS() {
const fileInput = document.getElementById("littlefsFile");
const status = document.getElementById("uploadStatus");
if (!fileInput || fileInput.files.length === 0) {
if (status) status.textContent = "Select a file first.";
return;
}
const file = fileInput.files[0];
const formData = new FormData();
formData.append("file", file, file.name);
if (status) status.textContent = "Uploading...";
fetch("/upload", {
method: "POST",
body: formData,
})
.then((resp) => {
if (!resp.ok) {
throw new Error("Upload failed: " + resp.status + " " + resp.statusText);
}
return resp.text();
})
.then(() => {
if (status) status.textContent = "Uploaded: " + file.name;
fileInput.value = "";
})
.catch((err) => {
if (status) status.textContent = err.message;
});
}
function openTab(tabId) {
document.querySelectorAll('.tab-content').forEach(tab => {
tab.classList.remove('active');
});
document.querySelectorAll('.tab-button').forEach(btn => {
btn.classList.remove('active');
});
document.getElementById(tabId).classList.add('active');
event.target.classList.add('active');
}
function initCharts() {
const ctxA = document.getElementById('chartA').getContext('2d');
const ctxB = document.getElementById('chartB').getContext('2d');
chartA = new Chart(ctxA, {
type: 'line',
data: dataA,
options: {
animation: false,
responsive: true,
scales: {
x: {
display: true
},
y: {
beginAtZero: true
}
}
}
});
chartB = new Chart(ctxB, {
type: 'line',
data: dataB,
options: {
animation: false,
responsive: true,
scales: {
x: {
display: true
},
y: {
beginAtZero: true
}
}
}
});
}
window.onload = () => {
initCharts();
};
setInterval(updateLoadingState, 200);
connectWS();

259
RotaxMonitor/data/style.css Normal file
View File

@@ -0,0 +1,259 @@
:root {
--primary-dark: #0a1929;
--primary-blue: #003585;
--accent-blue: #1e88e5;
--light-bg: #f5f7fa;
--border-color: #d0d6dd;
--text-dark: #1a1a1a;
--text-muted: #666666;
}
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
margin: 0;
padding: 0;
background-color: var(--light-bg);
color: var(--text-dark);
}
.page-header {
background: linear-gradient(135deg, var(--primary-dark) 0%, #1a3a52 100%);
color: white;
padding: 30px 20px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
margin-bottom: 30px;
}
.header-content {
max-width: 900px;
margin: 0 auto;
display: flex;
align-items: center;
gap: 20px;
}
.logo {
height: 50px;
width: auto;
margin: auto;
}
.page-header h1 {
margin: auto;
margin-top: 20px;
text-align: center;
font-size: 28px;
font-weight: 600;
}
table {
margin: auto;
border-collapse: collapse;
width: 100%;
max-width: 900px;
background: white;
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);
border-radius: 6px;
overflow: hidden;
}
th, td {
border: 1px solid var(--border-color);
padding: 12px;
font-size: 14px;
text-align: center;
}
th {
background-color: var(--primary-blue);
color: white;
font-weight: 600;
}
tr:hover {
background-color: #f9fbfc;
}
button {
margin: 10px;
padding: 10px 20px;
font-size: 16px;
background-color: var(--primary-blue);
color: white;
border: none;
border-radius: 4px;
cursor: pointer;
transition: background-color 0.2s;
}
button:hover {
background-color: var(--accent-blue);
}
.upload-section {
margin: 30px auto 20px;
max-width: 900px;
text-align: left;
padding: 20px;
border: 1px solid var(--border-color);
border-radius: 6px;
background: white;
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);
}
.upload-section h3 {
margin-top: 0;
margin-bottom: 8px;
color: var(--primary-blue);
font-size: 16px;
}
.upload-section p {
margin: 8px 0;
color: var(--text-muted);
font-size: 14px;
}
.upload-section input[type="file"] {
margin-top: 8px;
margin-bottom: 12px;
}
.upload-status {
margin-top: 10px;
font-size: 14px;
color: var(--text-muted);
}
.loading-indicator {
display: flex;
align-items: center;
justify-content: center;
gap: 8px;
margin: 0;
padding: 16px 20px;
font-size: 20px;
color: var(--primary-blue);
border-bottom: 1px solid var(--border-color);
background: white;
width: 100%;
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);
}
.loading-indicator.hidden {
display: none;
}
.spinner {
width: 16px;
height: 16px;
border: 2px solid transparent;
border-top-color: var(--primary-blue);
border-radius: 50%;
animation: spin 0.8s linear infinite;
}
@keyframes spin {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
.tables-container {
display: flex;
gap: 20px;
max-width: 1800px;
margin: 0 auto;
padding: 0 20px;
}
.box {
flex: 1;
background: white;
padding: 20px;
border-radius: 6px;
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);
}
.box h2 {
margin-top: 0;
margin-bottom: 16px;
color: var(--primary-blue);
font-size: 18px;
font-weight: 700;
text-align: center;
}
.box-data {
margin-bottom: 20px;
}
.box-data p {
margin: 8px 0;
font-size: 14px;
}
.box-data strong {
color: var(--primary-blue);
}
.rpm-highlight {
background: #c6e4fa;
border: 3px double var(--primary-blue);
border-radius: 8px;
padding: 12px 16px;
margin-bottom: 20px;
text-align: center;
font-size: 18px;
font-weight: bold;
color: var(--text-dark);
}
.rpm-highlight strong {
color: var(--primary-blue);
}
span {
color: var(--text-dark);
}
/* TABS */
.tabs {
display: flex;
justify-content: center;
margin: 20px;
}
.tab-button {
padding: 10px 20px;
margin: 0 5px;
border: none;
cursor: pointer;
background: var(--border-color);
border-radius: 4px;
}
.tab-button.active {
background: var(--primary-blue);
color: white;
}
.tab-content {
display: none;
}
.tab-content.active {
display: block;
}
.chart-container {
max-width: 1000px;
margin: 20px auto;
background: white;
padding: 20px;
border-radius: 6px;
box-shadow: 0 1px 3px rgba(0,0,0,0.08);
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,11 +1,11 @@
//ADS1256 header file
// ADS1256 header file
/*
Name: ADS1256.h
Created: 2022/07/14
Author: Curious Scientist
Editor: Notepad++
Comment: Visit https://curiousscientist.tech/blog/ADS1256-custom-library
Special thanks to
Special thanks to
Abraão Queiroz for spending time on the code and suggesting corrections for ESP32 microcontrollers
Benjamin Pelletier for pointing out and fixing an issue around the handling of the DRDY signal
*/
@@ -14,51 +14,55 @@
#define _ADS1256_h
#include <SPI.h>
#include <Arduino.h>
//Differential inputs
#define DIFF_0_1 0b00000001 //A0 + A1 as differential input
#define DIFF_2_3 0b00100011 //A2 + A3 as differential input
#define DIFF_4_5 0b01000101 //A4 + A5 as differential input
#define DIFF_6_7 0b01100111 //A6 + A7 as differential input
// SPI Frequency
#define SPI_FREQ 1920000
//Single-ended inputs
#define SING_0 0b00001111 //A0 + GND (common) as single-ended input
#define SING_1 0b00011111 //A1 + GND (common) as single-ended input
#define SING_2 0b00101111 //A2 + GND (common) as single-ended input
#define SING_3 0b00111111 //A3 + GND (common) as single-ended input
#define SING_4 0b01001111 //A4 + GND (common) as single-ended input
#define SING_5 0b01011111 //A5 + GND (common) as single-ended input
#define SING_6 0b01101111 //A6 + GND (common) as single-ended input
#define SING_7 0b01111111 //A7 + GND (common) as single-ended input
// Differential inputs
#define DIFF_0_1 0b00000001 // A0 + A1 as differential input
#define DIFF_2_3 0b00100011 // A2 + A3 as differential input
#define DIFF_4_5 0b01000101 // A4 + A5 as differential input
#define DIFF_6_7 0b01100111 // A6 + A7 as differential input
//PGA settings //Input voltage range
#define PGA_1 0b00000000 //± 5 V
#define PGA_2 0b00000001 //± 2.5 V
#define PGA_4 0b00000010 //± 1.25 V
#define PGA_8 0b00000011 //± 625 mV
#define PGA_16 0b00000100 //± 312.5 mV
// Single-ended inputs
#define SING_0 0b00001111 // A0 + GND (common) as single-ended input
#define SING_1 0b00011111 // A1 + GND (common) as single-ended input
#define SING_2 0b00101111 // A2 + GND (common) as single-ended input
#define SING_3 0b00111111 // A3 + GND (common) as single-ended input
#define SING_4 0b01001111 // A4 + GND (common) as single-ended input
#define SING_5 0b01011111 // A5 + GND (common) as single-ended input
#define SING_6 0b01101111 // A6 + GND (common) as single-ended input
#define SING_7 0b01111111 // A7 + GND (common) as single-ended input
// PGA settings //Input voltage range
#define PGA_1 0b00000000 // ± 5 V
#define PGA_2 0b00000001 // ± 2.5 V
#define PGA_4 0b00000010 // ± 1.25 V
#define PGA_8 0b00000011 // ± 625 mV
#define PGA_16 0b00000100 // ± 312.5 mV
#define PGA_32 0b00000101 //+ 156.25 mV
#define PGA_64 0b00000110 //± 78.125 mV
#define PGA_64 0b00000110 // ± 78.125 mV
//Datarate //DEC
#define DRATE_30000SPS 0b11110000 //240
#define DRATE_15000SPS 0b11100000 //224
#define DRATE_7500SPS 0b11010000 //208
#define DRATE_3750SPS 0b11000000 //192
#define DRATE_2000SPS 0b10110000 //176
#define DRATE_1000SPS 0b10100001 //161
#define DRATE_500SPS 0b10010010 //146
#define DRATE_100SPS 0b10000010 //130
#define DRATE_60SPS 0b01110010 //114
#define DRATE_50SPS 0b01100011 //99
#define DRATE_30SPS 0b01010011 //83
#define DRATE_25SPS 0b01000011 //67
#define DRATE_15SPS 0b00110011 //51
#define DRATE_10SPS 0b00100011 //35
#define DRATE_5SPS 0b00010011 //19
#define DRATE_2SPS 0b00000011 //3
// Datarate //DEC
#define DRATE_30000SPS 0b11110000 // 240
#define DRATE_15000SPS 0b11100000 // 224
#define DRATE_7500SPS 0b11010000 // 208
#define DRATE_3750SPS 0b11000000 // 192
#define DRATE_2000SPS 0b10110000 // 176
#define DRATE_1000SPS 0b10100001 // 161
#define DRATE_500SPS 0b10010010 // 146
#define DRATE_100SPS 0b10000010 // 130
#define DRATE_60SPS 0b01110010 // 114
#define DRATE_50SPS 0b01100011 // 99
#define DRATE_30SPS 0b01010011 // 83
#define DRATE_25SPS 0b01000011 // 67
#define DRATE_15SPS 0b00110011 // 51
#define DRATE_10SPS 0b00100011 // 35
#define DRATE_5SPS 0b00010011 // 19
#define DRATE_2SPS 0b00000011 // 3
//Status register
// Status register
#define BITORDER_MSB 0
#define BITORDER_LSB 1
#define ACAL_DISABLED 0
@@ -66,7 +70,7 @@
#define BUFFER_DISABLED 0
#define BUFFER_ENABLED 1
//Register addresses
// Register addresses
#define STATUS_REG 0x00
#define MUX_REG 0x01
#define ADCON_REG 0x02
@@ -79,7 +83,7 @@
#define FSC1_REG 0x09
#define FSC2_REG 0x0A
//Command definitions
// Command definitions
#define WAKEUP 0b00000000
#define RDATA 0b00000001
#define RDATAC 0b00000011
@@ -96,26 +100,30 @@
#define RESET 0b11111110
//----------------------------------------------------------------
class ADS1256
{
{
public:
static constexpr int8_t PIN_UNUSED = -1;
static constexpr int8_t PIN_UNUSED = -1;
//Constructor
ADS1256(const int8_t DRDY_pin, const int8_t RESET_pin, const int8_t SYNC_pin, const int8_t CS_pin, float VREF, SPIClass* spi = &SPI);
//Initializing function
void InitializeADC();
//ADS1256(int drate, int pga, int byteOrder, bool bufen);
//Read a register
// Constructor
ADS1256(const int8_t DRDY_pin, const int8_t RESET_pin, const int8_t SYNC_pin, const int8_t CS_pin, float VREF, SPIClass *spi = &SPI);
~ADS1256()
{
vSemaphoreDelete(m_drdyHigh);
vSemaphoreDelete(m_drdyLow);
}
// Initializing function
void InitializeADC();
// ADS1256(int drate, int pga, int byteOrder, bool bufen);
// Read a register
long readRegister(uint8_t registerAddress);
//Write a register
void writeRegister(uint8_t registerAddress, uint8_t registerValueToWrite);
//Individual methods
// Write a register
void writeRegister(uint8_t registerAddress, uint8_t registerValueToWrite);
// Individual methods
void setDRATE(uint8_t drate);
void setPGA(uint8_t pga);
uint8_t getPGA();
@@ -128,62 +136,80 @@ static constexpr int8_t PIN_UNUSED = -1;
uint8_t getAutoCal();
void setGPIO(uint8_t dir0, uint8_t dir1, uint8_t dir2, uint8_t dir3);
void writeGPIO(uint8_t dir0value, uint8_t dir1value, uint8_t dir2value, uint8_t dir3value);
uint8_t readGPIO(uint8_t gpioPin);
uint8_t readGPIO(uint8_t gpioPin);
void setCLKOUT(uint8_t clkout);
void setSDCS(uint8_t sdcs);
void sendDirectCommand(uint8_t directCommand);
void setSDCS(uint8_t sdcs);
void sendDirectCommand(uint8_t directCommand);
//Get a single conversion
// Get a single conversion
long readSingle();
//Single input continuous reading
// Single input continuous reading
long readSingleContinuous();
//Cycling through the single-ended inputs
long cycleSingle(); //Ax + COM
//Cycling through the differential inputs
long cycleDifferential(); //Ax + Ay
//Converts the reading into a voltage value
// Cycling through the single-ended inputs
long cycleSingle(); // Ax + COM
// Cycling through the differential inputs
long cycleDifferential(); // Ax + Ay
// Converts the reading into a voltage value
float convertToVoltage(int32_t rawData);
//Stop AD
// Stop AD
void stopConversion();
// functions for callback
inline uint8_t getDRDYpin()
{
return m_DRDY_pin;
}
SemaphoreHandle_t getDRDYsemaphoreHigh()
{
return m_drdyHigh;
}
SemaphoreHandle_t getDRDYsemaphoreLow()
{
return m_drdyLow;
}
private:
SPIClass* _spi; //Pointer to an SPIClass object
SPIClass *_spi; // Pointer to an SPIClass object
void waitForLowDRDY(); // Block until DRDY is low
void waitForHighDRDY(); // Block until DRDY is high
void updateMUX(uint8_t muxValue);
inline void CS_LOW();
inline void CS_HIGH();
void waitForLowDRDY(); // Block until DRDY is low
void waitForHighDRDY(); // Block until DRDY is high
void updateMUX(uint8_t muxValue);
inline void CS_LOW();
inline void CS_HIGH();
void updateConversionParameter(); //Refresh the conversion parameter based on the PGA
void updateConversionParameter(); // Refresh the conversion parameter based on the PGA
float _VREF = 0; //Value of the reference voltage
float conversionParameter = 0; //PGA-dependent multiplier
//Pins
int8_t _DRDY_pin; //Pin assigned for DRDY
int8_t _RESET_pin; //Pin assigned for RESET
int8_t _SYNC_pin; //Pin assigned for SYNC
int8_t _CS_pin; //Pin assigned for CS
float m_VREF = 0; // Value of the reference voltage
float m_conversionParameter = 0; // PGA-dependent multiplier
// Pins
int8_t m_DRDY_pin; // Pin assigned for DRDY
int8_t m_RESET_pin; // Pin assigned for RESET
int8_t m_SYNC_pin; // Pin assigned for SYNC
int8_t m_CS_pin; // Pin assigned for CS
//Register values
byte _DRATE; //Value of the DRATE register
byte _ADCON; //Value of the ADCON register
byte _MUX; //Value of the MUX register
byte _PGA; //Value of the PGA (within ADCON)
byte _GPIO; //Value of the GPIO register
byte _STATUS; //Value of the status register
byte _GPIOvalue; //GPIO value
byte _ByteOrder; //Byte order
// Register values
uint8_t m_DRATE; // Value of the DRATE register
uint8_t m_ADCON; // Value of the ADCON register
uint8_t m_MUX; // Value of the MUX register
uint8_t m_PGA; // Value of the PGA (within ADCON)
uint8_t m_GPIO; // Value of the GPIO register
uint8_t m_STATUS; // Value of the status register
uint8_t m_GPIOvalue; // GPIO value
uint8_t m_ByteOrder; // Byte order
byte _outputBuffer[3]; //3-byte (24-bit) buffer for the fast acquisition - Single-channel, continuous
long _outputValue; //Combined value of the _outputBuffer[3]
bool _isAcquisitionRunning; //bool that keeps track of the acquisition (running or not)
uint8_t _cycle; //Tracks the cycles as the MUX is cycling through the input channels
uint8_t m_outputBuffer[3]; // 3-byte (24-bit) buffer for the fast acquisition - Single-channel, continuous
int32_t m_outputValue; // Combined value of the m_outputBuffer[3]
bool m_isAcquisitionRunning; // bool that keeps track of the acquisition (running or not)
uint8_t m_cycle; // Tracks the cycles as the MUX is cycling through the input channels
SemaphoreHandle_t m_drdyHigh;
SemaphoreHandle_t m_drdyLow;
};
#endif

View File

@@ -0,0 +1,38 @@
#include <led.h>
RGBled::RGBled(const uint8_t pin) : m_led(pin)
{
pinMode(m_led, OUTPUT);
writeStatus(RGBled::ERROR);
m_brightness = 1.0f;
}
RGBled::~RGBled()
{
pinMode(m_led, INPUT);
}
void RGBled::setBrightness(const float b)
{
m_brightness = b;
}
void RGBled::setStatus(const LedStatus s)
{
if (m_status == s)
return;
std::lock_guard<std::mutex> lock(m_mutex);
m_status = s;
writeStatus(m_status);
}
const RGBled::LedStatus RGBled::getSatus(void)
{
return m_status;
}
void RGBled::writeStatus(const RGBled::LedStatus s)
{
const RGBled::color_u u{.status = s};
rgbLedWrite(m_led, (uint8_t)(m_brightness*u.color.r), (uint8_t)(m_brightness*u.color.g), (uint8_t)(m_brightness*u.color.b));
}

View File

@@ -0,0 +1,65 @@
#pragma once
// System Inlcudes
#include <Arduino.h>
#include <mutex>
#define RED 0x00FF00
#define GREEN 0xFF0000
#define BLUE 0x0000FF
#define WHITE 0xFFFFFF
#define YELLOW 0xFFFF00
#define CYAN 0xFF00FF
#define MAGENTA 0x00FFFF
#define ORANGE 0xA5FF00
#define PURPLE 0x008080
#define PINK 0x69FFB4
#define LIME 0xCD3232
#define SKY_BLUE 0xCE87EB
#define GOLD 0xD7FF00
#define TURQUOISE 0xE040D0
#define INDIGO 0x004B82
#define GRAY 0x808080
class RGBled
{
public:
enum LedStatus
{
OK = GREEN,
ERROR = RED,
INIT = YELLOW,
DATA_A = CYAN,
DATA_B = MAGENTA,
DATA_ALL = ORANGE,
IDLE = GRAY
};
struct color_t
{
uint8_t a, r, g, b;
};
union color_u
{
uint32_t status;
color_t color;
};
public:
RGBled(const uint8_t pin = 48);
~RGBled();
void setBrightness(const float b);
void setStatus(const LedStatus s);
const LedStatus getSatus(void);
private:
void writeStatus(const LedStatus s);
private:
LedStatus m_status = LedStatus::IDLE;
std::mutex m_mutex;
float m_brightness;
const uint8_t m_led;
};

View File

@@ -1,6 +0,0 @@
# Name, Type, SubType, Offset, Size, Flags
nvs, data, nvs, 0x9000, 0x5000,
otadata, data, ota, 0xe000, 0x2000,
app0, app, ota_0, 0x10000, 0x700000,
app1, app, ota_1, 0x710000,0x700000,
spiffs, data, spiffs, 0xE10000,0x1F0000,
1 # Name Type SubType Offset Size Flags
2 nvs data nvs 0x9000 0x5000
3 otadata data ota 0xe000 0x2000
4 app0 app ota_0 0x10000 0x700000
5 app1 app ota_1 0x710000 0x700000
6 spiffs data spiffs 0xE10000 0x1F0000

View File

@@ -0,0 +1,6 @@
# ESP32 Partition Table
# Name, Type, SubType, Offset, Size
nvs, data, nvs, 0x9000, 0x4000
phy_init, data, phy, 0xd000, 0x1000
factory, app, factory, 0x10000, 0x300000
littlefs, data, littlefs, 0x310000, 0xCF0000
1 # ESP32 Partition Table
2 # Name, Type, SubType, Offset, Size
3 nvs, data, nvs, 0x9000, 0x4000
4 phy_init, data, phy, 0xd000, 0x1000
5 factory, app, factory, 0x10000, 0x300000
6 littlefs, data, littlefs, 0x310000, 0xCF0000

View File

@@ -2,5 +2,5 @@
# Name, Type, SubType, Offset, Size
nvs, data, nvs, 0x9000, 0x4000
phy_init, data, phy, 0xd000, 0x1000
factory, app, factory, 0x10000, 0x5F0000
spiffs, data, spiffs, 0x600000, 0xA00000
factory, app, factory, 0x10000, 0x300000
spiffs, data, spiffs, 0x310000, 0xCF0000
1 # ESP32 Partition Table
2 # Name, Type, SubType, Offset, Size
3 nvs, data, nvs, 0x9000, 0x4000
4 phy_init, data, phy, 0xd000, 0x1000
5 factory, app, factory, 0x10000, 0x5F0000 factory, app, factory, 0x10000, 0x300000
6 spiffs, data, spiffs, 0x600000, 0xA00000 spiffs, data, spiffs, 0x310000, 0xCF0000

View File

@@ -10,61 +10,61 @@
[env:esp32-s3-devkitc1-n16r8]
board = esp32-s3-devkitc1-n16r8
board_build.partitions = partitions/no_ota_10mb_spiffs.csv
board_build.partitions = partitions/no_ota_10mb_littlefs.csv
board_build.filesystem = littlefs
platform = https://github.com/pioarduino/platform-espressif32/releases/download/stable/platform-espressif32.zip
framework = arduino
lib_deps =
hideakitai/DebugLog@^0.8.4
bblanchon/ArduinoJson@^7.4.2
hideakitai/PCA95x5@^0.1.3
adafruit/Adafruit SSD1306@^2.5.16
garfius/Menu-UI@^1.2.0
;Upload protocol configuration
me-no-dev/AsyncTCP@^3.3.2
me-no-dev/ESPAsyncWebServer@^3.6.0
adafruit/Adafruit NeoPixel@^1.15.4
upload_protocol = esptool
upload_port = COM8
upload_port = /dev/ttyACM1
upload_speed = 921600
;Monitor configuration
monitor_port = COM4
monitor_port = /dev/ttyACM0
monitor_speed = 921600
; Build configuration
build_type = release
build_flags =
-DARDUINO_USB_CDC_ON_BOOT=0
-DARDUINO_USB_MODE=0
-fstack-protector-all
-DCONFIG_FREERTOS_GENERATE_RUN_TIME_STATS=1
-DCONFIG_FREERTOS_USE_TRACE_FACILITY=1
-DCORE_DEBUG_LEVEL=5
-DARDUINO_USB_CDC_ON_BOOT=0
-DARDUINO_USB_MODE=0
-DCONFIG_ASYNC_TCP_MAX_ACK_TIME=5000
-DCONFIG_ASYNC_TCP_PRIORITY=21
-DCONFIG_ASYNC_TCP_QUEUE_SIZE=64
-DCONFIG_ASYNC_TCP_RUNNING_CORE=1
-DCONFIG_ASYNC_TCP_STACK_SIZE=4096
-fstack-protector-all
[env:esp32-s3-devkitc1-n16r8-debug]
board = ${env:esp32-s3-devkitc1-n16r8.board}
board_build.partitions = ${env:esp32-s3-devkitc1-n16r8.board_build.partitions}
board_build.filesystem = ${env:esp32-s3-devkitc1-n16r8.board_build.filesystem}
platform = ${env:esp32-s3-devkitc1-n16r8.platform}
framework = ${env:esp32-s3-devkitc1-n16r8.framework}
lib_deps = ${env:esp32-s3-devkitc1-n16r8.lib_deps}
;Upload protocol configuration
lib_deps =
${env:esp32-s3-devkitc1-n16r8.lib_deps}
adafruit/Adafruit NeoPixel@^1.15.4
upload_protocol = esptool
upload_port = COM4
upload_port = /dev/ttyACM1
upload_speed = 921600
;Monitor configuration
monitor_port = COM4
monitor_port = /dev/ttyACM0
monitor_speed = 921600
; Debug configuration
debug_tool = esp-builtin
debug_speed = 15000
; Build configuration
build_type = debug
build_flags =
-O0
-g3
-ggdb3
-DCORE_DEBUG_LEVEL=5
-DARDUINO_USB_CDC_ON_BOOT=0
-DARDUINO_USB_MODE=0
-fstack-protector-all
-O0
-g3
-ggdb3
-DCORE_DEBUG_LEVEL=5
-DARDUINO_USB_CDC_ON_BOOT=0
-DARDUINO_USB_MODE=0
-DCONFIG_ASYNC_TCP_MAX_ACK_TIME=5000
-DCONFIG_ASYNC_TCP_PRIORITY=21
-DCONFIG_ASYNC_TCP_QUEUE_SIZE=128
-DCONFIG_ASYNC_TCP_RUNNING_CORE=1
-DCONFIG_ASYNC_TCP_STACK_SIZE=8192
-fstack-protector-all

View File

@@ -1,60 +1,123 @@
#include "datasave.h"
#include <math.h>
void save_history(const PSRAMVector<ignitionBoxStatus> &history)
LITTLEFSGuard::LITTLEFSGuard()
{
// Initialize SPIFFS
if (!SPIFFS.begin(true))
if (!LittleFS.begin(true, "/littlefs", 10, "littlefs"))
{
LOG_ERROR("Failed to mount SPIFFS");
LOG_ERROR("5 seconds to restart...");
vTaskDelay(pdMS_TO_TICKS(5000));
esp_restart();
LOG_ERROR("Failed to mount LittleFS");
}
else
{
LOG_INFO("SPIFFS mounted successfully");
return;
LOG_INFO("LittleFS mounted successfully");
LOG_INFO("LittleFS Free KBytes:", (LittleFS.totalBytes() - LittleFS.usedBytes()) / 1024);
}
}
std::ofstream ofs("/spiffs/ignA_history.csv", std::ios::out | std::ios::trunc);
if (ofs.fail())
{
LOG_ERROR("Failed to open file for writing");
return;
}
LITTLEFSGuard::~LITTLEFSGuard()
{
LittleFS.end();
LOG_INFO("LittleFS unmounted successfully");
}
//write csv header
ofs << "TS,\
EVENTS_12,DLY_12,STAT_12,V_12_1,V_12_2,V_12_3,V_12_4,IGNITION_MODE_12,\
EVENTS_34,DLY_34,STAT_34,V_34_1,V_34_2,V_34_3,V_34_4,IGNITION_MODE_34,\
ENGINE_RPM,ADC_READTIME,N_QUEUE_ERRORS";
for (auto &entry : history)
void ignitionBoxStatusFiltered::filter(int32_t &old, const int32_t value, const uint32_t k)
{
float alpha = 1.0f / (float)k;
old = old + (int32_t)(alpha * (float)(value - old));
}
void ignitionBoxStatusFiltered::filter(float &old, const float value, const uint32_t k)
{
float alpha = 1.0f / (float)k;
old = old + (float)(alpha * (float)(value - old));
}
void ignitionBoxStatusFiltered::reset()
{
m_last = ignitionBoxStatus();
m_count = 0;
m_data_valid = false;
}
void ignitionBoxStatusFiltered::update(const ignitionBoxStatus &new_status)
{
if (m_count == 0 && !m_data_valid)
{
ofs << std::to_string(entry.timestamp) << ","
<< std::to_string(entry.coils12.n_events) << ","
<< std::to_string(entry.coils12.spark_delay) << ","
<< std::string(sparkStatusNames.at(entry.coils12.spark_status)) << ","
<< std::to_string(entry.coils12.peak_p_in) << ","
<< std::to_string(entry.coils12.peak_n_in) << ","
<< std::to_string(entry.coils12.peak_p_out) << ","
<< std::to_string(entry.coils12.peak_n_out) << ","
<< std::string(softStartStatusNames.at(entry.coils12.sstart_status)) << ","
<< std::to_string(entry.coils34.n_events) << ","
<< std::to_string(entry.coils34.spark_delay) << ","
<< std::string(sparkStatusNames.at(entry.coils34.spark_status)) << ","
<< std::to_string(entry.coils34.peak_p_in) << ","
<< std::to_string(entry.coils34.peak_n_in) << ","
<< std::to_string(entry.coils34.peak_p_out) << ","
<< std::to_string(entry.coils34.peak_n_out) << ","
<< std::string(softStartStatusNames.at(entry.coils34.sstart_status)) << ","
<< std::to_string(entry.eng_rpm) << ","
<< std::to_string(entry.adc_read_time) << ","
<< std::to_string(entry.n_queue_errors);
ofs << std::endl;
m_last = new_status;
}
auto written_bytes = ofs.tellp();
ofs.flush();
ofs.close();
LOG_INFO("Ignition A history saved to SPIFFS, bytes written: ", (uint32_t)written_bytes);
SPIFFS.end(); // unmount SPIFFS to ensure data is written and avoid corruption on next mount
}
m_count++;
// simple moving average calculation
m_last.timestamp = new_status.timestamp; // keep timestamp of latest status
m_last.coils12.n_events = new_status.coils12.n_events; // sum events instead of averaging
m_last.coils12.n_missed_firing = new_status.coils12.n_missed_firing; // sum missed firings instead of averaging
m_last.coils12.spark_status = new_status.coils12.spark_status; // take latest spark status
m_last.coils12.sstart_status = new_status.coils12.sstart_status; // take latest soft start status
filter(m_last.coils12.spark_delay, new_status.coils12.spark_delay, m_max_count); // incremental average calculation
filter(m_last.coils12.peak_p_in, new_status.coils12.peak_p_in, m_max_count); // incremental average calculation
filter(m_last.coils12.peak_n_in, new_status.coils12.peak_n_in, m_max_count); // incremental average calculation
filter(m_last.coils12.peak_p_out, new_status.coils12.peak_p_out, m_max_count); // incremental average calculation
filter(m_last.coils12.peak_n_out, new_status.coils12.peak_n_out, m_max_count); // incremental average calculation
m_last.coils34.n_events = new_status.coils34.n_events; // sum events instead of averaging
m_last.coils34.n_missed_firing = new_status.coils34.n_missed_firing; // sum missed firings instead of averaging
m_last.coils34.spark_status = new_status.coils34.spark_status; // take latest spark status
m_last.coils34.sstart_status = new_status.coils34.sstart_status; // take latest soft start status
filter(m_last.coils34.spark_delay, new_status.coils34.spark_delay, m_max_count); // incremental average calculation
filter(m_last.coils34.peak_p_in, new_status.coils34.peak_p_in, m_max_count); // incremental average calculation
filter(m_last.coils34.peak_n_in, new_status.coils34.peak_n_in, m_max_count); // incremental average calculation
filter(m_last.coils34.peak_p_out, new_status.coils34.peak_p_out, m_max_count); // incremental average calculation
filter(m_last.coils34.peak_n_out, new_status.coils34.peak_n_out, m_max_count); // incremental average calculation
filter(m_last.eng_rpm, new_status.eng_rpm, m_max_count); // incremental average calculation // incremental average calculation
filter(m_last.adc_read_time, m_last.adc_read_time, m_max_count); // incremental average calculation
m_last.n_queue_errors = new_status.n_queue_errors;
if (m_count >= m_max_count)
{
m_count = 0; // reset count after reaching max samples to average
m_data_valid = true; // set data valid flag after first average is calculated
}
}
const bool ignitionBoxStatusFiltered::get(ignitionBoxStatus &status) const
{
if (m_data_valid)
{
status = m_last;
}
return m_data_valid;
}
const ArduinoJson::JsonDocument ignitionBoxStatusFiltered::toJson() const
{
ArduinoJson::JsonDocument doc;
if (m_data_valid)
{
doc["timestamp"] = m_last.timestamp;
doc["datavalid"] = m_data_valid ? "TRUE" : "FALSE";
doc["coils12"]["n_events"] = m_last.coils12.n_events;
doc["coils12"]["n_missed_firing"] = m_last.coils12.n_missed_firing;
doc["coils12"]["spark_delay"] = m_last.coils12.spark_delay;
doc["coils12"]["spark_status"] = sparkStatusNames.at(m_last.coils12.spark_status);
doc["coils12"]["peak_p_in"] = m_last.coils12.peak_p_in;
doc["coils12"]["peak_n_in"] = m_last.coils12.peak_n_in;
doc["coils12"]["peak_p_out"] = m_last.coils12.peak_p_out;
doc["coils12"]["peak_n_out"] = m_last.coils12.peak_n_out;
doc["coils12"]["sstart_status"] = softStartStatusNames.at(m_last.coils12.sstart_status);
doc["coils34"]["n_events"] = m_last.coils34.n_events;
doc["coils34"]["n_missed_firing"] = m_last.coils34.n_missed_firing;
doc["coils34"]["spark_delay"] = m_last.coils34.spark_delay;
doc["coils34"]["spark_status"] = sparkStatusNames.at(m_last.coils34.spark_status);
doc["coils34"]["peak_p_in"] = m_last.coils34.peak_p_in;
doc["coils34"]["peak_n_in"] = m_last.coils34.peak_n_in;
doc["coils34"]["peak_p_out"] = m_last.coils34.peak_p_out;
doc["coils34"]["peak_n_out"] = m_last.coils34.peak_n_out;
doc["coils34"]["sstart_status"] = softStartStatusNames.at(m_last.coils34.sstart_status);
doc["eng_rpm"] = m_last.eng_rpm;
doc["adc_read_time"] = m_last.adc_read_time;
doc["n_queue_errors"] = m_last.n_queue_errors;
}
return doc;
}

View File

@@ -1,24 +1,50 @@
#pragma once
#define DEBUGLOG_DEFAULT_LOG_LEVEL_INFO
// System Includes
#include <Arduino.h>
#include <DebugLog.h>
#include <SPIFFS.h>
#include <string>
#include <fstream>
#include <ArduinoJson.h>
#include <filesystem>
#include <LittleFS.h>
// Project Includes
#include "isr.h"
#include "psvector.h"
const bool SAVE_HISTORY_TO_SPIFFS = true; // Set to true to enable saving history to SPIFFS, false to disable
const uint32_t max_history = 256;
static void saveHistoryTask(void *pvParameters)
class LITTLEFSGuard
{
auto *history = static_cast<PSRAMVector<ignitionBoxStatus> *>(pvParameters);
save_history(*history);
vTaskDelete(NULL);
}
public:
LITTLEFSGuard();
~LITTLEFSGuard();
};
void save_history(const PSRAMVector<ignitionBoxStatus> &history);
class ignitionBoxStatusFiltered
{
private:
ignitionBoxStatus m_last;
uint32_t m_count = 0;
uint32_t m_max_count = 100; // number of samples to average before resetting
bool m_data_valid = false; // flag to indicate if the average data is valid (i.e. at least one sample has been added)
public:
ignitionBoxStatusFiltered() = default;
ignitionBoxStatusFiltered(const uint32_t max_count) : m_max_count(max_count)
{
m_data_valid = false;
m_count = 0;
}
void reset();
void update(const ignitionBoxStatus &new_status);
const bool get(ignitionBoxStatus &status) const;
const ArduinoJson::JsonDocument toJson() const;
private:
void filter(int32_t &old, const int32_t value, const uint32_t k);
void filter(float &old, const float value, const uint32_t k);
};

View File

@@ -0,0 +1,95 @@
#pragma once
#include <Arduino.h>
#include <map>
#include <psvector.h>
// =====================
// Event Flags (bitmask)
// =====================
static const uint32_t TRIG_FLAG_12P = (1 << 0);
static const uint32_t TRIG_FLAG_12N = (1 << 1);
static const uint32_t TRIG_FLAG_34P = (1 << 2);
static const uint32_t TRIG_FLAG_34N = (1 << 3);
static const uint32_t SPARK_FLAG_TIMEOUT = (1 << 8);
static const uint32_t SPARK_FLAG_12 = (1 << 9);
static const uint32_t SPARK_FLAG_34 = (1 << 10);
// Spark Status
enum sparkStatus
{
SPARK_POS_OK,
SPARK_NEG_OK,
SPARK_POS_SKIP,
SPARK_NEG_SKIP,
SPARK_POS_WAIT,
SPARK_NEG_WAIT,
SPARK_POS_FAIL,
SPARK_NEG_FAIL,
SPARK_POS_UNEXPECTED,
SPARK_NEG_UNEXPECTED,
SPARK_SYNC_FAIL,
};
static const std::map<const sparkStatus, const char *> sparkStatusNames = {
{SPARK_POS_OK, "SPARK_POS_OK"},
{SPARK_NEG_OK, "SPARK_NEG_OK"},
{SPARK_POS_SKIP, "SPARK_POS_SKIP"},
{SPARK_NEG_SKIP, "SPARK_NEG_SKIP"},
{SPARK_POS_WAIT, "SPARK_POS_WAIT"},
{SPARK_NEG_WAIT, "SPARK_NEG_WAIT"},
{SPARK_POS_FAIL, "SPARK_POS_FAIL"},
{SPARK_NEG_FAIL, "SPARK_NEG_FAIL"},
{SPARK_POS_UNEXPECTED, "SPARK_POS_UNEXPECTED"},
{SPARK_NEG_UNEXPECTED, "SPARK_NEG_UNEXPECTED"},
{SPARK_SYNC_FAIL, "SPARK_SYNC_FAIL"},
};
enum softStartStatus
{
NORMAL,
SOFT_START,
ERROR,
};
const std::map<const softStartStatus, const char *> softStartStatusNames = {
{NORMAL, "NORMAL"},
{SOFT_START, "SOFT_START"},
{ERROR, "ERROR"},
};
struct coilsStatus
{
int64_t trig_time = 0;
int64_t spark_time = 0;
int32_t spark_delay = 0; // in microseconds
sparkStatus spark_status = sparkStatus::SPARK_POS_OK;
softStartStatus sstart_status = softStartStatus::NORMAL;
float peak_p_in = 0.0;
float peak_n_in = 0.0;
float peak_p_out = 0.0;
float peak_n_out = 0.0;
float level_spark = 0.0;
uint32_t n_events = 0;
uint32_t n_missed_firing = 0;
};
// Task internal Status
struct ignitionBoxStatus
{
int64_t timestamp = 0;
// coils pairs for each ignition
coilsStatus coils12;
coilsStatus coils34;
// voltage from generator
float volts_gen = 0.0;
// enine rpm
int32_t eng_rpm = 0;
// debug values
uint32_t n_queue_errors = 0;
int32_t adc_read_time = 0;
};
template <typename T>
using PSRAMVector = std::vector<T, PSRAMAllocator<T>>;

View File

@@ -3,37 +3,53 @@
// Library defines
#define ADS1256_SPI_ALREADY_STARTED
// System Includes
#include <memory>
// Device Libraries
#include <ADS1256.h>
#include <AD5292.h>
#include <Adafruit_SSD1306.h>
#include <PCA95x5.h>
#include <extio.h>
#include <Wire.h>
// ADC Channel mapping
#define ADC_CH_PEAK_12P_IN SING_0
#define ADC_CH_PEAK_12N_IN SING_1
#define ADC_CH_PEAK_34P_IN SING_2
#define ADC_CH_PEAK_34N_IN SING_3
#define ADC_CH_PEAK_12P_OUT SING_4
#define ADC_CH_PEAK_12N_OUT SING_5
#define ADC_CH_PEAK_34P_OUT SING_6
#define ADC_CH_PEAK_34N_OUT SING_7
#define ADC_CH_PEAK_12P_IN SING_0
#define ADC_CH_PEAK_12N_IN SING_1
#define ADC_CH_PEAK_34P_IN SING_2
#define ADC_CH_PEAK_34N_IN SING_3
#define ADC_CH_PEAK_12P_OUT SING_4
#define ADC_CH_PEAK_12N_OUT SING_5
#define ADC_CH_PEAK_34P_OUT SING_6
#define ADC_CH_PEAK_34N_OUT SING_7
// Device Pointer structs for tasks
struct Devices {
AD5292 *pot_a = NULL, *pot_b = NULL;
ADS1256 *adc_a = NULL, *adc_b = NULL;
Adafruit_SSD1306* lcd = NULL;
PCA9555* io = NULL;
struct Devices
{
// Busses
std::unique_ptr<TwoWire> m_i2c = nullptr;
std::unique_ptr<SPIClass> m_spi_a = nullptr;
std::unique_ptr<SPIClass> m_spi_b = nullptr;
// Bus Mutextes
std::mutex m_spi_a_mutex;
std::mutex m_spi_b_mutex;
std::mutex m_i2c_mutex;
// Device Pointers
std::unique_ptr<AD5292> m_pot_a = nullptr;
std::unique_ptr<AD5292> m_pot_b = nullptr;
std::unique_ptr<ADS1256> m_adc_a = nullptr;
std::unique_ptr<ADS1256> m_adc_b = nullptr;
std::unique_ptr<ExternalIO> m_ext_io = nullptr;
};
// Adc read channel wrapper to selet mux before reading
inline float adcReadChannel(ADS1256* adc, const uint8_t ch){
inline float adcReadChannel(ADS1256 *adc, const uint8_t ch)
{
adc->setMUX(ch);
// scarta 3 conversioni
for (int i = 0; i < 3; i++) {
adc->readSingle();
}
adc->readSingle();
// ora lettura valida a 30kSPS → ~100 µs di settling
return adc->convertToVoltage(adc->readSingle());
}

129
RotaxMonitor/src/extio.cpp Normal file
View File

@@ -0,0 +1,129 @@
#include <extio.h>
// Static interrupt callback
static void onExpanderInterrupt(void *arg)
{
auto cls = (ExternalIO *)(arg);
if (!cls) // invalid args
return;
cls->extReadInterrupt();
}
ExternalIO::ExternalIO(TwoWire &i2c, std::mutex &i2c_mutex, const uint8_t int_pin) : m_i2cMutex(i2c_mutex), m_i2c(i2c), m_intPin(int_pin)
{
std::lock_guard<std::mutex> lock(m_i2cMutex);
// Attach OUT expanders on BUS
m_outMap[EXPANDER_A_OUT_ADDR] = std::make_unique<PCA9555>();
m_outMap[EXPANDER_A_OUT_ADDR]->attach(m_i2c, EXPANDER_A_OUT_ADDR);
m_outMap[EXPANDER_B_OUT_ADDR] = std::make_unique<PCA9555>();
m_outMap[EXPANDER_B_OUT_ADDR]->attach(m_i2c, EXPANDER_B_OUT_ADDR);
for (auto &[a, e] : m_outMap)
{
e->direction(PCA95x5::Direction::OUT_ALL);
e->polarity(PCA95x5::Polarity::ORIGINAL_ALL);
};
// Attach IN Expanders on Bus
m_inMap[EXPANDER_A_IN_ADDR] = std::make_unique<PCA9555>();
m_inMap[EXPANDER_A_IN_ADDR]->attach(m_i2c, EXPANDER_A_IN_ADDR);
m_inMap[EXPANDER_B_IN_ADDR] = std::make_unique<PCA9555>();
m_inMap[EXPANDER_B_IN_ADDR]->attach(m_i2c, EXPANDER_B_IN_ADDR);
for (auto &[a, e] : m_inMap)
{
e->direction(PCA95x5::Direction::IN_ALL);
e->polarity(PCA95x5::Polarity::ORIGINAL_ALL);
m_lastInputState[a] = e->read(); /// initialize input state to collect interrupts
};
}
ExternalIO::~ExternalIO() {
}
void ExternalIO::extDigitalWrite(const uint32_t mappedPin, const bool val)
{
std::lock_guard<std::mutex> lock(m_i2cMutex);
const io_t pa = map2pin(mappedPin);
if (!m_outMap.contains(pa.addr))
{
LOG_ERROR("Undefined IO Expander addr: [", pa.addr, "]");
return;
}
auto &io = m_outMap.at(pa.addr);
if (!io->write(static_cast<PCA95x5::Port::Port>(pa.pin), val ? PCA95x5::Level::H : PCA95x5::Level::L))
{
LOG_ERROR("IO Expander [", pa.addr, "] Unable to WRITE Port [", pa.pin, "] to [", val ? "HIGH" : "LOW");
LOG_ERROR("IO Expander Error [", io->i2c_error(), "]");
}
}
const bool ExternalIO::extDigitalRead(const uint32_t mappedPin)
{
std::lock_guard<std::mutex> lock(m_i2cMutex);
const io_t pa = map2pin(mappedPin);
if (!m_inMap.contains(pa.addr))
{
LOG_ERROR("Undefined IO Expander addr: [", pa.addr, "]");
return false;
}
auto &io = m_inMap.at(pa.addr);
const bool rv = io->read(static_cast<PCA95x5::Port::Port>(pa.pin)) == PCA95x5::Level::H ? true : false; // read value
const uint8_t err = io->i2c_error();
if (err)
{
LOG_ERROR("IO Expander [", pa.addr, "] Unable to READ Port [", pa.pin, "]");
LOG_ERROR("IO Expander Error [", err, "]");
}
return rv;
}
void ExternalIO::extAttachInterrupt(ExtInterruptCb cb)
{
attachInterruptArg(EXPANDER_ALL_INTERRUPT, onExpanderInterrupt, (void *)(this), FALLING);
m_extInterruptCb = cb;
}
void ExternalIO::extDetachInterrupt()
{
detachInterrupt(EXPANDER_ALL_INTERRUPT);
}
void ExternalIO::extReadInterrupt()
{
std::lock_guard<std::mutex> lock(m_i2cMutex);
disableInterrupt(EXPANDER_ALL_INTERRUPT);
// read all registers and collect
IOstate interruptState;
for (auto &[a, e] : m_inMap)
{
interruptState[a] = e->read();
}
m_lastInputState = interruptState; // restore to current values
// compare to last state to see the difference
if (m_extInterruptCb)
{
for (auto &[a, v] : interruptState)
{
if (v)
m_extInterruptCb(stat2map(a, v));
}
}
enableInterrupt(EXPANDER_ALL_INTERRUPT);
}
const ExternalIO::io_t ExternalIO::map2pin(const uint32_t mappedIO)
{
return io_t{
.addr = (uint8_t)((mappedIO >> 16) & (uint8_t)0xFF),
.pin = (uint8_t)(mappedIO && (uint32_t)0xFF),
};
}
const uint32_t ExternalIO::stat2map(const uint8_t addr, const uint16_t stat)
{
if (!stat)
return 0;
return (uint32_t)(addr << 16) | (1UL << __builtin_ctz(stat));
}

49
RotaxMonitor/src/extio.h Normal file
View File

@@ -0,0 +1,49 @@
#pragma once
#define DEBUGLOG_DEFAULT_LOG_LEVEL_DEBUG
#include <Arduino.h>
#include <DebugLog.h>
#include <PCA95x5.h>
#include <pins.h>
#include <memory>
#include <map>
class ExternalIO
{
using IOptr = std::unique_ptr<PCA9555>;
using IOmap = std::map<const uint8_t, IOptr>;
using IOstate = std::map<const uint8_t, uint16_t>;
using ExtInterruptCb = std::function<void(const uint32_t)>;
struct io_t
{
uint8_t addr;
uint8_t pin;
};
public:
ExternalIO(TwoWire &i2c, std::mutex &i2c_mutex, const uint8_t int_pin);
~ExternalIO();
void extDigitalWrite(const uint32_t mappedPin, const bool val);
const bool extDigitalRead(const uint32_t mappedPin);
void extAttachInterrupt(ExtInterruptCb cb = nullptr);
void extDetachInterrupt();
void extReadInterrupt();
private:
const io_t map2pin(const uint32_t mappedIO);
const uint32_t stat2map(const uint8_t addr, const uint16_t stat);
private:
const uint8_t m_intPin;
IOmap m_inMap;
IOmap m_outMap;
uint8_t m_intPinChanged;
IOstate m_lastInputState;
ExtInterruptCb m_extInterruptCb = nullptr;
std::mutex &m_i2cMutex;
TwoWire &m_i2c;
};

View File

@@ -4,7 +4,7 @@
// ISR (Pass return bitmask to ISR management function)
// one function for each wake up pin conncted to a trigger
// =====================
void trig_isr(void *arg)
void trig_isr_A(void *arg)
{
const int64_t time_us = esp_timer_get_time();
@@ -50,4 +50,53 @@ void trig_isr(void *arg)
if (xHigherPriorityTaskWoken)
portYIELD_FROM_ISR();
}
}
void trig_isr_B(void *arg)
{
const int64_t time_us = esp_timer_get_time();
// exit if invalid args
if (!arg)
return;
BaseType_t xHigherPriorityTaskWoken = pdFALSE;
isrParams *params = (isrParams *)arg;
ignitionBoxStatus *box = params->ign_stat;
TaskHandle_t task_handle = params->rt_handle_ptr;
// exit if task not running
if (!task_handle)
return;
switch (params->flag)
{
case TRIG_FLAG_12P:
case TRIG_FLAG_12N:
// only on first trigger to avoid multiple firing due to noise, to be fixed with hardware debounce
box->coils12.trig_time = time_us;
xTaskNotifyFromISR(task_handle, params->flag, eSetValueWithOverwrite, &xHigherPriorityTaskWoken);
break;
case TRIG_FLAG_34P:
case TRIG_FLAG_34N:
// only on first trigger to avoid multiple firing due to noise, to be fixed with hardware debounce
box->coils34.trig_time = time_us;
xTaskNotifyFromISR(task_handle, params->flag, eSetValueWithOverwrite, &xHigherPriorityTaskWoken);
break;
case SPARK_FLAG_12:
box->coils12.spark_time = time_us;
xTaskNotifyFromISR(task_handle, params->flag, eSetValueWithOverwrite, &xHigherPriorityTaskWoken);
break;
case SPARK_FLAG_34:
box->coils34.spark_time = time_us;
xTaskNotifyFromISR(task_handle, params->flag, eSetValueWithOverwrite, &xHigherPriorityTaskWoken);
break;
default:
break;
}
if (xHigherPriorityTaskWoken)
portYIELD_FROM_ISR();
}

View File

@@ -12,97 +12,12 @@
#else
#include "pins_test.h"
#endif
#include "datastruct.h"
#define CORE_0 0
#define CORE_1 1
#define RT_TASK_STACK 4096 // in words
#define RT_TASK_PRIORITY (configMAX_PRIORITIES - 4) // highest priority after wifi tasks
// =====================
// Event Flags (bitmask)
// =====================
static const uint32_t TRIG_FLAG_12P = (1 << 0);
static const uint32_t TRIG_FLAG_12N = (1 << 1);
static const uint32_t TRIG_FLAG_34P = (1 << 2);
static const uint32_t TRIG_FLAG_34N = (1 << 3);
static const uint32_t SPARK_FLAG_TIMEOUT = (1 << 8);
static const uint32_t SPARK_FLAG_12 = (1 << 9);
static const uint32_t SPARK_FLAG_34 = (1 << 10);
// Spark Status
enum sparkStatus
{
SPARK_POS_OK,
SPARK_NEG_OK,
SPARK_POS_SKIP,
SPARK_NEG_SKIP,
SPARK_POS_WAIT,
SPARK_NEG_WAIT,
SPARK_POS_FAIL,
SPARK_NEG_FAIL,
SPARK_POS_UNEXPECTED,
SPARK_NEG_UNEXPECTED,
SPARK_SYNC_FAIL,
};
static const std::map<const sparkStatus, const char *> sparkStatusNames = {
{SPARK_POS_OK, "SPARK_POS_OK"},
{SPARK_NEG_OK, "SPARK_NEG_OK"},
{SPARK_POS_SKIP, "SPARK_POS_SKIP"},
{SPARK_NEG_SKIP, "SPARK_NEG_SKIP"},
{SPARK_POS_WAIT, "SPARK_POS_WAIT"},
{SPARK_NEG_WAIT, "SPARK_NEG_WAIT"},
{SPARK_POS_FAIL, "SPARK_POS_FAIL"},
{SPARK_NEG_FAIL, "SPARK_NEG_FAIL"},
{SPARK_POS_UNEXPECTED, "SPARK_POS_UNEXPECTED"},
{SPARK_NEG_UNEXPECTED, "SPARK_NEG_UNEXPECTED"},
{SPARK_SYNC_FAIL, "SPARK_SYNC_FAIL"},
};
enum softStartStatus
{
NORMAL,
SOFT_START,
ERROR,
};
const std::map<const softStartStatus, const char *> softStartStatusNames = {
{NORMAL, "NORMAL"},
{SOFT_START, "SOFT_START"},
{ERROR, "ERROR"},
};
struct coilsStatus
{
int64_t trig_time = 0;
int64_t spark_time = 0;
uint32_t spark_delay = 0; // in microseconds
sparkStatus spark_status = sparkStatus::SPARK_POS_OK;
softStartStatus sstart_status = softStartStatus::NORMAL;
float peak_p_in = 0.0;
float peak_n_in = 0.0;
float peak_p_out = 0.0;
float peak_n_out = 0.0;
float level_spark = 0.0;
uint32_t n_events = 0;
};
// Task internal Status
struct ignitionBoxStatus
{
int64_t timestamp = 0;
// coils pairs for each ignition
coilsStatus coils12;
coilsStatus coils34;
// voltage from generator
float volts_gen = 0.0;
// enine rpm
uint32_t eng_rpm = 0;
// debug values
uint32_t n_queue_errors = 0;
uint32_t adc_read_time = 0;
};
#define RT_TASK_PRIORITY (configMAX_PRIORITIES - 5) // highest priority after wifi tasks
struct isrParams
{
@@ -111,4 +26,5 @@ struct isrParams
TaskHandle_t rt_handle_ptr;
};
void IRAM_ATTR trig_isr(void *arg);
void IRAM_ATTR trig_isr_A(void *arg);
void IRAM_ATTR trig_isr_B(void *arg);

View File

@@ -1,45 +1,74 @@
#define DEBUGLOG_DEFAULT_LOG_LEVEL_INFO
#define DEBUGLOG_DEFAULT_LOG_LEVEL_DEBUG
// Arduino Libraries
#include <Arduino.h>
#include <DebugLog.h>
#include <DebugLogEnable.h>
#include <SPI.h>
#include <WiFi.h>
#include <ArduinoJson.h>
// Definitions
#include <tasks.h>
#include <devices.h>
#include <psvector.h>
#include <datasave.h>
#include <webserver.h>
#include <ui.h>
#include <led.h>
// FreeRTOS directives
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
// Defines to enable channel B
#define CH_B_ENABLE
// #define CH_B_ENABLE
#define TEST
// Debug Defines
#define WIFI_SSID "AstroRotaxMonitor"
#define WIFI_PASSWORD "maledettirotax"
#define PSRAM_MAX 4096
#define QUEUE_MAX 256
void setup()
{
Serial.begin(921600);
Serial.begin(115200);
delay(250);
Serial.setTimeout(30000);
// Setup Logger
LOG_ATTACH_SERIAL(Serial);
LOG_SET_LEVEL(DebugLogLevel::LVL_INFO);
LOG_SET_LEVEL(DebugLogLevel::LVL_DEBUG);
// Print Processor Info
LOG_INFO("ESP32 Chip:", ESP.getChipModel());
LOG_DEBUG("ESP32 Chip:", ESP.getChipModel());
if (psramFound())
{
LOG_INFO("ESP32 PSram Found");
LOG_INFO("ESP32 PSram:", ESP.getPsramSize());
LOG_DEBUG("ESP32 PSram Found");
LOG_DEBUG("ESP32 PSram:", ESP.getPsramSize());
psramInit();
}
LOG_INFO("ESP32 Flash:", ESP.getFlashChipSize());
LOG_INFO("ESP32 Heap:", ESP.getHeapSize());
LOG_INFO("ESP32 Sketch:", ESP.getFreeSketchSpace());
LOG_DEBUG("ESP32 Flash:", ESP.getFlashChipSize());
LOG_DEBUG("ESP32 Heap:", ESP.getHeapSize());
LOG_DEBUG("ESP32 Sketch:", ESP.getFreeSketchSpace());
// Init Wifi station
// LOG_INFO("Initializing WiFi...");
// WiFi.mode(WIFI_AP);
// IPAddress local_IP(10, 11, 12, 1);
// IPAddress gateway(10, 11, 12, 1);
// IPAddress subnet(255, 255, 255, 0);
// WiFi.softAPConfig(local_IP, gateway, subnet);
// WiFi.setTxPower(WIFI_POWER_5dBm); // reduce wifi power
// if (WiFi.softAP(WIFI_SSID, WIFI_PASSWORD))
// {
// LOG_INFO("WiFi AP Mode Started");
// LOG_INFO("Wifi SSID:", WIFI_SSID);
// LOG_INFO("Wifi Password:", WIFI_PASSWORD);
// LOG_INFO("WiFi IP:" + WiFi.softAPIP().toString());
// }
// else
// {
// LOG_ERROR("Failed to start WiFi AP Mode");
// LOG_ERROR("5 seconds to restart...");
// vTaskDelay(pdMS_TO_TICKS(5000));
// esp_restart();
// }
// Initialize Interrupt pins on PICKUP detectors
initTriggerPinsInputs();
@@ -47,74 +76,54 @@ void setup()
initSparkPinInputs();
}
////////////////////// MAIN LOOP //////////////////////
void loop()
{
// global variables
RGBled led;
led.setBrightness(0.025f);
led.setStatus(RGBled::LedStatus::INIT);
std::shared_ptr<Devices> dev = std::make_shared<Devices>();
bool running = true;
const uint32_t max_history = 1024;
const uint32_t max_queue = 128;
std::mutex fs_mutex;
LITTLEFSGuard fsGuard;
PSRAMVector<ignitionBoxStatus> ignA_history_0(max_history);
PSRAMVector<ignitionBoxStatus> ignA_history_1(max_history);
auto &active_history = ignA_history_0;
auto &writable_history = ignA_history_1;
// Resources Initialization
static Devices dev;
// Task handle
static TaskHandle_t trigA_TaskHandle = NULL;
static TaskHandle_t trigB_TaskHandle = NULL;
// Data Queue for real time task to main loop communication
static QueueHandle_t rt_taskA_queue = xQueueCreate(max_queue, sizeof(ignitionBoxStatus));
static QueueHandle_t rt_taskB_queue = xQueueCreate(max_queue, sizeof(ignitionBoxStatus));
static rtTaskParams taskA_params{
.rt_running = true,
.dev = &dev,
.rt_handle_ptr = &trigA_TaskHandle,
.rt_queue = rt_taskA_queue,
.rt_int = rtTaskInterrupts{
.isr_ptr = trig_isr,
.trig_pin_12p = TRIG_PIN_A12P,
.trig_pin_12n = TRIG_PIN_A12N,
.trig_pin_34p = TRIG_PIN_A34P,
.trig_pin_34n = TRIG_PIN_A34N,
.spark_pin_12 = SPARK_PIN_A12,
.spark_pin_34 = SPARK_PIN_A34},
.rt_resets = rtTaskResets{.rst_io_12p = RST_EXT_A12P, .rst_io_12n = RST_EXT_A12N, .rst_io_34p = RST_EXT_A34P, .rst_io_34n = RST_EXT_A34N}};
LOG_INFO("Task Variables OK");
#ifdef CH_B_ENABLE
QueueHandle_t rt_taskB_queue = xQueueCreate(max_queue, sizeof(ignitionBoxStatus));
rtTaskParams taskB_params{
.rt_running = true,
.dev = &dev,
.rt_handle_ptr = &trigB_TaskHandle,
.rt_queue = rt_taskB_queue,
.rt_int = rtTaskInterrupts{
.isr_ptr = trig_isr,
.trig_pin_12p = TRIG_PIN_B12P,
.trig_pin_12n = TRIG_PIN_B12N,
.trig_pin_34p = TRIG_PIN_B34P,
.trig_pin_34n = TRIG_PIN_B34N,
.spark_pin_12 = SPARK_PIN_B12,
.spark_pin_34 = SPARK_PIN_B34},
.rt_resets = rtTaskResets{.rst_io_12p = RST_EXT_B12P, .rst_io_12n = RST_EXT_B12N, .rst_io_34p = RST_EXT_B34P, .rst_io_34n = RST_EXT_B34N}};
#endif
// Spi ok flags
//////// INIT SPI INTERFACES ////////
bool spiA_ok = true;
bool spiB_ok = true;
// Init 2 SPI interfaces
//////// INIT SPI INTERFACES ////////
LOG_DEBUG("Init SPI Interfaces");
SPIClass SPI_A(FSPI);
spiA_ok = SPI_A.begin(SPI_A_SCK, SPI_A_MISO, SPI_A_MOSI);
SPI_A.setDataMode(SPI_MODE1); // ADS1256 requires SPI mode 1
#ifndef TEST
LOG_DEBUG("Init SPI A ok");
Serial.readStringUntil('\n');
dev->m_spi_a.reset(&SPI_A);
dev->m_adc_a = std::make_unique<ADS1256>(ADC_A_DRDY, ADS1256::PIN_UNUSED, ADS1256::PIN_UNUSED, ADC_A_CS, 2.5, &SPI_A);
dev->m_adc_a->InitializeADC();
dev->m_adc_a->setPGA(PGA_1);
dev->m_adc_a->setDRATE(DRATE_7500SPS);
LOG_DEBUG("Init ADC A ok");
Serial.readStringUntil('\n');
delay(250);
#ifdef CH_B_ENABLE
SPIClass SPI_B(HSPI);
spiB_ok = SPI_B.begin(SPI_B_SCK, SPI_B_MISO, SPI_B_MOSI);
SPI_B.setDataMode(SPI_MODE1); // ADS1256 requires SPI mode 1
LOG_DEBUG("Init SPI B ok");
Serial.readStringUntil('\n');
dev->m_spi_b.reset(&SPI_B);
dev->m_adc_b = std::make_unique<ADS1256>(ADC_B_DRDY, ADS1256::PIN_UNUSED, ADS1256::PIN_UNUSED, ADC_B_CS, 2.5, &SPI_B);
dev->m_adc_b->InitializeADC();
dev->m_adc_b->setPGA(PGA_1);
dev->m_adc_b->setDRATE(DRATE_7500SPS);
LOG_DEBUG("Init ADC B ok");
Serial.readStringUntil('\n');
#endif
if (!spiA_ok || !spiB_ok)
{
LOG_ERROR("Unable to Initialize SPI Busses");
@@ -122,133 +131,158 @@ void loop()
vTaskDelay(pdMS_TO_TICKS(5000));
esp_restart();
}
LOG_INFO("Init SPI OK");
// Init ADC_A
dev.adc_a = new ADS1256(ADC_A_DRDY, ADS1256::PIN_UNUSED, ADC_A_SYNC, ADC_A_CS, 2.5, &SPI_A);
dev.adc_a->InitializeADC();
dev.adc_a->setPGA(PGA_1);
dev.adc_a->setDRATE(DRATE_7500SPS);
LOG_DEBUG("Init SPI OK");
Serial.readStringUntil('\n');
#ifndef TEST
// Init ADC_B
dev.adc_a = new ADS1256(ADC_B_DRDY, ADC_B_RST, ADC_B_SYNC, ADC_B_CS, 2.5, &SPI_B);
dev.adc_a->InitializeADC();
dev.adc_a->setPGA(PGA_1);
dev.adc_a->setDRATE(DRATE_1000SPS);
#endif
//////// INIT I2C INTERFACES ////////
// LOG_DEBUG("Init I2C Interfaces");
// bool i2c_ok = true;
// i2c_ok = Wire.begin(SDA, SCL, 100000);
// if (!i2c_ok)
// {
// LOG_ERROR("Unable to Initialize I2C Bus");
// LOG_ERROR("5 seconds to restart...");
// vTaskDelay(pdMS_TO_TICKS(5000));
// esp_restart();
// }
// LOG_DEBUG("Init I2c ok");
// Serial.readStringUntil('\n');
LOG_INFO("Init ADC OK");
// Init IO Expanders
// dev->m_ext_io = std::make_unique<ExternalIO>(Wire, dev->m_i2c_mutex, EXPANDER_ALL_INTERRUPT);
//////// INIT REALTIME TASKS PARAMETERS ////////
const rtIgnitionTask::rtTaskParams taskA_params{
.rt_running = true,
.name = "rtIgnTask_A",
.rt_stack_size = RT_TASK_STACK,
.rt_priority = RT_TASK_PRIORITY,
.rt_int = rtIgnitionTask::rtTaskInterruptParams{
.isr_ptr = &trig_isr_A,
.trig_pin_12p = TRIG_PIN_A12P,
.trig_pin_12n = TRIG_PIN_A12N,
.trig_pin_34p = TRIG_PIN_A34P,
.trig_pin_34n = TRIG_PIN_A34N,
.spark_pin_12 = SPARK_PIN_A12,
.spark_pin_34 = SPARK_PIN_A34},
.rt_io = rtIgnitionTask::rtTaskIOParams{
.pot_cs_12 = POT_CS_A12,
.pot_cs_34 = POT_CS_A34,
.ss_force = SS_FORCE_A,
.ss_inhibit_12 = SS_INIBHIT_A12,
.ss_inhibit_34 = SS_INHIBIT_A34,
.sh_disch_12 = SH_DISCH_A12,
.sh_disch_34 = SH_DISCH_A34,
.sh_arm_12 = SH_ARM_A12,
.sh_arm_34 = SH_ARM_A34,
.relay_in_12 = RELAY_IN_A12,
.relay_in_34 = RELAY_OUT_A12,
.relay_out_12 = RELAY_IN_A34,
.relay_out_34 = RELAY_OUT_A34,
},
.rt_queue = nullptr,
.dev = dev};
const rtIgnitionTask::rtTaskParams taskB_params{
.rt_running = true,
.name = "rtIgnTask_B",
.rt_stack_size = RT_TASK_STACK,
.rt_priority = RT_TASK_PRIORITY,
.rt_int = rtIgnitionTask::rtTaskInterruptParams{
.isr_ptr = &trig_isr_B,
.trig_pin_12p = TRIG_PIN_B12P,
.trig_pin_12n = TRIG_PIN_B12N,
.trig_pin_34p = TRIG_PIN_B34P,
.trig_pin_34n = TRIG_PIN_B34N,
.spark_pin_12 = SPARK_PIN_B12,
.spark_pin_34 = SPARK_PIN_B34},
.rt_io = rtIgnitionTask::rtTaskIOParams{
.pot_cs_12 = POT_CS_B12,
.pot_cs_34 = POT_CS_B34,
.ss_force = SS_FORCE_B,
.ss_inhibit_12 = SS_INIBHIT_B12,
.ss_inhibit_34 = SS_INHIBIT_B34,
.sh_disch_12 = SH_DISCH_B12,
.sh_disch_34 = SH_DISCH_B34,
.sh_arm_12 = SH_ARM_B12,
.sh_arm_34 = SH_ARM_B34,
.relay_in_12 = RELAY_IN_B12,
.relay_in_34 = RELAY_OUT_B12,
.relay_out_12 = RELAY_IN_B34,
.relay_out_34 = RELAY_OUT_B34,
},
.rt_queue = nullptr,
.dev = dev};
//////// SPAWN REALTIME TASKS ////////
auto task_A = rtIgnitionTask(taskA_params, PSRAM_MAX, QUEUE_MAX, CORE_0, fs_mutex);
delay(50);
Serial.readStringUntil('\n');
auto task_B = rtIgnitionTask(taskB_params, PSRAM_MAX, QUEUE_MAX, CORE_1, fs_mutex);
Serial.readStringUntil('\n');
// Ignition A on Core 0
auto ignA_task_success = pdPASS;
ignA_task_success = xTaskCreatePinnedToCore(
rtIgnitionTask,
"rtIgnitionTask_boxA",
RT_TASK_STACK,
(void *)&taskA_params,
RT_TASK_PRIORITY,
&trigA_TaskHandle,
CORE_0);
// Ignition B on Core 1
auto ignB_task_success = pdPASS;
#ifdef CH_B_ENABLE
ignB_task_success = xTaskCreatePinnedToCore(
rtIgnitionTask,
"rtIgnitionTask_boxB",
RT_TASK_STACK,
(void *)&taskB_params,
RT_TASK_PRIORITY, // priorità leggermente più alta
&trigB_TaskHandle,
CORE_1);
#endif
if ((ignA_task_success && ignB_task_success) != pdPASS)
auto ignA_task_success = task_A.getStatus() == rtIgnitionTask::OK ? pdPASS : pdFAIL;
auto ignB_task_success = task_B.getStatus() == rtIgnitionTask::OK ? pdPASS : pdFAIL;
if (ignA_task_success != pdPASS || ignB_task_success != pdPASS)
{
LOG_ERROR("Una ble to initialize ISR task");
LOG_ERROR("Unable to initialize ISR task");
LOG_ERROR("5 seconds to restart...");
vTaskDelay(pdMS_TO_TICKS(5000));
esp_restart();
}
LOG_INFO("Real Time Tasks A & B initialized");
////////////////////// MAIN LOOP //////////////////////
clearScreen();
setCursor(0, 0);
uint32_t counter = 0;
ignitionBoxStatus ignA;
int64_t last = esp_timer_get_time();
uint32_t missed_firings12 = 0;
uint32_t missed_firings34 = 0;
while (running)
const bool tasK_A_rt = task_A.start();
delay(50);
const bool task_B_rt = task_B.start();
if (tasK_A_rt != true || task_B_rt != true)
{
if (counter == active_history.size())
{
counter = 0;
std::swap(active_history, writable_history); // switch active and writable buffers
if (SAVE_HISTORY_TO_SPIFFS)
xTaskCreate(
saveHistoryTask,
"saveHistoryTask",
RT_TASK_STACK / 2,
&writable_history,
RT_TASK_PRIORITY + 1, // higher priority to ensure it runs asap after buffer switch
NULL);
}
if (xQueueReceive(rt_taskA_queue, &ignA, pdMS_TO_TICKS(1000)) == pdTRUE)
{
if (ignA.coils12.spark_status == sparkStatus::SPARK_POS_FAIL || ignA.coils12.spark_status == sparkStatus::SPARK_NEG_FAIL)
missed_firings12++;
if (ignA.coils34.spark_status == sparkStatus::SPARK_POS_FAIL || ignA.coils34.spark_status == sparkStatus::SPARK_NEG_FAIL)
missed_firings34++;
clearScreen();
setCursor(0, 0);
printField("++ Timestamp", (uint32_t)ignA.timestamp);
Serial.println("========== Coils 12 =============");
printField("Events", ignA.coils12.n_events);
printField("Missed Firing", missed_firings12);
printField("Spark Dly", (uint32_t)ignA.coils12.spark_delay);
printField("Spark Sts", sparkStatusNames.at(ignA.coils12.spark_status));
printField("Peak P_IN", ignA.coils12.peak_p_in);
printField("Peak N_IN", ignA.coils12.peak_n_in);
printField("Peak P_OUT", ignA.coils12.peak_p_out);
printField("Peak N_OUT", ignA.coils12.peak_n_out);
printField("Soft Start ", softStartStatusNames.at(ignA.coils12.sstart_status));
Serial.println("========== Coils 34 =============");
printField("Events", ignA.coils34.n_events);
printField("Missed Firing", missed_firings34);
printField("Spark Dly", (uint32_t)ignA.coils34.spark_delay);
printField("Spark Sts", sparkStatusNames.at(ignA.coils34.spark_status));
printField("Peak P_IN", ignA.coils34.peak_p_in);
printField("Peak N_IN", ignA.coils34.peak_n_in);
printField("Peak P_OUT", ignA.coils34.peak_p_out);
printField("Peak N_OUT", ignA.coils34.peak_n_out);
printField("Soft Start ", softStartStatusNames.at(ignA.coils34.sstart_status));
Serial.println("========== END =============");
Serial.println();
printField("Engine RPM", ignA.eng_rpm);
printField("ADC Read Time", ignA.adc_read_time);
printField("Queue Errors", ignA.n_queue_errors);
active_history[counter++ % active_history.size()] = ignA;
}
else
{
Serial.println("Waiting for data... ");
delay(500);
}
led.setStatus(RGBled::LedStatus::ERROR);
LOG_ERROR("Unable to start realtime tasks");
}
else
{
LOG_DEBUG("Real Time Tasks A & B initialized");
led.setStatus(RGBled::LedStatus::OK);
}
if (trigA_TaskHandle)
vTaskDelete(trigA_TaskHandle);
if (trigB_TaskHandle)
vTaskDelete(trigB_TaskHandle);
////////////////////// MAIN LOOP //////////////////////
}
//////// SPAWN WEBSERVER and WEBSOCKET ////////
AstroWebServer webPage(80, LittleFS);
ArduinoJson::JsonDocument json_data;
bool data_a, data_b;
task_A.onMessage([&webPage, &json_data, &data_a](ignitionBoxStatusFiltered sts)
{
json_data["box_a"] = sts.toJson();
data_a = true; });
task_B.onMessage([&webPage, &json_data, &data_b](ignitionBoxStatusFiltered sts)
{
json_data["box_b"] = sts.toJson();
data_b = true; });
// task_A.enableSave(true, "ignitionA_test.csv");
// task_B.enableSave(true, "ignitionB_test.csv");
uint32_t monitor_loop = millis();
uint32_t data_loop = monitor_loop;
//////////////// INNER LOOP /////////////////////
while (running)
{
uint32_t this_loop = millis();
if (this_loop - monitor_loop > 2000)
{
clearScreen();
printRunningTasksMod(Serial);
monitor_loop = millis();
}
if ((data_a && data_b) || (this_loop - data_loop > 500))
{
webPage.sendWsData(json_data.as<String>());
json_data.clear();
data_a = data_b = false;
data_loop = millis();
}
} //////////////// INNER LOOP /////////////////////
} ////////////////////// MAIN LOOP //////////////////////

View File

@@ -4,19 +4,19 @@
// =====================
// USB (RISERVATA)
// =====================
#define USB_DM 19
#define USB_DP 20
#define USB_DM 19
#define USB_DP 20
// =====================
// UART DEBUG (RISERVATA)
// =====================
#define UART_TX 43
#define UART_RX 44
#define UART_TX 43
#define UART_RX 44
// =====================
// RGB Led
// =====================
#define LED 48
#define LED 48
// =====================
// STRAPPING CRITICI (NON USARE)
@@ -26,85 +26,134 @@
// =====================
// SPI BUS ADC1 (VSPI)
// =====================
#define SPI_A_MOSI 11
#define SPI_A_MISO 13
#define SPI_A_SCK 12
#define SPI_A_MOSI 10
#define SPI_A_SCK 11
#define SPI_A_MISO 12
// =====================
// SPI BUS ADC2 (HSPI)
// =====================
#define SPI_B_MOSI 35
#define SPI_B_MISO 37
#define SPI_B_SCK 36
#define SPI_B_MOSI 36
#define SPI_B_SCK 37
#define SPI_B_MISO 38
// =====================
// I2C BUS (PCA9555)
// =====================
#define SDA 8
#define SCL 9
#define SDA 8
#define SCL 9
#define I2C_INT 17
// =====================
// ADC CONTROL
// =====================
#define ADC_A_CS 4
#define ADC_A_DRDY 5
#define ADC_A_SYNC 6
#define ADC_A_CS 14
#define ADC_A_DRDY 13
#define ADC_B_CS 14
#define ADC_B_DRDY 15
#define ADC_B_SYNC 16
// =====================
// DIGITAL POT
// =====================
#define POT_A_CS 7
#define POT_B_CS 17
#define ADC_B_CS 21
#define ADC_B_DRDY 47
// =====================
// TRIGGER INPUT INTERRUPTS
// =====================
#define TRIG_PIN_A12P 18
#define TRIG_PIN_A12N 21
#define TRIG_PIN_A34P 1
#define TRIG_PIN_A34N 2
#define TRIG_PIN_B12P 38
#define TRIG_PIN_B12N 39
#define TRIG_PIN_B34P 40
#define TRIG_PIN_B34N 41
#define TRIG_PIN_A12P 6
#define TRIG_PIN_A12N 7
#define TRIG_PIN_A34P 15
#define TRIG_PIN_A34N 16
#define TRIG_PIN_B12P 42
#define TRIG_PIN_B12N 41
#define TRIG_PIN_B34P 40
#define TRIG_PIN_B34N 39
// =====================
// SPARK DETECT INPUTS
// =====================
#define SPARK_PIN_A12 42
#define SPARK_PIN_A34 45 // OK (strapping ma consentito) 45
#define SPARK_PIN_B12 46 // OK (strapping ma consentito) 46
#define SPARK_PIN_B34 47
#define SPARK_PIN_A12 4
#define SPARK_PIN_A34 5
#define SPARK_PIN_B12 1
#define SPARK_PIN_B34 2
// +++++++++++++++++++++
// MACRO TO COMBINE PIN NUMBER AND ADDRESS
#define PIN2ADDR(p, a) ((1UL << p) | ((uint32_t)(a) << 16))
// +++++++++++++++++++++
// =====================
// PCA9555 (I2C EXPANDER)
// PCA9555 I/O EXPANDER INTERRUPT (Common)
// =====================
#define EXPANDER_ALL_INTERRUPT 17
// --- RESET LINES ---
#define RST_EXT_A12P 0
#define RST_EXT_A12N 1
#define RST_EXT_A34P 2
#define RST_EXT_A34N 3
#define RST_EXT_B12P 4
#define RST_EXT_B12N 5
#define RST_EXT_B34P 6
#define RST_EXT_B34N 7
// =====================
// PCA9555 I/O EXPANDER BOX_A (OUT)
// =====================
#define EXPANDER_A_OUT_ADDR 0xFF
// --- DIGITAL POT CHIP SELECT LINES ---
#define POT_CS_A12 PIN2ADDR(0, EXPANDER_A_OUT_ADDR)
#define POT_CS_A34 PIN2ADDR(1, EXPANDER_A_OUT_ADDR)
// --- SOFT START FORCE LINES ---
#define SS_FORCE_A PIN2ADDR(2, EXPANDER_A_OUT_ADDR)
#define SS_INIBHIT_A12 PIN2ADDR(3, EXPANDER_A_OUT_ADDR)
#define SS_INHIBIT_A34 PIN2ADDR(4, EXPANDER_A_OUT_ADDR)
// --- SAMPLE AND HOLD ARM AND DISCHARGE ---
#define SH_DISCH_A12 PIN2ADDR(5, EXPANDER_A_OUT_ADDR)
#define SH_DISCH_A34 PIN2ADDR(6, EXPANDER_A_OUT_ADDR)
#define SH_ARM_A12 PIN2ADDR(7, EXPANDER_A_OUT_ADDR)
#define SH_ARM_A34 PIN2ADDR(8, EXPANDER_A_OUT_ADDR)
// --- RELAY ---
#define A_EXT_RELAY 8
#define B_EXT_RELAY 9
#define RELAY_IN_A12 PIN2ADDR(9, EXPANDER_A_OUT_ADDR)
#define RELAY_OUT_A12 PIN2ADDR(10, EXPANDER_A_OUT_ADDR)
#define RELAY_IN_A34 PIN2ADDR(11, EXPANDER_A_OUT_ADDR)
#define RELAY_OUT_A34 PIN2ADDR(12, EXPANDER_A_OUT_ADDR)
// --- STATUS / BUTTON ---
#define BTN_3 10
#define BTN_4 11
#define STA_1 12
#define STA_2 13
#define STA_3 14
#define STA_4 15
// =====================
// PCA9555 I/O EXPANDER BOX_A (IN)
// =====================
#define EXPANDER_A_IN_ADDR 0xFF
#define SS_A12_ON PIN2ADDR(0, EXPANDER_A_IN_ADDR)
#define SS_A12_OFF PIN2ADDR(1, EXPANDER_A_IN_ADDR)
#define SS_A34_ON PIN2ADDR(2, EXPANDER_A_IN_ADDR)
#define SS_A34_OFF PIN2ADDR(3, EXPANDER_A_IN_ADDR)
// =====================
// PCA9555 I/O EXPANDER BOX_B (OUT)
// =====================
#define EXPANDER_B_OUT_ADDR 0xFF
// --- DIGITAL POT CHIP SELECT LINES ---
#define POT_CS_B12 PIN2ADDR(0, EXPANDER_B_OUT_ADDR)
#define POT_CS_B34 PIN2ADDR(1, EXPANDER_B_OUT_ADDR)
// --- SOFT START FORCE LINES ---
#define SS_FORCE_B PIN2ADDR(2, EXPANDER_B_OUT_ADDR)
#define SS_INIBHIT_B12 PIN2ADDR(3, EXPANDER_B_OUT_ADDR)
#define SS_INHIBIT_B34 PIN2ADDR(4, EXPANDER_B_OUT_ADDR)
// --- SAMPLE AND HOLD ARM AND DISCHARGE ---
#define SH_DISCH_B12 PIN2ADDR(5, EXPANDER_B_OUT_ADDR)
#define SH_DISCH_B34 PIN2ADDR(6, EXPANDER_B_OUT_ADDR)
#define SH_ARM_B12 PIN2ADDR(7, EXPANDER_B_OUT_ADDR)
#define SH_ARM_B34 PIN2ADDR(8, EXPANDER_B_OUT_ADDR)
// --- RELAY ---
#define RELAY_IN_B12 PIN2ADDR(9, EXPANDER_B_OUT_ADDR)
#define RELAY_OUT_B12 PIN2ADDR(10, EXPANDER_B_OUT_ADDR)
#define RELAY_IN_B34 PIN2ADDR(11, EXPANDER_B_OUT_ADDR)
#define RELAY_OUT_B34 PIN2ADDR(12, EXPANDER_B_OUT_ADDR)
// =====================
// PCA9555 I/O EXPANDER BOX_B (IN)
// =====================
#define EXPANDER_B_IN_ADDR 0xFF
#define SS_B12_ON PIN2ADDR(0, EXPANDER_B_IN_ADDR)
#define SS_B12_OFF PIN2ADDR(1, EXPANDER_B_IN_ADDR)
#define SS_B34_ON PIN2ADDR(2, EXPANDER_B_IN_ADDR)
#define SS_B34_OFF PIN2ADDR(3, EXPANDER_B_IN_ADDR)
// Init Pin Functions
inline void initTriggerPinsInputs()

View File

@@ -65,7 +65,7 @@
#define RST_EXT_A34N 3
// --- RELAY ---
#define A_EXT_RELAY 8
#define SH_ARM_A34 8
// Init Pin Functions

View File

@@ -25,6 +25,3 @@ struct PSRAMAllocator {
heap_caps_free(p);
}
};
template <typename T>
using PSRAMVector = std::vector<T, PSRAMAllocator<T>>;

View File

@@ -1,5 +1,9 @@
#include "tasks.h"
#include <esp_timer.h>
#include <datasave.h>
#include <mutex>
//// GLOBAL STATIC FUNCTIONS
// Timeout callback for microsecond precision
void spark_timeout_callback(void *arg)
@@ -8,7 +12,18 @@ void spark_timeout_callback(void *arg)
xTaskNotify(handle, SPARK_FLAG_TIMEOUT, eSetValueWithOverwrite);
}
void rtIgnitionTask(void *pvParameters)
// Manages queue receive, save data and callback to external tasks for communication
void rtIgnitionTask::rtIgnitionTask_manager(void *pvParameters)
{
rtIgnitionTask *cls = (rtIgnitionTask *)pvParameters;
while (cls->m_running)
{
cls->run();
}
}
// Static task function
void rtIgnitionTask::rtIgnitionTask_realtime(void *pvParameters)
{
// Invalid real time rt_task_ptr parameters, exit immediate
@@ -17,53 +32,59 @@ void rtIgnitionTask(void *pvParameters)
LOG_ERROR("Null rt_task_ptr parameters");
vTaskDelete(NULL);
}
LOG_INFO("rtTask Params OK");
// Task Parameters and Devices
rtTaskParams *params = (rtTaskParams *)pvParameters;
const rtTaskInterrupts rt_int = params->rt_int; // copy to avoid external override
const rtTaskResets rt_rst = params->rt_resets; // copy to avoid external override
const rtTaskInterruptParams rt_int = params->rt_int; // copy to avoid external override
const rtTaskIOParams rt_rst = params->rt_io; // copy to avoid external override
QueueHandle_t rt_queue = params->rt_queue;
TaskHandle_t rt_handle_ptr = *params->rt_handle_ptr;
Devices *dev = params->dev;
ADS1256 *adc = dev->adc_a;
PCA9555 *io = dev->io;
Devices *dev = params->dev.get();
ADS1256 *adc = params->name == "rtIgnTask_A" ? dev->m_adc_a.get() : dev->m_adc_b.get();
std::mutex &spi_mutex = params->name == "rtIgnTask_A" ? dev->m_spi_a_mutex : dev->m_spi_b_mutex;
ExternalIO *io = dev->m_ext_io.get();
TaskStatus_t rt_task_info;
vTaskGetInfo(NULL, &rt_task_info, pdFALSE, eInvalid);
LOG_INFO("rtTask Params OK [", params->name.c_str(), "]");
ignitionBoxStatus ign_box_sts;
// Variables for ISR, static to be fixed in memory locations
static isrParams isr_params_t12p{
isrParams isr_params_t12p{
.flag = TRIG_FLAG_12P,
.ign_stat = &ign_box_sts,
.rt_handle_ptr = rt_handle_ptr};
static isrParams isr_params_t12n{
.rt_handle_ptr = rt_task_info.xHandle};
isrParams isr_params_t12n{
.flag = TRIG_FLAG_12N,
.ign_stat = &ign_box_sts,
.rt_handle_ptr = rt_handle_ptr};
static isrParams isr_params_t34p{
.rt_handle_ptr = rt_task_info.xHandle};
isrParams isr_params_t34p{
.flag = TRIG_FLAG_34P,
.ign_stat = &ign_box_sts,
.rt_handle_ptr = rt_handle_ptr};
static isrParams isr_params_t34n{
.rt_handle_ptr = rt_task_info.xHandle};
isrParams isr_params_t34n{
.flag = TRIG_FLAG_34N,
.ign_stat = &ign_box_sts,
.rt_handle_ptr = rt_handle_ptr};
static isrParams isr_params_sp12{
.rt_handle_ptr = rt_task_info.xHandle};
isrParams isr_params_sp12{
.flag = SPARK_FLAG_12,
.ign_stat = &ign_box_sts,
.rt_handle_ptr = rt_handle_ptr};
static isrParams isr_params_sp34{
.rt_handle_ptr = rt_task_info.xHandle};
isrParams isr_params_sp34{
.flag = SPARK_FLAG_34,
.ign_stat = &ign_box_sts,
.rt_handle_ptr = rt_handle_ptr};
.rt_handle_ptr = rt_task_info.xHandle};
LOG_INFO("rtTask ISR Params OK");
LOG_DEBUG("rtTask HDL Params OK, HDL* [", (uint32_t)rt_task_info.xHandle, "]");
LOG_DEBUG("rtTask ISR Params OK, ISR* [", (uint32_t)rt_int.isr_ptr, "]");
LOG_DEBUG("rtTask QUE Params OK, QUE* [", (uint32_t)rt_queue, "]");
// Create esp_timer for microsecond precision timeout
esp_timer_handle_t timeout_timer;
esp_timer_create_args_t timer_args = {
.callback = spark_timeout_callback,
.arg = (void *)rt_handle_ptr,
.arg = (void *)rt_task_info.xHandle,
.dispatch_method = ESP_TIMER_TASK,
.name = "spark_timeout"};
esp_timer_create(&timer_args, &timeout_timer);
@@ -76,15 +97,8 @@ void rtIgnitionTask(void *pvParameters)
attachInterruptArg(digitalPinToInterrupt(rt_int.spark_pin_12), rt_int.isr_ptr, (void *)&isr_params_sp12, RISING);
attachInterruptArg(digitalPinToInterrupt(rt_int.spark_pin_34), rt_int.isr_ptr, (void *)&isr_params_sp34, RISING);
LOG_INFO("rtTask ISR Attach OK");
LOG_INFO("rtTask ISR Attach OK [", params->name.c_str(), "]");
// Compute Reset Pin Bitmask
const uint16_t rst_bitmask = (1 << rt_rst.rst_io_12p) |
(1 << rt_rst.rst_io_12n) |
(1 << rt_rst.rst_io_34p) |
(1 << rt_rst.rst_io_34n);
LOG_WARN("rtTask Init Correct");
// Global rt_task_ptr variables
bool first_cycle = true;
bool cycle12 = false;
@@ -107,23 +121,6 @@ void rtIgnitionTask(void *pvParameters)
if (first_cycle && pickup_flag != TRIG_FLAG_12P) // skip first cycle because of possible initial noise on pickup signals at startu
continue;
#ifdef DEBUG
Serial.print("\033[2J"); // clear screen
Serial.print("\033[H"); // cursor home
LOG_INFO("Iteration [", it++, "]");
if (!names.contains(pickup_flag))
{
LOG_ERROR("Wrong Pickup Flag");
LOG_ERROR("Pickup Flags: ", printBits(pickup_flag).c_str());
continue;
}
else
{
LOG_INFO("Pickup Trigger: ", names.at(pickup_flag));
}
#endif
// Start microsecond precision timeout timer
esp_timer_stop(timeout_timer); // stop timer in case it was running from previous cycle
esp_timer_start_once(timeout_timer, spark_timeout_max);
@@ -157,7 +154,7 @@ void rtIgnitionTask(void *pvParameters)
auto current_time = esp_timer_get_time();
auto cycle_time = current_time - last_cycle_time;
last_cycle_time = current_time;
ign_box_sts.eng_rpm = (uint32_t)(60.0f / (cycle_time / 1000000.0f));
ign_box_sts.eng_rpm = (int32_t)(60.0f / (cycle_time / 1000000.0f));
}
case TRIG_FLAG_12N:
coils = &ign_box_sts.coils12;
@@ -177,7 +174,7 @@ void rtIgnitionTask(void *pvParameters)
// Timeout not occourred, expected POSITIVE edge spark OCCOURRED
if (spark_flag != SPARK_FLAG_TIMEOUT)
{
coils->spark_delay = (uint32_t)(coils->spark_time - coils->trig_time);
coils->spark_delay = (int32_t)(coils->spark_time - coils->trig_time);
coils->sstart_status = softStartStatus::NORMAL; // because spark on positive edge
coils->spark_status = sparkStatus::SPARK_POS_OK; // do not wait for spark on negative edge
}
@@ -197,7 +194,7 @@ void rtIgnitionTask(void *pvParameters)
// Timeout not occourred, expected NEGATIVE edge spark OCCOURRED
if (spark_flag != SPARK_FLAG_TIMEOUT && expected_negative)
{
coils->spark_delay = (uint32_t)(coils->spark_time - coils->trig_time);
coils->spark_delay = (int32_t)(coils->spark_time - coils->trig_time);
coils->sstart_status = softStartStatus::SOFT_START;
coils->spark_status = sparkStatus::SPARK_NEG_OK;
}
@@ -230,46 +227,65 @@ void rtIgnitionTask(void *pvParameters)
cycle12 = false;
cycle34 = false;
if (ign_box_sts.coils12.spark_status == sparkStatus::SPARK_POS_FAIL || ign_box_sts.coils12.spark_status == sparkStatus::SPARK_NEG_FAIL)
ign_box_sts.coils12.n_missed_firing++;
if (ign_box_sts.coils34.spark_status == sparkStatus::SPARK_POS_FAIL || ign_box_sts.coils34.spark_status == sparkStatus::SPARK_NEG_FAIL)
ign_box_sts.coils34.n_missed_firing++;
// read adc channels: pickup12, out12 [ pos + neg ]
if (adc) // read only if adc initialized
{
std::lock_guard<std::mutex> lock(spi_mutex);
uint32_t start_adc_read = esp_timer_get_time();
// from peak detector circuits
ign_box_sts.coils12.peak_p_in = adcReadChannel(adc, ADC_CH_PEAK_12P_IN);
ign_box_sts.coils12.peak_n_in = adcReadChannel(adc, ADC_CH_PEAK_12N_IN);
ign_box_sts.coils34.peak_p_in = adcReadChannel(adc, ADC_CH_PEAK_34P_IN);
ign_box_sts.coils34.peak_n_in = adcReadChannel(adc, ADC_CH_PEAK_34N_IN);
ign_box_sts.coils12.peak_p_out = adcReadChannel(adc, ADC_CH_PEAK_12P_OUT);
ign_box_sts.coils12.peak_n_out = adcReadChannel(adc, ADC_CH_PEAK_12N_OUT);
ign_box_sts.coils34.peak_p_out = adcReadChannel(adc, ADC_CH_PEAK_34P_OUT);
ign_box_sts.coils34.peak_n_out = adcReadChannel(adc, ADC_CH_PEAK_34N_OUT);
ign_box_sts.adc_read_time = (uint32_t)(esp_timer_get_time() - start_adc_read);
ign_box_sts.coils12.peak_p_in = adc->convertToVoltage(adc->cycleSingle());
ign_box_sts.coils12.peak_n_in = adc->convertToVoltage(adc->cycleSingle());
ign_box_sts.coils34.peak_p_in = adc->convertToVoltage(adc->cycleSingle());
ign_box_sts.coils34.peak_n_in = adc->convertToVoltage(adc->cycleSingle());
ign_box_sts.coils12.peak_p_out =adc->convertToVoltage(adc->cycleSingle());
ign_box_sts.coils12.peak_n_out =adc->convertToVoltage(adc->cycleSingle());
ign_box_sts.coils34.peak_p_out =adc->convertToVoltage(adc->cycleSingle());
ign_box_sts.coils34.peak_n_out =adc->convertToVoltage(adc->cycleSingle());
ign_box_sts.adc_read_time = (int32_t)(esp_timer_get_time() - start_adc_read);
adc->stopConversion();
}
else // simulate adc read timig
vTaskDelay(pdMS_TO_TICKS(1));
vTaskDelay(pdMS_TO_TICKS(c_adc_time));
// reset peak detectors + sample and hold
// outputs on io expander
if (io)
{
const uint16_t iostat = io->read();
io->write(iostat | rst_bitmask);
vTaskDelay(pdMS_TO_TICKS(1));
io->write(iostat & ~rst_bitmask);
// Discharge Pulse
io->extDigitalWrite(rt_rst.sh_disch_12, true);
io->extDigitalWrite(rt_rst.sh_disch_34, true);
delayMicroseconds(250);
io->extDigitalWrite(rt_rst.sh_disch_12, false);
io->extDigitalWrite(rt_rst.sh_disch_34, false);
// Safety delay
delayMicroseconds(500);
// Re-Arm Pulse
io->extDigitalWrite(rt_rst.sh_arm_12, true);
io->extDigitalWrite(rt_rst.sh_arm_34, true);
delayMicroseconds(250);
io->extDigitalWrite(rt_rst.sh_arm_12, false);
io->extDigitalWrite(rt_rst.sh_arm_34, false);
}
else
vTaskDelay(pdMS_TO_TICKS(1));
vTaskDelay(pdMS_TO_TICKS(c_io_time));
// send essage to main loop with ignition info, by copy so local static variable is ok
if (rt_queue)
{
ign_box_sts.timestamp = esp_timer_get_time(); // update data timestamp
if (xQueueSendToBack(rt_queue, (void *)&ign_box_sts, 0) != pdPASS)
ign_box_sts.n_queue_errors = ++n_errors;
if (xQueueSendToBack(rt_queue, (void *)&ign_box_sts, 0) != pdPASS)
ign_box_sts.n_queue_errors = ++n_errors;
}
}
}
// Delete the timeout timer
esp_timer_delete(timeout_timer);
LOG_WARN("Ending realTime Task");
LOG_WARN("rtTask Ending [", params->name.c_str(), "]");
// Ignition A Interrupts DETACH
detachInterrupt(rt_int.trig_pin_12p);
detachInterrupt(rt_int.trig_pin_12n);
@@ -280,3 +296,253 @@ void rtIgnitionTask(void *pvParameters)
// delete present task
vTaskDelete(NULL);
}
///////////// CLASS MEMBER DEFINITIONS /////////////
rtIgnitionTask::rtIgnitionTask(const rtTaskParams params, const uint32_t history_size, const uint32_t queue_size, const uint8_t core, std::mutex &fs_mutex, fs::FS &filesystem) : m_params(params), m_filesystem(filesystem), m_fs_mutex(fs_mutex), m_core(core), m_max_history(history_size)
{
// create queue buffers
m_queue = xQueueCreate(queue_size, sizeof(ignitionBoxStatus));
if (!m_queue)
{
LOG_ERROR("Unable To Create Task [", params.name.c_str(), "] queues");
m_manager_status = rtTaskStatus::ERROR;
return;
}
else
m_params.rt_queue = m_queue;
// create PSram history vectors
m_history_0 = PSHistory(history_size);
m_history_1 = PSHistory(history_size);
// assing active and writable history
m_active_history = std::unique_ptr<PSHistory>(&m_history_0);
m_save_history = std::unique_ptr<PSHistory>(&m_history_1);
LOG_WARN("Starting Manager for [", m_params.name.c_str(), "]");
// auto task_success = pdPASS;
auto task_success = xTaskCreatePinnedToCore(
rtIgnitionTask_manager,
(std::string("man_") + m_params.name).c_str(),
8192,
(void *)this,
m_params.rt_priority >> 2,
&m_manager_handle,
m_core);
if (task_success != pdPASS)
{
LOG_ERROR("Unable To Create Manager for [", params.name.c_str(), "]");
m_manager_status = rtTaskStatus::ERROR;
return;
}
// average every 10 samples
m_info_filtered = ignitionBoxStatusFiltered(10);
m_last_data = millis();
m_manager_status = rtTaskStatus::OK;
}
rtIgnitionTask::~rtIgnitionTask()
{
if (m_rt_handle)
vTaskDelete(m_rt_handle);
if (m_manager_handle)
vTaskDelete(m_manager_handle);
if (m_queue)
vQueueDelete(m_queue);
}
void rtIgnitionTask::run()
{
// receive new data from the queue
auto new_data = xQueueReceive(m_queue, &m_last_status, 0); // non blocking receive
if (new_data == pdPASS)
{
m_last_data = millis();
m_manager_status = rtTaskStatus::RUNNING;
// if history buffer is full swap buffers and if enabled save history buffer
if (m_counter_status >= m_active_history->size())
{
LOG_DEBUG("Save for Buffer Full: ", m_counter_status);
m_counter_status = 0;
m_partial_save = false; // reset partial save flag on new data cycle
std::swap(m_active_history, m_save_history);
if (m_enable_save)
saveHistory(*m_save_history, m_history_path); // directly call the save task function to save without delay
}
// update filtered data
m_info_filtered.update(m_last_status);
(*m_active_history)[m_counter_status] = m_last_status;
if (m_on_message_cb && m_counter_status % 10 == 0)
{
m_on_message_cb(m_info_filtered);
}
// update data counter
m_counter_status++;
}
else
{
if (millis() - m_last_data > c_idle_time)
{
if (m_counter_status > 0 && !m_partial_save)
{
LOG_DEBUG("Save Partial: ", m_counter_status);
m_active_history->resize(m_counter_status);
saveHistory(*m_active_history, m_history_path);
m_active_history->resize(m_max_history);
m_counter_status = 0;
m_partial_save = true;
}
m_manager_status = rtTaskStatus::IDLE;
}
delay(5); // yeld to another task
}
}
const bool rtIgnitionTask::start()
{
LOG_WARN("Starting rtTask [", m_params.name.c_str(), "]");
auto task_success = xTaskCreatePinnedToCore(
rtIgnitionTask_realtime,
m_params.name.c_str(),
m_params.rt_stack_size,
(void *)&m_params,
m_params.rt_priority,
&m_rt_handle,
m_core);
const bool success = task_success == pdPASS && m_rt_handle != nullptr;
if (success)
m_manager_status = rtTaskStatus::IDLE;
return success;
}
const bool rtIgnitionTask::stop()
{
LOG_WARN("Ending Task [", m_params.name.c_str(), "]");
if (m_rt_handle)
{
m_params.rt_running = false;
m_rt_handle = nullptr;
m_manager_status = rtTaskStatus::STOPPED;
return true;
}
return false;
}
const ignitionBoxStatus rtIgnitionTask::getLast() const
{
return m_last_status;
}
const ignitionBoxStatusFiltered rtIgnitionTask::getFiltered() const
{
return m_info_filtered;
}
const rtIgnitionTask::rtTaskStatus rtIgnitionTask::getStatus() const
{
return m_manager_status;
}
void rtIgnitionTask::enableSave(const bool enable, const std::filesystem::path filename)
{
m_enable_save = enable;
if (enable && !filename.empty())
{
LOG_WARN("Save History Enabled Task [", m_params.name.c_str(), "]");
m_history_path = m_filesystem.mountpoint() / filename;
}
else
{
LOG_WARN("Save History Disabled Task [", m_params.name.c_str(), "]");
}
}
void rtIgnitionTask::onMessage(std::function<void(ignitionBoxStatusFiltered)> callaback)
{
m_on_message_cb = callaback;
}
void rtIgnitionTask::saveHistory(const rtIgnitionTask::PSHistory &history, const std::filesystem::path &file_name)
{
// Lock filesystem mutex to avoid concurrent access
std::lock_guard<std::mutex> fs_lock(m_fs_mutex);
// Check for free space
if (LittleFS.totalBytes() - LittleFS.usedBytes() < history.size() * sizeof(ignitionBoxStatus)) // check if at least 1MB is free for saving history
{
LOG_ERROR("Not enough space in SPIFFS to save history");
return;
}
// create complete file path
const std::filesystem::path mount_point = std::filesystem::path(m_filesystem.mountpoint());
std::filesystem::path file_path = file_name;
if (file_name.root_path() != mount_point)
file_path = mount_point / file_name;
// if firt save remove old file and create new
auto save_flags = std::ios::out;
if (m_first_save)
{
save_flags |= std::ios::trunc; // overwrite existing file
m_filesystem.remove(file_path.c_str()); // ensure file is removed before saving to avoid issues with appending to existing file in SPIFFS
LOG_INFO("Saving history to Flash, new file:", file_path.c_str());
}
else // else append to existing file
{
save_flags |= std::ios::app; // append to new file
LOG_INFO("Saving history to Flash, appending to existing file:", file_path.c_str());
}
std::ofstream ofs(file_path, save_flags);
if (ofs.fail())
{
LOG_ERROR("Failed to open file for writing");
return;
}
// write csv header
if (m_first_save)
{
ofs << "TS,EVENTS_12,DLY_12,STAT_12,V_12_1,V_12_2,V_12_3,V_12_4,IGNITION_MODE_12,"
<< "EVENTS_34,DLY_34,STAT_34,V_34_1,V_34_2,V_34_3,V_34_4,IGNITION_MODE_34,"
<< "ENGINE_RPM,ADC_READTIME,N_QUEUE_ERRORS"
<< std::endl;
ofs.flush();
m_first_save = false;
}
for (const auto &entry : history)
{
ofs << std::to_string(entry.timestamp) << ","
<< std::to_string(entry.coils12.n_events) << ","
<< std::to_string(entry.coils12.spark_delay) << ","
<< std::string(sparkStatusNames.at(entry.coils12.spark_status)) << ","
<< std::to_string(entry.coils12.peak_p_in) << ","
<< std::to_string(entry.coils12.peak_n_in) << ","
<< std::to_string(entry.coils12.peak_p_out) << ","
<< std::to_string(entry.coils12.peak_n_out) << ","
<< std::string(softStartStatusNames.at(entry.coils12.sstart_status)) << ","
<< std::to_string(entry.coils34.n_events) << ","
<< std::to_string(entry.coils34.spark_delay) << ","
<< std::string(sparkStatusNames.at(entry.coils34.spark_status)) << ","
<< std::to_string(entry.coils34.peak_p_in) << ","
<< std::to_string(entry.coils34.peak_n_in) << ","
<< std::to_string(entry.coils34.peak_p_out) << ","
<< std::to_string(entry.coils34.peak_n_out) << ","
<< std::string(softStartStatusNames.at(entry.coils34.sstart_status)) << ","
<< std::to_string(entry.eng_rpm) << ","
<< std::to_string(entry.adc_read_time) << ","
<< std::to_string(entry.n_queue_errors);
ofs << std::endl;
ofs.flush();
}
ofs.close();
LOG_INFO("Ignition Box history saved to Flash, records written: ", history.size());
}

View File

@@ -2,12 +2,19 @@
#define DEBUGLOG_DEFAULT_LOG_LEVEL_DEBUG
// Serial debug flag
//#define DEBUG
// #define DEBUG
// Arduino Libraries
#include <Arduino.h>
#include <DebugLog.h>
#include "utils.h"
#include <memory>
#include <mutex>
#include <filesystem>
#include <FS.h>
#include <LittleFS.h>
#include <datasave.h>
#include <functional>
// ISR
#include "isr.h"
@@ -31,36 +38,122 @@ static const std::map<const uint32_t, const char *> names = {
};
#endif
// RT task Interrupt parameters
struct rtTaskInterrupts
class rtIgnitionTask
{
void (*isr_ptr)(void *);
const uint8_t trig_pin_12p;
const uint8_t trig_pin_12n;
const uint8_t trig_pin_34p;
const uint8_t trig_pin_34n;
const uint8_t spark_pin_12;
const uint8_t spark_pin_34;
};
using PSHistory = PSRAMVector<ignitionBoxStatus>;
// RT Task Peak Detector Reset pins
struct rtTaskResets
{
const uint8_t rst_io_12p;
const uint8_t rst_io_12n;
const uint8_t rst_io_34p;
const uint8_t rst_io_34n;
};
public:
// RT task Interrupt parameters
struct rtTaskInterruptParams
{
void (*isr_ptr)(void *);
const uint8_t trig_pin_12p;
const uint8_t trig_pin_12n;
const uint8_t trig_pin_34p;
const uint8_t trig_pin_34n;
const uint8_t spark_pin_12;
const uint8_t spark_pin_34;
};
// RT task parameters
struct rtTaskParams
{
bool rt_running; // run flag, false to terminate
Devices *dev;
TaskHandle_t* rt_handle_ptr;
const QueueHandle_t rt_queue;
const rtTaskInterrupts rt_int; // interrupt pins to attach
const rtTaskResets rt_resets; // reset ping for peak detectors
};
// RT Task Peak Detector Reset pins
struct rtTaskIOParams
{
const uint32_t expander_addr;
const uint32_t pot_cs_12;
const uint32_t pot_cs_34;
const uint32_t ss_force;
const uint32_t ss_inhibit_12;
const uint32_t ss_inhibit_34;
const uint32_t sh_disch_12;
const uint32_t sh_disch_34;
const uint32_t sh_arm_12;
const uint32_t sh_arm_34;
const uint32_t relay_in_12;
const uint32_t relay_in_34;
const uint32_t relay_out_12;
const uint32_t relay_out_34;
};
void rtIgnitionTask(void *pvParameters);
// RT task parameters
struct rtTaskParams
{
bool rt_running; // run flag, false to terminate
const std::string name;
const uint32_t rt_stack_size;
const uint32_t rt_priority;
const rtTaskInterruptParams rt_int; // interrupt pins to attach
const rtTaskIOParams rt_io; // reset ping for peak detectors
QueueHandle_t rt_queue; // queue for task io
const std::shared_ptr<Devices> dev;
};
enum rtTaskStatus
{
INIT,
OK,
ERROR,
RUNNING,
IDLE,
STOPPED
};
public:
rtIgnitionTask(const rtTaskParams params, const uint32_t history_size, const uint32_t queue_size, const uint8_t core, std::mutex &fs_mutex, fs::FS &filesystem = LittleFS);
~rtIgnitionTask();
void run();
const bool start();
const bool stop();
const ignitionBoxStatus getLast() const;
const ignitionBoxStatusFiltered getFiltered() const;
const rtTaskStatus getStatus() const;
void enableSave(const bool enable, const std::filesystem::path filename);
void onMessage(std::function<void(ignitionBoxStatusFiltered)> callaback);
private:
void saveHistory(const rtIgnitionTask::PSHistory &history, const std::filesystem::path &file_name);
private: // static functions for FreeRTOS
static void rtIgnitionTask_manager(void *pvParameters);
static void rtIgnitionTask_realtime(void *pvParameters);
private:
bool m_running = true;
rtTaskStatus m_manager_status = INIT;
rtTaskParams m_params;
const uint8_t m_core;
TaskHandle_t m_rt_handle = nullptr;
TaskHandle_t m_manager_handle = nullptr;
QueueHandle_t m_queue = nullptr;
bool m_enable_save = false;
std::filesystem::path m_history_path;
const uint32_t m_max_history;
PSHistory m_history_0;
PSHistory m_history_1;
std::unique_ptr<PSHistory> m_active_history;
std::unique_ptr<PSHistory> m_save_history;
fs::FS &m_filesystem;
std::mutex &m_fs_mutex;
bool m_partial_save = false;
bool m_first_save = true;
uint32_t m_counter_status = 0;
uint32_t m_last_data = 0;
ignitionBoxStatus m_last_status;
ignitionBoxStatusFiltered m_info_filtered;
std::function<void(ignitionBoxStatusFiltered)> m_on_message_cb = nullptr;
static const uint32_t c_idle_time = 10000; // in mS
static const uint32_t c_spark_timeout_max = 500; // uS
static const uint8_t c_adc_time = 4; // in mS
static const uint8_t c_io_time = 2; // in mS
};

73
RotaxMonitor/src/ui.cpp Normal file
View File

@@ -0,0 +1,73 @@
#include <ui.h>
void clearScreen()
{
Serial.print("\033[2J"); // clear screen
Serial.print("\033[H"); // cursor home
Serial.flush();
}
void setCursor(const uint8_t x, const uint8_t y)
{
Serial.printf("\033[%d;%d", y, x + 1);
Serial.flush();
}
void printField(const char name[], const uint32_t val)
{
Serial.printf("%15s: %06u\n", name, val);
}
void printField(const char name[], const int32_t val)
{
Serial.printf("%15s: %06d\n", name, val);
}
void printField(const char name[], const int64_t val)
{
Serial.printf("%15s: %06u\n", name, (uint64_t)val);
}
void printField(const char name[], const float val)
{
Serial.printf("%15s: %4.2f\n", name, val);
}
void printField(const char name[], const char *val)
{
Serial.printf("%15s: %s\n", name, val);
}
void printInfo(const ignitionBoxStatus &info)
{
clearScreen();
setCursor(0, 0);
printField("++ Timestamp ++", (uint32_t)info.timestamp);
Serial.println("========== Coils 12 =============");
printField("Events", info.coils12.n_events);
printField("Events Missed", info.coils12.n_missed_firing);
printField("Spark Dly", (uint32_t)info.coils12.spark_delay);
printField("Spark Sts", sparkStatusNames.at(info.coils12.spark_status));
printField("Peak P_IN", info.coils12.peak_p_in);
printField("Peak N_IN", info.coils12.peak_n_in);
printField("Peak P_OUT", info.coils12.peak_p_out);
printField("Peak N_OUT", info.coils12.peak_n_out);
printField("Soft Start ", softStartStatusNames.at(info.coils12.sstart_status));
Serial.println("========== Coils 34 =============");
printField("Events", info.coils34.n_events);
printField("Events Missed", info.coils34.n_missed_firing);
printField("Spark Dly", (uint32_t)info.coils34.spark_delay);
printField("Spark Sts", sparkStatusNames.at(info.coils34.spark_status));
printField("Peak P_IN", info.coils34.peak_p_in);
printField("Peak N_IN", info.coils34.peak_n_in);
printField("Peak P_OUT", info.coils34.peak_p_out);
printField("Peak N_OUT", info.coils34.peak_n_out);
printField("Soft Start ", softStartStatusNames.at(info.coils34.sstart_status));
Serial.println("============ END ===============");
Serial.println();
printField("Engine RPM", info.eng_rpm);
printField("ADC Read Time", info.adc_read_time);
printField("Queue Errors", info.n_queue_errors);
}

View File

@@ -1,36 +1,16 @@
#pragma once
#include <Arduino.h>
#include <datastruct.h>
#include <string>
void clearScreen()
{
Serial.print("\033[2J"); // clear screen
Serial.print("\033[H"); // cursor home
Serial.flush();
}
void clearScreen();
void setCursor(const uint8_t x, const uint8_t y);
void printField(const char name[], const uint32_t val);
void printField(const char name[], const int32_t val);
void printField(const char name[], const int64_t val);
void printField(const char name[], const float val);
void printField(const char name[], const char *val);
void setCursor(const uint8_t x, const uint8_t y)
{
Serial.printf("\033[%d;%d", y, x + 1);
Serial.flush();
}
void printInfo(const ignitionBoxStatus &info);
void printField(const char name[], const uint32_t val)
{
Serial.printf("%15s: %06d\n", name, val);
}
void printField(const char name[], const int64_t val)
{
Serial.printf("%15s: %06u\n", name, (uint64_t)val);
}
void printField(const char name[], const float val)
{
Serial.printf("%15s: %4.2f\n", name, val);
}
void printField(const char name[], const char *val)
{
Serial.printf("%15s: %s\n", name, val);
}

View File

@@ -1,14 +1,194 @@
#include "utils.h"
#include "freertos_stats.h"
#include "sdkconfig.h"
std::string printBits(uint32_t value) {
#include "freertos/FreeRTOS.h"
#include "freertos/portable.h"
#include "esp_heap_caps.h"
#include "esp_system.h"
#include "esp_spi_flash.h"
#include "esp_partition.h"
#include "LittleFS.h"
#include <vector>
#include <algorithm>
#include <functional>
#define FREERTOS_TASK_NUMBER_MAX_NUM 256 // RunTime stats for how many Tasks to be stored
std::string printBits(uint32_t value)
{
std::string result;
for (int i = 31; i >= 0; i--) {
for (int i = 31; i >= 0; i--)
{
// ottieni il singolo bit
result += ((value >> i) & 1) ? '1' : '0';
// aggiungi uno spazio ogni 8 bit, tranne dopo l'ultimo
if (i % 8 == 0 && i != 0) {
if (i % 8 == 0 && i != 0)
{
result += ' ';
}
}
return result;
}
// ANSI colors
#define BAR_WIDTH 30
#define COLOR_RESET "\033[0m"
#define COLOR_RED "\033[31m"
#define COLOR_GREEN "\033[32m"
#define COLOR_BLUE "\033[34m"
#define COLOR_MAGENTA "\033[35m"
#define COLOR_CYAN "\033[36m"
#define COLOR_YELLOW "\033[33m"
#define COLOR_WHITE "\033[37m"
#define COLOR_LBLUE "\033[94m"
void printBar(Print &printer, const char *label, size_t used, size_t total, const char *color)
{
float perc = total > 0 ? ((float)used / total) : 0;
int filled = perc * BAR_WIDTH;
printer.printf("%s%-12s [" COLOR_RESET, color, label);
for (int i = 0; i < BAR_WIDTH; i++)
{
if (i < filled)
printer.printf("%s#%s", color, COLOR_RESET);
else
printer.printf("-");
}
printer.printf("] %s%6.2f%%%s (%5.3f/%5.3f)MB\n",
color,
perc * 100.0,
COLOR_RESET,
(used / 1024.0f / 1024.0f),
(total / 1024.0f / 1024.0f));
}
void printRunningTasksMod(Print &printer, std::function<bool(const TaskStatus_t &a, const TaskStatus_t &b)> orderBy)
{
static const char *taskStates[] = {"Running", "Ready", "Blocked", "Suspended", "Deleted", "Invalid"};
static uint32_t ulRunTimeCounters[FREERTOS_TASK_NUMBER_MAX_NUM];
static uint32_t ulLastRunTime = 0;
uint32_t ulCurrentRunTime = 0, ulTaskRunTime = 0;
uint32_t ulTotalRunTime = 0;
std::vector<TaskStatus_t> pxTaskStatusArray;
UBaseType_t uxArraySize = 0;
// Take a snapshot of the number of tasks in case it changes while this function is executing.
uxArraySize = uxTaskGetNumberOfTasks();
pxTaskStatusArray.resize(uxArraySize);
// Generate raw status information about each task.
uxArraySize = uxTaskGetSystemState(pxTaskStatusArray.data(), uxArraySize, &ulTotalRunTime);
if (orderBy == nullptr)
std::sort(pxTaskStatusArray.begin(), pxTaskStatusArray.end(), [](const TaskStatus_t &a, const TaskStatus_t &b)
{ return a.xTaskNumber < b.xTaskNumber; });
else
std::sort(pxTaskStatusArray.begin(), pxTaskStatusArray.end(), orderBy);
// Compute system total runtime
ulCurrentRunTime = ulTotalRunTime - ulLastRunTime;
ulLastRunTime = ulTotalRunTime;
// PRINT MEMORY INFO
printer.printf("\033[H");
printer.printf(COLOR_LBLUE "=================== ESP32 SYSTEM MONITOR ===================\n" COLOR_RESET);
std::string buffer;
time_t now = time(nullptr);
struct tm *t = localtime(&now);
buffer.resize(64);
strftime(buffer.data(), sizeof(buffer), "%Y-%m-%d %H:%M:%S", t);
printer.printf(COLOR_YELLOW "=============== Datetime: %s ===============\n\n" COLOR_RESET, buffer.c_str());
// ===== HEAP =====
size_t freeHeap = esp_get_free_heap_size();
size_t totalHeap = heap_caps_get_total_size(MALLOC_CAP_DEFAULT);
printBar(printer, "HEAP", totalHeap - freeHeap, totalHeap, COLOR_GREEN);
// ===== RAM INTERNA =====
size_t freeInternal = heap_caps_get_free_size(MALLOC_CAP_INTERNAL);
size_t totalInternal = heap_caps_get_total_size(MALLOC_CAP_INTERNAL);
printBar(printer, "INTERNAL", totalInternal - freeInternal, totalInternal, COLOR_BLUE);
// ===== PSRAM =====
size_t totalPsram = heap_caps_get_total_size(MALLOC_CAP_SPIRAM);
if (totalPsram > 0)
{
size_t freePsram = heap_caps_get_free_size(MALLOC_CAP_SPIRAM);
printBar(printer, "PSRAM", totalPsram - freePsram, totalPsram, COLOR_MAGENTA);
}
printer.printf("\n");
// ===== FLASH APP (approssimato) =====
const esp_partition_t *app_partition =
esp_partition_find_first(ESP_PARTITION_TYPE_APP,
ESP_PARTITION_SUBTYPE_APP_FACTORY,
NULL);
if (app_partition)
{
size_t totalAPP = app_partition->size; // dimensione reale partizione
size_t sketchSize = ESP.getSketchSize();
printBar(printer, "FLASH APP", sketchSize, totalAPP, COLOR_CYAN);
}
else
{
printer.printf(COLOR_YELLOW "%-12s [NOT FOUND]\n" COLOR_RESET, "FLASH APP");
}
// ===== LITTLEFS (corretto con partition table) =====
const esp_partition_t *fs_partition =
esp_partition_find_first(ESP_PARTITION_TYPE_DATA,
ESP_PARTITION_SUBTYPE_DATA_LITTLEFS,
"littlefs");
if (fs_partition)
{
size_t totalFS = fs_partition->size; // dimensione reale partizione
size_t usedFS = LittleFS.usedBytes(); // spazio usato reale
printBar(printer, "LITTLEFS", usedFS, totalFS, COLOR_YELLOW);
}
else
{
printer.printf(COLOR_YELLOW "%-12s [NOT FOUND]\n" COLOR_RESET, "LITTLEFS");
}
// ===== MIN HEAP =====
size_t minHeap = esp_get_minimum_free_heap_size();
printer.printf("%s\nMin Heap Ever:%s %u KB\n\n", COLOR_RED, COLOR_RESET, minHeap / 1024);
// Print Runtime Information
printer.printf("Tasks: %u, Runtime: %lus, Period: %luus\r\n", uxArraySize, ulTotalRunTime / 1000000, ulCurrentRunTime);
// Print Task Headers
printer.printf("Num\t Name\tLoad\tPrio\t Free\tCore\tState\r\n");
for (const auto &task : pxTaskStatusArray)
{
ulTaskRunTime = (task.ulRunTimeCounter - ulRunTimeCounters[task.xTaskNumber]);
ulRunTimeCounters[task.xTaskNumber] = task.ulRunTimeCounter;
ulTaskRunTime = (ulTaskRunTime * 100) / ulCurrentRunTime; // in percentage
printer.printf(
"%3u\t%16s"
"\t%3lu%%"
"\t%4u\t%5lu"
"\t%4c"
"\t%s\r\n",
task.xTaskNumber, task.pcTaskName,
ulTaskRunTime,
task.uxCurrentPriority, task.usStackHighWaterMark,
(task.xCoreID == tskNO_AFFINITY) ? '*' : ('0' + task.xCoreID),
taskStates[task.eCurrentState]);
}
printer.println();
}

View File

@@ -2,12 +2,14 @@
#include <Arduino.h>
#include <string>
#include <datastruct.h>
std::string printBits(uint32_t value);
static void saveHistoryTask(void *pvParameters)
{
auto *history = static_cast<PSRAMVector<ignitionBoxStatus> *>(pvParameters);
save_history(*history);
vTaskDelete(NULL);
}
void printRunningTasksMod(Print &printer, std::function<bool(const TaskStatus_t &a, const TaskStatus_t &b)> orderBy = nullptr);
inline void swapHistory(PSRAMVector<ignitionBoxStatus>* active, PSRAMVector<ignitionBoxStatus>* writable) {
auto *temp = active;
active = writable; // switch active and writable buffers
writable = temp; // ensure writable_history points to the buffer we just filled
}

View File

@@ -0,0 +1,166 @@
#include <webserver.h>
#include <ArduinoJson.h>
static std::map<const std::string, AstroWebServer::c_commandEnum> s_webserverCommands = {
{"setTime", AstroWebServer::SET_TIME},
};
void on_ping(TimerHandle_t xTimer)
{
if (!xTimer)
return;
auto ws = (AsyncWebSocket *)pvTimerGetTimerID(xTimer);
ws->pingAll();
ws->cleanupClients();
}
AstroWebServer::AstroWebServer(const uint8_t port, fs::FS &filesystem) : m_port(port), m_webserver(AsyncWebServer(port)), m_websocket(AsyncWebSocket("/ws")), m_filesystem(filesystem)
{
LOG_DEBUG("Initializing Web Server");
m_websocket.onEvent([this](AsyncWebSocket *server, AsyncWebSocketClient *client,
AwsEventType type, void *arg, uint8_t *data, size_t len)
{ onWsEvent(server, client, type, arg, data, len); });
m_webserver.addHandler(&m_websocket);
m_webserver.serveStatic("/", m_filesystem, "/").setDefaultFile("index.html");
m_webserver.on("/upload", HTTP_POST, [this](AsyncWebServerRequest *request)
{ onUploadRequest(request); }, [this](AsyncWebServerRequest *request, const String &filename, size_t index, uint8_t *data, size_t len, bool final)
{ onUploadHandler(request, filename, index, data, len, final); });
m_webserver.begin();
m_websocket.enable(true);
m_pingTimer = xTimerCreate("wsPingTimer", pdMS_TO_TICKS(2000), pdTRUE, (void *)&m_websocket, on_ping);
LOG_DEBUG("Webserver Init OK");
}
AstroWebServer::~AstroWebServer()
{
xTimerDelete(m_pingTimer, pdMS_TO_TICKS(10));
m_webserver.removeHandler(&m_websocket);
m_webserver.end();
}
void AstroWebServer::sendWsData(const String &data)
{
if (m_websocket.count())
{
m_websocket.textAll(data);
}
}
void AstroWebServer::onWsEvent(AsyncWebSocket *server, AsyncWebSocketClient *client, AwsEventType type, void *arg, uint8_t *data, size_t len)
{
switch (type)
{
case WS_EVT_CONNECT:
LOG_DEBUG("WS client IP[", client->remoteIP().toString().c_str(), "]-ID[", client->id(), "] CONNECTED");
break;
case WS_EVT_DISCONNECT:
LOG_DEBUG("WS client IP[", client->remoteIP().toString().c_str(), "]-ID[", client->id(), "] DISCONNECTED");
break;
case WS_EVT_PONG:
LOG_DEBUG("WS client IP[", client->remoteIP().toString().c_str(), "]-ID[", client->id(), "] PONG");
break;
case WS_EVT_DATA:
{
AwsFrameInfo *info = (AwsFrameInfo *)arg;
if (info->final && info->index == 0 && info->len == len)
{
std::string data_str((char *)data, len);
ArduinoJson::JsonDocument doc;
if (auto rv = ArduinoJson::deserializeJson(doc, data_str) != ArduinoJson::DeserializationError::Ok)
{
LOG_ERROR("WS Client unable to deserialize Json");
return;
}
if (!doc["cmd"].is<std::string>() || !s_webserverCommands.contains(doc["cmd"]))
{
LOG_WARN("WS Client Invalid Json command [", doc["cmd"].as<std::string>().c_str(), "]");
return;
}
std::string buffer;
switch (s_webserverCommands.at(doc["cmd"]))
{
case SET_TIME:
{
auto epoch = doc["time"].as<time_t>();
timeval te{
.tv_sec = epoch,
.tv_usec = 0,
};
timezone tz{
.tz_minuteswest = 0,
.tz_dsttime = DST_MET,
};
settimeofday(&te, &tz);
time_t now = time(nullptr);
struct tm *t = localtime(&now);
buffer.resize(64);
strftime(buffer.data(), sizeof(buffer), "%Y-%m-%d %H:%M:%S", t);
LOG_DEBUG("WS Client set Datetime to: ", buffer.c_str());
break;
}
default:
// call external command callback
break;
}
}
}
}
}
void AstroWebServer::onUploadRequest(AsyncWebServerRequest *request)
{
if (m_uploadFailed)
request->send(500, "text/plain", "Upload failed");
else
request->send(200, "text/plain", "Upload successful");
}
void AstroWebServer::onUploadHandler(AsyncWebServerRequest *request, const String &filename, size_t index, uint8_t *data, size_t len, bool final)
{
if (index == 0) // only on first iteration to open file
{
m_uploadFailed = false;
String safeName = filename;
int slashIndex = safeName.lastIndexOf('/');
if (slashIndex >= 0)
safeName = safeName.substring(slashIndex + 1);
if (safeName.length() == 0)
{
m_uploadFailed = true;
LOG_ERROR("Invalid file name");
return;
}
const std::filesystem::path filePath = std::filesystem::path(m_filesystem.mountpoint()) / safeName.c_str();
if (m_filesystem.exists(filePath.c_str()))
m_filesystem.remove(filePath.c_str());
m_uploadFile = m_filesystem.open(filePath.c_str(), FILE_WRITE);
if (!m_uploadFile)
{
m_uploadFailed = true;
LOG_ERROR("Failed to open upload file:", filePath.c_str());
return;
}
}
// Actual write of file data
if (!m_uploadFailed && m_uploadFile)
{
if (m_uploadFile.write(data, len) != len)
m_uploadFailed = true;
}
// close the file and save on final call
if (final && m_uploadFile)
{
m_uploadFile.close();
if (!m_uploadFailed)
LOG_INFO("Uploaded file to LittleFS:", filename.c_str());
}
}

View File

@@ -0,0 +1,48 @@
#pragma once
#define DEBUGLOG_DEFAULT_LOG_LEVEL_DEBUG
// System includes
#include <Arduino.h>
#include <DebugLog.h>
#include <ESPAsyncWebServer.h>
#include <AsyncTCP.h>
#include <filesystem>
#include <map>
#include <FS.h>
class AstroWebServer
{
public:
AstroWebServer(const uint8_t port, fs::FS &filesystem);
~AstroWebServer();
void sendWsData(const String &data);
private:
void onWsEvent(AsyncWebSocket *server, AsyncWebSocketClient *client,
AwsEventType type, void *arg, uint8_t *data, size_t len);
void onUploadRequest(AsyncWebServerRequest *request);
void onUploadHandler(AsyncWebServerRequest *request, const String &filename, size_t index, uint8_t *data, size_t len, bool final);
void onStart(AsyncWebServerRequest *request);
void onStop(AsyncWebServerRequest *request);
void onDownload(AsyncWebServerRequest *request);
private:
const uint8_t m_port = 80;
fs::FS &m_filesystem;
AsyncWebServer m_webserver;
AsyncWebSocket m_websocket;
bool m_uploadFailed = false;
fs::File m_uploadFile;
TimerHandle_t m_pingTimer = NULL;
public:
enum c_commandEnum
{
SET_TIME
};
};

View File

@@ -1,855 +0,0 @@
TS,EVENTS_12,DLY_12,STAT_12,V_12_1,V_12_2,V_12_3,V_12_4,IGNITION_MODE_12,EVENTS_34,DLY_34,STAT_34,V_34_1,V_34_2,V_34_3,V_34_4,IGNITION_MODE_34,ENGINE_RPM,ADC_READTIME,N_QUEUE_ERRORS
10821894,171,220,SPARK_NEG_OK,0.291874,0.321984,0.352346,0.354453,SOFT_START,171,221,SPARK_NEG_OK,0.356878,0.361823,0.277541,0.004770,SOFT_START,1293,4274,0
10867894,172,220,SPARK_NEG_OK,0.291641,0.321847,0.352141,0.354271,SOFT_START,172,220,SPARK_NEG_OK,0.356699,0.361621,0.277369,0.004770,SOFT_START,1302,4207,0
10913894,173,220,SPARK_NEG_OK,0.291452,0.321704,0.351960,0.354081,SOFT_START,173,220,SPARK_NEG_OK,0.356535,0.361444,0.277177,0.004786,SOFT_START,1302,4261,0
10959894,174,221,SPARK_NEG_OK,0.291214,0.321550,0.351793,0.353897,SOFT_START,174,220,SPARK_NEG_OK,0.356338,0.361255,0.276995,0.004792,SOFT_START,1310,4269,0
11004895,175,220,SPARK_NEG_OK,0.290992,0.321397,0.351586,0.353711,SOFT_START,175,190,SPARK_NEG_OK,0.356162,0.361081,0.276814,0.004815,SOFT_START,1312,4244,0
11050894,176,190,SPARK_NEG_OK,0.290810,0.321243,0.351415,0.353529,SOFT_START,176,191,SPARK_NEG_OK,0.355985,0.360872,0.276650,0.004836,SOFT_START,1317,4224,0
11095894,177,190,SPARK_NEG_OK,0.290591,0.321098,0.351211,0.353335,SOFT_START,177,190,SPARK_NEG_OK,0.355766,0.360683,0.276479,0.004852,SOFT_START,1319,4206,0
11141894,178,150,SPARK_NEG_OK,0.290401,0.320932,0.351018,0.353144,SOFT_START,178,150,SPARK_NEG_OK,0.355611,0.360506,0.276300,0.004860,SOFT_START,1319,4163,0
11186894,179,151,SPARK_NEG_OK,0.290195,0.320794,0.350831,0.352983,SOFT_START,179,150,SPARK_NEG_OK,0.355431,0.360326,0.276120,0.004873,SOFT_START,1322,4264,0
11232894,180,120,SPARK_NEG_OK,0.290006,0.320647,0.350667,0.352789,SOFT_START,180,120,SPARK_NEG_OK,0.355256,0.360150,0.275930,0.004894,SOFT_START,1320,4196,0
11277894,181,120,SPARK_NEG_OK,0.289753,0.320502,0.350458,0.352589,SOFT_START,181,121,SPARK_NEG_OK,0.355072,0.359924,0.275752,0.004888,SOFT_START,1322,4272,0
11322894,182,121,SPARK_NEG_OK,0.289555,0.320359,0.350283,0.352405,SOFT_START,182,90,SPARK_NEG_OK,0.354874,0.359756,0.275572,0.004894,SOFT_START,1322,4203,0
11368894,183,90,SPARK_NEG_OK,0.289374,0.320207,0.350096,0.352215,SOFT_START,183,90,SPARK_NEG_OK,0.354710,0.359569,0.275415,0.004900,SOFT_START,1312,4157,0
11414894,184,91,SPARK_NEG_OK,0.289163,0.320063,0.349897,0.352047,SOFT_START,184,61,SPARK_NEG_OK,0.354533,0.359383,0.275223,0.004900,SOFT_START,1314,4224,0
11460894,185,60,SPARK_NEG_OK,0.288991,0.319898,0.349711,0.351868,SOFT_START,185,60,SPARK_NEG_OK,0.354339,0.359212,0.275054,0.004936,SOFT_START,1307,4160,0
11506894,186,60,SPARK_NEG_OK,0.288769,0.319761,0.349534,0.351666,SOFT_START,186,61,SPARK_NEG_OK,0.354161,0.359017,0.274898,0.004913,SOFT_START,1302,4227,0
11552894,187,30,SPARK_NEG_OK,0.288572,0.319604,0.349340,0.351484,SOFT_START,187,30,SPARK_NEG_OK,0.353971,0.358836,0.274721,0.004925,SOFT_START,1294,4175,0
11599894,188,28,SPARK_NEG_OK,0.288355,0.319456,0.349131,0.351307,SOFT_START,188,30,SPARK_NEG_OK,0.353799,0.358637,0.274544,0.004942,SOFT_START,1288,4275,0
11765894,189,220,SPARK_POS_OK,0.288172,0.319344,0.349020,0.351149,NORMAL,189,220,SPARK_POS_OK,0.353638,0.358481,0.274398,0.004628,NORMAL,1266,4262,0
11812894,190,221,SPARK_POS_OK,0.287986,0.319201,0.348818,0.350974,NORMAL,190,220,SPARK_POS_OK,0.353460,0.358317,0.274234,0.004650,NORMAL,1259,4216,0
11861894,191,200,SPARK_POS_OK,0.287738,0.319054,0.348635,0.350789,NORMAL,191,200,SPARK_POS_OK,0.353298,0.358120,0.274066,0.004659,NORMAL,1238,4274,0
11909894,192,201,SPARK_POS_OK,0.287534,0.318898,0.348458,0.350605,NORMAL,192,200,SPARK_POS_OK,0.353095,0.357934,0.273899,0.004672,NORMAL,1239,4247,0
11958894,193,170,SPARK_POS_OK,0.287327,0.318753,0.348269,0.350417,NORMAL,193,200,SPARK_POS_OK,0.352935,0.357761,0.273730,0.004690,NORMAL,1227,4264,0
12007894,194,170,SPARK_POS_OK,0.287136,0.318620,0.348067,0.350251,NORMAL,194,171,SPARK_POS_OK,0.352752,0.357563,0.273559,0.004696,NORMAL,1216,4158,0
12057894,195,141,SPARK_POS_OK,0.286947,0.318474,0.347898,0.350049,NORMAL,195,170,SPARK_POS_OK,0.352559,0.357398,0.273376,0.004699,NORMAL,1205,4218,0
12107894,196,140,SPARK_POS_OK,0.286708,0.318314,0.347713,0.349872,NORMAL,196,140,SPARK_POS_OK,0.352387,0.357202,0.273208,0.004697,NORMAL,1195,4280,0
12158894,197,110,SPARK_POS_OK,0.286518,0.318181,0.347544,0.349692,NORMAL,197,140,SPARK_POS_OK,0.352211,0.357017,0.273015,0.004702,NORMAL,1183,4229,0
12209894,198,111,SPARK_POS_OK,0.286322,0.318015,0.347342,0.349513,NORMAL,198,110,SPARK_POS_OK,0.352041,0.356835,0.272858,0.004721,NORMAL,1173,4163,0
12261894,199,90,SPARK_POS_OK,0.286103,0.317878,0.347158,0.349329,NORMAL,199,110,SPARK_POS_OK,0.351862,0.356678,0.272691,0.004691,NORMAL,1161,4237,0
12313894,200,90,SPARK_POS_OK,0.285903,0.317712,0.346979,0.349131,NORMAL,200,91,SPARK_POS_OK,0.351683,0.356466,0.272512,0.004713,NORMAL,1151,4264,0
12366894,201,71,SPARK_POS_OK,0.285721,0.317584,0.346802,0.348973,NORMAL,201,92,SPARK_POS_OK,0.351498,0.356287,0.272346,0.004697,NORMAL,1138,4196,0
12419894,202,71,SPARK_POS_OK,0.285524,0.317419,0.346613,0.348784,NORMAL,202,70,SPARK_POS_OK,0.351300,0.356096,0.272186,0.004708,NORMAL,1126,4156,0
12473894,203,60,SPARK_POS_OK,0.285331,0.317279,0.346447,0.348594,NORMAL,203,70,SPARK_POS_OK,0.351147,0.355921,0.271999,0.004705,NORMAL,1113,4269,0
12527894,204,60,SPARK_POS_OK,0.285091,0.317123,0.346253,0.348431,NORMAL,204,61,SPARK_POS_OK,0.350962,0.355725,0.271855,0.004699,NORMAL,1102,4243,0
12582894,205,60,SPARK_POS_OK,0.284925,0.317021,0.346054,0.348216,NORMAL,205,61,SPARK_POS_OK,0.350796,0.355549,0.271656,0.004687,NORMAL,1091,4195,0
12638894,206,60,SPARK_POS_OK,0.284721,0.316844,0.345879,0.348051,NORMAL,206,61,SPARK_POS_OK,0.350621,0.355390,0.271497,0.004652,NORMAL,1082,4239,0
12694894,207,60,SPARK_POS_OK,0.284523,0.316696,0.345726,0.347897,NORMAL,207,61,SPARK_POS_OK,0.350435,0.355192,0.271319,0.004679,NORMAL,1065,4209,0
12750894,208,60,SPARK_POS_OK,0.284311,0.316560,0.345530,0.347692,NORMAL,208,60,SPARK_POS_OK,0.350261,0.355031,0.271155,0.004650,NORMAL,1066,4228,0
12807894,209,60,SPARK_POS_OK,0.284136,0.316435,0.345343,0.347521,NORMAL,209,60,SPARK_POS_OK,0.350083,0.354824,0.270969,0.004657,NORMAL,1050,4179,0
12864894,210,60,SPARK_POS_OK,0.283932,0.316269,0.345162,0.347337,NORMAL,210,60,SPARK_POS_OK,0.349925,0.354653,0.270828,0.004632,NORMAL,1051,4177,0
12922894,211,70,SPARK_POS_OK,0.283749,0.316133,0.344989,0.347164,NORMAL,211,70,SPARK_POS_OK,0.349733,0.354481,0.270671,0.004617,NORMAL,1034,4180,0
12981894,212,80,SPARK_POS_OK,0.283555,0.315993,0.344810,0.346988,NORMAL,212,69,SPARK_POS_OK,0.349549,0.354288,0.270514,0.004611,NORMAL,1027,4192,0
13040894,213,80,SPARK_POS_OK,0.283352,0.315846,0.344626,0.346801,NORMAL,213,81,SPARK_POS_OK,0.349369,0.354108,0.270325,0.004593,NORMAL,1021,4268,0
13099894,214,90,SPARK_POS_OK,0.283144,0.315697,0.344451,0.346639,NORMAL,214,81,SPARK_POS_OK,0.349219,0.353949,0.270138,0.004584,NORMAL,1015,4275,0
13158894,215,90,SPARK_POS_OK,0.282967,0.315561,0.344267,0.346466,NORMAL,215,91,SPARK_POS_OK,0.349048,0.353755,0.269985,0.004572,NORMAL,1012,4186,0
13217894,216,110,SPARK_POS_OK,0.282770,0.315417,0.344096,0.346274,NORMAL,216,110,SPARK_POS_OK,0.348860,0.353565,0.269793,0.004562,NORMAL,1006,4189,0
13277894,217,111,SPARK_POS_OK,0.282574,0.315275,0.343914,0.346095,NORMAL,217,110,SPARK_POS_OK,0.348682,0.353402,0.269661,0.004547,NORMAL,1007,4241,0
13337894,218,130,SPARK_POS_OK,0.282375,0.315123,0.343747,0.345913,NORMAL,218,130,SPARK_POS_OK,0.348535,0.353219,0.269510,0.004527,NORMAL,1003,4217,0
13397894,219,140,SPARK_POS_OK,0.282168,0.314994,0.343540,0.345718,NORMAL,219,130,SPARK_POS_OK,0.348333,0.353041,0.269329,0.004525,NORMAL,1002,4247,0
13456894,220,140,SPARK_POS_OK,0.281945,0.314833,0.343373,0.345567,NORMAL,220,140,SPARK_POS_OK,0.348171,0.352871,0.269172,0.004499,NORMAL,1002,4246,0
13516894,221,160,SPARK_POS_OK,0.281780,0.314691,0.343198,0.345380,NORMAL,221,141,SPARK_POS_OK,0.347996,0.352697,0.268990,0.004496,NORMAL,1000,4185,0
13576894,222,158,SPARK_POS_OK,0.281596,0.314552,0.343024,0.345215,NORMAL,222,161,SPARK_POS_OK,0.347838,0.352506,0.268822,0.004497,NORMAL,1001,4161,0
13636894,223,181,SPARK_POS_OK,0.281394,0.314416,0.342835,0.345027,NORMAL,223,180,SPARK_POS_OK,0.347647,0.352321,0.268661,0.004486,NORMAL,1004,4179,0
13696894,224,181,SPARK_POS_OK,0.281194,0.314263,0.342656,0.344863,NORMAL,224,180,SPARK_POS_OK,0.347478,0.352163,0.268500,0.004463,NORMAL,1005,4245,0
13755894,225,201,SPARK_POS_OK,0.281022,0.314121,0.342464,0.344678,NORMAL,225,200,SPARK_POS_OK,0.347285,0.351969,0.268348,0.004470,NORMAL,1011,4148,0
13814894,226,220,SPARK_POS_OK,0.280838,0.313963,0.342288,0.344507,NORMAL,226,200,SPARK_POS_OK,0.347126,0.351819,0.268160,0.004444,NORMAL,1015,4167,0
13873894,227,220,SPARK_POS_OK,0.280629,0.313827,0.342121,0.344330,NORMAL,227,220,SPARK_POS_OK,0.346951,0.351624,0.267985,0.004456,NORMAL,1021,4220,0
13931894,228,238,SPARK_POS_OK,0.280473,0.313697,0.341949,0.344143,NORMAL,228,221,SPARK_POS_OK,0.346759,0.351441,0.267839,0.004458,NORMAL,1024,4167,0
13990894,229,240,SPARK_POS_OK,0.280264,0.313526,0.341761,0.343969,NORMAL,229,240,SPARK_POS_OK,0.346602,0.351270,0.267669,0.004433,NORMAL,1029,4269,0
14047894,230,11,SPARK_NEG_OK,0.280050,0.313401,0.341582,0.343786,SOFT_START,230,12,SPARK_NEG_OK,0.346419,0.351073,0.267512,0.004433,SOFT_START,1032,4255,0
14105894,231,11,SPARK_NEG_OK,0.279852,0.313249,0.341405,0.343619,SOFT_START,231,12,SPARK_NEG_OK,0.346251,0.350896,0.267332,0.004425,SOFT_START,1038,4181,0
14162894,232,40,SPARK_NEG_OK,0.279679,0.313119,0.341244,0.343432,SOFT_START,232,41,SPARK_NEG_OK,0.346085,0.350717,0.267166,0.004453,SOFT_START,1049,4176,0
14219894,233,40,SPARK_NEG_OK,0.279474,0.312965,0.341028,0.343263,SOFT_START,233,41,SPARK_NEG_OK,0.345911,0.350540,0.267016,0.004442,SOFT_START,1050,4248,0
14275894,234,60,SPARK_NEG_OK,0.279295,0.312825,0.340890,0.343099,SOFT_START,234,61,SPARK_NEG_OK,0.345735,0.350363,0.266851,0.004426,SOFT_START,1065,4198,0
14331894,235,80,SPARK_NEG_OK,0.279090,0.312679,0.340686,0.342902,SOFT_START,235,61,SPARK_NEG_OK,0.345562,0.350190,0.266668,0.004430,SOFT_START,1074,4207,0
14387894,236,80,SPARK_NEG_OK,0.278901,0.312548,0.340523,0.342727,SOFT_START,236,81,SPARK_NEG_OK,0.345393,0.350004,0.266502,0.004441,SOFT_START,1084,4221,0
14441894,237,110,SPARK_NEG_OK,0.278722,0.312400,0.340346,0.342571,SOFT_START,237,80,SPARK_NEG_OK,0.345206,0.349820,0.266361,0.004433,SOFT_START,1092,4190,0
14496894,238,111,SPARK_NEG_OK,0.278538,0.312257,0.340148,0.342380,SOFT_START,238,110,SPARK_NEG_OK,0.345017,0.349650,0.266191,0.004449,SOFT_START,1102,4163,0
14550894,239,131,SPARK_NEG_OK,0.278317,0.312113,0.339990,0.342190,SOFT_START,239,110,SPARK_NEG_OK,0.344860,0.349460,0.266011,0.004453,SOFT_START,1110,4260,0
14603894,240,130,SPARK_NEG_OK,0.278129,0.311985,0.339815,0.342011,SOFT_START,240,130,SPARK_NEG_OK,0.344681,0.349284,0.265859,0.004457,SOFT_START,1121,4219,0
14656894,241,160,SPARK_NEG_OK,0.277947,0.311831,0.339648,0.341843,SOFT_START,241,130,SPARK_NEG_OK,0.344517,0.349094,0.265678,0.004458,SOFT_START,1131,4210,0
14709894,242,160,SPARK_NEG_OK,0.277737,0.311708,0.339428,0.341673,SOFT_START,242,160,SPARK_NEG_OK,0.344340,0.348915,0.265509,0.004467,SOFT_START,1143,4259,0
14761894,243,201,SPARK_NEG_OK,0.277543,0.311542,0.339262,0.341479,SOFT_START,243,160,SPARK_NEG_OK,0.344167,0.348761,0.265323,0.004476,SOFT_START,1154,4244,0
14812894,244,200,SPARK_NEG_OK,0.277353,0.311390,0.339096,0.341303,SOFT_START,244,200,SPARK_NEG_OK,0.343997,0.348579,0.265188,0.004480,SOFT_START,1168,4206,0
14863894,245,220,SPARK_NEG_OK,0.277141,0.311238,0.338919,0.341144,SOFT_START,245,201,SPARK_NEG_OK,0.343816,0.348403,0.265033,0.004494,SOFT_START,1179,4250,0
14914894,246,221,SPARK_NEG_OK,0.276940,0.311101,0.338711,0.340955,SOFT_START,246,220,SPARK_NEG_OK,0.343642,0.348225,0.264858,0.004509,SOFT_START,1193,4254,0
14963894,247,219,SPARK_NEG_OK,0.276753,0.310962,0.338569,0.340778,SOFT_START,247,220,SPARK_NEG_OK,0.343467,0.348055,0.264688,0.004524,SOFT_START,1204,4171,0
15013894,248,220,SPARK_NEG_OK,0.276549,0.310797,0.338376,0.340604,SOFT_START,248,221,SPARK_NEG_OK,0.343291,0.347858,0.264544,0.004519,SOFT_START,1217,4238,0
15062894,249,220,SPARK_NEG_OK,0.276359,0.310670,0.338200,0.340418,SOFT_START,249,220,SPARK_NEG_OK,0.343134,0.347682,0.264333,0.004538,SOFT_START,1227,4279,0
15110894,250,220,SPARK_NEG_OK,0.276158,0.310534,0.338027,0.340244,SOFT_START,250,221,SPARK_NEG_OK,0.342966,0.347517,0.264202,0.004557,SOFT_START,1239,4249,0
15158894,251,220,SPARK_NEG_OK,0.275975,0.310376,0.337833,0.340089,SOFT_START,251,221,SPARK_NEG_OK,0.342786,0.347318,0.264034,0.004550,SOFT_START,1239,4172,0
15206894,252,220,SPARK_NEG_OK,0.275763,0.310252,0.337676,0.339896,SOFT_START,252,220,SPARK_NEG_OK,0.342599,0.347157,0.263843,0.004563,SOFT_START,1258,4282,0
15254894,253,221,SPARK_NEG_OK,0.275539,0.310127,0.337480,0.339708,SOFT_START,253,222,SPARK_NEG_OK,0.342442,0.346959,0.263690,0.004616,SOFT_START,1259,4254,0
15301894,254,220,SPARK_NEG_OK,0.275350,0.309954,0.337303,0.339510,SOFT_START,254,220,SPARK_NEG_OK,0.342258,0.346802,0.263526,0.004594,SOFT_START,1278,4273,0
15347894,255,220,SPARK_NEG_OK,0.275174,0.309796,0.337130,0.339362,SOFT_START,255,220,SPARK_NEG_OK,0.342102,0.346624,0.263355,0.004622,SOFT_START,1280,4205,0
15394894,256,220,SPARK_NEG_OK,0.274967,0.309659,0.336950,0.339174,SOFT_START,256,221,SPARK_NEG_OK,0.341921,0.346425,0.263182,0.004622,SOFT_START,1297,4237,0
15440894,257,223,SPARK_NEG_OK,0.274789,0.309511,0.336785,0.338994,SOFT_START,257,220,SPARK_NEG_OK,0.341733,0.346255,0.263042,0.004638,SOFT_START,1299,4182,0
15486894,258,221,SPARK_NEG_OK,0.274593,0.309373,0.336576,0.338819,SOFT_START,258,221,SPARK_NEG_OK,0.341574,0.346088,0.262862,0.004668,SOFT_START,1305,4208,0
15531894,259,220,SPARK_NEG_OK,0.274363,0.309222,0.336419,0.338640,SOFT_START,259,220,SPARK_NEG_OK,0.341392,0.345899,0.262686,0.004668,SOFT_START,1313,4277,0
15577894,260,221,SPARK_NEG_OK,0.274186,0.309085,0.336248,0.338470,SOFT_START,260,220,SPARK_NEG_OK,0.341223,0.345733,0.262538,0.004680,SOFT_START,1318,4237,0
15622894,261,220,SPARK_NEG_OK,0.273988,0.308942,0.336065,0.338274,SOFT_START,261,221,SPARK_NEG_OK,0.341040,0.345555,0.262377,0.004697,SOFT_START,1326,4191,0
15667894,262,220,SPARK_NEG_OK,0.273785,0.308786,0.335875,0.338117,SOFT_START,262,220,SPARK_NEG_OK,0.340880,0.345359,0.262205,0.004693,SOFT_START,1326,4279,0
15712894,263,221,SPARK_NEG_OK,0.273591,0.308653,0.335709,0.337934,SOFT_START,263,221,SPARK_NEG_OK,0.340683,0.345190,0.262039,0.004723,SOFT_START,1337,4203,0
15757894,264,220,SPARK_NEG_OK,0.273391,0.308498,0.335528,0.337751,SOFT_START,264,220,SPARK_NEG_OK,0.340517,0.345017,0.261879,0.004717,SOFT_START,1338,4179,0
15802894,265,220,SPARK_NEG_OK,0.273204,0.308351,0.335353,0.337588,SOFT_START,265,220,SPARK_NEG_OK,0.340366,0.344841,0.261700,0.004731,SOFT_START,1341,4241,0
15846894,266,221,SPARK_NEG_OK,0.273006,0.308197,0.335171,0.337414,SOFT_START,266,221,SPARK_NEG_OK,0.340174,0.344661,0.261554,0.004756,SOFT_START,1347,4230,0
15891894,267,180,SPARK_NEG_OK,0.272815,0.308082,0.334992,0.337222,SOFT_START,267,220,SPARK_NEG_OK,0.340018,0.344472,0.261397,0.004770,SOFT_START,1347,4268,0
15935894,268,180,SPARK_NEG_OK,0.272610,0.307922,0.334812,0.337040,SOFT_START,268,180,SPARK_NEG_OK,0.339837,0.344308,0.261219,0.004772,SOFT_START,1350,4241,0
15980894,269,181,SPARK_NEG_OK,0.272433,0.307770,0.334638,0.336877,SOFT_START,269,181,SPARK_NEG_OK,0.339680,0.344119,0.261047,0.004802,SOFT_START,1350,4210,0
16024894,270,150,SPARK_NEG_OK,0.272267,0.307639,0.334473,0.336711,SOFT_START,270,148,SPARK_NEG_OK,0.339497,0.343937,0.260897,0.004804,SOFT_START,1347,4244,0
16069894,271,150,SPARK_NEG_OK,0.272056,0.307497,0.334284,0.336515,SOFT_START,271,150,SPARK_NEG_OK,0.339306,0.343756,0.260709,0.004807,SOFT_START,1348,4158,0
16113894,272,140,SPARK_NEG_OK,0.271863,0.307337,0.334108,0.336345,SOFT_START,272,151,SPARK_NEG_OK,0.339141,0.343586,0.260540,0.004798,SOFT_START,1345,4239,0
16158894,273,140,SPARK_NEG_OK,0.271698,0.307201,0.333925,0.336167,SOFT_START,273,140,SPARK_NEG_OK,0.338959,0.343403,0.260389,0.004823,SOFT_START,1345,4167,0
16203894,274,130,SPARK_NEG_OK,0.271480,0.307058,0.333768,0.335989,SOFT_START,274,140,SPARK_NEG_OK,0.338812,0.343249,0.260221,0.004836,SOFT_START,1342,4271,0
16247894,275,130,SPARK_NEG_OK,0.271285,0.306922,0.333574,0.335815,SOFT_START,275,131,SPARK_NEG_OK,0.338630,0.343057,0.260075,0.004844,SOFT_START,1342,4232,0
16292894,276,130,SPARK_NEG_OK,0.271102,0.306773,0.333405,0.335645,SOFT_START,276,130,SPARK_NEG_OK,0.338458,0.342894,0.259930,0.004845,SOFT_START,1342,4194,0
16337894,277,120,SPARK_NEG_OK,0.270932,0.306615,0.333204,0.335463,SOFT_START,277,120,SPARK_NEG_OK,0.338296,0.342724,0.259750,0.004863,SOFT_START,1337,4147,0
16382894,278,120,SPARK_NEG_OK,0.270737,0.306486,0.333048,0.335265,SOFT_START,278,121,SPARK_NEG_OK,0.338100,0.342532,0.259584,0.004867,SOFT_START,1339,4276,0
16426894,279,110,SPARK_NEG_OK,0.270554,0.306343,0.332868,0.335113,SOFT_START,279,120,SPARK_NEG_OK,0.337940,0.342348,0.259439,0.004864,SOFT_START,1335,4170,0
16471894,280,111,SPARK_NEG_OK,0.270383,0.306209,0.332687,0.334929,SOFT_START,280,110,SPARK_NEG_OK,0.337764,0.342171,0.259267,0.004873,SOFT_START,1335,4177,0
16517894,281,90,SPARK_NEG_OK,0.270165,0.306048,0.332520,0.334755,SOFT_START,281,110,SPARK_NEG_OK,0.337594,0.341991,0.259075,0.004871,SOFT_START,1329,4272,0
16562894,282,90,SPARK_NEG_OK,0.269985,0.305896,0.332350,0.334590,SOFT_START,282,91,SPARK_NEG_OK,0.337431,0.341833,0.258943,0.004854,SOFT_START,1326,4247,0
16607894,283,91,SPARK_NEG_OK,0.269781,0.305758,0.332175,0.334412,SOFT_START,283,91,SPARK_NEG_OK,0.337263,0.341638,0.258790,0.004885,SOFT_START,1326,4220,0
16653894,284,70,SPARK_NEG_OK,0.269598,0.305635,0.331991,0.334242,SOFT_START,284,72,SPARK_NEG_OK,0.337071,0.341465,0.258601,0.004866,SOFT_START,1312,4258,0
16698894,285,71,SPARK_NEG_OK,0.269420,0.305482,0.331814,0.334067,SOFT_START,285,70,SPARK_NEG_OK,0.336933,0.341322,0.258471,0.004867,SOFT_START,1313,4192,0
16744894,286,40,SPARK_NEG_OK,0.269231,0.305305,0.331654,0.333915,SOFT_START,286,41,SPARK_NEG_OK,0.336744,0.341121,0.258281,0.004871,SOFT_START,1299,4180,0
16791894,287,40,SPARK_NEG_OK,0.269049,0.305214,0.331465,0.333707,SOFT_START,287,40,SPARK_NEG_OK,0.336584,0.340940,0.258129,0.004892,SOFT_START,1300,4187,0
16837894,288,30,SPARK_NEG_OK,0.268874,0.305048,0.331298,0.333550,SOFT_START,288,41,SPARK_NEG_OK,0.336404,0.340771,0.257971,0.004876,SOFT_START,1293,4201,0
16884894,289,30,SPARK_NEG_OK,0.268696,0.304921,0.331123,0.333374,SOFT_START,289,30,SPARK_NEG_OK,0.336235,0.340590,0.257808,0.004873,SOFT_START,1288,4174,0
16930894,290,12,SPARK_NEG_OK,0.268512,0.304756,0.330947,0.333184,SOFT_START,290,30,SPARK_NEG_OK,0.336077,0.340421,0.257648,0.004867,SOFT_START,1280,4275,0
16977894,291,11,SPARK_NEG_OK,0.268307,0.304621,0.330780,0.333019,SOFT_START,291,11,SPARK_NEG_OK,0.335906,0.340248,0.257477,0.004886,SOFT_START,1275,4182,0
17024894,292,12,SPARK_NEG_OK,0.268142,0.304487,0.330597,0.332844,SOFT_START,292,11,SPARK_NEG_OK,0.335712,0.340078,0.257326,0.004880,SOFT_START,1275,4223,0
17073894,293,240,SPARK_POS_OK,0.267931,0.304347,0.330408,0.332662,NORMAL,293,240,SPARK_POS_OK,0.335556,0.339900,0.257170,0.004864,NORMAL,1265,4283,0
17120894,294,241,SPARK_POS_OK,0.267733,0.304181,0.330238,0.332494,NORMAL,294,240,SPARK_POS_OK,0.335385,0.339734,0.257022,0.004860,NORMAL,1259,4237,0
17169894,295,210,SPARK_POS_OK,0.267549,0.304050,0.330071,0.332329,NORMAL,295,210,SPARK_POS_OK,0.335230,0.339558,0.256847,0.004850,NORMAL,1240,4221,0
17217894,296,211,SPARK_POS_OK,0.267379,0.303919,0.329908,0.332153,NORMAL,296,210,SPARK_POS_OK,0.335050,0.339391,0.256687,0.004830,NORMAL,1240,4255,0
17266894,297,190,SPARK_POS_OK,0.267209,0.303771,0.329717,0.331997,NORMAL,297,190,SPARK_POS_OK,0.334877,0.339213,0.256514,0.004860,NORMAL,1221,4165,0
17315894,298,190,SPARK_POS_OK,0.266992,0.303644,0.329559,0.331809,NORMAL,298,191,SPARK_POS_OK,0.334710,0.339048,0.256393,0.004833,NORMAL,1221,4259,0
17365894,299,160,SPARK_POS_OK,0.266833,0.303503,0.329363,0.331661,NORMAL,299,190,SPARK_POS_OK,0.334555,0.338853,0.256221,0.004839,NORMAL,1212,4189,0
17415894,300,160,SPARK_POS_OK,0.266654,0.303344,0.329211,0.331482,NORMAL,300,161,SPARK_POS_OK,0.334383,0.338693,0.256031,0.004812,NORMAL,1203,4190,0
17465894,301,141,SPARK_POS_OK,0.266449,0.303210,0.329055,0.331288,NORMAL,301,160,SPARK_POS_OK,0.334225,0.338532,0.255885,0.004814,NORMAL,1193,4273,0
17516894,302,140,SPARK_POS_OK,0.266245,0.303064,0.328864,0.331123,NORMAL,302,140,SPARK_POS_OK,0.334033,0.338354,0.255737,0.004802,NORMAL,1184,4273,0
17567894,303,110,SPARK_POS_OK,0.266058,0.302920,0.328710,0.330976,NORMAL,303,141,SPARK_POS_OK,0.333868,0.338184,0.255600,0.004779,NORMAL,1172,4268,0
17619894,304,110,SPARK_POS_OK,0.265878,0.302792,0.328532,0.330778,NORMAL,304,110,SPARK_POS_OK,0.333710,0.338012,0.255402,0.004783,NORMAL,1161,4227,0
17671894,305,81,SPARK_POS_OK,0.265690,0.302648,0.328369,0.330619,NORMAL,305,110,SPARK_POS_OK,0.333537,0.337849,0.255261,0.004770,NORMAL,1148,4232,0
17724894,306,80,SPARK_POS_OK,0.265476,0.302500,0.328174,0.330463,NORMAL,306,80,SPARK_POS_OK,0.333378,0.337679,0.255098,0.004752,NORMAL,1137,4264,0
17777894,307,60,SPARK_POS_OK,0.265328,0.302365,0.328012,0.330285,NORMAL,307,81,SPARK_POS_OK,0.333213,0.337498,0.254948,0.004761,NORMAL,1123,4191,0
17831894,308,60,SPARK_POS_OK,0.265142,0.302238,0.327851,0.330095,NORMAL,308,61,SPARK_POS_OK,0.333058,0.337338,0.254792,0.004728,NORMAL,1112,4244,0
17885894,309,30,SPARK_POS_OK,0.264945,0.302092,0.327675,0.329918,NORMAL,309,60,SPARK_POS_OK,0.332888,0.337162,0.254622,0.004697,NORMAL,1100,4201,0
17941894,310,31,SPARK_POS_OK,0.264768,0.301954,0.327485,0.329756,NORMAL,310,30,SPARK_POS_OK,0.332726,0.336969,0.254484,0.004701,NORMAL,1088,4164,0
17997894,311,12,SPARK_POS_OK,0.264581,0.301821,0.327319,0.329586,NORMAL,311,30,SPARK_POS_OK,0.332555,0.336813,0.254331,0.004685,NORMAL,1065,4223,0
18053894,312,12,SPARK_POS_OK,0.264429,0.301675,0.327158,0.329433,NORMAL,312,11,SPARK_POS_OK,0.332391,0.336652,0.254169,0.004653,NORMAL,1066,4203,0
18111894,313,12,SPARK_POS_OK,0.264220,0.301539,0.326988,0.329242,NORMAL,313,11,SPARK_POS_OK,0.332209,0.336474,0.254010,0.004625,NORMAL,1066,4239,0
18168897,314,12,SPARK_POS_OK,0.264052,0.301399,0.326822,0.329088,NORMAL,314,11,SPARK_POS_OK,0.332057,0.336303,0.253870,0.004619,NORMAL,1066,4191,0
18228894,315,12,SPARK_POS_OK,0.263894,0.301248,0.326648,0.328944,NORMAL,315,11,SPARK_POS_OK,0.331897,0.336123,0.253718,0.004594,NORMAL,1066,4234,0
18287894,316,12,SPARK_POS_OK,0.263721,0.301127,0.326463,0.328761,NORMAL,316,11,SPARK_POS_OK,0.331728,0.335987,0.253572,0.004570,NORMAL,1066,4157,0
18348894,317,12,SPARK_POS_OK,0.263575,0.300995,0.326326,0.328572,NORMAL,317,11,SPARK_POS_OK,0.331570,0.335803,0.253413,0.004551,NORMAL,1066,4152,0
18409894,318,12,SPARK_POS_OK,0.263376,0.300867,0.326142,0.328431,NORMAL,318,11,SPARK_POS_OK,0.331399,0.335646,0.253223,0.004531,NORMAL,1066,4212,0
18470894,319,12,SPARK_POS_OK,0.263219,0.300716,0.325989,0.328241,NORMAL,319,11,SPARK_POS_OK,0.331234,0.335476,0.253085,0.004523,NORMAL,1066,4170,0
18533894,320,12,SPARK_POS_OK,0.263063,0.300580,0.325815,0.328078,NORMAL,320,11,SPARK_POS_OK,0.331081,0.335301,0.252938,0.004483,NORMAL,1066,4166,0
18596894,321,12,SPARK_POS_OK,0.262910,0.300453,0.325649,0.327910,NORMAL,321,11,SPARK_POS_OK,0.330916,0.335144,0.252804,0.004457,NORMAL,1066,4165,0
18660894,322,12,SPARK_POS_OK,0.262725,0.300310,0.325455,0.327746,NORMAL,322,11,SPARK_POS_OK,0.330752,0.334975,0.252672,0.004439,NORMAL,1066,4218,0
18724894,323,12,SPARK_POS_OK,0.262533,0.300167,0.325316,0.327597,NORMAL,323,11,SPARK_POS_OK,0.330575,0.334817,0.252523,0.004401,NORMAL,1066,4189,0
18788894,324,12,SPARK_POS_OK,0.262383,0.300050,0.325135,0.327423,NORMAL,324,11,SPARK_POS_OK,0.330424,0.334643,0.252364,0.004385,NORMAL,1066,4180,0
18853894,325,31,SPARK_POS_OK,0.262214,0.299909,0.324991,0.327273,NORMAL,325,30,SPARK_POS_OK,0.330254,0.334481,0.252185,0.004376,NORMAL,75,4155,0
18918894,326,60,SPARK_POS_OK,0.262047,0.299770,0.324814,0.327099,NORMAL,326,30,SPARK_POS_OK,0.330110,0.334322,0.252017,0.004348,NORMAL,922,4204,0
18983894,327,61,SPARK_POS_OK,0.261842,0.299639,0.324641,0.326945,NORMAL,327,61,SPARK_POS_OK,0.329948,0.334149,0.251907,0.004337,NORMAL,922,4242,0
19048894,328,70,SPARK_POS_OK,0.261689,0.299488,0.324500,0.326771,NORMAL,328,70,SPARK_POS_OK,0.329792,0.333999,0.251749,0.004326,NORMAL,923,4197,0
19113894,329,99,SPARK_POS_OK,0.261513,0.299374,0.324318,0.326604,NORMAL,329,71,SPARK_POS_OK,0.329626,0.333806,0.251604,0.004297,NORMAL,923,4211,0
19178894,330,101,SPARK_POS_OK,0.261340,0.299222,0.324141,0.326428,NORMAL,330,100,SPARK_POS_OK,0.329466,0.333648,0.251442,0.004287,NORMAL,925,4204,0
19242894,331,140,SPARK_POS_OK,0.261175,0.299098,0.323993,0.326282,NORMAL,331,100,SPARK_POS_OK,0.329297,0.333476,0.251278,0.004270,NORMAL,927,4203,0
19307894,332,141,SPARK_POS_OK,0.261015,0.298949,0.323822,0.326133,NORMAL,332,140,SPARK_POS_OK,0.329157,0.333326,0.251157,0.004254,NORMAL,931,4168,0
19370894,333,180,SPARK_POS_OK,0.260856,0.298833,0.323690,0.325951,NORMAL,333,180,SPARK_POS_OK,0.328997,0.333153,0.251002,0.004216,NORMAL,941,4190,0
19434894,334,220,SPARK_POS_OK,0.260683,0.298681,0.323502,0.325797,NORMAL,334,180,SPARK_POS_OK,0.328824,0.333012,0.250846,0.004238,NORMAL,949,4212,0
19496894,335,220,SPARK_POS_OK,0.260522,0.298552,0.323358,0.325621,NORMAL,335,220,SPARK_POS_OK,0.328658,0.332820,0.250706,0.004205,NORMAL,958,4157,0
19558894,336,11,SPARK_NEG_OK,0.260323,0.298428,0.323166,0.325444,SOFT_START,336,12,SPARK_NEG_OK,0.328495,0.332637,0.250533,0.004199,SOFT_START,964,4228,0
19619894,337,11,SPARK_NEG_OK,0.260170,0.298282,0.323004,0.325284,SOFT_START,337,11,SPARK_NEG_OK,0.328336,0.332501,0.250398,0.004202,SOFT_START,979,4179,0
19679894,338,40,SPARK_NEG_OK,0.259990,0.298154,0.322841,0.325130,SOFT_START,338,41,SPARK_NEG_OK,0.328166,0.332343,0.250236,0.004218,SOFT_START,999,4268,0
19738894,339,80,SPARK_NEG_OK,0.259811,0.298021,0.322664,0.324945,SOFT_START,339,41,SPARK_NEG_OK,0.328009,0.332161,0.250092,0.004217,SOFT_START,1010,4162,0
19797894,340,83,SPARK_NEG_OK,0.259663,0.297867,0.322503,0.324783,SOFT_START,340,80,SPARK_NEG_OK,0.327846,0.332021,0.249950,0.004224,SOFT_START,1021,4232,0
19855894,341,110,SPARK_NEG_OK,0.259460,0.297735,0.322354,0.324625,SOFT_START,341,80,SPARK_NEG_OK,0.327682,0.331861,0.249802,0.004217,SOFT_START,1033,4260,0
19912899,342,110,SPARK_NEG_OK,0.259243,0.297609,0.322173,0.324457,SOFT_START,342,110,SPARK_NEG_OK,0.327532,0.331677,0.249640,0.004229,SOFT_START,1046,4266,0
19969894,343,140,SPARK_NEG_OK,0.259082,0.297482,0.322000,0.324315,SOFT_START,343,110,SPARK_NEG_OK,0.327353,0.331500,0.249475,0.004230,SOFT_START,1059,4277,0
20025894,344,140,SPARK_NEG_OK,0.258904,0.297315,0.321835,0.324124,SOFT_START,344,140,SPARK_NEG_OK,0.327191,0.331320,0.249317,0.004232,SOFT_START,1074,4183,0
20079894,345,170,SPARK_NEG_OK,0.258722,0.297176,0.321677,0.323954,SOFT_START,345,170,SPARK_NEG_OK,0.327038,0.331159,0.249147,0.004234,SOFT_START,1104,4216,0
20134894,346,170,SPARK_NEG_OK,0.258553,0.297052,0.321513,0.323796,SOFT_START,346,171,SPARK_NEG_OK,0.326892,0.331004,0.249031,0.004253,SOFT_START,1105,4196,0
20186894,347,210,SPARK_NEG_OK,0.258387,0.296900,0.321335,0.323642,SOFT_START,347,210,SPARK_NEG_OK,0.326720,0.330830,0.248892,0.004249,SOFT_START,1133,4172,0
20239894,348,211,SPARK_NEG_OK,0.258192,0.296764,0.321176,0.323435,SOFT_START,348,209,SPARK_NEG_OK,0.326536,0.330669,0.248723,0.004274,SOFT_START,1135,4239,0
20291894,349,222,SPARK_NEG_OK,0.258071,0.296631,0.321015,0.323313,SOFT_START,349,220,SPARK_NEG_OK,0.326385,0.330530,0.248555,0.004287,SOFT_START,1161,4170,0
20343894,350,220,SPARK_NEG_OK,0.257885,0.296487,0.320839,0.323126,SOFT_START,350,221,SPARK_NEG_OK,0.326209,0.330343,0.248409,0.004294,SOFT_START,1162,4166,0
20393894,351,221,SPARK_NEG_OK,0.257689,0.296348,0.320674,0.322964,SOFT_START,351,220,SPARK_NEG_OK,0.326070,0.330162,0.248275,0.004317,SOFT_START,1189,4243,0
20444894,352,220,SPARK_NEG_OK,0.257528,0.296219,0.320523,0.322800,SOFT_START,352,220,SPARK_NEG_OK,0.325900,0.329998,0.248111,0.004302,SOFT_START,1190,4243,0
20493894,353,220,SPARK_NEG_OK,0.257332,0.296090,0.320352,0.322620,SOFT_START,353,221,SPARK_NEG_OK,0.325734,0.329834,0.247976,0.004354,SOFT_START,1216,4255,0
20542894,354,220,SPARK_NEG_OK,0.257193,0.295956,0.320160,0.322452,SOFT_START,354,220,SPARK_NEG_OK,0.325580,0.329660,0.247832,0.004338,SOFT_START,1217,4187,0
20591894,355,220,SPARK_NEG_OK,0.257006,0.295811,0.320002,0.322289,SOFT_START,355,222,SPARK_NEG_OK,0.325417,0.329492,0.247651,0.004367,SOFT_START,1229,4172,0
20639894,356,221,SPARK_NEG_OK,0.256846,0.295683,0.319828,0.322133,SOFT_START,356,220,SPARK_NEG_OK,0.325261,0.329328,0.247501,0.004339,SOFT_START,1243,4173,0
20687894,357,222,SPARK_NEG_OK,0.256677,0.295523,0.319645,0.321972,SOFT_START,357,218,SPARK_NEG_OK,0.325086,0.329163,0.247350,0.004399,SOFT_START,1252,4254,0
20735894,358,221,SPARK_NEG_OK,0.256487,0.295391,0.319504,0.321789,SOFT_START,358,220,SPARK_NEG_OK,0.324938,0.329013,0.247198,0.004386,SOFT_START,1264,4257,0
20782894,359,220,SPARK_NEG_OK,0.256309,0.295264,0.319327,0.321630,SOFT_START,359,220,SPARK_NEG_OK,0.324761,0.328816,0.247033,0.004420,SOFT_START,1271,4271,0
20829894,360,221,SPARK_NEG_OK,0.256101,0.295115,0.319163,0.321459,SOFT_START,360,220,SPARK_NEG_OK,0.324587,0.328664,0.246886,0.004438,SOFT_START,1281,4264,0
20875894,361,220,SPARK_NEG_OK,0.255911,0.294976,0.318999,0.321298,SOFT_START,361,220,SPARK_NEG_OK,0.324433,0.328503,0.246757,0.004437,SOFT_START,1281,4259,0
20922894,362,220,SPARK_NEG_OK,0.255751,0.294830,0.318828,0.321140,SOFT_START,362,220,SPARK_NEG_OK,0.324269,0.328309,0.246596,0.004463,SOFT_START,1296,4230,0
20968894,363,220,SPARK_NEG_OK,0.255544,0.294704,0.318658,0.320951,SOFT_START,363,221,SPARK_NEG_OK,0.324112,0.328156,0.246429,0.004478,SOFT_START,1297,4251,0
21013894,364,220,SPARK_NEG_OK,0.255378,0.294563,0.318509,0.320779,SOFT_START,364,220,SPARK_NEG_OK,0.323953,0.327988,0.246264,0.004461,SOFT_START,1313,4155,0
21059894,365,221,SPARK_NEG_OK,0.255207,0.294417,0.318331,0.320619,SOFT_START,365,220,SPARK_NEG_OK,0.323799,0.327819,0.246127,0.004505,SOFT_START,1314,4242,0
21105894,366,220,SPARK_NEG_OK,0.255017,0.294299,0.318168,0.320468,SOFT_START,366,220,SPARK_NEG_OK,0.323625,0.327657,0.245991,0.004532,SOFT_START,1320,4253,0
21150894,367,220,SPARK_NEG_OK,0.254884,0.294146,0.318006,0.320298,SOFT_START,367,220,SPARK_NEG_OK,0.323460,0.327480,0.245815,0.004519,SOFT_START,1328,4154,0
21195894,368,210,SPARK_NEG_OK,0.254679,0.294014,0.317810,0.320133,SOFT_START,368,221,SPARK_NEG_OK,0.323297,0.327337,0.245692,0.004536,SOFT_START,1330,4259,0
21240894,369,210,SPARK_NEG_OK,0.254503,0.293881,0.317658,0.319958,SOFT_START,369,210,SPARK_NEG_OK,0.323118,0.327151,0.245520,0.004557,SOFT_START,1335,4247,0
21285894,370,211,SPARK_NEG_OK,0.254315,0.293742,0.317503,0.319797,SOFT_START,370,208,SPARK_NEG_OK,0.322980,0.326989,0.245395,0.004555,SOFT_START,1335,4234,0
21330894,371,160,SPARK_NEG_OK,0.254148,0.293601,0.317314,0.319611,SOFT_START,371,161,SPARK_NEG_OK,0.322809,0.326823,0.245209,0.004575,SOFT_START,1333,4216,0
21375894,372,160,SPARK_NEG_OK,0.253989,0.293456,0.317158,0.319450,SOFT_START,372,160,SPARK_NEG_OK,0.322645,0.326669,0.245063,0.004587,SOFT_START,1335,4210,0
21420894,373,131,SPARK_NEG_OK,0.253763,0.293311,0.317000,0.319297,SOFT_START,373,161,SPARK_NEG_OK,0.322486,0.326477,0.244898,0.004608,SOFT_START,1331,4250,0
21465894,374,130,SPARK_NEG_OK,0.253583,0.293167,0.316819,0.319125,SOFT_START,374,130,SPARK_NEG_OK,0.322325,0.326326,0.244773,0.004621,SOFT_START,1331,4251,0
21510894,375,100,SPARK_NEG_OK,0.253405,0.293046,0.316660,0.318956,SOFT_START,375,130,SPARK_NEG_OK,0.322174,0.326158,0.244617,0.004613,SOFT_START,1326,4256,0
21555894,376,98,SPARK_NEG_OK,0.253240,0.292909,0.316489,0.318796,SOFT_START,376,101,SPARK_NEG_OK,0.321996,0.325991,0.244480,0.004627,SOFT_START,1324,4171,0
21601894,377,100,SPARK_NEG_OK,0.253084,0.292753,0.316325,0.318621,SOFT_START,377,100,SPARK_NEG_OK,0.321842,0.325828,0.244313,0.004628,SOFT_START,1325,4224,0
21646894,378,71,SPARK_NEG_OK,0.252927,0.292641,0.316149,0.318452,SOFT_START,378,70,SPARK_NEG_OK,0.321690,0.325672,0.244193,0.004615,SOFT_START,1314,4211,0
21692894,379,70,SPARK_NEG_OK,0.252713,0.292499,0.315984,0.318302,SOFT_START,379,71,SPARK_NEG_OK,0.321518,0.325484,0.243992,0.004643,SOFT_START,1316,4226,0
21738894,380,44,SPARK_NEG_OK,0.252571,0.292348,0.315827,0.318130,SOFT_START,380,40,SPARK_NEG_OK,0.321364,0.325325,0.243841,0.004649,SOFT_START,1302,4176,0
21784894,381,41,SPARK_NEG_OK,0.252412,0.292211,0.315657,0.317964,SOFT_START,381,41,SPARK_NEG_OK,0.321205,0.325164,0.243707,0.004649,SOFT_START,1303,4154,0
21830894,382,25,SPARK_NEG_OK,0.252232,0.292082,0.315511,0.317797,SOFT_START,382,40,SPARK_NEG_OK,0.321046,0.325002,0.243568,0.004656,SOFT_START,1294,4204,0
21877894,383,25,SPARK_NEG_OK,0.252066,0.291921,0.315345,0.317625,SOFT_START,383,25,SPARK_NEG_OK,0.320892,0.324832,0.243430,0.004650,SOFT_START,1287,4265,0
22066894,384,221,SPARK_POS_OK,0.251943,0.291840,0.315213,0.317532,NORMAL,385,220,SPARK_POS_OK,0.320773,0.324718,0.243290,0.004334,NORMAL,1260,4187,0
22114894,385,220,SPARK_POS_OK,0.251784,0.291713,0.315040,0.317362,NORMAL,386,220,SPARK_POS_OK,0.320596,0.324549,0.243174,0.004328,NORMAL,1254,4207,0
22163894,386,201,SPARK_POS_OK,0.251599,0.291560,0.314904,0.317187,NORMAL,387,200,SPARK_POS_OK,0.320437,0.324401,0.243008,0.004365,NORMAL,1237,4244,0
22211894,387,200,SPARK_POS_OK,0.251435,0.291431,0.314730,0.317033,NORMAL,388,200,SPARK_POS_OK,0.320293,0.324231,0.242876,0.004377,NORMAL,1238,4199,0
22260894,388,201,SPARK_POS_OK,0.251231,0.291277,0.314555,0.316856,NORMAL,389,200,SPARK_POS_OK,0.320131,0.324057,0.242704,0.004392,NORMAL,1220,4242,0
22310894,389,200,SPARK_POS_OK,0.251068,0.291168,0.314403,0.316711,NORMAL,390,200,SPARK_POS_OK,0.319960,0.323902,0.242588,0.004395,NORMAL,1221,4206,0
22359894,390,200,SPARK_POS_OK,0.250910,0.291023,0.314248,0.316540,NORMAL,391,201,SPARK_POS_OK,0.319814,0.323752,0.242434,0.004389,NORMAL,1212,4163,0
22409894,391,201,SPARK_POS_OK,0.250749,0.290879,0.314057,0.316370,NORMAL,392,200,SPARK_POS_OK,0.319641,0.323569,0.242269,0.004386,NORMAL,1204,4223,0
22459894,392,200,SPARK_POS_OK,0.250592,0.290762,0.313917,0.316202,NORMAL,393,200,SPARK_POS_OK,0.319495,0.323399,0.242125,0.004408,NORMAL,1195,4181,0
22510894,393,200,SPARK_POS_OK,0.250397,0.290606,0.313741,0.316054,NORMAL,394,200,SPARK_POS_OK,0.319328,0.323240,0.241963,0.004426,NORMAL,1189,4274,0
22560894,394,180,SPARK_POS_OK,0.250229,0.290475,0.313578,0.315884,NORMAL,395,200,SPARK_POS_OK,0.319164,0.323087,0.241815,0.004414,NORMAL,1182,4152,0
22611894,395,180,SPARK_POS_OK,0.250061,0.290341,0.313404,0.315724,NORMAL,396,180,SPARK_POS_OK,0.319005,0.322919,0.241695,0.004420,NORMAL,1176,4214,0
22663894,396,160,SPARK_POS_OK,0.249893,0.290205,0.313265,0.315571,NORMAL,397,180,SPARK_POS_OK,0.318839,0.322757,0.241555,0.004427,NORMAL,1168,4185,0
22714894,397,161,SPARK_POS_OK,0.249780,0.290083,0.313102,0.315400,NORMAL,398,160,SPARK_POS_OK,0.318682,0.322593,0.241399,0.004421,NORMAL,1162,4158,0
22766894,398,130,SPARK_POS_OK,0.249581,0.289944,0.312937,0.315239,NORMAL,399,160,SPARK_POS_OK,0.318528,0.322440,0.241244,0.004424,NORMAL,1153,4225,0
22819894,399,130,SPARK_POS_OK,0.249429,0.289794,0.312774,0.315065,NORMAL,400,131,SPARK_POS_OK,0.318367,0.322250,0.241141,0.004423,NORMAL,1144,4219,0
22872894,400,100,SPARK_POS_OK,0.249244,0.289667,0.312595,0.314922,NORMAL,401,130,SPARK_POS_OK,0.318213,0.322106,0.240951,0.004418,NORMAL,1133,4205,0
22925894,401,101,SPARK_POS_OK,0.249118,0.289536,0.312445,0.314752,NORMAL,402,100,SPARK_POS_OK,0.318076,0.321957,0.240791,0.004417,NORMAL,1123,4152,0
22979894,402,80,SPARK_POS_OK,0.248949,0.289407,0.312278,0.314587,NORMAL,403,100,SPARK_POS_OK,0.317907,0.321783,0.240674,0.004404,NORMAL,1112,4195,0
23033894,403,80,SPARK_POS_OK,0.248800,0.289295,0.312135,0.314437,NORMAL,404,80,SPARK_POS_OK,0.317755,0.321617,0.240517,0.004391,NORMAL,1102,4169,0
23088894,404,60,SPARK_POS_OK,0.248595,0.289129,0.311957,0.314260,NORMAL,405,81,SPARK_POS_OK,0.317606,0.321452,0.240378,0.004416,NORMAL,1092,4277,0
23144894,405,58,SPARK_POS_OK,0.248428,0.288990,0.311789,0.314125,NORMAL,406,61,SPARK_POS_OK,0.317430,0.321298,0.240227,0.004388,NORMAL,1083,4216,0
23200894,406,40,SPARK_POS_OK,0.248251,0.288861,0.311638,0.313944,NORMAL,407,41,SPARK_POS_OK,0.317273,0.321144,0.240096,0.004374,NORMAL,1063,4187,0
23257894,407,40,SPARK_POS_OK,0.248116,0.288737,0.311475,0.313795,NORMAL,408,41,SPARK_POS_OK,0.317137,0.320997,0.239952,0.004364,NORMAL,1064,4201,0
23314894,408,11,SPARK_POS_OK,0.247964,0.288606,0.311311,0.313634,NORMAL,409,11,SPARK_POS_OK,0.316954,0.320822,0.239804,0.004355,NORMAL,1041,4163,0
23372894,409,10,SPARK_POS_OK,0.247810,0.288470,0.311150,0.313477,NORMAL,410,11,SPARK_POS_OK,0.316814,0.320682,0.239655,0.004355,NORMAL,1041,4174,0
23431894,410,10,SPARK_POS_OK,0.247661,0.288334,0.310993,0.313318,NORMAL,411,11,SPARK_POS_OK,0.316665,0.320500,0.239493,0.004331,NORMAL,1041,4184,0
23491894,411,10,SPARK_POS_OK,0.247477,0.288216,0.310840,0.313165,NORMAL,412,11,SPARK_POS_OK,0.316504,0.320349,0.239373,0.004325,NORMAL,1041,4180,0
23551894,412,10,SPARK_POS_OK,0.247323,0.288085,0.310678,0.312979,NORMAL,413,11,SPARK_POS_OK,0.316359,0.320181,0.239230,0.004309,NORMAL,1041,4213,0
23612894,413,10,SPARK_POS_OK,0.247186,0.287938,0.310524,0.312859,NORMAL,414,11,SPARK_POS_OK,0.316190,0.320023,0.239092,0.004290,NORMAL,1041,4169,0
23673894,414,10,SPARK_POS_OK,0.246977,0.287805,0.310360,0.312675,NORMAL,415,11,SPARK_POS_OK,0.316062,0.319877,0.238933,0.004276,NORMAL,1041,4281,0
23736894,415,10,SPARK_POS_OK,0.246847,0.287696,0.310220,0.312530,NORMAL,416,11,SPARK_POS_OK,0.315886,0.319724,0.238806,0.004281,NORMAL,1041,4222,0
23799894,416,10,SPARK_POS_OK,0.246696,0.287563,0.310060,0.312370,NORMAL,417,11,SPARK_POS_OK,0.315736,0.319582,0.238660,0.004261,NORMAL,1041,4168,0
23862894,417,10,SPARK_POS_OK,0.246543,0.287425,0.309901,0.312217,NORMAL,418,11,SPARK_POS_OK,0.315586,0.319396,0.238518,0.004233,NORMAL,1041,4165,0
23926894,418,10,SPARK_POS_OK,0.246392,0.287284,0.309759,0.312039,NORMAL,419,11,SPARK_POS_OK,0.315444,0.319242,0.238376,0.004227,NORMAL,1041,4222,0
23991894,419,10,SPARK_POS_OK,0.246216,0.287178,0.309595,0.311915,NORMAL,420,11,SPARK_POS_OK,0.315268,0.319102,0.238240,0.004210,NORMAL,1041,4167,0
24056894,420,10,SPARK_POS_OK,0.246093,0.287024,0.309426,0.311732,NORMAL,421,11,SPARK_POS_OK,0.315140,0.318957,0.238119,0.004194,NORMAL,1041,4169,0
24122894,421,11,SPARK_POS_OK,0.245922,0.286901,0.309296,0.311624,NORMAL,422,11,SPARK_POS_OK,0.314963,0.318786,0.237943,0.004176,NORMAL,79,4187,0
24188894,422,11,SPARK_POS_OK,0.245771,0.286802,0.309132,0.311439,NORMAL,423,11,SPARK_POS_OK,0.314819,0.318629,0.237815,0.004169,NORMAL,908,4273,0
24255894,423,31,SPARK_POS_OK,0.245610,0.286642,0.308980,0.311305,NORMAL,424,31,SPARK_POS_OK,0.314688,0.318487,0.237675,0.004144,NORMAL,904,4240,0
24321894,424,40,SPARK_POS_OK,0.245454,0.286503,0.308827,0.311134,NORMAL,425,30,SPARK_POS_OK,0.314520,0.318360,0.237542,0.004140,NORMAL,903,4243,0
24388894,425,41,SPARK_POS_OK,0.245271,0.286397,0.308676,0.310984,NORMAL,426,41,SPARK_POS_OK,0.314375,0.318177,0.237422,0.004111,NORMAL,903,4200,0
24454894,426,70,SPARK_POS_OK,0.245160,0.286249,0.308500,0.310826,NORMAL,427,70,SPARK_POS_OK,0.314231,0.317993,0.237269,0.004092,NORMAL,900,4149,0
24521894,427,100,SPARK_POS_OK,0.244949,0.286124,0.308365,0.310673,NORMAL,428,71,SPARK_POS_OK,0.314102,0.317850,0.237157,0.004083,NORMAL,902,4243,0
24587894,428,100,SPARK_POS_OK,0.244780,0.286021,0.308192,0.310531,NORMAL,429,100,SPARK_POS_OK,0.313907,0.317709,0.236992,0.004075,NORMAL,905,4262,0
24653894,429,140,SPARK_POS_OK,0.244631,0.285877,0.308051,0.310360,NORMAL,430,101,SPARK_POS_OK,0.313776,0.317557,0.236880,0.004052,NORMAL,909,4190,0
24718894,430,140,SPARK_POS_OK,0.244453,0.285752,0.307893,0.310200,NORMAL,431,140,SPARK_POS_OK,0.313619,0.317401,0.236712,0.004063,NORMAL,915,4259,0
24783894,431,168,SPARK_POS_OK,0.244334,0.285628,0.307734,0.310048,NORMAL,432,171,SPARK_POS_OK,0.313465,0.317222,0.236582,0.004047,NORMAL,928,4215,0
24847894,432,191,SPARK_POS_OK,0.244145,0.285511,0.307571,0.309891,NORMAL,433,170,SPARK_POS_OK,0.313329,0.317090,0.236441,0.004058,NORMAL,935,4214,0
24911894,433,190,SPARK_POS_OK,0.244005,0.285369,0.307417,0.309735,NORMAL,434,190,SPARK_POS_OK,0.313167,0.316929,0.236317,0.004044,NORMAL,942,4167,0
24973894,434,210,SPARK_POS_OK,0.243829,0.285247,0.307274,0.309579,NORMAL,435,211,SPARK_POS_OK,0.313028,0.316777,0.236164,0.004048,NORMAL,954,4241,0
25036894,435,211,SPARK_POS_OK,0.243638,0.285100,0.307117,0.309419,NORMAL,436,210,SPARK_POS_OK,0.312868,0.316624,0.236022,0.004035,NORMAL,955,4227,0
25098894,436,230,SPARK_POS_OK,0.243536,0.284973,0.306952,0.309280,NORMAL,437,230,SPARK_POS_OK,0.312713,0.316477,0.235901,0.004037,NORMAL,968,4181,0
25279894,437,27,SPARK_NEG_OK,0.243410,0.284898,0.306835,0.309154,SOFT_START,439,30,SPARK_NEG_OK,0.312610,0.316348,0.235793,0.003853,SOFT_START,1006,4170,0
25339894,438,31,SPARK_NEG_OK,0.243244,0.284758,0.306692,0.308995,SOFT_START,440,30,SPARK_NEG_OK,0.312451,0.316194,0.235665,0.003845,SOFT_START,1007,4223,0
25397894,439,61,SPARK_NEG_OK,0.243085,0.284633,0.306507,0.308831,SOFT_START,441,60,SPARK_NEG_OK,0.312278,0.316048,0.235487,0.003866,SOFT_START,1026,4248,0
25455894,440,79,SPARK_NEG_OK,0.242942,0.284491,0.306376,0.308681,SOFT_START,442,60,SPARK_NEG_OK,0.312144,0.315886,0.235361,0.003877,SOFT_START,1035,4168,0
25513894,441,81,SPARK_NEG_OK,0.242774,0.284367,0.306208,0.308532,SOFT_START,443,80,SPARK_NEG_OK,0.311990,0.315723,0.235237,0.003896,SOFT_START,1046,4174,0
25569894,442,111,SPARK_NEG_OK,0.242639,0.284225,0.306057,0.308406,SOFT_START,444,82,SPARK_NEG_OK,0.311850,0.315569,0.235069,0.003919,SOFT_START,1056,4167,0
25626894,443,111,SPARK_NEG_OK,0.242458,0.284095,0.305898,0.308211,SOFT_START,445,110,SPARK_NEG_OK,0.311676,0.315419,0.234944,0.003915,SOFT_START,1069,4174,0
25681894,444,141,SPARK_NEG_OK,0.242298,0.283964,0.305749,0.308079,SOFT_START,446,111,SPARK_NEG_OK,0.311534,0.315236,0.234827,0.003957,SOFT_START,1081,4246,0
25736894,445,137,SPARK_NEG_OK,0.242157,0.283839,0.305581,0.307902,SOFT_START,447,140,SPARK_NEG_OK,0.311376,0.315092,0.234657,0.003968,SOFT_START,1095,4145,0
25790894,446,180,SPARK_NEG_OK,0.241993,0.283709,0.305410,0.307735,SOFT_START,448,140,SPARK_NEG_OK,0.311230,0.314946,0.234522,0.003969,SOFT_START,1108,4256,0
25843894,447,180,SPARK_NEG_OK,0.241839,0.283583,0.305283,0.307602,SOFT_START,449,181,SPARK_NEG_OK,0.311077,0.314785,0.234398,0.003995,SOFT_START,1124,4222,0
25896894,448,220,SPARK_NEG_OK,0.241687,0.283446,0.305122,0.307433,SOFT_START,450,179,SPARK_NEG_OK,0.310912,0.314633,0.234263,0.004035,SOFT_START,1137,4226,0
25948894,449,221,SPARK_NEG_OK,0.241552,0.283313,0.304958,0.307270,SOFT_START,451,220,SPARK_NEG_OK,0.310754,0.314475,0.234109,0.004036,SOFT_START,1152,4179,0
26000894,450,220,SPARK_NEG_OK,0.241355,0.283175,0.304803,0.307094,SOFT_START,452,268,SPARK_NEG_OK,0.310596,0.314305,0.233963,0.004069,SOFT_START,1165,4161,0
26051894,451,220,SPARK_NEG_OK,0.241221,0.283045,0.304646,0.306938,SOFT_START,453,221,SPARK_NEG_OK,0.310454,0.314141,0.233824,0.004046,SOFT_START,1180,4267,0
26101894,452,221,SPARK_NEG_OK,0.241018,0.282900,0.304496,0.306817,SOFT_START,454,220,SPARK_NEG_OK,0.310305,0.314004,0.233665,0.004085,SOFT_START,1192,4206,0
26151894,453,218,SPARK_NEG_OK,0.240875,0.282788,0.304329,0.306650,SOFT_START,455,220,SPARK_NEG_OK,0.310143,0.313835,0.233539,0.004078,SOFT_START,1206,4214,0
26200894,454,220,SPARK_NEG_OK,0.240688,0.282648,0.304160,0.306496,SOFT_START,456,220,SPARK_NEG_OK,0.310012,0.313680,0.233393,0.004114,SOFT_START,1218,4281,0
26249894,455,220,SPARK_NEG_OK,0.240511,0.282523,0.304000,0.306337,SOFT_START,457,220,SPARK_NEG_OK,0.309834,0.313514,0.233258,0.004125,SOFT_START,1231,4242,0
26297894,456,220,SPARK_NEG_OK,0.240330,0.282385,0.303854,0.306161,SOFT_START,458,221,SPARK_NEG_OK,0.309701,0.313366,0.233099,0.004139,SOFT_START,1242,4212,0
26345894,457,220,SPARK_NEG_OK,0.240209,0.282228,0.303696,0.306008,SOFT_START,459,220,SPARK_NEG_OK,0.309542,0.313210,0.232970,0.004177,SOFT_START,1255,4159,0
26392894,458,221,SPARK_NEG_OK,0.240078,0.282117,0.303548,0.305850,SOFT_START,460,221,SPARK_NEG_OK,0.309392,0.313063,0.232840,0.004176,SOFT_START,1264,4158,0
26439894,459,220,SPARK_NEG_OK,0.239910,0.281997,0.303388,0.305706,SOFT_START,461,218,SPARK_NEG_OK,0.309226,0.312895,0.232692,0.004209,SOFT_START,1275,4181,0
26486894,460,220,SPARK_NEG_OK,0.239752,0.281850,0.303227,0.305544,SOFT_START,462,221,SPARK_NEG_OK,0.309097,0.312724,0.232567,0.004241,SOFT_START,1275,4201,0
26533894,461,220,SPARK_NEG_OK,0.239585,0.281708,0.303050,0.305390,SOFT_START,463,220,SPARK_NEG_OK,0.308936,0.312569,0.232423,0.004239,SOFT_START,1290,4239,0
26579894,462,221,SPARK_NEG_OK,0.239377,0.281572,0.302912,0.305232,SOFT_START,464,220,SPARK_NEG_OK,0.308763,0.312415,0.232302,0.004249,SOFT_START,1291,4194,0
26625894,463,220,SPARK_NEG_OK,0.239255,0.281433,0.302743,0.305044,SOFT_START,465,220,SPARK_NEG_OK,0.308610,0.312266,0.232133,0.004289,SOFT_START,1305,4218,0
26671894,464,221,SPARK_NEG_OK,0.239088,0.281312,0.302593,0.304902,SOFT_START,466,220,SPARK_NEG_OK,0.308440,0.312108,0.231982,0.004290,SOFT_START,1306,4158,0
26717894,465,221,SPARK_NEG_OK,0.238974,0.281166,0.302429,0.304756,SOFT_START,467,218,SPARK_NEG_OK,0.308318,0.311950,0.231846,0.004302,SOFT_START,1312,4175,0
26762894,466,220,SPARK_NEG_OK,0.238776,0.281056,0.302278,0.304610,SOFT_START,468,220,SPARK_NEG_OK,0.308143,0.311779,0.231701,0.004311,SOFT_START,1321,4237,0
26808894,467,221,SPARK_NEG_OK,0.238606,0.280928,0.302129,0.304453,SOFT_START,469,221,SPARK_NEG_OK,0.308000,0.311638,0.231573,0.004339,SOFT_START,1320,4256,0
26853894,468,220,SPARK_NEG_OK,0.238449,0.280794,0.301973,0.304294,SOFT_START,470,220,SPARK_NEG_OK,0.307863,0.311469,0.231434,0.004324,SOFT_START,1334,4230,0
26897894,469,220,SPARK_NEG_OK,0.238295,0.280654,0.301797,0.304121,SOFT_START,471,220,SPARK_NEG_OK,0.307693,0.311331,0.231290,0.004362,SOFT_START,1334,4192,0
26942894,470,200,SPARK_NEG_OK,0.238133,0.280511,0.301649,0.303981,SOFT_START,472,201,SPARK_NEG_OK,0.307544,0.311139,0.231137,0.004382,SOFT_START,1337,4157,0
26987894,471,200,SPARK_NEG_OK,0.237994,0.280377,0.301474,0.303811,SOFT_START,473,200,SPARK_NEG_OK,0.307391,0.311008,0.230992,0.004389,SOFT_START,1339,4152,0
27032894,472,150,SPARK_NEG_OK,0.237804,0.280250,0.301327,0.303633,SOFT_START,474,200,SPARK_NEG_OK,0.307240,0.310833,0.230826,0.004396,SOFT_START,1336,4249,0
27077894,473,150,SPARK_NEG_OK,0.237676,0.280110,0.301155,0.303475,SOFT_START,475,151,SPARK_NEG_OK,0.307068,0.310662,0.230710,0.004426,SOFT_START,1337,4184,0
27122894,474,120,SPARK_NEG_OK,0.237524,0.279993,0.301018,0.303320,SOFT_START,476,150,SPARK_NEG_OK,0.306935,0.310528,0.230572,0.004422,SOFT_START,1333,4275,0
27167894,475,121,SPARK_NEG_OK,0.237339,0.279855,0.300857,0.303157,SOFT_START,477,120,SPARK_NEG_OK,0.306786,0.310375,0.230430,0.004435,SOFT_START,1332,4162,0
27212894,476,120,SPARK_NEG_OK,0.237194,0.279739,0.300708,0.303010,SOFT_START,478,121,SPARK_NEG_OK,0.306616,0.310200,0.230295,0.004436,SOFT_START,1332,4183,0
27257894,477,100,SPARK_NEG_OK,0.237052,0.279588,0.300550,0.302844,SOFT_START,479,100,SPARK_NEG_OK,0.306465,0.310048,0.230173,0.004442,SOFT_START,1323,4202,0
27302894,478,101,SPARK_NEG_OK,0.236890,0.279444,0.300393,0.302712,SOFT_START,480,101,SPARK_NEG_OK,0.306319,0.309893,0.230032,0.004466,SOFT_START,1325,4249,0
27348894,479,80,SPARK_NEG_OK,0.236716,0.279326,0.300222,0.302529,SOFT_START,481,100,SPARK_NEG_OK,0.306185,0.309737,0.229876,0.004470,SOFT_START,1319,4260,0
27393894,480,80,SPARK_NEG_OK,0.236563,0.279172,0.300086,0.302406,SOFT_START,482,80,SPARK_NEG_OK,0.306013,0.309591,0.229754,0.004476,SOFT_START,1316,4160,0
27439894,481,60,SPARK_NEG_OK,0.236393,0.279056,0.299922,0.302218,SOFT_START,483,81,SPARK_NEG_OK,0.305859,0.309443,0.229610,0.004498,SOFT_START,1309,4241,0
27485894,482,60,SPARK_NEG_OK,0.236264,0.278920,0.299768,0.302089,SOFT_START,484,60,SPARK_NEG_OK,0.305741,0.309281,0.229437,0.004495,SOFT_START,1305,4163,0
27531894,483,61,SPARK_NEG_OK,0.236121,0.278792,0.299601,0.301903,SOFT_START,485,61,SPARK_NEG_OK,0.305582,0.309130,0.229292,0.004489,SOFT_START,1305,4216,0
27578894,484,40,SPARK_NEG_OK,0.235947,0.278673,0.299451,0.301791,SOFT_START,486,40,SPARK_NEG_OK,0.305398,0.308973,0.229186,0.004495,SOFT_START,1289,4254,0
27624894,485,41,SPARK_NEG_OK,0.235777,0.278535,0.299291,0.301610,SOFT_START,487,40,SPARK_NEG_OK,0.305252,0.308834,0.229037,0.004504,SOFT_START,1291,4188,0
27671894,486,25,SPARK_NEG_OK,0.235615,0.278394,0.299131,0.301462,SOFT_START,488,25,SPARK_NEG_OK,0.305108,0.308660,0.228924,0.004501,SOFT_START,1274,4194,0
27718894,487,25,SPARK_NEG_OK,0.235474,0.278265,0.298988,0.301294,SOFT_START,489,25,SPARK_NEG_OK,0.304982,0.308506,0.228761,0.004511,SOFT_START,1275,4235,0
27766894,488,240,SPARK_POS_OK,0.235290,0.278150,0.298833,0.301164,NORMAL,490,25,SPARK_NEG_OK,0.304818,0.308329,0.228631,0.004478,SOFT_START,1275,4268,0
27814894,489,241,SPARK_POS_OK,0.235133,0.278005,0.298676,0.300983,NORMAL,491,240,SPARK_POS_OK,0.304641,0.308191,0.228487,0.004510,NORMAL,1262,4191,0
27861894,490,220,SPARK_POS_OK,0.235007,0.277883,0.298517,0.300829,NORMAL,492,241,SPARK_POS_OK,0.304506,0.308035,0.228362,0.004495,NORMAL,1253,4171,0
27910894,491,221,SPARK_POS_OK,0.234870,0.277768,0.298377,0.300696,NORMAL,493,220,SPARK_POS_OK,0.304349,0.307886,0.228217,0.004492,NORMAL,1246,4180,0
27958894,492,192,SPARK_POS_OK,0.234726,0.277621,0.298216,0.300523,NORMAL,494,221,SPARK_POS_OK,0.304200,0.307726,0.228056,0.004503,NORMAL,1237,4184,0
28007894,493,191,SPARK_POS_OK,0.234546,0.277506,0.298065,0.300381,NORMAL,495,190,SPARK_POS_OK,0.304072,0.307571,0.227940,0.004511,NORMAL,1228,4158,0
28056894,494,219,SPARK_POS_OK,0.234405,0.277355,0.297914,0.300225,NORMAL,496,190,SPARK_POS_OK,0.303894,0.307428,0.227815,0.004506,NORMAL,1228,4214,0
28105894,495,170,SPARK_POS_OK,0.234249,0.277219,0.297754,0.300079,NORMAL,497,170,SPARK_POS_OK,0.303753,0.307287,0.227692,0.004506,NORMAL,1208,4149,0
28155894,496,172,SPARK_POS_OK,0.234093,0.277112,0.297602,0.299907,NORMAL,498,168,SPARK_POS_OK,0.303609,0.307118,0.227537,0.004491,NORMAL,1208,4216,0
28206894,497,150,SPARK_POS_OK,0.233985,0.276974,0.297437,0.299759,NORMAL,499,151,SPARK_POS_OK,0.303454,0.306962,0.227410,0.004479,NORMAL,1186,4153,0
28256894,498,151,SPARK_POS_OK,0.233786,0.276864,0.297296,0.299616,NORMAL,500,150,SPARK_POS_OK,0.303313,0.306812,0.227254,0.004480,NORMAL,1187,4269,0
28308894,499,130,SPARK_POS_OK,0.233641,0.276716,0.297128,0.299439,NORMAL,501,130,SPARK_POS_OK,0.303178,0.306637,0.227132,0.004466,NORMAL,1167,4170,0
28359894,500,130,SPARK_POS_OK,0.233482,0.276599,0.297002,0.299293,NORMAL,502,131,SPARK_POS_OK,0.303010,0.306511,0.226998,0.004463,NORMAL,1167,4250,0
28411894,501,110,SPARK_POS_OK,0.233346,0.276440,0.296826,0.299152,NORMAL,503,110,SPARK_POS_OK,0.302870,0.306368,0.226858,0.004464,NORMAL,1147,4220,0
28464894,502,111,SPARK_POS_OK,0.233172,0.276349,0.296684,0.299016,NORMAL,504,110,SPARK_POS_OK,0.302728,0.306208,0.226721,0.004426,NORMAL,1148,4240,0
28517894,503,90,SPARK_POS_OK,0.233042,0.276198,0.296519,0.298835,NORMAL,505,91,SPARK_POS_OK,0.302579,0.306072,0.226577,0.004460,NORMAL,1127,4183,0
28570894,504,90,SPARK_POS_OK,0.232871,0.276086,0.296401,0.298697,NORMAL,506,90,SPARK_POS_OK,0.302422,0.305900,0.226443,0.004445,NORMAL,1127,4177,0
28624894,505,70,SPARK_POS_OK,0.232748,0.275949,0.296220,0.298554,NORMAL,507,71,SPARK_POS_OK,0.302281,0.305759,0.226333,0.004415,NORMAL,1103,4200,0
28679894,506,70,SPARK_POS_OK,0.232572,0.275822,0.296072,0.298413,NORMAL,508,70,SPARK_POS_OK,0.302138,0.305597,0.226177,0.004410,NORMAL,1104,4264,0
28734894,507,50,SPARK_POS_OK,0.232410,0.275686,0.295929,0.298222,NORMAL,509,50,SPARK_POS_OK,0.301995,0.305448,0.226059,0.004398,NORMAL,1081,4220,0
28790894,508,30,SPARK_POS_OK,0.232251,0.275572,0.295786,0.298082,NORMAL,510,52,SPARK_POS_OK,0.301843,0.305323,0.225919,0.004374,NORMAL,1070,4269,0
28847894,509,30,SPARK_POS_OK,0.232106,0.275454,0.295643,0.297915,NORMAL,511,30,SPARK_POS_OK,0.301710,0.305157,0.225785,0.004373,NORMAL,1060,4195,0
28904894,510,30,SPARK_POS_OK,0.231964,0.275316,0.295492,0.297777,NORMAL,512,29,SPARK_POS_OK,0.301558,0.305012,0.225647,0.004357,NORMAL,1060,4169,0
28962894,511,30,SPARK_POS_OK,0.231856,0.275185,0.295308,0.297637,NORMAL,513,29,SPARK_POS_OK,0.301403,0.304863,0.225520,0.004330,NORMAL,1060,4154,0
29020894,512,30,SPARK_POS_OK,0.231654,0.275059,0.295185,0.297471,NORMAL,514,29,SPARK_POS_OK,0.301254,0.304716,0.225407,0.004314,NORMAL,1060,4229,0
29079894,513,30,SPARK_POS_OK,0.231529,0.274943,0.295056,0.297354,NORMAL,515,29,SPARK_POS_OK,0.301126,0.304580,0.225252,0.004290,NORMAL,1060,4229,0
29140894,514,30,SPARK_POS_OK,0.231363,0.274788,0.294892,0.297194,NORMAL,516,29,SPARK_POS_OK,0.300963,0.304419,0.225143,0.004274,NORMAL,1060,4265,0
29201894,515,30,SPARK_POS_OK,0.231243,0.274711,0.294742,0.297049,NORMAL,517,29,SPARK_POS_OK,0.300827,0.304254,0.225012,0.004261,NORMAL,1060,4205,0
29263894,516,30,SPARK_POS_OK,0.231097,0.274554,0.294609,0.296904,NORMAL,518,29,SPARK_POS_OK,0.300693,0.304128,0.224861,0.004250,NORMAL,1060,4222,0
29325894,517,30,SPARK_POS_OK,0.230927,0.274445,0.294461,0.296749,NORMAL,519,29,SPARK_POS_OK,0.300543,0.303966,0.224741,0.004233,NORMAL,1060,4208,0
29388894,518,30,SPARK_POS_OK,0.230758,0.274323,0.294295,0.296606,NORMAL,520,29,SPARK_POS_OK,0.300400,0.303816,0.224615,0.004211,NORMAL,1060,4241,0
29452894,519,30,SPARK_POS_OK,0.230615,0.274199,0.294167,0.296452,NORMAL,521,29,SPARK_POS_OK,0.300251,0.303678,0.224453,0.004197,NORMAL,1060,4258,0
29516894,520,30,SPARK_POS_OK,0.230507,0.274069,0.293997,0.296320,NORMAL,522,29,SPARK_POS_OK,0.300115,0.303529,0.224360,0.004165,NORMAL,1060,4201,0
29580894,521,30,SPARK_POS_OK,0.230321,0.273947,0.293862,0.296165,NORMAL,523,29,SPARK_POS_OK,0.299969,0.303385,0.224254,0.004139,NORMAL,1060,4260,0
29645894,522,30,SPARK_POS_OK,0.230199,0.273811,0.293727,0.296023,NORMAL,524,29,SPARK_POS_OK,0.299823,0.303254,0.224081,0.004141,NORMAL,1060,4149,0
29711894,523,30,SPARK_POS_OK,0.230053,0.273697,0.293586,0.295871,NORMAL,525,29,SPARK_POS_OK,0.299684,0.303107,0.223966,0.004110,NORMAL,1060,4234,0
29778894,524,30,SPARK_POS_OK,0.229897,0.273574,0.293452,0.295721,NORMAL,526,29,SPARK_POS_OK,0.299528,0.302956,0.223830,0.004099,NORMAL,1060,4268,0
29844894,525,18,SPARK_POS_OK,0.229737,0.273463,0.293287,0.295576,NORMAL,527,29,SPARK_POS_OK,0.299393,0.302807,0.223719,0.004088,NORMAL,60,4253,0
29911894,526,25,SPARK_POS_OK,0.229585,0.273339,0.293126,0.295432,NORMAL,528,25,SPARK_POS_OK,0.299249,0.302660,0.223577,0.004053,NORMAL,898,4248,0
29978894,527,50,SPARK_POS_OK,0.229421,0.273230,0.292988,0.295304,NORMAL,529,50,SPARK_POS_OK,0.299109,0.302531,0.223458,0.004053,NORMAL,897,4250,0
30045894,528,71,SPARK_POS_OK,0.229278,0.273093,0.292861,0.295157,NORMAL,530,50,SPARK_POS_OK,0.298978,0.302386,0.223312,0.004017,NORMAL,898,4157,0
30111894,529,70,SPARK_POS_OK,0.229153,0.272971,0.292700,0.295006,NORMAL,531,70,SPARK_POS_OK,0.298840,0.302225,0.223220,0.004009,NORMAL,900,4156,0
30178894,530,81,SPARK_POS_OK,0.229019,0.272849,0.292549,0.294856,NORMAL,532,80,SPARK_POS_OK,0.298682,0.302095,0.223073,0.004002,NORMAL,900,4184,0
30244894,531,100,SPARK_POS_OK,0.228902,0.272712,0.292414,0.294721,NORMAL,533,80,SPARK_POS_OK,0.298550,0.301940,0.222973,0.003992,NORMAL,901,4190,0
30311894,532,101,SPARK_POS_OK,0.228704,0.272602,0.292251,0.294572,NORMAL,534,100,SPARK_POS_OK,0.298408,0.301793,0.222811,0.003995,NORMAL,904,4221,0
30377894,533,110,SPARK_POS_OK,0.228599,0.272483,0.292122,0.294414,NORMAL,535,109,SPARK_POS_OK,0.298252,0.301656,0.222685,0.003978,NORMAL,906,4176,0
30443894,534,111,SPARK_POS_OK,0.228439,0.272374,0.291972,0.294291,NORMAL,536,110,SPARK_POS_OK,0.298129,0.301508,0.222601,0.003955,NORMAL,910,4154,0
30508894,535,133,SPARK_POS_OK,0.228352,0.272239,0.291821,0.294130,NORMAL,537,130,SPARK_POS_OK,0.298014,0.301350,0.222435,0.003946,NORMAL,918,4209,0
30573894,536,150,SPARK_POS_OK,0.228187,0.272096,0.291667,0.293991,NORMAL,538,131,SPARK_POS_OK,0.297840,0.301217,0.222303,0.003926,NORMAL,923,4164,0
30638894,537,150,SPARK_POS_OK,0.228051,0.271986,0.291539,0.293838,NORMAL,539,150,SPARK_POS_OK,0.297694,0.301065,0.222185,0.003922,NORMAL,928,4197,0
30702894,538,170,SPARK_POS_OK,0.227895,0.271876,0.291392,0.293676,NORMAL,540,170,SPARK_POS_OK,0.297551,0.300927,0.222085,0.003925,NORMAL,935,4219,0
30766894,539,191,SPARK_POS_OK,0.227766,0.271754,0.291253,0.293556,NORMAL,541,170,SPARK_POS_OK,0.297411,0.300766,0.221926,0.003914,NORMAL,940,4203,0
30829894,540,190,SPARK_POS_OK,0.227587,0.271612,0.291104,0.293421,NORMAL,542,190,SPARK_POS_OK,0.297287,0.300643,0.221813,0.003932,NORMAL,947,4209,0
30892894,541,210,SPARK_POS_OK,0.227440,0.271500,0.290959,0.293264,NORMAL,543,191,SPARK_POS_OK,0.297142,0.300490,0.221671,0.003911,NORMAL,953,4255,0
30954894,542,208,SPARK_POS_OK,0.227338,0.271378,0.290822,0.293120,NORMAL,544,210,SPARK_POS_OK,0.296986,0.300339,0.221546,0.003938,NORMAL,962,4171,0
31015894,543,231,SPARK_POS_OK,0.227185,0.271240,0.290673,0.292974,NORMAL,545,230,SPARK_POS_OK,0.296851,0.300217,0.221401,0.003914,NORMAL,978,4189,0
31196894,544,30,SPARK_NEG_OK,0.227097,0.271150,0.290566,0.292864,SOFT_START,546,230,SPARK_NEG_WAIT,0.296770,0.300094,0.221338,0.003732,NORMAL,1001,4171,0
31255894,545,30,SPARK_NEG_OK,0.226947,0.271028,0.290417,0.292725,SOFT_START,547,30,SPARK_NEG_OK,0.296605,0.299956,0.221204,0.003748,SOFT_START,1010,4251,0
31314894,546,50,SPARK_NEG_OK,0.226794,0.270930,0.290271,0.292549,SOFT_START,548,52,SPARK_NEG_OK,0.296459,0.299803,0.221077,0.003765,SOFT_START,1026,4172,0
31372894,547,51,SPARK_NEG_OK,0.226651,0.270789,0.290137,0.292426,SOFT_START,549,50,SPARK_NEG_OK,0.296304,0.299659,0.220951,0.003769,SOFT_START,1027,4165,0
31430894,548,70,SPARK_NEG_OK,0.226499,0.270665,0.289981,0.292265,SOFT_START,550,71,SPARK_NEG_OK,0.296170,0.299509,0.220838,0.003793,SOFT_START,1046,4275,0
31487894,549,92,SPARK_NEG_OK,0.226340,0.270549,0.289845,0.292126,SOFT_START,551,70,SPARK_NEG_OK,0.296020,0.299360,0.220708,0.003812,SOFT_START,1047,4250,0
31543894,550,90,SPARK_NEG_OK,0.226200,0.270408,0.289685,0.291980,SOFT_START,552,90,SPARK_NEG_OK,0.295882,0.299222,0.220565,0.003802,SOFT_START,1068,4164,0
31599894,551,110,SPARK_NEG_OK,0.226091,0.270299,0.289539,0.291825,SOFT_START,553,90,SPARK_NEG_OK,0.295726,0.299069,0.220453,0.003850,SOFT_START,1079,4168,0
31654894,552,110,SPARK_NEG_OK,0.225908,0.270163,0.289385,0.291685,SOFT_START,554,110,SPARK_NEG_OK,0.295606,0.298903,0.220297,0.003855,SOFT_START,1091,4267,0
31708894,553,140,SPARK_NEG_OK,0.225781,0.270032,0.289235,0.291539,SOFT_START,555,111,SPARK_NEG_OK,0.295478,0.298759,0.220181,0.003861,SOFT_START,1101,4150,0
31762894,554,140,SPARK_NEG_OK,0.225610,0.269906,0.289096,0.291394,SOFT_START,556,141,SPARK_NEG_OK,0.295316,0.298629,0.220047,0.003878,SOFT_START,1113,4243,0
31815894,555,171,SPARK_NEG_OK,0.225482,0.269780,0.288954,0.291249,SOFT_START,557,140,SPARK_NEG_OK,0.295166,0.298475,0.219911,0.003871,SOFT_START,1123,4150,0
31868894,556,171,SPARK_NEG_OK,0.225355,0.269666,0.288804,0.291082,SOFT_START,558,170,SPARK_NEG_OK,0.295011,0.298344,0.219790,0.003916,SOFT_START,1136,4163,0
31921894,557,200,SPARK_NEG_OK,0.225197,0.269532,0.288649,0.290950,SOFT_START,559,170,SPARK_NEG_OK,0.294881,0.298182,0.219643,0.003912,SOFT_START,1147,4258,0
31972894,558,200,SPARK_NEG_OK,0.225049,0.269413,0.288505,0.290800,SOFT_START,560,201,SPARK_NEG_OK,0.294744,0.298035,0.219514,0.003937,SOFT_START,1161,4190,0
32023894,559,221,SPARK_NEG_OK,0.224914,0.269298,0.288351,0.290653,SOFT_START,561,200,SPARK_NEG_OK,0.294604,0.297887,0.219409,0.003936,SOFT_START,1173,4233,0
32074894,560,220,SPARK_NEG_OK,0.224741,0.269151,0.288212,0.290508,SOFT_START,562,220,SPARK_NEG_OK,0.294451,0.297741,0.219271,0.003975,SOFT_START,1188,4261,0
32124894,561,220,SPARK_NEG_OK,0.224595,0.269035,0.288078,0.290365,SOFT_START,563,221,SPARK_NEG_OK,0.294299,0.297612,0.219138,0.003971,SOFT_START,1198,4214,0
32173894,562,221,SPARK_NEG_OK,0.224457,0.268905,0.287915,0.290209,SOFT_START,564,220,SPARK_NEG_OK,0.294173,0.297448,0.219002,0.003996,SOFT_START,1212,4194,0
32222894,563,220,SPARK_NEG_OK,0.224333,0.268773,0.287753,0.290070,SOFT_START,565,220,SPARK_NEG_OK,0.294014,0.297293,0.218863,0.004018,SOFT_START,1222,4165,0
32271894,564,221,SPARK_NEG_OK,0.224152,0.268652,0.287609,0.289907,SOFT_START,566,220,SPARK_NEG_OK,0.293874,0.297136,0.218728,0.004048,SOFT_START,1234,4226,0
32320894,565,220,SPARK_NEG_OK,0.223991,0.268545,0.287464,0.289770,SOFT_START,567,220,SPARK_NEG_OK,0.293739,0.297003,0.218605,0.004079,SOFT_START,1234,4235,0
32368894,566,221,SPARK_NEG_OK,0.223832,0.268385,0.287308,0.289612,SOFT_START,568,220,SPARK_NEG_OK,0.293614,0.296863,0.218485,0.004086,SOFT_START,1253,4277,0
32415894,567,220,SPARK_NEG_OK,0.223702,0.268284,0.287163,0.289459,SOFT_START,569,220,SPARK_NEG_OK,0.293436,0.296702,0.218351,0.004088,SOFT_START,1254,4185,0
32463894,568,221,SPARK_NEG_OK,0.223539,0.268133,0.287021,0.289323,SOFT_START,570,221,SPARK_NEG_OK,0.293300,0.296544,0.218212,0.004120,SOFT_START,1272,4253,0
32510894,569,220,SPARK_NEG_OK,0.223411,0.268019,0.286869,0.289187,SOFT_START,571,220,SPARK_NEG_OK,0.293167,0.296410,0.218098,0.004146,SOFT_START,1274,4229,0
32556894,570,221,SPARK_NEG_OK,0.223255,0.267893,0.286747,0.289009,SOFT_START,572,220,SPARK_NEG_OK,0.293028,0.296266,0.217940,0.004130,SOFT_START,1291,4153,0
32602899,571,220,SPARK_NEG_OK,0.223058,0.267776,0.286589,0.288869,SOFT_START,573,220,SPARK_NEG_OK,0.292874,0.296096,0.217817,0.004131,SOFT_START,1292,4261,0
32649894,572,221,SPARK_NEG_OK,0.222954,0.267630,0.286425,0.288712,SOFT_START,574,220,SPARK_NEG_OK,0.292727,0.295968,0.217693,0.004166,SOFT_START,1298,4178,0
32695894,573,220,SPARK_NEG_OK,0.222799,0.267516,0.286273,0.288576,SOFT_START,575,221,SPARK_NEG_OK,0.292587,0.295816,0.217561,0.004193,SOFT_START,1307,4272,0
32740894,574,220,SPARK_NEG_OK,0.222647,0.267380,0.286134,0.288430,SOFT_START,576,220,SPARK_NEG_OK,0.292442,0.295664,0.217426,0.004186,SOFT_START,1311,4260,0
32786894,575,221,SPARK_NEG_OK,0.222493,0.267292,0.285975,0.288275,SOFT_START,577,221,SPARK_NEG_OK,0.292296,0.295509,0.217326,0.004219,SOFT_START,1319,4241,0
32831894,576,220,SPARK_NEG_OK,0.222350,0.267133,0.285851,0.288131,SOFT_START,578,220,SPARK_NEG_OK,0.292144,0.295361,0.217180,0.004225,SOFT_START,1319,4222,0
32876894,577,220,SPARK_NEG_OK,0.222221,0.267005,0.285688,0.287982,SOFT_START,579,220,SPARK_NEG_OK,0.292020,0.295215,0.217054,0.004244,SOFT_START,1329,4152,0
32922894,578,220,SPARK_NEG_OK,0.222057,0.266885,0.285548,0.287839,SOFT_START,580,221,SPARK_NEG_OK,0.291863,0.295089,0.216917,0.004260,SOFT_START,1330,4271,0
32966894,579,220,SPARK_NEG_OK,0.221909,0.266747,0.285396,0.287680,SOFT_START,581,222,SPARK_NEG_OK,0.291705,0.294917,0.216799,0.004268,SOFT_START,1340,4178,0
33011894,580,218,SPARK_NEG_OK,0.221742,0.266636,0.285243,0.287526,SOFT_START,582,220,SPARK_NEG_OK,0.291577,0.294788,0.216637,0.004264,SOFT_START,1341,4272,0
33056894,581,220,SPARK_NEG_OK,0.221614,0.266501,0.285096,0.287389,SOFT_START,583,221,SPARK_NEG_OK,0.291437,0.294625,0.216532,0.004283,SOFT_START,1345,4191,0
33100894,582,220,SPARK_NEG_OK,0.221465,0.266403,0.284954,0.287235,SOFT_START,584,220,SPARK_NEG_OK,0.291283,0.294502,0.216410,0.004286,SOFT_START,1350,4165,0
33144894,583,221,SPARK_NEG_OK,0.221301,0.266253,0.284796,0.287101,SOFT_START,585,220,SPARK_NEG_OK,0.291148,0.294346,0.216251,0.004312,SOFT_START,1350,4272,0
33189894,584,190,SPARK_NEG_OK,0.221170,0.266118,0.284649,0.286964,SOFT_START,586,191,SPARK_NEG_OK,0.291015,0.294184,0.216144,0.004308,SOFT_START,1350,4268,0
33233894,585,190,SPARK_NEG_OK,0.221002,0.266004,0.284517,0.286789,SOFT_START,587,190,SPARK_NEG_OK,0.290853,0.294049,0.216001,0.004324,SOFT_START,1351,4149,0
33278894,586,151,SPARK_NEG_OK,0.220879,0.265905,0.284364,0.286654,SOFT_START,588,148,SPARK_NEG_OK,0.290717,0.293917,0.215877,0.004335,SOFT_START,1348,4235,0
33322894,587,150,SPARK_NEG_OK,0.220745,0.265746,0.284213,0.286506,SOFT_START,589,151,SPARK_NEG_OK,0.290567,0.293751,0.215759,0.004358,SOFT_START,1348,4150,0
33367894,588,120,SPARK_NEG_OK,0.220601,0.265614,0.284064,0.286338,SOFT_START,590,150,SPARK_NEG_OK,0.290433,0.293602,0.215640,0.004355,SOFT_START,1344,4195,0
33411894,589,121,SPARK_NEG_OK,0.220446,0.265481,0.283915,0.286192,SOFT_START,591,120,SPARK_NEG_OK,0.290278,0.293458,0.215487,0.004383,SOFT_START,1342,4162,0
33456894,590,120,SPARK_NEG_OK,0.220311,0.265375,0.283771,0.286060,SOFT_START,592,120,SPARK_NEG_OK,0.290154,0.293300,0.215356,0.004362,SOFT_START,1342,4256,0
33501894,591,100,SPARK_NEG_OK,0.220193,0.265262,0.283619,0.285911,SOFT_START,593,100,SPARK_NEG_OK,0.290006,0.293163,0.215232,0.004379,SOFT_START,1332,4174,0
33546894,592,101,SPARK_NEG_OK,0.220030,0.265129,0.283490,0.285764,SOFT_START,594,100,SPARK_NEG_OK,0.289842,0.293036,0.215108,0.004383,SOFT_START,1333,4256,0
33591897,593,70,SPARK_NEG_OK,0.219882,0.265003,0.283312,0.285606,SOFT_START,595,71,SPARK_NEG_OK,0.289702,0.292856,0.214979,0.004376,SOFT_START,1321,4203,0
33637894,594,70,SPARK_NEG_OK,0.219761,0.264870,0.283198,0.285496,SOFT_START,596,70,SPARK_NEG_OK,0.289568,0.292754,0.214847,0.004398,SOFT_START,1322,4170,0
33683894,595,40,SPARK_NEG_OK,0.219610,0.264744,0.283063,0.285316,SOFT_START,597,71,SPARK_NEG_OK,0.289434,0.292597,0.214727,0.004407,SOFT_START,1313,4248,0
33728894,596,40,SPARK_NEG_OK,0.219433,0.264626,0.282887,0.285174,SOFT_START,598,40,SPARK_NEG_OK,0.289289,0.292440,0.214608,0.004391,SOFT_START,1307,4209,0
33774894,597,40,SPARK_NEG_OK,0.219309,0.264485,0.282733,0.285023,SOFT_START,599,40,SPARK_NEG_OK,0.289144,0.292300,0.214483,0.004406,SOFT_START,1307,4169,0
33821894,598,25,SPARK_NEG_OK,0.219164,0.264351,0.282601,0.284892,SOFT_START,600,25,SPARK_NEG_OK,0.289014,0.292149,0.214335,0.004404,SOFT_START,1288,4275,0
33867894,599,25,SPARK_NEG_OK,0.219021,0.264238,0.282480,0.284735,SOFT_START,601,25,SPARK_NEG_OK,0.288854,0.292002,0.214229,0.004414,SOFT_START,1289,4150,0
34010894,600,230,SPARK_POS_OK,0.218923,0.264163,0.282345,0.284633,NORMAL,602,230,SPARK_POS_OK,0.288753,0.291890,0.214139,0.004190,NORMAL,1262,4161,0
34058894,601,231,SPARK_POS_OK,0.218782,0.264018,0.282212,0.284500,NORMAL,603,230,SPARK_POS_OK,0.288612,0.291755,0.213985,0.004213,NORMAL,1256,4261,0
34106894,602,210,SPARK_POS_OK,0.218613,0.263910,0.282043,0.284339,NORMAL,604,231,SPARK_POS_OK,0.288465,0.291602,0.213870,0.004219,NORMAL,1246,4249,0
34154894,603,211,SPARK_POS_OK,0.218469,0.263771,0.281917,0.284205,NORMAL,605,210,SPARK_POS_OK,0.288340,0.291449,0.213743,0.004221,NORMAL,1239,4223,0
34203894,604,180,SPARK_POS_OK,0.218338,0.263654,0.281764,0.284051,NORMAL,606,210,SPARK_POS_OK,0.288197,0.291333,0.213640,0.004241,NORMAL,1228,4275,0
34253894,605,181,SPARK_POS_OK,0.218177,0.263538,0.281628,0.283921,NORMAL,607,180,SPARK_POS_OK,0.288049,0.291172,0.213487,0.004234,NORMAL,1218,4257,0
34302894,606,160,SPARK_POS_OK,0.218021,0.263417,0.281486,0.283763,NORMAL,608,180,SPARK_POS_OK,0.287909,0.291052,0.213367,0.004215,NORMAL,1206,4250,0
34352894,607,160,SPARK_POS_OK,0.217876,0.263287,0.281342,0.283609,NORMAL,609,161,SPARK_POS_OK,0.287775,0.290890,0.213259,0.004232,NORMAL,1196,4238,0
34403894,608,139,SPARK_POS_OK,0.217735,0.263172,0.281190,0.283456,NORMAL,610,160,SPARK_POS_OK,0.287634,0.290743,0.213134,0.004218,NORMAL,1185,4248,0
34454894,609,140,SPARK_POS_OK,0.217576,0.263045,0.281042,0.283325,NORMAL,611,140,SPARK_POS_OK,0.287511,0.290605,0.213003,0.004237,NORMAL,1175,4248,0
34506894,610,111,SPARK_POS_OK,0.217422,0.262920,0.280915,0.283189,NORMAL,612,141,SPARK_POS_OK,0.287367,0.290461,0.212876,0.004232,NORMAL,1164,4281,0
34558894,611,111,SPARK_POS_OK,0.217294,0.262783,0.280773,0.283042,NORMAL,613,110,SPARK_POS_OK,0.287238,0.290313,0.212728,0.004213,NORMAL,1154,4182,0
34610894,612,93,SPARK_POS_OK,0.217142,0.262676,0.280632,0.282895,NORMAL,614,110,SPARK_POS_OK,0.287075,0.290173,0.212619,0.004225,NORMAL,1143,4218,0
34663894,613,90,SPARK_POS_OK,0.216988,0.262541,0.280485,0.282761,NORMAL,615,90,SPARK_POS_OK,0.286961,0.290027,0.212517,0.004214,NORMAL,1133,4228,0
34716894,614,70,SPARK_POS_OK,0.216900,0.262419,0.280350,0.282615,NORMAL,616,91,SPARK_POS_OK,0.286793,0.289903,0.212389,0.004218,NORMAL,1121,4155,0
34771894,615,70,SPARK_POS_OK,0.216745,0.262302,0.280189,0.282466,NORMAL,617,70,SPARK_POS_OK,0.286642,0.289757,0.212252,0.004212,NORMAL,1110,4242,0
34825894,616,50,SPARK_POS_OK,0.216602,0.262186,0.280063,0.282335,NORMAL,618,70,SPARK_POS_OK,0.286527,0.289600,0.212144,0.004207,NORMAL,1097,4221,0
34880894,617,51,SPARK_POS_OK,0.216441,0.262075,0.279932,0.282189,NORMAL,619,50,SPARK_POS_OK,0.286393,0.289466,0.212007,0.004208,NORMAL,1086,4194,0
34936894,618,41,SPARK_POS_OK,0.216339,0.261927,0.279781,0.282065,NORMAL,620,50,SPARK_POS_OK,0.286254,0.289338,0.211874,0.004185,NORMAL,1074,4184,0
34993894,619,41,SPARK_POS_OK,0.216206,0.261821,0.279639,0.281928,NORMAL,621,40,SPARK_POS_OK,0.286109,0.289190,0.211774,0.004189,NORMAL,1063,4157,0
35050894,620,25,SPARK_POS_OK,0.216070,0.261710,0.279472,0.281775,NORMAL,622,40,SPARK_POS_OK,0.285965,0.289056,0.211664,0.004166,NORMAL,1051,4166,0
35107894,621,25,SPARK_POS_OK,0.215958,0.261584,0.279363,0.281629,NORMAL,623,25,SPARK_POS_OK,0.285835,0.288917,0.211526,0.004141,NORMAL,1041,4179,0
35166894,622,25,SPARK_POS_OK,0.215852,0.261455,0.279204,0.281507,NORMAL,624,25,SPARK_POS_OK,0.285711,0.288778,0.211395,0.004149,NORMAL,1041,4158,0
35225894,623,25,SPARK_POS_OK,0.215697,0.261327,0.279067,0.281358,NORMAL,625,25,SPARK_POS_OK,0.285565,0.288635,0.211287,0.004148,NORMAL,1041,4195,0
35285894,624,25,SPARK_POS_OK,0.215550,0.261243,0.278931,0.281226,NORMAL,626,25,SPARK_POS_OK,0.285427,0.288497,0.211173,0.004114,NORMAL,1041,4264,0
35346894,625,25,SPARK_POS_OK,0.215418,0.261111,0.278800,0.281084,NORMAL,627,25,SPARK_POS_OK,0.285299,0.288371,0.211050,0.004109,NORMAL,1041,4177,0
35408894,626,25,SPARK_POS_OK,0.215275,0.260987,0.278656,0.280928,NORMAL,628,25,SPARK_POS_OK,0.285162,0.288201,0.210943,0.004089,NORMAL,1041,4248,0
35470894,627,25,SPARK_POS_OK,0.215132,0.260886,0.278528,0.280776,NORMAL,629,25,SPARK_POS_OK,0.285029,0.288087,0.210811,0.004069,NORMAL,1041,4193,0
35533894,628,25,SPARK_POS_OK,0.215003,0.260752,0.278396,0.280665,NORMAL,630,25,SPARK_POS_OK,0.284912,0.287941,0.210699,0.004070,NORMAL,1041,4246,0
35596894,629,25,SPARK_POS_OK,0.214865,0.260631,0.278243,0.280498,NORMAL,631,25,SPARK_POS_OK,0.284758,0.287799,0.210554,0.004044,NORMAL,1041,4180,0
35661894,630,25,SPARK_POS_OK,0.214735,0.260540,0.278130,0.280364,NORMAL,632,25,SPARK_POS_OK,0.284619,0.287676,0.210446,0.004028,NORMAL,1041,4205,0
35725894,631,25,SPARK_POS_OK,0.214604,0.260414,0.277976,0.280225,NORMAL,633,25,SPARK_POS_OK,0.284517,0.287534,0.210330,0.004011,NORMAL,1041,4218,0
35791894,632,25,SPARK_POS_OK,0.214474,0.260302,0.277838,0.280115,NORMAL,634,25,SPARK_POS_OK,0.284371,0.287407,0.210209,0.003995,NORMAL,1041,4234,0
35857894,633,25,SPARK_POS_OK,0.214345,0.260153,0.277704,0.279993,NORMAL,635,25,SPARK_POS_OK,0.284230,0.287284,0.210090,0.003946,NORMAL,1041,4146,0
35924894,634,25,SPARK_POS_OK,0.214211,0.260050,0.277567,0.279846,NORMAL,636,25,SPARK_POS_OK,0.284095,0.287125,0.209954,0.003960,NORMAL,1041,4280,0
35991894,635,25,SPARK_POS_OK,0.214071,0.259948,0.277441,0.279709,NORMAL,637,25,SPARK_POS_OK,0.283967,0.286993,0.209862,0.003954,NORMAL,1041,4228,0
36058894,636,25,SPARK_POS_OK,0.213940,0.259834,0.277300,0.279558,NORMAL,638,25,SPARK_POS_OK,0.283840,0.286869,0.209744,0.003928,NORMAL,1041,4226,0
36126894,637,25,SPARK_POS_OK,0.213813,0.259711,0.277163,0.279440,NORMAL,639,25,SPARK_POS_OK,0.283694,0.286736,0.209639,0.003926,NORMAL,58,4181,0
36194894,638,51,SPARK_POS_OK,0.213678,0.259607,0.277023,0.279305,NORMAL,640,24,SPARK_POS_OK,0.283580,0.286590,0.209524,0.003909,NORMAL,885,4185,0
36261894,639,50,SPARK_POS_OK,0.213571,0.259478,0.276902,0.279151,NORMAL,641,51,SPARK_POS_OK,0.283444,0.286450,0.209401,0.003888,NORMAL,887,4159,0
36329894,640,90,SPARK_POS_OK,0.213425,0.259354,0.276760,0.279043,NORMAL,642,87,SPARK_POS_OK,0.283290,0.286326,0.209283,0.003871,NORMAL,888,4260,0
36396894,641,110,SPARK_POS_OK,0.213286,0.259249,0.276630,0.278909,NORMAL,643,90,SPARK_POS_OK,0.283167,0.286195,0.209165,0.003867,NORMAL,890,4243,0
36463894,642,110,SPARK_POS_OK,0.213141,0.259161,0.276492,0.278755,NORMAL,644,110,SPARK_POS_OK,0.283051,0.286046,0.209054,0.003871,NORMAL,893,4162,0
36530894,643,130,SPARK_POS_OK,0.213040,0.259021,0.276358,0.278633,NORMAL,645,131,SPARK_POS_OK,0.282916,0.285913,0.208927,0.003837,NORMAL,899,4263,0
36596894,644,140,SPARK_POS_OK,0.212910,0.258908,0.276224,0.278480,NORMAL,646,130,SPARK_POS_OK,0.282785,0.285773,0.208818,0.003849,NORMAL,904,4212,0
36662894,645,140,SPARK_POS_OK,0.212783,0.258812,0.276097,0.278357,NORMAL,647,140,SPARK_POS_OK,0.282663,0.285640,0.208700,0.003834,NORMAL,910,4189,0
36727894,646,161,SPARK_POS_OK,0.212635,0.258691,0.275950,0.278206,NORMAL,648,160,SPARK_POS_OK,0.282534,0.285493,0.208591,0.003829,NORMAL,921,4158,0
36792894,647,181,SPARK_POS_OK,0.212511,0.258538,0.275831,0.278075,NORMAL,649,160,SPARK_POS_OK,0.282395,0.285385,0.208468,0.003807,NORMAL,923,4164,0
36857894,648,180,SPARK_POS_OK,0.212399,0.258464,0.275685,0.277957,NORMAL,650,181,SPARK_POS_OK,0.282272,0.285238,0.208339,0.003818,NORMAL,933,4162,0
36921894,649,210,SPARK_POS_OK,0.212275,0.258311,0.275542,0.277777,NORMAL,651,180,SPARK_POS_OK,0.282136,0.285095,0.208236,0.003802,NORMAL,938,4234,0
36984894,650,213,SPARK_POS_OK,0.212106,0.258200,0.275386,0.277677,NORMAL,652,210,SPARK_POS_OK,0.281998,0.284982,0.208116,0.003808,NORMAL,945,4213,0
37047894,651,230,SPARK_POS_OK,0.212014,0.258107,0.275283,0.277527,NORMAL,653,230,SPARK_POS_OK,0.281868,0.284844,0.207992,0.003803,NORMAL,959,4228,0
37108894,652,12,SPARK_NEG_OK,0.211840,0.257963,0.275127,0.277390,SOFT_START,654,230,SPARK_POS_OK,0.281720,0.284698,0.207887,0.003822,NORMAL,964,4278,0
37169894,653,11,SPARK_NEG_OK,0.211723,0.257869,0.275005,0.277253,SOFT_START,655,11,SPARK_NEG_OK,0.281601,0.284568,0.207760,0.003831,SOFT_START,979,4191,0
37230894,654,30,SPARK_NEG_OK,0.211592,0.257738,0.274858,0.277121,SOFT_START,656,11,SPARK_NEG_OK,0.281478,0.284427,0.207640,0.003812,SOFT_START,988,4244,0
37290894,655,30,SPARK_NEG_OK,0.211459,0.257616,0.274735,0.276963,SOFT_START,657,31,SPARK_NEG_OK,0.281326,0.284291,0.207534,0.003821,SOFT_START,998,4178,0
37349894,656,50,SPARK_NEG_OK,0.211344,0.257522,0.274568,0.276856,SOFT_START,658,50,SPARK_NEG_OK,0.281195,0.284154,0.207424,0.003799,SOFT_START,1016,4186,0
37408894,657,50,SPARK_NEG_OK,0.211175,0.257400,0.274474,0.276735,SOFT_START,659,50,SPARK_NEG_OK,0.281072,0.284021,0.207309,0.003795,SOFT_START,1017,4264,0
37466894,658,71,SPARK_NEG_OK,0.211040,0.257265,0.274315,0.276607,SOFT_START,660,70,SPARK_NEG_OK,0.280935,0.283883,0.207184,0.003827,SOFT_START,1034,4247,0
37524894,659,91,SPARK_NEG_OK,0.210924,0.257138,0.274191,0.276452,SOFT_START,661,70,SPARK_NEG_OK,0.280807,0.283751,0.207044,0.003825,SOFT_START,1045,4277,0
37580894,660,91,SPARK_NEG_OK,0.210773,0.257016,0.274035,0.276287,SOFT_START,662,90,SPARK_NEG_OK,0.280664,0.283605,0.206951,0.003846,SOFT_START,1056,4156,0
37637894,661,110,SPARK_NEG_OK,0.210651,0.256919,0.273908,0.276170,SOFT_START,663,90,SPARK_NEG_OK,0.280513,0.283462,0.206825,0.003834,SOFT_START,1067,4200,0
37692894,662,108,SPARK_NEG_OK,0.210524,0.256817,0.273778,0.276014,SOFT_START,664,110,SPARK_NEG_OK,0.280396,0.283341,0.206679,0.003850,SOFT_START,1080,4268,0
37747894,663,140,SPARK_NEG_OK,0.210339,0.256675,0.273625,0.275890,SOFT_START,665,110,SPARK_NEG_OK,0.280262,0.283211,0.206587,0.003878,SOFT_START,1092,4246,0
37801894,664,140,SPARK_NEG_OK,0.210227,0.256556,0.273506,0.275755,SOFT_START,666,141,SPARK_NEG_OK,0.280131,0.283070,0.206459,0.003862,SOFT_START,1106,4152,0
37855894,665,160,SPARK_NEG_OK,0.210127,0.256458,0.273353,0.275602,SOFT_START,667,141,SPARK_NEG_OK,0.280004,0.282941,0.206351,0.003883,SOFT_START,1117,4169,0
37908894,666,161,SPARK_NEG_OK,0.210000,0.256337,0.273227,0.275472,SOFT_START,668,160,SPARK_NEG_OK,0.279878,0.282794,0.206226,0.003880,SOFT_START,1130,4168,0
37961894,667,200,SPARK_NEG_OK,0.209829,0.256199,0.273078,0.275325,SOFT_START,669,161,SPARK_NEG_OK,0.279713,0.282645,0.206130,0.003921,SOFT_START,1141,4248,0
38013894,668,200,SPARK_NEG_OK,0.209727,0.256077,0.272948,0.275184,SOFT_START,670,200,SPARK_NEG_OK,0.279604,0.282503,0.205991,0.003906,SOFT_START,1155,4189,0
38064894,669,220,SPARK_NEG_OK,0.209596,0.255956,0.272787,0.275062,SOFT_START,671,200,SPARK_NEG_OK,0.279452,0.282353,0.205868,0.003920,SOFT_START,1167,4239,0
38115894,670,221,SPARK_NEG_OK,0.209432,0.255836,0.272673,0.274916,SOFT_START,672,220,SPARK_NEG_OK,0.279309,0.282218,0.205765,0.003961,SOFT_START,1182,4272,0
38165894,671,220,SPARK_NEG_OK,0.209312,0.255718,0.272501,0.274780,SOFT_START,673,220,SPARK_NEG_OK,0.279174,0.282106,0.205613,0.003957,SOFT_START,1194,4180,0
38214894,672,220,SPARK_NEG_OK,0.209182,0.255595,0.272353,0.274642,SOFT_START,674,221,SPARK_NEG_OK,0.279053,0.281949,0.205492,0.003965,SOFT_START,1210,4193,0
38264894,673,220,SPARK_NEG_OK,0.209062,0.255480,0.272245,0.274504,SOFT_START,675,220,SPARK_NEG_OK,0.278916,0.281812,0.205392,0.003965,SOFT_START,1221,4153,0
38312894,674,220,SPARK_NEG_OK,0.208949,0.255389,0.272102,0.274378,SOFT_START,676,221,SPARK_NEG_OK,0.278790,0.281681,0.205267,0.003991,SOFT_START,1236,4161,0
38360894,675,220,SPARK_NEG_OK,0.208792,0.255247,0.271955,0.274234,SOFT_START,677,220,SPARK_NEG_OK,0.278662,0.281528,0.205157,0.003999,SOFT_START,1245,4251,0
38408894,676,220,SPARK_NEG_OK,0.208645,0.255117,0.271837,0.274081,SOFT_START,678,221,SPARK_NEG_OK,0.278516,0.281422,0.205005,0.004001,SOFT_START,1257,4259,0
38456894,677,223,SPARK_NEG_OK,0.208504,0.254996,0.271699,0.273960,SOFT_START,679,220,SPARK_NEG_OK,0.278376,0.281266,0.204897,0.004032,SOFT_START,1257,4214,0
38503894,678,220,SPARK_NEG_OK,0.208384,0.254872,0.271536,0.273805,SOFT_START,680,221,SPARK_NEG_OK,0.278223,0.281140,0.204788,0.004033,SOFT_START,1274,4237,0
38550894,679,220,SPARK_NEG_OK,0.208232,0.254766,0.271414,0.273679,SOFT_START,681,220,SPARK_NEG_OK,0.278096,0.281001,0.204660,0.004051,SOFT_START,1275,4257,0
38596894,680,220,SPARK_NEG_OK,0.208101,0.254632,0.271282,0.273514,SOFT_START,682,221,SPARK_NEG_OK,0.277963,0.280815,0.204550,0.004060,SOFT_START,1291,4202,0
38643894,681,221,SPARK_NEG_OK,0.207956,0.254499,0.271150,0.273395,SOFT_START,683,220,SPARK_NEG_OK,0.277845,0.280711,0.204415,0.004084,SOFT_START,1293,4195,0
38689894,682,221,SPARK_NEG_OK,0.207830,0.254421,0.270997,0.273231,SOFT_START,684,223,SPARK_NEG_OK,0.277692,0.280572,0.204302,0.004092,SOFT_START,1309,4227,0
38734894,683,220,SPARK_NEG_OK,0.207710,0.254275,0.270846,0.273100,SOFT_START,685,220,SPARK_NEG_OK,0.277570,0.280423,0.204185,0.004102,SOFT_START,1310,4175,0
38780894,684,221,SPARK_NEG_OK,0.207548,0.254160,0.270709,0.272974,SOFT_START,686,217,SPARK_NEG_OK,0.277417,0.280293,0.204057,0.004109,SOFT_START,1317,4218,0
38825894,685,220,SPARK_NEG_OK,0.207415,0.254024,0.270590,0.272829,SOFT_START,687,221,SPARK_NEG_OK,0.277311,0.280139,0.203938,0.004123,SOFT_START,1326,4193,0
38870894,686,222,SPARK_NEG_OK,0.207291,0.253907,0.270428,0.272685,SOFT_START,688,220,SPARK_NEG_OK,0.277144,0.280020,0.203822,0.004132,SOFT_START,1326,4165,0
38915894,687,221,SPARK_NEG_OK,0.207150,0.253793,0.270294,0.272558,SOFT_START,689,220,SPARK_NEG_OK,0.277017,0.279866,0.203716,0.004162,SOFT_START,1337,4224,0
38960894,688,220,SPARK_NEG_OK,0.207025,0.253657,0.270154,0.272431,SOFT_START,690,220,SPARK_NEG_OK,0.276886,0.279739,0.203577,0.004151,SOFT_START,1338,4199,0
39005894,689,220,SPARK_NEG_OK,0.206887,0.253541,0.270010,0.272270,SOFT_START,691,221,SPARK_NEG_OK,0.276770,0.279604,0.203462,0.004165,SOFT_START,1346,4177,0
39049894,690,221,SPARK_NEG_OK,0.206779,0.253445,0.269864,0.272130,SOFT_START,692,221,SPARK_NEG_OK,0.276610,0.279459,0.203337,0.004172,SOFT_START,1348,4204,0
39093894,691,220,SPARK_NEG_OK,0.206625,0.253299,0.269744,0.271980,SOFT_START,693,220,SPARK_NEG_OK,0.276486,0.279325,0.203225,0.004199,SOFT_START,1351,4219,0
39138894,692,220,SPARK_NEG_OK,0.206511,0.253202,0.269613,0.271854,SOFT_START,694,220,SPARK_NEG_OK,0.276347,0.279167,0.203116,0.004188,SOFT_START,1358,4187,0
39182894,693,221,SPARK_NEG_OK,0.206396,0.253100,0.269476,0.271717,SOFT_START,695,220,SPARK_NEG_OK,0.276213,0.279039,0.203003,0.004205,SOFT_START,1358,4154,0
39226894,694,220,SPARK_NEG_OK,0.206258,0.252935,0.269325,0.271574,SOFT_START,696,220,SPARK_NEG_OK,0.276089,0.278912,0.202873,0.004227,SOFT_START,1364,4179,0
39270894,695,220,SPARK_NEG_OK,0.206105,0.252839,0.269194,0.271446,SOFT_START,697,221,SPARK_NEG_OK,0.275929,0.278774,0.202767,0.004229,SOFT_START,1366,4254,0
39314894,696,181,SPARK_NEG_OK,0.205987,0.252725,0.269056,0.271299,SOFT_START,698,180,SPARK_NEG_OK,0.275809,0.278629,0.202613,0.004247,SOFT_START,1365,4224,0
39357894,697,180,SPARK_NEG_OK,0.205838,0.252599,0.268899,0.271145,SOFT_START,699,181,SPARK_NEG_OK,0.275657,0.278487,0.202522,0.004249,SOFT_START,1367,4206,0
39401894,698,140,SPARK_NEG_OK,0.205708,0.252507,0.268775,0.271013,SOFT_START,700,180,SPARK_NEG_OK,0.275525,0.278352,0.202399,0.004258,SOFT_START,1363,4240,0
39445894,699,140,SPARK_NEG_OK,0.205578,0.252335,0.268633,0.270877,SOFT_START,701,140,SPARK_NEG_OK,0.275407,0.278224,0.202285,0.004265,SOFT_START,1362,4214,0
39489894,700,140,SPARK_NEG_OK,0.205450,0.252241,0.268512,0.270755,SOFT_START,702,141,SPARK_NEG_OK,0.275276,0.278093,0.202169,0.004291,SOFT_START,1362,4190,0
39534894,701,100,SPARK_NEG_OK,0.205328,0.252104,0.268357,0.270594,SOFT_START,703,100,SPARK_NEG_OK,0.275124,0.277960,0.202031,0.004262,SOFT_START,1350,4195,0
39578894,702,100,SPARK_NEG_OK,0.205196,0.252012,0.268247,0.270457,SOFT_START,704,102,SPARK_NEG_OK,0.275012,0.277813,0.201943,0.004296,SOFT_START,1351,4207,0
39623894,703,70,SPARK_NEG_OK,0.205076,0.251896,0.268098,0.270344,SOFT_START,705,71,SPARK_NEG_OK,0.274871,0.277678,0.201812,0.004296,SOFT_START,1337,4182,0
39668894,704,70,SPARK_NEG_OK,0.204934,0.251762,0.267957,0.270193,SOFT_START,706,70,SPARK_NEG_OK,0.274735,0.277537,0.201693,0.004286,SOFT_START,1339,4177,0
39713894,705,41,SPARK_NEG_OK,0.204822,0.251641,0.267810,0.270061,SOFT_START,707,70,SPARK_NEG_OK,0.274608,0.277390,0.201574,0.004303,SOFT_START,1330,4167,0
39758894,706,40,SPARK_NEG_OK,0.204682,0.251549,0.267684,0.269920,SOFT_START,708,41,SPARK_NEG_OK,0.274457,0.277274,0.201457,0.004306,SOFT_START,1324,4195,0
39804894,707,40,SPARK_NEG_OK,0.204546,0.251395,0.267525,0.269762,SOFT_START,709,40,SPARK_NEG_OK,0.274332,0.277125,0.201312,0.004304,SOFT_START,1324,4223,0
39943894,708,211,SPARK_POS_OK,0.204431,0.251308,0.267450,0.269685,NORMAL,710,210,SPARK_POS_OK,0.274249,0.277008,0.201241,0.004118,NORMAL,1290,4283,0
39989894,709,210,SPARK_POS_OK,0.204310,0.251195,0.267299,0.269525,NORMAL,711,211,SPARK_POS_OK,0.274115,0.276889,0.201128,0.004120,NORMAL,1283,4204,0
40037894,710,170,SPARK_POS_OK,0.204191,0.251074,0.267169,0.269407,NORMAL,712,210,SPARK_POS_OK,0.273974,0.276754,0.201014,0.004125,NORMAL,1269,4236,0
40084894,711,170,SPARK_POS_OK,0.204046,0.250964,0.267050,0.269277,NORMAL,713,171,SPARK_POS_OK,0.273856,0.276611,0.200901,0.004141,NORMAL,1256,4229,0
40133894,712,131,SPARK_POS_OK,0.203942,0.250819,0.266888,0.269134,NORMAL,714,170,SPARK_POS_OK,0.273709,0.276471,0.200775,0.004130,NORMAL,1242,4169,0
40182894,713,130,SPARK_POS_OK,0.203801,0.250719,0.266763,0.268992,NORMAL,715,131,SPARK_POS_OK,0.273576,0.276337,0.200660,0.004146,NORMAL,1229,4168,0
40231894,714,101,SPARK_POS_OK,0.203679,0.250602,0.266610,0.268854,NORMAL,716,130,SPARK_POS_OK,0.273449,0.276200,0.200556,0.004156,NORMAL,1214,4213,0
40281894,715,100,SPARK_POS_OK,0.203544,0.250499,0.266479,0.268734,NORMAL,717,100,SPARK_POS_OK,0.273300,0.276085,0.200437,0.004150,NORMAL,1201,4153,0
40332894,716,60,SPARK_POS_OK,0.203425,0.250357,0.266336,0.268586,NORMAL,718,101,SPARK_POS_OK,0.273175,0.275934,0.200318,0.004133,NORMAL,1187,4237,0
40383894,717,61,SPARK_POS_OK,0.203306,0.250285,0.266254,0.268469,NORMAL,719,60,SPARK_POS_OK,0.273046,0.275812,0.200194,0.004146,NORMAL,1173,4155,0
40435894,718,42,SPARK_POS_OK,0.203170,0.250174,0.266094,0.268306,NORMAL,720,60,SPARK_POS_OK,0.272930,0.275672,0.200098,0.004148,NORMAL,1156,4268,0
40487894,719,40,SPARK_POS_OK,0.203015,0.250028,0.265937,0.268164,NORMAL,721,41,SPARK_POS_OK,0.272765,0.275537,0.199981,0.004146,NORMAL,1142,4276,0
40540894,720,25,SPARK_POS_OK,0.202909,0.249906,0.265791,0.268040,NORMAL,722,40,SPARK_POS_OK,0.272655,0.275398,0.199848,0.004122,NORMAL,1125,4148,0
40594894,721,25,SPARK_POS_OK,0.202784,0.249798,0.265670,0.267910,NORMAL,723,25,SPARK_POS_OK,0.272522,0.275282,0.199748,0.004113,NORMAL,1110,4255,0
40649894,722,25,SPARK_POS_OK,0.202652,0.249678,0.265548,0.267772,NORMAL,724,25,SPARK_POS_OK,0.272388,0.275137,0.199640,0.004106,NORMAL,1110,4212,0
40705894,723,25,SPARK_POS_OK,0.202504,0.249600,0.265426,0.267656,NORMAL,725,25,SPARK_POS_OK,0.272263,0.275016,0.199504,0.004092,NORMAL,1110,4270,0
40761894,724,25,SPARK_POS_OK,0.202400,0.249467,0.265272,0.267516,NORMAL,726,25,SPARK_POS_OK,0.272152,0.274868,0.199398,0.004108,NORMAL,1110,4240,0
40818894,725,25,SPARK_POS_OK,0.202259,0.249345,0.265149,0.267385,NORMAL,727,25,SPARK_POS_OK,0.272015,0.274736,0.199280,0.004070,NORMAL,1110,4227,0
40876894,726,25,SPARK_POS_OK,0.202144,0.249227,0.265021,0.267236,NORMAL,728,25,SPARK_POS_OK,0.271885,0.274595,0.199181,0.004079,NORMAL,1110,4159,0
40934894,727,25,SPARK_POS_OK,0.202006,0.249094,0.264886,0.267131,NORMAL,729,25,SPARK_POS_OK,0.271756,0.274480,0.199078,0.004046,NORMAL,1110,4272,0
40994894,728,25,SPARK_POS_OK,0.201861,0.249012,0.264758,0.266984,NORMAL,730,25,SPARK_POS_OK,0.271606,0.274345,0.198958,0.004050,NORMAL,1110,4247,0
41053894,729,25,SPARK_POS_OK,0.201721,0.248911,0.264663,0.266860,NORMAL,731,25,SPARK_POS_OK,0.271502,0.274233,0.198841,0.004031,NORMAL,1110,4273,0
41114894,730,25,SPARK_POS_OK,0.201633,0.248787,0.264506,0.266732,NORMAL,732,25,SPARK_POS_OK,0.271386,0.274118,0.198747,0.004001,NORMAL,1110,4169,0
41176894,731,25,SPARK_POS_OK,0.201508,0.248668,0.264362,0.266598,NORMAL,733,25,SPARK_POS_OK,0.271242,0.273969,0.198644,0.004007,NORMAL,1110,4191,0
41238894,732,25,SPARK_POS_OK,0.201376,0.248557,0.264245,0.266468,NORMAL,734,25,SPARK_POS_OK,0.271113,0.273847,0.198520,0.003988,NORMAL,1110,4256,0
41301894,733,30,SPARK_POS_OK,0.201266,0.248428,0.264118,0.266318,NORMAL,735,30,SPARK_POS_OK,0.271019,0.273695,0.198419,0.003971,NORMAL,84,4205,0
41363894,734,30,SPARK_POS_OK,0.201120,0.248331,0.263957,0.266209,NORMAL,736,30,SPARK_POS_OK,0.270879,0.273562,0.198269,0.003963,NORMAL,957,4204,0
41426894,735,70,SPARK_POS_OK,0.201012,0.248233,0.263847,0.266065,NORMAL,737,71,SPARK_POS_OK,0.270754,0.273460,0.198188,0.003932,NORMAL,952,4159,0
41489894,736,121,SPARK_POS_OK,0.200889,0.248101,0.263735,0.265954,NORMAL,738,70,SPARK_POS_OK,0.270635,0.273333,0.198066,0.003924,NORMAL,951,4218,0
41552894,737,120,SPARK_POS_OK,0.200770,0.248005,0.263599,0.265783,NORMAL,739,120,SPARK_POS_OK,0.270470,0.273159,0.197971,0.003912,NORMAL,952,4164,0
41615894,738,160,SPARK_POS_OK,0.200683,0.247887,0.263482,0.265682,NORMAL,740,161,SPARK_POS_OK,0.270364,0.273066,0.197852,0.003889,NORMAL,954,4165,0
41678894,739,161,SPARK_POS_OK,0.200534,0.247756,0.263340,0.265562,NORMAL,741,160,SPARK_POS_OK,0.270231,0.272928,0.197769,0.003905,NORMAL,956,4218,0
41740894,740,190,SPARK_POS_OK,0.200435,0.247624,0.263224,0.265428,NORMAL,742,190,SPARK_POS_OK,0.270122,0.272796,0.197648,0.003864,NORMAL,964,4154,0
41802894,741,220,SPARK_POS_OK,0.200307,0.247547,0.263053,0.265304,NORMAL,743,190,SPARK_POS_OK,0.269973,0.272658,0.197528,0.003868,NORMAL,970,4253,0
41863894,742,220,SPARK_POS_OK,0.200197,0.247444,0.262943,0.265173,NORMAL,744,221,SPARK_POS_OK,0.269864,0.272553,0.197408,0.003874,NORMAL,979,4164,0
42043894,743,30,SPARK_NEG_OK,0.200107,0.247387,0.262863,0.265078,SOFT_START,745,30,SPARK_NEG_OK,0.269786,0.272447,0.197350,0.003678,SOFT_START,1009,4247,0
42102894,744,60,SPARK_NEG_OK,0.199975,0.247245,0.262704,0.264937,SOFT_START,746,30,SPARK_NEG_OK,0.269638,0.272316,0.197238,0.003660,SOFT_START,1017,4203,0
42160894,745,60,SPARK_NEG_OK,0.199851,0.247157,0.262578,0.264801,SOFT_START,747,61,SPARK_NEG_OK,0.269511,0.272185,0.197123,0.003695,SOFT_START,1027,4196,0
42218894,746,90,SPARK_NEG_OK,0.199724,0.246996,0.262470,0.264683,SOFT_START,748,61,SPARK_NEG_OK,0.269379,0.272081,0.197006,0.003712,SOFT_START,1036,4165,0
42275894,747,90,SPARK_NEG_OK,0.199598,0.246891,0.262341,0.264522,SOFT_START,749,91,SPARK_NEG_OK,0.269270,0.271949,0.196900,0.003718,SOFT_START,1048,4271,0
42332894,748,110,SPARK_NEG_OK,0.199476,0.246797,0.262198,0.264432,SOFT_START,750,107,SPARK_NEG_OK,0.269136,0.271783,0.196793,0.003707,SOFT_START,1060,4178,0
42388894,749,110,SPARK_NEG_OK,0.199374,0.246669,0.262067,0.264315,SOFT_START,751,111,SPARK_NEG_OK,0.269028,0.271673,0.196687,0.003733,SOFT_START,1073,4157,0
42442894,750,140,SPARK_NEG_OK,0.199243,0.246548,0.261946,0.264188,SOFT_START,752,140,SPARK_NEG_OK,0.268887,0.271544,0.196567,0.003757,SOFT_START,1098,4178,0
42497894,751,141,SPARK_NEG_OK,0.199089,0.246437,0.261806,0.264030,SOFT_START,753,140,SPARK_NEG_OK,0.268753,0.271395,0.196472,0.003762,SOFT_START,1099,4277,0
42550894,752,171,SPARK_NEG_OK,0.198994,0.246323,0.261676,0.263922,SOFT_START,754,170,SPARK_NEG_OK,0.268612,0.271274,0.196361,0.003766,SOFT_START,1123,4183,0
42604894,753,170,SPARK_NEG_OK,0.198861,0.246233,0.261565,0.263759,SOFT_START,755,170,SPARK_NEG_OK,0.268504,0.271167,0.196233,0.003782,SOFT_START,1124,4170,0
42656894,754,210,SPARK_NEG_OK,0.198743,0.246103,0.261415,0.263638,SOFT_START,756,211,SPARK_NEG_OK,0.268367,0.271031,0.196128,0.003785,SOFT_START,1148,4160,0
42708894,755,210,SPARK_NEG_OK,0.198614,0.245963,0.261278,0.263526,SOFT_START,757,210,SPARK_NEG_OK,0.268233,0.270876,0.196034,0.003813,SOFT_START,1149,4240,0
42759894,756,220,SPARK_NEG_OK,0.198482,0.245838,0.261155,0.263387,SOFT_START,758,220,SPARK_NEG_OK,0.268111,0.270748,0.195891,0.003822,SOFT_START,1175,4260,0
42810894,757,220,SPARK_NEG_OK,0.198360,0.245746,0.261000,0.263236,SOFT_START,759,220,SPARK_NEG_OK,0.267989,0.270618,0.195792,0.003821,SOFT_START,1176,4207,0
42860894,758,220,SPARK_NEG_OK,0.198218,0.245627,0.260875,0.263098,SOFT_START,760,223,SPARK_NEG_OK,0.267848,0.270478,0.195671,0.003844,SOFT_START,1204,4237,0
42910894,759,220,SPARK_NEG_OK,0.198099,0.245525,0.260764,0.262961,SOFT_START,761,220,SPARK_NEG_OK,0.267730,0.270354,0.195575,0.003870,SOFT_START,1205,4184,0
42959894,760,220,SPARK_NEG_OK,0.197989,0.245395,0.260627,0.262851,SOFT_START,762,221,SPARK_NEG_OK,0.267601,0.270222,0.195455,0.003886,SOFT_START,1229,4168,0
43007894,761,221,SPARK_NEG_OK,0.197859,0.245275,0.260477,0.262731,SOFT_START,763,220,SPARK_NEG_OK,0.267437,0.270085,0.195344,0.003896,SOFT_START,1230,4202,0
43056894,762,220,SPARK_NEG_OK,0.197738,0.245203,0.260365,0.262597,SOFT_START,764,221,SPARK_NEG_OK,0.267359,0.269965,0.195224,0.003885,SOFT_START,1239,4196,0
43104894,763,221,SPARK_NEG_OK,0.197602,0.245073,0.260230,0.262448,SOFT_START,765,220,SPARK_NEG_OK,0.267217,0.269827,0.195113,0.003901,SOFT_START,1251,4250,0
43151894,764,220,SPARK_NEG_OK,0.197474,0.244928,0.260065,0.262322,SOFT_START,766,220,SPARK_NEG_OK,0.267094,0.269674,0.194982,0.003909,SOFT_START,1258,4184,0
43199894,765,221,SPARK_NEG_OK,0.197357,0.244827,0.259967,0.262184,SOFT_START,767,220,SPARK_NEG_OK,0.266970,0.269556,0.194883,0.003923,SOFT_START,1268,4231,0
43246894,766,220,SPARK_NEG_OK,0.197248,0.244722,0.259804,0.262077,SOFT_START,768,220,SPARK_NEG_OK,0.266804,0.269414,0.194749,0.003939,SOFT_START,1276,4149,0
43292894,767,220,SPARK_NEG_OK,0.197117,0.244605,0.259694,0.261919,SOFT_START,769,220,SPARK_NEG_OK,0.266705,0.269303,0.194654,0.003959,SOFT_START,1286,4169,0
43339894,768,220,SPARK_NEG_OK,0.196993,0.244474,0.259559,0.261797,SOFT_START,770,221,SPARK_NEG_OK,0.266541,0.269161,0.194563,0.003976,SOFT_START,1286,4190,0
43385894,769,220,SPARK_NEG_OK,0.196869,0.244370,0.259448,0.261645,SOFT_START,771,220,SPARK_NEG_OK,0.266452,0.269037,0.194426,0.003982,SOFT_START,1302,4269,0
43431894,770,221,SPARK_NEG_OK,0.196736,0.244229,0.259302,0.261519,SOFT_START,772,221,SPARK_NEG_OK,0.266292,0.268895,0.194313,0.003998,SOFT_START,1304,4262,0
43477894,771,220,SPARK_NEG_OK,0.196609,0.244130,0.259157,0.261397,SOFT_START,773,220,SPARK_NEG_OK,0.266187,0.268759,0.194212,0.003994,SOFT_START,1317,4193,0
43522894,772,221,SPARK_NEG_OK,0.196499,0.244040,0.259016,0.261270,SOFT_START,774,220,SPARK_NEG_OK,0.266053,0.268638,0.194097,0.004019,SOFT_START,1319,4175,0
43567894,773,220,SPARK_NEG_OK,0.196381,0.243890,0.258903,0.261110,SOFT_START,775,221,SPARK_NEG_OK,0.265919,0.268518,0.193987,0.004036,SOFT_START,1323,4172,0
43612894,774,220,SPARK_NEG_OK,0.196264,0.243790,0.258788,0.260985,SOFT_START,776,220,SPARK_NEG_OK,0.265797,0.268373,0.193867,0.004045,SOFT_START,1330,4153,0
43658894,775,220,SPARK_NEG_OK,0.196141,0.243672,0.258629,0.260858,SOFT_START,777,220,SPARK_NEG_OK,0.265661,0.268230,0.193754,0.004045,SOFT_START,1332,4201,0
43702894,776,220,SPARK_NEG_OK,0.196037,0.243563,0.258504,0.260714,SOFT_START,778,220,SPARK_NEG_OK,0.265544,0.268102,0.193647,0.004055,SOFT_START,1338,4158,0
43747894,777,220,SPARK_NEG_OK,0.195891,0.243415,0.258385,0.260592,SOFT_START,779,220,SPARK_NEG_OK,0.265426,0.268000,0.193529,0.004078,SOFT_START,1338,4246,0
43792894,778,201,SPARK_NEG_OK,0.195798,0.243320,0.258229,0.260479,SOFT_START,780,201,SPARK_NEG_OK,0.265290,0.267842,0.193396,0.004094,SOFT_START,1340,4156,0
43837894,779,200,SPARK_NEG_OK,0.195658,0.243208,0.258101,0.260347,SOFT_START,781,200,SPARK_NEG_OK,0.265152,0.267714,0.193290,0.004086,SOFT_START,1341,4225,0
43881894,780,160,SPARK_NEG_OK,0.195522,0.243081,0.257956,0.260199,SOFT_START,782,200,SPARK_NEG_OK,0.265024,0.267597,0.193209,0.004101,SOFT_START,1340,4182,0
43926894,781,161,SPARK_NEG_OK,0.195416,0.242981,0.257821,0.260077,SOFT_START,783,161,SPARK_NEG_OK,0.264905,0.267470,0.193109,0.004116,SOFT_START,1342,4163,0
43971894,782,130,SPARK_NEG_OK,0.195294,0.242833,0.257735,0.259920,SOFT_START,784,158,SPARK_NEG_OK,0.264760,0.267307,0.192973,0.004118,SOFT_START,1339,4208,0
44016894,783,130,SPARK_NEG_OK,0.195179,0.242740,0.257558,0.259807,SOFT_START,785,130,SPARK_NEG_OK,0.264655,0.267206,0.192842,0.004129,SOFT_START,1339,4221,0
44060894,784,128,SPARK_NEG_OK,0.195053,0.242636,0.257455,0.259690,SOFT_START,786,131,SPARK_NEG_OK,0.264505,0.267072,0.192737,0.004144,SOFT_START,1339,4236,0
44106894,785,100,SPARK_NEG_OK,0.194902,0.242509,0.257328,0.259535,SOFT_START,787,100,SPARK_NEG_OK,0.264392,0.266936,0.192629,0.004129,SOFT_START,1329,4203,0
44151894,786,101,SPARK_NEG_OK,0.194796,0.242376,0.257199,0.259408,SOFT_START,788,100,SPARK_NEG_OK,0.264261,0.266806,0.192531,0.004149,SOFT_START,1330,4178,0
44196894,787,80,SPARK_NEG_OK,0.194678,0.242286,0.257065,0.259286,SOFT_START,789,101,SPARK_NEG_OK,0.264124,0.266667,0.192397,0.004155,SOFT_START,1322,4176,0
44242894,788,80,SPARK_NEG_OK,0.194545,0.242181,0.256949,0.259129,SOFT_START,790,80,SPARK_NEG_OK,0.264000,0.266525,0.192301,0.004146,SOFT_START,1318,4255,0
44287894,789,61,SPARK_NEG_OK,0.194429,0.242080,0.256811,0.259014,SOFT_START,791,81,SPARK_NEG_OK,0.263849,0.266387,0.192185,0.004156,SOFT_START,1309,4187,0
44333894,790,60,SPARK_NEG_OK,0.194306,0.241948,0.256664,0.258874,SOFT_START,792,60,SPARK_NEG_OK,0.263768,0.266272,0.192068,0.004176,SOFT_START,1304,4182,0
44379894,791,61,SPARK_NEG_OK,0.194189,0.241806,0.256536,0.258739,SOFT_START,793,60,SPARK_NEG_OK,0.263627,0.266151,0.191975,0.004157,SOFT_START,1304,4175,0
44426894,792,50,SPARK_NEG_OK,0.194061,0.241702,0.256386,0.258610,SOFT_START,794,50,SPARK_NEG_OK,0.263498,0.266024,0.191851,0.004165,SOFT_START,1291,4264,0
44472894,793,50,SPARK_NEG_OK,0.193927,0.241601,0.256268,0.258484,SOFT_START,795,50,SPARK_NEG_OK,0.263357,0.265887,0.191762,0.004178,SOFT_START,1293,4257,0
44519894,794,50,SPARK_NEG_OK,0.193799,0.241491,0.256147,0.258339,SOFT_START,796,51,SPARK_NEG_OK,0.263250,0.265761,0.191653,0.004188,SOFT_START,1281,4241,0
44566894,795,49,SPARK_NEG_OK,0.193665,0.241373,0.256011,0.258195,SOFT_START,797,50,SPARK_NEG_OK,0.263091,0.265631,0.191526,0.004173,SOFT_START,1283,4276,0
44613894,796,50,SPARK_NEG_OK,0.193540,0.241243,0.255875,0.258098,SOFT_START,798,51,SPARK_NEG_OK,0.263007,0.265497,0.191412,0.004163,SOFT_START,1276,4193,0
44660894,797,50,SPARK_NEG_OK,0.193436,0.241147,0.255746,0.257978,SOFT_START,799,50,SPARK_NEG_OK,0.262855,0.265361,0.191306,0.004170,SOFT_START,1272,4229,0
44707894,798,50,SPARK_NEG_OK,0.193288,0.241022,0.255612,0.257819,SOFT_START,800,51,SPARK_NEG_OK,0.262737,0.265232,0.191194,0.004177,SOFT_START,1265,4268,0
44755894,799,50,SPARK_NEG_OK,0.193172,0.240936,0.255510,0.257689,SOFT_START,801,50,SPARK_NEG_OK,0.262594,0.265086,0.191092,0.004173,SOFT_START,1260,4149,0
44803894,800,50,SPARK_NEG_OK,0.193061,0.240822,0.255350,0.257562,SOFT_START,802,51,SPARK_NEG_OK,0.262484,0.264987,0.190976,0.004181,SOFT_START,1255,4228,0
44851894,801,50,SPARK_NEG_OK,0.192931,0.240676,0.255222,0.257454,SOFT_START,803,50,SPARK_NEG_OK,0.262373,0.264848,0.190865,0.004160,SOFT_START,1253,4212,0
44898894,802,50,SPARK_NEG_OK,0.192834,0.240576,0.255093,0.257311,SOFT_START,804,51,SPARK_NEG_OK,0.262241,0.264716,0.190771,0.004186,SOFT_START,1253,4191,0
44947894,803,50,SPARK_NEG_OK,0.192724,0.240459,0.254962,0.257189,SOFT_START,805,50,SPARK_NEG_OK,0.262112,0.264597,0.190664,0.004171,SOFT_START,1245,4150,0
44995894,804,50,SPARK_NEG_OK,0.192583,0.240365,0.254850,0.257064,SOFT_START,806,51,SPARK_NEG_OK,0.261984,0.264466,0.190551,0.004168,SOFT_START,1246,4155,0
45043894,805,50,SPARK_NEG_OK,0.192483,0.240215,0.254744,0.256926,SOFT_START,807,50,SPARK_NEG_OK,0.261874,0.264334,0.190439,0.004156,SOFT_START,1240,4178,0
45091894,806,48,SPARK_NEG_OK,0.192343,0.240144,0.254613,0.256810,SOFT_START,808,51,SPARK_NEG_OK,0.261713,0.264204,0.190327,0.004158,SOFT_START,1241,4253,0
45140894,807,50,SPARK_NEG_OK,0.192224,0.240026,0.254460,0.256689,SOFT_START,809,50,SPARK_NEG_OK,0.261614,0.264077,0.190225,0.004165,SOFT_START,1232,4243,0
45189894,808,50,SPARK_NEG_OK,0.192109,0.239901,0.254341,0.256534,SOFT_START,810,50,SPARK_NEG_OK,0.261489,0.263938,0.190108,0.004143,SOFT_START,1234,4284,0
45238894,809,51,SPARK_NEG_OK,0.191958,0.239796,0.254230,0.256408,SOFT_START,811,50,SPARK_NEG_OK,0.261356,0.263807,0.190001,0.004138,SOFT_START,1229,4268,0
45286894,810,47,SPARK_NEG_OK,0.191852,0.239690,0.254098,0.256292,SOFT_START,812,50,SPARK_NEG_OK,0.261207,0.263699,0.189890,0.004146,SOFT_START,1226,4162,0
45335894,811,51,SPARK_NEG_OK,0.191737,0.239571,0.253947,0.256172,SOFT_START,813,50,SPARK_NEG_OK,0.261111,0.263574,0.189781,0.004153,SOFT_START,1223,4172,0
45385894,812,50,SPARK_NEG_OK,0.191611,0.239471,0.253817,0.256026,SOFT_START,814,50,SPARK_NEG_OK,0.260968,0.263440,0.189676,0.004123,SOFT_START,1221,4266,0
45434894,813,47,SPARK_NEG_OK,0.191482,0.239350,0.253700,0.255923,SOFT_START,815,51,SPARK_NEG_OK,0.260872,0.263320,0.189580,0.004151,SOFT_START,1219,4251,0
45483894,814,50,SPARK_NEG_OK,0.191370,0.239239,0.253552,0.255758,SOFT_START,816,50,SPARK_NEG_OK,0.260741,0.263183,0.189472,0.004148,SOFT_START,1219,4223,0
45532894,815,50,SPARK_NEG_OK,0.191237,0.239108,0.253436,0.255647,SOFT_START,817,50,SPARK_NEG_OK,0.260611,0.263052,0.189347,0.004121,SOFT_START,1216,4231,0
45582894,816,51,SPARK_NEG_OK,0.191110,0.239028,0.253310,0.255525,SOFT_START,818,50,SPARK_NEG_OK,0.260473,0.262930,0.189257,0.004116,SOFT_START,1216,4237,0
45631894,817,49,SPARK_NEG_OK,0.190997,0.238910,0.253175,0.255381,SOFT_START,819,50,SPARK_NEG_OK,0.260382,0.262802,0.189146,0.004120,SOFT_START,1216,4244,0
45680894,818,50,SPARK_NEG_OK,0.190886,0.238796,0.253065,0.255262,SOFT_START,820,51,SPARK_NEG_OK,0.260221,0.262699,0.189050,0.004132,SOFT_START,1210,4155,0
45730894,819,50,SPARK_NEG_OK,0.190738,0.238699,0.252901,0.255105,SOFT_START,821,50,SPARK_NEG_OK,0.260109,0.262575,0.188913,0.004126,SOFT_START,1212,4249,0
45780894,820,50,SPARK_NEG_OK,0.190637,0.238562,0.252810,0.255017,SOFT_START,822,50,SPARK_NEG_OK,0.259993,0.262415,0.188825,0.004118,SOFT_START,1205,4206,0
45830894,821,51,SPARK_NEG_OK,0.190503,0.238465,0.252685,0.254884,SOFT_START,823,50,SPARK_NEG_OK,0.259852,0.262313,0.188717,0.004117,SOFT_START,1206,4219,0
45879894,822,48,SPARK_NEG_OK,0.190406,0.238347,0.252525,0.254745,SOFT_START,824,50,SPARK_NEG_OK,0.259729,0.262196,0.188599,0.004111,SOFT_START,1202,4164,0
45929894,823,50,SPARK_NEG_OK,0.190293,0.238234,0.252434,0.254620,SOFT_START,825,51,SPARK_NEG_OK,0.259622,0.262054,0.188497,0.004097,SOFT_START,1203,4164,0
45979894,824,41,SPARK_NEG_OK,0.190171,0.238089,0.252297,0.254486,SOFT_START,826,40,SPARK_NEG_OK,0.259511,0.261909,0.188398,0.004105,SOFT_START,1201,4237,0
46029894,825,40,SPARK_NEG_OK,0.190046,0.237992,0.252163,0.254358,SOFT_START,827,40,SPARK_NEG_OK,0.259376,0.261799,0.188283,0.004096,SOFT_START,1202,4219,0
46079894,826,30,SPARK_NEG_OK,0.189935,0.237876,0.252033,0.254241,SOFT_START,828,30,SPARK_NEG_OK,0.259261,0.261660,0.188177,0.004101,SOFT_START,1199,4192,0
46129894,827,30,SPARK_NEG_OK,0.189816,0.237765,0.251942,0.254119,SOFT_START,829,30,SPARK_NEG_OK,0.259131,0.261537,0.188060,0.004087,SOFT_START,1200,4206,0
46179894,828,15,SPARK_NEG_OK,0.189692,0.237678,0.251780,0.253997,SOFT_START,830,12,SPARK_NEG_OK,0.259007,0.261403,0.187978,0.004088,SOFT_START,1192,4174,0
46230894,829,12,SPARK_NEG_OK,0.189592,0.237572,0.251632,0.253850,SOFT_START,831,11,SPARK_NEG_OK,0.258870,0.261305,0.187864,0.004097,SOFT_START,1193,4175,0
46281894,830,240,SPARK_POS_OK,0.189475,0.237434,0.251530,0.253745,NORMAL,832,11,SPARK_NEG_OK,0.258766,0.261147,0.187738,0.004087,SOFT_START,1194,4225,0
46331894,831,240,SPARK_POS_OK,0.189345,0.237330,0.251409,0.253618,NORMAL,833,241,SPARK_POS_OK,0.258665,0.261039,0.187638,0.004082,NORMAL,1184,4245,0
46382894,832,231,SPARK_POS_OK,0.189261,0.237217,0.251272,0.253481,NORMAL,834,240,SPARK_POS_OK,0.258522,0.260929,0.187556,0.004079,NORMAL,1179,4168,0
46433894,833,230,SPARK_POS_OK,0.189138,0.237136,0.251175,0.253382,NORMAL,835,230,SPARK_POS_OK,0.258383,0.260813,0.187426,0.004068,NORMAL,1176,4228,0
46484894,834,220,SPARK_POS_OK,0.189012,0.237026,0.251043,0.253245,NORMAL,836,231,SPARK_POS_OK,0.258259,0.260691,0.187322,0.004076,NORMAL,1171,4212,0
46536894,835,223,SPARK_POS_OK,0.188912,0.236922,0.250911,0.253098,NORMAL,837,220,SPARK_POS_OK,0.258138,0.260543,0.187244,0.004051,NORMAL,1169,4213,0
46587894,836,200,SPARK_POS_OK,0.188764,0.236806,0.250795,0.253014,NORMAL,838,220,SPARK_POS_OK,0.258026,0.260438,0.187150,0.004058,NORMAL,1164,4272,0
46639894,837,200,SPARK_POS_OK,0.188665,0.236703,0.250667,0.252843,NORMAL,839,201,SPARK_POS_OK,0.257918,0.260280,0.187024,0.004051,NORMAL,1161,4206,0
46691894,838,190,SPARK_POS_OK,0.188524,0.236609,0.250556,0.252748,NORMAL,840,200,SPARK_POS_OK,0.257770,0.260161,0.186925,0.004048,NORMAL,1154,4239,0
46743894,839,191,SPARK_POS_OK,0.188426,0.236479,0.250418,0.252605,NORMAL,841,190,SPARK_POS_OK,0.257676,0.260048,0.186810,0.004051,NORMAL,1150,4206,0
46796894,840,180,SPARK_POS_OK,0.188310,0.236364,0.250295,0.252498,NORMAL,842,190,SPARK_POS_OK,0.257535,0.259948,0.186688,0.004035,NORMAL,1143,4232,0
46848894,841,180,SPARK_POS_OK,0.188194,0.236236,0.250141,0.252351,NORMAL,843,181,SPARK_POS_OK,0.257429,0.259789,0.186617,0.004027,NORMAL,1137,4153,0
46901894,842,170,SPARK_POS_OK,0.188091,0.236159,0.250050,0.252227,NORMAL,844,180,SPARK_POS_OK,0.257328,0.259672,0.186503,0.004034,NORMAL,1131,4183,0
46955894,843,171,SPARK_POS_OK,0.187982,0.236027,0.249890,0.252114,NORMAL,845,170,SPARK_POS_OK,0.257170,0.259569,0.186400,0.004032,NORMAL,1127,4160,0
47008894,844,161,SPARK_POS_OK,0.187868,0.235941,0.249802,0.251991,NORMAL,846,170,SPARK_POS_OK,0.257060,0.259432,0.186309,0.004019,NORMAL,1122,4280,0
47062894,845,160,SPARK_POS_OK,0.187767,0.235842,0.249661,0.251852,NORMAL,847,160,SPARK_POS_OK,0.256953,0.259300,0.186182,0.004006,NORMAL,1118,4252,0
47116894,846,160,SPARK_POS_OK,0.187617,0.235729,0.249538,0.251734,NORMAL,848,161,SPARK_POS_OK,0.256835,0.259192,0.186073,0.003994,NORMAL,1113,4244,0
47170894,847,160,SPARK_POS_OK,0.187524,0.235621,0.249420,0.251602,NORMAL,849,161,SPARK_POS_OK,0.256718,0.259048,0.185969,0.003990,NORMAL,1110,4216,0
47224894,848,150,SPARK_POS_OK,0.187391,0.235505,0.249296,0.251517,NORMAL,850,150,SPARK_POS_OK,0.256594,0.258952,0.185884,0.003981,NORMAL,1098,4245,0
47279894,849,151,SPARK_POS_OK,0.187286,0.235388,0.249176,0.251381,NORMAL,851,150,SPARK_POS_OK,0.256472,0.258817,0.185773,0.003980,NORMAL,1099,4192,0
47334894,850,141,SPARK_POS_OK,0.187168,0.235281,0.249062,0.251256,NORMAL,852,140,SPARK_POS_OK,0.256345,0.258703,0.185671,0.003981,NORMAL,1085,4248,0
47389894,851,141,SPARK_POS_OK,0.187046,0.235177,0.248922,0.251114,NORMAL,853,140,SPARK_POS_OK,0.256229,0.258580,0.185577,0.003989,NORMAL,1086,4221,0
47445894,852,134,SPARK_POS_OK,0.186926,0.235064,0.248811,0.251015,NORMAL,854,130,SPARK_POS_OK,0.256121,0.258464,0.185478,0.003960,NORMAL,1074,4230,0
47501894,853,130,SPARK_POS_OK,0.186813,0.234978,0.248675,0.250870,NORMAL,855,130,SPARK_POS_OK,0.256003,0.258320,0.185378,0.003954,NORMAL,1075,4157,0
47557894,854,121,SPARK_POS_OK,0.186700,0.234830,0.248588,0.250720,NORMAL,856,120,SPARK_POS_OK,0.255868,0.258222,0.185274,0.003951,NORMAL,1066,4280,0
47614894,855,130,SPARK_POS_OK,0.186595,0.234727,0.248448,0.250642,NORMAL,857,121,SPARK_POS_OK,0.255758,0.258101,0.185173,0.003955,NORMAL,1062,4222,0
47670894,856,130,SPARK_POS_OK,0.186488,0.234631,0.248330,0.250527,NORMAL,858,131,SPARK_POS_OK,0.255622,0.257991,0.185075,0.003922,NORMAL,1060,4166,0
47727894,857,140,SPARK_POS_OK,0.186380,0.234529,0.248209,0.250412,NORMAL,859,131,SPARK_POS_OK,0.255518,0.257864,0.184941,0.003935,NORMAL,1056,4162,0
47784894,858,140,SPARK_POS_OK,0.186290,0.234465,0.248080,0.250263,NORMAL,860,141,SPARK_POS_OK,0.255391,0.257729,0.184861,0.003924,NORMAL,1054,4169,0
47841894,859,150,SPARK_POS_OK,0.186153,0.234302,0.247976,0.250136,NORMAL,861,141,SPARK_POS_OK,0.255267,0.257604,0.184757,0.003910,NORMAL,1049,4231,0
47898894,860,149,SPARK_POS_OK,0.186059,0.234220,0.247833,0.250043,NORMAL,862,151,SPARK_POS_OK,0.255178,0.257509,0.184662,0.003907,NORMAL,1048,4183,0
47956894,861,160,SPARK_POS_OK,0.185944,0.234099,0.247707,0.249916,NORMAL,863,161,SPARK_POS_OK,0.255066,0.257356,0.184550,0.003906,NORMAL,1044,4192,0
48013894,862,160,SPARK_POS_OK,0.185822,0.234005,0.247573,0.249782,NORMAL,864,161,SPARK_POS_OK,0.254922,0.257250,0.184442,0.003871,NORMAL,1045,4252,0
48071894,863,170,SPARK_POS_OK,0.185719,0.233893,0.247480,0.249677,NORMAL,865,171,SPARK_POS_OK,0.254796,0.257124,0.184361,0.003891,NORMAL,1043,4242,0
48128894,864,172,SPARK_POS_OK,0.185601,0.233812,0.247360,0.249524,NORMAL,866,171,SPARK_POS_OK,0.254678,0.256999,0.184269,0.003884,NORMAL,1044,4230,0
48185894,865,170,SPARK_POS_OK,0.185485,0.233693,0.247217,0.249421,NORMAL,867,170,SPARK_POS_OK,0.254599,0.256876,0.184159,0.003896,NORMAL,1044,4177,0
48243894,866,170,SPARK_POS_OK,0.185353,0.233577,0.247125,0.249268,NORMAL,868,170,SPARK_POS_OK,0.254457,0.256770,0.184052,0.003859,NORMAL,1043,4280,0
48301894,867,170,SPARK_POS_OK,0.185239,0.233474,0.246968,0.249196,NORMAL,869,170,SPARK_POS_OK,0.254325,0.256634,0.183977,0.003852,NORMAL,1043,4241,0
48358894,868,170,SPARK_POS_OK,0.185137,0.233374,0.246859,0.249055,NORMAL,870,170,SPARK_POS_OK,0.254217,0.256510,0.183860,0.003856,NORMAL,1040,4192,0
48416894,869,170,SPARK_POS_OK,0.185001,0.233275,0.246729,0.248941,NORMAL,871,170,SPARK_POS_OK,0.254110,0.256423,0.183764,0.003861,NORMAL,1040,4238,0
48474894,870,170,SPARK_POS_OK,0.184931,0.233169,0.246617,0.248785,NORMAL,872,170,SPARK_POS_OK,0.253994,0.256265,0.183647,0.003806,NORMAL,1038,4174,0
48531894,871,170,SPARK_POS_OK,0.184818,0.233034,0.246516,0.248690,NORMAL,873,170,SPARK_POS_OK,0.253859,0.256159,0.183561,0.003828,NORMAL,1039,4160,0
48589894,872,171,SPARK_POS_OK,0.184712,0.232958,0.246370,0.248585,NORMAL,874,170,SPARK_POS_OK,0.253778,0.256029,0.183455,0.003825,NORMAL,1039,4176,0
48647894,873,170,SPARK_POS_OK,0.184594,0.232822,0.246262,0.248438,NORMAL,875,170,SPARK_POS_OK,0.253631,0.255929,0.183359,0.003824,NORMAL,1040,4242,0
48704894,874,171,SPARK_POS_OK,0.184495,0.232725,0.246117,0.248336,NORMAL,876,170,SPARK_POS_OK,0.253508,0.255806,0.183246,0.003831,NORMAL,1040,4185,0
48762894,875,182,SPARK_POS_OK,0.184386,0.232642,0.246041,0.248201,NORMAL,877,171,SPARK_POS_OK,0.253385,0.255686,0.183159,0.003816,NORMAL,1040,4241,0
48820894,876,181,SPARK_POS_OK,0.184273,0.232522,0.245903,0.248105,NORMAL,878,180,SPARK_POS_OK,0.253309,0.255567,0.183053,0.003799,NORMAL,1040,4187,0
48877894,877,181,SPARK_POS_OK,0.184165,0.232435,0.245768,0.247996,NORMAL,879,180,SPARK_POS_OK,0.253191,0.255446,0.182964,0.003816,NORMAL,1039,4180,0
48935894,878,181,SPARK_POS_OK,0.184060,0.232328,0.245652,0.247856,NORMAL,880,180,SPARK_POS_OK,0.253038,0.255304,0.182863,0.003805,NORMAL,1039,4166,0
48993894,879,191,SPARK_POS_OK,0.183955,0.232198,0.245534,0.247723,NORMAL,881,190,SPARK_POS_OK,0.252912,0.255213,0.182759,0.003794,NORMAL,1039,4162,0
49051894,880,191,SPARK_POS_OK,0.183828,0.232086,0.245433,0.247585,NORMAL,882,190,SPARK_POS_OK,0.252812,0.255078,0.182651,0.003785,NORMAL,1040,4209,0
49108894,881,201,SPARK_POS_OK,0.183755,0.232013,0.245312,0.247477,NORMAL,883,199,SPARK_POS_OK,0.252693,0.254959,0.182567,0.003808,NORMAL,1043,4178,0
49166894,882,201,SPARK_POS_OK,0.183622,0.231887,0.245204,0.247368,NORMAL,884,200,SPARK_POS_OK,0.252554,0.254838,0.182472,0.003796,NORMAL,1044,4197,0
49223894,883,210,SPARK_POS_OK,0.183548,0.231800,0.245070,0.247249,NORMAL,885,211,SPARK_POS_OK,0.252450,0.254720,0.182371,0.003793,NORMAL,1048,4180,0
49280894,884,210,SPARK_POS_OK,0.183415,0.231697,0.244941,0.247137,NORMAL,886,210,SPARK_POS_OK,0.252352,0.254604,0.182251,0.003785,NORMAL,1049,4233,0
49337894,885,210,SPARK_POS_OK,0.183302,0.231607,0.244841,0.246993,NORMAL,887,210,SPARK_POS_OK,0.252231,0.254492,0.182170,0.003790,NORMAL,1052,4272,0
49394894,886,201,SPARK_POS_OK,0.183178,0.231465,0.244700,0.246891,NORMAL,888,210,SPARK_POS_OK,0.252116,0.254380,0.182086,0.003777,NORMAL,1051,4252,0
49451894,887,201,SPARK_POS_OK,0.183051,0.231370,0.244613,0.246722,NORMAL,889,200,SPARK_POS_OK,0.252008,0.254268,0.181959,0.003791,NORMAL,1051,4271,0
49508894,888,181,SPARK_POS_OK,0.182953,0.231250,0.244480,0.246650,NORMAL,890,200,SPARK_POS_OK,0.251892,0.254142,0.181869,0.003777,NORMAL,1051,4231,0
49565894,889,181,SPARK_POS_OK,0.182852,0.231152,0.244332,0.246547,NORMAL,891,180,SPARK_POS_OK,0.251753,0.254017,0.181770,0.003770,NORMAL,1051,4228,0
49622894,890,171,SPARK_POS_OK,0.182726,0.231064,0.244222,0.246421,NORMAL,892,170,SPARK_POS_OK,0.251654,0.253898,0.181662,0.003781,NORMAL,1050,4160,0
49680894,891,171,SPARK_POS_OK,0.182616,0.230951,0.244120,0.246286,NORMAL,893,170,SPARK_POS_OK,0.251557,0.253804,0.181562,0.003788,NORMAL,1051,4277,0
49737894,892,161,SPARK_POS_OK,0.182503,0.230843,0.243998,0.246158,NORMAL,894,160,SPARK_POS_OK,0.251422,0.253675,0.181480,0.003783,NORMAL,1048,4215,0
49794894,893,150,SPARK_POS_OK,0.182407,0.230728,0.243864,0.246056,NORMAL,895,160,SPARK_POS_OK,0.251293,0.253534,0.181367,0.003766,NORMAL,1045,4161,0
49851894,894,150,SPARK_POS_OK,0.182299,0.230612,0.243748,0.245910,NORMAL,896,150,SPARK_POS_OK,0.251176,0.253406,0.181258,0.003772,NORMAL,1044,4161,0
49909894,895,150,SPARK_POS_OK,0.182188,0.230522,0.243649,0.245810,NORMAL,897,150,SPARK_POS_OK,0.251061,0.253302,0.181175,0.003751,NORMAL,1040,4237,0
49967894,896,150,SPARK_POS_OK,0.182081,0.230432,0.243503,0.245688,NORMAL,898,150,SPARK_POS_OK,0.250947,0.253167,0.181066,0.003761,NORMAL,1039,4223,0
50025894,897,140,SPARK_POS_OK,0.181990,0.230336,0.243385,0.245574,NORMAL,899,150,SPARK_POS_OK,0.250832,0.253050,0.180967,0.003765,NORMAL,1036,4183,0
50083894,898,140,SPARK_POS_OK,0.181845,0.230209,0.243291,0.245417,NORMAL,900,140,SPARK_POS_OK,0.250705,0.252939,0.180880,0.003750,NORMAL,1035,4215,0
50141894,899,140,SPARK_POS_OK,0.181769,0.230139,0.243139,0.245352,NORMAL,901,140,SPARK_POS_OK,0.250615,0.252838,0.180776,0.003752,NORMAL,1032,4231,0
50199894,900,140,SPARK_POS_OK,0.181661,0.229990,0.243036,0.245205,NORMAL,902,140,SPARK_POS_OK,0.250475,0.252681,0.180660,0.003754,NORMAL,1033,4164,0
50257894,901,140,SPARK_POS_OK,0.181559,0.229920,0.242902,0.245090,NORMAL,903,138,SPARK_POS_OK,0.250394,0.252586,0.180570,0.003743,NORMAL,1029,4165,0
50316894,902,139,SPARK_POS_OK,0.181454,0.229805,0.242788,0.244974,NORMAL,904,141,SPARK_POS_OK,0.250267,0.252476,0.180474,0.003749,NORMAL,1027,4176,0
50374894,903,140,SPARK_POS_OK,0.181333,0.229685,0.242683,0.244868,NORMAL,905,141,SPARK_POS_OK,0.250145,0.252370,0.180380,0.003731,NORMAL,1025,4222,0
50433894,904,130,SPARK_POS_OK,0.181242,0.229599,0.242561,0.244744,NORMAL,906,141,SPARK_POS_OK,0.250034,0.252240,0.180277,0.003742,NORMAL,1022,4171,0
50492894,905,130,SPARK_POS_OK,0.181165,0.229467,0.242457,0.244618,NORMAL,907,130,SPARK_POS_OK,0.249910,0.252100,0.180182,0.003732,NORMAL,1019,4256,0
50551894,906,130,SPARK_POS_OK,0.181014,0.229410,0.242325,0.244519,NORMAL,908,130,SPARK_POS_OK,0.249804,0.252000,0.180102,0.003753,NORMAL,1015,4206,0
50610894,907,131,SPARK_POS_OK,0.180916,0.229288,0.242222,0.244411,NORMAL,909,130,SPARK_POS_OK,0.249669,0.251884,0.179996,0.003746,NORMAL,1015,4205,0
50669894,908,133,SPARK_POS_OK,0.180824,0.229185,0.242077,0.244268,NORMAL,910,130,SPARK_POS_OK,0.249584,0.251774,0.179896,0.003724,NORMAL,1013,4208,0
50728894,909,130,SPARK_POS_OK,0.180694,0.229062,0.241970,0.244145,NORMAL,911,130,SPARK_POS_OK,0.249456,0.251659,0.179799,0.003727,NORMAL,1014,4208,0
50787894,910,130,SPARK_POS_OK,0.180615,0.228989,0.241830,0.244040,NORMAL,912,130,SPARK_POS_OK,0.249347,0.251544,0.179687,0.003733,NORMAL,1011,4163,0
50847894,911,140,SPARK_POS_OK,0.180486,0.228877,0.241734,0.243900,NORMAL,913,130,SPARK_POS_OK,0.249223,0.251398,0.179603,0.003727,NORMAL,1010,4232,0
50906894,912,140,SPARK_POS_OK,0.180374,0.228772,0.241596,0.243781,NORMAL,914,141,SPARK_POS_OK,0.249118,0.251292,0.179501,0.003721,NORMAL,1009,4251,0
50966894,913,150,SPARK_POS_OK,0.180268,0.228676,0.241511,0.243672,NORMAL,915,143,SPARK_POS_OK,0.249002,0.251150,0.179390,0.003727,NORMAL,1007,4171,0
51025894,914,150,SPARK_POS_OK,0.180143,0.228543,0.241371,0.243591,NORMAL,916,150,SPARK_POS_OK,0.248873,0.251072,0.179284,0.003721,NORMAL,1007,4223,0
51085894,915,161,SPARK_POS_OK,0.180058,0.228450,0.241258,0.243443,NORMAL,917,158,SPARK_POS_OK,0.248755,0.250931,0.179205,0.003712,NORMAL,1007,4152,0
51144894,916,161,SPARK_POS_OK,0.179952,0.228314,0.241187,0.243336,NORMAL,918,160,SPARK_POS_OK,0.248628,0.250839,0.179121,0.003693,NORMAL,1008,4214,0
51204894,917,161,SPARK_POS_OK,0.179825,0.228233,0.241035,0.243222,NORMAL,919,160,SPARK_POS_OK,0.248558,0.250704,0.179017,0.003716,NORMAL,1010,4240,0
51263894,918,170,SPARK_POS_OK,0.179723,0.228140,0.240918,0.243119,NORMAL,920,160,SPARK_POS_OK,0.248442,0.250626,0.178941,0.003673,NORMAL,1012,4163,0
51322894,919,170,SPARK_POS_OK,0.179611,0.228032,0.240797,0.242962,NORMAL,921,170,SPARK_POS_OK,0.248314,0.250484,0.178823,0.003694,NORMAL,1014,4216,0
51381894,920,180,SPARK_POS_OK,0.179483,0.227915,0.240700,0.242868,NORMAL,922,170,SPARK_POS_OK,0.248206,0.250369,0.178745,0.003690,NORMAL,1014,4278,0
51440894,921,181,SPARK_POS_OK,0.179390,0.227807,0.240554,0.242754,NORMAL,923,181,SPARK_POS_OK,0.248052,0.250253,0.178649,0.003718,NORMAL,1016,4185,0
51499894,922,180,SPARK_POS_OK,0.179291,0.227693,0.240412,0.242594,NORMAL,924,181,SPARK_POS_OK,0.247962,0.250142,0.178552,0.003698,NORMAL,1017,4159,0
51558894,923,180,SPARK_POS_OK,0.179173,0.227607,0.240358,0.242525,NORMAL,925,180,SPARK_POS_OK,0.247841,0.250010,0.178452,0.003690,NORMAL,1018,4185,0
51617894,924,180,SPARK_POS_OK,0.179079,0.227488,0.240244,0.242394,NORMAL,926,180,SPARK_POS_OK,0.247728,0.249873,0.178347,0.003700,NORMAL,1020,4188,0
51676894,925,191,SPARK_POS_OK,0.178958,0.227406,0.240106,0.242279,NORMAL,927,180,SPARK_POS_OK,0.247626,0.249738,0.178260,0.003663,NORMAL,1022,4188,0
51734894,926,191,SPARK_POS_OK,0.178894,0.227287,0.239970,0.242131,NORMAL,928,190,SPARK_POS_OK,0.247489,0.249669,0.178149,0.003687,NORMAL,1025,4233,0
51793894,927,191,SPARK_POS_OK,0.178756,0.227187,0.239858,0.242033,NORMAL,929,190,SPARK_POS_OK,0.247404,0.249532,0.178056,0.003693,NORMAL,1026,4206,0
51851894,928,191,SPARK_POS_OK,0.178682,0.227094,0.239761,0.241903,NORMAL,930,190,SPARK_POS_OK,0.247283,0.249423,0.177974,0.003693,NORMAL,1029,4206,0
51909894,929,190,SPARK_POS_OK,0.178563,0.226976,0.239627,0.241792,NORMAL,931,190,SPARK_POS_OK,0.247145,0.249316,0.177866,0.003682,NORMAL,1031,4181,0
51967894,930,190,SPARK_POS_OK,0.178457,0.226884,0.239519,0.241674,NORMAL,932,190,SPARK_POS_OK,0.247059,0.249201,0.177770,0.003687,NORMAL,1032,4208,0
52025894,931,190,SPARK_POS_OK,0.178345,0.226781,0.239405,0.241570,NORMAL,933,190,SPARK_POS_OK,0.246941,0.249071,0.177685,0.003692,NORMAL,1033,4264,0
52083894,932,200,SPARK_POS_OK,0.178225,0.226653,0.239264,0.241413,NORMAL,934,190,SPARK_POS_OK,0.246826,0.248956,0.177557,0.003710,NORMAL,1034,4256,0
52141894,933,202,SPARK_POS_OK,0.178135,0.226579,0.239156,0.241321,NORMAL,935,200,SPARK_POS_OK,0.246705,0.248853,0.177467,0.003691,NORMAL,1036,4237,0
52199894,934,200,SPARK_POS_OK,0.178037,0.226479,0.239038,0.241219,NORMAL,936,200,SPARK_POS_OK,0.246564,0.248730,0.177386,0.003682,NORMAL,1037,4152,0
52257894,935,200,SPARK_POS_OK,0.177921,0.226363,0.238945,0.241104,NORMAL,937,199,SPARK_POS_OK,0.246492,0.248597,0.177285,0.003694,NORMAL,1040,4244,0
52314894,936,200,SPARK_POS_OK,0.177812,0.226263,0.238812,0.240967,NORMAL,938,200,SPARK_POS_OK,0.246376,0.248495,0.177191,0.003685,NORMAL,1041,4231,0
52372894,937,200,SPARK_POS_OK,0.177680,0.226153,0.238713,0.240849,NORMAL,939,200,SPARK_POS_OK,0.246275,0.248348,0.177107,0.003703,NORMAL,1044,4230,0
52429894,938,200,SPARK_POS_OK,0.177594,0.226080,0.238577,0.240744,NORMAL,940,201,SPARK_POS_OK,0.246134,0.248282,0.177004,0.003694,NORMAL,1043,4221,0
52487894,939,200,SPARK_POS_OK,0.177475,0.225956,0.238462,0.240625,NORMAL,941,201,SPARK_POS_OK,0.246044,0.248135,0.176916,0.003704,NORMAL,1044,4265,0
52544894,940,200,SPARK_POS_OK,0.177384,0.225872,0.238366,0.240521,NORMAL,942,201,SPARK_POS_OK,0.245889,0.248041,0.176803,0.003698,NORMAL,1043,4229,0
52601894,941,200,SPARK_POS_OK,0.177253,0.225781,0.238213,0.240364,NORMAL,943,201,SPARK_POS_OK,0.245787,0.247910,0.176700,0.003678,NORMAL,1044,4237,0
52659894,942,200,SPARK_POS_OK,0.177161,0.225646,0.238121,0.240245,NORMAL,944,201,SPARK_POS_OK,0.245695,0.247777,0.176609,0.003685,NORMAL,1045,4204,0
52716894,943,202,SPARK_POS_OK,0.177056,0.225565,0.238028,0.240158,NORMAL,945,201,SPARK_POS_OK,0.245553,0.247676,0.176513,0.003714,NORMAL,1047,4230,0
52773894,944,200,SPARK_POS_OK,0.176951,0.225442,0.237892,0.240009,NORMAL,946,201,SPARK_POS_OK,0.245476,0.247564,0.176414,0.003684,NORMAL,1050,4151,0
52830894,945,200,SPARK_POS_OK,0.176859,0.225365,0.237779,0.239926,NORMAL,947,201,SPARK_POS_OK,0.245338,0.247457,0.176337,0.003695,NORMAL,1050,4242,0
52887894,946,198,SPARK_POS_OK,0.176730,0.225252,0.237657,0.239801,NORMAL,948,201,SPARK_POS_OK,0.245228,0.247353,0.176218,0.003702,NORMAL,1053,4206,0
52944894,947,210,SPARK_POS_OK,0.176619,0.225137,0.237545,0.239674,NORMAL,949,210,SPARK_POS_OK,0.245138,0.247210,0.176138,0.003691,NORMAL,1054,4226,0
53001894,948,210,SPARK_POS_OK,0.176516,0.225054,0.237430,0.239578,NORMAL,950,211,SPARK_POS_OK,0.244980,0.247125,0.176038,0.003704,NORMAL,1055,4157,0
53058894,949,220,SPARK_POS_OK,0.176409,0.224927,0.237287,0.239444,NORMAL,951,221,SPARK_POS_OK,0.244922,0.246981,0.175939,0.003682,NORMAL,1055,4234,0
53115894,950,220,SPARK_POS_OK,0.176303,0.224836,0.237187,0.239326,NORMAL,952,221,SPARK_POS_OK,0.244802,0.246869,0.175855,0.003700,NORMAL,1056,4227,0
53171894,951,220,SPARK_POS_OK,0.176209,0.224728,0.237058,0.239228,NORMAL,953,220,SPARK_POS_OK,0.244660,0.246759,0.175741,0.003686,NORMAL,1059,4236,0
53228894,952,232,SPARK_POS_OK,0.176130,0.224632,0.236957,0.239087,NORMAL,954,220,SPARK_POS_OK,0.244568,0.246645,0.175671,0.003706,NORMAL,1062,4149,0
53284894,953,230,SPARK_POS_OK,0.176008,0.224525,0.236865,0.239014,NORMAL,955,230,SPARK_POS_OK,0.244426,0.246528,0.175578,0.003695,NORMAL,1066,4149,0
53340894,954,241,SPARK_POS_OK,0.175912,0.224442,0.236724,0.238883,NORMAL,956,230,SPARK_POS_OK,0.244311,0.246415,0.175474,0.003710,NORMAL,1068,4264,0
53396894,955,240,SPARK_POS_OK,0.175794,0.224323,0.236610,0.238752,NORMAL,957,240,SPARK_POS_OK,0.244229,0.246270,0.175374,0.003706,NORMAL,1072,4208,0
53674894,956,11,SPARK_NEG_OK,0.175783,0.224292,0.236570,0.238706,SOFT_START,959,11,SPARK_NEG_OK,0.244206,0.246261,0.175381,0.003434,SOFT_START,1084,4273,0
53729894,957,11,SPARK_NEG_OK,0.175673,0.224182,0.236448,0.238615,SOFT_START,960,11,SPARK_NEG_OK,0.244086,0.246149,0.175256,0.003447,SOFT_START,1085,4206,0
53784894,958,11,SPARK_NEG_OK,0.175576,0.224109,0.236334,0.238502,SOFT_START,961,11,SPARK_NEG_OK,0.243948,0.246023,0.175169,0.003446,SOFT_START,1091,4162,0
53839894,959,11,SPARK_NEG_OK,0.175478,0.224012,0.236243,0.238401,SOFT_START,962,12,SPARK_NEG_OK,0.243824,0.245910,0.175105,0.003470,SOFT_START,1092,4168,0
54003894,960,241,SPARK_POS_OK,0.175418,0.223927,0.236150,0.238284,NORMAL,963,240,SPARK_POS_OK,0.243795,0.245828,0.175021,0.003356,NORMAL,1102,4204,0
54058894,961,231,SPARK_POS_OK,0.175305,0.223829,0.236015,0.238169,NORMAL,964,240,SPARK_POS_OK,0.243664,0.245724,0.174927,0.003375,NORMAL,1096,4267,0
54113894,962,230,SPARK_POS_OK,0.175204,0.223744,0.235916,0.238052,NORMAL,965,230,SPARK_POS_OK,0.243499,0.245609,0.174820,0.003390,NORMAL,1096,4207,0
54168894,963,220,SPARK_POS_OK,0.175103,0.223635,0.235816,0.237938,NORMAL,966,230,SPARK_POS_OK,0.243422,0.245486,0.174741,0.003411,NORMAL,1095,4230,0
54222894,964,220,SPARK_POS_OK,0.174997,0.223547,0.235701,0.237829,NORMAL,967,221,SPARK_POS_OK,0.243309,0.245369,0.174666,0.003443,NORMAL,1096,4170,0
54277894,965,220,SPARK_POS_OK,0.174891,0.223427,0.235560,0.237699,NORMAL,968,221,SPARK_POS_OK,0.243210,0.245252,0.174542,0.003449,NORMAL,1095,4213,0
54332894,966,220,SPARK_POS_OK,0.174809,0.223322,0.235466,0.237581,NORMAL,969,220,SPARK_POS_OK,0.243076,0.245125,0.174434,0.003467,NORMAL,1097,4193,0
54387894,967,210,SPARK_POS_OK,0.174709,0.223221,0.235333,0.237470,NORMAL,970,220,SPARK_POS_OK,0.242979,0.245035,0.174358,0.003471,NORMAL,1096,4237,0
54441894,968,211,SPARK_POS_OK,0.174584,0.223115,0.235217,0.237331,NORMAL,971,210,SPARK_POS_OK,0.242879,0.244905,0.174257,0.003499,NORMAL,1096,4177,0
54496894,969,201,SPARK_POS_OK,0.174465,0.223033,0.235104,0.237241,NORMAL,972,210,SPARK_POS_OK,0.242747,0.244792,0.174165,0.003507,NORMAL,1094,4252,0
54551894,970,200,SPARK_POS_OK,0.174382,0.222914,0.234981,0.237129,NORMAL,973,200,SPARK_POS_OK,0.242670,0.244678,0.174090,0.003508,NORMAL,1093,4165,0
54606894,971,188,SPARK_POS_OK,0.174282,0.222827,0.234905,0.237012,NORMAL,974,189,SPARK_POS_OK,0.242506,0.244573,0.173976,0.003533,NORMAL,1087,4166,0
54661894,972,190,SPARK_POS_OK,0.174193,0.222720,0.234750,0.236908,NORMAL,975,191,SPARK_POS_OK,0.242398,0.244440,0.173886,0.003530,NORMAL,1088,4221,0
54717894,973,190,SPARK_POS_OK,0.174090,0.222608,0.234655,0.236794,NORMAL,976,191,SPARK_POS_OK,0.242307,0.244360,0.173807,0.003555,NORMAL,1083,4158,0
54772894,974,190,SPARK_POS_OK,0.173970,0.222521,0.234529,0.236660,NORMAL,977,191,SPARK_POS_OK,0.242168,0.244220,0.173696,0.003552,NORMAL,1084,4279,0
54828894,975,180,SPARK_POS_OK,0.173885,0.222414,0.234400,0.236566,NORMAL,978,180,SPARK_POS_OK,0.242065,0.244108,0.173611,0.003575,NORMAL,1081,4247,0
54883894,976,183,SPARK_POS_OK,0.173747,0.222317,0.234323,0.236436,NORMAL,979,180,SPARK_POS_OK,0.241960,0.244016,0.173525,0.003580,NORMAL,1082,4268,0
54939894,977,170,SPARK_POS_OK,0.173649,0.222196,0.234209,0.236310,NORMAL,980,170,SPARK_POS_OK,0.241845,0.243925,0.173399,0.003576,NORMAL,1077,4170,0
54995894,978,160,SPARK_POS_OK,0.173565,0.222088,0.234081,0.236226,NORMAL,981,170,SPARK_POS_OK,0.241759,0.243788,0.173325,0.003588,NORMAL,1074,4158,0
55051894,979,161,SPARK_POS_OK,0.173455,0.221997,0.233963,0.236095,NORMAL,982,160,SPARK_POS_OK,0.241627,0.243664,0.173233,0.003607,NORMAL,1071,4152,0
55107894,980,151,SPARK_POS_OK,0.173360,0.221920,0.233859,0.235954,NORMAL,983,160,SPARK_POS_OK,0.241511,0.243541,0.173141,0.003611,NORMAL,1066,4255,0
55163894,981,151,SPARK_POS_OK,0.173278,0.221807,0.233724,0.235876,NORMAL,984,150,SPARK_POS_OK,0.241415,0.243439,0.173040,0.003599,NORMAL,1062,4168,0
55220894,982,141,SPARK_POS_OK,0.173152,0.221723,0.233647,0.235753,NORMAL,985,150,SPARK_POS_OK,0.241306,0.243303,0.172946,0.003625,NORMAL,1057,4231,0
55277894,983,141,SPARK_POS_OK,0.173031,0.221609,0.233508,0.235673,NORMAL,986,140,SPARK_POS_OK,0.241213,0.243213,0.172861,0.003614,NORMAL,1054,4277,0
55334894,984,131,SPARK_POS_OK,0.172935,0.221484,0.233424,0.235513,NORMAL,987,130,SPARK_POS_OK,0.241047,0.243092,0.172771,0.003617,NORMAL,1048,4254,0
55391894,985,129,SPARK_POS_OK,0.172841,0.221410,0.233307,0.235420,NORMAL,988,130,SPARK_POS_OK,0.240950,0.242991,0.172690,0.003616,NORMAL,1049,4157,0
55449894,986,121,SPARK_POS_OK,0.172748,0.221290,0.233184,0.235296,NORMAL,989,120,SPARK_POS_OK,0.240864,0.242877,0.172592,0.003625,NORMAL,1043,4222,0
55506894,987,119,SPARK_POS_OK,0.172647,0.221215,0.233061,0.235195,NORMAL,990,120,SPARK_POS_OK,0.240753,0.242780,0.172480,0.003640,NORMAL,1043,4198,0
55564894,988,121,SPARK_POS_OK,0.172533,0.221091,0.232973,0.235078,NORMAL,991,120,SPARK_POS_OK,0.240631,0.242653,0.172416,0.003634,NORMAL,1034,4224,0
55623894,989,121,SPARK_POS_OK,0.172437,0.221025,0.232813,0.234967,NORMAL,992,120,SPARK_POS_OK,0.240516,0.242522,0.172309,0.003656,NORMAL,1030,4156,0
55681894,990,121,SPARK_POS_OK,0.172341,0.220917,0.232717,0.234841,NORMAL,993,120,SPARK_POS_OK,0.240397,0.242425,0.172216,0.003625,NORMAL,1027,4163,0
55740894,991,120,SPARK_POS_OK,0.172234,0.220792,0.232614,0.234712,NORMAL,994,120,SPARK_POS_OK,0.240303,0.242295,0.172144,0.003639,NORMAL,1024,4232,0
55798894,992,120,SPARK_POS_OK,0.172144,0.220699,0.232477,0.234637,NORMAL,995,120,SPARK_POS_OK,0.240181,0.242188,0.172036,0.003632,NORMAL,1022,4191,0
55857894,993,130,SPARK_POS_OK,0.172038,0.220593,0.232363,0.234499,NORMAL,996,129,SPARK_POS_OK,0.240095,0.242084,0.171948,0.003615,NORMAL,1018,4247,0
55916894,994,130,SPARK_POS_OK,0.171934,0.220514,0.232289,0.234380,NORMAL,997,130,SPARK_POS_OK,0.240006,0.241980,0.171863,0.003595,NORMAL,1020,4220,0
55975894,995,130,SPARK_POS_OK,0.171849,0.220422,0.232148,0.234308,NORMAL,998,131,SPARK_POS_OK,0.239871,0.241846,0.171753,0.003628,NORMAL,1017,4156,0
56034894,996,140,SPARK_POS_OK,0.171710,0.220300,0.232062,0.234135,NORMAL,999,128,SPARK_POS_OK,0.239764,0.241757,0.171660,0.003622,NORMAL,1014,4247,0
56093894,997,140,SPARK_POS_OK,0.171584,0.220205,0.231923,0.234075,NORMAL,1000,140,SPARK_POS_OK,0.239659,0.241607,0.171576,0.003605,NORMAL,1014,4276,0
56152900,998,141,SPARK_POS_OK,0.171525,0.220073,0.231818,0.233932,NORMAL,1001,140,SPARK_POS_OK,0.239537,0.241546,0.171494,0.003622,NORMAL,1011,4153,0
56212894,999,141,SPARK_POS_OK,0.171409,0.219982,0.231696,0.233833,NORMAL,1002,140,SPARK_POS_OK,0.239413,0.241408,0.171388,0.003623,NORMAL,1010,4233,0
56271894,1000,151,SPARK_POS_OK,0.171313,0.219899,0.231600,0.233698,NORMAL,1003,151,SPARK_POS_OK,0.239316,0.241311,0.171290,0.003623,NORMAL,1008,4221,0
56331894,1001,150,SPARK_POS_OK,0.171214,0.219794,0.231485,0.233610,NORMAL,1004,150,SPARK_POS_OK,0.239228,0.241202,0.171193,0.003611,NORMAL,1009,4261,0
56390894,1002,150,SPARK_POS_OK,0.171118,0.219672,0.231362,0.233514,NORMAL,1005,150,SPARK_POS_OK,0.239084,0.241068,0.171105,0.003620,NORMAL,1010,4217,0
56450894,1003,150,SPARK_POS_OK,0.170998,0.219589,0.231270,0.233375,NORMAL,1006,150,SPARK_POS_OK,0.238969,0.240975,0.171028,0.003622,NORMAL,1011,4222,0
56509894,1004,150,SPARK_POS_OK,0.170899,0.219505,0.231161,0.233266,NORMAL,1007,151,SPARK_POS_OK,0.238878,0.240844,0.170931,0.003621,NORMAL,1013,4195,0
56568894,1005,150,SPARK_POS_OK,0.170801,0.219401,0.231034,0.233170,NORMAL,1008,151,SPARK_POS_OK,0.238786,0.240709,0.170842,0.003604,NORMAL,1011,4221,0
56627894,1006,150,SPARK_POS_OK,0.170709,0.219285,0.230920,0.233046,NORMAL,1009,150,SPARK_POS_OK,0.238663,0.240649,0.170770,0.003610,NORMAL,1012,4267,0
56687894,1007,161,SPARK_POS_OK,0.170597,0.219198,0.230805,0.232953,NORMAL,1010,150,SPARK_POS_OK,0.238556,0.240501,0.170655,0.003626,NORMAL,1010,4217,0
56746894,1008,161,SPARK_POS_OK,0.170508,0.219094,0.230714,0.232818,NORMAL,1011,160,SPARK_POS_OK,0.238431,0.240412,0.170583,0.003611,NORMAL,1010,4189,0
56806894,1009,160,SPARK_POS_OK,0.170414,0.219002,0.230615,0.232709,NORMAL,1012,159,SPARK_POS_OK,0.238371,0.240313,0.170481,0.003620,NORMAL,1010,4264,0
56865894,1010,160,SPARK_POS_OK,0.170291,0.218900,0.230491,0.232625,NORMAL,1013,160,SPARK_POS_OK,0.238225,0.240183,0.170389,0.003610,NORMAL,1011,4192,0
56924894,1011,160,SPARK_POS_OK,0.170199,0.218821,0.230367,0.232511,NORMAL,1014,160,SPARK_POS_OK,0.238116,0.240076,0.170326,0.003639,NORMAL,1012,4206,0
56983894,1012,160,SPARK_POS_OK,0.170107,0.218716,0.230243,0.232403,NORMAL,1015,161,SPARK_POS_OK,0.238000,0.239963,0.170224,0.003619,NORMAL,1014,4239,0
57042894,1013,161,SPARK_POS_OK,0.169992,0.218605,0.230156,0.232281,NORMAL,1016,161,SPARK_POS_OK,0.237895,0.239862,0.170106,0.003601,NORMAL,1016,4258,0
57101894,1014,160,SPARK_POS_OK,0.169904,0.218504,0.230020,0.232170,NORMAL,1017,161,SPARK_POS_OK,0.237796,0.239727,0.170028,0.003614,NORMAL,1015,4216,0
57160894,1015,160,SPARK_POS_OK,0.169811,0.218436,0.229915,0.232031,NORMAL,1018,160,SPARK_POS_OK,0.237724,0.239649,0.169947,0.003592,NORMAL,1015,4216,0
57220894,1016,171,SPARK_POS_OK,0.169690,0.218344,0.229853,0.231928,NORMAL,1019,170,SPARK_POS_OK,0.237590,0.239527,0.169848,0.003619,NORMAL,1014,4258,0
57279894,1017,171,SPARK_POS_OK,0.169574,0.218239,0.229714,0.231815,NORMAL,1020,170,SPARK_POS_OK,0.237497,0.239438,0.169757,0.003595,NORMAL,1015,4218,0
57338894,1018,171,SPARK_POS_OK,0.169488,0.218148,0.229599,0.231684,NORMAL,1021,170,SPARK_POS_OK,0.237364,0.239320,0.169677,0.003618,NORMAL,1016,4220,0
57397894,1019,170,SPARK_POS_OK,0.169376,0.218035,0.229491,0.231606,NORMAL,1022,170,SPARK_POS_OK,0.237283,0.239204,0.169593,0.003594,NORMAL,1018,4223,0
57455894,1020,170,SPARK_POS_OK,0.169286,0.217936,0.229365,0.231490,NORMAL,1023,170,SPARK_POS_OK,0.237159,0.239098,0.169486,0.003607,NORMAL,1021,4256,0
57514894,1021,170,SPARK_POS_OK,0.169184,0.217842,0.229250,0.231389,NORMAL,1024,170,SPARK_POS_OK,0.237051,0.238982,0.169410,0.003601,NORMAL,1021,4205,0
57573894,1022,170,SPARK_POS_OK,0.169092,0.217730,0.229179,0.231260,NORMAL,1025,170,SPARK_POS_OK,0.236936,0.238863,0.169286,0.003614,NORMAL,1024,4171,0
57631894,1023,180,SPARK_POS_OK,0.169008,0.217618,0.229036,0.231152,NORMAL,1026,181,SPARK_POS_OK,0.236813,0.238746,0.169223,0.003630,NORMAL,1024,4163,0
57690894,1024,180,SPARK_POS_OK,0.168919,0.217549,0.228928,0.231032,NORMAL,1027,181,SPARK_POS_OK,0.236756,0.238685,0.169133,0.003594,NORMAL,1025,4207,0
1 TS EVENTS_12 DLY_12 STAT_12 V_12_1 V_12_2 V_12_3 V_12_4 IGNITION_MODE_12 EVENTS_34 DLY_34 STAT_34 V_34_1 V_34_2 V_34_3 V_34_4 IGNITION_MODE_34 ENGINE_RPM ADC_READTIME N_QUEUE_ERRORS
2 10821894 171 220 SPARK_NEG_OK 0.291874 0.321984 0.352346 0.354453 SOFT_START 171 221 SPARK_NEG_OK 0.356878 0.361823 0.277541 0.004770 SOFT_START 1293 4274 0
3 10867894 172 220 SPARK_NEG_OK 0.291641 0.321847 0.352141 0.354271 SOFT_START 172 220 SPARK_NEG_OK 0.356699 0.361621 0.277369 0.004770 SOFT_START 1302 4207 0
4 10913894 173 220 SPARK_NEG_OK 0.291452 0.321704 0.351960 0.354081 SOFT_START 173 220 SPARK_NEG_OK 0.356535 0.361444 0.277177 0.004786 SOFT_START 1302 4261 0
5 10959894 174 221 SPARK_NEG_OK 0.291214 0.321550 0.351793 0.353897 SOFT_START 174 220 SPARK_NEG_OK 0.356338 0.361255 0.276995 0.004792 SOFT_START 1310 4269 0
6 11004895 175 220 SPARK_NEG_OK 0.290992 0.321397 0.351586 0.353711 SOFT_START 175 190 SPARK_NEG_OK 0.356162 0.361081 0.276814 0.004815 SOFT_START 1312 4244 0
7 11050894 176 190 SPARK_NEG_OK 0.290810 0.321243 0.351415 0.353529 SOFT_START 176 191 SPARK_NEG_OK 0.355985 0.360872 0.276650 0.004836 SOFT_START 1317 4224 0
8 11095894 177 190 SPARK_NEG_OK 0.290591 0.321098 0.351211 0.353335 SOFT_START 177 190 SPARK_NEG_OK 0.355766 0.360683 0.276479 0.004852 SOFT_START 1319 4206 0
9 11141894 178 150 SPARK_NEG_OK 0.290401 0.320932 0.351018 0.353144 SOFT_START 178 150 SPARK_NEG_OK 0.355611 0.360506 0.276300 0.004860 SOFT_START 1319 4163 0
10 11186894 179 151 SPARK_NEG_OK 0.290195 0.320794 0.350831 0.352983 SOFT_START 179 150 SPARK_NEG_OK 0.355431 0.360326 0.276120 0.004873 SOFT_START 1322 4264 0
11 11232894 180 120 SPARK_NEG_OK 0.290006 0.320647 0.350667 0.352789 SOFT_START 180 120 SPARK_NEG_OK 0.355256 0.360150 0.275930 0.004894 SOFT_START 1320 4196 0
12 11277894 181 120 SPARK_NEG_OK 0.289753 0.320502 0.350458 0.352589 SOFT_START 181 121 SPARK_NEG_OK 0.355072 0.359924 0.275752 0.004888 SOFT_START 1322 4272 0
13 11322894 182 121 SPARK_NEG_OK 0.289555 0.320359 0.350283 0.352405 SOFT_START 182 90 SPARK_NEG_OK 0.354874 0.359756 0.275572 0.004894 SOFT_START 1322 4203 0
14 11368894 183 90 SPARK_NEG_OK 0.289374 0.320207 0.350096 0.352215 SOFT_START 183 90 SPARK_NEG_OK 0.354710 0.359569 0.275415 0.004900 SOFT_START 1312 4157 0
15 11414894 184 91 SPARK_NEG_OK 0.289163 0.320063 0.349897 0.352047 SOFT_START 184 61 SPARK_NEG_OK 0.354533 0.359383 0.275223 0.004900 SOFT_START 1314 4224 0
16 11460894 185 60 SPARK_NEG_OK 0.288991 0.319898 0.349711 0.351868 SOFT_START 185 60 SPARK_NEG_OK 0.354339 0.359212 0.275054 0.004936 SOFT_START 1307 4160 0
17 11506894 186 60 SPARK_NEG_OK 0.288769 0.319761 0.349534 0.351666 SOFT_START 186 61 SPARK_NEG_OK 0.354161 0.359017 0.274898 0.004913 SOFT_START 1302 4227 0
18 11552894 187 30 SPARK_NEG_OK 0.288572 0.319604 0.349340 0.351484 SOFT_START 187 30 SPARK_NEG_OK 0.353971 0.358836 0.274721 0.004925 SOFT_START 1294 4175 0
19 11599894 188 28 SPARK_NEG_OK 0.288355 0.319456 0.349131 0.351307 SOFT_START 188 30 SPARK_NEG_OK 0.353799 0.358637 0.274544 0.004942 SOFT_START 1288 4275 0
20 11765894 189 220 SPARK_POS_OK 0.288172 0.319344 0.349020 0.351149 NORMAL 189 220 SPARK_POS_OK 0.353638 0.358481 0.274398 0.004628 NORMAL 1266 4262 0
21 11812894 190 221 SPARK_POS_OK 0.287986 0.319201 0.348818 0.350974 NORMAL 190 220 SPARK_POS_OK 0.353460 0.358317 0.274234 0.004650 NORMAL 1259 4216 0
22 11861894 191 200 SPARK_POS_OK 0.287738 0.319054 0.348635 0.350789 NORMAL 191 200 SPARK_POS_OK 0.353298 0.358120 0.274066 0.004659 NORMAL 1238 4274 0
23 11909894 192 201 SPARK_POS_OK 0.287534 0.318898 0.348458 0.350605 NORMAL 192 200 SPARK_POS_OK 0.353095 0.357934 0.273899 0.004672 NORMAL 1239 4247 0
24 11958894 193 170 SPARK_POS_OK 0.287327 0.318753 0.348269 0.350417 NORMAL 193 200 SPARK_POS_OK 0.352935 0.357761 0.273730 0.004690 NORMAL 1227 4264 0
25 12007894 194 170 SPARK_POS_OK 0.287136 0.318620 0.348067 0.350251 NORMAL 194 171 SPARK_POS_OK 0.352752 0.357563 0.273559 0.004696 NORMAL 1216 4158 0
26 12057894 195 141 SPARK_POS_OK 0.286947 0.318474 0.347898 0.350049 NORMAL 195 170 SPARK_POS_OK 0.352559 0.357398 0.273376 0.004699 NORMAL 1205 4218 0
27 12107894 196 140 SPARK_POS_OK 0.286708 0.318314 0.347713 0.349872 NORMAL 196 140 SPARK_POS_OK 0.352387 0.357202 0.273208 0.004697 NORMAL 1195 4280 0
28 12158894 197 110 SPARK_POS_OK 0.286518 0.318181 0.347544 0.349692 NORMAL 197 140 SPARK_POS_OK 0.352211 0.357017 0.273015 0.004702 NORMAL 1183 4229 0
29 12209894 198 111 SPARK_POS_OK 0.286322 0.318015 0.347342 0.349513 NORMAL 198 110 SPARK_POS_OK 0.352041 0.356835 0.272858 0.004721 NORMAL 1173 4163 0
30 12261894 199 90 SPARK_POS_OK 0.286103 0.317878 0.347158 0.349329 NORMAL 199 110 SPARK_POS_OK 0.351862 0.356678 0.272691 0.004691 NORMAL 1161 4237 0
31 12313894 200 90 SPARK_POS_OK 0.285903 0.317712 0.346979 0.349131 NORMAL 200 91 SPARK_POS_OK 0.351683 0.356466 0.272512 0.004713 NORMAL 1151 4264 0
32 12366894 201 71 SPARK_POS_OK 0.285721 0.317584 0.346802 0.348973 NORMAL 201 92 SPARK_POS_OK 0.351498 0.356287 0.272346 0.004697 NORMAL 1138 4196 0
33 12419894 202 71 SPARK_POS_OK 0.285524 0.317419 0.346613 0.348784 NORMAL 202 70 SPARK_POS_OK 0.351300 0.356096 0.272186 0.004708 NORMAL 1126 4156 0
34 12473894 203 60 SPARK_POS_OK 0.285331 0.317279 0.346447 0.348594 NORMAL 203 70 SPARK_POS_OK 0.351147 0.355921 0.271999 0.004705 NORMAL 1113 4269 0
35 12527894 204 60 SPARK_POS_OK 0.285091 0.317123 0.346253 0.348431 NORMAL 204 61 SPARK_POS_OK 0.350962 0.355725 0.271855 0.004699 NORMAL 1102 4243 0
36 12582894 205 60 SPARK_POS_OK 0.284925 0.317021 0.346054 0.348216 NORMAL 205 61 SPARK_POS_OK 0.350796 0.355549 0.271656 0.004687 NORMAL 1091 4195 0
37 12638894 206 60 SPARK_POS_OK 0.284721 0.316844 0.345879 0.348051 NORMAL 206 61 SPARK_POS_OK 0.350621 0.355390 0.271497 0.004652 NORMAL 1082 4239 0
38 12694894 207 60 SPARK_POS_OK 0.284523 0.316696 0.345726 0.347897 NORMAL 207 61 SPARK_POS_OK 0.350435 0.355192 0.271319 0.004679 NORMAL 1065 4209 0
39 12750894 208 60 SPARK_POS_OK 0.284311 0.316560 0.345530 0.347692 NORMAL 208 60 SPARK_POS_OK 0.350261 0.355031 0.271155 0.004650 NORMAL 1066 4228 0
40 12807894 209 60 SPARK_POS_OK 0.284136 0.316435 0.345343 0.347521 NORMAL 209 60 SPARK_POS_OK 0.350083 0.354824 0.270969 0.004657 NORMAL 1050 4179 0
41 12864894 210 60 SPARK_POS_OK 0.283932 0.316269 0.345162 0.347337 NORMAL 210 60 SPARK_POS_OK 0.349925 0.354653 0.270828 0.004632 NORMAL 1051 4177 0
42 12922894 211 70 SPARK_POS_OK 0.283749 0.316133 0.344989 0.347164 NORMAL 211 70 SPARK_POS_OK 0.349733 0.354481 0.270671 0.004617 NORMAL 1034 4180 0
43 12981894 212 80 SPARK_POS_OK 0.283555 0.315993 0.344810 0.346988 NORMAL 212 69 SPARK_POS_OK 0.349549 0.354288 0.270514 0.004611 NORMAL 1027 4192 0
44 13040894 213 80 SPARK_POS_OK 0.283352 0.315846 0.344626 0.346801 NORMAL 213 81 SPARK_POS_OK 0.349369 0.354108 0.270325 0.004593 NORMAL 1021 4268 0
45 13099894 214 90 SPARK_POS_OK 0.283144 0.315697 0.344451 0.346639 NORMAL 214 81 SPARK_POS_OK 0.349219 0.353949 0.270138 0.004584 NORMAL 1015 4275 0
46 13158894 215 90 SPARK_POS_OK 0.282967 0.315561 0.344267 0.346466 NORMAL 215 91 SPARK_POS_OK 0.349048 0.353755 0.269985 0.004572 NORMAL 1012 4186 0
47 13217894 216 110 SPARK_POS_OK 0.282770 0.315417 0.344096 0.346274 NORMAL 216 110 SPARK_POS_OK 0.348860 0.353565 0.269793 0.004562 NORMAL 1006 4189 0
48 13277894 217 111 SPARK_POS_OK 0.282574 0.315275 0.343914 0.346095 NORMAL 217 110 SPARK_POS_OK 0.348682 0.353402 0.269661 0.004547 NORMAL 1007 4241 0
49 13337894 218 130 SPARK_POS_OK 0.282375 0.315123 0.343747 0.345913 NORMAL 218 130 SPARK_POS_OK 0.348535 0.353219 0.269510 0.004527 NORMAL 1003 4217 0
50 13397894 219 140 SPARK_POS_OK 0.282168 0.314994 0.343540 0.345718 NORMAL 219 130 SPARK_POS_OK 0.348333 0.353041 0.269329 0.004525 NORMAL 1002 4247 0
51 13456894 220 140 SPARK_POS_OK 0.281945 0.314833 0.343373 0.345567 NORMAL 220 140 SPARK_POS_OK 0.348171 0.352871 0.269172 0.004499 NORMAL 1002 4246 0
52 13516894 221 160 SPARK_POS_OK 0.281780 0.314691 0.343198 0.345380 NORMAL 221 141 SPARK_POS_OK 0.347996 0.352697 0.268990 0.004496 NORMAL 1000 4185 0
53 13576894 222 158 SPARK_POS_OK 0.281596 0.314552 0.343024 0.345215 NORMAL 222 161 SPARK_POS_OK 0.347838 0.352506 0.268822 0.004497 NORMAL 1001 4161 0
54 13636894 223 181 SPARK_POS_OK 0.281394 0.314416 0.342835 0.345027 NORMAL 223 180 SPARK_POS_OK 0.347647 0.352321 0.268661 0.004486 NORMAL 1004 4179 0
55 13696894 224 181 SPARK_POS_OK 0.281194 0.314263 0.342656 0.344863 NORMAL 224 180 SPARK_POS_OK 0.347478 0.352163 0.268500 0.004463 NORMAL 1005 4245 0
56 13755894 225 201 SPARK_POS_OK 0.281022 0.314121 0.342464 0.344678 NORMAL 225 200 SPARK_POS_OK 0.347285 0.351969 0.268348 0.004470 NORMAL 1011 4148 0
57 13814894 226 220 SPARK_POS_OK 0.280838 0.313963 0.342288 0.344507 NORMAL 226 200 SPARK_POS_OK 0.347126 0.351819 0.268160 0.004444 NORMAL 1015 4167 0
58 13873894 227 220 SPARK_POS_OK 0.280629 0.313827 0.342121 0.344330 NORMAL 227 220 SPARK_POS_OK 0.346951 0.351624 0.267985 0.004456 NORMAL 1021 4220 0
59 13931894 228 238 SPARK_POS_OK 0.280473 0.313697 0.341949 0.344143 NORMAL 228 221 SPARK_POS_OK 0.346759 0.351441 0.267839 0.004458 NORMAL 1024 4167 0
60 13990894 229 240 SPARK_POS_OK 0.280264 0.313526 0.341761 0.343969 NORMAL 229 240 SPARK_POS_OK 0.346602 0.351270 0.267669 0.004433 NORMAL 1029 4269 0
61 14047894 230 11 SPARK_NEG_OK 0.280050 0.313401 0.341582 0.343786 SOFT_START 230 12 SPARK_NEG_OK 0.346419 0.351073 0.267512 0.004433 SOFT_START 1032 4255 0
62 14105894 231 11 SPARK_NEG_OK 0.279852 0.313249 0.341405 0.343619 SOFT_START 231 12 SPARK_NEG_OK 0.346251 0.350896 0.267332 0.004425 SOFT_START 1038 4181 0
63 14162894 232 40 SPARK_NEG_OK 0.279679 0.313119 0.341244 0.343432 SOFT_START 232 41 SPARK_NEG_OK 0.346085 0.350717 0.267166 0.004453 SOFT_START 1049 4176 0
64 14219894 233 40 SPARK_NEG_OK 0.279474 0.312965 0.341028 0.343263 SOFT_START 233 41 SPARK_NEG_OK 0.345911 0.350540 0.267016 0.004442 SOFT_START 1050 4248 0
65 14275894 234 60 SPARK_NEG_OK 0.279295 0.312825 0.340890 0.343099 SOFT_START 234 61 SPARK_NEG_OK 0.345735 0.350363 0.266851 0.004426 SOFT_START 1065 4198 0
66 14331894 235 80 SPARK_NEG_OK 0.279090 0.312679 0.340686 0.342902 SOFT_START 235 61 SPARK_NEG_OK 0.345562 0.350190 0.266668 0.004430 SOFT_START 1074 4207 0
67 14387894 236 80 SPARK_NEG_OK 0.278901 0.312548 0.340523 0.342727 SOFT_START 236 81 SPARK_NEG_OK 0.345393 0.350004 0.266502 0.004441 SOFT_START 1084 4221 0
68 14441894 237 110 SPARK_NEG_OK 0.278722 0.312400 0.340346 0.342571 SOFT_START 237 80 SPARK_NEG_OK 0.345206 0.349820 0.266361 0.004433 SOFT_START 1092 4190 0
69 14496894 238 111 SPARK_NEG_OK 0.278538 0.312257 0.340148 0.342380 SOFT_START 238 110 SPARK_NEG_OK 0.345017 0.349650 0.266191 0.004449 SOFT_START 1102 4163 0
70 14550894 239 131 SPARK_NEG_OK 0.278317 0.312113 0.339990 0.342190 SOFT_START 239 110 SPARK_NEG_OK 0.344860 0.349460 0.266011 0.004453 SOFT_START 1110 4260 0
71 14603894 240 130 SPARK_NEG_OK 0.278129 0.311985 0.339815 0.342011 SOFT_START 240 130 SPARK_NEG_OK 0.344681 0.349284 0.265859 0.004457 SOFT_START 1121 4219 0
72 14656894 241 160 SPARK_NEG_OK 0.277947 0.311831 0.339648 0.341843 SOFT_START 241 130 SPARK_NEG_OK 0.344517 0.349094 0.265678 0.004458 SOFT_START 1131 4210 0
73 14709894 242 160 SPARK_NEG_OK 0.277737 0.311708 0.339428 0.341673 SOFT_START 242 160 SPARK_NEG_OK 0.344340 0.348915 0.265509 0.004467 SOFT_START 1143 4259 0
74 14761894 243 201 SPARK_NEG_OK 0.277543 0.311542 0.339262 0.341479 SOFT_START 243 160 SPARK_NEG_OK 0.344167 0.348761 0.265323 0.004476 SOFT_START 1154 4244 0
75 14812894 244 200 SPARK_NEG_OK 0.277353 0.311390 0.339096 0.341303 SOFT_START 244 200 SPARK_NEG_OK 0.343997 0.348579 0.265188 0.004480 SOFT_START 1168 4206 0
76 14863894 245 220 SPARK_NEG_OK 0.277141 0.311238 0.338919 0.341144 SOFT_START 245 201 SPARK_NEG_OK 0.343816 0.348403 0.265033 0.004494 SOFT_START 1179 4250 0
77 14914894 246 221 SPARK_NEG_OK 0.276940 0.311101 0.338711 0.340955 SOFT_START 246 220 SPARK_NEG_OK 0.343642 0.348225 0.264858 0.004509 SOFT_START 1193 4254 0
78 14963894 247 219 SPARK_NEG_OK 0.276753 0.310962 0.338569 0.340778 SOFT_START 247 220 SPARK_NEG_OK 0.343467 0.348055 0.264688 0.004524 SOFT_START 1204 4171 0
79 15013894 248 220 SPARK_NEG_OK 0.276549 0.310797 0.338376 0.340604 SOFT_START 248 221 SPARK_NEG_OK 0.343291 0.347858 0.264544 0.004519 SOFT_START 1217 4238 0
80 15062894 249 220 SPARK_NEG_OK 0.276359 0.310670 0.338200 0.340418 SOFT_START 249 220 SPARK_NEG_OK 0.343134 0.347682 0.264333 0.004538 SOFT_START 1227 4279 0
81 15110894 250 220 SPARK_NEG_OK 0.276158 0.310534 0.338027 0.340244 SOFT_START 250 221 SPARK_NEG_OK 0.342966 0.347517 0.264202 0.004557 SOFT_START 1239 4249 0
82 15158894 251 220 SPARK_NEG_OK 0.275975 0.310376 0.337833 0.340089 SOFT_START 251 221 SPARK_NEG_OK 0.342786 0.347318 0.264034 0.004550 SOFT_START 1239 4172 0
83 15206894 252 220 SPARK_NEG_OK 0.275763 0.310252 0.337676 0.339896 SOFT_START 252 220 SPARK_NEG_OK 0.342599 0.347157 0.263843 0.004563 SOFT_START 1258 4282 0
84 15254894 253 221 SPARK_NEG_OK 0.275539 0.310127 0.337480 0.339708 SOFT_START 253 222 SPARK_NEG_OK 0.342442 0.346959 0.263690 0.004616 SOFT_START 1259 4254 0
85 15301894 254 220 SPARK_NEG_OK 0.275350 0.309954 0.337303 0.339510 SOFT_START 254 220 SPARK_NEG_OK 0.342258 0.346802 0.263526 0.004594 SOFT_START 1278 4273 0
86 15347894 255 220 SPARK_NEG_OK 0.275174 0.309796 0.337130 0.339362 SOFT_START 255 220 SPARK_NEG_OK 0.342102 0.346624 0.263355 0.004622 SOFT_START 1280 4205 0
87 15394894 256 220 SPARK_NEG_OK 0.274967 0.309659 0.336950 0.339174 SOFT_START 256 221 SPARK_NEG_OK 0.341921 0.346425 0.263182 0.004622 SOFT_START 1297 4237 0
88 15440894 257 223 SPARK_NEG_OK 0.274789 0.309511 0.336785 0.338994 SOFT_START 257 220 SPARK_NEG_OK 0.341733 0.346255 0.263042 0.004638 SOFT_START 1299 4182 0
89 15486894 258 221 SPARK_NEG_OK 0.274593 0.309373 0.336576 0.338819 SOFT_START 258 221 SPARK_NEG_OK 0.341574 0.346088 0.262862 0.004668 SOFT_START 1305 4208 0
90 15531894 259 220 SPARK_NEG_OK 0.274363 0.309222 0.336419 0.338640 SOFT_START 259 220 SPARK_NEG_OK 0.341392 0.345899 0.262686 0.004668 SOFT_START 1313 4277 0
91 15577894 260 221 SPARK_NEG_OK 0.274186 0.309085 0.336248 0.338470 SOFT_START 260 220 SPARK_NEG_OK 0.341223 0.345733 0.262538 0.004680 SOFT_START 1318 4237 0
92 15622894 261 220 SPARK_NEG_OK 0.273988 0.308942 0.336065 0.338274 SOFT_START 261 221 SPARK_NEG_OK 0.341040 0.345555 0.262377 0.004697 SOFT_START 1326 4191 0
93 15667894 262 220 SPARK_NEG_OK 0.273785 0.308786 0.335875 0.338117 SOFT_START 262 220 SPARK_NEG_OK 0.340880 0.345359 0.262205 0.004693 SOFT_START 1326 4279 0
94 15712894 263 221 SPARK_NEG_OK 0.273591 0.308653 0.335709 0.337934 SOFT_START 263 221 SPARK_NEG_OK 0.340683 0.345190 0.262039 0.004723 SOFT_START 1337 4203 0
95 15757894 264 220 SPARK_NEG_OK 0.273391 0.308498 0.335528 0.337751 SOFT_START 264 220 SPARK_NEG_OK 0.340517 0.345017 0.261879 0.004717 SOFT_START 1338 4179 0
96 15802894 265 220 SPARK_NEG_OK 0.273204 0.308351 0.335353 0.337588 SOFT_START 265 220 SPARK_NEG_OK 0.340366 0.344841 0.261700 0.004731 SOFT_START 1341 4241 0
97 15846894 266 221 SPARK_NEG_OK 0.273006 0.308197 0.335171 0.337414 SOFT_START 266 221 SPARK_NEG_OK 0.340174 0.344661 0.261554 0.004756 SOFT_START 1347 4230 0
98 15891894 267 180 SPARK_NEG_OK 0.272815 0.308082 0.334992 0.337222 SOFT_START 267 220 SPARK_NEG_OK 0.340018 0.344472 0.261397 0.004770 SOFT_START 1347 4268 0
99 15935894 268 180 SPARK_NEG_OK 0.272610 0.307922 0.334812 0.337040 SOFT_START 268 180 SPARK_NEG_OK 0.339837 0.344308 0.261219 0.004772 SOFT_START 1350 4241 0
100 15980894 269 181 SPARK_NEG_OK 0.272433 0.307770 0.334638 0.336877 SOFT_START 269 181 SPARK_NEG_OK 0.339680 0.344119 0.261047 0.004802 SOFT_START 1350 4210 0
101 16024894 270 150 SPARK_NEG_OK 0.272267 0.307639 0.334473 0.336711 SOFT_START 270 148 SPARK_NEG_OK 0.339497 0.343937 0.260897 0.004804 SOFT_START 1347 4244 0
102 16069894 271 150 SPARK_NEG_OK 0.272056 0.307497 0.334284 0.336515 SOFT_START 271 150 SPARK_NEG_OK 0.339306 0.343756 0.260709 0.004807 SOFT_START 1348 4158 0
103 16113894 272 140 SPARK_NEG_OK 0.271863 0.307337 0.334108 0.336345 SOFT_START 272 151 SPARK_NEG_OK 0.339141 0.343586 0.260540 0.004798 SOFT_START 1345 4239 0
104 16158894 273 140 SPARK_NEG_OK 0.271698 0.307201 0.333925 0.336167 SOFT_START 273 140 SPARK_NEG_OK 0.338959 0.343403 0.260389 0.004823 SOFT_START 1345 4167 0
105 16203894 274 130 SPARK_NEG_OK 0.271480 0.307058 0.333768 0.335989 SOFT_START 274 140 SPARK_NEG_OK 0.338812 0.343249 0.260221 0.004836 SOFT_START 1342 4271 0
106 16247894 275 130 SPARK_NEG_OK 0.271285 0.306922 0.333574 0.335815 SOFT_START 275 131 SPARK_NEG_OK 0.338630 0.343057 0.260075 0.004844 SOFT_START 1342 4232 0
107 16292894 276 130 SPARK_NEG_OK 0.271102 0.306773 0.333405 0.335645 SOFT_START 276 130 SPARK_NEG_OK 0.338458 0.342894 0.259930 0.004845 SOFT_START 1342 4194 0
108 16337894 277 120 SPARK_NEG_OK 0.270932 0.306615 0.333204 0.335463 SOFT_START 277 120 SPARK_NEG_OK 0.338296 0.342724 0.259750 0.004863 SOFT_START 1337 4147 0
109 16382894 278 120 SPARK_NEG_OK 0.270737 0.306486 0.333048 0.335265 SOFT_START 278 121 SPARK_NEG_OK 0.338100 0.342532 0.259584 0.004867 SOFT_START 1339 4276 0
110 16426894 279 110 SPARK_NEG_OK 0.270554 0.306343 0.332868 0.335113 SOFT_START 279 120 SPARK_NEG_OK 0.337940 0.342348 0.259439 0.004864 SOFT_START 1335 4170 0
111 16471894 280 111 SPARK_NEG_OK 0.270383 0.306209 0.332687 0.334929 SOFT_START 280 110 SPARK_NEG_OK 0.337764 0.342171 0.259267 0.004873 SOFT_START 1335 4177 0
112 16517894 281 90 SPARK_NEG_OK 0.270165 0.306048 0.332520 0.334755 SOFT_START 281 110 SPARK_NEG_OK 0.337594 0.341991 0.259075 0.004871 SOFT_START 1329 4272 0
113 16562894 282 90 SPARK_NEG_OK 0.269985 0.305896 0.332350 0.334590 SOFT_START 282 91 SPARK_NEG_OK 0.337431 0.341833 0.258943 0.004854 SOFT_START 1326 4247 0
114 16607894 283 91 SPARK_NEG_OK 0.269781 0.305758 0.332175 0.334412 SOFT_START 283 91 SPARK_NEG_OK 0.337263 0.341638 0.258790 0.004885 SOFT_START 1326 4220 0
115 16653894 284 70 SPARK_NEG_OK 0.269598 0.305635 0.331991 0.334242 SOFT_START 284 72 SPARK_NEG_OK 0.337071 0.341465 0.258601 0.004866 SOFT_START 1312 4258 0
116 16698894 285 71 SPARK_NEG_OK 0.269420 0.305482 0.331814 0.334067 SOFT_START 285 70 SPARK_NEG_OK 0.336933 0.341322 0.258471 0.004867 SOFT_START 1313 4192 0
117 16744894 286 40 SPARK_NEG_OK 0.269231 0.305305 0.331654 0.333915 SOFT_START 286 41 SPARK_NEG_OK 0.336744 0.341121 0.258281 0.004871 SOFT_START 1299 4180 0
118 16791894 287 40 SPARK_NEG_OK 0.269049 0.305214 0.331465 0.333707 SOFT_START 287 40 SPARK_NEG_OK 0.336584 0.340940 0.258129 0.004892 SOFT_START 1300 4187 0
119 16837894 288 30 SPARK_NEG_OK 0.268874 0.305048 0.331298 0.333550 SOFT_START 288 41 SPARK_NEG_OK 0.336404 0.340771 0.257971 0.004876 SOFT_START 1293 4201 0
120 16884894 289 30 SPARK_NEG_OK 0.268696 0.304921 0.331123 0.333374 SOFT_START 289 30 SPARK_NEG_OK 0.336235 0.340590 0.257808 0.004873 SOFT_START 1288 4174 0
121 16930894 290 12 SPARK_NEG_OK 0.268512 0.304756 0.330947 0.333184 SOFT_START 290 30 SPARK_NEG_OK 0.336077 0.340421 0.257648 0.004867 SOFT_START 1280 4275 0
122 16977894 291 11 SPARK_NEG_OK 0.268307 0.304621 0.330780 0.333019 SOFT_START 291 11 SPARK_NEG_OK 0.335906 0.340248 0.257477 0.004886 SOFT_START 1275 4182 0
123 17024894 292 12 SPARK_NEG_OK 0.268142 0.304487 0.330597 0.332844 SOFT_START 292 11 SPARK_NEG_OK 0.335712 0.340078 0.257326 0.004880 SOFT_START 1275 4223 0
124 17073894 293 240 SPARK_POS_OK 0.267931 0.304347 0.330408 0.332662 NORMAL 293 240 SPARK_POS_OK 0.335556 0.339900 0.257170 0.004864 NORMAL 1265 4283 0
125 17120894 294 241 SPARK_POS_OK 0.267733 0.304181 0.330238 0.332494 NORMAL 294 240 SPARK_POS_OK 0.335385 0.339734 0.257022 0.004860 NORMAL 1259 4237 0
126 17169894 295 210 SPARK_POS_OK 0.267549 0.304050 0.330071 0.332329 NORMAL 295 210 SPARK_POS_OK 0.335230 0.339558 0.256847 0.004850 NORMAL 1240 4221 0
127 17217894 296 211 SPARK_POS_OK 0.267379 0.303919 0.329908 0.332153 NORMAL 296 210 SPARK_POS_OK 0.335050 0.339391 0.256687 0.004830 NORMAL 1240 4255 0
128 17266894 297 190 SPARK_POS_OK 0.267209 0.303771 0.329717 0.331997 NORMAL 297 190 SPARK_POS_OK 0.334877 0.339213 0.256514 0.004860 NORMAL 1221 4165 0
129 17315894 298 190 SPARK_POS_OK 0.266992 0.303644 0.329559 0.331809 NORMAL 298 191 SPARK_POS_OK 0.334710 0.339048 0.256393 0.004833 NORMAL 1221 4259 0
130 17365894 299 160 SPARK_POS_OK 0.266833 0.303503 0.329363 0.331661 NORMAL 299 190 SPARK_POS_OK 0.334555 0.338853 0.256221 0.004839 NORMAL 1212 4189 0
131 17415894 300 160 SPARK_POS_OK 0.266654 0.303344 0.329211 0.331482 NORMAL 300 161 SPARK_POS_OK 0.334383 0.338693 0.256031 0.004812 NORMAL 1203 4190 0
132 17465894 301 141 SPARK_POS_OK 0.266449 0.303210 0.329055 0.331288 NORMAL 301 160 SPARK_POS_OK 0.334225 0.338532 0.255885 0.004814 NORMAL 1193 4273 0
133 17516894 302 140 SPARK_POS_OK 0.266245 0.303064 0.328864 0.331123 NORMAL 302 140 SPARK_POS_OK 0.334033 0.338354 0.255737 0.004802 NORMAL 1184 4273 0
134 17567894 303 110 SPARK_POS_OK 0.266058 0.302920 0.328710 0.330976 NORMAL 303 141 SPARK_POS_OK 0.333868 0.338184 0.255600 0.004779 NORMAL 1172 4268 0
135 17619894 304 110 SPARK_POS_OK 0.265878 0.302792 0.328532 0.330778 NORMAL 304 110 SPARK_POS_OK 0.333710 0.338012 0.255402 0.004783 NORMAL 1161 4227 0
136 17671894 305 81 SPARK_POS_OK 0.265690 0.302648 0.328369 0.330619 NORMAL 305 110 SPARK_POS_OK 0.333537 0.337849 0.255261 0.004770 NORMAL 1148 4232 0
137 17724894 306 80 SPARK_POS_OK 0.265476 0.302500 0.328174 0.330463 NORMAL 306 80 SPARK_POS_OK 0.333378 0.337679 0.255098 0.004752 NORMAL 1137 4264 0
138 17777894 307 60 SPARK_POS_OK 0.265328 0.302365 0.328012 0.330285 NORMAL 307 81 SPARK_POS_OK 0.333213 0.337498 0.254948 0.004761 NORMAL 1123 4191 0
139 17831894 308 60 SPARK_POS_OK 0.265142 0.302238 0.327851 0.330095 NORMAL 308 61 SPARK_POS_OK 0.333058 0.337338 0.254792 0.004728 NORMAL 1112 4244 0
140 17885894 309 30 SPARK_POS_OK 0.264945 0.302092 0.327675 0.329918 NORMAL 309 60 SPARK_POS_OK 0.332888 0.337162 0.254622 0.004697 NORMAL 1100 4201 0
141 17941894 310 31 SPARK_POS_OK 0.264768 0.301954 0.327485 0.329756 NORMAL 310 30 SPARK_POS_OK 0.332726 0.336969 0.254484 0.004701 NORMAL 1088 4164 0
142 17997894 311 12 SPARK_POS_OK 0.264581 0.301821 0.327319 0.329586 NORMAL 311 30 SPARK_POS_OK 0.332555 0.336813 0.254331 0.004685 NORMAL 1065 4223 0
143 18053894 312 12 SPARK_POS_OK 0.264429 0.301675 0.327158 0.329433 NORMAL 312 11 SPARK_POS_OK 0.332391 0.336652 0.254169 0.004653 NORMAL 1066 4203 0
144 18111894 313 12 SPARK_POS_OK 0.264220 0.301539 0.326988 0.329242 NORMAL 313 11 SPARK_POS_OK 0.332209 0.336474 0.254010 0.004625 NORMAL 1066 4239 0
145 18168897 314 12 SPARK_POS_OK 0.264052 0.301399 0.326822 0.329088 NORMAL 314 11 SPARK_POS_OK 0.332057 0.336303 0.253870 0.004619 NORMAL 1066 4191 0
146 18228894 315 12 SPARK_POS_OK 0.263894 0.301248 0.326648 0.328944 NORMAL 315 11 SPARK_POS_OK 0.331897 0.336123 0.253718 0.004594 NORMAL 1066 4234 0
147 18287894 316 12 SPARK_POS_OK 0.263721 0.301127 0.326463 0.328761 NORMAL 316 11 SPARK_POS_OK 0.331728 0.335987 0.253572 0.004570 NORMAL 1066 4157 0
148 18348894 317 12 SPARK_POS_OK 0.263575 0.300995 0.326326 0.328572 NORMAL 317 11 SPARK_POS_OK 0.331570 0.335803 0.253413 0.004551 NORMAL 1066 4152 0
149 18409894 318 12 SPARK_POS_OK 0.263376 0.300867 0.326142 0.328431 NORMAL 318 11 SPARK_POS_OK 0.331399 0.335646 0.253223 0.004531 NORMAL 1066 4212 0
150 18470894 319 12 SPARK_POS_OK 0.263219 0.300716 0.325989 0.328241 NORMAL 319 11 SPARK_POS_OK 0.331234 0.335476 0.253085 0.004523 NORMAL 1066 4170 0
151 18533894 320 12 SPARK_POS_OK 0.263063 0.300580 0.325815 0.328078 NORMAL 320 11 SPARK_POS_OK 0.331081 0.335301 0.252938 0.004483 NORMAL 1066 4166 0
152 18596894 321 12 SPARK_POS_OK 0.262910 0.300453 0.325649 0.327910 NORMAL 321 11 SPARK_POS_OK 0.330916 0.335144 0.252804 0.004457 NORMAL 1066 4165 0
153 18660894 322 12 SPARK_POS_OK 0.262725 0.300310 0.325455 0.327746 NORMAL 322 11 SPARK_POS_OK 0.330752 0.334975 0.252672 0.004439 NORMAL 1066 4218 0
154 18724894 323 12 SPARK_POS_OK 0.262533 0.300167 0.325316 0.327597 NORMAL 323 11 SPARK_POS_OK 0.330575 0.334817 0.252523 0.004401 NORMAL 1066 4189 0
155 18788894 324 12 SPARK_POS_OK 0.262383 0.300050 0.325135 0.327423 NORMAL 324 11 SPARK_POS_OK 0.330424 0.334643 0.252364 0.004385 NORMAL 1066 4180 0
156 18853894 325 31 SPARK_POS_OK 0.262214 0.299909 0.324991 0.327273 NORMAL 325 30 SPARK_POS_OK 0.330254 0.334481 0.252185 0.004376 NORMAL 75 4155 0
157 18918894 326 60 SPARK_POS_OK 0.262047 0.299770 0.324814 0.327099 NORMAL 326 30 SPARK_POS_OK 0.330110 0.334322 0.252017 0.004348 NORMAL 922 4204 0
158 18983894 327 61 SPARK_POS_OK 0.261842 0.299639 0.324641 0.326945 NORMAL 327 61 SPARK_POS_OK 0.329948 0.334149 0.251907 0.004337 NORMAL 922 4242 0
159 19048894 328 70 SPARK_POS_OK 0.261689 0.299488 0.324500 0.326771 NORMAL 328 70 SPARK_POS_OK 0.329792 0.333999 0.251749 0.004326 NORMAL 923 4197 0
160 19113894 329 99 SPARK_POS_OK 0.261513 0.299374 0.324318 0.326604 NORMAL 329 71 SPARK_POS_OK 0.329626 0.333806 0.251604 0.004297 NORMAL 923 4211 0
161 19178894 330 101 SPARK_POS_OK 0.261340 0.299222 0.324141 0.326428 NORMAL 330 100 SPARK_POS_OK 0.329466 0.333648 0.251442 0.004287 NORMAL 925 4204 0
162 19242894 331 140 SPARK_POS_OK 0.261175 0.299098 0.323993 0.326282 NORMAL 331 100 SPARK_POS_OK 0.329297 0.333476 0.251278 0.004270 NORMAL 927 4203 0
163 19307894 332 141 SPARK_POS_OK 0.261015 0.298949 0.323822 0.326133 NORMAL 332 140 SPARK_POS_OK 0.329157 0.333326 0.251157 0.004254 NORMAL 931 4168 0
164 19370894 333 180 SPARK_POS_OK 0.260856 0.298833 0.323690 0.325951 NORMAL 333 180 SPARK_POS_OK 0.328997 0.333153 0.251002 0.004216 NORMAL 941 4190 0
165 19434894 334 220 SPARK_POS_OK 0.260683 0.298681 0.323502 0.325797 NORMAL 334 180 SPARK_POS_OK 0.328824 0.333012 0.250846 0.004238 NORMAL 949 4212 0
166 19496894 335 220 SPARK_POS_OK 0.260522 0.298552 0.323358 0.325621 NORMAL 335 220 SPARK_POS_OK 0.328658 0.332820 0.250706 0.004205 NORMAL 958 4157 0
167 19558894 336 11 SPARK_NEG_OK 0.260323 0.298428 0.323166 0.325444 SOFT_START 336 12 SPARK_NEG_OK 0.328495 0.332637 0.250533 0.004199 SOFT_START 964 4228 0
168 19619894 337 11 SPARK_NEG_OK 0.260170 0.298282 0.323004 0.325284 SOFT_START 337 11 SPARK_NEG_OK 0.328336 0.332501 0.250398 0.004202 SOFT_START 979 4179 0
169 19679894 338 40 SPARK_NEG_OK 0.259990 0.298154 0.322841 0.325130 SOFT_START 338 41 SPARK_NEG_OK 0.328166 0.332343 0.250236 0.004218 SOFT_START 999 4268 0
170 19738894 339 80 SPARK_NEG_OK 0.259811 0.298021 0.322664 0.324945 SOFT_START 339 41 SPARK_NEG_OK 0.328009 0.332161 0.250092 0.004217 SOFT_START 1010 4162 0
171 19797894 340 83 SPARK_NEG_OK 0.259663 0.297867 0.322503 0.324783 SOFT_START 340 80 SPARK_NEG_OK 0.327846 0.332021 0.249950 0.004224 SOFT_START 1021 4232 0
172 19855894 341 110 SPARK_NEG_OK 0.259460 0.297735 0.322354 0.324625 SOFT_START 341 80 SPARK_NEG_OK 0.327682 0.331861 0.249802 0.004217 SOFT_START 1033 4260 0
173 19912899 342 110 SPARK_NEG_OK 0.259243 0.297609 0.322173 0.324457 SOFT_START 342 110 SPARK_NEG_OK 0.327532 0.331677 0.249640 0.004229 SOFT_START 1046 4266 0
174 19969894 343 140 SPARK_NEG_OK 0.259082 0.297482 0.322000 0.324315 SOFT_START 343 110 SPARK_NEG_OK 0.327353 0.331500 0.249475 0.004230 SOFT_START 1059 4277 0
175 20025894 344 140 SPARK_NEG_OK 0.258904 0.297315 0.321835 0.324124 SOFT_START 344 140 SPARK_NEG_OK 0.327191 0.331320 0.249317 0.004232 SOFT_START 1074 4183 0
176 20079894 345 170 SPARK_NEG_OK 0.258722 0.297176 0.321677 0.323954 SOFT_START 345 170 SPARK_NEG_OK 0.327038 0.331159 0.249147 0.004234 SOFT_START 1104 4216 0
177 20134894 346 170 SPARK_NEG_OK 0.258553 0.297052 0.321513 0.323796 SOFT_START 346 171 SPARK_NEG_OK 0.326892 0.331004 0.249031 0.004253 SOFT_START 1105 4196 0
178 20186894 347 210 SPARK_NEG_OK 0.258387 0.296900 0.321335 0.323642 SOFT_START 347 210 SPARK_NEG_OK 0.326720 0.330830 0.248892 0.004249 SOFT_START 1133 4172 0
179 20239894 348 211 SPARK_NEG_OK 0.258192 0.296764 0.321176 0.323435 SOFT_START 348 209 SPARK_NEG_OK 0.326536 0.330669 0.248723 0.004274 SOFT_START 1135 4239 0
180 20291894 349 222 SPARK_NEG_OK 0.258071 0.296631 0.321015 0.323313 SOFT_START 349 220 SPARK_NEG_OK 0.326385 0.330530 0.248555 0.004287 SOFT_START 1161 4170 0
181 20343894 350 220 SPARK_NEG_OK 0.257885 0.296487 0.320839 0.323126 SOFT_START 350 221 SPARK_NEG_OK 0.326209 0.330343 0.248409 0.004294 SOFT_START 1162 4166 0
182 20393894 351 221 SPARK_NEG_OK 0.257689 0.296348 0.320674 0.322964 SOFT_START 351 220 SPARK_NEG_OK 0.326070 0.330162 0.248275 0.004317 SOFT_START 1189 4243 0
183 20444894 352 220 SPARK_NEG_OK 0.257528 0.296219 0.320523 0.322800 SOFT_START 352 220 SPARK_NEG_OK 0.325900 0.329998 0.248111 0.004302 SOFT_START 1190 4243 0
184 20493894 353 220 SPARK_NEG_OK 0.257332 0.296090 0.320352 0.322620 SOFT_START 353 221 SPARK_NEG_OK 0.325734 0.329834 0.247976 0.004354 SOFT_START 1216 4255 0
185 20542894 354 220 SPARK_NEG_OK 0.257193 0.295956 0.320160 0.322452 SOFT_START 354 220 SPARK_NEG_OK 0.325580 0.329660 0.247832 0.004338 SOFT_START 1217 4187 0
186 20591894 355 220 SPARK_NEG_OK 0.257006 0.295811 0.320002 0.322289 SOFT_START 355 222 SPARK_NEG_OK 0.325417 0.329492 0.247651 0.004367 SOFT_START 1229 4172 0
187 20639894 356 221 SPARK_NEG_OK 0.256846 0.295683 0.319828 0.322133 SOFT_START 356 220 SPARK_NEG_OK 0.325261 0.329328 0.247501 0.004339 SOFT_START 1243 4173 0
188 20687894 357 222 SPARK_NEG_OK 0.256677 0.295523 0.319645 0.321972 SOFT_START 357 218 SPARK_NEG_OK 0.325086 0.329163 0.247350 0.004399 SOFT_START 1252 4254 0
189 20735894 358 221 SPARK_NEG_OK 0.256487 0.295391 0.319504 0.321789 SOFT_START 358 220 SPARK_NEG_OK 0.324938 0.329013 0.247198 0.004386 SOFT_START 1264 4257 0
190 20782894 359 220 SPARK_NEG_OK 0.256309 0.295264 0.319327 0.321630 SOFT_START 359 220 SPARK_NEG_OK 0.324761 0.328816 0.247033 0.004420 SOFT_START 1271 4271 0
191 20829894 360 221 SPARK_NEG_OK 0.256101 0.295115 0.319163 0.321459 SOFT_START 360 220 SPARK_NEG_OK 0.324587 0.328664 0.246886 0.004438 SOFT_START 1281 4264 0
192 20875894 361 220 SPARK_NEG_OK 0.255911 0.294976 0.318999 0.321298 SOFT_START 361 220 SPARK_NEG_OK 0.324433 0.328503 0.246757 0.004437 SOFT_START 1281 4259 0
193 20922894 362 220 SPARK_NEG_OK 0.255751 0.294830 0.318828 0.321140 SOFT_START 362 220 SPARK_NEG_OK 0.324269 0.328309 0.246596 0.004463 SOFT_START 1296 4230 0
194 20968894 363 220 SPARK_NEG_OK 0.255544 0.294704 0.318658 0.320951 SOFT_START 363 221 SPARK_NEG_OK 0.324112 0.328156 0.246429 0.004478 SOFT_START 1297 4251 0
195 21013894 364 220 SPARK_NEG_OK 0.255378 0.294563 0.318509 0.320779 SOFT_START 364 220 SPARK_NEG_OK 0.323953 0.327988 0.246264 0.004461 SOFT_START 1313 4155 0
196 21059894 365 221 SPARK_NEG_OK 0.255207 0.294417 0.318331 0.320619 SOFT_START 365 220 SPARK_NEG_OK 0.323799 0.327819 0.246127 0.004505 SOFT_START 1314 4242 0
197 21105894 366 220 SPARK_NEG_OK 0.255017 0.294299 0.318168 0.320468 SOFT_START 366 220 SPARK_NEG_OK 0.323625 0.327657 0.245991 0.004532 SOFT_START 1320 4253 0
198 21150894 367 220 SPARK_NEG_OK 0.254884 0.294146 0.318006 0.320298 SOFT_START 367 220 SPARK_NEG_OK 0.323460 0.327480 0.245815 0.004519 SOFT_START 1328 4154 0
199 21195894 368 210 SPARK_NEG_OK 0.254679 0.294014 0.317810 0.320133 SOFT_START 368 221 SPARK_NEG_OK 0.323297 0.327337 0.245692 0.004536 SOFT_START 1330 4259 0
200 21240894 369 210 SPARK_NEG_OK 0.254503 0.293881 0.317658 0.319958 SOFT_START 369 210 SPARK_NEG_OK 0.323118 0.327151 0.245520 0.004557 SOFT_START 1335 4247 0
201 21285894 370 211 SPARK_NEG_OK 0.254315 0.293742 0.317503 0.319797 SOFT_START 370 208 SPARK_NEG_OK 0.322980 0.326989 0.245395 0.004555 SOFT_START 1335 4234 0
202 21330894 371 160 SPARK_NEG_OK 0.254148 0.293601 0.317314 0.319611 SOFT_START 371 161 SPARK_NEG_OK 0.322809 0.326823 0.245209 0.004575 SOFT_START 1333 4216 0
203 21375894 372 160 SPARK_NEG_OK 0.253989 0.293456 0.317158 0.319450 SOFT_START 372 160 SPARK_NEG_OK 0.322645 0.326669 0.245063 0.004587 SOFT_START 1335 4210 0
204 21420894 373 131 SPARK_NEG_OK 0.253763 0.293311 0.317000 0.319297 SOFT_START 373 161 SPARK_NEG_OK 0.322486 0.326477 0.244898 0.004608 SOFT_START 1331 4250 0
205 21465894 374 130 SPARK_NEG_OK 0.253583 0.293167 0.316819 0.319125 SOFT_START 374 130 SPARK_NEG_OK 0.322325 0.326326 0.244773 0.004621 SOFT_START 1331 4251 0
206 21510894 375 100 SPARK_NEG_OK 0.253405 0.293046 0.316660 0.318956 SOFT_START 375 130 SPARK_NEG_OK 0.322174 0.326158 0.244617 0.004613 SOFT_START 1326 4256 0
207 21555894 376 98 SPARK_NEG_OK 0.253240 0.292909 0.316489 0.318796 SOFT_START 376 101 SPARK_NEG_OK 0.321996 0.325991 0.244480 0.004627 SOFT_START 1324 4171 0
208 21601894 377 100 SPARK_NEG_OK 0.253084 0.292753 0.316325 0.318621 SOFT_START 377 100 SPARK_NEG_OK 0.321842 0.325828 0.244313 0.004628 SOFT_START 1325 4224 0
209 21646894 378 71 SPARK_NEG_OK 0.252927 0.292641 0.316149 0.318452 SOFT_START 378 70 SPARK_NEG_OK 0.321690 0.325672 0.244193 0.004615 SOFT_START 1314 4211 0
210 21692894 379 70 SPARK_NEG_OK 0.252713 0.292499 0.315984 0.318302 SOFT_START 379 71 SPARK_NEG_OK 0.321518 0.325484 0.243992 0.004643 SOFT_START 1316 4226 0
211 21738894 380 44 SPARK_NEG_OK 0.252571 0.292348 0.315827 0.318130 SOFT_START 380 40 SPARK_NEG_OK 0.321364 0.325325 0.243841 0.004649 SOFT_START 1302 4176 0
212 21784894 381 41 SPARK_NEG_OK 0.252412 0.292211 0.315657 0.317964 SOFT_START 381 41 SPARK_NEG_OK 0.321205 0.325164 0.243707 0.004649 SOFT_START 1303 4154 0
213 21830894 382 25 SPARK_NEG_OK 0.252232 0.292082 0.315511 0.317797 SOFT_START 382 40 SPARK_NEG_OK 0.321046 0.325002 0.243568 0.004656 SOFT_START 1294 4204 0
214 21877894 383 25 SPARK_NEG_OK 0.252066 0.291921 0.315345 0.317625 SOFT_START 383 25 SPARK_NEG_OK 0.320892 0.324832 0.243430 0.004650 SOFT_START 1287 4265 0
215 22066894 384 221 SPARK_POS_OK 0.251943 0.291840 0.315213 0.317532 NORMAL 385 220 SPARK_POS_OK 0.320773 0.324718 0.243290 0.004334 NORMAL 1260 4187 0
216 22114894 385 220 SPARK_POS_OK 0.251784 0.291713 0.315040 0.317362 NORMAL 386 220 SPARK_POS_OK 0.320596 0.324549 0.243174 0.004328 NORMAL 1254 4207 0
217 22163894 386 201 SPARK_POS_OK 0.251599 0.291560 0.314904 0.317187 NORMAL 387 200 SPARK_POS_OK 0.320437 0.324401 0.243008 0.004365 NORMAL 1237 4244 0
218 22211894 387 200 SPARK_POS_OK 0.251435 0.291431 0.314730 0.317033 NORMAL 388 200 SPARK_POS_OK 0.320293 0.324231 0.242876 0.004377 NORMAL 1238 4199 0
219 22260894 388 201 SPARK_POS_OK 0.251231 0.291277 0.314555 0.316856 NORMAL 389 200 SPARK_POS_OK 0.320131 0.324057 0.242704 0.004392 NORMAL 1220 4242 0
220 22310894 389 200 SPARK_POS_OK 0.251068 0.291168 0.314403 0.316711 NORMAL 390 200 SPARK_POS_OK 0.319960 0.323902 0.242588 0.004395 NORMAL 1221 4206 0
221 22359894 390 200 SPARK_POS_OK 0.250910 0.291023 0.314248 0.316540 NORMAL 391 201 SPARK_POS_OK 0.319814 0.323752 0.242434 0.004389 NORMAL 1212 4163 0
222 22409894 391 201 SPARK_POS_OK 0.250749 0.290879 0.314057 0.316370 NORMAL 392 200 SPARK_POS_OK 0.319641 0.323569 0.242269 0.004386 NORMAL 1204 4223 0
223 22459894 392 200 SPARK_POS_OK 0.250592 0.290762 0.313917 0.316202 NORMAL 393 200 SPARK_POS_OK 0.319495 0.323399 0.242125 0.004408 NORMAL 1195 4181 0
224 22510894 393 200 SPARK_POS_OK 0.250397 0.290606 0.313741 0.316054 NORMAL 394 200 SPARK_POS_OK 0.319328 0.323240 0.241963 0.004426 NORMAL 1189 4274 0
225 22560894 394 180 SPARK_POS_OK 0.250229 0.290475 0.313578 0.315884 NORMAL 395 200 SPARK_POS_OK 0.319164 0.323087 0.241815 0.004414 NORMAL 1182 4152 0
226 22611894 395 180 SPARK_POS_OK 0.250061 0.290341 0.313404 0.315724 NORMAL 396 180 SPARK_POS_OK 0.319005 0.322919 0.241695 0.004420 NORMAL 1176 4214 0
227 22663894 396 160 SPARK_POS_OK 0.249893 0.290205 0.313265 0.315571 NORMAL 397 180 SPARK_POS_OK 0.318839 0.322757 0.241555 0.004427 NORMAL 1168 4185 0
228 22714894 397 161 SPARK_POS_OK 0.249780 0.290083 0.313102 0.315400 NORMAL 398 160 SPARK_POS_OK 0.318682 0.322593 0.241399 0.004421 NORMAL 1162 4158 0
229 22766894 398 130 SPARK_POS_OK 0.249581 0.289944 0.312937 0.315239 NORMAL 399 160 SPARK_POS_OK 0.318528 0.322440 0.241244 0.004424 NORMAL 1153 4225 0
230 22819894 399 130 SPARK_POS_OK 0.249429 0.289794 0.312774 0.315065 NORMAL 400 131 SPARK_POS_OK 0.318367 0.322250 0.241141 0.004423 NORMAL 1144 4219 0
231 22872894 400 100 SPARK_POS_OK 0.249244 0.289667 0.312595 0.314922 NORMAL 401 130 SPARK_POS_OK 0.318213 0.322106 0.240951 0.004418 NORMAL 1133 4205 0
232 22925894 401 101 SPARK_POS_OK 0.249118 0.289536 0.312445 0.314752 NORMAL 402 100 SPARK_POS_OK 0.318076 0.321957 0.240791 0.004417 NORMAL 1123 4152 0
233 22979894 402 80 SPARK_POS_OK 0.248949 0.289407 0.312278 0.314587 NORMAL 403 100 SPARK_POS_OK 0.317907 0.321783 0.240674 0.004404 NORMAL 1112 4195 0
234 23033894 403 80 SPARK_POS_OK 0.248800 0.289295 0.312135 0.314437 NORMAL 404 80 SPARK_POS_OK 0.317755 0.321617 0.240517 0.004391 NORMAL 1102 4169 0
235 23088894 404 60 SPARK_POS_OK 0.248595 0.289129 0.311957 0.314260 NORMAL 405 81 SPARK_POS_OK 0.317606 0.321452 0.240378 0.004416 NORMAL 1092 4277 0
236 23144894 405 58 SPARK_POS_OK 0.248428 0.288990 0.311789 0.314125 NORMAL 406 61 SPARK_POS_OK 0.317430 0.321298 0.240227 0.004388 NORMAL 1083 4216 0
237 23200894 406 40 SPARK_POS_OK 0.248251 0.288861 0.311638 0.313944 NORMAL 407 41 SPARK_POS_OK 0.317273 0.321144 0.240096 0.004374 NORMAL 1063 4187 0
238 23257894 407 40 SPARK_POS_OK 0.248116 0.288737 0.311475 0.313795 NORMAL 408 41 SPARK_POS_OK 0.317137 0.320997 0.239952 0.004364 NORMAL 1064 4201 0
239 23314894 408 11 SPARK_POS_OK 0.247964 0.288606 0.311311 0.313634 NORMAL 409 11 SPARK_POS_OK 0.316954 0.320822 0.239804 0.004355 NORMAL 1041 4163 0
240 23372894 409 10 SPARK_POS_OK 0.247810 0.288470 0.311150 0.313477 NORMAL 410 11 SPARK_POS_OK 0.316814 0.320682 0.239655 0.004355 NORMAL 1041 4174 0
241 23431894 410 10 SPARK_POS_OK 0.247661 0.288334 0.310993 0.313318 NORMAL 411 11 SPARK_POS_OK 0.316665 0.320500 0.239493 0.004331 NORMAL 1041 4184 0
242 23491894 411 10 SPARK_POS_OK 0.247477 0.288216 0.310840 0.313165 NORMAL 412 11 SPARK_POS_OK 0.316504 0.320349 0.239373 0.004325 NORMAL 1041 4180 0
243 23551894 412 10 SPARK_POS_OK 0.247323 0.288085 0.310678 0.312979 NORMAL 413 11 SPARK_POS_OK 0.316359 0.320181 0.239230 0.004309 NORMAL 1041 4213 0
244 23612894 413 10 SPARK_POS_OK 0.247186 0.287938 0.310524 0.312859 NORMAL 414 11 SPARK_POS_OK 0.316190 0.320023 0.239092 0.004290 NORMAL 1041 4169 0
245 23673894 414 10 SPARK_POS_OK 0.246977 0.287805 0.310360 0.312675 NORMAL 415 11 SPARK_POS_OK 0.316062 0.319877 0.238933 0.004276 NORMAL 1041 4281 0
246 23736894 415 10 SPARK_POS_OK 0.246847 0.287696 0.310220 0.312530 NORMAL 416 11 SPARK_POS_OK 0.315886 0.319724 0.238806 0.004281 NORMAL 1041 4222 0
247 23799894 416 10 SPARK_POS_OK 0.246696 0.287563 0.310060 0.312370 NORMAL 417 11 SPARK_POS_OK 0.315736 0.319582 0.238660 0.004261 NORMAL 1041 4168 0
248 23862894 417 10 SPARK_POS_OK 0.246543 0.287425 0.309901 0.312217 NORMAL 418 11 SPARK_POS_OK 0.315586 0.319396 0.238518 0.004233 NORMAL 1041 4165 0
249 23926894 418 10 SPARK_POS_OK 0.246392 0.287284 0.309759 0.312039 NORMAL 419 11 SPARK_POS_OK 0.315444 0.319242 0.238376 0.004227 NORMAL 1041 4222 0
250 23991894 419 10 SPARK_POS_OK 0.246216 0.287178 0.309595 0.311915 NORMAL 420 11 SPARK_POS_OK 0.315268 0.319102 0.238240 0.004210 NORMAL 1041 4167 0
251 24056894 420 10 SPARK_POS_OK 0.246093 0.287024 0.309426 0.311732 NORMAL 421 11 SPARK_POS_OK 0.315140 0.318957 0.238119 0.004194 NORMAL 1041 4169 0
252 24122894 421 11 SPARK_POS_OK 0.245922 0.286901 0.309296 0.311624 NORMAL 422 11 SPARK_POS_OK 0.314963 0.318786 0.237943 0.004176 NORMAL 79 4187 0
253 24188894 422 11 SPARK_POS_OK 0.245771 0.286802 0.309132 0.311439 NORMAL 423 11 SPARK_POS_OK 0.314819 0.318629 0.237815 0.004169 NORMAL 908 4273 0
254 24255894 423 31 SPARK_POS_OK 0.245610 0.286642 0.308980 0.311305 NORMAL 424 31 SPARK_POS_OK 0.314688 0.318487 0.237675 0.004144 NORMAL 904 4240 0
255 24321894 424 40 SPARK_POS_OK 0.245454 0.286503 0.308827 0.311134 NORMAL 425 30 SPARK_POS_OK 0.314520 0.318360 0.237542 0.004140 NORMAL 903 4243 0
256 24388894 425 41 SPARK_POS_OK 0.245271 0.286397 0.308676 0.310984 NORMAL 426 41 SPARK_POS_OK 0.314375 0.318177 0.237422 0.004111 NORMAL 903 4200 0
257 24454894 426 70 SPARK_POS_OK 0.245160 0.286249 0.308500 0.310826 NORMAL 427 70 SPARK_POS_OK 0.314231 0.317993 0.237269 0.004092 NORMAL 900 4149 0
258 24521894 427 100 SPARK_POS_OK 0.244949 0.286124 0.308365 0.310673 NORMAL 428 71 SPARK_POS_OK 0.314102 0.317850 0.237157 0.004083 NORMAL 902 4243 0
259 24587894 428 100 SPARK_POS_OK 0.244780 0.286021 0.308192 0.310531 NORMAL 429 100 SPARK_POS_OK 0.313907 0.317709 0.236992 0.004075 NORMAL 905 4262 0
260 24653894 429 140 SPARK_POS_OK 0.244631 0.285877 0.308051 0.310360 NORMAL 430 101 SPARK_POS_OK 0.313776 0.317557 0.236880 0.004052 NORMAL 909 4190 0
261 24718894 430 140 SPARK_POS_OK 0.244453 0.285752 0.307893 0.310200 NORMAL 431 140 SPARK_POS_OK 0.313619 0.317401 0.236712 0.004063 NORMAL 915 4259 0
262 24783894 431 168 SPARK_POS_OK 0.244334 0.285628 0.307734 0.310048 NORMAL 432 171 SPARK_POS_OK 0.313465 0.317222 0.236582 0.004047 NORMAL 928 4215 0
263 24847894 432 191 SPARK_POS_OK 0.244145 0.285511 0.307571 0.309891 NORMAL 433 170 SPARK_POS_OK 0.313329 0.317090 0.236441 0.004058 NORMAL 935 4214 0
264 24911894 433 190 SPARK_POS_OK 0.244005 0.285369 0.307417 0.309735 NORMAL 434 190 SPARK_POS_OK 0.313167 0.316929 0.236317 0.004044 NORMAL 942 4167 0
265 24973894 434 210 SPARK_POS_OK 0.243829 0.285247 0.307274 0.309579 NORMAL 435 211 SPARK_POS_OK 0.313028 0.316777 0.236164 0.004048 NORMAL 954 4241 0
266 25036894 435 211 SPARK_POS_OK 0.243638 0.285100 0.307117 0.309419 NORMAL 436 210 SPARK_POS_OK 0.312868 0.316624 0.236022 0.004035 NORMAL 955 4227 0
267 25098894 436 230 SPARK_POS_OK 0.243536 0.284973 0.306952 0.309280 NORMAL 437 230 SPARK_POS_OK 0.312713 0.316477 0.235901 0.004037 NORMAL 968 4181 0
268 25279894 437 27 SPARK_NEG_OK 0.243410 0.284898 0.306835 0.309154 SOFT_START 439 30 SPARK_NEG_OK 0.312610 0.316348 0.235793 0.003853 SOFT_START 1006 4170 0
269 25339894 438 31 SPARK_NEG_OK 0.243244 0.284758 0.306692 0.308995 SOFT_START 440 30 SPARK_NEG_OK 0.312451 0.316194 0.235665 0.003845 SOFT_START 1007 4223 0
270 25397894 439 61 SPARK_NEG_OK 0.243085 0.284633 0.306507 0.308831 SOFT_START 441 60 SPARK_NEG_OK 0.312278 0.316048 0.235487 0.003866 SOFT_START 1026 4248 0
271 25455894 440 79 SPARK_NEG_OK 0.242942 0.284491 0.306376 0.308681 SOFT_START 442 60 SPARK_NEG_OK 0.312144 0.315886 0.235361 0.003877 SOFT_START 1035 4168 0
272 25513894 441 81 SPARK_NEG_OK 0.242774 0.284367 0.306208 0.308532 SOFT_START 443 80 SPARK_NEG_OK 0.311990 0.315723 0.235237 0.003896 SOFT_START 1046 4174 0
273 25569894 442 111 SPARK_NEG_OK 0.242639 0.284225 0.306057 0.308406 SOFT_START 444 82 SPARK_NEG_OK 0.311850 0.315569 0.235069 0.003919 SOFT_START 1056 4167 0
274 25626894 443 111 SPARK_NEG_OK 0.242458 0.284095 0.305898 0.308211 SOFT_START 445 110 SPARK_NEG_OK 0.311676 0.315419 0.234944 0.003915 SOFT_START 1069 4174 0
275 25681894 444 141 SPARK_NEG_OK 0.242298 0.283964 0.305749 0.308079 SOFT_START 446 111 SPARK_NEG_OK 0.311534 0.315236 0.234827 0.003957 SOFT_START 1081 4246 0
276 25736894 445 137 SPARK_NEG_OK 0.242157 0.283839 0.305581 0.307902 SOFT_START 447 140 SPARK_NEG_OK 0.311376 0.315092 0.234657 0.003968 SOFT_START 1095 4145 0
277 25790894 446 180 SPARK_NEG_OK 0.241993 0.283709 0.305410 0.307735 SOFT_START 448 140 SPARK_NEG_OK 0.311230 0.314946 0.234522 0.003969 SOFT_START 1108 4256 0
278 25843894 447 180 SPARK_NEG_OK 0.241839 0.283583 0.305283 0.307602 SOFT_START 449 181 SPARK_NEG_OK 0.311077 0.314785 0.234398 0.003995 SOFT_START 1124 4222 0
279 25896894 448 220 SPARK_NEG_OK 0.241687 0.283446 0.305122 0.307433 SOFT_START 450 179 SPARK_NEG_OK 0.310912 0.314633 0.234263 0.004035 SOFT_START 1137 4226 0
280 25948894 449 221 SPARK_NEG_OK 0.241552 0.283313 0.304958 0.307270 SOFT_START 451 220 SPARK_NEG_OK 0.310754 0.314475 0.234109 0.004036 SOFT_START 1152 4179 0
281 26000894 450 220 SPARK_NEG_OK 0.241355 0.283175 0.304803 0.307094 SOFT_START 452 268 SPARK_NEG_OK 0.310596 0.314305 0.233963 0.004069 SOFT_START 1165 4161 0
282 26051894 451 220 SPARK_NEG_OK 0.241221 0.283045 0.304646 0.306938 SOFT_START 453 221 SPARK_NEG_OK 0.310454 0.314141 0.233824 0.004046 SOFT_START 1180 4267 0
283 26101894 452 221 SPARK_NEG_OK 0.241018 0.282900 0.304496 0.306817 SOFT_START 454 220 SPARK_NEG_OK 0.310305 0.314004 0.233665 0.004085 SOFT_START 1192 4206 0
284 26151894 453 218 SPARK_NEG_OK 0.240875 0.282788 0.304329 0.306650 SOFT_START 455 220 SPARK_NEG_OK 0.310143 0.313835 0.233539 0.004078 SOFT_START 1206 4214 0
285 26200894 454 220 SPARK_NEG_OK 0.240688 0.282648 0.304160 0.306496 SOFT_START 456 220 SPARK_NEG_OK 0.310012 0.313680 0.233393 0.004114 SOFT_START 1218 4281 0
286 26249894 455 220 SPARK_NEG_OK 0.240511 0.282523 0.304000 0.306337 SOFT_START 457 220 SPARK_NEG_OK 0.309834 0.313514 0.233258 0.004125 SOFT_START 1231 4242 0
287 26297894 456 220 SPARK_NEG_OK 0.240330 0.282385 0.303854 0.306161 SOFT_START 458 221 SPARK_NEG_OK 0.309701 0.313366 0.233099 0.004139 SOFT_START 1242 4212 0
288 26345894 457 220 SPARK_NEG_OK 0.240209 0.282228 0.303696 0.306008 SOFT_START 459 220 SPARK_NEG_OK 0.309542 0.313210 0.232970 0.004177 SOFT_START 1255 4159 0
289 26392894 458 221 SPARK_NEG_OK 0.240078 0.282117 0.303548 0.305850 SOFT_START 460 221 SPARK_NEG_OK 0.309392 0.313063 0.232840 0.004176 SOFT_START 1264 4158 0
290 26439894 459 220 SPARK_NEG_OK 0.239910 0.281997 0.303388 0.305706 SOFT_START 461 218 SPARK_NEG_OK 0.309226 0.312895 0.232692 0.004209 SOFT_START 1275 4181 0
291 26486894 460 220 SPARK_NEG_OK 0.239752 0.281850 0.303227 0.305544 SOFT_START 462 221 SPARK_NEG_OK 0.309097 0.312724 0.232567 0.004241 SOFT_START 1275 4201 0
292 26533894 461 220 SPARK_NEG_OK 0.239585 0.281708 0.303050 0.305390 SOFT_START 463 220 SPARK_NEG_OK 0.308936 0.312569 0.232423 0.004239 SOFT_START 1290 4239 0
293 26579894 462 221 SPARK_NEG_OK 0.239377 0.281572 0.302912 0.305232 SOFT_START 464 220 SPARK_NEG_OK 0.308763 0.312415 0.232302 0.004249 SOFT_START 1291 4194 0
294 26625894 463 220 SPARK_NEG_OK 0.239255 0.281433 0.302743 0.305044 SOFT_START 465 220 SPARK_NEG_OK 0.308610 0.312266 0.232133 0.004289 SOFT_START 1305 4218 0
295 26671894 464 221 SPARK_NEG_OK 0.239088 0.281312 0.302593 0.304902 SOFT_START 466 220 SPARK_NEG_OK 0.308440 0.312108 0.231982 0.004290 SOFT_START 1306 4158 0
296 26717894 465 221 SPARK_NEG_OK 0.238974 0.281166 0.302429 0.304756 SOFT_START 467 218 SPARK_NEG_OK 0.308318 0.311950 0.231846 0.004302 SOFT_START 1312 4175 0
297 26762894 466 220 SPARK_NEG_OK 0.238776 0.281056 0.302278 0.304610 SOFT_START 468 220 SPARK_NEG_OK 0.308143 0.311779 0.231701 0.004311 SOFT_START 1321 4237 0
298 26808894 467 221 SPARK_NEG_OK 0.238606 0.280928 0.302129 0.304453 SOFT_START 469 221 SPARK_NEG_OK 0.308000 0.311638 0.231573 0.004339 SOFT_START 1320 4256 0
299 26853894 468 220 SPARK_NEG_OK 0.238449 0.280794 0.301973 0.304294 SOFT_START 470 220 SPARK_NEG_OK 0.307863 0.311469 0.231434 0.004324 SOFT_START 1334 4230 0
300 26897894 469 220 SPARK_NEG_OK 0.238295 0.280654 0.301797 0.304121 SOFT_START 471 220 SPARK_NEG_OK 0.307693 0.311331 0.231290 0.004362 SOFT_START 1334 4192 0
301 26942894 470 200 SPARK_NEG_OK 0.238133 0.280511 0.301649 0.303981 SOFT_START 472 201 SPARK_NEG_OK 0.307544 0.311139 0.231137 0.004382 SOFT_START 1337 4157 0
302 26987894 471 200 SPARK_NEG_OK 0.237994 0.280377 0.301474 0.303811 SOFT_START 473 200 SPARK_NEG_OK 0.307391 0.311008 0.230992 0.004389 SOFT_START 1339 4152 0
303 27032894 472 150 SPARK_NEG_OK 0.237804 0.280250 0.301327 0.303633 SOFT_START 474 200 SPARK_NEG_OK 0.307240 0.310833 0.230826 0.004396 SOFT_START 1336 4249 0
304 27077894 473 150 SPARK_NEG_OK 0.237676 0.280110 0.301155 0.303475 SOFT_START 475 151 SPARK_NEG_OK 0.307068 0.310662 0.230710 0.004426 SOFT_START 1337 4184 0
305 27122894 474 120 SPARK_NEG_OK 0.237524 0.279993 0.301018 0.303320 SOFT_START 476 150 SPARK_NEG_OK 0.306935 0.310528 0.230572 0.004422 SOFT_START 1333 4275 0
306 27167894 475 121 SPARK_NEG_OK 0.237339 0.279855 0.300857 0.303157 SOFT_START 477 120 SPARK_NEG_OK 0.306786 0.310375 0.230430 0.004435 SOFT_START 1332 4162 0
307 27212894 476 120 SPARK_NEG_OK 0.237194 0.279739 0.300708 0.303010 SOFT_START 478 121 SPARK_NEG_OK 0.306616 0.310200 0.230295 0.004436 SOFT_START 1332 4183 0
308 27257894 477 100 SPARK_NEG_OK 0.237052 0.279588 0.300550 0.302844 SOFT_START 479 100 SPARK_NEG_OK 0.306465 0.310048 0.230173 0.004442 SOFT_START 1323 4202 0
309 27302894 478 101 SPARK_NEG_OK 0.236890 0.279444 0.300393 0.302712 SOFT_START 480 101 SPARK_NEG_OK 0.306319 0.309893 0.230032 0.004466 SOFT_START 1325 4249 0
310 27348894 479 80 SPARK_NEG_OK 0.236716 0.279326 0.300222 0.302529 SOFT_START 481 100 SPARK_NEG_OK 0.306185 0.309737 0.229876 0.004470 SOFT_START 1319 4260 0
311 27393894 480 80 SPARK_NEG_OK 0.236563 0.279172 0.300086 0.302406 SOFT_START 482 80 SPARK_NEG_OK 0.306013 0.309591 0.229754 0.004476 SOFT_START 1316 4160 0
312 27439894 481 60 SPARK_NEG_OK 0.236393 0.279056 0.299922 0.302218 SOFT_START 483 81 SPARK_NEG_OK 0.305859 0.309443 0.229610 0.004498 SOFT_START 1309 4241 0
313 27485894 482 60 SPARK_NEG_OK 0.236264 0.278920 0.299768 0.302089 SOFT_START 484 60 SPARK_NEG_OK 0.305741 0.309281 0.229437 0.004495 SOFT_START 1305 4163 0
314 27531894 483 61 SPARK_NEG_OK 0.236121 0.278792 0.299601 0.301903 SOFT_START 485 61 SPARK_NEG_OK 0.305582 0.309130 0.229292 0.004489 SOFT_START 1305 4216 0
315 27578894 484 40 SPARK_NEG_OK 0.235947 0.278673 0.299451 0.301791 SOFT_START 486 40 SPARK_NEG_OK 0.305398 0.308973 0.229186 0.004495 SOFT_START 1289 4254 0
316 27624894 485 41 SPARK_NEG_OK 0.235777 0.278535 0.299291 0.301610 SOFT_START 487 40 SPARK_NEG_OK 0.305252 0.308834 0.229037 0.004504 SOFT_START 1291 4188 0
317 27671894 486 25 SPARK_NEG_OK 0.235615 0.278394 0.299131 0.301462 SOFT_START 488 25 SPARK_NEG_OK 0.305108 0.308660 0.228924 0.004501 SOFT_START 1274 4194 0
318 27718894 487 25 SPARK_NEG_OK 0.235474 0.278265 0.298988 0.301294 SOFT_START 489 25 SPARK_NEG_OK 0.304982 0.308506 0.228761 0.004511 SOFT_START 1275 4235 0
319 27766894 488 240 SPARK_POS_OK 0.235290 0.278150 0.298833 0.301164 NORMAL 490 25 SPARK_NEG_OK 0.304818 0.308329 0.228631 0.004478 SOFT_START 1275 4268 0
320 27814894 489 241 SPARK_POS_OK 0.235133 0.278005 0.298676 0.300983 NORMAL 491 240 SPARK_POS_OK 0.304641 0.308191 0.228487 0.004510 NORMAL 1262 4191 0
321 27861894 490 220 SPARK_POS_OK 0.235007 0.277883 0.298517 0.300829 NORMAL 492 241 SPARK_POS_OK 0.304506 0.308035 0.228362 0.004495 NORMAL 1253 4171 0
322 27910894 491 221 SPARK_POS_OK 0.234870 0.277768 0.298377 0.300696 NORMAL 493 220 SPARK_POS_OK 0.304349 0.307886 0.228217 0.004492 NORMAL 1246 4180 0
323 27958894 492 192 SPARK_POS_OK 0.234726 0.277621 0.298216 0.300523 NORMAL 494 221 SPARK_POS_OK 0.304200 0.307726 0.228056 0.004503 NORMAL 1237 4184 0
324 28007894 493 191 SPARK_POS_OK 0.234546 0.277506 0.298065 0.300381 NORMAL 495 190 SPARK_POS_OK 0.304072 0.307571 0.227940 0.004511 NORMAL 1228 4158 0
325 28056894 494 219 SPARK_POS_OK 0.234405 0.277355 0.297914 0.300225 NORMAL 496 190 SPARK_POS_OK 0.303894 0.307428 0.227815 0.004506 NORMAL 1228 4214 0
326 28105894 495 170 SPARK_POS_OK 0.234249 0.277219 0.297754 0.300079 NORMAL 497 170 SPARK_POS_OK 0.303753 0.307287 0.227692 0.004506 NORMAL 1208 4149 0
327 28155894 496 172 SPARK_POS_OK 0.234093 0.277112 0.297602 0.299907 NORMAL 498 168 SPARK_POS_OK 0.303609 0.307118 0.227537 0.004491 NORMAL 1208 4216 0
328 28206894 497 150 SPARK_POS_OK 0.233985 0.276974 0.297437 0.299759 NORMAL 499 151 SPARK_POS_OK 0.303454 0.306962 0.227410 0.004479 NORMAL 1186 4153 0
329 28256894 498 151 SPARK_POS_OK 0.233786 0.276864 0.297296 0.299616 NORMAL 500 150 SPARK_POS_OK 0.303313 0.306812 0.227254 0.004480 NORMAL 1187 4269 0
330 28308894 499 130 SPARK_POS_OK 0.233641 0.276716 0.297128 0.299439 NORMAL 501 130 SPARK_POS_OK 0.303178 0.306637 0.227132 0.004466 NORMAL 1167 4170 0
331 28359894 500 130 SPARK_POS_OK 0.233482 0.276599 0.297002 0.299293 NORMAL 502 131 SPARK_POS_OK 0.303010 0.306511 0.226998 0.004463 NORMAL 1167 4250 0
332 28411894 501 110 SPARK_POS_OK 0.233346 0.276440 0.296826 0.299152 NORMAL 503 110 SPARK_POS_OK 0.302870 0.306368 0.226858 0.004464 NORMAL 1147 4220 0
333 28464894 502 111 SPARK_POS_OK 0.233172 0.276349 0.296684 0.299016 NORMAL 504 110 SPARK_POS_OK 0.302728 0.306208 0.226721 0.004426 NORMAL 1148 4240 0
334 28517894 503 90 SPARK_POS_OK 0.233042 0.276198 0.296519 0.298835 NORMAL 505 91 SPARK_POS_OK 0.302579 0.306072 0.226577 0.004460 NORMAL 1127 4183 0
335 28570894 504 90 SPARK_POS_OK 0.232871 0.276086 0.296401 0.298697 NORMAL 506 90 SPARK_POS_OK 0.302422 0.305900 0.226443 0.004445 NORMAL 1127 4177 0
336 28624894 505 70 SPARK_POS_OK 0.232748 0.275949 0.296220 0.298554 NORMAL 507 71 SPARK_POS_OK 0.302281 0.305759 0.226333 0.004415 NORMAL 1103 4200 0
337 28679894 506 70 SPARK_POS_OK 0.232572 0.275822 0.296072 0.298413 NORMAL 508 70 SPARK_POS_OK 0.302138 0.305597 0.226177 0.004410 NORMAL 1104 4264 0
338 28734894 507 50 SPARK_POS_OK 0.232410 0.275686 0.295929 0.298222 NORMAL 509 50 SPARK_POS_OK 0.301995 0.305448 0.226059 0.004398 NORMAL 1081 4220 0
339 28790894 508 30 SPARK_POS_OK 0.232251 0.275572 0.295786 0.298082 NORMAL 510 52 SPARK_POS_OK 0.301843 0.305323 0.225919 0.004374 NORMAL 1070 4269 0
340 28847894 509 30 SPARK_POS_OK 0.232106 0.275454 0.295643 0.297915 NORMAL 511 30 SPARK_POS_OK 0.301710 0.305157 0.225785 0.004373 NORMAL 1060 4195 0
341 28904894 510 30 SPARK_POS_OK 0.231964 0.275316 0.295492 0.297777 NORMAL 512 29 SPARK_POS_OK 0.301558 0.305012 0.225647 0.004357 NORMAL 1060 4169 0
342 28962894 511 30 SPARK_POS_OK 0.231856 0.275185 0.295308 0.297637 NORMAL 513 29 SPARK_POS_OK 0.301403 0.304863 0.225520 0.004330 NORMAL 1060 4154 0
343 29020894 512 30 SPARK_POS_OK 0.231654 0.275059 0.295185 0.297471 NORMAL 514 29 SPARK_POS_OK 0.301254 0.304716 0.225407 0.004314 NORMAL 1060 4229 0
344 29079894 513 30 SPARK_POS_OK 0.231529 0.274943 0.295056 0.297354 NORMAL 515 29 SPARK_POS_OK 0.301126 0.304580 0.225252 0.004290 NORMAL 1060 4229 0
345 29140894 514 30 SPARK_POS_OK 0.231363 0.274788 0.294892 0.297194 NORMAL 516 29 SPARK_POS_OK 0.300963 0.304419 0.225143 0.004274 NORMAL 1060 4265 0
346 29201894 515 30 SPARK_POS_OK 0.231243 0.274711 0.294742 0.297049 NORMAL 517 29 SPARK_POS_OK 0.300827 0.304254 0.225012 0.004261 NORMAL 1060 4205 0
347 29263894 516 30 SPARK_POS_OK 0.231097 0.274554 0.294609 0.296904 NORMAL 518 29 SPARK_POS_OK 0.300693 0.304128 0.224861 0.004250 NORMAL 1060 4222 0
348 29325894 517 30 SPARK_POS_OK 0.230927 0.274445 0.294461 0.296749 NORMAL 519 29 SPARK_POS_OK 0.300543 0.303966 0.224741 0.004233 NORMAL 1060 4208 0
349 29388894 518 30 SPARK_POS_OK 0.230758 0.274323 0.294295 0.296606 NORMAL 520 29 SPARK_POS_OK 0.300400 0.303816 0.224615 0.004211 NORMAL 1060 4241 0
350 29452894 519 30 SPARK_POS_OK 0.230615 0.274199 0.294167 0.296452 NORMAL 521 29 SPARK_POS_OK 0.300251 0.303678 0.224453 0.004197 NORMAL 1060 4258 0
351 29516894 520 30 SPARK_POS_OK 0.230507 0.274069 0.293997 0.296320 NORMAL 522 29 SPARK_POS_OK 0.300115 0.303529 0.224360 0.004165 NORMAL 1060 4201 0
352 29580894 521 30 SPARK_POS_OK 0.230321 0.273947 0.293862 0.296165 NORMAL 523 29 SPARK_POS_OK 0.299969 0.303385 0.224254 0.004139 NORMAL 1060 4260 0
353 29645894 522 30 SPARK_POS_OK 0.230199 0.273811 0.293727 0.296023 NORMAL 524 29 SPARK_POS_OK 0.299823 0.303254 0.224081 0.004141 NORMAL 1060 4149 0
354 29711894 523 30 SPARK_POS_OK 0.230053 0.273697 0.293586 0.295871 NORMAL 525 29 SPARK_POS_OK 0.299684 0.303107 0.223966 0.004110 NORMAL 1060 4234 0
355 29778894 524 30 SPARK_POS_OK 0.229897 0.273574 0.293452 0.295721 NORMAL 526 29 SPARK_POS_OK 0.299528 0.302956 0.223830 0.004099 NORMAL 1060 4268 0
356 29844894 525 18 SPARK_POS_OK 0.229737 0.273463 0.293287 0.295576 NORMAL 527 29 SPARK_POS_OK 0.299393 0.302807 0.223719 0.004088 NORMAL 60 4253 0
357 29911894 526 25 SPARK_POS_OK 0.229585 0.273339 0.293126 0.295432 NORMAL 528 25 SPARK_POS_OK 0.299249 0.302660 0.223577 0.004053 NORMAL 898 4248 0
358 29978894 527 50 SPARK_POS_OK 0.229421 0.273230 0.292988 0.295304 NORMAL 529 50 SPARK_POS_OK 0.299109 0.302531 0.223458 0.004053 NORMAL 897 4250 0
359 30045894 528 71 SPARK_POS_OK 0.229278 0.273093 0.292861 0.295157 NORMAL 530 50 SPARK_POS_OK 0.298978 0.302386 0.223312 0.004017 NORMAL 898 4157 0
360 30111894 529 70 SPARK_POS_OK 0.229153 0.272971 0.292700 0.295006 NORMAL 531 70 SPARK_POS_OK 0.298840 0.302225 0.223220 0.004009 NORMAL 900 4156 0
361 30178894 530 81 SPARK_POS_OK 0.229019 0.272849 0.292549 0.294856 NORMAL 532 80 SPARK_POS_OK 0.298682 0.302095 0.223073 0.004002 NORMAL 900 4184 0
362 30244894 531 100 SPARK_POS_OK 0.228902 0.272712 0.292414 0.294721 NORMAL 533 80 SPARK_POS_OK 0.298550 0.301940 0.222973 0.003992 NORMAL 901 4190 0
363 30311894 532 101 SPARK_POS_OK 0.228704 0.272602 0.292251 0.294572 NORMAL 534 100 SPARK_POS_OK 0.298408 0.301793 0.222811 0.003995 NORMAL 904 4221 0
364 30377894 533 110 SPARK_POS_OK 0.228599 0.272483 0.292122 0.294414 NORMAL 535 109 SPARK_POS_OK 0.298252 0.301656 0.222685 0.003978 NORMAL 906 4176 0
365 30443894 534 111 SPARK_POS_OK 0.228439 0.272374 0.291972 0.294291 NORMAL 536 110 SPARK_POS_OK 0.298129 0.301508 0.222601 0.003955 NORMAL 910 4154 0
366 30508894 535 133 SPARK_POS_OK 0.228352 0.272239 0.291821 0.294130 NORMAL 537 130 SPARK_POS_OK 0.298014 0.301350 0.222435 0.003946 NORMAL 918 4209 0
367 30573894 536 150 SPARK_POS_OK 0.228187 0.272096 0.291667 0.293991 NORMAL 538 131 SPARK_POS_OK 0.297840 0.301217 0.222303 0.003926 NORMAL 923 4164 0
368 30638894 537 150 SPARK_POS_OK 0.228051 0.271986 0.291539 0.293838 NORMAL 539 150 SPARK_POS_OK 0.297694 0.301065 0.222185 0.003922 NORMAL 928 4197 0
369 30702894 538 170 SPARK_POS_OK 0.227895 0.271876 0.291392 0.293676 NORMAL 540 170 SPARK_POS_OK 0.297551 0.300927 0.222085 0.003925 NORMAL 935 4219 0
370 30766894 539 191 SPARK_POS_OK 0.227766 0.271754 0.291253 0.293556 NORMAL 541 170 SPARK_POS_OK 0.297411 0.300766 0.221926 0.003914 NORMAL 940 4203 0
371 30829894 540 190 SPARK_POS_OK 0.227587 0.271612 0.291104 0.293421 NORMAL 542 190 SPARK_POS_OK 0.297287 0.300643 0.221813 0.003932 NORMAL 947 4209 0
372 30892894 541 210 SPARK_POS_OK 0.227440 0.271500 0.290959 0.293264 NORMAL 543 191 SPARK_POS_OK 0.297142 0.300490 0.221671 0.003911 NORMAL 953 4255 0
373 30954894 542 208 SPARK_POS_OK 0.227338 0.271378 0.290822 0.293120 NORMAL 544 210 SPARK_POS_OK 0.296986 0.300339 0.221546 0.003938 NORMAL 962 4171 0
374 31015894 543 231 SPARK_POS_OK 0.227185 0.271240 0.290673 0.292974 NORMAL 545 230 SPARK_POS_OK 0.296851 0.300217 0.221401 0.003914 NORMAL 978 4189 0
375 31196894 544 30 SPARK_NEG_OK 0.227097 0.271150 0.290566 0.292864 SOFT_START 546 230 SPARK_NEG_WAIT 0.296770 0.300094 0.221338 0.003732 NORMAL 1001 4171 0
376 31255894 545 30 SPARK_NEG_OK 0.226947 0.271028 0.290417 0.292725 SOFT_START 547 30 SPARK_NEG_OK 0.296605 0.299956 0.221204 0.003748 SOFT_START 1010 4251 0
377 31314894 546 50 SPARK_NEG_OK 0.226794 0.270930 0.290271 0.292549 SOFT_START 548 52 SPARK_NEG_OK 0.296459 0.299803 0.221077 0.003765 SOFT_START 1026 4172 0
378 31372894 547 51 SPARK_NEG_OK 0.226651 0.270789 0.290137 0.292426 SOFT_START 549 50 SPARK_NEG_OK 0.296304 0.299659 0.220951 0.003769 SOFT_START 1027 4165 0
379 31430894 548 70 SPARK_NEG_OK 0.226499 0.270665 0.289981 0.292265 SOFT_START 550 71 SPARK_NEG_OK 0.296170 0.299509 0.220838 0.003793 SOFT_START 1046 4275 0
380 31487894 549 92 SPARK_NEG_OK 0.226340 0.270549 0.289845 0.292126 SOFT_START 551 70 SPARK_NEG_OK 0.296020 0.299360 0.220708 0.003812 SOFT_START 1047 4250 0
381 31543894 550 90 SPARK_NEG_OK 0.226200 0.270408 0.289685 0.291980 SOFT_START 552 90 SPARK_NEG_OK 0.295882 0.299222 0.220565 0.003802 SOFT_START 1068 4164 0
382 31599894 551 110 SPARK_NEG_OK 0.226091 0.270299 0.289539 0.291825 SOFT_START 553 90 SPARK_NEG_OK 0.295726 0.299069 0.220453 0.003850 SOFT_START 1079 4168 0
383 31654894 552 110 SPARK_NEG_OK 0.225908 0.270163 0.289385 0.291685 SOFT_START 554 110 SPARK_NEG_OK 0.295606 0.298903 0.220297 0.003855 SOFT_START 1091 4267 0
384 31708894 553 140 SPARK_NEG_OK 0.225781 0.270032 0.289235 0.291539 SOFT_START 555 111 SPARK_NEG_OK 0.295478 0.298759 0.220181 0.003861 SOFT_START 1101 4150 0
385 31762894 554 140 SPARK_NEG_OK 0.225610 0.269906 0.289096 0.291394 SOFT_START 556 141 SPARK_NEG_OK 0.295316 0.298629 0.220047 0.003878 SOFT_START 1113 4243 0
386 31815894 555 171 SPARK_NEG_OK 0.225482 0.269780 0.288954 0.291249 SOFT_START 557 140 SPARK_NEG_OK 0.295166 0.298475 0.219911 0.003871 SOFT_START 1123 4150 0
387 31868894 556 171 SPARK_NEG_OK 0.225355 0.269666 0.288804 0.291082 SOFT_START 558 170 SPARK_NEG_OK 0.295011 0.298344 0.219790 0.003916 SOFT_START 1136 4163 0
388 31921894 557 200 SPARK_NEG_OK 0.225197 0.269532 0.288649 0.290950 SOFT_START 559 170 SPARK_NEG_OK 0.294881 0.298182 0.219643 0.003912 SOFT_START 1147 4258 0
389 31972894 558 200 SPARK_NEG_OK 0.225049 0.269413 0.288505 0.290800 SOFT_START 560 201 SPARK_NEG_OK 0.294744 0.298035 0.219514 0.003937 SOFT_START 1161 4190 0
390 32023894 559 221 SPARK_NEG_OK 0.224914 0.269298 0.288351 0.290653 SOFT_START 561 200 SPARK_NEG_OK 0.294604 0.297887 0.219409 0.003936 SOFT_START 1173 4233 0
391 32074894 560 220 SPARK_NEG_OK 0.224741 0.269151 0.288212 0.290508 SOFT_START 562 220 SPARK_NEG_OK 0.294451 0.297741 0.219271 0.003975 SOFT_START 1188 4261 0
392 32124894 561 220 SPARK_NEG_OK 0.224595 0.269035 0.288078 0.290365 SOFT_START 563 221 SPARK_NEG_OK 0.294299 0.297612 0.219138 0.003971 SOFT_START 1198 4214 0
393 32173894 562 221 SPARK_NEG_OK 0.224457 0.268905 0.287915 0.290209 SOFT_START 564 220 SPARK_NEG_OK 0.294173 0.297448 0.219002 0.003996 SOFT_START 1212 4194 0
394 32222894 563 220 SPARK_NEG_OK 0.224333 0.268773 0.287753 0.290070 SOFT_START 565 220 SPARK_NEG_OK 0.294014 0.297293 0.218863 0.004018 SOFT_START 1222 4165 0
395 32271894 564 221 SPARK_NEG_OK 0.224152 0.268652 0.287609 0.289907 SOFT_START 566 220 SPARK_NEG_OK 0.293874 0.297136 0.218728 0.004048 SOFT_START 1234 4226 0
396 32320894 565 220 SPARK_NEG_OK 0.223991 0.268545 0.287464 0.289770 SOFT_START 567 220 SPARK_NEG_OK 0.293739 0.297003 0.218605 0.004079 SOFT_START 1234 4235 0
397 32368894 566 221 SPARK_NEG_OK 0.223832 0.268385 0.287308 0.289612 SOFT_START 568 220 SPARK_NEG_OK 0.293614 0.296863 0.218485 0.004086 SOFT_START 1253 4277 0
398 32415894 567 220 SPARK_NEG_OK 0.223702 0.268284 0.287163 0.289459 SOFT_START 569 220 SPARK_NEG_OK 0.293436 0.296702 0.218351 0.004088 SOFT_START 1254 4185 0
399 32463894 568 221 SPARK_NEG_OK 0.223539 0.268133 0.287021 0.289323 SOFT_START 570 221 SPARK_NEG_OK 0.293300 0.296544 0.218212 0.004120 SOFT_START 1272 4253 0
400 32510894 569 220 SPARK_NEG_OK 0.223411 0.268019 0.286869 0.289187 SOFT_START 571 220 SPARK_NEG_OK 0.293167 0.296410 0.218098 0.004146 SOFT_START 1274 4229 0
401 32556894 570 221 SPARK_NEG_OK 0.223255 0.267893 0.286747 0.289009 SOFT_START 572 220 SPARK_NEG_OK 0.293028 0.296266 0.217940 0.004130 SOFT_START 1291 4153 0
402 32602899 571 220 SPARK_NEG_OK 0.223058 0.267776 0.286589 0.288869 SOFT_START 573 220 SPARK_NEG_OK 0.292874 0.296096 0.217817 0.004131 SOFT_START 1292 4261 0
403 32649894 572 221 SPARK_NEG_OK 0.222954 0.267630 0.286425 0.288712 SOFT_START 574 220 SPARK_NEG_OK 0.292727 0.295968 0.217693 0.004166 SOFT_START 1298 4178 0
404 32695894 573 220 SPARK_NEG_OK 0.222799 0.267516 0.286273 0.288576 SOFT_START 575 221 SPARK_NEG_OK 0.292587 0.295816 0.217561 0.004193 SOFT_START 1307 4272 0
405 32740894 574 220 SPARK_NEG_OK 0.222647 0.267380 0.286134 0.288430 SOFT_START 576 220 SPARK_NEG_OK 0.292442 0.295664 0.217426 0.004186 SOFT_START 1311 4260 0
406 32786894 575 221 SPARK_NEG_OK 0.222493 0.267292 0.285975 0.288275 SOFT_START 577 221 SPARK_NEG_OK 0.292296 0.295509 0.217326 0.004219 SOFT_START 1319 4241 0
407 32831894 576 220 SPARK_NEG_OK 0.222350 0.267133 0.285851 0.288131 SOFT_START 578 220 SPARK_NEG_OK 0.292144 0.295361 0.217180 0.004225 SOFT_START 1319 4222 0
408 32876894 577 220 SPARK_NEG_OK 0.222221 0.267005 0.285688 0.287982 SOFT_START 579 220 SPARK_NEG_OK 0.292020 0.295215 0.217054 0.004244 SOFT_START 1329 4152 0
409 32922894 578 220 SPARK_NEG_OK 0.222057 0.266885 0.285548 0.287839 SOFT_START 580 221 SPARK_NEG_OK 0.291863 0.295089 0.216917 0.004260 SOFT_START 1330 4271 0
410 32966894 579 220 SPARK_NEG_OK 0.221909 0.266747 0.285396 0.287680 SOFT_START 581 222 SPARK_NEG_OK 0.291705 0.294917 0.216799 0.004268 SOFT_START 1340 4178 0
411 33011894 580 218 SPARK_NEG_OK 0.221742 0.266636 0.285243 0.287526 SOFT_START 582 220 SPARK_NEG_OK 0.291577 0.294788 0.216637 0.004264 SOFT_START 1341 4272 0
412 33056894 581 220 SPARK_NEG_OK 0.221614 0.266501 0.285096 0.287389 SOFT_START 583 221 SPARK_NEG_OK 0.291437 0.294625 0.216532 0.004283 SOFT_START 1345 4191 0
413 33100894 582 220 SPARK_NEG_OK 0.221465 0.266403 0.284954 0.287235 SOFT_START 584 220 SPARK_NEG_OK 0.291283 0.294502 0.216410 0.004286 SOFT_START 1350 4165 0
414 33144894 583 221 SPARK_NEG_OK 0.221301 0.266253 0.284796 0.287101 SOFT_START 585 220 SPARK_NEG_OK 0.291148 0.294346 0.216251 0.004312 SOFT_START 1350 4272 0
415 33189894 584 190 SPARK_NEG_OK 0.221170 0.266118 0.284649 0.286964 SOFT_START 586 191 SPARK_NEG_OK 0.291015 0.294184 0.216144 0.004308 SOFT_START 1350 4268 0
416 33233894 585 190 SPARK_NEG_OK 0.221002 0.266004 0.284517 0.286789 SOFT_START 587 190 SPARK_NEG_OK 0.290853 0.294049 0.216001 0.004324 SOFT_START 1351 4149 0
417 33278894 586 151 SPARK_NEG_OK 0.220879 0.265905 0.284364 0.286654 SOFT_START 588 148 SPARK_NEG_OK 0.290717 0.293917 0.215877 0.004335 SOFT_START 1348 4235 0
418 33322894 587 150 SPARK_NEG_OK 0.220745 0.265746 0.284213 0.286506 SOFT_START 589 151 SPARK_NEG_OK 0.290567 0.293751 0.215759 0.004358 SOFT_START 1348 4150 0
419 33367894 588 120 SPARK_NEG_OK 0.220601 0.265614 0.284064 0.286338 SOFT_START 590 150 SPARK_NEG_OK 0.290433 0.293602 0.215640 0.004355 SOFT_START 1344 4195 0
420 33411894 589 121 SPARK_NEG_OK 0.220446 0.265481 0.283915 0.286192 SOFT_START 591 120 SPARK_NEG_OK 0.290278 0.293458 0.215487 0.004383 SOFT_START 1342 4162 0
421 33456894 590 120 SPARK_NEG_OK 0.220311 0.265375 0.283771 0.286060 SOFT_START 592 120 SPARK_NEG_OK 0.290154 0.293300 0.215356 0.004362 SOFT_START 1342 4256 0
422 33501894 591 100 SPARK_NEG_OK 0.220193 0.265262 0.283619 0.285911 SOFT_START 593 100 SPARK_NEG_OK 0.290006 0.293163 0.215232 0.004379 SOFT_START 1332 4174 0
423 33546894 592 101 SPARK_NEG_OK 0.220030 0.265129 0.283490 0.285764 SOFT_START 594 100 SPARK_NEG_OK 0.289842 0.293036 0.215108 0.004383 SOFT_START 1333 4256 0
424 33591897 593 70 SPARK_NEG_OK 0.219882 0.265003 0.283312 0.285606 SOFT_START 595 71 SPARK_NEG_OK 0.289702 0.292856 0.214979 0.004376 SOFT_START 1321 4203 0
425 33637894 594 70 SPARK_NEG_OK 0.219761 0.264870 0.283198 0.285496 SOFT_START 596 70 SPARK_NEG_OK 0.289568 0.292754 0.214847 0.004398 SOFT_START 1322 4170 0
426 33683894 595 40 SPARK_NEG_OK 0.219610 0.264744 0.283063 0.285316 SOFT_START 597 71 SPARK_NEG_OK 0.289434 0.292597 0.214727 0.004407 SOFT_START 1313 4248 0
427 33728894 596 40 SPARK_NEG_OK 0.219433 0.264626 0.282887 0.285174 SOFT_START 598 40 SPARK_NEG_OK 0.289289 0.292440 0.214608 0.004391 SOFT_START 1307 4209 0
428 33774894 597 40 SPARK_NEG_OK 0.219309 0.264485 0.282733 0.285023 SOFT_START 599 40 SPARK_NEG_OK 0.289144 0.292300 0.214483 0.004406 SOFT_START 1307 4169 0
429 33821894 598 25 SPARK_NEG_OK 0.219164 0.264351 0.282601 0.284892 SOFT_START 600 25 SPARK_NEG_OK 0.289014 0.292149 0.214335 0.004404 SOFT_START 1288 4275 0
430 33867894 599 25 SPARK_NEG_OK 0.219021 0.264238 0.282480 0.284735 SOFT_START 601 25 SPARK_NEG_OK 0.288854 0.292002 0.214229 0.004414 SOFT_START 1289 4150 0
431 34010894 600 230 SPARK_POS_OK 0.218923 0.264163 0.282345 0.284633 NORMAL 602 230 SPARK_POS_OK 0.288753 0.291890 0.214139 0.004190 NORMAL 1262 4161 0
432 34058894 601 231 SPARK_POS_OK 0.218782 0.264018 0.282212 0.284500 NORMAL 603 230 SPARK_POS_OK 0.288612 0.291755 0.213985 0.004213 NORMAL 1256 4261 0
433 34106894 602 210 SPARK_POS_OK 0.218613 0.263910 0.282043 0.284339 NORMAL 604 231 SPARK_POS_OK 0.288465 0.291602 0.213870 0.004219 NORMAL 1246 4249 0
434 34154894 603 211 SPARK_POS_OK 0.218469 0.263771 0.281917 0.284205 NORMAL 605 210 SPARK_POS_OK 0.288340 0.291449 0.213743 0.004221 NORMAL 1239 4223 0
435 34203894 604 180 SPARK_POS_OK 0.218338 0.263654 0.281764 0.284051 NORMAL 606 210 SPARK_POS_OK 0.288197 0.291333 0.213640 0.004241 NORMAL 1228 4275 0
436 34253894 605 181 SPARK_POS_OK 0.218177 0.263538 0.281628 0.283921 NORMAL 607 180 SPARK_POS_OK 0.288049 0.291172 0.213487 0.004234 NORMAL 1218 4257 0
437 34302894 606 160 SPARK_POS_OK 0.218021 0.263417 0.281486 0.283763 NORMAL 608 180 SPARK_POS_OK 0.287909 0.291052 0.213367 0.004215 NORMAL 1206 4250 0
438 34352894 607 160 SPARK_POS_OK 0.217876 0.263287 0.281342 0.283609 NORMAL 609 161 SPARK_POS_OK 0.287775 0.290890 0.213259 0.004232 NORMAL 1196 4238 0
439 34403894 608 139 SPARK_POS_OK 0.217735 0.263172 0.281190 0.283456 NORMAL 610 160 SPARK_POS_OK 0.287634 0.290743 0.213134 0.004218 NORMAL 1185 4248 0
440 34454894 609 140 SPARK_POS_OK 0.217576 0.263045 0.281042 0.283325 NORMAL 611 140 SPARK_POS_OK 0.287511 0.290605 0.213003 0.004237 NORMAL 1175 4248 0
441 34506894 610 111 SPARK_POS_OK 0.217422 0.262920 0.280915 0.283189 NORMAL 612 141 SPARK_POS_OK 0.287367 0.290461 0.212876 0.004232 NORMAL 1164 4281 0
442 34558894 611 111 SPARK_POS_OK 0.217294 0.262783 0.280773 0.283042 NORMAL 613 110 SPARK_POS_OK 0.287238 0.290313 0.212728 0.004213 NORMAL 1154 4182 0
443 34610894 612 93 SPARK_POS_OK 0.217142 0.262676 0.280632 0.282895 NORMAL 614 110 SPARK_POS_OK 0.287075 0.290173 0.212619 0.004225 NORMAL 1143 4218 0
444 34663894 613 90 SPARK_POS_OK 0.216988 0.262541 0.280485 0.282761 NORMAL 615 90 SPARK_POS_OK 0.286961 0.290027 0.212517 0.004214 NORMAL 1133 4228 0
445 34716894 614 70 SPARK_POS_OK 0.216900 0.262419 0.280350 0.282615 NORMAL 616 91 SPARK_POS_OK 0.286793 0.289903 0.212389 0.004218 NORMAL 1121 4155 0
446 34771894 615 70 SPARK_POS_OK 0.216745 0.262302 0.280189 0.282466 NORMAL 617 70 SPARK_POS_OK 0.286642 0.289757 0.212252 0.004212 NORMAL 1110 4242 0
447 34825894 616 50 SPARK_POS_OK 0.216602 0.262186 0.280063 0.282335 NORMAL 618 70 SPARK_POS_OK 0.286527 0.289600 0.212144 0.004207 NORMAL 1097 4221 0
448 34880894 617 51 SPARK_POS_OK 0.216441 0.262075 0.279932 0.282189 NORMAL 619 50 SPARK_POS_OK 0.286393 0.289466 0.212007 0.004208 NORMAL 1086 4194 0
449 34936894 618 41 SPARK_POS_OK 0.216339 0.261927 0.279781 0.282065 NORMAL 620 50 SPARK_POS_OK 0.286254 0.289338 0.211874 0.004185 NORMAL 1074 4184 0
450 34993894 619 41 SPARK_POS_OK 0.216206 0.261821 0.279639 0.281928 NORMAL 621 40 SPARK_POS_OK 0.286109 0.289190 0.211774 0.004189 NORMAL 1063 4157 0
451 35050894 620 25 SPARK_POS_OK 0.216070 0.261710 0.279472 0.281775 NORMAL 622 40 SPARK_POS_OK 0.285965 0.289056 0.211664 0.004166 NORMAL 1051 4166 0
452 35107894 621 25 SPARK_POS_OK 0.215958 0.261584 0.279363 0.281629 NORMAL 623 25 SPARK_POS_OK 0.285835 0.288917 0.211526 0.004141 NORMAL 1041 4179 0
453 35166894 622 25 SPARK_POS_OK 0.215852 0.261455 0.279204 0.281507 NORMAL 624 25 SPARK_POS_OK 0.285711 0.288778 0.211395 0.004149 NORMAL 1041 4158 0
454 35225894 623 25 SPARK_POS_OK 0.215697 0.261327 0.279067 0.281358 NORMAL 625 25 SPARK_POS_OK 0.285565 0.288635 0.211287 0.004148 NORMAL 1041 4195 0
455 35285894 624 25 SPARK_POS_OK 0.215550 0.261243 0.278931 0.281226 NORMAL 626 25 SPARK_POS_OK 0.285427 0.288497 0.211173 0.004114 NORMAL 1041 4264 0
456 35346894 625 25 SPARK_POS_OK 0.215418 0.261111 0.278800 0.281084 NORMAL 627 25 SPARK_POS_OK 0.285299 0.288371 0.211050 0.004109 NORMAL 1041 4177 0
457 35408894 626 25 SPARK_POS_OK 0.215275 0.260987 0.278656 0.280928 NORMAL 628 25 SPARK_POS_OK 0.285162 0.288201 0.210943 0.004089 NORMAL 1041 4248 0
458 35470894 627 25 SPARK_POS_OK 0.215132 0.260886 0.278528 0.280776 NORMAL 629 25 SPARK_POS_OK 0.285029 0.288087 0.210811 0.004069 NORMAL 1041 4193 0
459 35533894 628 25 SPARK_POS_OK 0.215003 0.260752 0.278396 0.280665 NORMAL 630 25 SPARK_POS_OK 0.284912 0.287941 0.210699 0.004070 NORMAL 1041 4246 0
460 35596894 629 25 SPARK_POS_OK 0.214865 0.260631 0.278243 0.280498 NORMAL 631 25 SPARK_POS_OK 0.284758 0.287799 0.210554 0.004044 NORMAL 1041 4180 0
461 35661894 630 25 SPARK_POS_OK 0.214735 0.260540 0.278130 0.280364 NORMAL 632 25 SPARK_POS_OK 0.284619 0.287676 0.210446 0.004028 NORMAL 1041 4205 0
462 35725894 631 25 SPARK_POS_OK 0.214604 0.260414 0.277976 0.280225 NORMAL 633 25 SPARK_POS_OK 0.284517 0.287534 0.210330 0.004011 NORMAL 1041 4218 0
463 35791894 632 25 SPARK_POS_OK 0.214474 0.260302 0.277838 0.280115 NORMAL 634 25 SPARK_POS_OK 0.284371 0.287407 0.210209 0.003995 NORMAL 1041 4234 0
464 35857894 633 25 SPARK_POS_OK 0.214345 0.260153 0.277704 0.279993 NORMAL 635 25 SPARK_POS_OK 0.284230 0.287284 0.210090 0.003946 NORMAL 1041 4146 0
465 35924894 634 25 SPARK_POS_OK 0.214211 0.260050 0.277567 0.279846 NORMAL 636 25 SPARK_POS_OK 0.284095 0.287125 0.209954 0.003960 NORMAL 1041 4280 0
466 35991894 635 25 SPARK_POS_OK 0.214071 0.259948 0.277441 0.279709 NORMAL 637 25 SPARK_POS_OK 0.283967 0.286993 0.209862 0.003954 NORMAL 1041 4228 0
467 36058894 636 25 SPARK_POS_OK 0.213940 0.259834 0.277300 0.279558 NORMAL 638 25 SPARK_POS_OK 0.283840 0.286869 0.209744 0.003928 NORMAL 1041 4226 0
468 36126894 637 25 SPARK_POS_OK 0.213813 0.259711 0.277163 0.279440 NORMAL 639 25 SPARK_POS_OK 0.283694 0.286736 0.209639 0.003926 NORMAL 58 4181 0
469 36194894 638 51 SPARK_POS_OK 0.213678 0.259607 0.277023 0.279305 NORMAL 640 24 SPARK_POS_OK 0.283580 0.286590 0.209524 0.003909 NORMAL 885 4185 0
470 36261894 639 50 SPARK_POS_OK 0.213571 0.259478 0.276902 0.279151 NORMAL 641 51 SPARK_POS_OK 0.283444 0.286450 0.209401 0.003888 NORMAL 887 4159 0
471 36329894 640 90 SPARK_POS_OK 0.213425 0.259354 0.276760 0.279043 NORMAL 642 87 SPARK_POS_OK 0.283290 0.286326 0.209283 0.003871 NORMAL 888 4260 0
472 36396894 641 110 SPARK_POS_OK 0.213286 0.259249 0.276630 0.278909 NORMAL 643 90 SPARK_POS_OK 0.283167 0.286195 0.209165 0.003867 NORMAL 890 4243 0
473 36463894 642 110 SPARK_POS_OK 0.213141 0.259161 0.276492 0.278755 NORMAL 644 110 SPARK_POS_OK 0.283051 0.286046 0.209054 0.003871 NORMAL 893 4162 0
474 36530894 643 130 SPARK_POS_OK 0.213040 0.259021 0.276358 0.278633 NORMAL 645 131 SPARK_POS_OK 0.282916 0.285913 0.208927 0.003837 NORMAL 899 4263 0
475 36596894 644 140 SPARK_POS_OK 0.212910 0.258908 0.276224 0.278480 NORMAL 646 130 SPARK_POS_OK 0.282785 0.285773 0.208818 0.003849 NORMAL 904 4212 0
476 36662894 645 140 SPARK_POS_OK 0.212783 0.258812 0.276097 0.278357 NORMAL 647 140 SPARK_POS_OK 0.282663 0.285640 0.208700 0.003834 NORMAL 910 4189 0
477 36727894 646 161 SPARK_POS_OK 0.212635 0.258691 0.275950 0.278206 NORMAL 648 160 SPARK_POS_OK 0.282534 0.285493 0.208591 0.003829 NORMAL 921 4158 0
478 36792894 647 181 SPARK_POS_OK 0.212511 0.258538 0.275831 0.278075 NORMAL 649 160 SPARK_POS_OK 0.282395 0.285385 0.208468 0.003807 NORMAL 923 4164 0
479 36857894 648 180 SPARK_POS_OK 0.212399 0.258464 0.275685 0.277957 NORMAL 650 181 SPARK_POS_OK 0.282272 0.285238 0.208339 0.003818 NORMAL 933 4162 0
480 36921894 649 210 SPARK_POS_OK 0.212275 0.258311 0.275542 0.277777 NORMAL 651 180 SPARK_POS_OK 0.282136 0.285095 0.208236 0.003802 NORMAL 938 4234 0
481 36984894 650 213 SPARK_POS_OK 0.212106 0.258200 0.275386 0.277677 NORMAL 652 210 SPARK_POS_OK 0.281998 0.284982 0.208116 0.003808 NORMAL 945 4213 0
482 37047894 651 230 SPARK_POS_OK 0.212014 0.258107 0.275283 0.277527 NORMAL 653 230 SPARK_POS_OK 0.281868 0.284844 0.207992 0.003803 NORMAL 959 4228 0
483 37108894 652 12 SPARK_NEG_OK 0.211840 0.257963 0.275127 0.277390 SOFT_START 654 230 SPARK_POS_OK 0.281720 0.284698 0.207887 0.003822 NORMAL 964 4278 0
484 37169894 653 11 SPARK_NEG_OK 0.211723 0.257869 0.275005 0.277253 SOFT_START 655 11 SPARK_NEG_OK 0.281601 0.284568 0.207760 0.003831 SOFT_START 979 4191 0
485 37230894 654 30 SPARK_NEG_OK 0.211592 0.257738 0.274858 0.277121 SOFT_START 656 11 SPARK_NEG_OK 0.281478 0.284427 0.207640 0.003812 SOFT_START 988 4244 0
486 37290894 655 30 SPARK_NEG_OK 0.211459 0.257616 0.274735 0.276963 SOFT_START 657 31 SPARK_NEG_OK 0.281326 0.284291 0.207534 0.003821 SOFT_START 998 4178 0
487 37349894 656 50 SPARK_NEG_OK 0.211344 0.257522 0.274568 0.276856 SOFT_START 658 50 SPARK_NEG_OK 0.281195 0.284154 0.207424 0.003799 SOFT_START 1016 4186 0
488 37408894 657 50 SPARK_NEG_OK 0.211175 0.257400 0.274474 0.276735 SOFT_START 659 50 SPARK_NEG_OK 0.281072 0.284021 0.207309 0.003795 SOFT_START 1017 4264 0
489 37466894 658 71 SPARK_NEG_OK 0.211040 0.257265 0.274315 0.276607 SOFT_START 660 70 SPARK_NEG_OK 0.280935 0.283883 0.207184 0.003827 SOFT_START 1034 4247 0
490 37524894 659 91 SPARK_NEG_OK 0.210924 0.257138 0.274191 0.276452 SOFT_START 661 70 SPARK_NEG_OK 0.280807 0.283751 0.207044 0.003825 SOFT_START 1045 4277 0
491 37580894 660 91 SPARK_NEG_OK 0.210773 0.257016 0.274035 0.276287 SOFT_START 662 90 SPARK_NEG_OK 0.280664 0.283605 0.206951 0.003846 SOFT_START 1056 4156 0
492 37637894 661 110 SPARK_NEG_OK 0.210651 0.256919 0.273908 0.276170 SOFT_START 663 90 SPARK_NEG_OK 0.280513 0.283462 0.206825 0.003834 SOFT_START 1067 4200 0
493 37692894 662 108 SPARK_NEG_OK 0.210524 0.256817 0.273778 0.276014 SOFT_START 664 110 SPARK_NEG_OK 0.280396 0.283341 0.206679 0.003850 SOFT_START 1080 4268 0
494 37747894 663 140 SPARK_NEG_OK 0.210339 0.256675 0.273625 0.275890 SOFT_START 665 110 SPARK_NEG_OK 0.280262 0.283211 0.206587 0.003878 SOFT_START 1092 4246 0
495 37801894 664 140 SPARK_NEG_OK 0.210227 0.256556 0.273506 0.275755 SOFT_START 666 141 SPARK_NEG_OK 0.280131 0.283070 0.206459 0.003862 SOFT_START 1106 4152 0
496 37855894 665 160 SPARK_NEG_OK 0.210127 0.256458 0.273353 0.275602 SOFT_START 667 141 SPARK_NEG_OK 0.280004 0.282941 0.206351 0.003883 SOFT_START 1117 4169 0
497 37908894 666 161 SPARK_NEG_OK 0.210000 0.256337 0.273227 0.275472 SOFT_START 668 160 SPARK_NEG_OK 0.279878 0.282794 0.206226 0.003880 SOFT_START 1130 4168 0
498 37961894 667 200 SPARK_NEG_OK 0.209829 0.256199 0.273078 0.275325 SOFT_START 669 161 SPARK_NEG_OK 0.279713 0.282645 0.206130 0.003921 SOFT_START 1141 4248 0
499 38013894 668 200 SPARK_NEG_OK 0.209727 0.256077 0.272948 0.275184 SOFT_START 670 200 SPARK_NEG_OK 0.279604 0.282503 0.205991 0.003906 SOFT_START 1155 4189 0
500 38064894 669 220 SPARK_NEG_OK 0.209596 0.255956 0.272787 0.275062 SOFT_START 671 200 SPARK_NEG_OK 0.279452 0.282353 0.205868 0.003920 SOFT_START 1167 4239 0
501 38115894 670 221 SPARK_NEG_OK 0.209432 0.255836 0.272673 0.274916 SOFT_START 672 220 SPARK_NEG_OK 0.279309 0.282218 0.205765 0.003961 SOFT_START 1182 4272 0
502 38165894 671 220 SPARK_NEG_OK 0.209312 0.255718 0.272501 0.274780 SOFT_START 673 220 SPARK_NEG_OK 0.279174 0.282106 0.205613 0.003957 SOFT_START 1194 4180 0
503 38214894 672 220 SPARK_NEG_OK 0.209182 0.255595 0.272353 0.274642 SOFT_START 674 221 SPARK_NEG_OK 0.279053 0.281949 0.205492 0.003965 SOFT_START 1210 4193 0
504 38264894 673 220 SPARK_NEG_OK 0.209062 0.255480 0.272245 0.274504 SOFT_START 675 220 SPARK_NEG_OK 0.278916 0.281812 0.205392 0.003965 SOFT_START 1221 4153 0
505 38312894 674 220 SPARK_NEG_OK 0.208949 0.255389 0.272102 0.274378 SOFT_START 676 221 SPARK_NEG_OK 0.278790 0.281681 0.205267 0.003991 SOFT_START 1236 4161 0
506 38360894 675 220 SPARK_NEG_OK 0.208792 0.255247 0.271955 0.274234 SOFT_START 677 220 SPARK_NEG_OK 0.278662 0.281528 0.205157 0.003999 SOFT_START 1245 4251 0
507 38408894 676 220 SPARK_NEG_OK 0.208645 0.255117 0.271837 0.274081 SOFT_START 678 221 SPARK_NEG_OK 0.278516 0.281422 0.205005 0.004001 SOFT_START 1257 4259 0
508 38456894 677 223 SPARK_NEG_OK 0.208504 0.254996 0.271699 0.273960 SOFT_START 679 220 SPARK_NEG_OK 0.278376 0.281266 0.204897 0.004032 SOFT_START 1257 4214 0
509 38503894 678 220 SPARK_NEG_OK 0.208384 0.254872 0.271536 0.273805 SOFT_START 680 221 SPARK_NEG_OK 0.278223 0.281140 0.204788 0.004033 SOFT_START 1274 4237 0
510 38550894 679 220 SPARK_NEG_OK 0.208232 0.254766 0.271414 0.273679 SOFT_START 681 220 SPARK_NEG_OK 0.278096 0.281001 0.204660 0.004051 SOFT_START 1275 4257 0
511 38596894 680 220 SPARK_NEG_OK 0.208101 0.254632 0.271282 0.273514 SOFT_START 682 221 SPARK_NEG_OK 0.277963 0.280815 0.204550 0.004060 SOFT_START 1291 4202 0
512 38643894 681 221 SPARK_NEG_OK 0.207956 0.254499 0.271150 0.273395 SOFT_START 683 220 SPARK_NEG_OK 0.277845 0.280711 0.204415 0.004084 SOFT_START 1293 4195 0
513 38689894 682 221 SPARK_NEG_OK 0.207830 0.254421 0.270997 0.273231 SOFT_START 684 223 SPARK_NEG_OK 0.277692 0.280572 0.204302 0.004092 SOFT_START 1309 4227 0
514 38734894 683 220 SPARK_NEG_OK 0.207710 0.254275 0.270846 0.273100 SOFT_START 685 220 SPARK_NEG_OK 0.277570 0.280423 0.204185 0.004102 SOFT_START 1310 4175 0
515 38780894 684 221 SPARK_NEG_OK 0.207548 0.254160 0.270709 0.272974 SOFT_START 686 217 SPARK_NEG_OK 0.277417 0.280293 0.204057 0.004109 SOFT_START 1317 4218 0
516 38825894 685 220 SPARK_NEG_OK 0.207415 0.254024 0.270590 0.272829 SOFT_START 687 221 SPARK_NEG_OK 0.277311 0.280139 0.203938 0.004123 SOFT_START 1326 4193 0
517 38870894 686 222 SPARK_NEG_OK 0.207291 0.253907 0.270428 0.272685 SOFT_START 688 220 SPARK_NEG_OK 0.277144 0.280020 0.203822 0.004132 SOFT_START 1326 4165 0
518 38915894 687 221 SPARK_NEG_OK 0.207150 0.253793 0.270294 0.272558 SOFT_START 689 220 SPARK_NEG_OK 0.277017 0.279866 0.203716 0.004162 SOFT_START 1337 4224 0
519 38960894 688 220 SPARK_NEG_OK 0.207025 0.253657 0.270154 0.272431 SOFT_START 690 220 SPARK_NEG_OK 0.276886 0.279739 0.203577 0.004151 SOFT_START 1338 4199 0
520 39005894 689 220 SPARK_NEG_OK 0.206887 0.253541 0.270010 0.272270 SOFT_START 691 221 SPARK_NEG_OK 0.276770 0.279604 0.203462 0.004165 SOFT_START 1346 4177 0
521 39049894 690 221 SPARK_NEG_OK 0.206779 0.253445 0.269864 0.272130 SOFT_START 692 221 SPARK_NEG_OK 0.276610 0.279459 0.203337 0.004172 SOFT_START 1348 4204 0
522 39093894 691 220 SPARK_NEG_OK 0.206625 0.253299 0.269744 0.271980 SOFT_START 693 220 SPARK_NEG_OK 0.276486 0.279325 0.203225 0.004199 SOFT_START 1351 4219 0
523 39138894 692 220 SPARK_NEG_OK 0.206511 0.253202 0.269613 0.271854 SOFT_START 694 220 SPARK_NEG_OK 0.276347 0.279167 0.203116 0.004188 SOFT_START 1358 4187 0
524 39182894 693 221 SPARK_NEG_OK 0.206396 0.253100 0.269476 0.271717 SOFT_START 695 220 SPARK_NEG_OK 0.276213 0.279039 0.203003 0.004205 SOFT_START 1358 4154 0
525 39226894 694 220 SPARK_NEG_OK 0.206258 0.252935 0.269325 0.271574 SOFT_START 696 220 SPARK_NEG_OK 0.276089 0.278912 0.202873 0.004227 SOFT_START 1364 4179 0
526 39270894 695 220 SPARK_NEG_OK 0.206105 0.252839 0.269194 0.271446 SOFT_START 697 221 SPARK_NEG_OK 0.275929 0.278774 0.202767 0.004229 SOFT_START 1366 4254 0
527 39314894 696 181 SPARK_NEG_OK 0.205987 0.252725 0.269056 0.271299 SOFT_START 698 180 SPARK_NEG_OK 0.275809 0.278629 0.202613 0.004247 SOFT_START 1365 4224 0
528 39357894 697 180 SPARK_NEG_OK 0.205838 0.252599 0.268899 0.271145 SOFT_START 699 181 SPARK_NEG_OK 0.275657 0.278487 0.202522 0.004249 SOFT_START 1367 4206 0
529 39401894 698 140 SPARK_NEG_OK 0.205708 0.252507 0.268775 0.271013 SOFT_START 700 180 SPARK_NEG_OK 0.275525 0.278352 0.202399 0.004258 SOFT_START 1363 4240 0
530 39445894 699 140 SPARK_NEG_OK 0.205578 0.252335 0.268633 0.270877 SOFT_START 701 140 SPARK_NEG_OK 0.275407 0.278224 0.202285 0.004265 SOFT_START 1362 4214 0
531 39489894 700 140 SPARK_NEG_OK 0.205450 0.252241 0.268512 0.270755 SOFT_START 702 141 SPARK_NEG_OK 0.275276 0.278093 0.202169 0.004291 SOFT_START 1362 4190 0
532 39534894 701 100 SPARK_NEG_OK 0.205328 0.252104 0.268357 0.270594 SOFT_START 703 100 SPARK_NEG_OK 0.275124 0.277960 0.202031 0.004262 SOFT_START 1350 4195 0
533 39578894 702 100 SPARK_NEG_OK 0.205196 0.252012 0.268247 0.270457 SOFT_START 704 102 SPARK_NEG_OK 0.275012 0.277813 0.201943 0.004296 SOFT_START 1351 4207 0
534 39623894 703 70 SPARK_NEG_OK 0.205076 0.251896 0.268098 0.270344 SOFT_START 705 71 SPARK_NEG_OK 0.274871 0.277678 0.201812 0.004296 SOFT_START 1337 4182 0
535 39668894 704 70 SPARK_NEG_OK 0.204934 0.251762 0.267957 0.270193 SOFT_START 706 70 SPARK_NEG_OK 0.274735 0.277537 0.201693 0.004286 SOFT_START 1339 4177 0
536 39713894 705 41 SPARK_NEG_OK 0.204822 0.251641 0.267810 0.270061 SOFT_START 707 70 SPARK_NEG_OK 0.274608 0.277390 0.201574 0.004303 SOFT_START 1330 4167 0
537 39758894 706 40 SPARK_NEG_OK 0.204682 0.251549 0.267684 0.269920 SOFT_START 708 41 SPARK_NEG_OK 0.274457 0.277274 0.201457 0.004306 SOFT_START 1324 4195 0
538 39804894 707 40 SPARK_NEG_OK 0.204546 0.251395 0.267525 0.269762 SOFT_START 709 40 SPARK_NEG_OK 0.274332 0.277125 0.201312 0.004304 SOFT_START 1324 4223 0
539 39943894 708 211 SPARK_POS_OK 0.204431 0.251308 0.267450 0.269685 NORMAL 710 210 SPARK_POS_OK 0.274249 0.277008 0.201241 0.004118 NORMAL 1290 4283 0
540 39989894 709 210 SPARK_POS_OK 0.204310 0.251195 0.267299 0.269525 NORMAL 711 211 SPARK_POS_OK 0.274115 0.276889 0.201128 0.004120 NORMAL 1283 4204 0
541 40037894 710 170 SPARK_POS_OK 0.204191 0.251074 0.267169 0.269407 NORMAL 712 210 SPARK_POS_OK 0.273974 0.276754 0.201014 0.004125 NORMAL 1269 4236 0
542 40084894 711 170 SPARK_POS_OK 0.204046 0.250964 0.267050 0.269277 NORMAL 713 171 SPARK_POS_OK 0.273856 0.276611 0.200901 0.004141 NORMAL 1256 4229 0
543 40133894 712 131 SPARK_POS_OK 0.203942 0.250819 0.266888 0.269134 NORMAL 714 170 SPARK_POS_OK 0.273709 0.276471 0.200775 0.004130 NORMAL 1242 4169 0
544 40182894 713 130 SPARK_POS_OK 0.203801 0.250719 0.266763 0.268992 NORMAL 715 131 SPARK_POS_OK 0.273576 0.276337 0.200660 0.004146 NORMAL 1229 4168 0
545 40231894 714 101 SPARK_POS_OK 0.203679 0.250602 0.266610 0.268854 NORMAL 716 130 SPARK_POS_OK 0.273449 0.276200 0.200556 0.004156 NORMAL 1214 4213 0
546 40281894 715 100 SPARK_POS_OK 0.203544 0.250499 0.266479 0.268734 NORMAL 717 100 SPARK_POS_OK 0.273300 0.276085 0.200437 0.004150 NORMAL 1201 4153 0
547 40332894 716 60 SPARK_POS_OK 0.203425 0.250357 0.266336 0.268586 NORMAL 718 101 SPARK_POS_OK 0.273175 0.275934 0.200318 0.004133 NORMAL 1187 4237 0
548 40383894 717 61 SPARK_POS_OK 0.203306 0.250285 0.266254 0.268469 NORMAL 719 60 SPARK_POS_OK 0.273046 0.275812 0.200194 0.004146 NORMAL 1173 4155 0
549 40435894 718 42 SPARK_POS_OK 0.203170 0.250174 0.266094 0.268306 NORMAL 720 60 SPARK_POS_OK 0.272930 0.275672 0.200098 0.004148 NORMAL 1156 4268 0
550 40487894 719 40 SPARK_POS_OK 0.203015 0.250028 0.265937 0.268164 NORMAL 721 41 SPARK_POS_OK 0.272765 0.275537 0.199981 0.004146 NORMAL 1142 4276 0
551 40540894 720 25 SPARK_POS_OK 0.202909 0.249906 0.265791 0.268040 NORMAL 722 40 SPARK_POS_OK 0.272655 0.275398 0.199848 0.004122 NORMAL 1125 4148 0
552 40594894 721 25 SPARK_POS_OK 0.202784 0.249798 0.265670 0.267910 NORMAL 723 25 SPARK_POS_OK 0.272522 0.275282 0.199748 0.004113 NORMAL 1110 4255 0
553 40649894 722 25 SPARK_POS_OK 0.202652 0.249678 0.265548 0.267772 NORMAL 724 25 SPARK_POS_OK 0.272388 0.275137 0.199640 0.004106 NORMAL 1110 4212 0
554 40705894 723 25 SPARK_POS_OK 0.202504 0.249600 0.265426 0.267656 NORMAL 725 25 SPARK_POS_OK 0.272263 0.275016 0.199504 0.004092 NORMAL 1110 4270 0
555 40761894 724 25 SPARK_POS_OK 0.202400 0.249467 0.265272 0.267516 NORMAL 726 25 SPARK_POS_OK 0.272152 0.274868 0.199398 0.004108 NORMAL 1110 4240 0
556 40818894 725 25 SPARK_POS_OK 0.202259 0.249345 0.265149 0.267385 NORMAL 727 25 SPARK_POS_OK 0.272015 0.274736 0.199280 0.004070 NORMAL 1110 4227 0
557 40876894 726 25 SPARK_POS_OK 0.202144 0.249227 0.265021 0.267236 NORMAL 728 25 SPARK_POS_OK 0.271885 0.274595 0.199181 0.004079 NORMAL 1110 4159 0
558 40934894 727 25 SPARK_POS_OK 0.202006 0.249094 0.264886 0.267131 NORMAL 729 25 SPARK_POS_OK 0.271756 0.274480 0.199078 0.004046 NORMAL 1110 4272 0
559 40994894 728 25 SPARK_POS_OK 0.201861 0.249012 0.264758 0.266984 NORMAL 730 25 SPARK_POS_OK 0.271606 0.274345 0.198958 0.004050 NORMAL 1110 4247 0
560 41053894 729 25 SPARK_POS_OK 0.201721 0.248911 0.264663 0.266860 NORMAL 731 25 SPARK_POS_OK 0.271502 0.274233 0.198841 0.004031 NORMAL 1110 4273 0
561 41114894 730 25 SPARK_POS_OK 0.201633 0.248787 0.264506 0.266732 NORMAL 732 25 SPARK_POS_OK 0.271386 0.274118 0.198747 0.004001 NORMAL 1110 4169 0
562 41176894 731 25 SPARK_POS_OK 0.201508 0.248668 0.264362 0.266598 NORMAL 733 25 SPARK_POS_OK 0.271242 0.273969 0.198644 0.004007 NORMAL 1110 4191 0
563 41238894 732 25 SPARK_POS_OK 0.201376 0.248557 0.264245 0.266468 NORMAL 734 25 SPARK_POS_OK 0.271113 0.273847 0.198520 0.003988 NORMAL 1110 4256 0
564 41301894 733 30 SPARK_POS_OK 0.201266 0.248428 0.264118 0.266318 NORMAL 735 30 SPARK_POS_OK 0.271019 0.273695 0.198419 0.003971 NORMAL 84 4205 0
565 41363894 734 30 SPARK_POS_OK 0.201120 0.248331 0.263957 0.266209 NORMAL 736 30 SPARK_POS_OK 0.270879 0.273562 0.198269 0.003963 NORMAL 957 4204 0
566 41426894 735 70 SPARK_POS_OK 0.201012 0.248233 0.263847 0.266065 NORMAL 737 71 SPARK_POS_OK 0.270754 0.273460 0.198188 0.003932 NORMAL 952 4159 0
567 41489894 736 121 SPARK_POS_OK 0.200889 0.248101 0.263735 0.265954 NORMAL 738 70 SPARK_POS_OK 0.270635 0.273333 0.198066 0.003924 NORMAL 951 4218 0
568 41552894 737 120 SPARK_POS_OK 0.200770 0.248005 0.263599 0.265783 NORMAL 739 120 SPARK_POS_OK 0.270470 0.273159 0.197971 0.003912 NORMAL 952 4164 0
569 41615894 738 160 SPARK_POS_OK 0.200683 0.247887 0.263482 0.265682 NORMAL 740 161 SPARK_POS_OK 0.270364 0.273066 0.197852 0.003889 NORMAL 954 4165 0
570 41678894 739 161 SPARK_POS_OK 0.200534 0.247756 0.263340 0.265562 NORMAL 741 160 SPARK_POS_OK 0.270231 0.272928 0.197769 0.003905 NORMAL 956 4218 0
571 41740894 740 190 SPARK_POS_OK 0.200435 0.247624 0.263224 0.265428 NORMAL 742 190 SPARK_POS_OK 0.270122 0.272796 0.197648 0.003864 NORMAL 964 4154 0
572 41802894 741 220 SPARK_POS_OK 0.200307 0.247547 0.263053 0.265304 NORMAL 743 190 SPARK_POS_OK 0.269973 0.272658 0.197528 0.003868 NORMAL 970 4253 0
573 41863894 742 220 SPARK_POS_OK 0.200197 0.247444 0.262943 0.265173 NORMAL 744 221 SPARK_POS_OK 0.269864 0.272553 0.197408 0.003874 NORMAL 979 4164 0
574 42043894 743 30 SPARK_NEG_OK 0.200107 0.247387 0.262863 0.265078 SOFT_START 745 30 SPARK_NEG_OK 0.269786 0.272447 0.197350 0.003678 SOFT_START 1009 4247 0
575 42102894 744 60 SPARK_NEG_OK 0.199975 0.247245 0.262704 0.264937 SOFT_START 746 30 SPARK_NEG_OK 0.269638 0.272316 0.197238 0.003660 SOFT_START 1017 4203 0
576 42160894 745 60 SPARK_NEG_OK 0.199851 0.247157 0.262578 0.264801 SOFT_START 747 61 SPARK_NEG_OK 0.269511 0.272185 0.197123 0.003695 SOFT_START 1027 4196 0
577 42218894 746 90 SPARK_NEG_OK 0.199724 0.246996 0.262470 0.264683 SOFT_START 748 61 SPARK_NEG_OK 0.269379 0.272081 0.197006 0.003712 SOFT_START 1036 4165 0
578 42275894 747 90 SPARK_NEG_OK 0.199598 0.246891 0.262341 0.264522 SOFT_START 749 91 SPARK_NEG_OK 0.269270 0.271949 0.196900 0.003718 SOFT_START 1048 4271 0
579 42332894 748 110 SPARK_NEG_OK 0.199476 0.246797 0.262198 0.264432 SOFT_START 750 107 SPARK_NEG_OK 0.269136 0.271783 0.196793 0.003707 SOFT_START 1060 4178 0
580 42388894 749 110 SPARK_NEG_OK 0.199374 0.246669 0.262067 0.264315 SOFT_START 751 111 SPARK_NEG_OK 0.269028 0.271673 0.196687 0.003733 SOFT_START 1073 4157 0
581 42442894 750 140 SPARK_NEG_OK 0.199243 0.246548 0.261946 0.264188 SOFT_START 752 140 SPARK_NEG_OK 0.268887 0.271544 0.196567 0.003757 SOFT_START 1098 4178 0
582 42497894 751 141 SPARK_NEG_OK 0.199089 0.246437 0.261806 0.264030 SOFT_START 753 140 SPARK_NEG_OK 0.268753 0.271395 0.196472 0.003762 SOFT_START 1099 4277 0
583 42550894 752 171 SPARK_NEG_OK 0.198994 0.246323 0.261676 0.263922 SOFT_START 754 170 SPARK_NEG_OK 0.268612 0.271274 0.196361 0.003766 SOFT_START 1123 4183 0
584 42604894 753 170 SPARK_NEG_OK 0.198861 0.246233 0.261565 0.263759 SOFT_START 755 170 SPARK_NEG_OK 0.268504 0.271167 0.196233 0.003782 SOFT_START 1124 4170 0
585 42656894 754 210 SPARK_NEG_OK 0.198743 0.246103 0.261415 0.263638 SOFT_START 756 211 SPARK_NEG_OK 0.268367 0.271031 0.196128 0.003785 SOFT_START 1148 4160 0
586 42708894 755 210 SPARK_NEG_OK 0.198614 0.245963 0.261278 0.263526 SOFT_START 757 210 SPARK_NEG_OK 0.268233 0.270876 0.196034 0.003813 SOFT_START 1149 4240 0
587 42759894 756 220 SPARK_NEG_OK 0.198482 0.245838 0.261155 0.263387 SOFT_START 758 220 SPARK_NEG_OK 0.268111 0.270748 0.195891 0.003822 SOFT_START 1175 4260 0
588 42810894 757 220 SPARK_NEG_OK 0.198360 0.245746 0.261000 0.263236 SOFT_START 759 220 SPARK_NEG_OK 0.267989 0.270618 0.195792 0.003821 SOFT_START 1176 4207 0
589 42860894 758 220 SPARK_NEG_OK 0.198218 0.245627 0.260875 0.263098 SOFT_START 760 223 SPARK_NEG_OK 0.267848 0.270478 0.195671 0.003844 SOFT_START 1204 4237 0
590 42910894 759 220 SPARK_NEG_OK 0.198099 0.245525 0.260764 0.262961 SOFT_START 761 220 SPARK_NEG_OK 0.267730 0.270354 0.195575 0.003870 SOFT_START 1205 4184 0
591 42959894 760 220 SPARK_NEG_OK 0.197989 0.245395 0.260627 0.262851 SOFT_START 762 221 SPARK_NEG_OK 0.267601 0.270222 0.195455 0.003886 SOFT_START 1229 4168 0
592 43007894 761 221 SPARK_NEG_OK 0.197859 0.245275 0.260477 0.262731 SOFT_START 763 220 SPARK_NEG_OK 0.267437 0.270085 0.195344 0.003896 SOFT_START 1230 4202 0
593 43056894 762 220 SPARK_NEG_OK 0.197738 0.245203 0.260365 0.262597 SOFT_START 764 221 SPARK_NEG_OK 0.267359 0.269965 0.195224 0.003885 SOFT_START 1239 4196 0
594 43104894 763 221 SPARK_NEG_OK 0.197602 0.245073 0.260230 0.262448 SOFT_START 765 220 SPARK_NEG_OK 0.267217 0.269827 0.195113 0.003901 SOFT_START 1251 4250 0
595 43151894 764 220 SPARK_NEG_OK 0.197474 0.244928 0.260065 0.262322 SOFT_START 766 220 SPARK_NEG_OK 0.267094 0.269674 0.194982 0.003909 SOFT_START 1258 4184 0
596 43199894 765 221 SPARK_NEG_OK 0.197357 0.244827 0.259967 0.262184 SOFT_START 767 220 SPARK_NEG_OK 0.266970 0.269556 0.194883 0.003923 SOFT_START 1268 4231 0
597 43246894 766 220 SPARK_NEG_OK 0.197248 0.244722 0.259804 0.262077 SOFT_START 768 220 SPARK_NEG_OK 0.266804 0.269414 0.194749 0.003939 SOFT_START 1276 4149 0
598 43292894 767 220 SPARK_NEG_OK 0.197117 0.244605 0.259694 0.261919 SOFT_START 769 220 SPARK_NEG_OK 0.266705 0.269303 0.194654 0.003959 SOFT_START 1286 4169 0
599 43339894 768 220 SPARK_NEG_OK 0.196993 0.244474 0.259559 0.261797 SOFT_START 770 221 SPARK_NEG_OK 0.266541 0.269161 0.194563 0.003976 SOFT_START 1286 4190 0
600 43385894 769 220 SPARK_NEG_OK 0.196869 0.244370 0.259448 0.261645 SOFT_START 771 220 SPARK_NEG_OK 0.266452 0.269037 0.194426 0.003982 SOFT_START 1302 4269 0
601 43431894 770 221 SPARK_NEG_OK 0.196736 0.244229 0.259302 0.261519 SOFT_START 772 221 SPARK_NEG_OK 0.266292 0.268895 0.194313 0.003998 SOFT_START 1304 4262 0
602 43477894 771 220 SPARK_NEG_OK 0.196609 0.244130 0.259157 0.261397 SOFT_START 773 220 SPARK_NEG_OK 0.266187 0.268759 0.194212 0.003994 SOFT_START 1317 4193 0
603 43522894 772 221 SPARK_NEG_OK 0.196499 0.244040 0.259016 0.261270 SOFT_START 774 220 SPARK_NEG_OK 0.266053 0.268638 0.194097 0.004019 SOFT_START 1319 4175 0
604 43567894 773 220 SPARK_NEG_OK 0.196381 0.243890 0.258903 0.261110 SOFT_START 775 221 SPARK_NEG_OK 0.265919 0.268518 0.193987 0.004036 SOFT_START 1323 4172 0
605 43612894 774 220 SPARK_NEG_OK 0.196264 0.243790 0.258788 0.260985 SOFT_START 776 220 SPARK_NEG_OK 0.265797 0.268373 0.193867 0.004045 SOFT_START 1330 4153 0
606 43658894 775 220 SPARK_NEG_OK 0.196141 0.243672 0.258629 0.260858 SOFT_START 777 220 SPARK_NEG_OK 0.265661 0.268230 0.193754 0.004045 SOFT_START 1332 4201 0
607 43702894 776 220 SPARK_NEG_OK 0.196037 0.243563 0.258504 0.260714 SOFT_START 778 220 SPARK_NEG_OK 0.265544 0.268102 0.193647 0.004055 SOFT_START 1338 4158 0
608 43747894 777 220 SPARK_NEG_OK 0.195891 0.243415 0.258385 0.260592 SOFT_START 779 220 SPARK_NEG_OK 0.265426 0.268000 0.193529 0.004078 SOFT_START 1338 4246 0
609 43792894 778 201 SPARK_NEG_OK 0.195798 0.243320 0.258229 0.260479 SOFT_START 780 201 SPARK_NEG_OK 0.265290 0.267842 0.193396 0.004094 SOFT_START 1340 4156 0
610 43837894 779 200 SPARK_NEG_OK 0.195658 0.243208 0.258101 0.260347 SOFT_START 781 200 SPARK_NEG_OK 0.265152 0.267714 0.193290 0.004086 SOFT_START 1341 4225 0
611 43881894 780 160 SPARK_NEG_OK 0.195522 0.243081 0.257956 0.260199 SOFT_START 782 200 SPARK_NEG_OK 0.265024 0.267597 0.193209 0.004101 SOFT_START 1340 4182 0
612 43926894 781 161 SPARK_NEG_OK 0.195416 0.242981 0.257821 0.260077 SOFT_START 783 161 SPARK_NEG_OK 0.264905 0.267470 0.193109 0.004116 SOFT_START 1342 4163 0
613 43971894 782 130 SPARK_NEG_OK 0.195294 0.242833 0.257735 0.259920 SOFT_START 784 158 SPARK_NEG_OK 0.264760 0.267307 0.192973 0.004118 SOFT_START 1339 4208 0
614 44016894 783 130 SPARK_NEG_OK 0.195179 0.242740 0.257558 0.259807 SOFT_START 785 130 SPARK_NEG_OK 0.264655 0.267206 0.192842 0.004129 SOFT_START 1339 4221 0
615 44060894 784 128 SPARK_NEG_OK 0.195053 0.242636 0.257455 0.259690 SOFT_START 786 131 SPARK_NEG_OK 0.264505 0.267072 0.192737 0.004144 SOFT_START 1339 4236 0
616 44106894 785 100 SPARK_NEG_OK 0.194902 0.242509 0.257328 0.259535 SOFT_START 787 100 SPARK_NEG_OK 0.264392 0.266936 0.192629 0.004129 SOFT_START 1329 4203 0
617 44151894 786 101 SPARK_NEG_OK 0.194796 0.242376 0.257199 0.259408 SOFT_START 788 100 SPARK_NEG_OK 0.264261 0.266806 0.192531 0.004149 SOFT_START 1330 4178 0
618 44196894 787 80 SPARK_NEG_OK 0.194678 0.242286 0.257065 0.259286 SOFT_START 789 101 SPARK_NEG_OK 0.264124 0.266667 0.192397 0.004155 SOFT_START 1322 4176 0
619 44242894 788 80 SPARK_NEG_OK 0.194545 0.242181 0.256949 0.259129 SOFT_START 790 80 SPARK_NEG_OK 0.264000 0.266525 0.192301 0.004146 SOFT_START 1318 4255 0
620 44287894 789 61 SPARK_NEG_OK 0.194429 0.242080 0.256811 0.259014 SOFT_START 791 81 SPARK_NEG_OK 0.263849 0.266387 0.192185 0.004156 SOFT_START 1309 4187 0
621 44333894 790 60 SPARK_NEG_OK 0.194306 0.241948 0.256664 0.258874 SOFT_START 792 60 SPARK_NEG_OK 0.263768 0.266272 0.192068 0.004176 SOFT_START 1304 4182 0
622 44379894 791 61 SPARK_NEG_OK 0.194189 0.241806 0.256536 0.258739 SOFT_START 793 60 SPARK_NEG_OK 0.263627 0.266151 0.191975 0.004157 SOFT_START 1304 4175 0
623 44426894 792 50 SPARK_NEG_OK 0.194061 0.241702 0.256386 0.258610 SOFT_START 794 50 SPARK_NEG_OK 0.263498 0.266024 0.191851 0.004165 SOFT_START 1291 4264 0
624 44472894 793 50 SPARK_NEG_OK 0.193927 0.241601 0.256268 0.258484 SOFT_START 795 50 SPARK_NEG_OK 0.263357 0.265887 0.191762 0.004178 SOFT_START 1293 4257 0
625 44519894 794 50 SPARK_NEG_OK 0.193799 0.241491 0.256147 0.258339 SOFT_START 796 51 SPARK_NEG_OK 0.263250 0.265761 0.191653 0.004188 SOFT_START 1281 4241 0
626 44566894 795 49 SPARK_NEG_OK 0.193665 0.241373 0.256011 0.258195 SOFT_START 797 50 SPARK_NEG_OK 0.263091 0.265631 0.191526 0.004173 SOFT_START 1283 4276 0
627 44613894 796 50 SPARK_NEG_OK 0.193540 0.241243 0.255875 0.258098 SOFT_START 798 51 SPARK_NEG_OK 0.263007 0.265497 0.191412 0.004163 SOFT_START 1276 4193 0
628 44660894 797 50 SPARK_NEG_OK 0.193436 0.241147 0.255746 0.257978 SOFT_START 799 50 SPARK_NEG_OK 0.262855 0.265361 0.191306 0.004170 SOFT_START 1272 4229 0
629 44707894 798 50 SPARK_NEG_OK 0.193288 0.241022 0.255612 0.257819 SOFT_START 800 51 SPARK_NEG_OK 0.262737 0.265232 0.191194 0.004177 SOFT_START 1265 4268 0
630 44755894 799 50 SPARK_NEG_OK 0.193172 0.240936 0.255510 0.257689 SOFT_START 801 50 SPARK_NEG_OK 0.262594 0.265086 0.191092 0.004173 SOFT_START 1260 4149 0
631 44803894 800 50 SPARK_NEG_OK 0.193061 0.240822 0.255350 0.257562 SOFT_START 802 51 SPARK_NEG_OK 0.262484 0.264987 0.190976 0.004181 SOFT_START 1255 4228 0
632 44851894 801 50 SPARK_NEG_OK 0.192931 0.240676 0.255222 0.257454 SOFT_START 803 50 SPARK_NEG_OK 0.262373 0.264848 0.190865 0.004160 SOFT_START 1253 4212 0
633 44898894 802 50 SPARK_NEG_OK 0.192834 0.240576 0.255093 0.257311 SOFT_START 804 51 SPARK_NEG_OK 0.262241 0.264716 0.190771 0.004186 SOFT_START 1253 4191 0
634 44947894 803 50 SPARK_NEG_OK 0.192724 0.240459 0.254962 0.257189 SOFT_START 805 50 SPARK_NEG_OK 0.262112 0.264597 0.190664 0.004171 SOFT_START 1245 4150 0
635 44995894 804 50 SPARK_NEG_OK 0.192583 0.240365 0.254850 0.257064 SOFT_START 806 51 SPARK_NEG_OK 0.261984 0.264466 0.190551 0.004168 SOFT_START 1246 4155 0
636 45043894 805 50 SPARK_NEG_OK 0.192483 0.240215 0.254744 0.256926 SOFT_START 807 50 SPARK_NEG_OK 0.261874 0.264334 0.190439 0.004156 SOFT_START 1240 4178 0
637 45091894 806 48 SPARK_NEG_OK 0.192343 0.240144 0.254613 0.256810 SOFT_START 808 51 SPARK_NEG_OK 0.261713 0.264204 0.190327 0.004158 SOFT_START 1241 4253 0
638 45140894 807 50 SPARK_NEG_OK 0.192224 0.240026 0.254460 0.256689 SOFT_START 809 50 SPARK_NEG_OK 0.261614 0.264077 0.190225 0.004165 SOFT_START 1232 4243 0
639 45189894 808 50 SPARK_NEG_OK 0.192109 0.239901 0.254341 0.256534 SOFT_START 810 50 SPARK_NEG_OK 0.261489 0.263938 0.190108 0.004143 SOFT_START 1234 4284 0
640 45238894 809 51 SPARK_NEG_OK 0.191958 0.239796 0.254230 0.256408 SOFT_START 811 50 SPARK_NEG_OK 0.261356 0.263807 0.190001 0.004138 SOFT_START 1229 4268 0
641 45286894 810 47 SPARK_NEG_OK 0.191852 0.239690 0.254098 0.256292 SOFT_START 812 50 SPARK_NEG_OK 0.261207 0.263699 0.189890 0.004146 SOFT_START 1226 4162 0
642 45335894 811 51 SPARK_NEG_OK 0.191737 0.239571 0.253947 0.256172 SOFT_START 813 50 SPARK_NEG_OK 0.261111 0.263574 0.189781 0.004153 SOFT_START 1223 4172 0
643 45385894 812 50 SPARK_NEG_OK 0.191611 0.239471 0.253817 0.256026 SOFT_START 814 50 SPARK_NEG_OK 0.260968 0.263440 0.189676 0.004123 SOFT_START 1221 4266 0
644 45434894 813 47 SPARK_NEG_OK 0.191482 0.239350 0.253700 0.255923 SOFT_START 815 51 SPARK_NEG_OK 0.260872 0.263320 0.189580 0.004151 SOFT_START 1219 4251 0
645 45483894 814 50 SPARK_NEG_OK 0.191370 0.239239 0.253552 0.255758 SOFT_START 816 50 SPARK_NEG_OK 0.260741 0.263183 0.189472 0.004148 SOFT_START 1219 4223 0
646 45532894 815 50 SPARK_NEG_OK 0.191237 0.239108 0.253436 0.255647 SOFT_START 817 50 SPARK_NEG_OK 0.260611 0.263052 0.189347 0.004121 SOFT_START 1216 4231 0
647 45582894 816 51 SPARK_NEG_OK 0.191110 0.239028 0.253310 0.255525 SOFT_START 818 50 SPARK_NEG_OK 0.260473 0.262930 0.189257 0.004116 SOFT_START 1216 4237 0
648 45631894 817 49 SPARK_NEG_OK 0.190997 0.238910 0.253175 0.255381 SOFT_START 819 50 SPARK_NEG_OK 0.260382 0.262802 0.189146 0.004120 SOFT_START 1216 4244 0
649 45680894 818 50 SPARK_NEG_OK 0.190886 0.238796 0.253065 0.255262 SOFT_START 820 51 SPARK_NEG_OK 0.260221 0.262699 0.189050 0.004132 SOFT_START 1210 4155 0
650 45730894 819 50 SPARK_NEG_OK 0.190738 0.238699 0.252901 0.255105 SOFT_START 821 50 SPARK_NEG_OK 0.260109 0.262575 0.188913 0.004126 SOFT_START 1212 4249 0
651 45780894 820 50 SPARK_NEG_OK 0.190637 0.238562 0.252810 0.255017 SOFT_START 822 50 SPARK_NEG_OK 0.259993 0.262415 0.188825 0.004118 SOFT_START 1205 4206 0
652 45830894 821 51 SPARK_NEG_OK 0.190503 0.238465 0.252685 0.254884 SOFT_START 823 50 SPARK_NEG_OK 0.259852 0.262313 0.188717 0.004117 SOFT_START 1206 4219 0
653 45879894 822 48 SPARK_NEG_OK 0.190406 0.238347 0.252525 0.254745 SOFT_START 824 50 SPARK_NEG_OK 0.259729 0.262196 0.188599 0.004111 SOFT_START 1202 4164 0
654 45929894 823 50 SPARK_NEG_OK 0.190293 0.238234 0.252434 0.254620 SOFT_START 825 51 SPARK_NEG_OK 0.259622 0.262054 0.188497 0.004097 SOFT_START 1203 4164 0
655 45979894 824 41 SPARK_NEG_OK 0.190171 0.238089 0.252297 0.254486 SOFT_START 826 40 SPARK_NEG_OK 0.259511 0.261909 0.188398 0.004105 SOFT_START 1201 4237 0
656 46029894 825 40 SPARK_NEG_OK 0.190046 0.237992 0.252163 0.254358 SOFT_START 827 40 SPARK_NEG_OK 0.259376 0.261799 0.188283 0.004096 SOFT_START 1202 4219 0
657 46079894 826 30 SPARK_NEG_OK 0.189935 0.237876 0.252033 0.254241 SOFT_START 828 30 SPARK_NEG_OK 0.259261 0.261660 0.188177 0.004101 SOFT_START 1199 4192 0
658 46129894 827 30 SPARK_NEG_OK 0.189816 0.237765 0.251942 0.254119 SOFT_START 829 30 SPARK_NEG_OK 0.259131 0.261537 0.188060 0.004087 SOFT_START 1200 4206 0
659 46179894 828 15 SPARK_NEG_OK 0.189692 0.237678 0.251780 0.253997 SOFT_START 830 12 SPARK_NEG_OK 0.259007 0.261403 0.187978 0.004088 SOFT_START 1192 4174 0
660 46230894 829 12 SPARK_NEG_OK 0.189592 0.237572 0.251632 0.253850 SOFT_START 831 11 SPARK_NEG_OK 0.258870 0.261305 0.187864 0.004097 SOFT_START 1193 4175 0
661 46281894 830 240 SPARK_POS_OK 0.189475 0.237434 0.251530 0.253745 NORMAL 832 11 SPARK_NEG_OK 0.258766 0.261147 0.187738 0.004087 SOFT_START 1194 4225 0
662 46331894 831 240 SPARK_POS_OK 0.189345 0.237330 0.251409 0.253618 NORMAL 833 241 SPARK_POS_OK 0.258665 0.261039 0.187638 0.004082 NORMAL 1184 4245 0
663 46382894 832 231 SPARK_POS_OK 0.189261 0.237217 0.251272 0.253481 NORMAL 834 240 SPARK_POS_OK 0.258522 0.260929 0.187556 0.004079 NORMAL 1179 4168 0
664 46433894 833 230 SPARK_POS_OK 0.189138 0.237136 0.251175 0.253382 NORMAL 835 230 SPARK_POS_OK 0.258383 0.260813 0.187426 0.004068 NORMAL 1176 4228 0
665 46484894 834 220 SPARK_POS_OK 0.189012 0.237026 0.251043 0.253245 NORMAL 836 231 SPARK_POS_OK 0.258259 0.260691 0.187322 0.004076 NORMAL 1171 4212 0
666 46536894 835 223 SPARK_POS_OK 0.188912 0.236922 0.250911 0.253098 NORMAL 837 220 SPARK_POS_OK 0.258138 0.260543 0.187244 0.004051 NORMAL 1169 4213 0
667 46587894 836 200 SPARK_POS_OK 0.188764 0.236806 0.250795 0.253014 NORMAL 838 220 SPARK_POS_OK 0.258026 0.260438 0.187150 0.004058 NORMAL 1164 4272 0
668 46639894 837 200 SPARK_POS_OK 0.188665 0.236703 0.250667 0.252843 NORMAL 839 201 SPARK_POS_OK 0.257918 0.260280 0.187024 0.004051 NORMAL 1161 4206 0
669 46691894 838 190 SPARK_POS_OK 0.188524 0.236609 0.250556 0.252748 NORMAL 840 200 SPARK_POS_OK 0.257770 0.260161 0.186925 0.004048 NORMAL 1154 4239 0
670 46743894 839 191 SPARK_POS_OK 0.188426 0.236479 0.250418 0.252605 NORMAL 841 190 SPARK_POS_OK 0.257676 0.260048 0.186810 0.004051 NORMAL 1150 4206 0
671 46796894 840 180 SPARK_POS_OK 0.188310 0.236364 0.250295 0.252498 NORMAL 842 190 SPARK_POS_OK 0.257535 0.259948 0.186688 0.004035 NORMAL 1143 4232 0
672 46848894 841 180 SPARK_POS_OK 0.188194 0.236236 0.250141 0.252351 NORMAL 843 181 SPARK_POS_OK 0.257429 0.259789 0.186617 0.004027 NORMAL 1137 4153 0
673 46901894 842 170 SPARK_POS_OK 0.188091 0.236159 0.250050 0.252227 NORMAL 844 180 SPARK_POS_OK 0.257328 0.259672 0.186503 0.004034 NORMAL 1131 4183 0
674 46955894 843 171 SPARK_POS_OK 0.187982 0.236027 0.249890 0.252114 NORMAL 845 170 SPARK_POS_OK 0.257170 0.259569 0.186400 0.004032 NORMAL 1127 4160 0
675 47008894 844 161 SPARK_POS_OK 0.187868 0.235941 0.249802 0.251991 NORMAL 846 170 SPARK_POS_OK 0.257060 0.259432 0.186309 0.004019 NORMAL 1122 4280 0
676 47062894 845 160 SPARK_POS_OK 0.187767 0.235842 0.249661 0.251852 NORMAL 847 160 SPARK_POS_OK 0.256953 0.259300 0.186182 0.004006 NORMAL 1118 4252 0
677 47116894 846 160 SPARK_POS_OK 0.187617 0.235729 0.249538 0.251734 NORMAL 848 161 SPARK_POS_OK 0.256835 0.259192 0.186073 0.003994 NORMAL 1113 4244 0
678 47170894 847 160 SPARK_POS_OK 0.187524 0.235621 0.249420 0.251602 NORMAL 849 161 SPARK_POS_OK 0.256718 0.259048 0.185969 0.003990 NORMAL 1110 4216 0
679 47224894 848 150 SPARK_POS_OK 0.187391 0.235505 0.249296 0.251517 NORMAL 850 150 SPARK_POS_OK 0.256594 0.258952 0.185884 0.003981 NORMAL 1098 4245 0
680 47279894 849 151 SPARK_POS_OK 0.187286 0.235388 0.249176 0.251381 NORMAL 851 150 SPARK_POS_OK 0.256472 0.258817 0.185773 0.003980 NORMAL 1099 4192 0
681 47334894 850 141 SPARK_POS_OK 0.187168 0.235281 0.249062 0.251256 NORMAL 852 140 SPARK_POS_OK 0.256345 0.258703 0.185671 0.003981 NORMAL 1085 4248 0
682 47389894 851 141 SPARK_POS_OK 0.187046 0.235177 0.248922 0.251114 NORMAL 853 140 SPARK_POS_OK 0.256229 0.258580 0.185577 0.003989 NORMAL 1086 4221 0
683 47445894 852 134 SPARK_POS_OK 0.186926 0.235064 0.248811 0.251015 NORMAL 854 130 SPARK_POS_OK 0.256121 0.258464 0.185478 0.003960 NORMAL 1074 4230 0
684 47501894 853 130 SPARK_POS_OK 0.186813 0.234978 0.248675 0.250870 NORMAL 855 130 SPARK_POS_OK 0.256003 0.258320 0.185378 0.003954 NORMAL 1075 4157 0
685 47557894 854 121 SPARK_POS_OK 0.186700 0.234830 0.248588 0.250720 NORMAL 856 120 SPARK_POS_OK 0.255868 0.258222 0.185274 0.003951 NORMAL 1066 4280 0
686 47614894 855 130 SPARK_POS_OK 0.186595 0.234727 0.248448 0.250642 NORMAL 857 121 SPARK_POS_OK 0.255758 0.258101 0.185173 0.003955 NORMAL 1062 4222 0
687 47670894 856 130 SPARK_POS_OK 0.186488 0.234631 0.248330 0.250527 NORMAL 858 131 SPARK_POS_OK 0.255622 0.257991 0.185075 0.003922 NORMAL 1060 4166 0
688 47727894 857 140 SPARK_POS_OK 0.186380 0.234529 0.248209 0.250412 NORMAL 859 131 SPARK_POS_OK 0.255518 0.257864 0.184941 0.003935 NORMAL 1056 4162 0
689 47784894 858 140 SPARK_POS_OK 0.186290 0.234465 0.248080 0.250263 NORMAL 860 141 SPARK_POS_OK 0.255391 0.257729 0.184861 0.003924 NORMAL 1054 4169 0
690 47841894 859 150 SPARK_POS_OK 0.186153 0.234302 0.247976 0.250136 NORMAL 861 141 SPARK_POS_OK 0.255267 0.257604 0.184757 0.003910 NORMAL 1049 4231 0
691 47898894 860 149 SPARK_POS_OK 0.186059 0.234220 0.247833 0.250043 NORMAL 862 151 SPARK_POS_OK 0.255178 0.257509 0.184662 0.003907 NORMAL 1048 4183 0
692 47956894 861 160 SPARK_POS_OK 0.185944 0.234099 0.247707 0.249916 NORMAL 863 161 SPARK_POS_OK 0.255066 0.257356 0.184550 0.003906 NORMAL 1044 4192 0
693 48013894 862 160 SPARK_POS_OK 0.185822 0.234005 0.247573 0.249782 NORMAL 864 161 SPARK_POS_OK 0.254922 0.257250 0.184442 0.003871 NORMAL 1045 4252 0
694 48071894 863 170 SPARK_POS_OK 0.185719 0.233893 0.247480 0.249677 NORMAL 865 171 SPARK_POS_OK 0.254796 0.257124 0.184361 0.003891 NORMAL 1043 4242 0
695 48128894 864 172 SPARK_POS_OK 0.185601 0.233812 0.247360 0.249524 NORMAL 866 171 SPARK_POS_OK 0.254678 0.256999 0.184269 0.003884 NORMAL 1044 4230 0
696 48185894 865 170 SPARK_POS_OK 0.185485 0.233693 0.247217 0.249421 NORMAL 867 170 SPARK_POS_OK 0.254599 0.256876 0.184159 0.003896 NORMAL 1044 4177 0
697 48243894 866 170 SPARK_POS_OK 0.185353 0.233577 0.247125 0.249268 NORMAL 868 170 SPARK_POS_OK 0.254457 0.256770 0.184052 0.003859 NORMAL 1043 4280 0
698 48301894 867 170 SPARK_POS_OK 0.185239 0.233474 0.246968 0.249196 NORMAL 869 170 SPARK_POS_OK 0.254325 0.256634 0.183977 0.003852 NORMAL 1043 4241 0
699 48358894 868 170 SPARK_POS_OK 0.185137 0.233374 0.246859 0.249055 NORMAL 870 170 SPARK_POS_OK 0.254217 0.256510 0.183860 0.003856 NORMAL 1040 4192 0
700 48416894 869 170 SPARK_POS_OK 0.185001 0.233275 0.246729 0.248941 NORMAL 871 170 SPARK_POS_OK 0.254110 0.256423 0.183764 0.003861 NORMAL 1040 4238 0
701 48474894 870 170 SPARK_POS_OK 0.184931 0.233169 0.246617 0.248785 NORMAL 872 170 SPARK_POS_OK 0.253994 0.256265 0.183647 0.003806 NORMAL 1038 4174 0
702 48531894 871 170 SPARK_POS_OK 0.184818 0.233034 0.246516 0.248690 NORMAL 873 170 SPARK_POS_OK 0.253859 0.256159 0.183561 0.003828 NORMAL 1039 4160 0
703 48589894 872 171 SPARK_POS_OK 0.184712 0.232958 0.246370 0.248585 NORMAL 874 170 SPARK_POS_OK 0.253778 0.256029 0.183455 0.003825 NORMAL 1039 4176 0
704 48647894 873 170 SPARK_POS_OK 0.184594 0.232822 0.246262 0.248438 NORMAL 875 170 SPARK_POS_OK 0.253631 0.255929 0.183359 0.003824 NORMAL 1040 4242 0
705 48704894 874 171 SPARK_POS_OK 0.184495 0.232725 0.246117 0.248336 NORMAL 876 170 SPARK_POS_OK 0.253508 0.255806 0.183246 0.003831 NORMAL 1040 4185 0
706 48762894 875 182 SPARK_POS_OK 0.184386 0.232642 0.246041 0.248201 NORMAL 877 171 SPARK_POS_OK 0.253385 0.255686 0.183159 0.003816 NORMAL 1040 4241 0
707 48820894 876 181 SPARK_POS_OK 0.184273 0.232522 0.245903 0.248105 NORMAL 878 180 SPARK_POS_OK 0.253309 0.255567 0.183053 0.003799 NORMAL 1040 4187 0
708 48877894 877 181 SPARK_POS_OK 0.184165 0.232435 0.245768 0.247996 NORMAL 879 180 SPARK_POS_OK 0.253191 0.255446 0.182964 0.003816 NORMAL 1039 4180 0
709 48935894 878 181 SPARK_POS_OK 0.184060 0.232328 0.245652 0.247856 NORMAL 880 180 SPARK_POS_OK 0.253038 0.255304 0.182863 0.003805 NORMAL 1039 4166 0
710 48993894 879 191 SPARK_POS_OK 0.183955 0.232198 0.245534 0.247723 NORMAL 881 190 SPARK_POS_OK 0.252912 0.255213 0.182759 0.003794 NORMAL 1039 4162 0
711 49051894 880 191 SPARK_POS_OK 0.183828 0.232086 0.245433 0.247585 NORMAL 882 190 SPARK_POS_OK 0.252812 0.255078 0.182651 0.003785 NORMAL 1040 4209 0
712 49108894 881 201 SPARK_POS_OK 0.183755 0.232013 0.245312 0.247477 NORMAL 883 199 SPARK_POS_OK 0.252693 0.254959 0.182567 0.003808 NORMAL 1043 4178 0
713 49166894 882 201 SPARK_POS_OK 0.183622 0.231887 0.245204 0.247368 NORMAL 884 200 SPARK_POS_OK 0.252554 0.254838 0.182472 0.003796 NORMAL 1044 4197 0
714 49223894 883 210 SPARK_POS_OK 0.183548 0.231800 0.245070 0.247249 NORMAL 885 211 SPARK_POS_OK 0.252450 0.254720 0.182371 0.003793 NORMAL 1048 4180 0
715 49280894 884 210 SPARK_POS_OK 0.183415 0.231697 0.244941 0.247137 NORMAL 886 210 SPARK_POS_OK 0.252352 0.254604 0.182251 0.003785 NORMAL 1049 4233 0
716 49337894 885 210 SPARK_POS_OK 0.183302 0.231607 0.244841 0.246993 NORMAL 887 210 SPARK_POS_OK 0.252231 0.254492 0.182170 0.003790 NORMAL 1052 4272 0
717 49394894 886 201 SPARK_POS_OK 0.183178 0.231465 0.244700 0.246891 NORMAL 888 210 SPARK_POS_OK 0.252116 0.254380 0.182086 0.003777 NORMAL 1051 4252 0
718 49451894 887 201 SPARK_POS_OK 0.183051 0.231370 0.244613 0.246722 NORMAL 889 200 SPARK_POS_OK 0.252008 0.254268 0.181959 0.003791 NORMAL 1051 4271 0
719 49508894 888 181 SPARK_POS_OK 0.182953 0.231250 0.244480 0.246650 NORMAL 890 200 SPARK_POS_OK 0.251892 0.254142 0.181869 0.003777 NORMAL 1051 4231 0
720 49565894 889 181 SPARK_POS_OK 0.182852 0.231152 0.244332 0.246547 NORMAL 891 180 SPARK_POS_OK 0.251753 0.254017 0.181770 0.003770 NORMAL 1051 4228 0
721 49622894 890 171 SPARK_POS_OK 0.182726 0.231064 0.244222 0.246421 NORMAL 892 170 SPARK_POS_OK 0.251654 0.253898 0.181662 0.003781 NORMAL 1050 4160 0
722 49680894 891 171 SPARK_POS_OK 0.182616 0.230951 0.244120 0.246286 NORMAL 893 170 SPARK_POS_OK 0.251557 0.253804 0.181562 0.003788 NORMAL 1051 4277 0
723 49737894 892 161 SPARK_POS_OK 0.182503 0.230843 0.243998 0.246158 NORMAL 894 160 SPARK_POS_OK 0.251422 0.253675 0.181480 0.003783 NORMAL 1048 4215 0
724 49794894 893 150 SPARK_POS_OK 0.182407 0.230728 0.243864 0.246056 NORMAL 895 160 SPARK_POS_OK 0.251293 0.253534 0.181367 0.003766 NORMAL 1045 4161 0
725 49851894 894 150 SPARK_POS_OK 0.182299 0.230612 0.243748 0.245910 NORMAL 896 150 SPARK_POS_OK 0.251176 0.253406 0.181258 0.003772 NORMAL 1044 4161 0
726 49909894 895 150 SPARK_POS_OK 0.182188 0.230522 0.243649 0.245810 NORMAL 897 150 SPARK_POS_OK 0.251061 0.253302 0.181175 0.003751 NORMAL 1040 4237 0
727 49967894 896 150 SPARK_POS_OK 0.182081 0.230432 0.243503 0.245688 NORMAL 898 150 SPARK_POS_OK 0.250947 0.253167 0.181066 0.003761 NORMAL 1039 4223 0
728 50025894 897 140 SPARK_POS_OK 0.181990 0.230336 0.243385 0.245574 NORMAL 899 150 SPARK_POS_OK 0.250832 0.253050 0.180967 0.003765 NORMAL 1036 4183 0
729 50083894 898 140 SPARK_POS_OK 0.181845 0.230209 0.243291 0.245417 NORMAL 900 140 SPARK_POS_OK 0.250705 0.252939 0.180880 0.003750 NORMAL 1035 4215 0
730 50141894 899 140 SPARK_POS_OK 0.181769 0.230139 0.243139 0.245352 NORMAL 901 140 SPARK_POS_OK 0.250615 0.252838 0.180776 0.003752 NORMAL 1032 4231 0
731 50199894 900 140 SPARK_POS_OK 0.181661 0.229990 0.243036 0.245205 NORMAL 902 140 SPARK_POS_OK 0.250475 0.252681 0.180660 0.003754 NORMAL 1033 4164 0
732 50257894 901 140 SPARK_POS_OK 0.181559 0.229920 0.242902 0.245090 NORMAL 903 138 SPARK_POS_OK 0.250394 0.252586 0.180570 0.003743 NORMAL 1029 4165 0
733 50316894 902 139 SPARK_POS_OK 0.181454 0.229805 0.242788 0.244974 NORMAL 904 141 SPARK_POS_OK 0.250267 0.252476 0.180474 0.003749 NORMAL 1027 4176 0
734 50374894 903 140 SPARK_POS_OK 0.181333 0.229685 0.242683 0.244868 NORMAL 905 141 SPARK_POS_OK 0.250145 0.252370 0.180380 0.003731 NORMAL 1025 4222 0
735 50433894 904 130 SPARK_POS_OK 0.181242 0.229599 0.242561 0.244744 NORMAL 906 141 SPARK_POS_OK 0.250034 0.252240 0.180277 0.003742 NORMAL 1022 4171 0
736 50492894 905 130 SPARK_POS_OK 0.181165 0.229467 0.242457 0.244618 NORMAL 907 130 SPARK_POS_OK 0.249910 0.252100 0.180182 0.003732 NORMAL 1019 4256 0
737 50551894 906 130 SPARK_POS_OK 0.181014 0.229410 0.242325 0.244519 NORMAL 908 130 SPARK_POS_OK 0.249804 0.252000 0.180102 0.003753 NORMAL 1015 4206 0
738 50610894 907 131 SPARK_POS_OK 0.180916 0.229288 0.242222 0.244411 NORMAL 909 130 SPARK_POS_OK 0.249669 0.251884 0.179996 0.003746 NORMAL 1015 4205 0
739 50669894 908 133 SPARK_POS_OK 0.180824 0.229185 0.242077 0.244268 NORMAL 910 130 SPARK_POS_OK 0.249584 0.251774 0.179896 0.003724 NORMAL 1013 4208 0
740 50728894 909 130 SPARK_POS_OK 0.180694 0.229062 0.241970 0.244145 NORMAL 911 130 SPARK_POS_OK 0.249456 0.251659 0.179799 0.003727 NORMAL 1014 4208 0
741 50787894 910 130 SPARK_POS_OK 0.180615 0.228989 0.241830 0.244040 NORMAL 912 130 SPARK_POS_OK 0.249347 0.251544 0.179687 0.003733 NORMAL 1011 4163 0
742 50847894 911 140 SPARK_POS_OK 0.180486 0.228877 0.241734 0.243900 NORMAL 913 130 SPARK_POS_OK 0.249223 0.251398 0.179603 0.003727 NORMAL 1010 4232 0
743 50906894 912 140 SPARK_POS_OK 0.180374 0.228772 0.241596 0.243781 NORMAL 914 141 SPARK_POS_OK 0.249118 0.251292 0.179501 0.003721 NORMAL 1009 4251 0
744 50966894 913 150 SPARK_POS_OK 0.180268 0.228676 0.241511 0.243672 NORMAL 915 143 SPARK_POS_OK 0.249002 0.251150 0.179390 0.003727 NORMAL 1007 4171 0
745 51025894 914 150 SPARK_POS_OK 0.180143 0.228543 0.241371 0.243591 NORMAL 916 150 SPARK_POS_OK 0.248873 0.251072 0.179284 0.003721 NORMAL 1007 4223 0
746 51085894 915 161 SPARK_POS_OK 0.180058 0.228450 0.241258 0.243443 NORMAL 917 158 SPARK_POS_OK 0.248755 0.250931 0.179205 0.003712 NORMAL 1007 4152 0
747 51144894 916 161 SPARK_POS_OK 0.179952 0.228314 0.241187 0.243336 NORMAL 918 160 SPARK_POS_OK 0.248628 0.250839 0.179121 0.003693 NORMAL 1008 4214 0
748 51204894 917 161 SPARK_POS_OK 0.179825 0.228233 0.241035 0.243222 NORMAL 919 160 SPARK_POS_OK 0.248558 0.250704 0.179017 0.003716 NORMAL 1010 4240 0
749 51263894 918 170 SPARK_POS_OK 0.179723 0.228140 0.240918 0.243119 NORMAL 920 160 SPARK_POS_OK 0.248442 0.250626 0.178941 0.003673 NORMAL 1012 4163 0
750 51322894 919 170 SPARK_POS_OK 0.179611 0.228032 0.240797 0.242962 NORMAL 921 170 SPARK_POS_OK 0.248314 0.250484 0.178823 0.003694 NORMAL 1014 4216 0
751 51381894 920 180 SPARK_POS_OK 0.179483 0.227915 0.240700 0.242868 NORMAL 922 170 SPARK_POS_OK 0.248206 0.250369 0.178745 0.003690 NORMAL 1014 4278 0
752 51440894 921 181 SPARK_POS_OK 0.179390 0.227807 0.240554 0.242754 NORMAL 923 181 SPARK_POS_OK 0.248052 0.250253 0.178649 0.003718 NORMAL 1016 4185 0
753 51499894 922 180 SPARK_POS_OK 0.179291 0.227693 0.240412 0.242594 NORMAL 924 181 SPARK_POS_OK 0.247962 0.250142 0.178552 0.003698 NORMAL 1017 4159 0
754 51558894 923 180 SPARK_POS_OK 0.179173 0.227607 0.240358 0.242525 NORMAL 925 180 SPARK_POS_OK 0.247841 0.250010 0.178452 0.003690 NORMAL 1018 4185 0
755 51617894 924 180 SPARK_POS_OK 0.179079 0.227488 0.240244 0.242394 NORMAL 926 180 SPARK_POS_OK 0.247728 0.249873 0.178347 0.003700 NORMAL 1020 4188 0
756 51676894 925 191 SPARK_POS_OK 0.178958 0.227406 0.240106 0.242279 NORMAL 927 180 SPARK_POS_OK 0.247626 0.249738 0.178260 0.003663 NORMAL 1022 4188 0
757 51734894 926 191 SPARK_POS_OK 0.178894 0.227287 0.239970 0.242131 NORMAL 928 190 SPARK_POS_OK 0.247489 0.249669 0.178149 0.003687 NORMAL 1025 4233 0
758 51793894 927 191 SPARK_POS_OK 0.178756 0.227187 0.239858 0.242033 NORMAL 929 190 SPARK_POS_OK 0.247404 0.249532 0.178056 0.003693 NORMAL 1026 4206 0
759 51851894 928 191 SPARK_POS_OK 0.178682 0.227094 0.239761 0.241903 NORMAL 930 190 SPARK_POS_OK 0.247283 0.249423 0.177974 0.003693 NORMAL 1029 4206 0
760 51909894 929 190 SPARK_POS_OK 0.178563 0.226976 0.239627 0.241792 NORMAL 931 190 SPARK_POS_OK 0.247145 0.249316 0.177866 0.003682 NORMAL 1031 4181 0
761 51967894 930 190 SPARK_POS_OK 0.178457 0.226884 0.239519 0.241674 NORMAL 932 190 SPARK_POS_OK 0.247059 0.249201 0.177770 0.003687 NORMAL 1032 4208 0
762 52025894 931 190 SPARK_POS_OK 0.178345 0.226781 0.239405 0.241570 NORMAL 933 190 SPARK_POS_OK 0.246941 0.249071 0.177685 0.003692 NORMAL 1033 4264 0
763 52083894 932 200 SPARK_POS_OK 0.178225 0.226653 0.239264 0.241413 NORMAL 934 190 SPARK_POS_OK 0.246826 0.248956 0.177557 0.003710 NORMAL 1034 4256 0
764 52141894 933 202 SPARK_POS_OK 0.178135 0.226579 0.239156 0.241321 NORMAL 935 200 SPARK_POS_OK 0.246705 0.248853 0.177467 0.003691 NORMAL 1036 4237 0
765 52199894 934 200 SPARK_POS_OK 0.178037 0.226479 0.239038 0.241219 NORMAL 936 200 SPARK_POS_OK 0.246564 0.248730 0.177386 0.003682 NORMAL 1037 4152 0
766 52257894 935 200 SPARK_POS_OK 0.177921 0.226363 0.238945 0.241104 NORMAL 937 199 SPARK_POS_OK 0.246492 0.248597 0.177285 0.003694 NORMAL 1040 4244 0
767 52314894 936 200 SPARK_POS_OK 0.177812 0.226263 0.238812 0.240967 NORMAL 938 200 SPARK_POS_OK 0.246376 0.248495 0.177191 0.003685 NORMAL 1041 4231 0
768 52372894 937 200 SPARK_POS_OK 0.177680 0.226153 0.238713 0.240849 NORMAL 939 200 SPARK_POS_OK 0.246275 0.248348 0.177107 0.003703 NORMAL 1044 4230 0
769 52429894 938 200 SPARK_POS_OK 0.177594 0.226080 0.238577 0.240744 NORMAL 940 201 SPARK_POS_OK 0.246134 0.248282 0.177004 0.003694 NORMAL 1043 4221 0
770 52487894 939 200 SPARK_POS_OK 0.177475 0.225956 0.238462 0.240625 NORMAL 941 201 SPARK_POS_OK 0.246044 0.248135 0.176916 0.003704 NORMAL 1044 4265 0
771 52544894 940 200 SPARK_POS_OK 0.177384 0.225872 0.238366 0.240521 NORMAL 942 201 SPARK_POS_OK 0.245889 0.248041 0.176803 0.003698 NORMAL 1043 4229 0
772 52601894 941 200 SPARK_POS_OK 0.177253 0.225781 0.238213 0.240364 NORMAL 943 201 SPARK_POS_OK 0.245787 0.247910 0.176700 0.003678 NORMAL 1044 4237 0
773 52659894 942 200 SPARK_POS_OK 0.177161 0.225646 0.238121 0.240245 NORMAL 944 201 SPARK_POS_OK 0.245695 0.247777 0.176609 0.003685 NORMAL 1045 4204 0
774 52716894 943 202 SPARK_POS_OK 0.177056 0.225565 0.238028 0.240158 NORMAL 945 201 SPARK_POS_OK 0.245553 0.247676 0.176513 0.003714 NORMAL 1047 4230 0
775 52773894 944 200 SPARK_POS_OK 0.176951 0.225442 0.237892 0.240009 NORMAL 946 201 SPARK_POS_OK 0.245476 0.247564 0.176414 0.003684 NORMAL 1050 4151 0
776 52830894 945 200 SPARK_POS_OK 0.176859 0.225365 0.237779 0.239926 NORMAL 947 201 SPARK_POS_OK 0.245338 0.247457 0.176337 0.003695 NORMAL 1050 4242 0
777 52887894 946 198 SPARK_POS_OK 0.176730 0.225252 0.237657 0.239801 NORMAL 948 201 SPARK_POS_OK 0.245228 0.247353 0.176218 0.003702 NORMAL 1053 4206 0
778 52944894 947 210 SPARK_POS_OK 0.176619 0.225137 0.237545 0.239674 NORMAL 949 210 SPARK_POS_OK 0.245138 0.247210 0.176138 0.003691 NORMAL 1054 4226 0
779 53001894 948 210 SPARK_POS_OK 0.176516 0.225054 0.237430 0.239578 NORMAL 950 211 SPARK_POS_OK 0.244980 0.247125 0.176038 0.003704 NORMAL 1055 4157 0
780 53058894 949 220 SPARK_POS_OK 0.176409 0.224927 0.237287 0.239444 NORMAL 951 221 SPARK_POS_OK 0.244922 0.246981 0.175939 0.003682 NORMAL 1055 4234 0
781 53115894 950 220 SPARK_POS_OK 0.176303 0.224836 0.237187 0.239326 NORMAL 952 221 SPARK_POS_OK 0.244802 0.246869 0.175855 0.003700 NORMAL 1056 4227 0
782 53171894 951 220 SPARK_POS_OK 0.176209 0.224728 0.237058 0.239228 NORMAL 953 220 SPARK_POS_OK 0.244660 0.246759 0.175741 0.003686 NORMAL 1059 4236 0
783 53228894 952 232 SPARK_POS_OK 0.176130 0.224632 0.236957 0.239087 NORMAL 954 220 SPARK_POS_OK 0.244568 0.246645 0.175671 0.003706 NORMAL 1062 4149 0
784 53284894 953 230 SPARK_POS_OK 0.176008 0.224525 0.236865 0.239014 NORMAL 955 230 SPARK_POS_OK 0.244426 0.246528 0.175578 0.003695 NORMAL 1066 4149 0
785 53340894 954 241 SPARK_POS_OK 0.175912 0.224442 0.236724 0.238883 NORMAL 956 230 SPARK_POS_OK 0.244311 0.246415 0.175474 0.003710 NORMAL 1068 4264 0
786 53396894 955 240 SPARK_POS_OK 0.175794 0.224323 0.236610 0.238752 NORMAL 957 240 SPARK_POS_OK 0.244229 0.246270 0.175374 0.003706 NORMAL 1072 4208 0
787 53674894 956 11 SPARK_NEG_OK 0.175783 0.224292 0.236570 0.238706 SOFT_START 959 11 SPARK_NEG_OK 0.244206 0.246261 0.175381 0.003434 SOFT_START 1084 4273 0
788 53729894 957 11 SPARK_NEG_OK 0.175673 0.224182 0.236448 0.238615 SOFT_START 960 11 SPARK_NEG_OK 0.244086 0.246149 0.175256 0.003447 SOFT_START 1085 4206 0
789 53784894 958 11 SPARK_NEG_OK 0.175576 0.224109 0.236334 0.238502 SOFT_START 961 11 SPARK_NEG_OK 0.243948 0.246023 0.175169 0.003446 SOFT_START 1091 4162 0
790 53839894 959 11 SPARK_NEG_OK 0.175478 0.224012 0.236243 0.238401 SOFT_START 962 12 SPARK_NEG_OK 0.243824 0.245910 0.175105 0.003470 SOFT_START 1092 4168 0
791 54003894 960 241 SPARK_POS_OK 0.175418 0.223927 0.236150 0.238284 NORMAL 963 240 SPARK_POS_OK 0.243795 0.245828 0.175021 0.003356 NORMAL 1102 4204 0
792 54058894 961 231 SPARK_POS_OK 0.175305 0.223829 0.236015 0.238169 NORMAL 964 240 SPARK_POS_OK 0.243664 0.245724 0.174927 0.003375 NORMAL 1096 4267 0
793 54113894 962 230 SPARK_POS_OK 0.175204 0.223744 0.235916 0.238052 NORMAL 965 230 SPARK_POS_OK 0.243499 0.245609 0.174820 0.003390 NORMAL 1096 4207 0
794 54168894 963 220 SPARK_POS_OK 0.175103 0.223635 0.235816 0.237938 NORMAL 966 230 SPARK_POS_OK 0.243422 0.245486 0.174741 0.003411 NORMAL 1095 4230 0
795 54222894 964 220 SPARK_POS_OK 0.174997 0.223547 0.235701 0.237829 NORMAL 967 221 SPARK_POS_OK 0.243309 0.245369 0.174666 0.003443 NORMAL 1096 4170 0
796 54277894 965 220 SPARK_POS_OK 0.174891 0.223427 0.235560 0.237699 NORMAL 968 221 SPARK_POS_OK 0.243210 0.245252 0.174542 0.003449 NORMAL 1095 4213 0
797 54332894 966 220 SPARK_POS_OK 0.174809 0.223322 0.235466 0.237581 NORMAL 969 220 SPARK_POS_OK 0.243076 0.245125 0.174434 0.003467 NORMAL 1097 4193 0
798 54387894 967 210 SPARK_POS_OK 0.174709 0.223221 0.235333 0.237470 NORMAL 970 220 SPARK_POS_OK 0.242979 0.245035 0.174358 0.003471 NORMAL 1096 4237 0
799 54441894 968 211 SPARK_POS_OK 0.174584 0.223115 0.235217 0.237331 NORMAL 971 210 SPARK_POS_OK 0.242879 0.244905 0.174257 0.003499 NORMAL 1096 4177 0
800 54496894 969 201 SPARK_POS_OK 0.174465 0.223033 0.235104 0.237241 NORMAL 972 210 SPARK_POS_OK 0.242747 0.244792 0.174165 0.003507 NORMAL 1094 4252 0
801 54551894 970 200 SPARK_POS_OK 0.174382 0.222914 0.234981 0.237129 NORMAL 973 200 SPARK_POS_OK 0.242670 0.244678 0.174090 0.003508 NORMAL 1093 4165 0
802 54606894 971 188 SPARK_POS_OK 0.174282 0.222827 0.234905 0.237012 NORMAL 974 189 SPARK_POS_OK 0.242506 0.244573 0.173976 0.003533 NORMAL 1087 4166 0
803 54661894 972 190 SPARK_POS_OK 0.174193 0.222720 0.234750 0.236908 NORMAL 975 191 SPARK_POS_OK 0.242398 0.244440 0.173886 0.003530 NORMAL 1088 4221 0
804 54717894 973 190 SPARK_POS_OK 0.174090 0.222608 0.234655 0.236794 NORMAL 976 191 SPARK_POS_OK 0.242307 0.244360 0.173807 0.003555 NORMAL 1083 4158 0
805 54772894 974 190 SPARK_POS_OK 0.173970 0.222521 0.234529 0.236660 NORMAL 977 191 SPARK_POS_OK 0.242168 0.244220 0.173696 0.003552 NORMAL 1084 4279 0
806 54828894 975 180 SPARK_POS_OK 0.173885 0.222414 0.234400 0.236566 NORMAL 978 180 SPARK_POS_OK 0.242065 0.244108 0.173611 0.003575 NORMAL 1081 4247 0
807 54883894 976 183 SPARK_POS_OK 0.173747 0.222317 0.234323 0.236436 NORMAL 979 180 SPARK_POS_OK 0.241960 0.244016 0.173525 0.003580 NORMAL 1082 4268 0
808 54939894 977 170 SPARK_POS_OK 0.173649 0.222196 0.234209 0.236310 NORMAL 980 170 SPARK_POS_OK 0.241845 0.243925 0.173399 0.003576 NORMAL 1077 4170 0
809 54995894 978 160 SPARK_POS_OK 0.173565 0.222088 0.234081 0.236226 NORMAL 981 170 SPARK_POS_OK 0.241759 0.243788 0.173325 0.003588 NORMAL 1074 4158 0
810 55051894 979 161 SPARK_POS_OK 0.173455 0.221997 0.233963 0.236095 NORMAL 982 160 SPARK_POS_OK 0.241627 0.243664 0.173233 0.003607 NORMAL 1071 4152 0
811 55107894 980 151 SPARK_POS_OK 0.173360 0.221920 0.233859 0.235954 NORMAL 983 160 SPARK_POS_OK 0.241511 0.243541 0.173141 0.003611 NORMAL 1066 4255 0
812 55163894 981 151 SPARK_POS_OK 0.173278 0.221807 0.233724 0.235876 NORMAL 984 150 SPARK_POS_OK 0.241415 0.243439 0.173040 0.003599 NORMAL 1062 4168 0
813 55220894 982 141 SPARK_POS_OK 0.173152 0.221723 0.233647 0.235753 NORMAL 985 150 SPARK_POS_OK 0.241306 0.243303 0.172946 0.003625 NORMAL 1057 4231 0
814 55277894 983 141 SPARK_POS_OK 0.173031 0.221609 0.233508 0.235673 NORMAL 986 140 SPARK_POS_OK 0.241213 0.243213 0.172861 0.003614 NORMAL 1054 4277 0
815 55334894 984 131 SPARK_POS_OK 0.172935 0.221484 0.233424 0.235513 NORMAL 987 130 SPARK_POS_OK 0.241047 0.243092 0.172771 0.003617 NORMAL 1048 4254 0
816 55391894 985 129 SPARK_POS_OK 0.172841 0.221410 0.233307 0.235420 NORMAL 988 130 SPARK_POS_OK 0.240950 0.242991 0.172690 0.003616 NORMAL 1049 4157 0
817 55449894 986 121 SPARK_POS_OK 0.172748 0.221290 0.233184 0.235296 NORMAL 989 120 SPARK_POS_OK 0.240864 0.242877 0.172592 0.003625 NORMAL 1043 4222 0
818 55506894 987 119 SPARK_POS_OK 0.172647 0.221215 0.233061 0.235195 NORMAL 990 120 SPARK_POS_OK 0.240753 0.242780 0.172480 0.003640 NORMAL 1043 4198 0
819 55564894 988 121 SPARK_POS_OK 0.172533 0.221091 0.232973 0.235078 NORMAL 991 120 SPARK_POS_OK 0.240631 0.242653 0.172416 0.003634 NORMAL 1034 4224 0
820 55623894 989 121 SPARK_POS_OK 0.172437 0.221025 0.232813 0.234967 NORMAL 992 120 SPARK_POS_OK 0.240516 0.242522 0.172309 0.003656 NORMAL 1030 4156 0
821 55681894 990 121 SPARK_POS_OK 0.172341 0.220917 0.232717 0.234841 NORMAL 993 120 SPARK_POS_OK 0.240397 0.242425 0.172216 0.003625 NORMAL 1027 4163 0
822 55740894 991 120 SPARK_POS_OK 0.172234 0.220792 0.232614 0.234712 NORMAL 994 120 SPARK_POS_OK 0.240303 0.242295 0.172144 0.003639 NORMAL 1024 4232 0
823 55798894 992 120 SPARK_POS_OK 0.172144 0.220699 0.232477 0.234637 NORMAL 995 120 SPARK_POS_OK 0.240181 0.242188 0.172036 0.003632 NORMAL 1022 4191 0
824 55857894 993 130 SPARK_POS_OK 0.172038 0.220593 0.232363 0.234499 NORMAL 996 129 SPARK_POS_OK 0.240095 0.242084 0.171948 0.003615 NORMAL 1018 4247 0
825 55916894 994 130 SPARK_POS_OK 0.171934 0.220514 0.232289 0.234380 NORMAL 997 130 SPARK_POS_OK 0.240006 0.241980 0.171863 0.003595 NORMAL 1020 4220 0
826 55975894 995 130 SPARK_POS_OK 0.171849 0.220422 0.232148 0.234308 NORMAL 998 131 SPARK_POS_OK 0.239871 0.241846 0.171753 0.003628 NORMAL 1017 4156 0
827 56034894 996 140 SPARK_POS_OK 0.171710 0.220300 0.232062 0.234135 NORMAL 999 128 SPARK_POS_OK 0.239764 0.241757 0.171660 0.003622 NORMAL 1014 4247 0
828 56093894 997 140 SPARK_POS_OK 0.171584 0.220205 0.231923 0.234075 NORMAL 1000 140 SPARK_POS_OK 0.239659 0.241607 0.171576 0.003605 NORMAL 1014 4276 0
829 56152900 998 141 SPARK_POS_OK 0.171525 0.220073 0.231818 0.233932 NORMAL 1001 140 SPARK_POS_OK 0.239537 0.241546 0.171494 0.003622 NORMAL 1011 4153 0
830 56212894 999 141 SPARK_POS_OK 0.171409 0.219982 0.231696 0.233833 NORMAL 1002 140 SPARK_POS_OK 0.239413 0.241408 0.171388 0.003623 NORMAL 1010 4233 0
831 56271894 1000 151 SPARK_POS_OK 0.171313 0.219899 0.231600 0.233698 NORMAL 1003 151 SPARK_POS_OK 0.239316 0.241311 0.171290 0.003623 NORMAL 1008 4221 0
832 56331894 1001 150 SPARK_POS_OK 0.171214 0.219794 0.231485 0.233610 NORMAL 1004 150 SPARK_POS_OK 0.239228 0.241202 0.171193 0.003611 NORMAL 1009 4261 0
833 56390894 1002 150 SPARK_POS_OK 0.171118 0.219672 0.231362 0.233514 NORMAL 1005 150 SPARK_POS_OK 0.239084 0.241068 0.171105 0.003620 NORMAL 1010 4217 0
834 56450894 1003 150 SPARK_POS_OK 0.170998 0.219589 0.231270 0.233375 NORMAL 1006 150 SPARK_POS_OK 0.238969 0.240975 0.171028 0.003622 NORMAL 1011 4222 0
835 56509894 1004 150 SPARK_POS_OK 0.170899 0.219505 0.231161 0.233266 NORMAL 1007 151 SPARK_POS_OK 0.238878 0.240844 0.170931 0.003621 NORMAL 1013 4195 0
836 56568894 1005 150 SPARK_POS_OK 0.170801 0.219401 0.231034 0.233170 NORMAL 1008 151 SPARK_POS_OK 0.238786 0.240709 0.170842 0.003604 NORMAL 1011 4221 0
837 56627894 1006 150 SPARK_POS_OK 0.170709 0.219285 0.230920 0.233046 NORMAL 1009 150 SPARK_POS_OK 0.238663 0.240649 0.170770 0.003610 NORMAL 1012 4267 0
838 56687894 1007 161 SPARK_POS_OK 0.170597 0.219198 0.230805 0.232953 NORMAL 1010 150 SPARK_POS_OK 0.238556 0.240501 0.170655 0.003626 NORMAL 1010 4217 0
839 56746894 1008 161 SPARK_POS_OK 0.170508 0.219094 0.230714 0.232818 NORMAL 1011 160 SPARK_POS_OK 0.238431 0.240412 0.170583 0.003611 NORMAL 1010 4189 0
840 56806894 1009 160 SPARK_POS_OK 0.170414 0.219002 0.230615 0.232709 NORMAL 1012 159 SPARK_POS_OK 0.238371 0.240313 0.170481 0.003620 NORMAL 1010 4264 0
841 56865894 1010 160 SPARK_POS_OK 0.170291 0.218900 0.230491 0.232625 NORMAL 1013 160 SPARK_POS_OK 0.238225 0.240183 0.170389 0.003610 NORMAL 1011 4192 0
842 56924894 1011 160 SPARK_POS_OK 0.170199 0.218821 0.230367 0.232511 NORMAL 1014 160 SPARK_POS_OK 0.238116 0.240076 0.170326 0.003639 NORMAL 1012 4206 0
843 56983894 1012 160 SPARK_POS_OK 0.170107 0.218716 0.230243 0.232403 NORMAL 1015 161 SPARK_POS_OK 0.238000 0.239963 0.170224 0.003619 NORMAL 1014 4239 0
844 57042894 1013 161 SPARK_POS_OK 0.169992 0.218605 0.230156 0.232281 NORMAL 1016 161 SPARK_POS_OK 0.237895 0.239862 0.170106 0.003601 NORMAL 1016 4258 0
845 57101894 1014 160 SPARK_POS_OK 0.169904 0.218504 0.230020 0.232170 NORMAL 1017 161 SPARK_POS_OK 0.237796 0.239727 0.170028 0.003614 NORMAL 1015 4216 0
846 57160894 1015 160 SPARK_POS_OK 0.169811 0.218436 0.229915 0.232031 NORMAL 1018 160 SPARK_POS_OK 0.237724 0.239649 0.169947 0.003592 NORMAL 1015 4216 0
847 57220894 1016 171 SPARK_POS_OK 0.169690 0.218344 0.229853 0.231928 NORMAL 1019 170 SPARK_POS_OK 0.237590 0.239527 0.169848 0.003619 NORMAL 1014 4258 0
848 57279894 1017 171 SPARK_POS_OK 0.169574 0.218239 0.229714 0.231815 NORMAL 1020 170 SPARK_POS_OK 0.237497 0.239438 0.169757 0.003595 NORMAL 1015 4218 0
849 57338894 1018 171 SPARK_POS_OK 0.169488 0.218148 0.229599 0.231684 NORMAL 1021 170 SPARK_POS_OK 0.237364 0.239320 0.169677 0.003618 NORMAL 1016 4220 0
850 57397894 1019 170 SPARK_POS_OK 0.169376 0.218035 0.229491 0.231606 NORMAL 1022 170 SPARK_POS_OK 0.237283 0.239204 0.169593 0.003594 NORMAL 1018 4223 0
851 57455894 1020 170 SPARK_POS_OK 0.169286 0.217936 0.229365 0.231490 NORMAL 1023 170 SPARK_POS_OK 0.237159 0.239098 0.169486 0.003607 NORMAL 1021 4256 0
852 57514894 1021 170 SPARK_POS_OK 0.169184 0.217842 0.229250 0.231389 NORMAL 1024 170 SPARK_POS_OK 0.237051 0.238982 0.169410 0.003601 NORMAL 1021 4205 0
853 57573894 1022 170 SPARK_POS_OK 0.169092 0.217730 0.229179 0.231260 NORMAL 1025 170 SPARK_POS_OK 0.236936 0.238863 0.169286 0.003614 NORMAL 1024 4171 0
854 57631894 1023 180 SPARK_POS_OK 0.169008 0.217618 0.229036 0.231152 NORMAL 1026 181 SPARK_POS_OK 0.236813 0.238746 0.169223 0.003630 NORMAL 1024 4163 0
855 57690894 1024 180 SPARK_POS_OK 0.168919 0.217549 0.228928 0.231032 NORMAL 1027 181 SPARK_POS_OK 0.236756 0.238685 0.169133 0.003594 NORMAL 1025 4207 0

View File

@@ -1,8 +1,7 @@
{
"recommendations": [
"Jason2866.esp-decoder",
"pioarduino.pioarduino-ide",
"platformio.platformio-ide"
"pioarduino.pioarduino-ide"
],
"unwantedRecommendations": [
"ms-vscode.cpptools-extension-pack"

View File

@@ -22,7 +22,7 @@ build_type = release
[env:esp32-devtest-debug]
board = esp32dev
platform = https://github.com/pioarduino/platform-espressif32/releases/download/stable/platform-espressif32.zip
framework = arduino
lib_deps =
hideakitai/DebugLog@^0.8.4
board_build.flash_size = 4MB

View File

@@ -0,0 +1,12 @@
#pragma once
// ANSI colors
#define COLOR_RESET "\033[0m"
#define COLOR_RED "\033[31m"
#define COLOR_GREEN "\033[32m"
#define COLOR_BLUE "\033[34m"
#define COLOR_MAGENTA "\033[35m"
#define COLOR_CYAN "\033[36m"
#define COLOR_YELLOW "\033[33m"
#define COLOR_WHITE "\033[37m"
#define COLOR_LBLUE "\033[94m"

View File

@@ -1,7 +1,11 @@
#define DEBUGLOG_DEFAULT_LOG_LEVEL_DEBUG
#include <Arduino.h>
#include <DebugLog.h>
#include "timer.h"
#include "colors.h"
#include <map>
static hw_timer_t *timerA = NULL;
@@ -15,19 +19,27 @@ static uint32_t count = 0;
#define SPARK_DLY_MIN 10
#define SPARK_DLY_MAX 490
#define PAUSE_LONG_MIN 5000
#define PAUSE_LONG_MAX PAUSE_LONG_MIN*100
#define COIL_PULSE_MIN 100
#define COIL_PULSE_MAX 1000
#define RPM_MIN 800
#define SPARK_PULSE_MIN 10
#define SPARK_PULSE_MAX 500
#define PAUSE_LONG_MIN 5000
#define PAUSE_LONG_MAX PAUSE_LONG_MIN * 100
#define RPM_MIN 250
#define RPM_MAX 5500
void clearScreen(){
Serial.print("\033[2J"); // clear screen
Serial.print("\033[H"); // cursor home
Serial.flush();
void clearScreen()
{
Serial.print("\033[2J"); // clear screen
Serial.print("\033[H"); // cursor home
Serial.flush();
}
static double filtered_rpm = 0;
static uint32_t set_rpm = 500;
static uint32_t set_delay = 100;
static const std::map<const uint32_t, const char *> pin2Name = {
{PIN_TRIG_A12P, "HIGH_PIN_TRIG_A12P"},
@@ -46,19 +58,48 @@ static const std::map<const uint32_t, const char *> pin2Name = {
{State::S_WAIT_10MS, "S_WAIT_10MS"}};
static timerStatus stsA = {
.clock_period_us = (uint32_t)PERIOD_US,
.pause_long_us = 10000,
.pause_short_us = 1000,
.coil_pulse_us = 1000,
.spark_pulse_us = 100,
.spark_delay_us = 50,
.main_task = NULL};
.clock_period_us = (uint32_t)PERIOD_US,
.pause_long_us = 10000,
.pause_short_us = 1000,
.coil_pulse_us = 1000,
.spark_pulse_us = 100,
.spark_delay_us = 50,
.pins = {
.pin_trig_12p = PIN_TRIG_A12P,
.pin_trig_12n = PIN_TRIG_A12N,
.pin_trig_34p = PIN_TRIG_A34P,
.pin_trig_34n = PIN_TRIG_A34N,
.pin_spark_12 = SPARK_A12,
.pin_spark_34 = SPARK_A34},
.main_task = NULL};
static timerStatus stsB = {
.clock_period_us = (uint32_t)PERIOD_US,
.pause_long_us = 10000,
.pause_short_us = 1000,
.coil_pulse_us = 500,
.spark_pulse_us = 100,
.spark_delay_us = 50,
.pins = {
.pin_trig_12p = PIN_TRIG_B12P,
.pin_trig_12n = PIN_TRIG_B12N,
.pin_trig_34p = PIN_TRIG_B34P,
.pin_trig_34n = PIN_TRIG_B34N,
.pin_spark_12 = SPARK_B12,
.pin_spark_34 = SPARK_B34},
.main_task = NULL};
static bool isEnabled_A = false;
static bool isEnabled_B = false;
static String last_command;
void setup()
{
Serial.begin(921600);
Serial.begin(115200);
delay(1000);
Serial.setTimeout(100);
LOG_ATTACH_SERIAL(Serial);
pinMode(PIN_TRIG_A12P, OUTPUT);
@@ -76,36 +117,152 @@ void setup()
pinMode(SPARK_B34, OUTPUT);
pinMode(SPARK_DELAY_POT, ANALOG);
stsA.main_task = xTaskGetCurrentTaskHandleForCore(1);
pinMode(FREQ_POT, ANALOG);
pinMode(ENABLE_PIN_A, INPUT_PULLUP);
pinMode(ENABLE_PIN_B, INPUT_PULLUP);
// get the task handle for the main loop
stsA.main_task = xTaskGetCurrentTaskHandleForCore(1);
stsB.main_task = xTaskGetCurrentTaskHandleForCore(1);
// Begin timer with preset fixed frequency
timerA = timerBegin(FREQUENCY);
timerB = timerBegin(FREQUENCY);
// Stop timers because of autostart
timerStop(timerA);
timerStop(timerB);
// Attach interrupts and call callback every timer expiry
timerAttachInterruptArg(timerA, &onTimer, (void *)&stsA);
timerAlarm(timerA, 1, true, 0);
timerAttachInterruptArg(timerB, &onTimer, (void *)&stsB);
timerAlarm(timerA, 1, true, 0); // infinite number of reloads
timerAlarm(timerB, 1, true, 0);
LOG_INFO("Setup Complete");
}
void loop()
{
LOG_INFO("Loop: ", count++);
uint32_t spark_delay = (uint32_t)(map(analogRead(SPARK_DELAY_POT), 0, 4096, SPARK_DLY_MIN, SPARK_DLY_MAX) / PERIOD_US);
stsA.spark_delay_us = spark_delay * PERIOD_US;
if (stsA.spark_delay_us > (SPARK_DLY_MIN + SPARK_DLY_MAX) / 2) {
stsA.soft_start = true;
stsA.spark_delay_us -= (SPARK_DLY_MIN + SPARK_DLY_MAX) / 2;
} else {
stsA.soft_start = false;
clearScreen();
Serial.printf("\t++++ Loop: %u ++++\n", count++);
if (isEnabled_A)
Serial.println("==== System A is" COLOR_GREEN " ENABLED" COLOR_RESET " ====");
else
Serial.println("==== System A is" COLOR_RED " DISABLED" COLOR_RESET " ====");
if (isEnabled_B)
Serial.println("==== System B is" COLOR_GREEN " ENABLED" COLOR_RESET " ====");
else
Serial.println("==== System B is" COLOR_RED " DISABLED" COLOR_RESET " ====");
Serial.printf("Spark Delay uS: %u\n", stsA.spark_delay_us);
Serial.printf("Soft Start: %s\n", stsA.soft_start ? "ENABLED" : "DISABLED");
Serial.printf("Engine Rpm: %u\n", (uint32_t)(set_rpm));
Serial.printf("Coil Pulse: %u uS\n", stsA.coil_pulse_us);
Serial.printf("Spark Pulse: %u uS\n", stsA.spark_pulse_us);
Serial.println(COLOR_CYAN "-------------------------------------");
Serial.println("E[a/b] > Enable Box a/b | D[a/b] > Disable a/b");
Serial.println("S[ddd] > Spark Delay | R[dddd] > Engine RPM");
Serial.println("C[ddd] > Spark Pulse | P[ddd] > Coil Pulse");
Serial.println("-------------------------------------" COLOR_RESET);
Serial.printf("Last Command: %s\n", last_command.c_str());
auto str = Serial.readStringUntil('\n');
if (!str.isEmpty())
{
last_command = str;
const auto cmd = str.charAt(0);
char c;
switch (cmd)
{
case 'E':
{
char box;
sscanf(str.c_str(), "%c%c\n", &c, &box);
if (box == 'a' && !isEnabled_A)
{
timerStart(timerA);
isEnabled_A = true;
}
else if (box == 'b' && !isEnabled_B)
{
timerStart(timerB);
isEnabled_B = true;
}
break;
}
case 'D':
{
char c;
char box;
sscanf(str.c_str(), "%c%c\n", &c, &box);
if (box == 'a' && isEnabled_A)
{
timerStop(timerA);
isEnabled_A = false;
}
else if (box == 'b' && isEnabled_B)
{
timerStop(timerB);
isEnabled_B = false;
}
break;
}
case 'R':
{
int new_rpm;
sscanf(str.c_str(), "%c%d\n", &c, &new_rpm);
new_rpm = min(RPM_MAX, max(RPM_MIN, new_rpm));
stsA.pause_long_us = (uint32_t)(60000000.0f / (float)new_rpm / 2.0f);
stsB.pause_long_us = stsA.pause_long_us;
set_rpm = (uint32_t)new_rpm;
break;
}
case 'S':
{
int new_delay;
sscanf(str.c_str(), "%c%d\n", &c, &new_delay);
new_delay = min(SPARK_DLY_MAX, max(SPARK_DLY_MIN, new_delay));
stsA.spark_delay_us = (uint32_t)(new_delay);
if (stsA.spark_delay_us > (SPARK_DLY_MIN + SPARK_DLY_MAX) / 2)
{
stsA.soft_start = true;
stsA.spark_delay_us -= (SPARK_DLY_MIN + SPARK_DLY_MAX) / 2;
}
else
{
stsA.soft_start = false;
}
stsB.soft_start = stsA.soft_start;
stsB.spark_delay_us = stsA.spark_delay_us;
break;
}
case 'P':
{
int new_pulse;
sscanf(str.c_str(), "%c%d\n", &c, &new_pulse);
new_pulse = min(COIL_PULSE_MAX, max(COIL_PULSE_MIN, new_pulse));
stsA.coil_pulse_us = stsB.coil_pulse_us = (uint32_t)new_pulse;
break;
}
case 'C':
{
int new_pulse;
sscanf(str.c_str(), "%c%d\n", &c, &new_pulse);
new_pulse = min(SPARK_PULSE_MAX, max(SPARK_PULSE_MIN, new_pulse));
stsA.spark_pulse_us = stsB.spark_pulse_us = (uint32_t)new_pulse;
break;
}
default:
break;
}
Serial.read();
}
double new_rpm = (double)(map(analogRead(FREQ_POT), 0, 4096, RPM_MIN, RPM_MAX));
filtered_rpm = filtered_rpm + 0.1 * (new_rpm - filtered_rpm);
stsA.pause_long_us = (uint32_t)(60000000.0f / filtered_rpm / 2.0f);
LOG_INFO("Spark Delay uS: ", stsA.spark_delay_us, "\tSoft Start: ", stsA.soft_start ? "TRUE" : "FALSE");
LOG_INFO("Engine Rpm: ", (uint32_t)(filtered_rpm));
LOG_INFO("Coil Pulse: ", stsA.coil_pulse_us, "us");
LOG_INFO("Spark Pulse: ", stsA.spark_pulse_us, "us");
delay(100);
clearScreen();
str.clear();
delay(1000);
}

View File

@@ -1,5 +1,9 @@
#pragma once
// Enable Pin
#define ENABLE_PIN_A 16
#define ENABLE_PIN_B 15
///// Ignition Box A /////
#define PIN_TRIG_A12P 18
#define PIN_TRIG_A12N 19

View File

@@ -7,20 +7,18 @@ void onTimer(void *arg)
BaseType_t xHigherPriorityTaskWoken = pdFALSE;
timerStatus *params = (timerStatus *)(arg);
TaskHandle_t task = params->main_task;
const timerPins pins = params->pins;
// increment state time
params->state_time += params->clock_period_us;
digitalWrite(PIN_TRIG_B12P, HIGH);
switch (params->state)
{
case S_12P:
if (params->state_time == params->clock_period_us && !params->coil12p_high)
{
// xTaskNotifyFromISR(task, PIN_TRIG_A12P, eSetValueWithOverwrite, &xHigherPriorityTaskWoken);
digitalWrite(PIN_TRIG_A12P, HIGH);
digitalWrite(pins.pin_trig_12p, HIGH);
params->coil12p_high = true;
wait_sent = false;
}
@@ -29,21 +27,18 @@ void onTimer(void *arg)
{
if (params->state_time == params->spark_delay_us)
{
// xTaskNotifyFromISR(task, SPARK_A12, eSetValueWithOverwrite, &xHigherPriorityTaskWoken);
digitalWrite(SPARK_A12, HIGH);
digitalWrite(pins.pin_spark_12, HIGH);
}
if (params->state_time == (params->spark_delay_us + params->spark_pulse_us))
{
// xTaskNotifyFromISR(task, ~SPARK_A12, eSetValueWithOverwrite, &xHigherPriorityTaskWoken);
digitalWrite(SPARK_A12, LOW);
digitalWrite(pins.pin_spark_12, LOW);
}
}
if (params->state_time >= params->coil_pulse_us && params->coil12p_high)
{
// xTaskNotifyFromISR(task, ~PIN_TRIG_A12P, eSetValueWithOverwrite, &xHigherPriorityTaskWoken);
digitalWrite(PIN_TRIG_A12P, LOW);
digitalWrite(pins.pin_trig_12p, LOW);
params->coil12p_high = false;
}
@@ -57,8 +52,7 @@ void onTimer(void *arg)
case S_12N:
if (params->state_time == params->clock_period_us && !params->coil12n_high)
{
// xTaskNotifyFromISR(task, PIN_TRIG_A12N, eSetValueWithOverwrite, &xHigherPriorityTaskWoken);
digitalWrite(PIN_TRIG_A12N, HIGH);
digitalWrite(pins.pin_trig_12n, HIGH);
params->coil12n_high = true;
}
@@ -66,21 +60,18 @@ void onTimer(void *arg)
{
if (params->state_time == params->spark_delay_us)
{
// xTaskNotifyFromISR(task, SPARK_A12, eSetValueWithOverwrite, &xHigherPriorityTaskWoken);
digitalWrite(SPARK_A12, HIGH);
digitalWrite(pins.pin_spark_12, HIGH);
}
if (params->state_time == (params->spark_delay_us + params->spark_pulse_us))
{
// xTaskNotifyFromISR(task, ~SPARK_A12, eSetValueWithOverwrite, &xHigherPriorityTaskWoken);
digitalWrite(SPARK_A12, LOW);
digitalWrite(pins.pin_spark_12, LOW);
}
}
if (params->state_time >= params->coil_pulse_us && params->coil12n_high)
{
// xTaskNotifyFromISR(task, ~PIN_TRIG_A12N, eSetValueWithOverwrite, &xHigherPriorityTaskWoken);
digitalWrite(PIN_TRIG_A12N, LOW);
digitalWrite(pins.pin_trig_12n, LOW);
params->coil12n_high = false;
params->state = S_WAIT_10MS;
params->state_time = 0;
@@ -90,7 +81,6 @@ void onTimer(void *arg)
case S_WAIT_10MS:
if (!wait_sent)
{
// xTaskNotifyFromISR(task, S_WAIT_10MS, eSetValueWithOverwrite, &xHigherPriorityTaskWoken);
wait_sent = true;
}
if (params->state_time >= params->pause_long_us)
@@ -103,8 +93,7 @@ void onTimer(void *arg)
case S_34P:
if (params->state_time == params->clock_period_us && !params->coil34p_high)
{
// xTaskNotifyFromISR(task, PIN_TRIG_A34P, eSetValueWithOverwrite, &xHigherPriorityTaskWoken);
digitalWrite(PIN_TRIG_A34P, HIGH);
digitalWrite(pins.pin_trig_34p, HIGH);
params->coil34p_high = true;;
wait_sent = false;
}
@@ -113,21 +102,18 @@ void onTimer(void *arg)
{
if (params->state_time == params->spark_delay_us)
{
// xTaskNotifyFromISR(task, SPARK_A34, eSetValueWithOverwrite, &xHigherPriorityTaskWoken);
digitalWrite(SPARK_A34, HIGH);
digitalWrite(pins.pin_spark_34, HIGH);
}
if (params->state_time == params->spark_delay_us + params->spark_pulse_us)
{
// xTaskNotifyFromISR(task, ~SPARK_A34, eSetValueWithOverwrite, &xHigherPriorityTaskWoken);
digitalWrite(SPARK_A34, LOW);
digitalWrite(pins.pin_spark_34, LOW);
}
}
if (params->state_time >= params->coil_pulse_us && params->coil34p_high)
{
// xTaskNotifyFromISR(task, ~PIN_TRIG_A34P, eSetValueWithOverwrite, &xHigherPriorityTaskWoken);
digitalWrite(PIN_TRIG_A34P, LOW);
digitalWrite(pins.pin_trig_34p, LOW);
params->coil34p_high = false;
}
@@ -141,8 +127,7 @@ void onTimer(void *arg)
case S_34N:
if (params->state_time == params->clock_period_us && !params->coil34n_high)
{
// xTaskNotifyFromISR(task, PIN_TRIG_A34N, eSetValueWithOverwrite, &xHigherPriorityTaskWoken);
digitalWrite(PIN_TRIG_A34N, HIGH);
digitalWrite(pins.pin_trig_34n, HIGH);
params->coil34n_high = true;
}
@@ -150,21 +135,18 @@ void onTimer(void *arg)
{
if (params->state_time == params->spark_delay_us)
{
// xTaskNotifyFromISR(task, SPARK_A34, eSetValueWithOverwrite, &xHigherPriorityTaskWoken);
digitalWrite(SPARK_A34, HIGH);
digitalWrite(pins.pin_spark_34, HIGH);
}
if (params->state_time == params->spark_delay_us + params->spark_pulse_us)
{
// xTaskNotifyFromISR(task, ~SPARK_A34, eSetValueWithOverwrite, &xHigherPriorityTaskWoken);
digitalWrite(SPARK_A34, LOW);
digitalWrite(pins.pin_spark_34, LOW);
}
}
if (params->state_time >= params->coil_pulse_us && params->coil34n_high)
{
// xTaskNotifyFromISR(task, ~PIN_TRIG_A34N, eSetValueWithOverwrite, &xHigherPriorityTaskWoken);
digitalWrite(PIN_TRIG_A34N, LOW);
digitalWrite(pins.pin_trig_34n, LOW);
params->coil34n_high = false;
params->state = S_WAIT_10MS_END;
params->state_time = 0;
@@ -174,7 +156,6 @@ void onTimer(void *arg)
case S_WAIT_10MS_END:
if (!wait_sent)
{
// xTaskNotifyFromISR(task, S_WAIT_10MS_END, eSetValueWithOverwrite, &xHigherPriorityTaskWoken);
wait_sent = true;
}
if (params->state_time >= params->pause_long_us)
@@ -184,9 +165,7 @@ void onTimer(void *arg)
}
break;
}
digitalWrite(PIN_TRIG_B12P, LOW);
if (xHigherPriorityTaskWoken)
portYIELD_FROM_ISR();
}

View File

@@ -1,5 +1,7 @@
#pragma once
#define DEBUGLOG_DEFAULT_LOG_LEVEL_DEBUG
#include <Arduino.h>
#include <DebugLog.h>
#include "pins.h"
@@ -19,6 +21,15 @@ enum State
S_WAIT_10MS_END
};
struct timerPins {
const uint8_t pin_trig_12p;
const uint8_t pin_trig_12n;
const uint8_t pin_trig_34p;
const uint8_t pin_trig_34n;
const uint8_t pin_spark_12;
const uint8_t pin_spark_34;
};
struct timerStatus
{
State state = State::S_12P;
@@ -34,6 +45,7 @@ struct timerStatus
bool coil34p_high = false;
bool coil12n_high = false;
bool coil34n_high = false;
timerPins pins;
TaskHandle_t main_task;
};