From e50561b5387b5a34d500b46571a6e983184822e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Cwqyhahaha=E2=80=9D?= <1803324225@qq.com> Date: Mon, 25 Aug 2025 17:21:58 +0800 Subject: [PATCH 1/7] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E6=97=B6?= =?UTF-8?q?=E5=BA=8F=E6=A3=80=E6=B5=8B=E5=88=86=E5=B1=82=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 实现第一层STL分解异常检测 - 实现第二层异常模式识别和聚合 - 添加结果分析工具 - 包含完整的检测结果和可视化 - 解决运维场景报警疲劳问题 --- .../analyze_second_layer_results.py | 139 +++ .../second_layer_aggregations.csv | 14 + anomaly_detection/second_layer_detector.py | 200 ++++ anomaly_detection/second_layer_patterns.csv | 42 + anomaly_detection/stl_anomaly_detection.py | 405 +++++++ anomaly_detection/stl_anomaly_results.csv | 1010 +++++++++++++++++ 6 files changed, 1810 insertions(+) create mode 100644 anomaly_detection/analyze_second_layer_results.py create mode 100644 anomaly_detection/second_layer_aggregations.csv create mode 100644 anomaly_detection/second_layer_detector.py create mode 100644 anomaly_detection/second_layer_patterns.csv create mode 100644 anomaly_detection/stl_anomaly_detection.py create mode 100644 anomaly_detection/stl_anomaly_results.csv diff --git a/anomaly_detection/analyze_second_layer_results.py b/anomaly_detection/analyze_second_layer_results.py new file mode 100644 index 0000000..14c77a1 --- /dev/null +++ b/anomaly_detection/analyze_second_layer_results.py @@ -0,0 +1,139 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +""" +分析第二层异常检测结果 +""" + +import pandas as pd +import numpy as np + +def analyze_second_layer_results(): + """分析第二层异常检测结果""" + + print("=== Second Layer Results Analysis ===\n") + + # 读取结果文件 + patterns_df = pd.read_csv('second_layer_patterns.csv') + aggregations_df = pd.read_csv('second_layer_aggregations.csv') + + # 转换时间列 + patterns_df['time'] = pd.to_datetime(patterns_df['time']) + aggregations_df['start_time'] = pd.to_datetime(aggregations_df['start_time']) + aggregations_df['end_time'] = pd.to_datetime(aggregations_df['end_time']) + + print("1. 异常模式分析") + print("=" * 50) + print(f"总检测到的异常模式数量: {len(patterns_df)}") + print(f"异常模式类型: {patterns_df['type'].unique()}") + + # 分析尖峰异常 + spike_patterns = patterns_df[patterns_df['type'] == 'spike'] + print(f"\n尖峰异常分析:") + print(f" 数量: {len(spike_patterns)}") + print(f" 异常分数范围: {spike_patterns['score'].min():.2f} - {spike_patterns['score'].max():.2f}") + print(f" 平均异常分数: {spike_patterns['score'].mean():.2f}") + print(f" 中位数异常分数: {spike_patterns['score'].median():.2f}") + + # 最严重的异常 + top_anomalies = spike_patterns.nlargest(5, 'score') + print(f"\n最严重的5个尖峰异常:") + for idx, row in top_anomalies.iterrows(): + print(f" {row['time']}: 值={row['value']:.0f}, 分数={row['score']:.2f}") + + print("\n2. 异常聚合分析") + print("=" * 50) + print(f"总聚合窗口数量: {len(aggregations_df)}") + print(f"聚合窗口时间跨度: {aggregations_df['start_time'].min()} 到 {aggregations_df['end_time'].max()}") + + # 异常密度分析 + print(f"\n异常密度分析:") + print(f" 平均异常密度: {aggregations_df['anomaly_density'].mean():.3f}") + print(f" 最大异常密度: {aggregations_df['anomaly_density'].max():.3f}") + print(f" 最小异常密度: {aggregations_df['anomaly_density'].min():.3f}") + + # 异常数量分析 + print(f"\n异常数量分析:") + print(f" 平均异常数量: {aggregations_df['anomaly_count'].mean():.1f}") + print(f" 最大异常数量: {aggregations_df['anomaly_count'].max()}") + print(f" 最小异常数量: {aggregations_df['anomaly_count'].min()}") + + # 异常分数分析 + print(f"\n异常分数分析:") + print(f" 平均最大分数: {aggregations_df['max_score'].mean():.2f}") + print(f" 平均平均分数: {aggregations_df['mean_score'].mean():.2f}") + print(f" 最高最大分数: {aggregations_df['max_score'].max():.2f}") + + # 最严重的聚合窗口 + top_aggregations = aggregations_df.nlargest(3, 'max_score') + print(f"\n最严重的3个聚合窗口:") + for idx, row in top_aggregations.iterrows(): + print(f" {row['start_time']} - {row['end_time']}:") + print(f" 异常数量: {row['anomaly_count']}") + print(f" 异常密度: {row['anomaly_density']:.3f}") + print(f" 最大分数: {row['max_score']:.2f}") + print(f" 平均分数: {row['mean_score']:.2f}") + + print("\n3. 时间分布分析") + print("=" * 50) + + # 按日期分析 + patterns_df['date'] = patterns_df['time'].dt.date + daily_counts = patterns_df['date'].value_counts().sort_index() + + print("每日异常模式数量:") + for date, count in daily_counts.items(): + print(f" {date}: {count} 个异常") + + # 按小时分析 + patterns_df['hour'] = patterns_df['time'].dt.hour + hourly_counts = patterns_df['hour'].value_counts().sort_index() + + print(f"\n按小时分布的异常数量:") + for hour, count in hourly_counts.items(): + print(f" {hour:02d}:00: {count} 个异常") + + print("\n4. 报警建议") + print("=" * 50) + + # 基于异常分数和密度的报警建议 + high_score_patterns = spike_patterns[spike_patterns['score'] > 3.0] + high_density_aggregations = aggregations_df[aggregations_df['anomaly_density'] > 0.05] + + print(f"高分数异常模式 (>3.0): {len(high_score_patterns)} 个") + if len(high_score_patterns) > 0: + print("建议立即关注的异常:") + for idx, row in high_score_patterns.iterrows(): + print(f" {row['time']}: 分数={row['score']:.2f}, 值={row['value']:.0f}") + + print(f"\n高密度异常窗口 (>5%): {len(high_density_aggregations)} 个") + if len(high_density_aggregations) > 0: + print("建议重点监控的时间段:") + for idx, row in high_density_aggregations.iterrows(): + print(f" {row['start_time']} - {row['end_time']}: 密度={row['anomaly_density']:.3f}") + + print("\n5. 与第一层对比") + print("=" * 50) + + # 读取第一层结果 + first_layer_df = pd.read_csv('stl_anomaly_results.csv') + first_layer_df['Time'] = pd.to_datetime(first_layer_df['Time']) + + first_layer_anomalies = first_layer_df[first_layer_df['anomaly_level'] != 'normal'] + second_layer_patterns = len(patterns_df) + + print(f"第一层检测到的异常点: {len(first_layer_anomalies)}") + print(f"第二层识别的异常模式: {second_layer_patterns}") + print(f"模式识别率: {second_layer_patterns/len(first_layer_anomalies)*100:.1f}%") + + # 计算误报减少 + first_layer_severe = len(first_layer_df[first_layer_df['anomaly_level'] == 'severe']) + second_layer_critical = len(high_score_patterns) + + print(f"\n第一层严重异常: {first_layer_severe}") + print(f"第二层关键异常: {second_layer_critical}") + print(f"误报减少: {(first_layer_severe - second_layer_critical)/first_layer_severe*100:.1f}%") + + print("\n=== Analysis Complete ===") + +if __name__ == "__main__": + analyze_second_layer_results() diff --git a/anomaly_detection/second_layer_aggregations.csv b/anomaly_detection/second_layer_aggregations.csv new file mode 100644 index 0000000..d6b6f90 --- /dev/null +++ b/anomaly_detection/second_layer_aggregations.csv @@ -0,0 +1,14 @@ +start_time,end_time,anomaly_count,anomaly_density,max_score,mean_score +2025-07-14 00:00:00+08:00,2025-07-14 23:50:00+08:00,7,0.04861111111111111,22.91802223930438,5.196612075360152 +2025-07-14 12:00:00+08:00,2025-07-15 11:50:00+08:00,8,0.05555555555555555,22.91802223930438,4.716624346186288 +2025-07-15 00:00:00+08:00,2025-07-15 23:50:00+08:00,9,0.0625,4.162401458789488,2.4820616063308774 +2025-07-15 12:00:00+08:00,2025-07-16 11:50:00+08:00,5,0.034722222222222224,4.162401458789488,2.7010686642676047 +2025-07-16 00:00:00+08:00,2025-07-16 23:50:00+08:00,4,0.027777777777777776,2.032553258179384,1.9975651656120543 +2025-07-16 12:00:00+08:00,2025-07-17 11:50:00+08:00,8,0.05555555555555555,2.818466014467554,2.1653144780572324 +2025-07-17 00:00:00+08:00,2025-07-17 23:50:00+08:00,8,0.05555555555555555,2.818466014467554,2.16666779870162 +2025-07-17 12:00:00+08:00,2025-07-18 11:50:00+08:00,5,0.034722222222222224,3.1974005533096905,2.2941742535972343 +2025-07-18 00:00:00+08:00,2025-07-18 23:50:00+08:00,5,0.034722222222222224,3.1974005533096905,2.3655673498208265 +2025-07-18 12:00:00+08:00,2025-07-19 11:50:00+08:00,6,0.041666666666666664,2.5385468617889795,2.168574098817865 +2025-07-19 00:00:00+08:00,2025-07-19 23:50:00+08:00,5,0.034722222222222224,2.5385468617889795,2.1270306557463927 +2025-07-19 12:00:00+08:00,2025-07-20 11:50:00+08:00,12,0.08333333333333333,4.587376198923394,2.886039502053336 +2025-07-20 00:00:00+08:00,2025-07-20 23:50:00+08:00,13,0.09027777777777778,4.587376198923394,2.832503687066684 diff --git a/anomaly_detection/second_layer_detector.py b/anomaly_detection/second_layer_detector.py new file mode 100644 index 0000000..a7d2c9f --- /dev/null +++ b/anomaly_detection/second_layer_detector.py @@ -0,0 +1,200 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +""" +第二层异常模式识别策略 - 简化版本 +""" + +import pandas as pd +import numpy as np +import matplotlib.pyplot as plt +from sklearn.linear_model import LinearRegression +from collections import defaultdict + +class SecondLayerDetector: + def __init__(self): + self.patterns = [] + self.aggregations = [] + + def load_data(self, file_path): + """加载第一层结果""" + print("Loading first layer results...") + self.data = pd.read_csv(file_path) + self.data['Time'] = pd.to_datetime(self.data['Time']) + print(f"Loaded {len(self.data)} data points") + + def detect_spike_patterns(self): + """检测尖峰模式""" + spikes = [] + for i in range(1, len(self.data) - 1): + current = self.data.iloc[i] + if (current['anomaly_level'] != 'normal' and + self.data.iloc[i-1]['anomaly_level'] == 'normal' and + self.data.iloc[i+1]['anomaly_level'] == 'normal'): + spikes.append({ + 'time': current['Time'], + 'value': current['Value'], + 'score': current['anomaly_score'], + 'type': 'spike' + }) + return spikes + + def detect_trend_patterns(self, window_size=144): + """检测趋势模式""" + trends = [] + for i in range(0, len(self.data) - window_size, window_size//2): + window = self.data.iloc[i:i+window_size] + if len(window) < 10: + continue + + # 线性回归检测趋势 + x = np.arange(len(window)).reshape(-1, 1) + y = window['Value'].values + reg = LinearRegression() + reg.fit(x, y) + + # 计算异常比例 + anomaly_ratio = len(window[window['anomaly_level'] != 'normal']) / len(window) + + if abs(reg.coef_[0]) > 10 and anomaly_ratio > 0.2: + trends.append({ + 'start_time': window.iloc[0]['Time'], + 'end_time': window.iloc[-1]['Time'], + 'slope': reg.coef_[0], + 'anomaly_ratio': anomaly_ratio, + 'type': 'trend' + }) + return trends + + def aggregate_anomalies(self, window_size=144): + """聚合异常""" + aggregations = [] + for i in range(0, len(self.data) - window_size, window_size//2): + window = self.data.iloc[i:i+window_size] + anomalies = window[window['anomaly_level'] != 'normal'] + + if len(anomalies) > 0: + agg = { + 'start_time': window.iloc[0]['Time'], + 'end_time': window.iloc[-1]['Time'], + 'anomaly_count': len(anomalies), + 'anomaly_density': len(anomalies) / len(window), + 'max_score': anomalies['anomaly_score'].max(), + 'mean_score': anomalies['anomaly_score'].mean() + } + aggregations.append(agg) + return aggregations + + def analyze_patterns(self): + """分析所有模式""" + print("Analyzing patterns...") + + # 检测尖峰模式 + spikes = self.detect_spike_patterns() + self.patterns.extend(spikes) + + # 检测趋势模式 + trends = self.detect_trend_patterns() + self.patterns.extend(trends) + + # 聚合异常 + self.aggregations = self.aggregate_anomalies() + + print(f"Detected {len(self.patterns)} patterns") + print(f"Generated {len(self.aggregations)} aggregations") + + def create_visualizations(self): + """创建可视化""" + print("Creating visualizations...") + + # 模式时间线 + fig, ax = plt.subplots(figsize=(15, 8)) + ax.plot(self.data['Time'], self.data['Value'], 'b-', alpha=0.6, linewidth=1) + + # 标记模式 + colors = {'spike': 'red', 'trend': 'orange'} + for pattern in self.patterns: + time = pattern.get('time', pattern.get('start_time')) + value = pattern.get('value', 0) + ax.scatter(time, value, c=colors[pattern['type']], s=50, alpha=0.8) + + ax.set_title('Anomaly Patterns Timeline', fontsize=16, fontweight='bold') + ax.set_xlabel('Time', fontsize=12) + ax.set_ylabel('Value', fontsize=12) + ax.grid(True, alpha=0.3) + plt.tight_layout() + plt.savefig('second_layer_patterns.png', dpi=300, bbox_inches='tight') + plt.show() + + # 聚合统计 + if self.aggregations: + fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2, figsize=(15, 10)) + + densities = [agg['anomaly_density'] for agg in self.aggregations] + ax1.hist(densities, bins=20, alpha=0.7, color='skyblue') + ax1.set_title('Anomaly Density Distribution') + ax1.set_xlabel('Anomaly Density') + ax1.set_ylabel('Frequency') + + counts = [agg['anomaly_count'] for agg in self.aggregations] + ax2.hist(counts, bins=20, alpha=0.7, color='lightgreen') + ax2.set_title('Anomaly Count Distribution') + ax2.set_xlabel('Anomaly Count') + ax2.set_ylabel('Frequency') + + max_scores = [agg['max_score'] for agg in self.aggregations] + ax3.hist(max_scores, bins=20, alpha=0.7, color='lightcoral') + ax3.set_title('Max Anomaly Score Distribution') + ax3.set_xlabel('Max Score') + ax3.set_ylabel('Frequency') + + mean_scores = [agg['mean_score'] for agg in self.aggregations] + ax4.hist(mean_scores, bins=20, alpha=0.7, color='lightyellow') + ax4.set_title('Mean Anomaly Score Distribution') + ax4.set_xlabel('Mean Score') + ax4.set_ylabel('Frequency') + + plt.tight_layout() + plt.savefig('second_layer_aggregations.png', dpi=300, bbox_inches='tight') + plt.show() + + def save_results(self): + """保存结果""" + # 保存模式 + patterns_df = pd.DataFrame(self.patterns) + if not patterns_df.empty: + patterns_df.to_csv('second_layer_patterns.csv', index=False) + + # 保存聚合 + aggregations_df = pd.DataFrame(self.aggregations) + if not aggregations_df.empty: + aggregations_df.to_csv('second_layer_aggregations.csv', index=False) + + print("Results saved to second_layer_*.csv") + + def print_summary(self): + """打印摘要""" + print("\n=== Second Layer Summary ===") + print(f"Patterns detected: {len(self.patterns)}") + print(f"Aggregations: {len(self.aggregations)}") + + if self.patterns: + types = [p['type'] for p in self.patterns] + type_counts = pd.Series(types).value_counts() + print("\nPattern types:") + for t, c in type_counts.items(): + print(f" {t}: {c}") + +def main(): + print("=== Second Layer Anomaly Detection ===") + + detector = SecondLayerDetector() + detector.load_data('stl_anomaly_results.csv') + detector.analyze_patterns() + detector.create_visualizations() + detector.save_results() + detector.print_summary() + + print("=== Complete ===") + +if __name__ == "__main__": + main() diff --git a/anomaly_detection/second_layer_patterns.csv b/anomaly_detection/second_layer_patterns.csv new file mode 100644 index 0000000..f857c26 --- /dev/null +++ b/anomaly_detection/second_layer_patterns.csv @@ -0,0 +1,42 @@ +time,value,score,type +2025-07-14 01:10:00+08:00,1504.2321128272538,2.6477859984940397,spike +2025-07-14 03:00:00+08:00,4170.315135131283,2.7378780856670093,spike +2025-07-14 05:00:00+08:00,11733.768154342426,1.8268318826426224,spike +2025-07-14 06:00:00+08:00,7575.361092977691,2.056908467061681,spike +2025-07-14 09:00:00+08:00,1466.0417791830196,1.8729753342161335,spike +2025-07-14 11:40:00+08:00,4790.2177457663565,2.3158825201351934,spike +2025-07-14 16:30:00+08:00,34109.276874739284,22.91802223930438,spike +2025-07-15 01:00:00+08:00,14552.472422384308,2.317503578817086,spike +2025-07-15 01:40:00+08:00,4728.679591687594,1.7812309216966544,spike +2025-07-15 02:30:00+08:00,876.7833839952468,1.9968623692411005,spike +2025-07-15 04:00:00+08:00,6253.785190863624,1.7305756468722413,spike +2025-07-15 04:20:00+08:00,6904.805663709536,2.155781214996857,spike +2025-07-15 06:50:00+08:00,7672.687531102028,2.612562706840688,spike +2025-07-15 07:10:00+08:00,6116.42177340247,2.220456091721297,spike +2025-07-15 15:30:00+08:00,9240.14623012325,4.162401458789488,spike +2025-07-15 21:00:00+08:00,5792.407072621629,3.361180468002483,spike +2025-07-16 01:00:00+08:00,6029.151485546501,2.013135482805866,spike +2025-07-16 17:30:00+08:00,4435.297298236891,2.008499267902166,spike +2025-07-17 01:00:00+08:00,9932.9264247938,2.3138057609799425,spike +2025-07-17 02:00:00+08:00,2060.561409358393,1.776507632845249,spike +2025-07-17 04:50:00+08:00,5658.290093392947,2.560940053673524,spike +2025-07-17 05:10:00+08:00,7759.709174446929,1.8215641235119115,spike +2025-07-17 11:30:00+08:00,5900.959261531746,2.818466014467554,spike +2025-07-17 16:10:00+08:00,4553.4183655529305,2.019325833057263,spike +2025-07-18 01:40:00+08:00,8312.530339648587,3.1974005533096905,spike +2025-07-18 02:00:00+08:00,2150.458534416928,1.803525030508139,spike +2025-07-18 03:50:00+08:00,739.6451273634689,2.2193400836493664,spike +2025-07-18 09:00:00+08:00,5863.2744465064125,2.231279767461712,spike +2025-07-18 17:30:00+08:00,4635.908440221926,2.376291314175224,spike +2025-07-19 01:20:00+08:00,8972.419032320904,2.049938489122546,spike +2025-07-19 02:30:00+08:00,2142.1139353782646,2.3564304123311266,spike +2025-07-19 05:20:00+08:00,2361.6010585923605,1.814374084881964,spike +2025-07-20 01:00:00+08:00,5523.89614319348,3.64217369093314,spike +2025-07-20 01:30:00+08:00,6260.8852174695785,1.764463308479158,spike +2025-07-20 02:50:00+08:00,2171.7245948856216,2.151101212055348,spike +2025-07-20 03:40:00+08:00,882.9163948013736,2.0238376572878245,spike +2025-07-20 04:10:00+08:00,9595.099746667433,4.587376198923394,spike +2025-07-20 05:00:00+08:00,8755.750504824384,3.998751350467234,spike +2025-07-20 07:10:00+08:00,5782.487550372498,2.868957504705108,spike +2025-07-20 08:00:00+08:00,5214.728961231607,1.9409556142419468,spike +2025-07-20 14:00:00+08:00,4163.642595005619,2.190073907226864,spike diff --git a/anomaly_detection/stl_anomaly_detection.py b/anomaly_detection/stl_anomaly_detection.py new file mode 100644 index 0000000..d3427b5 --- /dev/null +++ b/anomaly_detection/stl_anomaly_detection.py @@ -0,0 +1,405 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +""" +STL分解异常检测 +使用STL分解方法对yzh mirror时序数据进行异常检测 +""" + +import pandas as pd +import numpy as np +import matplotlib.pyplot as plt +import seaborn as sns +from scipy import stats +from statsmodels.tsa.seasonal import STL +import warnings +import matplotlib.font_manager as fm +warnings.filterwarnings('ignore') + +# 设置中文字体 - 更完善的字体配置 +def setup_chinese_font(): + """设置中文字体显示""" + # 尝试多种中文字体 + chinese_fonts = [ + 'Hiragino Sans GB', # 冬青黑体 (macOS) + 'PingFang SC', # 苹方 (macOS) + 'STHeiti', # 华文黑体 (macOS) + 'SimHei', # 黑体 (Windows) + 'Microsoft YaHei', # 微软雅黑 (Windows) + 'Arial Unicode MS', # Arial Unicode + 'DejaVu Sans' # 备用字体 + ] + + # 查找可用的中文字体 + available_fonts = [f.name for f in fm.fontManager.ttflist] + selected_font = None + + for font in chinese_fonts: + if font in available_fonts: + selected_font = font + break + + if selected_font: + plt.rcParams['font.sans-serif'] = [selected_font] + plt.rcParams['font.sans-serif'] + print(f"使用字体: {selected_font}") + else: + print("警告: 未找到合适的中文字体,可能显示为方块") + # 使用系统默认字体 + plt.rcParams['font.sans-serif'] = ['DejaVu Sans'] + + plt.rcParams['axes.unicode_minus'] = False + +# 初始化字体设置 +setup_chinese_font() + +def load_and_preprocess_data(file_path): + """加载和预处理数据""" + print("正在加载数据...") + + # 读取CSV文件 + df = pd.read_csv(file_path, delimiter=';') + + # 清理列名 + df.columns = [col.strip().replace('"', '') for col in df.columns] + + # 转换时间列 + df['Time'] = pd.to_datetime(df['Time']) + + # 处理Value列,移除引号并转换为数值 + df['Value'] = df['Value'].astype(str).str.replace('"', '').astype(float) + + # 按时间排序 + df = df.sort_values('Time').reset_index(drop=True) + + # 检查缺失值 + missing_count = df['Value'].isnull().sum() + if missing_count > 0: + print(f"发现 {missing_count} 个缺失值,使用前向填充") + df['Value'] = df['Value'].fillna(method='ffill') + + print(f"数据加载完成,共 {len(df)} 个数据点") + print(f"时间范围:{df['Time'].min()} 到 {df['Time'].max()}") + print(f"数值范围:{df['Value'].min():.2f} 到 {df['Value'].max():.2f}") + + return df + +def perform_stl_decomposition(data, seasonal_period=144): + """执行STL分解""" + print("正在执行STL分解...") + + # 设置窗口大小 + trend_window = max(seasonal_period + 1, len(data) // 10) + seasonal_window = max(7, seasonal_period // 2) + # 确保窗口都是奇数 + if trend_window % 2 == 0: + trend_window += 1 + if seasonal_window % 2 == 0: + seasonal_window += 1 + + print(f"趋势窗口大小: {trend_window}") + print(f"季节性窗口大小: {seasonal_window}") + print(f"季节性周期: {seasonal_period}") + + # 执行STL分解 + stl = STL( + data['Value'], + period=seasonal_period, + trend=trend_window, + seasonal=seasonal_window, + robust=True + ) + + stl_result = stl.fit() + + # 计算残差 + data['trend'] = stl_result.trend + data['seasonal'] = stl_result.seasonal + data['residual'] = stl_result.resid + + print("STL分解完成") + + return data, stl_result + +def calculate_anomaly_scores(data, method='zscore'): + """计算异常分数""" + print(f"正在计算异常分数,使用 {method} 方法...") + + residuals = data['residual'].values + + if method == 'zscore': + # 基于Z-Score的异常分数 + z_scores = np.abs(stats.zscore(residuals)) + anomaly_scores = z_scores + + elif method == 'iqr': + # 基于IQR的异常分数 + Q1 = np.percentile(residuals, 25) + Q3 = np.percentile(residuals, 75) + IQR = Q3 - Q1 + lower_bound = Q1 - 1.5 * IQR + upper_bound = Q3 + 1.5 * IQR + + # 计算到边界的距离 + distances = np.maximum( + (lower_bound - residuals) / IQR, + (residuals - upper_bound) / IQR + ) + anomaly_scores = np.maximum(distances, 0) + + elif method == 'modified_zscore': + # 基于Modified Z-Score的异常分数 + median = np.median(residuals) + mad = np.median(np.abs(residuals - median)) + modified_z_scores = np.abs(0.6745 * (residuals - median) / mad) + anomaly_scores = modified_z_scores + + # 将异常分数添加到数据中 + data['anomaly_score'] = anomaly_scores + + # 设置异常阈值 + thresholds = { + 'mild': np.percentile(anomaly_scores, 95), # 95%分位数 + 'moderate': np.percentile(anomaly_scores, 98), # 98%分位数 + 'severe': np.percentile(anomaly_scores, 99.5) # 99.5%分位数 + } + + print(f"异常阈值设置完成:") + print(f" 轻微异常: {thresholds['mild']:.3f}") + print(f" 明显异常: {thresholds['moderate']:.3f}") + print(f" 严重异常: {thresholds['severe']:.3f}") + + return data, thresholds + +def detect_anomalies(data, thresholds): + """检测异常点""" + print("正在检测异常点...") + + # 标记异常点 + data['anomaly_level'] = 'normal' + + # 基于阈值标记异常 + data.loc[data['anomaly_score'] >= thresholds['severe'], 'anomaly_level'] = 'severe' + data.loc[(data['anomaly_score'] >= thresholds['moderate']) & + (data['anomaly_score'] < thresholds['severe']), 'anomaly_level'] = 'moderate' + data.loc[(data['anomaly_score'] >= thresholds['mild']) & + (data['anomaly_score'] < thresholds['moderate']), 'anomaly_level'] = 'mild' + + # 统计异常点 + anomaly_counts = data['anomaly_level'].value_counts() + print("异常检测完成:") + for level, count in anomaly_counts.items(): + print(f" {level}: {count} 个点 ({count/len(data)*100:.2f}%)") + + return data + +def create_visualizations(data, thresholds, save_path='stl_analysis_results'): + """创建可视化图表""" + print("正在生成可视化图表...") + + # 设置图表样式 + plt.style.use('default') + sns.set_palette("husl") + + # 1. STL分解结果图 + plot_stl_decomposition(data, save_path) + + # 2. 异常分数分布图 + plot_anomaly_scores(data, thresholds, save_path) + + # 3. 异常点标记图 + plot_anomaly_points(data, save_path) + + # 4. 残差分析图 + plot_residual_analysis(data, save_path) + + print(f"可视化图表已保存到 {save_path}_*.png") + +def plot_stl_decomposition(data, save_path): + """绘制STL分解结果""" + fig, axes = plt.subplots(4, 1, figsize=(15, 12)) + + # 原始数据 + axes[0].plot(data['Time'], data['Value'], 'b-', linewidth=0.8) + axes[0].set_title('Original Time Series Data', fontsize=14, fontweight='bold') + axes[0].set_ylabel('Value') + axes[0].grid(True, alpha=0.3) + + # 趋势组件 + axes[1].plot(data['Time'], data['trend'], 'r-', linewidth=1.2) + axes[1].set_title('Trend Component', fontsize=14, fontweight='bold') + axes[1].set_ylabel('Trend Value') + axes[1].grid(True, alpha=0.3) + + # 季节性组件 + axes[2].plot(data['Time'], data['seasonal'], 'g-', linewidth=0.8) + axes[2].set_title('Seasonal Component', fontsize=14, fontweight='bold') + axes[2].set_ylabel('Seasonal Value') + axes[2].grid(True, alpha=0.3) + + # 残差组件 + axes[3].plot(data['Time'], data['residual'], 'purple', linewidth=0.8) + axes[3].set_title('Residual Component', fontsize=14, fontweight='bold') + axes[3].set_ylabel('Residual Value') + axes[3].set_xlabel('Time') + axes[3].grid(True, alpha=0.3) + + plt.tight_layout() + plt.savefig(f'{save_path}_stl_decomposition.png', dpi=300, bbox_inches='tight') + plt.show() + +def plot_anomaly_scores(data, thresholds, save_path): + """绘制异常分数分布""" + fig, axes = plt.subplots(2, 2, figsize=(15, 10)) + + # 异常分数时间序列 + axes[0, 0].plot(data['Time'], data['anomaly_score'], 'b-', linewidth=0.8) + axes[0, 0].axhline(y=thresholds['mild'], color='orange', linestyle='--', label='Mild Anomaly Threshold') + axes[0, 0].axhline(y=thresholds['moderate'], color='red', linestyle='--', label='Moderate Anomaly Threshold') + axes[0, 0].axhline(y=thresholds['severe'], color='darkred', linestyle='--', label='Severe Anomaly Threshold') + axes[0, 0].set_title('Anomaly Score Time Series', fontsize=14, fontweight='bold') + axes[0, 0].set_ylabel('Anomaly Score') + axes[0, 0].legend() + axes[0, 0].grid(True, alpha=0.3) + + # 异常分数分布直方图 + axes[0, 1].hist(data['anomaly_score'], bins=50, alpha=0.7, color='skyblue', edgecolor='black') + axes[0, 1].axvline(x=thresholds['mild'], color='orange', linestyle='--', label='Mild Anomaly Threshold') + axes[0, 1].axvline(x=thresholds['moderate'], color='red', linestyle='--', label='Moderate Anomaly Threshold') + axes[0, 1].axvline(x=thresholds['severe'], color='darkred', linestyle='--', label='Severe Anomaly Threshold') + axes[0, 1].set_title('Anomaly Score Distribution', fontsize=14, fontweight='bold') + axes[0, 1].set_xlabel('Anomaly Score') + axes[0, 1].set_ylabel('Frequency') + axes[0, 1].legend() + axes[0, 1].grid(True, alpha=0.3) + + # 异常分数箱线图 + anomaly_data = [data[data['anomaly_level'] == level]['anomaly_score'].values + for level in ['normal', 'mild', 'moderate', 'severe']] + labels = ['Normal', 'Mild', 'Moderate', 'Severe'] + axes[1, 0].boxplot(anomaly_data, labels=labels) + axes[1, 0].set_title('Anomaly Score Boxplot', fontsize=14, fontweight='bold') + axes[1, 0].set_ylabel('Anomaly Score') + axes[1, 0].grid(True, alpha=0.3) + + # 异常等级统计 + anomaly_counts = data['anomaly_level'].value_counts() + colors = ['lightgreen', 'orange', 'red', 'darkred'] + axes[1, 1].pie(anomaly_counts.values, labels=anomaly_counts.index, autopct='%1.1f%%', + colors=colors, startangle=90) + axes[1, 1].set_title('Anomaly Level Distribution', fontsize=14, fontweight='bold') + + plt.tight_layout() + plt.savefig(f'{save_path}_anomaly_scores.png', dpi=300, bbox_inches='tight') + plt.show() + +def plot_anomaly_points(data, save_path): + """绘制异常点标记图""" + fig, axes = plt.subplots(2, 1, figsize=(15, 10)) + + # 原始数据与异常点 + normal_data = data[data['anomaly_level'] == 'normal'] + mild_data = data[data['anomaly_level'] == 'mild'] + moderate_data = data[data['anomaly_level'] == 'moderate'] + severe_data = data[data['anomaly_level'] == 'severe'] + + axes[0].plot(normal_data['Time'], normal_data['Value'], 'b-', linewidth=0.8, label='Normal Data') + axes[0].scatter(mild_data['Time'], mild_data['Value'], c='orange', s=20, label='Mild Anomaly', alpha=0.7) + axes[0].scatter(moderate_data['Time'], moderate_data['Value'], c='red', s=30, label='Moderate Anomaly', alpha=0.8) + axes[0].scatter(severe_data['Time'], severe_data['Value'], c='darkred', s=40, label='Severe Anomaly', alpha=0.9) + axes[0].set_title('Original Data with Anomaly Points', fontsize=14, fontweight='bold') + axes[0].set_ylabel('Value') + axes[0].legend() + axes[0].grid(True, alpha=0.3) + + # 残差与异常点 + axes[1].plot(normal_data['Time'], normal_data['residual'], 'b-', linewidth=0.8, label='Normal Residual') + axes[1].scatter(mild_data['Time'], mild_data['residual'], c='orange', s=20, label='Mild Anomaly', alpha=0.7) + axes[1].scatter(moderate_data['Time'], moderate_data['residual'], c='red', s=30, label='Moderate Anomaly', alpha=0.8) + axes[1].scatter(severe_data['Time'], severe_data['residual'], c='darkred', s=40, label='Severe Anomaly', alpha=0.9) + axes[1].axhline(y=0, color='black', linestyle='-', alpha=0.5) + axes[1].set_title('Residuals with Anomaly Points', fontsize=14, fontweight='bold') + axes[1].set_ylabel('Residual Value') + axes[1].set_xlabel('Time') + axes[1].legend() + axes[1].grid(True, alpha=0.3) + + plt.tight_layout() + plt.savefig(f'{save_path}_anomaly_points.png', dpi=300, bbox_inches='tight') + plt.show() + +def plot_residual_analysis(data, save_path): + """绘制残差分析图""" + fig, axes = plt.subplots(2, 2, figsize=(15, 10)) + + # 残差分布直方图 + axes[0, 0].hist(data['residual'], bins=50, alpha=0.7, color='lightblue', edgecolor='black') + axes[0, 0].set_title('Residual Distribution', fontsize=14, fontweight='bold') + axes[0, 0].set_xlabel('Residual Value') + axes[0, 0].set_ylabel('Frequency') + axes[0, 0].grid(True, alpha=0.3) + + # Q-Q图 + stats.probplot(data['residual'], dist="norm", plot=axes[0, 1]) + axes[0, 1].set_title('Residual Q-Q Plot', fontsize=14, fontweight='bold') + axes[0, 1].grid(True, alpha=0.3) + + # 残差自相关图 + from statsmodels.graphics.tsaplots import plot_acf + plot_acf(data['residual'].dropna(), lags=50, ax=axes[1, 0]) + axes[1, 0].set_title('Residual Autocorrelation', fontsize=14, fontweight='bold') + axes[1, 0].grid(True, alpha=0.3) + + # 残差与拟合值散点图 + fitted_values = data['trend'] + data['seasonal'] + axes[1, 1].scatter(fitted_values, data['residual'], alpha=0.6, s=10) + axes[1, 1].axhline(y=0, color='red', linestyle='--') + axes[1, 1].set_title('Residual vs Fitted Values', fontsize=14, fontweight='bold') + axes[1, 1].set_xlabel('Fitted Values') + axes[1, 1].set_ylabel('Residual Values') + axes[1, 1].grid(True, alpha=0.3) + + plt.tight_layout() + plt.savefig(f'{save_path}_residual_analysis.png', dpi=300, bbox_inches='tight') + plt.show() + +def main(): + """主函数""" + print("=== STL分解异常检测 ===") + + # 加载数据 + data = load_and_preprocess_data('yzh_mirror_data.csv') + + # 执行STL分解 + data, stl_result = perform_stl_decomposition(data, seasonal_period=144) + + # 计算异常分数 + data, thresholds = calculate_anomaly_scores(data, method='zscore') + + # 检测异常点 + data = detect_anomalies(data, thresholds) + + # 创建可视化 + create_visualizations(data, thresholds) + + # 保存结果 + result_columns = ['Time', 'Value', 'trend', 'seasonal', 'residual', + 'anomaly_score', 'anomaly_level'] + data[result_columns].to_csv('stl_anomaly_results.csv', index=False) + + # 打印摘要 + print("\n=== 异常检测摘要 ===") + anomaly_counts = data['anomaly_level'].value_counts() + print(f"总数据点: {len(data)}") + print(f"异常点统计:") + for level, count in anomaly_counts.items(): + percentage = count / len(data) * 100 + print(f" {level}: {count} 个点 ({percentage:.2f}%)") + + print(f"\n异常阈值:") + for level, threshold in thresholds.items(): + print(f" {level}: {threshold:.3f}") + + print("\n=== 分析完成 ===") + print("结果已保存到 stl_anomaly_results.csv") + +if __name__ == "__main__": + main() diff --git a/anomaly_detection/stl_anomaly_results.csv b/anomaly_detection/stl_anomaly_results.csv new file mode 100644 index 0000000..266c2fa --- /dev/null +++ b/anomaly_detection/stl_anomaly_results.csv @@ -0,0 +1,1010 @@ +Time,Value,trend,seasonal,residual,anomaly_score,anomaly_level +2025-07-14 00:00:00+08:00,2392.4649649735443,2262.368522760809,-435.86964873819244,565.966090950928,0.30989871493960036,normal +2025-07-14 00:10:00+08:00,1499.0522545027752,2259.9572942855593,-928.4723997260509,167.56735994326664,0.03003302354684861,normal +2025-07-14 00:20:00+08:00,1916.094303250783,2257.552765623712,-469.2043670147958,127.74590464186713,0.00205939247627821,normal +2025-07-14 00:30:00+08:00,1208.302658310115,2255.154728735571,-539.5183662021954,-507.3337042232606,0.4440690210729592,normal +2025-07-14 00:40:00+08:00,2536.5687803548194,2252.762939819943,401.96232261486585,-118.15648207998947,0.17068122168425434,normal +2025-07-14 00:50:00+08:00,2301.501287436792,2250.3772935139127,103.50405475537137,-52.380060832491836,0.12447484054641429,normal +2025-07-14 01:00:00+08:00,13366.959897823192,2247.997771335932,11120.58137403511,-1.6192475478501365,0.08881656907141945,normal +2025-07-14 01:10:00+08:00,1504.2321128272538,2245.624387573216,2903.0106534162483,-3644.4029281622106,2.6477859984940393,moderate +2025-07-14 01:20:00+08:00,1754.4535089750373,2243.2571625693076,-539.576961053687,50.77330745941663,0.05201203760653505,normal +2025-07-14 01:30:00+08:00,2282.4834594271874,2240.8961121347584,-111.48815719445248,153.07550448688153,0.019852837639612257,normal +2025-07-14 01:40:00+08:00,1930.3253685487236,2238.541218341388,-742.6514254117302,434.4355756190662,0.21750163696826377,normal +2025-07-14 01:50:00+08:00,2461.466695219779,2236.192369715154,-1835.7309093794117,2061.0052348840363,1.360128374601897,normal +2025-07-14 02:00:00+08:00,4451.764052389372,2233.8493135840104,2050.029129027654,167.88560977770794,0.03025658653292105,normal +2025-07-14 02:10:00+08:00,2118.051671571828,2231.511746137258,21.49228063269458,-134.95235519812422,0.18247992553770945,normal +2025-07-14 02:20:00+08:00,955.1111006706734,2229.179309621575,-1089.055932528774,-185.0122764221278,0.2176458369074247,normal +2025-07-14 02:30:00+08:00,3319.5683798946648,2226.8516885760837,907.232680882711,185.48401043587,0.0426190470135205,normal +2025-07-14 02:40:00+08:00,2621.0818653677143,2224.5286220367525,440.56615600924704,-44.012912678285375,0.11859711674634138,normal +2025-07-14 02:50:00+08:00,1331.351343484746,2222.209800377462,-1947.4457906519358,1056.5873337592197,0.654548540964958,normal +2025-07-14 03:00:00+08:00,4170.315135131283,2219.894895046307,-2071.86054023281,4022.280780317786,2.7378780856670093,moderate +2025-07-14 03:10:00+08:00,2924.1173758053724,2217.583524414833,795.5560594280021,-89.0222080374624,0.1502150828300597,normal +2025-07-14 03:20:00+08:00,3987.615255809612,2215.275294231755,-531.5286939419441,2303.8686555198005,1.5307341869204354,normal +2025-07-14 03:30:00+08:00,923.1584437985824,2212.9698331610907,-814.8507698934736,-474.96061946903455,0.42132769425110395,normal +2025-07-14 03:40:00+08:00,2304.9379463524847,2210.6667994799723,116.32957748537304,-22.058430612860775,0.10317461204390631,normal +2025-07-14 03:50:00+08:00,3001.056073599605,2208.3659636397238,984.4749275647049,-191.78481760482373,0.22240338700249423,normal +2025-07-14 04:00:00+08:00,3271.412855004965,2206.067145748666,1298.6859037161635,-233.3401944598645,0.2515950569789699,normal +2025-07-14 04:10:00+08:00,4810.061139118233,2203.770246514541,2625.6341138434354,-19.343221239743798,0.10126724163998589,normal +2025-07-14 04:20:00+08:00,3690.683937899749,2201.475258536297,1394.933148855141,94.27553050831057,0.021452754197406217,normal +2025-07-14 04:30:00+08:00,3900.095811989063,2199.1821972980442,3260.131728400735,-1559.2181137097164,1.182992954845535,normal +2025-07-14 04:40:00+08:00,3405.413638697049,2196.8910558868006,3437.2413131676353,-2228.718730357387,1.65330131273629,normal +2025-07-14 04:50:00+08:00,2970.203076788919,2194.601825711992,807.6576589671166,-32.0564078901898,0.11019795475428984,normal +2025-07-14 05:00:00+08:00,11733.768154342426,2192.314507142183,6816.079427197138,2725.3742200031047,1.8268318826426226,mild +2025-07-14 05:10:00+08:00,4641.369737000938,2190.029118053543,4410.541350181568,-1959.2007312341734,1.4639712890772574,normal +2025-07-14 05:20:00+08:00,3633.100288309234,2187.745687107245,1701.2593233878474,-255.9047221858582,0.2674461043380155,normal +2025-07-14 05:30:00+08:00,6437.431718843744,2185.4642708346164,4441.808140337411,-189.84069232828278,0.22103768494993725,normal +2025-07-14 05:40:00+08:00,6062.117398036187,2183.1850275732495,3792.052568977,86.8798014859376,0.026648079019261754,normal +2025-07-14 05:50:00+08:00,3754.7995227466176,2180.908204217422,1216.975233130334,356.9160853988619,0.16304602745359914,normal +2025-07-14 06:00:00+08:00,7575.361092977691,2178.6340328604506,2343.8306675642507,3052.89639255299,2.056908467061681,mild +2025-07-14 06:10:00+08:00,2343.957281956409,2176.3626616513343,195.77796373800388,-28.183343432929178,0.10747721852252937,normal +2025-07-14 06:20:00+08:00,4024.499687082512,2174.094232832445,1946.6232944045385,-96.2178401544711,0.15526984430568247,normal +2025-07-14 06:30:00+08:00,4443.422710791914,2171.828922695624,2250.4053475085125,21.188440587777677,0.07279470727230396,normal +2025-07-14 06:40:00+08:00,3773.717777634512,2169.5669595834806,1615.143898303367,-10.993080252335858,0.09540146497258245,normal +2025-07-14 06:50:00+08:00,3711.489758919348,2167.308597672649,1604.2859791654482,-60.10481791874918,0.1299012998057559,normal +2025-07-14 07:00:00+08:00,3028.9268084714354,2165.0541244157657,447.0887520763637,416.7839319793061,0.20510177455162137,normal +2025-07-14 07:10:00+08:00,3208.194831698865,2162.803850498215,883.059602957259,162.3313782433911,0.026354870168073707,normal +2025-07-14 07:20:00+08:00,3750.293995269002,2160.5579963285377,2137.113916516016,-547.3779175755517,0.47219913440884304,normal +2025-07-14 07:30:00+08:00,4415.423720841458,2158.3167520734887,2170.194140178165,86.91282858980412,0.026624878259472875,normal +2025-07-14 07:40:00+08:00,1904.378748893648,2156.0804337097475,-604.5641302307635,352.86244541466385,0.16019844118251464,normal +2025-07-14 07:50:00+08:00,3014.569785492415,2153.8493656189567,554.1228399406955,306.597579932763,0.12769846676609048,normal +2025-07-14 08:00:00+08:00,2915.8901576658523,2151.6237635841017,794.6997846910214,-30.433390609270646,0.10905782347847488,normal +2025-07-14 08:10:00+08:00,1058.7360213656486,2149.4037390104186,-740.4242362617728,-350.2434813829973,0.3337168527439233,normal +2025-07-14 08:20:00+08:00,1790.3179310193468,2147.1894300824074,-286.21259053764993,-70.65890852541042,0.1373152989848803,normal +2025-07-14 08:30:00+08:00,1651.3825851440906,2144.981120677343,-378.10163816743653,-115.49689736581581,0.1688129262884151,normal +2025-07-14 08:40:00+08:00,1912.2178103165504,2142.7792043529716,-70.48466202302558,-160.0767320133957,0.20012920637360337,normal +2025-07-14 08:50:00+08:00,1947.749792820818,2140.5842031131115,177.2089670436884,-370.04337733598186,0.3476258116313451,normal +2025-07-14 09:00:00+08:00,1466.0417791830196,2138.396831246061,1869.0774338010913,-2541.432485864133,1.8729753342161337,mild +2025-07-14 09:10:00+08:00,2229.318007094276,2136.218071929077,62.035860457678986,31.06407470751992,0.06585730773824178,normal +2025-07-14 09:20:00+08:00,2117.230821265878,2134.049105301239,-113.8782390179883,97.05995498262746,0.019496761820963104,normal +2025-07-14 09:30:00+08:00,2524.0631420646287,2131.8912937917835,123.89101001649264,268.2808382563526,0.10078186144944393,normal +2025-07-14 09:40:00+08:00,2861.451312905756,2129.7461724282093,529.0348249394254,202.67031553812103,0.05469202010699094,normal +2025-07-14 09:50:00+08:00,1666.0083855854336,2127.6154167759014,-214.06659581136256,-247.54043537910525,0.2615703905668937,normal +2025-07-14 10:00:00+08:00,1600.8648802433331,2125.5009480051717,-302.9864929072618,-221.6495748545767,0.24338267304298639,normal +2025-07-14 10:10:00+08:00,1214.0080508937745,2123.4052356120983,-1120.2323919384637,210.83520722013964,0.06042766351618423,normal +2025-07-14 10:20:00+08:00,1596.3143660152932,2121.33141937336,-851.389326735017,326.3722733769505,0.14158972148680601,normal +2025-07-14 10:30:00+08:00,966.1276924346802,2119.2831990005766,-1167.5149616295973,14.359455063700807,0.07759190818299189,normal +2025-07-14 10:40:00+08:00,959.960077142546,2117.2648609549738,-944.8071409292281,-212.49764288319966,0.23695365716165914,normal +2025-07-14 10:50:00+08:00,947.7992631077184,2115.2815396415394,-818.9303086439018,-348.5519678899193,0.3325286044981443,normal +2025-07-14 11:00:00+08:00,968.5399424572884,2113.339475585767,-907.7286061799405,-237.07092694853827,0.25421580836716645,normal +2025-07-14 11:10:00+08:00,1796.2069016683097,2111.4460829760715,-593.0588844033329,277.8197030955712,0.10748268852431377,normal +2025-07-14 11:20:00+08:00,1761.34981084255,2109.609584953786,-681.5974579936457,333.3376838824097,0.14648275772217292,normal +2025-07-14 11:30:00+08:00,1979.951652301946,2107.837940823696,-275.9662189227676,148.07993040101746,0.016343564927051395,normal +2025-07-14 11:40:00+08:00,4790.2177457663565,2106.137312847153,-737.4747030294066,3421.55513594861,2.3158825201351934,moderate +2025-07-14 11:50:00+08:00,1455.3939063222506,2104.5097900026826,-342.3836725730892,-306.7322111073429,0.30315121387184885,normal +2025-07-14 12:00:00+08:00,1748.7909295927684,2102.949958148568,-408.7314899651402,54.572461409340576,0.04934322175912081,normal +2025-07-14 12:10:00+08:00,1430.9916751795392,2101.875144389759,-601.8624438000525,-69.02102541016734,0.13616472481184355,normal +2025-07-14 12:20:00+08:00,1214.7914028281025,2100.8770663738555,-555.0766698264923,-331.0089937192606,0.3202050798148738,normal +2025-07-14 12:30:00+08:00,1526.277467859382,2099.9592592161202,-937.8570627889956,364.17527143225743,0.16814543405322951,normal +2025-07-14 12:40:00+08:00,984.2511934117192,2099.124399262458,-618.6745018195151,-496.19870403122377,0.4362469466413444,normal +2025-07-14 12:50:00+08:00,966.6904968013548,2098.3729105469383,-1039.516876459932,-92.16553728565145,0.1524231973265453,normal +2025-07-14 13:00:00+08:00,1226.3109129203633,2097.704914988308,-762.0693577947386,-109.32464427320588,0.16447706438733614,normal +2025-07-14 13:10:00+08:00,1890.9361883701824,2097.1193723315378,-190.44986818944545,-15.733315771909929,0.09873136837788363,normal +2025-07-14 13:20:00+08:00,1617.0764994286596,2096.6140225759455,-498.9142028033898,19.37667965610399,0.0740674265013506,normal +2025-07-14 13:30:00+08:00,987.9993732436246,2096.185408099373,-1067.3500178162665,-40.83601703948216,0.11636542265387405,normal +2025-07-14 13:40:00+08:00,2289.3019314884687,2095.8291272536635,-234.20762925745066,427.6804334922558,0.2127563092986841,normal +2025-07-14 13:50:00+08:00,1896.4525727570167,2095.5416926003336,-334.28152439148545,135.19240454816872,0.0072903826439981,normal +2025-07-14 14:00:00+08:00,2169.6915288953523,2095.3203617834383,-187.64488673386083,262.0160538457749,0.09638099848469932,normal +2025-07-14 14:10:00+08:00,1347.2518606592594,2095.1619908969415,-721.2859476170213,-26.624182620660577,0.10638194490653574,normal +2025-07-14 14:20:00+08:00,1262.87544886029,2095.0636955871914,-835.119971123937,2.9317243970353957,0.08561961885362393,normal +2025-07-14 14:30:00+08:00,988.1500095484856,2095.0230070271064,-1066.5897972946693,-40.28320018395152,0.1159770818800585,normal +2025-07-14 14:40:00+08:00,1697.4621205649278,2095.037737529227,-262.1333133593766,-135.44230360492247,0.1828241027123419,normal +2025-07-14 14:50:00+08:00,1142.474968952154,2095.1064900392034,460.3092272177235,-1412.9407483047728,1.0802365632761615,normal +2025-07-14 15:00:00+08:00,1196.592194007529,2095.228554967809,-602.9345019952762,-295.7018589650038,0.29540265222153106,normal +2025-07-14 15:10:00+08:00,1256.4843967257607,2095.404555523269,-753.0694742309183,-85.85068456659019,0.1479871625585794,normal +2025-07-14 15:20:00+08:00,991.4270993283488,2095.6357925467164,-1008.4530326110313,-95.75566060733627,0.15494517409857783,normal +2025-07-14 15:30:00+08:00,1277.8670278756006,2095.923990705725,1374.3802514510303,-2192.4372142811544,1.6278144052961738,normal +2025-07-14 15:40:00+08:00,2211.1657597272524,2096.2721715649136,-77.07945483411076,191.97304299644975,0.04717743900298144,normal +2025-07-14 15:50:00+08:00,944.895188917142,2096.683628445159,-90.48500660280888,-1061.3034329252077,0.8332196610403445,normal +2025-07-14 16:00:00+08:00,1360.6047232543456,2097.1612336334856,-283.01668702321547,-453.53982335592445,0.40628009131518134,normal +2025-07-14 16:10:00+08:00,1897.1778035144257,2097.70745626674,-324.98876147529535,124.459108722981,0.00024950396518222146,normal +2025-07-14 16:20:00+08:00,2263.792657790043,2098.324054699947,203.12374503390072,-37.655141943804665,0.11413093308701684,normal +2025-07-14 16:30:00+08:00,34109.276874739284,2099.013243612546,-739.1675989336189,32749.43123006036,22.91802223930438,severe +2025-07-14 16:40:00+08:00,1784.7959618736245,2099.777768299188,-394.9549391598227,79.9731327342588,0.03149985056110467,normal +2025-07-14 16:50:00+08:00,1282.962522502106,2100.620243540963,-537.5388317222255,-280.1188893166318,0.2844559843856086,normal +2025-07-14 17:00:00+08:00,2340.1041184992314,2101.5418335084696,202.48180319952593,36.0804817912358,0.062333400337129495,normal +2025-07-14 17:10:00+08:00,1851.977794594737,2102.543331966192,-143.32591174659555,-107.23962562485963,0.16301238807144952,normal +2025-07-14 17:20:00+08:00,996.4162110354268,2103.6247173216593,-568.3421330701095,-538.8663732161231,0.46621997568776324,normal +2025-07-14 17:30:00+08:00,1572.0774705767749,2104.784477259083,-248.31612088818542,-284.3908857941226,0.287456960931835,normal +2025-07-14 17:40:00+08:00,973.820950598001,2106.021622359786,-956.7609649949205,-175.43970676686422,0.21092133299598,normal +2025-07-14 17:50:00+08:00,1598.4462273173626,2107.3360189290593,-729.6444958708506,220.7547042591541,0.06739587571422648,normal +2025-07-14 18:00:00+08:00,991.3674759676156,2108.7277529098287,-1104.3071264002226,-13.053150541990362,0.09684861565620433,normal +2025-07-14 18:10:00+08:00,1373.415858740846,2110.195923807613,-985.0764216930486,248.29635662628198,0.08674323548700857,normal +2025-07-14 18:20:00+08:00,1175.6279236576877,2111.738231018928,-906.637016128849,-29.473291232391603,0.10838337636054259,normal +2025-07-14 18:30:00+08:00,996.956506092232,2113.3526821316323,-1109.7893448167345,-6.606831222665733,0.09232022870909191,normal +2025-07-14 18:40:00+08:00,990.5425094694642,2115.0367767663847,-1184.437688203023,59.9434209061028,0.045570249668567334,normal +2025-07-14 18:50:00+08:00,809.3980148277981,2116.787462760845,-1339.629860891467,32.240412958420166,0.06503095792265061,normal +2025-07-14 19:00:00+08:00,985.9852949963372,2118.601187103156,-1167.8464177653864,35.230525658567785,0.06293047442951175,normal +2025-07-14 19:10:00+08:00,851.802515694159,2120.473834433985,-1255.2933617088713,-13.377957030954349,0.0970767845370962,normal +2025-07-14 19:20:00+08:00,871.457908714505,2122.401042380115,-1228.7564175148655,-22.186716150744815,0.10326472960192362,normal +2025-07-14 19:30:00+08:00,852.9397482533846,2124.3791997303356,-1189.431822220975,-82.0076292559761,0.14528750704299767,normal +2025-07-14 19:40:00+08:00,809.4309908241964,2126.404862319495,-1203.6242539657903,-113.34961752950812,0.16730451295968288,normal +2025-07-14 19:50:00+08:00,691.4777649210907,2128.475265418946,-1194.4731315823274,-242.52436891552793,0.25804672244337734,normal +2025-07-14 20:00:00+08:00,713.5651216766132,2130.5893587947335,-1290.700761266841,-126.32347585127923,0.17641834176147253,normal +2025-07-14 20:10:00+08:00,863.2189568046698,2132.7480235970656,-1231.8607064754615,-37.66836031693447,0.11414021868169157,normal +2025-07-14 20:20:00+08:00,936.659322005676,2134.9531209326205,-1024.0228868522495,-174.27091207469493,0.21010028235208666,normal +2025-07-14 20:30:00+08:00,857.557607281998,2137.206360856059,-1047.8519317495873,-231.79682182447368,0.2505108741840402,normal +2025-07-14 20:40:00+08:00,885.5419981841394,2139.509085463639,-972.3623497090542,-281.60473757044565,0.28549975766221153,normal +2025-07-14 20:50:00+08:00,1318.479245921977,2141.861502898179,-821.3698890728567,-2.012367903345421,0.08909272682878223,normal +2025-07-14 21:00:00+08:00,2394.691211988621,2144.263116713226,-1372.1665433009205,1622.5946385763154,1.052155293615328,normal +2025-07-14 21:10:00+08:00,1093.5409202629537,2146.7120674164394,-872.4087706964195,-180.76237645706624,0.21466038263887405,normal +2025-07-14 21:20:00+08:00,1771.3322838645624,2149.2061557545667,-583.8662373794197,205.99236548941553,0.05702568167290193,normal +2025-07-14 21:30:00+08:00,1314.3306471284495,2151.7430944871235,-949.5589955831663,112.14654822449256,0.00889878667752672,normal +2025-07-14 21:40:00+08:00,1560.827539724267,2154.319592010419,-789.9019900971477,196.40993781099587,0.05029425273320888,normal +2025-07-14 21:50:00+08:00,1849.117882512552,2156.932259420251,-235.40738489950544,-72.40699200819336,0.1385432863112553,normal +2025-07-14 22:00:00+08:00,1408.9823331812386,2159.5778180855646,-766.146511821012,15.551026916686169,0.0767548571220198,normal +2025-07-14 22:10:00+08:00,1510.401133936611,2162.252810518203,-870.7819933565157,218.93031677492354,0.06611428663046845,normal +2025-07-14 22:20:00+08:00,937.1300820522052,2164.9525742235846,-1116.3859749254118,-111.43651724596748,0.1659606052313561,normal +2025-07-14 22:30:00+08:00,1070.3090212732643,2167.6701556136813,-928.6487113578908,-168.71242298252628,0.20619557515348633,normal +2025-07-14 22:40:00+08:00,2197.337485113677,2170.397291867744,-1094.30039985802,1121.2405931039525,0.6999659274148173,normal +2025-07-14 22:50:00+08:00,1613.963850776826,2173.125963290118,-863.8577304541009,304.6956179408089,0.1263623834243222,normal +2025-07-14 23:00:00+08:00,1013.7085176612284,2175.8480023114416,-1092.2232769449129,-69.91620770530062,0.13679356921432537,normal +2025-07-14 23:10:00+08:00,1250.6104099440463,2178.5536444473037,-989.0513009201609,61.10806641690351,0.04475211372650923,normal +2025-07-14 23:20:00+08:00,1539.381497487234,2181.2322191752564,-864.7325080286947,222.88178634067208,0.06889010059764288,normal +2025-07-14 23:30:00+08:00,929.6556875436802,2183.8720570121136,-1158.566760450017,-95.64960901841641,0.15487067536415344,normal +2025-07-14 23:40:00+08:00,2023.859799135074,2186.4609940594883,-594.7664593320728,432.16526440765847,0.21590679700667484,normal +2025-07-14 23:50:00+08:00,1742.658506943522,2188.9871602797907,-986.2916109093122,539.9629575730437,0.2916321283900574,normal +2025-07-15 00:00:00+08:00,1498.871258410551,2191.4395123315853,-468.1647459052717,-224.40350801576255,0.24531724599269258,normal +2025-07-15 00:10:00+08:00,1554.350376084984,2193.810205731668,-778.8517619411698,139.3919322944862,0.010240451619553101,normal +2025-07-15 00:20:00+08:00,1394.579873888856,2196.094131952354,-437.34484801100956,-364.1694100524885,0.3434994884604471,normal +2025-07-15 00:30:00+08:00,1738.0669385254316,2198.286322017497,-398.43967954230965,-61.77970394975546,0.13107786765246077,normal +2025-07-15 00:40:00+08:00,2970.8713123785387,2200.3821801634053,312.4566775687262,458.03245464640713,0.2340778867143276,normal +2025-07-15 00:50:00+08:00,3476.072893193625,2202.3776096323663,131.1286595049475,1142.5666240563114,0.7149469600653214,normal +2025-07-15 01:00:00+08:00,14552.472422384308,2204.269055184494,8924.340596762171,3423.8627704376427,2.317503578817086,moderate +2025-07-15 01:10:00+08:00,4651.271492083917,2206.054079505327,2528.5837028371266,-83.36629025853654,0.1462419342819806,normal +2025-07-15 01:20:00+08:00,2215.550308062743,2207.7303246295187,331.1409091443766,-323.3209257111521,0.3148043937656945,normal +2025-07-15 01:30:00+08:00,2413.6171490769666,2209.296937347897,131.020566875821,73.29964485324899,0.036187818053109666,normal +2025-07-15 01:40:00+08:00,4728.679591687594,2210.7536728469536,-142.53371701606906,2660.45963585671,1.7812309216966544,mild +2025-07-15 01:50:00+08:00,3517.591270570895,2212.101776527995,-1255.6834362868958,2561.172930329796,1.7114843579510386,normal +2025-07-15 02:00:00+08:00,4216.831486134892,2213.342604639058,2192.9299144498045,-189.441032953971,0.22075693368642177,normal +2025-07-15 02:10:00+08:00,2201.358455066988,2214.47711661579,-72.24548693754822,59.12682538874651,0.04614388871725383,normal +2025-07-15 02:20:00+08:00,1298.521249031328,2215.506452535842,-1005.6240134904632,88.63880998594914,0.025412417126523475,normal +2025-07-15 02:30:00+08:00,876.7833839952468,2216.4330095802443,1378.1404455788058,-2717.790071163803,1.9968623692411003,mild +2025-07-15 02:40:00+08:00,910.1316505639112,2217.2626977008604,551.7936593984967,-1858.924706535446,1.39352975199845,normal +2025-07-15 02:50:00+08:00,1084.8528568167555,2218.0041136851064,-1154.5508367760851,21.399579907734278,0.07264638689083489,normal +2025-07-15 03:00:00+08:00,599.7171348406605,2218.667084683507,-1578.7366658543663,-40.213283988479816,0.11592796740538196,normal +2025-07-15 03:10:00+08:00,977.452937144314,2219.26041119168,703.8404030651444,-1945.6478771125103,1.4544507294120423,normal +2025-07-15 03:20:00+08:00,2320.628749677141,2219.7924708524106,-176.09320089631902,276.9294797210496,0.10685732764634528,normal +2025-07-15 03:30:00+08:00,2265.005675010066,2220.2688345048887,-543.2073909538857,587.9442314590633,0.32533783913881387,normal +2025-07-15 03:40:00+08:00,2446.874862197365,2220.693427384349,319.5863043090878,-93.40486949607157,0.15329379890968103,normal +2025-07-15 03:50:00+08:00,3517.0287317888947,2221.069595576858,1195.6008921250798,100.3582440869568,0.0171797916883987,normal +2025-07-15 04:00:00+08:00,6253.785190863624,2221.4002122834536,1444.0349218164165,2588.350056763754,1.7305756468722413,mild +2025-07-15 04:10:00+08:00,4675.018544415212,2221.6867427388393,2293.625806362748,159.70599531362495,0.024510600717336923,normal +2025-07-15 04:20:00+08:00,6904.805663709536,2221.9292782359503,1489.2311318773343,3193.645253596251,2.155781214996857,mild +2025-07-15 04:30:00+08:00,4979.867629821298,2222.1275779102007,2648.6279883367033,109.11206357439369,0.011030440416665468,normal +2025-07-15 04:40:00+08:00,4869.849553252716,2222.280007013691,2899.296464647396,-251.72691840837115,0.26451129593706413,normal +2025-07-15 04:50:00+08:00,4449.069373290859,2222.385348792095,501.25250488408955,1725.431519614675,1.1243957717405486,normal +2025-07-15 05:00:00+08:00,8004.086738718597,2222.4434993276545,5784.645278058511,-3.0020386675687405,0.08978794714733096,normal +2025-07-15 05:10:00+08:00,5894.8591335712645,2222.4544436218143,3953.995656625153,-281.59096667570293,0.285490083934164,normal +2025-07-15 05:20:00+08:00,4633.565476521968,2222.41807212522,1904.1512503647475,506.9961540320005,0.26847372815447623,normal +2025-07-15 05:30:00+08:00,6271.172402889849,2222.3339052601623,3457.110861284091,591.7276363455958,0.3279955916414637,normal +2025-07-15 05:40:00+08:00,5637.878316196367,2222.200722514307,3343.943616282498,71.73397739956226,0.03728766243089896,normal +2025-07-15 05:50:00+08:00,2949.623173587968,2222.015640165606,1018.4886774740697,-290.8811440517079,0.29201621394446997,normal +2025-07-15 06:00:00+08:00,4277.928344511081,2221.774021184762,2172.355643922332,-116.20132059601292,0.16930776695684194,normal +2025-07-15 06:10:00+08:00,3277.427297289553,2221.4713191393384,592.8102612152331,463.14571693498146,0.23766983260744046,normal +2025-07-15 06:20:00+08:00,4137.907062085869,2221.102724866218,1862.5029280834347,54.301409136216535,0.04953362957399906,normal +2025-07-15 06:30:00+08:00,5641.538972950302,2220.6633879556516,2190.7158144547748,1230.1597705398758,0.7764790749891962,normal +2025-07-15 06:40:00+08:00,5903.542009768298,2220.1484110154806,1845.781306259788,1837.6122924930296,1.2032001130173542,normal +2025-07-15 06:50:00+08:00,7672.687531102028,2219.553530489423,1609.2441036206628,3843.889896991942,2.6125627068406874,moderate +2025-07-15 07:00:00+08:00,2479.9696515205387,2218.8756936883133,527.4831248191463,-266.3891669869208,0.27481117898495794,normal +2025-07-15 07:10:00+08:00,6116.42177340247,2218.113671542097,612.5958689682052,3285.712232892168,2.220456091721297,mild +2025-07-15 07:20:00+08:00,4724.562175630068,2217.268209754733,2175.973992173392,331.3199737019427,0.14506536401396922,normal +2025-07-15 07:30:00+08:00,2403.117861325497,2216.341683316905,1860.696913821159,-1673.9207358125668,1.2635688355924002,normal +2025-07-15 07:40:00+08:00,3825.054604933868,2215.3375307491474,250.16038405079186,1359.556690133929,0.8673773523875385,normal +2025-07-15 07:50:00+08:00,1710.4388193435975,2214.260236603548,928.027681947303,-1431.8490992072534,1.0935192328394783,normal +2025-07-15 08:00:00+08:00,3031.442656473252,2213.115000469554,665.1674518135435,153.16020419015467,0.019912337179074504,normal +2025-07-15 08:10:00+08:00,2028.4580199285488,2211.906869602467,-396.1143518516432,212.6655021777251,0.06171340246033632,normal +2025-07-15 08:20:00+08:00,2182.6378310214905,2210.640838924792,-141.38875496197778,113.38574705867586,0.008028278788044683,normal +2025-07-15 08:30:00+08:00,1847.116950426496,2209.321991238518,-287.491460540567,-74.71358027145516,0.1401636100442738,normal +2025-07-15 08:40:00+08:00,3483.0701314126586,2207.9546842754867,6.540605697403468,1268.5748414397685,0.8034647542610845,normal +2025-07-15 08:50:00+08:00,2494.909483279121,2206.54142929883,211.95947781249433,76.40857616779704,0.03400386729192656,normal +2025-07-15 09:00:00+08:00,4044.3127790390463,2205.08234175526,1561.1228323782204,278.1076049055655,0.10768493274056287,normal +2025-07-15 09:10:00+08:00,2395.276503942772,2203.5760769514336,21.164811618330578,170.53561537300766,0.03211815282417752,normal +2025-07-15 09:20:00+08:00,2111.914305914104,2202.0214361877242,-44.798844484364,-45.30828578925639,0.11950708573744871,normal +2025-07-15 09:30:00+08:00,2336.01398048244,2200.4160684635913,70.89137512842014,64.7065368904282,0.04222427327761478,normal +2025-07-15 09:40:00+08:00,2618.1734257597577,2198.7580210393326,352.2568763019757,67.15852841844935,0.04050180718806889,normal +2025-07-15 09:50:00+08:00,2298.3279151973084,2197.045897101815,-137.02226159417827,238.3042796896716,0.07972403762651073,normal +2025-07-15 10:00:00+08:00,2106.0045303316147,2195.2786588327695,-223.85766057848124,134.58353207732625,0.006862664125439203,normal +2025-07-15 10:10:00+08:00,882.4425394738637,2193.454871893619,-982.2928691791027,-328.71946324065266,0.3185967387723716,normal +2025-07-15 10:20:00+08:00,919.3708625533096,2191.5732408752287,-655.3715155837925,-616.8308627381266,0.520988186693282,normal +2025-07-15 10:30:00+08:00,1295.670291559243,2189.633415032824,-923.2799725052256,29.31684903164478,0.06708469247554046,normal +2025-07-15 10:40:00+08:00,1537.5397365294325,2187.634739455698,-767.5613711963609,117.4663682700957,0.005161738842604997,normal +2025-07-15 10:50:00+08:00,1427.6001536049914,2185.5756925201,-685.8443835580963,-72.13115535701218,0.13834951758388253,normal +2025-07-15 11:00:00+08:00,1473.936295640324,2183.4554201852425,-735.3765324909018,25.85740794598314,0.06951486806576483,normal +2025-07-15 11:10:00+08:00,1278.3647667529724,2181.2741063324484,-441.25644245140734,-461.6528971280686,0.4119793338675324,normal +2025-07-15 11:20:00+08:00,1087.20312235079,2179.031537992832,-666.5892525894944,-425.2391630525476,0.3863995464082156,normal +2025-07-15 11:30:00+08:00,1632.7868061884585,2176.7273842918694,-287.08107008401606,-256.85950801939475,0.2681168188173485,normal +2025-07-15 11:40:00+08:00,1455.41532866152,2174.3621164064884,-610.749758545204,-108.19702919976453,0.16368494145221693,normal +2025-07-15 11:50:00+08:00,2324.942110215185,2171.9364573864555,-287.19606158697337,440.201714415703,0.22155221317593823,normal +2025-07-15 12:00:00+08:00,1866.3154421504155,2169.453300045944,-445.44711003951943,142.30925214399076,0.012289799855754418,normal +2025-07-15 12:10:00+08:00,1373.546084281064,2166.9174151840652,-586.044736668982,-207.32659423401947,0.23332111771614436,normal +2025-07-15 12:20:00+08:00,1673.9660894023514,2164.332443385936,-492.3989635016858,2.0326095181007986,0.08625122580326981,normal +2025-07-15 12:30:00+08:00,980.240386258656,2161.701863116081,-826.8285470150125,-354.6329298424123,0.3368003365311832,normal +2025-07-15 12:40:00+08:00,1586.2275022031502,2159.0287394746706,-641.257680153786,68.45644288226549,0.039590052956659016,normal +2025-07-15 12:50:00+08:00,1407.5430197646738,2156.31705597839,-863.1469823844329,114.37294617071666,0.007334794746730566,normal +2025-07-15 13:00:00+08:00,1393.65249508148,2153.573141915378,-573.1345133362914,-186.78613349760644,0.21889192957344578,normal +2025-07-15 13:10:00+08:00,2125.503862643421,2150.8044357413078,-202.28378972791688,176.98321663003026,0.03664744030222098,normal +2025-07-15 13:20:00+08:00,1486.590377656489,2148.019103611512,-486.9104550699844,-174.51827088503865,0.21027404606941538,normal +2025-07-15 13:30:00+08:00,1432.053757573127,2145.224915486866,-976.6998646752593,263.5287067615204,0.09744360140271477,normal +2025-07-15 13:40:00+08:00,1599.7611598796486,2142.4284682702173,-291.89500079285557,-250.77230759771305,0.2638407044071662,normal +2025-07-15 13:50:00+08:00,1645.0824757355558,2139.634668313925,-248.4117282730291,-246.14046430534017,0.2605869439793553,normal +2025-07-15 14:00:00+08:00,1393.2782028204408,2136.847784809568,-378.3569244812676,-365.2126575078596,0.34423234513810946,normal +2025-07-15 14:10:00+08:00,1337.5165936016983,2134.0724899750057,-723.8232543318474,-72.73264204146017,0.13877204776208063,normal +2025-07-15 14:20:00+08:00,2172.686656738733,2131.3127005709293,-766.7691703211331,808.1431264889366,0.480022357951376,normal +2025-07-15 14:30:00+08:00,1465.5300063243594,2128.5730721833097,-981.7988955392775,318.7558296803272,0.13623934982342728,normal +2025-07-15 14:40:00+08:00,2302.966147622326,2125.8587577380913,-287.52265683340215,464.630046717637,0.23871253919394753,normal +2025-07-15 14:50:00+08:00,2144.3990987107063,2123.173646232754,193.10420277975572,-171.8787503018034,0.20841984525129498,normal +2025-07-15 15:00:00+08:00,1974.7688104028696,2120.520679309311,-687.695777141507,541.9439082350655,0.29302369940545553,normal +2025-07-15 15:10:00+08:00,1026.0413648946562,2117.9024106703127,-794.7486497288933,-297.11239604676325,0.29639352117993173,normal +2025-07-15 15:20:00+08:00,1308.4074284749895,2115.3212489349116,-925.3208995038767,118.40707904395458,0.0045009117599967355,normal +2025-07-15 15:30:00+08:00,9240.14623012325,2112.7791252937463,1077.226813335325,6050.140291494179,4.162401458789488,severe +2025-07-15 15:40:00+08:00,1969.0411311517175,2110.2779172691485,-128.03275753132974,-13.20402858610123,0.09695460391581619,normal +2025-07-15 15:50:00+08:00,1844.152588957644,2107.821662195782,-187.7329512172057,-75.93612202093254,0.14102241672548135,normal +2025-07-15 16:00:00+08:00,1929.780142138901,2105.4146952598626,-314.4082235932266,138.77367047226517,0.009806137303591327,normal +2025-07-15 16:10:00+08:00,4099.34970568216,2103.0610009752154,-395.9728063506851,2392.26151105763,1.5928280785518285,normal +2025-07-15 16:20:00+08:00,2083.9243026264803,2100.7638710408146,178.95898670027728,-195.79855511461164,0.22522294272849933,normal +2025-07-15 16:30:00+08:00,1555.0606256502638,2098.52588751521,-608.2074168422306,64.74215497728437,0.042199252413519954,normal +2025-07-15 16:40:00+08:00,1738.4683142057784,2096.3491446618173,-397.2552257861438,39.37439533010502,0.060019503935873506,normal +2025-07-15 16:50:00+08:00,1778.4677911528822,2094.2349711608663,-517.1383530377727,201.37117302978868,0.0537794032033363,normal +2025-07-15 17:00:00+08:00,2088.279700366542,2092.184112484136,42.174453622786075,-46.07886574038048,0.12004839993854889,normal +2025-07-15 17:10:00+08:00,1706.6546328713343,2090.196877379115,-307.89870436524745,-75.64354014253331,0.1408168848718028,normal +2025-07-15 17:20:00+08:00,1798.3203964794982,2088.2729370928146,-698.2909291387235,408.338388525407,0.19916897990658136,normal +2025-07-15 17:30:00+08:00,1889.7094013893536,2086.41203893564,-423.1915685119866,226.48893096570055,0.0714240344329337,normal +2025-07-15 17:40:00+08:00,1095.4480845458324,2084.6150268847455,-1001.4240291190172,12.257086780104146,0.07906877220754034,normal +2025-07-15 17:50:00+08:00,1130.8221505580916,2082.883085194345,-858.7563764869641,-93.30455814928928,0.15322333255967344,normal +2025-07-15 18:00:00+08:00,859.0743252481669,2081.2164915238227,-1145.8819647991559,-76.26020147649979,0.14125007488259725,normal +2025-07-15 18:10:00+08:00,689.7767043205673,2079.6137079687287,-1077.191510786502,-312.6454928616595,0.30730515452920537,normal +2025-07-15 18:20:00+08:00,946.1906483553053,2078.071903342045,-971.0481690484369,-160.83308593830293,0.20066052712755353,normal +2025-07-15 18:30:00+08:00,900.0284698374401,2076.5880707096576,-1135.721394628949,-40.83820624326859,0.11636696051778676,normal +2025-07-15 18:40:00+08:00,744.6947287752316,2075.159728575165,-1214.985251439027,-115.47974836090634,0.16880087951782538,normal +2025-07-15 18:50:00+08:00,847.4041779213665,2073.7847915723723,-1259.7169086374874,33.336294986481334,0.06426112670182192,normal +2025-07-15 19:00:00+08:00,836.4857718906233,2072.462226575798,-1189.7066279679384,-46.269826717236356,0.12018254551095478,normal +2025-07-15 19:10:00+08:00,856.5258166418784,2071.1915535451963,-1233.9414983405438,19.27576143722581,0.07413831916466063,normal +2025-07-15 19:20:00+08:00,804.4528677886374,2069.971153102628,-1222.1612624041263,-43.3570229098641,0.11813636968760358,normal +2025-07-15 19:30:00+08:00,881.5135216859846,2068.7981834194916,-1199.2934400712422,12.008778337735293,0.07924320301891981,normal +2025-07-15 19:40:00+08:00,911.8862807837932,2067.6714091654158,-1206.57840641883,50.79327803720753,0.05199800874769098,normal +2025-07-15 19:50:00+08:00,911.2600089906324,2066.5882369665105,-1184.7080858528645,29.379857876986534,0.0670404302510579,normal +2025-07-15 20:00:00+08:00,928.4567787728556,2065.5434145432005,-1203.5878173333774,66.50118156303279,0.04096357781597902,normal +2025-07-15 20:10:00+08:00,978.0550882925984,2064.529375515774,-1124.5481961076096,38.07390888443388,0.060933064923741356,normal +2025-07-15 20:20:00+08:00,1191.8927545070362,2063.538538589186,-968.5138547011609,96.86807061901118,0.019631556050741652,normal +2025-07-15 20:30:00+08:00,975.13329348157,2062.565676812166,-1029.9046909815008,-57.52769234909533,0.12809093000981586,normal +2025-07-15 20:40:00+08:00,1123.240662180961,2061.607040308913,-916.2774940756692,-22.088884052282765,0.10319600486525783,normal +2025-07-15 20:50:00+08:00,1022.44177689622,2060.6594376155476,-794.6377624674999,-243.57989825182767,0.25878820685207937,normal +2025-07-15 21:00:00+08:00,5792.407072621629,2059.720703214303,-1176.8874439390029,4909.573813346329,3.361180468002483,moderate +2025-07-15 21:10:00+08:00,1142.5308925778588,2058.7895080859685,-908.9089268790567,-7.349688629052707,0.09284206847780524,normal +2025-07-15 21:20:00+08:00,1298.2494895402056,2057.864396505413,-665.1471042122021,-94.46780275300534,0.15404048439761847,normal +2025-07-15 21:30:00+08:00,1033.325020243396,2056.9432063501904,-967.4351264114024,-56.183059695391876,0.1271463573543102,normal +2025-07-15 21:40:00+08:00,946.652505073478,2056.0226828738064,-846.2683324986183,-263.10184530171,0.27250191320508216,normal +2025-07-15 21:50:00+08:00,1821.926897902803,2055.098889576076,-302.8495257666041,69.6775340933309,0.0387322652443988,normal +2025-07-15 22:00:00+08:00,1383.674954147746,2054.1691196193656,-783.0838361605275,112.58967068890797,0.008587503620571164,normal +2025-07-15 22:10:00+08:00,987.032497387446,2053.234552727608,-905.6258481094251,-160.57620723073683,0.20048007590745243,normal +2025-07-15 22:20:00+08:00,979.7086470509016,2052.299454297337,-1131.2624824224222,58.67167517598682,0.046463620983115635,normal +2025-07-15 22:30:00+08:00,1306.3595951096604,2051.369251414291,-975.3527950159363,230.34313871130598,0.07413152427048145,normal +2025-07-15 22:40:00+08:00,876.8848840910089,2050.4498998847944,-1113.443615587362,-60.12140020642346,0.12991294847088367,normal +2025-07-15 22:50:00+08:00,914.5468521750272,2049.5465331709893,-918.5623160455456,-216.4373649504164,0.23972121878879618,normal +2025-07-15 23:00:00+08:00,992.1719287248142,2048.665322566118,-1087.9570395911642,31.46364574986046,0.06557661852584816,normal +2025-07-15 23:10:00+08:00,794.2055653922587,2047.8145575317185,-1042.6803229719078,-210.92866916755202,0.235851490212994,normal +2025-07-15 23:20:00+08:00,951.4398413365302,2047.0032840762467,-910.0194341362071,-185.54400860350938,0.218019366196039,normal +2025-07-15 23:30:00+08:00,971.2025763032284,2046.240200195581,-1119.5251998715366,44.48757597918393,0.05642761539257644,normal +2025-07-15 23:40:00+08:00,1250.965591975307,2045.5326818139188,-688.966088757388,-105.60100108122379,0.1618612930624924,normal +2025-07-15 23:50:00+08:00,969.1711018391406,2044.8849990780577,-906.5260905297763,-169.18780670914066,0.20652952098456187,normal +2025-07-16 00:00:00+08:00,1321.168644613048,2044.2981923600992,-500.3795912356681,-222.74995651138306,0.2441556651466487,normal +2025-07-16 00:10:00+08:00,1110.59429114438,2043.77109136781,-629.0742173538987,-304.10258286953126,0.3013039621925585,normal +2025-07-16 00:20:00+08:00,2280.857631608397,2043.3015428457923,-405.4896123686201,643.0457011312244,0.3640453191238833,normal +2025-07-16 00:30:00+08:00,2260.917832679399,2042.889483193025,-257.71221317585133,475.74056266222556,0.2465174140204757,normal +2025-07-16 00:40:00+08:00,2374.377354790704,2042.536366055012,223.15092444590633,108.69006428978582,0.011326884939104862,normal +2025-07-16 00:50:00+08:00,2085.1471984451778,2042.2432721355408,158.64366839875697,-115.73974208912,0.16898351896630018,normal +2025-07-16 01:00:00+08:00,6029.151485546501,2042.0124168727164,6728.094493766763,-2740.9554250929777,2.013135482805866,mild +2025-07-16 01:10:00+08:00,4272.864622797346,2041.846290343016,2154.050216456675,76.96811599765465,0.03361080378756045,normal +2025-07-16 01:20:00+08:00,3625.520891195044,2041.7469992873775,1201.7827775610087,381.9911143466579,0.1806606425790505,normal +2025-07-16 01:30:00+08:00,1763.9480091762875,2041.715549653243,373.6301859943842,-651.3977264713396,0.5452705913924792,normal +2025-07-16 01:40:00+08:00,2007.008076771154,2041.7522258110491,457.90652491844435,-492.65067395833944,0.43375453938161607,normal +2025-07-16 01:50:00+08:00,1418.7027164541778,2041.85679574542,-675.5645687179664,52.4104894267241,0.05086195597334973,normal +2025-07-16 02:00:00+08:00,2629.879824408069,2042.0281412818683,2335.874889389764,-1748.0232062635635,1.3156240694889167,normal +2025-07-16 02:10:00+08:00,2264.4224925706644,2042.2655569572933,-165.89488364981665,388.0518192631878,0.1849181445231505,normal +2025-07-16 02:20:00+08:00,1785.5772836581496,2042.5674509655166,-922.1335192910628,665.1433519836958,0.37956839651507013,normal +2025-07-16 02:30:00+08:00,3510.681665078476,2042.930898006808,1849.151989191188,-381.4012221195203,0.3556044291210063,normal +2025-07-16 02:40:00+08:00,954.745374668782,2043.3518687258875,662.9840272986318,-1751.590521355737,1.3181300240188465,normal +2025-07-16 02:50:00+08:00,1650.206216346639,2043.8265535442822,-361.3899068696433,-32.23043032800001,0.11032020140340044,normal +2025-07-16 03:00:00+08:00,1489.7094981720898,2044.3513934549446,-1085.367624764444,530.725729481589,0.2851431940005606,normal +2025-07-16 03:10:00+08:00,4104.597977211815,2044.9238917388932,611.9819836242353,1447.6921018486867,0.9292903958185458,normal +2025-07-16 03:20:00+08:00,1499.0439318835547,2045.542682842867,179.4840201093307,-725.9827710686429,0.5976648222199417,normal +2025-07-16 03:30:00+08:00,2070.6189556243417,2046.2069894483675,-271.5652231010745,295.97718927704864,0.12023789336967207,normal +2025-07-16 03:40:00+08:00,3442.3848066532028,2046.917379889846,522.8503107053982,872.6171160579584,0.5253138116212833,normal +2025-07-16 03:50:00+08:00,822.9992215899242,2047.6728801405836,1406.5800977657468,-2631.253756316406,1.9360726535608015,mild +2025-07-16 04:00:00+08:00,868.9467699723359,2048.470172006189,1589.0739145296477,-2768.5973165635005,2.0325532581793837,mild +2025-07-16 04:10:00+08:00,3677.343133556298,2049.306440387517,1961.565289174686,-333.5285960059048,0.3219750408642047,normal +2025-07-16 04:20:00+08:00,2475.929485528938,2050.179223307071,1583.7564289441088,-1158.0061667222417,0.9011510457242874,normal +2025-07-16 04:30:00+08:00,3778.3552166368167,2051.0847102148064,2037.0313915207778,-309.7608850987674,0.3052787857606182,normal +2025-07-16 04:40:00+08:00,4607.493030944061,2052.017623824024,2361.1161806392242,194.35922648081214,0.04885367649739305,normal +2025-07-16 04:50:00+08:00,2273.0384784932253,2052.972125310471,194.80407336454059,25.262279818213756,0.06993293150819646,normal +2025-07-16 05:00:00+08:00,8586.257546814122,2053.9410042846393,4753.204489775299,1779.1120527541834,1.1621050773987815,normal +2025-07-16 05:10:00+08:00,6047.935135016429,2054.9169636528527,3497.3030874944816,495.71508386909454,0.2605490430210512,normal +2025-07-16 05:20:00+08:00,4252.731755973454,2055.8920022337056,2107.0673501227216,89.77240361702661,0.024616094395982908,normal +2025-07-16 05:30:00+08:00,4348.346652061216,2056.8585734845938,2472.4178199995786,-180.92974142295589,0.21477795257132629,normal +2025-07-16 05:40:00+08:00,4764.426655018324,2057.812099051078,2895.9839276287476,-189.36937166150165,0.2207065933223541,normal +2025-07-16 05:50:00+08:00,4755.3046273394175,2058.750755031972,820.1738060466029,1876.3800662608428,1.2304335577169512,normal +2025-07-16 06:00:00+08:00,2444.4345841160457,2059.6738070863926,2000.6907251146215,-1615.9299480849684,1.22283167796957,normal +2025-07-16 06:10:00+08:00,2351.2076313918906,2060.5805236615997,989.9433629913271,-699.3162552610363,0.5789322251942045,normal +2025-07-16 06:20:00+08:00,3826.289859479241,2061.4705159007976,1778.4079489458297,-13.588605367386435,0.0972247600142449,normal +2025-07-16 06:30:00+08:00,4159.978511226482,2062.3427894258602,2131.0418670360486,-33.406145235427175,0.11114611333493604,normal +2025-07-16 06:40:00+08:00,4322.95186241308,2063.196515437402,2076.5736432635235,183.1817037121541,0.0410017309608282,normal +2025-07-16 06:50:00+08:00,3837.742868763709,2064.0305663213917,1614.1270057973807,159.58529664493653,0.0244258127555951,normal +2025-07-16 07:00:00+08:00,2684.651485818312,2064.8429156294656,608.0826738184787,11.725896370367536,0.07944192091438017,normal +2025-07-16 07:10:00+08:00,2101.15024004704,2065.6309187629327,342.2382325925775,-306.7189113084703,0.30314187107751456,normal +2025-07-16 07:20:00+08:00,4740.900407001318,2066.391497442111,2214.8836472499815,459.6252623092255,0.23519679644750585,normal +2025-07-16 07:30:00+08:00,3350.2239869857176,2067.1217340500625,1551.224868532428,-268.1226155967729,0.27602888565903044,normal +2025-07-16 07:40:00+08:00,2787.692893117568,2067.818614049705,1105.1808333002032,-385.3065542323402,0.35834783261807124,normal +2025-07-16 07:50:00+08:00,2621.8368144363835,2068.4797869147606,1302.2413811995475,-748.8843536779245,0.6137526426673707,normal +2025-07-16 08:00:00+08:00,2432.812089866407,2069.104089273974,535.6646346854837,-171.95663409305052,0.2084745567736699,normal +2025-07-16 08:10:00+08:00,2276.8222841544693,2069.6914230136513,-51.76402346437691,258.8948846051949,0.09418845086975244,normal +2025-07-16 08:20:00+08:00,2140.588792861992,2070.2423621440066,3.618642633906399,66.72778808407884,0.04080439209135019,normal +2025-07-16 08:30:00+08:00,1873.137927705671,2070.7572508613493,-197.10533119485092,-0.5139919608272976,0.08804015314698746,normal +2025-07-16 08:40:00+08:00,2304.97898931622,2071.2367040305508,83.52842893794454,150.2138563477247,0.01784259746399154,normal +2025-07-16 08:50:00+08:00,2349.217612781088,2071.6820665127025,246.43886854992772,31.096677718458068,0.06583440489371059,normal +2025-07-16 09:00:00+08:00,2268.9501838656934,2072.0956526960767,1253.4246922114496,-1056.570161041833,0.8298946494248706,normal +2025-07-16 09:10:00+08:00,1808.1931264120133,2072.4796993334644,-19.596936530424042,-244.68963639102708,0.25956777166345923,normal +2025-07-16 09:20:00+08:00,1852.335669329913,2072.8368799995906,24.23481565842774,-244.73602632810548,0.2596003594977158,normal +2025-07-16 09:30:00+08:00,1794.4378944228265,2073.1704677707176,18.067425720380353,-296.7999990682713,0.296174069686817,normal +2025-07-16 09:40:00+08:00,2122.162217514902,2073.4833168202767,175.68923403823132,-127.01033334360613,0.17690084291425523,normal +2025-07-16 09:50:00+08:00,2452.652505971553,2073.7776034744757,-59.79744488927565,438.67234738635307,0.22047786898819516,normal +2025-07-16 10:00:00+08:00,2182.841233850443,2074.0535809105227,-144.73598062708314,253.5236335670038,0.09041527397823651,normal +2025-07-16 10:10:00+08:00,1346.6067198423295,2074.310466461582,-844.351130282501,116.64738366324855,0.005737056170186775,normal +2025-07-16 10:20:00+08:00,2250.3700689333773,2074.5472567891798,-459.1067170173399,634.9295291615376,0.3583439001609921,normal +2025-07-16 10:30:00+08:00,1222.221944755357,2074.7621973780692,-678.9984462319436,-173.54180639076867,0.209588102843346,normal +2025-07-16 10:40:00+08:00,1560.5081474278234,2074.954247106959,-590.3688556017634,75.92275592262786,0.0343451445305939,normal +2025-07-16 10:50:00+08:00,2087.262977063774,2075.124499217138,-553.0194456358622,565.1579234824985,0.3093309963960672,normal +2025-07-16 11:00:00+08:00,1622.1882959096793,2075.274561665198,-563.1364671591648,110.05020140364604,0.010371420766825377,normal +2025-07-16 11:10:00+08:00,1961.372247505124,2075.405214926121,-289.27109769630874,175.2381302753115,0.035421558387466516,normal +2025-07-16 11:20:00+08:00,1583.3340932988012,2075.51764835592,-651.385152107264,159.2015970501452,0.024156272859943855,normal +2025-07-16 11:30:00+08:00,1645.098584790794,2075.6125856839694,-298.38413400885634,-132.1298668843192,0.18049719421375898,normal +2025-07-16 11:40:00+08:00,1337.5003532322266,2075.6903156417275,-484.32350105018867,-253.8664613593121,0.2660142742867067,normal +2025-07-16 11:50:00+08:00,1174.2229998557032,2075.7523122269695,-232.25047606178563,-669.2788363094808,0.5578316483894827,normal +2025-07-16 12:00:00+08:00,998.5431779979476,2075.7992007072103,-482.0848195222363,-595.1712031870263,0.5057727878382998,normal +2025-07-16 12:10:00+08:00,1934.918024797228,2075.8297976012564,-570.4276914436919,429.5159186396636,0.2140456942285034,normal +2025-07-16 12:20:00+08:00,2415.9074482010465,2075.840222400186,-429.9029201390909,769.9701459399512,0.4532067414285954,normal +2025-07-16 12:30:00+08:00,1423.8884107103984,2075.8234258715825,-715.7398906559617,63.80487549477766,0.042857669095060384,normal +2025-07-16 12:40:00+08:00,1765.916422588517,2075.772970949978,-664.1332869779856,354.2767386165242,0.16119194872650103,normal +2025-07-16 12:50:00+08:00,1372.027027058728,2075.6856501933216,-686.8367892966471,-16.821833837946542,0.09949602658945554,normal +2025-07-16 13:00:00+08:00,1862.3879006732684,2075.558644935025,-384.46458256200765,171.29383830025108,0.032650786508090376,normal +2025-07-16 13:10:00+08:00,1675.6994741395083,2075.389709009892,-214.0198401731489,-185.670394697235,0.2181081494394331,normal +2025-07-16 13:20:00+08:00,1729.7077867758203,2075.177314426128,-474.950544960318,129.48101731001043,0.0032782681119661893,normal +2025-07-16 13:30:00+08:00,991.187613884844,2074.921161222222,-885.8622576190279,-197.87128971835,0.2266789897934127,normal +2025-07-16 13:40:00+08:00,1582.7204998422262,2074.622444040925,-349.4735683583735,-142.42837584032532,0.18773165332460306,normal +2025-07-16 13:50:00+08:00,2402.5654457510377,2074.280643944279,-162.3954766993726,490.68027850613134,0.25701221126365653,normal +2025-07-16 14:00:00+08:00,1665.5933960974917,2073.892524768226,-568.9773798835878,160.6782512128534,0.025193587504870194,normal +2025-07-16 14:10:00+08:00,1466.819014597788,2073.453709277004,-726.3676041668726,119.7329094876568,0.003569547212580182,normal +2025-07-16 14:20:00+08:00,1271.1524429876306,2072.9598934305764,-698.2556047959118,-103.55184564703404,0.16042180980683488,normal +2025-07-16 14:30:00+08:00,1135.7031805716333,2072.408037651308,-896.8757203884179,-39.829136691256736,0.11565811300935497,normal +2025-07-16 14:40:00+08:00,1519.829179504587,2071.7962447941864,-312.7961419037114,-239.17092338588782,0.2556910062257908,normal +2025-07-16 14:50:00+08:00,2346.524334543775,2071.1219227753804,-73.93692697116407,349.33933873955857,0.1577235420205999,normal +2025-07-16 15:00:00+08:00,2437.639229721492,2070.382204021475,-772.4932827686548,1139.7503084686718,0.7129685649355945,normal +2025-07-16 15:10:00+08:00,1472.966564512128,2069.572605176005,-836.6414290650521,240.03538840117517,0.08094010057730272,normal +2025-07-16 15:20:00+08:00,1536.1927371333204,2068.688776514142,-842.1280298873659,309.6319905065443,0.12983006846836714,normal +2025-07-16 15:30:00+08:00,2810.442576594509,2067.7266148295575,779.9439495175891,-37.22798775263777,0.11383086736456871,normal +2025-07-16 15:40:00+08:00,1357.5148163006593,2066.6809726118786,-178.87177687925688,-530.2943794319624,0.460198352674681,normal +2025-07-16 15:50:00+08:00,2144.417540851625,2065.5474513067775,-284.98973032129,363.8598198661375,0.16792383678450884,normal +2025-07-16 16:00:00+08:00,3081.539041627233,2064.3239010818825,-346.1363894861519,1363.3515300315025,0.87004313771515,normal +2025-07-16 16:10:00+08:00,1411.236460705623,2063.0103140910596,-466.8428257863769,-184.9310275990597,0.21758876152973639,normal +2025-07-16 16:20:00+08:00,2185.548420619788,2061.6085993661163,154.57018291782867,-30.630361664157135,0.10919619098863421,normal +2025-07-16 16:30:00+08:00,1554.883845130884,2060.120280470618,-477.28088827807215,-27.955547061661946,0.10731719695624523,normal +2025-07-16 16:40:00+08:00,997.4054922780164,2058.5467278335354,-399.56647962256363,-661.5747559329554,0.5524197140299827,normal +2025-07-16 16:50:00+08:00,1431.1367199470355,2056.888438564458,-496.9462994650486,-128.80541915237382,0.17816184826361822,normal +2025-07-16 17:00:00+08:00,1668.108303716656,2055.1464331655043,-118.34583912152654,-268.69229032732164,0.2764290686915686,normal +2025-07-16 17:10:00+08:00,1682.5251902674097,2053.32203456926,-472.5985019821615,101.80165768031156,0.01616582775772002,normal +2025-07-16 17:20:00+08:00,1420.3779269767194,2051.417450104787,-828.309763774486,197.27024064641864,0.050898595139706425,normal +2025-07-16 17:30:00+08:00,4435.297298236891,2049.4362227711968,-598.1231063112257,2983.9841817769197,2.008499267902166,mild +2025-07-16 17:40:00+08:00,962.0281641309411,2047.3815174084175,-1046.2709496304171,-39.08240364705921,0.11513355069669003,normal +2025-07-16 17:50:00+08:00,924.1620952558656,2045.2564247838734,-987.7765674063419,-133.31776212166596,0.18133166253915084,normal +2025-07-16 18:00:00+08:00,952.6281200203414,2043.064385322422,-1187.503788825549,97.06752352346848,0.019491445099923482,normal +2025-07-16 18:10:00+08:00,826.7487688685557,2040.809736498013,-1169.3039926177833,-44.75697501167406,0.11911980294779197,normal +2025-07-16 18:20:00+08:00,1870.4435600957256,2038.4990356780463,-1035.5602698287776,867.5047942464571,0.5217225263910837,normal +2025-07-16 18:30:00+08:00,897.9706136845168,2036.139185881652,-1161.6816578755459,23.51308567841056,0.07116169904487507,normal +2025-07-16 18:40:00+08:00,853.1601996484942,2033.738865433064,-1245.5781562206926,64.99949043612287,0.042018480336446444,normal +2025-07-16 18:50:00+08:00,826.8776035701535,2031.3076028855571,-1179.7461641469786,-24.68383516842505,0.1050188966862551,normal +2025-07-16 19:00:00+08:00,825.2399017682308,2028.8552117212294,-1211.5695250742046,7.954215121206062,0.08209143783889405,normal +2025-07-16 19:10:00+08:00,858.8985777562461,2026.3906987850887,-1212.565653681219,45.07353265237634,0.05601599468019511,normal +2025-07-16 19:20:00+08:00,955.308834153206,2023.9217226680103,-1215.5521312214034,146.9392427065991,0.015542258784699593,normal +2025-07-16 19:30:00+08:00,962.8652997741624,2021.4558444390227,-1209.1789869711688,150.58844230630848,0.018105735245630344,normal +2025-07-16 19:40:00+08:00,979.706189153716,2019.0015097542675,-1209.5643373041385,170.26901670358689,0.03193087356062887,normal +2025-07-16 19:50:00+08:00,986.3376541428354,2016.5671349874247,-1175.0415212637045,144.81204041911496,0.014047949459433346,normal +2025-07-16 20:00:00+08:00,975.366705363013,2014.1596333474156,-1116.4131518050444,77.62022382064174,0.033152713456094524,normal +2025-07-16 20:10:00+08:00,872.0705626145875,2011.7853450433179,-1017.2769305974581,-122.43785183127216,0.17368878273375904,normal +2025-07-16 20:20:00+08:00,949.6185770427657,2009.4509626501226,-913.2470199796586,-146.58536562769837,0.19065184038948957,normal +2025-07-16 20:30:00+08:00,1104.79171621106,2007.1658222013566,-1012.1918236037425,109.8177176134459,0.010534735134111153,normal +2025-07-16 20:40:00+08:00,1446.269306115079,2004.9412917799284,-860.3234650892169,301.6514794243674,0.12422394807227076,normal +2025-07-16 20:50:00+08:00,1510.2579170541503,2002.7897846897165,-767.9175838823603,275.3857162467941,0.10577287029635168,normal +2025-07-16 21:00:00+08:00,1186.8691569897155,2000.7249781784135,-981.4665023844954,167.6106811957975,0.030063455702746506,normal +2025-07-16 21:10:00+08:00,1185.5680865786744,1998.760562598587,-945.5184538413786,132.32597782146604,0.005276785623580175,normal +2025-07-16 21:20:00+08:00,1156.1173540618574,1996.9066489636,-746.4005959626786,-94.38869893906394,0.15398491583813909,normal +2025-07-16 21:30:00+08:00,953.1410676812754,1995.1695035649304,-985.3066211008252,-56.721814782829824,0.12752482006842533,normal +2025-07-16 21:40:00+08:00,913.6177570741808,1993.5529227728994,-902.7120212089033,-177.22314448981524,0.21217415584038812,normal +2025-07-16 21:50:00+08:00,923.5441861616614,1992.0565585703353,-370.52174000928267,-697.9906323993912,0.5780010064682763,normal +2025-07-16 22:00:00+08:00,979.61709702279,1990.6771608961483,-800.0086579491135,-211.05140592424482,0.23593770988338364,normal +2025-07-16 22:10:00+08:00,950.4337652484784,1989.4114363288124,-940.4854503886584,-98.49222069167558,0.15686754287245505,normal +2025-07-16 22:20:00+08:00,871.7697737711194,1988.2565304543255,-1146.1788925387173,29.692135855511196,0.06682106235260729,normal +2025-07-16 22:30:00+08:00,982.7929667634944,1987.207627648988,-1022.049706653041,17.63504576754758,0.0752908831402336,normal +2025-07-16 22:40:00+08:00,894.373215518347,1986.258745432407,-1132.5155179670958,40.62998805303573,0.05913747972705655,normal +2025-07-16 22:50:00+08:00,986.5714161074122,1985.4054057850014,-973.183383062392,-25.650606615197148,0.10569803077557638,normal +2025-07-16 23:00:00+08:00,999.0183693261692,1984.6442689895946,-1083.6598850810574,98.03398541763204,0.018812528463992655,normal +2025-07-16 23:10:00+08:00,1017.5594436913084,1983.9738899695913,-1096.35324475003,129.93879847174685,0.0035998485572951598,normal +2025-07-16 23:20:00+08:00,1096.0945071649803,1983.3950809781747,-955.1271586227624,67.82658480956775,0.0400325133644746,normal +2025-07-16 23:30:00+08:00,1326.7636206095358,1982.9086631079801,-1080.35087976942,424.20583727097596,0.21031548758391708,normal +2025-07-16 23:40:00+08:00,988.3904446484938,1982.5137329427082,-782.8707683873661,-211.25251990684842,0.2360789877023359,normal +2025-07-16 23:50:00+08:00,954.5034460946076,1982.2074901433039,-826.6223367310604,-201.08170731763585,0.22893423227074458,normal +2025-07-17 00:00:00+08:00,1115.1950570044437,1981.9886794173444,-532.5553944839317,-334.2382279289691,0.3224735405162504,normal +2025-07-17 00:10:00+08:00,887.1956824663904,1981.8571021429466,-479.22139529376983,-615.4400243827863,0.5200111556245625,normal +2025-07-17 00:20:00+08:00,1248.99994722993,1981.8124229316552,-373.61873575134763,-359.19373995037745,0.34000419782599284,normal +2025-07-17 00:30:00+08:00,2539.7912923850777,1981.8538230526708,-117.20065409838881,675.1381234307958,0.38658948720549546,normal +2025-07-17 00:40:00+08:00,1640.0896221324983,1981.9812857239378,133.9540867089132,-475.8457503003526,0.4219494777378468,normal +2025-07-17 00:50:00+08:00,3083.664859840296,1982.1922941591085,186.08204483697918,915.3905208442081,0.5553611174283282,normal +2025-07-17 01:00:00+08:00,9932.9264247938,1982.4846919054414,4531.842937204049,3418.59879568431,2.3138057609799425,mild +2025-07-17 01:10:00+08:00,2636.6090851388567,1982.8558241943194,1779.446731598878,-1125.6934706543407,0.8784521405271394,normal +2025-07-17 01:20:00+08:00,2119.924010537234,1983.3038493225968,2072.4171341843094,-1935.796972969672,1.447530702102201,normal +2025-07-17 01:30:00+08:00,2525.591471256545,1983.826598351885,616.2824056200816,-74.51753271542157,0.14002589127022944,normal +2025-07-17 01:40:00+08:00,2094.3217413323114,1984.4223636816275,1058.4955647615047,-948.5961871108209,0.7540454849704673,normal +2025-07-17 01:50:00+08:00,1843.864432059909,1985.087928597395,-95.39520651158323,-45.82829002590279,0.11987237642210555,normal +2025-07-17 02:00:00+08:00,2060.561409358393,1985.8154664484778,2478.8532367573825,-2404.107293847467,1.776507632845249,mild +2025-07-17 02:10:00+08:00,1704.97873974179,1986.5945115070228,-259.47091601131746,-22.144855753915408,0.10323532366262506,normal +2025-07-17 02:20:00+08:00,986.7515525204924,1987.4139312838656,-838.5897681647687,-162.07261059860457,0.201531263902182,normal +2025-07-17 02:30:00+08:00,4372.427129669117,1988.263401606315,2320.2128890512527,63.95083901154908,0.042755133174737475,normal +2025-07-17 02:40:00+08:00,4085.1609273673134,1989.130937732999,774.1630250657598,1321.8669645685545,0.840901211067817,normal +2025-07-17 02:50:00+08:00,1925.7643835349088,1990.00388105369,431.9327222920153,-496.1722198107966,0.4362283421025144,normal +2025-07-17 03:00:00+08:00,999.2616669361602,1990.872028421101,-591.8092569308708,-399.80110455407,0.3685299116045124,normal +2025-07-17 03:10:00+08:00,780.5655453653154,1991.728863366943,520.0407007098372,-1731.2040187114649,1.3038089877966963,normal +2025-07-17 03:20:00+08:00,2523.365869693429,1992.5688280911281,535.1070487860786,-4.3100071837777705,0.09070676411289443,normal +2025-07-17 03:30:00+08:00,1814.116031538154,1993.3894114612076,0.0577242880370894,-179.33110421109063,0.21365494771773844,normal +2025-07-17 03:40:00+08:00,846.6922449796443,1994.189451947527,726.1346858794395,-1873.6318928473222,1.4038612027417912,normal +2025-07-17 03:50:00+08:00,3813.005997897561,1994.9698488675494,1617.4655934754237,200.57055555458783,0.05321698835158343,normal +2025-07-17 04:00:00+08:00,4023.9878987052543,1995.7337373950775,1733.9303421285365,294.32381918164015,0.11907643995914226,normal +2025-07-17 04:10:00+08:00,871.7811744837378,1996.4868675613282,1629.4452629460673,-2754.1509560236577,2.0224050313756337,mild +2025-07-17 04:20:00+08:00,952.9520935298964,1997.2368774853085,1678.4386495899,-2722.723433545312,2.0003279397018794,mild +2025-07-17 04:30:00+08:00,1695.877521404553,1997.9921437368369,1425.3422263712541,-1727.456848703538,1.3011766894397658,normal +2025-07-17 04:40:00+08:00,2402.596598718994,1998.7628939417248,1822.8035439663786,-1418.9698391891095,1.0844718571099217,normal +2025-07-17 04:50:00+08:00,5658.290093392947,1999.558593874834,-111.67172102307303,3770.4032205411854,2.560940053673524,moderate +2025-07-17 05:00:00+08:00,4327.256223117087,2000.3879122428878,3721.7584493115246,-1394.8901384373255,1.0675564365151233,normal +2025-07-17 05:10:00+08:00,7759.709174446929,2001.2596374951002,3040.574158777051,2717.8753781747782,1.8215641235119113,mild +2025-07-17 05:20:00+08:00,3898.9603827375768,2002.1812151790584,2309.9747535794827,-413.19558602096436,0.37793921822328197,normal +2025-07-17 05:30:00+08:00,3485.8946133746235,2003.160256936196,1487.6823512719745,-4.947994833547,0.09115493535644005,normal +2025-07-17 05:40:00+08:00,4522.59206778581,2004.2048195874756,2448.1170462490536,70.27020194928105,0.03831593008476559,normal +2025-07-17 05:50:00+08:00,2358.38453148851,2005.3226494932956,621.9750181306493,-268.9131361354348,0.2765842076515308,normal +2025-07-17 06:00:00+08:00,4075.055359352005,2006.5208196768108,1828.9315828625301,239.60295681266416,0.08063632760796469,normal +2025-07-17 06:10:00+08:00,1508.5335744732297,2007.804292932815,1387.1041193366266,-1886.374837796212,1.4128128203573407,normal +2025-07-17 06:20:00+08:00,4242.223637534969,2009.1766838888234,1694.345160780267,538.7017928658788,0.2907461899940236,normal +2025-07-17 06:30:00+08:00,4047.545584362048,2010.6400435784176,2071.3755537729257,-34.470012989295356,0.11189345528488077,normal +2025-07-17 06:40:00+08:00,1989.0567440430036,2012.1944794748078,2307.4859892755,-2330.623724707304,1.7248871624903286,normal +2025-07-17 06:50:00+08:00,2767.3815741376275,2013.8386548964536,1618.9557431622302,-865.4128239210563,0.6956111385743434,normal +2025-07-17 07:00:00+08:00,2206.699444532069,2015.569685378875,688.8250129070086,-497.69525375381477,0.43729823744680757,normal +2025-07-17 07:10:00+08:00,2093.039241911203,2017.3831036416682,71.93610074320272,3.720037526332135,0.08506584751402502,normal +2025-07-17 07:20:00+08:00,2392.082956618889,2019.2733368329943,2253.8416414352187,-1881.032021649324,1.4090596183048363,normal +2025-07-17 07:30:00+08:00,4168.764318557959,2021.2336605895587,1241.7642404184382,905.7664175499624,0.5486004123536237,normal +2025-07-17 07:40:00+08:00,3788.518045108505,2023.256766807741,1960.3657253437518,-195.1044470429881,0.22473534821514615,normal +2025-07-17 07:50:00+08:00,3714.43230364358,2025.3350371204672,1676.644864302046,12.452402221066677,0.07893156772702806,normal +2025-07-17 08:00:00+08:00,2416.3451026820194,2027.4614406283824,406.161283701445,-17.27762164780802,0.09981620675221016,normal +2025-07-17 08:10:00+08:00,2561.607392917118,2029.6307218800325,292.63284983530366,239.3438212017818,0.08045429096663141,normal +2025-07-17 08:20:00+08:00,2344.888624102204,2031.8386177045352,148.7706028296627,164.2794035680065,0.027723311912215696,normal +2025-07-17 08:30:00+08:00,2048.0730466387504,2034.0795965863174,-106.86894088093794,120.86239093337076,0.002776113195055803,normal +2025-07-17 08:40:00+08:00,2430.0309269243767,2036.3459228950194,160.5195829681502,233.1654210612071,0.07611411090965789,normal +2025-07-17 08:50:00+08:00,3008.714339105286,2038.6299015431512,280.7425306732223,689.3419068889127,0.3965673093432432,normal +2025-07-17 09:00:00+08:00,2663.2158785782867,2040.9254977984012,945.841379473846,-323.55099869396054,0.314966014597773,normal +2025-07-17 09:10:00+08:00,3372.1291541588685,2043.228308050896,-60.30634276661317,1389.2071888745859,0.888206126889921,normal +2025-07-17 09:20:00+08:00,3041.584323940157,2045.5353446675533,93.22597780234763,902.823001470256,0.5465327321325546,normal +2025-07-17 09:30:00+08:00,1660.8525546553874,2047.8450433052565,-34.661503376552986,-352.3309852733162,0.3351832748835509,normal +2025-07-17 09:40:00+08:00,1809.761341828027,2050.1548880373434,-0.7534838453784198,-239.6400623639379,0.25602056526861,normal +2025-07-17 09:50:00+08:00,1976.7089403115351,2052.4619362386693,17.56652343690961,-93.3195193640438,0.15323384245939314,normal +2025-07-17 10:00:00+08:00,2038.9951136792497,2054.7622851427514,-65.61839831717897,49.85122685367742,0.05265977743640938,normal +2025-07-17 10:10:00+08:00,1065.5302590943345,2057.049475429776,-706.3957493376749,-285.1234669977666,0.2879715819110249,normal +2025-07-17 10:20:00+08:00,1507.440177285186,2059.3145333381703,-262.64519584596326,-289.22916020702087,0.2908557343423045,normal +2025-07-17 10:30:00+08:00,2206.189864401282,2061.5474905873384,-434.67907447098946,579.321448284933,0.3192805377798109,normal +2025-07-17 10:40:00+08:00,2533.8430227659114,2063.7391128018417,-413.2047589661605,883.3086689302304,0.5328243747927384,normal +2025-07-17 10:50:00+08:00,1707.8208183494703,2065.880486344962,-420.348875244593,62.28920724910131,0.043922390211077425,normal +2025-07-17 11:00:00+08:00,2087.766605985116,2067.963089855007,-390.9493033728977,410.7528195030063,0.20086506059729248,normal +2025-07-17 11:10:00+08:00,1933.5315137707685,2069.978605120757,-137.12314478059807,0.6760534306094996,0.08720417438917155,normal +2025-07-17 11:20:00+08:00,1289.7343694159483,2071.920153504701,-636.020431620951,-146.16535246780177,0.19035679107271286,normal +2025-07-17 11:30:00+08:00,5900.959261531746,2073.7831486057394,-309.8244403260646,4137.000553252071,2.8184660144675546,moderate +2025-07-17 11:40:00+08:00,2110.000936736778,2075.5655680535688,-358.09445566617524,392.5298243493844,0.18806383724746936,normal +2025-07-17 11:50:00+08:00,2147.613615996375,2077.2685458286937,-177.5009140489269,247.84598421660803,0.08642685951487929,normal +2025-07-17 12:00:00+08:00,1785.528804054814,2078.892763575017,-518.6848347762312,225.3208752560281,0.0706035029067767,normal +2025-07-17 12:10:00+08:00,1378.5575758520786,2080.437640481598,-554.944440232249,-146.93562439727043,0.19089788889588094,normal +2025-07-17 12:20:00+08:00,2010.064750933189,2081.902121470369,-367.5104832546176,295.673112717438,0.12002428677414775,normal +2025-07-17 12:30:00+08:00,1167.7481967847427,2083.2840305261834,-604.612389816948,-310.92344392449263,0.3060954558557347,normal +2025-07-17 12:40:00+08:00,1530.725452671755,2084.580068440902,-687.2071704696239,133.35255470047696,0.00599793161539981,normal +2025-07-17 12:50:00+08:00,1536.0175271934638,2085.7882623287237,-510.58158867946884,-39.18914645579116,0.11520853499669373,normal +2025-07-17 13:00:00+08:00,2127.283052989792,2086.9049721684046,-195.96324401317074,236.34132483455824,0.07834510824009032,normal +2025-07-17 13:10:00+08:00,1925.143657001537,2087.9279705451204,-225.69392065887766,62.909607115293966,0.04348657396976355,normal +2025-07-17 13:20:00+08:00,1843.833950247819,2088.8564464212136,-463.00799182774426,217.98549565434996,0.06545057212645133,normal +2025-07-17 13:30:00+08:00,1436.0971008200452,2089.69056432691,-794.8963806743432,141.30291716747797,0.01158287332197225,normal +2025-07-17 13:40:00+08:00,1112.8851291410576,2090.4309898405972,-406.98354914160933,-570.5623115579303,0.48848562316092586,normal +2025-07-17 13:50:00+08:00,1628.573080947674,2091.0790393383654,-76.25711251937742,-386.24884587131396,0.35900977022105507,normal +2025-07-17 14:00:00+08:00,1085.0493041752643,2091.636387386255,-759.5196832998548,-247.0673999111359,0.2612380943320094,normal +2025-07-17 14:10:00+08:00,1414.464658856681,2092.105050876096,-728.9036011255289,51.26320910611366,0.05166789327976841,normal +2025-07-17 14:20:00+08:00,961.4997278783152,2092.4879940069877,-629.6619633044153,-501.32630282425725,0.439848963589961,normal +2025-07-17 14:30:00+08:00,977.229539825342,2092.7874037079414,-811.8888575357576,-303.6690063468418,0.30099938493402345,normal +2025-07-17 14:40:00+08:00,1985.976831676268,2093.0050935420622,-338.00337113455987,230.97510926876566,0.07457546864890849,normal +2025-07-17 14:50:00+08:00,1951.1433366058668,2093.1441353104256,-340.81034631972403,198.80954761516523,0.05197992189992058,normal +2025-07-17 15:00:00+08:00,982.3392122732656,2093.2086666487726,-857.3480491009648,-253.5214052745423,0.26577188054341055,normal +2025-07-17 15:10:00+08:00,1493.544586761826,2093.2008179820573,-878.6561510778137,278.9999198575824,0.1083117629022822,normal +2025-07-17 15:20:00+08:00,946.4518140451128,2093.1212832420338,-758.9041784082557,-387.7652907886654,0.36007503693056525,normal +2025-07-17 15:30:00+08:00,4439.986775749436,2092.971607905471,482.55755210426787,1864.4576157396968,1.222058318042475,normal +2025-07-17 15:40:00+08:00,2239.969348641859,2092.753082901626,-229.6368380966374,376.85310383687056,0.177051311645521,normal +2025-07-17 15:50:00+08:00,1696.831137234822,2092.464130580088,-382.22461059499346,-13.408382750272267,0.09709815788572984,normal +2025-07-17 16:00:00+08:00,2019.0702352784688,2092.101626032974,-378.08965891850045,305.0582681639953,0.12661713663397497,normal +2025-07-17 16:10:00+08:00,4553.4183655529305,2091.6634053605558,-537.6412208099504,2999.3961810023247,2.019325833057263,mild +2025-07-17 16:20:00+08:00,2658.6859392669926,2091.149559702537,130.04318089540405,437.4931986690517,0.21964954488638955,normal +2025-07-17 16:30:00+08:00,1400.4004584291738,2090.5617798715207,-346.3998635166307,-343.76145792571606,0.3291633844838521,normal +2025-07-17 16:40:00+08:00,1879.1341858385567,2089.9018900197634,-401.895730834578,191.1280266533713,0.04658383499602171,normal +2025-07-17 16:50:00+08:00,1960.9276905823644,2089.1734232080125,-476.90932475076715,348.66359212511907,0.1572488459969,normal +2025-07-17 17:00:00+08:00,3449.971660187023,2088.3809161144545,-279.03319622952847,1640.6239403020973,1.0648204519105169,normal +2025-07-17 17:10:00+08:00,1568.9687174429855,2087.529211128697,-637.3745454108624,118.81405172515088,0.004215023071263004,normal +2025-07-17 17:20:00+08:00,973.5748279775828,2086.6235197955216,-958.3852854934195,-154.6634063245192,0.19632647303451942,normal +2025-07-17 17:30:00+08:00,1540.214377591221,2085.6693053476665,-773.0827766777144,227.62784892126865,0.07222409737557534,normal +2025-07-17 17:40:00+08:00,1224.4723023157678,2084.6710206400076,-1091.2357434794258,231.0370251551858,0.0746189630955834,normal +2025-07-17 17:50:00+08:00,853.5020047202736,2083.6317247233237,-1116.7422577362615,-113.38746226678859,0.16733109799306836,normal +2025-07-17 18:00:00+08:00,834.571880945806,2082.5523042998907,-1229.153443028643,-18.826980325441582,0.1009045946003204,normal +2025-07-17 18:10:00+08:00,832.2225331728255,2081.43248276583,-1261.4085665298905,12.198616936885628,0.07910984589032188,normal +2025-07-17 18:20:00+08:00,794.7729838156192,2080.2721907274886,-1100.1290443218998,-185.3701625899696,0.21789724348080813,normal +2025-07-17 18:30:00+08:00,824.8356107427088,2079.0705720734013,-1187.6571260166393,-66.57783531405312,0.13444844152016866,normal +2025-07-17 18:40:00+08:00,573.5524779062564,2077.8267556730293,-1276.203573613267,-228.07070415350586,0.24789336459619943,normal +2025-07-17 18:50:00+08:00,771.6941487761098,2076.5398192631283,-1099.7377378878614,-205.10793259915704,0.2317625603612129,normal +2025-07-17 19:00:00+08:00,739.1195279575579,2075.208484844785,-1233.4335816772211,-102.65537521000579,0.15979206051512027,normal +2025-07-17 19:10:00+08:00,743.5631052101669,2073.832159306609,-1191.1723472307212,-139.09670686572076,0.18539123462218618,normal +2025-07-17 19:20:00+08:00,710.0101243354584,2072.4094140219518,-1208.9239312414704,-153.47535844502295,0.19549189748162563,normal +2025-07-17 19:30:00+08:00,707.7551705632336,2070.9384726707367,-1219.0765689769858,-144.10673313051734,0.1889106596488341,normal +2025-07-17 19:40:00+08:00,655.6375699269878,2069.4166502940316,-1212.5718604861,-201.20721988094374,0.22902240187966827,normal +2025-07-17 19:50:00+08:00,1210.348373095455,2067.841816761114,-1165.4224953942692,307.9290517286104,0.1286337942300417,normal +2025-07-17 20:00:00+08:00,1338.442388482841,2066.2117839262633,-1029.1758998889825,301.40650444556013,0.12405185894024866,normal +2025-07-17 20:10:00+08:00,1963.3001878105144,2064.5232135420506,-910.0362512502662,808.8132255187302,0.4804930866803568,normal +2025-07-17 20:20:00+08:00,1451.2311794679322,2062.7725292456203,-858.1620205085195,246.62067073083153,0.08556610575443846,normal +2025-07-17 20:30:00+08:00,1589.578574855268,2060.9551147865463,-994.6250707134797,523.2485307822012,0.2798906386563396,normal +2025-07-17 20:40:00+08:00,1773.5717860573072,2059.0661441632687,-804.4342889926739,518.9399308867123,0.2768639490741819,normal +2025-07-17 20:50:00+08:00,1608.03913252319,2057.1036193317213,-741.1763628343145,292.1118760257832,0.11752260217690429,normal +2025-07-17 21:00:00+08:00,1179.033457886184,2055.0677772118843,-785.9563313096515,-90.07798801604895,0.15095674330904366,normal +2025-07-17 21:10:00+08:00,1334.9762733902162,2052.9616079804737,-982.190185578381,264.2048509881233,0.0979185767395609,normal +2025-07-17 21:20:00+08:00,977.6450851869454,2050.788270778169,-827.6525556414061,-245.4906299498175,0.2601304507050441,normal +2025-07-17 21:30:00+08:00,947.7514533553804,2048.550488713115,-1003.1866932091334,-97.61234214860133,0.15624944899405263,normal +2025-07-17 21:40:00+08:00,1149.2930162101916,2046.2513912490717,-959.2042495787952,62.245874539914894,0.04395283041500504,normal +2025-07-17 21:50:00+08:00,1824.127461104548,2043.8939829303458,-438.3696146430474,218.6030928172495,0.06588441953495063,normal +2025-07-17 22:00:00+08:00,1110.625141005668,2041.4790346415284,-816.9369648632432,-113.91692877261721,0.16770303569816156,normal +2025-07-17 22:10:00+08:00,890.3317276820223,2039.0052624118662,-975.3694549172703,-173.3040798125735,0.20942110554142,normal +2025-07-17 22:20:00+08:00,962.9122883878692,2036.4707080809505,-1161.1193928795606,87.56097318647949,0.02616957200081027,normal +2025-07-17 22:30:00+08:00,932.4426012485684,2033.874769131514,-1068.7510188214922,-32.681149061453425,0.11063682065979859,normal +2025-07-17 22:40:00+08:00,852.7811760934117,2031.2152427700344,-1151.5309973986168,-26.903069278005887,0.10657785619114436,normal +2025-07-17 22:50:00+08:00,806.2949839576075,2028.4893130571636,-1027.752215318493,-194.4421137810632,0.22427007475452995,normal +2025-07-17 23:00:00+08:00,982.9108657478334,2025.6956405990506,-1079.3330473862172,36.548272535000024,0.062004788397027236,normal +2025-07-17 23:10:00+08:00,875.799334441582,2022.8365116846537,-1150.0445424296597,3.007365186588004,0.0855664829869205,normal +2025-07-17 23:20:00+08:00,977.6912316019416,2019.9157378633802,-1000.0967569918975,-42.12774926954103,0.11727283401220183,normal +2025-07-17 23:30:00+08:00,852.2620162928647,2016.9371059913537,-1041.0701417185703,-123.60494797991873,0.17450864019097698,normal +2025-07-17 23:40:00+08:00,917.7907782227472,2013.9041380299323,-876.5705027900536,-219.54285701713138,0.2419027535596717,normal +2025-07-17 23:50:00+08:00,993.4678935658828,2010.8232567848004,-746.6415144611148,-270.7138487578027,0.27784916570444423,normal +2025-07-18 00:00:00+08:00,2148.035887338302,2007.704894244377,-564.6340839701396,704.9650770640646,0.4075422170989896,normal +2025-07-18 00:10:00+08:00,1984.9759753565888,2004.5618154632161,-329.27981869708293,309.6939785904556,0.129873613632073,normal +2025-07-18 00:20:00+08:00,1822.891122399507,2001.4057460580316,-341.73048800694244,163.21586434841765,0.026976200749836473,normal +2025-07-18 00:30:00+08:00,1920.837497766348,1998.247315456754,23.070578487974565,-100.48039617838072,0.1582641891564166,normal +2025-07-18 00:40:00+08:00,1352.4000225929076,1995.0958173244655,44.775026630260506,-687.4708213618185,0.5706110878761542,normal +2025-07-18 00:50:00+08:00,1024.4026342465088,1991.9596001362643,213.4690870328178,-1181.0260529225734,0.9173219716480309,normal +2025-07-18 01:00:00+08:00,2291.796181021234,1988.847031190799,2335.587458337843,-2032.638308507408,1.515559451232792,normal +2025-07-18 01:10:00+08:00,4535.772607618563,1985.7662375406032,1404.7864486473923,1145.2199214305672,0.7168108387534852,normal +2025-07-18 01:20:00+08:00,4837.360066485388,1982.7264033771958,2943.0425943017062,-88.40893119351358,0.14978427034350184,normal +2025-07-18 01:30:00+08:00,3834.611418365843,1979.7364545676319,859.0180686057952,995.8568951924158,0.6118868433860147,normal +2025-07-18 01:40:00+08:00,8312.530339648587,1976.8033489969573,1659.2996907397849,4676.427299911845,3.1974005533096905,moderate +2025-07-18 01:50:00+08:00,2416.1362672814903,1973.9338570067218,484.79856632539617,-42.59615605062777,0.11760187870396159,normal +2025-07-18 02:00:00+08:00,2150.4585344169277,1971.1358733483044,2621.8901780697724,-2442.567517001149,1.803525030508139,mild +2025-07-18 02:10:00+08:00,1011.7960567667396,1968.416808456118,-353.04196806936625,-603.578783620012,0.5116789143584981,normal +2025-07-18 02:20:00+08:00,1209.9100122138404,1965.7825983251696,-755.0594256388717,-0.8131604724574117,0.08825031195481933,normal +2025-07-18 02:30:00+08:00,3568.234644892499,1963.2375465177352,2791.375095195536,-1186.3779968207718,0.921081585730074,normal +2025-07-18 02:40:00+08:00,3200.031223717012,1960.7840535092732,885.3366794465817,353.9104907611568,0.16093466826528002,normal +2025-07-18 02:50:00+08:00,3141.8289412900854,1958.420851921582,1225.413111089741,-42.005021721237654,0.11718662081048808,normal +2025-07-18 03:00:00+08:00,3206.886356646924,1956.1436626316731,-98.1571361971739,1348.8998302124246,0.8598911601939441,normal +2025-07-18 03:10:00+08:00,2902.573404402226,1953.9470774751878,428.03335039175084,520.5929765352873,0.2780251745684803,normal +2025-07-18 03:20:00+08:00,1127.2191458378038,1951.8269385752312,890.7908427509273,-1715.3986354883546,1.2927060796818155,normal +2025-07-18 03:30:00+08:00,1822.749257393737,1949.779915449275,271.55742995561195,-398.5880880111499,0.3676777961557595,normal +2025-07-18 03:40:00+08:00,2663.225112127161,1947.800032537449,929.4072286805767,-213.9821490908646,0.23799648768256507,normal +2025-07-18 03:50:00+08:00,739.6451273634689,1945.8797242196529,1828.2603860695676,-3034.4949829257516,2.2193400836493664,mild +2025-07-18 04:00:00+08:00,4249.687842932712,1944.0111094765207,1878.6185668401563,427.05816661603467,0.2123191815269566,normal +2025-07-18 04:10:00+08:00,3955.3951548727728,1942.1876993327494,1297.3120770730732,715.8953784669504,0.41522049546978834,normal +2025-07-18 04:20:00+08:00,3643.9352822001742,1940.4061790586816,1773.2592801741775,-69.73017703268488,0.13666288706410823,normal +2025-07-18 04:30:00+08:00,3491.2919034522897,1938.6653278041717,813.6232248309868,739.0033508171314,0.43145329983166675,normal +2025-07-18 04:40:00+08:00,3400.6985917015345,1936.9665180604438,1284.387183809836,179.34488983125493,0.03830645990208955,normal +2025-07-18 04:50:00+08:00,1584.2564353652588,1935.3112030652928,-418.17324859396876,67.1184808939347,0.04052993962741806,normal +2025-07-18 05:00:00+08:00,4623.994805605727,1933.7013587687516,2690.3089203610366,-0.015473524060780619,0.08768995572887617,normal +2025-07-18 05:10:00+08:00,3388.6680047943464,1932.1402130570943,2583.7779814524724,-1127.2501897152204,0.8795456988704992,normal +2025-07-18 05:20:00+08:00,4564.989875403319,1930.6325513230113,2512.8131231625302,121.54420091777774,0.0022971577972765063,normal +2025-07-18 05:30:00+08:00,2432.5673904415507,1929.183869900708,502.86328575216135,0.5202347886813641,0.08731363330196679,normal +2025-07-18 05:40:00+08:00,3456.816693631036,1927.797868677932,2000.329937765158,-471.31111281205426,0.41876400208969844,normal +2025-07-18 05:50:00+08:00,3817.7455982944366,1926.4783650279496,423.923579371554,1467.3436538949331,0.9430951466179595,normal +2025-07-18 06:00:00+08:00,2305.9154394036486,1925.2318105047752,1657.1211754789572,-1276.4375465800838,0.9843462906556152,normal +2025-07-18 06:10:00+08:00,3431.004916453707,1924.0642296502688,1784.2829117401734,-277.34222493673497,0.2825054432920665,normal +2025-07-18 06:20:00+08:00,2790.1843716191524,1922.9814163163205,1610.2935649417775,-743.0906096389456,0.6096826744294691,normal +2025-07-18 06:30:00+08:00,3974.732898899512,1921.9902884513083,2011.7268435812666,41.01576686693693,0.05886647922912811,normal +2025-07-18 06:40:00+08:00,3757.506619802596,1921.099853491113,2538.4519808636283,-702.0452145521451,0.5808492545905009,normal +2025-07-18 06:50:00+08:00,4389.941588814598,1920.3210488650045,1623.720101392191,845.9004385574019,0.5065459771919446,normal +2025-07-18 07:00:00+08:00,2664.318971312314,1919.6655143475457,769.733344876636,-25.0798879118679,0.10529711437683678,normal +2025-07-18 07:10:00+08:00,3144.2750775164645,1919.1442602146199,-198.25938791735507,1423.3902052191997,0.9122188878718105,normal +2025-07-18 07:20:00+08:00,3713.660438832946,1918.7673467686545,2292.7126667971447,-497.8195747328532,0.437385569995948,normal +2025-07-18 07:30:00+08:00,2736.8704888174434,1918.543256837118,932.3597262890739,-114.03249430874848,0.16778421775561628,normal +2025-07-18 07:40:00+08:00,7059.658186013385,1918.4783119765734,2815.7578419820884,2325.422032054723,1.5458749244688148,normal +2025-07-18 07:50:00+08:00,3721.280883714899,1918.5759727348438,2051.2741857035003,-248.569274723445,0.2622931258871279,normal +2025-07-18 08:00:00+08:00,2252.4360979717726,1918.8370670526058,276.65980597301956,56.939224946147306,0.04768062631882852,normal +2025-07-18 08:10:00+08:00,2154.3828318518795,1919.2618879053907,636.9952251997037,-401.87428125321503,0.3699862692309989,normal +2025-07-18 08:20:00+08:00,1875.2961580687856,1919.849859218413,294.00930762484273,-338.56300877447006,0.32551159683331476,normal +2025-07-18 08:30:00+08:00,2481.749066498979,1920.5995883272458,-16.742938421922283,577.8924165936555,0.3182766767953897,normal +2025-07-18 08:40:00+08:00,2167.759805907573,1921.510511362982,237.4785243465325,8.770770198058472,0.08151782719870562,normal +2025-07-18 08:50:00+08:00,2433.0480699926284,1922.5828432697458,314.87923379547055,195.585992927412,0.04971545092846798,normal +2025-07-18 09:00:00+08:00,5863.2744465064125,1923.816855799824,638.337471773226,3301.1201189333624,2.231279767461712,mild +2025-07-18 09:10:00+08:00,1652.6190993630448,1925.2119340978193,-100.97136007024062,-171.6214746645337,0.20823911519745952,normal +2025-07-18 09:20:00+08:00,1854.4884213565124,1926.7653944887666,162.21360245858716,-234.49057559084122,0.25240317253137556,normal +2025-07-18 09:30:00+08:00,1879.1669646840385,1928.4745226405144,-87.2749804277444,37.96742247126849,0.061007869111920084,normal +2025-07-18 09:40:00+08:00,958.619128362974,1930.3345623379385,-177.0856708922395,-794.6297630827248,0.6458877114682618,normal +2025-07-18 09:50:00+08:00,1745.4132870995545,1932.3386988260738,94.96084429877921,-281.8862560252985,0.2856975177223602,normal +2025-07-18 10:00:00+08:00,1556.811119754997,1934.4812334407288,13.425279247064449,-391.09539293279636,0.36241435497161034,normal +2025-07-18 10:10:00+08:00,1688.4749527521149,1936.7585884341665,-568.3869351830741,320.1032995010223,0.1371859155216811,normal +2025-07-18 10:20:00+08:00,974.665004273866,1939.1672401486765,-66.01368883343878,-898.4885470413717,0.7188460522397795,normal +2025-07-18 10:30:00+08:00,1366.1788258787512,1941.7014288207781,-190.31991809164882,-385.2026848503781,0.3582748668324528,normal +2025-07-18 10:40:00+08:00,1511.1054605465142,1944.3545877957888,-236.09738277977874,-197.15174446949572,0.22617352626432555,normal +2025-07-18 10:50:00+08:00,2123.4928145614085,1947.1192728269684,-287.846117652569,464.21965938700896,0.23842425179470167,normal +2025-07-18 11:00:00+08:00,3882.049097602594,1949.9867146564081,-218.82727703313793,2150.8896599793234,1.4232700585904658,normal +2025-07-18 11:10:00+08:00,1887.50995665076,1952.9457427293219,15.187316325439932,-80.62310240400188,0.14431490965620491,normal +2025-07-18 11:20:00+08:00,2779.63971798536,1955.9847189510317,-620.491595422843,1444.1465944571717,0.9267997606828496,normal +2025-07-18 11:30:00+08:00,1922.0230945238527,1959.092413070549,-321.3192940087092,284.249975462013,0.11199980286633546,normal +2025-07-18 11:40:00+08:00,2052.825237371204,1962.2570050397187,-231.96965486934795,322.537887200833,0.13889615583329168,normal +2025-07-18 11:50:00+08:00,2054.253076529385,1965.4655084778583,-122.9181125086913,211.70568056021784,0.06103915046179717,normal +2025-07-18 12:00:00+08:00,1175.5116007364936,1968.704274019468,-555.227936055395,-237.96473722757923,0.2548436889607744,normal +2025-07-18 12:10:00+08:00,1479.9712482937798,1971.959410620008,-539.5873708798359,47.599208553607696,0.0542417670601816,normal +2025-07-18 12:20:00+08:00,1411.1383318140029,1975.2200485744474,-305.25960111305073,-258.82211564739373,0.26949550428492863,normal +2025-07-18 12:30:00+08:00,1450.4712608529742,1978.47969886944,-493.4096383353341,-34.598799681131595,0.1119839248917035,normal +2025-07-18 12:40:00+08:00,1211.3104984975716,1981.7361108283071,-710.5105448342443,-59.91506749649125,0.1297680046193406,normal +2025-07-18 12:50:00+08:00,1567.7981422356745,1984.9904436227228,-334.38486475509967,-82.80743663194858,0.1458493528191913,normal +2025-07-18 13:00:00+08:00,2064.745830984664,1988.2454563041229,-7.598508186530677,84.09888286707155,0.028601608615120223,normal +2025-07-18 13:10:00+08:00,1733.079983963927,1991.5040635522093,-237.31611512280287,-21.107964465479654,0.10250693204199107,normal +2025-07-18 13:20:00+08:00,985.844579607302,1994.7684405047385,-451.08233641021224,-557.8415244872242,0.4795495709310439,normal +2025-07-18 13:30:00+08:00,1122.6949632004412,1998.0409192048944,-703.8363235323666,-171.50963247208665,0.2081605487009325,normal +2025-07-18 13:40:00+08:00,2083.524123416728,2001.325387385846,-464.3520641921656,546.5508002230474,0.29625993213171764,normal +2025-07-18 13:50:00+08:00,2061.9675080949137,2004.6260877381922,9.971290700934253,47.370129655787196,0.054402689571053736,normal +2025-07-18 14:00:00+08:00,1034.907785449099,2007.9467723836456,-949.9665384089002,-23.07244852564645,0.10388693565881496,normal +2025-07-18 14:10:00+08:00,3818.122177610674,2011.2912572874725,-731.4382352448176,2538.269155568019,1.6953949975682983,normal +2025-07-18 14:20:00+08:00,1480.87487801591,2014.6608216211498,-561.015660451327,27.229716846087285,0.06855085350135928,normal +2025-07-18 14:30:00+08:00,999.974751121228,2018.0530881885059,-726.8794715728283,-291.1988654944496,0.2922394057478633,normal +2025-07-18 14:40:00+08:00,1149.2918432858269,2021.4635192042397,-363.18172754882517,-508.98994836958764,0.445232493436324,normal +2025-07-18 14:50:00+08:00,945.7682391529884,2024.8868703693117,-607.5917319503135,-471.5268992660099,0.4189155869729553,normal +2025-07-18 15:00:00+08:00,1349.1526605429235,2028.3182784071994,-942.3195499327528,263.15393206847716,0.09718033103957939,normal +2025-07-18 15:10:00+08:00,1156.4816680395354,2031.753554660124,-920.7709277594353,45.49904113884645,0.05571708502639616,normal +2025-07-18 15:20:00+08:00,1057.9184714861954,2035.186280888576,-675.7055645023631,-301.5622449000175,0.2995194348161509,normal +2025-07-18 15:30:00+08:00,895.6440504369878,2038.6102190524675,185.1066398345168,-1328.0728084499965,1.020618841592006,normal +2025-07-18 15:40:00+08:00,969.1272100839606,2042.0197344978483,-280.2970635960889,-792.5954608177988,0.6444586622129206,normal +2025-07-18 15:50:00+08:00,1533.770234605704,2045.408809439863,-479.4938809241094,-32.14469391004968,0.1102599735963828,normal +2025-07-18 16:00:00+08:00,1926.824173448536,2048.770355463645,-410.26120113125864,288.3150191161494,0.11485539994599765,normal +2025-07-18 16:10:00+08:00,1570.280935748218,2052.0964366525563,-608.3409164608094,126.52541555647122,0.00120202774306809,normal +2025-07-18 16:20:00+08:00,2309.4565133111246,2055.3789172284373,105.43503860939057,148.64255747329662,0.016738797146244027,normal +2025-07-18 16:30:00+08:00,2452.296310729647,2058.6094361291457,-215.5451162826765,609.2319908831778,0.3402919869453685,normal +2025-07-18 16:40:00+08:00,1729.4101134260168,2061.7783657289506,-404.1998088670247,71.83155656409099,0.037219115374342616,normal +2025-07-18 16:50:00+08:00,1546.209325161162,2064.876998599641,-457.0176251993165,-61.650048239162516,0.13098678758050286,normal +2025-07-18 17:00:00+08:00,2151.9528744379163,2067.898827366813,-439.8080747972152,523.8621218683188,0.2803216718905931,normal +2025-07-18 17:10:00+08:00,1429.1269798997355,2070.8391463208645,-802.2171267227903,160.5049603016614,0.025071854735917432,normal +2025-07-18 17:20:00+08:00,2001.517333066166,2073.6948134955837,-1088.5883361004885,1016.4108556710707,0.6263255147785384,normal +2025-07-18 17:30:00+08:00,4635.908440221926,2076.4633182177263,-948.1040733358387,3507.5491953400383,2.376291314175224,moderate +2025-07-18 17:40:00+08:00,1652.6172503531477,2079.144581904562,-1136.2921125360133,709.7647809845989,0.41091389565028247,normal +2025-07-18 17:50:00+08:00,2241.6784400444863,2081.7404621225287,-1245.629978518107,1405.5679564400643,0.8996991793774317,normal +2025-07-18 18:00:00+08:00,1974.0851262493616,2084.2531133380385,-1270.827185326865,1160.6591982381883,0.727656565765316,normal +2025-07-18 18:10:00+08:00,1875.9483001548388,2086.685439302132,-1353.4599197533287,1142.7227806060355,0.715056656350356,normal +2025-07-18 18:20:00+08:00,1595.0604457386826,2089.0404520486945,-1164.7459122538041,670.765905943792,0.3835181077690578,normal +2025-07-18 18:30:00+08:00,1188.3437154651112,2091.320985562119,-1213.6370576507984,310.6597875537909,0.13055207159953064,normal +2025-07-18 18:40:00+08:00,1138.467554221481,2093.528031399694,-1306.8406077705704,351.7801305923572,0.159438140603034,normal +2025-07-18 18:50:00+08:00,1436.9630919032038,2095.662452278844,-1019.6903841714463,360.9910237958061,0.16590857535619705,normal +2025-07-18 19:00:00+08:00,1049.593773784406,2097.7242640113486,-1255.2881330081098,207.1576427811674,0.05784426142614451,normal +2025-07-18 19:10:00+08:00,1138.2917007595372,2099.714580678201,-1169.7668624768212,208.34398255815722,0.05867763707740279,normal +2025-07-18 19:20:00+08:00,1735.3508626395794,2101.6357418199873,-1202.2857295392405,836.0008503588328,0.49959175048372056,normal +2025-07-18 19:30:00+08:00,1779.0765407974206,2103.4904115615045,-1228.9989321246555,904.5850613605717,0.5477705375548544,normal +2025-07-18 19:40:00+08:00,1111.7305862788794,2105.279770931507,-1215.6187248439364,222.069540191309,0.06831951687716352,normal +2025-07-18 19:50:00+08:00,979.8597630839738,2107.004047112775,-1155.8710817084718,28.726797679670653,0.06749918960297807,normal +2025-07-18 20:00:00+08:00,934.3371311402728,2108.6635082311045,-941.9133947415297,-232.41298234930196,0.25094371238825297,normal +2025-07-18 20:10:00+08:00,983.8099393423212,2110.25773592842,-802.8178722371315,-323.6299243489675,0.3150214580048122,normal +2025-07-18 20:20:00+08:00,1346.703929715326,2111.7859394499815,-803.2239950883602,38.14198535370497,0.060885242813234264,normal +2025-07-18 20:30:00+08:00,1106.987939618792,2113.244264647071,-977.1940167360849,-29.062308292193848,0.10809467055965272,normal +2025-07-18 20:40:00+08:00,984.4180258489222,2114.6256561035707,-748.6450557110988,-381.56257454354954,0.3557177753849229,normal +2025-07-18 20:50:00+08:00,947.030499291388,2115.9238698039385,-714.4296283335642,-454.4637421789862,0.40692912244927393,normal +2025-07-18 21:00:00+08:00,988.2513814153511,2117.1326748639854,-590.4276878780985,-538.4536055705357,0.46593001617352314,normal +2025-07-18 21:10:00+08:00,986.1854986998604,2118.2477016042258,-1018.9360334065589,-113.12616949780659,0.16714754599915985,normal +2025-07-18 21:20:00+08:00,1190.5825872478977,2119.2672950931174,-908.8728832134731,-19.81182463174673,0.10159642444626689,normal +2025-07-18 21:30:00+08:00,972.4099826587028,2120.191859712042,-1021.0581476773374,-126.72372937600176,0.17669951040160733,normal +2025-07-18 21:40:00+08:00,1761.5568744600218,2121.023657174323,-1015.6750827116509,656.2082999973495,0.37329173369673174,normal +2025-07-18 21:50:00+08:00,1960.11716750452,2121.766158521913,-506.3247791265705,344.6757881091776,0.1544475079373197,normal +2025-07-18 22:00:00+08:00,1766.2819894376066,2122.422479339787,-833.8485571926958,477.7080672905154,0.2478995395150074,normal +2025-07-18 22:10:00+08:00,1134.0546638602696,2122.9926342548124,-1010.2344182590238,21.296447864480797,0.07271883471343935,normal +2025-07-18 22:20:00+08:00,961.560996588286,2123.4751259748723,-1176.0925171134313,14.178387726844903,0.07771910370715847,normal +2025-07-18 22:30:00+08:00,952.9163036533114,2123.8690352592625,-1115.4895887149737,-55.46314289097745,0.1266406328162247,normal +2025-07-18 22:40:00+08:00,905.4960793559734,2124.1727103088365,-1170.4921008865338,-48.184530066329444,0.12152757935493971,normal +2025-07-18 22:50:00+08:00,934.5832583318748,2124.3829289922064,-1082.241049520717,-107.55862113961439,0.16323647488031617,normal +2025-07-18 23:00:00+08:00,997.7848009660952,2124.495608461493,-1074.999029663629,-51.71177783176836,0.12400538753492892,normal +2025-07-18 23:10:00+08:00,958.7251777797268,2124.507295626231,-1203.7403162878338,37.95819844132939,0.06101434877491953,normal +2025-07-18 23:20:00+08:00,872.7782401081553,2124.414327593475,-1044.9366734283271,-206.69941405699228,0.23288053846673865,normal +2025-07-18 23:30:00+08:00,873.7281371639568,2124.2113337106402,-1001.7525220301269,-248.73067451655652,0.26240650542670513,normal +2025-07-18 23:40:00+08:00,1199.2072763305034,2123.89388882523,-970.0444402880263,45.35782779329975,0.05581628406371576,normal +2025-07-18 23:50:00+08:00,1396.6999931794098,2123.4620039423976,-666.5317823112515,-60.230228451736366,0.12998939774079105,normal +2025-07-19 00:00:00+08:00,1581.0893438264643,2122.919230861419,-596.5377523436393,54.707865308685086,0.0492481037204376,normal +2025-07-19 00:10:00+08:00,892.987700493763,2122.2726921171893,-179.20203840121854,-1050.0829532222078,0.825337539272798,normal +2025-07-19 00:20:00+08:00,1791.4820538686768,2121.531611244192,-309.8035277053376,-20.24602967017745,0.10190144322225363,normal +2025-07-19 00:30:00+08:00,2470.710226175154,2120.707978962679,163.07616554280415,186.92608166967057,0.04363206796834235,normal +2025-07-19 00:40:00+08:00,2910.8337791667795,2119.814884204808,-44.41578433727477,835.434679299246,0.4991940286972152,normal +2025-07-19 00:50:00+08:00,2473.773876624322,2118.8664437740954,240.82142505090908,114.08600779931749,0.007536362170139843,normal +2025-07-19 01:00:00+08:00,2258.377913008815,2117.8774800953165,139.32994921656783,1.1704836969306598,0.0868568488141641,normal +2025-07-19 01:10:00+08:00,3298.326739548197,2116.8631085640995,1030.0949581049708,151.36867287912673,0.01865382878035434,normal +2025-07-19 01:20:00+08:00,8972.419032320904,2115.837483147695,3813.6071672542625,3042.974381918947,2.049938489122546,mild +2025-07-19 01:30:00+08:00,3285.494909383525,2114.812268280719,1101.9141078753216,68.76853322748411,0.03937081686617074,normal +2025-07-19 01:40:00+08:00,2408.46606166069,2113.7972066287352,2260.37619800086,-1965.7073429689053,1.4685420300210328,normal +2025-07-19 01:50:00+08:00,4508.11098922259,2112.7987317557518,1065.007572469316,1330.3046849975226,0.8468285102227595,normal +2025-07-19 02:00:00+08:00,4782.834984668839,2111.82341154522,2764.9818483919425,-93.9702752683238,0.1536909830999233,normal +2025-07-19 02:10:00+08:00,1636.4236063092687,2110.876768365713,-446.6750913044226,-27.77807075202145,0.10719252404381464,normal +2025-07-19 02:20:00+08:00,1110.3255985236804,2109.9648230744538,-671.6008009417183,-328.03842360905514,0.3181183245292318,normal +2025-07-19 02:30:00+08:00,2142.1139353782646,2109.094018261525,3262.667841828377,-3229.647924711637,2.3564304123311266,moderate +2025-07-19 02:40:00+08:00,2645.4142609407204,2108.2716770196535,996.491473724747,-459.3488898036801,0.4103608231830655,normal +2025-07-19 02:50:00+08:00,4406.022735724315,2107.505547501062,2019.1240283148977,279.39315990835485,0.10858800474274787,normal +2025-07-19 03:00:00+08:00,2191.764679768165,2106.8013704612,395.52441612559096,-310.56110681862583,0.30584092260359763,normal +2025-07-19 03:10:00+08:00,2251.211223170313,2106.1613377196127,335.97288364039906,-190.92299818969855,0.22179797923460387,normal +2025-07-19 03:20:00+08:00,4538.512808352364,2105.587449969933,1246.5666144277752,1186.358743954656,0.7457098891587596,normal +2025-07-19 03:30:00+08:00,3086.9294996406807,2105.0825602348823,542.9051837984937,438.9417556073049,0.2206671218952837,normal +2025-07-19 03:40:00+08:00,3331.1237405623915,2104.6498953976547,1132.6294808787202,93.84436428601657,0.021755638276886858,normal +2025-07-19 03:50:00+08:00,2125.85047651484,2104.2922102092803,2038.9601826372623,-2017.4019163317025,1.5048562458792012,normal +2025-07-19 04:00:00+08:00,3967.996561374478,2104.0095240368287,2023.127754772942,-159.14071743529257,0.1994716782575073,normal +2025-07-19 04:10:00+08:00,2893.489743699753,2103.7992881873874,965.225332390831,-175.5348768784654,0.2109881877497987,normal +2025-07-19 04:20:00+08:00,3489.445087028763,2103.6584092025073,1868.1597951733902,-482.37311734713467,0.42653479879773437,normal +2025-07-19 04:30:00+08:00,2229.3405574030567,2103.5822475431473,201.92924948742635,-76.1709396275171,0.14118737054361166,normal +2025-07-19 04:40:00+08:00,2903.3603434399965,2103.56597996176,745.8821450688008,53.912218409435354,0.04980702686007668,normal +2025-07-19 04:50:00+08:00,1315.612909334515,2103.6058050255774,-724.7022792098206,-63.290616481241614,0.13213924799167226,normal +2025-07-19 05:00:00+08:00,2395.3509264040117,2103.6980273250206,1658.857396923179,-1367.204497844188,1.0481079284170873,normal +2025-07-19 05:10:00+08:00,4174.664695047312,2103.8397053747753,2126.843806559251,-56.01881688671392,0.12703098066349927,normal +2025-07-19 05:20:00+08:00,2361.6010585923605,2104.029754274856,2715.582834744005,-2458.0115304265005,1.8143740848819636,mild +2025-07-19 05:30:00+08:00,3380.8375451299357,2104.266951125476,-482.0551014731015,1758.6256954775608,1.1477138956577166,normal +2025-07-19 05:40:00+08:00,3997.550719775918,2104.5490624083563,1552.6205551084447,340.3811022591167,0.15143059264318226,normal +2025-07-19 05:50:00+08:00,2541.439850669733,2104.8719609876166,226.09789139944618,210.46999828267008,0.06017111287022907,normal +2025-07-19 06:00:00+08:00,3478.68014157751,2105.2306535048792,1485.2197047415364,-111.77021666890573,0.1661950211881584,normal +2025-07-19 06:10:00+08:00,4571.984115571595,2105.619333355203,2181.4960510300366,284.8687311863555,0.11243446413686295,normal +2025-07-19 06:20:00+08:00,3504.647952502496,2106.0312788304327,1526.1903300593672,-127.5736563873038,0.17729656403691835,normal +2025-07-19 06:30:00+08:00,2539.667843967536,2106.458537663226,1952.1176615776449,-1518.9083552733346,1.1546763023648927,normal +2025-07-19 06:40:00+08:00,2721.9973776981,2106.892961634771,2769.3888988245126,-2154.2844827611834,1.6010130132376401,normal +2025-07-19 06:50:00+08:00,2302.963637022847,2107.3263460511566,1628.4581577045578,-1432.8208667328677,1.0942018765560915,normal +2025-07-19 07:00:00+08:00,3266.718876648647,2107.7513329556755,850.8823196711875,308.08522402178414,0.12874350157447756,normal +2025-07-19 07:10:00+08:00,1747.656810040837,2108.1610858270524,-468.2855706086573,107.78129482244185,0.011965274008898241,normal +2025-07-19 07:20:00+08:00,2268.103604633445,2108.549447954375,2331.383284745618,-2171.829128066548,1.6133377118535401,normal +2025-07-19 07:30:00+08:00,2802.1284880579237,2108.9112330231587,623.0265533678437,70.19070166692154,0.038371777153937185,normal +2025-07-19 07:40:00+08:00,2291.74468175575,2109.2427449518364,3671.3990820918916,-3488.8971452879778,2.5385468617889795,moderate +2025-07-19 07:50:00+08:00,1990.1303686865135,2109.542578220209,2426.1315839064437,-2545.5437934401393,1.8758634306073474,mild +2025-07-19 08:00:00+08:00,3554.35427442079,2109.8121936249026,147.1866578341472,1297.3554229617398,0.8236824324799868,normal +2025-07-19 08:10:00+08:00,2842.191084897661,2110.0544562148625,981.2236322983308,-249.08700361553247,0.26265681819601544,normal +2025-07-19 08:20:00+08:00,2081.378138287003,2110.27214249349,439.2253766247831,-468.11938083127006,0.4165218858176831,normal +2025-07-19 08:30:00+08:00,2140.272745722127,2110.4693740597336,73.30993278586985,-43.50656112347633,0.11824141674796035,normal +2025-07-19 08:40:00+08:00,1931.4149091961597,2110.6534211610256,314.3358566910697,-493.5743686559356,0.43440341307286684,normal +2025-07-19 08:50:00+08:00,2403.3603128750747,2110.8332727267943,348.84699662458286,-56.31995647630265,0.12724252410700576,normal +2025-07-19 09:00:00+08:00,2444.6190767292755,2111.01713987757,330.94908939325785,2.652847458447468,0.08581552331103522,normal +2025-07-19 09:10:00+08:00,2170.0472886928574,2111.2108049455705,-141.57823504833388,200.4147187956205,0.053107516711996414,normal +2025-07-19 09:20:00+08:00,2923.5117555894467,2111.4175221908054,231.23311434215134,580.8611190564898,0.32036212010289983,normal +2025-07-19 09:30:00+08:00,2020.4495396468108,2111.6384208517275,-139.73707728122008,48.54819607630361,0.05357512575715677,normal +2025-07-19 09:40:00+08:00,1966.5161615208835,2111.8735530323925,-353.3048640774406,207.94747256593155,0.05839909818035937,normal +2025-07-19 09:50:00+08:00,1844.7581184700025,2112.1218016732737,172.26772448194575,-439.631407685217,0.3965097580663401,normal +2025-07-19 10:00:00+08:00,2312.0091803635214,2112.382433784533,92.32105497689099,107.30569160209734,0.012299374029130925,normal +2025-07-19 10:10:00+08:00,1623.918988617825,2112.656897003186,-430.26905724081183,-58.46885114454881,0.1287520718170042,normal +2025-07-19 10:20:00+08:00,2108.77320504029,2112.9484007884453,130.7387072210394,-134.91390296919462,0.1824529137558,normal +2025-07-19 10:30:00+08:00,2129.421363079902,2113.261574860252,54.040518135061895,-37.88072991541185,0.1142894033047408,normal +2025-07-19 10:40:00+08:00,2068.81527467214,2113.6012547105997,-59.08280852383493,14.296828485375045,0.07763590187393153,normal +2025-07-19 10:50:00+08:00,1758.261926290303,2113.9717867982,-155.5230385200013,-200.18682198789543,0.22830559647943174,normal +2025-07-19 11:00:00+08:00,1777.4613698646322,2114.377140488365,-46.82263373922916,-290.0931368845038,0.291462657536009,normal +2025-07-19 11:10:00+08:00,1663.0465032415618,2114.821311247448,167.6005372857721,-619.3753452916585,0.5227756255419947,normal +2025-07-19 11:20:00+08:00,1157.4017265839848,2115.3079756169745,-604.839312331213,-353.06693670177674,0.3357002633660108,normal +2025-07-19 11:30:00+08:00,2111.780705135152,2115.841016005909,-332.77232547522914,328.7120146044722,0.14323333439356473,normal +2025-07-19 11:40:00+08:00,1943.99833368158,2116.4226031840553,-105.91825954083536,-66.50600996163985,0.13439798590786833,normal +2025-07-19 11:50:00+08:00,2234.081214439946,2117.0521616239157,-68.45252231832828,185.48157513435854,0.042617336271773075,normal +2025-07-19 12:00:00+08:00,1697.2296451136267,2117.7282052582755,-591.7051097119696,171.20654956732096,0.032589468236492225,normal +2025-07-19 12:10:00+08:00,2150.165367345817,2118.449062563905,-524.3106126287147,556.0269174106265,0.3029166804645068,normal +2025-07-19 12:20:00+08:00,2077.978840415742,2119.2122838976697,-243.18691653244687,201.95347305051928,0.05418845520379724,normal +2025-07-19 12:30:00+08:00,2034.5546368861703,2120.0142414968327,-382.0846881157543,296.6250835050919,0.12069302375028869,normal +2025-07-19 12:40:00+08:00,1682.007169093528,2120.850133471093,-734.0476593181394,295.2046949405744,0.11969523435811467,normal +2025-07-19 12:50:00+08:00,2304.7237309690536,2121.714870097405,-158.22345240863774,341.2323132802867,0.15202854826507478,normal +2025-07-19 13:00:00+08:00,2318.8076775293293,2122.604759692991,180.6421708630838,15.560746973254481,0.07674802901203817,normal +2025-07-19 13:10:00+08:00,1617.074993169459,2123.516710348611,-248.91443215850208,-257.52728502064997,0.26858591637616797,normal +2025-07-19 13:20:00+08:00,1993.3510533886224,2124.4480519352537,-439.1876840199964,308.0906854733653,0.1287473381151184,normal +2025-07-19 13:30:00+08:00,1074.9077219229307,2125.397276415929,-612.7529563767473,-437.7365981162509,0.3951786991326556,normal +2025-07-19 13:40:00+08:00,1636.4612279509452,2126.3633208269166,-521.458678016218,31.556585140246625,0.06551133080095442,normal +2025-07-19 13:50:00+08:00,1378.8570269700429,2127.3464715724585,96.24895785979867,-844.7384024622143,0.6810878461906317,normal +2025-07-19 14:00:00+08:00,1147.9578366172047,2128.3486580819153,-1140.2835916973436,159.89277023263276,0.024641805683052388,normal +2025-07-19 14:10:00+08:00,1242.6549967671403,2129.372969361785,-733.9982099993777,-152.71976259526718,0.19496110925755036,normal +2025-07-19 14:20:00+08:00,1639.2136574858805,2130.4232314160645,-492.3039080113002,1.094334081116358,0.086910342119289,normal +2025-07-19 14:30:00+08:00,1828.4292303706263,2131.5042195509113,-641.8442937804938,338.76930460020867,0.1502983428866266,normal +2025-07-19 14:40:00+08:00,1722.8406482957016,2132.6204848754246,-388.37983128190103,-21.40000529782219,0.10271208382360376,normal +2025-07-19 14:50:00+08:00,978.6108934117284,2133.7761337525667,-874.4011566174273,-280.764083723411,0.28490921820560416,normal +2025-07-19 15:00:00+08:00,971.2341509114542,2134.9741864202465,-1027.412199725472,-136.32783578332032,0.18344616813592146,normal +2025-07-19 15:10:00+08:00,1229.8490945614997,2136.218345704234,-962.9865302473958,56.61727910466152,0.047906785662485435,normal +2025-07-19 15:20:00+08:00,1981.7071431618367,2137.5120234242963,-592.5385070830131,436.7336268205536,0.21911596361718036,normal +2025-07-19 15:30:00+08:00,2174.838596051444,2138.8571252715733,-112.37392886835855,148.3553996482292,0.016537075561820134,normal +2025-07-19 15:40:00+08:00,1783.2430999382111,2140.254916735613,-330.87253707408485,-26.13927972331703,0.10604131208303211,normal +2025-07-19 15:50:00+08:00,1392.8742842479492,2141.707245151675,-576.8543871644254,-171.9785737393006,0.20848996885656274,normal +2025-07-19 16:00:00+08:00,1716.2554589241577,2143.2161488916104,-442.6409842690737,15.680294301620961,0.07666404983965773,normal +2025-07-19 16:10:00+08:00,1105.247718085196,2144.78289521319,-678.9502430070228,-360.58493412097096,0.340981478846517,normal +2025-07-19 16:20:00+08:00,1139.136993703097,2146.407003689499,80.76619649444008,-1088.036206480842,0.8519988025679053,normal +2025-07-19 16:30:00+08:00,2011.786264499662,2148.086983650953,-84.66634740054667,-51.63437175074432,0.12395101159269385,normal +2025-07-19 16:40:00+08:00,1700.6197091423635,2149.8208563853113,-406.4598949933538,-42.741252249594254,0.11770380535402773,normal +2025-07-19 16:50:00+08:00,2006.269245417291,2151.605733688946,-437.25344177242107,291.9169535007659,0.11738567371055597,normal +2025-07-19 17:00:00+08:00,1821.8035265936885,2153.4377730828,-600.561257637015,268.9270111479036,0.10123578263186281,normal +2025-07-19 17:10:00+08:00,1092.5830022381388,2155.31213252432,-967.129090450684,-95.60003983549723,0.15483585418484305,normal +2025-07-19 17:20:00+08:00,880.3584156820364,2157.2231240263236,-1218.943306051981,-57.921402292306084,0.12836750193861238,normal +2025-07-19 17:30:00+08:00,823.5763359537907,2159.164635129811,-1123.2357024222438,-212.35259675377642,0.2368517656842636,normal +2025-07-19 17:40:00+08:00,736.9476112419947,2161.130305555016,-1181.4345652587826,-242.7481290542387,0.2582039086516969,normal +2025-07-19 17:50:00+08:00,818.2245556253904,2163.113819342313,-1374.421428108013,29.53216439109019,0.06693343852504152,normal +2025-07-19 18:00:00+08:00,901.2185797571644,2165.110180736125,-1312.5204047858488,48.6288038068883,0.05351850073178426,normal +2025-07-19 18:10:00+08:00,766.1032206945695,2167.115426524913,-1445.4345660500924,44.42236021974895,0.056473427922043615,normal +2025-07-19 18:20:00+08:00,806.095915995264,2169.1258475404834,-1229.3947121935073,-133.63521935171207,0.18155466873937082,normal +2025-07-19 18:30:00+08:00,666.7445036630113,2171.1390310763054,-1239.6201337610946,-264.7743936521995,0.27367683888648087,normal +2025-07-19 18:40:00+08:00,788.4749802095389,2173.1534899604603,-1337.4583719281643,-47.22013782275735,0.12085011659962808,normal +2025-07-19 18:50:00+08:00,817.7539165892654,2175.1682348587997,-939.6073224387956,-417.80699583073874,0.3811786246125634,normal +2025-07-19 19:00:00+08:00,753.2604663831464,2177.1829626791855,-1277.126585626105,-146.79591066993407,0.19079974330490693,normal +2025-07-19 19:10:00+08:00,786.2917828087094,2179.1975678318736,-1148.3568754530602,-244.54890957010412,0.2594689143981876,normal +2025-07-19 19:20:00+08:00,587.7840184440997,2181.2133175489294,-1195.6559125181946,-397.77338658663507,0.36710548766252254,normal +2025-07-19 19:30:00+08:00,758.170100678693,2183.2328808677557,-1238.9541965496105,-186.10858363945226,0.21841596681366046,normal +2025-07-19 19:40:00+08:00,839.1864507219523,2185.260020882161,-1218.70775265897,-127.36581750123833,0.1771505621322439,normal +2025-07-19 19:50:00+08:00,727.2101728557054,2187.2997115882595,-1146.4380626474765,-313.65147608507755,0.30801183396475307,normal +2025-07-19 20:00:00+08:00,596.6387814657262,2189.358489378059,-854.7155990677414,-738.0041088445914,0.6061095278534717,normal +2025-07-19 20:10:00+08:00,1753.370806069447,2191.4443958152933,-695.626747826469,257.5531580806228,0.09324591970126801,normal +2025-07-19 20:20:00+08:00,1805.39007916164,2193.56577045962,-748.3837889143219,360.208097616342,0.1653585882215217,normal +2025-07-19 20:30:00+08:00,1348.6824338999704,2195.730697665611,-959.9050729527462,112.85680918710568,0.008399845140066904,normal +2025-07-19 20:40:00+08:00,1597.8890416613228,2197.9466233995313,-693.0107778835953,92.95319614538676,0.022381662830714466,normal +2025-07-19 20:50:00+08:00,1515.7147299281232,2200.218413818116,-687.731157572749,3.2274736827562265,0.08541186197117145,normal +2025-07-19 21:00:00+08:00,2221.3222020785606,2202.5485204280235,-394.8835617638223,413.6572434143595,0.20290534974176988,normal +2025-07-19 21:10:00+08:00,1170.363688006817,2204.936610322212,-1055.7829262126859,21.210003897291244,0.07277955955707287,normal +2025-07-19 21:20:00+08:00,1723.8361304503474,2207.3815438895344,-990.004616899901,506.459203460714,0.2680965330703033,normal +2025-07-19 21:30:00+08:00,1629.3184825919018,2209.882120432509,-1038.885836127406,458.32219828679854,0.23428142477289446,normal +2025-07-19 21:40:00+08:00,991.5211291170334,2212.4361954571036,-1072.084064745681,-148.83100159438936,0.19222934657492546,normal +2025-07-19 21:50:00+08:00,1808.2306987431932,2215.041803285994,-574.3160799265875,167.50497538378704,0.02998919986842767,normal +2025-07-19 22:00:00+08:00,1093.973917415203,2217.698143287644,-850.7248949829166,-272.9993308895246,0.2794546628789516,normal +2025-07-19 22:10:00+08:00,1685.8338815112634,2220.4051388386765,-1045.0163292130214,510.4450718856083,0.2708965114229254,normal +2025-07-19 22:20:00+08:00,952.8215978334335,2223.1630483721183,-1191.1149838034626,-79.22646673522195,0.14333380611182803,normal +2025-07-19 22:30:00+08:00,2413.0783245115463,2225.9719713746445,-1162.2871817585162,1349.3935348954183,0.8602379760638149,normal +2025-07-19 22:40:00+08:00,978.6823416995636,2228.8327588302045,-1189.4116865776143,-60.73873055302647,0.13034660844724152,normal +2025-07-19 22:50:00+08:00,1351.9191547679743,2231.745681003886,-1136.6183062193356,256.79177998342357,0.09271106958504147,normal +2025-07-19 23:00:00+08:00,984.7307722466672,2234.708868617304,-1070.6947206889615,-179.2833756816749,0.2136214195540058,normal +2025-07-19 23:10:00+08:00,981.9063880181116,2237.716910911197,-1257.4389813358684,1.628458442783085,0.08653513238056948,normal +2025-07-19 23:20:00+08:00,987.517857505693,2240.7627562598914,-1089.6869787795945,-163.55791997460392,0.202574658629858,normal +2025-07-19 23:30:00+08:00,1076.588457900183,2243.8400530863614,-962.4731469687079,-204.77844821747067,0.23153110537125712,normal +2025-07-19 23:40:00+08:00,976.039276927258,2246.9426791372025,-1063.2927580222072,-207.6106441877373,0.2335206560944074,normal +2025-07-19 23:50:00+08:00,1956.2962645525768,2250.0618800095203,-586.2355901413879,292.4699746844444,0.11777415802006562,normal +2025-07-20 00:00:00+08:00,1407.1457703439694,2253.1857835704513,-628.2516351113308,-217.78837811515132,0.24067027360248228,normal +2025-07-20 00:10:00+08:00,2368.1347328935144,2256.30028445076,-28.92381427852143,140.75826272127597,0.011200266447771315,normal +2025-07-20 00:20:00+08:00,3591.0982210103866,2259.3922984210417,-277.8287401875649,1609.53466277691,1.0429809693210998,normal +2025-07-20 00:30:00+08:00,2028.065147394541,2262.4476205629985,302.6983422410577,-537.080815409515,0.4649656635346995,normal +2025-07-20 00:40:00+08:00,2232.395224136196,2265.451426175457,-133.53753335459635,100.48133131533496,0.017093325819934356,normal +2025-07-20 00:50:00+08:00,2392.6455436923416,2268.3900493799897,268.11391723752905,-143.85842292517736,0.1887362275990091,normal +2025-07-20 01:00:00+08:00,5523.89614319348,2271.2499477791025,-2056.9314300470432,5309.577625461421,3.6421736909331397,severe +2025-07-20 01:10:00+08:00,2797.219277628105,2274.0189007722433,655.3661033627977,-132.16572650693615,0.18052238475101645,normal +2025-07-20 01:20:00+08:00,4651.265180607962,2276.6870529583007,4684.072111200319,-2309.493983550658,1.7100440187815178,normal +2025-07-20 01:30:00+08:00,6260.8852174695785,2279.2475440686962,1345.0473292556137,2636.590344145269,1.764463308479158,mild +2025-07-20 01:40:00+08:00,5371.679358148087,2281.696000337611,2861.896010693078,228.0873471173977,0.07254688399697878,normal +2025-07-20 01:50:00+08:00,3964.089765184857,2284.0316321408627,1645.242661131277,34.81547191271693,0.06322203987514935,normal +2025-07-20 02:00:00+08:00,5306.512685540984,2286.2563644866923,2908.1458589125705,112.11046214172165,0.008924136297689395,normal +2025-07-20 02:10:00+08:00,1911.0882969220877,2288.3737179643404,-540.3714792280167,163.08605818576416,0.02688501498886235,normal +2025-07-20 02:20:00+08:00,1903.2536785389816,2290.3885129334626,-588.24814318369,201.113308789209,0.053598259669588665,normal +2025-07-20 02:30:00+08:00,6107.891997053988,2292.304881577658,3734.1476942579525,81.4394212183779,0.030469817560368703,normal +2025-07-20 02:40:00+08:00,3493.138276339409,2294.12666533886,1107.5653511853334,91.4462598152154,0.023440249982489687,normal +2025-07-20 02:50:00+08:00,2171.7245948856216,2295.858032962699,2813.221092536856,-2937.354530613933,2.151101212055348,mild +2025-07-20 03:00:00+08:00,3506.512568776347,2297.5036460146853,889.2464365165586,319.76248624510345,0.13694650226536298,normal +2025-07-20 03:10:00+08:00,2463.7633722698783,2299.0683247949682,243.78236275364654,-79.08731527873624,0.1432360555028359,normal +2025-07-20 03:20:00+08:00,3962.965010395988,2300.555545079755,1602.4863250166363,59.923140299596525,0.04558449631525566,normal +2025-07-20 03:30:00+08:00,2988.480615695439,2301.9660407151214,814.1040247794679,-127.58944979915032,0.17730765853542416,normal +2025-07-20 03:40:00+08:00,882.9163948013736,2303.2998541106267,1335.8068904771242,-2756.1903497863773,2.0238376572878245,mild +2025-07-20 03:50:00+08:00,4442.624442281647,2304.5569999395825,2249.496681846585,-111.42923950452041,0.16595549279001698,normal +2025-07-20 04:00:00+08:00,4236.484053889304,2305.738320185523,2167.324623405965,-236.57888970218437,0.2538701638321211,normal +2025-07-20 04:10:00+08:00,9595.099746667433,2306.8441975442142,633.1486526225789,6655.10689650064,4.587376198923394,severe +2025-07-20 04:20:00+08:00,4736.817511899975,2307.8734258322042,1963.1659354817043,465.77815058606666,0.2395190550232426,normal +2025-07-20 04:30:00+08:00,1834.003345902348,2308.824257126498,-409.7587132844381,-65.06219793971195,0.13338374209053486,normal +2025-07-20 04:40:00+08:00,2328.632421191804,2309.6933196989353,207.23581484423215,-188.29671335136345,0.21995307621441623,normal +2025-07-20 04:50:00+08:00,3248.4539136379744,2310.476616284211,-1031.286444933873,1969.2637422876364,1.2956821445901838,normal +2025-07-20 05:00:00+08:00,8755.750504824384,2311.1702164066023,627.4017263888835,5817.178562028897,3.998751350467234,severe +2025-07-20 05:10:00+08:00,2368.958676923672,2311.770266853309,1669.688829264561,-1612.5004191941978,1.2204225149892078,normal +2025-07-20 05:20:00+08:00,5228.163397607415,2312.2735384218718,2918.279366418826,-2.3895072332825293,0.08935765829344149,normal +2025-07-20 05:30:00+08:00,5123.6613396705925,2312.677717770833,-1467.0871820170348,4278.070803916795,2.9175645310149694,moderate +2025-07-20 05:40:00+08:00,7866.968460325672,2312.9817992203302,1105.0869764547724,4448.899684650569,3.037567781767011,moderate +2025-07-20 05:50:00+08:00,7609.769827211721,2313.1857225508857,28.643314958374596,5267.940789702461,3.612924798002144,severe +2025-07-20 06:00:00+08:00,6721.86927525731,2313.2897983161006,1313.1308914665321,3095.4485854746767,2.0868003767627603,mild +2025-07-20 06:10:00+08:00,4902.663308230864,2313.296551728137,2578.8049911358085,10.56176536691828,0.08025969542718553,normal +2025-07-20 06:20:00+08:00,3890.759130129094,2313.210727076177,1442.0088486956963,135.53955435722037,0.007534247179111872,normal +2025-07-20 06:30:00+08:00,5952.49749617845,2313.0392522154284,1892.5615766486821,1746.8966673143395,1.1394745306176661,normal +2025-07-20 06:40:00+08:00,5483.167908041143,2312.7900496305747,3000.331797136695,170.04606127387342,0.0317742526413586,normal +2025-07-20 06:50:00+08:00,3867.085067637821,2312.4718367018572,1633.1480182570738,-78.53478732110989,0.1428479176729693,normal +2025-07-20 07:00:00+08:00,4546.177775886636,2312.094243267792,932.421014073787,1301.6625185450566,0.8267080653184019,normal +2025-07-20 07:10:00+08:00,5782.487550372498,2311.667613454403,-738.0570422625026,4208.876979180597,2.868957504705108,moderate +2025-07-20 07:20:00+08:00,4757.833817135812,2311.202569705053,2369.814802895969,76.81644453478975,0.03371734940509259,normal +2025-07-20 07:30:00+08:00,4941.285203964401,2310.709326436572,313.7940692962458,2316.7818082315835,1.5398053714661357,normal +2025-07-20 07:40:00+08:00,7048.408958144057,2310.1966341984894,4527.42549656245,210.78682738311772,0.06039367782425353,normal +2025-07-20 07:50:00+08:00,5387.481366630768,2309.671271614629,2801.334691844323,276.4754031718162,0.10653834960373201,normal +2025-07-20 08:00:00+08:00,5214.728961231607,2309.137314064944,17.75825033211334,2887.8333968345496,1.9409556142419468,mild +2025-07-20 08:10:00+08:00,3829.980351720671,2308.595109801403,1325.2636230469825,196.12161887228558,0.05009171549389667,normal +2025-07-20 08:20:00+08:00,3473.2153952886288,2308.0420494683744,584.4027778076295,580.7705680126251,0.32029851013498295,normal +2025-07-20 08:30:00+08:00,2203.318148838711,2307.4736358807495,163.21996056892044,-267.3754476109591,0.275504017810161,normal +2025-07-20 08:40:00+08:00,2832.5103980958834,2306.8836510150004,391.01386176475535,134.61288531612763,0.006883284081860716,normal +2025-07-20 08:50:00+08:00,2395.2746457770377,2306.2642795521724,382.5389361482504,-293.528569923385,0.2938759680408597,normal +2025-07-20 09:00:00+08:00,2467.560161509145,2305.6064017280505,23.757228586000796,138.19653119509348,0.009400710603493581,normal +2025-07-20 09:10:00+08:00,3977.930947716353,2304.900436094919,-182.05386352167127,1855.0843751431053,1.2154738380831116,normal +2025-07-20 09:20:00+08:00,2432.841411709906,2304.1375791862006,300.31931442016116,-171.61548189645555,0.2082349054195385,normal +2025-07-20 09:30:00+08:00,2280.6331108764875,2303.308800812628,-191.966798765769,169.29110882962868,0.031243916394446368,normal +2025-07-20 09:40:00+08:00,1946.996102791816,2302.40737104545,-529.3144913759685,173.90322312233457,0.03448381766633496,normal +2025-07-20 09:50:00+08:00,3030.009971911732,2301.429053647649,249.46129426992078,479.1196239941619,0.2488911247336825,normal +2025-07-20 10:00:00+08:00,4247.059868592366,2300.3691559903737,171.04806353155917,1775.642649070433,1.1596679033188906,normal +2025-07-20 10:10:00+08:00,3717.079083601439,2299.222452869433,-292.02200090126604,1709.878631633272,1.1134702355646173,normal +2025-07-20 10:20:00+08:00,3041.647085251608,2297.9832972046584,327.68044827599124,415.98333977095854,0.2045393774492357,normal +2025-07-20 10:30:00+08:00,2716.1155204026177,2296.6484031002105,298.4026188034863,121.06449849892078,0.0026341374075694833,normal +2025-07-20 10:40:00+08:00,2378.1583374016204,2295.215327183901,117.80197621879368,-34.85896600107435,0.11216668558178834,normal +2025-07-20 10:50:00+08:00,2053.961051204459,2293.683860484039,-23.49789798163895,-216.22491129794116,0.23957197511980027,normal +2025-07-20 11:00:00+08:00,2433.539035816521,2292.055684972521,124.97442750489192,16.50892333910815,0.07608195752752131,normal +2025-07-20 11:10:00+08:00,3077.506359543496,2290.335521867302,320.12931016068006,467.04152751551374,0.24040654745313833,normal +2025-07-20 11:20:00+08:00,2108.5543372605744,2288.528840115005,-589.0296002892462,409.0550974348157,0.19967245097425187,normal +2025-07-20 11:30:00+08:00,1539.5704274436816,2286.6412021825345,-344.18228097301886,-402.888493765834,0.3706987295476906,normal +2025-07-20 11:40:00+08:00,2102.6387660367704,2284.6779076978773,19.985377325468367,-202.02451898657546,0.22959653518248718,normal +2025-07-20 11:50:00+08:00,1831.5111570017648,2282.643723473807,-14.161490793171321,-436.97107567887065,0.3946409377154136,normal +2025-07-20 12:00:00+08:00,3417.178701081897,2280.543038227386,-628.0624903082054,1764.6981531627162,1.1519796536439701,normal +2025-07-20 12:10:00+08:00,1336.354587776682,2277.8642351024637,-509.13087399939576,-432.37877332638595,0.39141495386322617,normal +2025-07-20 12:20:00+08:00,1849.24712646549,2275.2263855550596,-181.35854709515385,-244.62071199441561,0.25951935390403835,normal +2025-07-20 12:30:00+08:00,1973.5056172383304,2272.6399711521726,-270.5660800408067,-28.56827387303565,0.10774762305792043,normal +2025-07-20 12:40:00+08:00,997.5111867956608,2270.1085922847556,-757.8992084507274,-514.6981970383672,0.44924240319755515,normal +2025-07-20 12:50:00+08:00,2098.690329486655,2267.631807923188,17.912366008019735,-186.85384444455258,0.21893949491315962,normal +2025-07-20 13:00:00+08:00,1730.1217061054194,2265.2072914889904,368.6760512389291,-903.7616366225002,0.722550273027998,normal +2025-07-20 13:10:00+08:00,2231.199847159566,2262.8319319964944,-260.488714559474,228.85662972254568,0.07308728684319671,normal +2025-07-20 13:20:00+08:00,1730.348291743407,2260.5024051288306,-427.3170830121974,-102.8370303732263,0.15991966897341325,normal +2025-07-20 13:30:00+08:00,2207.5307078102624,2258.2153008372757,-521.6450307223976,470.96043769538437,0.2431594892213552,normal +2025-07-20 13:40:00+08:00,3944.668085623307,2255.9673815128795,-578.206505864122,2266.9072099745495,1.5047696451001495,normal +2025-07-20 13:50:00+08:00,2719.6851141968414,2253.7554815734297,182.5921086894578,283.3375239339539,0.1113588272359243,normal +2025-07-20 14:00:00+08:00,4163.642595005619,2251.5766475232817,-1330.3961689429402,3242.462116425278,2.1900739072268633,mild +2025-07-20 14:10:00+08:00,1587.9076922380518,2249.4280743604286,-736.6092242323415,75.08884210996484,0.03493094927237259,normal +2025-07-20 14:20:00+08:00,1978.2350337345729,2247.307186270774,-423.4729502120621,154.4007976758612,0.020783824778285574,normal +2025-07-20 14:30:00+08:00,1725.194174823558,2245.211593812669,-556.7169254517917,36.6995064626808,0.061898550137619704,normal +2025-07-20 14:40:00+08:00,2002.5940813271895,2243.139041847779,-413.5850466619427,173.04008614135319,0.033877484339574535,normal +2025-07-20 14:50:00+08:00,1420.7683842781707,2241.0874251748805,-1141.2693626068847,320.9503217101751,0.13778092860214447,normal +2025-07-20 15:00:00+08:00,2846.167637706844,2239.054719364999,-1112.6771265391521,1719.790044880997,1.120432769090359,normal +2025-07-20 15:10:00+08:00,983.6529273416992,2237.0389495297763,-1005.3689765006536,-248.01704568742343,0.26190519804262286,normal +2025-07-20 15:20:00+08:00,1676.1860418154874,2235.0383163116912,-509.35931883138863,-49.49295566481533,0.12244671740999839,normal +2025-07-20 15:30:00+08:00,1718.585283518632,2233.051274134352,-409.879770723437,-104.58621989228277,0.16114843326412653,normal +2025-07-20 15:40:00+08:00,2035.574563790951,2231.076460997712,-381.3247687380589,185.822871531298,0.042857088923237925,normal +2025-07-20 15:50:00+08:00,1638.7681287228706,2229.112657841932,-674.3525554508574,84.00802633179592,0.028665433183532256,normal +2025-07-20 16:00:00+08:00,1308.7865888863423,2227.1586935722285,-475.3501481520378,-443.0219565338484,0.39889153848848924,normal +2025-07-20 16:10:00+08:00,1729.1597046001764,2225.2134897282326,-749.458260532556,253.40447540449986,0.0903315681856756,normal +2025-07-20 16:20:00+08:00,2101.419705293514,2223.27615100007,55.95974291649925,-177.81618862305504,0.2125907553259231,normal +2025-07-20 16:30:00+08:00,2226.092467799272,2221.3458336790613,46.23899753509122,-41.4923634148804,0.11682649046822013,normal +2025-07-20 16:40:00+08:00,1819.19044318488,2219.4218140634343,-408.6738287975838,8.442457919029493,0.08174845881425012,normal +2025-07-20 16:50:00+08:00,1425.0447085476098,2217.5034660056103,-417.664002624764,-374.79475483323654,0.3509635420125987,normal +2025-07-20 17:00:00+08:00,976.1282504308774,2215.5902526465916,-761.3071726216747,-478.1548295940395,0.4235715513608572,normal +2025-07-20 17:10:00+08:00,981.2920039108204,2213.6818080555154,-1132.163853611994,-100.22595053270106,0.1580854471047793,normal +2025-07-20 17:20:00+08:00,799.8491789657742,2211.7779350141204,-1349.5060601330058,-62.42269591534068,0.13152955430957775,normal +2025-07-20 17:30:00+08:00,941.8821153029686,2209.8785210610176,-1298.5479102385668,30.551504480517906,0.06621737620684466,normal +2025-07-20 17:40:00+08:00,859.9412733162934,2207.983498763098,-1226.749995258882,-121.29223018792254,0.17288401060890915,normal +2025-07-20 17:50:00+08:00,798.0052713624015,2206.0928257511982,-1503.068180365866,94.9806259770694,0.02095744129727981,normal +2025-07-20 18:00:00+08:00,791.6205848898006,2204.206502515979,-1354.2436052887758,-58.342312337402745,0.12866318129604204,normal +2025-07-20 18:10:00+08:00,668.9311710910653,2202.324533794282,-1537.3092365699094,3.9158738666924364,0.08492827711399856,normal +2025-07-20 18:20:00+08:00,834.8646886050674,2200.4469502593265,-1294.1179405600585,-71.46432109420039,0.1378810822765356,normal +2025-07-20 18:30:00+08:00,989.2170447729574,2198.57380539212,-1265.6362630543574,56.2795024351949,0.04814406578859808,normal +2025-07-20 18:40:00+08:00,778.2216895246363,2196.705180875697,-1368.0632900120027,-50.42020133905771,0.12309808557840703,normal +2025-07-20 18:50:00+08:00,1519.592712963754,2194.841163872618,-859.4999053808386,184.25145447197474,0.041753205583395125,normal +2025-07-20 19:00:00+08:00,943.3619815625168,2192.9818508911835,-1298.9586180326385,49.33874870397176,0.053019781222888036,normal +2025-07-20 19:10:00+08:00,1177.8507791754832,2191.1273042751795,-1126.9576002768827,113.68107517718636,0.00782081776560214,normal +2025-07-20 19:20:00+08:00,1142.5377433236204,2189.2775676038136,-1189.067777480457,142.32795320026344,0.012302936905740218,normal +2025-07-20 19:30:00+08:00,978.3082149636962,2187.432656334848,-1248.9734832800275,39.84904190887528,0.05968607593373414,normal +2025-07-20 19:40:00+08:00,966.829675036818,2185.592554000904,-1221.8657875811693,3.102908617083358,0.08549936598540299,normal +2025-07-20 19:50:00+08:00,1074.869916721555,2183.7572388579065,-1137.2048209319405,28.317498795589017,0.0677867123942532,normal +2025-07-20 20:00:00+08:00,1671.4982553206871,2181.926697403344,-767.6276645737004,257.19922249104366,0.09299728831573241,normal +2025-07-20 20:10:00+08:00,1486.380955111823,2180.1009053774283,-588.4589395301216,-105.26101073548352,0.16162245788112323,normal +2025-07-20 20:20:00+08:00,930.6991623065226,2178.279793879592,-693.6798105554949,-553.9008210175746,0.47678131989189565,normal +2025-07-20 20:30:00+08:00,926.3515969647566,2176.463342961065,-942.8348671246791,-307.27687887162915,0.3035338301016892,normal +2025-07-20 20:40:00+08:00,1410.737357272556,2174.651663412385,-637.5945727882836,-126.31973335154544,0.1764157127438728,normal +2025-07-20 20:50:00+08:00,1566.5652968983827,2172.844977110936,-661.1015200933251,54.82183988077213,0.04916803927761758,normal +2025-07-20 21:00:00+08:00,1931.7392509345989,2171.043556237536,-199.2458350808971,-40.05847022203989,0.11581921439386447,normal +2025-07-20 21:10:00+08:00,975.4920503676416,2169.247669413877,-1092.780180222914,-100.97543882332138,0.15861194491292918,normal +2025-07-20 21:20:00+08:00,978.7200704366692,2167.457599663991,-1070.9811915028308,-117.756337724491,0.17040012973291896,normal +2025-07-20 21:30:00+08:00,985.4716284177384,2165.673668391775,-1056.6226781358384,-123.57936183819834,0.17449066653121018,normal +2025-07-20 21:40:00+08:00,999.4088600931004,2163.8962438043627,-1128.4486072137129,-36.03877649754941,0.1129954745678207,normal +2025-07-20 21:50:00+08:00,1097.7490182845968,2162.125736669136,-642.3847902916539,-421.9919280928855,0.38411844060548883,normal +2025-07-20 22:00:00+08:00,1377.6125674293462,2160.362597144741,-867.5785121338954,84.8284824185007,0.02808908217613256,normal +2025-07-20 22:10:00+08:00,910.9410775276342,2158.607364402577,-1079.6591924332397,-168.00709444170298,0.20570009852574386,normal +2025-07-20 22:20:00+08:00,949.8674562838164,2156.860581744771,-1206.2168498361152,-0.7762756248393998,0.08822440122123235,normal +2025-07-20 22:30:00+08:00,961.651960343586,2155.1228281055937,-1209.1564296563058,15.68556189429819,0.07666034948031457,normal +2025-07-20 22:40:00+08:00,1044.6919357643826,2153.3946853541097,-1208.2795676040223,99.57681801429544,0.01772872503350388,normal +2025-07-20 22:50:00+08:00,975.6936671502386,2151.676713983332,-1190.816326497389,14.833279664295787,0.07725905760109117,normal +2025-07-20 23:00:00+08:00,1214.2603377605967,2149.969432228606,-1066.4406708590136,130.73157639100464,0.004156756306305337,normal +2025-07-20 23:10:00+08:00,805.8411100382195,2148.2733271807633,-1311.151850258133,-31.280366884410796,0.10965280429138013,normal +2025-07-20 23:20:00+08:00,1359.0990224904117,2146.588837649746,-1134.3105587298794,346.82074357054535,0.155954288447599,normal +2025-07-20 23:30:00+08:00,1517.1013972196542,2144.916370411433,-923.2361117341661,295.4211385423873,0.11984728087220796,normal +2025-07-20 23:40:00+08:00,1698.7058809256505,2143.2562054258096,-1156.2324592488799,711.6821347487207,0.41226079134817595,normal +2025-07-20 23:50:00+08:00,1677.2533652580005,2141.608473463496,-505.6524269006895,41.29731869519401,0.058668695724951876,normal +2025-07-21 00:00:00+08:00,1656.7728491895791,2139.9731622904096,-659.7567695089853,176.55645640815465,0.03634765133388753,normal From d2123403457de54db8af0cb81b7be3f55867a5ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Cwqyhahaha=E2=80=9D?= <1803324225@qq.com> Date: Tue, 26 Aug 2025 16:34:39 +0800 Subject: [PATCH 2/7] chore(structure): reorganize files into Data/ and Code/, add docs/ skeleton --- Code/second_layer_filter.py | 425 ++++++++++++++ Code/stl_anomaly_detection.py | 405 +++++++++++++ Data/alert_messages.json | 97 ++++ Data/daily_summary.json | 26 + Data/second_layer_events.csv | 6 + Data/stl_anomaly_results.csv | 1010 +++++++++++++++++++++++++++++++++ Data/yzh_mirror_data.csv | 1010 +++++++++++++++++++++++++++++++++ docs/api/.gitkeep | 0 docs/design/.gitkeep | 0 9 files changed, 2979 insertions(+) create mode 100644 Code/second_layer_filter.py create mode 100644 Code/stl_anomaly_detection.py create mode 100644 Data/alert_messages.json create mode 100644 Data/daily_summary.json create mode 100644 Data/second_layer_events.csv create mode 100644 Data/stl_anomaly_results.csv create mode 100644 Data/yzh_mirror_data.csv create mode 100644 docs/api/.gitkeep create mode 100644 docs/design/.gitkeep diff --git a/Code/second_layer_filter.py b/Code/second_layer_filter.py new file mode 100644 index 0000000..88fd0f4 --- /dev/null +++ b/Code/second_layer_filter.py @@ -0,0 +1,425 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +""" +第二层异常过滤规则实现 +从第一层STL异常检测结果中筛选出真正的异常事件,减少误报 +""" + +import pandas as pd +import numpy as np +from datetime import datetime, timedelta +from typing import List, Dict, Tuple +import json + +class SecondLayerFilter: + def __init__(self, config: Dict = None): + """初始化第二层过滤器""" + self.config = config or self._get_default_config() + self.anomaly_events = [] + self.daily_summary = {} + + def _get_default_config(self) -> Dict: + """获取默认配置""" + return { + # 粗筛规则 + 'min_score_for_mild': 2.0, # mild异常的最小分数阈值 + + # 事件合并规则 + 'max_gap_minutes': 30, # 相邻异常点最大间隔(分钟) + + # 事件分级规则 + 'severe_thresholds': { + 'max_score': 3.0, # 严重异常的最小分数 + 'density': 0.1, # 异常密度阈值(10%) + 'min_count': 5 # 最小异常点数量 + }, + 'moderate_thresholds': { + 'max_score': 2.0, # 中等异常的最小分数 + 'density': 0.05, # 异常密度阈值(5%) + 'min_count': 3 # 最小异常点数量 + }, + + # 尖峰去噪规则 + 'spike_threshold': 4.0, # 尖峰保留阈值 + + # 去重与限流规则 + 'dedup_window_minutes': 60, # 去重时间窗口(分钟) + 'max_daily_events': 5, # 每日最大事件数 + } + + def load_data(self, file_path: str) -> pd.DataFrame: + """加载第一层异常检测结果""" + print(f"正在加载数据: {file_path}") + + df = pd.read_csv(file_path) + df['Time'] = pd.to_datetime(df['Time']) + df = df.sort_values('Time').reset_index(drop=True) + + print(f"数据加载完成,共 {len(df)} 个数据点") + print(f"时间范围:{df['Time'].min()} 到 {df['Time'].max()}") + + return df + + def coarse_filter(self, df: pd.DataFrame) -> pd.DataFrame: + """步骤1: 粗筛异常点""" + print("执行粗筛过滤...") + + # 保留条件:severe和moderate异常,或mild异常但分数>=2.0 + mask = ( + (df['anomaly_level'].isin(['severe', 'moderate'])) | + ((df['anomaly_level'] == 'mild') & (df['anomaly_score'] >= self.config['min_score_for_mild'])) + ) + + filtered_df = df[mask].copy() + + print(f"粗筛前: {len(df)} 个数据点") + print(f"粗筛后: {len(filtered_df)} 个数据点") + print(f"过滤掉: {len(df) - len(filtered_df)} 个数据点") + + return filtered_df + + def merge_anomaly_events(self, df: pd.DataFrame) -> List[Dict]: + """步骤2: 合并相邻异常为事件窗口""" + print("合并异常事件...") + + if len(df) == 0: + return [] + + events = [] + current_event = { + 'start_time': df.iloc[0]['Time'], + 'end_time': df.iloc[0]['Time'], + 'anomaly_points': [df.iloc[0].to_dict()], + 'max_score': df.iloc[0]['anomaly_score'], + 'mean_score': df.iloc[0]['anomaly_score'], + 'anomaly_count': 1 + } + + max_gap = timedelta(minutes=self.config['max_gap_minutes']) + + for i in range(1, len(df)): + current_time = df.iloc[i]['Time'] + last_time = current_event['end_time'] + + # 检查时间间隔 + if current_time - last_time <= max_gap: + # 合并到当前事件 + current_event['end_time'] = current_time + current_event['anomaly_points'].append(df.iloc[i].to_dict()) + current_event['max_score'] = max(current_event['max_score'], df.iloc[i]['anomaly_score']) + current_event['anomaly_count'] += 1 + else: + # 结束当前事件,开始新事件 + scores = [point['anomaly_score'] for point in current_event['anomaly_points']] + current_event['mean_score'] = np.mean(scores) + current_event['window_length'] = len(current_event['anomaly_points']) + current_event['anomaly_density'] = current_event['anomaly_count'] / current_event['window_length'] + + events.append(current_event) + + # 开始新事件 + current_event = { + 'start_time': current_time, + 'end_time': current_time, + 'anomaly_points': [df.iloc[i].to_dict()], + 'max_score': df.iloc[i]['anomaly_score'], + 'mean_score': df.iloc[i]['anomaly_score'], + 'anomaly_count': 1 + } + + # 处理最后一个事件 + if current_event: + scores = [point['anomaly_score'] for point in current_event['anomaly_points']] + current_event['mean_score'] = np.mean(scores) + current_event['window_length'] = len(current_event['anomaly_points']) + current_event['anomaly_density'] = current_event['anomaly_count'] / current_event['window_length'] + events.append(current_event) + + print(f"合并后得到 {len(events)} 个异常事件") + return events + + def classify_events(self, events: List[Dict]) -> List[Dict]: + """步骤3: 事件分级与过滤""" + print("执行事件分级...") + + classified_events = [] + + for event in events: + # 判断是否为严重事件 + is_severe = ( + event['max_score'] >= self.config['severe_thresholds']['max_score'] or + (event['anomaly_density'] >= self.config['severe_thresholds']['density'] and + event['anomaly_count'] >= self.config['severe_thresholds']['min_count']) + ) + + # 判断是否为中等事件 + is_moderate = ( + (self.config['moderate_thresholds']['max_score'] <= event['max_score'] < + self.config['severe_thresholds']['max_score']) or + (event['anomaly_density'] >= self.config['moderate_thresholds']['density'] and + event['anomaly_count'] >= self.config['moderate_thresholds']['min_count']) + ) + + # 尖峰去噪:对于只有1-2个异常点的事件,需要更高的分数 + if event['anomaly_count'] <= 2: + if event['max_score'] < self.config['spike_threshold']: + continue # 丢弃低分尖峰 + + # 确定事件等级 + if is_severe: + event['severity_level'] = 'severe' + classified_events.append(event) + elif is_moderate: + event['severity_level'] = 'moderate' + classified_events.append(event) + else: + # 丢弃不符合条件的事件 + continue + + print(f"分级后保留 {len(classified_events)} 个事件") + print(f"严重事件: {len([e for e in classified_events if e['severity_level'] == 'severe'])} 个") + print(f"中等事件: {len([e for e in classified_events if e['severity_level'] == 'moderate'])} 个") + + return classified_events + + def deduplicate_events(self, events: List[Dict]) -> List[Dict]: + """步骤4: 去重与限流""" + print("执行去重与限流...") + + if not events: + return [] + + # 按日期分组 + daily_events = {} + for event in events: + date_key = event['start_time'].date() + if date_key not in daily_events: + daily_events[date_key] = [] + daily_events[date_key].append(event) + + deduplicated_events = [] + + for date_key, day_events in daily_events.items(): + # 按严重程度和分数排序 + day_events.sort(key=lambda x: ( + x['severity_level'] == 'severe', # severe优先 + x['max_score'] # 分数高的优先 + ), reverse=True) + + # 去重:相似时间段的事件只保留一个 + filtered_day_events = [] + dedup_window = timedelta(minutes=self.config['dedup_window_minutes']) + + for event in day_events: + # 检查是否与已保留的事件时间重叠 + is_duplicate = False + for kept_event in filtered_day_events: + if abs(event['start_time'] - kept_event['start_time']) < dedup_window: + is_duplicate = True + break + + if not is_duplicate: + filtered_day_events.append(event) + + # 限制每日事件数量 + filtered_day_events = filtered_day_events[:self.config['max_daily_events']] + + deduplicated_events.extend(filtered_day_events) + + # 记录每日统计 + self.daily_summary[date_key] = { + 'total_events': len(day_events), + 'kept_events': len(filtered_day_events), + 'severe_count': len([e for e in filtered_day_events if e['severity_level'] == 'severe']), + 'moderate_count': len([e for e in filtered_day_events if e['severity_level'] == 'moderate']) + } + + print(f"去重后保留 {len(deduplicated_events)} 个事件") + return deduplicated_events + + def generate_alert_messages(self, events: List[Dict]) -> List[Dict]: + """生成告警消息""" + print("生成告警消息...") + + alert_messages = [] + + for event in events: + # 生成事件标题 + if event['severity_level'] == 'severe': + title = f"[严重] 指标异常事件" + else: + title = f"[中等] 指标异常事件" + + # 生成时间窗口描述 + duration = event['end_time'] - event['start_time'] + if duration.total_seconds() <= 600: # 10分钟内 + time_desc = f"{event['start_time'].strftime('%H:%M')}" + else: + time_desc = f"{event['start_time'].strftime('%H:%M')} - {event['end_time'].strftime('%H:%M')}" + + # 生成统计信息 + stats = f"异常点: {event['anomaly_count']}个, 密度: {event['anomaly_density']:.1%}, 最高分: {event['max_score']:.2f}" + + # 选择代表性数据点 + sample_points = [] + if event['anomaly_points']: + # 选择分数最高的点 + max_score_point = max(event['anomaly_points'], key=lambda x: x['anomaly_score']) + sample_points.append({ + 'time': max_score_point['Time'].strftime('%H:%M'), + 'value': f"{max_score_point['Value']:.0f}", + 'score': f"{max_score_point['anomaly_score']:.2f}" + }) + + # 如果有多个点,再选择一个 + if len(event['anomaly_points']) > 1: + # 选择时间最接近中间的点 + mid_time = event['start_time'] + (event['end_time'] - event['start_time']) / 2 + mid_point = min(event['anomaly_points'], + key=lambda x: abs(x['Time'] - mid_time)) + sample_points.append({ + 'time': mid_point['Time'].strftime('%H:%M'), + 'value': f"{mid_point['Value']:.0f}", + 'score': f"{mid_point['anomaly_score']:.2f}" + }) + + # 生成初步判断 + if event['anomaly_count'] == 1: + hint = "孤立尖峰异常" + elif event['anomaly_density'] > 0.5: + hint = "持续性异常波动" + else: + hint = "间歇性异常" + + alert_message = { + 'title': title, + 'date': event['start_time'].strftime('%Y-%m-%d'), + 'time_window': time_desc, + 'stats': stats, + 'sample_points': sample_points, + 'hint': hint, + 'severity_level': event['severity_level'], + 'max_score': event['max_score'] + } + + alert_messages.append(alert_message) + + return alert_messages + + def process(self, file_path: str) -> Tuple[List[Dict], List[Dict]]: + """执行完整的第二层过滤流程""" + print("=" * 50) + print("开始第二层异常过滤") + print("=" * 50) + + # 步骤1: 加载数据 + df = self.load_data(file_path) + + # 步骤2: 粗筛过滤 + filtered_df = self.coarse_filter(df) + + # 步骤3: 合并事件 + events = self.merge_anomaly_events(filtered_df) + + # 步骤4: 事件分级 + classified_events = self.classify_events(events) + + # 步骤5: 去重限流 + final_events = self.deduplicate_events(classified_events) + + # 步骤6: 生成告警消息 + alert_messages = self.generate_alert_messages(final_events) + + print("=" * 50) + print("第二层过滤完成") + print("=" * 50) + + return final_events, alert_messages + + def save_results(self, events: List[Dict], alert_messages: List[Dict], output_dir: str = '.'): + """保存结果到文件""" + import os + + # 保存事件数据 + if events: + events_df = pd.DataFrame([ + { + 'start_time': event['start_time'], + 'end_time': event['end_time'], + 'anomaly_count': event['anomaly_count'], + 'anomaly_density': event['anomaly_density'], + 'max_score': event['max_score'], + 'mean_score': event['mean_score'], + 'severity_level': event['severity_level'] + } + for event in events + ]) + + events_file = os.path.join(output_dir, 'second_layer_events.csv') + events_df.to_csv(events_file, index=False) + print(f"事件数据已保存到: {events_file}") + + # 保存告警消息 + if alert_messages: + alerts_file = os.path.join(output_dir, 'alert_messages.json') + with open(alerts_file, 'w', encoding='utf-8') as f: + json.dump(alert_messages, f, ensure_ascii=False, indent=2) + print(f"告警消息已保存到: {alerts_file}") + + # 保存每日统计 + if self.daily_summary: + summary_file = os.path.join(output_dir, 'daily_summary.json') + summary_str = {str(k): v for k, v in self.daily_summary.items()} + with open(summary_file, 'w', encoding='utf-8') as f: + json.dump(summary_str, f, ensure_ascii=False, indent=2) + print(f"每日统计已保存到: {summary_file}") + + def print_summary(self, events: List[Dict], alert_messages: List[Dict]): + """打印处理摘要""" + print("\n" + "=" * 50) + print("处理摘要") + print("=" * 50) + + print(f"最终事件数量: {len(events)}") + if events: + severe_count = len([e for e in events if e['severity_level'] == 'severe']) + moderate_count = len([e for e in events if e['severity_level'] == 'moderate']) + print(f"严重事件: {severe_count} 个") + print(f"中等事件: {moderate_count} 个") + + print(f"告警消息数量: {len(alert_messages)}") + + if self.daily_summary: + print("\n每日统计:") + for date, stats in sorted(self.daily_summary.items()): + print(f" {date}: 总事件{stats['total_events']}个, 保留{stats['kept_events']}个 " + f"(严重{stats['severe_count']}个, 中等{stats['moderate_count']}个)") + + if alert_messages: + print("\n告警消息预览:") + for i, msg in enumerate(alert_messages[:3], 1): + print(f" {i}. {msg['title']} - {msg['date']} {msg['time_window']}") + print(f" {msg['stats']}") + print(f" {msg['hint']}") + + if len(alert_messages) > 3: + print(f" ... 还有 {len(alert_messages) - 3} 条消息") + + +def main(): + """主函数""" + # 创建过滤器 + filter = SecondLayerFilter() + + # 处理数据 + events, alert_messages = filter.process('stl_anomaly_results.csv') + + # 保存结果 + filter.save_results(events, alert_messages) + + # 打印摘要 + filter.print_summary(events, alert_messages) + + +if __name__ == "__main__": + main() diff --git a/Code/stl_anomaly_detection.py b/Code/stl_anomaly_detection.py new file mode 100644 index 0000000..d3427b5 --- /dev/null +++ b/Code/stl_anomaly_detection.py @@ -0,0 +1,405 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +""" +STL分解异常检测 +使用STL分解方法对yzh mirror时序数据进行异常检测 +""" + +import pandas as pd +import numpy as np +import matplotlib.pyplot as plt +import seaborn as sns +from scipy import stats +from statsmodels.tsa.seasonal import STL +import warnings +import matplotlib.font_manager as fm +warnings.filterwarnings('ignore') + +# 设置中文字体 - 更完善的字体配置 +def setup_chinese_font(): + """设置中文字体显示""" + # 尝试多种中文字体 + chinese_fonts = [ + 'Hiragino Sans GB', # 冬青黑体 (macOS) + 'PingFang SC', # 苹方 (macOS) + 'STHeiti', # 华文黑体 (macOS) + 'SimHei', # 黑体 (Windows) + 'Microsoft YaHei', # 微软雅黑 (Windows) + 'Arial Unicode MS', # Arial Unicode + 'DejaVu Sans' # 备用字体 + ] + + # 查找可用的中文字体 + available_fonts = [f.name for f in fm.fontManager.ttflist] + selected_font = None + + for font in chinese_fonts: + if font in available_fonts: + selected_font = font + break + + if selected_font: + plt.rcParams['font.sans-serif'] = [selected_font] + plt.rcParams['font.sans-serif'] + print(f"使用字体: {selected_font}") + else: + print("警告: 未找到合适的中文字体,可能显示为方块") + # 使用系统默认字体 + plt.rcParams['font.sans-serif'] = ['DejaVu Sans'] + + plt.rcParams['axes.unicode_minus'] = False + +# 初始化字体设置 +setup_chinese_font() + +def load_and_preprocess_data(file_path): + """加载和预处理数据""" + print("正在加载数据...") + + # 读取CSV文件 + df = pd.read_csv(file_path, delimiter=';') + + # 清理列名 + df.columns = [col.strip().replace('"', '') for col in df.columns] + + # 转换时间列 + df['Time'] = pd.to_datetime(df['Time']) + + # 处理Value列,移除引号并转换为数值 + df['Value'] = df['Value'].astype(str).str.replace('"', '').astype(float) + + # 按时间排序 + df = df.sort_values('Time').reset_index(drop=True) + + # 检查缺失值 + missing_count = df['Value'].isnull().sum() + if missing_count > 0: + print(f"发现 {missing_count} 个缺失值,使用前向填充") + df['Value'] = df['Value'].fillna(method='ffill') + + print(f"数据加载完成,共 {len(df)} 个数据点") + print(f"时间范围:{df['Time'].min()} 到 {df['Time'].max()}") + print(f"数值范围:{df['Value'].min():.2f} 到 {df['Value'].max():.2f}") + + return df + +def perform_stl_decomposition(data, seasonal_period=144): + """执行STL分解""" + print("正在执行STL分解...") + + # 设置窗口大小 + trend_window = max(seasonal_period + 1, len(data) // 10) + seasonal_window = max(7, seasonal_period // 2) + # 确保窗口都是奇数 + if trend_window % 2 == 0: + trend_window += 1 + if seasonal_window % 2 == 0: + seasonal_window += 1 + + print(f"趋势窗口大小: {trend_window}") + print(f"季节性窗口大小: {seasonal_window}") + print(f"季节性周期: {seasonal_period}") + + # 执行STL分解 + stl = STL( + data['Value'], + period=seasonal_period, + trend=trend_window, + seasonal=seasonal_window, + robust=True + ) + + stl_result = stl.fit() + + # 计算残差 + data['trend'] = stl_result.trend + data['seasonal'] = stl_result.seasonal + data['residual'] = stl_result.resid + + print("STL分解完成") + + return data, stl_result + +def calculate_anomaly_scores(data, method='zscore'): + """计算异常分数""" + print(f"正在计算异常分数,使用 {method} 方法...") + + residuals = data['residual'].values + + if method == 'zscore': + # 基于Z-Score的异常分数 + z_scores = np.abs(stats.zscore(residuals)) + anomaly_scores = z_scores + + elif method == 'iqr': + # 基于IQR的异常分数 + Q1 = np.percentile(residuals, 25) + Q3 = np.percentile(residuals, 75) + IQR = Q3 - Q1 + lower_bound = Q1 - 1.5 * IQR + upper_bound = Q3 + 1.5 * IQR + + # 计算到边界的距离 + distances = np.maximum( + (lower_bound - residuals) / IQR, + (residuals - upper_bound) / IQR + ) + anomaly_scores = np.maximum(distances, 0) + + elif method == 'modified_zscore': + # 基于Modified Z-Score的异常分数 + median = np.median(residuals) + mad = np.median(np.abs(residuals - median)) + modified_z_scores = np.abs(0.6745 * (residuals - median) / mad) + anomaly_scores = modified_z_scores + + # 将异常分数添加到数据中 + data['anomaly_score'] = anomaly_scores + + # 设置异常阈值 + thresholds = { + 'mild': np.percentile(anomaly_scores, 95), # 95%分位数 + 'moderate': np.percentile(anomaly_scores, 98), # 98%分位数 + 'severe': np.percentile(anomaly_scores, 99.5) # 99.5%分位数 + } + + print(f"异常阈值设置完成:") + print(f" 轻微异常: {thresholds['mild']:.3f}") + print(f" 明显异常: {thresholds['moderate']:.3f}") + print(f" 严重异常: {thresholds['severe']:.3f}") + + return data, thresholds + +def detect_anomalies(data, thresholds): + """检测异常点""" + print("正在检测异常点...") + + # 标记异常点 + data['anomaly_level'] = 'normal' + + # 基于阈值标记异常 + data.loc[data['anomaly_score'] >= thresholds['severe'], 'anomaly_level'] = 'severe' + data.loc[(data['anomaly_score'] >= thresholds['moderate']) & + (data['anomaly_score'] < thresholds['severe']), 'anomaly_level'] = 'moderate' + data.loc[(data['anomaly_score'] >= thresholds['mild']) & + (data['anomaly_score'] < thresholds['moderate']), 'anomaly_level'] = 'mild' + + # 统计异常点 + anomaly_counts = data['anomaly_level'].value_counts() + print("异常检测完成:") + for level, count in anomaly_counts.items(): + print(f" {level}: {count} 个点 ({count/len(data)*100:.2f}%)") + + return data + +def create_visualizations(data, thresholds, save_path='stl_analysis_results'): + """创建可视化图表""" + print("正在生成可视化图表...") + + # 设置图表样式 + plt.style.use('default') + sns.set_palette("husl") + + # 1. STL分解结果图 + plot_stl_decomposition(data, save_path) + + # 2. 异常分数分布图 + plot_anomaly_scores(data, thresholds, save_path) + + # 3. 异常点标记图 + plot_anomaly_points(data, save_path) + + # 4. 残差分析图 + plot_residual_analysis(data, save_path) + + print(f"可视化图表已保存到 {save_path}_*.png") + +def plot_stl_decomposition(data, save_path): + """绘制STL分解结果""" + fig, axes = plt.subplots(4, 1, figsize=(15, 12)) + + # 原始数据 + axes[0].plot(data['Time'], data['Value'], 'b-', linewidth=0.8) + axes[0].set_title('Original Time Series Data', fontsize=14, fontweight='bold') + axes[0].set_ylabel('Value') + axes[0].grid(True, alpha=0.3) + + # 趋势组件 + axes[1].plot(data['Time'], data['trend'], 'r-', linewidth=1.2) + axes[1].set_title('Trend Component', fontsize=14, fontweight='bold') + axes[1].set_ylabel('Trend Value') + axes[1].grid(True, alpha=0.3) + + # 季节性组件 + axes[2].plot(data['Time'], data['seasonal'], 'g-', linewidth=0.8) + axes[2].set_title('Seasonal Component', fontsize=14, fontweight='bold') + axes[2].set_ylabel('Seasonal Value') + axes[2].grid(True, alpha=0.3) + + # 残差组件 + axes[3].plot(data['Time'], data['residual'], 'purple', linewidth=0.8) + axes[3].set_title('Residual Component', fontsize=14, fontweight='bold') + axes[3].set_ylabel('Residual Value') + axes[3].set_xlabel('Time') + axes[3].grid(True, alpha=0.3) + + plt.tight_layout() + plt.savefig(f'{save_path}_stl_decomposition.png', dpi=300, bbox_inches='tight') + plt.show() + +def plot_anomaly_scores(data, thresholds, save_path): + """绘制异常分数分布""" + fig, axes = plt.subplots(2, 2, figsize=(15, 10)) + + # 异常分数时间序列 + axes[0, 0].plot(data['Time'], data['anomaly_score'], 'b-', linewidth=0.8) + axes[0, 0].axhline(y=thresholds['mild'], color='orange', linestyle='--', label='Mild Anomaly Threshold') + axes[0, 0].axhline(y=thresholds['moderate'], color='red', linestyle='--', label='Moderate Anomaly Threshold') + axes[0, 0].axhline(y=thresholds['severe'], color='darkred', linestyle='--', label='Severe Anomaly Threshold') + axes[0, 0].set_title('Anomaly Score Time Series', fontsize=14, fontweight='bold') + axes[0, 0].set_ylabel('Anomaly Score') + axes[0, 0].legend() + axes[0, 0].grid(True, alpha=0.3) + + # 异常分数分布直方图 + axes[0, 1].hist(data['anomaly_score'], bins=50, alpha=0.7, color='skyblue', edgecolor='black') + axes[0, 1].axvline(x=thresholds['mild'], color='orange', linestyle='--', label='Mild Anomaly Threshold') + axes[0, 1].axvline(x=thresholds['moderate'], color='red', linestyle='--', label='Moderate Anomaly Threshold') + axes[0, 1].axvline(x=thresholds['severe'], color='darkred', linestyle='--', label='Severe Anomaly Threshold') + axes[0, 1].set_title('Anomaly Score Distribution', fontsize=14, fontweight='bold') + axes[0, 1].set_xlabel('Anomaly Score') + axes[0, 1].set_ylabel('Frequency') + axes[0, 1].legend() + axes[0, 1].grid(True, alpha=0.3) + + # 异常分数箱线图 + anomaly_data = [data[data['anomaly_level'] == level]['anomaly_score'].values + for level in ['normal', 'mild', 'moderate', 'severe']] + labels = ['Normal', 'Mild', 'Moderate', 'Severe'] + axes[1, 0].boxplot(anomaly_data, labels=labels) + axes[1, 0].set_title('Anomaly Score Boxplot', fontsize=14, fontweight='bold') + axes[1, 0].set_ylabel('Anomaly Score') + axes[1, 0].grid(True, alpha=0.3) + + # 异常等级统计 + anomaly_counts = data['anomaly_level'].value_counts() + colors = ['lightgreen', 'orange', 'red', 'darkred'] + axes[1, 1].pie(anomaly_counts.values, labels=anomaly_counts.index, autopct='%1.1f%%', + colors=colors, startangle=90) + axes[1, 1].set_title('Anomaly Level Distribution', fontsize=14, fontweight='bold') + + plt.tight_layout() + plt.savefig(f'{save_path}_anomaly_scores.png', dpi=300, bbox_inches='tight') + plt.show() + +def plot_anomaly_points(data, save_path): + """绘制异常点标记图""" + fig, axes = plt.subplots(2, 1, figsize=(15, 10)) + + # 原始数据与异常点 + normal_data = data[data['anomaly_level'] == 'normal'] + mild_data = data[data['anomaly_level'] == 'mild'] + moderate_data = data[data['anomaly_level'] == 'moderate'] + severe_data = data[data['anomaly_level'] == 'severe'] + + axes[0].plot(normal_data['Time'], normal_data['Value'], 'b-', linewidth=0.8, label='Normal Data') + axes[0].scatter(mild_data['Time'], mild_data['Value'], c='orange', s=20, label='Mild Anomaly', alpha=0.7) + axes[0].scatter(moderate_data['Time'], moderate_data['Value'], c='red', s=30, label='Moderate Anomaly', alpha=0.8) + axes[0].scatter(severe_data['Time'], severe_data['Value'], c='darkred', s=40, label='Severe Anomaly', alpha=0.9) + axes[0].set_title('Original Data with Anomaly Points', fontsize=14, fontweight='bold') + axes[0].set_ylabel('Value') + axes[0].legend() + axes[0].grid(True, alpha=0.3) + + # 残差与异常点 + axes[1].plot(normal_data['Time'], normal_data['residual'], 'b-', linewidth=0.8, label='Normal Residual') + axes[1].scatter(mild_data['Time'], mild_data['residual'], c='orange', s=20, label='Mild Anomaly', alpha=0.7) + axes[1].scatter(moderate_data['Time'], moderate_data['residual'], c='red', s=30, label='Moderate Anomaly', alpha=0.8) + axes[1].scatter(severe_data['Time'], severe_data['residual'], c='darkred', s=40, label='Severe Anomaly', alpha=0.9) + axes[1].axhline(y=0, color='black', linestyle='-', alpha=0.5) + axes[1].set_title('Residuals with Anomaly Points', fontsize=14, fontweight='bold') + axes[1].set_ylabel('Residual Value') + axes[1].set_xlabel('Time') + axes[1].legend() + axes[1].grid(True, alpha=0.3) + + plt.tight_layout() + plt.savefig(f'{save_path}_anomaly_points.png', dpi=300, bbox_inches='tight') + plt.show() + +def plot_residual_analysis(data, save_path): + """绘制残差分析图""" + fig, axes = plt.subplots(2, 2, figsize=(15, 10)) + + # 残差分布直方图 + axes[0, 0].hist(data['residual'], bins=50, alpha=0.7, color='lightblue', edgecolor='black') + axes[0, 0].set_title('Residual Distribution', fontsize=14, fontweight='bold') + axes[0, 0].set_xlabel('Residual Value') + axes[0, 0].set_ylabel('Frequency') + axes[0, 0].grid(True, alpha=0.3) + + # Q-Q图 + stats.probplot(data['residual'], dist="norm", plot=axes[0, 1]) + axes[0, 1].set_title('Residual Q-Q Plot', fontsize=14, fontweight='bold') + axes[0, 1].grid(True, alpha=0.3) + + # 残差自相关图 + from statsmodels.graphics.tsaplots import plot_acf + plot_acf(data['residual'].dropna(), lags=50, ax=axes[1, 0]) + axes[1, 0].set_title('Residual Autocorrelation', fontsize=14, fontweight='bold') + axes[1, 0].grid(True, alpha=0.3) + + # 残差与拟合值散点图 + fitted_values = data['trend'] + data['seasonal'] + axes[1, 1].scatter(fitted_values, data['residual'], alpha=0.6, s=10) + axes[1, 1].axhline(y=0, color='red', linestyle='--') + axes[1, 1].set_title('Residual vs Fitted Values', fontsize=14, fontweight='bold') + axes[1, 1].set_xlabel('Fitted Values') + axes[1, 1].set_ylabel('Residual Values') + axes[1, 1].grid(True, alpha=0.3) + + plt.tight_layout() + plt.savefig(f'{save_path}_residual_analysis.png', dpi=300, bbox_inches='tight') + plt.show() + +def main(): + """主函数""" + print("=== STL分解异常检测 ===") + + # 加载数据 + data = load_and_preprocess_data('yzh_mirror_data.csv') + + # 执行STL分解 + data, stl_result = perform_stl_decomposition(data, seasonal_period=144) + + # 计算异常分数 + data, thresholds = calculate_anomaly_scores(data, method='zscore') + + # 检测异常点 + data = detect_anomalies(data, thresholds) + + # 创建可视化 + create_visualizations(data, thresholds) + + # 保存结果 + result_columns = ['Time', 'Value', 'trend', 'seasonal', 'residual', + 'anomaly_score', 'anomaly_level'] + data[result_columns].to_csv('stl_anomaly_results.csv', index=False) + + # 打印摘要 + print("\n=== 异常检测摘要 ===") + anomaly_counts = data['anomaly_level'].value_counts() + print(f"总数据点: {len(data)}") + print(f"异常点统计:") + for level, count in anomaly_counts.items(): + percentage = count / len(data) * 100 + print(f" {level}: {count} 个点 ({percentage:.2f}%)") + + print(f"\n异常阈值:") + for level, threshold in thresholds.items(): + print(f" {level}: {threshold:.3f}") + + print("\n=== 分析完成 ===") + print("结果已保存到 stl_anomaly_results.csv") + +if __name__ == "__main__": + main() diff --git a/Data/alert_messages.json b/Data/alert_messages.json new file mode 100644 index 0000000..2773fa8 --- /dev/null +++ b/Data/alert_messages.json @@ -0,0 +1,97 @@ +[ + { + "title": "[严重] 指标异常事件", + "date": "2025-07-14", + "time_window": "16:30", + "stats": "异常点: 1个, 密度: 100.0%, 最高分: 22.92", + "sample_points": [ + { + "time": "16:30", + "value": "34109", + "score": "22.92" + } + ], + "hint": "孤立尖峰异常", + "severity_level": "severe", + "max_score": 22.91802223930438 + }, + { + "title": "[严重] 指标异常事件", + "date": "2025-07-15", + "time_window": "15:30", + "stats": "异常点: 1个, 密度: 100.0%, 最高分: 4.16", + "sample_points": [ + { + "time": "15:30", + "value": "9240", + "score": "4.16" + } + ], + "hint": "孤立尖峰异常", + "severity_level": "severe", + "max_score": 4.162401458789488 + }, + { + "title": "[中等] 指标异常事件", + "date": "2025-07-17", + "time_window": "04:10 - 04:50", + "stats": "异常点: 3个, 密度: 100.0%, 最高分: 2.56", + "sample_points": [ + { + "time": "04:50", + "value": "5658", + "score": "2.56" + }, + { + "time": "04:20", + "value": "953", + "score": "2.00" + } + ], + "hint": "持续性异常波动", + "severity_level": "moderate", + "max_score": 2.560940053673524 + }, + { + "title": "[严重] 指标异常事件", + "date": "2025-07-20", + "time_window": "03:40 - 04:10", + "stats": "异常点: 2个, 密度: 100.0%, 最高分: 4.59", + "sample_points": [ + { + "time": "04:10", + "value": "9595", + "score": "4.59" + }, + { + "time": "03:40", + "value": "883", + "score": "2.02" + } + ], + "hint": "持续性异常波动", + "severity_level": "severe", + "max_score": 4.587376198923394 + }, + { + "title": "[严重] 指标异常事件", + "date": "2025-07-20", + "time_window": "05:00 - 06:00", + "stats": "异常点: 5个, 密度: 100.0%, 最高分: 4.00", + "sample_points": [ + { + "time": "05:00", + "value": "8756", + "score": "4.00" + }, + { + "time": "05:30", + "value": "5124", + "score": "2.92" + } + ], + "hint": "持续性异常波动", + "severity_level": "severe", + "max_score": 3.998751350467234 + } +] \ No newline at end of file diff --git a/Data/daily_summary.json b/Data/daily_summary.json new file mode 100644 index 0000000..87ecec8 --- /dev/null +++ b/Data/daily_summary.json @@ -0,0 +1,26 @@ +{ + "2025-07-14": { + "total_events": 1, + "kept_events": 1, + "severe_count": 1, + "moderate_count": 0 + }, + "2025-07-15": { + "total_events": 1, + "kept_events": 1, + "severe_count": 1, + "moderate_count": 0 + }, + "2025-07-17": { + "total_events": 1, + "kept_events": 1, + "severe_count": 0, + "moderate_count": 1 + }, + "2025-07-20": { + "total_events": 2, + "kept_events": 2, + "severe_count": 2, + "moderate_count": 0 + } +} \ No newline at end of file diff --git a/Data/second_layer_events.csv b/Data/second_layer_events.csv new file mode 100644 index 0000000..4bfeabf --- /dev/null +++ b/Data/second_layer_events.csv @@ -0,0 +1,6 @@ +start_time,end_time,anomaly_count,anomaly_density,max_score,mean_score,severity_level +2025-07-14 16:30:00+08:00,2025-07-14 16:30:00+08:00,1,1.0,22.91802223930438,22.91802223930438,severe +2025-07-15 15:30:00+08:00,2025-07-15 15:30:00+08:00,1,1.0,4.162401458789488,4.162401458789488,severe +2025-07-17 04:10:00+08:00,2025-07-17 04:50:00+08:00,3,1.0,2.560940053673524,2.194557674917012,moderate +2025-07-20 03:40:00+08:00,2025-07-20 04:10:00+08:00,2,1.0,4.587376198923394,3.3056069281056093,severe +2025-07-20 05:00:00+08:00,2025-07-20 06:00:00+08:00,5,1.0,3.998751350467234,3.130721767602824,severe diff --git a/Data/stl_anomaly_results.csv b/Data/stl_anomaly_results.csv new file mode 100644 index 0000000..266c2fa --- /dev/null +++ b/Data/stl_anomaly_results.csv @@ -0,0 +1,1010 @@ +Time,Value,trend,seasonal,residual,anomaly_score,anomaly_level +2025-07-14 00:00:00+08:00,2392.4649649735443,2262.368522760809,-435.86964873819244,565.966090950928,0.30989871493960036,normal +2025-07-14 00:10:00+08:00,1499.0522545027752,2259.9572942855593,-928.4723997260509,167.56735994326664,0.03003302354684861,normal +2025-07-14 00:20:00+08:00,1916.094303250783,2257.552765623712,-469.2043670147958,127.74590464186713,0.00205939247627821,normal +2025-07-14 00:30:00+08:00,1208.302658310115,2255.154728735571,-539.5183662021954,-507.3337042232606,0.4440690210729592,normal +2025-07-14 00:40:00+08:00,2536.5687803548194,2252.762939819943,401.96232261486585,-118.15648207998947,0.17068122168425434,normal +2025-07-14 00:50:00+08:00,2301.501287436792,2250.3772935139127,103.50405475537137,-52.380060832491836,0.12447484054641429,normal +2025-07-14 01:00:00+08:00,13366.959897823192,2247.997771335932,11120.58137403511,-1.6192475478501365,0.08881656907141945,normal +2025-07-14 01:10:00+08:00,1504.2321128272538,2245.624387573216,2903.0106534162483,-3644.4029281622106,2.6477859984940393,moderate +2025-07-14 01:20:00+08:00,1754.4535089750373,2243.2571625693076,-539.576961053687,50.77330745941663,0.05201203760653505,normal +2025-07-14 01:30:00+08:00,2282.4834594271874,2240.8961121347584,-111.48815719445248,153.07550448688153,0.019852837639612257,normal +2025-07-14 01:40:00+08:00,1930.3253685487236,2238.541218341388,-742.6514254117302,434.4355756190662,0.21750163696826377,normal +2025-07-14 01:50:00+08:00,2461.466695219779,2236.192369715154,-1835.7309093794117,2061.0052348840363,1.360128374601897,normal +2025-07-14 02:00:00+08:00,4451.764052389372,2233.8493135840104,2050.029129027654,167.88560977770794,0.03025658653292105,normal +2025-07-14 02:10:00+08:00,2118.051671571828,2231.511746137258,21.49228063269458,-134.95235519812422,0.18247992553770945,normal +2025-07-14 02:20:00+08:00,955.1111006706734,2229.179309621575,-1089.055932528774,-185.0122764221278,0.2176458369074247,normal +2025-07-14 02:30:00+08:00,3319.5683798946648,2226.8516885760837,907.232680882711,185.48401043587,0.0426190470135205,normal +2025-07-14 02:40:00+08:00,2621.0818653677143,2224.5286220367525,440.56615600924704,-44.012912678285375,0.11859711674634138,normal +2025-07-14 02:50:00+08:00,1331.351343484746,2222.209800377462,-1947.4457906519358,1056.5873337592197,0.654548540964958,normal +2025-07-14 03:00:00+08:00,4170.315135131283,2219.894895046307,-2071.86054023281,4022.280780317786,2.7378780856670093,moderate +2025-07-14 03:10:00+08:00,2924.1173758053724,2217.583524414833,795.5560594280021,-89.0222080374624,0.1502150828300597,normal +2025-07-14 03:20:00+08:00,3987.615255809612,2215.275294231755,-531.5286939419441,2303.8686555198005,1.5307341869204354,normal +2025-07-14 03:30:00+08:00,923.1584437985824,2212.9698331610907,-814.8507698934736,-474.96061946903455,0.42132769425110395,normal +2025-07-14 03:40:00+08:00,2304.9379463524847,2210.6667994799723,116.32957748537304,-22.058430612860775,0.10317461204390631,normal +2025-07-14 03:50:00+08:00,3001.056073599605,2208.3659636397238,984.4749275647049,-191.78481760482373,0.22240338700249423,normal +2025-07-14 04:00:00+08:00,3271.412855004965,2206.067145748666,1298.6859037161635,-233.3401944598645,0.2515950569789699,normal +2025-07-14 04:10:00+08:00,4810.061139118233,2203.770246514541,2625.6341138434354,-19.343221239743798,0.10126724163998589,normal +2025-07-14 04:20:00+08:00,3690.683937899749,2201.475258536297,1394.933148855141,94.27553050831057,0.021452754197406217,normal +2025-07-14 04:30:00+08:00,3900.095811989063,2199.1821972980442,3260.131728400735,-1559.2181137097164,1.182992954845535,normal +2025-07-14 04:40:00+08:00,3405.413638697049,2196.8910558868006,3437.2413131676353,-2228.718730357387,1.65330131273629,normal +2025-07-14 04:50:00+08:00,2970.203076788919,2194.601825711992,807.6576589671166,-32.0564078901898,0.11019795475428984,normal +2025-07-14 05:00:00+08:00,11733.768154342426,2192.314507142183,6816.079427197138,2725.3742200031047,1.8268318826426226,mild +2025-07-14 05:10:00+08:00,4641.369737000938,2190.029118053543,4410.541350181568,-1959.2007312341734,1.4639712890772574,normal +2025-07-14 05:20:00+08:00,3633.100288309234,2187.745687107245,1701.2593233878474,-255.9047221858582,0.2674461043380155,normal +2025-07-14 05:30:00+08:00,6437.431718843744,2185.4642708346164,4441.808140337411,-189.84069232828278,0.22103768494993725,normal +2025-07-14 05:40:00+08:00,6062.117398036187,2183.1850275732495,3792.052568977,86.8798014859376,0.026648079019261754,normal +2025-07-14 05:50:00+08:00,3754.7995227466176,2180.908204217422,1216.975233130334,356.9160853988619,0.16304602745359914,normal +2025-07-14 06:00:00+08:00,7575.361092977691,2178.6340328604506,2343.8306675642507,3052.89639255299,2.056908467061681,mild +2025-07-14 06:10:00+08:00,2343.957281956409,2176.3626616513343,195.77796373800388,-28.183343432929178,0.10747721852252937,normal +2025-07-14 06:20:00+08:00,4024.499687082512,2174.094232832445,1946.6232944045385,-96.2178401544711,0.15526984430568247,normal +2025-07-14 06:30:00+08:00,4443.422710791914,2171.828922695624,2250.4053475085125,21.188440587777677,0.07279470727230396,normal +2025-07-14 06:40:00+08:00,3773.717777634512,2169.5669595834806,1615.143898303367,-10.993080252335858,0.09540146497258245,normal +2025-07-14 06:50:00+08:00,3711.489758919348,2167.308597672649,1604.2859791654482,-60.10481791874918,0.1299012998057559,normal +2025-07-14 07:00:00+08:00,3028.9268084714354,2165.0541244157657,447.0887520763637,416.7839319793061,0.20510177455162137,normal +2025-07-14 07:10:00+08:00,3208.194831698865,2162.803850498215,883.059602957259,162.3313782433911,0.026354870168073707,normal +2025-07-14 07:20:00+08:00,3750.293995269002,2160.5579963285377,2137.113916516016,-547.3779175755517,0.47219913440884304,normal +2025-07-14 07:30:00+08:00,4415.423720841458,2158.3167520734887,2170.194140178165,86.91282858980412,0.026624878259472875,normal +2025-07-14 07:40:00+08:00,1904.378748893648,2156.0804337097475,-604.5641302307635,352.86244541466385,0.16019844118251464,normal +2025-07-14 07:50:00+08:00,3014.569785492415,2153.8493656189567,554.1228399406955,306.597579932763,0.12769846676609048,normal +2025-07-14 08:00:00+08:00,2915.8901576658523,2151.6237635841017,794.6997846910214,-30.433390609270646,0.10905782347847488,normal +2025-07-14 08:10:00+08:00,1058.7360213656486,2149.4037390104186,-740.4242362617728,-350.2434813829973,0.3337168527439233,normal +2025-07-14 08:20:00+08:00,1790.3179310193468,2147.1894300824074,-286.21259053764993,-70.65890852541042,0.1373152989848803,normal +2025-07-14 08:30:00+08:00,1651.3825851440906,2144.981120677343,-378.10163816743653,-115.49689736581581,0.1688129262884151,normal +2025-07-14 08:40:00+08:00,1912.2178103165504,2142.7792043529716,-70.48466202302558,-160.0767320133957,0.20012920637360337,normal +2025-07-14 08:50:00+08:00,1947.749792820818,2140.5842031131115,177.2089670436884,-370.04337733598186,0.3476258116313451,normal +2025-07-14 09:00:00+08:00,1466.0417791830196,2138.396831246061,1869.0774338010913,-2541.432485864133,1.8729753342161337,mild +2025-07-14 09:10:00+08:00,2229.318007094276,2136.218071929077,62.035860457678986,31.06407470751992,0.06585730773824178,normal +2025-07-14 09:20:00+08:00,2117.230821265878,2134.049105301239,-113.8782390179883,97.05995498262746,0.019496761820963104,normal +2025-07-14 09:30:00+08:00,2524.0631420646287,2131.8912937917835,123.89101001649264,268.2808382563526,0.10078186144944393,normal +2025-07-14 09:40:00+08:00,2861.451312905756,2129.7461724282093,529.0348249394254,202.67031553812103,0.05469202010699094,normal +2025-07-14 09:50:00+08:00,1666.0083855854336,2127.6154167759014,-214.06659581136256,-247.54043537910525,0.2615703905668937,normal +2025-07-14 10:00:00+08:00,1600.8648802433331,2125.5009480051717,-302.9864929072618,-221.6495748545767,0.24338267304298639,normal +2025-07-14 10:10:00+08:00,1214.0080508937745,2123.4052356120983,-1120.2323919384637,210.83520722013964,0.06042766351618423,normal +2025-07-14 10:20:00+08:00,1596.3143660152932,2121.33141937336,-851.389326735017,326.3722733769505,0.14158972148680601,normal +2025-07-14 10:30:00+08:00,966.1276924346802,2119.2831990005766,-1167.5149616295973,14.359455063700807,0.07759190818299189,normal +2025-07-14 10:40:00+08:00,959.960077142546,2117.2648609549738,-944.8071409292281,-212.49764288319966,0.23695365716165914,normal +2025-07-14 10:50:00+08:00,947.7992631077184,2115.2815396415394,-818.9303086439018,-348.5519678899193,0.3325286044981443,normal +2025-07-14 11:00:00+08:00,968.5399424572884,2113.339475585767,-907.7286061799405,-237.07092694853827,0.25421580836716645,normal +2025-07-14 11:10:00+08:00,1796.2069016683097,2111.4460829760715,-593.0588844033329,277.8197030955712,0.10748268852431377,normal +2025-07-14 11:20:00+08:00,1761.34981084255,2109.609584953786,-681.5974579936457,333.3376838824097,0.14648275772217292,normal +2025-07-14 11:30:00+08:00,1979.951652301946,2107.837940823696,-275.9662189227676,148.07993040101746,0.016343564927051395,normal +2025-07-14 11:40:00+08:00,4790.2177457663565,2106.137312847153,-737.4747030294066,3421.55513594861,2.3158825201351934,moderate +2025-07-14 11:50:00+08:00,1455.3939063222506,2104.5097900026826,-342.3836725730892,-306.7322111073429,0.30315121387184885,normal +2025-07-14 12:00:00+08:00,1748.7909295927684,2102.949958148568,-408.7314899651402,54.572461409340576,0.04934322175912081,normal +2025-07-14 12:10:00+08:00,1430.9916751795392,2101.875144389759,-601.8624438000525,-69.02102541016734,0.13616472481184355,normal +2025-07-14 12:20:00+08:00,1214.7914028281025,2100.8770663738555,-555.0766698264923,-331.0089937192606,0.3202050798148738,normal +2025-07-14 12:30:00+08:00,1526.277467859382,2099.9592592161202,-937.8570627889956,364.17527143225743,0.16814543405322951,normal +2025-07-14 12:40:00+08:00,984.2511934117192,2099.124399262458,-618.6745018195151,-496.19870403122377,0.4362469466413444,normal +2025-07-14 12:50:00+08:00,966.6904968013548,2098.3729105469383,-1039.516876459932,-92.16553728565145,0.1524231973265453,normal +2025-07-14 13:00:00+08:00,1226.3109129203633,2097.704914988308,-762.0693577947386,-109.32464427320588,0.16447706438733614,normal +2025-07-14 13:10:00+08:00,1890.9361883701824,2097.1193723315378,-190.44986818944545,-15.733315771909929,0.09873136837788363,normal +2025-07-14 13:20:00+08:00,1617.0764994286596,2096.6140225759455,-498.9142028033898,19.37667965610399,0.0740674265013506,normal +2025-07-14 13:30:00+08:00,987.9993732436246,2096.185408099373,-1067.3500178162665,-40.83601703948216,0.11636542265387405,normal +2025-07-14 13:40:00+08:00,2289.3019314884687,2095.8291272536635,-234.20762925745066,427.6804334922558,0.2127563092986841,normal +2025-07-14 13:50:00+08:00,1896.4525727570167,2095.5416926003336,-334.28152439148545,135.19240454816872,0.0072903826439981,normal +2025-07-14 14:00:00+08:00,2169.6915288953523,2095.3203617834383,-187.64488673386083,262.0160538457749,0.09638099848469932,normal +2025-07-14 14:10:00+08:00,1347.2518606592594,2095.1619908969415,-721.2859476170213,-26.624182620660577,0.10638194490653574,normal +2025-07-14 14:20:00+08:00,1262.87544886029,2095.0636955871914,-835.119971123937,2.9317243970353957,0.08561961885362393,normal +2025-07-14 14:30:00+08:00,988.1500095484856,2095.0230070271064,-1066.5897972946693,-40.28320018395152,0.1159770818800585,normal +2025-07-14 14:40:00+08:00,1697.4621205649278,2095.037737529227,-262.1333133593766,-135.44230360492247,0.1828241027123419,normal +2025-07-14 14:50:00+08:00,1142.474968952154,2095.1064900392034,460.3092272177235,-1412.9407483047728,1.0802365632761615,normal +2025-07-14 15:00:00+08:00,1196.592194007529,2095.228554967809,-602.9345019952762,-295.7018589650038,0.29540265222153106,normal +2025-07-14 15:10:00+08:00,1256.4843967257607,2095.404555523269,-753.0694742309183,-85.85068456659019,0.1479871625585794,normal +2025-07-14 15:20:00+08:00,991.4270993283488,2095.6357925467164,-1008.4530326110313,-95.75566060733627,0.15494517409857783,normal +2025-07-14 15:30:00+08:00,1277.8670278756006,2095.923990705725,1374.3802514510303,-2192.4372142811544,1.6278144052961738,normal +2025-07-14 15:40:00+08:00,2211.1657597272524,2096.2721715649136,-77.07945483411076,191.97304299644975,0.04717743900298144,normal +2025-07-14 15:50:00+08:00,944.895188917142,2096.683628445159,-90.48500660280888,-1061.3034329252077,0.8332196610403445,normal +2025-07-14 16:00:00+08:00,1360.6047232543456,2097.1612336334856,-283.01668702321547,-453.53982335592445,0.40628009131518134,normal +2025-07-14 16:10:00+08:00,1897.1778035144257,2097.70745626674,-324.98876147529535,124.459108722981,0.00024950396518222146,normal +2025-07-14 16:20:00+08:00,2263.792657790043,2098.324054699947,203.12374503390072,-37.655141943804665,0.11413093308701684,normal +2025-07-14 16:30:00+08:00,34109.276874739284,2099.013243612546,-739.1675989336189,32749.43123006036,22.91802223930438,severe +2025-07-14 16:40:00+08:00,1784.7959618736245,2099.777768299188,-394.9549391598227,79.9731327342588,0.03149985056110467,normal +2025-07-14 16:50:00+08:00,1282.962522502106,2100.620243540963,-537.5388317222255,-280.1188893166318,0.2844559843856086,normal +2025-07-14 17:00:00+08:00,2340.1041184992314,2101.5418335084696,202.48180319952593,36.0804817912358,0.062333400337129495,normal +2025-07-14 17:10:00+08:00,1851.977794594737,2102.543331966192,-143.32591174659555,-107.23962562485963,0.16301238807144952,normal +2025-07-14 17:20:00+08:00,996.4162110354268,2103.6247173216593,-568.3421330701095,-538.8663732161231,0.46621997568776324,normal +2025-07-14 17:30:00+08:00,1572.0774705767749,2104.784477259083,-248.31612088818542,-284.3908857941226,0.287456960931835,normal +2025-07-14 17:40:00+08:00,973.820950598001,2106.021622359786,-956.7609649949205,-175.43970676686422,0.21092133299598,normal +2025-07-14 17:50:00+08:00,1598.4462273173626,2107.3360189290593,-729.6444958708506,220.7547042591541,0.06739587571422648,normal +2025-07-14 18:00:00+08:00,991.3674759676156,2108.7277529098287,-1104.3071264002226,-13.053150541990362,0.09684861565620433,normal +2025-07-14 18:10:00+08:00,1373.415858740846,2110.195923807613,-985.0764216930486,248.29635662628198,0.08674323548700857,normal +2025-07-14 18:20:00+08:00,1175.6279236576877,2111.738231018928,-906.637016128849,-29.473291232391603,0.10838337636054259,normal +2025-07-14 18:30:00+08:00,996.956506092232,2113.3526821316323,-1109.7893448167345,-6.606831222665733,0.09232022870909191,normal +2025-07-14 18:40:00+08:00,990.5425094694642,2115.0367767663847,-1184.437688203023,59.9434209061028,0.045570249668567334,normal +2025-07-14 18:50:00+08:00,809.3980148277981,2116.787462760845,-1339.629860891467,32.240412958420166,0.06503095792265061,normal +2025-07-14 19:00:00+08:00,985.9852949963372,2118.601187103156,-1167.8464177653864,35.230525658567785,0.06293047442951175,normal +2025-07-14 19:10:00+08:00,851.802515694159,2120.473834433985,-1255.2933617088713,-13.377957030954349,0.0970767845370962,normal +2025-07-14 19:20:00+08:00,871.457908714505,2122.401042380115,-1228.7564175148655,-22.186716150744815,0.10326472960192362,normal +2025-07-14 19:30:00+08:00,852.9397482533846,2124.3791997303356,-1189.431822220975,-82.0076292559761,0.14528750704299767,normal +2025-07-14 19:40:00+08:00,809.4309908241964,2126.404862319495,-1203.6242539657903,-113.34961752950812,0.16730451295968288,normal +2025-07-14 19:50:00+08:00,691.4777649210907,2128.475265418946,-1194.4731315823274,-242.52436891552793,0.25804672244337734,normal +2025-07-14 20:00:00+08:00,713.5651216766132,2130.5893587947335,-1290.700761266841,-126.32347585127923,0.17641834176147253,normal +2025-07-14 20:10:00+08:00,863.2189568046698,2132.7480235970656,-1231.8607064754615,-37.66836031693447,0.11414021868169157,normal +2025-07-14 20:20:00+08:00,936.659322005676,2134.9531209326205,-1024.0228868522495,-174.27091207469493,0.21010028235208666,normal +2025-07-14 20:30:00+08:00,857.557607281998,2137.206360856059,-1047.8519317495873,-231.79682182447368,0.2505108741840402,normal +2025-07-14 20:40:00+08:00,885.5419981841394,2139.509085463639,-972.3623497090542,-281.60473757044565,0.28549975766221153,normal +2025-07-14 20:50:00+08:00,1318.479245921977,2141.861502898179,-821.3698890728567,-2.012367903345421,0.08909272682878223,normal +2025-07-14 21:00:00+08:00,2394.691211988621,2144.263116713226,-1372.1665433009205,1622.5946385763154,1.052155293615328,normal +2025-07-14 21:10:00+08:00,1093.5409202629537,2146.7120674164394,-872.4087706964195,-180.76237645706624,0.21466038263887405,normal +2025-07-14 21:20:00+08:00,1771.3322838645624,2149.2061557545667,-583.8662373794197,205.99236548941553,0.05702568167290193,normal +2025-07-14 21:30:00+08:00,1314.3306471284495,2151.7430944871235,-949.5589955831663,112.14654822449256,0.00889878667752672,normal +2025-07-14 21:40:00+08:00,1560.827539724267,2154.319592010419,-789.9019900971477,196.40993781099587,0.05029425273320888,normal +2025-07-14 21:50:00+08:00,1849.117882512552,2156.932259420251,-235.40738489950544,-72.40699200819336,0.1385432863112553,normal +2025-07-14 22:00:00+08:00,1408.9823331812386,2159.5778180855646,-766.146511821012,15.551026916686169,0.0767548571220198,normal +2025-07-14 22:10:00+08:00,1510.401133936611,2162.252810518203,-870.7819933565157,218.93031677492354,0.06611428663046845,normal +2025-07-14 22:20:00+08:00,937.1300820522052,2164.9525742235846,-1116.3859749254118,-111.43651724596748,0.1659606052313561,normal +2025-07-14 22:30:00+08:00,1070.3090212732643,2167.6701556136813,-928.6487113578908,-168.71242298252628,0.20619557515348633,normal +2025-07-14 22:40:00+08:00,2197.337485113677,2170.397291867744,-1094.30039985802,1121.2405931039525,0.6999659274148173,normal +2025-07-14 22:50:00+08:00,1613.963850776826,2173.125963290118,-863.8577304541009,304.6956179408089,0.1263623834243222,normal +2025-07-14 23:00:00+08:00,1013.7085176612284,2175.8480023114416,-1092.2232769449129,-69.91620770530062,0.13679356921432537,normal +2025-07-14 23:10:00+08:00,1250.6104099440463,2178.5536444473037,-989.0513009201609,61.10806641690351,0.04475211372650923,normal +2025-07-14 23:20:00+08:00,1539.381497487234,2181.2322191752564,-864.7325080286947,222.88178634067208,0.06889010059764288,normal +2025-07-14 23:30:00+08:00,929.6556875436802,2183.8720570121136,-1158.566760450017,-95.64960901841641,0.15487067536415344,normal +2025-07-14 23:40:00+08:00,2023.859799135074,2186.4609940594883,-594.7664593320728,432.16526440765847,0.21590679700667484,normal +2025-07-14 23:50:00+08:00,1742.658506943522,2188.9871602797907,-986.2916109093122,539.9629575730437,0.2916321283900574,normal +2025-07-15 00:00:00+08:00,1498.871258410551,2191.4395123315853,-468.1647459052717,-224.40350801576255,0.24531724599269258,normal +2025-07-15 00:10:00+08:00,1554.350376084984,2193.810205731668,-778.8517619411698,139.3919322944862,0.010240451619553101,normal +2025-07-15 00:20:00+08:00,1394.579873888856,2196.094131952354,-437.34484801100956,-364.1694100524885,0.3434994884604471,normal +2025-07-15 00:30:00+08:00,1738.0669385254316,2198.286322017497,-398.43967954230965,-61.77970394975546,0.13107786765246077,normal +2025-07-15 00:40:00+08:00,2970.8713123785387,2200.3821801634053,312.4566775687262,458.03245464640713,0.2340778867143276,normal +2025-07-15 00:50:00+08:00,3476.072893193625,2202.3776096323663,131.1286595049475,1142.5666240563114,0.7149469600653214,normal +2025-07-15 01:00:00+08:00,14552.472422384308,2204.269055184494,8924.340596762171,3423.8627704376427,2.317503578817086,moderate +2025-07-15 01:10:00+08:00,4651.271492083917,2206.054079505327,2528.5837028371266,-83.36629025853654,0.1462419342819806,normal +2025-07-15 01:20:00+08:00,2215.550308062743,2207.7303246295187,331.1409091443766,-323.3209257111521,0.3148043937656945,normal +2025-07-15 01:30:00+08:00,2413.6171490769666,2209.296937347897,131.020566875821,73.29964485324899,0.036187818053109666,normal +2025-07-15 01:40:00+08:00,4728.679591687594,2210.7536728469536,-142.53371701606906,2660.45963585671,1.7812309216966544,mild +2025-07-15 01:50:00+08:00,3517.591270570895,2212.101776527995,-1255.6834362868958,2561.172930329796,1.7114843579510386,normal +2025-07-15 02:00:00+08:00,4216.831486134892,2213.342604639058,2192.9299144498045,-189.441032953971,0.22075693368642177,normal +2025-07-15 02:10:00+08:00,2201.358455066988,2214.47711661579,-72.24548693754822,59.12682538874651,0.04614388871725383,normal +2025-07-15 02:20:00+08:00,1298.521249031328,2215.506452535842,-1005.6240134904632,88.63880998594914,0.025412417126523475,normal +2025-07-15 02:30:00+08:00,876.7833839952468,2216.4330095802443,1378.1404455788058,-2717.790071163803,1.9968623692411003,mild +2025-07-15 02:40:00+08:00,910.1316505639112,2217.2626977008604,551.7936593984967,-1858.924706535446,1.39352975199845,normal +2025-07-15 02:50:00+08:00,1084.8528568167555,2218.0041136851064,-1154.5508367760851,21.399579907734278,0.07264638689083489,normal +2025-07-15 03:00:00+08:00,599.7171348406605,2218.667084683507,-1578.7366658543663,-40.213283988479816,0.11592796740538196,normal +2025-07-15 03:10:00+08:00,977.452937144314,2219.26041119168,703.8404030651444,-1945.6478771125103,1.4544507294120423,normal +2025-07-15 03:20:00+08:00,2320.628749677141,2219.7924708524106,-176.09320089631902,276.9294797210496,0.10685732764634528,normal +2025-07-15 03:30:00+08:00,2265.005675010066,2220.2688345048887,-543.2073909538857,587.9442314590633,0.32533783913881387,normal +2025-07-15 03:40:00+08:00,2446.874862197365,2220.693427384349,319.5863043090878,-93.40486949607157,0.15329379890968103,normal +2025-07-15 03:50:00+08:00,3517.0287317888947,2221.069595576858,1195.6008921250798,100.3582440869568,0.0171797916883987,normal +2025-07-15 04:00:00+08:00,6253.785190863624,2221.4002122834536,1444.0349218164165,2588.350056763754,1.7305756468722413,mild +2025-07-15 04:10:00+08:00,4675.018544415212,2221.6867427388393,2293.625806362748,159.70599531362495,0.024510600717336923,normal +2025-07-15 04:20:00+08:00,6904.805663709536,2221.9292782359503,1489.2311318773343,3193.645253596251,2.155781214996857,mild +2025-07-15 04:30:00+08:00,4979.867629821298,2222.1275779102007,2648.6279883367033,109.11206357439369,0.011030440416665468,normal +2025-07-15 04:40:00+08:00,4869.849553252716,2222.280007013691,2899.296464647396,-251.72691840837115,0.26451129593706413,normal +2025-07-15 04:50:00+08:00,4449.069373290859,2222.385348792095,501.25250488408955,1725.431519614675,1.1243957717405486,normal +2025-07-15 05:00:00+08:00,8004.086738718597,2222.4434993276545,5784.645278058511,-3.0020386675687405,0.08978794714733096,normal +2025-07-15 05:10:00+08:00,5894.8591335712645,2222.4544436218143,3953.995656625153,-281.59096667570293,0.285490083934164,normal +2025-07-15 05:20:00+08:00,4633.565476521968,2222.41807212522,1904.1512503647475,506.9961540320005,0.26847372815447623,normal +2025-07-15 05:30:00+08:00,6271.172402889849,2222.3339052601623,3457.110861284091,591.7276363455958,0.3279955916414637,normal +2025-07-15 05:40:00+08:00,5637.878316196367,2222.200722514307,3343.943616282498,71.73397739956226,0.03728766243089896,normal +2025-07-15 05:50:00+08:00,2949.623173587968,2222.015640165606,1018.4886774740697,-290.8811440517079,0.29201621394446997,normal +2025-07-15 06:00:00+08:00,4277.928344511081,2221.774021184762,2172.355643922332,-116.20132059601292,0.16930776695684194,normal +2025-07-15 06:10:00+08:00,3277.427297289553,2221.4713191393384,592.8102612152331,463.14571693498146,0.23766983260744046,normal +2025-07-15 06:20:00+08:00,4137.907062085869,2221.102724866218,1862.5029280834347,54.301409136216535,0.04953362957399906,normal +2025-07-15 06:30:00+08:00,5641.538972950302,2220.6633879556516,2190.7158144547748,1230.1597705398758,0.7764790749891962,normal +2025-07-15 06:40:00+08:00,5903.542009768298,2220.1484110154806,1845.781306259788,1837.6122924930296,1.2032001130173542,normal +2025-07-15 06:50:00+08:00,7672.687531102028,2219.553530489423,1609.2441036206628,3843.889896991942,2.6125627068406874,moderate +2025-07-15 07:00:00+08:00,2479.9696515205387,2218.8756936883133,527.4831248191463,-266.3891669869208,0.27481117898495794,normal +2025-07-15 07:10:00+08:00,6116.42177340247,2218.113671542097,612.5958689682052,3285.712232892168,2.220456091721297,mild +2025-07-15 07:20:00+08:00,4724.562175630068,2217.268209754733,2175.973992173392,331.3199737019427,0.14506536401396922,normal +2025-07-15 07:30:00+08:00,2403.117861325497,2216.341683316905,1860.696913821159,-1673.9207358125668,1.2635688355924002,normal +2025-07-15 07:40:00+08:00,3825.054604933868,2215.3375307491474,250.16038405079186,1359.556690133929,0.8673773523875385,normal +2025-07-15 07:50:00+08:00,1710.4388193435975,2214.260236603548,928.027681947303,-1431.8490992072534,1.0935192328394783,normal +2025-07-15 08:00:00+08:00,3031.442656473252,2213.115000469554,665.1674518135435,153.16020419015467,0.019912337179074504,normal +2025-07-15 08:10:00+08:00,2028.4580199285488,2211.906869602467,-396.1143518516432,212.6655021777251,0.06171340246033632,normal +2025-07-15 08:20:00+08:00,2182.6378310214905,2210.640838924792,-141.38875496197778,113.38574705867586,0.008028278788044683,normal +2025-07-15 08:30:00+08:00,1847.116950426496,2209.321991238518,-287.491460540567,-74.71358027145516,0.1401636100442738,normal +2025-07-15 08:40:00+08:00,3483.0701314126586,2207.9546842754867,6.540605697403468,1268.5748414397685,0.8034647542610845,normal +2025-07-15 08:50:00+08:00,2494.909483279121,2206.54142929883,211.95947781249433,76.40857616779704,0.03400386729192656,normal +2025-07-15 09:00:00+08:00,4044.3127790390463,2205.08234175526,1561.1228323782204,278.1076049055655,0.10768493274056287,normal +2025-07-15 09:10:00+08:00,2395.276503942772,2203.5760769514336,21.164811618330578,170.53561537300766,0.03211815282417752,normal +2025-07-15 09:20:00+08:00,2111.914305914104,2202.0214361877242,-44.798844484364,-45.30828578925639,0.11950708573744871,normal +2025-07-15 09:30:00+08:00,2336.01398048244,2200.4160684635913,70.89137512842014,64.7065368904282,0.04222427327761478,normal +2025-07-15 09:40:00+08:00,2618.1734257597577,2198.7580210393326,352.2568763019757,67.15852841844935,0.04050180718806889,normal +2025-07-15 09:50:00+08:00,2298.3279151973084,2197.045897101815,-137.02226159417827,238.3042796896716,0.07972403762651073,normal +2025-07-15 10:00:00+08:00,2106.0045303316147,2195.2786588327695,-223.85766057848124,134.58353207732625,0.006862664125439203,normal +2025-07-15 10:10:00+08:00,882.4425394738637,2193.454871893619,-982.2928691791027,-328.71946324065266,0.3185967387723716,normal +2025-07-15 10:20:00+08:00,919.3708625533096,2191.5732408752287,-655.3715155837925,-616.8308627381266,0.520988186693282,normal +2025-07-15 10:30:00+08:00,1295.670291559243,2189.633415032824,-923.2799725052256,29.31684903164478,0.06708469247554046,normal +2025-07-15 10:40:00+08:00,1537.5397365294325,2187.634739455698,-767.5613711963609,117.4663682700957,0.005161738842604997,normal +2025-07-15 10:50:00+08:00,1427.6001536049914,2185.5756925201,-685.8443835580963,-72.13115535701218,0.13834951758388253,normal +2025-07-15 11:00:00+08:00,1473.936295640324,2183.4554201852425,-735.3765324909018,25.85740794598314,0.06951486806576483,normal +2025-07-15 11:10:00+08:00,1278.3647667529724,2181.2741063324484,-441.25644245140734,-461.6528971280686,0.4119793338675324,normal +2025-07-15 11:20:00+08:00,1087.20312235079,2179.031537992832,-666.5892525894944,-425.2391630525476,0.3863995464082156,normal +2025-07-15 11:30:00+08:00,1632.7868061884585,2176.7273842918694,-287.08107008401606,-256.85950801939475,0.2681168188173485,normal +2025-07-15 11:40:00+08:00,1455.41532866152,2174.3621164064884,-610.749758545204,-108.19702919976453,0.16368494145221693,normal +2025-07-15 11:50:00+08:00,2324.942110215185,2171.9364573864555,-287.19606158697337,440.201714415703,0.22155221317593823,normal +2025-07-15 12:00:00+08:00,1866.3154421504155,2169.453300045944,-445.44711003951943,142.30925214399076,0.012289799855754418,normal +2025-07-15 12:10:00+08:00,1373.546084281064,2166.9174151840652,-586.044736668982,-207.32659423401947,0.23332111771614436,normal +2025-07-15 12:20:00+08:00,1673.9660894023514,2164.332443385936,-492.3989635016858,2.0326095181007986,0.08625122580326981,normal +2025-07-15 12:30:00+08:00,980.240386258656,2161.701863116081,-826.8285470150125,-354.6329298424123,0.3368003365311832,normal +2025-07-15 12:40:00+08:00,1586.2275022031502,2159.0287394746706,-641.257680153786,68.45644288226549,0.039590052956659016,normal +2025-07-15 12:50:00+08:00,1407.5430197646738,2156.31705597839,-863.1469823844329,114.37294617071666,0.007334794746730566,normal +2025-07-15 13:00:00+08:00,1393.65249508148,2153.573141915378,-573.1345133362914,-186.78613349760644,0.21889192957344578,normal +2025-07-15 13:10:00+08:00,2125.503862643421,2150.8044357413078,-202.28378972791688,176.98321663003026,0.03664744030222098,normal +2025-07-15 13:20:00+08:00,1486.590377656489,2148.019103611512,-486.9104550699844,-174.51827088503865,0.21027404606941538,normal +2025-07-15 13:30:00+08:00,1432.053757573127,2145.224915486866,-976.6998646752593,263.5287067615204,0.09744360140271477,normal +2025-07-15 13:40:00+08:00,1599.7611598796486,2142.4284682702173,-291.89500079285557,-250.77230759771305,0.2638407044071662,normal +2025-07-15 13:50:00+08:00,1645.0824757355558,2139.634668313925,-248.4117282730291,-246.14046430534017,0.2605869439793553,normal +2025-07-15 14:00:00+08:00,1393.2782028204408,2136.847784809568,-378.3569244812676,-365.2126575078596,0.34423234513810946,normal +2025-07-15 14:10:00+08:00,1337.5165936016983,2134.0724899750057,-723.8232543318474,-72.73264204146017,0.13877204776208063,normal +2025-07-15 14:20:00+08:00,2172.686656738733,2131.3127005709293,-766.7691703211331,808.1431264889366,0.480022357951376,normal +2025-07-15 14:30:00+08:00,1465.5300063243594,2128.5730721833097,-981.7988955392775,318.7558296803272,0.13623934982342728,normal +2025-07-15 14:40:00+08:00,2302.966147622326,2125.8587577380913,-287.52265683340215,464.630046717637,0.23871253919394753,normal +2025-07-15 14:50:00+08:00,2144.3990987107063,2123.173646232754,193.10420277975572,-171.8787503018034,0.20841984525129498,normal +2025-07-15 15:00:00+08:00,1974.7688104028696,2120.520679309311,-687.695777141507,541.9439082350655,0.29302369940545553,normal +2025-07-15 15:10:00+08:00,1026.0413648946562,2117.9024106703127,-794.7486497288933,-297.11239604676325,0.29639352117993173,normal +2025-07-15 15:20:00+08:00,1308.4074284749895,2115.3212489349116,-925.3208995038767,118.40707904395458,0.0045009117599967355,normal +2025-07-15 15:30:00+08:00,9240.14623012325,2112.7791252937463,1077.226813335325,6050.140291494179,4.162401458789488,severe +2025-07-15 15:40:00+08:00,1969.0411311517175,2110.2779172691485,-128.03275753132974,-13.20402858610123,0.09695460391581619,normal +2025-07-15 15:50:00+08:00,1844.152588957644,2107.821662195782,-187.7329512172057,-75.93612202093254,0.14102241672548135,normal +2025-07-15 16:00:00+08:00,1929.780142138901,2105.4146952598626,-314.4082235932266,138.77367047226517,0.009806137303591327,normal +2025-07-15 16:10:00+08:00,4099.34970568216,2103.0610009752154,-395.9728063506851,2392.26151105763,1.5928280785518285,normal +2025-07-15 16:20:00+08:00,2083.9243026264803,2100.7638710408146,178.95898670027728,-195.79855511461164,0.22522294272849933,normal +2025-07-15 16:30:00+08:00,1555.0606256502638,2098.52588751521,-608.2074168422306,64.74215497728437,0.042199252413519954,normal +2025-07-15 16:40:00+08:00,1738.4683142057784,2096.3491446618173,-397.2552257861438,39.37439533010502,0.060019503935873506,normal +2025-07-15 16:50:00+08:00,1778.4677911528822,2094.2349711608663,-517.1383530377727,201.37117302978868,0.0537794032033363,normal +2025-07-15 17:00:00+08:00,2088.279700366542,2092.184112484136,42.174453622786075,-46.07886574038048,0.12004839993854889,normal +2025-07-15 17:10:00+08:00,1706.6546328713343,2090.196877379115,-307.89870436524745,-75.64354014253331,0.1408168848718028,normal +2025-07-15 17:20:00+08:00,1798.3203964794982,2088.2729370928146,-698.2909291387235,408.338388525407,0.19916897990658136,normal +2025-07-15 17:30:00+08:00,1889.7094013893536,2086.41203893564,-423.1915685119866,226.48893096570055,0.0714240344329337,normal +2025-07-15 17:40:00+08:00,1095.4480845458324,2084.6150268847455,-1001.4240291190172,12.257086780104146,0.07906877220754034,normal +2025-07-15 17:50:00+08:00,1130.8221505580916,2082.883085194345,-858.7563764869641,-93.30455814928928,0.15322333255967344,normal +2025-07-15 18:00:00+08:00,859.0743252481669,2081.2164915238227,-1145.8819647991559,-76.26020147649979,0.14125007488259725,normal +2025-07-15 18:10:00+08:00,689.7767043205673,2079.6137079687287,-1077.191510786502,-312.6454928616595,0.30730515452920537,normal +2025-07-15 18:20:00+08:00,946.1906483553053,2078.071903342045,-971.0481690484369,-160.83308593830293,0.20066052712755353,normal +2025-07-15 18:30:00+08:00,900.0284698374401,2076.5880707096576,-1135.721394628949,-40.83820624326859,0.11636696051778676,normal +2025-07-15 18:40:00+08:00,744.6947287752316,2075.159728575165,-1214.985251439027,-115.47974836090634,0.16880087951782538,normal +2025-07-15 18:50:00+08:00,847.4041779213665,2073.7847915723723,-1259.7169086374874,33.336294986481334,0.06426112670182192,normal +2025-07-15 19:00:00+08:00,836.4857718906233,2072.462226575798,-1189.7066279679384,-46.269826717236356,0.12018254551095478,normal +2025-07-15 19:10:00+08:00,856.5258166418784,2071.1915535451963,-1233.9414983405438,19.27576143722581,0.07413831916466063,normal +2025-07-15 19:20:00+08:00,804.4528677886374,2069.971153102628,-1222.1612624041263,-43.3570229098641,0.11813636968760358,normal +2025-07-15 19:30:00+08:00,881.5135216859846,2068.7981834194916,-1199.2934400712422,12.008778337735293,0.07924320301891981,normal +2025-07-15 19:40:00+08:00,911.8862807837932,2067.6714091654158,-1206.57840641883,50.79327803720753,0.05199800874769098,normal +2025-07-15 19:50:00+08:00,911.2600089906324,2066.5882369665105,-1184.7080858528645,29.379857876986534,0.0670404302510579,normal +2025-07-15 20:00:00+08:00,928.4567787728556,2065.5434145432005,-1203.5878173333774,66.50118156303279,0.04096357781597902,normal +2025-07-15 20:10:00+08:00,978.0550882925984,2064.529375515774,-1124.5481961076096,38.07390888443388,0.060933064923741356,normal +2025-07-15 20:20:00+08:00,1191.8927545070362,2063.538538589186,-968.5138547011609,96.86807061901118,0.019631556050741652,normal +2025-07-15 20:30:00+08:00,975.13329348157,2062.565676812166,-1029.9046909815008,-57.52769234909533,0.12809093000981586,normal +2025-07-15 20:40:00+08:00,1123.240662180961,2061.607040308913,-916.2774940756692,-22.088884052282765,0.10319600486525783,normal +2025-07-15 20:50:00+08:00,1022.44177689622,2060.6594376155476,-794.6377624674999,-243.57989825182767,0.25878820685207937,normal +2025-07-15 21:00:00+08:00,5792.407072621629,2059.720703214303,-1176.8874439390029,4909.573813346329,3.361180468002483,moderate +2025-07-15 21:10:00+08:00,1142.5308925778588,2058.7895080859685,-908.9089268790567,-7.349688629052707,0.09284206847780524,normal +2025-07-15 21:20:00+08:00,1298.2494895402056,2057.864396505413,-665.1471042122021,-94.46780275300534,0.15404048439761847,normal +2025-07-15 21:30:00+08:00,1033.325020243396,2056.9432063501904,-967.4351264114024,-56.183059695391876,0.1271463573543102,normal +2025-07-15 21:40:00+08:00,946.652505073478,2056.0226828738064,-846.2683324986183,-263.10184530171,0.27250191320508216,normal +2025-07-15 21:50:00+08:00,1821.926897902803,2055.098889576076,-302.8495257666041,69.6775340933309,0.0387322652443988,normal +2025-07-15 22:00:00+08:00,1383.674954147746,2054.1691196193656,-783.0838361605275,112.58967068890797,0.008587503620571164,normal +2025-07-15 22:10:00+08:00,987.032497387446,2053.234552727608,-905.6258481094251,-160.57620723073683,0.20048007590745243,normal +2025-07-15 22:20:00+08:00,979.7086470509016,2052.299454297337,-1131.2624824224222,58.67167517598682,0.046463620983115635,normal +2025-07-15 22:30:00+08:00,1306.3595951096604,2051.369251414291,-975.3527950159363,230.34313871130598,0.07413152427048145,normal +2025-07-15 22:40:00+08:00,876.8848840910089,2050.4498998847944,-1113.443615587362,-60.12140020642346,0.12991294847088367,normal +2025-07-15 22:50:00+08:00,914.5468521750272,2049.5465331709893,-918.5623160455456,-216.4373649504164,0.23972121878879618,normal +2025-07-15 23:00:00+08:00,992.1719287248142,2048.665322566118,-1087.9570395911642,31.46364574986046,0.06557661852584816,normal +2025-07-15 23:10:00+08:00,794.2055653922587,2047.8145575317185,-1042.6803229719078,-210.92866916755202,0.235851490212994,normal +2025-07-15 23:20:00+08:00,951.4398413365302,2047.0032840762467,-910.0194341362071,-185.54400860350938,0.218019366196039,normal +2025-07-15 23:30:00+08:00,971.2025763032284,2046.240200195581,-1119.5251998715366,44.48757597918393,0.05642761539257644,normal +2025-07-15 23:40:00+08:00,1250.965591975307,2045.5326818139188,-688.966088757388,-105.60100108122379,0.1618612930624924,normal +2025-07-15 23:50:00+08:00,969.1711018391406,2044.8849990780577,-906.5260905297763,-169.18780670914066,0.20652952098456187,normal +2025-07-16 00:00:00+08:00,1321.168644613048,2044.2981923600992,-500.3795912356681,-222.74995651138306,0.2441556651466487,normal +2025-07-16 00:10:00+08:00,1110.59429114438,2043.77109136781,-629.0742173538987,-304.10258286953126,0.3013039621925585,normal +2025-07-16 00:20:00+08:00,2280.857631608397,2043.3015428457923,-405.4896123686201,643.0457011312244,0.3640453191238833,normal +2025-07-16 00:30:00+08:00,2260.917832679399,2042.889483193025,-257.71221317585133,475.74056266222556,0.2465174140204757,normal +2025-07-16 00:40:00+08:00,2374.377354790704,2042.536366055012,223.15092444590633,108.69006428978582,0.011326884939104862,normal +2025-07-16 00:50:00+08:00,2085.1471984451778,2042.2432721355408,158.64366839875697,-115.73974208912,0.16898351896630018,normal +2025-07-16 01:00:00+08:00,6029.151485546501,2042.0124168727164,6728.094493766763,-2740.9554250929777,2.013135482805866,mild +2025-07-16 01:10:00+08:00,4272.864622797346,2041.846290343016,2154.050216456675,76.96811599765465,0.03361080378756045,normal +2025-07-16 01:20:00+08:00,3625.520891195044,2041.7469992873775,1201.7827775610087,381.9911143466579,0.1806606425790505,normal +2025-07-16 01:30:00+08:00,1763.9480091762875,2041.715549653243,373.6301859943842,-651.3977264713396,0.5452705913924792,normal +2025-07-16 01:40:00+08:00,2007.008076771154,2041.7522258110491,457.90652491844435,-492.65067395833944,0.43375453938161607,normal +2025-07-16 01:50:00+08:00,1418.7027164541778,2041.85679574542,-675.5645687179664,52.4104894267241,0.05086195597334973,normal +2025-07-16 02:00:00+08:00,2629.879824408069,2042.0281412818683,2335.874889389764,-1748.0232062635635,1.3156240694889167,normal +2025-07-16 02:10:00+08:00,2264.4224925706644,2042.2655569572933,-165.89488364981665,388.0518192631878,0.1849181445231505,normal +2025-07-16 02:20:00+08:00,1785.5772836581496,2042.5674509655166,-922.1335192910628,665.1433519836958,0.37956839651507013,normal +2025-07-16 02:30:00+08:00,3510.681665078476,2042.930898006808,1849.151989191188,-381.4012221195203,0.3556044291210063,normal +2025-07-16 02:40:00+08:00,954.745374668782,2043.3518687258875,662.9840272986318,-1751.590521355737,1.3181300240188465,normal +2025-07-16 02:50:00+08:00,1650.206216346639,2043.8265535442822,-361.3899068696433,-32.23043032800001,0.11032020140340044,normal +2025-07-16 03:00:00+08:00,1489.7094981720898,2044.3513934549446,-1085.367624764444,530.725729481589,0.2851431940005606,normal +2025-07-16 03:10:00+08:00,4104.597977211815,2044.9238917388932,611.9819836242353,1447.6921018486867,0.9292903958185458,normal +2025-07-16 03:20:00+08:00,1499.0439318835547,2045.542682842867,179.4840201093307,-725.9827710686429,0.5976648222199417,normal +2025-07-16 03:30:00+08:00,2070.6189556243417,2046.2069894483675,-271.5652231010745,295.97718927704864,0.12023789336967207,normal +2025-07-16 03:40:00+08:00,3442.3848066532028,2046.917379889846,522.8503107053982,872.6171160579584,0.5253138116212833,normal +2025-07-16 03:50:00+08:00,822.9992215899242,2047.6728801405836,1406.5800977657468,-2631.253756316406,1.9360726535608015,mild +2025-07-16 04:00:00+08:00,868.9467699723359,2048.470172006189,1589.0739145296477,-2768.5973165635005,2.0325532581793837,mild +2025-07-16 04:10:00+08:00,3677.343133556298,2049.306440387517,1961.565289174686,-333.5285960059048,0.3219750408642047,normal +2025-07-16 04:20:00+08:00,2475.929485528938,2050.179223307071,1583.7564289441088,-1158.0061667222417,0.9011510457242874,normal +2025-07-16 04:30:00+08:00,3778.3552166368167,2051.0847102148064,2037.0313915207778,-309.7608850987674,0.3052787857606182,normal +2025-07-16 04:40:00+08:00,4607.493030944061,2052.017623824024,2361.1161806392242,194.35922648081214,0.04885367649739305,normal +2025-07-16 04:50:00+08:00,2273.0384784932253,2052.972125310471,194.80407336454059,25.262279818213756,0.06993293150819646,normal +2025-07-16 05:00:00+08:00,8586.257546814122,2053.9410042846393,4753.204489775299,1779.1120527541834,1.1621050773987815,normal +2025-07-16 05:10:00+08:00,6047.935135016429,2054.9169636528527,3497.3030874944816,495.71508386909454,0.2605490430210512,normal +2025-07-16 05:20:00+08:00,4252.731755973454,2055.8920022337056,2107.0673501227216,89.77240361702661,0.024616094395982908,normal +2025-07-16 05:30:00+08:00,4348.346652061216,2056.8585734845938,2472.4178199995786,-180.92974142295589,0.21477795257132629,normal +2025-07-16 05:40:00+08:00,4764.426655018324,2057.812099051078,2895.9839276287476,-189.36937166150165,0.2207065933223541,normal +2025-07-16 05:50:00+08:00,4755.3046273394175,2058.750755031972,820.1738060466029,1876.3800662608428,1.2304335577169512,normal +2025-07-16 06:00:00+08:00,2444.4345841160457,2059.6738070863926,2000.6907251146215,-1615.9299480849684,1.22283167796957,normal +2025-07-16 06:10:00+08:00,2351.2076313918906,2060.5805236615997,989.9433629913271,-699.3162552610363,0.5789322251942045,normal +2025-07-16 06:20:00+08:00,3826.289859479241,2061.4705159007976,1778.4079489458297,-13.588605367386435,0.0972247600142449,normal +2025-07-16 06:30:00+08:00,4159.978511226482,2062.3427894258602,2131.0418670360486,-33.406145235427175,0.11114611333493604,normal +2025-07-16 06:40:00+08:00,4322.95186241308,2063.196515437402,2076.5736432635235,183.1817037121541,0.0410017309608282,normal +2025-07-16 06:50:00+08:00,3837.742868763709,2064.0305663213917,1614.1270057973807,159.58529664493653,0.0244258127555951,normal +2025-07-16 07:00:00+08:00,2684.651485818312,2064.8429156294656,608.0826738184787,11.725896370367536,0.07944192091438017,normal +2025-07-16 07:10:00+08:00,2101.15024004704,2065.6309187629327,342.2382325925775,-306.7189113084703,0.30314187107751456,normal +2025-07-16 07:20:00+08:00,4740.900407001318,2066.391497442111,2214.8836472499815,459.6252623092255,0.23519679644750585,normal +2025-07-16 07:30:00+08:00,3350.2239869857176,2067.1217340500625,1551.224868532428,-268.1226155967729,0.27602888565903044,normal +2025-07-16 07:40:00+08:00,2787.692893117568,2067.818614049705,1105.1808333002032,-385.3065542323402,0.35834783261807124,normal +2025-07-16 07:50:00+08:00,2621.8368144363835,2068.4797869147606,1302.2413811995475,-748.8843536779245,0.6137526426673707,normal +2025-07-16 08:00:00+08:00,2432.812089866407,2069.104089273974,535.6646346854837,-171.95663409305052,0.2084745567736699,normal +2025-07-16 08:10:00+08:00,2276.8222841544693,2069.6914230136513,-51.76402346437691,258.8948846051949,0.09418845086975244,normal +2025-07-16 08:20:00+08:00,2140.588792861992,2070.2423621440066,3.618642633906399,66.72778808407884,0.04080439209135019,normal +2025-07-16 08:30:00+08:00,1873.137927705671,2070.7572508613493,-197.10533119485092,-0.5139919608272976,0.08804015314698746,normal +2025-07-16 08:40:00+08:00,2304.97898931622,2071.2367040305508,83.52842893794454,150.2138563477247,0.01784259746399154,normal +2025-07-16 08:50:00+08:00,2349.217612781088,2071.6820665127025,246.43886854992772,31.096677718458068,0.06583440489371059,normal +2025-07-16 09:00:00+08:00,2268.9501838656934,2072.0956526960767,1253.4246922114496,-1056.570161041833,0.8298946494248706,normal +2025-07-16 09:10:00+08:00,1808.1931264120133,2072.4796993334644,-19.596936530424042,-244.68963639102708,0.25956777166345923,normal +2025-07-16 09:20:00+08:00,1852.335669329913,2072.8368799995906,24.23481565842774,-244.73602632810548,0.2596003594977158,normal +2025-07-16 09:30:00+08:00,1794.4378944228265,2073.1704677707176,18.067425720380353,-296.7999990682713,0.296174069686817,normal +2025-07-16 09:40:00+08:00,2122.162217514902,2073.4833168202767,175.68923403823132,-127.01033334360613,0.17690084291425523,normal +2025-07-16 09:50:00+08:00,2452.652505971553,2073.7776034744757,-59.79744488927565,438.67234738635307,0.22047786898819516,normal +2025-07-16 10:00:00+08:00,2182.841233850443,2074.0535809105227,-144.73598062708314,253.5236335670038,0.09041527397823651,normal +2025-07-16 10:10:00+08:00,1346.6067198423295,2074.310466461582,-844.351130282501,116.64738366324855,0.005737056170186775,normal +2025-07-16 10:20:00+08:00,2250.3700689333773,2074.5472567891798,-459.1067170173399,634.9295291615376,0.3583439001609921,normal +2025-07-16 10:30:00+08:00,1222.221944755357,2074.7621973780692,-678.9984462319436,-173.54180639076867,0.209588102843346,normal +2025-07-16 10:40:00+08:00,1560.5081474278234,2074.954247106959,-590.3688556017634,75.92275592262786,0.0343451445305939,normal +2025-07-16 10:50:00+08:00,2087.262977063774,2075.124499217138,-553.0194456358622,565.1579234824985,0.3093309963960672,normal +2025-07-16 11:00:00+08:00,1622.1882959096793,2075.274561665198,-563.1364671591648,110.05020140364604,0.010371420766825377,normal +2025-07-16 11:10:00+08:00,1961.372247505124,2075.405214926121,-289.27109769630874,175.2381302753115,0.035421558387466516,normal +2025-07-16 11:20:00+08:00,1583.3340932988012,2075.51764835592,-651.385152107264,159.2015970501452,0.024156272859943855,normal +2025-07-16 11:30:00+08:00,1645.098584790794,2075.6125856839694,-298.38413400885634,-132.1298668843192,0.18049719421375898,normal +2025-07-16 11:40:00+08:00,1337.5003532322266,2075.6903156417275,-484.32350105018867,-253.8664613593121,0.2660142742867067,normal +2025-07-16 11:50:00+08:00,1174.2229998557032,2075.7523122269695,-232.25047606178563,-669.2788363094808,0.5578316483894827,normal +2025-07-16 12:00:00+08:00,998.5431779979476,2075.7992007072103,-482.0848195222363,-595.1712031870263,0.5057727878382998,normal +2025-07-16 12:10:00+08:00,1934.918024797228,2075.8297976012564,-570.4276914436919,429.5159186396636,0.2140456942285034,normal +2025-07-16 12:20:00+08:00,2415.9074482010465,2075.840222400186,-429.9029201390909,769.9701459399512,0.4532067414285954,normal +2025-07-16 12:30:00+08:00,1423.8884107103984,2075.8234258715825,-715.7398906559617,63.80487549477766,0.042857669095060384,normal +2025-07-16 12:40:00+08:00,1765.916422588517,2075.772970949978,-664.1332869779856,354.2767386165242,0.16119194872650103,normal +2025-07-16 12:50:00+08:00,1372.027027058728,2075.6856501933216,-686.8367892966471,-16.821833837946542,0.09949602658945554,normal +2025-07-16 13:00:00+08:00,1862.3879006732684,2075.558644935025,-384.46458256200765,171.29383830025108,0.032650786508090376,normal +2025-07-16 13:10:00+08:00,1675.6994741395083,2075.389709009892,-214.0198401731489,-185.670394697235,0.2181081494394331,normal +2025-07-16 13:20:00+08:00,1729.7077867758203,2075.177314426128,-474.950544960318,129.48101731001043,0.0032782681119661893,normal +2025-07-16 13:30:00+08:00,991.187613884844,2074.921161222222,-885.8622576190279,-197.87128971835,0.2266789897934127,normal +2025-07-16 13:40:00+08:00,1582.7204998422262,2074.622444040925,-349.4735683583735,-142.42837584032532,0.18773165332460306,normal +2025-07-16 13:50:00+08:00,2402.5654457510377,2074.280643944279,-162.3954766993726,490.68027850613134,0.25701221126365653,normal +2025-07-16 14:00:00+08:00,1665.5933960974917,2073.892524768226,-568.9773798835878,160.6782512128534,0.025193587504870194,normal +2025-07-16 14:10:00+08:00,1466.819014597788,2073.453709277004,-726.3676041668726,119.7329094876568,0.003569547212580182,normal +2025-07-16 14:20:00+08:00,1271.1524429876306,2072.9598934305764,-698.2556047959118,-103.55184564703404,0.16042180980683488,normal +2025-07-16 14:30:00+08:00,1135.7031805716333,2072.408037651308,-896.8757203884179,-39.829136691256736,0.11565811300935497,normal +2025-07-16 14:40:00+08:00,1519.829179504587,2071.7962447941864,-312.7961419037114,-239.17092338588782,0.2556910062257908,normal +2025-07-16 14:50:00+08:00,2346.524334543775,2071.1219227753804,-73.93692697116407,349.33933873955857,0.1577235420205999,normal +2025-07-16 15:00:00+08:00,2437.639229721492,2070.382204021475,-772.4932827686548,1139.7503084686718,0.7129685649355945,normal +2025-07-16 15:10:00+08:00,1472.966564512128,2069.572605176005,-836.6414290650521,240.03538840117517,0.08094010057730272,normal +2025-07-16 15:20:00+08:00,1536.1927371333204,2068.688776514142,-842.1280298873659,309.6319905065443,0.12983006846836714,normal +2025-07-16 15:30:00+08:00,2810.442576594509,2067.7266148295575,779.9439495175891,-37.22798775263777,0.11383086736456871,normal +2025-07-16 15:40:00+08:00,1357.5148163006593,2066.6809726118786,-178.87177687925688,-530.2943794319624,0.460198352674681,normal +2025-07-16 15:50:00+08:00,2144.417540851625,2065.5474513067775,-284.98973032129,363.8598198661375,0.16792383678450884,normal +2025-07-16 16:00:00+08:00,3081.539041627233,2064.3239010818825,-346.1363894861519,1363.3515300315025,0.87004313771515,normal +2025-07-16 16:10:00+08:00,1411.236460705623,2063.0103140910596,-466.8428257863769,-184.9310275990597,0.21758876152973639,normal +2025-07-16 16:20:00+08:00,2185.548420619788,2061.6085993661163,154.57018291782867,-30.630361664157135,0.10919619098863421,normal +2025-07-16 16:30:00+08:00,1554.883845130884,2060.120280470618,-477.28088827807215,-27.955547061661946,0.10731719695624523,normal +2025-07-16 16:40:00+08:00,997.4054922780164,2058.5467278335354,-399.56647962256363,-661.5747559329554,0.5524197140299827,normal +2025-07-16 16:50:00+08:00,1431.1367199470355,2056.888438564458,-496.9462994650486,-128.80541915237382,0.17816184826361822,normal +2025-07-16 17:00:00+08:00,1668.108303716656,2055.1464331655043,-118.34583912152654,-268.69229032732164,0.2764290686915686,normal +2025-07-16 17:10:00+08:00,1682.5251902674097,2053.32203456926,-472.5985019821615,101.80165768031156,0.01616582775772002,normal +2025-07-16 17:20:00+08:00,1420.3779269767194,2051.417450104787,-828.309763774486,197.27024064641864,0.050898595139706425,normal +2025-07-16 17:30:00+08:00,4435.297298236891,2049.4362227711968,-598.1231063112257,2983.9841817769197,2.008499267902166,mild +2025-07-16 17:40:00+08:00,962.0281641309411,2047.3815174084175,-1046.2709496304171,-39.08240364705921,0.11513355069669003,normal +2025-07-16 17:50:00+08:00,924.1620952558656,2045.2564247838734,-987.7765674063419,-133.31776212166596,0.18133166253915084,normal +2025-07-16 18:00:00+08:00,952.6281200203414,2043.064385322422,-1187.503788825549,97.06752352346848,0.019491445099923482,normal +2025-07-16 18:10:00+08:00,826.7487688685557,2040.809736498013,-1169.3039926177833,-44.75697501167406,0.11911980294779197,normal +2025-07-16 18:20:00+08:00,1870.4435600957256,2038.4990356780463,-1035.5602698287776,867.5047942464571,0.5217225263910837,normal +2025-07-16 18:30:00+08:00,897.9706136845168,2036.139185881652,-1161.6816578755459,23.51308567841056,0.07116169904487507,normal +2025-07-16 18:40:00+08:00,853.1601996484942,2033.738865433064,-1245.5781562206926,64.99949043612287,0.042018480336446444,normal +2025-07-16 18:50:00+08:00,826.8776035701535,2031.3076028855571,-1179.7461641469786,-24.68383516842505,0.1050188966862551,normal +2025-07-16 19:00:00+08:00,825.2399017682308,2028.8552117212294,-1211.5695250742046,7.954215121206062,0.08209143783889405,normal +2025-07-16 19:10:00+08:00,858.8985777562461,2026.3906987850887,-1212.565653681219,45.07353265237634,0.05601599468019511,normal +2025-07-16 19:20:00+08:00,955.308834153206,2023.9217226680103,-1215.5521312214034,146.9392427065991,0.015542258784699593,normal +2025-07-16 19:30:00+08:00,962.8652997741624,2021.4558444390227,-1209.1789869711688,150.58844230630848,0.018105735245630344,normal +2025-07-16 19:40:00+08:00,979.706189153716,2019.0015097542675,-1209.5643373041385,170.26901670358689,0.03193087356062887,normal +2025-07-16 19:50:00+08:00,986.3376541428354,2016.5671349874247,-1175.0415212637045,144.81204041911496,0.014047949459433346,normal +2025-07-16 20:00:00+08:00,975.366705363013,2014.1596333474156,-1116.4131518050444,77.62022382064174,0.033152713456094524,normal +2025-07-16 20:10:00+08:00,872.0705626145875,2011.7853450433179,-1017.2769305974581,-122.43785183127216,0.17368878273375904,normal +2025-07-16 20:20:00+08:00,949.6185770427657,2009.4509626501226,-913.2470199796586,-146.58536562769837,0.19065184038948957,normal +2025-07-16 20:30:00+08:00,1104.79171621106,2007.1658222013566,-1012.1918236037425,109.8177176134459,0.010534735134111153,normal +2025-07-16 20:40:00+08:00,1446.269306115079,2004.9412917799284,-860.3234650892169,301.6514794243674,0.12422394807227076,normal +2025-07-16 20:50:00+08:00,1510.2579170541503,2002.7897846897165,-767.9175838823603,275.3857162467941,0.10577287029635168,normal +2025-07-16 21:00:00+08:00,1186.8691569897155,2000.7249781784135,-981.4665023844954,167.6106811957975,0.030063455702746506,normal +2025-07-16 21:10:00+08:00,1185.5680865786744,1998.760562598587,-945.5184538413786,132.32597782146604,0.005276785623580175,normal +2025-07-16 21:20:00+08:00,1156.1173540618574,1996.9066489636,-746.4005959626786,-94.38869893906394,0.15398491583813909,normal +2025-07-16 21:30:00+08:00,953.1410676812754,1995.1695035649304,-985.3066211008252,-56.721814782829824,0.12752482006842533,normal +2025-07-16 21:40:00+08:00,913.6177570741808,1993.5529227728994,-902.7120212089033,-177.22314448981524,0.21217415584038812,normal +2025-07-16 21:50:00+08:00,923.5441861616614,1992.0565585703353,-370.52174000928267,-697.9906323993912,0.5780010064682763,normal +2025-07-16 22:00:00+08:00,979.61709702279,1990.6771608961483,-800.0086579491135,-211.05140592424482,0.23593770988338364,normal +2025-07-16 22:10:00+08:00,950.4337652484784,1989.4114363288124,-940.4854503886584,-98.49222069167558,0.15686754287245505,normal +2025-07-16 22:20:00+08:00,871.7697737711194,1988.2565304543255,-1146.1788925387173,29.692135855511196,0.06682106235260729,normal +2025-07-16 22:30:00+08:00,982.7929667634944,1987.207627648988,-1022.049706653041,17.63504576754758,0.0752908831402336,normal +2025-07-16 22:40:00+08:00,894.373215518347,1986.258745432407,-1132.5155179670958,40.62998805303573,0.05913747972705655,normal +2025-07-16 22:50:00+08:00,986.5714161074122,1985.4054057850014,-973.183383062392,-25.650606615197148,0.10569803077557638,normal +2025-07-16 23:00:00+08:00,999.0183693261692,1984.6442689895946,-1083.6598850810574,98.03398541763204,0.018812528463992655,normal +2025-07-16 23:10:00+08:00,1017.5594436913084,1983.9738899695913,-1096.35324475003,129.93879847174685,0.0035998485572951598,normal +2025-07-16 23:20:00+08:00,1096.0945071649803,1983.3950809781747,-955.1271586227624,67.82658480956775,0.0400325133644746,normal +2025-07-16 23:30:00+08:00,1326.7636206095358,1982.9086631079801,-1080.35087976942,424.20583727097596,0.21031548758391708,normal +2025-07-16 23:40:00+08:00,988.3904446484938,1982.5137329427082,-782.8707683873661,-211.25251990684842,0.2360789877023359,normal +2025-07-16 23:50:00+08:00,954.5034460946076,1982.2074901433039,-826.6223367310604,-201.08170731763585,0.22893423227074458,normal +2025-07-17 00:00:00+08:00,1115.1950570044437,1981.9886794173444,-532.5553944839317,-334.2382279289691,0.3224735405162504,normal +2025-07-17 00:10:00+08:00,887.1956824663904,1981.8571021429466,-479.22139529376983,-615.4400243827863,0.5200111556245625,normal +2025-07-17 00:20:00+08:00,1248.99994722993,1981.8124229316552,-373.61873575134763,-359.19373995037745,0.34000419782599284,normal +2025-07-17 00:30:00+08:00,2539.7912923850777,1981.8538230526708,-117.20065409838881,675.1381234307958,0.38658948720549546,normal +2025-07-17 00:40:00+08:00,1640.0896221324983,1981.9812857239378,133.9540867089132,-475.8457503003526,0.4219494777378468,normal +2025-07-17 00:50:00+08:00,3083.664859840296,1982.1922941591085,186.08204483697918,915.3905208442081,0.5553611174283282,normal +2025-07-17 01:00:00+08:00,9932.9264247938,1982.4846919054414,4531.842937204049,3418.59879568431,2.3138057609799425,mild +2025-07-17 01:10:00+08:00,2636.6090851388567,1982.8558241943194,1779.446731598878,-1125.6934706543407,0.8784521405271394,normal +2025-07-17 01:20:00+08:00,2119.924010537234,1983.3038493225968,2072.4171341843094,-1935.796972969672,1.447530702102201,normal +2025-07-17 01:30:00+08:00,2525.591471256545,1983.826598351885,616.2824056200816,-74.51753271542157,0.14002589127022944,normal +2025-07-17 01:40:00+08:00,2094.3217413323114,1984.4223636816275,1058.4955647615047,-948.5961871108209,0.7540454849704673,normal +2025-07-17 01:50:00+08:00,1843.864432059909,1985.087928597395,-95.39520651158323,-45.82829002590279,0.11987237642210555,normal +2025-07-17 02:00:00+08:00,2060.561409358393,1985.8154664484778,2478.8532367573825,-2404.107293847467,1.776507632845249,mild +2025-07-17 02:10:00+08:00,1704.97873974179,1986.5945115070228,-259.47091601131746,-22.144855753915408,0.10323532366262506,normal +2025-07-17 02:20:00+08:00,986.7515525204924,1987.4139312838656,-838.5897681647687,-162.07261059860457,0.201531263902182,normal +2025-07-17 02:30:00+08:00,4372.427129669117,1988.263401606315,2320.2128890512527,63.95083901154908,0.042755133174737475,normal +2025-07-17 02:40:00+08:00,4085.1609273673134,1989.130937732999,774.1630250657598,1321.8669645685545,0.840901211067817,normal +2025-07-17 02:50:00+08:00,1925.7643835349088,1990.00388105369,431.9327222920153,-496.1722198107966,0.4362283421025144,normal +2025-07-17 03:00:00+08:00,999.2616669361602,1990.872028421101,-591.8092569308708,-399.80110455407,0.3685299116045124,normal +2025-07-17 03:10:00+08:00,780.5655453653154,1991.728863366943,520.0407007098372,-1731.2040187114649,1.3038089877966963,normal +2025-07-17 03:20:00+08:00,2523.365869693429,1992.5688280911281,535.1070487860786,-4.3100071837777705,0.09070676411289443,normal +2025-07-17 03:30:00+08:00,1814.116031538154,1993.3894114612076,0.0577242880370894,-179.33110421109063,0.21365494771773844,normal +2025-07-17 03:40:00+08:00,846.6922449796443,1994.189451947527,726.1346858794395,-1873.6318928473222,1.4038612027417912,normal +2025-07-17 03:50:00+08:00,3813.005997897561,1994.9698488675494,1617.4655934754237,200.57055555458783,0.05321698835158343,normal +2025-07-17 04:00:00+08:00,4023.9878987052543,1995.7337373950775,1733.9303421285365,294.32381918164015,0.11907643995914226,normal +2025-07-17 04:10:00+08:00,871.7811744837378,1996.4868675613282,1629.4452629460673,-2754.1509560236577,2.0224050313756337,mild +2025-07-17 04:20:00+08:00,952.9520935298964,1997.2368774853085,1678.4386495899,-2722.723433545312,2.0003279397018794,mild +2025-07-17 04:30:00+08:00,1695.877521404553,1997.9921437368369,1425.3422263712541,-1727.456848703538,1.3011766894397658,normal +2025-07-17 04:40:00+08:00,2402.596598718994,1998.7628939417248,1822.8035439663786,-1418.9698391891095,1.0844718571099217,normal +2025-07-17 04:50:00+08:00,5658.290093392947,1999.558593874834,-111.67172102307303,3770.4032205411854,2.560940053673524,moderate +2025-07-17 05:00:00+08:00,4327.256223117087,2000.3879122428878,3721.7584493115246,-1394.8901384373255,1.0675564365151233,normal +2025-07-17 05:10:00+08:00,7759.709174446929,2001.2596374951002,3040.574158777051,2717.8753781747782,1.8215641235119113,mild +2025-07-17 05:20:00+08:00,3898.9603827375768,2002.1812151790584,2309.9747535794827,-413.19558602096436,0.37793921822328197,normal +2025-07-17 05:30:00+08:00,3485.8946133746235,2003.160256936196,1487.6823512719745,-4.947994833547,0.09115493535644005,normal +2025-07-17 05:40:00+08:00,4522.59206778581,2004.2048195874756,2448.1170462490536,70.27020194928105,0.03831593008476559,normal +2025-07-17 05:50:00+08:00,2358.38453148851,2005.3226494932956,621.9750181306493,-268.9131361354348,0.2765842076515308,normal +2025-07-17 06:00:00+08:00,4075.055359352005,2006.5208196768108,1828.9315828625301,239.60295681266416,0.08063632760796469,normal +2025-07-17 06:10:00+08:00,1508.5335744732297,2007.804292932815,1387.1041193366266,-1886.374837796212,1.4128128203573407,normal +2025-07-17 06:20:00+08:00,4242.223637534969,2009.1766838888234,1694.345160780267,538.7017928658788,0.2907461899940236,normal +2025-07-17 06:30:00+08:00,4047.545584362048,2010.6400435784176,2071.3755537729257,-34.470012989295356,0.11189345528488077,normal +2025-07-17 06:40:00+08:00,1989.0567440430036,2012.1944794748078,2307.4859892755,-2330.623724707304,1.7248871624903286,normal +2025-07-17 06:50:00+08:00,2767.3815741376275,2013.8386548964536,1618.9557431622302,-865.4128239210563,0.6956111385743434,normal +2025-07-17 07:00:00+08:00,2206.699444532069,2015.569685378875,688.8250129070086,-497.69525375381477,0.43729823744680757,normal +2025-07-17 07:10:00+08:00,2093.039241911203,2017.3831036416682,71.93610074320272,3.720037526332135,0.08506584751402502,normal +2025-07-17 07:20:00+08:00,2392.082956618889,2019.2733368329943,2253.8416414352187,-1881.032021649324,1.4090596183048363,normal +2025-07-17 07:30:00+08:00,4168.764318557959,2021.2336605895587,1241.7642404184382,905.7664175499624,0.5486004123536237,normal +2025-07-17 07:40:00+08:00,3788.518045108505,2023.256766807741,1960.3657253437518,-195.1044470429881,0.22473534821514615,normal +2025-07-17 07:50:00+08:00,3714.43230364358,2025.3350371204672,1676.644864302046,12.452402221066677,0.07893156772702806,normal +2025-07-17 08:00:00+08:00,2416.3451026820194,2027.4614406283824,406.161283701445,-17.27762164780802,0.09981620675221016,normal +2025-07-17 08:10:00+08:00,2561.607392917118,2029.6307218800325,292.63284983530366,239.3438212017818,0.08045429096663141,normal +2025-07-17 08:20:00+08:00,2344.888624102204,2031.8386177045352,148.7706028296627,164.2794035680065,0.027723311912215696,normal +2025-07-17 08:30:00+08:00,2048.0730466387504,2034.0795965863174,-106.86894088093794,120.86239093337076,0.002776113195055803,normal +2025-07-17 08:40:00+08:00,2430.0309269243767,2036.3459228950194,160.5195829681502,233.1654210612071,0.07611411090965789,normal +2025-07-17 08:50:00+08:00,3008.714339105286,2038.6299015431512,280.7425306732223,689.3419068889127,0.3965673093432432,normal +2025-07-17 09:00:00+08:00,2663.2158785782867,2040.9254977984012,945.841379473846,-323.55099869396054,0.314966014597773,normal +2025-07-17 09:10:00+08:00,3372.1291541588685,2043.228308050896,-60.30634276661317,1389.2071888745859,0.888206126889921,normal +2025-07-17 09:20:00+08:00,3041.584323940157,2045.5353446675533,93.22597780234763,902.823001470256,0.5465327321325546,normal +2025-07-17 09:30:00+08:00,1660.8525546553874,2047.8450433052565,-34.661503376552986,-352.3309852733162,0.3351832748835509,normal +2025-07-17 09:40:00+08:00,1809.761341828027,2050.1548880373434,-0.7534838453784198,-239.6400623639379,0.25602056526861,normal +2025-07-17 09:50:00+08:00,1976.7089403115351,2052.4619362386693,17.56652343690961,-93.3195193640438,0.15323384245939314,normal +2025-07-17 10:00:00+08:00,2038.9951136792497,2054.7622851427514,-65.61839831717897,49.85122685367742,0.05265977743640938,normal +2025-07-17 10:10:00+08:00,1065.5302590943345,2057.049475429776,-706.3957493376749,-285.1234669977666,0.2879715819110249,normal +2025-07-17 10:20:00+08:00,1507.440177285186,2059.3145333381703,-262.64519584596326,-289.22916020702087,0.2908557343423045,normal +2025-07-17 10:30:00+08:00,2206.189864401282,2061.5474905873384,-434.67907447098946,579.321448284933,0.3192805377798109,normal +2025-07-17 10:40:00+08:00,2533.8430227659114,2063.7391128018417,-413.2047589661605,883.3086689302304,0.5328243747927384,normal +2025-07-17 10:50:00+08:00,1707.8208183494703,2065.880486344962,-420.348875244593,62.28920724910131,0.043922390211077425,normal +2025-07-17 11:00:00+08:00,2087.766605985116,2067.963089855007,-390.9493033728977,410.7528195030063,0.20086506059729248,normal +2025-07-17 11:10:00+08:00,1933.5315137707685,2069.978605120757,-137.12314478059807,0.6760534306094996,0.08720417438917155,normal +2025-07-17 11:20:00+08:00,1289.7343694159483,2071.920153504701,-636.020431620951,-146.16535246780177,0.19035679107271286,normal +2025-07-17 11:30:00+08:00,5900.959261531746,2073.7831486057394,-309.8244403260646,4137.000553252071,2.8184660144675546,moderate +2025-07-17 11:40:00+08:00,2110.000936736778,2075.5655680535688,-358.09445566617524,392.5298243493844,0.18806383724746936,normal +2025-07-17 11:50:00+08:00,2147.613615996375,2077.2685458286937,-177.5009140489269,247.84598421660803,0.08642685951487929,normal +2025-07-17 12:00:00+08:00,1785.528804054814,2078.892763575017,-518.6848347762312,225.3208752560281,0.0706035029067767,normal +2025-07-17 12:10:00+08:00,1378.5575758520786,2080.437640481598,-554.944440232249,-146.93562439727043,0.19089788889588094,normal +2025-07-17 12:20:00+08:00,2010.064750933189,2081.902121470369,-367.5104832546176,295.673112717438,0.12002428677414775,normal +2025-07-17 12:30:00+08:00,1167.7481967847427,2083.2840305261834,-604.612389816948,-310.92344392449263,0.3060954558557347,normal +2025-07-17 12:40:00+08:00,1530.725452671755,2084.580068440902,-687.2071704696239,133.35255470047696,0.00599793161539981,normal +2025-07-17 12:50:00+08:00,1536.0175271934638,2085.7882623287237,-510.58158867946884,-39.18914645579116,0.11520853499669373,normal +2025-07-17 13:00:00+08:00,2127.283052989792,2086.9049721684046,-195.96324401317074,236.34132483455824,0.07834510824009032,normal +2025-07-17 13:10:00+08:00,1925.143657001537,2087.9279705451204,-225.69392065887766,62.909607115293966,0.04348657396976355,normal +2025-07-17 13:20:00+08:00,1843.833950247819,2088.8564464212136,-463.00799182774426,217.98549565434996,0.06545057212645133,normal +2025-07-17 13:30:00+08:00,1436.0971008200452,2089.69056432691,-794.8963806743432,141.30291716747797,0.01158287332197225,normal +2025-07-17 13:40:00+08:00,1112.8851291410576,2090.4309898405972,-406.98354914160933,-570.5623115579303,0.48848562316092586,normal +2025-07-17 13:50:00+08:00,1628.573080947674,2091.0790393383654,-76.25711251937742,-386.24884587131396,0.35900977022105507,normal +2025-07-17 14:00:00+08:00,1085.0493041752643,2091.636387386255,-759.5196832998548,-247.0673999111359,0.2612380943320094,normal +2025-07-17 14:10:00+08:00,1414.464658856681,2092.105050876096,-728.9036011255289,51.26320910611366,0.05166789327976841,normal +2025-07-17 14:20:00+08:00,961.4997278783152,2092.4879940069877,-629.6619633044153,-501.32630282425725,0.439848963589961,normal +2025-07-17 14:30:00+08:00,977.229539825342,2092.7874037079414,-811.8888575357576,-303.6690063468418,0.30099938493402345,normal +2025-07-17 14:40:00+08:00,1985.976831676268,2093.0050935420622,-338.00337113455987,230.97510926876566,0.07457546864890849,normal +2025-07-17 14:50:00+08:00,1951.1433366058668,2093.1441353104256,-340.81034631972403,198.80954761516523,0.05197992189992058,normal +2025-07-17 15:00:00+08:00,982.3392122732656,2093.2086666487726,-857.3480491009648,-253.5214052745423,0.26577188054341055,normal +2025-07-17 15:10:00+08:00,1493.544586761826,2093.2008179820573,-878.6561510778137,278.9999198575824,0.1083117629022822,normal +2025-07-17 15:20:00+08:00,946.4518140451128,2093.1212832420338,-758.9041784082557,-387.7652907886654,0.36007503693056525,normal +2025-07-17 15:30:00+08:00,4439.986775749436,2092.971607905471,482.55755210426787,1864.4576157396968,1.222058318042475,normal +2025-07-17 15:40:00+08:00,2239.969348641859,2092.753082901626,-229.6368380966374,376.85310383687056,0.177051311645521,normal +2025-07-17 15:50:00+08:00,1696.831137234822,2092.464130580088,-382.22461059499346,-13.408382750272267,0.09709815788572984,normal +2025-07-17 16:00:00+08:00,2019.0702352784688,2092.101626032974,-378.08965891850045,305.0582681639953,0.12661713663397497,normal +2025-07-17 16:10:00+08:00,4553.4183655529305,2091.6634053605558,-537.6412208099504,2999.3961810023247,2.019325833057263,mild +2025-07-17 16:20:00+08:00,2658.6859392669926,2091.149559702537,130.04318089540405,437.4931986690517,0.21964954488638955,normal +2025-07-17 16:30:00+08:00,1400.4004584291738,2090.5617798715207,-346.3998635166307,-343.76145792571606,0.3291633844838521,normal +2025-07-17 16:40:00+08:00,1879.1341858385567,2089.9018900197634,-401.895730834578,191.1280266533713,0.04658383499602171,normal +2025-07-17 16:50:00+08:00,1960.9276905823644,2089.1734232080125,-476.90932475076715,348.66359212511907,0.1572488459969,normal +2025-07-17 17:00:00+08:00,3449.971660187023,2088.3809161144545,-279.03319622952847,1640.6239403020973,1.0648204519105169,normal +2025-07-17 17:10:00+08:00,1568.9687174429855,2087.529211128697,-637.3745454108624,118.81405172515088,0.004215023071263004,normal +2025-07-17 17:20:00+08:00,973.5748279775828,2086.6235197955216,-958.3852854934195,-154.6634063245192,0.19632647303451942,normal +2025-07-17 17:30:00+08:00,1540.214377591221,2085.6693053476665,-773.0827766777144,227.62784892126865,0.07222409737557534,normal +2025-07-17 17:40:00+08:00,1224.4723023157678,2084.6710206400076,-1091.2357434794258,231.0370251551858,0.0746189630955834,normal +2025-07-17 17:50:00+08:00,853.5020047202736,2083.6317247233237,-1116.7422577362615,-113.38746226678859,0.16733109799306836,normal +2025-07-17 18:00:00+08:00,834.571880945806,2082.5523042998907,-1229.153443028643,-18.826980325441582,0.1009045946003204,normal +2025-07-17 18:10:00+08:00,832.2225331728255,2081.43248276583,-1261.4085665298905,12.198616936885628,0.07910984589032188,normal +2025-07-17 18:20:00+08:00,794.7729838156192,2080.2721907274886,-1100.1290443218998,-185.3701625899696,0.21789724348080813,normal +2025-07-17 18:30:00+08:00,824.8356107427088,2079.0705720734013,-1187.6571260166393,-66.57783531405312,0.13444844152016866,normal +2025-07-17 18:40:00+08:00,573.5524779062564,2077.8267556730293,-1276.203573613267,-228.07070415350586,0.24789336459619943,normal +2025-07-17 18:50:00+08:00,771.6941487761098,2076.5398192631283,-1099.7377378878614,-205.10793259915704,0.2317625603612129,normal +2025-07-17 19:00:00+08:00,739.1195279575579,2075.208484844785,-1233.4335816772211,-102.65537521000579,0.15979206051512027,normal +2025-07-17 19:10:00+08:00,743.5631052101669,2073.832159306609,-1191.1723472307212,-139.09670686572076,0.18539123462218618,normal +2025-07-17 19:20:00+08:00,710.0101243354584,2072.4094140219518,-1208.9239312414704,-153.47535844502295,0.19549189748162563,normal +2025-07-17 19:30:00+08:00,707.7551705632336,2070.9384726707367,-1219.0765689769858,-144.10673313051734,0.1889106596488341,normal +2025-07-17 19:40:00+08:00,655.6375699269878,2069.4166502940316,-1212.5718604861,-201.20721988094374,0.22902240187966827,normal +2025-07-17 19:50:00+08:00,1210.348373095455,2067.841816761114,-1165.4224953942692,307.9290517286104,0.1286337942300417,normal +2025-07-17 20:00:00+08:00,1338.442388482841,2066.2117839262633,-1029.1758998889825,301.40650444556013,0.12405185894024866,normal +2025-07-17 20:10:00+08:00,1963.3001878105144,2064.5232135420506,-910.0362512502662,808.8132255187302,0.4804930866803568,normal +2025-07-17 20:20:00+08:00,1451.2311794679322,2062.7725292456203,-858.1620205085195,246.62067073083153,0.08556610575443846,normal +2025-07-17 20:30:00+08:00,1589.578574855268,2060.9551147865463,-994.6250707134797,523.2485307822012,0.2798906386563396,normal +2025-07-17 20:40:00+08:00,1773.5717860573072,2059.0661441632687,-804.4342889926739,518.9399308867123,0.2768639490741819,normal +2025-07-17 20:50:00+08:00,1608.03913252319,2057.1036193317213,-741.1763628343145,292.1118760257832,0.11752260217690429,normal +2025-07-17 21:00:00+08:00,1179.033457886184,2055.0677772118843,-785.9563313096515,-90.07798801604895,0.15095674330904366,normal +2025-07-17 21:10:00+08:00,1334.9762733902162,2052.9616079804737,-982.190185578381,264.2048509881233,0.0979185767395609,normal +2025-07-17 21:20:00+08:00,977.6450851869454,2050.788270778169,-827.6525556414061,-245.4906299498175,0.2601304507050441,normal +2025-07-17 21:30:00+08:00,947.7514533553804,2048.550488713115,-1003.1866932091334,-97.61234214860133,0.15624944899405263,normal +2025-07-17 21:40:00+08:00,1149.2930162101916,2046.2513912490717,-959.2042495787952,62.245874539914894,0.04395283041500504,normal +2025-07-17 21:50:00+08:00,1824.127461104548,2043.8939829303458,-438.3696146430474,218.6030928172495,0.06588441953495063,normal +2025-07-17 22:00:00+08:00,1110.625141005668,2041.4790346415284,-816.9369648632432,-113.91692877261721,0.16770303569816156,normal +2025-07-17 22:10:00+08:00,890.3317276820223,2039.0052624118662,-975.3694549172703,-173.3040798125735,0.20942110554142,normal +2025-07-17 22:20:00+08:00,962.9122883878692,2036.4707080809505,-1161.1193928795606,87.56097318647949,0.02616957200081027,normal +2025-07-17 22:30:00+08:00,932.4426012485684,2033.874769131514,-1068.7510188214922,-32.681149061453425,0.11063682065979859,normal +2025-07-17 22:40:00+08:00,852.7811760934117,2031.2152427700344,-1151.5309973986168,-26.903069278005887,0.10657785619114436,normal +2025-07-17 22:50:00+08:00,806.2949839576075,2028.4893130571636,-1027.752215318493,-194.4421137810632,0.22427007475452995,normal +2025-07-17 23:00:00+08:00,982.9108657478334,2025.6956405990506,-1079.3330473862172,36.548272535000024,0.062004788397027236,normal +2025-07-17 23:10:00+08:00,875.799334441582,2022.8365116846537,-1150.0445424296597,3.007365186588004,0.0855664829869205,normal +2025-07-17 23:20:00+08:00,977.6912316019416,2019.9157378633802,-1000.0967569918975,-42.12774926954103,0.11727283401220183,normal +2025-07-17 23:30:00+08:00,852.2620162928647,2016.9371059913537,-1041.0701417185703,-123.60494797991873,0.17450864019097698,normal +2025-07-17 23:40:00+08:00,917.7907782227472,2013.9041380299323,-876.5705027900536,-219.54285701713138,0.2419027535596717,normal +2025-07-17 23:50:00+08:00,993.4678935658828,2010.8232567848004,-746.6415144611148,-270.7138487578027,0.27784916570444423,normal +2025-07-18 00:00:00+08:00,2148.035887338302,2007.704894244377,-564.6340839701396,704.9650770640646,0.4075422170989896,normal +2025-07-18 00:10:00+08:00,1984.9759753565888,2004.5618154632161,-329.27981869708293,309.6939785904556,0.129873613632073,normal +2025-07-18 00:20:00+08:00,1822.891122399507,2001.4057460580316,-341.73048800694244,163.21586434841765,0.026976200749836473,normal +2025-07-18 00:30:00+08:00,1920.837497766348,1998.247315456754,23.070578487974565,-100.48039617838072,0.1582641891564166,normal +2025-07-18 00:40:00+08:00,1352.4000225929076,1995.0958173244655,44.775026630260506,-687.4708213618185,0.5706110878761542,normal +2025-07-18 00:50:00+08:00,1024.4026342465088,1991.9596001362643,213.4690870328178,-1181.0260529225734,0.9173219716480309,normal +2025-07-18 01:00:00+08:00,2291.796181021234,1988.847031190799,2335.587458337843,-2032.638308507408,1.515559451232792,normal +2025-07-18 01:10:00+08:00,4535.772607618563,1985.7662375406032,1404.7864486473923,1145.2199214305672,0.7168108387534852,normal +2025-07-18 01:20:00+08:00,4837.360066485388,1982.7264033771958,2943.0425943017062,-88.40893119351358,0.14978427034350184,normal +2025-07-18 01:30:00+08:00,3834.611418365843,1979.7364545676319,859.0180686057952,995.8568951924158,0.6118868433860147,normal +2025-07-18 01:40:00+08:00,8312.530339648587,1976.8033489969573,1659.2996907397849,4676.427299911845,3.1974005533096905,moderate +2025-07-18 01:50:00+08:00,2416.1362672814903,1973.9338570067218,484.79856632539617,-42.59615605062777,0.11760187870396159,normal +2025-07-18 02:00:00+08:00,2150.4585344169277,1971.1358733483044,2621.8901780697724,-2442.567517001149,1.803525030508139,mild +2025-07-18 02:10:00+08:00,1011.7960567667396,1968.416808456118,-353.04196806936625,-603.578783620012,0.5116789143584981,normal +2025-07-18 02:20:00+08:00,1209.9100122138404,1965.7825983251696,-755.0594256388717,-0.8131604724574117,0.08825031195481933,normal +2025-07-18 02:30:00+08:00,3568.234644892499,1963.2375465177352,2791.375095195536,-1186.3779968207718,0.921081585730074,normal +2025-07-18 02:40:00+08:00,3200.031223717012,1960.7840535092732,885.3366794465817,353.9104907611568,0.16093466826528002,normal +2025-07-18 02:50:00+08:00,3141.8289412900854,1958.420851921582,1225.413111089741,-42.005021721237654,0.11718662081048808,normal +2025-07-18 03:00:00+08:00,3206.886356646924,1956.1436626316731,-98.1571361971739,1348.8998302124246,0.8598911601939441,normal +2025-07-18 03:10:00+08:00,2902.573404402226,1953.9470774751878,428.03335039175084,520.5929765352873,0.2780251745684803,normal +2025-07-18 03:20:00+08:00,1127.2191458378038,1951.8269385752312,890.7908427509273,-1715.3986354883546,1.2927060796818155,normal +2025-07-18 03:30:00+08:00,1822.749257393737,1949.779915449275,271.55742995561195,-398.5880880111499,0.3676777961557595,normal +2025-07-18 03:40:00+08:00,2663.225112127161,1947.800032537449,929.4072286805767,-213.9821490908646,0.23799648768256507,normal +2025-07-18 03:50:00+08:00,739.6451273634689,1945.8797242196529,1828.2603860695676,-3034.4949829257516,2.2193400836493664,mild +2025-07-18 04:00:00+08:00,4249.687842932712,1944.0111094765207,1878.6185668401563,427.05816661603467,0.2123191815269566,normal +2025-07-18 04:10:00+08:00,3955.3951548727728,1942.1876993327494,1297.3120770730732,715.8953784669504,0.41522049546978834,normal +2025-07-18 04:20:00+08:00,3643.9352822001742,1940.4061790586816,1773.2592801741775,-69.73017703268488,0.13666288706410823,normal +2025-07-18 04:30:00+08:00,3491.2919034522897,1938.6653278041717,813.6232248309868,739.0033508171314,0.43145329983166675,normal +2025-07-18 04:40:00+08:00,3400.6985917015345,1936.9665180604438,1284.387183809836,179.34488983125493,0.03830645990208955,normal +2025-07-18 04:50:00+08:00,1584.2564353652588,1935.3112030652928,-418.17324859396876,67.1184808939347,0.04052993962741806,normal +2025-07-18 05:00:00+08:00,4623.994805605727,1933.7013587687516,2690.3089203610366,-0.015473524060780619,0.08768995572887617,normal +2025-07-18 05:10:00+08:00,3388.6680047943464,1932.1402130570943,2583.7779814524724,-1127.2501897152204,0.8795456988704992,normal +2025-07-18 05:20:00+08:00,4564.989875403319,1930.6325513230113,2512.8131231625302,121.54420091777774,0.0022971577972765063,normal +2025-07-18 05:30:00+08:00,2432.5673904415507,1929.183869900708,502.86328575216135,0.5202347886813641,0.08731363330196679,normal +2025-07-18 05:40:00+08:00,3456.816693631036,1927.797868677932,2000.329937765158,-471.31111281205426,0.41876400208969844,normal +2025-07-18 05:50:00+08:00,3817.7455982944366,1926.4783650279496,423.923579371554,1467.3436538949331,0.9430951466179595,normal +2025-07-18 06:00:00+08:00,2305.9154394036486,1925.2318105047752,1657.1211754789572,-1276.4375465800838,0.9843462906556152,normal +2025-07-18 06:10:00+08:00,3431.004916453707,1924.0642296502688,1784.2829117401734,-277.34222493673497,0.2825054432920665,normal +2025-07-18 06:20:00+08:00,2790.1843716191524,1922.9814163163205,1610.2935649417775,-743.0906096389456,0.6096826744294691,normal +2025-07-18 06:30:00+08:00,3974.732898899512,1921.9902884513083,2011.7268435812666,41.01576686693693,0.05886647922912811,normal +2025-07-18 06:40:00+08:00,3757.506619802596,1921.099853491113,2538.4519808636283,-702.0452145521451,0.5808492545905009,normal +2025-07-18 06:50:00+08:00,4389.941588814598,1920.3210488650045,1623.720101392191,845.9004385574019,0.5065459771919446,normal +2025-07-18 07:00:00+08:00,2664.318971312314,1919.6655143475457,769.733344876636,-25.0798879118679,0.10529711437683678,normal +2025-07-18 07:10:00+08:00,3144.2750775164645,1919.1442602146199,-198.25938791735507,1423.3902052191997,0.9122188878718105,normal +2025-07-18 07:20:00+08:00,3713.660438832946,1918.7673467686545,2292.7126667971447,-497.8195747328532,0.437385569995948,normal +2025-07-18 07:30:00+08:00,2736.8704888174434,1918.543256837118,932.3597262890739,-114.03249430874848,0.16778421775561628,normal +2025-07-18 07:40:00+08:00,7059.658186013385,1918.4783119765734,2815.7578419820884,2325.422032054723,1.5458749244688148,normal +2025-07-18 07:50:00+08:00,3721.280883714899,1918.5759727348438,2051.2741857035003,-248.569274723445,0.2622931258871279,normal +2025-07-18 08:00:00+08:00,2252.4360979717726,1918.8370670526058,276.65980597301956,56.939224946147306,0.04768062631882852,normal +2025-07-18 08:10:00+08:00,2154.3828318518795,1919.2618879053907,636.9952251997037,-401.87428125321503,0.3699862692309989,normal +2025-07-18 08:20:00+08:00,1875.2961580687856,1919.849859218413,294.00930762484273,-338.56300877447006,0.32551159683331476,normal +2025-07-18 08:30:00+08:00,2481.749066498979,1920.5995883272458,-16.742938421922283,577.8924165936555,0.3182766767953897,normal +2025-07-18 08:40:00+08:00,2167.759805907573,1921.510511362982,237.4785243465325,8.770770198058472,0.08151782719870562,normal +2025-07-18 08:50:00+08:00,2433.0480699926284,1922.5828432697458,314.87923379547055,195.585992927412,0.04971545092846798,normal +2025-07-18 09:00:00+08:00,5863.2744465064125,1923.816855799824,638.337471773226,3301.1201189333624,2.231279767461712,mild +2025-07-18 09:10:00+08:00,1652.6190993630448,1925.2119340978193,-100.97136007024062,-171.6214746645337,0.20823911519745952,normal +2025-07-18 09:20:00+08:00,1854.4884213565124,1926.7653944887666,162.21360245858716,-234.49057559084122,0.25240317253137556,normal +2025-07-18 09:30:00+08:00,1879.1669646840385,1928.4745226405144,-87.2749804277444,37.96742247126849,0.061007869111920084,normal +2025-07-18 09:40:00+08:00,958.619128362974,1930.3345623379385,-177.0856708922395,-794.6297630827248,0.6458877114682618,normal +2025-07-18 09:50:00+08:00,1745.4132870995545,1932.3386988260738,94.96084429877921,-281.8862560252985,0.2856975177223602,normal +2025-07-18 10:00:00+08:00,1556.811119754997,1934.4812334407288,13.425279247064449,-391.09539293279636,0.36241435497161034,normal +2025-07-18 10:10:00+08:00,1688.4749527521149,1936.7585884341665,-568.3869351830741,320.1032995010223,0.1371859155216811,normal +2025-07-18 10:20:00+08:00,974.665004273866,1939.1672401486765,-66.01368883343878,-898.4885470413717,0.7188460522397795,normal +2025-07-18 10:30:00+08:00,1366.1788258787512,1941.7014288207781,-190.31991809164882,-385.2026848503781,0.3582748668324528,normal +2025-07-18 10:40:00+08:00,1511.1054605465142,1944.3545877957888,-236.09738277977874,-197.15174446949572,0.22617352626432555,normal +2025-07-18 10:50:00+08:00,2123.4928145614085,1947.1192728269684,-287.846117652569,464.21965938700896,0.23842425179470167,normal +2025-07-18 11:00:00+08:00,3882.049097602594,1949.9867146564081,-218.82727703313793,2150.8896599793234,1.4232700585904658,normal +2025-07-18 11:10:00+08:00,1887.50995665076,1952.9457427293219,15.187316325439932,-80.62310240400188,0.14431490965620491,normal +2025-07-18 11:20:00+08:00,2779.63971798536,1955.9847189510317,-620.491595422843,1444.1465944571717,0.9267997606828496,normal +2025-07-18 11:30:00+08:00,1922.0230945238527,1959.092413070549,-321.3192940087092,284.249975462013,0.11199980286633546,normal +2025-07-18 11:40:00+08:00,2052.825237371204,1962.2570050397187,-231.96965486934795,322.537887200833,0.13889615583329168,normal +2025-07-18 11:50:00+08:00,2054.253076529385,1965.4655084778583,-122.9181125086913,211.70568056021784,0.06103915046179717,normal +2025-07-18 12:00:00+08:00,1175.5116007364936,1968.704274019468,-555.227936055395,-237.96473722757923,0.2548436889607744,normal +2025-07-18 12:10:00+08:00,1479.9712482937798,1971.959410620008,-539.5873708798359,47.599208553607696,0.0542417670601816,normal +2025-07-18 12:20:00+08:00,1411.1383318140029,1975.2200485744474,-305.25960111305073,-258.82211564739373,0.26949550428492863,normal +2025-07-18 12:30:00+08:00,1450.4712608529742,1978.47969886944,-493.4096383353341,-34.598799681131595,0.1119839248917035,normal +2025-07-18 12:40:00+08:00,1211.3104984975716,1981.7361108283071,-710.5105448342443,-59.91506749649125,0.1297680046193406,normal +2025-07-18 12:50:00+08:00,1567.7981422356745,1984.9904436227228,-334.38486475509967,-82.80743663194858,0.1458493528191913,normal +2025-07-18 13:00:00+08:00,2064.745830984664,1988.2454563041229,-7.598508186530677,84.09888286707155,0.028601608615120223,normal +2025-07-18 13:10:00+08:00,1733.079983963927,1991.5040635522093,-237.31611512280287,-21.107964465479654,0.10250693204199107,normal +2025-07-18 13:20:00+08:00,985.844579607302,1994.7684405047385,-451.08233641021224,-557.8415244872242,0.4795495709310439,normal +2025-07-18 13:30:00+08:00,1122.6949632004412,1998.0409192048944,-703.8363235323666,-171.50963247208665,0.2081605487009325,normal +2025-07-18 13:40:00+08:00,2083.524123416728,2001.325387385846,-464.3520641921656,546.5508002230474,0.29625993213171764,normal +2025-07-18 13:50:00+08:00,2061.9675080949137,2004.6260877381922,9.971290700934253,47.370129655787196,0.054402689571053736,normal +2025-07-18 14:00:00+08:00,1034.907785449099,2007.9467723836456,-949.9665384089002,-23.07244852564645,0.10388693565881496,normal +2025-07-18 14:10:00+08:00,3818.122177610674,2011.2912572874725,-731.4382352448176,2538.269155568019,1.6953949975682983,normal +2025-07-18 14:20:00+08:00,1480.87487801591,2014.6608216211498,-561.015660451327,27.229716846087285,0.06855085350135928,normal +2025-07-18 14:30:00+08:00,999.974751121228,2018.0530881885059,-726.8794715728283,-291.1988654944496,0.2922394057478633,normal +2025-07-18 14:40:00+08:00,1149.2918432858269,2021.4635192042397,-363.18172754882517,-508.98994836958764,0.445232493436324,normal +2025-07-18 14:50:00+08:00,945.7682391529884,2024.8868703693117,-607.5917319503135,-471.5268992660099,0.4189155869729553,normal +2025-07-18 15:00:00+08:00,1349.1526605429235,2028.3182784071994,-942.3195499327528,263.15393206847716,0.09718033103957939,normal +2025-07-18 15:10:00+08:00,1156.4816680395354,2031.753554660124,-920.7709277594353,45.49904113884645,0.05571708502639616,normal +2025-07-18 15:20:00+08:00,1057.9184714861954,2035.186280888576,-675.7055645023631,-301.5622449000175,0.2995194348161509,normal +2025-07-18 15:30:00+08:00,895.6440504369878,2038.6102190524675,185.1066398345168,-1328.0728084499965,1.020618841592006,normal +2025-07-18 15:40:00+08:00,969.1272100839606,2042.0197344978483,-280.2970635960889,-792.5954608177988,0.6444586622129206,normal +2025-07-18 15:50:00+08:00,1533.770234605704,2045.408809439863,-479.4938809241094,-32.14469391004968,0.1102599735963828,normal +2025-07-18 16:00:00+08:00,1926.824173448536,2048.770355463645,-410.26120113125864,288.3150191161494,0.11485539994599765,normal +2025-07-18 16:10:00+08:00,1570.280935748218,2052.0964366525563,-608.3409164608094,126.52541555647122,0.00120202774306809,normal +2025-07-18 16:20:00+08:00,2309.4565133111246,2055.3789172284373,105.43503860939057,148.64255747329662,0.016738797146244027,normal +2025-07-18 16:30:00+08:00,2452.296310729647,2058.6094361291457,-215.5451162826765,609.2319908831778,0.3402919869453685,normal +2025-07-18 16:40:00+08:00,1729.4101134260168,2061.7783657289506,-404.1998088670247,71.83155656409099,0.037219115374342616,normal +2025-07-18 16:50:00+08:00,1546.209325161162,2064.876998599641,-457.0176251993165,-61.650048239162516,0.13098678758050286,normal +2025-07-18 17:00:00+08:00,2151.9528744379163,2067.898827366813,-439.8080747972152,523.8621218683188,0.2803216718905931,normal +2025-07-18 17:10:00+08:00,1429.1269798997355,2070.8391463208645,-802.2171267227903,160.5049603016614,0.025071854735917432,normal +2025-07-18 17:20:00+08:00,2001.517333066166,2073.6948134955837,-1088.5883361004885,1016.4108556710707,0.6263255147785384,normal +2025-07-18 17:30:00+08:00,4635.908440221926,2076.4633182177263,-948.1040733358387,3507.5491953400383,2.376291314175224,moderate +2025-07-18 17:40:00+08:00,1652.6172503531477,2079.144581904562,-1136.2921125360133,709.7647809845989,0.41091389565028247,normal +2025-07-18 17:50:00+08:00,2241.6784400444863,2081.7404621225287,-1245.629978518107,1405.5679564400643,0.8996991793774317,normal +2025-07-18 18:00:00+08:00,1974.0851262493616,2084.2531133380385,-1270.827185326865,1160.6591982381883,0.727656565765316,normal +2025-07-18 18:10:00+08:00,1875.9483001548388,2086.685439302132,-1353.4599197533287,1142.7227806060355,0.715056656350356,normal +2025-07-18 18:20:00+08:00,1595.0604457386826,2089.0404520486945,-1164.7459122538041,670.765905943792,0.3835181077690578,normal +2025-07-18 18:30:00+08:00,1188.3437154651112,2091.320985562119,-1213.6370576507984,310.6597875537909,0.13055207159953064,normal +2025-07-18 18:40:00+08:00,1138.467554221481,2093.528031399694,-1306.8406077705704,351.7801305923572,0.159438140603034,normal +2025-07-18 18:50:00+08:00,1436.9630919032038,2095.662452278844,-1019.6903841714463,360.9910237958061,0.16590857535619705,normal +2025-07-18 19:00:00+08:00,1049.593773784406,2097.7242640113486,-1255.2881330081098,207.1576427811674,0.05784426142614451,normal +2025-07-18 19:10:00+08:00,1138.2917007595372,2099.714580678201,-1169.7668624768212,208.34398255815722,0.05867763707740279,normal +2025-07-18 19:20:00+08:00,1735.3508626395794,2101.6357418199873,-1202.2857295392405,836.0008503588328,0.49959175048372056,normal +2025-07-18 19:30:00+08:00,1779.0765407974206,2103.4904115615045,-1228.9989321246555,904.5850613605717,0.5477705375548544,normal +2025-07-18 19:40:00+08:00,1111.7305862788794,2105.279770931507,-1215.6187248439364,222.069540191309,0.06831951687716352,normal +2025-07-18 19:50:00+08:00,979.8597630839738,2107.004047112775,-1155.8710817084718,28.726797679670653,0.06749918960297807,normal +2025-07-18 20:00:00+08:00,934.3371311402728,2108.6635082311045,-941.9133947415297,-232.41298234930196,0.25094371238825297,normal +2025-07-18 20:10:00+08:00,983.8099393423212,2110.25773592842,-802.8178722371315,-323.6299243489675,0.3150214580048122,normal +2025-07-18 20:20:00+08:00,1346.703929715326,2111.7859394499815,-803.2239950883602,38.14198535370497,0.060885242813234264,normal +2025-07-18 20:30:00+08:00,1106.987939618792,2113.244264647071,-977.1940167360849,-29.062308292193848,0.10809467055965272,normal +2025-07-18 20:40:00+08:00,984.4180258489222,2114.6256561035707,-748.6450557110988,-381.56257454354954,0.3557177753849229,normal +2025-07-18 20:50:00+08:00,947.030499291388,2115.9238698039385,-714.4296283335642,-454.4637421789862,0.40692912244927393,normal +2025-07-18 21:00:00+08:00,988.2513814153511,2117.1326748639854,-590.4276878780985,-538.4536055705357,0.46593001617352314,normal +2025-07-18 21:10:00+08:00,986.1854986998604,2118.2477016042258,-1018.9360334065589,-113.12616949780659,0.16714754599915985,normal +2025-07-18 21:20:00+08:00,1190.5825872478977,2119.2672950931174,-908.8728832134731,-19.81182463174673,0.10159642444626689,normal +2025-07-18 21:30:00+08:00,972.4099826587028,2120.191859712042,-1021.0581476773374,-126.72372937600176,0.17669951040160733,normal +2025-07-18 21:40:00+08:00,1761.5568744600218,2121.023657174323,-1015.6750827116509,656.2082999973495,0.37329173369673174,normal +2025-07-18 21:50:00+08:00,1960.11716750452,2121.766158521913,-506.3247791265705,344.6757881091776,0.1544475079373197,normal +2025-07-18 22:00:00+08:00,1766.2819894376066,2122.422479339787,-833.8485571926958,477.7080672905154,0.2478995395150074,normal +2025-07-18 22:10:00+08:00,1134.0546638602696,2122.9926342548124,-1010.2344182590238,21.296447864480797,0.07271883471343935,normal +2025-07-18 22:20:00+08:00,961.560996588286,2123.4751259748723,-1176.0925171134313,14.178387726844903,0.07771910370715847,normal +2025-07-18 22:30:00+08:00,952.9163036533114,2123.8690352592625,-1115.4895887149737,-55.46314289097745,0.1266406328162247,normal +2025-07-18 22:40:00+08:00,905.4960793559734,2124.1727103088365,-1170.4921008865338,-48.184530066329444,0.12152757935493971,normal +2025-07-18 22:50:00+08:00,934.5832583318748,2124.3829289922064,-1082.241049520717,-107.55862113961439,0.16323647488031617,normal +2025-07-18 23:00:00+08:00,997.7848009660952,2124.495608461493,-1074.999029663629,-51.71177783176836,0.12400538753492892,normal +2025-07-18 23:10:00+08:00,958.7251777797268,2124.507295626231,-1203.7403162878338,37.95819844132939,0.06101434877491953,normal +2025-07-18 23:20:00+08:00,872.7782401081553,2124.414327593475,-1044.9366734283271,-206.69941405699228,0.23288053846673865,normal +2025-07-18 23:30:00+08:00,873.7281371639568,2124.2113337106402,-1001.7525220301269,-248.73067451655652,0.26240650542670513,normal +2025-07-18 23:40:00+08:00,1199.2072763305034,2123.89388882523,-970.0444402880263,45.35782779329975,0.05581628406371576,normal +2025-07-18 23:50:00+08:00,1396.6999931794098,2123.4620039423976,-666.5317823112515,-60.230228451736366,0.12998939774079105,normal +2025-07-19 00:00:00+08:00,1581.0893438264643,2122.919230861419,-596.5377523436393,54.707865308685086,0.0492481037204376,normal +2025-07-19 00:10:00+08:00,892.987700493763,2122.2726921171893,-179.20203840121854,-1050.0829532222078,0.825337539272798,normal +2025-07-19 00:20:00+08:00,1791.4820538686768,2121.531611244192,-309.8035277053376,-20.24602967017745,0.10190144322225363,normal +2025-07-19 00:30:00+08:00,2470.710226175154,2120.707978962679,163.07616554280415,186.92608166967057,0.04363206796834235,normal +2025-07-19 00:40:00+08:00,2910.8337791667795,2119.814884204808,-44.41578433727477,835.434679299246,0.4991940286972152,normal +2025-07-19 00:50:00+08:00,2473.773876624322,2118.8664437740954,240.82142505090908,114.08600779931749,0.007536362170139843,normal +2025-07-19 01:00:00+08:00,2258.377913008815,2117.8774800953165,139.32994921656783,1.1704836969306598,0.0868568488141641,normal +2025-07-19 01:10:00+08:00,3298.326739548197,2116.8631085640995,1030.0949581049708,151.36867287912673,0.01865382878035434,normal +2025-07-19 01:20:00+08:00,8972.419032320904,2115.837483147695,3813.6071672542625,3042.974381918947,2.049938489122546,mild +2025-07-19 01:30:00+08:00,3285.494909383525,2114.812268280719,1101.9141078753216,68.76853322748411,0.03937081686617074,normal +2025-07-19 01:40:00+08:00,2408.46606166069,2113.7972066287352,2260.37619800086,-1965.7073429689053,1.4685420300210328,normal +2025-07-19 01:50:00+08:00,4508.11098922259,2112.7987317557518,1065.007572469316,1330.3046849975226,0.8468285102227595,normal +2025-07-19 02:00:00+08:00,4782.834984668839,2111.82341154522,2764.9818483919425,-93.9702752683238,0.1536909830999233,normal +2025-07-19 02:10:00+08:00,1636.4236063092687,2110.876768365713,-446.6750913044226,-27.77807075202145,0.10719252404381464,normal +2025-07-19 02:20:00+08:00,1110.3255985236804,2109.9648230744538,-671.6008009417183,-328.03842360905514,0.3181183245292318,normal +2025-07-19 02:30:00+08:00,2142.1139353782646,2109.094018261525,3262.667841828377,-3229.647924711637,2.3564304123311266,moderate +2025-07-19 02:40:00+08:00,2645.4142609407204,2108.2716770196535,996.491473724747,-459.3488898036801,0.4103608231830655,normal +2025-07-19 02:50:00+08:00,4406.022735724315,2107.505547501062,2019.1240283148977,279.39315990835485,0.10858800474274787,normal +2025-07-19 03:00:00+08:00,2191.764679768165,2106.8013704612,395.52441612559096,-310.56110681862583,0.30584092260359763,normal +2025-07-19 03:10:00+08:00,2251.211223170313,2106.1613377196127,335.97288364039906,-190.92299818969855,0.22179797923460387,normal +2025-07-19 03:20:00+08:00,4538.512808352364,2105.587449969933,1246.5666144277752,1186.358743954656,0.7457098891587596,normal +2025-07-19 03:30:00+08:00,3086.9294996406807,2105.0825602348823,542.9051837984937,438.9417556073049,0.2206671218952837,normal +2025-07-19 03:40:00+08:00,3331.1237405623915,2104.6498953976547,1132.6294808787202,93.84436428601657,0.021755638276886858,normal +2025-07-19 03:50:00+08:00,2125.85047651484,2104.2922102092803,2038.9601826372623,-2017.4019163317025,1.5048562458792012,normal +2025-07-19 04:00:00+08:00,3967.996561374478,2104.0095240368287,2023.127754772942,-159.14071743529257,0.1994716782575073,normal +2025-07-19 04:10:00+08:00,2893.489743699753,2103.7992881873874,965.225332390831,-175.5348768784654,0.2109881877497987,normal +2025-07-19 04:20:00+08:00,3489.445087028763,2103.6584092025073,1868.1597951733902,-482.37311734713467,0.42653479879773437,normal +2025-07-19 04:30:00+08:00,2229.3405574030567,2103.5822475431473,201.92924948742635,-76.1709396275171,0.14118737054361166,normal +2025-07-19 04:40:00+08:00,2903.3603434399965,2103.56597996176,745.8821450688008,53.912218409435354,0.04980702686007668,normal +2025-07-19 04:50:00+08:00,1315.612909334515,2103.6058050255774,-724.7022792098206,-63.290616481241614,0.13213924799167226,normal +2025-07-19 05:00:00+08:00,2395.3509264040117,2103.6980273250206,1658.857396923179,-1367.204497844188,1.0481079284170873,normal +2025-07-19 05:10:00+08:00,4174.664695047312,2103.8397053747753,2126.843806559251,-56.01881688671392,0.12703098066349927,normal +2025-07-19 05:20:00+08:00,2361.6010585923605,2104.029754274856,2715.582834744005,-2458.0115304265005,1.8143740848819636,mild +2025-07-19 05:30:00+08:00,3380.8375451299357,2104.266951125476,-482.0551014731015,1758.6256954775608,1.1477138956577166,normal +2025-07-19 05:40:00+08:00,3997.550719775918,2104.5490624083563,1552.6205551084447,340.3811022591167,0.15143059264318226,normal +2025-07-19 05:50:00+08:00,2541.439850669733,2104.8719609876166,226.09789139944618,210.46999828267008,0.06017111287022907,normal +2025-07-19 06:00:00+08:00,3478.68014157751,2105.2306535048792,1485.2197047415364,-111.77021666890573,0.1661950211881584,normal +2025-07-19 06:10:00+08:00,4571.984115571595,2105.619333355203,2181.4960510300366,284.8687311863555,0.11243446413686295,normal +2025-07-19 06:20:00+08:00,3504.647952502496,2106.0312788304327,1526.1903300593672,-127.5736563873038,0.17729656403691835,normal +2025-07-19 06:30:00+08:00,2539.667843967536,2106.458537663226,1952.1176615776449,-1518.9083552733346,1.1546763023648927,normal +2025-07-19 06:40:00+08:00,2721.9973776981,2106.892961634771,2769.3888988245126,-2154.2844827611834,1.6010130132376401,normal +2025-07-19 06:50:00+08:00,2302.963637022847,2107.3263460511566,1628.4581577045578,-1432.8208667328677,1.0942018765560915,normal +2025-07-19 07:00:00+08:00,3266.718876648647,2107.7513329556755,850.8823196711875,308.08522402178414,0.12874350157447756,normal +2025-07-19 07:10:00+08:00,1747.656810040837,2108.1610858270524,-468.2855706086573,107.78129482244185,0.011965274008898241,normal +2025-07-19 07:20:00+08:00,2268.103604633445,2108.549447954375,2331.383284745618,-2171.829128066548,1.6133377118535401,normal +2025-07-19 07:30:00+08:00,2802.1284880579237,2108.9112330231587,623.0265533678437,70.19070166692154,0.038371777153937185,normal +2025-07-19 07:40:00+08:00,2291.74468175575,2109.2427449518364,3671.3990820918916,-3488.8971452879778,2.5385468617889795,moderate +2025-07-19 07:50:00+08:00,1990.1303686865135,2109.542578220209,2426.1315839064437,-2545.5437934401393,1.8758634306073474,mild +2025-07-19 08:00:00+08:00,3554.35427442079,2109.8121936249026,147.1866578341472,1297.3554229617398,0.8236824324799868,normal +2025-07-19 08:10:00+08:00,2842.191084897661,2110.0544562148625,981.2236322983308,-249.08700361553247,0.26265681819601544,normal +2025-07-19 08:20:00+08:00,2081.378138287003,2110.27214249349,439.2253766247831,-468.11938083127006,0.4165218858176831,normal +2025-07-19 08:30:00+08:00,2140.272745722127,2110.4693740597336,73.30993278586985,-43.50656112347633,0.11824141674796035,normal +2025-07-19 08:40:00+08:00,1931.4149091961597,2110.6534211610256,314.3358566910697,-493.5743686559356,0.43440341307286684,normal +2025-07-19 08:50:00+08:00,2403.3603128750747,2110.8332727267943,348.84699662458286,-56.31995647630265,0.12724252410700576,normal +2025-07-19 09:00:00+08:00,2444.6190767292755,2111.01713987757,330.94908939325785,2.652847458447468,0.08581552331103522,normal +2025-07-19 09:10:00+08:00,2170.0472886928574,2111.2108049455705,-141.57823504833388,200.4147187956205,0.053107516711996414,normal +2025-07-19 09:20:00+08:00,2923.5117555894467,2111.4175221908054,231.23311434215134,580.8611190564898,0.32036212010289983,normal +2025-07-19 09:30:00+08:00,2020.4495396468108,2111.6384208517275,-139.73707728122008,48.54819607630361,0.05357512575715677,normal +2025-07-19 09:40:00+08:00,1966.5161615208835,2111.8735530323925,-353.3048640774406,207.94747256593155,0.05839909818035937,normal +2025-07-19 09:50:00+08:00,1844.7581184700025,2112.1218016732737,172.26772448194575,-439.631407685217,0.3965097580663401,normal +2025-07-19 10:00:00+08:00,2312.0091803635214,2112.382433784533,92.32105497689099,107.30569160209734,0.012299374029130925,normal +2025-07-19 10:10:00+08:00,1623.918988617825,2112.656897003186,-430.26905724081183,-58.46885114454881,0.1287520718170042,normal +2025-07-19 10:20:00+08:00,2108.77320504029,2112.9484007884453,130.7387072210394,-134.91390296919462,0.1824529137558,normal +2025-07-19 10:30:00+08:00,2129.421363079902,2113.261574860252,54.040518135061895,-37.88072991541185,0.1142894033047408,normal +2025-07-19 10:40:00+08:00,2068.81527467214,2113.6012547105997,-59.08280852383493,14.296828485375045,0.07763590187393153,normal +2025-07-19 10:50:00+08:00,1758.261926290303,2113.9717867982,-155.5230385200013,-200.18682198789543,0.22830559647943174,normal +2025-07-19 11:00:00+08:00,1777.4613698646322,2114.377140488365,-46.82263373922916,-290.0931368845038,0.291462657536009,normal +2025-07-19 11:10:00+08:00,1663.0465032415618,2114.821311247448,167.6005372857721,-619.3753452916585,0.5227756255419947,normal +2025-07-19 11:20:00+08:00,1157.4017265839848,2115.3079756169745,-604.839312331213,-353.06693670177674,0.3357002633660108,normal +2025-07-19 11:30:00+08:00,2111.780705135152,2115.841016005909,-332.77232547522914,328.7120146044722,0.14323333439356473,normal +2025-07-19 11:40:00+08:00,1943.99833368158,2116.4226031840553,-105.91825954083536,-66.50600996163985,0.13439798590786833,normal +2025-07-19 11:50:00+08:00,2234.081214439946,2117.0521616239157,-68.45252231832828,185.48157513435854,0.042617336271773075,normal +2025-07-19 12:00:00+08:00,1697.2296451136267,2117.7282052582755,-591.7051097119696,171.20654956732096,0.032589468236492225,normal +2025-07-19 12:10:00+08:00,2150.165367345817,2118.449062563905,-524.3106126287147,556.0269174106265,0.3029166804645068,normal +2025-07-19 12:20:00+08:00,2077.978840415742,2119.2122838976697,-243.18691653244687,201.95347305051928,0.05418845520379724,normal +2025-07-19 12:30:00+08:00,2034.5546368861703,2120.0142414968327,-382.0846881157543,296.6250835050919,0.12069302375028869,normal +2025-07-19 12:40:00+08:00,1682.007169093528,2120.850133471093,-734.0476593181394,295.2046949405744,0.11969523435811467,normal +2025-07-19 12:50:00+08:00,2304.7237309690536,2121.714870097405,-158.22345240863774,341.2323132802867,0.15202854826507478,normal +2025-07-19 13:00:00+08:00,2318.8076775293293,2122.604759692991,180.6421708630838,15.560746973254481,0.07674802901203817,normal +2025-07-19 13:10:00+08:00,1617.074993169459,2123.516710348611,-248.91443215850208,-257.52728502064997,0.26858591637616797,normal +2025-07-19 13:20:00+08:00,1993.3510533886224,2124.4480519352537,-439.1876840199964,308.0906854733653,0.1287473381151184,normal +2025-07-19 13:30:00+08:00,1074.9077219229307,2125.397276415929,-612.7529563767473,-437.7365981162509,0.3951786991326556,normal +2025-07-19 13:40:00+08:00,1636.4612279509452,2126.3633208269166,-521.458678016218,31.556585140246625,0.06551133080095442,normal +2025-07-19 13:50:00+08:00,1378.8570269700429,2127.3464715724585,96.24895785979867,-844.7384024622143,0.6810878461906317,normal +2025-07-19 14:00:00+08:00,1147.9578366172047,2128.3486580819153,-1140.2835916973436,159.89277023263276,0.024641805683052388,normal +2025-07-19 14:10:00+08:00,1242.6549967671403,2129.372969361785,-733.9982099993777,-152.71976259526718,0.19496110925755036,normal +2025-07-19 14:20:00+08:00,1639.2136574858805,2130.4232314160645,-492.3039080113002,1.094334081116358,0.086910342119289,normal +2025-07-19 14:30:00+08:00,1828.4292303706263,2131.5042195509113,-641.8442937804938,338.76930460020867,0.1502983428866266,normal +2025-07-19 14:40:00+08:00,1722.8406482957016,2132.6204848754246,-388.37983128190103,-21.40000529782219,0.10271208382360376,normal +2025-07-19 14:50:00+08:00,978.6108934117284,2133.7761337525667,-874.4011566174273,-280.764083723411,0.28490921820560416,normal +2025-07-19 15:00:00+08:00,971.2341509114542,2134.9741864202465,-1027.412199725472,-136.32783578332032,0.18344616813592146,normal +2025-07-19 15:10:00+08:00,1229.8490945614997,2136.218345704234,-962.9865302473958,56.61727910466152,0.047906785662485435,normal +2025-07-19 15:20:00+08:00,1981.7071431618367,2137.5120234242963,-592.5385070830131,436.7336268205536,0.21911596361718036,normal +2025-07-19 15:30:00+08:00,2174.838596051444,2138.8571252715733,-112.37392886835855,148.3553996482292,0.016537075561820134,normal +2025-07-19 15:40:00+08:00,1783.2430999382111,2140.254916735613,-330.87253707408485,-26.13927972331703,0.10604131208303211,normal +2025-07-19 15:50:00+08:00,1392.8742842479492,2141.707245151675,-576.8543871644254,-171.9785737393006,0.20848996885656274,normal +2025-07-19 16:00:00+08:00,1716.2554589241577,2143.2161488916104,-442.6409842690737,15.680294301620961,0.07666404983965773,normal +2025-07-19 16:10:00+08:00,1105.247718085196,2144.78289521319,-678.9502430070228,-360.58493412097096,0.340981478846517,normal +2025-07-19 16:20:00+08:00,1139.136993703097,2146.407003689499,80.76619649444008,-1088.036206480842,0.8519988025679053,normal +2025-07-19 16:30:00+08:00,2011.786264499662,2148.086983650953,-84.66634740054667,-51.63437175074432,0.12395101159269385,normal +2025-07-19 16:40:00+08:00,1700.6197091423635,2149.8208563853113,-406.4598949933538,-42.741252249594254,0.11770380535402773,normal +2025-07-19 16:50:00+08:00,2006.269245417291,2151.605733688946,-437.25344177242107,291.9169535007659,0.11738567371055597,normal +2025-07-19 17:00:00+08:00,1821.8035265936885,2153.4377730828,-600.561257637015,268.9270111479036,0.10123578263186281,normal +2025-07-19 17:10:00+08:00,1092.5830022381388,2155.31213252432,-967.129090450684,-95.60003983549723,0.15483585418484305,normal +2025-07-19 17:20:00+08:00,880.3584156820364,2157.2231240263236,-1218.943306051981,-57.921402292306084,0.12836750193861238,normal +2025-07-19 17:30:00+08:00,823.5763359537907,2159.164635129811,-1123.2357024222438,-212.35259675377642,0.2368517656842636,normal +2025-07-19 17:40:00+08:00,736.9476112419947,2161.130305555016,-1181.4345652587826,-242.7481290542387,0.2582039086516969,normal +2025-07-19 17:50:00+08:00,818.2245556253904,2163.113819342313,-1374.421428108013,29.53216439109019,0.06693343852504152,normal +2025-07-19 18:00:00+08:00,901.2185797571644,2165.110180736125,-1312.5204047858488,48.6288038068883,0.05351850073178426,normal +2025-07-19 18:10:00+08:00,766.1032206945695,2167.115426524913,-1445.4345660500924,44.42236021974895,0.056473427922043615,normal +2025-07-19 18:20:00+08:00,806.095915995264,2169.1258475404834,-1229.3947121935073,-133.63521935171207,0.18155466873937082,normal +2025-07-19 18:30:00+08:00,666.7445036630113,2171.1390310763054,-1239.6201337610946,-264.7743936521995,0.27367683888648087,normal +2025-07-19 18:40:00+08:00,788.4749802095389,2173.1534899604603,-1337.4583719281643,-47.22013782275735,0.12085011659962808,normal +2025-07-19 18:50:00+08:00,817.7539165892654,2175.1682348587997,-939.6073224387956,-417.80699583073874,0.3811786246125634,normal +2025-07-19 19:00:00+08:00,753.2604663831464,2177.1829626791855,-1277.126585626105,-146.79591066993407,0.19079974330490693,normal +2025-07-19 19:10:00+08:00,786.2917828087094,2179.1975678318736,-1148.3568754530602,-244.54890957010412,0.2594689143981876,normal +2025-07-19 19:20:00+08:00,587.7840184440997,2181.2133175489294,-1195.6559125181946,-397.77338658663507,0.36710548766252254,normal +2025-07-19 19:30:00+08:00,758.170100678693,2183.2328808677557,-1238.9541965496105,-186.10858363945226,0.21841596681366046,normal +2025-07-19 19:40:00+08:00,839.1864507219523,2185.260020882161,-1218.70775265897,-127.36581750123833,0.1771505621322439,normal +2025-07-19 19:50:00+08:00,727.2101728557054,2187.2997115882595,-1146.4380626474765,-313.65147608507755,0.30801183396475307,normal +2025-07-19 20:00:00+08:00,596.6387814657262,2189.358489378059,-854.7155990677414,-738.0041088445914,0.6061095278534717,normal +2025-07-19 20:10:00+08:00,1753.370806069447,2191.4443958152933,-695.626747826469,257.5531580806228,0.09324591970126801,normal +2025-07-19 20:20:00+08:00,1805.39007916164,2193.56577045962,-748.3837889143219,360.208097616342,0.1653585882215217,normal +2025-07-19 20:30:00+08:00,1348.6824338999704,2195.730697665611,-959.9050729527462,112.85680918710568,0.008399845140066904,normal +2025-07-19 20:40:00+08:00,1597.8890416613228,2197.9466233995313,-693.0107778835953,92.95319614538676,0.022381662830714466,normal +2025-07-19 20:50:00+08:00,1515.7147299281232,2200.218413818116,-687.731157572749,3.2274736827562265,0.08541186197117145,normal +2025-07-19 21:00:00+08:00,2221.3222020785606,2202.5485204280235,-394.8835617638223,413.6572434143595,0.20290534974176988,normal +2025-07-19 21:10:00+08:00,1170.363688006817,2204.936610322212,-1055.7829262126859,21.210003897291244,0.07277955955707287,normal +2025-07-19 21:20:00+08:00,1723.8361304503474,2207.3815438895344,-990.004616899901,506.459203460714,0.2680965330703033,normal +2025-07-19 21:30:00+08:00,1629.3184825919018,2209.882120432509,-1038.885836127406,458.32219828679854,0.23428142477289446,normal +2025-07-19 21:40:00+08:00,991.5211291170334,2212.4361954571036,-1072.084064745681,-148.83100159438936,0.19222934657492546,normal +2025-07-19 21:50:00+08:00,1808.2306987431932,2215.041803285994,-574.3160799265875,167.50497538378704,0.02998919986842767,normal +2025-07-19 22:00:00+08:00,1093.973917415203,2217.698143287644,-850.7248949829166,-272.9993308895246,0.2794546628789516,normal +2025-07-19 22:10:00+08:00,1685.8338815112634,2220.4051388386765,-1045.0163292130214,510.4450718856083,0.2708965114229254,normal +2025-07-19 22:20:00+08:00,952.8215978334335,2223.1630483721183,-1191.1149838034626,-79.22646673522195,0.14333380611182803,normal +2025-07-19 22:30:00+08:00,2413.0783245115463,2225.9719713746445,-1162.2871817585162,1349.3935348954183,0.8602379760638149,normal +2025-07-19 22:40:00+08:00,978.6823416995636,2228.8327588302045,-1189.4116865776143,-60.73873055302647,0.13034660844724152,normal +2025-07-19 22:50:00+08:00,1351.9191547679743,2231.745681003886,-1136.6183062193356,256.79177998342357,0.09271106958504147,normal +2025-07-19 23:00:00+08:00,984.7307722466672,2234.708868617304,-1070.6947206889615,-179.2833756816749,0.2136214195540058,normal +2025-07-19 23:10:00+08:00,981.9063880181116,2237.716910911197,-1257.4389813358684,1.628458442783085,0.08653513238056948,normal +2025-07-19 23:20:00+08:00,987.517857505693,2240.7627562598914,-1089.6869787795945,-163.55791997460392,0.202574658629858,normal +2025-07-19 23:30:00+08:00,1076.588457900183,2243.8400530863614,-962.4731469687079,-204.77844821747067,0.23153110537125712,normal +2025-07-19 23:40:00+08:00,976.039276927258,2246.9426791372025,-1063.2927580222072,-207.6106441877373,0.2335206560944074,normal +2025-07-19 23:50:00+08:00,1956.2962645525768,2250.0618800095203,-586.2355901413879,292.4699746844444,0.11777415802006562,normal +2025-07-20 00:00:00+08:00,1407.1457703439694,2253.1857835704513,-628.2516351113308,-217.78837811515132,0.24067027360248228,normal +2025-07-20 00:10:00+08:00,2368.1347328935144,2256.30028445076,-28.92381427852143,140.75826272127597,0.011200266447771315,normal +2025-07-20 00:20:00+08:00,3591.0982210103866,2259.3922984210417,-277.8287401875649,1609.53466277691,1.0429809693210998,normal +2025-07-20 00:30:00+08:00,2028.065147394541,2262.4476205629985,302.6983422410577,-537.080815409515,0.4649656635346995,normal +2025-07-20 00:40:00+08:00,2232.395224136196,2265.451426175457,-133.53753335459635,100.48133131533496,0.017093325819934356,normal +2025-07-20 00:50:00+08:00,2392.6455436923416,2268.3900493799897,268.11391723752905,-143.85842292517736,0.1887362275990091,normal +2025-07-20 01:00:00+08:00,5523.89614319348,2271.2499477791025,-2056.9314300470432,5309.577625461421,3.6421736909331397,severe +2025-07-20 01:10:00+08:00,2797.219277628105,2274.0189007722433,655.3661033627977,-132.16572650693615,0.18052238475101645,normal +2025-07-20 01:20:00+08:00,4651.265180607962,2276.6870529583007,4684.072111200319,-2309.493983550658,1.7100440187815178,normal +2025-07-20 01:30:00+08:00,6260.8852174695785,2279.2475440686962,1345.0473292556137,2636.590344145269,1.764463308479158,mild +2025-07-20 01:40:00+08:00,5371.679358148087,2281.696000337611,2861.896010693078,228.0873471173977,0.07254688399697878,normal +2025-07-20 01:50:00+08:00,3964.089765184857,2284.0316321408627,1645.242661131277,34.81547191271693,0.06322203987514935,normal +2025-07-20 02:00:00+08:00,5306.512685540984,2286.2563644866923,2908.1458589125705,112.11046214172165,0.008924136297689395,normal +2025-07-20 02:10:00+08:00,1911.0882969220877,2288.3737179643404,-540.3714792280167,163.08605818576416,0.02688501498886235,normal +2025-07-20 02:20:00+08:00,1903.2536785389816,2290.3885129334626,-588.24814318369,201.113308789209,0.053598259669588665,normal +2025-07-20 02:30:00+08:00,6107.891997053988,2292.304881577658,3734.1476942579525,81.4394212183779,0.030469817560368703,normal +2025-07-20 02:40:00+08:00,3493.138276339409,2294.12666533886,1107.5653511853334,91.4462598152154,0.023440249982489687,normal +2025-07-20 02:50:00+08:00,2171.7245948856216,2295.858032962699,2813.221092536856,-2937.354530613933,2.151101212055348,mild +2025-07-20 03:00:00+08:00,3506.512568776347,2297.5036460146853,889.2464365165586,319.76248624510345,0.13694650226536298,normal +2025-07-20 03:10:00+08:00,2463.7633722698783,2299.0683247949682,243.78236275364654,-79.08731527873624,0.1432360555028359,normal +2025-07-20 03:20:00+08:00,3962.965010395988,2300.555545079755,1602.4863250166363,59.923140299596525,0.04558449631525566,normal +2025-07-20 03:30:00+08:00,2988.480615695439,2301.9660407151214,814.1040247794679,-127.58944979915032,0.17730765853542416,normal +2025-07-20 03:40:00+08:00,882.9163948013736,2303.2998541106267,1335.8068904771242,-2756.1903497863773,2.0238376572878245,mild +2025-07-20 03:50:00+08:00,4442.624442281647,2304.5569999395825,2249.496681846585,-111.42923950452041,0.16595549279001698,normal +2025-07-20 04:00:00+08:00,4236.484053889304,2305.738320185523,2167.324623405965,-236.57888970218437,0.2538701638321211,normal +2025-07-20 04:10:00+08:00,9595.099746667433,2306.8441975442142,633.1486526225789,6655.10689650064,4.587376198923394,severe +2025-07-20 04:20:00+08:00,4736.817511899975,2307.8734258322042,1963.1659354817043,465.77815058606666,0.2395190550232426,normal +2025-07-20 04:30:00+08:00,1834.003345902348,2308.824257126498,-409.7587132844381,-65.06219793971195,0.13338374209053486,normal +2025-07-20 04:40:00+08:00,2328.632421191804,2309.6933196989353,207.23581484423215,-188.29671335136345,0.21995307621441623,normal +2025-07-20 04:50:00+08:00,3248.4539136379744,2310.476616284211,-1031.286444933873,1969.2637422876364,1.2956821445901838,normal +2025-07-20 05:00:00+08:00,8755.750504824384,2311.1702164066023,627.4017263888835,5817.178562028897,3.998751350467234,severe +2025-07-20 05:10:00+08:00,2368.958676923672,2311.770266853309,1669.688829264561,-1612.5004191941978,1.2204225149892078,normal +2025-07-20 05:20:00+08:00,5228.163397607415,2312.2735384218718,2918.279366418826,-2.3895072332825293,0.08935765829344149,normal +2025-07-20 05:30:00+08:00,5123.6613396705925,2312.677717770833,-1467.0871820170348,4278.070803916795,2.9175645310149694,moderate +2025-07-20 05:40:00+08:00,7866.968460325672,2312.9817992203302,1105.0869764547724,4448.899684650569,3.037567781767011,moderate +2025-07-20 05:50:00+08:00,7609.769827211721,2313.1857225508857,28.643314958374596,5267.940789702461,3.612924798002144,severe +2025-07-20 06:00:00+08:00,6721.86927525731,2313.2897983161006,1313.1308914665321,3095.4485854746767,2.0868003767627603,mild +2025-07-20 06:10:00+08:00,4902.663308230864,2313.296551728137,2578.8049911358085,10.56176536691828,0.08025969542718553,normal +2025-07-20 06:20:00+08:00,3890.759130129094,2313.210727076177,1442.0088486956963,135.53955435722037,0.007534247179111872,normal +2025-07-20 06:30:00+08:00,5952.49749617845,2313.0392522154284,1892.5615766486821,1746.8966673143395,1.1394745306176661,normal +2025-07-20 06:40:00+08:00,5483.167908041143,2312.7900496305747,3000.331797136695,170.04606127387342,0.0317742526413586,normal +2025-07-20 06:50:00+08:00,3867.085067637821,2312.4718367018572,1633.1480182570738,-78.53478732110989,0.1428479176729693,normal +2025-07-20 07:00:00+08:00,4546.177775886636,2312.094243267792,932.421014073787,1301.6625185450566,0.8267080653184019,normal +2025-07-20 07:10:00+08:00,5782.487550372498,2311.667613454403,-738.0570422625026,4208.876979180597,2.868957504705108,moderate +2025-07-20 07:20:00+08:00,4757.833817135812,2311.202569705053,2369.814802895969,76.81644453478975,0.03371734940509259,normal +2025-07-20 07:30:00+08:00,4941.285203964401,2310.709326436572,313.7940692962458,2316.7818082315835,1.5398053714661357,normal +2025-07-20 07:40:00+08:00,7048.408958144057,2310.1966341984894,4527.42549656245,210.78682738311772,0.06039367782425353,normal +2025-07-20 07:50:00+08:00,5387.481366630768,2309.671271614629,2801.334691844323,276.4754031718162,0.10653834960373201,normal +2025-07-20 08:00:00+08:00,5214.728961231607,2309.137314064944,17.75825033211334,2887.8333968345496,1.9409556142419468,mild +2025-07-20 08:10:00+08:00,3829.980351720671,2308.595109801403,1325.2636230469825,196.12161887228558,0.05009171549389667,normal +2025-07-20 08:20:00+08:00,3473.2153952886288,2308.0420494683744,584.4027778076295,580.7705680126251,0.32029851013498295,normal +2025-07-20 08:30:00+08:00,2203.318148838711,2307.4736358807495,163.21996056892044,-267.3754476109591,0.275504017810161,normal +2025-07-20 08:40:00+08:00,2832.5103980958834,2306.8836510150004,391.01386176475535,134.61288531612763,0.006883284081860716,normal +2025-07-20 08:50:00+08:00,2395.2746457770377,2306.2642795521724,382.5389361482504,-293.528569923385,0.2938759680408597,normal +2025-07-20 09:00:00+08:00,2467.560161509145,2305.6064017280505,23.757228586000796,138.19653119509348,0.009400710603493581,normal +2025-07-20 09:10:00+08:00,3977.930947716353,2304.900436094919,-182.05386352167127,1855.0843751431053,1.2154738380831116,normal +2025-07-20 09:20:00+08:00,2432.841411709906,2304.1375791862006,300.31931442016116,-171.61548189645555,0.2082349054195385,normal +2025-07-20 09:30:00+08:00,2280.6331108764875,2303.308800812628,-191.966798765769,169.29110882962868,0.031243916394446368,normal +2025-07-20 09:40:00+08:00,1946.996102791816,2302.40737104545,-529.3144913759685,173.90322312233457,0.03448381766633496,normal +2025-07-20 09:50:00+08:00,3030.009971911732,2301.429053647649,249.46129426992078,479.1196239941619,0.2488911247336825,normal +2025-07-20 10:00:00+08:00,4247.059868592366,2300.3691559903737,171.04806353155917,1775.642649070433,1.1596679033188906,normal +2025-07-20 10:10:00+08:00,3717.079083601439,2299.222452869433,-292.02200090126604,1709.878631633272,1.1134702355646173,normal +2025-07-20 10:20:00+08:00,3041.647085251608,2297.9832972046584,327.68044827599124,415.98333977095854,0.2045393774492357,normal +2025-07-20 10:30:00+08:00,2716.1155204026177,2296.6484031002105,298.4026188034863,121.06449849892078,0.0026341374075694833,normal +2025-07-20 10:40:00+08:00,2378.1583374016204,2295.215327183901,117.80197621879368,-34.85896600107435,0.11216668558178834,normal +2025-07-20 10:50:00+08:00,2053.961051204459,2293.683860484039,-23.49789798163895,-216.22491129794116,0.23957197511980027,normal +2025-07-20 11:00:00+08:00,2433.539035816521,2292.055684972521,124.97442750489192,16.50892333910815,0.07608195752752131,normal +2025-07-20 11:10:00+08:00,3077.506359543496,2290.335521867302,320.12931016068006,467.04152751551374,0.24040654745313833,normal +2025-07-20 11:20:00+08:00,2108.5543372605744,2288.528840115005,-589.0296002892462,409.0550974348157,0.19967245097425187,normal +2025-07-20 11:30:00+08:00,1539.5704274436816,2286.6412021825345,-344.18228097301886,-402.888493765834,0.3706987295476906,normal +2025-07-20 11:40:00+08:00,2102.6387660367704,2284.6779076978773,19.985377325468367,-202.02451898657546,0.22959653518248718,normal +2025-07-20 11:50:00+08:00,1831.5111570017648,2282.643723473807,-14.161490793171321,-436.97107567887065,0.3946409377154136,normal +2025-07-20 12:00:00+08:00,3417.178701081897,2280.543038227386,-628.0624903082054,1764.6981531627162,1.1519796536439701,normal +2025-07-20 12:10:00+08:00,1336.354587776682,2277.8642351024637,-509.13087399939576,-432.37877332638595,0.39141495386322617,normal +2025-07-20 12:20:00+08:00,1849.24712646549,2275.2263855550596,-181.35854709515385,-244.62071199441561,0.25951935390403835,normal +2025-07-20 12:30:00+08:00,1973.5056172383304,2272.6399711521726,-270.5660800408067,-28.56827387303565,0.10774762305792043,normal +2025-07-20 12:40:00+08:00,997.5111867956608,2270.1085922847556,-757.8992084507274,-514.6981970383672,0.44924240319755515,normal +2025-07-20 12:50:00+08:00,2098.690329486655,2267.631807923188,17.912366008019735,-186.85384444455258,0.21893949491315962,normal +2025-07-20 13:00:00+08:00,1730.1217061054194,2265.2072914889904,368.6760512389291,-903.7616366225002,0.722550273027998,normal +2025-07-20 13:10:00+08:00,2231.199847159566,2262.8319319964944,-260.488714559474,228.85662972254568,0.07308728684319671,normal +2025-07-20 13:20:00+08:00,1730.348291743407,2260.5024051288306,-427.3170830121974,-102.8370303732263,0.15991966897341325,normal +2025-07-20 13:30:00+08:00,2207.5307078102624,2258.2153008372757,-521.6450307223976,470.96043769538437,0.2431594892213552,normal +2025-07-20 13:40:00+08:00,3944.668085623307,2255.9673815128795,-578.206505864122,2266.9072099745495,1.5047696451001495,normal +2025-07-20 13:50:00+08:00,2719.6851141968414,2253.7554815734297,182.5921086894578,283.3375239339539,0.1113588272359243,normal +2025-07-20 14:00:00+08:00,4163.642595005619,2251.5766475232817,-1330.3961689429402,3242.462116425278,2.1900739072268633,mild +2025-07-20 14:10:00+08:00,1587.9076922380518,2249.4280743604286,-736.6092242323415,75.08884210996484,0.03493094927237259,normal +2025-07-20 14:20:00+08:00,1978.2350337345729,2247.307186270774,-423.4729502120621,154.4007976758612,0.020783824778285574,normal +2025-07-20 14:30:00+08:00,1725.194174823558,2245.211593812669,-556.7169254517917,36.6995064626808,0.061898550137619704,normal +2025-07-20 14:40:00+08:00,2002.5940813271895,2243.139041847779,-413.5850466619427,173.04008614135319,0.033877484339574535,normal +2025-07-20 14:50:00+08:00,1420.7683842781707,2241.0874251748805,-1141.2693626068847,320.9503217101751,0.13778092860214447,normal +2025-07-20 15:00:00+08:00,2846.167637706844,2239.054719364999,-1112.6771265391521,1719.790044880997,1.120432769090359,normal +2025-07-20 15:10:00+08:00,983.6529273416992,2237.0389495297763,-1005.3689765006536,-248.01704568742343,0.26190519804262286,normal +2025-07-20 15:20:00+08:00,1676.1860418154874,2235.0383163116912,-509.35931883138863,-49.49295566481533,0.12244671740999839,normal +2025-07-20 15:30:00+08:00,1718.585283518632,2233.051274134352,-409.879770723437,-104.58621989228277,0.16114843326412653,normal +2025-07-20 15:40:00+08:00,2035.574563790951,2231.076460997712,-381.3247687380589,185.822871531298,0.042857088923237925,normal +2025-07-20 15:50:00+08:00,1638.7681287228706,2229.112657841932,-674.3525554508574,84.00802633179592,0.028665433183532256,normal +2025-07-20 16:00:00+08:00,1308.7865888863423,2227.1586935722285,-475.3501481520378,-443.0219565338484,0.39889153848848924,normal +2025-07-20 16:10:00+08:00,1729.1597046001764,2225.2134897282326,-749.458260532556,253.40447540449986,0.0903315681856756,normal +2025-07-20 16:20:00+08:00,2101.419705293514,2223.27615100007,55.95974291649925,-177.81618862305504,0.2125907553259231,normal +2025-07-20 16:30:00+08:00,2226.092467799272,2221.3458336790613,46.23899753509122,-41.4923634148804,0.11682649046822013,normal +2025-07-20 16:40:00+08:00,1819.19044318488,2219.4218140634343,-408.6738287975838,8.442457919029493,0.08174845881425012,normal +2025-07-20 16:50:00+08:00,1425.0447085476098,2217.5034660056103,-417.664002624764,-374.79475483323654,0.3509635420125987,normal +2025-07-20 17:00:00+08:00,976.1282504308774,2215.5902526465916,-761.3071726216747,-478.1548295940395,0.4235715513608572,normal +2025-07-20 17:10:00+08:00,981.2920039108204,2213.6818080555154,-1132.163853611994,-100.22595053270106,0.1580854471047793,normal +2025-07-20 17:20:00+08:00,799.8491789657742,2211.7779350141204,-1349.5060601330058,-62.42269591534068,0.13152955430957775,normal +2025-07-20 17:30:00+08:00,941.8821153029686,2209.8785210610176,-1298.5479102385668,30.551504480517906,0.06621737620684466,normal +2025-07-20 17:40:00+08:00,859.9412733162934,2207.983498763098,-1226.749995258882,-121.29223018792254,0.17288401060890915,normal +2025-07-20 17:50:00+08:00,798.0052713624015,2206.0928257511982,-1503.068180365866,94.9806259770694,0.02095744129727981,normal +2025-07-20 18:00:00+08:00,791.6205848898006,2204.206502515979,-1354.2436052887758,-58.342312337402745,0.12866318129604204,normal +2025-07-20 18:10:00+08:00,668.9311710910653,2202.324533794282,-1537.3092365699094,3.9158738666924364,0.08492827711399856,normal +2025-07-20 18:20:00+08:00,834.8646886050674,2200.4469502593265,-1294.1179405600585,-71.46432109420039,0.1378810822765356,normal +2025-07-20 18:30:00+08:00,989.2170447729574,2198.57380539212,-1265.6362630543574,56.2795024351949,0.04814406578859808,normal +2025-07-20 18:40:00+08:00,778.2216895246363,2196.705180875697,-1368.0632900120027,-50.42020133905771,0.12309808557840703,normal +2025-07-20 18:50:00+08:00,1519.592712963754,2194.841163872618,-859.4999053808386,184.25145447197474,0.041753205583395125,normal +2025-07-20 19:00:00+08:00,943.3619815625168,2192.9818508911835,-1298.9586180326385,49.33874870397176,0.053019781222888036,normal +2025-07-20 19:10:00+08:00,1177.8507791754832,2191.1273042751795,-1126.9576002768827,113.68107517718636,0.00782081776560214,normal +2025-07-20 19:20:00+08:00,1142.5377433236204,2189.2775676038136,-1189.067777480457,142.32795320026344,0.012302936905740218,normal +2025-07-20 19:30:00+08:00,978.3082149636962,2187.432656334848,-1248.9734832800275,39.84904190887528,0.05968607593373414,normal +2025-07-20 19:40:00+08:00,966.829675036818,2185.592554000904,-1221.8657875811693,3.102908617083358,0.08549936598540299,normal +2025-07-20 19:50:00+08:00,1074.869916721555,2183.7572388579065,-1137.2048209319405,28.317498795589017,0.0677867123942532,normal +2025-07-20 20:00:00+08:00,1671.4982553206871,2181.926697403344,-767.6276645737004,257.19922249104366,0.09299728831573241,normal +2025-07-20 20:10:00+08:00,1486.380955111823,2180.1009053774283,-588.4589395301216,-105.26101073548352,0.16162245788112323,normal +2025-07-20 20:20:00+08:00,930.6991623065226,2178.279793879592,-693.6798105554949,-553.9008210175746,0.47678131989189565,normal +2025-07-20 20:30:00+08:00,926.3515969647566,2176.463342961065,-942.8348671246791,-307.27687887162915,0.3035338301016892,normal +2025-07-20 20:40:00+08:00,1410.737357272556,2174.651663412385,-637.5945727882836,-126.31973335154544,0.1764157127438728,normal +2025-07-20 20:50:00+08:00,1566.5652968983827,2172.844977110936,-661.1015200933251,54.82183988077213,0.04916803927761758,normal +2025-07-20 21:00:00+08:00,1931.7392509345989,2171.043556237536,-199.2458350808971,-40.05847022203989,0.11581921439386447,normal +2025-07-20 21:10:00+08:00,975.4920503676416,2169.247669413877,-1092.780180222914,-100.97543882332138,0.15861194491292918,normal +2025-07-20 21:20:00+08:00,978.7200704366692,2167.457599663991,-1070.9811915028308,-117.756337724491,0.17040012973291896,normal +2025-07-20 21:30:00+08:00,985.4716284177384,2165.673668391775,-1056.6226781358384,-123.57936183819834,0.17449066653121018,normal +2025-07-20 21:40:00+08:00,999.4088600931004,2163.8962438043627,-1128.4486072137129,-36.03877649754941,0.1129954745678207,normal +2025-07-20 21:50:00+08:00,1097.7490182845968,2162.125736669136,-642.3847902916539,-421.9919280928855,0.38411844060548883,normal +2025-07-20 22:00:00+08:00,1377.6125674293462,2160.362597144741,-867.5785121338954,84.8284824185007,0.02808908217613256,normal +2025-07-20 22:10:00+08:00,910.9410775276342,2158.607364402577,-1079.6591924332397,-168.00709444170298,0.20570009852574386,normal +2025-07-20 22:20:00+08:00,949.8674562838164,2156.860581744771,-1206.2168498361152,-0.7762756248393998,0.08822440122123235,normal +2025-07-20 22:30:00+08:00,961.651960343586,2155.1228281055937,-1209.1564296563058,15.68556189429819,0.07666034948031457,normal +2025-07-20 22:40:00+08:00,1044.6919357643826,2153.3946853541097,-1208.2795676040223,99.57681801429544,0.01772872503350388,normal +2025-07-20 22:50:00+08:00,975.6936671502386,2151.676713983332,-1190.816326497389,14.833279664295787,0.07725905760109117,normal +2025-07-20 23:00:00+08:00,1214.2603377605967,2149.969432228606,-1066.4406708590136,130.73157639100464,0.004156756306305337,normal +2025-07-20 23:10:00+08:00,805.8411100382195,2148.2733271807633,-1311.151850258133,-31.280366884410796,0.10965280429138013,normal +2025-07-20 23:20:00+08:00,1359.0990224904117,2146.588837649746,-1134.3105587298794,346.82074357054535,0.155954288447599,normal +2025-07-20 23:30:00+08:00,1517.1013972196542,2144.916370411433,-923.2361117341661,295.4211385423873,0.11984728087220796,normal +2025-07-20 23:40:00+08:00,1698.7058809256505,2143.2562054258096,-1156.2324592488799,711.6821347487207,0.41226079134817595,normal +2025-07-20 23:50:00+08:00,1677.2533652580005,2141.608473463496,-505.6524269006895,41.29731869519401,0.058668695724951876,normal +2025-07-21 00:00:00+08:00,1656.7728491895791,2139.9731622904096,-659.7567695089853,176.55645640815465,0.03634765133388753,normal diff --git a/Data/yzh_mirror_data.csv b/Data/yzh_mirror_data.csv new file mode 100644 index 0000000..92abefa --- /dev/null +++ b/Data/yzh_mirror_data.csv @@ -0,0 +1,1010 @@ +"""Series""";Time;Value +yzh mirror;2025-07-14T00:00:00+08:00;2392.4649649735443 +yzh mirror;2025-07-14T00:10:00+08:00;1499.0522545027752 +yzh mirror;2025-07-14T00:20:00+08:00;1916.094303250783 +yzh mirror;2025-07-14T00:30:00+08:00;1208.302658310115 +yzh mirror;2025-07-14T00:40:00+08:00;2536.5687803548194 +yzh mirror;2025-07-14T00:50:00+08:00;2301.501287436792 +yzh mirror;2025-07-14T01:00:00+08:00;13366.959897823193 +yzh mirror;2025-07-14T01:10:00+08:00;1504.2321128272538 +yzh mirror;2025-07-14T01:20:00+08:00;1754.4535089750373 +yzh mirror;2025-07-14T01:30:00+08:00;2282.4834594271874 +yzh mirror;2025-07-14T01:40:00+08:00;1930.3253685487234 +yzh mirror;2025-07-14T01:50:00+08:00;2461.466695219779 +yzh mirror;2025-07-14T02:00:00+08:00;4451.764052389372 +yzh mirror;2025-07-14T02:10:00+08:00;2118.051671571828 +yzh mirror;2025-07-14T02:20:00+08:00;955.1111006706734 +yzh mirror;2025-07-14T02:30:00+08:00;3319.5683798946648 +yzh mirror;2025-07-14T02:40:00+08:00;2621.0818653677143 +yzh mirror;2025-07-14T02:50:00+08:00;1331.351343484746 +yzh mirror;2025-07-14T03:00:00+08:00;4170.315135131283 +yzh mirror;2025-07-14T03:10:00+08:00;2924.1173758053724 +yzh mirror;2025-07-14T03:20:00+08:00;3987.6152558096123 +yzh mirror;2025-07-14T03:30:00+08:00;923.1584437985823 +yzh mirror;2025-07-14T03:40:00+08:00;2304.9379463524847 +yzh mirror;2025-07-14T03:50:00+08:00;3001.056073599605 +yzh mirror;2025-07-14T04:00:00+08:00;3271.412855004965 +yzh mirror;2025-07-14T04:10:00+08:00;4810.061139118233 +yzh mirror;2025-07-14T04:20:00+08:00;3690.683937899749 +yzh mirror;2025-07-14T04:30:00+08:00;3900.095811989063 +yzh mirror;2025-07-14T04:40:00+08:00;3405.4136386970495 +yzh mirror;2025-07-14T04:50:00+08:00;2970.203076788919 +yzh mirror;2025-07-14T05:00:00+08:00;11733.768154342426 +yzh mirror;2025-07-14T05:10:00+08:00;4641.369737000938 +yzh mirror;2025-07-14T05:20:00+08:00;3633.1002883092347 +yzh mirror;2025-07-14T05:30:00+08:00;6437.431718843744 +yzh mirror;2025-07-14T05:40:00+08:00;6062.117398036187 +yzh mirror;2025-07-14T05:50:00+08:00;3754.7995227466176 +yzh mirror;2025-07-14T06:00:00+08:00;7575.361092977691 +yzh mirror;2025-07-14T06:10:00+08:00;2343.957281956409 +yzh mirror;2025-07-14T06:20:00+08:00;4024.4996870825116 +yzh mirror;2025-07-14T06:30:00+08:00;4443.422710791914 +yzh mirror;2025-07-14T06:40:00+08:00;3773.7177776345115 +yzh mirror;2025-07-14T06:50:00+08:00;3711.4897589193483 +yzh mirror;2025-07-14T07:00:00+08:00;3028.9268084714354 +yzh mirror;2025-07-14T07:10:00+08:00;3208.1948316988655 +yzh mirror;2025-07-14T07:20:00+08:00;3750.293995269002 +yzh mirror;2025-07-14T07:30:00+08:00;4415.423720841458 +yzh mirror;2025-07-14T07:40:00+08:00;1904.3787488936478 +yzh mirror;2025-07-14T07:50:00+08:00;3014.569785492415 +yzh mirror;2025-07-14T08:00:00+08:00;2915.8901576658523 +yzh mirror;2025-07-14T08:10:00+08:00;1058.7360213656486 +yzh mirror;2025-07-14T08:20:00+08:00;1790.3179310193468 +yzh mirror;2025-07-14T08:30:00+08:00;1651.3825851440906 +yzh mirror;2025-07-14T08:40:00+08:00;1912.2178103165504 +yzh mirror;2025-07-14T08:50:00+08:00;1947.7497928208181 +yzh mirror;2025-07-14T09:00:00+08:00;1466.0417791830196 +yzh mirror;2025-07-14T09:10:00+08:00;2229.3180070942753 +yzh mirror;2025-07-14T09:20:00+08:00;2117.230821265878 +yzh mirror;2025-07-14T09:30:00+08:00;2524.0631420646287 +yzh mirror;2025-07-14T09:40:00+08:00;2861.451312905756 +yzh mirror;2025-07-14T09:50:00+08:00;1666.0083855854336 +yzh mirror;2025-07-14T10:00:00+08:00;1600.8648802433331 +yzh mirror;2025-07-14T10:10:00+08:00;1214.0080508937745 +yzh mirror;2025-07-14T10:20:00+08:00;1596.3143660152932 +yzh mirror;2025-07-14T10:30:00+08:00;966.1276924346802 +yzh mirror;2025-07-14T10:40:00+08:00;959.960077142546 +yzh mirror;2025-07-14T10:50:00+08:00;947.7992631077184 +yzh mirror;2025-07-14T11:00:00+08:00;968.5399424572884 +yzh mirror;2025-07-14T11:10:00+08:00;1796.2069016683095 +yzh mirror;2025-07-14T11:20:00+08:00;1761.3498108425501 +yzh mirror;2025-07-14T11:30:00+08:00;1979.951652301946 +yzh mirror;2025-07-14T11:40:00+08:00;4790.2177457663565 +yzh mirror;2025-07-14T11:50:00+08:00;1455.3939063222506 +yzh mirror;2025-07-14T12:00:00+08:00;1748.7909295927684 +yzh mirror;2025-07-14T12:10:00+08:00;1430.9916751795392 +yzh mirror;2025-07-14T12:20:00+08:00;1214.7914028281025 +yzh mirror;2025-07-14T12:30:00+08:00;1526.2774678593819 +yzh mirror;2025-07-14T12:40:00+08:00;984.2511934117192 +yzh mirror;2025-07-14T12:50:00+08:00;966.6904968013549 +yzh mirror;2025-07-14T13:00:00+08:00;1226.3109129203633 +yzh mirror;2025-07-14T13:10:00+08:00;1890.9361883701824 +yzh mirror;2025-07-14T13:20:00+08:00;1617.0764994286596 +yzh mirror;2025-07-14T13:30:00+08:00;987.9993732436246 +yzh mirror;2025-07-14T13:40:00+08:00;2289.3019314884687 +yzh mirror;2025-07-14T13:50:00+08:00;1896.4525727570172 +yzh mirror;2025-07-14T14:00:00+08:00;2169.6915288953523 +yzh mirror;2025-07-14T14:10:00+08:00;1347.2518606592594 +yzh mirror;2025-07-14T14:20:00+08:00;1262.87544886029 +yzh mirror;2025-07-14T14:30:00+08:00;988.1500095484855 +yzh mirror;2025-07-14T14:40:00+08:00;1697.4621205649278 +yzh mirror;2025-07-14T14:50:00+08:00;1142.4749689521539 +yzh mirror;2025-07-14T15:00:00+08:00;1196.5921940075293 +yzh mirror;2025-07-14T15:10:00+08:00;1256.4843967257607 +yzh mirror;2025-07-14T15:20:00+08:00;991.4270993283487 +yzh mirror;2025-07-14T15:30:00+08:00;1277.8670278756006 +yzh mirror;2025-07-14T15:40:00+08:00;2211.1657597272524 +yzh mirror;2025-07-14T15:50:00+08:00;944.8951889171419 +yzh mirror;2025-07-14T16:00:00+08:00;1360.6047232543456 +yzh mirror;2025-07-14T16:10:00+08:00;1897.1778035144257 +yzh mirror;2025-07-14T16:20:00+08:00;2263.792657790043 +yzh mirror;2025-07-14T16:30:00+08:00;34109.276874739284 +yzh mirror;2025-07-14T16:40:00+08:00;1784.7959618736245 +yzh mirror;2025-07-14T16:50:00+08:00;1282.962522502106 +yzh mirror;2025-07-14T17:00:00+08:00;2340.1041184992314 +yzh mirror;2025-07-14T17:10:00+08:00;1851.9777945947371 +yzh mirror;2025-07-14T17:20:00+08:00;996.4162110354268 +yzh mirror;2025-07-14T17:30:00+08:00;1572.0774705767749 +yzh mirror;2025-07-14T17:40:00+08:00;973.820950598001 +yzh mirror;2025-07-14T17:50:00+08:00;1598.4462273173626 +yzh mirror;2025-07-14T18:00:00+08:00;991.3674759676155 +yzh mirror;2025-07-14T18:10:00+08:00;1373.415858740846 +yzh mirror;2025-07-14T18:20:00+08:00;1175.6279236576875 +yzh mirror;2025-07-14T18:30:00+08:00;996.9565060922321 +yzh mirror;2025-07-14T18:40:00+08:00;990.5425094694642 +yzh mirror;2025-07-14T18:50:00+08:00;809.3980148277981 +yzh mirror;2025-07-14T19:00:00+08:00;985.9852949963372 +yzh mirror;2025-07-14T19:10:00+08:00;851.802515694159 +yzh mirror;2025-07-14T19:20:00+08:00;871.457908714505 +yzh mirror;2025-07-14T19:30:00+08:00;852.9397482533846 +yzh mirror;2025-07-14T19:40:00+08:00;809.4309908241964 +yzh mirror;2025-07-14T19:50:00+08:00;691.4777649210907 +yzh mirror;2025-07-14T20:00:00+08:00;713.5651216766132 +yzh mirror;2025-07-14T20:10:00+08:00;863.2189568046698 +yzh mirror;2025-07-14T20:20:00+08:00;936.6593220056761 +yzh mirror;2025-07-14T20:30:00+08:00;857.557607281998 +yzh mirror;2025-07-14T20:40:00+08:00;885.5419981841394 +yzh mirror;2025-07-14T20:50:00+08:00;1318.479245921977 +yzh mirror;2025-07-14T21:00:00+08:00;2394.691211988621 +yzh mirror;2025-07-14T21:10:00+08:00;1093.5409202629537 +yzh mirror;2025-07-14T21:20:00+08:00;1771.3322838645624 +yzh mirror;2025-07-14T21:30:00+08:00;1314.3306471284495 +yzh mirror;2025-07-14T21:40:00+08:00;1560.827539724267 +yzh mirror;2025-07-14T21:50:00+08:00;1849.1178825125521 +yzh mirror;2025-07-14T22:00:00+08:00;1408.9823331812386 +yzh mirror;2025-07-14T22:10:00+08:00;1510.4011339366107 +yzh mirror;2025-07-14T22:20:00+08:00;937.1300820522051 +yzh mirror;2025-07-14T22:30:00+08:00;1070.3090212732645 +yzh mirror;2025-07-14T22:40:00+08:00;2197.337485113677 +yzh mirror;2025-07-14T22:50:00+08:00;1613.963850776826 +yzh mirror;2025-07-14T23:00:00+08:00;1013.7085176612283 +yzh mirror;2025-07-14T23:10:00+08:00;1250.6104099440465 +yzh mirror;2025-07-14T23:20:00+08:00;1539.381497487234 +yzh mirror;2025-07-14T23:30:00+08:00;929.6556875436802 +yzh mirror;2025-07-14T23:40:00+08:00;2023.859799135074 +yzh mirror;2025-07-14T23:50:00+08:00;1742.658506943522 +yzh mirror;2025-07-15T00:00:00+08:00;1498.871258410551 +yzh mirror;2025-07-15T00:10:00+08:00;1554.350376084984 +yzh mirror;2025-07-15T00:20:00+08:00;1394.579873888856 +yzh mirror;2025-07-15T00:30:00+08:00;1738.0669385254316 +yzh mirror;2025-07-15T00:40:00+08:00;2970.8713123785387 +yzh mirror;2025-07-15T00:50:00+08:00;3476.0728931936255 +yzh mirror;2025-07-15T01:00:00+08:00;14552.472422384308 +yzh mirror;2025-07-15T01:10:00+08:00;4651.271492083917 +yzh mirror;2025-07-15T01:20:00+08:00;2215.550308062743 +yzh mirror;2025-07-15T01:30:00+08:00;2413.6171490769666 +yzh mirror;2025-07-15T01:40:00+08:00;4728.679591687594 +yzh mirror;2025-07-15T01:50:00+08:00;3517.591270570895 +yzh mirror;2025-07-15T02:00:00+08:00;4216.831486134892 +yzh mirror;2025-07-15T02:10:00+08:00;2201.358455066988 +yzh mirror;2025-07-15T02:20:00+08:00;1298.5212490313281 +yzh mirror;2025-07-15T02:30:00+08:00;876.7833839952468 +yzh mirror;2025-07-15T02:40:00+08:00;910.1316505639112 +yzh mirror;2025-07-15T02:50:00+08:00;1084.8528568167555 +yzh mirror;2025-07-15T03:00:00+08:00;599.7171348406605 +yzh mirror;2025-07-15T03:10:00+08:00;977.4529371443141 +yzh mirror;2025-07-15T03:20:00+08:00;2320.628749677141 +yzh mirror;2025-07-15T03:30:00+08:00;2265.005675010066 +yzh mirror;2025-07-15T03:40:00+08:00;2446.8748621973646 +yzh mirror;2025-07-15T03:50:00+08:00;3517.0287317888947 +yzh mirror;2025-07-15T04:00:00+08:00;6253.785190863624 +yzh mirror;2025-07-15T04:10:00+08:00;4675.018544415212 +yzh mirror;2025-07-15T04:20:00+08:00;6904.805663709536 +yzh mirror;2025-07-15T04:30:00+08:00;4979.867629821298 +yzh mirror;2025-07-15T04:40:00+08:00;4869.849553252716 +yzh mirror;2025-07-15T04:50:00+08:00;4449.069373290859 +yzh mirror;2025-07-15T05:00:00+08:00;8004.086738718597 +yzh mirror;2025-07-15T05:10:00+08:00;5894.8591335712645 +yzh mirror;2025-07-15T05:20:00+08:00;4633.565476521968 +yzh mirror;2025-07-15T05:30:00+08:00;6271.172402889849 +yzh mirror;2025-07-15T05:40:00+08:00;5637.878316196367 +yzh mirror;2025-07-15T05:50:00+08:00;2949.623173587968 +yzh mirror;2025-07-15T06:00:00+08:00;4277.928344511081 +yzh mirror;2025-07-15T06:10:00+08:00;3277.427297289553 +yzh mirror;2025-07-15T06:20:00+08:00;4137.907062085869 +yzh mirror;2025-07-15T06:30:00+08:00;5641.538972950302 +yzh mirror;2025-07-15T06:40:00+08:00;5903.542009768298 +yzh mirror;2025-07-15T06:50:00+08:00;7672.687531102028 +yzh mirror;2025-07-15T07:00:00+08:00;2479.9696515205387 +yzh mirror;2025-07-15T07:10:00+08:00;6116.42177340247 +yzh mirror;2025-07-15T07:20:00+08:00;4724.562175630068 +yzh mirror;2025-07-15T07:30:00+08:00;2403.117861325497 +yzh mirror;2025-07-15T07:40:00+08:00;3825.0546049338677 +yzh mirror;2025-07-15T07:50:00+08:00;1710.4388193435975 +yzh mirror;2025-07-15T08:00:00+08:00;3031.442656473252 +yzh mirror;2025-07-15T08:10:00+08:00;2028.4580199285492 +yzh mirror;2025-07-15T08:20:00+08:00;2182.6378310214905 +yzh mirror;2025-07-15T08:30:00+08:00;1847.1169504264958 +yzh mirror;2025-07-15T08:40:00+08:00;3483.0701314126586 +yzh mirror;2025-07-15T08:50:00+08:00;2494.909483279121 +yzh mirror;2025-07-15T09:00:00+08:00;4044.3127790390463 +yzh mirror;2025-07-15T09:10:00+08:00;2395.2765039427713 +yzh mirror;2025-07-15T09:20:00+08:00;2111.9143059141034 +yzh mirror;2025-07-15T09:30:00+08:00;2336.01398048244 +yzh mirror;2025-07-15T09:40:00+08:00;2618.1734257597577 +yzh mirror;2025-07-15T09:50:00+08:00;2298.3279151973084 +yzh mirror;2025-07-15T10:00:00+08:00;2106.0045303316147 +yzh mirror;2025-07-15T10:10:00+08:00;882.4425394738637 +yzh mirror;2025-07-15T10:20:00+08:00;919.3708625533097 +yzh mirror;2025-07-15T10:30:00+08:00;1295.670291559243 +yzh mirror;2025-07-15T10:40:00+08:00;1537.5397365294325 +yzh mirror;2025-07-15T10:50:00+08:00;1427.6001536049914 +yzh mirror;2025-07-15T11:00:00+08:00;1473.936295640324 +yzh mirror;2025-07-15T11:10:00+08:00;1278.3647667529724 +yzh mirror;2025-07-15T11:20:00+08:00;1087.20312235079 +yzh mirror;2025-07-15T11:30:00+08:00;1632.7868061884583 +yzh mirror;2025-07-15T11:40:00+08:00;1455.41532866152 +yzh mirror;2025-07-15T11:50:00+08:00;2324.9421102151855 +yzh mirror;2025-07-15T12:00:00+08:00;1866.3154421504155 +yzh mirror;2025-07-15T12:10:00+08:00;1373.546084281064 +yzh mirror;2025-07-15T12:20:00+08:00;1673.9660894023514 +yzh mirror;2025-07-15T12:30:00+08:00;980.2403862586559 +yzh mirror;2025-07-15T12:40:00+08:00;1586.2275022031502 +yzh mirror;2025-07-15T12:50:00+08:00;1407.5430197646738 +yzh mirror;2025-07-15T13:00:00+08:00;1393.65249508148 +yzh mirror;2025-07-15T13:10:00+08:00;2125.503862643421 +yzh mirror;2025-07-15T13:20:00+08:00;1486.590377656489 +yzh mirror;2025-07-15T13:30:00+08:00;1432.053757573127 +yzh mirror;2025-07-15T13:40:00+08:00;1599.7611598796486 +yzh mirror;2025-07-15T13:50:00+08:00;1645.0824757355558 +yzh mirror;2025-07-15T14:00:00+08:00;1393.2782028204408 +yzh mirror;2025-07-15T14:10:00+08:00;1337.5165936016983 +yzh mirror;2025-07-15T14:20:00+08:00;2172.686656738733 +yzh mirror;2025-07-15T14:30:00+08:00;1465.5300063243594 +yzh mirror;2025-07-15T14:40:00+08:00;2302.966147622326 +yzh mirror;2025-07-15T14:50:00+08:00;2144.3990987107063 +yzh mirror;2025-07-15T15:00:00+08:00;1974.7688104028698 +yzh mirror;2025-07-15T15:10:00+08:00;1026.0413648946562 +yzh mirror;2025-07-15T15:20:00+08:00;1308.4074284749897 +yzh mirror;2025-07-15T15:30:00+08:00;9240.14623012325 +yzh mirror;2025-07-15T15:40:00+08:00;1969.0411311517178 +yzh mirror;2025-07-15T15:50:00+08:00;1844.1525889576437 +yzh mirror;2025-07-15T16:00:00+08:00;1929.780142138901 +yzh mirror;2025-07-15T16:10:00+08:00;4099.34970568216 +yzh mirror;2025-07-15T16:20:00+08:00;2083.9243026264803 +yzh mirror;2025-07-15T16:30:00+08:00;1555.0606256502638 +yzh mirror;2025-07-15T16:40:00+08:00;1738.4683142057784 +yzh mirror;2025-07-15T16:50:00+08:00;1778.4677911528822 +yzh mirror;2025-07-15T17:00:00+08:00;2088.279700366542 +yzh mirror;2025-07-15T17:10:00+08:00;1706.6546328713343 +yzh mirror;2025-07-15T17:20:00+08:00;1798.3203964794982 +yzh mirror;2025-07-15T17:30:00+08:00;1889.7094013893538 +yzh mirror;2025-07-15T17:40:00+08:00;1095.4480845458324 +yzh mirror;2025-07-15T17:50:00+08:00;1130.8221505580916 +yzh mirror;2025-07-15T18:00:00+08:00;859.0743252481669 +yzh mirror;2025-07-15T18:10:00+08:00;689.7767043205673 +yzh mirror;2025-07-15T18:20:00+08:00;946.1906483553053 +yzh mirror;2025-07-15T18:30:00+08:00;900.0284698374401 +yzh mirror;2025-07-15T18:40:00+08:00;744.6947287752316 +yzh mirror;2025-07-15T18:50:00+08:00;847.4041779213665 +yzh mirror;2025-07-15T19:00:00+08:00;836.4857718906233 +yzh mirror;2025-07-15T19:10:00+08:00;856.5258166418784 +yzh mirror;2025-07-15T19:20:00+08:00;804.4528677886374 +yzh mirror;2025-07-15T19:30:00+08:00;881.5135216859846 +yzh mirror;2025-07-15T19:40:00+08:00;911.8862807837932 +yzh mirror;2025-07-15T19:50:00+08:00;911.2600089906325 +yzh mirror;2025-07-15T20:00:00+08:00;928.4567787728556 +yzh mirror;2025-07-15T20:10:00+08:00;978.0550882925985 +yzh mirror;2025-07-15T20:20:00+08:00;1191.8927545070362 +yzh mirror;2025-07-15T20:30:00+08:00;975.13329348157 +yzh mirror;2025-07-15T20:40:00+08:00;1123.240662180961 +yzh mirror;2025-07-15T20:50:00+08:00;1022.44177689622 +yzh mirror;2025-07-15T21:00:00+08:00;5792.407072621629 +yzh mirror;2025-07-15T21:10:00+08:00;1142.5308925778588 +yzh mirror;2025-07-15T21:20:00+08:00;1298.2494895402056 +yzh mirror;2025-07-15T21:30:00+08:00;1033.325020243396 +yzh mirror;2025-07-15T21:40:00+08:00;946.6525050734779 +yzh mirror;2025-07-15T21:50:00+08:00;1821.926897902803 +yzh mirror;2025-07-15T22:00:00+08:00;1383.6749541477461 +yzh mirror;2025-07-15T22:10:00+08:00;987.0324973874461 +yzh mirror;2025-07-15T22:20:00+08:00;979.7086470509016 +yzh mirror;2025-07-15T22:30:00+08:00;1306.3595951096604 +yzh mirror;2025-07-15T22:40:00+08:00;876.8848840910089 +yzh mirror;2025-07-15T22:50:00+08:00;914.5468521750272 +yzh mirror;2025-07-15T23:00:00+08:00;992.1719287248142 +yzh mirror;2025-07-15T23:10:00+08:00;794.2055653922587 +yzh mirror;2025-07-15T23:20:00+08:00;951.4398413365302 +yzh mirror;2025-07-15T23:30:00+08:00;971.2025763032284 +yzh mirror;2025-07-15T23:40:00+08:00;1250.965591975307 +yzh mirror;2025-07-15T23:50:00+08:00;969.1711018391406 +yzh mirror;2025-07-16T00:00:00+08:00;1321.168644613048 +yzh mirror;2025-07-16T00:10:00+08:00;1110.5942911443801 +yzh mirror;2025-07-16T00:20:00+08:00;2280.8576316083972 +yzh mirror;2025-07-16T00:30:00+08:00;2260.917832679399 +yzh mirror;2025-07-16T00:40:00+08:00;2374.377354790704 +yzh mirror;2025-07-16T00:50:00+08:00;2085.1471984451778 +yzh mirror;2025-07-16T01:00:00+08:00;6029.151485546501 +yzh mirror;2025-07-16T01:10:00+08:00;4272.864622797346 +yzh mirror;2025-07-16T01:20:00+08:00;3625.5208911950435 +yzh mirror;2025-07-16T01:30:00+08:00;1763.9480091762875 +yzh mirror;2025-07-16T01:40:00+08:00;2007.008076771154 +yzh mirror;2025-07-16T01:50:00+08:00;1418.7027164541778 +yzh mirror;2025-07-16T02:00:00+08:00;2629.8798244080695 +yzh mirror;2025-07-16T02:10:00+08:00;2264.4224925706644 +yzh mirror;2025-07-16T02:20:00+08:00;1785.5772836581496 +yzh mirror;2025-07-16T02:30:00+08:00;3510.6816650784754 +yzh mirror;2025-07-16T02:40:00+08:00;954.7453746687819 +yzh mirror;2025-07-16T02:50:00+08:00;1650.206216346639 +yzh mirror;2025-07-16T03:00:00+08:00;1489.7094981720898 +yzh mirror;2025-07-16T03:10:00+08:00;4104.597977211815 +yzh mirror;2025-07-16T03:20:00+08:00;1499.0439318835547 +yzh mirror;2025-07-16T03:30:00+08:00;2070.6189556243417 +yzh mirror;2025-07-16T03:40:00+08:00;3442.3848066532028 +yzh mirror;2025-07-16T03:50:00+08:00;822.9992215899242 +yzh mirror;2025-07-16T04:00:00+08:00;868.9467699723359 +yzh mirror;2025-07-16T04:10:00+08:00;3677.343133556298 +yzh mirror;2025-07-16T04:20:00+08:00;2475.929485528938 +yzh mirror;2025-07-16T04:30:00+08:00;3778.3552166368167 +yzh mirror;2025-07-16T04:40:00+08:00;4607.493030944061 +yzh mirror;2025-07-16T04:50:00+08:00;2273.0384784932253 +yzh mirror;2025-07-16T05:00:00+08:00;8586.257546814122 +yzh mirror;2025-07-16T05:10:00+08:00;6047.935135016429 +yzh mirror;2025-07-16T05:20:00+08:00;4252.731755973454 +yzh mirror;2025-07-16T05:30:00+08:00;4348.346652061216 +yzh mirror;2025-07-16T05:40:00+08:00;4764.426655018324 +yzh mirror;2025-07-16T05:50:00+08:00;4755.3046273394175 +yzh mirror;2025-07-16T06:00:00+08:00;2444.4345841160457 +yzh mirror;2025-07-16T06:10:00+08:00;2351.2076313918906 +yzh mirror;2025-07-16T06:20:00+08:00;3826.2898594792405 +yzh mirror;2025-07-16T06:30:00+08:00;4159.978511226482 +yzh mirror;2025-07-16T06:40:00+08:00;4322.95186241308 +yzh mirror;2025-07-16T06:50:00+08:00;3837.7428687637093 +yzh mirror;2025-07-16T07:00:00+08:00;2684.6514858183114 +yzh mirror;2025-07-16T07:10:00+08:00;2101.15024004704 +yzh mirror;2025-07-16T07:20:00+08:00;4740.900407001318 +yzh mirror;2025-07-16T07:30:00+08:00;3350.2239869857176 +yzh mirror;2025-07-16T07:40:00+08:00;2787.692893117568 +yzh mirror;2025-07-16T07:50:00+08:00;2621.8368144363835 +yzh mirror;2025-07-16T08:00:00+08:00;2432.812089866407 +yzh mirror;2025-07-16T08:10:00+08:00;2276.8222841544693 +yzh mirror;2025-07-16T08:20:00+08:00;2140.5887928619914 +yzh mirror;2025-07-16T08:30:00+08:00;1873.137927705671 +yzh mirror;2025-07-16T08:40:00+08:00;2304.97898931622 +yzh mirror;2025-07-16T08:50:00+08:00;2349.217612781088 +yzh mirror;2025-07-16T09:00:00+08:00;2268.9501838656934 +yzh mirror;2025-07-16T09:10:00+08:00;1808.1931264120135 +yzh mirror;2025-07-16T09:20:00+08:00;1852.3356693299131 +yzh mirror;2025-07-16T09:30:00+08:00;1794.4378944228265 +yzh mirror;2025-07-16T09:40:00+08:00;2122.162217514902 +yzh mirror;2025-07-16T09:50:00+08:00;2452.652505971553 +yzh mirror;2025-07-16T10:00:00+08:00;2182.841233850443 +yzh mirror;2025-07-16T10:10:00+08:00;1346.6067198423295 +yzh mirror;2025-07-16T10:20:00+08:00;2250.3700689333773 +yzh mirror;2025-07-16T10:30:00+08:00;1222.221944755357 +yzh mirror;2025-07-16T10:40:00+08:00;1560.5081474278234 +yzh mirror;2025-07-16T10:50:00+08:00;2087.262977063774 +yzh mirror;2025-07-16T11:00:00+08:00;1622.1882959096793 +yzh mirror;2025-07-16T11:10:00+08:00;1961.3722475051236 +yzh mirror;2025-07-16T11:20:00+08:00;1583.3340932988012 +yzh mirror;2025-07-16T11:30:00+08:00;1645.098584790794 +yzh mirror;2025-07-16T11:40:00+08:00;1337.5003532322266 +yzh mirror;2025-07-16T11:50:00+08:00;1174.2229998557032 +yzh mirror;2025-07-16T12:00:00+08:00;998.5431779979475 +yzh mirror;2025-07-16T12:10:00+08:00;1934.918024797228 +yzh mirror;2025-07-16T12:20:00+08:00;2415.9074482010465 +yzh mirror;2025-07-16T12:30:00+08:00;1423.8884107103984 +yzh mirror;2025-07-16T12:40:00+08:00;1765.916422588517 +yzh mirror;2025-07-16T12:50:00+08:00;1372.027027058728 +yzh mirror;2025-07-16T13:00:00+08:00;1862.3879006732684 +yzh mirror;2025-07-16T13:10:00+08:00;1675.6994741395083 +yzh mirror;2025-07-16T13:20:00+08:00;1729.7077867758203 +yzh mirror;2025-07-16T13:30:00+08:00;991.187613884844 +yzh mirror;2025-07-16T13:40:00+08:00;1582.7204998422262 +yzh mirror;2025-07-16T13:50:00+08:00;2402.5654457510377 +yzh mirror;2025-07-16T14:00:00+08:00;1665.5933960974917 +yzh mirror;2025-07-16T14:10:00+08:00;1466.819014597788 +yzh mirror;2025-07-16T14:20:00+08:00;1271.1524429876306 +yzh mirror;2025-07-16T14:30:00+08:00;1135.7031805716333 +yzh mirror;2025-07-16T14:40:00+08:00;1519.829179504587 +yzh mirror;2025-07-16T14:50:00+08:00;2346.524334543775 +yzh mirror;2025-07-16T15:00:00+08:00;2437.639229721492 +yzh mirror;2025-07-16T15:10:00+08:00;1472.966564512128 +yzh mirror;2025-07-16T15:20:00+08:00;1536.1927371333204 +yzh mirror;2025-07-16T15:30:00+08:00;2810.442576594509 +yzh mirror;2025-07-16T15:40:00+08:00;1357.5148163006593 +yzh mirror;2025-07-16T15:50:00+08:00;2144.417540851625 +yzh mirror;2025-07-16T16:00:00+08:00;3081.539041627233 +yzh mirror;2025-07-16T16:10:00+08:00;1411.236460705623 +yzh mirror;2025-07-16T16:20:00+08:00;2185.548420619788 +yzh mirror;2025-07-16T16:30:00+08:00;1554.8838451308839 +yzh mirror;2025-07-16T16:40:00+08:00;997.4054922780165 +yzh mirror;2025-07-16T16:50:00+08:00;1431.1367199470355 +yzh mirror;2025-07-16T17:00:00+08:00;1668.108303716656 +yzh mirror;2025-07-16T17:10:00+08:00;1682.5251902674097 +yzh mirror;2025-07-16T17:20:00+08:00;1420.3779269767194 +yzh mirror;2025-07-16T17:30:00+08:00;4435.297298236891 +yzh mirror;2025-07-16T17:40:00+08:00;962.0281641309411 +yzh mirror;2025-07-16T17:50:00+08:00;924.1620952558656 +yzh mirror;2025-07-16T18:00:00+08:00;952.6281200203414 +yzh mirror;2025-07-16T18:10:00+08:00;826.7487688685557 +yzh mirror;2025-07-16T18:20:00+08:00;1870.4435600957258 +yzh mirror;2025-07-16T18:30:00+08:00;897.9706136845168 +yzh mirror;2025-07-16T18:40:00+08:00;853.1601996484942 +yzh mirror;2025-07-16T18:50:00+08:00;826.8776035701535 +yzh mirror;2025-07-16T19:00:00+08:00;825.2399017682308 +yzh mirror;2025-07-16T19:10:00+08:00;858.8985777562461 +yzh mirror;2025-07-16T19:20:00+08:00;955.308834153206 +yzh mirror;2025-07-16T19:30:00+08:00;962.8652997741625 +yzh mirror;2025-07-16T19:40:00+08:00;979.706189153716 +yzh mirror;2025-07-16T19:50:00+08:00;986.3376541428354 +yzh mirror;2025-07-16T20:00:00+08:00;975.366705363013 +yzh mirror;2025-07-16T20:10:00+08:00;872.0705626145875 +yzh mirror;2025-07-16T20:20:00+08:00;949.6185770427657 +yzh mirror;2025-07-16T20:30:00+08:00;1104.79171621106 +yzh mirror;2025-07-16T20:40:00+08:00;1446.269306115079 +yzh mirror;2025-07-16T20:50:00+08:00;1510.2579170541505 +yzh mirror;2025-07-16T21:00:00+08:00;1186.8691569897155 +yzh mirror;2025-07-16T21:10:00+08:00;1185.5680865786744 +yzh mirror;2025-07-16T21:20:00+08:00;1156.1173540618574 +yzh mirror;2025-07-16T21:30:00+08:00;953.1410676812754 +yzh mirror;2025-07-16T21:40:00+08:00;913.6177570741809 +yzh mirror;2025-07-16T21:50:00+08:00;923.5441861616614 +yzh mirror;2025-07-16T22:00:00+08:00;979.61709702279 +yzh mirror;2025-07-16T22:10:00+08:00;950.4337652484783 +yzh mirror;2025-07-16T22:20:00+08:00;871.7697737711194 +yzh mirror;2025-07-16T22:30:00+08:00;982.7929667634944 +yzh mirror;2025-07-16T22:40:00+08:00;894.373215518347 +yzh mirror;2025-07-16T22:50:00+08:00;986.5714161074122 +yzh mirror;2025-07-16T23:00:00+08:00;999.0183693261691 +yzh mirror;2025-07-16T23:10:00+08:00;1017.5594436913085 +yzh mirror;2025-07-16T23:20:00+08:00;1096.0945071649803 +yzh mirror;2025-07-16T23:30:00+08:00;1326.7636206095358 +yzh mirror;2025-07-16T23:40:00+08:00;988.3904446484938 +yzh mirror;2025-07-16T23:50:00+08:00;954.5034460946076 +yzh mirror;2025-07-17T00:00:00+08:00;1115.1950570044435 +yzh mirror;2025-07-17T00:10:00+08:00;887.1956824663904 +yzh mirror;2025-07-17T00:20:00+08:00;1248.99994722993 +yzh mirror;2025-07-17T00:30:00+08:00;2539.7912923850777 +yzh mirror;2025-07-17T00:40:00+08:00;1640.0896221324983 +yzh mirror;2025-07-17T00:50:00+08:00;3083.6648598402953 +yzh mirror;2025-07-17T01:00:00+08:00;9932.926424793799 +yzh mirror;2025-07-17T01:10:00+08:00;2636.6090851388567 +yzh mirror;2025-07-17T01:20:00+08:00;2119.924010537234 +yzh mirror;2025-07-17T01:30:00+08:00;2525.5914712565454 +yzh mirror;2025-07-17T01:40:00+08:00;2094.3217413323114 +yzh mirror;2025-07-17T01:50:00+08:00;1843.864432059909 +yzh mirror;2025-07-17T02:00:00+08:00;2060.561409358393 +yzh mirror;2025-07-17T02:10:00+08:00;1704.97873974179 +yzh mirror;2025-07-17T02:20:00+08:00;986.7515525204923 +yzh mirror;2025-07-17T02:30:00+08:00;4372.427129669117 +yzh mirror;2025-07-17T02:40:00+08:00;4085.1609273673134 +yzh mirror;2025-07-17T02:50:00+08:00;1925.7643835349086 +yzh mirror;2025-07-17T03:00:00+08:00;999.2616669361602 +yzh mirror;2025-07-17T03:10:00+08:00;780.5655453653154 +yzh mirror;2025-07-17T03:20:00+08:00;2523.365869693429 +yzh mirror;2025-07-17T03:30:00+08:00;1814.116031538154 +yzh mirror;2025-07-17T03:40:00+08:00;846.6922449796443 +yzh mirror;2025-07-17T03:50:00+08:00;3813.0059978975605 +yzh mirror;2025-07-17T04:00:00+08:00;4023.9878987052543 +yzh mirror;2025-07-17T04:10:00+08:00;871.7811744837378 +yzh mirror;2025-07-17T04:20:00+08:00;952.9520935298963 +yzh mirror;2025-07-17T04:30:00+08:00;1695.877521404553 +yzh mirror;2025-07-17T04:40:00+08:00;2402.596598718994 +yzh mirror;2025-07-17T04:50:00+08:00;5658.290093392947 +yzh mirror;2025-07-17T05:00:00+08:00;4327.256223117087 +yzh mirror;2025-07-17T05:10:00+08:00;7759.709174446929 +yzh mirror;2025-07-17T05:20:00+08:00;3898.9603827375768 +yzh mirror;2025-07-17T05:30:00+08:00;3485.8946133746235 +yzh mirror;2025-07-17T05:40:00+08:00;4522.59206778581 +yzh mirror;2025-07-17T05:50:00+08:00;2358.38453148851 +yzh mirror;2025-07-17T06:00:00+08:00;4075.0553593520053 +yzh mirror;2025-07-17T06:10:00+08:00;1508.5335744732295 +yzh mirror;2025-07-17T06:20:00+08:00;4242.223637534969 +yzh mirror;2025-07-17T06:30:00+08:00;4047.545584362048 +yzh mirror;2025-07-17T06:40:00+08:00;1989.0567440430034 +yzh mirror;2025-07-17T06:50:00+08:00;2767.3815741376275 +yzh mirror;2025-07-17T07:00:00+08:00;2206.699444532069 +yzh mirror;2025-07-17T07:10:00+08:00;2093.039241911203 +yzh mirror;2025-07-17T07:20:00+08:00;2392.082956618889 +yzh mirror;2025-07-17T07:30:00+08:00;4168.764318557959 +yzh mirror;2025-07-17T07:40:00+08:00;3788.5180451085052 +yzh mirror;2025-07-17T07:50:00+08:00;3714.4323036435803 +yzh mirror;2025-07-17T08:00:00+08:00;2416.3451026820194 +yzh mirror;2025-07-17T08:10:00+08:00;2561.607392917118 +yzh mirror;2025-07-17T08:20:00+08:00;2344.8886241022037 +yzh mirror;2025-07-17T08:30:00+08:00;2048.0730466387504 +yzh mirror;2025-07-17T08:40:00+08:00;2430.0309269243767 +yzh mirror;2025-07-17T08:50:00+08:00;3008.714339105286 +yzh mirror;2025-07-17T09:00:00+08:00;2663.2158785782867 +yzh mirror;2025-07-17T09:10:00+08:00;3372.1291541588685 +yzh mirror;2025-07-17T09:20:00+08:00;3041.584323940157 +yzh mirror;2025-07-17T09:30:00+08:00;1660.8525546553874 +yzh mirror;2025-07-17T09:40:00+08:00;1809.761341828027 +yzh mirror;2025-07-17T09:50:00+08:00;1976.7089403115351 +yzh mirror;2025-07-17T10:00:00+08:00;2038.9951136792497 +yzh mirror;2025-07-17T10:10:00+08:00;1065.5302590943343 +yzh mirror;2025-07-17T10:20:00+08:00;1507.4401772851859 +yzh mirror;2025-07-17T10:30:00+08:00;2206.1898644012826 +yzh mirror;2025-07-17T10:40:00+08:00;2533.8430227659114 +yzh mirror;2025-07-17T10:50:00+08:00;1707.8208183494703 +yzh mirror;2025-07-17T11:00:00+08:00;2087.7666059851153 +yzh mirror;2025-07-17T11:10:00+08:00;1933.5315137707685 +yzh mirror;2025-07-17T11:20:00+08:00;1289.7343694159485 +yzh mirror;2025-07-17T11:30:00+08:00;5900.959261531746 +yzh mirror;2025-07-17T11:40:00+08:00;2110.000936736778 +yzh mirror;2025-07-17T11:50:00+08:00;2147.613615996375 +yzh mirror;2025-07-17T12:00:00+08:00;1785.528804054814 +yzh mirror;2025-07-17T12:10:00+08:00;1378.5575758520786 +yzh mirror;2025-07-17T12:20:00+08:00;2010.0647509331893 +yzh mirror;2025-07-17T12:30:00+08:00;1167.7481967847427 +yzh mirror;2025-07-17T12:40:00+08:00;1530.725452671755 +yzh mirror;2025-07-17T12:50:00+08:00;1536.0175271934638 +yzh mirror;2025-07-17T13:00:00+08:00;2127.283052989792 +yzh mirror;2025-07-17T13:10:00+08:00;1925.143657001537 +yzh mirror;2025-07-17T13:20:00+08:00;1843.833950247819 +yzh mirror;2025-07-17T13:30:00+08:00;1436.0971008200452 +yzh mirror;2025-07-17T13:40:00+08:00;1112.8851291410576 +yzh mirror;2025-07-17T13:50:00+08:00;1628.573080947674 +yzh mirror;2025-07-17T14:00:00+08:00;1085.0493041752645 +yzh mirror;2025-07-17T14:10:00+08:00;1414.464658856681 +yzh mirror;2025-07-17T14:20:00+08:00;961.4997278783151 +yzh mirror;2025-07-17T14:30:00+08:00;977.229539825342 +yzh mirror;2025-07-17T14:40:00+08:00;1985.976831676268 +yzh mirror;2025-07-17T14:50:00+08:00;1951.1433366058668 +yzh mirror;2025-07-17T15:00:00+08:00;982.3392122732655 +yzh mirror;2025-07-17T15:10:00+08:00;1493.544586761826 +yzh mirror;2025-07-17T15:20:00+08:00;946.4518140451128 +yzh mirror;2025-07-17T15:30:00+08:00;4439.986775749436 +yzh mirror;2025-07-17T15:40:00+08:00;2239.969348641859 +yzh mirror;2025-07-17T15:50:00+08:00;1696.831137234822 +yzh mirror;2025-07-17T16:00:00+08:00;2019.0702352784692 +yzh mirror;2025-07-17T16:10:00+08:00;4553.4183655529305 +yzh mirror;2025-07-17T16:20:00+08:00;2658.6859392669926 +yzh mirror;2025-07-17T16:30:00+08:00;1400.4004584291738 +yzh mirror;2025-07-17T16:40:00+08:00;1879.1341858385572 +yzh mirror;2025-07-17T16:50:00+08:00;1960.9276905823644 +yzh mirror;2025-07-17T17:00:00+08:00;3449.971660187023 +yzh mirror;2025-07-17T17:10:00+08:00;1568.9687174429855 +yzh mirror;2025-07-17T17:20:00+08:00;973.5748279775828 +yzh mirror;2025-07-17T17:30:00+08:00;1540.214377591221 +yzh mirror;2025-07-17T17:40:00+08:00;1224.4723023157678 +yzh mirror;2025-07-17T17:50:00+08:00;853.5020047202736 +yzh mirror;2025-07-17T18:00:00+08:00;834.571880945806 +yzh mirror;2025-07-17T18:10:00+08:00;832.2225331728255 +yzh mirror;2025-07-17T18:20:00+08:00;794.7729838156192 +yzh mirror;2025-07-17T18:30:00+08:00;824.8356107427088 +yzh mirror;2025-07-17T18:40:00+08:00;573.5524779062564 +yzh mirror;2025-07-17T18:50:00+08:00;771.6941487761098 +yzh mirror;2025-07-17T19:00:00+08:00;739.1195279575579 +yzh mirror;2025-07-17T19:10:00+08:00;743.5631052101669 +yzh mirror;2025-07-17T19:20:00+08:00;710.0101243354584 +yzh mirror;2025-07-17T19:30:00+08:00;707.7551705632336 +yzh mirror;2025-07-17T19:40:00+08:00;655.6375699269878 +yzh mirror;2025-07-17T19:50:00+08:00;1210.348373095455 +yzh mirror;2025-07-17T20:00:00+08:00;1338.442388482841 +yzh mirror;2025-07-17T20:10:00+08:00;1963.3001878105144 +yzh mirror;2025-07-17T20:20:00+08:00;1451.2311794679322 +yzh mirror;2025-07-17T20:30:00+08:00;1589.578574855268 +yzh mirror;2025-07-17T20:40:00+08:00;1773.5717860573072 +yzh mirror;2025-07-17T20:50:00+08:00;1608.03913252319 +yzh mirror;2025-07-17T21:00:00+08:00;1179.033457886184 +yzh mirror;2025-07-17T21:10:00+08:00;1334.9762733902162 +yzh mirror;2025-07-17T21:20:00+08:00;977.6450851869454 +yzh mirror;2025-07-17T21:30:00+08:00;947.7514533553805 +yzh mirror;2025-07-17T21:40:00+08:00;1149.2930162101916 +yzh mirror;2025-07-17T21:50:00+08:00;1824.1274611045478 +yzh mirror;2025-07-17T22:00:00+08:00;1110.625141005668 +yzh mirror;2025-07-17T22:10:00+08:00;890.3317276820223 +yzh mirror;2025-07-17T22:20:00+08:00;962.9122883878692 +yzh mirror;2025-07-17T22:30:00+08:00;932.4426012485683 +yzh mirror;2025-07-17T22:40:00+08:00;852.7811760934117 +yzh mirror;2025-07-17T22:50:00+08:00;806.2949839576075 +yzh mirror;2025-07-17T23:00:00+08:00;982.9108657478334 +yzh mirror;2025-07-17T23:10:00+08:00;875.799334441582 +yzh mirror;2025-07-17T23:20:00+08:00;977.6912316019415 +yzh mirror;2025-07-17T23:30:00+08:00;852.2620162928647 +yzh mirror;2025-07-17T23:40:00+08:00;917.7907782227473 +yzh mirror;2025-07-17T23:50:00+08:00;993.4678935658828 +yzh mirror;2025-07-18T00:00:00+08:00;2148.035887338302 +yzh mirror;2025-07-18T00:10:00+08:00;1984.9759753565886 +yzh mirror;2025-07-18T00:20:00+08:00;1822.891122399507 +yzh mirror;2025-07-18T00:30:00+08:00;1920.837497766348 +yzh mirror;2025-07-18T00:40:00+08:00;1352.4000225929076 +yzh mirror;2025-07-18T00:50:00+08:00;1024.4026342465088 +yzh mirror;2025-07-18T01:00:00+08:00;2291.796181021234 +yzh mirror;2025-07-18T01:10:00+08:00;4535.772607618563 +yzh mirror;2025-07-18T01:20:00+08:00;4837.3600664853875 +yzh mirror;2025-07-18T01:30:00+08:00;3834.611418365843 +yzh mirror;2025-07-18T01:40:00+08:00;8312.530339648587 +yzh mirror;2025-07-18T01:50:00+08:00;2416.1362672814903 +yzh mirror;2025-07-18T02:00:00+08:00;2150.4585344169273 +yzh mirror;2025-07-18T02:10:00+08:00;1011.7960567667395 +yzh mirror;2025-07-18T02:20:00+08:00;1209.9100122138404 +yzh mirror;2025-07-18T02:30:00+08:00;3568.234644892499 +yzh mirror;2025-07-18T02:40:00+08:00;3200.031223717012 +yzh mirror;2025-07-18T02:50:00+08:00;3141.8289412900854 +yzh mirror;2025-07-18T03:00:00+08:00;3206.8863566469236 +yzh mirror;2025-07-18T03:10:00+08:00;2902.573404402226 +yzh mirror;2025-07-18T03:20:00+08:00;1127.2191458378038 +yzh mirror;2025-07-18T03:30:00+08:00;1822.749257393737 +yzh mirror;2025-07-18T03:40:00+08:00;2663.2251121271615 +yzh mirror;2025-07-18T03:50:00+08:00;739.6451273634689 +yzh mirror;2025-07-18T04:00:00+08:00;4249.687842932712 +yzh mirror;2025-07-18T04:10:00+08:00;3955.3951548727728 +yzh mirror;2025-07-18T04:20:00+08:00;3643.9352822001742 +yzh mirror;2025-07-18T04:30:00+08:00;3491.2919034522897 +yzh mirror;2025-07-18T04:40:00+08:00;3400.6985917015345 +yzh mirror;2025-07-18T04:50:00+08:00;1584.2564353652588 +yzh mirror;2025-07-18T05:00:00+08:00;4623.994805605727 +yzh mirror;2025-07-18T05:10:00+08:00;3388.6680047943464 +yzh mirror;2025-07-18T05:20:00+08:00;4564.989875403319 +yzh mirror;2025-07-18T05:30:00+08:00;2432.5673904415507 +yzh mirror;2025-07-18T05:40:00+08:00;3456.816693631036 +yzh mirror;2025-07-18T05:50:00+08:00;3817.7455982944366 +yzh mirror;2025-07-18T06:00:00+08:00;2305.9154394036486 +yzh mirror;2025-07-18T06:10:00+08:00;3431.004916453707 +yzh mirror;2025-07-18T06:20:00+08:00;2790.1843716191524 +yzh mirror;2025-07-18T06:30:00+08:00;3974.732898899512 +yzh mirror;2025-07-18T06:40:00+08:00;3757.506619802596 +yzh mirror;2025-07-18T06:50:00+08:00;4389.941588814598 +yzh mirror;2025-07-18T07:00:00+08:00;2664.318971312314 +yzh mirror;2025-07-18T07:10:00+08:00;3144.2750775164645 +yzh mirror;2025-07-18T07:20:00+08:00;3713.660438832946 +yzh mirror;2025-07-18T07:30:00+08:00;2736.8704888174434 +yzh mirror;2025-07-18T07:40:00+08:00;7059.658186013385 +yzh mirror;2025-07-18T07:50:00+08:00;3721.280883714899 +yzh mirror;2025-07-18T08:00:00+08:00;2252.4360979717726 +yzh mirror;2025-07-18T08:10:00+08:00;2154.3828318518795 +yzh mirror;2025-07-18T08:20:00+08:00;1875.2961580687859 +yzh mirror;2025-07-18T08:30:00+08:00;2481.749066498979 +yzh mirror;2025-07-18T08:40:00+08:00;2167.7598059075735 +yzh mirror;2025-07-18T08:50:00+08:00;2433.0480699926284 +yzh mirror;2025-07-18T09:00:00+08:00;5863.2744465064125 +yzh mirror;2025-07-18T09:10:00+08:00;1652.6190993630448 +yzh mirror;2025-07-18T09:20:00+08:00;1854.4884213565124 +yzh mirror;2025-07-18T09:30:00+08:00;1879.1669646840382 +yzh mirror;2025-07-18T09:40:00+08:00;958.6191283629739 +yzh mirror;2025-07-18T09:50:00+08:00;1745.4132870995545 +yzh mirror;2025-07-18T10:00:00+08:00;1556.811119754997 +yzh mirror;2025-07-18T10:10:00+08:00;1688.4749527521149 +yzh mirror;2025-07-18T10:20:00+08:00;974.6650042738661 +yzh mirror;2025-07-18T10:30:00+08:00;1366.1788258787512 +yzh mirror;2025-07-18T10:40:00+08:00;1511.1054605465142 +yzh mirror;2025-07-18T10:50:00+08:00;2123.4928145614085 +yzh mirror;2025-07-18T11:00:00+08:00;3882.049097602594 +yzh mirror;2025-07-18T11:10:00+08:00;1887.5099566507597 +yzh mirror;2025-07-18T11:20:00+08:00;2779.6397179853598 +yzh mirror;2025-07-18T11:30:00+08:00;1922.0230945238527 +yzh mirror;2025-07-18T11:40:00+08:00;2052.825237371204 +yzh mirror;2025-07-18T11:50:00+08:00;2054.2530765293855 +yzh mirror;2025-07-18T12:00:00+08:00;1175.5116007364936 +yzh mirror;2025-07-18T12:10:00+08:00;1479.9712482937798 +yzh mirror;2025-07-18T12:20:00+08:00;1411.1383318140029 +yzh mirror;2025-07-18T12:30:00+08:00;1450.4712608529742 +yzh mirror;2025-07-18T12:40:00+08:00;1211.3104984975716 +yzh mirror;2025-07-18T12:50:00+08:00;1567.7981422356745 +yzh mirror;2025-07-18T13:00:00+08:00;2064.7458309846634 +yzh mirror;2025-07-18T13:10:00+08:00;1733.0799839639267 +yzh mirror;2025-07-18T13:20:00+08:00;985.8445796073019 +yzh mirror;2025-07-18T13:30:00+08:00;1122.6949632004412 +yzh mirror;2025-07-18T13:40:00+08:00;2083.524123416728 +yzh mirror;2025-07-18T13:50:00+08:00;2061.9675080949137 +yzh mirror;2025-07-18T14:00:00+08:00;1034.907785449099 +yzh mirror;2025-07-18T14:10:00+08:00;3818.122177610674 +yzh mirror;2025-07-18T14:20:00+08:00;1480.87487801591 +yzh mirror;2025-07-18T14:30:00+08:00;999.9747511212281 +yzh mirror;2025-07-18T14:40:00+08:00;1149.2918432858269 +yzh mirror;2025-07-18T14:50:00+08:00;945.7682391529884 +yzh mirror;2025-07-18T15:00:00+08:00;1349.1526605429235 +yzh mirror;2025-07-18T15:10:00+08:00;1156.4816680395354 +yzh mirror;2025-07-18T15:20:00+08:00;1057.9184714861954 +yzh mirror;2025-07-18T15:30:00+08:00;895.6440504369878 +yzh mirror;2025-07-18T15:40:00+08:00;969.1272100839606 +yzh mirror;2025-07-18T15:50:00+08:00;1533.770234605704 +yzh mirror;2025-07-18T16:00:00+08:00;1926.8241734485357 +yzh mirror;2025-07-18T16:10:00+08:00;1570.2809357482179 +yzh mirror;2025-07-18T16:20:00+08:00;2309.4565133111246 +yzh mirror;2025-07-18T16:30:00+08:00;2452.296310729647 +yzh mirror;2025-07-18T16:40:00+08:00;1729.4101134260168 +yzh mirror;2025-07-18T16:50:00+08:00;1546.209325161162 +yzh mirror;2025-07-18T17:00:00+08:00;2151.9528744379163 +yzh mirror;2025-07-18T17:10:00+08:00;1429.1269798997357 +yzh mirror;2025-07-18T17:20:00+08:00;2001.517333066166 +yzh mirror;2025-07-18T17:30:00+08:00;4635.908440221926 +yzh mirror;2025-07-18T17:40:00+08:00;1652.6172503531475 +yzh mirror;2025-07-18T17:50:00+08:00;2241.6784400444863 +yzh mirror;2025-07-18T18:00:00+08:00;1974.0851262493616 +yzh mirror;2025-07-18T18:10:00+08:00;1875.9483001548388 +yzh mirror;2025-07-18T18:20:00+08:00;1595.0604457386826 +yzh mirror;2025-07-18T18:30:00+08:00;1188.3437154651112 +yzh mirror;2025-07-18T18:40:00+08:00;1138.467554221481 +yzh mirror;2025-07-18T18:50:00+08:00;1436.9630919032038 +yzh mirror;2025-07-18T19:00:00+08:00;1049.593773784406 +yzh mirror;2025-07-18T19:10:00+08:00;1138.2917007595372 +yzh mirror;2025-07-18T19:20:00+08:00;1735.3508626395794 +yzh mirror;2025-07-18T19:30:00+08:00;1779.0765407974206 +yzh mirror;2025-07-18T19:40:00+08:00;1111.7305862788794 +yzh mirror;2025-07-18T19:50:00+08:00;979.8597630839738 +yzh mirror;2025-07-18T20:00:00+08:00;934.3371311402727 +yzh mirror;2025-07-18T20:10:00+08:00;983.8099393423211 +yzh mirror;2025-07-18T20:20:00+08:00;1346.703929715326 +yzh mirror;2025-07-18T20:30:00+08:00;1106.987939618792 +yzh mirror;2025-07-18T20:40:00+08:00;984.4180258489222 +yzh mirror;2025-07-18T20:50:00+08:00;947.0304992913881 +yzh mirror;2025-07-18T21:00:00+08:00;988.2513814153513 +yzh mirror;2025-07-18T21:10:00+08:00;986.1854986998603 +yzh mirror;2025-07-18T21:20:00+08:00;1190.5825872478977 +yzh mirror;2025-07-18T21:30:00+08:00;972.4099826587028 +yzh mirror;2025-07-18T21:40:00+08:00;1761.5568744600218 +yzh mirror;2025-07-18T21:50:00+08:00;1960.11716750452 +yzh mirror;2025-07-18T22:00:00+08:00;1766.2819894376066 +yzh mirror;2025-07-18T22:10:00+08:00;1134.0546638602696 +yzh mirror;2025-07-18T22:20:00+08:00;961.5609965882861 +yzh mirror;2025-07-18T22:30:00+08:00;952.9163036533114 +yzh mirror;2025-07-18T22:40:00+08:00;905.4960793559734 +yzh mirror;2025-07-18T22:50:00+08:00;934.5832583318748 +yzh mirror;2025-07-18T23:00:00+08:00;997.7848009660952 +yzh mirror;2025-07-18T23:10:00+08:00;958.7251777797267 +yzh mirror;2025-07-18T23:20:00+08:00;872.7782401081553 +yzh mirror;2025-07-18T23:30:00+08:00;873.7281371639568 +yzh mirror;2025-07-18T23:40:00+08:00;1199.2072763305034 +yzh mirror;2025-07-18T23:50:00+08:00;1396.6999931794098 +yzh mirror;2025-07-19T00:00:00+08:00;1581.0893438264643 +yzh mirror;2025-07-19T00:10:00+08:00;892.987700493763 +yzh mirror;2025-07-19T00:20:00+08:00;1791.4820538686768 +yzh mirror;2025-07-19T00:30:00+08:00;2470.710226175154 +yzh mirror;2025-07-19T00:40:00+08:00;2910.8337791667795 +yzh mirror;2025-07-19T00:50:00+08:00;2473.773876624322 +yzh mirror;2025-07-19T01:00:00+08:00;2258.377913008815 +yzh mirror;2025-07-19T01:10:00+08:00;3298.326739548197 +yzh mirror;2025-07-19T01:20:00+08:00;8972.419032320904 +yzh mirror;2025-07-19T01:30:00+08:00;3285.494909383525 +yzh mirror;2025-07-19T01:40:00+08:00;2408.46606166069 +yzh mirror;2025-07-19T01:50:00+08:00;4508.11098922259 +yzh mirror;2025-07-19T02:00:00+08:00;4782.834984668839 +yzh mirror;2025-07-19T02:10:00+08:00;1636.4236063092687 +yzh mirror;2025-07-19T02:20:00+08:00;1110.3255985236804 +yzh mirror;2025-07-19T02:30:00+08:00;2142.1139353782646 +yzh mirror;2025-07-19T02:40:00+08:00;2645.4142609407204 +yzh mirror;2025-07-19T02:50:00+08:00;4406.022735724315 +yzh mirror;2025-07-19T03:00:00+08:00;2191.764679768165 +yzh mirror;2025-07-19T03:10:00+08:00;2251.211223170313 +yzh mirror;2025-07-19T03:20:00+08:00;4538.512808352364 +yzh mirror;2025-07-19T03:30:00+08:00;3086.9294996406807 +yzh mirror;2025-07-19T03:40:00+08:00;3331.1237405623915 +yzh mirror;2025-07-19T03:50:00+08:00;2125.85047651484 +yzh mirror;2025-07-19T04:00:00+08:00;3967.996561374478 +yzh mirror;2025-07-19T04:10:00+08:00;2893.4897436997535 +yzh mirror;2025-07-19T04:20:00+08:00;3489.445087028763 +yzh mirror;2025-07-19T04:30:00+08:00;2229.3405574030567 +yzh mirror;2025-07-19T04:40:00+08:00;2903.3603434399965 +yzh mirror;2025-07-19T04:50:00+08:00;1315.612909334515 +yzh mirror;2025-07-19T05:00:00+08:00;2395.3509264040113 +yzh mirror;2025-07-19T05:10:00+08:00;4174.664695047312 +yzh mirror;2025-07-19T05:20:00+08:00;2361.6010585923605 +yzh mirror;2025-07-19T05:30:00+08:00;3380.8375451299353 +yzh mirror;2025-07-19T05:40:00+08:00;3997.550719775918 +yzh mirror;2025-07-19T05:50:00+08:00;2541.4398506697335 +yzh mirror;2025-07-19T06:00:00+08:00;3478.68014157751 +yzh mirror;2025-07-19T06:10:00+08:00;4571.984115571595 +yzh mirror;2025-07-19T06:20:00+08:00;3504.6479525024956 +yzh mirror;2025-07-19T06:30:00+08:00;2539.667843967536 +yzh mirror;2025-07-19T06:40:00+08:00;2721.9973776980996 +yzh mirror;2025-07-19T06:50:00+08:00;2302.963637022847 +yzh mirror;2025-07-19T07:00:00+08:00;3266.718876648647 +yzh mirror;2025-07-19T07:10:00+08:00;1747.656810040837 +yzh mirror;2025-07-19T07:20:00+08:00;2268.103604633445 +yzh mirror;2025-07-19T07:30:00+08:00;2802.1284880579233 +yzh mirror;2025-07-19T07:40:00+08:00;2291.74468175575 +yzh mirror;2025-07-19T07:50:00+08:00;1990.1303686865137 +yzh mirror;2025-07-19T08:00:00+08:00;3554.35427442079 +yzh mirror;2025-07-19T08:10:00+08:00;2842.191084897661 +yzh mirror;2025-07-19T08:20:00+08:00;2081.378138287003 +yzh mirror;2025-07-19T08:30:00+08:00;2140.272745722127 +yzh mirror;2025-07-19T08:40:00+08:00;1931.4149091961594 +yzh mirror;2025-07-19T08:50:00+08:00;2403.3603128750747 +yzh mirror;2025-07-19T09:00:00+08:00;2444.6190767292755 +yzh mirror;2025-07-19T09:10:00+08:00;2170.0472886928574 +yzh mirror;2025-07-19T09:20:00+08:00;2923.5117555894467 +yzh mirror;2025-07-19T09:30:00+08:00;2020.4495396468108 +yzh mirror;2025-07-19T09:40:00+08:00;1966.5161615208835 +yzh mirror;2025-07-19T09:50:00+08:00;1844.7581184700025 +yzh mirror;2025-07-19T10:00:00+08:00;2312.0091803635214 +yzh mirror;2025-07-19T10:10:00+08:00;1623.918988617825 +yzh mirror;2025-07-19T10:20:00+08:00;2108.77320504029 +yzh mirror;2025-07-19T10:30:00+08:00;2129.421363079902 +yzh mirror;2025-07-19T10:40:00+08:00;2068.81527467214 +yzh mirror;2025-07-19T10:50:00+08:00;1758.261926290303 +yzh mirror;2025-07-19T11:00:00+08:00;1777.4613698646322 +yzh mirror;2025-07-19T11:10:00+08:00;1663.0465032415618 +yzh mirror;2025-07-19T11:20:00+08:00;1157.4017265839848 +yzh mirror;2025-07-19T11:30:00+08:00;2111.780705135152 +yzh mirror;2025-07-19T11:40:00+08:00;1943.9983336815799 +yzh mirror;2025-07-19T11:50:00+08:00;2234.081214439946 +yzh mirror;2025-07-19T12:00:00+08:00;1697.2296451136267 +yzh mirror;2025-07-19T12:10:00+08:00;2150.165367345817 +yzh mirror;2025-07-19T12:20:00+08:00;2077.978840415742 +yzh mirror;2025-07-19T12:30:00+08:00;2034.5546368861703 +yzh mirror;2025-07-19T12:40:00+08:00;1682.0071690935279 +yzh mirror;2025-07-19T12:50:00+08:00;2304.7237309690536 +yzh mirror;2025-07-19T13:00:00+08:00;2318.8076775293293 +yzh mirror;2025-07-19T13:10:00+08:00;1617.074993169459 +yzh mirror;2025-07-19T13:20:00+08:00;1993.3510533886226 +yzh mirror;2025-07-19T13:30:00+08:00;1074.9077219229307 +yzh mirror;2025-07-19T13:40:00+08:00;1636.4612279509452 +yzh mirror;2025-07-19T13:50:00+08:00;1378.8570269700429 +yzh mirror;2025-07-19T14:00:00+08:00;1147.9578366172047 +yzh mirror;2025-07-19T14:10:00+08:00;1242.6549967671403 +yzh mirror;2025-07-19T14:20:00+08:00;1639.2136574858805 +yzh mirror;2025-07-19T14:30:00+08:00;1828.4292303706266 +yzh mirror;2025-07-19T14:40:00+08:00;1722.8406482957016 +yzh mirror;2025-07-19T14:50:00+08:00;978.6108934117283 +yzh mirror;2025-07-19T15:00:00+08:00;971.2341509114542 +yzh mirror;2025-07-19T15:10:00+08:00;1229.8490945614997 +yzh mirror;2025-07-19T15:20:00+08:00;1981.7071431618367 +yzh mirror;2025-07-19T15:30:00+08:00;2174.838596051444 +yzh mirror;2025-07-19T15:40:00+08:00;1783.2430999382111 +yzh mirror;2025-07-19T15:50:00+08:00;1392.8742842479492 +yzh mirror;2025-07-19T16:00:00+08:00;1716.2554589241577 +yzh mirror;2025-07-19T16:10:00+08:00;1105.2477180851959 +yzh mirror;2025-07-19T16:20:00+08:00;1139.136993703097 +yzh mirror;2025-07-19T16:30:00+08:00;2011.786264499662 +yzh mirror;2025-07-19T16:40:00+08:00;1700.6197091423637 +yzh mirror;2025-07-19T16:50:00+08:00;2006.2692454172907 +yzh mirror;2025-07-19T17:00:00+08:00;1821.8035265936883 +yzh mirror;2025-07-19T17:10:00+08:00;1092.5830022381388 +yzh mirror;2025-07-19T17:20:00+08:00;880.3584156820364 +yzh mirror;2025-07-19T17:30:00+08:00;823.5763359537907 +yzh mirror;2025-07-19T17:40:00+08:00;736.9476112419947 +yzh mirror;2025-07-19T17:50:00+08:00;818.2245556253904 +yzh mirror;2025-07-19T18:00:00+08:00;901.2185797571644 +yzh mirror;2025-07-19T18:10:00+08:00;766.1032206945695 +yzh mirror;2025-07-19T18:20:00+08:00;806.095915995264 +yzh mirror;2025-07-19T18:30:00+08:00;666.7445036630113 +yzh mirror;2025-07-19T18:40:00+08:00;788.4749802095389 +yzh mirror;2025-07-19T18:50:00+08:00;817.7539165892654 +yzh mirror;2025-07-19T19:00:00+08:00;753.2604663831464 +yzh mirror;2025-07-19T19:10:00+08:00;786.2917828087094 +yzh mirror;2025-07-19T19:20:00+08:00;587.7840184440997 +yzh mirror;2025-07-19T19:30:00+08:00;758.170100678693 +yzh mirror;2025-07-19T19:40:00+08:00;839.1864507219523 +yzh mirror;2025-07-19T19:50:00+08:00;727.2101728557054 +yzh mirror;2025-07-19T20:00:00+08:00;596.6387814657262 +yzh mirror;2025-07-19T20:10:00+08:00;1753.3708060694473 +yzh mirror;2025-07-19T20:20:00+08:00;1805.3900791616397 +yzh mirror;2025-07-19T20:30:00+08:00;1348.6824338999704 +yzh mirror;2025-07-19T20:40:00+08:00;1597.8890416613228 +yzh mirror;2025-07-19T20:50:00+08:00;1515.7147299281232 +yzh mirror;2025-07-19T21:00:00+08:00;2221.3222020785606 +yzh mirror;2025-07-19T21:10:00+08:00;1170.363688006817 +yzh mirror;2025-07-19T21:20:00+08:00;1723.8361304503474 +yzh mirror;2025-07-19T21:30:00+08:00;1629.3184825919018 +yzh mirror;2025-07-19T21:40:00+08:00;991.5211291170334 +yzh mirror;2025-07-19T21:50:00+08:00;1808.2306987431934 +yzh mirror;2025-07-19T22:00:00+08:00;1093.973917415203 +yzh mirror;2025-07-19T22:10:00+08:00;1685.8338815112634 +yzh mirror;2025-07-19T22:20:00+08:00;952.8215978334335 +yzh mirror;2025-07-19T22:30:00+08:00;2413.0783245115463 +yzh mirror;2025-07-19T22:40:00+08:00;978.6823416995637 +yzh mirror;2025-07-19T22:50:00+08:00;1351.9191547679745 +yzh mirror;2025-07-19T23:00:00+08:00;984.7307722466672 +yzh mirror;2025-07-19T23:10:00+08:00;981.9063880181116 +yzh mirror;2025-07-19T23:20:00+08:00;987.517857505693 +yzh mirror;2025-07-19T23:30:00+08:00;1076.5884579001827 +yzh mirror;2025-07-19T23:40:00+08:00;976.0392769272581 +yzh mirror;2025-07-19T23:50:00+08:00;1956.2962645525768 +yzh mirror;2025-07-20T00:00:00+08:00;1407.1457703439694 +yzh mirror;2025-07-20T00:10:00+08:00;2368.1347328935144 +yzh mirror;2025-07-20T00:20:00+08:00;3591.0982210103866 +yzh mirror;2025-07-20T00:30:00+08:00;2028.065147394541 +yzh mirror;2025-07-20T00:40:00+08:00;2232.395224136196 +yzh mirror;2025-07-20T00:50:00+08:00;2392.6455436923416 +yzh mirror;2025-07-20T01:00:00+08:00;5523.89614319348 +yzh mirror;2025-07-20T01:10:00+08:00;2797.219277628105 +yzh mirror;2025-07-20T01:20:00+08:00;4651.265180607962 +yzh mirror;2025-07-20T01:30:00+08:00;6260.8852174695785 +yzh mirror;2025-07-20T01:40:00+08:00;5371.679358148087 +yzh mirror;2025-07-20T01:50:00+08:00;3964.0897651848572 +yzh mirror;2025-07-20T02:00:00+08:00;5306.5126855409835 +yzh mirror;2025-07-20T02:10:00+08:00;1911.0882969220875 +yzh mirror;2025-07-20T02:20:00+08:00;1903.2536785389818 +yzh mirror;2025-07-20T02:30:00+08:00;6107.891997053988 +yzh mirror;2025-07-20T02:40:00+08:00;3493.1382763394095 +yzh mirror;2025-07-20T02:50:00+08:00;2171.7245948856216 +yzh mirror;2025-07-20T03:00:00+08:00;3506.512568776347 +yzh mirror;2025-07-20T03:10:00+08:00;2463.7633722698783 +yzh mirror;2025-07-20T03:20:00+08:00;3962.9650103959875 +yzh mirror;2025-07-20T03:30:00+08:00;2988.480615695439 +yzh mirror;2025-07-20T03:40:00+08:00;882.9163948013736 +yzh mirror;2025-07-20T03:50:00+08:00;4442.624442281647 +yzh mirror;2025-07-20T04:00:00+08:00;4236.484053889304 +yzh mirror;2025-07-20T04:10:00+08:00;9595.099746667433 +yzh mirror;2025-07-20T04:20:00+08:00;4736.817511899975 +yzh mirror;2025-07-20T04:30:00+08:00;1834.0033459023477 +yzh mirror;2025-07-20T04:40:00+08:00;2328.6324211918036 +yzh mirror;2025-07-20T04:50:00+08:00;3248.4539136379744 +yzh mirror;2025-07-20T05:00:00+08:00;8755.750504824384 +yzh mirror;2025-07-20T05:10:00+08:00;2368.958676923672 +yzh mirror;2025-07-20T05:20:00+08:00;5228.1633976074145 +yzh mirror;2025-07-20T05:30:00+08:00;5123.6613396705925 +yzh mirror;2025-07-20T05:40:00+08:00;7866.968460325672 +yzh mirror;2025-07-20T05:50:00+08:00;7609.769827211721 +yzh mirror;2025-07-20T06:00:00+08:00;6721.86927525731 +yzh mirror;2025-07-20T06:10:00+08:00;4902.663308230864 +yzh mirror;2025-07-20T06:20:00+08:00;3890.759130129094 +yzh mirror;2025-07-20T06:30:00+08:00;5952.49749617845 +yzh mirror;2025-07-20T06:40:00+08:00;5483.167908041143 +yzh mirror;2025-07-20T06:50:00+08:00;3867.0850676378213 +yzh mirror;2025-07-20T07:00:00+08:00;4546.177775886636 +yzh mirror;2025-07-20T07:10:00+08:00;5782.487550372498 +yzh mirror;2025-07-20T07:20:00+08:00;4757.833817135812 +yzh mirror;2025-07-20T07:30:00+08:00;4941.285203964401 +yzh mirror;2025-07-20T07:40:00+08:00;7048.408958144057 +yzh mirror;2025-07-20T07:50:00+08:00;5387.481366630768 +yzh mirror;2025-07-20T08:00:00+08:00;5214.728961231607 +yzh mirror;2025-07-20T08:10:00+08:00;3829.980351720671 +yzh mirror;2025-07-20T08:20:00+08:00;3473.2153952886288 +yzh mirror;2025-07-20T08:30:00+08:00;2203.318148838711 +yzh mirror;2025-07-20T08:40:00+08:00;2832.5103980958834 +yzh mirror;2025-07-20T08:50:00+08:00;2395.2746457770377 +yzh mirror;2025-07-20T09:00:00+08:00;2467.5601615091446 +yzh mirror;2025-07-20T09:10:00+08:00;3977.9309477163533 +yzh mirror;2025-07-20T09:20:00+08:00;2432.841411709906 +yzh mirror;2025-07-20T09:30:00+08:00;2280.6331108764875 +yzh mirror;2025-07-20T09:40:00+08:00;1946.996102791816 +yzh mirror;2025-07-20T09:50:00+08:00;3030.0099719117316 +yzh mirror;2025-07-20T10:00:00+08:00;4247.059868592366 +yzh mirror;2025-07-20T10:10:00+08:00;3717.079083601439 +yzh mirror;2025-07-20T10:20:00+08:00;3041.6470852516077 +yzh mirror;2025-07-20T10:30:00+08:00;2716.1155204026177 +yzh mirror;2025-07-20T10:40:00+08:00;2378.1583374016204 +yzh mirror;2025-07-20T10:50:00+08:00;2053.961051204459 +yzh mirror;2025-07-20T11:00:00+08:00;2433.539035816521 +yzh mirror;2025-07-20T11:10:00+08:00;3077.506359543496 +yzh mirror;2025-07-20T11:20:00+08:00;2108.5543372605744 +yzh mirror;2025-07-20T11:30:00+08:00;1539.5704274436816 +yzh mirror;2025-07-20T11:40:00+08:00;2102.6387660367704 +yzh mirror;2025-07-20T11:50:00+08:00;1831.5111570017648 +yzh mirror;2025-07-20T12:00:00+08:00;3417.178701081897 +yzh mirror;2025-07-20T12:10:00+08:00;1336.3545877766821 +yzh mirror;2025-07-20T12:20:00+08:00;1849.24712646549 +yzh mirror;2025-07-20T12:30:00+08:00;1973.5056172383304 +yzh mirror;2025-07-20T12:40:00+08:00;997.5111867956609 +yzh mirror;2025-07-20T12:50:00+08:00;2098.690329486655 +yzh mirror;2025-07-20T13:00:00+08:00;1730.1217061054194 +yzh mirror;2025-07-20T13:10:00+08:00;2231.199847159566 +yzh mirror;2025-07-20T13:20:00+08:00;1730.3482917434067 +yzh mirror;2025-07-20T13:30:00+08:00;2207.5307078102624 +yzh mirror;2025-07-20T13:40:00+08:00;3944.6680856233074 +yzh mirror;2025-07-20T13:50:00+08:00;2719.6851141968414 +yzh mirror;2025-07-20T14:00:00+08:00;4163.642595005619 +yzh mirror;2025-07-20T14:10:00+08:00;1587.9076922380518 +yzh mirror;2025-07-20T14:20:00+08:00;1978.2350337345729 +yzh mirror;2025-07-20T14:30:00+08:00;1725.194174823558 +yzh mirror;2025-07-20T14:40:00+08:00;2002.5940813271898 +yzh mirror;2025-07-20T14:50:00+08:00;1420.7683842781707 +yzh mirror;2025-07-20T15:00:00+08:00;2846.167637706844 +yzh mirror;2025-07-20T15:10:00+08:00;983.6529273416993 +yzh mirror;2025-07-20T15:20:00+08:00;1676.1860418154874 +yzh mirror;2025-07-20T15:30:00+08:00;1718.585283518632 +yzh mirror;2025-07-20T15:40:00+08:00;2035.574563790951 +yzh mirror;2025-07-20T15:50:00+08:00;1638.7681287228706 +yzh mirror;2025-07-20T16:00:00+08:00;1308.7865888863423 +yzh mirror;2025-07-20T16:10:00+08:00;1729.1597046001764 +yzh mirror;2025-07-20T16:20:00+08:00;2101.419705293514 +yzh mirror;2025-07-20T16:30:00+08:00;2226.0924677992716 +yzh mirror;2025-07-20T16:40:00+08:00;1819.1904431848802 +yzh mirror;2025-07-20T16:50:00+08:00;1425.0447085476098 +yzh mirror;2025-07-20T17:00:00+08:00;976.1282504308774 +yzh mirror;2025-07-20T17:10:00+08:00;981.2920039108203 +yzh mirror;2025-07-20T17:20:00+08:00;799.8491789657742 +yzh mirror;2025-07-20T17:30:00+08:00;941.8821153029686 +yzh mirror;2025-07-20T17:40:00+08:00;859.9412733162934 +yzh mirror;2025-07-20T17:50:00+08:00;798.0052713624015 +yzh mirror;2025-07-20T18:00:00+08:00;791.6205848898006 +yzh mirror;2025-07-20T18:10:00+08:00;668.9311710910653 +yzh mirror;2025-07-20T18:20:00+08:00;834.8646886050674 +yzh mirror;2025-07-20T18:30:00+08:00;989.2170447729574 +yzh mirror;2025-07-20T18:40:00+08:00;778.2216895246363 +yzh mirror;2025-07-20T18:50:00+08:00;1519.5927129637541 +yzh mirror;2025-07-20T19:00:00+08:00;943.3619815625169 +yzh mirror;2025-07-20T19:10:00+08:00;1177.8507791754832 +yzh mirror;2025-07-20T19:20:00+08:00;1142.5377433236204 +yzh mirror;2025-07-20T19:30:00+08:00;978.3082149636962 +yzh mirror;2025-07-20T19:40:00+08:00;966.829675036818 +yzh mirror;2025-07-20T19:50:00+08:00;1074.869916721555 +yzh mirror;2025-07-20T20:00:00+08:00;1671.4982553206873 +yzh mirror;2025-07-20T20:10:00+08:00;1486.380955111823 +yzh mirror;2025-07-20T20:20:00+08:00;930.6991623065226 +yzh mirror;2025-07-20T20:30:00+08:00;926.3515969647566 +yzh mirror;2025-07-20T20:40:00+08:00;1410.737357272556 +yzh mirror;2025-07-20T20:50:00+08:00;1566.5652968983827 +yzh mirror;2025-07-20T21:00:00+08:00;1931.7392509345987 +yzh mirror;2025-07-20T21:10:00+08:00;975.4920503676417 +yzh mirror;2025-07-20T21:20:00+08:00;978.7200704366692 +yzh mirror;2025-07-20T21:30:00+08:00;985.4716284177384 +yzh mirror;2025-07-20T21:40:00+08:00;999.4088600931004 +yzh mirror;2025-07-20T21:50:00+08:00;1097.7490182845968 +yzh mirror;2025-07-20T22:00:00+08:00;1377.6125674293462 +yzh mirror;2025-07-20T22:10:00+08:00;910.9410775276342 +yzh mirror;2025-07-20T22:20:00+08:00;949.8674562838163 +yzh mirror;2025-07-20T22:30:00+08:00;961.6519603435861 +yzh mirror;2025-07-20T22:40:00+08:00;1044.6919357643826 +yzh mirror;2025-07-20T22:50:00+08:00;975.6936671502386 +yzh mirror;2025-07-20T23:00:00+08:00;1214.2603377605967 +yzh mirror;2025-07-20T23:10:00+08:00;805.8411100382195 +yzh mirror;2025-07-20T23:20:00+08:00;1359.0990224904117 +yzh mirror;2025-07-20T23:30:00+08:00;1517.1013972196542 +yzh mirror;2025-07-20T23:40:00+08:00;1698.7058809256505 +yzh mirror;2025-07-20T23:50:00+08:00;1677.2533652580005 +yzh mirror;2025-07-21T00:00:00+08:00;1656.7728491895791 \ No newline at end of file diff --git a/docs/api/.gitkeep b/docs/api/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/docs/design/.gitkeep b/docs/design/.gitkeep new file mode 100644 index 0000000..e69de29 From 5763d80a951b06a9a192124dc2ea1beba18e1d04 Mon Sep 17 00:00:00 2001 From: wqyhahaha <113168235+wqyhahaha@users.noreply.github.com> Date: Tue, 26 Aug 2025 16:50:24 +0800 Subject: [PATCH 3/7] =?UTF-8?q?Create=20=E5=BC=82=E5=B8=B8=E6=A3=80?= =?UTF-8?q?=E6=B5=8B=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 关于异常检测分层设计的逻辑 --- ...3\200\346\265\213\351\200\273\350\276\221" | 204 ++++++++++++++++++ 1 file changed, 204 insertions(+) create mode 100644 "\345\274\202\345\270\270\346\243\200\346\265\213\351\200\273\350\276\221" diff --git "a/\345\274\202\345\270\270\346\243\200\346\265\213\351\200\273\350\276\221" "b/\345\274\202\345\270\270\346\243\200\346\265\213\351\200\273\350\276\221" new file mode 100644 index 0000000..6ae49f2 --- /dev/null +++ "b/\345\274\202\345\270\270\346\243\200\346\265\213\351\200\273\350\276\221" @@ -0,0 +1,204 @@ +# 时序异常检测系统 + +## 项目概述 + +本项目实现了一个基于分层策略的时序异常检测系统,专门针对运维场景设计,有效解决报警疲劳问题。系统采用**第一层STL分解检测 + 第二层智能过滤**的架构,将原始时序数据转化为真正有价值的运维告警。 + +## 🎯 核心特性 + +### 分层检测策略 +- **第一层**: STL分解 + 点异常检测 +- **第二层**: 异常模式识别 + 智能聚合 +- **输出**: 结构化的告警事件 + +### 检测效果 +- 从1009个数据点 → 51个异常点 → **5个关键事件** +- 误报减少90% +- 提供明确的处理优先级 + +## 📊 整体检测逻辑 + +``` +输入数据 → 第一层检测 → 第二层过滤 → 事件推送 + ↓ ↓ ↓ ↓ +yzh_mirror STL分解 智能规则 运维告警 + 数据 异常检测 事件聚合 结构化输出 +``` + +### 1. 输入数据格式 +```csv +"Series";Time;Value +yzh mirror;2025-07-14T00:00:00+08:00;2392.4649649735443 +yzh mirror;2025-07-14T00:10:00+08:00;1499.0522545027752 +... +``` + +### 2. 第一层:STL异常检测 +**文件**: `stl_anomaly_detection.py` + +**检测原理**: +- 使用STL(Seasonal and Trend decomposition using Loess)分解时序数据 +- 将时间序列分解为:趋势(Trend) + 季节性(Seasonal) + 残差(Residual) +- 基于残差的Z-Score进行异常检测 + +**异常分级**: +- **轻微异常**: 95%分位数 (|z-score| > 1.96) +- **明显异常**: 98%分位数 (|z-score| > 2.33) +- **严重异常**: 99.5%分位数 (|z-score| > 2.81) + +**输出**: `stl_anomaly_results.csv` +```csv +Time,Value,trend,seasonal,residual,anomaly_score,anomaly_level +2025-07-14 16:30:00+08:00,34109.27,2099.01,-739.17,32749.43,22.92,severe +... +``` + +### 3. 第二层:智能过滤规则 +**文件**: `second_layer_filter.py` + +**过滤流程**: + +#### 步骤1: 粗筛过滤 +- 保留severe和moderate异常 +- 保留mild异常但分数≥2.0的点 +- 过滤掉:971个数据点 → 38个异常点 + +#### 步骤2: 事件合并 +- 30分钟内相邻异常点合并为一个事件窗口 +- 计算事件统计信息:异常数量、密度、最高分、平均分 +- 合并结果:30个异常事件 + +#### 步骤3: 事件分级 +**严重事件条件**(满足任一): +- max_score ≥ 3.0,或 +- 异常密度 ≥ 10% 且 异常数量 ≥ 5 + +**中等事件条件**(满足任一): +- 2.0 ≤ max_score < 3.0,或 +- 异常密度 ≥ 5% 且 异常数量 ≥ 3 + +**尖峰去噪**: +- 1-2个异常点的事件需要分数≥4.0才保留 + +#### 步骤4: 去重限流 +- 60分钟内相似事件去重 +- 每日最多5个事件 +- 按严重程度和分数排序 + +**输出文件**: +- `second_layer_events.csv` - 事件数据 +- `alert_messages.json` - 告警消息 +- `daily_summary.json` - 每日统计 + +### 4. 事件推送格式 +**告警消息结构**: +```json +{ + "title": "[严重] 指标异常事件", + "date": "2025-07-14", + "time_window": "16:30", + "stats": "异常点: 1个, 密度: 100.0%, 最高分: 22.92", + "sample_points": [ + {"time": "16:30", "value": "34109", "score": "22.92"} + ], + "hint": "孤立尖峰异常", + "severity_level": "severe", + "max_score": 22.92 +} +``` + +## 📈 实际检测结果 + +### 数据统计 +| 阶段 | 数量 | 说明 | +|------|------|------| +| 原始数据 | 1009个点 | 7天时序数据 | +| 第一层检测 | 51个异常点 | STL分解结果 | +| 第二层过滤 | **5个关键事件** | 最终告警事件 | + +### 事件分布 +- **严重事件**: 4个(需要立即处理) +- **中等事件**: 1个(需要关注) +- **时间分布**: 2025-07-14, 2025-07-15, 2025-07-17, 2025-07-20 + +### 典型异常事件 +1. **2025-07-14 16:30** - 孤立尖峰异常(分数22.92) +2. **2025-07-15 15:30** - 孤立尖峰异常(分数4.16) +3. **2025-07-17 04:10-04:50** - 持续性异常波动(分数2.56) +4. **2025-07-20 03:40-04:10** - 持续性异常波动(分数4.59) +5. **2025-07-20 05:00-06:00** - 持续性异常波动(分数4.00) + +## 🛠️ 使用方法 + +### 环境要求 +```bash +pip install pandas numpy matplotlib seaborn scipy statsmodels +``` + +### 运行流程 + +#### 方法1: 分步执行 +```bash +# 1. 第一层STL异常检测 +python3 stl_anomaly_detection.py + +# 2. 第二层智能过滤 +python3 second_layer_filter.py + +# 3. 查看结果 +cat second_layer_events.csv +cat alert_messages.json +``` + +## ⚙️ 配置参数 + +### 第一层配置 +```python +seasonal_period = 144 # 季节性周期(24小时) +threshold_percentiles = [95, 98, 99.5] # 异常阈值 +``` + +### 第二层配置 +```python +max_gap_minutes = 30 # 事件合并间隔 +severe_thresholds = { + 'max_score': 3.0, # 严重异常分数阈值 + 'density': 0.1, # 异常密度阈值(10%) + 'min_count': 5 # 最小异常数量 +} +spike_threshold = 4.0 # 尖峰保留阈值 +max_daily_events = 5 # 每日最大事件数 +``` + +## 📋 运维建议 + +### 立即处理(严重事件) +- 检查系统负载、网络连接、数据库性能 +- 重点关注孤立尖峰异常(分数>4.0) +- 建立快速响应机制 + +### 持续监控(中等事件) +- 观察异常模式变化趋势 +- 如持续出现需升级处理 +- 定期分析异常原因 + +### 系统优化 +- 建立异常处理流程和回滚机制 +- 定期分析异常模式,优化系统稳定性 +- 根据业务特点调整检测参数 + +## 🔧 扩展功能 + +### 已实现功能 +- ✅ STL分解异常检测 +- ✅ 智能事件过滤 +- ✅ 结构化告警输出 +- ✅ 每日统计汇总 + +### 可扩展功能 +- 🔄 实时流数据处理 +- 🔄 多指标关联分析 +- 🔄 机器学习异常检测 +- 🔄 告警推送集成 +- 🔄 可视化仪表板 + From 983fb158a46807fc5d8656a0e267b2a250556139 Mon Sep 17 00:00:00 2001 From: wqyhahaha <113168235+wqyhahaha@users.noreply.github.com> Date: Tue, 26 Aug 2025 16:50:47 +0800 Subject: [PATCH 4/7] =?UTF-8?q?Rename=20=E5=BC=82=E5=B8=B8=E6=A3=80?= =?UTF-8?q?=E6=B5=8B=E9=80=BB=E8=BE=91=20to=20=E5=BC=82=E5=B8=B8=E6=A3=80?= =?UTF-8?q?=E6=B5=8B=E9=80=BB=E8=BE=91.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...45\270\270\346\243\200\346\265\213\351\200\273\350\276\221.md" | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename "\345\274\202\345\270\270\346\243\200\346\265\213\351\200\273\350\276\221" => "\345\274\202\345\270\270\346\243\200\346\265\213\351\200\273\350\276\221.md" (100%) diff --git "a/\345\274\202\345\270\270\346\243\200\346\265\213\351\200\273\350\276\221" "b/\345\274\202\345\270\270\346\243\200\346\265\213\351\200\273\350\276\221.md" similarity index 100% rename from "\345\274\202\345\270\270\346\243\200\346\265\213\351\200\273\350\276\221" rename to "\345\274\202\345\270\270\346\243\200\346\265\213\351\200\273\350\276\221.md" From ffa8819fac8c36820a183ca461cbb0fda09198a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Cwqyhahaha=E2=80=9D?= <1803324225@qq.com> Date: Tue, 26 Aug 2025 16:51:51 +0800 Subject: [PATCH 5/7] refactor: remove legacy anomaly_detection folder (replaced by Code/Data layout) --- .../analyze_second_layer_results.py | 139 --- .../second_layer_aggregations.csv | 14 - anomaly_detection/second_layer_detector.py | 200 ---- anomaly_detection/second_layer_patterns.csv | 42 - anomaly_detection/stl_anomaly_detection.py | 405 ------- anomaly_detection/stl_anomaly_results.csv | 1010 ----------------- 6 files changed, 1810 deletions(-) delete mode 100644 anomaly_detection/analyze_second_layer_results.py delete mode 100644 anomaly_detection/second_layer_aggregations.csv delete mode 100644 anomaly_detection/second_layer_detector.py delete mode 100644 anomaly_detection/second_layer_patterns.csv delete mode 100644 anomaly_detection/stl_anomaly_detection.py delete mode 100644 anomaly_detection/stl_anomaly_results.csv diff --git a/anomaly_detection/analyze_second_layer_results.py b/anomaly_detection/analyze_second_layer_results.py deleted file mode 100644 index 14c77a1..0000000 --- a/anomaly_detection/analyze_second_layer_results.py +++ /dev/null @@ -1,139 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- -""" -分析第二层异常检测结果 -""" - -import pandas as pd -import numpy as np - -def analyze_second_layer_results(): - """分析第二层异常检测结果""" - - print("=== Second Layer Results Analysis ===\n") - - # 读取结果文件 - patterns_df = pd.read_csv('second_layer_patterns.csv') - aggregations_df = pd.read_csv('second_layer_aggregations.csv') - - # 转换时间列 - patterns_df['time'] = pd.to_datetime(patterns_df['time']) - aggregations_df['start_time'] = pd.to_datetime(aggregations_df['start_time']) - aggregations_df['end_time'] = pd.to_datetime(aggregations_df['end_time']) - - print("1. 异常模式分析") - print("=" * 50) - print(f"总检测到的异常模式数量: {len(patterns_df)}") - print(f"异常模式类型: {patterns_df['type'].unique()}") - - # 分析尖峰异常 - spike_patterns = patterns_df[patterns_df['type'] == 'spike'] - print(f"\n尖峰异常分析:") - print(f" 数量: {len(spike_patterns)}") - print(f" 异常分数范围: {spike_patterns['score'].min():.2f} - {spike_patterns['score'].max():.2f}") - print(f" 平均异常分数: {spike_patterns['score'].mean():.2f}") - print(f" 中位数异常分数: {spike_patterns['score'].median():.2f}") - - # 最严重的异常 - top_anomalies = spike_patterns.nlargest(5, 'score') - print(f"\n最严重的5个尖峰异常:") - for idx, row in top_anomalies.iterrows(): - print(f" {row['time']}: 值={row['value']:.0f}, 分数={row['score']:.2f}") - - print("\n2. 异常聚合分析") - print("=" * 50) - print(f"总聚合窗口数量: {len(aggregations_df)}") - print(f"聚合窗口时间跨度: {aggregations_df['start_time'].min()} 到 {aggregations_df['end_time'].max()}") - - # 异常密度分析 - print(f"\n异常密度分析:") - print(f" 平均异常密度: {aggregations_df['anomaly_density'].mean():.3f}") - print(f" 最大异常密度: {aggregations_df['anomaly_density'].max():.3f}") - print(f" 最小异常密度: {aggregations_df['anomaly_density'].min():.3f}") - - # 异常数量分析 - print(f"\n异常数量分析:") - print(f" 平均异常数量: {aggregations_df['anomaly_count'].mean():.1f}") - print(f" 最大异常数量: {aggregations_df['anomaly_count'].max()}") - print(f" 最小异常数量: {aggregations_df['anomaly_count'].min()}") - - # 异常分数分析 - print(f"\n异常分数分析:") - print(f" 平均最大分数: {aggregations_df['max_score'].mean():.2f}") - print(f" 平均平均分数: {aggregations_df['mean_score'].mean():.2f}") - print(f" 最高最大分数: {aggregations_df['max_score'].max():.2f}") - - # 最严重的聚合窗口 - top_aggregations = aggregations_df.nlargest(3, 'max_score') - print(f"\n最严重的3个聚合窗口:") - for idx, row in top_aggregations.iterrows(): - print(f" {row['start_time']} - {row['end_time']}:") - print(f" 异常数量: {row['anomaly_count']}") - print(f" 异常密度: {row['anomaly_density']:.3f}") - print(f" 最大分数: {row['max_score']:.2f}") - print(f" 平均分数: {row['mean_score']:.2f}") - - print("\n3. 时间分布分析") - print("=" * 50) - - # 按日期分析 - patterns_df['date'] = patterns_df['time'].dt.date - daily_counts = patterns_df['date'].value_counts().sort_index() - - print("每日异常模式数量:") - for date, count in daily_counts.items(): - print(f" {date}: {count} 个异常") - - # 按小时分析 - patterns_df['hour'] = patterns_df['time'].dt.hour - hourly_counts = patterns_df['hour'].value_counts().sort_index() - - print(f"\n按小时分布的异常数量:") - for hour, count in hourly_counts.items(): - print(f" {hour:02d}:00: {count} 个异常") - - print("\n4. 报警建议") - print("=" * 50) - - # 基于异常分数和密度的报警建议 - high_score_patterns = spike_patterns[spike_patterns['score'] > 3.0] - high_density_aggregations = aggregations_df[aggregations_df['anomaly_density'] > 0.05] - - print(f"高分数异常模式 (>3.0): {len(high_score_patterns)} 个") - if len(high_score_patterns) > 0: - print("建议立即关注的异常:") - for idx, row in high_score_patterns.iterrows(): - print(f" {row['time']}: 分数={row['score']:.2f}, 值={row['value']:.0f}") - - print(f"\n高密度异常窗口 (>5%): {len(high_density_aggregations)} 个") - if len(high_density_aggregations) > 0: - print("建议重点监控的时间段:") - for idx, row in high_density_aggregations.iterrows(): - print(f" {row['start_time']} - {row['end_time']}: 密度={row['anomaly_density']:.3f}") - - print("\n5. 与第一层对比") - print("=" * 50) - - # 读取第一层结果 - first_layer_df = pd.read_csv('stl_anomaly_results.csv') - first_layer_df['Time'] = pd.to_datetime(first_layer_df['Time']) - - first_layer_anomalies = first_layer_df[first_layer_df['anomaly_level'] != 'normal'] - second_layer_patterns = len(patterns_df) - - print(f"第一层检测到的异常点: {len(first_layer_anomalies)}") - print(f"第二层识别的异常模式: {second_layer_patterns}") - print(f"模式识别率: {second_layer_patterns/len(first_layer_anomalies)*100:.1f}%") - - # 计算误报减少 - first_layer_severe = len(first_layer_df[first_layer_df['anomaly_level'] == 'severe']) - second_layer_critical = len(high_score_patterns) - - print(f"\n第一层严重异常: {first_layer_severe}") - print(f"第二层关键异常: {second_layer_critical}") - print(f"误报减少: {(first_layer_severe - second_layer_critical)/first_layer_severe*100:.1f}%") - - print("\n=== Analysis Complete ===") - -if __name__ == "__main__": - analyze_second_layer_results() diff --git a/anomaly_detection/second_layer_aggregations.csv b/anomaly_detection/second_layer_aggregations.csv deleted file mode 100644 index d6b6f90..0000000 --- a/anomaly_detection/second_layer_aggregations.csv +++ /dev/null @@ -1,14 +0,0 @@ -start_time,end_time,anomaly_count,anomaly_density,max_score,mean_score -2025-07-14 00:00:00+08:00,2025-07-14 23:50:00+08:00,7,0.04861111111111111,22.91802223930438,5.196612075360152 -2025-07-14 12:00:00+08:00,2025-07-15 11:50:00+08:00,8,0.05555555555555555,22.91802223930438,4.716624346186288 -2025-07-15 00:00:00+08:00,2025-07-15 23:50:00+08:00,9,0.0625,4.162401458789488,2.4820616063308774 -2025-07-15 12:00:00+08:00,2025-07-16 11:50:00+08:00,5,0.034722222222222224,4.162401458789488,2.7010686642676047 -2025-07-16 00:00:00+08:00,2025-07-16 23:50:00+08:00,4,0.027777777777777776,2.032553258179384,1.9975651656120543 -2025-07-16 12:00:00+08:00,2025-07-17 11:50:00+08:00,8,0.05555555555555555,2.818466014467554,2.1653144780572324 -2025-07-17 00:00:00+08:00,2025-07-17 23:50:00+08:00,8,0.05555555555555555,2.818466014467554,2.16666779870162 -2025-07-17 12:00:00+08:00,2025-07-18 11:50:00+08:00,5,0.034722222222222224,3.1974005533096905,2.2941742535972343 -2025-07-18 00:00:00+08:00,2025-07-18 23:50:00+08:00,5,0.034722222222222224,3.1974005533096905,2.3655673498208265 -2025-07-18 12:00:00+08:00,2025-07-19 11:50:00+08:00,6,0.041666666666666664,2.5385468617889795,2.168574098817865 -2025-07-19 00:00:00+08:00,2025-07-19 23:50:00+08:00,5,0.034722222222222224,2.5385468617889795,2.1270306557463927 -2025-07-19 12:00:00+08:00,2025-07-20 11:50:00+08:00,12,0.08333333333333333,4.587376198923394,2.886039502053336 -2025-07-20 00:00:00+08:00,2025-07-20 23:50:00+08:00,13,0.09027777777777778,4.587376198923394,2.832503687066684 diff --git a/anomaly_detection/second_layer_detector.py b/anomaly_detection/second_layer_detector.py deleted file mode 100644 index a7d2c9f..0000000 --- a/anomaly_detection/second_layer_detector.py +++ /dev/null @@ -1,200 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- -""" -第二层异常模式识别策略 - 简化版本 -""" - -import pandas as pd -import numpy as np -import matplotlib.pyplot as plt -from sklearn.linear_model import LinearRegression -from collections import defaultdict - -class SecondLayerDetector: - def __init__(self): - self.patterns = [] - self.aggregations = [] - - def load_data(self, file_path): - """加载第一层结果""" - print("Loading first layer results...") - self.data = pd.read_csv(file_path) - self.data['Time'] = pd.to_datetime(self.data['Time']) - print(f"Loaded {len(self.data)} data points") - - def detect_spike_patterns(self): - """检测尖峰模式""" - spikes = [] - for i in range(1, len(self.data) - 1): - current = self.data.iloc[i] - if (current['anomaly_level'] != 'normal' and - self.data.iloc[i-1]['anomaly_level'] == 'normal' and - self.data.iloc[i+1]['anomaly_level'] == 'normal'): - spikes.append({ - 'time': current['Time'], - 'value': current['Value'], - 'score': current['anomaly_score'], - 'type': 'spike' - }) - return spikes - - def detect_trend_patterns(self, window_size=144): - """检测趋势模式""" - trends = [] - for i in range(0, len(self.data) - window_size, window_size//2): - window = self.data.iloc[i:i+window_size] - if len(window) < 10: - continue - - # 线性回归检测趋势 - x = np.arange(len(window)).reshape(-1, 1) - y = window['Value'].values - reg = LinearRegression() - reg.fit(x, y) - - # 计算异常比例 - anomaly_ratio = len(window[window['anomaly_level'] != 'normal']) / len(window) - - if abs(reg.coef_[0]) > 10 and anomaly_ratio > 0.2: - trends.append({ - 'start_time': window.iloc[0]['Time'], - 'end_time': window.iloc[-1]['Time'], - 'slope': reg.coef_[0], - 'anomaly_ratio': anomaly_ratio, - 'type': 'trend' - }) - return trends - - def aggregate_anomalies(self, window_size=144): - """聚合异常""" - aggregations = [] - for i in range(0, len(self.data) - window_size, window_size//2): - window = self.data.iloc[i:i+window_size] - anomalies = window[window['anomaly_level'] != 'normal'] - - if len(anomalies) > 0: - agg = { - 'start_time': window.iloc[0]['Time'], - 'end_time': window.iloc[-1]['Time'], - 'anomaly_count': len(anomalies), - 'anomaly_density': len(anomalies) / len(window), - 'max_score': anomalies['anomaly_score'].max(), - 'mean_score': anomalies['anomaly_score'].mean() - } - aggregations.append(agg) - return aggregations - - def analyze_patterns(self): - """分析所有模式""" - print("Analyzing patterns...") - - # 检测尖峰模式 - spikes = self.detect_spike_patterns() - self.patterns.extend(spikes) - - # 检测趋势模式 - trends = self.detect_trend_patterns() - self.patterns.extend(trends) - - # 聚合异常 - self.aggregations = self.aggregate_anomalies() - - print(f"Detected {len(self.patterns)} patterns") - print(f"Generated {len(self.aggregations)} aggregations") - - def create_visualizations(self): - """创建可视化""" - print("Creating visualizations...") - - # 模式时间线 - fig, ax = plt.subplots(figsize=(15, 8)) - ax.plot(self.data['Time'], self.data['Value'], 'b-', alpha=0.6, linewidth=1) - - # 标记模式 - colors = {'spike': 'red', 'trend': 'orange'} - for pattern in self.patterns: - time = pattern.get('time', pattern.get('start_time')) - value = pattern.get('value', 0) - ax.scatter(time, value, c=colors[pattern['type']], s=50, alpha=0.8) - - ax.set_title('Anomaly Patterns Timeline', fontsize=16, fontweight='bold') - ax.set_xlabel('Time', fontsize=12) - ax.set_ylabel('Value', fontsize=12) - ax.grid(True, alpha=0.3) - plt.tight_layout() - plt.savefig('second_layer_patterns.png', dpi=300, bbox_inches='tight') - plt.show() - - # 聚合统计 - if self.aggregations: - fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2, figsize=(15, 10)) - - densities = [agg['anomaly_density'] for agg in self.aggregations] - ax1.hist(densities, bins=20, alpha=0.7, color='skyblue') - ax1.set_title('Anomaly Density Distribution') - ax1.set_xlabel('Anomaly Density') - ax1.set_ylabel('Frequency') - - counts = [agg['anomaly_count'] for agg in self.aggregations] - ax2.hist(counts, bins=20, alpha=0.7, color='lightgreen') - ax2.set_title('Anomaly Count Distribution') - ax2.set_xlabel('Anomaly Count') - ax2.set_ylabel('Frequency') - - max_scores = [agg['max_score'] for agg in self.aggregations] - ax3.hist(max_scores, bins=20, alpha=0.7, color='lightcoral') - ax3.set_title('Max Anomaly Score Distribution') - ax3.set_xlabel('Max Score') - ax3.set_ylabel('Frequency') - - mean_scores = [agg['mean_score'] for agg in self.aggregations] - ax4.hist(mean_scores, bins=20, alpha=0.7, color='lightyellow') - ax4.set_title('Mean Anomaly Score Distribution') - ax4.set_xlabel('Mean Score') - ax4.set_ylabel('Frequency') - - plt.tight_layout() - plt.savefig('second_layer_aggregations.png', dpi=300, bbox_inches='tight') - plt.show() - - def save_results(self): - """保存结果""" - # 保存模式 - patterns_df = pd.DataFrame(self.patterns) - if not patterns_df.empty: - patterns_df.to_csv('second_layer_patterns.csv', index=False) - - # 保存聚合 - aggregations_df = pd.DataFrame(self.aggregations) - if not aggregations_df.empty: - aggregations_df.to_csv('second_layer_aggregations.csv', index=False) - - print("Results saved to second_layer_*.csv") - - def print_summary(self): - """打印摘要""" - print("\n=== Second Layer Summary ===") - print(f"Patterns detected: {len(self.patterns)}") - print(f"Aggregations: {len(self.aggregations)}") - - if self.patterns: - types = [p['type'] for p in self.patterns] - type_counts = pd.Series(types).value_counts() - print("\nPattern types:") - for t, c in type_counts.items(): - print(f" {t}: {c}") - -def main(): - print("=== Second Layer Anomaly Detection ===") - - detector = SecondLayerDetector() - detector.load_data('stl_anomaly_results.csv') - detector.analyze_patterns() - detector.create_visualizations() - detector.save_results() - detector.print_summary() - - print("=== Complete ===") - -if __name__ == "__main__": - main() diff --git a/anomaly_detection/second_layer_patterns.csv b/anomaly_detection/second_layer_patterns.csv deleted file mode 100644 index f857c26..0000000 --- a/anomaly_detection/second_layer_patterns.csv +++ /dev/null @@ -1,42 +0,0 @@ -time,value,score,type -2025-07-14 01:10:00+08:00,1504.2321128272538,2.6477859984940397,spike -2025-07-14 03:00:00+08:00,4170.315135131283,2.7378780856670093,spike -2025-07-14 05:00:00+08:00,11733.768154342426,1.8268318826426224,spike -2025-07-14 06:00:00+08:00,7575.361092977691,2.056908467061681,spike -2025-07-14 09:00:00+08:00,1466.0417791830196,1.8729753342161335,spike -2025-07-14 11:40:00+08:00,4790.2177457663565,2.3158825201351934,spike -2025-07-14 16:30:00+08:00,34109.276874739284,22.91802223930438,spike -2025-07-15 01:00:00+08:00,14552.472422384308,2.317503578817086,spike -2025-07-15 01:40:00+08:00,4728.679591687594,1.7812309216966544,spike -2025-07-15 02:30:00+08:00,876.7833839952468,1.9968623692411005,spike -2025-07-15 04:00:00+08:00,6253.785190863624,1.7305756468722413,spike -2025-07-15 04:20:00+08:00,6904.805663709536,2.155781214996857,spike -2025-07-15 06:50:00+08:00,7672.687531102028,2.612562706840688,spike -2025-07-15 07:10:00+08:00,6116.42177340247,2.220456091721297,spike -2025-07-15 15:30:00+08:00,9240.14623012325,4.162401458789488,spike -2025-07-15 21:00:00+08:00,5792.407072621629,3.361180468002483,spike -2025-07-16 01:00:00+08:00,6029.151485546501,2.013135482805866,spike -2025-07-16 17:30:00+08:00,4435.297298236891,2.008499267902166,spike -2025-07-17 01:00:00+08:00,9932.9264247938,2.3138057609799425,spike -2025-07-17 02:00:00+08:00,2060.561409358393,1.776507632845249,spike -2025-07-17 04:50:00+08:00,5658.290093392947,2.560940053673524,spike -2025-07-17 05:10:00+08:00,7759.709174446929,1.8215641235119115,spike -2025-07-17 11:30:00+08:00,5900.959261531746,2.818466014467554,spike -2025-07-17 16:10:00+08:00,4553.4183655529305,2.019325833057263,spike -2025-07-18 01:40:00+08:00,8312.530339648587,3.1974005533096905,spike -2025-07-18 02:00:00+08:00,2150.458534416928,1.803525030508139,spike -2025-07-18 03:50:00+08:00,739.6451273634689,2.2193400836493664,spike -2025-07-18 09:00:00+08:00,5863.2744465064125,2.231279767461712,spike -2025-07-18 17:30:00+08:00,4635.908440221926,2.376291314175224,spike -2025-07-19 01:20:00+08:00,8972.419032320904,2.049938489122546,spike -2025-07-19 02:30:00+08:00,2142.1139353782646,2.3564304123311266,spike -2025-07-19 05:20:00+08:00,2361.6010585923605,1.814374084881964,spike -2025-07-20 01:00:00+08:00,5523.89614319348,3.64217369093314,spike -2025-07-20 01:30:00+08:00,6260.8852174695785,1.764463308479158,spike -2025-07-20 02:50:00+08:00,2171.7245948856216,2.151101212055348,spike -2025-07-20 03:40:00+08:00,882.9163948013736,2.0238376572878245,spike -2025-07-20 04:10:00+08:00,9595.099746667433,4.587376198923394,spike -2025-07-20 05:00:00+08:00,8755.750504824384,3.998751350467234,spike -2025-07-20 07:10:00+08:00,5782.487550372498,2.868957504705108,spike -2025-07-20 08:00:00+08:00,5214.728961231607,1.9409556142419468,spike -2025-07-20 14:00:00+08:00,4163.642595005619,2.190073907226864,spike diff --git a/anomaly_detection/stl_anomaly_detection.py b/anomaly_detection/stl_anomaly_detection.py deleted file mode 100644 index d3427b5..0000000 --- a/anomaly_detection/stl_anomaly_detection.py +++ /dev/null @@ -1,405 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- -""" -STL分解异常检测 -使用STL分解方法对yzh mirror时序数据进行异常检测 -""" - -import pandas as pd -import numpy as np -import matplotlib.pyplot as plt -import seaborn as sns -from scipy import stats -from statsmodels.tsa.seasonal import STL -import warnings -import matplotlib.font_manager as fm -warnings.filterwarnings('ignore') - -# 设置中文字体 - 更完善的字体配置 -def setup_chinese_font(): - """设置中文字体显示""" - # 尝试多种中文字体 - chinese_fonts = [ - 'Hiragino Sans GB', # 冬青黑体 (macOS) - 'PingFang SC', # 苹方 (macOS) - 'STHeiti', # 华文黑体 (macOS) - 'SimHei', # 黑体 (Windows) - 'Microsoft YaHei', # 微软雅黑 (Windows) - 'Arial Unicode MS', # Arial Unicode - 'DejaVu Sans' # 备用字体 - ] - - # 查找可用的中文字体 - available_fonts = [f.name for f in fm.fontManager.ttflist] - selected_font = None - - for font in chinese_fonts: - if font in available_fonts: - selected_font = font - break - - if selected_font: - plt.rcParams['font.sans-serif'] = [selected_font] + plt.rcParams['font.sans-serif'] - print(f"使用字体: {selected_font}") - else: - print("警告: 未找到合适的中文字体,可能显示为方块") - # 使用系统默认字体 - plt.rcParams['font.sans-serif'] = ['DejaVu Sans'] - - plt.rcParams['axes.unicode_minus'] = False - -# 初始化字体设置 -setup_chinese_font() - -def load_and_preprocess_data(file_path): - """加载和预处理数据""" - print("正在加载数据...") - - # 读取CSV文件 - df = pd.read_csv(file_path, delimiter=';') - - # 清理列名 - df.columns = [col.strip().replace('"', '') for col in df.columns] - - # 转换时间列 - df['Time'] = pd.to_datetime(df['Time']) - - # 处理Value列,移除引号并转换为数值 - df['Value'] = df['Value'].astype(str).str.replace('"', '').astype(float) - - # 按时间排序 - df = df.sort_values('Time').reset_index(drop=True) - - # 检查缺失值 - missing_count = df['Value'].isnull().sum() - if missing_count > 0: - print(f"发现 {missing_count} 个缺失值,使用前向填充") - df['Value'] = df['Value'].fillna(method='ffill') - - print(f"数据加载完成,共 {len(df)} 个数据点") - print(f"时间范围:{df['Time'].min()} 到 {df['Time'].max()}") - print(f"数值范围:{df['Value'].min():.2f} 到 {df['Value'].max():.2f}") - - return df - -def perform_stl_decomposition(data, seasonal_period=144): - """执行STL分解""" - print("正在执行STL分解...") - - # 设置窗口大小 - trend_window = max(seasonal_period + 1, len(data) // 10) - seasonal_window = max(7, seasonal_period // 2) - # 确保窗口都是奇数 - if trend_window % 2 == 0: - trend_window += 1 - if seasonal_window % 2 == 0: - seasonal_window += 1 - - print(f"趋势窗口大小: {trend_window}") - print(f"季节性窗口大小: {seasonal_window}") - print(f"季节性周期: {seasonal_period}") - - # 执行STL分解 - stl = STL( - data['Value'], - period=seasonal_period, - trend=trend_window, - seasonal=seasonal_window, - robust=True - ) - - stl_result = stl.fit() - - # 计算残差 - data['trend'] = stl_result.trend - data['seasonal'] = stl_result.seasonal - data['residual'] = stl_result.resid - - print("STL分解完成") - - return data, stl_result - -def calculate_anomaly_scores(data, method='zscore'): - """计算异常分数""" - print(f"正在计算异常分数,使用 {method} 方法...") - - residuals = data['residual'].values - - if method == 'zscore': - # 基于Z-Score的异常分数 - z_scores = np.abs(stats.zscore(residuals)) - anomaly_scores = z_scores - - elif method == 'iqr': - # 基于IQR的异常分数 - Q1 = np.percentile(residuals, 25) - Q3 = np.percentile(residuals, 75) - IQR = Q3 - Q1 - lower_bound = Q1 - 1.5 * IQR - upper_bound = Q3 + 1.5 * IQR - - # 计算到边界的距离 - distances = np.maximum( - (lower_bound - residuals) / IQR, - (residuals - upper_bound) / IQR - ) - anomaly_scores = np.maximum(distances, 0) - - elif method == 'modified_zscore': - # 基于Modified Z-Score的异常分数 - median = np.median(residuals) - mad = np.median(np.abs(residuals - median)) - modified_z_scores = np.abs(0.6745 * (residuals - median) / mad) - anomaly_scores = modified_z_scores - - # 将异常分数添加到数据中 - data['anomaly_score'] = anomaly_scores - - # 设置异常阈值 - thresholds = { - 'mild': np.percentile(anomaly_scores, 95), # 95%分位数 - 'moderate': np.percentile(anomaly_scores, 98), # 98%分位数 - 'severe': np.percentile(anomaly_scores, 99.5) # 99.5%分位数 - } - - print(f"异常阈值设置完成:") - print(f" 轻微异常: {thresholds['mild']:.3f}") - print(f" 明显异常: {thresholds['moderate']:.3f}") - print(f" 严重异常: {thresholds['severe']:.3f}") - - return data, thresholds - -def detect_anomalies(data, thresholds): - """检测异常点""" - print("正在检测异常点...") - - # 标记异常点 - data['anomaly_level'] = 'normal' - - # 基于阈值标记异常 - data.loc[data['anomaly_score'] >= thresholds['severe'], 'anomaly_level'] = 'severe' - data.loc[(data['anomaly_score'] >= thresholds['moderate']) & - (data['anomaly_score'] < thresholds['severe']), 'anomaly_level'] = 'moderate' - data.loc[(data['anomaly_score'] >= thresholds['mild']) & - (data['anomaly_score'] < thresholds['moderate']), 'anomaly_level'] = 'mild' - - # 统计异常点 - anomaly_counts = data['anomaly_level'].value_counts() - print("异常检测完成:") - for level, count in anomaly_counts.items(): - print(f" {level}: {count} 个点 ({count/len(data)*100:.2f}%)") - - return data - -def create_visualizations(data, thresholds, save_path='stl_analysis_results'): - """创建可视化图表""" - print("正在生成可视化图表...") - - # 设置图表样式 - plt.style.use('default') - sns.set_palette("husl") - - # 1. STL分解结果图 - plot_stl_decomposition(data, save_path) - - # 2. 异常分数分布图 - plot_anomaly_scores(data, thresholds, save_path) - - # 3. 异常点标记图 - plot_anomaly_points(data, save_path) - - # 4. 残差分析图 - plot_residual_analysis(data, save_path) - - print(f"可视化图表已保存到 {save_path}_*.png") - -def plot_stl_decomposition(data, save_path): - """绘制STL分解结果""" - fig, axes = plt.subplots(4, 1, figsize=(15, 12)) - - # 原始数据 - axes[0].plot(data['Time'], data['Value'], 'b-', linewidth=0.8) - axes[0].set_title('Original Time Series Data', fontsize=14, fontweight='bold') - axes[0].set_ylabel('Value') - axes[0].grid(True, alpha=0.3) - - # 趋势组件 - axes[1].plot(data['Time'], data['trend'], 'r-', linewidth=1.2) - axes[1].set_title('Trend Component', fontsize=14, fontweight='bold') - axes[1].set_ylabel('Trend Value') - axes[1].grid(True, alpha=0.3) - - # 季节性组件 - axes[2].plot(data['Time'], data['seasonal'], 'g-', linewidth=0.8) - axes[2].set_title('Seasonal Component', fontsize=14, fontweight='bold') - axes[2].set_ylabel('Seasonal Value') - axes[2].grid(True, alpha=0.3) - - # 残差组件 - axes[3].plot(data['Time'], data['residual'], 'purple', linewidth=0.8) - axes[3].set_title('Residual Component', fontsize=14, fontweight='bold') - axes[3].set_ylabel('Residual Value') - axes[3].set_xlabel('Time') - axes[3].grid(True, alpha=0.3) - - plt.tight_layout() - plt.savefig(f'{save_path}_stl_decomposition.png', dpi=300, bbox_inches='tight') - plt.show() - -def plot_anomaly_scores(data, thresholds, save_path): - """绘制异常分数分布""" - fig, axes = plt.subplots(2, 2, figsize=(15, 10)) - - # 异常分数时间序列 - axes[0, 0].plot(data['Time'], data['anomaly_score'], 'b-', linewidth=0.8) - axes[0, 0].axhline(y=thresholds['mild'], color='orange', linestyle='--', label='Mild Anomaly Threshold') - axes[0, 0].axhline(y=thresholds['moderate'], color='red', linestyle='--', label='Moderate Anomaly Threshold') - axes[0, 0].axhline(y=thresholds['severe'], color='darkred', linestyle='--', label='Severe Anomaly Threshold') - axes[0, 0].set_title('Anomaly Score Time Series', fontsize=14, fontweight='bold') - axes[0, 0].set_ylabel('Anomaly Score') - axes[0, 0].legend() - axes[0, 0].grid(True, alpha=0.3) - - # 异常分数分布直方图 - axes[0, 1].hist(data['anomaly_score'], bins=50, alpha=0.7, color='skyblue', edgecolor='black') - axes[0, 1].axvline(x=thresholds['mild'], color='orange', linestyle='--', label='Mild Anomaly Threshold') - axes[0, 1].axvline(x=thresholds['moderate'], color='red', linestyle='--', label='Moderate Anomaly Threshold') - axes[0, 1].axvline(x=thresholds['severe'], color='darkred', linestyle='--', label='Severe Anomaly Threshold') - axes[0, 1].set_title('Anomaly Score Distribution', fontsize=14, fontweight='bold') - axes[0, 1].set_xlabel('Anomaly Score') - axes[0, 1].set_ylabel('Frequency') - axes[0, 1].legend() - axes[0, 1].grid(True, alpha=0.3) - - # 异常分数箱线图 - anomaly_data = [data[data['anomaly_level'] == level]['anomaly_score'].values - for level in ['normal', 'mild', 'moderate', 'severe']] - labels = ['Normal', 'Mild', 'Moderate', 'Severe'] - axes[1, 0].boxplot(anomaly_data, labels=labels) - axes[1, 0].set_title('Anomaly Score Boxplot', fontsize=14, fontweight='bold') - axes[1, 0].set_ylabel('Anomaly Score') - axes[1, 0].grid(True, alpha=0.3) - - # 异常等级统计 - anomaly_counts = data['anomaly_level'].value_counts() - colors = ['lightgreen', 'orange', 'red', 'darkred'] - axes[1, 1].pie(anomaly_counts.values, labels=anomaly_counts.index, autopct='%1.1f%%', - colors=colors, startangle=90) - axes[1, 1].set_title('Anomaly Level Distribution', fontsize=14, fontweight='bold') - - plt.tight_layout() - plt.savefig(f'{save_path}_anomaly_scores.png', dpi=300, bbox_inches='tight') - plt.show() - -def plot_anomaly_points(data, save_path): - """绘制异常点标记图""" - fig, axes = plt.subplots(2, 1, figsize=(15, 10)) - - # 原始数据与异常点 - normal_data = data[data['anomaly_level'] == 'normal'] - mild_data = data[data['anomaly_level'] == 'mild'] - moderate_data = data[data['anomaly_level'] == 'moderate'] - severe_data = data[data['anomaly_level'] == 'severe'] - - axes[0].plot(normal_data['Time'], normal_data['Value'], 'b-', linewidth=0.8, label='Normal Data') - axes[0].scatter(mild_data['Time'], mild_data['Value'], c='orange', s=20, label='Mild Anomaly', alpha=0.7) - axes[0].scatter(moderate_data['Time'], moderate_data['Value'], c='red', s=30, label='Moderate Anomaly', alpha=0.8) - axes[0].scatter(severe_data['Time'], severe_data['Value'], c='darkred', s=40, label='Severe Anomaly', alpha=0.9) - axes[0].set_title('Original Data with Anomaly Points', fontsize=14, fontweight='bold') - axes[0].set_ylabel('Value') - axes[0].legend() - axes[0].grid(True, alpha=0.3) - - # 残差与异常点 - axes[1].plot(normal_data['Time'], normal_data['residual'], 'b-', linewidth=0.8, label='Normal Residual') - axes[1].scatter(mild_data['Time'], mild_data['residual'], c='orange', s=20, label='Mild Anomaly', alpha=0.7) - axes[1].scatter(moderate_data['Time'], moderate_data['residual'], c='red', s=30, label='Moderate Anomaly', alpha=0.8) - axes[1].scatter(severe_data['Time'], severe_data['residual'], c='darkred', s=40, label='Severe Anomaly', alpha=0.9) - axes[1].axhline(y=0, color='black', linestyle='-', alpha=0.5) - axes[1].set_title('Residuals with Anomaly Points', fontsize=14, fontweight='bold') - axes[1].set_ylabel('Residual Value') - axes[1].set_xlabel('Time') - axes[1].legend() - axes[1].grid(True, alpha=0.3) - - plt.tight_layout() - plt.savefig(f'{save_path}_anomaly_points.png', dpi=300, bbox_inches='tight') - plt.show() - -def plot_residual_analysis(data, save_path): - """绘制残差分析图""" - fig, axes = plt.subplots(2, 2, figsize=(15, 10)) - - # 残差分布直方图 - axes[0, 0].hist(data['residual'], bins=50, alpha=0.7, color='lightblue', edgecolor='black') - axes[0, 0].set_title('Residual Distribution', fontsize=14, fontweight='bold') - axes[0, 0].set_xlabel('Residual Value') - axes[0, 0].set_ylabel('Frequency') - axes[0, 0].grid(True, alpha=0.3) - - # Q-Q图 - stats.probplot(data['residual'], dist="norm", plot=axes[0, 1]) - axes[0, 1].set_title('Residual Q-Q Plot', fontsize=14, fontweight='bold') - axes[0, 1].grid(True, alpha=0.3) - - # 残差自相关图 - from statsmodels.graphics.tsaplots import plot_acf - plot_acf(data['residual'].dropna(), lags=50, ax=axes[1, 0]) - axes[1, 0].set_title('Residual Autocorrelation', fontsize=14, fontweight='bold') - axes[1, 0].grid(True, alpha=0.3) - - # 残差与拟合值散点图 - fitted_values = data['trend'] + data['seasonal'] - axes[1, 1].scatter(fitted_values, data['residual'], alpha=0.6, s=10) - axes[1, 1].axhline(y=0, color='red', linestyle='--') - axes[1, 1].set_title('Residual vs Fitted Values', fontsize=14, fontweight='bold') - axes[1, 1].set_xlabel('Fitted Values') - axes[1, 1].set_ylabel('Residual Values') - axes[1, 1].grid(True, alpha=0.3) - - plt.tight_layout() - plt.savefig(f'{save_path}_residual_analysis.png', dpi=300, bbox_inches='tight') - plt.show() - -def main(): - """主函数""" - print("=== STL分解异常检测 ===") - - # 加载数据 - data = load_and_preprocess_data('yzh_mirror_data.csv') - - # 执行STL分解 - data, stl_result = perform_stl_decomposition(data, seasonal_period=144) - - # 计算异常分数 - data, thresholds = calculate_anomaly_scores(data, method='zscore') - - # 检测异常点 - data = detect_anomalies(data, thresholds) - - # 创建可视化 - create_visualizations(data, thresholds) - - # 保存结果 - result_columns = ['Time', 'Value', 'trend', 'seasonal', 'residual', - 'anomaly_score', 'anomaly_level'] - data[result_columns].to_csv('stl_anomaly_results.csv', index=False) - - # 打印摘要 - print("\n=== 异常检测摘要 ===") - anomaly_counts = data['anomaly_level'].value_counts() - print(f"总数据点: {len(data)}") - print(f"异常点统计:") - for level, count in anomaly_counts.items(): - percentage = count / len(data) * 100 - print(f" {level}: {count} 个点 ({percentage:.2f}%)") - - print(f"\n异常阈值:") - for level, threshold in thresholds.items(): - print(f" {level}: {threshold:.3f}") - - print("\n=== 分析完成 ===") - print("结果已保存到 stl_anomaly_results.csv") - -if __name__ == "__main__": - main() diff --git a/anomaly_detection/stl_anomaly_results.csv b/anomaly_detection/stl_anomaly_results.csv deleted file mode 100644 index 266c2fa..0000000 --- a/anomaly_detection/stl_anomaly_results.csv +++ /dev/null @@ -1,1010 +0,0 @@ -Time,Value,trend,seasonal,residual,anomaly_score,anomaly_level -2025-07-14 00:00:00+08:00,2392.4649649735443,2262.368522760809,-435.86964873819244,565.966090950928,0.30989871493960036,normal -2025-07-14 00:10:00+08:00,1499.0522545027752,2259.9572942855593,-928.4723997260509,167.56735994326664,0.03003302354684861,normal -2025-07-14 00:20:00+08:00,1916.094303250783,2257.552765623712,-469.2043670147958,127.74590464186713,0.00205939247627821,normal -2025-07-14 00:30:00+08:00,1208.302658310115,2255.154728735571,-539.5183662021954,-507.3337042232606,0.4440690210729592,normal -2025-07-14 00:40:00+08:00,2536.5687803548194,2252.762939819943,401.96232261486585,-118.15648207998947,0.17068122168425434,normal -2025-07-14 00:50:00+08:00,2301.501287436792,2250.3772935139127,103.50405475537137,-52.380060832491836,0.12447484054641429,normal -2025-07-14 01:00:00+08:00,13366.959897823192,2247.997771335932,11120.58137403511,-1.6192475478501365,0.08881656907141945,normal -2025-07-14 01:10:00+08:00,1504.2321128272538,2245.624387573216,2903.0106534162483,-3644.4029281622106,2.6477859984940393,moderate -2025-07-14 01:20:00+08:00,1754.4535089750373,2243.2571625693076,-539.576961053687,50.77330745941663,0.05201203760653505,normal -2025-07-14 01:30:00+08:00,2282.4834594271874,2240.8961121347584,-111.48815719445248,153.07550448688153,0.019852837639612257,normal -2025-07-14 01:40:00+08:00,1930.3253685487236,2238.541218341388,-742.6514254117302,434.4355756190662,0.21750163696826377,normal -2025-07-14 01:50:00+08:00,2461.466695219779,2236.192369715154,-1835.7309093794117,2061.0052348840363,1.360128374601897,normal -2025-07-14 02:00:00+08:00,4451.764052389372,2233.8493135840104,2050.029129027654,167.88560977770794,0.03025658653292105,normal -2025-07-14 02:10:00+08:00,2118.051671571828,2231.511746137258,21.49228063269458,-134.95235519812422,0.18247992553770945,normal -2025-07-14 02:20:00+08:00,955.1111006706734,2229.179309621575,-1089.055932528774,-185.0122764221278,0.2176458369074247,normal -2025-07-14 02:30:00+08:00,3319.5683798946648,2226.8516885760837,907.232680882711,185.48401043587,0.0426190470135205,normal -2025-07-14 02:40:00+08:00,2621.0818653677143,2224.5286220367525,440.56615600924704,-44.012912678285375,0.11859711674634138,normal -2025-07-14 02:50:00+08:00,1331.351343484746,2222.209800377462,-1947.4457906519358,1056.5873337592197,0.654548540964958,normal -2025-07-14 03:00:00+08:00,4170.315135131283,2219.894895046307,-2071.86054023281,4022.280780317786,2.7378780856670093,moderate -2025-07-14 03:10:00+08:00,2924.1173758053724,2217.583524414833,795.5560594280021,-89.0222080374624,0.1502150828300597,normal -2025-07-14 03:20:00+08:00,3987.615255809612,2215.275294231755,-531.5286939419441,2303.8686555198005,1.5307341869204354,normal -2025-07-14 03:30:00+08:00,923.1584437985824,2212.9698331610907,-814.8507698934736,-474.96061946903455,0.42132769425110395,normal -2025-07-14 03:40:00+08:00,2304.9379463524847,2210.6667994799723,116.32957748537304,-22.058430612860775,0.10317461204390631,normal -2025-07-14 03:50:00+08:00,3001.056073599605,2208.3659636397238,984.4749275647049,-191.78481760482373,0.22240338700249423,normal -2025-07-14 04:00:00+08:00,3271.412855004965,2206.067145748666,1298.6859037161635,-233.3401944598645,0.2515950569789699,normal -2025-07-14 04:10:00+08:00,4810.061139118233,2203.770246514541,2625.6341138434354,-19.343221239743798,0.10126724163998589,normal -2025-07-14 04:20:00+08:00,3690.683937899749,2201.475258536297,1394.933148855141,94.27553050831057,0.021452754197406217,normal -2025-07-14 04:30:00+08:00,3900.095811989063,2199.1821972980442,3260.131728400735,-1559.2181137097164,1.182992954845535,normal -2025-07-14 04:40:00+08:00,3405.413638697049,2196.8910558868006,3437.2413131676353,-2228.718730357387,1.65330131273629,normal -2025-07-14 04:50:00+08:00,2970.203076788919,2194.601825711992,807.6576589671166,-32.0564078901898,0.11019795475428984,normal -2025-07-14 05:00:00+08:00,11733.768154342426,2192.314507142183,6816.079427197138,2725.3742200031047,1.8268318826426226,mild -2025-07-14 05:10:00+08:00,4641.369737000938,2190.029118053543,4410.541350181568,-1959.2007312341734,1.4639712890772574,normal -2025-07-14 05:20:00+08:00,3633.100288309234,2187.745687107245,1701.2593233878474,-255.9047221858582,0.2674461043380155,normal -2025-07-14 05:30:00+08:00,6437.431718843744,2185.4642708346164,4441.808140337411,-189.84069232828278,0.22103768494993725,normal -2025-07-14 05:40:00+08:00,6062.117398036187,2183.1850275732495,3792.052568977,86.8798014859376,0.026648079019261754,normal -2025-07-14 05:50:00+08:00,3754.7995227466176,2180.908204217422,1216.975233130334,356.9160853988619,0.16304602745359914,normal -2025-07-14 06:00:00+08:00,7575.361092977691,2178.6340328604506,2343.8306675642507,3052.89639255299,2.056908467061681,mild -2025-07-14 06:10:00+08:00,2343.957281956409,2176.3626616513343,195.77796373800388,-28.183343432929178,0.10747721852252937,normal -2025-07-14 06:20:00+08:00,4024.499687082512,2174.094232832445,1946.6232944045385,-96.2178401544711,0.15526984430568247,normal -2025-07-14 06:30:00+08:00,4443.422710791914,2171.828922695624,2250.4053475085125,21.188440587777677,0.07279470727230396,normal -2025-07-14 06:40:00+08:00,3773.717777634512,2169.5669595834806,1615.143898303367,-10.993080252335858,0.09540146497258245,normal -2025-07-14 06:50:00+08:00,3711.489758919348,2167.308597672649,1604.2859791654482,-60.10481791874918,0.1299012998057559,normal -2025-07-14 07:00:00+08:00,3028.9268084714354,2165.0541244157657,447.0887520763637,416.7839319793061,0.20510177455162137,normal -2025-07-14 07:10:00+08:00,3208.194831698865,2162.803850498215,883.059602957259,162.3313782433911,0.026354870168073707,normal -2025-07-14 07:20:00+08:00,3750.293995269002,2160.5579963285377,2137.113916516016,-547.3779175755517,0.47219913440884304,normal -2025-07-14 07:30:00+08:00,4415.423720841458,2158.3167520734887,2170.194140178165,86.91282858980412,0.026624878259472875,normal -2025-07-14 07:40:00+08:00,1904.378748893648,2156.0804337097475,-604.5641302307635,352.86244541466385,0.16019844118251464,normal -2025-07-14 07:50:00+08:00,3014.569785492415,2153.8493656189567,554.1228399406955,306.597579932763,0.12769846676609048,normal -2025-07-14 08:00:00+08:00,2915.8901576658523,2151.6237635841017,794.6997846910214,-30.433390609270646,0.10905782347847488,normal -2025-07-14 08:10:00+08:00,1058.7360213656486,2149.4037390104186,-740.4242362617728,-350.2434813829973,0.3337168527439233,normal -2025-07-14 08:20:00+08:00,1790.3179310193468,2147.1894300824074,-286.21259053764993,-70.65890852541042,0.1373152989848803,normal -2025-07-14 08:30:00+08:00,1651.3825851440906,2144.981120677343,-378.10163816743653,-115.49689736581581,0.1688129262884151,normal -2025-07-14 08:40:00+08:00,1912.2178103165504,2142.7792043529716,-70.48466202302558,-160.0767320133957,0.20012920637360337,normal -2025-07-14 08:50:00+08:00,1947.749792820818,2140.5842031131115,177.2089670436884,-370.04337733598186,0.3476258116313451,normal -2025-07-14 09:00:00+08:00,1466.0417791830196,2138.396831246061,1869.0774338010913,-2541.432485864133,1.8729753342161337,mild -2025-07-14 09:10:00+08:00,2229.318007094276,2136.218071929077,62.035860457678986,31.06407470751992,0.06585730773824178,normal -2025-07-14 09:20:00+08:00,2117.230821265878,2134.049105301239,-113.8782390179883,97.05995498262746,0.019496761820963104,normal -2025-07-14 09:30:00+08:00,2524.0631420646287,2131.8912937917835,123.89101001649264,268.2808382563526,0.10078186144944393,normal -2025-07-14 09:40:00+08:00,2861.451312905756,2129.7461724282093,529.0348249394254,202.67031553812103,0.05469202010699094,normal -2025-07-14 09:50:00+08:00,1666.0083855854336,2127.6154167759014,-214.06659581136256,-247.54043537910525,0.2615703905668937,normal -2025-07-14 10:00:00+08:00,1600.8648802433331,2125.5009480051717,-302.9864929072618,-221.6495748545767,0.24338267304298639,normal -2025-07-14 10:10:00+08:00,1214.0080508937745,2123.4052356120983,-1120.2323919384637,210.83520722013964,0.06042766351618423,normal -2025-07-14 10:20:00+08:00,1596.3143660152932,2121.33141937336,-851.389326735017,326.3722733769505,0.14158972148680601,normal -2025-07-14 10:30:00+08:00,966.1276924346802,2119.2831990005766,-1167.5149616295973,14.359455063700807,0.07759190818299189,normal -2025-07-14 10:40:00+08:00,959.960077142546,2117.2648609549738,-944.8071409292281,-212.49764288319966,0.23695365716165914,normal -2025-07-14 10:50:00+08:00,947.7992631077184,2115.2815396415394,-818.9303086439018,-348.5519678899193,0.3325286044981443,normal -2025-07-14 11:00:00+08:00,968.5399424572884,2113.339475585767,-907.7286061799405,-237.07092694853827,0.25421580836716645,normal -2025-07-14 11:10:00+08:00,1796.2069016683097,2111.4460829760715,-593.0588844033329,277.8197030955712,0.10748268852431377,normal -2025-07-14 11:20:00+08:00,1761.34981084255,2109.609584953786,-681.5974579936457,333.3376838824097,0.14648275772217292,normal -2025-07-14 11:30:00+08:00,1979.951652301946,2107.837940823696,-275.9662189227676,148.07993040101746,0.016343564927051395,normal -2025-07-14 11:40:00+08:00,4790.2177457663565,2106.137312847153,-737.4747030294066,3421.55513594861,2.3158825201351934,moderate -2025-07-14 11:50:00+08:00,1455.3939063222506,2104.5097900026826,-342.3836725730892,-306.7322111073429,0.30315121387184885,normal -2025-07-14 12:00:00+08:00,1748.7909295927684,2102.949958148568,-408.7314899651402,54.572461409340576,0.04934322175912081,normal -2025-07-14 12:10:00+08:00,1430.9916751795392,2101.875144389759,-601.8624438000525,-69.02102541016734,0.13616472481184355,normal -2025-07-14 12:20:00+08:00,1214.7914028281025,2100.8770663738555,-555.0766698264923,-331.0089937192606,0.3202050798148738,normal -2025-07-14 12:30:00+08:00,1526.277467859382,2099.9592592161202,-937.8570627889956,364.17527143225743,0.16814543405322951,normal -2025-07-14 12:40:00+08:00,984.2511934117192,2099.124399262458,-618.6745018195151,-496.19870403122377,0.4362469466413444,normal -2025-07-14 12:50:00+08:00,966.6904968013548,2098.3729105469383,-1039.516876459932,-92.16553728565145,0.1524231973265453,normal -2025-07-14 13:00:00+08:00,1226.3109129203633,2097.704914988308,-762.0693577947386,-109.32464427320588,0.16447706438733614,normal -2025-07-14 13:10:00+08:00,1890.9361883701824,2097.1193723315378,-190.44986818944545,-15.733315771909929,0.09873136837788363,normal -2025-07-14 13:20:00+08:00,1617.0764994286596,2096.6140225759455,-498.9142028033898,19.37667965610399,0.0740674265013506,normal -2025-07-14 13:30:00+08:00,987.9993732436246,2096.185408099373,-1067.3500178162665,-40.83601703948216,0.11636542265387405,normal -2025-07-14 13:40:00+08:00,2289.3019314884687,2095.8291272536635,-234.20762925745066,427.6804334922558,0.2127563092986841,normal -2025-07-14 13:50:00+08:00,1896.4525727570167,2095.5416926003336,-334.28152439148545,135.19240454816872,0.0072903826439981,normal -2025-07-14 14:00:00+08:00,2169.6915288953523,2095.3203617834383,-187.64488673386083,262.0160538457749,0.09638099848469932,normal -2025-07-14 14:10:00+08:00,1347.2518606592594,2095.1619908969415,-721.2859476170213,-26.624182620660577,0.10638194490653574,normal -2025-07-14 14:20:00+08:00,1262.87544886029,2095.0636955871914,-835.119971123937,2.9317243970353957,0.08561961885362393,normal -2025-07-14 14:30:00+08:00,988.1500095484856,2095.0230070271064,-1066.5897972946693,-40.28320018395152,0.1159770818800585,normal -2025-07-14 14:40:00+08:00,1697.4621205649278,2095.037737529227,-262.1333133593766,-135.44230360492247,0.1828241027123419,normal -2025-07-14 14:50:00+08:00,1142.474968952154,2095.1064900392034,460.3092272177235,-1412.9407483047728,1.0802365632761615,normal -2025-07-14 15:00:00+08:00,1196.592194007529,2095.228554967809,-602.9345019952762,-295.7018589650038,0.29540265222153106,normal -2025-07-14 15:10:00+08:00,1256.4843967257607,2095.404555523269,-753.0694742309183,-85.85068456659019,0.1479871625585794,normal -2025-07-14 15:20:00+08:00,991.4270993283488,2095.6357925467164,-1008.4530326110313,-95.75566060733627,0.15494517409857783,normal -2025-07-14 15:30:00+08:00,1277.8670278756006,2095.923990705725,1374.3802514510303,-2192.4372142811544,1.6278144052961738,normal -2025-07-14 15:40:00+08:00,2211.1657597272524,2096.2721715649136,-77.07945483411076,191.97304299644975,0.04717743900298144,normal -2025-07-14 15:50:00+08:00,944.895188917142,2096.683628445159,-90.48500660280888,-1061.3034329252077,0.8332196610403445,normal -2025-07-14 16:00:00+08:00,1360.6047232543456,2097.1612336334856,-283.01668702321547,-453.53982335592445,0.40628009131518134,normal -2025-07-14 16:10:00+08:00,1897.1778035144257,2097.70745626674,-324.98876147529535,124.459108722981,0.00024950396518222146,normal -2025-07-14 16:20:00+08:00,2263.792657790043,2098.324054699947,203.12374503390072,-37.655141943804665,0.11413093308701684,normal -2025-07-14 16:30:00+08:00,34109.276874739284,2099.013243612546,-739.1675989336189,32749.43123006036,22.91802223930438,severe -2025-07-14 16:40:00+08:00,1784.7959618736245,2099.777768299188,-394.9549391598227,79.9731327342588,0.03149985056110467,normal -2025-07-14 16:50:00+08:00,1282.962522502106,2100.620243540963,-537.5388317222255,-280.1188893166318,0.2844559843856086,normal -2025-07-14 17:00:00+08:00,2340.1041184992314,2101.5418335084696,202.48180319952593,36.0804817912358,0.062333400337129495,normal -2025-07-14 17:10:00+08:00,1851.977794594737,2102.543331966192,-143.32591174659555,-107.23962562485963,0.16301238807144952,normal -2025-07-14 17:20:00+08:00,996.4162110354268,2103.6247173216593,-568.3421330701095,-538.8663732161231,0.46621997568776324,normal -2025-07-14 17:30:00+08:00,1572.0774705767749,2104.784477259083,-248.31612088818542,-284.3908857941226,0.287456960931835,normal -2025-07-14 17:40:00+08:00,973.820950598001,2106.021622359786,-956.7609649949205,-175.43970676686422,0.21092133299598,normal -2025-07-14 17:50:00+08:00,1598.4462273173626,2107.3360189290593,-729.6444958708506,220.7547042591541,0.06739587571422648,normal -2025-07-14 18:00:00+08:00,991.3674759676156,2108.7277529098287,-1104.3071264002226,-13.053150541990362,0.09684861565620433,normal -2025-07-14 18:10:00+08:00,1373.415858740846,2110.195923807613,-985.0764216930486,248.29635662628198,0.08674323548700857,normal -2025-07-14 18:20:00+08:00,1175.6279236576877,2111.738231018928,-906.637016128849,-29.473291232391603,0.10838337636054259,normal -2025-07-14 18:30:00+08:00,996.956506092232,2113.3526821316323,-1109.7893448167345,-6.606831222665733,0.09232022870909191,normal -2025-07-14 18:40:00+08:00,990.5425094694642,2115.0367767663847,-1184.437688203023,59.9434209061028,0.045570249668567334,normal -2025-07-14 18:50:00+08:00,809.3980148277981,2116.787462760845,-1339.629860891467,32.240412958420166,0.06503095792265061,normal -2025-07-14 19:00:00+08:00,985.9852949963372,2118.601187103156,-1167.8464177653864,35.230525658567785,0.06293047442951175,normal -2025-07-14 19:10:00+08:00,851.802515694159,2120.473834433985,-1255.2933617088713,-13.377957030954349,0.0970767845370962,normal -2025-07-14 19:20:00+08:00,871.457908714505,2122.401042380115,-1228.7564175148655,-22.186716150744815,0.10326472960192362,normal -2025-07-14 19:30:00+08:00,852.9397482533846,2124.3791997303356,-1189.431822220975,-82.0076292559761,0.14528750704299767,normal -2025-07-14 19:40:00+08:00,809.4309908241964,2126.404862319495,-1203.6242539657903,-113.34961752950812,0.16730451295968288,normal -2025-07-14 19:50:00+08:00,691.4777649210907,2128.475265418946,-1194.4731315823274,-242.52436891552793,0.25804672244337734,normal -2025-07-14 20:00:00+08:00,713.5651216766132,2130.5893587947335,-1290.700761266841,-126.32347585127923,0.17641834176147253,normal -2025-07-14 20:10:00+08:00,863.2189568046698,2132.7480235970656,-1231.8607064754615,-37.66836031693447,0.11414021868169157,normal -2025-07-14 20:20:00+08:00,936.659322005676,2134.9531209326205,-1024.0228868522495,-174.27091207469493,0.21010028235208666,normal -2025-07-14 20:30:00+08:00,857.557607281998,2137.206360856059,-1047.8519317495873,-231.79682182447368,0.2505108741840402,normal -2025-07-14 20:40:00+08:00,885.5419981841394,2139.509085463639,-972.3623497090542,-281.60473757044565,0.28549975766221153,normal -2025-07-14 20:50:00+08:00,1318.479245921977,2141.861502898179,-821.3698890728567,-2.012367903345421,0.08909272682878223,normal -2025-07-14 21:00:00+08:00,2394.691211988621,2144.263116713226,-1372.1665433009205,1622.5946385763154,1.052155293615328,normal -2025-07-14 21:10:00+08:00,1093.5409202629537,2146.7120674164394,-872.4087706964195,-180.76237645706624,0.21466038263887405,normal -2025-07-14 21:20:00+08:00,1771.3322838645624,2149.2061557545667,-583.8662373794197,205.99236548941553,0.05702568167290193,normal -2025-07-14 21:30:00+08:00,1314.3306471284495,2151.7430944871235,-949.5589955831663,112.14654822449256,0.00889878667752672,normal -2025-07-14 21:40:00+08:00,1560.827539724267,2154.319592010419,-789.9019900971477,196.40993781099587,0.05029425273320888,normal -2025-07-14 21:50:00+08:00,1849.117882512552,2156.932259420251,-235.40738489950544,-72.40699200819336,0.1385432863112553,normal -2025-07-14 22:00:00+08:00,1408.9823331812386,2159.5778180855646,-766.146511821012,15.551026916686169,0.0767548571220198,normal -2025-07-14 22:10:00+08:00,1510.401133936611,2162.252810518203,-870.7819933565157,218.93031677492354,0.06611428663046845,normal -2025-07-14 22:20:00+08:00,937.1300820522052,2164.9525742235846,-1116.3859749254118,-111.43651724596748,0.1659606052313561,normal -2025-07-14 22:30:00+08:00,1070.3090212732643,2167.6701556136813,-928.6487113578908,-168.71242298252628,0.20619557515348633,normal -2025-07-14 22:40:00+08:00,2197.337485113677,2170.397291867744,-1094.30039985802,1121.2405931039525,0.6999659274148173,normal -2025-07-14 22:50:00+08:00,1613.963850776826,2173.125963290118,-863.8577304541009,304.6956179408089,0.1263623834243222,normal -2025-07-14 23:00:00+08:00,1013.7085176612284,2175.8480023114416,-1092.2232769449129,-69.91620770530062,0.13679356921432537,normal -2025-07-14 23:10:00+08:00,1250.6104099440463,2178.5536444473037,-989.0513009201609,61.10806641690351,0.04475211372650923,normal -2025-07-14 23:20:00+08:00,1539.381497487234,2181.2322191752564,-864.7325080286947,222.88178634067208,0.06889010059764288,normal -2025-07-14 23:30:00+08:00,929.6556875436802,2183.8720570121136,-1158.566760450017,-95.64960901841641,0.15487067536415344,normal -2025-07-14 23:40:00+08:00,2023.859799135074,2186.4609940594883,-594.7664593320728,432.16526440765847,0.21590679700667484,normal -2025-07-14 23:50:00+08:00,1742.658506943522,2188.9871602797907,-986.2916109093122,539.9629575730437,0.2916321283900574,normal -2025-07-15 00:00:00+08:00,1498.871258410551,2191.4395123315853,-468.1647459052717,-224.40350801576255,0.24531724599269258,normal -2025-07-15 00:10:00+08:00,1554.350376084984,2193.810205731668,-778.8517619411698,139.3919322944862,0.010240451619553101,normal -2025-07-15 00:20:00+08:00,1394.579873888856,2196.094131952354,-437.34484801100956,-364.1694100524885,0.3434994884604471,normal -2025-07-15 00:30:00+08:00,1738.0669385254316,2198.286322017497,-398.43967954230965,-61.77970394975546,0.13107786765246077,normal -2025-07-15 00:40:00+08:00,2970.8713123785387,2200.3821801634053,312.4566775687262,458.03245464640713,0.2340778867143276,normal -2025-07-15 00:50:00+08:00,3476.072893193625,2202.3776096323663,131.1286595049475,1142.5666240563114,0.7149469600653214,normal -2025-07-15 01:00:00+08:00,14552.472422384308,2204.269055184494,8924.340596762171,3423.8627704376427,2.317503578817086,moderate -2025-07-15 01:10:00+08:00,4651.271492083917,2206.054079505327,2528.5837028371266,-83.36629025853654,0.1462419342819806,normal -2025-07-15 01:20:00+08:00,2215.550308062743,2207.7303246295187,331.1409091443766,-323.3209257111521,0.3148043937656945,normal -2025-07-15 01:30:00+08:00,2413.6171490769666,2209.296937347897,131.020566875821,73.29964485324899,0.036187818053109666,normal -2025-07-15 01:40:00+08:00,4728.679591687594,2210.7536728469536,-142.53371701606906,2660.45963585671,1.7812309216966544,mild -2025-07-15 01:50:00+08:00,3517.591270570895,2212.101776527995,-1255.6834362868958,2561.172930329796,1.7114843579510386,normal -2025-07-15 02:00:00+08:00,4216.831486134892,2213.342604639058,2192.9299144498045,-189.441032953971,0.22075693368642177,normal -2025-07-15 02:10:00+08:00,2201.358455066988,2214.47711661579,-72.24548693754822,59.12682538874651,0.04614388871725383,normal -2025-07-15 02:20:00+08:00,1298.521249031328,2215.506452535842,-1005.6240134904632,88.63880998594914,0.025412417126523475,normal -2025-07-15 02:30:00+08:00,876.7833839952468,2216.4330095802443,1378.1404455788058,-2717.790071163803,1.9968623692411003,mild -2025-07-15 02:40:00+08:00,910.1316505639112,2217.2626977008604,551.7936593984967,-1858.924706535446,1.39352975199845,normal -2025-07-15 02:50:00+08:00,1084.8528568167555,2218.0041136851064,-1154.5508367760851,21.399579907734278,0.07264638689083489,normal -2025-07-15 03:00:00+08:00,599.7171348406605,2218.667084683507,-1578.7366658543663,-40.213283988479816,0.11592796740538196,normal -2025-07-15 03:10:00+08:00,977.452937144314,2219.26041119168,703.8404030651444,-1945.6478771125103,1.4544507294120423,normal -2025-07-15 03:20:00+08:00,2320.628749677141,2219.7924708524106,-176.09320089631902,276.9294797210496,0.10685732764634528,normal -2025-07-15 03:30:00+08:00,2265.005675010066,2220.2688345048887,-543.2073909538857,587.9442314590633,0.32533783913881387,normal -2025-07-15 03:40:00+08:00,2446.874862197365,2220.693427384349,319.5863043090878,-93.40486949607157,0.15329379890968103,normal -2025-07-15 03:50:00+08:00,3517.0287317888947,2221.069595576858,1195.6008921250798,100.3582440869568,0.0171797916883987,normal -2025-07-15 04:00:00+08:00,6253.785190863624,2221.4002122834536,1444.0349218164165,2588.350056763754,1.7305756468722413,mild -2025-07-15 04:10:00+08:00,4675.018544415212,2221.6867427388393,2293.625806362748,159.70599531362495,0.024510600717336923,normal -2025-07-15 04:20:00+08:00,6904.805663709536,2221.9292782359503,1489.2311318773343,3193.645253596251,2.155781214996857,mild -2025-07-15 04:30:00+08:00,4979.867629821298,2222.1275779102007,2648.6279883367033,109.11206357439369,0.011030440416665468,normal -2025-07-15 04:40:00+08:00,4869.849553252716,2222.280007013691,2899.296464647396,-251.72691840837115,0.26451129593706413,normal -2025-07-15 04:50:00+08:00,4449.069373290859,2222.385348792095,501.25250488408955,1725.431519614675,1.1243957717405486,normal -2025-07-15 05:00:00+08:00,8004.086738718597,2222.4434993276545,5784.645278058511,-3.0020386675687405,0.08978794714733096,normal -2025-07-15 05:10:00+08:00,5894.8591335712645,2222.4544436218143,3953.995656625153,-281.59096667570293,0.285490083934164,normal -2025-07-15 05:20:00+08:00,4633.565476521968,2222.41807212522,1904.1512503647475,506.9961540320005,0.26847372815447623,normal -2025-07-15 05:30:00+08:00,6271.172402889849,2222.3339052601623,3457.110861284091,591.7276363455958,0.3279955916414637,normal -2025-07-15 05:40:00+08:00,5637.878316196367,2222.200722514307,3343.943616282498,71.73397739956226,0.03728766243089896,normal -2025-07-15 05:50:00+08:00,2949.623173587968,2222.015640165606,1018.4886774740697,-290.8811440517079,0.29201621394446997,normal -2025-07-15 06:00:00+08:00,4277.928344511081,2221.774021184762,2172.355643922332,-116.20132059601292,0.16930776695684194,normal -2025-07-15 06:10:00+08:00,3277.427297289553,2221.4713191393384,592.8102612152331,463.14571693498146,0.23766983260744046,normal -2025-07-15 06:20:00+08:00,4137.907062085869,2221.102724866218,1862.5029280834347,54.301409136216535,0.04953362957399906,normal -2025-07-15 06:30:00+08:00,5641.538972950302,2220.6633879556516,2190.7158144547748,1230.1597705398758,0.7764790749891962,normal -2025-07-15 06:40:00+08:00,5903.542009768298,2220.1484110154806,1845.781306259788,1837.6122924930296,1.2032001130173542,normal -2025-07-15 06:50:00+08:00,7672.687531102028,2219.553530489423,1609.2441036206628,3843.889896991942,2.6125627068406874,moderate -2025-07-15 07:00:00+08:00,2479.9696515205387,2218.8756936883133,527.4831248191463,-266.3891669869208,0.27481117898495794,normal -2025-07-15 07:10:00+08:00,6116.42177340247,2218.113671542097,612.5958689682052,3285.712232892168,2.220456091721297,mild -2025-07-15 07:20:00+08:00,4724.562175630068,2217.268209754733,2175.973992173392,331.3199737019427,0.14506536401396922,normal -2025-07-15 07:30:00+08:00,2403.117861325497,2216.341683316905,1860.696913821159,-1673.9207358125668,1.2635688355924002,normal -2025-07-15 07:40:00+08:00,3825.054604933868,2215.3375307491474,250.16038405079186,1359.556690133929,0.8673773523875385,normal -2025-07-15 07:50:00+08:00,1710.4388193435975,2214.260236603548,928.027681947303,-1431.8490992072534,1.0935192328394783,normal -2025-07-15 08:00:00+08:00,3031.442656473252,2213.115000469554,665.1674518135435,153.16020419015467,0.019912337179074504,normal -2025-07-15 08:10:00+08:00,2028.4580199285488,2211.906869602467,-396.1143518516432,212.6655021777251,0.06171340246033632,normal -2025-07-15 08:20:00+08:00,2182.6378310214905,2210.640838924792,-141.38875496197778,113.38574705867586,0.008028278788044683,normal -2025-07-15 08:30:00+08:00,1847.116950426496,2209.321991238518,-287.491460540567,-74.71358027145516,0.1401636100442738,normal -2025-07-15 08:40:00+08:00,3483.0701314126586,2207.9546842754867,6.540605697403468,1268.5748414397685,0.8034647542610845,normal -2025-07-15 08:50:00+08:00,2494.909483279121,2206.54142929883,211.95947781249433,76.40857616779704,0.03400386729192656,normal -2025-07-15 09:00:00+08:00,4044.3127790390463,2205.08234175526,1561.1228323782204,278.1076049055655,0.10768493274056287,normal -2025-07-15 09:10:00+08:00,2395.276503942772,2203.5760769514336,21.164811618330578,170.53561537300766,0.03211815282417752,normal -2025-07-15 09:20:00+08:00,2111.914305914104,2202.0214361877242,-44.798844484364,-45.30828578925639,0.11950708573744871,normal -2025-07-15 09:30:00+08:00,2336.01398048244,2200.4160684635913,70.89137512842014,64.7065368904282,0.04222427327761478,normal -2025-07-15 09:40:00+08:00,2618.1734257597577,2198.7580210393326,352.2568763019757,67.15852841844935,0.04050180718806889,normal -2025-07-15 09:50:00+08:00,2298.3279151973084,2197.045897101815,-137.02226159417827,238.3042796896716,0.07972403762651073,normal -2025-07-15 10:00:00+08:00,2106.0045303316147,2195.2786588327695,-223.85766057848124,134.58353207732625,0.006862664125439203,normal -2025-07-15 10:10:00+08:00,882.4425394738637,2193.454871893619,-982.2928691791027,-328.71946324065266,0.3185967387723716,normal -2025-07-15 10:20:00+08:00,919.3708625533096,2191.5732408752287,-655.3715155837925,-616.8308627381266,0.520988186693282,normal -2025-07-15 10:30:00+08:00,1295.670291559243,2189.633415032824,-923.2799725052256,29.31684903164478,0.06708469247554046,normal -2025-07-15 10:40:00+08:00,1537.5397365294325,2187.634739455698,-767.5613711963609,117.4663682700957,0.005161738842604997,normal -2025-07-15 10:50:00+08:00,1427.6001536049914,2185.5756925201,-685.8443835580963,-72.13115535701218,0.13834951758388253,normal -2025-07-15 11:00:00+08:00,1473.936295640324,2183.4554201852425,-735.3765324909018,25.85740794598314,0.06951486806576483,normal -2025-07-15 11:10:00+08:00,1278.3647667529724,2181.2741063324484,-441.25644245140734,-461.6528971280686,0.4119793338675324,normal -2025-07-15 11:20:00+08:00,1087.20312235079,2179.031537992832,-666.5892525894944,-425.2391630525476,0.3863995464082156,normal -2025-07-15 11:30:00+08:00,1632.7868061884585,2176.7273842918694,-287.08107008401606,-256.85950801939475,0.2681168188173485,normal -2025-07-15 11:40:00+08:00,1455.41532866152,2174.3621164064884,-610.749758545204,-108.19702919976453,0.16368494145221693,normal -2025-07-15 11:50:00+08:00,2324.942110215185,2171.9364573864555,-287.19606158697337,440.201714415703,0.22155221317593823,normal -2025-07-15 12:00:00+08:00,1866.3154421504155,2169.453300045944,-445.44711003951943,142.30925214399076,0.012289799855754418,normal -2025-07-15 12:10:00+08:00,1373.546084281064,2166.9174151840652,-586.044736668982,-207.32659423401947,0.23332111771614436,normal -2025-07-15 12:20:00+08:00,1673.9660894023514,2164.332443385936,-492.3989635016858,2.0326095181007986,0.08625122580326981,normal -2025-07-15 12:30:00+08:00,980.240386258656,2161.701863116081,-826.8285470150125,-354.6329298424123,0.3368003365311832,normal -2025-07-15 12:40:00+08:00,1586.2275022031502,2159.0287394746706,-641.257680153786,68.45644288226549,0.039590052956659016,normal -2025-07-15 12:50:00+08:00,1407.5430197646738,2156.31705597839,-863.1469823844329,114.37294617071666,0.007334794746730566,normal -2025-07-15 13:00:00+08:00,1393.65249508148,2153.573141915378,-573.1345133362914,-186.78613349760644,0.21889192957344578,normal -2025-07-15 13:10:00+08:00,2125.503862643421,2150.8044357413078,-202.28378972791688,176.98321663003026,0.03664744030222098,normal -2025-07-15 13:20:00+08:00,1486.590377656489,2148.019103611512,-486.9104550699844,-174.51827088503865,0.21027404606941538,normal -2025-07-15 13:30:00+08:00,1432.053757573127,2145.224915486866,-976.6998646752593,263.5287067615204,0.09744360140271477,normal -2025-07-15 13:40:00+08:00,1599.7611598796486,2142.4284682702173,-291.89500079285557,-250.77230759771305,0.2638407044071662,normal -2025-07-15 13:50:00+08:00,1645.0824757355558,2139.634668313925,-248.4117282730291,-246.14046430534017,0.2605869439793553,normal -2025-07-15 14:00:00+08:00,1393.2782028204408,2136.847784809568,-378.3569244812676,-365.2126575078596,0.34423234513810946,normal -2025-07-15 14:10:00+08:00,1337.5165936016983,2134.0724899750057,-723.8232543318474,-72.73264204146017,0.13877204776208063,normal -2025-07-15 14:20:00+08:00,2172.686656738733,2131.3127005709293,-766.7691703211331,808.1431264889366,0.480022357951376,normal -2025-07-15 14:30:00+08:00,1465.5300063243594,2128.5730721833097,-981.7988955392775,318.7558296803272,0.13623934982342728,normal -2025-07-15 14:40:00+08:00,2302.966147622326,2125.8587577380913,-287.52265683340215,464.630046717637,0.23871253919394753,normal -2025-07-15 14:50:00+08:00,2144.3990987107063,2123.173646232754,193.10420277975572,-171.8787503018034,0.20841984525129498,normal -2025-07-15 15:00:00+08:00,1974.7688104028696,2120.520679309311,-687.695777141507,541.9439082350655,0.29302369940545553,normal -2025-07-15 15:10:00+08:00,1026.0413648946562,2117.9024106703127,-794.7486497288933,-297.11239604676325,0.29639352117993173,normal -2025-07-15 15:20:00+08:00,1308.4074284749895,2115.3212489349116,-925.3208995038767,118.40707904395458,0.0045009117599967355,normal -2025-07-15 15:30:00+08:00,9240.14623012325,2112.7791252937463,1077.226813335325,6050.140291494179,4.162401458789488,severe -2025-07-15 15:40:00+08:00,1969.0411311517175,2110.2779172691485,-128.03275753132974,-13.20402858610123,0.09695460391581619,normal -2025-07-15 15:50:00+08:00,1844.152588957644,2107.821662195782,-187.7329512172057,-75.93612202093254,0.14102241672548135,normal -2025-07-15 16:00:00+08:00,1929.780142138901,2105.4146952598626,-314.4082235932266,138.77367047226517,0.009806137303591327,normal -2025-07-15 16:10:00+08:00,4099.34970568216,2103.0610009752154,-395.9728063506851,2392.26151105763,1.5928280785518285,normal -2025-07-15 16:20:00+08:00,2083.9243026264803,2100.7638710408146,178.95898670027728,-195.79855511461164,0.22522294272849933,normal -2025-07-15 16:30:00+08:00,1555.0606256502638,2098.52588751521,-608.2074168422306,64.74215497728437,0.042199252413519954,normal -2025-07-15 16:40:00+08:00,1738.4683142057784,2096.3491446618173,-397.2552257861438,39.37439533010502,0.060019503935873506,normal -2025-07-15 16:50:00+08:00,1778.4677911528822,2094.2349711608663,-517.1383530377727,201.37117302978868,0.0537794032033363,normal -2025-07-15 17:00:00+08:00,2088.279700366542,2092.184112484136,42.174453622786075,-46.07886574038048,0.12004839993854889,normal -2025-07-15 17:10:00+08:00,1706.6546328713343,2090.196877379115,-307.89870436524745,-75.64354014253331,0.1408168848718028,normal -2025-07-15 17:20:00+08:00,1798.3203964794982,2088.2729370928146,-698.2909291387235,408.338388525407,0.19916897990658136,normal -2025-07-15 17:30:00+08:00,1889.7094013893536,2086.41203893564,-423.1915685119866,226.48893096570055,0.0714240344329337,normal -2025-07-15 17:40:00+08:00,1095.4480845458324,2084.6150268847455,-1001.4240291190172,12.257086780104146,0.07906877220754034,normal -2025-07-15 17:50:00+08:00,1130.8221505580916,2082.883085194345,-858.7563764869641,-93.30455814928928,0.15322333255967344,normal -2025-07-15 18:00:00+08:00,859.0743252481669,2081.2164915238227,-1145.8819647991559,-76.26020147649979,0.14125007488259725,normal -2025-07-15 18:10:00+08:00,689.7767043205673,2079.6137079687287,-1077.191510786502,-312.6454928616595,0.30730515452920537,normal -2025-07-15 18:20:00+08:00,946.1906483553053,2078.071903342045,-971.0481690484369,-160.83308593830293,0.20066052712755353,normal -2025-07-15 18:30:00+08:00,900.0284698374401,2076.5880707096576,-1135.721394628949,-40.83820624326859,0.11636696051778676,normal -2025-07-15 18:40:00+08:00,744.6947287752316,2075.159728575165,-1214.985251439027,-115.47974836090634,0.16880087951782538,normal -2025-07-15 18:50:00+08:00,847.4041779213665,2073.7847915723723,-1259.7169086374874,33.336294986481334,0.06426112670182192,normal -2025-07-15 19:00:00+08:00,836.4857718906233,2072.462226575798,-1189.7066279679384,-46.269826717236356,0.12018254551095478,normal -2025-07-15 19:10:00+08:00,856.5258166418784,2071.1915535451963,-1233.9414983405438,19.27576143722581,0.07413831916466063,normal -2025-07-15 19:20:00+08:00,804.4528677886374,2069.971153102628,-1222.1612624041263,-43.3570229098641,0.11813636968760358,normal -2025-07-15 19:30:00+08:00,881.5135216859846,2068.7981834194916,-1199.2934400712422,12.008778337735293,0.07924320301891981,normal -2025-07-15 19:40:00+08:00,911.8862807837932,2067.6714091654158,-1206.57840641883,50.79327803720753,0.05199800874769098,normal -2025-07-15 19:50:00+08:00,911.2600089906324,2066.5882369665105,-1184.7080858528645,29.379857876986534,0.0670404302510579,normal -2025-07-15 20:00:00+08:00,928.4567787728556,2065.5434145432005,-1203.5878173333774,66.50118156303279,0.04096357781597902,normal -2025-07-15 20:10:00+08:00,978.0550882925984,2064.529375515774,-1124.5481961076096,38.07390888443388,0.060933064923741356,normal -2025-07-15 20:20:00+08:00,1191.8927545070362,2063.538538589186,-968.5138547011609,96.86807061901118,0.019631556050741652,normal -2025-07-15 20:30:00+08:00,975.13329348157,2062.565676812166,-1029.9046909815008,-57.52769234909533,0.12809093000981586,normal -2025-07-15 20:40:00+08:00,1123.240662180961,2061.607040308913,-916.2774940756692,-22.088884052282765,0.10319600486525783,normal -2025-07-15 20:50:00+08:00,1022.44177689622,2060.6594376155476,-794.6377624674999,-243.57989825182767,0.25878820685207937,normal -2025-07-15 21:00:00+08:00,5792.407072621629,2059.720703214303,-1176.8874439390029,4909.573813346329,3.361180468002483,moderate -2025-07-15 21:10:00+08:00,1142.5308925778588,2058.7895080859685,-908.9089268790567,-7.349688629052707,0.09284206847780524,normal -2025-07-15 21:20:00+08:00,1298.2494895402056,2057.864396505413,-665.1471042122021,-94.46780275300534,0.15404048439761847,normal -2025-07-15 21:30:00+08:00,1033.325020243396,2056.9432063501904,-967.4351264114024,-56.183059695391876,0.1271463573543102,normal -2025-07-15 21:40:00+08:00,946.652505073478,2056.0226828738064,-846.2683324986183,-263.10184530171,0.27250191320508216,normal -2025-07-15 21:50:00+08:00,1821.926897902803,2055.098889576076,-302.8495257666041,69.6775340933309,0.0387322652443988,normal -2025-07-15 22:00:00+08:00,1383.674954147746,2054.1691196193656,-783.0838361605275,112.58967068890797,0.008587503620571164,normal -2025-07-15 22:10:00+08:00,987.032497387446,2053.234552727608,-905.6258481094251,-160.57620723073683,0.20048007590745243,normal -2025-07-15 22:20:00+08:00,979.7086470509016,2052.299454297337,-1131.2624824224222,58.67167517598682,0.046463620983115635,normal -2025-07-15 22:30:00+08:00,1306.3595951096604,2051.369251414291,-975.3527950159363,230.34313871130598,0.07413152427048145,normal -2025-07-15 22:40:00+08:00,876.8848840910089,2050.4498998847944,-1113.443615587362,-60.12140020642346,0.12991294847088367,normal -2025-07-15 22:50:00+08:00,914.5468521750272,2049.5465331709893,-918.5623160455456,-216.4373649504164,0.23972121878879618,normal -2025-07-15 23:00:00+08:00,992.1719287248142,2048.665322566118,-1087.9570395911642,31.46364574986046,0.06557661852584816,normal -2025-07-15 23:10:00+08:00,794.2055653922587,2047.8145575317185,-1042.6803229719078,-210.92866916755202,0.235851490212994,normal -2025-07-15 23:20:00+08:00,951.4398413365302,2047.0032840762467,-910.0194341362071,-185.54400860350938,0.218019366196039,normal -2025-07-15 23:30:00+08:00,971.2025763032284,2046.240200195581,-1119.5251998715366,44.48757597918393,0.05642761539257644,normal -2025-07-15 23:40:00+08:00,1250.965591975307,2045.5326818139188,-688.966088757388,-105.60100108122379,0.1618612930624924,normal -2025-07-15 23:50:00+08:00,969.1711018391406,2044.8849990780577,-906.5260905297763,-169.18780670914066,0.20652952098456187,normal -2025-07-16 00:00:00+08:00,1321.168644613048,2044.2981923600992,-500.3795912356681,-222.74995651138306,0.2441556651466487,normal -2025-07-16 00:10:00+08:00,1110.59429114438,2043.77109136781,-629.0742173538987,-304.10258286953126,0.3013039621925585,normal -2025-07-16 00:20:00+08:00,2280.857631608397,2043.3015428457923,-405.4896123686201,643.0457011312244,0.3640453191238833,normal -2025-07-16 00:30:00+08:00,2260.917832679399,2042.889483193025,-257.71221317585133,475.74056266222556,0.2465174140204757,normal -2025-07-16 00:40:00+08:00,2374.377354790704,2042.536366055012,223.15092444590633,108.69006428978582,0.011326884939104862,normal -2025-07-16 00:50:00+08:00,2085.1471984451778,2042.2432721355408,158.64366839875697,-115.73974208912,0.16898351896630018,normal -2025-07-16 01:00:00+08:00,6029.151485546501,2042.0124168727164,6728.094493766763,-2740.9554250929777,2.013135482805866,mild -2025-07-16 01:10:00+08:00,4272.864622797346,2041.846290343016,2154.050216456675,76.96811599765465,0.03361080378756045,normal -2025-07-16 01:20:00+08:00,3625.520891195044,2041.7469992873775,1201.7827775610087,381.9911143466579,0.1806606425790505,normal -2025-07-16 01:30:00+08:00,1763.9480091762875,2041.715549653243,373.6301859943842,-651.3977264713396,0.5452705913924792,normal -2025-07-16 01:40:00+08:00,2007.008076771154,2041.7522258110491,457.90652491844435,-492.65067395833944,0.43375453938161607,normal -2025-07-16 01:50:00+08:00,1418.7027164541778,2041.85679574542,-675.5645687179664,52.4104894267241,0.05086195597334973,normal -2025-07-16 02:00:00+08:00,2629.879824408069,2042.0281412818683,2335.874889389764,-1748.0232062635635,1.3156240694889167,normal -2025-07-16 02:10:00+08:00,2264.4224925706644,2042.2655569572933,-165.89488364981665,388.0518192631878,0.1849181445231505,normal -2025-07-16 02:20:00+08:00,1785.5772836581496,2042.5674509655166,-922.1335192910628,665.1433519836958,0.37956839651507013,normal -2025-07-16 02:30:00+08:00,3510.681665078476,2042.930898006808,1849.151989191188,-381.4012221195203,0.3556044291210063,normal -2025-07-16 02:40:00+08:00,954.745374668782,2043.3518687258875,662.9840272986318,-1751.590521355737,1.3181300240188465,normal -2025-07-16 02:50:00+08:00,1650.206216346639,2043.8265535442822,-361.3899068696433,-32.23043032800001,0.11032020140340044,normal -2025-07-16 03:00:00+08:00,1489.7094981720898,2044.3513934549446,-1085.367624764444,530.725729481589,0.2851431940005606,normal -2025-07-16 03:10:00+08:00,4104.597977211815,2044.9238917388932,611.9819836242353,1447.6921018486867,0.9292903958185458,normal -2025-07-16 03:20:00+08:00,1499.0439318835547,2045.542682842867,179.4840201093307,-725.9827710686429,0.5976648222199417,normal -2025-07-16 03:30:00+08:00,2070.6189556243417,2046.2069894483675,-271.5652231010745,295.97718927704864,0.12023789336967207,normal -2025-07-16 03:40:00+08:00,3442.3848066532028,2046.917379889846,522.8503107053982,872.6171160579584,0.5253138116212833,normal -2025-07-16 03:50:00+08:00,822.9992215899242,2047.6728801405836,1406.5800977657468,-2631.253756316406,1.9360726535608015,mild -2025-07-16 04:00:00+08:00,868.9467699723359,2048.470172006189,1589.0739145296477,-2768.5973165635005,2.0325532581793837,mild -2025-07-16 04:10:00+08:00,3677.343133556298,2049.306440387517,1961.565289174686,-333.5285960059048,0.3219750408642047,normal -2025-07-16 04:20:00+08:00,2475.929485528938,2050.179223307071,1583.7564289441088,-1158.0061667222417,0.9011510457242874,normal -2025-07-16 04:30:00+08:00,3778.3552166368167,2051.0847102148064,2037.0313915207778,-309.7608850987674,0.3052787857606182,normal -2025-07-16 04:40:00+08:00,4607.493030944061,2052.017623824024,2361.1161806392242,194.35922648081214,0.04885367649739305,normal -2025-07-16 04:50:00+08:00,2273.0384784932253,2052.972125310471,194.80407336454059,25.262279818213756,0.06993293150819646,normal -2025-07-16 05:00:00+08:00,8586.257546814122,2053.9410042846393,4753.204489775299,1779.1120527541834,1.1621050773987815,normal -2025-07-16 05:10:00+08:00,6047.935135016429,2054.9169636528527,3497.3030874944816,495.71508386909454,0.2605490430210512,normal -2025-07-16 05:20:00+08:00,4252.731755973454,2055.8920022337056,2107.0673501227216,89.77240361702661,0.024616094395982908,normal -2025-07-16 05:30:00+08:00,4348.346652061216,2056.8585734845938,2472.4178199995786,-180.92974142295589,0.21477795257132629,normal -2025-07-16 05:40:00+08:00,4764.426655018324,2057.812099051078,2895.9839276287476,-189.36937166150165,0.2207065933223541,normal -2025-07-16 05:50:00+08:00,4755.3046273394175,2058.750755031972,820.1738060466029,1876.3800662608428,1.2304335577169512,normal -2025-07-16 06:00:00+08:00,2444.4345841160457,2059.6738070863926,2000.6907251146215,-1615.9299480849684,1.22283167796957,normal -2025-07-16 06:10:00+08:00,2351.2076313918906,2060.5805236615997,989.9433629913271,-699.3162552610363,0.5789322251942045,normal -2025-07-16 06:20:00+08:00,3826.289859479241,2061.4705159007976,1778.4079489458297,-13.588605367386435,0.0972247600142449,normal -2025-07-16 06:30:00+08:00,4159.978511226482,2062.3427894258602,2131.0418670360486,-33.406145235427175,0.11114611333493604,normal -2025-07-16 06:40:00+08:00,4322.95186241308,2063.196515437402,2076.5736432635235,183.1817037121541,0.0410017309608282,normal -2025-07-16 06:50:00+08:00,3837.742868763709,2064.0305663213917,1614.1270057973807,159.58529664493653,0.0244258127555951,normal -2025-07-16 07:00:00+08:00,2684.651485818312,2064.8429156294656,608.0826738184787,11.725896370367536,0.07944192091438017,normal -2025-07-16 07:10:00+08:00,2101.15024004704,2065.6309187629327,342.2382325925775,-306.7189113084703,0.30314187107751456,normal -2025-07-16 07:20:00+08:00,4740.900407001318,2066.391497442111,2214.8836472499815,459.6252623092255,0.23519679644750585,normal -2025-07-16 07:30:00+08:00,3350.2239869857176,2067.1217340500625,1551.224868532428,-268.1226155967729,0.27602888565903044,normal -2025-07-16 07:40:00+08:00,2787.692893117568,2067.818614049705,1105.1808333002032,-385.3065542323402,0.35834783261807124,normal -2025-07-16 07:50:00+08:00,2621.8368144363835,2068.4797869147606,1302.2413811995475,-748.8843536779245,0.6137526426673707,normal -2025-07-16 08:00:00+08:00,2432.812089866407,2069.104089273974,535.6646346854837,-171.95663409305052,0.2084745567736699,normal -2025-07-16 08:10:00+08:00,2276.8222841544693,2069.6914230136513,-51.76402346437691,258.8948846051949,0.09418845086975244,normal -2025-07-16 08:20:00+08:00,2140.588792861992,2070.2423621440066,3.618642633906399,66.72778808407884,0.04080439209135019,normal -2025-07-16 08:30:00+08:00,1873.137927705671,2070.7572508613493,-197.10533119485092,-0.5139919608272976,0.08804015314698746,normal -2025-07-16 08:40:00+08:00,2304.97898931622,2071.2367040305508,83.52842893794454,150.2138563477247,0.01784259746399154,normal -2025-07-16 08:50:00+08:00,2349.217612781088,2071.6820665127025,246.43886854992772,31.096677718458068,0.06583440489371059,normal -2025-07-16 09:00:00+08:00,2268.9501838656934,2072.0956526960767,1253.4246922114496,-1056.570161041833,0.8298946494248706,normal -2025-07-16 09:10:00+08:00,1808.1931264120133,2072.4796993334644,-19.596936530424042,-244.68963639102708,0.25956777166345923,normal -2025-07-16 09:20:00+08:00,1852.335669329913,2072.8368799995906,24.23481565842774,-244.73602632810548,0.2596003594977158,normal -2025-07-16 09:30:00+08:00,1794.4378944228265,2073.1704677707176,18.067425720380353,-296.7999990682713,0.296174069686817,normal -2025-07-16 09:40:00+08:00,2122.162217514902,2073.4833168202767,175.68923403823132,-127.01033334360613,0.17690084291425523,normal -2025-07-16 09:50:00+08:00,2452.652505971553,2073.7776034744757,-59.79744488927565,438.67234738635307,0.22047786898819516,normal -2025-07-16 10:00:00+08:00,2182.841233850443,2074.0535809105227,-144.73598062708314,253.5236335670038,0.09041527397823651,normal -2025-07-16 10:10:00+08:00,1346.6067198423295,2074.310466461582,-844.351130282501,116.64738366324855,0.005737056170186775,normal -2025-07-16 10:20:00+08:00,2250.3700689333773,2074.5472567891798,-459.1067170173399,634.9295291615376,0.3583439001609921,normal -2025-07-16 10:30:00+08:00,1222.221944755357,2074.7621973780692,-678.9984462319436,-173.54180639076867,0.209588102843346,normal -2025-07-16 10:40:00+08:00,1560.5081474278234,2074.954247106959,-590.3688556017634,75.92275592262786,0.0343451445305939,normal -2025-07-16 10:50:00+08:00,2087.262977063774,2075.124499217138,-553.0194456358622,565.1579234824985,0.3093309963960672,normal -2025-07-16 11:00:00+08:00,1622.1882959096793,2075.274561665198,-563.1364671591648,110.05020140364604,0.010371420766825377,normal -2025-07-16 11:10:00+08:00,1961.372247505124,2075.405214926121,-289.27109769630874,175.2381302753115,0.035421558387466516,normal -2025-07-16 11:20:00+08:00,1583.3340932988012,2075.51764835592,-651.385152107264,159.2015970501452,0.024156272859943855,normal -2025-07-16 11:30:00+08:00,1645.098584790794,2075.6125856839694,-298.38413400885634,-132.1298668843192,0.18049719421375898,normal -2025-07-16 11:40:00+08:00,1337.5003532322266,2075.6903156417275,-484.32350105018867,-253.8664613593121,0.2660142742867067,normal -2025-07-16 11:50:00+08:00,1174.2229998557032,2075.7523122269695,-232.25047606178563,-669.2788363094808,0.5578316483894827,normal -2025-07-16 12:00:00+08:00,998.5431779979476,2075.7992007072103,-482.0848195222363,-595.1712031870263,0.5057727878382998,normal -2025-07-16 12:10:00+08:00,1934.918024797228,2075.8297976012564,-570.4276914436919,429.5159186396636,0.2140456942285034,normal -2025-07-16 12:20:00+08:00,2415.9074482010465,2075.840222400186,-429.9029201390909,769.9701459399512,0.4532067414285954,normal -2025-07-16 12:30:00+08:00,1423.8884107103984,2075.8234258715825,-715.7398906559617,63.80487549477766,0.042857669095060384,normal -2025-07-16 12:40:00+08:00,1765.916422588517,2075.772970949978,-664.1332869779856,354.2767386165242,0.16119194872650103,normal -2025-07-16 12:50:00+08:00,1372.027027058728,2075.6856501933216,-686.8367892966471,-16.821833837946542,0.09949602658945554,normal -2025-07-16 13:00:00+08:00,1862.3879006732684,2075.558644935025,-384.46458256200765,171.29383830025108,0.032650786508090376,normal -2025-07-16 13:10:00+08:00,1675.6994741395083,2075.389709009892,-214.0198401731489,-185.670394697235,0.2181081494394331,normal -2025-07-16 13:20:00+08:00,1729.7077867758203,2075.177314426128,-474.950544960318,129.48101731001043,0.0032782681119661893,normal -2025-07-16 13:30:00+08:00,991.187613884844,2074.921161222222,-885.8622576190279,-197.87128971835,0.2266789897934127,normal -2025-07-16 13:40:00+08:00,1582.7204998422262,2074.622444040925,-349.4735683583735,-142.42837584032532,0.18773165332460306,normal -2025-07-16 13:50:00+08:00,2402.5654457510377,2074.280643944279,-162.3954766993726,490.68027850613134,0.25701221126365653,normal -2025-07-16 14:00:00+08:00,1665.5933960974917,2073.892524768226,-568.9773798835878,160.6782512128534,0.025193587504870194,normal -2025-07-16 14:10:00+08:00,1466.819014597788,2073.453709277004,-726.3676041668726,119.7329094876568,0.003569547212580182,normal -2025-07-16 14:20:00+08:00,1271.1524429876306,2072.9598934305764,-698.2556047959118,-103.55184564703404,0.16042180980683488,normal -2025-07-16 14:30:00+08:00,1135.7031805716333,2072.408037651308,-896.8757203884179,-39.829136691256736,0.11565811300935497,normal -2025-07-16 14:40:00+08:00,1519.829179504587,2071.7962447941864,-312.7961419037114,-239.17092338588782,0.2556910062257908,normal -2025-07-16 14:50:00+08:00,2346.524334543775,2071.1219227753804,-73.93692697116407,349.33933873955857,0.1577235420205999,normal -2025-07-16 15:00:00+08:00,2437.639229721492,2070.382204021475,-772.4932827686548,1139.7503084686718,0.7129685649355945,normal -2025-07-16 15:10:00+08:00,1472.966564512128,2069.572605176005,-836.6414290650521,240.03538840117517,0.08094010057730272,normal -2025-07-16 15:20:00+08:00,1536.1927371333204,2068.688776514142,-842.1280298873659,309.6319905065443,0.12983006846836714,normal -2025-07-16 15:30:00+08:00,2810.442576594509,2067.7266148295575,779.9439495175891,-37.22798775263777,0.11383086736456871,normal -2025-07-16 15:40:00+08:00,1357.5148163006593,2066.6809726118786,-178.87177687925688,-530.2943794319624,0.460198352674681,normal -2025-07-16 15:50:00+08:00,2144.417540851625,2065.5474513067775,-284.98973032129,363.8598198661375,0.16792383678450884,normal -2025-07-16 16:00:00+08:00,3081.539041627233,2064.3239010818825,-346.1363894861519,1363.3515300315025,0.87004313771515,normal -2025-07-16 16:10:00+08:00,1411.236460705623,2063.0103140910596,-466.8428257863769,-184.9310275990597,0.21758876152973639,normal -2025-07-16 16:20:00+08:00,2185.548420619788,2061.6085993661163,154.57018291782867,-30.630361664157135,0.10919619098863421,normal -2025-07-16 16:30:00+08:00,1554.883845130884,2060.120280470618,-477.28088827807215,-27.955547061661946,0.10731719695624523,normal -2025-07-16 16:40:00+08:00,997.4054922780164,2058.5467278335354,-399.56647962256363,-661.5747559329554,0.5524197140299827,normal -2025-07-16 16:50:00+08:00,1431.1367199470355,2056.888438564458,-496.9462994650486,-128.80541915237382,0.17816184826361822,normal -2025-07-16 17:00:00+08:00,1668.108303716656,2055.1464331655043,-118.34583912152654,-268.69229032732164,0.2764290686915686,normal -2025-07-16 17:10:00+08:00,1682.5251902674097,2053.32203456926,-472.5985019821615,101.80165768031156,0.01616582775772002,normal -2025-07-16 17:20:00+08:00,1420.3779269767194,2051.417450104787,-828.309763774486,197.27024064641864,0.050898595139706425,normal -2025-07-16 17:30:00+08:00,4435.297298236891,2049.4362227711968,-598.1231063112257,2983.9841817769197,2.008499267902166,mild -2025-07-16 17:40:00+08:00,962.0281641309411,2047.3815174084175,-1046.2709496304171,-39.08240364705921,0.11513355069669003,normal -2025-07-16 17:50:00+08:00,924.1620952558656,2045.2564247838734,-987.7765674063419,-133.31776212166596,0.18133166253915084,normal -2025-07-16 18:00:00+08:00,952.6281200203414,2043.064385322422,-1187.503788825549,97.06752352346848,0.019491445099923482,normal -2025-07-16 18:10:00+08:00,826.7487688685557,2040.809736498013,-1169.3039926177833,-44.75697501167406,0.11911980294779197,normal -2025-07-16 18:20:00+08:00,1870.4435600957256,2038.4990356780463,-1035.5602698287776,867.5047942464571,0.5217225263910837,normal -2025-07-16 18:30:00+08:00,897.9706136845168,2036.139185881652,-1161.6816578755459,23.51308567841056,0.07116169904487507,normal -2025-07-16 18:40:00+08:00,853.1601996484942,2033.738865433064,-1245.5781562206926,64.99949043612287,0.042018480336446444,normal -2025-07-16 18:50:00+08:00,826.8776035701535,2031.3076028855571,-1179.7461641469786,-24.68383516842505,0.1050188966862551,normal -2025-07-16 19:00:00+08:00,825.2399017682308,2028.8552117212294,-1211.5695250742046,7.954215121206062,0.08209143783889405,normal -2025-07-16 19:10:00+08:00,858.8985777562461,2026.3906987850887,-1212.565653681219,45.07353265237634,0.05601599468019511,normal -2025-07-16 19:20:00+08:00,955.308834153206,2023.9217226680103,-1215.5521312214034,146.9392427065991,0.015542258784699593,normal -2025-07-16 19:30:00+08:00,962.8652997741624,2021.4558444390227,-1209.1789869711688,150.58844230630848,0.018105735245630344,normal -2025-07-16 19:40:00+08:00,979.706189153716,2019.0015097542675,-1209.5643373041385,170.26901670358689,0.03193087356062887,normal -2025-07-16 19:50:00+08:00,986.3376541428354,2016.5671349874247,-1175.0415212637045,144.81204041911496,0.014047949459433346,normal -2025-07-16 20:00:00+08:00,975.366705363013,2014.1596333474156,-1116.4131518050444,77.62022382064174,0.033152713456094524,normal -2025-07-16 20:10:00+08:00,872.0705626145875,2011.7853450433179,-1017.2769305974581,-122.43785183127216,0.17368878273375904,normal -2025-07-16 20:20:00+08:00,949.6185770427657,2009.4509626501226,-913.2470199796586,-146.58536562769837,0.19065184038948957,normal -2025-07-16 20:30:00+08:00,1104.79171621106,2007.1658222013566,-1012.1918236037425,109.8177176134459,0.010534735134111153,normal -2025-07-16 20:40:00+08:00,1446.269306115079,2004.9412917799284,-860.3234650892169,301.6514794243674,0.12422394807227076,normal -2025-07-16 20:50:00+08:00,1510.2579170541503,2002.7897846897165,-767.9175838823603,275.3857162467941,0.10577287029635168,normal -2025-07-16 21:00:00+08:00,1186.8691569897155,2000.7249781784135,-981.4665023844954,167.6106811957975,0.030063455702746506,normal -2025-07-16 21:10:00+08:00,1185.5680865786744,1998.760562598587,-945.5184538413786,132.32597782146604,0.005276785623580175,normal -2025-07-16 21:20:00+08:00,1156.1173540618574,1996.9066489636,-746.4005959626786,-94.38869893906394,0.15398491583813909,normal -2025-07-16 21:30:00+08:00,953.1410676812754,1995.1695035649304,-985.3066211008252,-56.721814782829824,0.12752482006842533,normal -2025-07-16 21:40:00+08:00,913.6177570741808,1993.5529227728994,-902.7120212089033,-177.22314448981524,0.21217415584038812,normal -2025-07-16 21:50:00+08:00,923.5441861616614,1992.0565585703353,-370.52174000928267,-697.9906323993912,0.5780010064682763,normal -2025-07-16 22:00:00+08:00,979.61709702279,1990.6771608961483,-800.0086579491135,-211.05140592424482,0.23593770988338364,normal -2025-07-16 22:10:00+08:00,950.4337652484784,1989.4114363288124,-940.4854503886584,-98.49222069167558,0.15686754287245505,normal -2025-07-16 22:20:00+08:00,871.7697737711194,1988.2565304543255,-1146.1788925387173,29.692135855511196,0.06682106235260729,normal -2025-07-16 22:30:00+08:00,982.7929667634944,1987.207627648988,-1022.049706653041,17.63504576754758,0.0752908831402336,normal -2025-07-16 22:40:00+08:00,894.373215518347,1986.258745432407,-1132.5155179670958,40.62998805303573,0.05913747972705655,normal -2025-07-16 22:50:00+08:00,986.5714161074122,1985.4054057850014,-973.183383062392,-25.650606615197148,0.10569803077557638,normal -2025-07-16 23:00:00+08:00,999.0183693261692,1984.6442689895946,-1083.6598850810574,98.03398541763204,0.018812528463992655,normal -2025-07-16 23:10:00+08:00,1017.5594436913084,1983.9738899695913,-1096.35324475003,129.93879847174685,0.0035998485572951598,normal -2025-07-16 23:20:00+08:00,1096.0945071649803,1983.3950809781747,-955.1271586227624,67.82658480956775,0.0400325133644746,normal -2025-07-16 23:30:00+08:00,1326.7636206095358,1982.9086631079801,-1080.35087976942,424.20583727097596,0.21031548758391708,normal -2025-07-16 23:40:00+08:00,988.3904446484938,1982.5137329427082,-782.8707683873661,-211.25251990684842,0.2360789877023359,normal -2025-07-16 23:50:00+08:00,954.5034460946076,1982.2074901433039,-826.6223367310604,-201.08170731763585,0.22893423227074458,normal -2025-07-17 00:00:00+08:00,1115.1950570044437,1981.9886794173444,-532.5553944839317,-334.2382279289691,0.3224735405162504,normal -2025-07-17 00:10:00+08:00,887.1956824663904,1981.8571021429466,-479.22139529376983,-615.4400243827863,0.5200111556245625,normal -2025-07-17 00:20:00+08:00,1248.99994722993,1981.8124229316552,-373.61873575134763,-359.19373995037745,0.34000419782599284,normal -2025-07-17 00:30:00+08:00,2539.7912923850777,1981.8538230526708,-117.20065409838881,675.1381234307958,0.38658948720549546,normal -2025-07-17 00:40:00+08:00,1640.0896221324983,1981.9812857239378,133.9540867089132,-475.8457503003526,0.4219494777378468,normal -2025-07-17 00:50:00+08:00,3083.664859840296,1982.1922941591085,186.08204483697918,915.3905208442081,0.5553611174283282,normal -2025-07-17 01:00:00+08:00,9932.9264247938,1982.4846919054414,4531.842937204049,3418.59879568431,2.3138057609799425,mild -2025-07-17 01:10:00+08:00,2636.6090851388567,1982.8558241943194,1779.446731598878,-1125.6934706543407,0.8784521405271394,normal -2025-07-17 01:20:00+08:00,2119.924010537234,1983.3038493225968,2072.4171341843094,-1935.796972969672,1.447530702102201,normal -2025-07-17 01:30:00+08:00,2525.591471256545,1983.826598351885,616.2824056200816,-74.51753271542157,0.14002589127022944,normal -2025-07-17 01:40:00+08:00,2094.3217413323114,1984.4223636816275,1058.4955647615047,-948.5961871108209,0.7540454849704673,normal -2025-07-17 01:50:00+08:00,1843.864432059909,1985.087928597395,-95.39520651158323,-45.82829002590279,0.11987237642210555,normal -2025-07-17 02:00:00+08:00,2060.561409358393,1985.8154664484778,2478.8532367573825,-2404.107293847467,1.776507632845249,mild -2025-07-17 02:10:00+08:00,1704.97873974179,1986.5945115070228,-259.47091601131746,-22.144855753915408,0.10323532366262506,normal -2025-07-17 02:20:00+08:00,986.7515525204924,1987.4139312838656,-838.5897681647687,-162.07261059860457,0.201531263902182,normal -2025-07-17 02:30:00+08:00,4372.427129669117,1988.263401606315,2320.2128890512527,63.95083901154908,0.042755133174737475,normal -2025-07-17 02:40:00+08:00,4085.1609273673134,1989.130937732999,774.1630250657598,1321.8669645685545,0.840901211067817,normal -2025-07-17 02:50:00+08:00,1925.7643835349088,1990.00388105369,431.9327222920153,-496.1722198107966,0.4362283421025144,normal -2025-07-17 03:00:00+08:00,999.2616669361602,1990.872028421101,-591.8092569308708,-399.80110455407,0.3685299116045124,normal -2025-07-17 03:10:00+08:00,780.5655453653154,1991.728863366943,520.0407007098372,-1731.2040187114649,1.3038089877966963,normal -2025-07-17 03:20:00+08:00,2523.365869693429,1992.5688280911281,535.1070487860786,-4.3100071837777705,0.09070676411289443,normal -2025-07-17 03:30:00+08:00,1814.116031538154,1993.3894114612076,0.0577242880370894,-179.33110421109063,0.21365494771773844,normal -2025-07-17 03:40:00+08:00,846.6922449796443,1994.189451947527,726.1346858794395,-1873.6318928473222,1.4038612027417912,normal -2025-07-17 03:50:00+08:00,3813.005997897561,1994.9698488675494,1617.4655934754237,200.57055555458783,0.05321698835158343,normal -2025-07-17 04:00:00+08:00,4023.9878987052543,1995.7337373950775,1733.9303421285365,294.32381918164015,0.11907643995914226,normal -2025-07-17 04:10:00+08:00,871.7811744837378,1996.4868675613282,1629.4452629460673,-2754.1509560236577,2.0224050313756337,mild -2025-07-17 04:20:00+08:00,952.9520935298964,1997.2368774853085,1678.4386495899,-2722.723433545312,2.0003279397018794,mild -2025-07-17 04:30:00+08:00,1695.877521404553,1997.9921437368369,1425.3422263712541,-1727.456848703538,1.3011766894397658,normal -2025-07-17 04:40:00+08:00,2402.596598718994,1998.7628939417248,1822.8035439663786,-1418.9698391891095,1.0844718571099217,normal -2025-07-17 04:50:00+08:00,5658.290093392947,1999.558593874834,-111.67172102307303,3770.4032205411854,2.560940053673524,moderate -2025-07-17 05:00:00+08:00,4327.256223117087,2000.3879122428878,3721.7584493115246,-1394.8901384373255,1.0675564365151233,normal -2025-07-17 05:10:00+08:00,7759.709174446929,2001.2596374951002,3040.574158777051,2717.8753781747782,1.8215641235119113,mild -2025-07-17 05:20:00+08:00,3898.9603827375768,2002.1812151790584,2309.9747535794827,-413.19558602096436,0.37793921822328197,normal -2025-07-17 05:30:00+08:00,3485.8946133746235,2003.160256936196,1487.6823512719745,-4.947994833547,0.09115493535644005,normal -2025-07-17 05:40:00+08:00,4522.59206778581,2004.2048195874756,2448.1170462490536,70.27020194928105,0.03831593008476559,normal -2025-07-17 05:50:00+08:00,2358.38453148851,2005.3226494932956,621.9750181306493,-268.9131361354348,0.2765842076515308,normal -2025-07-17 06:00:00+08:00,4075.055359352005,2006.5208196768108,1828.9315828625301,239.60295681266416,0.08063632760796469,normal -2025-07-17 06:10:00+08:00,1508.5335744732297,2007.804292932815,1387.1041193366266,-1886.374837796212,1.4128128203573407,normal -2025-07-17 06:20:00+08:00,4242.223637534969,2009.1766838888234,1694.345160780267,538.7017928658788,0.2907461899940236,normal -2025-07-17 06:30:00+08:00,4047.545584362048,2010.6400435784176,2071.3755537729257,-34.470012989295356,0.11189345528488077,normal -2025-07-17 06:40:00+08:00,1989.0567440430036,2012.1944794748078,2307.4859892755,-2330.623724707304,1.7248871624903286,normal -2025-07-17 06:50:00+08:00,2767.3815741376275,2013.8386548964536,1618.9557431622302,-865.4128239210563,0.6956111385743434,normal -2025-07-17 07:00:00+08:00,2206.699444532069,2015.569685378875,688.8250129070086,-497.69525375381477,0.43729823744680757,normal -2025-07-17 07:10:00+08:00,2093.039241911203,2017.3831036416682,71.93610074320272,3.720037526332135,0.08506584751402502,normal -2025-07-17 07:20:00+08:00,2392.082956618889,2019.2733368329943,2253.8416414352187,-1881.032021649324,1.4090596183048363,normal -2025-07-17 07:30:00+08:00,4168.764318557959,2021.2336605895587,1241.7642404184382,905.7664175499624,0.5486004123536237,normal -2025-07-17 07:40:00+08:00,3788.518045108505,2023.256766807741,1960.3657253437518,-195.1044470429881,0.22473534821514615,normal -2025-07-17 07:50:00+08:00,3714.43230364358,2025.3350371204672,1676.644864302046,12.452402221066677,0.07893156772702806,normal -2025-07-17 08:00:00+08:00,2416.3451026820194,2027.4614406283824,406.161283701445,-17.27762164780802,0.09981620675221016,normal -2025-07-17 08:10:00+08:00,2561.607392917118,2029.6307218800325,292.63284983530366,239.3438212017818,0.08045429096663141,normal -2025-07-17 08:20:00+08:00,2344.888624102204,2031.8386177045352,148.7706028296627,164.2794035680065,0.027723311912215696,normal -2025-07-17 08:30:00+08:00,2048.0730466387504,2034.0795965863174,-106.86894088093794,120.86239093337076,0.002776113195055803,normal -2025-07-17 08:40:00+08:00,2430.0309269243767,2036.3459228950194,160.5195829681502,233.1654210612071,0.07611411090965789,normal -2025-07-17 08:50:00+08:00,3008.714339105286,2038.6299015431512,280.7425306732223,689.3419068889127,0.3965673093432432,normal -2025-07-17 09:00:00+08:00,2663.2158785782867,2040.9254977984012,945.841379473846,-323.55099869396054,0.314966014597773,normal -2025-07-17 09:10:00+08:00,3372.1291541588685,2043.228308050896,-60.30634276661317,1389.2071888745859,0.888206126889921,normal -2025-07-17 09:20:00+08:00,3041.584323940157,2045.5353446675533,93.22597780234763,902.823001470256,0.5465327321325546,normal -2025-07-17 09:30:00+08:00,1660.8525546553874,2047.8450433052565,-34.661503376552986,-352.3309852733162,0.3351832748835509,normal -2025-07-17 09:40:00+08:00,1809.761341828027,2050.1548880373434,-0.7534838453784198,-239.6400623639379,0.25602056526861,normal -2025-07-17 09:50:00+08:00,1976.7089403115351,2052.4619362386693,17.56652343690961,-93.3195193640438,0.15323384245939314,normal -2025-07-17 10:00:00+08:00,2038.9951136792497,2054.7622851427514,-65.61839831717897,49.85122685367742,0.05265977743640938,normal -2025-07-17 10:10:00+08:00,1065.5302590943345,2057.049475429776,-706.3957493376749,-285.1234669977666,0.2879715819110249,normal -2025-07-17 10:20:00+08:00,1507.440177285186,2059.3145333381703,-262.64519584596326,-289.22916020702087,0.2908557343423045,normal -2025-07-17 10:30:00+08:00,2206.189864401282,2061.5474905873384,-434.67907447098946,579.321448284933,0.3192805377798109,normal -2025-07-17 10:40:00+08:00,2533.8430227659114,2063.7391128018417,-413.2047589661605,883.3086689302304,0.5328243747927384,normal -2025-07-17 10:50:00+08:00,1707.8208183494703,2065.880486344962,-420.348875244593,62.28920724910131,0.043922390211077425,normal -2025-07-17 11:00:00+08:00,2087.766605985116,2067.963089855007,-390.9493033728977,410.7528195030063,0.20086506059729248,normal -2025-07-17 11:10:00+08:00,1933.5315137707685,2069.978605120757,-137.12314478059807,0.6760534306094996,0.08720417438917155,normal -2025-07-17 11:20:00+08:00,1289.7343694159483,2071.920153504701,-636.020431620951,-146.16535246780177,0.19035679107271286,normal -2025-07-17 11:30:00+08:00,5900.959261531746,2073.7831486057394,-309.8244403260646,4137.000553252071,2.8184660144675546,moderate -2025-07-17 11:40:00+08:00,2110.000936736778,2075.5655680535688,-358.09445566617524,392.5298243493844,0.18806383724746936,normal -2025-07-17 11:50:00+08:00,2147.613615996375,2077.2685458286937,-177.5009140489269,247.84598421660803,0.08642685951487929,normal -2025-07-17 12:00:00+08:00,1785.528804054814,2078.892763575017,-518.6848347762312,225.3208752560281,0.0706035029067767,normal -2025-07-17 12:10:00+08:00,1378.5575758520786,2080.437640481598,-554.944440232249,-146.93562439727043,0.19089788889588094,normal -2025-07-17 12:20:00+08:00,2010.064750933189,2081.902121470369,-367.5104832546176,295.673112717438,0.12002428677414775,normal -2025-07-17 12:30:00+08:00,1167.7481967847427,2083.2840305261834,-604.612389816948,-310.92344392449263,0.3060954558557347,normal -2025-07-17 12:40:00+08:00,1530.725452671755,2084.580068440902,-687.2071704696239,133.35255470047696,0.00599793161539981,normal -2025-07-17 12:50:00+08:00,1536.0175271934638,2085.7882623287237,-510.58158867946884,-39.18914645579116,0.11520853499669373,normal -2025-07-17 13:00:00+08:00,2127.283052989792,2086.9049721684046,-195.96324401317074,236.34132483455824,0.07834510824009032,normal -2025-07-17 13:10:00+08:00,1925.143657001537,2087.9279705451204,-225.69392065887766,62.909607115293966,0.04348657396976355,normal -2025-07-17 13:20:00+08:00,1843.833950247819,2088.8564464212136,-463.00799182774426,217.98549565434996,0.06545057212645133,normal -2025-07-17 13:30:00+08:00,1436.0971008200452,2089.69056432691,-794.8963806743432,141.30291716747797,0.01158287332197225,normal -2025-07-17 13:40:00+08:00,1112.8851291410576,2090.4309898405972,-406.98354914160933,-570.5623115579303,0.48848562316092586,normal -2025-07-17 13:50:00+08:00,1628.573080947674,2091.0790393383654,-76.25711251937742,-386.24884587131396,0.35900977022105507,normal -2025-07-17 14:00:00+08:00,1085.0493041752643,2091.636387386255,-759.5196832998548,-247.0673999111359,0.2612380943320094,normal -2025-07-17 14:10:00+08:00,1414.464658856681,2092.105050876096,-728.9036011255289,51.26320910611366,0.05166789327976841,normal -2025-07-17 14:20:00+08:00,961.4997278783152,2092.4879940069877,-629.6619633044153,-501.32630282425725,0.439848963589961,normal -2025-07-17 14:30:00+08:00,977.229539825342,2092.7874037079414,-811.8888575357576,-303.6690063468418,0.30099938493402345,normal -2025-07-17 14:40:00+08:00,1985.976831676268,2093.0050935420622,-338.00337113455987,230.97510926876566,0.07457546864890849,normal -2025-07-17 14:50:00+08:00,1951.1433366058668,2093.1441353104256,-340.81034631972403,198.80954761516523,0.05197992189992058,normal -2025-07-17 15:00:00+08:00,982.3392122732656,2093.2086666487726,-857.3480491009648,-253.5214052745423,0.26577188054341055,normal -2025-07-17 15:10:00+08:00,1493.544586761826,2093.2008179820573,-878.6561510778137,278.9999198575824,0.1083117629022822,normal -2025-07-17 15:20:00+08:00,946.4518140451128,2093.1212832420338,-758.9041784082557,-387.7652907886654,0.36007503693056525,normal -2025-07-17 15:30:00+08:00,4439.986775749436,2092.971607905471,482.55755210426787,1864.4576157396968,1.222058318042475,normal -2025-07-17 15:40:00+08:00,2239.969348641859,2092.753082901626,-229.6368380966374,376.85310383687056,0.177051311645521,normal -2025-07-17 15:50:00+08:00,1696.831137234822,2092.464130580088,-382.22461059499346,-13.408382750272267,0.09709815788572984,normal -2025-07-17 16:00:00+08:00,2019.0702352784688,2092.101626032974,-378.08965891850045,305.0582681639953,0.12661713663397497,normal -2025-07-17 16:10:00+08:00,4553.4183655529305,2091.6634053605558,-537.6412208099504,2999.3961810023247,2.019325833057263,mild -2025-07-17 16:20:00+08:00,2658.6859392669926,2091.149559702537,130.04318089540405,437.4931986690517,0.21964954488638955,normal -2025-07-17 16:30:00+08:00,1400.4004584291738,2090.5617798715207,-346.3998635166307,-343.76145792571606,0.3291633844838521,normal -2025-07-17 16:40:00+08:00,1879.1341858385567,2089.9018900197634,-401.895730834578,191.1280266533713,0.04658383499602171,normal -2025-07-17 16:50:00+08:00,1960.9276905823644,2089.1734232080125,-476.90932475076715,348.66359212511907,0.1572488459969,normal -2025-07-17 17:00:00+08:00,3449.971660187023,2088.3809161144545,-279.03319622952847,1640.6239403020973,1.0648204519105169,normal -2025-07-17 17:10:00+08:00,1568.9687174429855,2087.529211128697,-637.3745454108624,118.81405172515088,0.004215023071263004,normal -2025-07-17 17:20:00+08:00,973.5748279775828,2086.6235197955216,-958.3852854934195,-154.6634063245192,0.19632647303451942,normal -2025-07-17 17:30:00+08:00,1540.214377591221,2085.6693053476665,-773.0827766777144,227.62784892126865,0.07222409737557534,normal -2025-07-17 17:40:00+08:00,1224.4723023157678,2084.6710206400076,-1091.2357434794258,231.0370251551858,0.0746189630955834,normal -2025-07-17 17:50:00+08:00,853.5020047202736,2083.6317247233237,-1116.7422577362615,-113.38746226678859,0.16733109799306836,normal -2025-07-17 18:00:00+08:00,834.571880945806,2082.5523042998907,-1229.153443028643,-18.826980325441582,0.1009045946003204,normal -2025-07-17 18:10:00+08:00,832.2225331728255,2081.43248276583,-1261.4085665298905,12.198616936885628,0.07910984589032188,normal -2025-07-17 18:20:00+08:00,794.7729838156192,2080.2721907274886,-1100.1290443218998,-185.3701625899696,0.21789724348080813,normal -2025-07-17 18:30:00+08:00,824.8356107427088,2079.0705720734013,-1187.6571260166393,-66.57783531405312,0.13444844152016866,normal -2025-07-17 18:40:00+08:00,573.5524779062564,2077.8267556730293,-1276.203573613267,-228.07070415350586,0.24789336459619943,normal -2025-07-17 18:50:00+08:00,771.6941487761098,2076.5398192631283,-1099.7377378878614,-205.10793259915704,0.2317625603612129,normal -2025-07-17 19:00:00+08:00,739.1195279575579,2075.208484844785,-1233.4335816772211,-102.65537521000579,0.15979206051512027,normal -2025-07-17 19:10:00+08:00,743.5631052101669,2073.832159306609,-1191.1723472307212,-139.09670686572076,0.18539123462218618,normal -2025-07-17 19:20:00+08:00,710.0101243354584,2072.4094140219518,-1208.9239312414704,-153.47535844502295,0.19549189748162563,normal -2025-07-17 19:30:00+08:00,707.7551705632336,2070.9384726707367,-1219.0765689769858,-144.10673313051734,0.1889106596488341,normal -2025-07-17 19:40:00+08:00,655.6375699269878,2069.4166502940316,-1212.5718604861,-201.20721988094374,0.22902240187966827,normal -2025-07-17 19:50:00+08:00,1210.348373095455,2067.841816761114,-1165.4224953942692,307.9290517286104,0.1286337942300417,normal -2025-07-17 20:00:00+08:00,1338.442388482841,2066.2117839262633,-1029.1758998889825,301.40650444556013,0.12405185894024866,normal -2025-07-17 20:10:00+08:00,1963.3001878105144,2064.5232135420506,-910.0362512502662,808.8132255187302,0.4804930866803568,normal -2025-07-17 20:20:00+08:00,1451.2311794679322,2062.7725292456203,-858.1620205085195,246.62067073083153,0.08556610575443846,normal -2025-07-17 20:30:00+08:00,1589.578574855268,2060.9551147865463,-994.6250707134797,523.2485307822012,0.2798906386563396,normal -2025-07-17 20:40:00+08:00,1773.5717860573072,2059.0661441632687,-804.4342889926739,518.9399308867123,0.2768639490741819,normal -2025-07-17 20:50:00+08:00,1608.03913252319,2057.1036193317213,-741.1763628343145,292.1118760257832,0.11752260217690429,normal -2025-07-17 21:00:00+08:00,1179.033457886184,2055.0677772118843,-785.9563313096515,-90.07798801604895,0.15095674330904366,normal -2025-07-17 21:10:00+08:00,1334.9762733902162,2052.9616079804737,-982.190185578381,264.2048509881233,0.0979185767395609,normal -2025-07-17 21:20:00+08:00,977.6450851869454,2050.788270778169,-827.6525556414061,-245.4906299498175,0.2601304507050441,normal -2025-07-17 21:30:00+08:00,947.7514533553804,2048.550488713115,-1003.1866932091334,-97.61234214860133,0.15624944899405263,normal -2025-07-17 21:40:00+08:00,1149.2930162101916,2046.2513912490717,-959.2042495787952,62.245874539914894,0.04395283041500504,normal -2025-07-17 21:50:00+08:00,1824.127461104548,2043.8939829303458,-438.3696146430474,218.6030928172495,0.06588441953495063,normal -2025-07-17 22:00:00+08:00,1110.625141005668,2041.4790346415284,-816.9369648632432,-113.91692877261721,0.16770303569816156,normal -2025-07-17 22:10:00+08:00,890.3317276820223,2039.0052624118662,-975.3694549172703,-173.3040798125735,0.20942110554142,normal -2025-07-17 22:20:00+08:00,962.9122883878692,2036.4707080809505,-1161.1193928795606,87.56097318647949,0.02616957200081027,normal -2025-07-17 22:30:00+08:00,932.4426012485684,2033.874769131514,-1068.7510188214922,-32.681149061453425,0.11063682065979859,normal -2025-07-17 22:40:00+08:00,852.7811760934117,2031.2152427700344,-1151.5309973986168,-26.903069278005887,0.10657785619114436,normal -2025-07-17 22:50:00+08:00,806.2949839576075,2028.4893130571636,-1027.752215318493,-194.4421137810632,0.22427007475452995,normal -2025-07-17 23:00:00+08:00,982.9108657478334,2025.6956405990506,-1079.3330473862172,36.548272535000024,0.062004788397027236,normal -2025-07-17 23:10:00+08:00,875.799334441582,2022.8365116846537,-1150.0445424296597,3.007365186588004,0.0855664829869205,normal -2025-07-17 23:20:00+08:00,977.6912316019416,2019.9157378633802,-1000.0967569918975,-42.12774926954103,0.11727283401220183,normal -2025-07-17 23:30:00+08:00,852.2620162928647,2016.9371059913537,-1041.0701417185703,-123.60494797991873,0.17450864019097698,normal -2025-07-17 23:40:00+08:00,917.7907782227472,2013.9041380299323,-876.5705027900536,-219.54285701713138,0.2419027535596717,normal -2025-07-17 23:50:00+08:00,993.4678935658828,2010.8232567848004,-746.6415144611148,-270.7138487578027,0.27784916570444423,normal -2025-07-18 00:00:00+08:00,2148.035887338302,2007.704894244377,-564.6340839701396,704.9650770640646,0.4075422170989896,normal -2025-07-18 00:10:00+08:00,1984.9759753565888,2004.5618154632161,-329.27981869708293,309.6939785904556,0.129873613632073,normal -2025-07-18 00:20:00+08:00,1822.891122399507,2001.4057460580316,-341.73048800694244,163.21586434841765,0.026976200749836473,normal -2025-07-18 00:30:00+08:00,1920.837497766348,1998.247315456754,23.070578487974565,-100.48039617838072,0.1582641891564166,normal -2025-07-18 00:40:00+08:00,1352.4000225929076,1995.0958173244655,44.775026630260506,-687.4708213618185,0.5706110878761542,normal -2025-07-18 00:50:00+08:00,1024.4026342465088,1991.9596001362643,213.4690870328178,-1181.0260529225734,0.9173219716480309,normal -2025-07-18 01:00:00+08:00,2291.796181021234,1988.847031190799,2335.587458337843,-2032.638308507408,1.515559451232792,normal -2025-07-18 01:10:00+08:00,4535.772607618563,1985.7662375406032,1404.7864486473923,1145.2199214305672,0.7168108387534852,normal -2025-07-18 01:20:00+08:00,4837.360066485388,1982.7264033771958,2943.0425943017062,-88.40893119351358,0.14978427034350184,normal -2025-07-18 01:30:00+08:00,3834.611418365843,1979.7364545676319,859.0180686057952,995.8568951924158,0.6118868433860147,normal -2025-07-18 01:40:00+08:00,8312.530339648587,1976.8033489969573,1659.2996907397849,4676.427299911845,3.1974005533096905,moderate -2025-07-18 01:50:00+08:00,2416.1362672814903,1973.9338570067218,484.79856632539617,-42.59615605062777,0.11760187870396159,normal -2025-07-18 02:00:00+08:00,2150.4585344169277,1971.1358733483044,2621.8901780697724,-2442.567517001149,1.803525030508139,mild -2025-07-18 02:10:00+08:00,1011.7960567667396,1968.416808456118,-353.04196806936625,-603.578783620012,0.5116789143584981,normal -2025-07-18 02:20:00+08:00,1209.9100122138404,1965.7825983251696,-755.0594256388717,-0.8131604724574117,0.08825031195481933,normal -2025-07-18 02:30:00+08:00,3568.234644892499,1963.2375465177352,2791.375095195536,-1186.3779968207718,0.921081585730074,normal -2025-07-18 02:40:00+08:00,3200.031223717012,1960.7840535092732,885.3366794465817,353.9104907611568,0.16093466826528002,normal -2025-07-18 02:50:00+08:00,3141.8289412900854,1958.420851921582,1225.413111089741,-42.005021721237654,0.11718662081048808,normal -2025-07-18 03:00:00+08:00,3206.886356646924,1956.1436626316731,-98.1571361971739,1348.8998302124246,0.8598911601939441,normal -2025-07-18 03:10:00+08:00,2902.573404402226,1953.9470774751878,428.03335039175084,520.5929765352873,0.2780251745684803,normal -2025-07-18 03:20:00+08:00,1127.2191458378038,1951.8269385752312,890.7908427509273,-1715.3986354883546,1.2927060796818155,normal -2025-07-18 03:30:00+08:00,1822.749257393737,1949.779915449275,271.55742995561195,-398.5880880111499,0.3676777961557595,normal -2025-07-18 03:40:00+08:00,2663.225112127161,1947.800032537449,929.4072286805767,-213.9821490908646,0.23799648768256507,normal -2025-07-18 03:50:00+08:00,739.6451273634689,1945.8797242196529,1828.2603860695676,-3034.4949829257516,2.2193400836493664,mild -2025-07-18 04:00:00+08:00,4249.687842932712,1944.0111094765207,1878.6185668401563,427.05816661603467,0.2123191815269566,normal -2025-07-18 04:10:00+08:00,3955.3951548727728,1942.1876993327494,1297.3120770730732,715.8953784669504,0.41522049546978834,normal -2025-07-18 04:20:00+08:00,3643.9352822001742,1940.4061790586816,1773.2592801741775,-69.73017703268488,0.13666288706410823,normal -2025-07-18 04:30:00+08:00,3491.2919034522897,1938.6653278041717,813.6232248309868,739.0033508171314,0.43145329983166675,normal -2025-07-18 04:40:00+08:00,3400.6985917015345,1936.9665180604438,1284.387183809836,179.34488983125493,0.03830645990208955,normal -2025-07-18 04:50:00+08:00,1584.2564353652588,1935.3112030652928,-418.17324859396876,67.1184808939347,0.04052993962741806,normal -2025-07-18 05:00:00+08:00,4623.994805605727,1933.7013587687516,2690.3089203610366,-0.015473524060780619,0.08768995572887617,normal -2025-07-18 05:10:00+08:00,3388.6680047943464,1932.1402130570943,2583.7779814524724,-1127.2501897152204,0.8795456988704992,normal -2025-07-18 05:20:00+08:00,4564.989875403319,1930.6325513230113,2512.8131231625302,121.54420091777774,0.0022971577972765063,normal -2025-07-18 05:30:00+08:00,2432.5673904415507,1929.183869900708,502.86328575216135,0.5202347886813641,0.08731363330196679,normal -2025-07-18 05:40:00+08:00,3456.816693631036,1927.797868677932,2000.329937765158,-471.31111281205426,0.41876400208969844,normal -2025-07-18 05:50:00+08:00,3817.7455982944366,1926.4783650279496,423.923579371554,1467.3436538949331,0.9430951466179595,normal -2025-07-18 06:00:00+08:00,2305.9154394036486,1925.2318105047752,1657.1211754789572,-1276.4375465800838,0.9843462906556152,normal -2025-07-18 06:10:00+08:00,3431.004916453707,1924.0642296502688,1784.2829117401734,-277.34222493673497,0.2825054432920665,normal -2025-07-18 06:20:00+08:00,2790.1843716191524,1922.9814163163205,1610.2935649417775,-743.0906096389456,0.6096826744294691,normal -2025-07-18 06:30:00+08:00,3974.732898899512,1921.9902884513083,2011.7268435812666,41.01576686693693,0.05886647922912811,normal -2025-07-18 06:40:00+08:00,3757.506619802596,1921.099853491113,2538.4519808636283,-702.0452145521451,0.5808492545905009,normal -2025-07-18 06:50:00+08:00,4389.941588814598,1920.3210488650045,1623.720101392191,845.9004385574019,0.5065459771919446,normal -2025-07-18 07:00:00+08:00,2664.318971312314,1919.6655143475457,769.733344876636,-25.0798879118679,0.10529711437683678,normal -2025-07-18 07:10:00+08:00,3144.2750775164645,1919.1442602146199,-198.25938791735507,1423.3902052191997,0.9122188878718105,normal -2025-07-18 07:20:00+08:00,3713.660438832946,1918.7673467686545,2292.7126667971447,-497.8195747328532,0.437385569995948,normal -2025-07-18 07:30:00+08:00,2736.8704888174434,1918.543256837118,932.3597262890739,-114.03249430874848,0.16778421775561628,normal -2025-07-18 07:40:00+08:00,7059.658186013385,1918.4783119765734,2815.7578419820884,2325.422032054723,1.5458749244688148,normal -2025-07-18 07:50:00+08:00,3721.280883714899,1918.5759727348438,2051.2741857035003,-248.569274723445,0.2622931258871279,normal -2025-07-18 08:00:00+08:00,2252.4360979717726,1918.8370670526058,276.65980597301956,56.939224946147306,0.04768062631882852,normal -2025-07-18 08:10:00+08:00,2154.3828318518795,1919.2618879053907,636.9952251997037,-401.87428125321503,0.3699862692309989,normal -2025-07-18 08:20:00+08:00,1875.2961580687856,1919.849859218413,294.00930762484273,-338.56300877447006,0.32551159683331476,normal -2025-07-18 08:30:00+08:00,2481.749066498979,1920.5995883272458,-16.742938421922283,577.8924165936555,0.3182766767953897,normal -2025-07-18 08:40:00+08:00,2167.759805907573,1921.510511362982,237.4785243465325,8.770770198058472,0.08151782719870562,normal -2025-07-18 08:50:00+08:00,2433.0480699926284,1922.5828432697458,314.87923379547055,195.585992927412,0.04971545092846798,normal -2025-07-18 09:00:00+08:00,5863.2744465064125,1923.816855799824,638.337471773226,3301.1201189333624,2.231279767461712,mild -2025-07-18 09:10:00+08:00,1652.6190993630448,1925.2119340978193,-100.97136007024062,-171.6214746645337,0.20823911519745952,normal -2025-07-18 09:20:00+08:00,1854.4884213565124,1926.7653944887666,162.21360245858716,-234.49057559084122,0.25240317253137556,normal -2025-07-18 09:30:00+08:00,1879.1669646840385,1928.4745226405144,-87.2749804277444,37.96742247126849,0.061007869111920084,normal -2025-07-18 09:40:00+08:00,958.619128362974,1930.3345623379385,-177.0856708922395,-794.6297630827248,0.6458877114682618,normal -2025-07-18 09:50:00+08:00,1745.4132870995545,1932.3386988260738,94.96084429877921,-281.8862560252985,0.2856975177223602,normal -2025-07-18 10:00:00+08:00,1556.811119754997,1934.4812334407288,13.425279247064449,-391.09539293279636,0.36241435497161034,normal -2025-07-18 10:10:00+08:00,1688.4749527521149,1936.7585884341665,-568.3869351830741,320.1032995010223,0.1371859155216811,normal -2025-07-18 10:20:00+08:00,974.665004273866,1939.1672401486765,-66.01368883343878,-898.4885470413717,0.7188460522397795,normal -2025-07-18 10:30:00+08:00,1366.1788258787512,1941.7014288207781,-190.31991809164882,-385.2026848503781,0.3582748668324528,normal -2025-07-18 10:40:00+08:00,1511.1054605465142,1944.3545877957888,-236.09738277977874,-197.15174446949572,0.22617352626432555,normal -2025-07-18 10:50:00+08:00,2123.4928145614085,1947.1192728269684,-287.846117652569,464.21965938700896,0.23842425179470167,normal -2025-07-18 11:00:00+08:00,3882.049097602594,1949.9867146564081,-218.82727703313793,2150.8896599793234,1.4232700585904658,normal -2025-07-18 11:10:00+08:00,1887.50995665076,1952.9457427293219,15.187316325439932,-80.62310240400188,0.14431490965620491,normal -2025-07-18 11:20:00+08:00,2779.63971798536,1955.9847189510317,-620.491595422843,1444.1465944571717,0.9267997606828496,normal -2025-07-18 11:30:00+08:00,1922.0230945238527,1959.092413070549,-321.3192940087092,284.249975462013,0.11199980286633546,normal -2025-07-18 11:40:00+08:00,2052.825237371204,1962.2570050397187,-231.96965486934795,322.537887200833,0.13889615583329168,normal -2025-07-18 11:50:00+08:00,2054.253076529385,1965.4655084778583,-122.9181125086913,211.70568056021784,0.06103915046179717,normal -2025-07-18 12:00:00+08:00,1175.5116007364936,1968.704274019468,-555.227936055395,-237.96473722757923,0.2548436889607744,normal -2025-07-18 12:10:00+08:00,1479.9712482937798,1971.959410620008,-539.5873708798359,47.599208553607696,0.0542417670601816,normal -2025-07-18 12:20:00+08:00,1411.1383318140029,1975.2200485744474,-305.25960111305073,-258.82211564739373,0.26949550428492863,normal -2025-07-18 12:30:00+08:00,1450.4712608529742,1978.47969886944,-493.4096383353341,-34.598799681131595,0.1119839248917035,normal -2025-07-18 12:40:00+08:00,1211.3104984975716,1981.7361108283071,-710.5105448342443,-59.91506749649125,0.1297680046193406,normal -2025-07-18 12:50:00+08:00,1567.7981422356745,1984.9904436227228,-334.38486475509967,-82.80743663194858,0.1458493528191913,normal -2025-07-18 13:00:00+08:00,2064.745830984664,1988.2454563041229,-7.598508186530677,84.09888286707155,0.028601608615120223,normal -2025-07-18 13:10:00+08:00,1733.079983963927,1991.5040635522093,-237.31611512280287,-21.107964465479654,0.10250693204199107,normal -2025-07-18 13:20:00+08:00,985.844579607302,1994.7684405047385,-451.08233641021224,-557.8415244872242,0.4795495709310439,normal -2025-07-18 13:30:00+08:00,1122.6949632004412,1998.0409192048944,-703.8363235323666,-171.50963247208665,0.2081605487009325,normal -2025-07-18 13:40:00+08:00,2083.524123416728,2001.325387385846,-464.3520641921656,546.5508002230474,0.29625993213171764,normal -2025-07-18 13:50:00+08:00,2061.9675080949137,2004.6260877381922,9.971290700934253,47.370129655787196,0.054402689571053736,normal -2025-07-18 14:00:00+08:00,1034.907785449099,2007.9467723836456,-949.9665384089002,-23.07244852564645,0.10388693565881496,normal -2025-07-18 14:10:00+08:00,3818.122177610674,2011.2912572874725,-731.4382352448176,2538.269155568019,1.6953949975682983,normal -2025-07-18 14:20:00+08:00,1480.87487801591,2014.6608216211498,-561.015660451327,27.229716846087285,0.06855085350135928,normal -2025-07-18 14:30:00+08:00,999.974751121228,2018.0530881885059,-726.8794715728283,-291.1988654944496,0.2922394057478633,normal -2025-07-18 14:40:00+08:00,1149.2918432858269,2021.4635192042397,-363.18172754882517,-508.98994836958764,0.445232493436324,normal -2025-07-18 14:50:00+08:00,945.7682391529884,2024.8868703693117,-607.5917319503135,-471.5268992660099,0.4189155869729553,normal -2025-07-18 15:00:00+08:00,1349.1526605429235,2028.3182784071994,-942.3195499327528,263.15393206847716,0.09718033103957939,normal -2025-07-18 15:10:00+08:00,1156.4816680395354,2031.753554660124,-920.7709277594353,45.49904113884645,0.05571708502639616,normal -2025-07-18 15:20:00+08:00,1057.9184714861954,2035.186280888576,-675.7055645023631,-301.5622449000175,0.2995194348161509,normal -2025-07-18 15:30:00+08:00,895.6440504369878,2038.6102190524675,185.1066398345168,-1328.0728084499965,1.020618841592006,normal -2025-07-18 15:40:00+08:00,969.1272100839606,2042.0197344978483,-280.2970635960889,-792.5954608177988,0.6444586622129206,normal -2025-07-18 15:50:00+08:00,1533.770234605704,2045.408809439863,-479.4938809241094,-32.14469391004968,0.1102599735963828,normal -2025-07-18 16:00:00+08:00,1926.824173448536,2048.770355463645,-410.26120113125864,288.3150191161494,0.11485539994599765,normal -2025-07-18 16:10:00+08:00,1570.280935748218,2052.0964366525563,-608.3409164608094,126.52541555647122,0.00120202774306809,normal -2025-07-18 16:20:00+08:00,2309.4565133111246,2055.3789172284373,105.43503860939057,148.64255747329662,0.016738797146244027,normal -2025-07-18 16:30:00+08:00,2452.296310729647,2058.6094361291457,-215.5451162826765,609.2319908831778,0.3402919869453685,normal -2025-07-18 16:40:00+08:00,1729.4101134260168,2061.7783657289506,-404.1998088670247,71.83155656409099,0.037219115374342616,normal -2025-07-18 16:50:00+08:00,1546.209325161162,2064.876998599641,-457.0176251993165,-61.650048239162516,0.13098678758050286,normal -2025-07-18 17:00:00+08:00,2151.9528744379163,2067.898827366813,-439.8080747972152,523.8621218683188,0.2803216718905931,normal -2025-07-18 17:10:00+08:00,1429.1269798997355,2070.8391463208645,-802.2171267227903,160.5049603016614,0.025071854735917432,normal -2025-07-18 17:20:00+08:00,2001.517333066166,2073.6948134955837,-1088.5883361004885,1016.4108556710707,0.6263255147785384,normal -2025-07-18 17:30:00+08:00,4635.908440221926,2076.4633182177263,-948.1040733358387,3507.5491953400383,2.376291314175224,moderate -2025-07-18 17:40:00+08:00,1652.6172503531477,2079.144581904562,-1136.2921125360133,709.7647809845989,0.41091389565028247,normal -2025-07-18 17:50:00+08:00,2241.6784400444863,2081.7404621225287,-1245.629978518107,1405.5679564400643,0.8996991793774317,normal -2025-07-18 18:00:00+08:00,1974.0851262493616,2084.2531133380385,-1270.827185326865,1160.6591982381883,0.727656565765316,normal -2025-07-18 18:10:00+08:00,1875.9483001548388,2086.685439302132,-1353.4599197533287,1142.7227806060355,0.715056656350356,normal -2025-07-18 18:20:00+08:00,1595.0604457386826,2089.0404520486945,-1164.7459122538041,670.765905943792,0.3835181077690578,normal -2025-07-18 18:30:00+08:00,1188.3437154651112,2091.320985562119,-1213.6370576507984,310.6597875537909,0.13055207159953064,normal -2025-07-18 18:40:00+08:00,1138.467554221481,2093.528031399694,-1306.8406077705704,351.7801305923572,0.159438140603034,normal -2025-07-18 18:50:00+08:00,1436.9630919032038,2095.662452278844,-1019.6903841714463,360.9910237958061,0.16590857535619705,normal -2025-07-18 19:00:00+08:00,1049.593773784406,2097.7242640113486,-1255.2881330081098,207.1576427811674,0.05784426142614451,normal -2025-07-18 19:10:00+08:00,1138.2917007595372,2099.714580678201,-1169.7668624768212,208.34398255815722,0.05867763707740279,normal -2025-07-18 19:20:00+08:00,1735.3508626395794,2101.6357418199873,-1202.2857295392405,836.0008503588328,0.49959175048372056,normal -2025-07-18 19:30:00+08:00,1779.0765407974206,2103.4904115615045,-1228.9989321246555,904.5850613605717,0.5477705375548544,normal -2025-07-18 19:40:00+08:00,1111.7305862788794,2105.279770931507,-1215.6187248439364,222.069540191309,0.06831951687716352,normal -2025-07-18 19:50:00+08:00,979.8597630839738,2107.004047112775,-1155.8710817084718,28.726797679670653,0.06749918960297807,normal -2025-07-18 20:00:00+08:00,934.3371311402728,2108.6635082311045,-941.9133947415297,-232.41298234930196,0.25094371238825297,normal -2025-07-18 20:10:00+08:00,983.8099393423212,2110.25773592842,-802.8178722371315,-323.6299243489675,0.3150214580048122,normal -2025-07-18 20:20:00+08:00,1346.703929715326,2111.7859394499815,-803.2239950883602,38.14198535370497,0.060885242813234264,normal -2025-07-18 20:30:00+08:00,1106.987939618792,2113.244264647071,-977.1940167360849,-29.062308292193848,0.10809467055965272,normal -2025-07-18 20:40:00+08:00,984.4180258489222,2114.6256561035707,-748.6450557110988,-381.56257454354954,0.3557177753849229,normal -2025-07-18 20:50:00+08:00,947.030499291388,2115.9238698039385,-714.4296283335642,-454.4637421789862,0.40692912244927393,normal -2025-07-18 21:00:00+08:00,988.2513814153511,2117.1326748639854,-590.4276878780985,-538.4536055705357,0.46593001617352314,normal -2025-07-18 21:10:00+08:00,986.1854986998604,2118.2477016042258,-1018.9360334065589,-113.12616949780659,0.16714754599915985,normal -2025-07-18 21:20:00+08:00,1190.5825872478977,2119.2672950931174,-908.8728832134731,-19.81182463174673,0.10159642444626689,normal -2025-07-18 21:30:00+08:00,972.4099826587028,2120.191859712042,-1021.0581476773374,-126.72372937600176,0.17669951040160733,normal -2025-07-18 21:40:00+08:00,1761.5568744600218,2121.023657174323,-1015.6750827116509,656.2082999973495,0.37329173369673174,normal -2025-07-18 21:50:00+08:00,1960.11716750452,2121.766158521913,-506.3247791265705,344.6757881091776,0.1544475079373197,normal -2025-07-18 22:00:00+08:00,1766.2819894376066,2122.422479339787,-833.8485571926958,477.7080672905154,0.2478995395150074,normal -2025-07-18 22:10:00+08:00,1134.0546638602696,2122.9926342548124,-1010.2344182590238,21.296447864480797,0.07271883471343935,normal -2025-07-18 22:20:00+08:00,961.560996588286,2123.4751259748723,-1176.0925171134313,14.178387726844903,0.07771910370715847,normal -2025-07-18 22:30:00+08:00,952.9163036533114,2123.8690352592625,-1115.4895887149737,-55.46314289097745,0.1266406328162247,normal -2025-07-18 22:40:00+08:00,905.4960793559734,2124.1727103088365,-1170.4921008865338,-48.184530066329444,0.12152757935493971,normal -2025-07-18 22:50:00+08:00,934.5832583318748,2124.3829289922064,-1082.241049520717,-107.55862113961439,0.16323647488031617,normal -2025-07-18 23:00:00+08:00,997.7848009660952,2124.495608461493,-1074.999029663629,-51.71177783176836,0.12400538753492892,normal -2025-07-18 23:10:00+08:00,958.7251777797268,2124.507295626231,-1203.7403162878338,37.95819844132939,0.06101434877491953,normal -2025-07-18 23:20:00+08:00,872.7782401081553,2124.414327593475,-1044.9366734283271,-206.69941405699228,0.23288053846673865,normal -2025-07-18 23:30:00+08:00,873.7281371639568,2124.2113337106402,-1001.7525220301269,-248.73067451655652,0.26240650542670513,normal -2025-07-18 23:40:00+08:00,1199.2072763305034,2123.89388882523,-970.0444402880263,45.35782779329975,0.05581628406371576,normal -2025-07-18 23:50:00+08:00,1396.6999931794098,2123.4620039423976,-666.5317823112515,-60.230228451736366,0.12998939774079105,normal -2025-07-19 00:00:00+08:00,1581.0893438264643,2122.919230861419,-596.5377523436393,54.707865308685086,0.0492481037204376,normal -2025-07-19 00:10:00+08:00,892.987700493763,2122.2726921171893,-179.20203840121854,-1050.0829532222078,0.825337539272798,normal -2025-07-19 00:20:00+08:00,1791.4820538686768,2121.531611244192,-309.8035277053376,-20.24602967017745,0.10190144322225363,normal -2025-07-19 00:30:00+08:00,2470.710226175154,2120.707978962679,163.07616554280415,186.92608166967057,0.04363206796834235,normal -2025-07-19 00:40:00+08:00,2910.8337791667795,2119.814884204808,-44.41578433727477,835.434679299246,0.4991940286972152,normal -2025-07-19 00:50:00+08:00,2473.773876624322,2118.8664437740954,240.82142505090908,114.08600779931749,0.007536362170139843,normal -2025-07-19 01:00:00+08:00,2258.377913008815,2117.8774800953165,139.32994921656783,1.1704836969306598,0.0868568488141641,normal -2025-07-19 01:10:00+08:00,3298.326739548197,2116.8631085640995,1030.0949581049708,151.36867287912673,0.01865382878035434,normal -2025-07-19 01:20:00+08:00,8972.419032320904,2115.837483147695,3813.6071672542625,3042.974381918947,2.049938489122546,mild -2025-07-19 01:30:00+08:00,3285.494909383525,2114.812268280719,1101.9141078753216,68.76853322748411,0.03937081686617074,normal -2025-07-19 01:40:00+08:00,2408.46606166069,2113.7972066287352,2260.37619800086,-1965.7073429689053,1.4685420300210328,normal -2025-07-19 01:50:00+08:00,4508.11098922259,2112.7987317557518,1065.007572469316,1330.3046849975226,0.8468285102227595,normal -2025-07-19 02:00:00+08:00,4782.834984668839,2111.82341154522,2764.9818483919425,-93.9702752683238,0.1536909830999233,normal -2025-07-19 02:10:00+08:00,1636.4236063092687,2110.876768365713,-446.6750913044226,-27.77807075202145,0.10719252404381464,normal -2025-07-19 02:20:00+08:00,1110.3255985236804,2109.9648230744538,-671.6008009417183,-328.03842360905514,0.3181183245292318,normal -2025-07-19 02:30:00+08:00,2142.1139353782646,2109.094018261525,3262.667841828377,-3229.647924711637,2.3564304123311266,moderate -2025-07-19 02:40:00+08:00,2645.4142609407204,2108.2716770196535,996.491473724747,-459.3488898036801,0.4103608231830655,normal -2025-07-19 02:50:00+08:00,4406.022735724315,2107.505547501062,2019.1240283148977,279.39315990835485,0.10858800474274787,normal -2025-07-19 03:00:00+08:00,2191.764679768165,2106.8013704612,395.52441612559096,-310.56110681862583,0.30584092260359763,normal -2025-07-19 03:10:00+08:00,2251.211223170313,2106.1613377196127,335.97288364039906,-190.92299818969855,0.22179797923460387,normal -2025-07-19 03:20:00+08:00,4538.512808352364,2105.587449969933,1246.5666144277752,1186.358743954656,0.7457098891587596,normal -2025-07-19 03:30:00+08:00,3086.9294996406807,2105.0825602348823,542.9051837984937,438.9417556073049,0.2206671218952837,normal -2025-07-19 03:40:00+08:00,3331.1237405623915,2104.6498953976547,1132.6294808787202,93.84436428601657,0.021755638276886858,normal -2025-07-19 03:50:00+08:00,2125.85047651484,2104.2922102092803,2038.9601826372623,-2017.4019163317025,1.5048562458792012,normal -2025-07-19 04:00:00+08:00,3967.996561374478,2104.0095240368287,2023.127754772942,-159.14071743529257,0.1994716782575073,normal -2025-07-19 04:10:00+08:00,2893.489743699753,2103.7992881873874,965.225332390831,-175.5348768784654,0.2109881877497987,normal -2025-07-19 04:20:00+08:00,3489.445087028763,2103.6584092025073,1868.1597951733902,-482.37311734713467,0.42653479879773437,normal -2025-07-19 04:30:00+08:00,2229.3405574030567,2103.5822475431473,201.92924948742635,-76.1709396275171,0.14118737054361166,normal -2025-07-19 04:40:00+08:00,2903.3603434399965,2103.56597996176,745.8821450688008,53.912218409435354,0.04980702686007668,normal -2025-07-19 04:50:00+08:00,1315.612909334515,2103.6058050255774,-724.7022792098206,-63.290616481241614,0.13213924799167226,normal -2025-07-19 05:00:00+08:00,2395.3509264040117,2103.6980273250206,1658.857396923179,-1367.204497844188,1.0481079284170873,normal -2025-07-19 05:10:00+08:00,4174.664695047312,2103.8397053747753,2126.843806559251,-56.01881688671392,0.12703098066349927,normal -2025-07-19 05:20:00+08:00,2361.6010585923605,2104.029754274856,2715.582834744005,-2458.0115304265005,1.8143740848819636,mild -2025-07-19 05:30:00+08:00,3380.8375451299357,2104.266951125476,-482.0551014731015,1758.6256954775608,1.1477138956577166,normal -2025-07-19 05:40:00+08:00,3997.550719775918,2104.5490624083563,1552.6205551084447,340.3811022591167,0.15143059264318226,normal -2025-07-19 05:50:00+08:00,2541.439850669733,2104.8719609876166,226.09789139944618,210.46999828267008,0.06017111287022907,normal -2025-07-19 06:00:00+08:00,3478.68014157751,2105.2306535048792,1485.2197047415364,-111.77021666890573,0.1661950211881584,normal -2025-07-19 06:10:00+08:00,4571.984115571595,2105.619333355203,2181.4960510300366,284.8687311863555,0.11243446413686295,normal -2025-07-19 06:20:00+08:00,3504.647952502496,2106.0312788304327,1526.1903300593672,-127.5736563873038,0.17729656403691835,normal -2025-07-19 06:30:00+08:00,2539.667843967536,2106.458537663226,1952.1176615776449,-1518.9083552733346,1.1546763023648927,normal -2025-07-19 06:40:00+08:00,2721.9973776981,2106.892961634771,2769.3888988245126,-2154.2844827611834,1.6010130132376401,normal -2025-07-19 06:50:00+08:00,2302.963637022847,2107.3263460511566,1628.4581577045578,-1432.8208667328677,1.0942018765560915,normal -2025-07-19 07:00:00+08:00,3266.718876648647,2107.7513329556755,850.8823196711875,308.08522402178414,0.12874350157447756,normal -2025-07-19 07:10:00+08:00,1747.656810040837,2108.1610858270524,-468.2855706086573,107.78129482244185,0.011965274008898241,normal -2025-07-19 07:20:00+08:00,2268.103604633445,2108.549447954375,2331.383284745618,-2171.829128066548,1.6133377118535401,normal -2025-07-19 07:30:00+08:00,2802.1284880579237,2108.9112330231587,623.0265533678437,70.19070166692154,0.038371777153937185,normal -2025-07-19 07:40:00+08:00,2291.74468175575,2109.2427449518364,3671.3990820918916,-3488.8971452879778,2.5385468617889795,moderate -2025-07-19 07:50:00+08:00,1990.1303686865135,2109.542578220209,2426.1315839064437,-2545.5437934401393,1.8758634306073474,mild -2025-07-19 08:00:00+08:00,3554.35427442079,2109.8121936249026,147.1866578341472,1297.3554229617398,0.8236824324799868,normal -2025-07-19 08:10:00+08:00,2842.191084897661,2110.0544562148625,981.2236322983308,-249.08700361553247,0.26265681819601544,normal -2025-07-19 08:20:00+08:00,2081.378138287003,2110.27214249349,439.2253766247831,-468.11938083127006,0.4165218858176831,normal -2025-07-19 08:30:00+08:00,2140.272745722127,2110.4693740597336,73.30993278586985,-43.50656112347633,0.11824141674796035,normal -2025-07-19 08:40:00+08:00,1931.4149091961597,2110.6534211610256,314.3358566910697,-493.5743686559356,0.43440341307286684,normal -2025-07-19 08:50:00+08:00,2403.3603128750747,2110.8332727267943,348.84699662458286,-56.31995647630265,0.12724252410700576,normal -2025-07-19 09:00:00+08:00,2444.6190767292755,2111.01713987757,330.94908939325785,2.652847458447468,0.08581552331103522,normal -2025-07-19 09:10:00+08:00,2170.0472886928574,2111.2108049455705,-141.57823504833388,200.4147187956205,0.053107516711996414,normal -2025-07-19 09:20:00+08:00,2923.5117555894467,2111.4175221908054,231.23311434215134,580.8611190564898,0.32036212010289983,normal -2025-07-19 09:30:00+08:00,2020.4495396468108,2111.6384208517275,-139.73707728122008,48.54819607630361,0.05357512575715677,normal -2025-07-19 09:40:00+08:00,1966.5161615208835,2111.8735530323925,-353.3048640774406,207.94747256593155,0.05839909818035937,normal -2025-07-19 09:50:00+08:00,1844.7581184700025,2112.1218016732737,172.26772448194575,-439.631407685217,0.3965097580663401,normal -2025-07-19 10:00:00+08:00,2312.0091803635214,2112.382433784533,92.32105497689099,107.30569160209734,0.012299374029130925,normal -2025-07-19 10:10:00+08:00,1623.918988617825,2112.656897003186,-430.26905724081183,-58.46885114454881,0.1287520718170042,normal -2025-07-19 10:20:00+08:00,2108.77320504029,2112.9484007884453,130.7387072210394,-134.91390296919462,0.1824529137558,normal -2025-07-19 10:30:00+08:00,2129.421363079902,2113.261574860252,54.040518135061895,-37.88072991541185,0.1142894033047408,normal -2025-07-19 10:40:00+08:00,2068.81527467214,2113.6012547105997,-59.08280852383493,14.296828485375045,0.07763590187393153,normal -2025-07-19 10:50:00+08:00,1758.261926290303,2113.9717867982,-155.5230385200013,-200.18682198789543,0.22830559647943174,normal -2025-07-19 11:00:00+08:00,1777.4613698646322,2114.377140488365,-46.82263373922916,-290.0931368845038,0.291462657536009,normal -2025-07-19 11:10:00+08:00,1663.0465032415618,2114.821311247448,167.6005372857721,-619.3753452916585,0.5227756255419947,normal -2025-07-19 11:20:00+08:00,1157.4017265839848,2115.3079756169745,-604.839312331213,-353.06693670177674,0.3357002633660108,normal -2025-07-19 11:30:00+08:00,2111.780705135152,2115.841016005909,-332.77232547522914,328.7120146044722,0.14323333439356473,normal -2025-07-19 11:40:00+08:00,1943.99833368158,2116.4226031840553,-105.91825954083536,-66.50600996163985,0.13439798590786833,normal -2025-07-19 11:50:00+08:00,2234.081214439946,2117.0521616239157,-68.45252231832828,185.48157513435854,0.042617336271773075,normal -2025-07-19 12:00:00+08:00,1697.2296451136267,2117.7282052582755,-591.7051097119696,171.20654956732096,0.032589468236492225,normal -2025-07-19 12:10:00+08:00,2150.165367345817,2118.449062563905,-524.3106126287147,556.0269174106265,0.3029166804645068,normal -2025-07-19 12:20:00+08:00,2077.978840415742,2119.2122838976697,-243.18691653244687,201.95347305051928,0.05418845520379724,normal -2025-07-19 12:30:00+08:00,2034.5546368861703,2120.0142414968327,-382.0846881157543,296.6250835050919,0.12069302375028869,normal -2025-07-19 12:40:00+08:00,1682.007169093528,2120.850133471093,-734.0476593181394,295.2046949405744,0.11969523435811467,normal -2025-07-19 12:50:00+08:00,2304.7237309690536,2121.714870097405,-158.22345240863774,341.2323132802867,0.15202854826507478,normal -2025-07-19 13:00:00+08:00,2318.8076775293293,2122.604759692991,180.6421708630838,15.560746973254481,0.07674802901203817,normal -2025-07-19 13:10:00+08:00,1617.074993169459,2123.516710348611,-248.91443215850208,-257.52728502064997,0.26858591637616797,normal -2025-07-19 13:20:00+08:00,1993.3510533886224,2124.4480519352537,-439.1876840199964,308.0906854733653,0.1287473381151184,normal -2025-07-19 13:30:00+08:00,1074.9077219229307,2125.397276415929,-612.7529563767473,-437.7365981162509,0.3951786991326556,normal -2025-07-19 13:40:00+08:00,1636.4612279509452,2126.3633208269166,-521.458678016218,31.556585140246625,0.06551133080095442,normal -2025-07-19 13:50:00+08:00,1378.8570269700429,2127.3464715724585,96.24895785979867,-844.7384024622143,0.6810878461906317,normal -2025-07-19 14:00:00+08:00,1147.9578366172047,2128.3486580819153,-1140.2835916973436,159.89277023263276,0.024641805683052388,normal -2025-07-19 14:10:00+08:00,1242.6549967671403,2129.372969361785,-733.9982099993777,-152.71976259526718,0.19496110925755036,normal -2025-07-19 14:20:00+08:00,1639.2136574858805,2130.4232314160645,-492.3039080113002,1.094334081116358,0.086910342119289,normal -2025-07-19 14:30:00+08:00,1828.4292303706263,2131.5042195509113,-641.8442937804938,338.76930460020867,0.1502983428866266,normal -2025-07-19 14:40:00+08:00,1722.8406482957016,2132.6204848754246,-388.37983128190103,-21.40000529782219,0.10271208382360376,normal -2025-07-19 14:50:00+08:00,978.6108934117284,2133.7761337525667,-874.4011566174273,-280.764083723411,0.28490921820560416,normal -2025-07-19 15:00:00+08:00,971.2341509114542,2134.9741864202465,-1027.412199725472,-136.32783578332032,0.18344616813592146,normal -2025-07-19 15:10:00+08:00,1229.8490945614997,2136.218345704234,-962.9865302473958,56.61727910466152,0.047906785662485435,normal -2025-07-19 15:20:00+08:00,1981.7071431618367,2137.5120234242963,-592.5385070830131,436.7336268205536,0.21911596361718036,normal -2025-07-19 15:30:00+08:00,2174.838596051444,2138.8571252715733,-112.37392886835855,148.3553996482292,0.016537075561820134,normal -2025-07-19 15:40:00+08:00,1783.2430999382111,2140.254916735613,-330.87253707408485,-26.13927972331703,0.10604131208303211,normal -2025-07-19 15:50:00+08:00,1392.8742842479492,2141.707245151675,-576.8543871644254,-171.9785737393006,0.20848996885656274,normal -2025-07-19 16:00:00+08:00,1716.2554589241577,2143.2161488916104,-442.6409842690737,15.680294301620961,0.07666404983965773,normal -2025-07-19 16:10:00+08:00,1105.247718085196,2144.78289521319,-678.9502430070228,-360.58493412097096,0.340981478846517,normal -2025-07-19 16:20:00+08:00,1139.136993703097,2146.407003689499,80.76619649444008,-1088.036206480842,0.8519988025679053,normal -2025-07-19 16:30:00+08:00,2011.786264499662,2148.086983650953,-84.66634740054667,-51.63437175074432,0.12395101159269385,normal -2025-07-19 16:40:00+08:00,1700.6197091423635,2149.8208563853113,-406.4598949933538,-42.741252249594254,0.11770380535402773,normal -2025-07-19 16:50:00+08:00,2006.269245417291,2151.605733688946,-437.25344177242107,291.9169535007659,0.11738567371055597,normal -2025-07-19 17:00:00+08:00,1821.8035265936885,2153.4377730828,-600.561257637015,268.9270111479036,0.10123578263186281,normal -2025-07-19 17:10:00+08:00,1092.5830022381388,2155.31213252432,-967.129090450684,-95.60003983549723,0.15483585418484305,normal -2025-07-19 17:20:00+08:00,880.3584156820364,2157.2231240263236,-1218.943306051981,-57.921402292306084,0.12836750193861238,normal -2025-07-19 17:30:00+08:00,823.5763359537907,2159.164635129811,-1123.2357024222438,-212.35259675377642,0.2368517656842636,normal -2025-07-19 17:40:00+08:00,736.9476112419947,2161.130305555016,-1181.4345652587826,-242.7481290542387,0.2582039086516969,normal -2025-07-19 17:50:00+08:00,818.2245556253904,2163.113819342313,-1374.421428108013,29.53216439109019,0.06693343852504152,normal -2025-07-19 18:00:00+08:00,901.2185797571644,2165.110180736125,-1312.5204047858488,48.6288038068883,0.05351850073178426,normal -2025-07-19 18:10:00+08:00,766.1032206945695,2167.115426524913,-1445.4345660500924,44.42236021974895,0.056473427922043615,normal -2025-07-19 18:20:00+08:00,806.095915995264,2169.1258475404834,-1229.3947121935073,-133.63521935171207,0.18155466873937082,normal -2025-07-19 18:30:00+08:00,666.7445036630113,2171.1390310763054,-1239.6201337610946,-264.7743936521995,0.27367683888648087,normal -2025-07-19 18:40:00+08:00,788.4749802095389,2173.1534899604603,-1337.4583719281643,-47.22013782275735,0.12085011659962808,normal -2025-07-19 18:50:00+08:00,817.7539165892654,2175.1682348587997,-939.6073224387956,-417.80699583073874,0.3811786246125634,normal -2025-07-19 19:00:00+08:00,753.2604663831464,2177.1829626791855,-1277.126585626105,-146.79591066993407,0.19079974330490693,normal -2025-07-19 19:10:00+08:00,786.2917828087094,2179.1975678318736,-1148.3568754530602,-244.54890957010412,0.2594689143981876,normal -2025-07-19 19:20:00+08:00,587.7840184440997,2181.2133175489294,-1195.6559125181946,-397.77338658663507,0.36710548766252254,normal -2025-07-19 19:30:00+08:00,758.170100678693,2183.2328808677557,-1238.9541965496105,-186.10858363945226,0.21841596681366046,normal -2025-07-19 19:40:00+08:00,839.1864507219523,2185.260020882161,-1218.70775265897,-127.36581750123833,0.1771505621322439,normal -2025-07-19 19:50:00+08:00,727.2101728557054,2187.2997115882595,-1146.4380626474765,-313.65147608507755,0.30801183396475307,normal -2025-07-19 20:00:00+08:00,596.6387814657262,2189.358489378059,-854.7155990677414,-738.0041088445914,0.6061095278534717,normal -2025-07-19 20:10:00+08:00,1753.370806069447,2191.4443958152933,-695.626747826469,257.5531580806228,0.09324591970126801,normal -2025-07-19 20:20:00+08:00,1805.39007916164,2193.56577045962,-748.3837889143219,360.208097616342,0.1653585882215217,normal -2025-07-19 20:30:00+08:00,1348.6824338999704,2195.730697665611,-959.9050729527462,112.85680918710568,0.008399845140066904,normal -2025-07-19 20:40:00+08:00,1597.8890416613228,2197.9466233995313,-693.0107778835953,92.95319614538676,0.022381662830714466,normal -2025-07-19 20:50:00+08:00,1515.7147299281232,2200.218413818116,-687.731157572749,3.2274736827562265,0.08541186197117145,normal -2025-07-19 21:00:00+08:00,2221.3222020785606,2202.5485204280235,-394.8835617638223,413.6572434143595,0.20290534974176988,normal -2025-07-19 21:10:00+08:00,1170.363688006817,2204.936610322212,-1055.7829262126859,21.210003897291244,0.07277955955707287,normal -2025-07-19 21:20:00+08:00,1723.8361304503474,2207.3815438895344,-990.004616899901,506.459203460714,0.2680965330703033,normal -2025-07-19 21:30:00+08:00,1629.3184825919018,2209.882120432509,-1038.885836127406,458.32219828679854,0.23428142477289446,normal -2025-07-19 21:40:00+08:00,991.5211291170334,2212.4361954571036,-1072.084064745681,-148.83100159438936,0.19222934657492546,normal -2025-07-19 21:50:00+08:00,1808.2306987431932,2215.041803285994,-574.3160799265875,167.50497538378704,0.02998919986842767,normal -2025-07-19 22:00:00+08:00,1093.973917415203,2217.698143287644,-850.7248949829166,-272.9993308895246,0.2794546628789516,normal -2025-07-19 22:10:00+08:00,1685.8338815112634,2220.4051388386765,-1045.0163292130214,510.4450718856083,0.2708965114229254,normal -2025-07-19 22:20:00+08:00,952.8215978334335,2223.1630483721183,-1191.1149838034626,-79.22646673522195,0.14333380611182803,normal -2025-07-19 22:30:00+08:00,2413.0783245115463,2225.9719713746445,-1162.2871817585162,1349.3935348954183,0.8602379760638149,normal -2025-07-19 22:40:00+08:00,978.6823416995636,2228.8327588302045,-1189.4116865776143,-60.73873055302647,0.13034660844724152,normal -2025-07-19 22:50:00+08:00,1351.9191547679743,2231.745681003886,-1136.6183062193356,256.79177998342357,0.09271106958504147,normal -2025-07-19 23:00:00+08:00,984.7307722466672,2234.708868617304,-1070.6947206889615,-179.2833756816749,0.2136214195540058,normal -2025-07-19 23:10:00+08:00,981.9063880181116,2237.716910911197,-1257.4389813358684,1.628458442783085,0.08653513238056948,normal -2025-07-19 23:20:00+08:00,987.517857505693,2240.7627562598914,-1089.6869787795945,-163.55791997460392,0.202574658629858,normal -2025-07-19 23:30:00+08:00,1076.588457900183,2243.8400530863614,-962.4731469687079,-204.77844821747067,0.23153110537125712,normal -2025-07-19 23:40:00+08:00,976.039276927258,2246.9426791372025,-1063.2927580222072,-207.6106441877373,0.2335206560944074,normal -2025-07-19 23:50:00+08:00,1956.2962645525768,2250.0618800095203,-586.2355901413879,292.4699746844444,0.11777415802006562,normal -2025-07-20 00:00:00+08:00,1407.1457703439694,2253.1857835704513,-628.2516351113308,-217.78837811515132,0.24067027360248228,normal -2025-07-20 00:10:00+08:00,2368.1347328935144,2256.30028445076,-28.92381427852143,140.75826272127597,0.011200266447771315,normal -2025-07-20 00:20:00+08:00,3591.0982210103866,2259.3922984210417,-277.8287401875649,1609.53466277691,1.0429809693210998,normal -2025-07-20 00:30:00+08:00,2028.065147394541,2262.4476205629985,302.6983422410577,-537.080815409515,0.4649656635346995,normal -2025-07-20 00:40:00+08:00,2232.395224136196,2265.451426175457,-133.53753335459635,100.48133131533496,0.017093325819934356,normal -2025-07-20 00:50:00+08:00,2392.6455436923416,2268.3900493799897,268.11391723752905,-143.85842292517736,0.1887362275990091,normal -2025-07-20 01:00:00+08:00,5523.89614319348,2271.2499477791025,-2056.9314300470432,5309.577625461421,3.6421736909331397,severe -2025-07-20 01:10:00+08:00,2797.219277628105,2274.0189007722433,655.3661033627977,-132.16572650693615,0.18052238475101645,normal -2025-07-20 01:20:00+08:00,4651.265180607962,2276.6870529583007,4684.072111200319,-2309.493983550658,1.7100440187815178,normal -2025-07-20 01:30:00+08:00,6260.8852174695785,2279.2475440686962,1345.0473292556137,2636.590344145269,1.764463308479158,mild -2025-07-20 01:40:00+08:00,5371.679358148087,2281.696000337611,2861.896010693078,228.0873471173977,0.07254688399697878,normal -2025-07-20 01:50:00+08:00,3964.089765184857,2284.0316321408627,1645.242661131277,34.81547191271693,0.06322203987514935,normal -2025-07-20 02:00:00+08:00,5306.512685540984,2286.2563644866923,2908.1458589125705,112.11046214172165,0.008924136297689395,normal -2025-07-20 02:10:00+08:00,1911.0882969220877,2288.3737179643404,-540.3714792280167,163.08605818576416,0.02688501498886235,normal -2025-07-20 02:20:00+08:00,1903.2536785389816,2290.3885129334626,-588.24814318369,201.113308789209,0.053598259669588665,normal -2025-07-20 02:30:00+08:00,6107.891997053988,2292.304881577658,3734.1476942579525,81.4394212183779,0.030469817560368703,normal -2025-07-20 02:40:00+08:00,3493.138276339409,2294.12666533886,1107.5653511853334,91.4462598152154,0.023440249982489687,normal -2025-07-20 02:50:00+08:00,2171.7245948856216,2295.858032962699,2813.221092536856,-2937.354530613933,2.151101212055348,mild -2025-07-20 03:00:00+08:00,3506.512568776347,2297.5036460146853,889.2464365165586,319.76248624510345,0.13694650226536298,normal -2025-07-20 03:10:00+08:00,2463.7633722698783,2299.0683247949682,243.78236275364654,-79.08731527873624,0.1432360555028359,normal -2025-07-20 03:20:00+08:00,3962.965010395988,2300.555545079755,1602.4863250166363,59.923140299596525,0.04558449631525566,normal -2025-07-20 03:30:00+08:00,2988.480615695439,2301.9660407151214,814.1040247794679,-127.58944979915032,0.17730765853542416,normal -2025-07-20 03:40:00+08:00,882.9163948013736,2303.2998541106267,1335.8068904771242,-2756.1903497863773,2.0238376572878245,mild -2025-07-20 03:50:00+08:00,4442.624442281647,2304.5569999395825,2249.496681846585,-111.42923950452041,0.16595549279001698,normal -2025-07-20 04:00:00+08:00,4236.484053889304,2305.738320185523,2167.324623405965,-236.57888970218437,0.2538701638321211,normal -2025-07-20 04:10:00+08:00,9595.099746667433,2306.8441975442142,633.1486526225789,6655.10689650064,4.587376198923394,severe -2025-07-20 04:20:00+08:00,4736.817511899975,2307.8734258322042,1963.1659354817043,465.77815058606666,0.2395190550232426,normal -2025-07-20 04:30:00+08:00,1834.003345902348,2308.824257126498,-409.7587132844381,-65.06219793971195,0.13338374209053486,normal -2025-07-20 04:40:00+08:00,2328.632421191804,2309.6933196989353,207.23581484423215,-188.29671335136345,0.21995307621441623,normal -2025-07-20 04:50:00+08:00,3248.4539136379744,2310.476616284211,-1031.286444933873,1969.2637422876364,1.2956821445901838,normal -2025-07-20 05:00:00+08:00,8755.750504824384,2311.1702164066023,627.4017263888835,5817.178562028897,3.998751350467234,severe -2025-07-20 05:10:00+08:00,2368.958676923672,2311.770266853309,1669.688829264561,-1612.5004191941978,1.2204225149892078,normal -2025-07-20 05:20:00+08:00,5228.163397607415,2312.2735384218718,2918.279366418826,-2.3895072332825293,0.08935765829344149,normal -2025-07-20 05:30:00+08:00,5123.6613396705925,2312.677717770833,-1467.0871820170348,4278.070803916795,2.9175645310149694,moderate -2025-07-20 05:40:00+08:00,7866.968460325672,2312.9817992203302,1105.0869764547724,4448.899684650569,3.037567781767011,moderate -2025-07-20 05:50:00+08:00,7609.769827211721,2313.1857225508857,28.643314958374596,5267.940789702461,3.612924798002144,severe -2025-07-20 06:00:00+08:00,6721.86927525731,2313.2897983161006,1313.1308914665321,3095.4485854746767,2.0868003767627603,mild -2025-07-20 06:10:00+08:00,4902.663308230864,2313.296551728137,2578.8049911358085,10.56176536691828,0.08025969542718553,normal -2025-07-20 06:20:00+08:00,3890.759130129094,2313.210727076177,1442.0088486956963,135.53955435722037,0.007534247179111872,normal -2025-07-20 06:30:00+08:00,5952.49749617845,2313.0392522154284,1892.5615766486821,1746.8966673143395,1.1394745306176661,normal -2025-07-20 06:40:00+08:00,5483.167908041143,2312.7900496305747,3000.331797136695,170.04606127387342,0.0317742526413586,normal -2025-07-20 06:50:00+08:00,3867.085067637821,2312.4718367018572,1633.1480182570738,-78.53478732110989,0.1428479176729693,normal -2025-07-20 07:00:00+08:00,4546.177775886636,2312.094243267792,932.421014073787,1301.6625185450566,0.8267080653184019,normal -2025-07-20 07:10:00+08:00,5782.487550372498,2311.667613454403,-738.0570422625026,4208.876979180597,2.868957504705108,moderate -2025-07-20 07:20:00+08:00,4757.833817135812,2311.202569705053,2369.814802895969,76.81644453478975,0.03371734940509259,normal -2025-07-20 07:30:00+08:00,4941.285203964401,2310.709326436572,313.7940692962458,2316.7818082315835,1.5398053714661357,normal -2025-07-20 07:40:00+08:00,7048.408958144057,2310.1966341984894,4527.42549656245,210.78682738311772,0.06039367782425353,normal -2025-07-20 07:50:00+08:00,5387.481366630768,2309.671271614629,2801.334691844323,276.4754031718162,0.10653834960373201,normal -2025-07-20 08:00:00+08:00,5214.728961231607,2309.137314064944,17.75825033211334,2887.8333968345496,1.9409556142419468,mild -2025-07-20 08:10:00+08:00,3829.980351720671,2308.595109801403,1325.2636230469825,196.12161887228558,0.05009171549389667,normal -2025-07-20 08:20:00+08:00,3473.2153952886288,2308.0420494683744,584.4027778076295,580.7705680126251,0.32029851013498295,normal -2025-07-20 08:30:00+08:00,2203.318148838711,2307.4736358807495,163.21996056892044,-267.3754476109591,0.275504017810161,normal -2025-07-20 08:40:00+08:00,2832.5103980958834,2306.8836510150004,391.01386176475535,134.61288531612763,0.006883284081860716,normal -2025-07-20 08:50:00+08:00,2395.2746457770377,2306.2642795521724,382.5389361482504,-293.528569923385,0.2938759680408597,normal -2025-07-20 09:00:00+08:00,2467.560161509145,2305.6064017280505,23.757228586000796,138.19653119509348,0.009400710603493581,normal -2025-07-20 09:10:00+08:00,3977.930947716353,2304.900436094919,-182.05386352167127,1855.0843751431053,1.2154738380831116,normal -2025-07-20 09:20:00+08:00,2432.841411709906,2304.1375791862006,300.31931442016116,-171.61548189645555,0.2082349054195385,normal -2025-07-20 09:30:00+08:00,2280.6331108764875,2303.308800812628,-191.966798765769,169.29110882962868,0.031243916394446368,normal -2025-07-20 09:40:00+08:00,1946.996102791816,2302.40737104545,-529.3144913759685,173.90322312233457,0.03448381766633496,normal -2025-07-20 09:50:00+08:00,3030.009971911732,2301.429053647649,249.46129426992078,479.1196239941619,0.2488911247336825,normal -2025-07-20 10:00:00+08:00,4247.059868592366,2300.3691559903737,171.04806353155917,1775.642649070433,1.1596679033188906,normal -2025-07-20 10:10:00+08:00,3717.079083601439,2299.222452869433,-292.02200090126604,1709.878631633272,1.1134702355646173,normal -2025-07-20 10:20:00+08:00,3041.647085251608,2297.9832972046584,327.68044827599124,415.98333977095854,0.2045393774492357,normal -2025-07-20 10:30:00+08:00,2716.1155204026177,2296.6484031002105,298.4026188034863,121.06449849892078,0.0026341374075694833,normal -2025-07-20 10:40:00+08:00,2378.1583374016204,2295.215327183901,117.80197621879368,-34.85896600107435,0.11216668558178834,normal -2025-07-20 10:50:00+08:00,2053.961051204459,2293.683860484039,-23.49789798163895,-216.22491129794116,0.23957197511980027,normal -2025-07-20 11:00:00+08:00,2433.539035816521,2292.055684972521,124.97442750489192,16.50892333910815,0.07608195752752131,normal -2025-07-20 11:10:00+08:00,3077.506359543496,2290.335521867302,320.12931016068006,467.04152751551374,0.24040654745313833,normal -2025-07-20 11:20:00+08:00,2108.5543372605744,2288.528840115005,-589.0296002892462,409.0550974348157,0.19967245097425187,normal -2025-07-20 11:30:00+08:00,1539.5704274436816,2286.6412021825345,-344.18228097301886,-402.888493765834,0.3706987295476906,normal -2025-07-20 11:40:00+08:00,2102.6387660367704,2284.6779076978773,19.985377325468367,-202.02451898657546,0.22959653518248718,normal -2025-07-20 11:50:00+08:00,1831.5111570017648,2282.643723473807,-14.161490793171321,-436.97107567887065,0.3946409377154136,normal -2025-07-20 12:00:00+08:00,3417.178701081897,2280.543038227386,-628.0624903082054,1764.6981531627162,1.1519796536439701,normal -2025-07-20 12:10:00+08:00,1336.354587776682,2277.8642351024637,-509.13087399939576,-432.37877332638595,0.39141495386322617,normal -2025-07-20 12:20:00+08:00,1849.24712646549,2275.2263855550596,-181.35854709515385,-244.62071199441561,0.25951935390403835,normal -2025-07-20 12:30:00+08:00,1973.5056172383304,2272.6399711521726,-270.5660800408067,-28.56827387303565,0.10774762305792043,normal -2025-07-20 12:40:00+08:00,997.5111867956608,2270.1085922847556,-757.8992084507274,-514.6981970383672,0.44924240319755515,normal -2025-07-20 12:50:00+08:00,2098.690329486655,2267.631807923188,17.912366008019735,-186.85384444455258,0.21893949491315962,normal -2025-07-20 13:00:00+08:00,1730.1217061054194,2265.2072914889904,368.6760512389291,-903.7616366225002,0.722550273027998,normal -2025-07-20 13:10:00+08:00,2231.199847159566,2262.8319319964944,-260.488714559474,228.85662972254568,0.07308728684319671,normal -2025-07-20 13:20:00+08:00,1730.348291743407,2260.5024051288306,-427.3170830121974,-102.8370303732263,0.15991966897341325,normal -2025-07-20 13:30:00+08:00,2207.5307078102624,2258.2153008372757,-521.6450307223976,470.96043769538437,0.2431594892213552,normal -2025-07-20 13:40:00+08:00,3944.668085623307,2255.9673815128795,-578.206505864122,2266.9072099745495,1.5047696451001495,normal -2025-07-20 13:50:00+08:00,2719.6851141968414,2253.7554815734297,182.5921086894578,283.3375239339539,0.1113588272359243,normal -2025-07-20 14:00:00+08:00,4163.642595005619,2251.5766475232817,-1330.3961689429402,3242.462116425278,2.1900739072268633,mild -2025-07-20 14:10:00+08:00,1587.9076922380518,2249.4280743604286,-736.6092242323415,75.08884210996484,0.03493094927237259,normal -2025-07-20 14:20:00+08:00,1978.2350337345729,2247.307186270774,-423.4729502120621,154.4007976758612,0.020783824778285574,normal -2025-07-20 14:30:00+08:00,1725.194174823558,2245.211593812669,-556.7169254517917,36.6995064626808,0.061898550137619704,normal -2025-07-20 14:40:00+08:00,2002.5940813271895,2243.139041847779,-413.5850466619427,173.04008614135319,0.033877484339574535,normal -2025-07-20 14:50:00+08:00,1420.7683842781707,2241.0874251748805,-1141.2693626068847,320.9503217101751,0.13778092860214447,normal -2025-07-20 15:00:00+08:00,2846.167637706844,2239.054719364999,-1112.6771265391521,1719.790044880997,1.120432769090359,normal -2025-07-20 15:10:00+08:00,983.6529273416992,2237.0389495297763,-1005.3689765006536,-248.01704568742343,0.26190519804262286,normal -2025-07-20 15:20:00+08:00,1676.1860418154874,2235.0383163116912,-509.35931883138863,-49.49295566481533,0.12244671740999839,normal -2025-07-20 15:30:00+08:00,1718.585283518632,2233.051274134352,-409.879770723437,-104.58621989228277,0.16114843326412653,normal -2025-07-20 15:40:00+08:00,2035.574563790951,2231.076460997712,-381.3247687380589,185.822871531298,0.042857088923237925,normal -2025-07-20 15:50:00+08:00,1638.7681287228706,2229.112657841932,-674.3525554508574,84.00802633179592,0.028665433183532256,normal -2025-07-20 16:00:00+08:00,1308.7865888863423,2227.1586935722285,-475.3501481520378,-443.0219565338484,0.39889153848848924,normal -2025-07-20 16:10:00+08:00,1729.1597046001764,2225.2134897282326,-749.458260532556,253.40447540449986,0.0903315681856756,normal -2025-07-20 16:20:00+08:00,2101.419705293514,2223.27615100007,55.95974291649925,-177.81618862305504,0.2125907553259231,normal -2025-07-20 16:30:00+08:00,2226.092467799272,2221.3458336790613,46.23899753509122,-41.4923634148804,0.11682649046822013,normal -2025-07-20 16:40:00+08:00,1819.19044318488,2219.4218140634343,-408.6738287975838,8.442457919029493,0.08174845881425012,normal -2025-07-20 16:50:00+08:00,1425.0447085476098,2217.5034660056103,-417.664002624764,-374.79475483323654,0.3509635420125987,normal -2025-07-20 17:00:00+08:00,976.1282504308774,2215.5902526465916,-761.3071726216747,-478.1548295940395,0.4235715513608572,normal -2025-07-20 17:10:00+08:00,981.2920039108204,2213.6818080555154,-1132.163853611994,-100.22595053270106,0.1580854471047793,normal -2025-07-20 17:20:00+08:00,799.8491789657742,2211.7779350141204,-1349.5060601330058,-62.42269591534068,0.13152955430957775,normal -2025-07-20 17:30:00+08:00,941.8821153029686,2209.8785210610176,-1298.5479102385668,30.551504480517906,0.06621737620684466,normal -2025-07-20 17:40:00+08:00,859.9412733162934,2207.983498763098,-1226.749995258882,-121.29223018792254,0.17288401060890915,normal -2025-07-20 17:50:00+08:00,798.0052713624015,2206.0928257511982,-1503.068180365866,94.9806259770694,0.02095744129727981,normal -2025-07-20 18:00:00+08:00,791.6205848898006,2204.206502515979,-1354.2436052887758,-58.342312337402745,0.12866318129604204,normal -2025-07-20 18:10:00+08:00,668.9311710910653,2202.324533794282,-1537.3092365699094,3.9158738666924364,0.08492827711399856,normal -2025-07-20 18:20:00+08:00,834.8646886050674,2200.4469502593265,-1294.1179405600585,-71.46432109420039,0.1378810822765356,normal -2025-07-20 18:30:00+08:00,989.2170447729574,2198.57380539212,-1265.6362630543574,56.2795024351949,0.04814406578859808,normal -2025-07-20 18:40:00+08:00,778.2216895246363,2196.705180875697,-1368.0632900120027,-50.42020133905771,0.12309808557840703,normal -2025-07-20 18:50:00+08:00,1519.592712963754,2194.841163872618,-859.4999053808386,184.25145447197474,0.041753205583395125,normal -2025-07-20 19:00:00+08:00,943.3619815625168,2192.9818508911835,-1298.9586180326385,49.33874870397176,0.053019781222888036,normal -2025-07-20 19:10:00+08:00,1177.8507791754832,2191.1273042751795,-1126.9576002768827,113.68107517718636,0.00782081776560214,normal -2025-07-20 19:20:00+08:00,1142.5377433236204,2189.2775676038136,-1189.067777480457,142.32795320026344,0.012302936905740218,normal -2025-07-20 19:30:00+08:00,978.3082149636962,2187.432656334848,-1248.9734832800275,39.84904190887528,0.05968607593373414,normal -2025-07-20 19:40:00+08:00,966.829675036818,2185.592554000904,-1221.8657875811693,3.102908617083358,0.08549936598540299,normal -2025-07-20 19:50:00+08:00,1074.869916721555,2183.7572388579065,-1137.2048209319405,28.317498795589017,0.0677867123942532,normal -2025-07-20 20:00:00+08:00,1671.4982553206871,2181.926697403344,-767.6276645737004,257.19922249104366,0.09299728831573241,normal -2025-07-20 20:10:00+08:00,1486.380955111823,2180.1009053774283,-588.4589395301216,-105.26101073548352,0.16162245788112323,normal -2025-07-20 20:20:00+08:00,930.6991623065226,2178.279793879592,-693.6798105554949,-553.9008210175746,0.47678131989189565,normal -2025-07-20 20:30:00+08:00,926.3515969647566,2176.463342961065,-942.8348671246791,-307.27687887162915,0.3035338301016892,normal -2025-07-20 20:40:00+08:00,1410.737357272556,2174.651663412385,-637.5945727882836,-126.31973335154544,0.1764157127438728,normal -2025-07-20 20:50:00+08:00,1566.5652968983827,2172.844977110936,-661.1015200933251,54.82183988077213,0.04916803927761758,normal -2025-07-20 21:00:00+08:00,1931.7392509345989,2171.043556237536,-199.2458350808971,-40.05847022203989,0.11581921439386447,normal -2025-07-20 21:10:00+08:00,975.4920503676416,2169.247669413877,-1092.780180222914,-100.97543882332138,0.15861194491292918,normal -2025-07-20 21:20:00+08:00,978.7200704366692,2167.457599663991,-1070.9811915028308,-117.756337724491,0.17040012973291896,normal -2025-07-20 21:30:00+08:00,985.4716284177384,2165.673668391775,-1056.6226781358384,-123.57936183819834,0.17449066653121018,normal -2025-07-20 21:40:00+08:00,999.4088600931004,2163.8962438043627,-1128.4486072137129,-36.03877649754941,0.1129954745678207,normal -2025-07-20 21:50:00+08:00,1097.7490182845968,2162.125736669136,-642.3847902916539,-421.9919280928855,0.38411844060548883,normal -2025-07-20 22:00:00+08:00,1377.6125674293462,2160.362597144741,-867.5785121338954,84.8284824185007,0.02808908217613256,normal -2025-07-20 22:10:00+08:00,910.9410775276342,2158.607364402577,-1079.6591924332397,-168.00709444170298,0.20570009852574386,normal -2025-07-20 22:20:00+08:00,949.8674562838164,2156.860581744771,-1206.2168498361152,-0.7762756248393998,0.08822440122123235,normal -2025-07-20 22:30:00+08:00,961.651960343586,2155.1228281055937,-1209.1564296563058,15.68556189429819,0.07666034948031457,normal -2025-07-20 22:40:00+08:00,1044.6919357643826,2153.3946853541097,-1208.2795676040223,99.57681801429544,0.01772872503350388,normal -2025-07-20 22:50:00+08:00,975.6936671502386,2151.676713983332,-1190.816326497389,14.833279664295787,0.07725905760109117,normal -2025-07-20 23:00:00+08:00,1214.2603377605967,2149.969432228606,-1066.4406708590136,130.73157639100464,0.004156756306305337,normal -2025-07-20 23:10:00+08:00,805.8411100382195,2148.2733271807633,-1311.151850258133,-31.280366884410796,0.10965280429138013,normal -2025-07-20 23:20:00+08:00,1359.0990224904117,2146.588837649746,-1134.3105587298794,346.82074357054535,0.155954288447599,normal -2025-07-20 23:30:00+08:00,1517.1013972196542,2144.916370411433,-923.2361117341661,295.4211385423873,0.11984728087220796,normal -2025-07-20 23:40:00+08:00,1698.7058809256505,2143.2562054258096,-1156.2324592488799,711.6821347487207,0.41226079134817595,normal -2025-07-20 23:50:00+08:00,1677.2533652580005,2141.608473463496,-505.6524269006895,41.29731869519401,0.058668695724951876,normal -2025-07-21 00:00:00+08:00,1656.7728491895791,2139.9731622904096,-659.7567695089853,176.55645640815465,0.03634765133388753,normal From cd62f99a5e1140c6b3f8f323fd27202e42d290d9 Mon Sep 17 00:00:00 2001 From: wqyhahaha <113168235+wqyhahaha@users.noreply.github.com> Date: Tue, 26 Aug 2025 16:59:11 +0800 Subject: [PATCH 6/7] Add files via upload --- Code/second_layer_filter.md | 24 ++++++++++++++++++++++++ Code/stl_anomaly_detection.md | 26 ++++++++++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 Code/second_layer_filter.md create mode 100644 Code/stl_anomaly_detection.md diff --git a/Code/second_layer_filter.md b/Code/second_layer_filter.md new file mode 100644 index 0000000..b0714ad --- /dev/null +++ b/Code/second_layer_filter.md @@ -0,0 +1,24 @@ +# 第二层异常过滤模块使用说明 + +## 概述 +`Code/second_layer_filter.py` 对第一层输出进行规则化聚合,筛出“真正需要关注”的异常事件,并生成摘要与结构化结果。 + +## 输入 +- 文件:`Data/stl_anomaly_results.csv` + - 列:`Time,Value,trend,seasonal,residual,anomaly_score,anomaly_level` + - `anomaly_level ∈ {normal, mild, moderate, severe}` +- 配置(类内默认,可按需修改): + - `min_score_for_mild=2.0`:mild 点的分数下限 + - `max_gap_minutes=30`:事件合并的点间隔 + - 严重判定:`max_score≥3.0` 或 `density≥0.1 & count≥5` + - 中等判定:`2.0≤max_score<3.0` 或 `density≥0.05 & count≥3` + - `spike_threshold=4.0`:1-2点窗口的尖峰最低分 + - `dedup_window_minutes=60`、`max_daily_events=5` + +## 输出 +- 事件列表:`Data/second_layer_events.csv` + - 列:`start_time,end_time,anomaly_count,anomaly_density,max_score,mean_score,severity_level` +- 告警消息:`Data/alert_messages.json` + - 每条包含:`title,date,time_window,stats,sample_points,hint,severity_level,max_score` +- 每日统计:`Data/daily_summary.json` + diff --git a/Code/stl_anomaly_detection.md b/Code/stl_anomaly_detection.md new file mode 100644 index 0000000..dd3329a --- /dev/null +++ b/Code/stl_anomaly_detection.md @@ -0,0 +1,26 @@ +# STL 异常检测模块使用说明 + +## 概述 +`Code/stl_anomaly_detection.py` 基于 STL 分解对单指标时序进行点异常检测,并生成可视化与结构化结果。 + +## 输入 +- 文件:`Data/yzh_mirror_data.csv` + - 格式:分号分隔;包含列 `"Series";Time;Value` + - Time:ISO 时间(含时区) + - Value:数值型 +- 参数(可选): + - `seasonal_period`:季节性周期(默认 144,表示 10 分钟采样的 24 小时周期) + - `method`:异常分数计算方法(默认 `zscore`,可选 `iqr`、`modified_zscore`) + +## 输出 +- 结构化结果:`Data/stl_anomaly_results.csv` + - 列:`Time,Value,trend,seasonal,residual,anomaly_score,anomaly_level` + - `anomaly_level ∈ {normal, mild, moderate, severe}` +- 可视化(当前目录保存): + - `stl_analysis_results_stl_decomposition.png` + - `stl_analysis_results_anomaly_scores.png` + - `stl_analysis_results_anomaly_points.png` + - `stl_analysis_results_residual_analysis.png` +- 终端摘要:输出总点数、各等级异常统计与阈值 + + From a2e0ef82d6898309bcf6c3854d436fedff00512e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Cwqyhahaha=E2=80=9D?= <1803324225@qq.com> Date: Fri, 29 Aug 2025 18:41:40 +0800 Subject: [PATCH 7/7] Add detection documentation and flowchart to docs folder --- docs/Detection.md | 373 +++++++++++++++++++++++++++++++++++ docs/detection_flowchart.png | Bin 0 -> 91679 bytes 2 files changed, 373 insertions(+) create mode 100644 docs/Detection.md create mode 100644 docs/detection_flowchart.png diff --git a/docs/Detection.md b/docs/Detection.md new file mode 100644 index 0000000..fef6962 --- /dev/null +++ b/docs/Detection.md @@ -0,0 +1,373 @@ +# 检测内容设计 + +## 总体方案 +本项目构建了一套覆盖灰度发布全流程的智能检测方案,由三个核心模块组成: +首先,时序异常检测通过"分解+聚合"策略,将异常点转化为高可信事件,显著降低误报。其次,指标对照模块运用统计检验与效应分析,科学识别版本变更带来的真实影响,支撑发布决策。同时,功能检测模块主动验证数据链路与基础服务健康度,确保检测流程本身可靠。 + +## 检测流程图 + +![检测流程图](./detection_flowchart.png "检测流程图") + + + +## 设计目标 +时序检测板块 +- 降低误报率:通过分层过滤机制,将原始异常点转化为具有明确上下文的事件,减少无效告警。 +- 提升可解释性:每一条告警附带异常分数、密度、持续时间等多维信息,便于定位根因。 +- 支持灵活配置:提供阈值、周期、合并窗口等参数配置,适应不同业务场景。 +指标对照板块 +- 准确识别统计显著差异:通过严格的统计假设检验,准确判断两组数据是否存在显著差异。 +- 提供可解释的差异分析:提供如 Cohen's d、相对差异等指标,帮助业务方理解差异的实际意义 +- 支持多场景灵活配置:提供自定义置信水平、效应量阈值、检验方法等参数,适应不同场景 +功能检测板块 +- 保障基础服务可用性:在灰度发布前和发布过程中,主动检测关键基础服务的可用性,确保数据流畅通,避免因基础服务异常导致检测失效。 + + +# 能力一:时序异常检测 +旨在构建一个面向运维场景的高效时序异常检测系统,通过分层处理策略显著降低误报率,提升告警质量。系统采用两层检测结构:第一层基于STL分解进行初步异常检测,第二层通过智能规则对异常点进行过滤、聚合与分级,最终输出高可信度的结构化告警事件,帮助运维团队快速定位并处理真实异常。 + +## 方案优化方向 +在完成基于传统统计方法的时序异常检测系统V1基础上,我们与团队就检测算法的未来发展路径进行了深入探讨:在LangGraph框架下裸调大模型效果也很好,在LLM效果也很好的情况下,是否还需要传统的检测算法呢?结合当前大语言模型(LLM)在异常检测领域展现的潜力,提出以下优化方向: + +## 技术路径 +目前我们面临三种可选的技术路径: +1. 纯传统算法路径:基于STL分解+规则过滤的成熟方案 +2. 纯LLM路径:直接利用大模型的序列理解能力进行端到端检测 +3. 混合智能路径:传统算法与LLM协同工作的融合方案 + +## 协同架构设计 +经过各方讨论,我们更倾向于使用传统算法综合LLM的路径的设计思路: +阶段一:传统算法高效检测(触发阶段) +- 角色定位:作为第一道防线,负责高效、可靠地识别潜在异常 +- 执行内容: + 1.使用STL分解等技术进行时序数据分解 + 2.基于统计规则进行异常点检测和初步过滤 + 3.生成结构化异常事件和关键指标 +阶段二:LLM深度分析(解析阶段) +- 角色定位:作为智能分析层,提供深层次洞察和可操作性建议 +- 输入内容:原始数据+时序检测算法输出结果 +- 执行内容: + 1.接收传统算法输出的结构化告警指标以及原始数据 + 2.进一步检测时序数据中的异常范围以及异常模式 + 3.生成自然语言描述的告警内容和处理建议 + +## 开启流程 +1. 输入数据 +确保输入数据为CSV格式,包含三列:Series, Time, Value。示例: + +| Series | Time | Value | +|--------|------|-------| +| yzh mirror | 2025-07-14T00:00:00+08:00 | 2392.4649649735443 | +| yzh mirror | 2025-07-14T00:10:00+08:00 | 1499.0522545027752 | +| yzh mirror | 2025-07-14T00:20:00+08:00 | 1916.094303250783 | +| yzh mirror | 2025-07-14T00:30:00+08:00 | 1208.302658310115 | +| yzh mirror | 2025-07-14T00:40:00+08:00 | 2536.5687803548194 | +2. 第一层检测 +执行STL分解与异常检测: +python3 stl_anomaly_detection.py +输出文件:stl_anomaly_results.csv,包含分解结果与异常等级。 + +| Time | Value | trend | seasonal | residual | anomaly_score | anomaly_level | +|------|-------|-------|----------|----------|---------------|---------------| +| 2025-07-14 00:00:00+08:00 | 2392.4649649735443 | 2262.368522760809 | -435.86964873819244 | 565.966090950928 | 0.30989871493960036 | normal | +| 2025-07-14 00:10:00+08:00 | 1499.0522545027752 | 2259.9572942855593 | -928.4723997260509 | 167.56735994326664 | 0.03003302354684861 | normal | +| 2025-07-14 00:20:00+08:00 | 1916.094303250783 | 2257.552765623712 | -469.2043670147958 | 127.74590464186713 | 0.00205939247627821 | normal | + +3. 第二层过滤 +执行智能事件聚合与分级: +python3 second_layer_filter.py +输出文件: +- second_layer_events.csv:事件明细 + +| start_time | end_time | anomaly_count | anomaly_density | max_score | mean_score | severity_level | +|------------|----------|---------------|-----------------|-----------|------------|----------------| +| 2025-07-14 16:30:00+08:00 | 2025-07-14 16:30:00+08:00 | 1 | 1.0 | 22.91802223930438 | 22.91802223930438 | severe | +| 2025-07-15 15:30:00+08:00 | 2025-07-15 15:30:00+08:00 | 1 | 1.0 | 4.162401458789488 | 4.162401458789488 | severe | +| 2025-07-17 04:10:00+08:00 | 2025-07-17 04:50:00+08:00 | 3 | 1.0 | 2.560940053673524 | 2.194557674917012 | moderate | +| 2025-07-20 03:40:00+08:00 | 2025-07-20 04:10:00+08:00 | 2 | 1.0 | 4.587376198923394 | 3.3056069281056093 | severe | +- alert_messages.json:告警消息 +[ + { + "title": "[严重] 指标异常事件", + "date": "2025-07-14", + "time_window": "16:30", + "stats": "异常点: 1个, 密度: 100.0%, 最高分: 22.92", + "sample_points": [ + { + "time": "16:30", + "value": "34109", + "score": "22.92" + } + ], + "hint": "孤立尖峰异常", + "severity_level": "severe", + "max_score": 22.91802223930438 + }, + { + "title": "[严重] 指标异常事件", + "date": "2025-07-15", + "time_window": "15:30", + "stats": "异常点: 1个, 密度: 100.0%, 最高分: 4.16", + "sample_points": [ + { + "time": "15:30", + "value": "9240", + "score": "4.16" + } + ], + "hint": "孤立尖峰异常", + "severity_level": "severe", + "max_score": 4.162401458789488 + }, + { + "title": "[中等] 指标异常事件", + "date": "2025-07-17", + "time_window": "04:10 - 04:50", + "stats": "异常点: 3个, 密度: 100.0%, 最高分: 2.56", + "sample_points": [ + { + "time": "04:50", + "value": "5658", + "score": "2.56" + }, + { + "time": "04:20", + "value": "953", + "score": "2.00" + } + ], + "hint": "持续性异常波动", + "severity_level": "moderate", + "max_score": 2.560940053673524 + }, + { + "title": "[严重] 指标异常事件", + "date": "2025-07-20", + "time_window": "03:40 - 04:10", + "stats": "异常点: 2个, 密度: 100.0%, 最高分: 4.59", + "sample_points": [ + { + "time": "04:10", + "value": "9595", + "score": "4.59" + }, + { + "time": "03:40", + "value": "883", + "score": "2.02" + } + ], + "hint": "持续性异常波动", + "severity_level": "severe", + "max_score": 4.587376198923394 + }, + { + "title": "[严重] 指标异常事件", + "date": "2025-07-20", + "time_window": "05:00 - 06:00", + "stats": "异常点: 5个, 密度: 100.0%, 最高分: 4.00", + "sample_points": [ + { + "time": "05:00", + "value": "8756", + "score": "4.00" + }, + { + "time": "05:30", + "value": "5124", + "score": "2.92" + } + ], + "hint": "持续性异常波动", + "severity_level": "severe", + "max_score": 3.998751350467234 + } +] + + +## 设计细节 +STL异常检测 +检测原理: +- 使用STL(Seasonal and Trend decomposition using Loess)分解时序数据 +- 将时间序列分解为:趋势(Trend) + 季节性(Seasonal) + 残差(Residual) +- 基于残差的Z-Score进行异常检测 +异常分级: +- 轻微异常: 95%分位数 (|z-score| > 1.96) +- 明显异常: 98%分位数 (|z-score| > 2.33) +- 严重异常: 99.5%分位数 (|z-score| > 2.81) +智能过滤与事件聚合 +过滤流程: +步骤1: 粗筛过滤 + - 保留severe和moderate异常 + - 保留mild异常但分数≥2.0的点 + - 过滤掉:971个数据点 → 38个异常点 +步骤2: 事件合并 + - 30分钟内相邻异常点合并为一个事件窗口 + - 计算事件统计信息:异常数量、密度、最高分、平均分 + - 合并结果:30个异常事件 +步骤3: 事件分级 + 严重事件条件(满足任一): + - max_score ≥ 3.0,或 + - 异常密度 ≥ 10% 且 异常数量 ≥ 5 + 中等事件条件(满足任一): + - 2.0 ≤ max_score < 3.0,或 + - 异常密度 ≥ 5% 且 异常数量 ≥ 3 + 尖峰去噪: + - 1-2个异常点的事件需要分数≥4.0才保留 +步骤4: 去重限流 + - 60分钟内相似事件去重 + - 每日最多5个事件 + - 按严重程度和分数排序 +配置参数 +第一层配置 +seasonal_period = 144 # 季节性周期(24小时) +threshold_percentiles = [95, 98, 99.5] # 异常阈值 + 第二层配置 +max_gap_minutes = 30 # 事件合并间隔 +severe_thresholds = { + 'max_score': 3.0, # 严重异常分数阈值 + 'density': 0.1, # 异常密度阈值(10%) + 'min_count': 5 # 最小异常数量 +} +spike_threshold = 4.0 # 尖峰保留阈值 +max_daily_events = 5 # 每日最大事件数 + +# 能力二:指标对照 +将这些对照检测视为统计假设检验问题。我们的原假设 (H0) 是:"两组数据没有显著差异"。检测算法的作用就是在给定的置信水平下,判断是否有足够的证据拒绝原假设,从而认定差异是显著的。在进行检验的时候,除了看P值,还应该看效应大小,可以使用Cohen's d或者相对差异。只有当p值显著且效应大小超过某个业务阈值时,才触发告警。 + +## 对于同一服务发布前后对照 (Before/After) +比较服务在发布前(旧版本)和发布后(新版本)的同一指标是否存在显著差异,本质上就是两个独立样本的比较。可以使用的算法有T检验,Mann-Whitney U检验、K-S检验。 +数据输入格式 +[{"timestamp": "2025-08-29T14:00:00Z", + "value": 150, + "group": "before" + }, + {"timestamp": "2025-08-29T14:01:00Z", + "value": 152, + "group": "before" + }, + {"timestamp": "2025-08-29T14:02:00Z", + "value": 148, + "group": "before" + } +] +数据输出格式 +#输出T检验的统计检验结果 +{"statistical_results": { + "t_statistic": 0.781, + "p_value": 0.434, + "degrees_of_freedom": 7198.12, + "confidence_interval_95": [-8.12, 19.12] + }, + #效应大小-衡量差异的实际大小 + "effect_size": { + "cohens_d": 0.02, + "interpretation": "negligible effect size", + "relative_change": -0.0052 } + } + +## 对于灰度机器与未灰度机器对比 (A/B) +比较在同一时间段内,运行新版本的灰度机器(实验组)和运行旧版本的未灰度机器(对照组)的同一指标是否存在显著差异。同样是两个独立样本的比较,但时间窗口是完全一致的,更能排除时间因素的干扰。可以使用的算法有T检验,Mann-Whitney U检验、K-S检验。 +数据输入格式: +{ + "analysis_id": "canary_cpu_analysis_202508291400", + "metric": "cpu_usage_percent", // 监控的指标名称 + "service": "example-service", // 服务名称 + "time_window": { + "start": "2025-08-29T14:00:00Z", + "end": "2025-08-29T14:10:00Z" + }, // 监控的时间窗口,所有数据都来自此窗口 + "data_points": [ + // 实验组 (Canary Group) - 运行新版本的3台机器 + { + "machine_id": "canary-host-1", + "group": "canary", + "value": 68.5 + }, + { + "machine_id": "canary-host-2", + "group": "canary", + "value": 72.1 + }, + { + "machine_id": "canary-host-3", + "group": "canary", + "value": 65.8 + }, + // 对照组 (Baseline Group) - 运行旧版本的7台机器 + { + "machine_id": "baseline-host-1", + "group": "baseline", + "value": 59.8 + }, + { + "machine_id": "baseline-host-2", + "group": "baseline", + "value": 61.2 + }, + { + "machine_id": "baseline-host-3", + "group": "baseline", + "value": 60.5 + }, + { + "machine_id": "baseline-host-4", + "group": "baseline", + "value": 58.9 + }, + { + "machine_id": "baseline-host-5", + "group": "baseline", + "value": 62.0 + }, + { + "machine_id": "baseline-host-6", + "group": "baseline", + "value": 61.7 + }, + { + "machine_id": "baseline-host-7", + "group": "baseline", + "value": 60.3 + } + ] +} + +用更直观数据格式展示 +timestamp,metric_name,service,host,group,value +2025-08-29T14:10:00Z,cpu_usage_percent,example-service,canary-host-1,canary,68.5 +2025-08-29T14:10:00Z,cpu_usage_percent,example-service,canary-host-2,canary,72.1 +2025-08-29T14:10:00Z,cpu_usage_percent,example-service,canary-host-3,canary,65.8 +2025-08-29T14:10:00Z,cpu_usage_percent,example-service,baseline-host-1,baseline,59.8 +2025-08-29T14:10:00Z,cpu_usage_percent,example-service,baseline-host-2,baseline,61.2 +2025-08-29T14:10:00Z,cpu_usage_percent,example-service,baseline-host-3,baseline,60.5 +2025-08-29T14:10:00Z,cpu_usage_percent,example-service,baseline-host-4,baseline,58.9 +2025-08-29T14:10:00Z,cpu_usage_percent,example-service,baseline-host-5,baseline,62.0 +2025-08-29T14:10:00Z,cpu_usage_percent,example-service,baseline-host-6,baseline,61.7 +2025-08-29T14:10:00Z,cpu_usage_percent,example-service,baseline-host-7,baseline,60.3 +2025-08-29T14:10:00Z,cpu_usage_percent,example-service,baseline-host-8,baseline,59.5 +2025-08-29T14:10:00Z,cpu_usage_percent,example-service,baseline-host-9,baseline,61.0 +2025-08-29T14:10:00Z,cpu_usage_percent,example-service,baseline-host-10,baseline,60.8 +数据输出格式 +#统计检验结果 +{"statistical_test": { + "name": "Welch's t-test", + "result": { + "t_statistic": 6.427, + "p_value": 0.00038, + "degrees_of_freedom": 2.71 }}, +#效应大小 +"effect_size": { + "cohens_d": 3.47, + "interpretation": "huge effect size", + "mean_difference": 8.16, + "relative_difference": 0.1345 + } + } + + +# 能力三:功能检测 +在当前变更场景的灰度发布流程中,时序异常检测以及指标的核心逻辑依赖基础服务的稳定运行 —— 如果上传服务等关键基础服务异常,会直接导致后续检测 "无数据可处理" 或 "处理错误数据",进而影响灰度发布的结果判断。 +因此,新增功能检测模块,核心目标是在灰度发布启动前、发布过程中,前置验证基础服务的可用性与数据交互正确性,避免因基础服务问题干扰核心检测逻辑,保障灰度发布的平稳推进。例如:重点针对 "上传服务" 这类直接影响数据流入的关键服务,通过 "主动发送请求 - 校验返回结果" 的方式,判断服务是否正常工作,确保数据能按预期进入检测流程。 + + diff --git a/docs/detection_flowchart.png b/docs/detection_flowchart.png new file mode 100644 index 0000000000000000000000000000000000000000..d6c8124f042cc52d8660b3d8d221e71a381f0d40 GIT binary patch literal 91679 zcmeFZWmr_-8aE6`qkm*jwS$1ude z%shKkJm-1O`9ELZFNf=znZ4KEd&M2UJJ!8YpnBckxx`H8 z-RVH6|N7*?wXZKj3^g=IP6*Q<{vdoKD{x>2vY7GozK;6Hulg~jN9Du*p;7MTU3z88 zJSQDgddEKGzThLVicsvIOAp_u@$lWFw;WGSSz$GOY9KRzndDS+Uo(XbPLyn7Bqr_? zdTKx_JvkGLg{F$2^l>)x<`enE>HInhK>?~7fr7g4fcn?cuB{qPb`VjA0g=Yb__ z=;L0eTpo!Rp(8PJ=N6_v_zW4Yd>rE@^KKX@*<_yfwLy5EQMj17@?V$pH}hTXALk}3 zvvAFo@3vVak&v)7{c5)V^Rnlp-p^P%-A1~0{oFju(9RVLI?|=B8M;X-7H9upi(6l0 zsTE`maBj8Go-Sj{gwk=Cx-f1D>_2(KL(d!B`oJL}p!M2*?<#K*XOSItLSyMjWScl* zR5D~u*s=;Pj`iFL^zvn$O}(5-$-}T_2VK^jpjmzPzgZh7jzBbdilj z&jMKn@gBEaevU0Zk2@2%OTHhi!NPyqU!Gj|e;7l0gM2467py0#JY|_LB+GOM|ffDp!wp(w5 zUVg$=z*YP-Hu(56*1eD?8FK0rha_%S>o3m+h-I9qOAFvOy^?BUOSnAp;>r)KG*W(( zn_C27UzO%@y+l*4tbWyBcv*W#>gq&m{DQs{mC#yBp%Y$H+_kw1Mjv({B#o0N@4G(qI|vhlh4V!wyAcp_Fb*&4BZZ6TF3-2@us~Y zuWO)7&4l2~U~K3ca0D$Y8`&XIM2HMd`j_Z0;Z7lg3bk^#nBJ39ya|11`I3$IO>Nq9 z;T5sI<-WdjUz?pv?$2i*NLxE#rC`pMSfwL8(U9^P!rO6nkb6?iF zEE+l)Iu;uFp6zkTn8yr_q4a zI4IqpH0Jx|mkuUIo-HD^;zh1jE+VC*ZrOLVBTt8Z{As@%kgIS>&l+lTXzq`dY0my<5MHrzdim&^A7p-%F;(y z`9%@uv!9Q>?B;0ZIGS&RDZvW!oNPBFB0VFx--Dy(Q@-$KOc_nV3qNyBg^vbARf2>i@7mgT1 z+CI0vTKsDKd$GMyUIUls?28D`{vr4`c-JO)`bF6%r?#{3YqxK^3c9$u5PYeu)`T^R>>;%v6Z1Ikv;es5ZChH-X8XUllzi;m;&QIqkL z>q_-cW|eG@^LM8k9qpvS;8pCJOM>Rq=6L4mq{O60GzU`8bR5);+-~`b!1gK_7v%N8 z7AOO)Pufq__p3CXO?nEPSSiK%YmM>3O{WVMY^>pf`w5HNtP-jMqX}bo3UVfHrr@&X zuo|PTpD7))Lp1yH67y{P*U~3FKl%tkt`_L)3Tvc4hfa`<4LbK98@Og^E>0Tvfs5^i z9qvh%`hlkLe!iL^A*Zb1jxf4zOx>K~fWYj$6+Moj;9K!43=~8zy#~ zcV;(;*EZI!ZtiTqSzq5=K5ni}cR}|B_Yy3Uy3&}?EK6&985}-DDxU6shfEwz!c%vT z*C0rNrS&%Kxt2odVe|=K!rA+SqP4nlSOKLrcT#9$=#()RNc7~%xs9L5u3EeFag&gb z{|a{v#3Axw#O3Cw#ze1%<3#}G9;uJ$r|`ugwO+O2bVey@TH}4Z z5XN9=^;%y7~ z=X#oN_ZHS?+0d@)*ZxESF|Tje)7QCTCD^@rFpFhpe;<}O=UJeZF2H%v?&9=hH`{VK z0Q|#^6m2+*zSC-^eS2?U-xzuY-wGu87I0j#-kLvGv`|sOx(6H+V&P&_W8ncu*uX~$ z`}W`C$JlIGmwvV5U}1$>W8wa}M-}+R{CxmEm}h?fUWyLIA^^^=10SypoQu2h5E+*) zj&Uvn*RW(YxzYSlNs~DR@7kH1Nxt^e)in$ zxr(xwsiQrYiJ9X|b1pA?Crm$B5?*4!p}o1A37wa{or9~Gmn6flJH&uvOfxqF-LG5R zY$X|&0HLLbCAj}GO^R4oKz$hC;~ndVYR`aQK*}(G*q8{5?e{O{xZdL0 zGmKQpU@1P7eddL|HA|2}zT9xMukRCoRjDjcBi6|N23~B*jrJ@7*;b=9clLMSeB##` z!^w0iGO}gr&u||mY1}9qqF7fk+m|?Q`DP}ZY*=k(8Erf_;4GYIwvxCTbDXl=9b;Q^ zIx!P+8;6iC0PDYh)oRRB2Z40@ZwEid!p0?&`EOq>*Xh<)!~dxVx`2Rpc!UT;3Gd5y z|EUKo>>$wGrT@n)o(E(=+haNgul?5vU?v4jLGpi7_#YMiCkq!!rVy8b9?k(TZ`HZF zpw6K#3t#c-ym<98xeZ?m{dYyi&`yCOu+n;1q2A4!SuXT)G`r^Gu4vJUY(-a;dihx9K5PbN< zS=9NUQm|QIB_>Lut|YEEkzaAD(z?{6SAzCp_Wz;ifj6$bj)?f^y4v3pmDRBf1*5AX zob4m*qQ!OkZ-^SXYzedj9(y}@sWj`L<~08ksP){ts8ounV}6q0zhfH)^w^m*#$aJ6 z5r(0mc&04fv2UIYM3EB84N1knsn5LboWqUW&aSngwPKQ4t3 zm;%lJrtm*1VBEp~QQ`k5DiBfDdhKVXNO)_grc2$A=Q4b9LgLMWL&)?_rrvFxNvFgh zTF`dfY?4-7_OFtks0C!8rAa_?e_IG;167iRyFzN_qL+K(dzzugq4QKOPY7$}=?oEv zF4Oik-EEPT(b}YvoWcg+U|;+Jg}=s`fQ0N&+{@(_^6V@PW>~-b6%H_cuBXebp$lG4C>_gAh@a5;0y;r3f6QJejz>@b#4B0G5`%e0Cq& zRhHFJBs=@8G2t>l8VqmEB~?fgu+{))yuaw0%qbsB7NW!&VZ!(~o;jh!7)9k2fv1SW zb;gd!yYaUj>Sgt$hqRNVhaVg)^(~?wNxa3vktP3eid3aSPbD98l}9cg=8tGp`3Rmu zIZ8Vvt9FT|Zi$dx5QEGHK;lnASt+D{TUKyvn++JFkc{SI-C7#wAAcSg98+fN7Ot3- zd|hXp=M2mO-;H}J_qe-J*L8U-vEtyT61U<+iD9<|-5U@(w(}3d|t#tMN`gFGX`4w08??ROxA* zLeZ#>0#wGjE8QPENhpXNgi=p_+D~v{AP7ydo3Kic{3B^3^`6AnX&G&uMvpp9(Y=2p z;*OhgpT};#kk9*^Nikk1^}WAoQ6;FTs)C?*?XSrWBL-x|?d7eT7eokX86(-6snQI+ zOvO-P(I1_3JRa?U^i`;PvRnd^Z^XgI4PxMN9lq=ht8y+so`9Oq)H)B>xmt2{-@f5} zHRz9B{KO(NNNdC2efl@9HsRbu9_=#UyZ2r?`&9;7&X%D7z8H!nwCJoVFh{4qxbZegT**r{t-G;z#MBgqWd=oMt0SS}KTE-3++_b|Ki8F1l@@ z2Snp)B4KFYUo-!~4WNAX?Q#O#Aa-DB%JvbjE|v<|W7_VDp1Qx&G{G$1g1mpd-Ux`= z;hLR9f2a^3hf9dK%XjVar3?1S(5(YQDGHmB65?tCI+ieXhvd(-2fDy{tYy6GUoiNp z47BvJq>Q*X0SdC2_ksMv$cF(iFK)(g3;!<{Wrl&2LySWw4H;oBmMoa3O7w!mA?3h1 z+W^;U=*8kf5`mTk6_LD6A0Q1ep+?X8m*Cd`f_FaTxqLwxtiWslR9I&}NYarh0~C2- zz5Pq11&tsPO1}dV38&14^%Hy{0>GxKD>Ex>tFhzNJ+P*R!{FM zLze*D+&a4Q{LeMAZs7crL_^BoEDf0j&|)IAkW#XV$*V}eO1W5x$U}hO^yIBP7d*zs zjpmXWOm~wz3XtIeZVt}xEBkYeE*3bK^Y#!GzE~VxFTkEQyRV{#6Tl)HK*XXKY;t-H z5L}KW$mFj$6EYbB%vcZI!VY`^s1Si>vgsfG%di0thaGIWI9x1FCV>cOnGA8QF98G=mIefb#7!lV1qUT~UB`*Qh;i>T9qFYz`9QgGTSj7L5bYZ&F9xH}->pY-t5V4KT_D_(kmG=J=QTBU1Azwzl)byhqDR4K z$(j$|4pL_(>FJ1+L#kmV6b`E9Oky&}6Od&w=gYVM2;Ci4Ku2oXO=K>_2n(k^)3^-@ zxB>dNh_0N;(XXM+CN0a&TEjGIP))7`{ArW_#w}gq+W;Q(A&i6fU)fC3Q+3kCoFN zof`;vmQ6P6B~{tntJ)ktl-NOHJfj{0l6b}Ht;wb4$L>r}Ek8OQ@Damg#hIn`Owp%U zF3n-z8d+p&hVM?^5MKw8^cSG-m)7Z^>wu4>*gVH}C25X( zy4O~4t<<0?np6KgDwaR679UBC0H2`bH6YHC)_W~T(6OoXE&es*<`dIIyYE>wLC!@7 z(q=fww^|$uzOaQ5&{{@~%1RsdY&@u<71TRL)&ah{BWHTLlZp3lm@``bmc@EqU_F^rDWGk> zs}WIuwT+(JsmcU05(F}wMIQZ7blLy;h_DG#d;5j*fU#$i;s8mw3WIBcTowpM6f45SM=PHJ4>g?Kvt7!zI%$1~s zXqjeM;mI?rp1m=1DK=WOCnN}WJdk+BlvHzai51$R=Xjjp8ZVG9%PFP3<=3##T>yfq z5EzbuTl_@6Y$2Dm@Ao5Daz|=I4#H5YIBuDjb@vNVgfO^btmw-C zW1L_@$@A}s{DF}SH1hakw?9kDxV?^VMWK&C3)-X2VxR}K<#V`5&0gU{T zinVCfY7h;l+{|gxolR{u$aY_>SHU(eyj@k(9E1NuBnd7XkA2guks8@$9qn$7;fmBRH)P zC3Gx#oX)?--M8pTdhI>mMgVHy+aG`&YGHBc`O$q~Ri1<3*(;Bf;RC9hmzaY<`qAkZ z(jv14cqCyvGcFc?TNH?jj3Gw&SMRLV$&^C+LBe>*sjT#b4Vv8yblW3ZT|og93t~^U zX?{o6*1ZPAqu%AV;0tx5fEf0T=tWA7?_~n#qJEFBKt{WA)9|q(2HyH_dZs_wD z)zcP7l}VF*IbJW#GA{HL*sEzcg3AR3uhh;(u7eKsv5s7~B2WyuBdF%ba9}6zJfHF> z@_3lJjzxuf0MENA7}Ug5Vr2VbdSw@9M}9SH;S$_@JE_z^2-QQmk?LkH2sTw4EcHi@ zu=exC$*=d~z4NyP9m*hNTkZ-LB$HCpRB>6^(asdC@=_>EZ=F09lY|b{CzKc&(<_a0 zYLuF!K1ZSu^+?~oSDt-vnh08P`c$JeE5i&=qz<(6%_3`&qx#w_FCv7!35ems@m&Cn zFD=NmpXv{00WO@~RHfoaE<>ACcxy0$`EqyM!D6IzXvl*Ki$1fp!A}~EUe23-Db$CX z?Vg3tO6|h;DWIC&(gRTRJ+sE))VHOnXyd42Tk}Xb1LK0<=32@oqqeENs0XNtEm)nbu zQ(uMGpr=SK*M*<>D_QoEQeBt)&8`&UfuG9 z#j&yoB(nPM5toE?VdA?38+k~{4);@p1;9#}*VhoV_E_X(^NW6l&9+qa=R@dL0@}_1 z>`P12ju5zr$aZ`*v(l5+AiVZ7%f2MR;*Jy{?eD=C0oQ$iH&d{l$qR@37Kv3$DShJI zgD{3yw}U|2_K~^+uDi(N=d$Q-HSHdq!f`!Hy<)%&3qI1heOP+3r%CRj7Nx|JGBM}Z z)Va|PJ|{T$!7}WUhHq0@z>lR086I5Au{ zAQ~j5Hl#3yC`xX&1t#pWf@LA0gYgh%^?slFlC_CBQ1P{4$E!btk<|g?*ptGN>5DUCvQKbPkGqj2Arn4{_$s@?foH7R_U}P-8MG{Grbn*!LfIk<>?~yJO#WbJjaC__=)lWZK;Cq-X?+8Iw zXXza7PE{#gy<2~t79q-ti{gD$8~I0I*@28fdUXBPg=bGjm>DpB(0I1fpv`mCMk?(U zVNmw+(fVk9j8$rg{w0uPVgj(p0|;WH&;`~f?At$}~YTANURerfL#%jj|QWYak!0e@) zdrt^aIeZ#xeB<=N%Fia=2jC{BT_CBSLpMzJ{*kP22^rP`*_U;HK5Yz2t7=`Zi9|Iy%~y_(b~M4 zZ&;eknbh#ZCtbj1yhSe`;?)0g$T2{`c5Jj@yUchO$v+wd+I4kB?0U?jQD?h7Gj*>1 zU(p1#e(DU2j5!8%=;o@QhcFYrKUQyE3J9)``=}WI7H+&GI?-=0#fE4f3pn_RzKDP` zP)dF=X~W+%_{eSS5I$wxS$ccs*5PKYrAp#r{@#$*jM7a%Hup^^hl-xSXkXg2vgUCn z2jaG{En66=wJ^kSu#_@+?8}7sXK4Mp_++KYNSqdGyZD0U5bIYF=P) zR(-B#bF;g_l>^pf2UPIN^KJ2(D0~ZelYc{_ebV{aE@b7CZPB}}YH&d~e5B;SduFCa zXV=&s7~qmB;M`VjW}odDzCpKUF0aT%?-uRH7M>Vi`5-BDmIwJ@Tysi-*q-=CadJk2 zfWK^t z_TLfpJ2|L%>gJAK8_LQtl0;ABI>Ao)JT8LsP#|33UkQBrH`ns!=4+}0+ZI}D925&Z z*&fG}2XY|)5`DmVw=WSC_J%E&ZRnljArUFox%%kF{L>*W|J@B5NzbOf1d(any4yvF z#3z6|r#+|aYa41%yQfxkkG7%E`0QLP^F1GtFIG-~4p>d7@}* z4(`oB$4f%=CR9aSSKhm)1~u3~={rzjG){u(1e3+38sp<`|0|oFNdu6|d+!MmVS)WtMViR-%uW7c!Y(2Y=fyc$h;sPd5nFj0Ey>MY(6IvM#e14i`_U-kx zajI9Youyc+mof4}$!%1L_~HJ(9?>vr&n!76iAXrUU$Q|Xz6KGRs2W~BjhN%!Ki|1~ zXv_RQ^xPLb&AOd#!$E!S3$64u*6EEeR{u_nAWe2&zlU~NX$DMIx?|}Y^t{i)*1QSC zHov=a_i*!weKAj8ZDb6E*uGQ<>hN=IIjgqYcd6J`Be$z5+webZ3yJKl-AWEUoiK1! zDH=PkH-x;&(0Zh&W_G+|y9S*PM2xow1BPOdwjxu$=2U+O`~r==8Pp~`3P_!mQ~!);@w=@#4TQxhsK=vlssm~R zLgIJmXR$unX{^iEPE9JG^BdGWsJ@;FT^b~n(vzA}UKubl^M9A&mZ(wgxC>(UfQ6SY zHW+?=3-V{p-m+iqPaVg5wLON^Tg+MjPnJ7_Ntn&$zs>#GgQ0td$uYWHh;siCZbFhk z#TXXFj)-_Us1xa_``1~r!%dN%Scn$2#MhuN zOK89JZs{~2NE1jlHo|UDuS^%7Y)@!7^q3DAW)CE=XI1)^ zR}By&YrZSTl6R;o=$CfDPj?%6b@?p2Qsy%N@4nK81>E{W7L8pIgpQyd^A7^~o_pv( zj^Ba|_t9ae^K#PJU5+JT8N&XYgO9wbsx8M@ZL_@#39_|ksmE;v&e1Ifwa4Gy#Au@- z+M>%GA10#CxW9?^^(o+$+_6k`{e$CyAIP3p z+a)%hAM|8W&Rv0jFb*#JBo~G-@S1=!iSe$1!E+k>&9_P+&c4zX1PESn#5M?3Yvb!i z3#jxi5^*-$%vOq;G1K0%)qxm&(Fyi5yk9zdeuU@cZjQX+YMgGVb@GkyY#XRp+1U&u z@EM_|MSg4xafF?vWAG%^2{tpOc0&G+GX%#QB78eA`$# zHtIwFSd7F(9#ccP-K!dh%l{H&e!eSz z*-pGE5`tv!?(6?8K!i#_2K`Hlhw4Q|!VFhNoMdU!QPO2vDFX%uhNYZ%qi8_!>yVWa zi^i2!QHN_oavr;L_ld5Y!rN6z5LLOBXd~A${R**$4@AYtSpnP$5Xexaq{coOB1~!6 z$F3%ER%_V~F`Qm3O*g)Ddg<({ZmFS3{Tf>6E=oCplibHnu5T5#u{aTmB<(FGs*Zcd-G zf(2sx^wAA2vr}sk8kmLWp)EW*t)gGwpzsu4Ri7zsi0COq((+KwHXV0A@^nx3983qC zT^N10fb0J3c0K!iF|Z{$y#6XeqrpMtOdl*t}P@{b>P1JarOEMH^1-FtmAQt4gC zA03~!0d%}n`~B+Q^ww3fJ)=J87ZW)uQJ3skwx?gQ8I{uLx1bPX?P5J<05W2d1Z}@J zL_?(tfE<{wK_JNHwY2|FW!>Xt{K5`MKz=|Sw5Xuepg42Yd|C)>Szsp>J>4C5l)pXn z0lYEIU#vBaFxxJexR><3kJ`&-^~)CqQ|cge2-{v#HQGGb^ju@$Q;XQ>Sy_>mPy=^?g?nyG>}C3h1R3 z1P*wuji_F$DXTmYqAxiBzlucEO_y8xPA_@GdYP~&eKoLkUR;GWvC*8)rrt<DSl(Q^Q%u3WR{%|%4`nK%StgUaqrz8#FpPAP5HZbMmVj$~q2kvqn7f93$` z9OkWfaf7iw2=%K=3wGR8?O<73{o1&22wFAx%~l0PK=Wcp&7pr&D8z(br7Mnu8G-Mq z1@C2R!&qN&-T`{|+SkL?(5IUT0>K?da>IKQc-t~3NDcwZELN2lxOicF34tBDuofm4 z;y?Y78R5*yg2S%fHT(JP%>o|Tyd4qZ()<@9Yy#pC(?K==$V<@Imx+F5sRPM?+FsH? z#ibh;J6DakKxUWeuDHkLu6KJZ?kq%zn0uX@*9c2wMDUS7lov~By#vjJo~F1mi$Vc&KWH-(KXLKe~=YzS?`^G-b}F;o8iSS_$G z2~CB4|9oN7l<^w5zv+K^fJepiB0#`;m`PdiWx9|o*p8e=wxtVaf#xv&p4OAcku>++ zH^t0X@pI5OeD zQ3bY|S=T(Le53b&yS4M$z<@RVcNQ;<+84}jpTssUGSL6W+kg>Z(L{*Uqck&#KU~lP zxKPaBQG3A!PGG!CYU2N!J_Z8*NB#d>cve)?85bW%#2Fu*GnjTn#Pz3&D*;7EDMGzw zv;!QajSQyW-$%{V0l0BD{_byWB+JEYs*CNX2>sb&!05g7UL$gEk@TSZgN_+cc;li| z+>mVx+0n??TW;Zg$$>+dozyZ)q-l1(>DV3Uf41Bw42@My6;s4i^w>+Zit)&TzhsME z{oUgNBLFv2u6>Dr)L#aJi3Dli808~6_ZHgBe|#~~*!op-vzp^wcr(!WoA$42Y%m(B zgMaioc70bl#-Pr%3llYtwH0fabGAyc0Ryy)()=Fa6HvxMi*W6w`a1xy@7^JuIFhRt zQ)1ZA9VH#v8B8i1GxyX#=f%U;6XQ;PG8v#m+t?5F>iuhKmSiD6j;h@zd3;i8PR}`K zdG(GDdIXGXYWKY(-u=R&|46Kp1p!3cSKG+#OEw$KkS#w!wnvxBNLizw5v=b$lkbWa zR66Hgp&|rIQUeXAJ-axNnP$sx2Z|T3+!0Yv1EajV68SCFBhse`=-1S?spe09D|<*9 z0849q?3N*akeVK-F-iZ@l?r*$e7H6#2STk|cBL_fjasYgqNlef4Om09Nw| z7pOL4ER@z|cZ{HBofdMeiWtgxDn}*qBH&rc4XKF{pvoeuhVoBo7hMs6B5ghhQSS?g zP6kH)YOw_rr1QB?2~hDdJ-JFFV%5Y36q`jui}nU|=)lhnw)jmnBuE11i40E8948^3 zkUP>IGp>W;yY-rxp_ild1Z{k1NWzSPu1!9Q%Kz><2xFrS93%c#oiHf^^0nYc$z|}t zyeGbE{&Q=&^A{T1iYe^#_PB+qhyjXW&W^TYq8R17zj@9@jpQ0npMB)F zRJ9&zOsuQ5;AS^!tUYD{$2%iE}Axr)7OsZHe>}pp=Akw@)<#_4G zK6%;Wk!pC>aFxC%yKX^cwo*LTxX15OVy7CwcsHy@4q-eRdU~hx6K7o>aC0L9LVqwa z0Ku2YV|YZYG{MEK7#5Mrq+e}^o!;{p_W>q$yI~pU3KY0GValy)sMIE5lKzOw#^X8P z>l75skn;njmS742%Iw|YoWe?5sL{bn-|f9RyI-Y-PVtygSKbX_RGOYSLr_w`#_nUY zzmJ}v=AVH=1eo z2&GdO^J1}dy((MH)kVg(yMQ$RUsd3>dN0r@B;U(#ub&G_t`FzNm7725oCghb`@8R4 zFRTDhlMYMU6cwG=6%U94Df^zAeL237X``nnoldO(R)IuF39!T|aXnUCt$3YEf=y%2 z-_xNeDNVc}E*{mC7Tw@bYGt^)QCKS6lcCemqhstC4FenRQ9YX$(pw#od-9RZ^> zXswQnjh+k+#cXc}kN^l|C}Mq?3UKe7vI0PHCxxZWvDi`m%RQyzXDMH+a&z;% zW5k9Rm#=DUMTeqUotbEs~Vent8NS)m|MeGk2e7oMZsYPVQ{r1hblF}@W6?Yxfy2FKU5P7|B3ybXhTsC5sM1+hy zckf-T(@q^Il*<8PwO?Gqlv+B40b(e=^5!W<3`=gFY}Y`6G6*(r&!YwxL@(7q9l-mV zS%zSQBoVW))2kG4mzvFoy%~tw-ocbFt~T=8U}Q)i@aOb{p^M}q zekWfp3rU_=KvNfMa`TJ_`dyCi#sRE9IWl*IB4)YP?}|=s>_+OYj+FG74(I55Zur@8 z{@SYK!qhc&J>*r!bQq4KH^L8OS1aB^Aa}&h!v@%IaK%Ck*4GECy^E4)(pm9qv)rX% zP-FTw&NLMx2cDfPBnCz8ApOr;3v+?Wa`%-Q8S`llWz~e)-gS zeT0jc?f3^WGPXYBM)~Wf3>GSCS2agQDkI#41tr@T^Vb#G+ME4z`#b#bCXG|o+KHFV zoo={G5mhaD_hahiP_Q#J4`$AP;pZ29pU zKnsp|*Qcr)V%c<`4Cg4t4;mgw0Bghwq{CQ(Ysqq$NcIyafOo*_UQr6g>!M5gBd-2K zgzK|#Meo{2{#_sME4}6W;V#u?l*}oOt{+%^K9MK}RLmL)xl5@fIGe#Hzu(23!PHrP zOnjLFXqwCnpta7^A)6m%1SL;l%TdjeX##?hSD1DB@35;1_?~#?3oLs;xm%Bp-pB|f@>|Jz7YnIigE51z^nE-M+?r|E((%&-aE5YXnL>Yx z7EEbkA|Rc~(0hk3gvf4v1B3v^fMrqCEgQf-Sd~7>a943;|Xi{^&r^YEK zr16fan)Xy14(o6FHNQ1n9ci|=T_5fnJ&k2kOjRrBBO}0Q4+=1J=z$>UuW#%)%;BmYrD2rwhTrv#E|`W6U^(59 zqGEuUez*g$uItmGcN2=71%s1T|FQmO|lS9XNGB!lNEF(QTyRLP_Z;{e?T$OPd@2ucD_`;L3!v~g$Z z&SbWE#hIDRu4RzX$Rhs-EYG7IajOl#+|y!M{exVAp_3oFp0#yjJn*lSrF@Vj8 zsa%b|2e_xtWRIJTY<&RdnXPc5C<>5UUsWc+rVjJP+4x8Vzg~@(%k7shGpRFWdd9oe8k>F!j*pEVnT4J$~>482oLz z4j!jBLN4ePkl&cXC?9$1F}DdFM*2(%O7`zIPKc!&MU?_V;kdjD;XYATJoCuy&*N~H zl46^|pjQx(JD_EQc;wzlzc5zWi(pz-yS&g=6t zejJg?Qnukoyb|vK*f;U67*;jE1{3jLEaL-=J1aR;!!J-(!GLNBQiDOIWw$1`!>`Iq zhIV!QkjYI71TA!z(ljqP4eL&ER>r_h|lhdkpA+? zFgc{4m~M6qPAF3BjUM(22}c=N=j?k{Tw^mCb9z8TdlC}QGIjgAQX_%DNBPo zm*wa%sHN?uY?c@>WP^5TC13^agj zeGo@$OoF>boQZtm5CB=50c5Q}+a9z}0eBc$V{1BgI-`*pvi6etcL_E-5O}8Zm26R9 zEO|~#7dh)vlQ-a27)y(Kt$i5~y>VYd9pUD$p_f>Cv!OT_&?}r7QIGSGUj51kj~k^P zfl%)01N^0slFx4I4*)wt?5TlyA4cnkC?@~-p$Ma#-RlXdlY)}K8^clQAVim?0f4a8 z+Iwi@p3st_^?lJqEYCyza)kZltTd8^GAm1RfYWO1^zZ|aRMuEse7b;9O*(H3=1%Z` z_I)RWmWKtC#&?yQ_n3Da?JkezYsyMW5h&>f0tvSSX)IU8SHu)KCRw2x4cdLNl61bL zwt%TV_1V?|))iTF>XI7yC<0LD4Wt=9f%+5*SPjZh3);~Er5GxKSt6G4xXAv*ces%c(eeFx=^&OS z-{UBtxPqm%bn(p&#h_H%)bR}CB?bb8Dxjj%m*M?P6i%RxPk|0Q>!r%v)&4=il~`jk zD1lAVM?GC!iivA>m#XUvbGlD!V{K?w^t|jP(Jb?T9GxzJ@-eTXQZbphd<=9IoOk&+ z0dDtoL3NA1GyolFV3VHkg5_*u!tukC6te(v{pxMNk1IVZg;|4h`d4pm_~DS1v*Y0j z+5Mo4x`f}^Js?eKc=G-JA>KW$0!{=Nyg6E@?QmpiZS7rJOm_@xX(RGTf4E4Of57xSNaiJ;YMKN)Y|d8=0pGmc zkel}lJbe@NGkcazJ2Emh1t8c5lAMZ^i&ixq0oKfCl|;7#ZxcZW)e$3i-Zl%*u- z9C!UkSyr8e!dmeT>)LUmjV1I=M6;QV&qrYMGrTx(V?t#^*ore%Oxm>hNV{h;*wXFI zbrCSC(eHeSFY)BaOSi%zt|~GJkEHwSt9MIB(}k=y>5YWgg}JMn9Du{_?m*uzUkW0NwaFE^RQmc}kE5J_L}KH7SA;15!@++z?TJ$tjAY2{2sus%xAz5h)s8k{iR@+wLyB@XM#4P(GhA= zK=clk0gBp}GNSlmm#&|DU9u);c^|V(%LVuQQES$vQP|IFKQ*W~sWzByu$x4;CEr%p z9aq>1I8UtWBYE*Vl4lCXH2y(OW>=%8a5^Gsh5aLu#VyhRYG{=WgtNcn$v#m9K28(Q4}rdob2&+WK$ZGc;E6}D}mxyo;r;zwQ4&+5tL z{n=azaKszbSIJ44l4AgymCht(^d7KTA`bxf>)MFZSnyy{nocHuSMTI5qIi9Mx+!L~ zv9R2%U-|hh%AIAg^anjrN7HBD&4wJ%)KI(cmOV4AsMn-kCL3Rp+gG<%Z-JRdVp&>J2?|@gPy}0$# zMfy?%^{1-rO$|jdbzxyL}X3WE0Vbi)N%i_m_o^;HT0`dJRc&2;lcQ*8nu3nH3#4d zn)**wZY{=*Z-C-2r<n@n&sivBLd%e*0#nR(iHx5E2!`-+v z4uw4HOyc(AW=m%D6|&xcVW>F*;}n#9<41mebcPKhjkV^pA3t+h*%BQva>LUAB2NjL z^XNv5Y1-_X!}!LdfWcS00{?b*1ju_xr~~2cePAo{c zWO;Bw+Wcfw)9ibL((-3rg+>2Dzy-JrI5(a^8l>;*uHucgsjB2g_&6?X`)GvE9MLeG zVPe`9%WHc5xVvYTX%7gI6_7qv#Uwn^hfW-cy#7g6u8%*@0C30`Lp`qb`TubBmH|yi z@82+jq=b}!C=+Q>X=x@QC^b5yLlBS_kQ^y3EzKxtK|w%rNJvO`2#9n^jo4u9IsE?d z-1qGZeK)u7_nhl|u1{P?L(_A2mgia2t&}~l9oOC-CL1@h*SmcH=lwz-trx1#`y4J2 zt0cLf?(lYA|68#sfK#f-DBWb5UboX8(-!X>lsGE}{VcPnbLuq!l42ZKtcM;`Fh7aU zY4K43SS$o8_JJ`G{C-yP&slVU_W>a{KAYd7aF6ZswI9B3Y)myCKrmtm%yD) zedYj^UCLJdBCA=2VRonV;h_c{iO!gIq06;RE4{nYhZ+P&1MwAk?=YpF>WyS}3+-{Q zLeXT0e8_)COiD}bVJqnMoP=V8ca8)E!t{?_5ugzP`~OUXaQO&+X3biMukgVH3blm^ zmBMJqYxByh#nl_RU9gl47W>ArjQ;#~M`Jzd&gfE8T$982x7GvG!snWXt(KqY9_Wbq z3ACT}JItGy)V-Nur=|`Ar!_)u>wZ6&Ti|U)i)ymY*Ls(B9m_+$b2x7#BE8-Eu_vHq zAUsIG!KXT->ef`!kC$WG@s#b!SzEsV235-*vP4KAPykS8p~>79Td{@Uyyp?WescHk z)$5V@kp=ks&@k}5g^CRweDaB?5>v|cx=J>C*#|NwYZ}j@8JZT-L#Pro2>}u{$ZOVJ zcb}T~3Lhu?eKTD`KZ{5f$y>zJMf_qI@wd}$0J-+jINY_bn4#B0rV$c+xibECuN7!> zl3qO0huHH|6&;=A{w(nh6h+R#oyS)1QF>}afeS;=W1C7g584X%`8=~>*5hL6H!0v- zD^h&29Wn)-;=WYq)<4q!@$!&x0kXt)pw47W=+`*vVzsKM*q5u++l#(8OFXHDh^4(? zrdfB}Pq8<3`$^{GU2rJQE**e&LUi%IkK;op5_TQ%#`3iCuu`D+M3@C%zKbEnEMFr_ z8UPxM;E29!2Hrz2?fQG zSk`a;7xzIs)UckDVw>Y{T5a=5vDb6S_5wWL1LlLP^k&;t&U7%1^)o;K=0W64f(ii_ z2TBOp)uBuyACFz`IGNuOU>l_WSx6W3&$|Kwo_lB$p!7=<$8j4x1t8sJUj-kOQd$!F zzc3(*ph-D5;=0pvp)9%lGpfT7PTK6ivGI(YV*o&rh>V<_nHuFA+G9dJ<0u73B1h6Uz(CD*!QEX!N6BA$7Cnh3_jRo9Ppi@Sa946uh^Bnd_Kc)q zyRzv&O~nT&cuVjHOQ(#o@V+5&S-8|s@I3IsdTl@~HGSiqx{!t%Y@+YgD|3jw&tF#6 zlmP}@1NT)$>0u4n@^iCJRipqkXw`yNk!rdQ6NK0!4lGjNwWx$ENa1=VE^#Cs#^ElG zh6LR@HPR)$OaX0YuiK|=21-BbQ%=#=!+aj@D0U)B2PfanMsQ2u+Co=8vyN}2_U%cmKPPfw#Qx`1M4{D+>RLjHJ43wo@BIZH~P<+h02T#fLm2znA6U<9WGXuA1JWI*T(S;L-g{ z1Ysy%NC*9_VwdLnSb-AEZmjO}N?*#a(hghWQqcb)qRuEKK>oT9M)dzaW5!}8XEoSZ zqhQIRd#~15jqi}@=IANK%s~encLq4DXsPKh@1>)imb+B~eaBlcPwiit|2-#n~ky=@O`4jTwk6o!AdNOcm zBKF3|ie!J{xK1C_XwKRSxYC>7%|eq;&aYv;f-ik#ar5!xb9sO&S@+OhKdLM}5@%@w zt2%<(Z9RJ&%|0PMZVJ1K)@OV_0-9mg+(dH}*n^Ki2?=bs76LhL)o)XFEMhKC^Ye** z0p?@{wJDVIh)J+e6dsW(AR;}a9NYB3mj$-PcN<0Z&LdHQu7~##q~uYtIwI+K(J3{W zq2O~ayxK4pesNZ6U~w5F5AW?pd`^<6E$f^uvZ|K9BvjFRaq`CS)7!{xEamY^Y0czv z2a(L(?GQW)OmW79;#3-Ls@TB@Syc~_@;;0?4(jZydUAdp+vva7+EKmVA#$Q^g&p7B z%iNu!=eeggKzv8Qc`CCTvVZihf1P8cbrS7Yv+2vU-x*>%pvETO+N#*TZHleU69w1gAZDb#??_Z0Gxn0X@pe%OspALUJ>%2fLl zr<6P5)i3AXt_H*fEq^AI8c^d#bQn*mIJ*MNu~*aM(GfxkUEY+soN`>`Z5dt9%d>J1 zcsCU?-3pwrHWnI3oVBk;`>EI+GaM?`w>>(Vof{1{2JK%ZKH8{1ZSmfw++6TVt}rR~ zkikt;89^mIhb0jIw3^Qb5(gg^Edet$m<9yAC@}Qtwf|>#y>`ziRtFo{ucoXi^^VlL z>GjSVN-OmMKww_P$^sB(;mRp74PWStHnJ|9?4*#IB#(VJadhMlK0M%Vxpv% z`kq?vNfQw^94BQHd@_1KgoUO(h31>HL^7d>Z^u-gK#nH;N_AR8n}-`d(H+yGy8Zm! z2(c#t>zOH7MCEU8KAGeAb>}s`yZ2Wy`GghDTy#-Aw$KTT`0EYp7n#6Y5C3LSU9oXG z)6gK~JuAl~?pbz$Ix+<_O-|l?0B4^MYKOyd_FEpH&1hPYfW6!M?TZixg;cTc0@#7# zc)@FVYEhk@3q^6wf({$0jyc_a1US%RaSIdrvESn;a`hr0z+{^>BqitKvYAu{rb3vN zHxoq-d?jD$t#3o+h$s-2pZ`ux$TZ&HM5{kioyM89#1UQG{sOPwVzzU__k*({{|%dt zR1NVl!Qdr&s0y5C_)1?oo2)F-tH*4-Vj6zgd&>X(SqS19Q4^PnF4=RpY z*X;esQKKVTD|xcz53i!|97cL}oF0~<&o4g}Lq5`on(^@fL%28u5DguGDUAXDdMW>m zVZu@$7%+mx5dMRm>kl0%hBh#{vlyJQ1kZ;dR2pe-I5((vBU_EfXgP#zRYg<8asJOl zKiT_S*v;O>A~PrU>ofRG%6(B@O$BE9r*pi(_B?Tk@i1+wLAr%$3EGZ69de>dQ@`|H z<3)zC9lrc=S*mSoorjJ(*j`>tYP5L;pP$wJ{4)2L*((iRVtk4B6nV%z1+0xpFXw69 zah^T6-APEHRs&5wv^Hb?)IZ#Mf+6!$4pVXE7c$VweLkA0c1&#+{Cn51`pu^y7x$GO z*4W!3$vHNesccsAFR*Gu_VbbK9~ZILQka+ zphZ8moI>dU9(7*3sHl5!Be9^7Yb{_`_u}Q0_UQHXm)Yo_UsA0nQZt|FPcaC>-Rpe| zgO2OVk!{dB!2xq`l1h&@sg<&aXz$Mc`eoA83tTz(0pzYVYaikVEFV=;3$#TiN5rnK9#q1YM2)-R>2j^ZARV?7p_b=QJ$H#`0 zCo6i57FXQw{SyPGy2XUC_S~z6wj4}dMLwtugi-2@CBYng8sEluzZCf>#iKK}?Cj#{ z0UPASo?YfxLF<0$m`^q~$z}0kJ_q7<(UXgx8yTPR%{ICIdR*RU`+SjWm2%9tinaA} zpwV)bsG;75qnsFOlMNFi#MbQ=+TE}opSBACFz#fFu;P<=7rSF%n-RihHGrwryzOYQ99 zq8Q4d0oznx|HRHC&a}s?2^}6zbn)_20j_O0`arMTcy{Y=J&PzW<~Z2&HfH--2ddp% zci?2S{la4-eg5tT)!St2^>P98SDB6ds(RWYB5n}^ z9O%Ys0KfAau;lar*Fv`ZDk8}Wa1V{@R80fWuh1Y4SP1+eV2(y7zl5*)6PQwh8|Gf+Br5Gr%1+ zd#9CQ_n2Ydp{sCVXX0wvKy33S=Ap2YU7WlR^7mxplaDQpAPVcXgXs$J2@V(xuzd$)kK?zj) z+|aYTz|n&Eb3KPe7LK2nxGxL<(LRtF|Es6U6B;3=Vo3(=`1$9}(wC(%?e9)!oq;6%O0R=S&^o^ZInm5Sj<&E;P%K%lo%W^e1iIo-yl@gN>@?nEY+bXmhp}{?%1tfq|GiD|FdMo$K84bcY5gDN4|d7J2K+M4wUgY90%MD2QiUf1|82)kj))-f-u#qW zXjJc1D$V}kKLJpelq;t%bI5?iGUl471+*Zsh+7}IzUO_WA>4rb=CIYiIxYSJUu>nRV z$LvHIOytcUV-=`)$9gvX~+b6D&6Bo{`ew=18-sg{W5-k}7g?dd&6d;sgd+WVpmglzh6 zKJH;Q@CUK}Q6wCS6p{XHB$Du$?^{x)6F1E}F4^CW?`CcT*I$8-=;CYep>L{xJyhKk zIeTQMQQRnnYLlL{B4zsU9)rw$kQ2IqGP*XQX6~$ivav1vWlzARIhlWI-Y3sph39Xr z8x*`m5x+9suQOFflC*1!e}qEMf-h6gTP?yaJsfnu$~=AN`1{TkGWBq*lp{RC?C?%| z0b;tuP)z6-EE~pgCA}&C`@T%s3u1p?!harUU2!I1K_=C{S9B8h|3xSL%X&?*manQd z6vH&;-}q3-`nfaav2#+8e@;qJZZYaC~cj&XU!x_kzH?IH5V-xhA z45ty=*jrq7MSC7S-rR35U$d+utbqPLraBwtaNe&s8nQZ9^FjtZ{W5>SW`5RI?Eg5q z9QG3F+VmE(UnGUIRw!Jm~bFDvpvVQtxXJ+}RkGWC^a22&5 z^#;_`U@Yqs73BW@Ma`#|>ss5DWNXY{9u4%J1cU6@q9d+%-FQb*jd{WG_`poRFc%wt ztQ~T>Hy~>3+cN&riPxmx)~H|dvn18WV6?ko_xP6b`Nu?AB$$m+TcMsK!~1B!qXC66 zJ{lmVMO0#bKD;gAK*3slzPy&-bHG>mwVQbdK?^Eo$ye>FakTN_9a8`Vj{y{UQq(A1 zyzUzC!X)T;d+Jx2Zh0ZFHE7k?sJTD-&`-*86AT|KmBU0{Esd7{T^ikM@W-afyK~6Y z!_~g-19C5E)nSCxQLW?LlkGTs3K>YinZ-!!_R1A8_nu<=li6ZUwf*r+goy)%dJU(C z_4Ab*`4-3|r{V#~-)NbOb~5C;8q*t!M;gOmauG>x9##qQIn}0URIvm1R20^OJYryy z*+@5FMNZ5kt!p>IHmF5VUHew2#P_dUMA|3s3qya`+uGJ{&|8|xI@z?6-aJ~XBH~U4 zF;u_PbSn0rsu2Z)#fhM!kk5{DT%ANzto=_a=AKiKzNz;!(7CZS-t2m0fot|Ys@VDt zVo5#nRMOTaX1Q-SM_m!t_v>D(!K`tY)q^@_msYJ^uNSMWd#x*NCkz^8fRyd@&>p(; z9RUXITsvD4^-+nH>;q*ivoemK;mhY+<;7;_Xb`Owa0XfB-PxSuwfn6vOH1nm=4VxE z6h)*#5-^i|areTIGA&F7dhReMX_DKTOpY@WJEk>EgDfcc89)w(g&z=t1~7 z!A%mttjDDuN+FkEc)+mn(ZAedi&E2N_Pi-wK(u@|bf0u3#b^h}0Q@LGnF4a4gmCl( z!)TK}ACu@mwQ@7DwNk_rICt~!RgO~AmPV-s85fs#sA+*Q`FV|>EeA!(e0$7m4n4T8 z43Raep-aJ&Skb@a=R-NtyxPTTDZqsOys2*2l9KBW)@tocQ&UsWZKWr0NTo6ssC8`U zqamo#HQdiw=Fhr=y-X)SVp)?Gu)+urL0Tm20esauc)~P3B`zW@AOc2PS7INn;ad{; zcz$`pCA?8}j@!v5HlWjIcs~S*ZL!>IF|P`w_uUJor{AHtaqmIYsH3?&wF=!1p}=hi z8s9zo*p{hjk&Lvoi*@5P56>B*hi{gCufOoL`IqdAG)zt3%Q+eS5x!qTTzlvOpZOsjJZQ7=a3^VW{&^dB_noC+b^{e*(BDnNpB zTaCM5F*zn6gNfhCo{{q9Z(3Q&IuYK$M{D=KlEgC~#H|1HhCXk!tZ4N}mAtwY z6P7N$*}B(KEF7mn`*O7C#f>`8I{sXEg~ju36-8wIskQJ@T&E<*vHM6q|1@1KkLSJI zm&fnUdqiIgVHS}%Jm4P*Oe@#VwIJ|KXx0d*_@=4|HF4ijJu}aawGy&;A~z^5`lQkHGjIvuNKUv!;?R86%K<);c_H zEnbYc|BeJJpCH-U014AP+fog%ztO^fX4TH;AbhBczR(&E2y;twVMvhHdJAR3O)_E? zo@px}OFD6yp>)rbH52Y*BEbi9uKulyR!+ffq#;1sk~^ zdgR&_UO-(+w(gF_P^3x1S+iu^Z}?8?i#` zB2Do&!a{EFw*6=Qzv9ldKgpE0G?mZ9Hu6hbDc&#Y&J&S|OJ^xkx_tDz@#xD_8NDiF zMJWc_Y9&V8l4bkZFIV#UuURhQJRL_lP=pm}b>mF|&kX}y+-OpocbH`VbReO`V z7_;hvog{b`ioAHIZN!-c>$xEL?!L#G@v%<~QWcrhRtkgE{6NPr?-5FR{(C=!fO09X z$*8xOlmC7Cxk7b)aWRsXtMef@*|&oHsu=`h0rJ(aTf^TBg&04qxqW0%JXW#5^w;uM?_;gi}GOzcer>%J@*i$O4sw#+@#j zDM0VD>C0^je#!$*12VRz2Q&{_r!4KcCN{X_alAx*WxNH7aWsl>U}(DM`106WqfA#` z9zyG=(ls$b|A9q1_-%-M{38dwT(5MCj_@eic<^`h4`6H^%FF4vB z?+8qy`M!6PBwd<#YkH#VN8R4|Zqd|}Cz#_zo)?l|!Jd%;d&W$_VlZ8(c1@4QgXVcihHr*AGMilN=7|d{MRS}1PV+mDK9|mQLI{%@Y7=G6haDH-E z*lw0&Yswk#XnlYxbc@H)E!6guXx*X#tf1y}Z;{w}kB6U{&2oGEGr{MVwKfIN1ruQeg^{Ev)7JD%@w=P>%OdrC($wULRF=aDri-uC7n%DK z#d-Yy++**D>_3yEpOa6J&tVj2hqbAwan|70{fiaa&FoBQi;Btz6W!+nddiBGcU$Bz|M*ea!_w8KfdM0@t>V#Qylnvr@pR^sE_U0P!amjf4L&_ zWik1ylN+j3gYBHlk6DU}B`tjvGoKVGHS$e4%i!^;wiz|Q4hZYzo6x+!(Bsh*=my2U zKc^m5GT|{RVpK&)=tOq$F=1c4_^C1#r6{!~pCy|aPZK+>+HT$#8{pBcO=AjEZ8aKc z3~gU2#e8D9p1NW6~9mAYZ=VzF<_s7f@0GN;!K)LyEnj*a^SR;HBnX%RzakqD)BFvo0 z?>n+LbIqdgJv`%o(zY(rue)5gM21iIP!7&t!ulLD~x?ZP8>GLdha`(Lh3U?n zyR2kP$?96wJlvt|&^K&souAz#6-Ja~HHQS*a3W@ha3n&n!$Fr{GZAivTUj9 z_5iGVIDl*L=hHDF5f4R_l9dAdmV(#tkz?JPj04s($B}R9Lw~piJD*1Xe3HhdA|7mZ z%ow#%6`gQNw_;_-aciA6Mhp>s;3^Y>32AC7Zc9vK8&rxq;Yxz{mr&!YS*f4$<=MdH zVgq{u1wI>EjHu zvLqRgJm17$8++5Gv^0;m@CZXSS<95@FXjqvcU3i-h-4uA8kai4e*o#7u1IE8q3{Qd zoawLF%jxaT+n5RJBR1?gYZ83=OWww*9ZMEX?D!$_8Uaz{H4?Qn(I=SN2;1BTPcR-N zcK;Ni>FdIe!utcfUxYyKAG<2V<)8CpAfNrR5sTng{jr9N;YQH&ew6=7&h(>;!_z#l zDD#m?9o>+JEICo9aRa_?!VoO0YM~`t!8!m?ef;Rv-6 zQZoW^YUZ8UmhjjBbZpI+)zA#=BEK~4&9NiZ7qR$gw+{9p)-?8tY`rIlQQ78pvcf?8 zP@!|XDcLk}Tk%fgrcZCX@}EVwy^djL5*&APl}Q|dpDswh4jXf>rH|Txx*jHv3`?U< zV^wM7j-Q9A1-u}=v?esTrq@KbYkNY{Li7A!1+tjpCNL?eVrSc zM925?rlo+iqbkdo)y$&8zibJ@kDnugKQR$@;wb4}t$kpA7Chla&^chLs(2@ogbe{?4*_K{tTA)*|}%NaZJ%P)gnML}jiJyNVznCdV@}l61|o zS3uGYKyMbHk1dWIqSuNYsz> zYyJH0YYz7uJ&+^N3{=Gp# zLC=|Gocl1HdTcDu?oJVKut%jDUQ5#Yvs6&b4y4*qp)SKGeCkEwZl*k_l2KvYpcV8lf%ziQlx_gbTGC_;R6KS>wUA8F z($mL^-z&BlF1L9@br<$JN4g3A9z0K#Vr{=s-}a`{y?A2*2F>~zy1DKcrVyd!#g5(>or0#bK zmBF&w+*c{OBtu~z+_MY0`DgSATKv;$hKPN{HHry;x;K~cGxw`FC$#tZSikeweUL?v+%k#CzST74()+*5qz=L|N2X?e{}ysJXV!cT&^Dk%Tddn8Fxa` z?})oSVD(#oN2t}QKowDOnbnoFmA1D&l+idt1qJ0?DPKO17Nb}0Q(;TV$yx6FR_OF$ zKAGlVbi*8I-SitQ?ok`XP)cFxsLM9j7g_kiG_bMVk`hoip7esmOJ`uah^*n1(O-Yq@v_&O>I+WMyIypLcfztx2w5zs}t#JF*M-k*gVvT~Dm|gq?mf!uN{V zOPCTzkiJ7hJ`ga#YhD5D@DXu;%-ifKR(G7}1#?lU3mua4)jP@moKYXE+G-u9_N8A@ zzxn;0ItL1`tm`PUIqNoWtpnV|&%k0s5*e93Mu?znNJt3bn%ov$-s55)ijM15p_^#a z*?vSt;0s=t6FKsjBeEdc;uKdI6@D&O!uVHR?1fr}&F=)>EM7i3G@8wshRNk6KQt7S z4Nq#ok%de~bi;_?mBxC*#B8S!X&-Vn<8HD7r0S-Y3$^#9%EwE*^Y|IFI@L`D=1c$c zldi&VRJ7wi3;+4iwA{>>dmcuE8gCUl1 zB~z6@Bc5LXlQf&U1Z|9mJR5}g+4{X=sPD8a4u<{wf!9ORrqdM3o}Z%Buv&96!(f>{w;w0!%LX=|A$iD?v7+Pa(Z` zwRCw^(^d+1p_lBoI(|f{%iN^plvJ^#~sJ&q&R|Sk2N+OHqAVBRu|5lblosuMn@o8^0{W{!HUNw9$Uf&dr3~Fn8Pc1a z+9+mkhR6im95AZ!5lLy&ab zVw1<>@J&i9Ue?kmr#@!epAdgVa8oVwNzkO@Y{beS?fzZ!qqRrzTrj8Cqu&Hn4XAHs}zP`j}?hrR^Fn2?hv&BiCvfh{d{~tURFe^`m5(} z(Um2j#~v>E2UWLN{J#uWh{*t5#gQ2)rb4!3=V_fU7b? zx6-A3AKwx8VWgc?f8P=Q;kAscF$L2(xSi|$mKe#?uzYmyO7UyBB}%{35HI;+rR|a+ zKj%`Zdsr1OYNblAHe*_SBS*wRznhYz(^31*&3g07jhtc_A}ZA6&PbJy5-n2QSn77| zN3v%ZNe568oQrZ;y!73MoVyp-rxlbM61K&x zd(27NtOK?3BHSS{p#q;GE<+iyRi-WNo3%~mQ#odZk2%i98jTJ6uZ__bxS*o5l*>k7 z6znxf+qfKl#y#Q|ZdZ%{I!K?Jkj4LiJr|AILi(Yr4Luha2Dtk8;<<+ES1RbbBtR%8 z*Nfpnx`6AO^%FIV{O)_)`jdylK{npY-$#6So{}JXTaQ?M=J;Ndz_sqklPaCF4Jxoa zQ{Rh2vG9ETO)tsi#>xs9Jj;pOF>CPSmkRqTM98;xYKq9_9Gg1*&st0b^WSO~K3Q#y z(ZvKvN=p9tl}cn%VuHDi{l-ThIR>?8S9l#-6E#+>Qp}IxcuSRjK}`8iU*QB;tE=n} z>}iVOV?_h;qW`=EXo#=%CG)WD3ne6okpzZ3*cQmOo2%Px-{2BL#E)&+NWM_S#X+6I z!sA%T#ulfhsLrQvW{5f$@nc9Og)LWHNcO1$F=F@bas2*tNgW4YiJ(5aWMGUNF(V>o zzwX54_;OY^If9#er=Q`Z^ahujz(d~9i-5hBkpjob?q6Je48 z#MX*+^K7X4Cl6tcS>l2I{e73bKzm^%`wa^2*iOwOkW_s!%Pw=YQim@()yn_I-0QNb`Qs22b2&`-v1_Av5xbmba60)}GOD$Yfkf@? z_Q_pq(=|CZWOB3eS5*(sx+gx&*eHTy13=ZkHcu$>{N*aszcD4Runc6TcSTdox5L98Jk0#hsB$IVVpKAYK;}S!GY=LV>yL*h%x* zLuscs@Qtw=X|5#>+3#r;_zq`9LnH`=D#G(RtR}wjY|3zFltTh!R`$0~!zZ*{zOZ%>pj;|0bl z8ppkjp&NijzN3PO6U|tQ@y>?(rN9u-NJHW>(vVbaV8VsiunFnWb>rr@*W^Y-E9BSw zGp2jsY8xy@lFVs$1v6s<#_JWnwvT@1@8e>|N?41&AE}yU7d(o)EBPRC^ZgR^`)#on z#RvKSHmLXS?2$&dx6`k+>c9|mJkUFA5+w8TY=K($O$9NVajOy39l{w{5RQup-_0XQ z*mwjb>p&zP&{T&L-6y%G0HsMBSuC|8wlE&y-Z)t9?xMnFiMy|;(f$(NzqlM+V! zf^YS6>}S`JoZOWv9WVObv#|r((eDku57ZoWXM6GWO!GI91O?}N3oYSe9|hzf;)O^P zUD`#JMp6^)c9F2MsQJ5$s6P$?xUbdo>|Ebgb(v!!u*Fs`0bM0h%diZF5Ehv3}GF`|r z-Zd+HPMz>BHR6^|&kFS2J|3rb6&|=+@Yzm31B%Y(hB~gcTtDF#oGjv3Rn-XJvm>vq zaYOQ(0McGd;(>%43WYrTYYvEDzjtvjeAXkcMJT86lK!rh%0SF=h+^#S$uDYszWvwp zFU@|Lq+-)rQ`0L?luqj_j?;=v~}9_1c6rJ?JC8!*lH7)zK*N=kMSAwi6Av%u;Rt zzf9PrcbATgj%tjE(>-XL7>ueUq}%f+@yZKR(;i;tlBZ~E&5Qv&Jc-*c6l8UtGq5J% zhVw#to*exMtrH@w3`?x|$YXS??yqpkX4=Zh*;lJC9&>sZ%hH6L>S=f$Ta!PS$UYM; z|4TK~dY_I)ZPLD;Xr|`u_vTjQrn1UxU{|{)h_)M!D0-$nLf2d6L!WUV2hVNc{1A?) z+tVr=OeA!bam;8dJP65qv-wxq11uIs`D;O&q_LqB+W}hUJ|%ZixwZ}tH(CP%hC$rh zO8C*UDsOPv_x{0+P%=hRap%E@u8x40j(+*gen!gF_uDf}_uNb%bI*RU)OG7K6+dnD zL5HV7Xr2Ec$+TSjGEQVE^98$woLWG`4i_vZv<(kF-Q)$fCAW*r-J9#ngJO^d)8;o) zgx8C@sRX2r;LlWH4;@VGWBofM{y_NeB1(4^M)mBPcmh5!?}brs#2vTqS9BJ(?9P4* z7Io1T2MFyiU~Rdnc?sN9ddfe~NyV}L@k?g)rqULTNk3pC7gtO%+5;e~4>ZMQECYP7 zb``FCV>1BoS<%+$HL)#fms{X#qr!LSL!7L_ zvVNP?qv)Fj@_T~G@u{jfi?s7coNG}e_(clc(YL~)pPHbb^=?4@F~S%)HsQA`Q>_{${w!CW)1bU@+Z5>xb?mhC!~LOjCu5?ZN=PO zhhKU;6pSrx6QlBqk#YMOG&TJ^iSA8?=HuGq;=BAd6~u2}FRJ%$Ab>KsGjmik`@~~w znq@7tU&knwhS_U(mJoH1FCB{#O)9$K{@>W{%R|D4T`LF)j|Vy>8nSztN5rknip~q6 znqS9mns~`?iurszQOJtZruvEIChg$mDZ)e3g>I5&)n3n$(*22|Yn#cH9V?OtwI(R| z=0M(aMfiTqJ#J$I$)aMzU!EHEA3paoW8IPv_-PyUI&&3d{;>g#h|YDsIBu4|hrgne zV^U)R4nNuFpy#dedcC*2j0Wr9UWClatqR0hNl!saHG?AO(wIhpYu zwW0kwt+fP@^I;WYLV0rD>QS7?p|$D@DhnSM<*zUe11VM5<95{BJ)(asA7eK)Tl7PB zBaItw-+D+M4y>AgReq7g{BgE$+hCdS9FtJ<|CFu-e5dp;d^QOKi)j9Ld5{xwAN&I( z??Luoh7nf2tS~9E^da=&s?ZE&S@a65q?d2+&XQjd+hBP9Yh72Fy3ivgQO4V%-z>7? zjD-mvn>7Vck;{G{6{b*tIzu6t8f7{j}tl{ z0k+j4vr-ZCS^8N2pW`$KElZSIjl1X-{i^yG)n&$KsG#t}nYhBIjVS z)i+x6413R>R`BBPU6(JPD%<}Q-ypS)+kVci*`I&vy4R@OsH&AF zQE70e_5Bmv!5nx%MOP<_O0pL0(e)G1rcNrU2C>2g5 zR|YLz?_#-^v+IHyvuJyNdQJSucP+lRaTkBLVgkISAKhSs6hA_nza`~JPmb}kgGQ}+ zbwT=+;vhd-Th6=I_*}UmP+`3b0(|rNSr7b)F{%dN!*)faF~yOgo(S5muAAt>N-ad< z1rN=j?ft)gb>)BjdW83;>qy^uXUGh$uL0MM5SF-;l0K|-IYskj;ZTw-pT*cDR)Zh@ z*kz{#`fpW0@yA8;9^Le0MFas!7cKj70T-Y75sWyGq&4uZ-Qx4zuiY@SpvcxGe)|%( zw|2$;8mrjzxap5$UtWa=oR#m)R6mX8d@@|>C|^7EMeZXFi{cIy97%oFECqhLRU*wBW}uoKVlsf zA$|;|HvdiK$`ekn=(pO19_1NMp9}x-i&zBQ*A}S)diSTlnClZFf~jOzfxa@HD#KJB zBG1|f`MnH_-{LMe@ud6?CEq$aQ-$4FqbE-6-4hofuNMh^e0L{orfPaJFJW5L;lXXZ zd#Z8uX54QUFe-kkFoJfJDuIy#L9uq^pcIMm4zcPC1} zfJbI-t&A&0jsTTb_~yQ-kFD;_qXNu)Zi)YG_A?8#U_{p`N}jg4GL7_J`b9!QLi=+r zT&ab;FDlnE_Bimn2amm(!cjpw3nL>m1A6~H{;ja^AK!8}r-$C-k15BpNZSa5%T5@B zLqe9*u_q@K)E2upj<-cMcK9Tsa7q0E%KU!lzE?qaM_(Q4f2rgS4iW19dbVi{1ObMv zdVE^~4R+kC{#Q>)eabBshOQW)os_H*J`;q@u>giy#GV8J^`{Bft}?+@BO z_3BCFxa_FUn~hICDiOkb;)YA?CD~S)cV*n&Uz;c1SZsQv!>w=Z+E4+^?VK_#B{7+e zH!sgmp=qn4__h*$lIpJb6gR9Sq!8f%!e?6aSTA}{;#;t=Lu8nE^?a0Ii0P&vey%*2pmBlPSHc8}{ zPTnqbhNkL-Y$jmT5urPIsnr4gz9GDv0mb*ycWw-2^D=;&N$%D! zQqOI|J2&e)WD`d}DL<%VvI;8d1KRad<3_-u@iQmsYc>Hs{J#)j6~1hQX&MwRqj8T+ z0L}BDmF(|5)rPB^=*Y#igS(v43I%x*F19c{E;5?Tgtx-nHhWYa4%*_OHb*GkR!1Rm ztk7`rN6s?=H`n+ggZr6;o_dP>Y_T`1Tsrd9KF{E{k6@$Yp@S=uFaevklEt6c+G!v- zhL!ROVF-fRIz9JX2Q^yXxK8{sSdp;snRJ@Ib`5{*NUk)F@NhlssW9yBojd(RV+G?u z-{}QGj^}smrHWlGBLi9h_}YlNE3?&T=H&^3vn9RWUr}OyR*f#whXI=opr}G!S9-s5 z)wR+c0RD`C_~eF_S%A~TD+wEJ#SSIs4>Xz=I*SY;N}sN`d}E2EzN8c9Bf|UgA?9r_ zJJ%5+#uu2|zDjFnd8=z;>3MZ@6fgjHuAg0?lgtmtM1)xDluQ8)=H<*KrT_4!(%?GR z8>-KUAJ<6pt#9H->`$1vHoUCeYTt-6sianFDdC8h(b6)_2vQAU5@wbaoZ&F0qDcJy z|IzgpKv9P6{xIE0DkUw_-6|;|or;Jw2#823y>x?sbgqDuNGQ^=Gy;+fB8YS&AuP@A ze)sBo&iT&#=gjOd&baX0&vjq%ySkAq*lP<;te33+pl8Xl*^YRu?PGk0c39LVKP34E9R08*aV9FKw}jn>(1Q8)UoM0Txa zyeZbZDAH6@_yoH(_r_Q+a3NUjqfn9M@*k~!r_1-_`eLtno1q*R+&cMqxP;ee719Ys zJ1b9D2R@a^qaGMgQK1}9;9jMbW(`Y<9UQsOug55S+*0vKOG=`2$q;|c%)KHRpX$9g zNA-+BC+fAgw=}>5uIxHWCHrbWy714Uj`(r9pKLe z&iU{da2%_^22>j%E4M#d)LsLFMvFwwi~W>w^(7RL+zgl1ZaH=+t;?zYXy8fSW&m|Q zoB=W)ESv9M4g9T}JLh9dTyH2*`E#_cbhJLK(|+F$0T1#$TE`bNqwZSOd$55w;_!sB z-Mf+?JC9qqzU~9thy$g>rv}yT2@ej@wZQlG1Dg~FjCjYty(qBoBR+;#JNk@!R)di1 z=rH1Az;2(MjPE+1ME7D=7vf&R4*&N(l_MAq!Q_uc&)2t!h~Cgrp}w!#K+Ab+`rj5^ z5W`n!=m|*3t zFYqoTVb-p!NLn3$oA)guN8?we4A&;uu(-YzcM=cGWmIuzU46nOHHPYbFuX`5L(_2U z1$#bSwwhv~(j@Gu{0eHDh(o5BITt`A^l8GX=`)abtm+fFDA%w%fhRsD&owNnNSe_z za{C(az_Fk#Fq_1fS)Jq|X~J!baYH)KHO?u!rzr6UM!6YHo2&Rjx?2&#okkZrk zzKdjP_LC%NCEBR9Z7{sgd(mdwa$AJh(hyAIsWNtmzb=N5F3i#!zeF79QC$kP{S3}i z+)c&$uuyjzZj(2AhJ9Mhb2%j1U=_>wEwLGrG_$YZjL-PH*IG=CnCnY49qpgOL*lCC zIO6NE>k5H;j9z_CU$-@1-=u%X`|X1oy3=;UdX2;NRTNLXoDYJGV|rI?AR6^pTkn>Q zU;WaH_oJ~=@ZY#hOiTyIM`2)$6<_^P=s7=I;&$mKB-U-I5Q@`d*cRIq;`nHKrvWsn zj>9gPzxsayb$2nA&?#dPJk-c`OxtDw|d*No|Ro`3v#egfM z6_}uNuyxe1k@qc2jN^F;gEoTR@skYeeUL}y5ohH*cS?U@GiXQQ5T|lRS>g~I#G`_w zXNAKlMdh$%I4AqQ3+2aT(Ua>e(Z^1pCLElws5p1o!EY#7+6^Cl3=A zP2@_e{HBoPb-H~)Yl9C(tfV2d5anv6$e@QkEE-go&2PBhQ>gwiseVIs<>aM)P?4XQ z0C}iN1{(npa2-&dwc~ihq_hU-1){WOk)RcL8IUV?(&d1FrS;0Ynhqlw+;olXBMx7K zU#j(3thBF(vWKC!c&+vDaQxJj3ppKzDWZJj!o{Nuf|WL8l*B_%i|e8us5 zW`6kG%H)@7Sw>_z7}#lSIkTw;DaO==h=N!!o+j560Db6$65g+=cn$_Xx_o4yBx_pA z9jOLm^=TJnh}3P6A*|5q^FQf&b#UzoN$1xe!iF-ey4>=3cOmiwOzD?fzwT)c-W3i= zQ9PjKOHwbLLDO?47E0V&PHViHc9jceFpA=BMD9~H+%GFgWAf(DLfReBv`FwqXa_kx zQ#2e&$+X2U*_gY2K+d5(N?dHT`gxG}SIgbd{zhU9!6a7|AEFv{d+kf}gz4i%tYiM2MXM8#ii~G3IMX!Tm^Oup2gIjj_bfP`1AR z>5r?DcU*E>dO0_uaXFnA)A&Y8UtiDVy^C>UKhftV+96I~J7TBtr%vwN82f1IH(#>x zf|tE|ZWFzLMiEj)Z;xO9wSb?66l9!^WPe!;h_2wZN~TTzv#C%mn95~(b66dh;J z*P#ZppPvptiA_L-^Q9jkF|=m*Z(5u6C47%K+6tFpwRyuxx>58Tv7kuv%e(K;XL*Pd z&ELoMT`*dhR;W!x$@P5s&q;<9kuEwlB9!n0$nVSI6psIH5Hi7ec0ooH0O=w{wxVf& z%lW8@sBX=|dJ6(JpX|G>W0_ZQTziM9EG5IymoV;W&a-Km%nyg$5X@!0IDV10{0!Z8 znaE}bx%Kgu_9*K@Nu|+C8m64t#f^9OY1MYBzSA;TvcqWJ z^|KF9k%nt&_s$O$k$vO^kfMtun4-K&UiV>~nUTVm2lSiT2Yl0R+&Sao(qL18J z!+#_%6Dxd*VP?FWTok2WXohIESS0 zr*Y_&H#7ml%vcNRuiqIP4uiY<0(q$HOZX-03Zc)OP>YpbJ^w~~O6`E&QbspFW}IP4Z<J@&xiQBI_F@WDFWZwoQhc*-tqZ$gLSFTHW=eXdKZw@#|M9&R|5Rh; zoo;vYHpOBk@C}j*Nv@7Jpf&EtYLBU#>GyuMlVbWpW@;VoXN;H|eqruwrDsBFm_Xg+ zbBd&tlOk3EF33rPO{y1^PF|eln$^=Yo|=A%RS&}jtNnTw>9tei&vd3Z68B6@^e#_X zR^wuPojGmb^B;!;w@Cr=cbOx`t_3xLDhweinfV`BWNrfTITA8f%ns`` zg;6E9;dcZryQ3l2SN)Yn=IH_qONjFY#gXj{j!UO8DKj4)z4d22bj$seo`OqjTROpPn=~jJhT~BL1Fl%tO@5QA+;i`5 z!E!%7c@p~QWaDKBJq@3I_2NK!7h|IQFxg!pC2{M4ere&(x|&A#Ki)`4^_-OOc=qgTSIeoQskt&A4{lwMqKP zVt|c}+xCgik9Gi~)Oj`AjV?`@dP&gBNLdbkZc%(j9tWYaJFQ7kh6$; zw_z{%@cKt~dWU7Oi{Lwti^f*m=W$n`UcFoyY-|*y#uW_#KB8VPzL>)xkvZ|kiuFB- zl0wm#r);&*gOs`t=}|Xyp7+OXC-(86q7p5wtm2-9SvE@)1oHT(@zL_s;(*Zm+(K(| zLf2KPA|uH=(SGWBv9@%?f+9V(;XFNsJ2ga|={DKHUml&=wzNHJwaS z^4}jis@k}Lt5wyKxQPwBDH9gsavE|6L|Un4QHy^(*>qu2Y6_~;Dd#MnyF%Z(?Ai^D zHk*@~Gb_f$6NVt%Nt_eVxMk<`{t0G*-e zPXTOM)o9!0sTElCR0D=UPS%uT+qT_%XHcs)OR@X}Q;wO9QvgOwe#X~Yr08)DkBCqL zn@C~o*kOXaogfVR4tP|&zP@p7k3bv(7qsa_?MT1mI~I3k;m=%@qRjRCg3DiV zQ}b0xyRw>s`{~by4}@=+V_K@?_lZeNi7nAc5)hnmj9)F4|B!uUlS5EsIT5a(x8Ai5 zV31DqR#rI!d}VPl`ocb~xgT1tjSbY#4Egk!xzvRuk!{B?hQ~p*BQs9%+vniF1`_&S zQjc)U$k2DuMRfKn$n)OG2d#N!j^-pdL>ur!vs=wJgt!7_AOW6AI{?E^meYFllIC7u z|C>)dP$p?ngZ*!7`c+;AnPL`4aZMnZ%8}42XHF}a7LWQ-2Fd1_dtgx7teA`HNP6&% zTp#CYl*}Sl54Or~Zp2hvDN!V>Ne!{ngYfdiJ9UrWGC<0||NaWpcrTpu%iQH-6Ty=D zXhxA>Ceb;^Li5fhP4j=qyu&%&*_EW<=)J)b9vRs+R&YOrdf3d*x=6uyzeXr`^wwzS zSXl@;*ha+e%k=hZtrpdl#7|?s>4T=6r0kw;6TxXWws%$`bBeMb-W!4dj+@d7%&nl+ zh9>K3C6F%0;h7U_pgeK4Q`k7F#DWOE5|^1zeOC5?7&RuDNUYEeA62u>w zl3<@!$qSP16ruYn2^W{zC{gDd{CJm%lrm5X_jQ<%1~>M zaTo+w!fA%KPcIMa`Um4l2<7x=;DC+O{-}8_CqQ;Bq9rpmBLPzMiy*E|WC?g&f!1gg zF6d{|e)O~M{*g>>qBXRboc);%=o>xP94&u4Q$4U*YT82knA6(V5v#-VIenodlM;j|fE`$== zS~clK&F=LNqH*zH?rZo|(VASweTcd%>o{n-h#WpeuPJpPL-a7RL-j6{J z<%YNm<6NV=)|Lm@MiffChucx!;`HCZq|=M+b-A6nVL8Q@LJDA8HXCS*09@Kx5s^#G z56C%J^jjT;(&6BSc626-$jvy?&^=P*=}=P$qIv+dKnmI)fb(k!nAER6UpeSy1NM*n zSHQ_{hVbxk$By$m3jG|F_)X1?u%w!5kjzX)q3yf0xB6}$XpZDjZNmSNXe;=KC< zfgyD1FerP7y*@&i=Vryp3))^BM*4&G#+1)qp@HLLYPuG__v>bd?HnGDsTfKtcVeXV z?epsxwycy6A4em`X=EU0^iSK}7%bWX@Fltj>A5&>Cka@5#+!6`Ovm@A((bJW?!w}` zwR7=}#osaT1H4zDiiJt2lRo>8BzcA61=&`C+c<}n(e#ZE#?>S-~-yC5A2ecO6YyNVE@chOXOH9RW59FB6>@f83Ye18fbj{G2mj0X@vhRxMnTQ_j`I6vZFBY`hRSi9+&hJEouCb z4U*-6);`V=hs23|iQ#lNd76~qBX&--N&MVG_<;8ihj$R4$0=0apO~p(j}B^ZX37@y z(rq(Zm;n?}Ukg|&Pv*Q^JCIa@?aoN73Wx~zm~-JAew;zVD+)K$sq1H zS5ToM=!q6d*9Iz#n^H_6R8;Qm;#C$8K0vQRW`^;oOYi;e=IA=gHX)LHdEXC6W!}e^ zzq}We1Y2fB{I2L7e@MLU5W^R)J~7;1Xp1s8^X~c_p|#YI>HPe3DIvXBaVmStYIDec8W)0*!VfhsRwAhQ8LWYf%y;%x^CK)yxbu^v37$PPF=De@L zR@4eJGW(jvS)sUpQ_h#6=;UWGv)DF28=tyG^psv0uK!6sT2TnOU$W^p;yC~ zy^|!M8xhW4ve7v4CwyybeG_Zt9s>xdkX3IQ1Esr5&DFOF3yscif;)8Q?|u?5)=cHY zX1;kxsrLJDf#aXTq?5}pv%=YAb!g-%tN!FYYj>%tSuAymo1NjCXvNO12&>c$$IV|0 zybM(zE>nerf`~~)+_wk0s4$D5?pMt|Xt1xbXoi)@d2%V>#fPr< z?qNFA8@3O~wUJMw67%sbdk{Aj0;#|}873AX(rZ5ACH<58`CD}$!U%8S?sKF9Y+ilm z{{bX4KXk+(Ha0{X;@GeIy3g%Gba!)lmIJh{NIY;_o_%j|21fV8Lz*ij?mN(F_UxDX z%T{*`IB3};mb_SK^CgU1kHjD^_vMQOrr@Xs?#VCZV{YRj_20aXYYT&C+aZuEWn31RcR&3iZpWxF<@RJ{ee1aei3@Jlaund0_ljAn5p$Uy~AJv$CI2VzHu6^bR!m6TKDO? z(Wp}e`a92L8g0#tJnFHtEFux0KUt zh}+YCd1>u;`w?}E3!>ZUS?|n|sEDLKc?sb-!LMej5(f^@$uqI(vPO{k57Yz!{xCt; zkX*F|^lC&|6&l3qOHX+$e|3*9p$J)tN>qxg7woh>l&PtD%HEsZ;(BV4$xKT|H)Q$l=PhrxZ&VqRMIFZ#u+A^MN;Tf6)mCPs*ZP)z)0xG8)X}sqf+nEe2L!!cc^q;? zOcp%l{Jm>ux;jnBpvlJcAm<)VwqzA9SOTK|VI}Q7|2txM3WKOzoB!QT3|@bb%%K6J zgtAY80AwJj4`A!rZ+_Kzrq zHP^XsFZ(;rHHw11o1fGz1A$_}ICgg|n>-k9`|5<}wb*3AC!A{ShjH?LN=Fd0;1-a9 zo?z3r2;a*Q+{_!T#@d1?4C3}I*2%f?eCi`H1ce%F^#x;kV`+|*KRm)HqXq?bHFT*0 zD!BKkYrOSZh{yFo_Dcxa=kvSIVZl_+Q1*HURJ?D^bJJVK)#kW;x?W*@g4ypM$9-4* z7?IRrdaypl6u<5rmdsLQ_*%Ub@w_h-UED^dFDHf6wR-nb0@JPbIq-m zLLcYXa2=;y+C0X0)aSY5CyqyO)-8BFS1;tMsgvBdC@hzmO)LFdWSbkG>`$g1#K&J> zXhNR}hHMC1@E$jV4MvMgOV}eLBW12PzQeN3&G#5{%q` zYPdZSz)WLkwf9A~#;cS1L5dW)cHSPYx&NJ8<*)uKtoOqDVyxOSP#vae>n@9)^SS0q zFG=DJIIFw7FT+OB`-FCW5^V~3Ero#h*Wff@6a^JLMXsg2bQSp+yOJcHev2fTieK?v zbNvg#OEsMy&xG$`jT42mAk$4SSz&~m;*ZAPo%IeLHppQ!Z}z$Y2SLT*)klV2FMZBz z++HyggS>l0=l#e|L{{za`{Oz7`#g$pHMu#prNl9UuX%T+!y^Q7)cfDJJ!U9054d)u zzX+D@P*PLlU~H+nMC|*wQo#2&{zP`>-y$}mPOX|as-S=-j(U@ikIsr)IvXI>RDaA~ z(m(#Gq63i%cG#D{F?o!AA2=DX*VjRJC`_qHAwZWteAtvo(#4r%y)_W7HY;q^Gph%c zCr(kA!~^;K&3$QL&p9E?@vpa<;4ASciG_mk{UNm=j(rt%7&VSqgZXZR*N!wb$`S28L>vu^k9)(y*0Mp~9sT)lcHqetyT>n1ux;Dmk*$C4LGN6mhlQpnkiWJ{-M9Iag^DPL(|vNNsUl#had@+@6&aF z_(AZqWiy~;7UK7Awatxxpk!M(jmCME0WN*%wNC^jCOUS8|Dk>-G z{2eO@jn#)Ji|yMXc!-gH4-oV+hrXX2Cua%*>55H&JpqK;Wyy+tYE%Auzl~MSE1a4?(Z2Ew5fkTV?{o&b{M{vx)RM zqy^7EtrXI)yWA9OIE>{pqC5H_@EtCtl_1ji!c-N$(m^8V6`Qz zD;D(kfNkA{)`$a6Ac$8iKxLp>cOIrbljRK29@@qle9z48-Vi2o%9-ltAyOw ztgH%lcmzDxuJ&5?-`VtPCUKUg*)R!b!f?>2%j@Wa)?lXTYW_PZoa)!81n+sQ67@=1 zSm9GwU;&RZEX?}PvRk}%V&V~T<}yiTw)BJFTY~E{nvuGh`N0fvOPM4k+}t*P&9ZDI z4p%Bx+KIh$9x3}ofF!N}zx^L{`Bn=s<6bW1<8}@li`HmKvf>kCrQAf;LeU(l&-S?# zu^wkXfJLl-a8IkE8=;+lk0JJkARpLK@KNzIe~neAa!8clFVJc z!nxIOz9a%dPt7zTa%}97Z)#-`~k>B-(NCRQ*rS8yc#RV2yxVneQxC=t1KCF>edKj~I~w87SE$ubAfV-TX> zU=jELD&JQ=8DFG0k}Jzj>A4D)ACK7trGQ6` zcn`6e1cC_=;ldU;U@&FRcsW0qnMD|uo1tgJNHV6KkSn8A^yGMZtlUU_b7d6|v;>JH z^ttm3=!Tr0`G1xLMhl;yqw=SB+J%Wo5R04VZj=nPDv3+$S@9h$bKj#IqH;O(aNF|J z>A6eLGIDbFE6|^TZw-MGG@R7B`jp5jAF>Y*r0_jj)40+&_^M99LMkq(*FL9lhXRPn zTRnFXCL{^3z%%RP4@9|wOgN$@K}PS`%RIs4;?VK#+>R!S<$%N0&zY#_JJB787xNLB z`CJE!)&bgy)ldbm{gF%-7e){BK_12029rt)as^c5b)j4Z;ZUcwRw5I9<(N#B4X|4I!*4=Z9ed z_=g`VOA{1cUJ#$`%~Ryv{COY#C_!?sv^-QBc~mN_7-QI5U^7Kx(=cXg?S@!%rx){M zlX&@(;>)Ps_}zklh|gnXzV~%X4QF+42c6AvCEay>xw$(*^Va4B9PgG(p$RZUU%YMy zf-;45Q0o*ykPA{u(sd0HWDJ7R!8=4YegRZ)&zs2^L8xO@cNoY};;94d;tc+JOqffMP8#^Cwd&_yu_E?Pz_JF5jDDWtNuBhS z>t0sMhE;FjgEM5Wmc(ycLh7$q`*Up|m^)6CF7)^sY;U%regL18E?kN8@_y}ioyqS| zdB`J#EGMIn;7`eZqJU#uoQPQ3@KzZ!UGtgG*8CqYtOdRHSEA9fL`Dh$^M+^PO+u5@p= z!^K#kOn?5fn>?7F;!g=L(q<}SjoK;)KH9lS2pEci$)7X=PmSrRp*;J)KJfyqrOrZW z&Jn_tp#JW2+OJ`);}DT|P~7DJv8-27#PC`OT!<*Mi5?^^izn$cN!9`O6A}{oF)Hw{ z_ecwnzK(zNpLFHu7X@w9%h6+7K2+)4@&DynI@%pkoAJ)2^wGd`#I%zYsV=S`cGi{M zUIw3;A?WJ=Y=q9&)RFgG7Wj?YqN}NJE&9Hhp^f6FtKwlUeOYWIts=HuHM9Eq`S0x+ z#fZUKLIM&x!S|BOP|#8_cpH+Hfa-B}&{eOpU;ydl4bS6jzuZJE=t$-jd@#3}wz@KW zYlc2*tEoD4Yar^Ys6xor7BTNDsF}zsW;}ffLamy5#|E<^BdpG>o-;);oF$%o5MjDXAFiXG*)rM>PtPozR$>R!|A?-4tN7x1E8 zUI$0d^@oIn!B`AurP=wfwKXdWXRss@iYjcAfUb38jWfVxG*wwmEbMObwPDt(Dz{pF z{Vh_@uh{~UnuB$&y6c0ddR1DA~Kixw=ex@L(z|FZ(kjGJo zmQXvVA=ngC`;*e?YW^u#1WEjBCGInqx$o_Tq)2O!4QxbC;~ zIw_jmL|yGfSFB0U=>|NqoH(|J0ZvURm^}Pz5LAxeku4O9gT3@+=B4R<4PRn;$BHh6d z>CS1WS=V18&G5V<$E53!+GHC=9f)_GdPZ?;TmZEBo&0`da0N*cwtQiu<|`*$i&Ij9 z;f}xX4Io;;9T2g1$AY{Od%TYdc_dunWciCP!kDAy%YTmPR*qM@wm2z>onwlVk!v3z zV&}!Ht+QZChz0+RpS9G3PcjUak1F;`T>|I7MYvs!5z|XOtKrB71v@UW#ZQ?*xV*HE z*Fq!Y$TUO-x&Zo;)>dy?bJn-f}bnN78@H!h$40QgxMw+EiVbNc}*CaKNSBUbhB7P z-LFG=KS`hCha)ks7b%-EpN>;uM;rPmPh@ECnRo3#eb%pqdx^ilH)LzdDJ#7{6|8Qs=oad(^&4z^oK7DvB_k0xl6S?7+`w2yxnQa8a_L>=m`M+i- zeu&;Ln}zE!e389eY*-M2_ro*Bnsr*XPV!os`{@Lqgl9{-Xwux)Ed*NyHb-m;@g{ZI zL`9Qt>*hWH^@&Bgd3VOaCey7M2k67gnmnoYlv3RZ5CwAD&90kl4rF4yyJY^sv^0HS zW1$fec4PR7BI&c?(q{6ViOoN*MsZStIu;d?DWJ8!*cZM&_VkZs!jllh_r~!_+15CC zWIc#*W{cY2xh`bpXr!5qur>YHH=)zZDJ8t*c9{mZOZE@;1( zlNVd)7I7V=!{JjEhC8nX*HG=7k82ZmzPFI7lCdgM>?rx2%|vi*$KdHL=TPL7>K6v3J7S&!8^Pq&7?+0D^4q3&6KC^c*tU5P>GG3~I1uT+|-PlCISVY0W zN5o~lF&kl<-jIVoDwJ5*lr@By^|>ihFXtW@Dda1|z>blzVrVrT5_(2Bm=tYc{MpVu zOiG>g>QBGUlUnv{6mpAW@N4U{gGMm1e8PXfO+D}eLAAo?G!}_Vseczc8Ztx`y4mop zKmC!J3c9LNR2i|)o_-+@nQyj!UtD6;oP>`3A${*c;M@DXUZTj*E{zq7g27lASv;9_IcfV2SU} ztE*HWr$xOI706&Q?ep&+h{@?E6wEG@SrcO~i#8E4;xl^=<3W-~u>(hfKc$N32#;xy z_HDExk}}Z{BV&)CYlRA@-{#KWOd0Sy&LSAR)_?2u3`h*F?;hW3J04VIlwix{GxkxI z-A&cgO)_l|%`VY4Q>F{jlk_QR@M)59nt+vC!XU;a+6-Y*H!;_OMb!8PO9i&`V`Ts% z{)>X77lwE zrk~a6DsYju^ZR&!0m&bZC2ZVCIYnG4*s|uCkRv@|kMMkr-Zg93DupY+laiB-?@C11 zzx<&TG=CO0>+PgIzsyx%oM4YyZW<~}J$q%=Qt0@L+AF5FE*wlfyO28Z-~I(7 ztfRECoRPn@69NkyC<-mHmlyS-A%wW!txg#j7?w@^;7+}`vXw zaeccHI#EZ@p3cN5>dhj(8&pB_G-!pw7hIaObU_(=daMBl*mB3I&Ovn*@x;)7nl_PG z5uxxbL=GbiSlCR&Up?fnXjV`A4dP=wah zUg-v0WT>YMK)C<&h$W)nMf`eoK zy7}R(Jnm=B)tgi^sH@M*GuczM_D8Je$w9<5hV6EXmLdVC!xRX+b8hwv9sJJT4YmvO zn^@Ns@`ujjSxcB6 zVYhkAOC$ud+wck(*zRo025*|^2~6I3`_N#hx7t3h z5VQvV3asN}CIqs@UZW=ocZ(f2A|Oq8iRHaM*T-3f!{w%%6q3E(u5z??6RbY2k8(Z| zwxm@ZR^7cqgKCsrIRbBB?wcRYbV5c7&qj3O!R*tavTBiqs@Pvr3~!lRGzgO5g{&_Z&)T}+c7d~tII z&o>7VH*eVc?QNxP@d^zh5c_)jFtq%`s;8#>Uqy5=f^*=ALy2TzhG?^3IOwKc@X+}! zZtn5ReIP?ErwsRMUSt_g)|zGVY>3~QUJDS46_Yb6i4&7!@}_ZM=Vh7}1e#X73|B)9(uFJGY)+I0#PcY%(IDqo#b%chMRE zW32OB_{Qf>1zGKTOI+2l&wM^l*m(B>&slq2LG+r%Q67B_}PXf|K%1l zszo46ENMrw-g~W`b63b#Ad*BC7`9`nVj48P;(^-+QxUTKRom~_|EcX8<4~R(zjXA5 zlGa`XTzwOc+c~DmsnsZp=}B#5^lDCxOG-d(4UL#(R+<&3hQDSq&O^Q^Y7G96e?Y@CD?d^7JC(zs13#Q| z@JO4|-mmc~g%srh9?%i#MP%cyS&4#`Z>W*P96y61$|9g%0;bohJ$=*}5gvHw(U$%* zo^c9q75iy)_1n}&iIamY<&S)pi4TuAULZRS-wS6oJWU@hr(sk%W|}IVT{fD*U=j!2 z+=3CgJF)RdwkI-L0^j{lOtRWW-!2&6Kwo9WIqFQ_nZdV&w`*ml?rBQFCK^zs9OuV$ zt5aadmaJ_MAt~DYvP`p%&ou5d`*E&Glg0TY9a3=i$;iCP-Z(mZbGkJ7G%y;~THBpx zir1Js+URcU1j?ZZCi2bfWuejp1_|2_SB34w#Ht4^yQ^j>IR_DQ5{f@o&o4OQg2V<9 z^!lBD0k~rdhHFP65%?FZeb#ioZe~$x@brsqwhl0=IGtKb50M~p09~zgXI``$SsF3 z4|#cuHK((rdE=+4v}UaVa^@liB~dB%7jgLB1||JTyl*g=K(PWyOC6(ZJQGIQ&qa3t zh}Ns1Ujm=tDg=R|e$t)nY?~P|`|!DaLGeWWl73qDTu*Pz<#Yb$@|&oT_4f!*KjeUS z30%eAq{_wd8x)*A``0NX4F)_8TL zkM)M}eg7zXUGT}|!LyqftqoL7J~-z3{b*tg z0toj1tHf1gp?W1ij5bDx2HdmqPv`v;FJgXkrf#`c``Ah~aRXqO#qiH`DI!Fn3zuFJz&tZJcpczUXZi5V zzei}~4*A*O3I{EPF$!U!p+xq6bK)bJ5BI=#%$^baUoW>#e6Uckva+K33q@$$@Y0+J za#S{kg9$IZybnAB7v-23%%lE(d~h(Xn?dA1*DV@iw%Ih=Mu|L$;R07AQ%Ls@9#dk4 z^n=T1t?gj>&+mcXF2m4gjq)GJ<5z(RBIY(M0C{_;3m4>Xj+6e^H#=;>T_l=XQDE5S z-^W-FKN;d0Y(*snZ0_ z(v_8!jU~j$@bR8%fxjgd1l}Uxg%hB5ME>O*>9{NOF}Q#zPQOpuR#P7y8aI16Js&T` ze~vIyi+F^2DK}DZs+Ux1+Bko?Ik5vQ$0-97x{aGW?6YOuIaJlunip<~a#DW9#ZYMM z|2k{$J#5`fkn1A)v%q9yYg-Pcy{-$Z{d;*J>A{=caUwR{^sfD9ubF9cO& zP5O~a`FI{xW0+lJSxyE`r?&AE(*!ledkPi_~NydQLk z{7y=R^j-7H={*tLsUM$#D;Q<4F!S;>ruRBe%@P43d{z8Q1W~=<+H+acb+Ca^!gF2w z{B#RU0?LA63u4ZNg_8~Vw)&jX<}Z~O^TAF360gck+r?N%@$i4FAsLOrL|z6~jU?>s z-fPSRX}1zRZWoE=dsy`#OpUCD=i*qko%TZD1Rn8&4w|*aaK{*e4Ov|ST$h!l1;ypj9`yZFF z{B{d8Y_oyF@Sosf#3RQc?8e_KGyzw*$7uSE6mx|Vy1;)~!R|R=R>LsFlYb2HFl=)p z9<>%%XcyV`>9?MiMp5yR$wXbnw4(@&$fv4)V5<*=n659|cl_z0X?|@Pq(D;1sy(l~ zd9+Tqs3mKEP->xhU6_C+&ez<*rXN;V9U%KI=*{VH3~Jc9VO-k(8s!j@Wd1sjDq?s7 z=CH75+-m23CoSMfzE-?mA)lT}$&**l2dmO{*e((@D$w+WmPpZw3nKQ5Iu@mPR?M+I zfGB{lf*avqaS5gY==UzR7)yZ$MuBy&lZ>;rTw*a_?NPqkq*gnIR&x{5Gu1+`1qNjT zUz~ens_vd6zZsZwsC85_T+p-(W30p3s&p?Z_w=FT->*lCnM9+$qe^=qxFra5IWR#tCx$$!Jd#{>fN5OSKU2^qDOkPNMd&l+O}8H z#iSw7=}HjW2=hb6Zo2+xl#h7zJZ1XjfU#Q8_L}kRC$8-5hUdyi!sFrZ-WIB8Dt6Sl z3DFd81w6O_IiO{SJnAb%PuIc>GxGCP(}S$)H)NObG*5p-@%__-N8qf(wMu{Gx{)7f z1n&fab$pD#Fk*z~50=f@HBO-Y87gO0f{<#aGgsVi!IbAEpRA=}E^B4g-D41K{Hzkc z#vu3dSY;gTb8_<2Nb{7I?`iaQc(%~K?Vi);_leOthRgkD&4N1(H0bQG706!35n^}` z*_W~Trs)JdWsL{^9_cZkWmdbzyzbEewkH>9nr; z3H9KO$d1V%!Hq;@a0Pkg-E|`bdfDwirU+xH^2wiI)NzM7kf|1DJ5gbbP>soemrEd| z?DnR|=sm}&TNiZSE}mYifBk@Rie|atwPO-(N4kSm`;?I?Okkl_HFaOZ=V`lo!Rp5T zQJH`q^Kyg_=?wukO~hm}>9$ZFEHsu@@U4r1g(_Ggv}tlNw3V{*^>d!>Ad|x}9gnd- zH_8;TaJ5pxLrkj%hBs2iT`+z>SojQK%9A^$d9^jJA=I}c{QS`W+&HN)==gK>rlwlS zOCr>D1T1&Tr_?~isR#Lp2*xyQFLMw#LX zhUGe#F|TTCEXw^?f8b(F0Hum{Cp$*d*}h8ORLBa5O^-9=bB|gkCs^gW;mIuXo9kj{ z_GwNysiC6HJ-bI%kZY+e&u^~@rT+R{3WGJ{9;qQ->4s71)d>Cc?K z*UBt8BjQle@9Y3(V{HL147%*g`{H0C02bKHtWU_rZ3vdW<$%lEoM|0SGm<`o=z8y? z>_5vZB;FM+_V*E;mn*bT5FT-UzVb0Bbx%}P?H35~Ofj>1(=)5U?y69EVggqob5y~b zqs+oj$^YqY4D8XxN$7XP#1+?)WVH~UC9h+@uCFH)qYc=voC&Aj#{Kb#Jn{atu)%ZD z01&jx-TIQfwn{VoX}D@o@!)k{k29=abXNWAj-RY{Ew=eSub8u6__CR)5}-d6TTc9c z%)NO$)bIB{9HC^VtYuBe7D9xvrmWd_Q^^vE?CXqHgcL%y(a2Ilwvc5MDa0U4wxld$ z-^Mn~%zeGa`?Gw1_x-pZ_wV=D{dn{!gI=%eI@h_*btVH`n!8R6X%#hE73U{kLOgZzL>A^~5AL2>uISpywb^lb{kbvIe^5KBhdY%4P zhUv$Nz^?4tNIgNvaUr+@cZhgdE<4;ybd}NDl>HVspJ!k;!jy~H#zS=Mi{_fEw!#;J zoI!lmS5be)`}x7mo4bvXjri`HOJ^%Epb4FPG0ah_Vyr+%a?LBz<&TYkdh9MekXC2>My10$g zB=7sfQ?IE$57CCHo!PFBg*)pq@?A6E^7keU2v?HdoPFW3dbxD64D|`=Jh;iiZbwv! zMg08|627%$lGV%7>mz?ULj#OzZuQoURWPcf9CY-Me1k;6>us`dj0f^{2J&6fV<*<~ zLGon_%*SmbQ|hn`)q}`iA3yG;y1V?GpF>YL=Z9;cDpR_%)Fh`bf^)$;eCkHc_3ROD zYGgnw57}@=I`5C@lgtxD`EdCD{lA2Ph4X(lU&-g8d}b9-hDaX~EuKiiDOYo^0GpMJ zMv{N|(C3F6J=U)TXr&^bY8T^4G+g1;XHCkcyaSEtG5e{5bKoZwE2-Z?%LW67-$x~* z`#90D5GJQ_WiZx;bDD`g2^sSZ*R(rpY*rRo|K-z6fd(vi3JjS)Kiqa?L%0#-Jzjld zJ3QC7lIG1xd~>7ZG4_jgGibSt#*jYh18k%#bpW}ttX_9{gHWc_SBH{~Nn>OK?U_10 zgf1x&+^|%C7)jPk_Tq)pVr8_?xzlbU;0Wt2s<|Xy=)VsEfY)7u;o=bdm-l?%gBPa;tLyS$N03)9pCr`7~IsR82&O|wAUwV0Omu` zem+ggl#;V7HZdNlax2y?EFKzx!~*X z0oaRp;rW8e6Tfg8S$+1n+`g#9F4G!Y{GMhTwh zuU)ntovC)1n^nME1&)hu8^T!C@0>}KrN?-a=qArID;f80$C4z$VNv(_Q5>VKqsTWWhQQRWUj3O zrH8x`Az#ht#SHW`t75SOy93|bB@r|&ZH1v}20RH{F=ZK~lp-zVUC$w`8 z3%k=1w%2f|vd+8nqj#(9gOI;_&fGn51ic2q#9bDd_7;#&iCkc2I(0&#b89u!r58Ip zW8$ER$;K3QuG>@)3{%g}ogZfD#Xf%@2||c$p|JNxP-q}fMS-&}0zWhOYtao8U?l~A z(}9VO3&y11*8zfXXnT96H?dDW)y36YGLGcra6|mJ1k!Ut)adelK-~rJFnhWIZ*GH6 z*n!@_FZW?`GB0bpWSebd%!^Z&CgVx*RYsxC&k0h5M6s;gu!Q-HF5K*1(4D6R!g>sG zvo${&S+CuK=U&xX-;yKWk2=z}a3SlmYCfOKgSJgZ&Oa}zcfZ7;I;{?NOPSuS5x#< zHxzLeFaWOD)S*y05czkOYZog4%Qh-@2OtQOG0xvPqHxMsI!cuJyA%?zVnsR^G*FK$ zFrv1@F_RbLp`ld)BmZ*F=BC66em2>6Z!aS>X3V8A@SSXJ-2?=2V=Pt3nenx=L9*zz z+J^Y*(ee7=TfeGQ&?b8)*KP>N=J4T~L|3|e_OVz$#k{YL#t)qN zZ~LQgn&C7WnW}NA-yML_p83aUS8~#IFBpNezs^P>HlJZurUzWUbPKdwv;=(MhM>Zi zdx8W-jM-~_B zA^ZQlIPbE49=Lx(3H;;_wz!~LqF5}ymFcw+eH1$e4=~>gkrx7mA8pTF|B)_4K;;6; znuV=xy79@o3P-si(Ve;PLfMT-Xg3PDd}pP^xmQ4(n|!?`Hyc`B`I|uQ0QeaHh+ybC z&O@9eG{lpsNf z;7y>ObgKlj>OyNBhUQc&4V0*cN%{;Oq(mdYeJ)$txsHDdg*Pvy55TQ6ZK6Hz65V@9 zjeBpj{ysi`>E@>Lt>OMunY(3eM;C|dGJ&)$QVLYHvcm)NmA^LW-P5|K)J2UJKu;9N zvi{>DLD2?K!=YEr%+PzIqB6kNE0*Bpj)T5%cuIHhE>h%*PllN18*HXVG{laXl*Q-D ztuz{2y|t>&cNi;XqlRUx8VVpUJZc&~WvKV$c)?mSESE}0q{w$tTdC{N|H(@~oQZjd zkeS$6YC2p|oO-?FrW?|OID31Ece^;f`O^w>$0pBHel=nJVU>o;Z!-eM_o}@{)I4Jl zF^EizF7972m!>8#F<-f;D6W_03m{`F9!^FBTJVMR5h}ciy{c9C7SCDhDsD54a5dV<+N@@BOb8XOQaG7BCX4B7#4NW9-5oAKM(!{xdJ-C( z9v_9=zcg8PRVs?-3B)QGgNUI22Wo@V<;C?+xt5T+__0F9qTFWT)e1{T7%{pDcC$>T zH<9k>>gW0fB^}>!*7^iaNMLv1X96fj1gHQ%KvpJNFo)798JMCMK;`X49^9?V0AEZ) zD>dVS9V~unBN4Q%F;a0yK~%sH?V#*4Tp5nfXQy`UNX-W{B6BRMu_$zb({ef1FX$AH zF7SSxFjxO^OApbgLDBz_BLWsjpgAZ4?YHp{IHzO-VF5;9Jn{ni)gRe>Puh=)K;V1h)A(oRa8>A`ElrL%Zi>LcLm}f5O?&bOE%eY50LBd&ygp~* z4((N=F)K7ofp}~jgGB91672YMnMxdGBY{~tZ?kWcXD!&Mc;|c|^U4jK#M%=yjsT?r zqu89#j{n!76=>Tj&sQ*rQ3TcBbS^5X8Xh|+cxH|n$=!tL?TL_@S#j+8z? ztn_~gJHTE$zaL-N)B(F%-M$+9K1i=-PB_N%{^tkyz zL61BSBG1&#(F!JU@zXJnur|=c?l8k%S@I(g4ejlRg2TKW1xX(uqK0+_lgx((gdFpAUE{4>Cd1|lE z;3k7cJdd2Z(J%;3^gR$WidQ)w-KE``4|Wd%iXg>%-UDbXc;{nG(_0=wTbIKvY))kV z2V=>%wsOsXYE3o_@4YCVgQ1KHX89DWLZo>QURR|DUgfa%+2h}DSA&kiY1ybsJu(1S zt0JxsqU)W1IiL64G3>9k)3L9{OOAL7kHV4oI;Uq`08HcG8VC9TUR@uN=A^|t2?+t>oLvyg5@#|-8iv$&Y zex&4tpif5Dko6z%62b4dJhsMylZK^tWthzH9=ixyE8T15Mp_zqUn)C=lwmmkk===$rJsieV3@+qtWS^CpfSWgfpzk+DO> zb0;-=(L4;IF-&C;H~Z?&SQV`zpxP*?9dI7Bz)RUId&MZbgR)01#DE2LeGj5I10`}- zW=#=D5LbnNb(SE&Pbru)pHp&!dD~&KM*=+buyGkgLVh@NE5a0p+I@7XL8E{EQAnKy zDTJ-;eI@3$kap+5RJlbkST{f{u<3NXy0cmpCX_4u#u40D++Y^gGaLd*w&Mf-<8nIrgAlpb#ENj2w8EOA1^*~6PZK*=MtoNS6P56Znjd3{QF2ebnhhn>-_xQcXpK?BUQHm zjB_eYK@YPY(7gadzQ_7Zc}{A}0}Xf{2s6+r`r0u~KxoxDuG^6MuFB#He%5 z5=4ZBJvQeDj&pNgu5`y1ynlZ#_?YC(A7SdO@s-(Geb zKwTHoJ`5@WlnizzFU1-<7p zNSkHI&_29$H^@f8c?5^%O##m##qdq*bi~^s*8H$b4)C}7bNagvaWA=!wuiz z9DBvXPUq~^*eM398KOv?(mD}&;9J}3{q{3B>&;5uIalMt5>|GEQbtqXLx(u`b z{q@6t^!_z=7&a7KzEBk~XKtF&^ri0Y6})6M!9u3+c}*f$HCNoqAok0j`Zf+=(|}7I zEckm4jojZ^!?*GIJgcdxx%iO7-I2VHDX?)w5n}Cl6=s2JCz@<0Z~`ozcTM@jo=t)OY4oOK@tiDe&j@!_a7bJ8+_3E;tsIn6A>Xo2U(1w=TU{R2x5i0ZH!FrzJ+&c6fBj&e7kSA1gt$=HUgE$Rp6mRTtG=2~U{EQ-4l zFDpI2>QC%JCY&;rK=-o@O$n%pQ%{GTWTy&vD@sk64iCBhOVlvcjAtGSRF-$H1wbEvv(eOA!`%7rHX>5P9Boo6 zx9bA1u0nf*5j>*g=by>8lgO&EkAV)(5A;IR|18|Qk|C6f8X%APV|yRQa*V%?02Lsa zw-$evw@!Qh3Y|S=*D}I*?75cIuQg{E)rmo)AHO2}zq? zHb@_mgiDN%e+?4X?awxGy*ebMBk1l^#jkykU8Hz7qF`HDu^&A!3Tn@rpXc4hZ(-Wn z7bEmmB~N~jMckQvce;CdqJD+XuHy(A{_3%*smQa`)Jv6aUFcgs3fkY)XD$Lfpo`H{^Pr&`U|T)j3k#gL%uo;i;26b~1P_GkFdqHK{}=;jD8}I-TQWsQ zw?&#k77xF=HM#e9%;$bO+tHt~Q3!g0h zGY9G%K|;;#Vd2Vcs6jHr>dY43{e^#fPwyajTUx^L07?CQj@t2a^umTi{RVOs;_;mSa-=jjAsGq?Gg402G1MVh#x3MZe4e59&g|)xy4zr%1d>;1+|t9T z+bY2Qk!ghO6;qK*@xF13i0;K%RU(E&D1JBWQyR~ri(JNB1nCaPE6q-N7z8Kgb1>*` zhM&pwVLy%0rum1S43u~aa@|ZbaFpz}rl2W}EgqYpZaO%sTsq)0HuOuDRr}s;ibQp#dZ~we1<2U?D=ZK19bsQ2=_|?A*T|&n$NB z3LcxKl3ZYlGTA4)+m8zFRCCJ3Q-UtARjQ!SU{9`N)CS&$=3c^BrTelS z#T^y@jNIE=T0bek=T2CV8T@U6%~7BGVG7Il9C+K_d(i^#UI2du4okN;p}UrX;DE#ROY&$HxaM+7Fh4#kO+RK5*H!Ij^_Hw`Z^B!T8v- zd=FED)R%I)aKRyJ89>EfVP6aphlW&}0?du!+TY281L5Fr6*h1(qsaTwGv8l|$SR8M z)|mm8joY5{S*H)@iGi~+(&?LZ!*ikk4ygkf=E2#l7fZ(k7GcPD^<01zghm90oV!5T zA4h@r6@5*w@V{TOCHRc59gFqsXz1a?fQ>Bn*0_pZ; z-_I>TYT-Lvhkj7<>(Q_DzCsVmwFlb$mWhdug1H?$I>%VBCJA**#R6YB1#iR~5;kZ3 z&)>8>J%DWDk8Jdl&Q>Q@wiEW%G-411QA{-aV3f%3)Zv2HOu@6ZUdJ|3w3rVVF2KBq zKX9=qp@G_ysPZYFp4@wmmRFIJP8OPAC3bhkl1+QpADQ8Y#xX_yi6#MC{iXqi?=F63 zSmQiv`3w+)=VI4QuM#f>P6G~su^!W`+DjmAF?|95U?^9s-={Z0nTZK_`+PjZB?>v> zU?%*=;Bx1#^FfQY1fZGU?Ax);S<-}Q1%Y-_+$^&2zV>pB$B%eto(=iz%c^>koO)34 zPM%qw{bi!ktyppkZ4Twp+0&6;#j)WqHUmc zzN!EwrKo?zkC*re0q=(I|Gt9c@Y@_nM&?Um^gjR%C0P8K90f|BhRhZ`TGBGbs}Sd$FhLLA zS|ROIS0?L#G_GLawYsl1@6X}eD+6|-^ZJ{-(o64Psy8s<+cI65O3^b<$e#VjUe~lG z6m(BIy=y!*bT8^G(6M59Dee?Lh=2A#@WwId{m%@+`|D^Pcm79O01Yv0J^@bUt;L@w zjTJqu3s*J9V>&k@#5y*`?TCb`XT4>nhxY_EX@G#J{@(<|a>f@pIlu~@fXI1tOuV|l zd04;3o308lqiPzk+%HD<^Fb*iTN#Teu!|Lrrem){-bx$n`0nx(L8O7A+XAa8F!5iR zbBa1SL+X^kbcwPt_#r1YuO+elfo2Z<1q*y;(!L7QNi^TvYY22kq5CGUSa$+x&Un3$tQ)1Ho1&8?6TtPq?eR%A+)bIDt zwec4jrB$~e$b+9m+l&WdR)f+5`j1Z~Q#b*ekR3tBpVMZ&DnjM{g!COR89*jQ+LeNS z(D8U9gC~Y(QYRtO+>(XRP!ej-CKHDVn?4&^c`^0FyK$o{^j88Fu$igna*gw7I#MMK z1Nr*%a){w(8-vnCiyW>?svI$h`ainvg1HbjqI2&Qq{pk=(0DjJjgCXU%zxk~O=%ji z?X%V06=O*{69Q;E0cFfPpOAkKFtHe82G`{xS7FC2alN)o&eI2|9SktB>uy<8Ck23DS!E6a;)@!w{7yBzqLp+va?C| z)=cu*zw<~JKo;q9bf(rnkZlhzHX!>5@p8R&;$k6MN7M%}S+9!-ZuO(JPk?Cue$$tB zmRP8QMeJO4+hF0S5XhWmOW*1(tOA9^Xa6fR#z6y8Dyx%jtmmM|0oauSLXSeJ+tHpI zHz>;I4JqGKflDmZrO?*Dur3ws9s^itC(d5}Ck41z8~w_CfPLroyp+AX52#p4|EFSQ z#ruct|H0rT(U|wP5rOy}x#Qplj)}Wf1EU-6C^dE>Ex_UUMB^E00JnKfnsR7hq0B(2 z+}C(W=9(N}Jr&u`FtXEFLc+f*bPpGN(m{HYv9~PWW)NtslA`BA9DVeUL5{m(z$fm&xbtS>0Mg-$yqjtc5;^Yt_o`5qvvTRJwMn z^6P)fwE??;@K3e&@WRqKaGrh8Ba5KIGV^Xrkvde|Hv8qI0>w;$+|dzeza64+)D~1x zc?lVFP5=$ z9+!r5>v3VpCIC!3z4je%Bs7W22ZdP%ccT;My46EgqxPvQN+**eoI2mnfVv{KbzUzL zNXtBCFTHyn%v+!15?S!tDJoJu9<(8w`&sS+MTop=A?IF5+L#3Uo1kH5&l-?U5o#t7 zd4N@70bJ?8?Hfm+VQXq;LQW5l@ zb>pMk<}dwRi^6>t6xIQ@L$K0v4+W7MO5eAZiDuDA6OQ*E0x@9{ZYXU(0zjA+%?Ei^ zXg!JCH|QuTe1)1z);Yxw+?VviZ(nLp%s4|A+#9+6GX0RXa28y|)fFG82Ktz4AT)v) zBJ2%#McYJ^0k7v6qV(wiu>kPmvK?*|`3)F=()xsfZIuOWnLW$PQelhJ7N1HJ)%IJ= zR3rZ|DteAYc|KWzJ1hNz{`}^qF19HvpyxQ#^N4|K>M-6FqtfdmwY$6Wi{nd~7r6dn zFp9f6Z=XcU<(50t(o@KN_&;%|M=n(B+4T-l4s`uq9oYJG-TOK+M%rD zEusp$C&}3votvw4?Xq&eStvH253>0j21b;0P1Tj=ti@SIG6=e^yb|E&Hwm2Yf3CP2 znhFFfAPJnQzM0o@p5XsQv-yHBgO>blKd%R;_bDD5z~YBXD&&Yfmha ztnq*IgT3E=k4ofLYW}STfA2d8N_-c~%;z`m0_JrGt7z8eFJ;OjG4Q+JQFSrh#E6{x z_r2~aJ+wxwN#4tQplL`WszHhnrqF_kG zxLh!8yAPFk24$1yL8g@V0^>nBQY`p=EW>>X*GT;Av382r3boS!j;Ea_Y)x0?EjdEH z<2!5h_M`YxYvL`tJk-KQp`(EUKYBUcwc_Fv1m~V4XK9ijTzS}Wac5_@ug6CCi!A@h z+%h;ZRM!4{t&_m!jeU>b{qlrlc*qbe~qAD!bfcp3a)yixyf^xbgUwaCl)*jcF;uKq@`h+&OziKU5fO&-KkR2gRD z>}Kejv`>Nh2(`1w>1)2`Cml)ZdZdo2xp}K1x2s!y>IoT2$6boAM`V7IlP56w{suMM zI?c9QM~)ofAfL)KgwL;RL<#L$aVRlTG-}ZRoF%0fdU+_}x~4NdcPGMvsJWhrzV8o= z4uJ+lN5+7NmmhBZ51m$i!W0>EqxY9l*y`_l&sq+vp)Vor4OG`;1#D|s_<623e;zr^ zNgOJ5F4PjC>o7tt`_J7!VQJf6o)}@56`sy)c&A&>%prXg*nds9Zyf)~CguBt_U> z920Zaa8j&I&?66gmz;w4!ba62CK+V6a%a4y((w0i%9>9=>xmOoF2g>azR&gxihiG@ zpa4g}@v$8v;zogv?r23VJX*isASoc-Qw)>1Oi6)Lv7Xb{G=^A_L#&&-b@6eef|S); zqvh55F$m`v<*-ryI#$`VWwQ@XH{`}}peCYHyf_clSXQ-wJd4Ie&Yla+ctnyhV=mIX zcfa54CP`8ogc9@**+LY0VJ z&6}{kUn>BT*Ud?b(Ni|aeGo+e_u@Uo6p+UI%2L)iYMeejiTG?k=xaQ)RygN)dYhe!V&s^T}F0p6gEn8yfko=(1fNyiTG9jWXQ!eH>26i;qYpIQrW^ z-#5Ut%`PY%J%NqfmyaqNZMrL_Cr!Hlc`rcGHa^V@KYJz*W|i`1GGm{>S2pac9sdHp z+F!K!&Nf9QqZE!2>O3OBLjc6En-T)Vy^x9LK**p#3qmQzP|!Y2LUH{mG0%Upcet4m za*LXEz*xgQe#=oHFc5l24zskE&0M~ITQFAxI-d(T|1Jp(r_~0qxZ`1KQyditjK&*| zD`FCW_qqNs9#J}kiO@Pe-H9@lGCHZ{=ohW0p4L8GCu;BZlO@vi+4m;X7(+C!r2fsF zmY&-@B!f#B>HP2%Zt>0C?d1`Dr|=+7St+_FX|#5tetwdK7aA{2OUp6fO!*kNkt%L+ zT!L$E+FxqVj-<@$rBb!R?qcPQJ%>x|*H5Y8?w*`s*aJpW+i<$i0 zaE`ybXQJA><{ehRT-mlpTy|&*E@MFO9p>xClUK+jvH6|2+XyqaueHt?(O!)ESLfu7 zWnuZv1g^hUGB+Vtwd&cQwCNiS(~>ELkB#RoN>ml|aY#Vgk?4N0z=imb4*J0wv$cfW zosbH}_BqQeO5S*LdtWjk`OgsVrruza$uEXA)bTVaTEGxvH4DS7q3iY|C*ew~!D6y} zhD5BpY`$1W+K*Voax~W;^}v0j4>G&^a~yWFfHTQ&N?W!*T*^>%vnfILF^F^-DUmM4 z`PS4t0YqiRM#o60P=t;=Xs7T)VS8wUqjFB?cFI|&Cm~eU-BYttq!A%4?VZ6FJQM2| zEKe%``J3!lJ}|HNwzsHP#81&x`U%3Vg&L*MN)~fP45AzC`r!S`TycMyBVEs_gBa}Q zXE@vR9pP_Zv7=FO!UPpV7$^gI@L`N!oMGMi-EmDW*?kkMVyl8a*N&cFINP^Ft15)0 zeZ2~BQ4uVS7KYsb6#(lOdq5op(GA>x-npBlzM1^(_sY%kfW%J;DklLZx8<+Z52_wG z%QS#vxy!(zhu`?Zl&QojYe#3+HBz9k-4zHT|AEJ%yntD#Ple?$|0@dswhzdm zgYZYHz($ssgdpx_9UsnWKLtwSKD?VSkqQr$vzA%<%x()`L{|Gr6W^2dLrv9%$R*=d zXCPY0E?WGhO1ItK=M9T6PvF{wTf8kAz-aqkQB9Q^(FvRmH!APpBATWmlY%na|0oCg z4CQ3sYz)6+;kf~|*!rwmoeyd<4SFYl-(_bauBg}FH^Ht0y5@Aq<)QXmK4JZTrzxKd z&p!jJ;qfuZM(|%uTan`=jdf3mc`1_(5CM}z6CT*^$o_X$9G*ObV~ZtO?XvJoFC_Fp z2ZI91mo|D%NTe#cGjuH}uj*v*otuF1VAtX--J;E*Zh^iiNi%#lF$6Xv{}~rULQ#0IZQ*P$nIN!OB|1k zf;xwIkJP*dh~H^u&b@}CK1^m4S$Z&^CqHLLHVAe^ z$MNnHMrDNhlb@bS8{UfrG>nhJnTVdw!<(|bOAB$NAnl%w&ifDZVpCFl9a9PPh~>NL z$fmiUy)<@vsLn%yi-RU9qwR!8htfc+E6LQ4oAXkgc&TiR_7f774m<@r^5J^n_r=+* z_a@!}SY?}!?&U?Z0(=_@%c`y*ueVWlamN+=Pi238`|nE7;!AH|q-cy|8n>Zhc#E8K zm~Lr?nfLt6o-kBrFbC=ni_(gEeN6BRh6rb_Nzjr3@4dL)Uyo!tE9@My$`B>*>MsWJ zsa<+>v(=ivdtSBRmx3qS6?2zk$t-O%8Z^gZ(~77_cA%pcK0@TI9s1#(5wik?RU!$L z(}Dh28U^1dJ_@+Q(OZkdI^GMtalYQ9pkfg`4 zeXymERWD`}W4R8=p)Fb6f7UEy1)3s$b4L@l+#y;`a z%!jFP=7zJ1H!D$vO}n0#{`OdHY=JTAQY=0F5(7t{jET0;8OF?Q1SQp<=6`liF3?o2QL4E|{g-e+xIQ z<)BfEivr|6$s$iZJfK#5_jv!!c6)Q9cQPpnp0d%NCW`@F2gC63&kb2b_|Q2W)T8|Y z$)VOi9}hFlZ*N3OjU;oJJVRj;Q*bYNY&?DzYwz=2L5v^bUlMnXsJ#Sp$NMWG`;%m+ z&1 zzfQc5EovcOUiZ%|$IbdbS%mqoGj1Zv#TqXZ30SRmH(i#6ck<~XIgjkWVWK7zSCF^X zrzEPbeTwM#_N}KaSI(fGEo5m^*<-&pxP55oBiDRT_&HUINuqCDiBnDJYqP3{>Q;|6G-JoNsVf6 z8f>Yh?(aUFQkI%c7OdE>`xO~xf99?mQh&|xkaJ3!D+#zTu1?{Rpm3uOgRgoguhEW< zXYs)*hR75?0^qWj2ye&(@ ztakkbucn~n|8d(qMbCwH9M4ep;dgyq*eMjW*e|-U()a0AE3yVM1SHZPf3`|whLVrH zesAx^xfv9)qdno&o=gIdLPkSF!1h#4erDy{@k!Eu~#Jge!wCj{5fFBQ;d;5 z5$HIyh>o>>B7{x-=P$|y^yEf^VfN`mSJx$n)&uK5v|Yu2P`50*UQ{$Jp!HR^?o|G5 z$gil721RpHIh}C?!V`J5PZh@#&7hm)tLx9I$Xp-##+TvRp?LRrp2asu3;G08@+%jx>vDm4_aMFp4H@y38E`LDn((Xnl zyN0|!JSGxZ-dvKFXk!gSC(y#&_cKRrr`%)UN8az0S=Qb7V6HLNWFd9bvCdPp?i|>x zUZS|PMKi*TSEaMe&5kcAUJC;&6CV*5vsFT^o0?bGyE{0ixu{>fwM35yRZrdMYVeRr zw7F%bkqLyomUP~fbxeA4Iq$EZ%c?-kS~W4`nVwrc@(?K+ff zh4~{IIu?FyufYi82HY~HFv8%l$PtUWifPLW=8WxZfLrKf^g|D{bfib;pV&; zz(HS}TocDr%0u4*Wi89NdQA|DOjgsIZ>?4S_|*u{Rd6@4SQ-iR=={L_Jl1k@jrOO1 zI5i-#Fc@dc$11&p8-5ZJf)H8HAF7fM`j^BK>FhrH=@&M*)ybBArFZJagl)@X$KEb|(pB@BXK6(*sMiOh1)9jIIa2VP8|XZV z^XL0FG_SRRG4TVw^hDn0gmyr?^LW$@NGC;Rd6z8TT1w3S*w)L~9abx0JoUGV10o;v z*}!#se+IW*1?>Sn7VB5~zNP8^d=ngSn0gsX9^5T|^j}ze=(6oliGwM}nTX5o*qr=e zz1`01BA3i*&6m)DO1_R2&?{CB%H(LtKgFUZxV5@Dsq&Q_vEhd?(S|cpHGv- zYx2dd@IztLRLX$8v{Ks)GKWt~Qo|nOhRmzfg5MdYO69+?DC~R0Fzfo+Xo4hb*3NDl zG4!K}%`h#(@byt)NZ&I6!ihmylS4`f-B$IAU_`XPZ^+KCJFRl&5zkKN?t;s8?`^|%^1Tkb9EEX zs0rb|+zq82;S_S#9K~(p+eJ|+tFFl(w$GoRbqt9!~YTCW_sUsLizQ>aED${z>Ix*dY z`Zd3t#BcmO)Ek|qHTqAN6UJ^(-_aX06m6c#T;f6cu2=ORP;Q=UP5Z;f;1iO_k-r|; zr;#Zy?>-9KWGGC%KCIUy(Tm)PmfA&%Zg_rh--wMeAoW+fyT7%of7~7fO7eX;nRx$c zuIW2@6}0I*Dv$^gZNBtihH2Nn>QDeMh||4sTkQ=kNdKV|>P8NV;CZ)POK_%!#)Sa7 zl91D|8`AoC;cKR1(!|h2v})jrrcj`O`z+{;mSruyt33q26Ev?B@sutO&Q1ffaR|;7 z?L}_&WBXruafj~RY&`!HI7%mE&BopV+;xvxj}dvrZ58U@0O0;tv*6yRSWi>%OvQF8y<4*{x+Fdx&04@vvjq$EM;f7AxLr@ zL~0{}cR-8J5c*du`d&6=g@N$fxpWB&46oo8F~oPKt|n;W@X1GB(W3R4c+K%hp)7<*TgUbX6GK`Gt4 z&Hj-0R_^7+SYlgc;5Ns?3Ghebj<7ZA=0y0RsjD?81prB?PBhqh zkAutm(4LU6*KIg{&5m4~V!HpF#tusceeqn6el!K$ig-yQ*HpJVLpw@vWRP@O=Q<=c z^OyO{kJu@T<0NexCvfQ{3Tv?^bKQKb(9tA68{L1E!At=zG47AQ*6^D{PwY!1fzN#j zv)^_u^p|-8DZ%SQPuUGdC*Af_2%&PvchSCtRvu#M6rzlzj?4cS{OTk!c8LBr=xcIkZ4oS;S-QAY3+Njz>+M{lXoE&B5SFTB-7pRC z-4-~W!ycxaI;aAwkDiQ2YToLL+`|1x041<*E?NhDAHb0TlvV!I_w{$2O{tZ}?7n+b z`lt@?xz{ivaT^vODpE`$wJB!K4WYVYGxoA|-{fXgkVq3qa*3DCvhpU+Y6{G1Ro$;s&}zbPfZo(w)1-&m_n2D}_DKck-};PVnq zpRRJ~31X-2Mmn>mvQ56=75%_&57d9)As+bW$fx3A7` z9jD*C`;IUxo)~j8z;Ar6m*l(zG7U4!;lymvrqZx6pv&=tdtGg`!d~5D80Pfv&^6g3 zMy`7ccaC2K8K{(@BXlpFDTQd9TLU1)1TT4hcNvgqvOD=q0b9mb9ZY}d>md;eS_O63 zp}U~A1-5{TPGaonW$?wND9$_BINa=`&@|Z?bj0okeXoEPJ-QSDY`4_kN`J%iUt-=7 zUX?K>@epTPVV&VJKP)b%%=MP_qDK4FJNi=y`{BV$BF;s@--@*UxX znX^f`GwuFXysJ{@d$Daf`lFxvSZ>Oqgmpvur%-@c$KlUrO7zNtYd1R1ho$g?Qae(tX0au4PGtr1$R7($gH_j5Fn;NF6S;|J`!{u znsna1%8mCR-OqS@9N<5cR(SI|52+yUkQWHRG_H1T_n^c>@EHfFo5(sk-KZ{$MsZC} zXRKidSYF7ZD!U2F4Mp$abo*+rS6(%4(Ok3BT%6mWH3}%yE%>bW zq$jj|OVhScsekWF&PN$$^0OD46HSH=e+b0EJKu0MsmDwGArh2LpAEKB=wIcA%_=~N zvs-vfDacqcgp4J0l*m5B1uv}L@M8w&z{-W%P&Q((L-3DM?|Ror5(Hzs?w@CQ!zcAc z!@ac$kK>`6!4K^wRGg&__hv(kb^ zekA-r=V0cN)H@VF`560-r$&fR{4nkidhH{j4r1%V8^}oDLF;g`j(|1(R8v#w96E$F(g7a;&^e_FB_3MKU6mUY`rNm?VM9PKmU=TZdvPw3*(LcX$C1$GD8YQCmbz) zX#|f@tCVhKw^Y2qU16IJPQO)YZ46p&&F#!h_G>LRnRBB* zSKico`zfz1T%rhm}^yQ0+GIXO7?1VOw_dOAMBhcE5_Ys$4gVI!5=DNC)bOIQEK z7>*}zY{RNN+qnv4I)k1rtW<{Ba4uL??Ak5Y+?jX+{97SCOa-?OI8`O~`IO$sc8-ak z%ILtkf5N&x__J$~va-gonmipu!Zhw3N=6$DT_Am8wWPbMb^2UX6 zr@8)>kn#B%)5t>2SJZCjNneI|SIMhOrh~7lOvp70P00_AFx!tVctkSogCYa3E?90g zA-TA>Op82RIs1ASnQ@uQ!hfO;$8i)DQQLn4k6hh~u-lzGYw@J;)n>rGY8eS!4T9#J zso0e4GdSqAFMQERMZmq5+|g5xHsva^^UNdA1O8|8!nG5EIF`X2`rGwK35OTDhFLWQ zH)xL%6fi6vRMbZWf1i2wQi}|t*lAGb@VujD{7k+40rc(QqL~_1cSB5#}SN_7%si*uG-8_|7(m<8K zs6hV0N~u%*)P}4^+UVJd)XB(fF+p6g=PK_#JOeAfaN=y9gWGAG>ANnN&W#%kc7ZsC zmzXW|r^dm**bK!E-gYvERv_~u(awT#50>SAX31&)4G%r}*@^gtyPTQW)O74wE4ga& z0!;9cQ3BG5ee2A(=na_Cv=8%@rN=BEwGmF+BgGc38;K4{^J}x1(>VAJDSCa5oO*>A zz3`eFzw)bYl$XBD75VF&2!81q{4ip+Z*^kx_22`=oBOyc6`sRfZg|p{P2K{4J9Md8 zUH$a&43?LOS>9PnVk6E;kLP_N_loG3h>0L}chg!0sFLm@W<5yZEA`aa$=_WC>765R=#Ap;;(=x%xW zE$?M}jB6)nY+PJ2NO3rzm`=DQzc325TX&z;`>DEJDs+lmr{$K5V zXH=6-*REishzN+n14>Z@L*OyIuAF^#PB#Bq@i8m7B@8|!MHR85-`B;x@_wwn%lpdc#Oi8T0vj2gg~j8zmP|)0tf69= zHv=Y>jjwZmxT&)>_N$+ZqU7V0YU?Gn_-PoOOMz=*;&x5EE;vl!ls+KWZf9K zi+`1THx3P|$W(b^W>fRn_cVu z+&>EeQcN#A2ZcPtseU9vn0o`>hn$(yv&ML3dH!x(N|1aV7nd@2E_ZM6ERo<=s1`F$BX&tnb1MF9z_pP8ChEQ7yNRPNb9C|!VeTED=+xx+oTBGQU#XPDG3xgh9Ek~{ z`uZR-Px>Yv=SwhW^2Th}jED3#Ei8pU#-`>aeM1QJV?sw|)3z7RkqAQ)60rA?2jKSP zK$ESaZ=_L6Mhr+TZz-N*^;#f4EGY@Kl^~xE7ZeZ3Rx$e!$hvuD zGv%>OFvfYsJ7f>Vz>S1Hhwn6;(TLC@3uQHjPCm=l$^AG( z+!*hHxH5wJyG4by+_agp5E307^Tg;&aehcex~#hLC^}_F0=CJsJsUxJ+W1?|wGW-R zxvaZ;PRYj#YB=swOu1ysPOg1CDLsEVsd~5A-||e|`ulXO^YTktvVmpY^7gtMe4k^5 zZm(jn=awee(Azvd zu6TGvKpLU6mvcyHkUbweIaLbg!k*NB-BVG6{@GE-C_Fn5nPJgDY{#Z6c<5#4RVecl zJzh?>930_vMR*PaF;rThxp0kun4FZ(?^Rf-H6Y@zmyT6cWV`XZtxY>rZ!U4-AL zJ??A1trM*vsR1M}Xf#=82<2m6Va zcBA1mgESvCvL)d+!BsV6_q5c6ocoNXgx9xVs)qXQgYmj;tMygxEAP2rRG(rk(+(0U-@LE zX_|9bq>2J-E2>@3=@G-1av{5h?DL<3XFgh7DLXg6^luW33N&=sJx z&MN3lrjg3lE}QJ(FU3~}wg#8d`*Nmu^FvmSF6+`1V{`4}p{4BstJDEAh^50e-Ar;%&S>z&}vy;`xAuS&fd)6hU=&B4FZia_MJ|H*a&M zCUxk`i64)4sS<8;s5&L1x*VA*Mq+v%oH4(oorxMHWFl8{V2ceE>)kIhLR_Vm=B+cP zK*{27~N>w{pqTZoT%4|ehnm!rM>2(AUD!@eZ)jqFgX z`hbS@H7qZNNfUoDEIPJ=@K7>ux05^nh9%m;J|#mh6#f*cpSVs-lCPNJ+YK>pEna6O zmzMnzVu3Ur(ZJB_+s1$plhUWO@#A&0MB_I0#+9GgCy^MYXEf`w$MSX%DAv_nL+kgE zdWox#UZSCzt@c8W!z(74fraFohXsAOC;5blYJ}pzYo3F zz1s$C5QHu26&z6zRH~Mg*IJK|vxw%B`V4I;| z$^2V+{GQ$O6MUd8%A|Df9%AxSH+o7D98%H8Hnp3dET9^g!mI0C>cZndpM7t7QKtss zWKoJxXQCRPld7y7F}zM$3t6|}hAp|BwZERu8jK1lE0n|stR)V3xV}a-rPcBZyq518 z+8&bO7U&jf0^U}6GX%b}5A%?nTk9Oc(sZ(xq#IJ zBjvOT)ocx9)^B)MYopekd}YjaLeZlStw4zhNt*u*#rdf61LLhv9dwai zI!>NAnMwS4dER%RNe$^UmQPHJTfI7CC=I_#zIq$Orbe1Olp?N$K-*>+3@d~g1QZ^tZEn|z- z;w9``?2!syfw$;*W{z|6x-$=FoqoKUUuX}PGV2`TSf$(&+IGC9)4#f^7g+r?UV4e0 ztmr*?flA&(MOq~$=9f+c;%(t#^-c~ovgO9{RuL!$0Qd5Msr2l(6l z;&@uh=g+A+Vqk+NxHt|Zk;a)NRgtD4i;=@EW9sS^x6;xkCZW?y} z{*&E;vn-JTF!w7xbJTZkQ_LvOuc%ey=I+;(|CX|jzmcn4G;lFYkE}60&`(w#fYzBF z1fLM7o2oSt@>na`-~U?HPXV&`Dv}FW=R{WEw)aMt9$M<*tWFkv^zB|~MtjLA?~(^oP*kZDN9of2Fj`>O3th;P!+YP?J`p4hY(2O<277E+naaO4W%K#N%2gb3 z#z48>ixqcXVFTCRl8JJ6&!)N{7<*f$r2l+>iQpBI;baMph=ovfXew8@VQIqL+VQEc z?p@ZaU2MqEGb?6ZRmheV5&abxdhh4!zt@bp@OxtshD7uLjbzb43?tX40W!Utg={JYFV_RehmzEN-O4-4mvc{h* zW?`Lb5(^D^vRpsu>tcX{XIiev0^ zVaz{oh|k)W-+zBE0GiKF&0ZbuKRDY=`nl~`yT{(O7j?3rs=!y)A>^pkXk}aI;tls^ zXkNf)u^9msO|NFs!s&nqn#fo3C15459>Pk4aq|_x==qxCEG{bSkCKqNvPLibOw)g+rgM!?de4?O!$> zOHHjC{8v-5ZU%IO?M=y`F>2i^KkW^cv73mz)luI?r_FDqfltoda$6GEq1e?cOkd)!4XyS6n}do)`~<<9D~FZW^+n3oSwL_DP= z>9VEreRiAOP1)_-HeC|pd%ys`|K~upNdO7gO+P+DQZij&^PH&CdQLohrBlt}^1byE zvEJrB^G}oaRx9|m`;gY5E18kuGLf{J)!*%^0aJb-+&vSVmGl7{-r>zn!b zlCpEADh&oMPdKKol2$5v^K5I^#QKok{1HxcmU919o3!hXKb;}2k5=mNq$@EU=as&4 z#=G=VWun+0BQGGQ=TXY=Pox<$YXFi+f~%(~DN?BNZ&U^<>>_?|<! zR-U+~k`yi?j7R8Zq40D}4$MGKd9Tr5==$7JNGW)w5f(s0Nrh}tawMya9l&~t&U|36nLTbR!EtA zDucqK(SfV|2U0dQRoR(g1%q;Ct%hRblTUX(U%TdFjDBCyHXZua!WFU}WR#^*9jUl^h)y?Hj z-3j-Whe|{A`Y`P(yB^Qz3LZ9pnh|x;9Vy+xE2OM|$)QF%@_w!Z`;Dt%jmOmf;q7R4k2^G$~ z(-6ynZp12V-(DHntvoGhYM3oFqO(>^ZE>zm$e~xTDyhpdrg9U<6v(RLv(!-tnM{0S zYX0e0c4%!epY{5=c5lTW3ImvKWL{=24;|m1t3?mEtg1j>O;9B#6{chkRjBr88SGnC zlZ{5RQ(=Nq$Bv)AdOnC*!V{6RVMml0MNl2CJ_u3Wp7YZ4*h!IcnQ`znv1>o!)-P_a z>OllGG{%)3^v~1#9z>sSR(mk^zKM0$NJ%CHf^;9m-V(#(NR^)~iXJ`NYad<+s7cHL zSgi*@LtAb#L?YJ5N7xu3oEsU3Xc!07&QrU<{ESO2Ba&tHFptmxi$@H8&h@XRD@3ssbxU+^1!`LAmx!S!D zf1MzH;7;~v!91Zd1qEPlZq0YdbR}vnmh=y11^d5sd7RE%uZJa_q1b00|$t}LEW z>OMG;Rn#}Ya^#5Mc|A>yyCv=K(9H|Wood%K=+4|e;ZBfHE@Ft_E{48(sjmBFu#}W9 zDEX0HJTXbRfUh;!RT-@*^^nJeoe}`3J!#d38jLCyp$mBrX!55klayh}zCdKIxiC(F zW`|!a++QOmOi&KPru!iDB9;jg=I(X{bsbZgBx2`Gq~~fmlzWr-1{{}#g-b`h=9fbXCY(1? zg$&bjaYg;>7yl?QGMw1}+mp#_pM19XN_R)TB;)VN*vuZRK=;pL1b1>n`rstmuz#g^vP;ZoQ+L@o5(d6Vwnt2Bm#EH=Y&bb9S$;( zko5W`F~W;y1fzDnkp2*N_5ok}oyS_y!n+bi|vgEMmv;A2v@-L3VNuD0C!$~s#FW&6zYpmXd4G2E~a zmzUfQWk+Iayq{NmX?Ukcv@{3m+LI~UX}DaRxZ!mTH&AEpTI9I!{gv_jyTJnE6t3?x zTH?nMdlLbrA&4-uv}51|vRE=i(*9nxE(6E$mWA*g4LU-OY}dKt7L=Z0)V7}a6!&w? zO$k z3G2eu;W;4n-K^WS4g+%y^$t3cOT5gg*-bZeh?XUHO&7Yd9fxJBabw8%jD8X;h1>8Y z>I+)1^CT513uVM#Dmox-rOB9~ts6jvP1}V=B^@89-UqK2a6xPZMh5AAIIdkF{JtG% z3Hw4C*~!(_HgOB3OWqxJ<{vITfZbZKQAwwrYz<5rTG?;YAL*6h?bL1pu%q{q(wp1Da*?#hW3}xW zAYB^RcL}QtJJ+_WT(6lgh?`6{mZdya-23(`F0HqlTDbTzWa1+zGBi-)E>|}>REMLu zWF=V;w#H%vfOGf9g1~$v%eSL07I-}iGVfd;ZCaYxc>~`5DC$fI(#DRCPzZ;6vO?zC&3`&Wy5klPDVB|fU4X-+ZhD17k}!gT}v z9?4c|vcs>CzkIWBjdd_~Jd2eOX z&fCS8h^%nWw!ZUNqrGR_i_U#HfdsbK#xn%I5dwp}mCy~hJFoIX5k*eIL3hi zZF24lY2{_)?B}kZgww-^kQw*#5 zGfO!j#i4hnYua?=Ttpl9m&}|gto}%)i3O6Dd~jc%eDDO%(NC9l{pmA*&$8pSBGq8+ z%i>81^X8JBsgy1^okxo*2a69zzj#F{q;0Cr`u|Llaby)@kQy}q(zau^6Zh$Z1~R*m z_oxocUQ`2vzNi#u-eReNnOuAni1Ec4_w!RrZE9;67m5Y`G;KEq%Y4+J&tC~f7inM? zw}#ADox0P9u}uvr99t(ytE;PTsYdD7t8eW=*p zyi)2gu)2rOTGNEYXS(;EJ^XPB^=4-rO9GIT<;Oc;>n_`)S;>PxTD5^itqokQ2SaIg z#{qWxLR~l#kvwn*rc;!9Ir*>Yv0!qY+R0)A>FrA;0vlt59q-7Zx;mF`e)Db2Tel5# zBK46#sDM2hcG^z~G4q9B@N_4Fq~qu3g$t(0Q5$+g8LXQ_)6P_-`o;DHcqLBa{HbB3 z?`^&ve4LKax=lSw*@K-LzX`?3z){G}x}Dn^*(yOYqt|m+h4H-~{~8l{a|zhALIyxi zWdc-rxY*mGE8}Zjf4iZC7 zwNy&ke20pOVHJX5%zdrz-Z(^s3bdo={bmxhDIseFk^_)*BkM{PQkDO$HeA5DktX*&d0e}qU zTr79{gs$Iz5PTkR^Y>@Fl&M3o(YTA1bE61=%O*-nRtX?T1P%Nn4o)06=x4x*TL!Ez zqLlL-3gRzdf-UV)TTdZWjZrE2%Mb_%8s;RrU0^&33?^nKnJ_VcsmXP`QRCD=>IMkC z2AWm|JkzA^$a`p3p}<(QA@(dsZsH4LSpUHEDFAzv(Q*`6@&FizO5r3laREF|Tk2r< zJe~uiHvbCXA#fo5hr+C4fGG~K1GAZ)(+Ij1Ny}N`;XlI&20Y)VC(p(30!-j&RH_;` zc%RQ%SLkI9G_N84r$~4>FL=fw=QG=3dX5Po6S@4n=QAt$b|Ko${cnJ#FL6u~ExAD>OBL8yOlg?3zwEO}tosCo{M zL;NuuMBAA&RW6z6_6a3T+{(SB4v2#&M~hvU<^-8V_csPy!TV~tCzg(K5nuT2^#_7k z-vVFCChxBSICucETGmY_`joC~Ao0XAQtZ-zgVW0#Hc{#};6-=V&y!~Xzr2UOc?(6- zHVEcrEDR7cFl&>E7u77n;p#15&mJ`vOcK9{=jiZyZ+c!BED2+lCO6mLVCimN4P24~ z@1sng6M++cyPo2v!pIVM$eUyQ4Tq==?KIdSgV< ze~4ze0XQh|S0gbEyx)82Hd!5P&WSL2fQL7NXZ9Fh+XK{=0SSNtin*d+oKc^Ua+sDu zlmX!27jhI<_)Q8R#pYJYo;Kju+3Jn47dg-aa+2h&BN0Pj*5-Q;qz>VQzX6%yiOln? ztmLQ)TerI`VBRm(#rriO=KyIZPdJc)_d4a8bUsWtlJ;gzjX(Yfqr>60j`%4JI2aB+ zrV>T-U!_Yn1@G-FN+|hr9?w(_vEY%)lqp5IT?X;`fg)emr5(FoVNVI8Tf$!;;CWCx zQ7_H517a!S&d$j41u~gUN{JOxFh-1R7RL(QwD?`?Ei+o->|45cjB%3XMik9dCO+|3 zhI}F(@8*5-huZloSK%EVvOfFw^#BaF-n5qux*S-ReVKX1*?b{A4s6Z;bC-bxD~;xZ zErYtn?2x&1kFsRC3Mr|vkDec18^!HX*0O}5r;vQ75(|IVqPm{G`Wztaogg0m9cdt30P4mOI4=W1-( zp(B?l{yG&zm309^n@W9gS45{YmPs4mwcS_4A5m;ccOlO z#oe(1+cBkOgZD)TfxA$z=A);q|G1TVf8#M(7Q333UqUi(0mqD+>9m_9ld;`_d=Cx@ zv$^M;YSPRsQW4TwbjkH5N=oJpgxz7q;(*DZ!j0Px-FD8GY8{D)1tQ3`E2i|n&N&Mx z=>9#{jc~~z6>&jv!tU=h-&pz81qq7s$*z4xtbo`)vGlXxzyF9e{Ve;J~ z8?D2Do`T0vtl^2W--V3iTyFrtI+3>K&8pm<@F_m1s6*8c7A{WT|0=Zs%Kx_^Z4^?a zY_GSM)>R>G;7XUBcWWb=!)3sy^=wk&d72!gdq}3XIP3DLis|Q=PCN%-P6T+-xNZ zVwb7Ok{0?PxotizJ1c*4mV?(a)e5V8ZmZ@M*^88A20Ztl_ww_NJaZD{@R zQ!9rlb%i4WG)hnNxif1xnsRh&LnK~*U5%O#QoLw4&ipzd8-bxIOWEHHNP5P$&;k0^ z=fg0FE#hEr8yq*!QIRrm?r;*d;7m8~%()$&++K+P!B&jl%803&bw%rOiZ_O897KD@ zU{<}ns&{ z4HoF5)WYW4{)qU@8Y$|>)R?q=Hxhgcoc?1^I^Fph-<~fg{pyz8oM+uy(lId9d(CZ@ zZ*z}NHt=dLNhFtY)IS+i(XLdmngQ{r+8z>;1N&A`HAL^3t)yPu%IHz-N#oO23{p7x zha>l`Yy6_mY)!eW<-7L0lLoyFPI%tFaTbWOH>_ZCY2iH*{}tI{!RIxCOt_{h&rvgC zzqx%`{qkiA*dGgtd-Wv}x1Z#LW;)p-pN%fDWYP#Sl5=zyD$d30`JhGO4qJPR#^zSr z_t&@ooN^Ok)DSKA*z@9h@My;*^M+{;3hG@gwMM>CWR+iW`jVCUhY$N4Zg=2+y=D!G zKz5zURtnQbjBdsp?5}e8?Du}hDoouax_CIe)@J87yLoekF2!<}LuS`|BC;F`o+)I(MU9L;tdvG}?@hP~R zt-}IS0r{-+;2zH#>q?h);F!*X!XxMV9;LrCWgtYeb8jemOd1LzSFW|E#-9@5 zQ*a7_Byf+EKZ!Dw27mEdRur%s!yy%E2@)Vv;_a_=73p{=`Q3Qn_ty-{ za)r@O45fp#$q=D7Lpf$_J>0`yq*-M2;yJWxOwf2;MbN`sy}^Qk4?(`|CUwn!ueg-4 z0t*1xg(k;d+&i=Yt^#%CYjKi>xC1b5ar!|n$G6I-QR@EOp>y3CmLGC+zyI<1!UTyl zQ>Qlst&CigobDGdumYO9oDpcKM31sMZBU&3%m}ydb)Yf9754-Yow%#@Qx8s^l-a?^ zkhT|V7p@PspbibTmzqGH=&r!a_`n}PdH?GVVNam-zZXc>asKQ7{rB?`y1?X!Z*^Eq z2iyGLi~v6S1~fj@vpxZ|-TL!LhlPYsm}h|lJO$Y`Q_Qns@LvH01CafDC+;xRb?6iQ z%MZ>fMtladoekqB3Xx~a&q1Gkn|cer0w`kB*!@|L-XHug^FiF^YHP z>`iq~?-90O9$Op5vehItcCw7!zK;Leq@=Zx(TB6Lbz-IkpL~4&kq_lO`;T!B{T=&? zc0#VQn^)3;OTidB`YT(iPp%!is1tWCE%-_1xqlG6fSWM3OeJ6KU9oc~UR9_DKUU)) z_r7Zn+)LLBg5SkpmwOXLeUa@OaAqHsf25)9OrPmN!=6|hX`Avqu=!xNf*qtV0c%vK39L>_WPS)szWI3n4oT_StQFw<{lg-u7aTv>!MTqjH{Q(2=k7apyV34jAMg-8 zSW#4FMCvxLwC?*zu@y{YIn+uy%m3f6G#K5lm8tRf6j7nSCidj{DH( zId?$ikX*s({IxaLqt%VD&Bpu#Ek_tNWO5Wp@j_7dWJ3QNObeVe_e#=->0SdBq~Iqn zx6y7R58RVCqhGy}%@5s5gDLw!&M?0IM{TLzVm{rKCTCG3m=$Q*xii-r@c7Q_x!N(p zUe1)-TU8BobMGU>PFsMHL$N>RIUVFU{L>zUM702eK&z8@j=cR6?}o6Cbf1}+i)G{? z658Q@^v|>6bNkVW?bXkE|8LpzzjQqde*}p08|snqIp=BN2UvSX?RX!y(A>4}0c6gZwLF{=<|1H=gVx`Kkh@7e2X~ Q9s&RKw2U>&ZrzXkAAqv#-T(jq literal 0 HcmV?d00001