Spaces:
Running
Running
Oliver Le
commited on
Commit
·
b5b9227
1
Parent(s):
2d68f51
update dataset processing + add default dataset + update plotting + add computing metrics
Browse files- .gitignore +4 -0
- app.py +330 -48
- model_wrapper.py +5 -1
- sample_datasets/003_MSL_id_2_Sensor_tr_883_1st_1238.csv +0 -0
- sample_datasets/235_SED_id_2_Medical_tr_2499_1st_3840.csv +0 -0
- sample_datasets/364_UCR_id_62_Sensor_tr_2833_1st_5988.csv +0 -0
- sample_datasets/686_YAHOO_id_136_WebService_tr_500_1st_755.csv +1681 -0
.gitignore
CHANGED
|
@@ -1 +1,5 @@
|
|
| 1 |
models/granite_tsfm
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
models/granite_tsfm
|
| 2 |
+
__pycache__/
|
| 3 |
+
.cache/
|
| 4 |
+
.DS_Store
|
| 5 |
+
*.pyc
|
app.py
CHANGED
|
@@ -1,8 +1,8 @@
|
|
| 1 |
import io
|
| 2 |
import zipfile
|
| 3 |
from pathlib import Path
|
| 4 |
-
from typing import List, Tuple
|
| 5 |
-
|
| 6 |
import gradio as gr
|
| 7 |
import matplotlib
|
| 8 |
|
|
@@ -51,37 +51,183 @@ def ensure_checkpoints() -> None:
|
|
| 51 |
zf.extractall(".")
|
| 52 |
|
| 53 |
|
| 54 |
-
|
| 55 |
-
|
| 56 |
-
|
| 57 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 58 |
data = np.load(path, allow_pickle=False)
|
| 59 |
if data.ndim == 1:
|
| 60 |
data = data.reshape(-1, 1)
|
| 61 |
if not isinstance(data, np.ndarray):
|
| 62 |
-
raise ValueError("Loaded data is not a numpy array.")
|
| 63 |
-
|
| 64 |
-
return df, data.astype(np.float32)
|
| 65 |
|
| 66 |
-
if
|
| 67 |
raise ValueError("Unsupported file type. Please upload a .csv, .txt, or .npy file.")
|
| 68 |
|
| 69 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 70 |
numeric_df = df.select_dtypes(include=np.number)
|
| 71 |
if numeric_df.empty:
|
| 72 |
-
raise ValueError("
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 73 |
|
| 74 |
if feature_columns:
|
| 75 |
-
missing = [col for col in feature_columns if col not in
|
| 76 |
if missing:
|
| 77 |
-
raise ValueError(f"Selected columns not found in the file: {', '.join(missing)}")
|
| 78 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 79 |
|
| 80 |
-
array =
|
| 81 |
if array.ndim == 1:
|
| 82 |
array = array.reshape(-1, 1)
|
| 83 |
|
| 84 |
-
return
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 85 |
|
| 86 |
|
| 87 |
def infer(
|
|
@@ -89,19 +235,32 @@ def infer(
|
|
| 89 |
is_multivariate: bool,
|
| 90 |
window_size: int,
|
| 91 |
batch_size: int,
|
| 92 |
-
mask_type: str,
|
| 93 |
multi_size: str,
|
| 94 |
feature_columns: List[str],
|
| 95 |
-
|
|
|
|
|
|
|
| 96 |
"""Run Time-RCD inference and produce outputs for the Gradio UI."""
|
| 97 |
ensure_checkpoints()
|
| 98 |
-
numeric_df, array = load_timeseries(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 99 |
|
| 100 |
kwargs = {
|
| 101 |
"Multi": is_multivariate,
|
| 102 |
"win_size": window_size,
|
| 103 |
"batch_size": batch_size,
|
| 104 |
-
"random_mask":
|
| 105 |
"size": multi_size,
|
| 106 |
"device": "cpu",
|
| 107 |
}
|
|
@@ -111,41 +270,90 @@ def infer(
|
|
| 111 |
logit_vector = np.asarray(logits).reshape(-1)
|
| 112 |
|
| 113 |
valid_length = min(len(score_vector), len(numeric_df))
|
| 114 |
-
|
| 115 |
-
|
| 116 |
|
| 117 |
result_df = numeric_df.iloc[:valid_length, :].copy()
|
|
|
|
|
|
|
| 118 |
result_df["anomaly_score"] = score_series
|
| 119 |
result_df["anomaly_logit"] = logit_series
|
| 120 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 121 |
top_indices = score_series.nlargest(5).index.tolist()
|
| 122 |
highlight_message = (
|
| 123 |
"Top anomaly indices (by score): " + ", ".join(str(idx) for idx in top_indices)
|
| 124 |
if len(top_indices) > 0
|
| 125 |
else "No anomalies detected."
|
| 126 |
)
|
|
|
|
|
|
|
| 127 |
|
| 128 |
figure = build_plot(result_df)
|
| 129 |
|
| 130 |
-
return highlight_message, result_df, figure
|
| 131 |
|
| 132 |
|
| 133 |
def build_plot(result_df: pd.DataFrame) -> plt.Figure:
|
| 134 |
"""Create a matplotlib plot of the first feature vs. anomaly score."""
|
| 135 |
fig, ax_primary = plt.subplots(figsize=(10, 4))
|
| 136 |
index = result_df.index
|
| 137 |
-
feature_cols = [
|
|
|
|
|
|
|
| 138 |
|
| 139 |
primary_col = feature_cols[0]
|
| 140 |
-
ax_primary.plot(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 141 |
ax_primary.set_xlabel("Index")
|
| 142 |
ax_primary.set_ylabel("Value")
|
| 143 |
ax_primary.grid(alpha=0.2)
|
| 144 |
|
| 145 |
ax_secondary = ax_primary.twinx()
|
| 146 |
-
ax_secondary.plot(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 147 |
ax_secondary.set_ylabel("Anomaly Score")
|
| 148 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 149 |
fig.tight_layout()
|
| 150 |
return fig
|
| 151 |
|
|
@@ -155,27 +363,60 @@ def build_interface() -> gr.Blocks:
|
|
| 155 |
with gr.Blocks(title="Time-RCD Zero-Shot Anomaly Detection") as demo:
|
| 156 |
gr.Markdown(
|
| 157 |
"# Time-RCD Zero-Shot Anomaly Detection\n"
|
| 158 |
-
"
|
| 159 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 160 |
)
|
| 161 |
|
| 162 |
with gr.Row():
|
| 163 |
-
file_input = gr.File(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 164 |
column_selector = gr.Textbox(
|
| 165 |
label="Columns to use (comma-separated, optional)",
|
| 166 |
placeholder="e.g. value,feature_1,feature_2",
|
| 167 |
)
|
| 168 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 169 |
with gr.Row():
|
| 170 |
multivariate = gr.Radio(
|
| 171 |
choices=["Univariate", "Multivariate"],
|
| 172 |
-
value=
|
|
|
|
|
|
|
|
|
|
|
|
|
| 173 |
label="Data type",
|
| 174 |
)
|
| 175 |
window_size_in = gr.Slider(
|
| 176 |
minimum=128,
|
| 177 |
-
maximum=
|
| 178 |
-
value=
|
| 179 |
step=128,
|
| 180 |
label="Window size",
|
| 181 |
)
|
|
@@ -188,11 +429,6 @@ def build_interface() -> gr.Blocks:
|
|
| 188 |
)
|
| 189 |
|
| 190 |
with gr.Row():
|
| 191 |
-
mask_type_in = gr.Radio(
|
| 192 |
-
choices=["random_mask", "full_mask"],
|
| 193 |
-
value="random_mask",
|
| 194 |
-
label="Mask type (multivariate only)",
|
| 195 |
-
)
|
| 196 |
multi_size_in = gr.Radio(
|
| 197 |
choices=["full", "small"],
|
| 198 |
value="full",
|
|
@@ -204,28 +440,74 @@ def build_interface() -> gr.Blocks:
|
|
| 204 |
result_message = gr.Textbox(label="Summary", interactive=False)
|
| 205 |
result_dataframe = gr.DataFrame(label="Anomaly Scores", interactive=False)
|
| 206 |
plot_output = gr.Plot(label="Series vs. Anomaly Score")
|
| 207 |
-
|
| 208 |
-
def _submit(
|
| 209 |
-
|
| 210 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 211 |
|
| 212 |
feature_columns = [col.strip() for col in columns_text.split(",") if col.strip()] if columns_text else []
|
| 213 |
is_multi = multivariate_choice == "Multivariate"
|
| 214 |
-
|
| 215 |
-
|
|
|
|
|
|
|
|
|
|
| 216 |
is_multivariate=is_multi,
|
| 217 |
window_size=int(win),
|
| 218 |
batch_size=int(batch),
|
| 219 |
-
mask_type=mask,
|
| 220 |
multi_size=size,
|
| 221 |
feature_columns=feature_columns,
|
|
|
|
|
|
|
| 222 |
)
|
| 223 |
-
return summary, df, fig
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 224 |
|
| 225 |
run_button.click(
|
| 226 |
fn=_submit,
|
| 227 |
-
inputs=[
|
| 228 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 229 |
)
|
| 230 |
|
| 231 |
return demo
|
|
|
|
| 1 |
import io
|
| 2 |
import zipfile
|
| 3 |
from pathlib import Path
|
| 4 |
+
from typing import List, Tuple, Literal, Optional
|
| 5 |
+
from evaluation.metrics import get_metrics
|
| 6 |
import gradio as gr
|
| 7 |
import matplotlib
|
| 8 |
|
|
|
|
| 51 |
zf.extractall(".")
|
| 52 |
|
| 53 |
|
| 54 |
+
BASE_DIR = Path(__file__).resolve().parent
|
| 55 |
+
SAMPLE_DATASET_DIR = BASE_DIR / "sample_datasets"
|
| 56 |
+
|
| 57 |
+
LabelSource = Literal["same_file", "separate_file", "none"]
|
| 58 |
+
LABEL_COLUMN_CANDIDATES = ("label", "labels")
|
| 59 |
+
LABEL_SOURCE_CHOICES = {
|
| 60 |
+
"Value + label in same file": "same_file",
|
| 61 |
+
"Labels in separate file": "separate_file",
|
| 62 |
+
"No labels provided": "none",
|
| 63 |
+
}
|
| 64 |
+
SAMPLE_FILES: dict[str, dict[str, object]] = {
|
| 65 |
+
"Sample: Univariate SED Medical": {
|
| 66 |
+
"path": SAMPLE_DATASET_DIR / "235_SED_id_2_Medical_tr_2499_1st_3840.csv",
|
| 67 |
+
"is_multivariate": False,
|
| 68 |
+
},
|
| 69 |
+
"Sample: Univariate UCR Sensor": {
|
| 70 |
+
"path": SAMPLE_DATASET_DIR / "364_UCR_id_62_Sensor_tr_2833_1st_5988.csv",
|
| 71 |
+
"is_multivariate": False,
|
| 72 |
+
},
|
| 73 |
+
"Sample: Univariate Yahoo WebService": {
|
| 74 |
+
"path": SAMPLE_DATASET_DIR / "686_YAHOO_id_136_WebService_tr_500_1st_755.csv",
|
| 75 |
+
"is_multivariate": False,
|
| 76 |
+
},
|
| 77 |
+
# "Sample: Multivariate MSL Sensor": {
|
| 78 |
+
# "path": SAMPLE_DATASET_DIR / "003_MSL_id_2_Sensor_tr_883_1st_1238.csv",
|
| 79 |
+
# "is_multivariate": True,
|
| 80 |
+
# },
|
| 81 |
+
}
|
| 82 |
+
|
| 83 |
+
|
| 84 |
+
def _resolve_path(file_obj) -> Path:
|
| 85 |
+
"""Extract a pathlib.Path from the gradio file object."""
|
| 86 |
+
if file_obj is None:
|
| 87 |
+
raise ValueError("File object is None.")
|
| 88 |
+
|
| 89 |
+
if isinstance(file_obj, Path):
|
| 90 |
+
return file_obj
|
| 91 |
+
|
| 92 |
+
if isinstance(file_obj, str):
|
| 93 |
+
path = Path(file_obj)
|
| 94 |
+
if not path.is_absolute():
|
| 95 |
+
path = (BASE_DIR / path).resolve()
|
| 96 |
+
return path
|
| 97 |
+
|
| 98 |
+
# Gradio may pass dictionaries or objects with a 'name' attribute.
|
| 99 |
+
if isinstance(file_obj, dict) and "name" in file_obj:
|
| 100 |
+
return _resolve_path(file_obj["name"])
|
| 101 |
+
|
| 102 |
+
name = getattr(file_obj, "name", None)
|
| 103 |
+
if not name:
|
| 104 |
+
raise ValueError("Unable to resolve uploaded file path.")
|
| 105 |
+
return _resolve_path(name)
|
| 106 |
+
|
| 107 |
+
|
| 108 |
+
def _load_dataframe(path: Path) -> pd.DataFrame:
|
| 109 |
+
"""Load a dataframe from supported file types."""
|
| 110 |
+
if not path.exists():
|
| 111 |
+
raise ValueError(f"File not found: {path}. If this is a bundled sample, ensure it exists under {SAMPLE_DATASET_DIR}.")
|
| 112 |
+
|
| 113 |
+
suffix = path.suffix.lower()
|
| 114 |
+
if suffix == ".npy":
|
| 115 |
data = np.load(path, allow_pickle=False)
|
| 116 |
if data.ndim == 1:
|
| 117 |
data = data.reshape(-1, 1)
|
| 118 |
if not isinstance(data, np.ndarray):
|
| 119 |
+
raise ValueError("Loaded .npy data is not a numpy array.")
|
| 120 |
+
return pd.DataFrame(data)
|
|
|
|
| 121 |
|
| 122 |
+
if suffix not in {".csv", ".txt"}:
|
| 123 |
raise ValueError("Unsupported file type. Please upload a .csv, .txt, or .npy file.")
|
| 124 |
|
| 125 |
+
return pd.read_csv(path)
|
| 126 |
+
|
| 127 |
+
|
| 128 |
+
def _extract_label_column(df: pd.DataFrame) -> Tuple[pd.DataFrame, Optional[pd.Series]]:
|
| 129 |
+
"""Split a label column from dataframe if one of the candidate names exists."""
|
| 130 |
+
lower_to_original = {col.lower(): col for col in df.columns}
|
| 131 |
+
label_col = None
|
| 132 |
+
for candidate in LABEL_COLUMN_CANDIDATES:
|
| 133 |
+
if candidate in lower_to_original:
|
| 134 |
+
label_col = lower_to_original[candidate]
|
| 135 |
+
break
|
| 136 |
+
|
| 137 |
+
if label_col is None:
|
| 138 |
+
return df, None
|
| 139 |
+
|
| 140 |
+
label_series = pd.to_numeric(df[label_col], errors="raise")
|
| 141 |
+
feature_df = df.drop(columns=[label_col])
|
| 142 |
+
return feature_df, label_series
|
| 143 |
+
|
| 144 |
+
|
| 145 |
+
def _load_label_series(file_obj) -> pd.Series:
|
| 146 |
+
"""Load labels from a dedicated upload."""
|
| 147 |
+
path = _resolve_path(file_obj)
|
| 148 |
+
df = _load_dataframe(path)
|
| 149 |
numeric_df = df.select_dtypes(include=np.number)
|
| 150 |
if numeric_df.empty:
|
| 151 |
+
raise ValueError("Uploaded label file does not contain numeric columns.")
|
| 152 |
+
|
| 153 |
+
lower_to_original = {col.lower(): col for col in numeric_df.columns}
|
| 154 |
+
for candidate in LABEL_COLUMN_CANDIDATES:
|
| 155 |
+
if candidate in lower_to_original:
|
| 156 |
+
column = lower_to_original[candidate]
|
| 157 |
+
return pd.to_numeric(numeric_df[column], errors="raise").rename("label")
|
| 158 |
+
|
| 159 |
+
if numeric_df.shape[1] > 1:
|
| 160 |
+
raise ValueError(
|
| 161 |
+
"Label file must contain exactly one numeric column or include a column named 'label'."
|
| 162 |
+
)
|
| 163 |
+
|
| 164 |
+
series = pd.to_numeric(numeric_df.iloc[:, 0], errors="raise").rename("label")
|
| 165 |
+
return series
|
| 166 |
+
|
| 167 |
+
|
| 168 |
+
def load_timeseries(
|
| 169 |
+
value_file,
|
| 170 |
+
feature_columns: List[str] | None,
|
| 171 |
+
label_source: LabelSource,
|
| 172 |
+
label_file=None,
|
| 173 |
+
) -> Tuple[pd.DataFrame, np.ndarray, Optional[pd.Series]]:
|
| 174 |
+
"""Load the uploaded value file, optional label file, and return features/labels."""
|
| 175 |
+
value_path = _resolve_path(value_file)
|
| 176 |
+
raw_df = _load_dataframe(value_path)
|
| 177 |
+
feature_df = raw_df.select_dtypes(include=np.number)
|
| 178 |
+
|
| 179 |
+
if feature_df.empty:
|
| 180 |
+
raise ValueError("No numeric columns detected. Ensure your value file contains numeric values.")
|
| 181 |
+
|
| 182 |
+
label_series: Optional[pd.Series] = None
|
| 183 |
+
feature_df, embedded_label = _extract_label_column(feature_df)
|
| 184 |
+
|
| 185 |
+
if label_source == "same_file":
|
| 186 |
+
if embedded_label is None:
|
| 187 |
+
raise ValueError(
|
| 188 |
+
"Label column not found in the uploaded file. Expected a column named 'label'."
|
| 189 |
+
)
|
| 190 |
+
label_series = embedded_label
|
| 191 |
+
elif label_source == "separate_file":
|
| 192 |
+
if label_file is None:
|
| 193 |
+
raise ValueError("Please upload a label file or switch the label source option.")
|
| 194 |
+
label_series = _load_label_series(label_file)
|
| 195 |
+
elif label_source == "none":
|
| 196 |
+
label_series = None
|
| 197 |
+
else:
|
| 198 |
+
raise ValueError(f"Unsupported label source option: {label_source}")
|
| 199 |
|
| 200 |
if feature_columns:
|
| 201 |
+
missing = [col for col in feature_columns if col not in feature_df.columns]
|
| 202 |
if missing:
|
| 203 |
+
raise ValueError(f"Selected columns not found in the value file: {', '.join(missing)}")
|
| 204 |
+
feature_df = feature_df[feature_columns]
|
| 205 |
+
|
| 206 |
+
feature_df = feature_df.reset_index(drop=True)
|
| 207 |
+
|
| 208 |
+
if label_series is not None:
|
| 209 |
+
label_series = label_series.reset_index(drop=True)
|
| 210 |
+
if len(label_series) != len(feature_df):
|
| 211 |
+
min_length = min(len(label_series), len(feature_df))
|
| 212 |
+
label_series = label_series.iloc[:min_length].reset_index(drop=True)
|
| 213 |
+
feature_df = feature_df.iloc[:min_length, :].reset_index(drop=True)
|
| 214 |
|
| 215 |
+
array = feature_df.to_numpy(dtype=np.float32)
|
| 216 |
if array.ndim == 1:
|
| 217 |
array = array.reshape(-1, 1)
|
| 218 |
|
| 219 |
+
return feature_df, array, label_series
|
| 220 |
+
|
| 221 |
+
|
| 222 |
+
def _metrics_to_dataframe(metrics: dict[str, float]) -> pd.DataFrame:
|
| 223 |
+
if not metrics:
|
| 224 |
+
return pd.DataFrame({"Metric": [], "Value": []})
|
| 225 |
+
return pd.DataFrame(
|
| 226 |
+
{
|
| 227 |
+
"Metric": list(metrics.keys()),
|
| 228 |
+
"Value": [round(float(value), 4) for value in metrics.values()],
|
| 229 |
+
}
|
| 230 |
+
)
|
| 231 |
|
| 232 |
|
| 233 |
def infer(
|
|
|
|
| 235 |
is_multivariate: bool,
|
| 236 |
window_size: int,
|
| 237 |
batch_size: int,
|
|
|
|
| 238 |
multi_size: str,
|
| 239 |
feature_columns: List[str],
|
| 240 |
+
label_source: LabelSource,
|
| 241 |
+
label_file,
|
| 242 |
+
) -> Tuple[str, pd.DataFrame, plt.Figure, pd.DataFrame]:
|
| 243 |
"""Run Time-RCD inference and produce outputs for the Gradio UI."""
|
| 244 |
ensure_checkpoints()
|
| 245 |
+
numeric_df, array, labels = load_timeseries(
|
| 246 |
+
file_obj, feature_columns or None, label_source=label_source, label_file=label_file
|
| 247 |
+
)
|
| 248 |
+
|
| 249 |
+
num_features = array.shape[1] if array.ndim > 1 else 1
|
| 250 |
+
if is_multivariate and num_features == 1:
|
| 251 |
+
raise ValueError(
|
| 252 |
+
"Dataset check: only one feature column found, so please switch the Data type to 'Univariate' or upload a multivariate file with multiple feature columns."
|
| 253 |
+
)
|
| 254 |
+
if not is_multivariate and num_features > 1:
|
| 255 |
+
raise ValueError(
|
| 256 |
+
"Dataset check: multiple feature columns detected, so please switch the Data type to 'Multivariate' or provide a univariate file with a single feature column."
|
| 257 |
+
)
|
| 258 |
|
| 259 |
kwargs = {
|
| 260 |
"Multi": is_multivariate,
|
| 261 |
"win_size": window_size,
|
| 262 |
"batch_size": batch_size,
|
| 263 |
+
"random_mask": "random_mask",
|
| 264 |
"size": multi_size,
|
| 265 |
"device": "cpu",
|
| 266 |
}
|
|
|
|
| 270 |
logit_vector = np.asarray(logits).reshape(-1)
|
| 271 |
|
| 272 |
valid_length = min(len(score_vector), len(numeric_df))
|
| 273 |
+
if labels is not None:
|
| 274 |
+
valid_length = min(valid_length, len(labels))
|
| 275 |
|
| 276 |
result_df = numeric_df.iloc[:valid_length, :].copy()
|
| 277 |
+
score_series = pd.Series(score_vector[:valid_length], index=result_df.index, name="anomaly_score")
|
| 278 |
+
logit_series = pd.Series(logit_vector[:valid_length], index=result_df.index, name="anomaly_logit")
|
| 279 |
result_df["anomaly_score"] = score_series
|
| 280 |
result_df["anomaly_logit"] = logit_series
|
| 281 |
|
| 282 |
+
metrics_df: pd.DataFrame
|
| 283 |
+
if labels is not None:
|
| 284 |
+
label_series = labels.iloc[:valid_length]
|
| 285 |
+
result_df["label"] = label_series.to_numpy()
|
| 286 |
+
metrics = get_metrics(score_series.to_numpy(), label_series.to_numpy())
|
| 287 |
+
metrics_df = _metrics_to_dataframe(metrics)
|
| 288 |
+
else:
|
| 289 |
+
metrics_df = pd.DataFrame({"Metric": ["Info"], "Value": ["Labels not provided; metrics skipped."]})
|
| 290 |
+
|
| 291 |
top_indices = score_series.nlargest(5).index.tolist()
|
| 292 |
highlight_message = (
|
| 293 |
"Top anomaly indices (by score): " + ", ".join(str(idx) for idx in top_indices)
|
| 294 |
if len(top_indices) > 0
|
| 295 |
else "No anomalies detected."
|
| 296 |
)
|
| 297 |
+
if labels is None:
|
| 298 |
+
highlight_message += " Metrics skipped due to missing labels."
|
| 299 |
|
| 300 |
figure = build_plot(result_df)
|
| 301 |
|
| 302 |
+
return highlight_message, result_df, figure, metrics_df
|
| 303 |
|
| 304 |
|
| 305 |
def build_plot(result_df: pd.DataFrame) -> plt.Figure:
|
| 306 |
"""Create a matplotlib plot of the first feature vs. anomaly score."""
|
| 307 |
fig, ax_primary = plt.subplots(figsize=(10, 4))
|
| 308 |
index = result_df.index
|
| 309 |
+
feature_cols = [
|
| 310 |
+
col for col in result_df.columns if col not in {"anomaly_score", "anomaly_logit", "label"}
|
| 311 |
+
]
|
| 312 |
|
| 313 |
primary_col = feature_cols[0]
|
| 314 |
+
ax_primary.plot(
|
| 315 |
+
index,
|
| 316 |
+
result_df[primary_col],
|
| 317 |
+
label=f"{primary_col}",
|
| 318 |
+
color="#1f77b4",
|
| 319 |
+
linewidth=1.0,
|
| 320 |
+
)
|
| 321 |
+
|
| 322 |
+
if "label" in result_df.columns:
|
| 323 |
+
anomalies = result_df[result_df["label"] > 0]
|
| 324 |
+
if not anomalies.empty:
|
| 325 |
+
ax_primary.scatter(
|
| 326 |
+
anomalies.index,
|
| 327 |
+
anomalies[primary_col],
|
| 328 |
+
label="Label = 1",
|
| 329 |
+
color="#ff7f0e",
|
| 330 |
+
marker="o",
|
| 331 |
+
s=30,
|
| 332 |
+
alpha=0.85,
|
| 333 |
+
)
|
| 334 |
+
|
| 335 |
ax_primary.set_xlabel("Index")
|
| 336 |
ax_primary.set_ylabel("Value")
|
| 337 |
ax_primary.grid(alpha=0.2)
|
| 338 |
|
| 339 |
ax_secondary = ax_primary.twinx()
|
| 340 |
+
ax_secondary.plot(
|
| 341 |
+
index,
|
| 342 |
+
result_df["anomaly_score"],
|
| 343 |
+
label="Anomaly Score",
|
| 344 |
+
color="#d62728",
|
| 345 |
+
linewidth=1.0,
|
| 346 |
+
)
|
| 347 |
ax_secondary.set_ylabel("Anomaly Score")
|
| 348 |
|
| 349 |
+
handles_primary, labels_primary = ax_primary.get_legend_handles_labels()
|
| 350 |
+
handles_secondary, labels_secondary = ax_secondary.get_legend_handles_labels()
|
| 351 |
+
ax_primary.legend(
|
| 352 |
+
handles_primary + handles_secondary,
|
| 353 |
+
labels_primary + labels_secondary,
|
| 354 |
+
loc="upper right",
|
| 355 |
+
)
|
| 356 |
+
|
| 357 |
fig.tight_layout()
|
| 358 |
return fig
|
| 359 |
|
|
|
|
| 363 |
with gr.Blocks(title="Time-RCD Zero-Shot Anomaly Detection") as demo:
|
| 364 |
gr.Markdown(
|
| 365 |
"# Time-RCD Zero-Shot Anomaly Detection\n"
|
| 366 |
+
"Start with one of the bundled datasets or upload your own time series to run zero-shot anomaly detection."
|
| 367 |
+
)
|
| 368 |
+
|
| 369 |
+
bundled_choices = list(SAMPLE_FILES.keys())
|
| 370 |
+
default_choice = bundled_choices[0] if bundled_choices else "Upload my own"
|
| 371 |
+
|
| 372 |
+
data_selector = gr.Radio(
|
| 373 |
+
choices=bundled_choices + ["Upload my own"],
|
| 374 |
+
value=default_choice,
|
| 375 |
+
label="Choose dataset",
|
| 376 |
)
|
| 377 |
|
| 378 |
with gr.Row():
|
| 379 |
+
file_input = gr.File(
|
| 380 |
+
label="Upload time series file (.csv, .txt, .npy)",
|
| 381 |
+
file_types=[".csv", ".txt", ".npy"],
|
| 382 |
+
visible=default_choice == "Upload my own",
|
| 383 |
+
)
|
| 384 |
+
label_source = gr.Radio(
|
| 385 |
+
choices=list(LABEL_SOURCE_CHOICES.keys()),
|
| 386 |
+
value="Value + label in same file",
|
| 387 |
+
label="Label source",
|
| 388 |
+
)
|
| 389 |
+
|
| 390 |
+
with gr.Row():
|
| 391 |
+
label_file_input = gr.File(
|
| 392 |
+
label="Upload label file (.csv, .txt, .npy)",
|
| 393 |
+
file_types=[".csv", ".txt", ".npy"],
|
| 394 |
+
visible=False,
|
| 395 |
+
)
|
| 396 |
column_selector = gr.Textbox(
|
| 397 |
label="Columns to use (comma-separated, optional)",
|
| 398 |
placeholder="e.g. value,feature_1,feature_2",
|
| 399 |
)
|
| 400 |
|
| 401 |
+
gr.Markdown(
|
| 402 |
+
"Bundled datasets live in the Downloads folder and include labels unless noted. "
|
| 403 |
+
"Select \"Upload my own\" to provide a custom file."
|
| 404 |
+
)
|
| 405 |
+
|
| 406 |
with gr.Row():
|
| 407 |
multivariate = gr.Radio(
|
| 408 |
choices=["Univariate", "Multivariate"],
|
| 409 |
+
value=(
|
| 410 |
+
"Multivariate"
|
| 411 |
+
if bundled_choices and SAMPLE_FILES[default_choice]["is_multivariate"]
|
| 412 |
+
else "Univariate"
|
| 413 |
+
),
|
| 414 |
label="Data type",
|
| 415 |
)
|
| 416 |
window_size_in = gr.Slider(
|
| 417 |
minimum=128,
|
| 418 |
+
maximum=20000,
|
| 419 |
+
value=15000,
|
| 420 |
step=128,
|
| 421 |
label="Window size",
|
| 422 |
)
|
|
|
|
| 429 |
)
|
| 430 |
|
| 431 |
with gr.Row():
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 432 |
multi_size_in = gr.Radio(
|
| 433 |
choices=["full", "small"],
|
| 434 |
value="full",
|
|
|
|
| 440 |
result_message = gr.Textbox(label="Summary", interactive=False)
|
| 441 |
result_dataframe = gr.DataFrame(label="Anomaly Scores", interactive=False)
|
| 442 |
plot_output = gr.Plot(label="Series vs. Anomaly Score")
|
| 443 |
+
metrics_output = gr.DataFrame(label="Metrics", interactive=False)
|
| 444 |
+
def _submit(
|
| 445 |
+
data_choice,
|
| 446 |
+
file_obj,
|
| 447 |
+
label_source_choice,
|
| 448 |
+
label_file_obj,
|
| 449 |
+
multivariate_choice,
|
| 450 |
+
win,
|
| 451 |
+
batch,
|
| 452 |
+
size,
|
| 453 |
+
columns_text,
|
| 454 |
+
):
|
| 455 |
+
use_sample = data_choice != "Upload my own"
|
| 456 |
+
if use_sample:
|
| 457 |
+
sample_entry = SAMPLE_FILES[data_choice]
|
| 458 |
+
value_obj = sample_entry["path"]
|
| 459 |
+
else:
|
| 460 |
+
value_obj = file_obj
|
| 461 |
+
|
| 462 |
+
if value_obj is None:
|
| 463 |
+
raise gr.Error("Please upload a time series file or choose a sample.")
|
| 464 |
|
| 465 |
feature_columns = [col.strip() for col in columns_text.split(",") if col.strip()] if columns_text else []
|
| 466 |
is_multi = multivariate_choice == "Multivariate"
|
| 467 |
+
resolved_label_source = LABEL_SOURCE_CHOICES[label_source_choice]
|
| 468 |
+
if resolved_label_source == "separate_file" and label_file_obj is None:
|
| 469 |
+
raise gr.Error("Please upload a label file or change the label source option.")
|
| 470 |
+
summary, df, fig, metrics = infer(
|
| 471 |
+
file_obj=value_obj,
|
| 472 |
is_multivariate=is_multi,
|
| 473 |
window_size=int(win),
|
| 474 |
batch_size=int(batch),
|
|
|
|
| 475 |
multi_size=size,
|
| 476 |
feature_columns=feature_columns,
|
| 477 |
+
label_source=resolved_label_source,
|
| 478 |
+
label_file=label_file_obj,
|
| 479 |
)
|
| 480 |
+
return summary, df, fig, metrics
|
| 481 |
+
|
| 482 |
+
def _toggle_label_file(option):
|
| 483 |
+
return gr.update(visible=option == "Labels in separate file")
|
| 484 |
+
|
| 485 |
+
def _handle_dataset_choice(choice):
|
| 486 |
+
show_upload = choice == "Upload my own"
|
| 487 |
+
if choice == "Upload my own":
|
| 488 |
+
multi_update = gr.update()
|
| 489 |
+
else:
|
| 490 |
+
expected_multi = SAMPLE_FILES[choice]["is_multivariate"]
|
| 491 |
+
multi_update = gr.update(value="Multivariate" if expected_multi else "Univariate")
|
| 492 |
+
return gr.update(visible=show_upload), multi_update
|
| 493 |
+
|
| 494 |
+
label_source.change(fn=_toggle_label_file, inputs=label_source, outputs=label_file_input)
|
| 495 |
+
data_selector.change(fn=_handle_dataset_choice, inputs=data_selector, outputs=[file_input, multivariate])
|
| 496 |
|
| 497 |
run_button.click(
|
| 498 |
fn=_submit,
|
| 499 |
+
inputs=[
|
| 500 |
+
data_selector,
|
| 501 |
+
file_input,
|
| 502 |
+
label_source,
|
| 503 |
+
label_file_input,
|
| 504 |
+
multivariate,
|
| 505 |
+
window_size_in,
|
| 506 |
+
batch_size_in,
|
| 507 |
+
multi_size_in,
|
| 508 |
+
column_selector,
|
| 509 |
+
],
|
| 510 |
+
outputs=[result_message, result_dataframe, plot_output, metrics_output],
|
| 511 |
)
|
| 512 |
|
| 513 |
return demo
|
model_wrapper.py
CHANGED
|
@@ -450,15 +450,19 @@ def run_Time_RCD(data, **kwargs):
|
|
| 450 |
else:
|
| 451 |
checkpoint_path = 'checkpoints/full_mask_15_56.pth'
|
| 452 |
config.ts_config.patch_size = 32
|
|
|
|
| 453 |
else:
|
| 454 |
checkpoint_path = 'checkpoints/full_mask_anomaly_head_pretrain_checkpoint_best.pth'
|
| 455 |
config.ts_config.patch_size = 16
|
|
|
|
| 456 |
|
| 457 |
config.cuda_devices = device # Use the device parameter properly
|
| 458 |
print("Using CUDA device:", config.cuda_devices)
|
| 459 |
config.win_size = win_size
|
| 460 |
config.batch_size = batch_size
|
| 461 |
-
config.ts_config.num_features = data.shape[1]
|
|
|
|
|
|
|
| 462 |
print(f"Checkpoint path: {checkpoint_path}")
|
| 463 |
cls = TimeRCDPretrainTester(checkpoint_path, config)
|
| 464 |
score_list, logit_list = cls.zero_shot(data)
|
|
|
|
| 450 |
else:
|
| 451 |
checkpoint_path = 'checkpoints/full_mask_15_56.pth'
|
| 452 |
config.ts_config.patch_size = 32
|
| 453 |
+
config.ts_config.num_features = data.shape[1]
|
| 454 |
else:
|
| 455 |
checkpoint_path = 'checkpoints/full_mask_anomaly_head_pretrain_checkpoint_best.pth'
|
| 456 |
config.ts_config.patch_size = 16
|
| 457 |
+
config.ts_config.num_features = 1
|
| 458 |
|
| 459 |
config.cuda_devices = device # Use the device parameter properly
|
| 460 |
print("Using CUDA device:", config.cuda_devices)
|
| 461 |
config.win_size = win_size
|
| 462 |
config.batch_size = batch_size
|
| 463 |
+
# config.ts_config.num_features = data.shape[1]
|
| 464 |
+
|
| 465 |
+
print("Here is the data shape: ", data.shape)
|
| 466 |
print(f"Checkpoint path: {checkpoint_path}")
|
| 467 |
cls = TimeRCDPretrainTester(checkpoint_path, config)
|
| 468 |
score_list, logit_list = cls.zero_shot(data)
|
sample_datasets/003_MSL_id_2_Sensor_tr_883_1st_1238.csv
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
sample_datasets/235_SED_id_2_Medical_tr_2499_1st_3840.csv
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
sample_datasets/364_UCR_id_62_Sensor_tr_2833_1st_5988.csv
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
sample_datasets/686_YAHOO_id_136_WebService_tr_500_1st_755.csv
ADDED
|
@@ -0,0 +1,1681 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
Data,Label
|
| 2 |
+
-12.3632407773689,0
|
| 3 |
+
232.13634171358,0
|
| 4 |
+
430.52571793368105,0
|
| 5 |
+
496.173075378765,0
|
| 6 |
+
522.727572341893,0
|
| 7 |
+
393.257932390811,0
|
| 8 |
+
213.565994220419,0
|
| 9 |
+
38.2952438682293,0
|
| 10 |
+
-127.107541885994,0
|
| 11 |
+
-95.03925017548109,0
|
| 12 |
+
-106.601412209391,0
|
| 13 |
+
-7.52539458493978,0
|
| 14 |
+
32.0612030482211,0
|
| 15 |
+
197.41865281019287,0
|
| 16 |
+
323.040653356358,0
|
| 17 |
+
336.954405258532,0
|
| 18 |
+
283.577174183736,0
|
| 19 |
+
130.779855457075,0
|
| 20 |
+
0.9227558452515192,0
|
| 21 |
+
-215.556328746695,0
|
| 22 |
+
-275.877826366485,0
|
| 23 |
+
-272.840852246077,0
|
| 24 |
+
-249.05187224346,0
|
| 25 |
+
-91.9718148835804,0
|
| 26 |
+
239.831590502733,0
|
| 27 |
+
382.195091834717,0
|
| 28 |
+
561.899265329255,0
|
| 29 |
+
630.0377180700029,0
|
| 30 |
+
627.7814624379889,0
|
| 31 |
+
504.893588857404,0
|
| 32 |
+
365.770165469506,0
|
| 33 |
+
152.214172210223,0
|
| 34 |
+
85.9884860266163,0
|
| 35 |
+
60.2455830227528,0
|
| 36 |
+
24.8111402315968,0
|
| 37 |
+
149.845019077926,0
|
| 38 |
+
180.792529745664,0
|
| 39 |
+
364.63274175438,0
|
| 40 |
+
497.791309065616,0
|
| 41 |
+
482.581536454726,0
|
| 42 |
+
453.62644028571,0
|
| 43 |
+
235.0701662100849,0
|
| 44 |
+
61.36547444249271,0
|
| 45 |
+
-35.6404221818407,0
|
| 46 |
+
-140.412252601003,0
|
| 47 |
+
-157.180403355837,0
|
| 48 |
+
-84.67058760494001,0
|
| 49 |
+
-7.33952611979112,0
|
| 50 |
+
273.183262836977,0
|
| 51 |
+
497.963072677309,0
|
| 52 |
+
684.926149428177,0
|
| 53 |
+
707.098984074987,0
|
| 54 |
+
702.987212270702,0
|
| 55 |
+
680.753360602258,0
|
| 56 |
+
436.16093475391295,0
|
| 57 |
+
240.543048080317,0
|
| 58 |
+
88.771528118984,0
|
| 59 |
+
-28.8520196168574,0
|
| 60 |
+
64.6874582486544,0
|
| 61 |
+
114.203938252107,0
|
| 62 |
+
263.012912293684,0
|
| 63 |
+
461.437871812817,0
|
| 64 |
+
537.475008250849,0
|
| 65 |
+
485.771049528955,0
|
| 66 |
+
449.411584387616,0
|
| 67 |
+
332.173875030068,0
|
| 68 |
+
101.148815779592,0
|
| 69 |
+
22.6422652576438,0
|
| 70 |
+
-70.22860373068521,0
|
| 71 |
+
-195.978464618681,0
|
| 72 |
+
-174.999993448803,0
|
| 73 |
+
76.5178672246325,0
|
| 74 |
+
302.317412967712,0
|
| 75 |
+
489.422605122118,0
|
| 76 |
+
656.255677740785,0
|
| 77 |
+
729.6760495620849,0
|
| 78 |
+
706.50381080151,0
|
| 79 |
+
618.2135112534829,0
|
| 80 |
+
391.99961641433,0
|
| 81 |
+
209.722220302298,0
|
| 82 |
+
53.8268583911137,0
|
| 83 |
+
14.023950602775098,0
|
| 84 |
+
86.20815906588459,0
|
| 85 |
+
111.19936317051,0
|
| 86 |
+
188.65908628291697,0
|
| 87 |
+
394.237545406156,0
|
| 88 |
+
486.413013424712,0
|
| 89 |
+
518.8994084129811,0
|
| 90 |
+
359.135915973952,0
|
| 91 |
+
301.341059835943,0
|
| 92 |
+
81.7506228458875,0
|
| 93 |
+
-100.368561507905,0
|
| 94 |
+
-294.426057653765,0
|
| 95 |
+
-156.189089943764,0
|
| 96 |
+
-72.0103003301233,0
|
| 97 |
+
41.379324409603,0
|
| 98 |
+
262.805832790962,0
|
| 99 |
+
458.61690521588,0
|
| 100 |
+
642.984608160047,0
|
| 101 |
+
693.154416992712,0
|
| 102 |
+
664.777499974599,0
|
| 103 |
+
578.814669178947,0
|
| 104 |
+
388.488822793017,0
|
| 105 |
+
163.98176670203898,0
|
| 106 |
+
33.823164110604,0
|
| 107 |
+
4.842965156470889,0
|
| 108 |
+
-5.64653543941514,0
|
| 109 |
+
23.9467640711378,0
|
| 110 |
+
227.290988528578,0
|
| 111 |
+
356.38771140502604,0
|
| 112 |
+
466.849116978331,0
|
| 113 |
+
380.44206229618,0
|
| 114 |
+
335.46777409785705,0
|
| 115 |
+
137.890365524982,0
|
| 116 |
+
42.00174488615811,0
|
| 117 |
+
-109.680756508003,0
|
| 118 |
+
-263.445257507019,0
|
| 119 |
+
-173.87051348597,0
|
| 120 |
+
-130.765962050055,0
|
| 121 |
+
10.037755743912,0
|
| 122 |
+
291.765346128751,0
|
| 123 |
+
432.0050672686151,0
|
| 124 |
+
725.3180647380051,0
|
| 125 |
+
689.165238620021,0
|
| 126 |
+
712.419367140357,0
|
| 127 |
+
680.623273551662,0
|
| 128 |
+
389.1636576235,0
|
| 129 |
+
188.555701339254,0
|
| 130 |
+
79.2095126576895,0
|
| 131 |
+
45.334835808513006,0
|
| 132 |
+
154.772593524072,0
|
| 133 |
+
141.067450916111,0
|
| 134 |
+
305.04562182976,0
|
| 135 |
+
376.834097799316,0
|
| 136 |
+
506.027015720898,0
|
| 137 |
+
555.094641605013,0
|
| 138 |
+
463.559334293063,0
|
| 139 |
+
304.784764618,0
|
| 140 |
+
172.959551197435,0
|
| 141 |
+
-49.79765319364671,0
|
| 142 |
+
-42.6893707619453,0
|
| 143 |
+
-126.442998276384,0
|
| 144 |
+
3.38206845010513,0
|
| 145 |
+
171.698556847743,0
|
| 146 |
+
330.864252337384,0
|
| 147 |
+
613.410136288909,0
|
| 148 |
+
737.474981383477,0
|
| 149 |
+
833.780533135298,0
|
| 150 |
+
907.961509433006,0
|
| 151 |
+
658.206053259314,0
|
| 152 |
+
558.560271470736,0
|
| 153 |
+
376.175303325165,0
|
| 154 |
+
229.774653160466,0
|
| 155 |
+
177.639539006839,0
|
| 156 |
+
252.19150080448296,0
|
| 157 |
+
297.883874321189,0
|
| 158 |
+
364.49474928272105,0
|
| 159 |
+
560.070325015129,0
|
| 160 |
+
603.788091990035,0
|
| 161 |
+
619.671893321222,0
|
| 162 |
+
658.198649777604,0
|
| 163 |
+
449.10113200325895,0
|
| 164 |
+
320.694992970366,0
|
| 165 |
+
186.38155165517887,0
|
| 166 |
+
108.216963960849,0
|
| 167 |
+
-10.0348351642116,0
|
| 168 |
+
193.572997229745,0
|
| 169 |
+
255.604811113075,0
|
| 170 |
+
529.716077345118,0
|
| 171 |
+
800.362703598921,0
|
| 172 |
+
956.98884783606,0
|
| 173 |
+
912.519033929862,0
|
| 174 |
+
977.794498653076,0
|
| 175 |
+
946.48250555368,0
|
| 176 |
+
732.4481955118209,0
|
| 177 |
+
447.377892376562,0
|
| 178 |
+
435.69950497230496,0
|
| 179 |
+
311.52594635605203,0
|
| 180 |
+
318.324726522037,0
|
| 181 |
+
482.681100942551,0
|
| 182 |
+
570.855714535282,0
|
| 183 |
+
675.461940038694,0
|
| 184 |
+
824.436871280607,0
|
| 185 |
+
835.190321535432,0
|
| 186 |
+
719.265958242624,0
|
| 187 |
+
599.401123911827,0
|
| 188 |
+
465.75118949246496,0
|
| 189 |
+
333.698097502947,0
|
| 190 |
+
183.160607180414,0
|
| 191 |
+
191.440624569721,0
|
| 192 |
+
275.22271215935,0
|
| 193 |
+
360.586053131463,0
|
| 194 |
+
686.302488441446,0
|
| 195 |
+
854.3862815003689,0
|
| 196 |
+
1073.34835377284,0
|
| 197 |
+
1071.75696687279,0
|
| 198 |
+
1117.44384295249,0
|
| 199 |
+
1072.2978002696,0
|
| 200 |
+
864.175462372412,0
|
| 201 |
+
691.269036529403,0
|
| 202 |
+
493.315621809345,0
|
| 203 |
+
511.827113419583,0
|
| 204 |
+
538.702965186655,0
|
| 205 |
+
620.763164274878,0
|
| 206 |
+
803.298525957944,0
|
| 207 |
+
881.0330391076379,0
|
| 208 |
+
991.2211967278108,0
|
| 209 |
+
1021.10574216196,0
|
| 210 |
+
908.736445625107,0
|
| 211 |
+
737.878022308062,0
|
| 212 |
+
632.343338947952,0
|
| 213 |
+
351.674635889589,0
|
| 214 |
+
315.24061650748,0
|
| 215 |
+
292.85208084858,0
|
| 216 |
+
455.523264888422,0
|
| 217 |
+
558.449095992596,0
|
| 218 |
+
696.158380078962,0
|
| 219 |
+
1003.72683909469,0
|
| 220 |
+
1122.54484211107,0
|
| 221 |
+
1266.63565811315,0
|
| 222 |
+
1269.7971218922,0
|
| 223 |
+
1079.47051777113,0
|
| 224 |
+
976.132940684312,0
|
| 225 |
+
804.642105240126,0
|
| 226 |
+
548.377375119852,0
|
| 227 |
+
580.500185119952,0
|
| 228 |
+
530.642376837658,0
|
| 229 |
+
669.024614545665,0
|
| 230 |
+
759.8886026432621,0
|
| 231 |
+
921.331475948741,0
|
| 232 |
+
962.95836250895,0
|
| 233 |
+
1029.89254789919,0
|
| 234 |
+
959.337867342408,0
|
| 235 |
+
699.007405449109,0
|
| 236 |
+
735.167790385479,0
|
| 237 |
+
475.176780895544,0
|
| 238 |
+
299.279090406402,0
|
| 239 |
+
354.23898714304704,0
|
| 240 |
+
411.515642089868,0
|
| 241 |
+
557.718772625873,0
|
| 242 |
+
767.2154631260499,0
|
| 243 |
+
919.781468924462,0
|
| 244 |
+
1174.4537290243,0
|
| 245 |
+
1206.38301766968,0
|
| 246 |
+
1123.01272292485,0
|
| 247 |
+
1065.2558649563,0
|
| 248 |
+
934.791950969605,0
|
| 249 |
+
826.631863290824,0
|
| 250 |
+
601.720521916762,0
|
| 251 |
+
565.460020203727,0
|
| 252 |
+
506.5716457096521,0
|
| 253 |
+
612.490890407173,0
|
| 254 |
+
701.775502225292,0
|
| 255 |
+
873.025368916297,0
|
| 256 |
+
936.7458735358432,0
|
| 257 |
+
946.7716725379672,0
|
| 258 |
+
888.361411641707,0
|
| 259 |
+
696.598992432374,0
|
| 260 |
+
588.930530685997,0
|
| 261 |
+
364.6841819284391,0
|
| 262 |
+
308.797168704647,0
|
| 263 |
+
287.633859715428,0
|
| 264 |
+
398.754613388838,0
|
| 265 |
+
507.959766931027,0
|
| 266 |
+
793.1971909256799,0
|
| 267 |
+
973.845087773513,0
|
| 268 |
+
1115.34303060879,0
|
| 269 |
+
1247.8953714962402,0
|
| 270 |
+
1248.4533976159598,0
|
| 271 |
+
1095.8814949843302,0
|
| 272 |
+
885.6591402728841,0
|
| 273 |
+
738.035656007224,0
|
| 274 |
+
547.2302728421109,0
|
| 275 |
+
490.671340893112,0
|
| 276 |
+
468.525809247731,0
|
| 277 |
+
534.130830469149,0
|
| 278 |
+
727.6294862941361,0
|
| 279 |
+
886.976625184867,0
|
| 280 |
+
1019.09591409818,0
|
| 281 |
+
1029.17924528058,0
|
| 282 |
+
938.407010845094,0
|
| 283 |
+
766.54647159659,0
|
| 284 |
+
602.16389592847,0
|
| 285 |
+
407.98414338695,0
|
| 286 |
+
299.95504109181,0
|
| 287 |
+
265.121652529649,0
|
| 288 |
+
389.005463400122,0
|
| 289 |
+
522.915777394844,0
|
| 290 |
+
734.5494985506571,0
|
| 291 |
+
1043.1227452686,0
|
| 292 |
+
1039.38556098771,0
|
| 293 |
+
1133.33482251116,0
|
| 294 |
+
1173.51998356541,0
|
| 295 |
+
1072.06333313612,0
|
| 296 |
+
917.166570370295,0
|
| 297 |
+
744.35077397158,0
|
| 298 |
+
736.563822811395,0
|
| 299 |
+
576.415334064176,0
|
| 300 |
+
600.179072018099,0
|
| 301 |
+
691.881433556006,0
|
| 302 |
+
771.087821359525,0
|
| 303 |
+
898.408984934503,0
|
| 304 |
+
1001.92779584997,0
|
| 305 |
+
1083.04255122087,0
|
| 306 |
+
987.8473742488452,0
|
| 307 |
+
755.096812943875,0
|
| 308 |
+
644.012677626522,0
|
| 309 |
+
483.746634530395,0
|
| 310 |
+
377.305459802768,0
|
| 311 |
+
344.813446459589,0
|
| 312 |
+
467.481028163216,0
|
| 313 |
+
655.422378720814,0
|
| 314 |
+
843.4101677742681,0
|
| 315 |
+
1096.21321957213,0
|
| 316 |
+
1289.36897428547,0
|
| 317 |
+
1410.45643358873,0
|
| 318 |
+
1329.52775977257,0
|
| 319 |
+
1227.56423919339,0
|
| 320 |
+
1069.18892616449,0
|
| 321 |
+
800.755293759977,0
|
| 322 |
+
734.893544275338,0
|
| 323 |
+
657.8856887415619,0
|
| 324 |
+
719.4346369961951,0
|
| 325 |
+
810.106682332916,0
|
| 326 |
+
899.5867631817371,0
|
| 327 |
+
1157.04895190508,0
|
| 328 |
+
1137.97105806047,0
|
| 329 |
+
1195.78280875293,0
|
| 330 |
+
1089.57239317955,0
|
| 331 |
+
822.0227915260319,0
|
| 332 |
+
843.5900925256099,0
|
| 333 |
+
603.195368427648,0
|
| 334 |
+
590.4828611658529,0
|
| 335 |
+
504.244294213333,0
|
| 336 |
+
689.203087608678,0
|
| 337 |
+
770.841851892914,0
|
| 338 |
+
932.763093178187,0
|
| 339 |
+
1285.55791242965,0
|
| 340 |
+
1459.70924935522,0
|
| 341 |
+
1492.74791566573,0
|
| 342 |
+
1520.5592072365305,0
|
| 343 |
+
1413.63694662493,0
|
| 344 |
+
1341.20481047478,0
|
| 345 |
+
973.116350720138,0
|
| 346 |
+
916.063886667842,0
|
| 347 |
+
804.3098238966071,0
|
| 348 |
+
831.821505363429,0
|
| 349 |
+
955.993862776457,0
|
| 350 |
+
1148.84962336507,0
|
| 351 |
+
1142.74711444195,0
|
| 352 |
+
1361.76316989968,0
|
| 353 |
+
1331.8030984952302,0
|
| 354 |
+
1294.88423735235,0
|
| 355 |
+
1158.01215443615,0
|
| 356 |
+
961.520101156527,0
|
| 357 |
+
808.5907055898571,0
|
| 358 |
+
747.8174237465539,0
|
| 359 |
+
725.767911806126,0
|
| 360 |
+
739.8976793768679,0
|
| 361 |
+
958.476708690012,0
|
| 362 |
+
1213.04587590741,0
|
| 363 |
+
1344.40308991724,0
|
| 364 |
+
1663.25436727369,0
|
| 365 |
+
1663.70416458094,0
|
| 366 |
+
1671.32927601679,0
|
| 367 |
+
1538.98851788746,0
|
| 368 |
+
1440.14699062641,0
|
| 369 |
+
1265.53348479814,0
|
| 370 |
+
1023.87716661826,0
|
| 371 |
+
984.419713108131,0
|
| 372 |
+
1077.38420078108,0
|
| 373 |
+
1087.16329329994,0
|
| 374 |
+
1247.67324576211,0
|
| 375 |
+
1410.49132730574,0
|
| 376 |
+
1382.2326631575102,0
|
| 377 |
+
1516.62005544642,0
|
| 378 |
+
1383.04506888898,0
|
| 379 |
+
1315.67914702137,0
|
| 380 |
+
1071.3876833806098,0
|
| 381 |
+
868.046866323248,0
|
| 382 |
+
778.615940652715,0
|
| 383 |
+
767.890333858069,0
|
| 384 |
+
780.660676459821,0
|
| 385 |
+
1097.75053309465,0
|
| 386 |
+
1205.00762969423,0
|
| 387 |
+
1519.17768702181,0
|
| 388 |
+
1665.57135212939,0
|
| 389 |
+
1734.5416338434195,0
|
| 390 |
+
1639.98255683742,0
|
| 391 |
+
1572.39056364703,0
|
| 392 |
+
1456.05140292617,0
|
| 393 |
+
1229.07089881313,0
|
| 394 |
+
1088.95748379666,0
|
| 395 |
+
1112.2563207054,0
|
| 396 |
+
1037.50114573661,0
|
| 397 |
+
1100.99959664311,0
|
| 398 |
+
1286.60087999374,0
|
| 399 |
+
1459.2423010518698,0
|
| 400 |
+
1520.49339359586,0
|
| 401 |
+
1450.22859719155,0
|
| 402 |
+
1454.56332239185,0
|
| 403 |
+
1240.59658274101,0
|
| 404 |
+
1084.3740523231,0
|
| 405 |
+
988.938340567211,0
|
| 406 |
+
871.0754050555141,0
|
| 407 |
+
859.985075805786,0
|
| 408 |
+
876.9131226139141,0
|
| 409 |
+
1106.69825498547,0
|
| 410 |
+
1307.6233285029302,0
|
| 411 |
+
1478.4913169111098,0
|
| 412 |
+
1649.7732102143302,0
|
| 413 |
+
1741.4278125591502,0
|
| 414 |
+
1741.90550612271,0
|
| 415 |
+
1593.45655677813,0
|
| 416 |
+
1419.5902253914098,0
|
| 417 |
+
1298.57000705593,0
|
| 418 |
+
1119.52184010763,0
|
| 419 |
+
1002.15275011595,0
|
| 420 |
+
973.5738467969612,0
|
| 421 |
+
1108.4835529193,0
|
| 422 |
+
1225.5314372866,0
|
| 423 |
+
1423.57080696801,0
|
| 424 |
+
1553.7303208342098,0
|
| 425 |
+
1466.25706276424,0
|
| 426 |
+
1394.0185105254998,0
|
| 427 |
+
1321.43865470929,0
|
| 428 |
+
1083.26914705819,0
|
| 429 |
+
936.948923921172,0
|
| 430 |
+
785.623831302809,0
|
| 431 |
+
755.894436611282,0
|
| 432 |
+
848.918740953177,0
|
| 433 |
+
1065.22096242629,0
|
| 434 |
+
1254.42558182121,0
|
| 435 |
+
1482.01559243755,0
|
| 436 |
+
1634.85793234556,0
|
| 437 |
+
1643.38454909949,0
|
| 438 |
+
1690.6986044274202,0
|
| 439 |
+
1562.47246362711,0
|
| 440 |
+
1398.43832279427,0
|
| 441 |
+
1176.47632758462,0
|
| 442 |
+
1075.0295712534,0
|
| 443 |
+
1008.52908478811,0
|
| 444 |
+
1017.31274721465,0
|
| 445 |
+
1152.32264526433,0
|
| 446 |
+
1219.56421398243,0
|
| 447 |
+
1383.9986994338,0
|
| 448 |
+
1407.06622801466,0
|
| 449 |
+
1415.6385485312198,0
|
| 450 |
+
1453.12982870516,0
|
| 451 |
+
1247.6255784103998,0
|
| 452 |
+
1094.93875154745,0
|
| 453 |
+
928.611512435143,0
|
| 454 |
+
763.580007538024,0
|
| 455 |
+
832.390394989904,0
|
| 456 |
+
863.712073380573,0
|
| 457 |
+
980.970712243032,0
|
| 458 |
+
1256.99316078375,0
|
| 459 |
+
1434.20117497302,0
|
| 460 |
+
1557.2623026034305,0
|
| 461 |
+
1670.1403654636902,0
|
| 462 |
+
1670.6669156134,0
|
| 463 |
+
1619.7641178476802,0
|
| 464 |
+
1412.38404398802,0
|
| 465 |
+
1258.03307558685,0
|
| 466 |
+
1108.45761448913,0
|
| 467 |
+
1076.91984647597,0
|
| 468 |
+
1114.09081596444,0
|
| 469 |
+
1111.7332050774,0
|
| 470 |
+
1245.05622573784,0
|
| 471 |
+
1454.30844164129,0
|
| 472 |
+
1453.4304543260198,0
|
| 473 |
+
1502.91012454669,0
|
| 474 |
+
1496.43154957118,0
|
| 475 |
+
1326.46372063423,0
|
| 476 |
+
1118.71714780568,0
|
| 477 |
+
1034.2642141042,0
|
| 478 |
+
869.9439554915781,0
|
| 479 |
+
883.0384657430161,0
|
| 480 |
+
1005.43427430693,0
|
| 481 |
+
1060.59742585944,0
|
| 482 |
+
1343.98967033705,0
|
| 483 |
+
1579.69092626337,0
|
| 484 |
+
1797.9868038150198,0
|
| 485 |
+
1780.34371959565,0
|
| 486 |
+
1808.56427932768,0
|
| 487 |
+
1694.85285178197,0
|
| 488 |
+
1570.12478628447,0
|
| 489 |
+
1405.32875930979,0
|
| 490 |
+
1296.54581259813,0
|
| 491 |
+
1204.50881043988,0
|
| 492 |
+
1256.22254158635,0
|
| 493 |
+
1342.19407026331,0
|
| 494 |
+
1432.58489669359,0
|
| 495 |
+
1530.2749034007502,0
|
| 496 |
+
1680.5925229511902,0
|
| 497 |
+
1659.0966919000198,0
|
| 498 |
+
1650.88102248984,0
|
| 499 |
+
1474.5179560537,0
|
| 500 |
+
1313.20002197521,0
|
| 501 |
+
1108.09286626494,0
|
| 502 |
+
1009.2043225429302,0
|
| 503 |
+
1103.09477835872,0
|
| 504 |
+
1064.15057566225,0
|
| 505 |
+
1304.76863847553,0
|
| 506 |
+
1496.19219158661,0
|
| 507 |
+
1743.48966700763,0
|
| 508 |
+
1836.78685577698,0
|
| 509 |
+
1987.95789047059,0
|
| 510 |
+
1975.16058216784,0
|
| 511 |
+
1944.78190961568,0
|
| 512 |
+
1802.7309088698105,0
|
| 513 |
+
1488.55626614835,0
|
| 514 |
+
1454.64381793538,0
|
| 515 |
+
1389.96033565853,0
|
| 516 |
+
1395.26692094288,0
|
| 517 |
+
1490.66251410738,0
|
| 518 |
+
1601.40459401383,0
|
| 519 |
+
1760.62607027675,0
|
| 520 |
+
1811.30982134175,0
|
| 521 |
+
1912.54612556219,0
|
| 522 |
+
1796.5178462228,0
|
| 523 |
+
1634.81208276324,0
|
| 524 |
+
1458.35559308922,0
|
| 525 |
+
1344.98930519182,0
|
| 526 |
+
1278.6747410656,0
|
| 527 |
+
1174.30000451146,0
|
| 528 |
+
1309.38286843178,0
|
| 529 |
+
1531.3270175461998,0
|
| 530 |
+
1647.7778861440302,0
|
| 531 |
+
1854.71030562432,0
|
| 532 |
+
2057.69155125941,0
|
| 533 |
+
2205.26287113512,0
|
| 534 |
+
2233.21615042738,0
|
| 535 |
+
2103.65790591758,0
|
| 536 |
+
1827.38254902059,0
|
| 537 |
+
1657.4586682619,0
|
| 538 |
+
1506.6101362974898,0
|
| 539 |
+
1565.4225591041502,0
|
| 540 |
+
1413.97122400126,0
|
| 541 |
+
1578.31063252558,0
|
| 542 |
+
1809.67953566756,0
|
| 543 |
+
1850.29010087823,0
|
| 544 |
+
1945.3564363122305,0
|
| 545 |
+
2023.97602282035,0
|
| 546 |
+
1963.5101305204105,0
|
| 547 |
+
1726.68017468772,0
|
| 548 |
+
1648.41800372746,0
|
| 549 |
+
1399.16620141539,0
|
| 550 |
+
1371.61491627458,0
|
| 551 |
+
1314.00103803829,0
|
| 552 |
+
1341.79430089447,0
|
| 553 |
+
1550.22752768776,0
|
| 554 |
+
1769.54345896909,0
|
| 555 |
+
1972.07784829953,0
|
| 556 |
+
2236.9228825101,0
|
| 557 |
+
2198.69003030413,0
|
| 558 |
+
2218.62934401927,0
|
| 559 |
+
2200.27237416703,0
|
| 560 |
+
1993.76644967446,0
|
| 561 |
+
1822.30473829663,0
|
| 562 |
+
1610.60572439464,0
|
| 563 |
+
1474.6240950923002,0
|
| 564 |
+
1548.32524539547,0
|
| 565 |
+
1740.97459522158,0
|
| 566 |
+
1849.73497609844,0
|
| 567 |
+
2080.60182977749,0
|
| 568 |
+
2153.64331892634,0
|
| 569 |
+
2201.78065309238,0
|
| 570 |
+
2073.6829084061897,0
|
| 571 |
+
1870.88504950282,0
|
| 572 |
+
1544.7181818345098,0
|
| 573 |
+
1431.15423251807,0
|
| 574 |
+
1052.0966003779,0
|
| 575 |
+
1139.1250081098,0
|
| 576 |
+
1232.42041717998,0
|
| 577 |
+
1500.75852253203,0
|
| 578 |
+
1803.80462353164,0
|
| 579 |
+
2061.2711189856,0
|
| 580 |
+
2362.38407292625,0
|
| 581 |
+
2553.80302999058,0
|
| 582 |
+
2447.24372244343,0
|
| 583 |
+
2322.8217422083803,0
|
| 584 |
+
2101.15654788493,0
|
| 585 |
+
1814.20746413476,0
|
| 586 |
+
1418.3582905635,0
|
| 587 |
+
1423.08357229651,0
|
| 588 |
+
1590.96896310841,0
|
| 589 |
+
1504.04209726833,0
|
| 590 |
+
1672.95794344702,0
|
| 591 |
+
1976.46973793839,0
|
| 592 |
+
2152.41608425522,0
|
| 593 |
+
2121.3839838002104,0
|
| 594 |
+
1878.57956612992,0
|
| 595 |
+
1791.81881183154,0
|
| 596 |
+
1430.201288531,0
|
| 597 |
+
1238.9949244408,0
|
| 598 |
+
1051.66555818235,0
|
| 599 |
+
997.493328687984,0
|
| 600 |
+
1157.46644883238,0
|
| 601 |
+
1466.77027401925,0
|
| 602 |
+
1846.80563905943,0
|
| 603 |
+
1971.6693334541696,0
|
| 604 |
+
2398.2214061092104,0
|
| 605 |
+
2490.90541598686,0
|
| 606 |
+
2411.588073248,0
|
| 607 |
+
2209.79286291778,0
|
| 608 |
+
1890.2153983654896,0
|
| 609 |
+
1700.46160110727,0
|
| 610 |
+
1466.5317318276502,0
|
| 611 |
+
1374.77835277759,0
|
| 612 |
+
1437.1081595098,0
|
| 613 |
+
1456.15722598586,0
|
| 614 |
+
1641.40248349981,0
|
| 615 |
+
1866.07769995879,0
|
| 616 |
+
1954.19883475963,0
|
| 617 |
+
2031.4874546587,0
|
| 618 |
+
1895.20989909836,0
|
| 619 |
+
1769.0425782871102,0
|
| 620 |
+
1461.8811445709198,0
|
| 621 |
+
1209.02621911007,0
|
| 622 |
+
1013.64477677699,0
|
| 623 |
+
1132.39703562188,0
|
| 624 |
+
1154.10738298571,0
|
| 625 |
+
1340.44647222831,0
|
| 626 |
+
1653.56993330443,0
|
| 627 |
+
2053.6917976121804,0
|
| 628 |
+
2289.74310656483,0
|
| 629 |
+
2382.81548576672,0
|
| 630 |
+
2406.5753806255,0
|
| 631 |
+
2318.20160938034,0
|
| 632 |
+
1852.7119500332,0
|
| 633 |
+
1679.68742769306,0
|
| 634 |
+
1607.3246768707002,0
|
| 635 |
+
1412.50115357016,0
|
| 636 |
+
1493.0082530278305,0
|
| 637 |
+
1562.86612971969,0
|
| 638 |
+
1663.48660459759,0
|
| 639 |
+
1836.1814220494896,0
|
| 640 |
+
2035.91160881898,0
|
| 641 |
+
2027.0751508348496,0
|
| 642 |
+
1963.57097498882,0
|
| 643 |
+
1795.88288144094,0
|
| 644 |
+
1541.37895286678,0
|
| 645 |
+
1248.85962696055,0
|
| 646 |
+
1162.15221163491,0
|
| 647 |
+
1133.42943211003,0
|
| 648 |
+
1207.8959660589,0
|
| 649 |
+
1515.63460397316,0
|
| 650 |
+
1748.67853394577,0
|
| 651 |
+
2099.57750160621,0
|
| 652 |
+
2364.42767622882,0
|
| 653 |
+
2550.57979949858,0
|
| 654 |
+
2522.5561216205,0
|
| 655 |
+
2243.4503765133,0
|
| 656 |
+
2196.59689647906,0
|
| 657 |
+
1847.36138675216,0
|
| 658 |
+
1688.9279051787,0
|
| 659 |
+
1681.4341270548498,0
|
| 660 |
+
1515.77708051691,0
|
| 661 |
+
1758.11172300646,0
|
| 662 |
+
1831.1664871133896,0
|
| 663 |
+
2158.1268370962,0
|
| 664 |
+
2312.5768447966,0
|
| 665 |
+
2396.72268532546,0
|
| 666 |
+
2207.90546377642,0
|
| 667 |
+
2092.36923842305,0
|
| 668 |
+
1756.3516465772598,0
|
| 669 |
+
1531.4141119980302,0
|
| 670 |
+
1297.2146071377902,0
|
| 671 |
+
1331.24970885871,0
|
| 672 |
+
1397.51950176129,0
|
| 673 |
+
1835.6267166600303,0
|
| 674 |
+
1992.88449071686,0
|
| 675 |
+
2418.7435322396,0
|
| 676 |
+
2632.06253715397,0
|
| 677 |
+
2621.38325627018,0
|
| 678 |
+
2835.006582282,0
|
| 679 |
+
2597.1216046404897,0
|
| 680 |
+
2149.44272125569,0
|
| 681 |
+
2108.04356378732,0
|
| 682 |
+
1947.0094208604,0
|
| 683 |
+
1877.20522299073,0
|
| 684 |
+
1737.32402012691,0
|
| 685 |
+
1995.03458393871,0
|
| 686 |
+
2121.4550403888697,0
|
| 687 |
+
2332.8111892198103,0
|
| 688 |
+
2452.52411590408,0
|
| 689 |
+
2461.73422277185,0
|
| 690 |
+
2452.8321443671102,0
|
| 691 |
+
2220.56440839477,0
|
| 692 |
+
1953.5168009361605,0
|
| 693 |
+
1650.0261786293695,0
|
| 694 |
+
1604.50942777206,0
|
| 695 |
+
1478.03072853096,0
|
| 696 |
+
1656.82199453361,0
|
| 697 |
+
1833.5079843208,0
|
| 698 |
+
2199.87078423962,0
|
| 699 |
+
2585.4967601973103,0
|
| 700 |
+
2849.98124949779,0
|
| 701 |
+
2932.49853033034,0
|
| 702 |
+
2904.31030300682,0
|
| 703 |
+
2766.68576174146,0
|
| 704 |
+
2591.91039387583,0
|
| 705 |
+
2371.86332187915,0
|
| 706 |
+
2006.1857242969,0
|
| 707 |
+
1945.97347301036,0
|
| 708 |
+
2013.50902293728,0
|
| 709 |
+
2156.21068690945,0
|
| 710 |
+
2292.39481279294,0
|
| 711 |
+
2487.82448360065,0
|
| 712 |
+
2673.67841098239,0
|
| 713 |
+
2653.8053740037303,0
|
| 714 |
+
2537.66351460189,0
|
| 715 |
+
2351.94367908064,0
|
| 716 |
+
2182.47209508993,0
|
| 717 |
+
1874.4054592533,0
|
| 718 |
+
1734.05633709193,0
|
| 719 |
+
1563.30466115039,0
|
| 720 |
+
1775.4991542196,0
|
| 721 |
+
1990.64514523034,0
|
| 722 |
+
2389.84562381385,0
|
| 723 |
+
2671.82837187356,0
|
| 724 |
+
2967.8894158033504,0
|
| 725 |
+
3063.2898062618,0
|
| 726 |
+
2934.8592855985,0
|
| 727 |
+
2845.2012151535805,0
|
| 728 |
+
2669.9504554561604,0
|
| 729 |
+
2308.04202976691,0
|
| 730 |
+
2064.17882045532,0
|
| 731 |
+
2034.04970840114,0
|
| 732 |
+
1971.70155359349,0
|
| 733 |
+
2165.53887226526,0
|
| 734 |
+
2194.22157867288,0
|
| 735 |
+
2610.3684747706698,0
|
| 736 |
+
2673.39662831457,0
|
| 737 |
+
2650.2887912273,0
|
| 738 |
+
2591.0274117664103,0
|
| 739 |
+
2382.7440182933,0
|
| 740 |
+
2102.46520251038,0
|
| 741 |
+
1830.36507119852,0
|
| 742 |
+
1608.7926920615398,0
|
| 743 |
+
1646.30452060484,0
|
| 744 |
+
1621.7767032422305,0
|
| 745 |
+
1970.45830290968,0
|
| 746 |
+
2452.2861756186803,0
|
| 747 |
+
2606.14387181227,0
|
| 748 |
+
2878.4644451950603,0
|
| 749 |
+
2921.89202544011,0
|
| 750 |
+
3006.6134796931897,0
|
| 751 |
+
2785.10637704992,0
|
| 752 |
+
2536.44309394952,0
|
| 753 |
+
2269.47359166181,0
|
| 754 |
+
2070.00138373121,0
|
| 755 |
+
1972.48844623286,0
|
| 756 |
+
1869.83745819655,0
|
| 757 |
+
3638.99031745037,1
|
| 758 |
+
2404.47676720424,0
|
| 759 |
+
2467.9032858569103,0
|
| 760 |
+
2512.82462387129,0
|
| 761 |
+
2466.46430191658,0
|
| 762 |
+
2498.70780606091,0
|
| 763 |
+
2296.70209509406,0
|
| 764 |
+
2019.2561200856896,0
|
| 765 |
+
1743.88081507338,0
|
| 766 |
+
1633.82526408912,0
|
| 767 |
+
1699.00027777884,0
|
| 768 |
+
1681.63286480096,0
|
| 769 |
+
2015.4206335223605,0
|
| 770 |
+
2177.82884307124,0
|
| 771 |
+
2431.9551297547,0
|
| 772 |
+
2818.6287927858,0
|
| 773 |
+
2906.54701496927,0
|
| 774 |
+
2910.5732881030394,0
|
| 775 |
+
2551.89550389962,0
|
| 776 |
+
2407.88770837209,0
|
| 777 |
+
2308.6853441096696,0
|
| 778 |
+
1976.3500759832104,0
|
| 779 |
+
1873.2118872812805,0
|
| 780 |
+
1810.8188926486896,0
|
| 781 |
+
1846.08237400392,0
|
| 782 |
+
2166.2188036287,0
|
| 783 |
+
2423.73189676499,0
|
| 784 |
+
2603.20517076941,0
|
| 785 |
+
2616.10527357589,0
|
| 786 |
+
2421.38672428796,0
|
| 787 |
+
2186.22764820702,0
|
| 788 |
+
2022.77941520262,0
|
| 789 |
+
1757.77204212056,0
|
| 790 |
+
1577.8991032709,0
|
| 791 |
+
1450.47027095752,0
|
| 792 |
+
1620.31223189049,0
|
| 793 |
+
1901.52999549827,0
|
| 794 |
+
2114.76889805003,0
|
| 795 |
+
2482.73426962424,0
|
| 796 |
+
2763.29673079151,0
|
| 797 |
+
2898.4306972144104,0
|
| 798 |
+
2847.88392539935,0
|
| 799 |
+
2691.98050564221,0
|
| 800 |
+
2517.68922202504,0
|
| 801 |
+
2099.35744080091,0
|
| 802 |
+
2016.33207457808,0
|
| 803 |
+
1849.4925685916696,0
|
| 804 |
+
1881.1444923674696,0
|
| 805 |
+
2122.5466564532503,0
|
| 806 |
+
2169.13328596762,0
|
| 807 |
+
2488.4997530114897,0
|
| 808 |
+
2479.74207023054,0
|
| 809 |
+
2609.60659426582,0
|
| 810 |
+
2478.47629687716,0
|
| 811 |
+
2288.89499358382,0
|
| 812 |
+
2099.57357924814,0
|
| 813 |
+
1912.59818267815,0
|
| 814 |
+
1671.92969658456,0
|
| 815 |
+
1523.62699920136,0
|
| 816 |
+
1645.72414067904,0
|
| 817 |
+
1968.3605059198603,0
|
| 818 |
+
2341.12939098704,0
|
| 819 |
+
2584.6176051791,0
|
| 820 |
+
2896.8422815684003,0
|
| 821 |
+
3035.79266331998,0
|
| 822 |
+
3058.627986528269,0
|
| 823 |
+
2755.89756256211,0
|
| 824 |
+
2587.3153980229,0
|
| 825 |
+
2332.60944359731,0
|
| 826 |
+
2141.66147054052,0
|
| 827 |
+
2030.0799569913104,0
|
| 828 |
+
2046.21759285815,0
|
| 829 |
+
2161.3515626672897,0
|
| 830 |
+
2525.1017492229603,0
|
| 831 |
+
2555.51148834004,0
|
| 832 |
+
2792.71770319314,0
|
| 833 |
+
2768.49397076282,0
|
| 834 |
+
2671.98990843304,0
|
| 835 |
+
2525.50627672564,0
|
| 836 |
+
2250.14239571579,0
|
| 837 |
+
2016.9812616550896,0
|
| 838 |
+
1791.7523348184802,0
|
| 839 |
+
1903.293412316389,0
|
| 840 |
+
1962.53956893654,0
|
| 841 |
+
2289.31680642923,0
|
| 842 |
+
2477.16218922687,0
|
| 843 |
+
2926.9126312874,0
|
| 844 |
+
3076.88500570016,0
|
| 845 |
+
3251.5325832480103,0
|
| 846 |
+
3215.8145105946,0
|
| 847 |
+
3143.94354712937,0
|
| 848 |
+
2855.91326150839,0
|
| 849 |
+
2459.73280068951,0
|
| 850 |
+
2365.5925637107603,0
|
| 851 |
+
2207.40935079876,0
|
| 852 |
+
3870.11802383636,1
|
| 853 |
+
2397.29378272823,0
|
| 854 |
+
2595.85948467427,0
|
| 855 |
+
2832.39450854688,0
|
| 856 |
+
1421.32274340194,1
|
| 857 |
+
3047.2758322045,0
|
| 858 |
+
2891.3872966517897,0
|
| 859 |
+
2702.69192570609,0
|
| 860 |
+
2484.73239158288,0
|
| 861 |
+
2200.04571236134,0
|
| 862 |
+
2108.99971406412,0
|
| 863 |
+
1910.55071314482,0
|
| 864 |
+
2196.18157862779,0
|
| 865 |
+
2420.98419436752,0
|
| 866 |
+
2815.03173421599,0
|
| 867 |
+
3016.82897769392,0
|
| 868 |
+
3368.8913946085604,0
|
| 869 |
+
3467.76167721092,0
|
| 870 |
+
3394.51257383344,0
|
| 871 |
+
3295.99899221078,0
|
| 872 |
+
2998.353988898089,0
|
| 873 |
+
2826.91553623634,0
|
| 874 |
+
2556.06155476169,0
|
| 875 |
+
2449.80707524126,0
|
| 876 |
+
2505.44773973183,0
|
| 877 |
+
2605.37538564022,0
|
| 878 |
+
2860.9553885733503,0
|
| 879 |
+
3136.04688349394,0
|
| 880 |
+
3167.0271868025297,0
|
| 881 |
+
3159.44305770671,0
|
| 882 |
+
3005.29842040194,0
|
| 883 |
+
2911.43625860021,0
|
| 884 |
+
2495.63510161067,0
|
| 885 |
+
2457.1819458235,0
|
| 886 |
+
2043.7851938121896,0
|
| 887 |
+
2091.29578530436,0
|
| 888 |
+
2384.7998868300697,0
|
| 889 |
+
2497.46587786139,0
|
| 890 |
+
2793.5799662596,0
|
| 891 |
+
3098.00263258864,0
|
| 892 |
+
3486.76073363265,0
|
| 893 |
+
3617.18590961236,0
|
| 894 |
+
3476.2222639023103,0
|
| 895 |
+
3382.7824732184804,0
|
| 896 |
+
3190.79193555058,0
|
| 897 |
+
2782.7420199988696,0
|
| 898 |
+
2606.50661792312,0
|
| 899 |
+
2537.0119732671697,0
|
| 900 |
+
2563.03603791936,0
|
| 901 |
+
2667.57509184827,0
|
| 902 |
+
2690.7235158041103,0
|
| 903 |
+
3126.95843338465,0
|
| 904 |
+
3260.5243158585304,0
|
| 905 |
+
3324.84521250254,0
|
| 906 |
+
2986.91647946768,0
|
| 907 |
+
2877.3833391605103,0
|
| 908 |
+
2520.99231022596,0
|
| 909 |
+
2339.16131410575,0
|
| 910 |
+
2211.38376414714,0
|
| 911 |
+
2208.86636339712,0
|
| 912 |
+
2214.1935021531,0
|
| 913 |
+
2425.01115758284,0
|
| 914 |
+
2766.1025002528304,0
|
| 915 |
+
3088.60319327948,0
|
| 916 |
+
3286.66998581073,0
|
| 917 |
+
3456.77601593422,0
|
| 918 |
+
3461.38176765648,0
|
| 919 |
+
3184.1650423792894,0
|
| 920 |
+
3009.95594166096,0
|
| 921 |
+
2761.3697078995697,0
|
| 922 |
+
2550.3700691829104,0
|
| 923 |
+
2458.279266211,0
|
| 924 |
+
2488.51379337717,0
|
| 925 |
+
2561.60428591456,0
|
| 926 |
+
2737.37341400889,0
|
| 927 |
+
3000.2190027700103,0
|
| 928 |
+
3115.45007838117,0
|
| 929 |
+
3119.5447588411303,0
|
| 930 |
+
3017.5012849134005,0
|
| 931 |
+
2884.9643260248804,0
|
| 932 |
+
2520.3470796432503,0
|
| 933 |
+
2240.5086280552696,0
|
| 934 |
+
1998.1652058136604,0
|
| 935 |
+
1990.2748995523496,0
|
| 936 |
+
2163.4675956003302,0
|
| 937 |
+
2438.56599138257,0
|
| 938 |
+
2735.97971407153,0
|
| 939 |
+
2988.08739364836,0
|
| 940 |
+
3376.42674147232,0
|
| 941 |
+
3403.5368750360103,0
|
| 942 |
+
3394.6956041947,0
|
| 943 |
+
3202.75784453906,0
|
| 944 |
+
2977.28874468302,0
|
| 945 |
+
2684.2934898033604,0
|
| 946 |
+
2453.30850855437,0
|
| 947 |
+
2477.17730619762,0
|
| 948 |
+
2377.86112254383,0
|
| 949 |
+
2545.54669417999,0
|
| 950 |
+
2678.9798943488,0
|
| 951 |
+
2878.34990566266,0
|
| 952 |
+
3067.8706066038,0
|
| 953 |
+
2990.81913442148,0
|
| 954 |
+
3079.10320219466,0
|
| 955 |
+
2663.91257457448,0
|
| 956 |
+
2514.02315020854,0
|
| 957 |
+
2226.45647984918,0
|
| 958 |
+
2116.45500995257,0
|
| 959 |
+
1858.37102638983,0
|
| 960 |
+
2092.40204578757,0
|
| 961 |
+
2336.1827138323897,0
|
| 962 |
+
2702.18923100399,0
|
| 963 |
+
2857.1085602464696,0
|
| 964 |
+
3208.3871768931704,0
|
| 965 |
+
3302.77813477796,0
|
| 966 |
+
3307.8899815812,0
|
| 967 |
+
3303.40955794764,0
|
| 968 |
+
2999.23065472769,0
|
| 969 |
+
2748.40385042081,0
|
| 970 |
+
2531.8992483491297,0
|
| 971 |
+
2351.53596382242,0
|
| 972 |
+
2402.0919098529503,0
|
| 973 |
+
2493.22862914635,0
|
| 974 |
+
2708.89224370235,0
|
| 975 |
+
2993.9057475334603,0
|
| 976 |
+
3064.2540385185603,0
|
| 977 |
+
3119.84347617581,0
|
| 978 |
+
2934.51708478834,0
|
| 979 |
+
2852.8260926495,0
|
| 980 |
+
2458.9321023561497,0
|
| 981 |
+
2259.39808469867,0
|
| 982 |
+
2183.15136819044,0
|
| 983 |
+
2232.77375180564,0
|
| 984 |
+
2211.3907788106,0
|
| 985 |
+
2468.0863493468105,0
|
| 986 |
+
2896.3907127515504,0
|
| 987 |
+
3236.88738208284,0
|
| 988 |
+
3437.4623552180296,0
|
| 989 |
+
3581.2938781222206,0
|
| 990 |
+
3399.41925167569,0
|
| 991 |
+
3259.7978709386102,0
|
| 992 |
+
3165.3350097669,0
|
| 993 |
+
2921.0672456266902,0
|
| 994 |
+
2598.45199846915,0
|
| 995 |
+
2629.89421311839,0
|
| 996 |
+
2557.1985788608604,0
|
| 997 |
+
2774.92786472286,0
|
| 998 |
+
2956.06525175398,0
|
| 999 |
+
3118.81130689073,0
|
| 1000 |
+
3281.4586646084304,0
|
| 1001 |
+
3210.2341386041303,0
|
| 1002 |
+
3257.75771266859,0
|
| 1003 |
+
2983.22034948073,0
|
| 1004 |
+
2797.27520232884,0
|
| 1005 |
+
2481.29034166242,0
|
| 1006 |
+
2228.5462379292603,0
|
| 1007 |
+
2249.87317253662,0
|
| 1008 |
+
2458.89165212441,0
|
| 1009 |
+
2728.95870579885,0
|
| 1010 |
+
3006.47031278044,0
|
| 1011 |
+
3254.1345589131897,0
|
| 1012 |
+
3549.4469120584704,0
|
| 1013 |
+
3733.3897263913705,0
|
| 1014 |
+
3769.422671296261,0
|
| 1015 |
+
3591.9721322605296,0
|
| 1016 |
+
3209.36142285953,0
|
| 1017 |
+
3178.61421685896,0
|
| 1018 |
+
2834.2278123907104,0
|
| 1019 |
+
2826.65352848009,0
|
| 1020 |
+
2687.06772561932,0
|
| 1021 |
+
2960.09927797411,0
|
| 1022 |
+
3188.81970745646,0
|
| 1023 |
+
3422.7151344900203,0
|
| 1024 |
+
3400.91152500914,0
|
| 1025 |
+
3605.93367882423,0
|
| 1026 |
+
3377.7245175879902,0
|
| 1027 |
+
3180.35217313211,0
|
| 1028 |
+
2908.2428990994704,0
|
| 1029 |
+
2749.56330012539,0
|
| 1030 |
+
2511.540770084,0
|
| 1031 |
+
2464.455286915,0
|
| 1032 |
+
2683.78729746152,0
|
| 1033 |
+
2878.5460092897,0
|
| 1034 |
+
3182.4329890397,0
|
| 1035 |
+
3604.3197426221705,0
|
| 1036 |
+
3796.9343064717,0
|
| 1037 |
+
3811.6535485256095,0
|
| 1038 |
+
3857.750192222629,0
|
| 1039 |
+
3788.92783351156,0
|
| 1040 |
+
3582.79560707883,0
|
| 1041 |
+
3291.69583094883,0
|
| 1042 |
+
3033.58088106021,0
|
| 1043 |
+
2888.6450313356395,0
|
| 1044 |
+
2996.71761472578,0
|
| 1045 |
+
3236.72445994989,0
|
| 1046 |
+
3199.21144779633,0
|
| 1047 |
+
3595.93066152064,0
|
| 1048 |
+
3555.11765575139,0
|
| 1049 |
+
3625.32877425702,0
|
| 1050 |
+
3516.1440980007696,0
|
| 1051 |
+
3327.10025405987,0
|
| 1052 |
+
3122.89592887512,0
|
| 1053 |
+
2707.59843406746,0
|
| 1054 |
+
2680.60306897185,0
|
| 1055 |
+
2717.30758226873,0
|
| 1056 |
+
2790.24490683117,0
|
| 1057 |
+
3197.47696425618,0
|
| 1058 |
+
3356.39279193993,0
|
| 1059 |
+
3627.09783833046,0
|
| 1060 |
+
3948.90660218019,0
|
| 1061 |
+
4076.90380721394,0
|
| 1062 |
+
4057.37973199414,0
|
| 1063 |
+
3848.18892784159,0
|
| 1064 |
+
3656.9065293468702,0
|
| 1065 |
+
3376.8435324879497,0
|
| 1066 |
+
3178.58696595612,0
|
| 1067 |
+
3025.45794266815,0
|
| 1068 |
+
3066.0286430079304,0
|
| 1069 |
+
3233.2460866378497,0
|
| 1070 |
+
3348.1556123737,0
|
| 1071 |
+
3418.54218534675,0
|
| 1072 |
+
3644.5316370534497,0
|
| 1073 |
+
3698.7222223455,0
|
| 1074 |
+
3548.4784528236896,0
|
| 1075 |
+
3403.48586970299,0
|
| 1076 |
+
3135.42942692183,0
|
| 1077 |
+
2743.70919593092,0
|
| 1078 |
+
2709.9892515419897,0
|
| 1079 |
+
2714.74497967793,0
|
| 1080 |
+
2809.44372817273,0
|
| 1081 |
+
3023.19750054992,0
|
| 1082 |
+
3260.37202805716,0
|
| 1083 |
+
3663.2024542017,0
|
| 1084 |
+
3881.27993112005,0
|
| 1085 |
+
4103.44504494631,0
|
| 1086 |
+
4000.55778922954,0
|
| 1087 |
+
3680.7504277320704,0
|
| 1088 |
+
3580.147372070829,0
|
| 1089 |
+
3255.8164949607103,0
|
| 1090 |
+
3002.37474598466,0
|
| 1091 |
+
2871.42409569676,0
|
| 1092 |
+
2993.87939687318,0
|
| 1093 |
+
3119.4649912559603,0
|
| 1094 |
+
3356.3637172329304,0
|
| 1095 |
+
3369.8526981045698,0
|
| 1096 |
+
3636.62513853065,0
|
| 1097 |
+
3635.63073024606,0
|
| 1098 |
+
3389.9011833876098,0
|
| 1099 |
+
3328.35138830282,0
|
| 1100 |
+
2982.74853563041,0
|
| 1101 |
+
2795.36292025746,0
|
| 1102 |
+
2639.24375184702,0
|
| 1103 |
+
2551.77775890816,0
|
| 1104 |
+
2668.57597668124,0
|
| 1105 |
+
2965.1203820075298,0
|
| 1106 |
+
3274.9203991368395,0
|
| 1107 |
+
3515.73371003799,0
|
| 1108 |
+
3793.67717942366,0
|
| 1109 |
+
3924.92162837088,0
|
| 1110 |
+
3909.1124207150106,0
|
| 1111 |
+
3679.28511814054,0
|
| 1112 |
+
3535.49138051928,0
|
| 1113 |
+
3200.77112293901,0
|
| 1114 |
+
2988.9100463542304,0
|
| 1115 |
+
2909.51922427628,0
|
| 1116 |
+
2852.95949845003,0
|
| 1117 |
+
3004.19990630394,0
|
| 1118 |
+
3213.44839134078,0
|
| 1119 |
+
3406.19611039562,0
|
| 1120 |
+
3647.09525642188,0
|
| 1121 |
+
3461.9382809248805,0
|
| 1122 |
+
3490.84186517849,0
|
| 1123 |
+
3248.9920641856897,0
|
| 1124 |
+
2869.13296477359,0
|
| 1125 |
+
2623.45547505302,0
|
| 1126 |
+
2566.44075266733,0
|
| 1127 |
+
2456.83208712566,0
|
| 1128 |
+
2681.82362400195,0
|
| 1129 |
+
2927.7567096973803,0
|
| 1130 |
+
3302.55801010849,0
|
| 1131 |
+
3517.7659048709,0
|
| 1132 |
+
3764.40147258904,0
|
| 1133 |
+
3902.8427669093103,0
|
| 1134 |
+
3846.72844360698,0
|
| 1135 |
+
3750.35700562885,0
|
| 1136 |
+
3464.82677106788,0
|
| 1137 |
+
3180.6589854579497,0
|
| 1138 |
+
2946.39367273142,0
|
| 1139 |
+
2913.27680114342,0
|
| 1140 |
+
2871.30704645579,0
|
| 1141 |
+
3051.73833331015,0
|
| 1142 |
+
3242.36893965982,0
|
| 1143 |
+
3460.9564561154903,0
|
| 1144 |
+
3628.75773540464,0
|
| 1145 |
+
3614.59174846137,0
|
| 1146 |
+
3606.9795759107,0
|
| 1147 |
+
3267.2870622213395,0
|
| 1148 |
+
2964.4282337138898,0
|
| 1149 |
+
2797.34182972479,0
|
| 1150 |
+
2568.0224543299696,0
|
| 1151 |
+
2559.81215418847,0
|
| 1152 |
+
2726.89116577742,0
|
| 1153 |
+
3096.39549917504,0
|
| 1154 |
+
3401.13916142535,0
|
| 1155 |
+
3659.3780627932106,0
|
| 1156 |
+
3858.81812197906,0
|
| 1157 |
+
4017.6367341397295,0
|
| 1158 |
+
4046.9375611534497,0
|
| 1159 |
+
3783.35373904989,0
|
| 1160 |
+
3596.9272484267603,0
|
| 1161 |
+
3340.15366891013,0
|
| 1162 |
+
3078.8856896785805,0
|
| 1163 |
+
2913.1843324188503,0
|
| 1164 |
+
3031.86318373661,0
|
| 1165 |
+
3371.9929504441698,0
|
| 1166 |
+
3568.129720637829,0
|
| 1167 |
+
3688.22308519693,0
|
| 1168 |
+
3744.60633450769,0
|
| 1169 |
+
3768.1352337436206,0
|
| 1170 |
+
3669.56706472804,0
|
| 1171 |
+
3374.5418913169,0
|
| 1172 |
+
3275.91938201554,0
|
| 1173 |
+
2971.5410948025,0
|
| 1174 |
+
2850.52274312193,0
|
| 1175 |
+
2866.9112638846195,0
|
| 1176 |
+
3001.81359265831,0
|
| 1177 |
+
3122.5823365804804,0
|
| 1178 |
+
3592.51573464383,0
|
| 1179 |
+
3821.68516783473,0
|
| 1180 |
+
4076.3848201984297,0
|
| 1181 |
+
4203.826390053529,0
|
| 1182 |
+
4363.568339123271,0
|
| 1183 |
+
4071.89490471123,0
|
| 1184 |
+
3729.81574887196,0
|
| 1185 |
+
3643.2907759367104,0
|
| 1186 |
+
3524.1938784203003,0
|
| 1187 |
+
3247.79193496552,0
|
| 1188 |
+
3462.4188466872,0
|
| 1189 |
+
3483.68835626183,0
|
| 1190 |
+
3663.20185517188,0
|
| 1191 |
+
3964.08161930937,0
|
| 1192 |
+
3952.3822935554704,0
|
| 1193 |
+
4031.63658359665,0
|
| 1194 |
+
3932.199087119021,0
|
| 1195 |
+
3736.65361932556,0
|
| 1196 |
+
3401.2168351330297,0
|
| 1197 |
+
3071.45138817424,0
|
| 1198 |
+
3039.6910764604304,0
|
| 1199 |
+
3077.7668235166902,0
|
| 1200 |
+
3121.2772501783,0
|
| 1201 |
+
3400.32988125846,0
|
| 1202 |
+
3628.95512113999,0
|
| 1203 |
+
4112.09645106685,0
|
| 1204 |
+
4250.83652330927,0
|
| 1205 |
+
4493.62358066056,0
|
| 1206 |
+
4462.90010208275,0
|
| 1207 |
+
4287.23790846661,0
|
| 1208 |
+
4064.39193046915,0
|
| 1209 |
+
3693.6281772460497,0
|
| 1210 |
+
3564.8854043028496,0
|
| 1211 |
+
3401.0773505598804,0
|
| 1212 |
+
3496.6482664405103,0
|
| 1213 |
+
3622.6199007475,0
|
| 1214 |
+
3802.2911952231,0
|
| 1215 |
+
3904.1261845579,0
|
| 1216 |
+
4206.707287132,0
|
| 1217 |
+
4111.8670556938505,0
|
| 1218 |
+
4143.9801785030895,0
|
| 1219 |
+
3882.2582880868,0
|
| 1220 |
+
3573.45377961898,0
|
| 1221 |
+
3352.39803961198,0
|
| 1222 |
+
3128.34888327029,0
|
| 1223 |
+
3142.91214607459,0
|
| 1224 |
+
3325.70437869662,0
|
| 1225 |
+
3547.8894403738104,0
|
| 1226 |
+
3821.95478319414,0
|
| 1227 |
+
4031.7462249202704,0
|
| 1228 |
+
4417.2326622413,0
|
| 1229 |
+
4522.951368750871,0
|
| 1230 |
+
4427.826450472629,0
|
| 1231 |
+
4290.66671990577,0
|
| 1232 |
+
4025.75673702356,0
|
| 1233 |
+
3900.1704029417497,0
|
| 1234 |
+
3609.79229214432,0
|
| 1235 |
+
3465.86614825237,0
|
| 1236 |
+
3477.29309516777,0
|
| 1237 |
+
3606.29948280492,0
|
| 1238 |
+
3833.26193277438,0
|
| 1239 |
+
4010.81722275524,0
|
| 1240 |
+
4120.28685773625,0
|
| 1241 |
+
4124.69482587067,0
|
| 1242 |
+
4073.92824337358,0
|
| 1243 |
+
3920.351654609529,0
|
| 1244 |
+
3623.56039169044,0
|
| 1245 |
+
3468.73077251214,0
|
| 1246 |
+
3159.38885345373,0
|
| 1247 |
+
3129.502354712,0
|
| 1248 |
+
3214.9553394417403,0
|
| 1249 |
+
3452.65810759202,0
|
| 1250 |
+
3845.2316231683294,0
|
| 1251 |
+
4233.00147268614,0
|
| 1252 |
+
4386.57715350929,0
|
| 1253 |
+
4465.59332259255,0
|
| 1254 |
+
4581.7812262507705,0
|
| 1255 |
+
4296.48922416267,0
|
| 1256 |
+
4082.00319163889,0
|
| 1257 |
+
3835.4255851359294,0
|
| 1258 |
+
3583.7208310720703,0
|
| 1259 |
+
3478.18669093981,0
|
| 1260 |
+
3423.00418897228,0
|
| 1261 |
+
3541.45074536581,0
|
| 1262 |
+
3794.406386108471,0
|
| 1263 |
+
3956.84674849124,0
|
| 1264 |
+
4067.6301740110207,0
|
| 1265 |
+
4072.20519388026,0
|
| 1266 |
+
3951.3549620344,0
|
| 1267 |
+
3860.75546617861,0
|
| 1268 |
+
3540.56226066219,0
|
| 1269 |
+
3272.42459182868,0
|
| 1270 |
+
3092.3846940573803,0
|
| 1271 |
+
3023.4990359879102,0
|
| 1272 |
+
3263.5168882165003,0
|
| 1273 |
+
3463.43849788534,0
|
| 1274 |
+
3662.825795162561,0
|
| 1275 |
+
4006.0763688013694,0
|
| 1276 |
+
4264.16360718556,0
|
| 1277 |
+
4421.62965164386,0
|
| 1278 |
+
4394.556441588161,0
|
| 1279 |
+
4111.365142475071,0
|
| 1280 |
+
4018.51728087744,0
|
| 1281 |
+
3743.49120576958,0
|
| 1282 |
+
3621.9078215723903,0
|
| 1283 |
+
3377.02930958935,0
|
| 1284 |
+
3394.26171207194,0
|
| 1285 |
+
3531.6994371703704,0
|
| 1286 |
+
3674.01193036069,0
|
| 1287 |
+
3868.30042805286,0
|
| 1288 |
+
4067.94244912072,0
|
| 1289 |
+
4059.25770012266,0
|
| 1290 |
+
3964.472670085229,0
|
| 1291 |
+
3670.60304408442,0
|
| 1292 |
+
3481.7278219792,0
|
| 1293 |
+
3262.54140057644,0
|
| 1294 |
+
3146.5378048596303,0
|
| 1295 |
+
3035.02343085476,0
|
| 1296 |
+
3165.9996501612604,0
|
| 1297 |
+
3372.89403347299,0
|
| 1298 |
+
3693.4199563314296,0
|
| 1299 |
+
4190.42664934345,0
|
| 1300 |
+
4176.98829517656,0
|
| 1301 |
+
4479.3556347217,0
|
| 1302 |
+
4351.006117067121,0
|
| 1303 |
+
4246.23303297848,0
|
| 1304 |
+
4096.63065134175,0
|
| 1305 |
+
3648.5211232065,0
|
| 1306 |
+
3362.9542104092,0
|
| 1307 |
+
3416.03762340242,0
|
| 1308 |
+
3475.56838836871,0
|
| 1309 |
+
3529.9782088790503,0
|
| 1310 |
+
3674.44551809146,0
|
| 1311 |
+
4010.0915394696494,0
|
| 1312 |
+
4097.135139748471,0
|
| 1313 |
+
4101.20654323306,0
|
| 1314 |
+
4023.87405501255,0
|
| 1315 |
+
3835.279203745272,0
|
| 1316 |
+
3453.6344516974104,0
|
| 1317 |
+
3205.68055886102,0
|
| 1318 |
+
3166.2046336173303,0
|
| 1319 |
+
3054.14420556927,0
|
| 1320 |
+
3301.17034584174,0
|
| 1321 |
+
3543.40461720526,0
|
| 1322 |
+
3859.1984637710298,0
|
| 1323 |
+
4158.451852728061,0
|
| 1324 |
+
4524.96805862877,0
|
| 1325 |
+
4531.86501685984,0
|
| 1326 |
+
4537.37691112722,0
|
| 1327 |
+
4407.87537718566,0
|
| 1328 |
+
4136.826681971161,0
|
| 1329 |
+
3854.5717022838,0
|
| 1330 |
+
3675.8970926785496,0
|
| 1331 |
+
3583.7645874334703,0
|
| 1332 |
+
3614.12241470316,0
|
| 1333 |
+
3690.9296251487103,0
|
| 1334 |
+
3923.84150000183,0
|
| 1335 |
+
4093.46786278462,0
|
| 1336 |
+
4270.142798967429,0
|
| 1337 |
+
4237.49292795229,0
|
| 1338 |
+
4268.33622055348,0
|
| 1339 |
+
3953.10460881,0
|
| 1340 |
+
3784.0884122771295,0
|
| 1341 |
+
3443.6520820097,0
|
| 1342 |
+
3331.73462369073,0
|
| 1343 |
+
3252.57353676524,0
|
| 1344 |
+
3420.5044260790505,0
|
| 1345 |
+
3669.21168248414,0
|
| 1346 |
+
3929.19977740096,0
|
| 1347 |
+
4358.5270498684495,0
|
| 1348 |
+
4539.13732334922,0
|
| 1349 |
+
4759.359608926189,0
|
| 1350 |
+
4726.502295844361,0
|
| 1351 |
+
4655.39867224098,0
|
| 1352 |
+
4344.687732447511,0
|
| 1353 |
+
4013.23918949599,0
|
| 1354 |
+
3883.3715208504,0
|
| 1355 |
+
3750.37779865086,0
|
| 1356 |
+
3785.16028264688,0
|
| 1357 |
+
3893.5839206354,0
|
| 1358 |
+
4223.8523292881,0
|
| 1359 |
+
4430.16572069024,0
|
| 1360 |
+
4419.89593040677,0
|
| 1361 |
+
4588.75747499082,0
|
| 1362 |
+
4403.06931888045,0
|
| 1363 |
+
4291.09745662305,0
|
| 1364 |
+
3912.030514774,0
|
| 1365 |
+
3713.89127002348,0
|
| 1366 |
+
3544.2669170819704,0
|
| 1367 |
+
3623.92590236306,0
|
| 1368 |
+
3701.54395327542,0
|
| 1369 |
+
3938.03377822148,0
|
| 1370 |
+
4293.71998325938,0
|
| 1371 |
+
4477.19353373539,0
|
| 1372 |
+
4802.27424774998,0
|
| 1373 |
+
4912.98662400575,0
|
| 1374 |
+
5059.14537552968,0
|
| 1375 |
+
4806.4894600761,0
|
| 1376 |
+
4502.79958997646,0
|
| 1377 |
+
4195.36215167098,0
|
| 1378 |
+
3996.85664839067,0
|
| 1379 |
+
4002.30605754088,0
|
| 1380 |
+
3941.35527300524,0
|
| 1381 |
+
4005.08611916788,0
|
| 1382 |
+
4306.43471438018,0
|
| 1383 |
+
4654.13054504082,0
|
| 1384 |
+
4707.7051591963,0
|
| 1385 |
+
4635.25845525207,0
|
| 1386 |
+
4671.33892380009,0
|
| 1387 |
+
4330.90009722371,0
|
| 1388 |
+
4119.27447836257,0
|
| 1389 |
+
3900.298066764529,0
|
| 1390 |
+
3660.2473933607503,0
|
| 1391 |
+
3594.42295270181,0
|
| 1392 |
+
3750.2344170195097,0
|
| 1393 |
+
4055.66423267286,0
|
| 1394 |
+
4508.89914610522,0
|
| 1395 |
+
4797.72894550036,0
|
| 1396 |
+
4900.072217810971,0
|
| 1397 |
+
5086.09891663095,0
|
| 1398 |
+
5009.68088176119,0
|
| 1399 |
+
4931.266946873599,0
|
| 1400 |
+
4650.4960513508295,0
|
| 1401 |
+
4313.78799639223,0
|
| 1402 |
+
4178.97233678863,0
|
| 1403 |
+
4166.994734920449,0
|
| 1404 |
+
4153.52131233331,0
|
| 1405 |
+
4192.68101511312,0
|
| 1406 |
+
4206.61787184131,0
|
| 1407 |
+
4263.42662881131,0
|
| 1408 |
+
4262.55310851796,0
|
| 1409 |
+
4279.315665957821,0
|
| 1410 |
+
4240.77924893753,0
|
| 1411 |
+
4209.991801620279,0
|
| 1412 |
+
4167.55628153549,0
|
| 1413 |
+
4114.07996893123,0
|
| 1414 |
+
4095.65449533248,0
|
| 1415 |
+
4079.38962444851,0
|
| 1416 |
+
4100.77490606097,0
|
| 1417 |
+
4146.620996307311,0
|
| 1418 |
+
4192.96055388352,0
|
| 1419 |
+
4246.784558748111,0
|
| 1420 |
+
4284.331042843929,0
|
| 1421 |
+
4303.9539626018295,0
|
| 1422 |
+
4292.291679953351,0
|
| 1423 |
+
4273.66116502714,0
|
| 1424 |
+
4232.41666108536,0
|
| 1425 |
+
4193.574563482371,0
|
| 1426 |
+
4139.90067900659,0
|
| 1427 |
+
4118.75735437305,0
|
| 1428 |
+
4139.5510502240295,0
|
| 1429 |
+
4139.00826912887,0
|
| 1430 |
+
4150.60062262894,0
|
| 1431 |
+
4201.41634575429,0
|
| 1432 |
+
4217.60277075639,0
|
| 1433 |
+
4214.40159566972,0
|
| 1434 |
+
4206.38871162258,0
|
| 1435 |
+
4187.202201070089,0
|
| 1436 |
+
4121.98144661376,0
|
| 1437 |
+
4068.05257905736,0
|
| 1438 |
+
4037.1592863385104,0
|
| 1439 |
+
4033.38937892086,0
|
| 1440 |
+
4045.7027229861897,0
|
| 1441 |
+
4083.8156694831,0
|
| 1442 |
+
4133.540363751429,0
|
| 1443 |
+
4210.251118558321,0
|
| 1444 |
+
4254.02943013232,0
|
| 1445 |
+
4261.84089482997,0
|
| 1446 |
+
4233.5012074401,0
|
| 1447 |
+
4217.538758262921,0
|
| 1448 |
+
4183.68719323642,0
|
| 1449 |
+
4138.60628938907,0
|
| 1450 |
+
4086.46744625312,0
|
| 1451 |
+
4048.31945967391,0
|
| 1452 |
+
4066.7513657273694,0
|
| 1453 |
+
4097.020712655311,0
|
| 1454 |
+
4119.62126930919,0
|
| 1455 |
+
4143.869567829821,0
|
| 1456 |
+
4177.6260789595,0
|
| 1457 |
+
4177.03085454883,0
|
| 1458 |
+
4154.94977521325,0
|
| 1459 |
+
4121.10800034426,0
|
| 1460 |
+
4339.89979371925,1
|
| 1461 |
+
4049.77844339537,0
|
| 1462 |
+
4009.71049154331,0
|
| 1463 |
+
3990.6701019543298,0
|
| 1464 |
+
4025.2779997873,0
|
| 1465 |
+
4038.77112892274,0
|
| 1466 |
+
4088.73942634192,0
|
| 1467 |
+
4165.172142385,0
|
| 1468 |
+
4182.433261407079,0
|
| 1469 |
+
4205.63110986845,0
|
| 1470 |
+
4204.8102767215705,0
|
| 1471 |
+
4168.2657475283895,0
|
| 1472 |
+
4135.63533114975,0
|
| 1473 |
+
4081.734842264671,0
|
| 1474 |
+
4051.627471650229,0
|
| 1475 |
+
4039.0572537062,0
|
| 1476 |
+
4023.69606939606,0
|
| 1477 |
+
4046.267552780712,0
|
| 1478 |
+
4074.29053017971,0
|
| 1479 |
+
4119.37470996249,0
|
| 1480 |
+
4154.677714159,0
|
| 1481 |
+
4145.14149594843,0
|
| 1482 |
+
4130.25589822156,0
|
| 1483 |
+
4076.63743094623,0
|
| 1484 |
+
4051.6327220342896,0
|
| 1485 |
+
3997.89186234794,0
|
| 1486 |
+
3988.44516978076,0
|
| 1487 |
+
3956.3965368473296,0
|
| 1488 |
+
4014.16379009344,0
|
| 1489 |
+
4039.07627056162,0
|
| 1490 |
+
4089.3953641039097,0
|
| 1491 |
+
4143.939271614289,0
|
| 1492 |
+
4177.21930809269,0
|
| 1493 |
+
4208.763844486271,0
|
| 1494 |
+
4182.79807558726,0
|
| 1495 |
+
4162.78627506892,0
|
| 1496 |
+
4113.86863956122,0
|
| 1497 |
+
4062.09724907781,0
|
| 1498 |
+
4033.0985860955,0
|
| 1499 |
+
4034.54860368883,0
|
| 1500 |
+
4033.9037717155297,0
|
| 1501 |
+
4047.62799506608,0
|
| 1502 |
+
4058.18691865984,0
|
| 1503 |
+
4112.47781149124,0
|
| 1504 |
+
4166.30100804355,0
|
| 1505 |
+
4134.6846407065605,0
|
| 1506 |
+
4126.57327664435,0
|
| 1507 |
+
4092.20285305445,0
|
| 1508 |
+
4036.01778387154,0
|
| 1509 |
+
4000.54708272706,0
|
| 1510 |
+
3995.42627874978,0
|
| 1511 |
+
3960.18944977748,0
|
| 1512 |
+
3717.5477775969,1
|
| 1513 |
+
4025.50021577584,0
|
| 1514 |
+
4087.1347713139294,0
|
| 1515 |
+
4140.874635214579,0
|
| 1516 |
+
4183.08629439365,0
|
| 1517 |
+
4215.08248067224,0
|
| 1518 |
+
4185.45385015959,0
|
| 1519 |
+
4172.4948793191,0
|
| 1520 |
+
4137.9421659461495,0
|
| 1521 |
+
4088.17251106937,0
|
| 1522 |
+
4051.38958292761,0
|
| 1523 |
+
4029.4903603493394,0
|
| 1524 |
+
4015.87964359933,0
|
| 1525 |
+
4043.79668470044,0
|
| 1526 |
+
4082.5949618854297,0
|
| 1527 |
+
4116.41608770068,0
|
| 1528 |
+
4138.17886915955,0
|
| 1529 |
+
4143.45142505095,0
|
| 1530 |
+
4126.00134721418,0
|
| 1531 |
+
4091.23857665743,0
|
| 1532 |
+
4053.96449111109,0
|
| 1533 |
+
4022.3012455964,0
|
| 1534 |
+
3975.378144092672,0
|
| 1535 |
+
3974.60307997971,0
|
| 1536 |
+
3992.44164887085,0
|
| 1537 |
+
4037.43632170158,0
|
| 1538 |
+
4097.82024787131,0
|
| 1539 |
+
4141.56354937472,0
|
| 1540 |
+
4166.85717537158,0
|
| 1541 |
+
4221.32301775061,0
|
| 1542 |
+
4178.84250113265,0
|
| 1543 |
+
4178.89308736198,0
|
| 1544 |
+
4125.31210853758,0
|
| 1545 |
+
4102.09821383872,0
|
| 1546 |
+
4043.63233333588,0
|
| 1547 |
+
4026.32762751445,0
|
| 1548 |
+
4032.92881357554,0
|
| 1549 |
+
4035.1110943213794,0
|
| 1550 |
+
4092.79563287543,0
|
| 1551 |
+
4134.483141982871,0
|
| 1552 |
+
4141.1090479298,0
|
| 1553 |
+
4146.04197982125,0
|
| 1554 |
+
4108.159296233371,0
|
| 1555 |
+
4089.9485065474896,0
|
| 1556 |
+
4050.51831812777,0
|
| 1557 |
+
4001.79241645312,0
|
| 1558 |
+
3967.59465792351,0
|
| 1559 |
+
3966.638717682221,0
|
| 1560 |
+
3989.741394576789,0
|
| 1561 |
+
4030.40642461,0
|
| 1562 |
+
4064.2849467639294,0
|
| 1563 |
+
4100.70922577233,0
|
| 1564 |
+
4158.85258944431,0
|
| 1565 |
+
4175.30319786753,0
|
| 1566 |
+
4160.36156902668,0
|
| 1567 |
+
4151.72939520729,0
|
| 1568 |
+
4088.373526635829,0
|
| 1569 |
+
4054.26658757242,0
|
| 1570 |
+
4005.47221896164,0
|
| 1571 |
+
3988.202374028661,0
|
| 1572 |
+
4020.73470546889,0
|
| 1573 |
+
4014.45922180315,0
|
| 1574 |
+
4049.5230491837297,0
|
| 1575 |
+
4068.661315396,0
|
| 1576 |
+
4107.343394136429,0
|
| 1577 |
+
4116.36917128904,0
|
| 1578 |
+
4084.14639230894,0
|
| 1579 |
+
4051.75002374246,0
|
| 1580 |
+
3990.75817202096,0
|
| 1581 |
+
3967.24269935988,0
|
| 1582 |
+
3916.12553509696,0
|
| 1583 |
+
3919.24958468169,0
|
| 1584 |
+
3938.64959637574,0
|
| 1585 |
+
4002.64166569932,0
|
| 1586 |
+
4015.92260390327,0
|
| 1587 |
+
4078.18473917878,0
|
| 1588 |
+
4132.0502284873,0
|
| 1589 |
+
4140.71804900221,0
|
| 1590 |
+
4130.71387624081,0
|
| 1591 |
+
4078.20087068222,0
|
| 1592 |
+
4061.4439412174,0
|
| 1593 |
+
3999.2451402958295,0
|
| 1594 |
+
4001.84688882804,0
|
| 1595 |
+
3938.2615068030896,0
|
| 1596 |
+
3955.13128149425,0
|
| 1597 |
+
3963.0506857119103,0
|
| 1598 |
+
4000.11803081048,0
|
| 1599 |
+
4035.33459203994,0
|
| 1600 |
+
4050.47341431604,0
|
| 1601 |
+
4053.67513280874,0
|
| 1602 |
+
4039.91699383178,0
|
| 1603 |
+
4005.79798565029,0
|
| 1604 |
+
3952.82016132812,0
|
| 1605 |
+
3910.83927308043,0
|
| 1606 |
+
3873.3202897416704,0
|
| 1607 |
+
3864.00416150508,0
|
| 1608 |
+
3889.5669629855,0
|
| 1609 |
+
3933.20514284896,0
|
| 1610 |
+
3958.23762016046,0
|
| 1611 |
+
4041.44925853739,0
|
| 1612 |
+
4040.8436500933694,0
|
| 1613 |
+
4099.13728525931,0
|
| 1614 |
+
4084.9050724065705,0
|
| 1615 |
+
4047.9850314991,0
|
| 1616 |
+
4001.95761049616,0
|
| 1617 |
+
3962.68762740545,0
|
| 1618 |
+
3929.73920829663,0
|
| 1619 |
+
3887.58018787793,0
|
| 1620 |
+
3907.0586457847,0
|
| 1621 |
+
3918.90205194039,0
|
| 1622 |
+
3963.51213822079,0
|
| 1623 |
+
3976.99235550065,0
|
| 1624 |
+
4011.3401653645296,0
|
| 1625 |
+
3972.77985848099,0
|
| 1626 |
+
3978.8421340660298,0
|
| 1627 |
+
3955.078417236261,0
|
| 1628 |
+
3901.00340599418,0
|
| 1629 |
+
3868.28408705148,0
|
| 1630 |
+
3848.2331459388,0
|
| 1631 |
+
3808.37258012565,0
|
| 1632 |
+
3842.99715198544,0
|
| 1633 |
+
3867.84118157642,0
|
| 1634 |
+
3935.01978724277,0
|
| 1635 |
+
4016.53222090262,0
|
| 1636 |
+
4024.81647271886,0
|
| 1637 |
+
4036.4575946082,0
|
| 1638 |
+
4033.56177438005,0
|
| 1639 |
+
4026.7611086594607,0
|
| 1640 |
+
3964.2818155505297,0
|
| 1641 |
+
3916.60726208604,0
|
| 1642 |
+
3893.07182672823,0
|
| 1643 |
+
3870.6813257447902,0
|
| 1644 |
+
3864.65399065058,0
|
| 1645 |
+
3897.88082641008,0
|
| 1646 |
+
3926.62836022481,0
|
| 1647 |
+
3958.48866224271,0
|
| 1648 |
+
3975.5580050814,0
|
| 1649 |
+
3993.833975889721,0
|
| 1650 |
+
3958.51846171138,0
|
| 1651 |
+
3908.58594179226,0
|
| 1652 |
+
3874.13087797789,0
|
| 1653 |
+
3825.26725921209,0
|
| 1654 |
+
3839.7271959791706,0
|
| 1655 |
+
3805.05098890962,0
|
| 1656 |
+
3826.81270509022,0
|
| 1657 |
+
3868.75445423235,0
|
| 1658 |
+
3924.79577334415,0
|
| 1659 |
+
3975.63891847029,0
|
| 1660 |
+
4014.32237856074,0
|
| 1661 |
+
4023.3269690522498,0
|
| 1662 |
+
4035.2894817092297,0
|
| 1663 |
+
4004.5274753714098,0
|
| 1664 |
+
3964.6920072707694,0
|
| 1665 |
+
3922.01557225076,0
|
| 1666 |
+
3874.16647319485,0
|
| 1667 |
+
3862.14314064895,0
|
| 1668 |
+
3855.0530672998,0
|
| 1669 |
+
3911.34282262651,0
|
| 1670 |
+
3923.07607703433,0
|
| 1671 |
+
3951.85674659224,0
|
| 1672 |
+
3990.26663401,0
|
| 1673 |
+
3980.90471724075,0
|
| 1674 |
+
3972.33224586779,0
|
| 1675 |
+
3920.64710449849,0
|
| 1676 |
+
3873.12198092221,0
|
| 1677 |
+
3849.2913803611896,0
|
| 1678 |
+
3816.69470896775,0
|
| 1679 |
+
3796.14229437698,0
|
| 1680 |
+
3836.69536329258,0
|
| 1681 |
+
3873.07314610688,0
|