jerin commited on
Commit
2bc71f8
1 Parent(s): 6b33198

add training file and readme.txt

Browse files
RTU_LSTM_training_notebook/lstm_training.ipynb ADDED
@@ -0,0 +1,340 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "code",
5
+ "execution_count": null,
6
+ "metadata": {},
7
+ "outputs": [],
8
+ "source": [
9
+ "\"\"\"\n",
10
+ "Import necessary libraries and modules.\n",
11
+ "\"\"\"\n",
12
+ "import pandas as pd \n",
13
+ "from datetime import date\n",
14
+ "import matplotlib.pyplot as plt\n",
15
+ "import numpy as np\n",
16
+ "import pandas as pd\n",
17
+ "from keras.models import Sequential\n",
18
+ "from keras.layers import LSTM, Dense\n",
19
+ "from sklearn.model_selection import train_test_split\n",
20
+ "from sklearn.preprocessing import MinMaxScaler,StandardScaler\n",
21
+ "from keras.callbacks import ModelCheckpoint\n",
22
+ "from sklearn.cluster import KMeans\n",
23
+ "from sklearn.decomposition import PCA\n",
24
+ "from tensorflow.keras.models import load_model\n"
25
+ ]
26
+ },
27
+ {
28
+ "cell_type": "code",
29
+ "execution_count": null,
30
+ "metadata": {},
31
+ "outputs": [],
32
+ "source": [
33
+ "\"\"\"\n",
34
+ "Load the dataset\n",
35
+ "\"\"\"\n",
36
+ "\n",
37
+ "merged = pd.read_csv('long_merge.csv')\n",
38
+ "\n",
39
+ "zone = \"47\"\n",
40
+ "\n",
41
+ "if zone in [\"36\", \"37\", \"38\", \"39\", \"40\", \"41\", \"42\", \"64\", \"65\", \"66\", \"67\", \"68\", \"69\", \"70\"]:\n",
42
+ " rtu = \"rtu_001\"\n",
43
+ " wing = \"hvac_N\"\n",
44
+ "elif zone in [\"18\", \"25\", \"26\", \"45\", \"48\", \"55\", \"56\", \"61\"]:\n",
45
+ " rtu = \"rtu_003\"\n",
46
+ " wing = \"hvac_S\"\n",
47
+ "elif zone in [\"16\", \"17\", \"21\", \"22\", \"23\", \"24\", \"46\", \"47\", \"51\", \"52\", \"53\", \"54\"]:\n",
48
+ " rtu = \"rtu_004\"\n",
49
+ " wing = \"hvac_S\"\n",
50
+ "else:\n",
51
+ " rtu = \"rtu_002\"\n",
52
+ " wing = \"hvac_N\"\n",
53
+ "sorted = merged[[\"date\"]+[col for col in merged.columns if zone in col or rtu in col or wing in col]+[\"hp_hws_temp\", \"aru_001_cwr_temp\" , \"aru_001_cws_fr_gpm\" ,\"aru_001_cws_temp\",\"aru_001_hwr_temp\" ,\"aru_001_hws_fr_gpm\" ,\"aru_001_hws_temp\"]]\n",
54
+ "sorted"
55
+ ]
56
+ },
57
+ {
58
+ "cell_type": "code",
59
+ "execution_count": null,
60
+ "metadata": {},
61
+ "outputs": [],
62
+ "source": [
63
+ "\"\"\"\n",
64
+ "Load the dataset\n",
65
+ "\"\"\"\n",
66
+ "\n",
67
+ "rtu = [\"rtu_003\",\"rtu_004\",\"rtu_001\",\"rtu_002\"]\n",
68
+ "env = [\"air_temp_set_1\",\"air_temp_set_2\",\"dew_point_temperature_set_1d\",\"relative_humidity_set_1\",\"solar_radiation_set_1\"]\n",
69
+ "energy_data = merged[[\"date\",\"hp_hws_temp\"]+[col for col in merged.columns if \n",
70
+ " any(sub in col for sub in rtu)]+env]\n",
71
+ "df_filtered = energy_data[[col for col in energy_data.columns if 'Unnamed' not in col]]\n",
72
+ "df_filtered = df_filtered[[col for col in df_filtered.columns if 'co2' not in col]]\n",
73
+ "df_filtered = df_filtered[[col for col in df_filtered.columns if 'templogger' not in col]]\n",
74
+ "df_filtered['date'] = pd.to_datetime(df_filtered['date'], format = \"%Y-%m-%d %H:%M:%S\")\n",
75
+ "df_filtered = df_filtered[ (df_filtered.date.dt.date >date(2018, 5, 1)) & (df_filtered.date.dt.date< date(2020, 5, 1))] #(2018, 5, 1)\n",
76
+ "if df_filtered.isna().any().any():\n",
77
+ " print(\"There are NA values\",df_filtered.isna().sum().tolist())"
78
+ ]
79
+ },
80
+ {
81
+ "cell_type": "code",
82
+ "execution_count": null,
83
+ "metadata": {},
84
+ "outputs": [],
85
+ "source": [
86
+ "\"\"\"\n",
87
+ "Extract the relevant parameters\n",
88
+ "\"\"\"\n",
89
+ "\n",
90
+ "\n",
91
+ "df_filtered = df_filtered.loc[:,['date','hp_hws_temp',\n",
92
+ " 'rtu_003_sa_temp',\n",
93
+ " 'rtu_003_oadmpr_pct',\n",
94
+ " 'rtu_003_ra_temp',\n",
95
+ " 'rtu_003_oa_temp',\n",
96
+ " 'rtu_003_ma_temp',\n",
97
+ " 'rtu_003_sf_vfd_spd_fbk_tn',\n",
98
+ " 'rtu_003_rf_vfd_spd_fbk_tn',\n",
99
+ " 'rtu_004_sa_temp',\n",
100
+ " 'rtu_004_oadmpr_pct',\n",
101
+ " 'rtu_004_ra_temp',\n",
102
+ " 'rtu_004_oa_temp',\n",
103
+ " 'rtu_004_ma_temp',\n",
104
+ " 'rtu_004_sf_vfd_spd_fbk_tn',\n",
105
+ " 'rtu_004_rf_vfd_spd_fbk_tn',\n",
106
+ " 'rtu_003_sat_sp_tn',\n",
107
+ " 'rtu_004_sat_sp_tn',\n",
108
+ " \n",
109
+ "# 'rtu_001_sa_temp',\n",
110
+ "# 'rtu_001_oadmpr_pct',\n",
111
+ "# 'rtu_001_ra_temp',\n",
112
+ "# 'rtu_001_oa_temp',\n",
113
+ "# 'rtu_001_ma_temp',\n",
114
+ "# 'rtu_001_sf_vfd_spd_fbk_tn',\n",
115
+ "# 'rtu_001_rf_vfd_spd_fbk_tn',\n",
116
+ "# 'rtu_002_sa_temp',\n",
117
+ "# 'rtu_002_oadmpr_pct',\n",
118
+ "# 'rtu_002_ra_temp',\n",
119
+ "# 'rtu_002_oa_temp',\n",
120
+ "# 'rtu_002_ma_temp',\n",
121
+ "# 'rtu_002_sf_vfd_spd_fbk_tn',\n",
122
+ "# 'rtu_002_rf_vfd_spd_fbk_tn',\n",
123
+ "# 'rtu_001_sat_sp_tn',\n",
124
+ "# 'rtu_002_sat_sp_tn',\n",
125
+ "\n",
126
+ " 'air_temp_set_1',\n",
127
+ " 'air_temp_set_2',\n",
128
+ " 'dew_point_temperature_set_1d',\n",
129
+ " 'relative_humidity_set_1',\n",
130
+ " 'solar_radiation_set_1']]"
131
+ ]
132
+ },
133
+ {
134
+ "cell_type": "code",
135
+ "execution_count": null,
136
+ "metadata": {},
137
+ "outputs": [],
138
+ "source": [
139
+ "\"\"\"\n",
140
+ "splitting into training and testing sets.\n",
141
+ "\"\"\"\n",
142
+ "\n",
143
+ "df_filtered = df_filtered.dropna()\n",
144
+ "\n",
145
+ "testdataset_df = df_filtered[(df_filtered.date.dt.date >date(2019, 7, 21))]\n",
146
+ "\n",
147
+ "traindataset_df = df_filtered[(df_filtered.date.dt.date <date(2019, 7, 21))]\n",
148
+ "\n",
149
+ "testdataset = testdataset_df.drop(columns=[\"date\"]).rolling(window=30,min_periods=1).mean().values\n",
150
+ "\n",
151
+ "traindataset = traindataset_df.drop(columns=[\"date\"]).rolling(window=30,min_periods=1).mean().values\n",
152
+ "\n",
153
+ "columns_with_na_train = traindataset_df.columns[traindataset_df.isna().any()].tolist()\n",
154
+ "columns_with_na_test = testdataset_df.columns[testdataset_df.isna().any()].tolist()\n",
155
+ "print(columns_with_na_train)\n",
156
+ "print(columns_with_na_test)"
157
+ ]
158
+ },
159
+ {
160
+ "cell_type": "code",
161
+ "execution_count": null,
162
+ "metadata": {},
163
+ "outputs": [],
164
+ "source": [
165
+ "\n",
166
+ "\"\"\"\n",
167
+ "Preprocess the data by scaling\n",
168
+ "\"\"\"\n",
169
+ "\n",
170
+ "traindataset = traindataset.astype('float32')\n",
171
+ "testdataset = testdataset.astype('float32')\n",
172
+ "\n",
173
+ "scaler = StandardScaler()\n",
174
+ "traindataset = scaler.fit_transform(traindataset)\n",
175
+ "testdataset = scaler.transform(testdataset)"
176
+ ]
177
+ },
178
+ {
179
+ "cell_type": "code",
180
+ "execution_count": null,
181
+ "metadata": {},
182
+ "outputs": [],
183
+ "source": [
184
+ "\"\"\"\n",
185
+ "Training the model\n",
186
+ "\"\"\"\n",
187
+ "\n",
188
+ "\n",
189
+ "train,test = traindataset,testdataset\n",
190
+ "\n",
191
+ "def create_dataset(dataset,time_step):\n",
192
+ " x = [[] for _ in range(22)] \n",
193
+ " Y = []\n",
194
+ " for i in range(len(dataset) - time_step - 1):\n",
195
+ " for j in range(22):\n",
196
+ " x[j].append(dataset[i:(i + time_step), j])\n",
197
+ " Y.append([dataset[i + time_step, 0],dataset[i + time_step, 1],dataset[i + time_step, 2],dataset[i + time_step, 3],\n",
198
+ " dataset[i + time_step, 4],dataset[i + time_step, 5],\n",
199
+ " dataset[i + time_step, 6],dataset[i + time_step, 7],\n",
200
+ " dataset[i + time_step, 8],dataset[i + time_step, 9],dataset[i + time_step, 10],\n",
201
+ " dataset[i + time_step, 11],dataset[i + time_step, 12],\n",
202
+ " dataset[i + time_step, 13],dataset[i + time_step, 14]])\n",
203
+ " x= [np.array(feature_list) for feature_list in x]\n",
204
+ " Y = np.reshape(Y,(len(Y),15))\n",
205
+ " return np.stack(x,axis=2),Y\n",
206
+ "\n",
207
+ "time_step = 30\n",
208
+ "X_train, y_train = create_dataset(train, time_step)\n",
209
+ "X_test, y_test = create_dataset(test, time_step)\n",
210
+ "\n",
211
+ "\n",
212
+ "model = Sequential()\n",
213
+ "model.add(LSTM(units=50, return_sequences=True, input_shape=(X_train.shape[1], X_train.shape[2])))\n",
214
+ "model.add(LSTM(units=50, return_sequences=True))\n",
215
+ "model.add(LSTM(units=30))\n",
216
+ "model.add(Dense(units=15))\n",
217
+ "\n",
218
+ "model.compile(optimizer='adam', loss='mean_squared_error')\n",
219
+ "\n",
220
+ "checkpoint_path = \"lstm_2rtu_smooth_04.keras\" # \"lstm_2rtu_smooth_03.keras\"--> 3,4 rtu\n",
221
+ "checkpoint_callback = ModelCheckpoint(filepath=checkpoint_path, monitor='val_loss', verbose=1, save_best_only=True, mode='min')\n",
222
+ "model.fit(X_train, y_train, validation_data=(X_test, y_test), epochs=5, batch_size=64, verbose=1, callbacks=[checkpoint_callback])"
223
+ ]
224
+ },
225
+ {
226
+ "cell_type": "code",
227
+ "execution_count": null,
228
+ "metadata": {},
229
+ "outputs": [],
230
+ "source": [
231
+ "\"\"\"\n",
232
+ "load the model for prediction\n",
233
+ "\"\"\"\n",
234
+ "\n",
235
+ "checkpoint_path = \"lstm_2rtu_smooth_03.keras\"\n",
236
+ "model = load_model(checkpoint_path)\n",
237
+ "test_predict1 = model.predict(X_test)\n",
238
+ "train_predict1 = model.predict(X_train)"
239
+ ]
240
+ },
241
+ {
242
+ "cell_type": "code",
243
+ "execution_count": null,
244
+ "metadata": {},
245
+ "outputs": [],
246
+ "source": [
247
+ "%matplotlib qt\n",
248
+ "var = 6\n",
249
+ "plt.plot(testdataset_df['date'][31:], y_test[:,var], label='Original Testing Data')\n",
250
+ "plt.plot(testdataset_df['date'][31:] ,test_predict1[:,var], label='Predicted Data')\n",
251
+ "\n",
252
+ "# anomalies = np.where(abs(test_predict1[:,var] - y_test[:,var]) > 0.38)\n",
253
+ "# plt.scatter(anomalies,test_predict1[anomalies,var], color='black',marker =\"o\",s=100 )\n",
254
+ "\n",
255
+ "\n",
256
+ "plt.title('Testing Data - Predicted vs Actual')\n",
257
+ "plt.xlabel('Time')\n",
258
+ "plt.ylabel('Value')\n",
259
+ "plt.legend()\n",
260
+ "plt.show()"
261
+ ]
262
+ },
263
+ {
264
+ "cell_type": "code",
265
+ "execution_count": null,
266
+ "metadata": {},
267
+ "outputs": [],
268
+ "source": [
269
+ "\"\"\"\n",
270
+ " Perform clustering and dimensionality reduction using KMeans and PCA\n",
271
+ "\"\"\"\n",
272
+ "\n",
273
+ "np.random.seed(0)\n",
274
+ "X1 = train_predict1[:,1:8] - y_train[:,1:8]\n",
275
+ "X2 = train_predict1[:,8:15] - y_train[:,8:15]\n",
276
+ "\n",
277
+ "\n",
278
+ "k = 1\n",
279
+ "\n",
280
+ "pca1 = PCA(n_components=2)\n",
281
+ "X1 = pca1.fit_transform(X1)\n",
282
+ "pca2 = PCA(n_components=2)\n",
283
+ "X2 = pca2.fit_transform(X2)\n",
284
+ "\n",
285
+ "kmeans1 = KMeans(n_clusters=k, random_state=10) \n",
286
+ "kmeans1.fit(X1)\n",
287
+ "kmeans2 = KMeans(n_clusters=k, random_state=10) \n",
288
+ "kmeans2.fit(X2)\n",
289
+ "\n",
290
+ "\n",
291
+ "labels = kmeans1.labels_\n",
292
+ "plt.scatter(X1[:, 0], X1[:, 1],c=labels, cmap='rainbow')\n",
293
+ "plt.scatter(kmeans1.cluster_centers_[:, 0], kmeans1.cluster_centers_[:, 1], marker='x', c='red', s=200, linewidths=2)\n",
294
+ "plt.title('KMeans Clustering')\n",
295
+ "plt.xlabel('Feature 1')\n",
296
+ "plt.ylabel('Feature 2')\n",
297
+ "plt.show()"
298
+ ]
299
+ },
300
+ {
301
+ "cell_type": "code",
302
+ "execution_count": null,
303
+ "metadata": {},
304
+ "outputs": [],
305
+ "source": [
306
+ "\"\"\"\n",
307
+ " Plot the faults after windowing\n",
308
+ "\"\"\"\n",
309
+ "\n",
310
+ "%matplotlib qt\n",
311
+ "\n",
312
+ "distance1 = np.linalg.norm((pca1.transform(test_predict1[:,1:8]-y_test[:,1:8]))-kmeans1.cluster_centers_[0], ord=2, axis = 1)\n",
313
+ "distance2 = np.linalg.norm((pca2.transform(test_predict1[:,8:15]-y_test[:,8:15]))-kmeans2.cluster_centers_[0], ord=2, axis = 1)\n",
314
+ "\n",
315
+ "plt.plot(testdataset_df['date'][31:] ,y_test[:,7],label='Return air fan speed')\n",
316
+ "plt.plot(testdataset_df['date'][31:] ,abs(distance1)>1,linewidth=2.5,label='Faults')\n",
317
+ "plt.plot(testdataset_df['date'][31:] ,pd.Series((distance1)>3.5).rolling(window=60,min_periods=1).mean()==1,linewidth=2.5,label='Faults')\n",
318
+ "\n",
319
+ "plt.title('RTU-2 Faults')\n",
320
+ "plt.xlabel('Time')\n",
321
+ "plt.ylabel('Value')\n",
322
+ "plt.legend()\n",
323
+ "plt.show()\n"
324
+ ]
325
+ }
326
+ ],
327
+ "metadata": {
328
+ "kernelspec": {
329
+ "display_name": "smartbuilding",
330
+ "language": "python",
331
+ "name": "python3"
332
+ },
333
+ "language_info": {
334
+ "name": "python",
335
+ "version": "3.11.8"
336
+ }
337
+ },
338
+ "nbformat": 4,
339
+ "nbformat_minor": 2
340
+ }
mqtt_client.py CHANGED
@@ -20,7 +20,7 @@ def on_message(client, userdata, msg):
20
  data_list.append(data)
21
 
22
 
23
- client = mqtt.Client()
24
  client.on_connect = on_connect
25
  client.on_message = on_message
26
 
 
20
  data_list.append(data)
21
 
22
 
23
+ client = mqtt.Client(mqtt.CallbackAPIVersion.VERSION1)
24
  client.on_connect = on_connect
25
  client.on_message = on_message
26
 
mqttpublisher.ipynb DELETED
@@ -1,2750 +0,0 @@
1
- {
2
- "cells": [
3
- {
4
- "cell_type": "code",
5
- "execution_count": 5,
6
- "metadata": {},
7
- "outputs": [],
8
- "source": [
9
- "import paho.mqtt.client as mqtt\n",
10
- "import time\n",
11
- "import random\n",
12
- "import pandas as pd\n",
13
- "import json\n",
14
- "\n",
15
- "clientId = \"smartbuilding\"\n",
16
- "broker_address = \"localhost\"\n",
17
- "broker_port = 1883\n",
18
- "\n",
19
- "df = pd.read_csv(\"data/demo_data.csv\")[30000:]\n"
20
- ]
21
- },
22
- {
23
- "cell_type": "code",
24
- "execution_count": 6,
25
- "metadata": {},
26
- "outputs": [
27
- {
28
- "data": {
29
- "text/plain": [
30
- "0 2020-03-31 00:00:00\n",
31
- "1 2020-03-31 00:00:00\n",
32
- "2 2020-03-31 00:01:00\n",
33
- "3 2020-03-31 00:01:00\n",
34
- "4 2020-03-31 00:02:00\n",
35
- " ... \n",
36
- "845141 2020-12-30 23:58:00\n",
37
- "845142 2020-12-30 23:59:00\n",
38
- "845143 2020-12-30 23:59:00\n",
39
- "845144 2020-12-31 00:00:00\n",
40
- "845145 2020-12-31 00:00:00\n",
41
- "Name: date, Length: 845146, dtype: object"
42
- ]
43
- },
44
- "execution_count": 6,
45
- "metadata": {},
46
- "output_type": "execute_result"
47
- }
48
- ],
49
- "source": [
50
- "df['date']"
51
- ]
52
- },
53
- {
54
- "cell_type": "code",
55
- "execution_count": 7,
56
- "metadata": {},
57
- "outputs": [
58
- {
59
- "name": "stderr",
60
- "output_type": "stream",
61
- "text": [
62
- "C:\\Users\\arbal\\AppData\\Local\\Temp\\ipykernel_13892\\342713793.py:1: DeprecationWarning: Callback API version 1 is deprecated, update to latest version\n",
63
- " client = mqtt.Client(mqtt.CallbackAPIVersion.VERSION1, clientId)\n"
64
- ]
65
- },
66
- {
67
- "name": "stdout",
68
- "output_type": "stream",
69
- "text": [
70
- "published!\n",
71
- "published!\n",
72
- "published!\n",
73
- "published!\n",
74
- "published!\n",
75
- "published!\n",
76
- "published!\n",
77
- "published!\n",
78
- "published!\n",
79
- "published!\n",
80
- "published!\n",
81
- "published!\n",
82
- "published!\n",
83
- "published!\n",
84
- "published!\n",
85
- "published!\n",
86
- "published!\n",
87
- "published!\n",
88
- "published!\n",
89
- "published!\n",
90
- "published!\n",
91
- "published!\n",
92
- "published!\n",
93
- "published!\n",
94
- "published!\n",
95
- "published!\n",
96
- "published!\n",
97
- "published!\n",
98
- "published!\n",
99
- "published!\n",
100
- "published!\n",
101
- "published!\n",
102
- "published!\n",
103
- "published!\n",
104
- "published!\n",
105
- "published!\n",
106
- "published!\n",
107
- "published!\n",
108
- "published!\n",
109
- "published!\n",
110
- "published!\n",
111
- "published!\n",
112
- "published!\n",
113
- "published!\n",
114
- "published!\n",
115
- "published!\n",
116
- "published!\n",
117
- "published!\n",
118
- "published!\n",
119
- "published!\n",
120
- "published!\n",
121
- "published!\n",
122
- "published!\n",
123
- "published!\n",
124
- "published!\n",
125
- "published!\n",
126
- "published!\n",
127
- "published!\n",
128
- "published!\n",
129
- "published!\n",
130
- "published!\n",
131
- "published!\n",
132
- "published!\n",
133
- "published!\n",
134
- "published!\n",
135
- "published!\n",
136
- "published!\n",
137
- "published!\n",
138
- "published!\n",
139
- "published!\n",
140
- "published!\n",
141
- "published!\n",
142
- "published!\n",
143
- "published!\n",
144
- "published!\n",
145
- "published!\n",
146
- "published!\n",
147
- "published!\n",
148
- "published!\n",
149
- "published!\n",
150
- "published!\n",
151
- "published!\n",
152
- "published!\n",
153
- "published!\n",
154
- "published!\n",
155
- "published!\n",
156
- "published!\n",
157
- "published!\n",
158
- "published!\n",
159
- "published!\n",
160
- "published!\n",
161
- "published!\n",
162
- "published!\n",
163
- "published!\n",
164
- "published!\n",
165
- "published!\n",
166
- "published!\n",
167
- "published!\n",
168
- "published!\n",
169
- "published!\n",
170
- "published!\n",
171
- "published!\n",
172
- "published!\n",
173
- "published!\n",
174
- "published!\n",
175
- "published!\n",
176
- "published!\n",
177
- "published!\n",
178
- "published!\n",
179
- "published!\n",
180
- "published!\n",
181
- "published!\n",
182
- "published!\n",
183
- "published!\n",
184
- "published!\n",
185
- "published!\n",
186
- "published!\n",
187
- "published!\n",
188
- "published!\n",
189
- "published!\n",
190
- "published!\n",
191
- "published!\n",
192
- "published!\n",
193
- "published!\n",
194
- "published!\n",
195
- "published!\n",
196
- "published!\n",
197
- "published!\n",
198
- "published!\n",
199
- "published!\n",
200
- "published!\n",
201
- "published!\n",
202
- "published!\n",
203
- "published!\n",
204
- "published!\n",
205
- "published!\n",
206
- "published!\n",
207
- "published!\n",
208
- "published!\n",
209
- "published!\n",
210
- "published!\n",
211
- "published!\n",
212
- "published!\n",
213
- "published!\n",
214
- "published!\n",
215
- "published!\n",
216
- "published!\n",
217
- "published!\n",
218
- "published!\n",
219
- "published!\n",
220
- "published!\n",
221
- "published!\n",
222
- "published!\n",
223
- "published!\n",
224
- "published!\n",
225
- "published!\n",
226
- "published!\n",
227
- "published!\n",
228
- "published!\n",
229
- "published!\n",
230
- "published!\n",
231
- "published!\n",
232
- "published!\n",
233
- "published!\n",
234
- "published!\n",
235
- "published!\n",
236
- "published!\n",
237
- "published!\n",
238
- "published!\n",
239
- "published!\n",
240
- "published!\n",
241
- "published!\n",
242
- "published!\n",
243
- "published!\n",
244
- "published!\n",
245
- "published!\n",
246
- "published!\n",
247
- "published!\n",
248
- "published!\n",
249
- "published!\n",
250
- "published!\n",
251
- "published!\n",
252
- "published!\n",
253
- "published!\n",
254
- "published!\n",
255
- "published!\n",
256
- "published!\n",
257
- "published!\n",
258
- "published!\n",
259
- "published!\n",
260
- "published!\n",
261
- "published!\n",
262
- "published!\n",
263
- "published!\n",
264
- "published!\n",
265
- "published!\n",
266
- "published!\n",
267
- "published!\n",
268
- "published!\n",
269
- "published!\n",
270
- "published!\n",
271
- "published!\n",
272
- "published!\n",
273
- "published!\n",
274
- "published!\n",
275
- "published!\n",
276
- "published!\n",
277
- "published!\n",
278
- "published!\n",
279
- "published!\n",
280
- "published!\n",
281
- "published!\n",
282
- "published!\n",
283
- "published!\n",
284
- "published!\n",
285
- "published!\n",
286
- "published!\n",
287
- "published!\n",
288
- "published!\n",
289
- "published!\n",
290
- "published!\n",
291
- "published!\n",
292
- "published!\n",
293
- "published!\n",
294
- "published!\n",
295
- "published!\n",
296
- "published!\n",
297
- "published!\n",
298
- "published!\n",
299
- "published!\n",
300
- "published!\n",
301
- "published!\n",
302
- "published!\n",
303
- "published!\n",
304
- "published!\n",
305
- "published!\n",
306
- "published!\n",
307
- "published!\n",
308
- "published!\n",
309
- "published!\n",
310
- "published!\n",
311
- "published!\n",
312
- "published!\n",
313
- "published!\n",
314
- "published!\n",
315
- "published!\n",
316
- "published!\n",
317
- "published!\n",
318
- "published!\n",
319
- "published!\n",
320
- "published!\n",
321
- "published!\n",
322
- "published!\n",
323
- "published!\n",
324
- "published!\n",
325
- "published!\n",
326
- "published!\n",
327
- "published!\n",
328
- "published!\n",
329
- "published!\n",
330
- "published!\n",
331
- "published!\n",
332
- "published!\n",
333
- "published!\n",
334
- "published!\n",
335
- "published!\n",
336
- "published!\n",
337
- "published!\n",
338
- "published!\n",
339
- "published!\n",
340
- "published!\n",
341
- "published!\n",
342
- "published!\n",
343
- "published!\n",
344
- "published!\n",
345
- "published!\n",
346
- "published!\n",
347
- "published!\n",
348
- "published!\n",
349
- "published!\n",
350
- "published!\n",
351
- "published!\n",
352
- "published!\n",
353
- "published!\n",
354
- "published!\n",
355
- "published!\n",
356
- "published!\n",
357
- "published!\n",
358
- "published!\n",
359
- "published!\n",
360
- "published!\n",
361
- "published!\n",
362
- "published!\n",
363
- "published!\n",
364
- "published!\n",
365
- "published!\n",
366
- "published!\n",
367
- "published!\n",
368
- "published!\n",
369
- "published!\n",
370
- "published!\n",
371
- "published!\n",
372
- "published!\n",
373
- "published!\n",
374
- "published!\n",
375
- "published!\n",
376
- "published!\n",
377
- "published!\n",
378
- "published!\n",
379
- "published!\n",
380
- "published!\n",
381
- "published!\n",
382
- "published!\n",
383
- "published!\n",
384
- "published!\n",
385
- "published!\n",
386
- "published!\n",
387
- "published!\n",
388
- "published!\n",
389
- "published!\n",
390
- "published!\n",
391
- "published!\n",
392
- "published!\n",
393
- "published!\n",
394
- "published!\n",
395
- "published!\n",
396
- "published!\n",
397
- "published!\n",
398
- "published!\n",
399
- "published!\n",
400
- "published!\n",
401
- "published!\n",
402
- "published!\n",
403
- "published!\n",
404
- "published!\n",
405
- "published!\n",
406
- "published!\n",
407
- "published!\n",
408
- "published!\n",
409
- "published!\n",
410
- "published!\n",
411
- "published!\n",
412
- "published!\n",
413
- "published!\n",
414
- "published!\n",
415
- "published!\n",
416
- "published!\n",
417
- "published!\n",
418
- "published!\n",
419
- "published!\n",
420
- "published!\n",
421
- "published!\n",
422
- "published!\n",
423
- "published!\n",
424
- "published!\n",
425
- "published!\n",
426
- "published!\n",
427
- "published!\n",
428
- "published!\n",
429
- "published!\n",
430
- "published!\n",
431
- "published!\n",
432
- "published!\n",
433
- "published!\n",
434
- "published!\n",
435
- "published!\n",
436
- "published!\n",
437
- "published!\n",
438
- "published!\n",
439
- "published!\n",
440
- "published!\n",
441
- "published!\n",
442
- "published!\n",
443
- "published!\n",
444
- "published!\n",
445
- "published!\n",
446
- "published!\n",
447
- "published!\n",
448
- "published!\n",
449
- "published!\n",
450
- "published!\n",
451
- "published!\n",
452
- "published!\n",
453
- "published!\n",
454
- "published!\n",
455
- "published!\n",
456
- "published!\n",
457
- "published!\n",
458
- "published!\n",
459
- "published!\n",
460
- "published!\n",
461
- "published!\n",
462
- "published!\n",
463
- "published!\n",
464
- "published!\n",
465
- "published!\n",
466
- "published!\n",
467
- "published!\n",
468
- "published!\n",
469
- "published!\n",
470
- "published!\n",
471
- "published!\n",
472
- "published!\n",
473
- "published!\n",
474
- "published!\n",
475
- "published!\n",
476
- "published!\n",
477
- "published!\n",
478
- "published!\n",
479
- "published!\n",
480
- "published!\n",
481
- "published!\n",
482
- "published!\n",
483
- "published!\n",
484
- "published!\n",
485
- "published!\n",
486
- "published!\n",
487
- "published!\n",
488
- "published!\n",
489
- "published!\n",
490
- "published!\n",
491
- "published!\n",
492
- "published!\n",
493
- "published!\n",
494
- "published!\n",
495
- "published!\n",
496
- "published!\n",
497
- "published!\n",
498
- "published!\n",
499
- "published!\n",
500
- "published!\n",
501
- "published!\n",
502
- "published!\n",
503
- "published!\n",
504
- "published!\n",
505
- "published!\n",
506
- "published!\n",
507
- "published!\n",
508
- "published!\n",
509
- "published!\n",
510
- "published!\n",
511
- "published!\n",
512
- "published!\n",
513
- "published!\n",
514
- "published!\n",
515
- "published!\n",
516
- "published!\n",
517
- "published!\n",
518
- "published!\n",
519
- "published!\n",
520
- "published!\n",
521
- "published!\n",
522
- "published!\n",
523
- "published!\n",
524
- "published!\n",
525
- "published!\n",
526
- "published!\n",
527
- "published!\n",
528
- "published!\n",
529
- "published!\n",
530
- "published!\n",
531
- "published!\n",
532
- "published!\n",
533
- "published!\n",
534
- "published!\n",
535
- "published!\n",
536
- "published!\n",
537
- "published!\n",
538
- "published!\n",
539
- "published!\n",
540
- "published!\n",
541
- "published!\n",
542
- "published!\n",
543
- "published!\n",
544
- "published!\n",
545
- "published!\n",
546
- "published!\n",
547
- "published!\n",
548
- "published!\n",
549
- "published!\n",
550
- "published!\n",
551
- "published!\n",
552
- "published!\n",
553
- "published!\n",
554
- "published!\n",
555
- "published!\n",
556
- "published!\n",
557
- "published!\n",
558
- "published!\n",
559
- "published!\n",
560
- "published!\n",
561
- "published!\n",
562
- "published!\n",
563
- "published!\n",
564
- "published!\n",
565
- "published!\n",
566
- "published!\n",
567
- "published!\n",
568
- "published!\n",
569
- "published!\n",
570
- "published!\n",
571
- "published!\n",
572
- "published!\n",
573
- "published!\n",
574
- "published!\n",
575
- "published!\n",
576
- "published!\n",
577
- "published!\n",
578
- "published!\n",
579
- "published!\n",
580
- "published!\n",
581
- "published!\n",
582
- "published!\n",
583
- "published!\n",
584
- "published!\n",
585
- "published!\n",
586
- "published!\n",
587
- "published!\n",
588
- "published!\n",
589
- "published!\n",
590
- "published!\n",
591
- "published!\n",
592
- "published!\n",
593
- "published!\n",
594
- "published!\n",
595
- "published!\n",
596
- "published!\n",
597
- "published!\n",
598
- "published!\n",
599
- "published!\n",
600
- "published!\n",
601
- "published!\n",
602
- "published!\n",
603
- "published!\n",
604
- "published!\n",
605
- "published!\n",
606
- "published!\n",
607
- "published!\n",
608
- "published!\n",
609
- "published!\n",
610
- "published!\n",
611
- "published!\n",
612
- "published!\n",
613
- "published!\n",
614
- "published!\n",
615
- "published!\n",
616
- "published!\n",
617
- "published!\n",
618
- "published!\n",
619
- "published!\n",
620
- "published!\n",
621
- "published!\n",
622
- "published!\n",
623
- "published!\n",
624
- "published!\n",
625
- "published!\n",
626
- "published!\n",
627
- "published!\n",
628
- "published!\n",
629
- "published!\n",
630
- "published!\n",
631
- "published!\n",
632
- "published!\n",
633
- "published!\n",
634
- "published!\n",
635
- "published!\n",
636
- "published!\n",
637
- "published!\n",
638
- "published!\n",
639
- "published!\n",
640
- "published!\n",
641
- "published!\n",
642
- "published!\n",
643
- "published!\n",
644
- "published!\n",
645
- "published!\n",
646
- "published!\n",
647
- "published!\n",
648
- "published!\n",
649
- "published!\n",
650
- "published!\n",
651
- "published!\n",
652
- "published!\n",
653
- "published!\n",
654
- "published!\n",
655
- "published!\n",
656
- "published!\n",
657
- "published!\n",
658
- "published!\n",
659
- "published!\n",
660
- "published!\n",
661
- "published!\n",
662
- "published!\n",
663
- "published!\n",
664
- "published!\n",
665
- "published!\n",
666
- "published!\n",
667
- "published!\n",
668
- "published!\n",
669
- "published!\n",
670
- "published!\n",
671
- "published!\n",
672
- "published!\n",
673
- "published!\n",
674
- "published!\n",
675
- "published!\n",
676
- "published!\n",
677
- "published!\n",
678
- "published!\n",
679
- "published!\n",
680
- "published!\n",
681
- "published!\n",
682
- "published!\n",
683
- "published!\n",
684
- "published!\n",
685
- "published!\n",
686
- "published!\n",
687
- "published!\n",
688
- "published!\n",
689
- "published!\n",
690
- "published!\n",
691
- "published!\n",
692
- "published!\n",
693
- "published!\n",
694
- "published!\n",
695
- "published!\n",
696
- "published!\n",
697
- "published!\n",
698
- "published!\n",
699
- "published!\n",
700
- "published!\n",
701
- "published!\n",
702
- "published!\n",
703
- "published!\n",
704
- "published!\n",
705
- "published!\n",
706
- "published!\n",
707
- "published!\n",
708
- "published!\n",
709
- "published!\n",
710
- "published!\n",
711
- "published!\n",
712
- "published!\n",
713
- "published!\n",
714
- "published!\n",
715
- "published!\n",
716
- "published!\n",
717
- "published!\n",
718
- "published!\n",
719
- "published!\n",
720
- "published!\n",
721
- "published!\n",
722
- "published!\n",
723
- "published!\n",
724
- "published!\n",
725
- "published!\n",
726
- "published!\n",
727
- "published!\n",
728
- "published!\n",
729
- "published!\n",
730
- "published!\n",
731
- "published!\n",
732
- "published!\n",
733
- "published!\n",
734
- "published!\n",
735
- "published!\n",
736
- "published!\n",
737
- "published!\n",
738
- "published!\n",
739
- "published!\n",
740
- "published!\n",
741
- "published!\n",
742
- "published!\n",
743
- "published!\n",
744
- "published!\n",
745
- "published!\n",
746
- "published!\n",
747
- "published!\n",
748
- "published!\n",
749
- "published!\n",
750
- "published!\n",
751
- "published!\n",
752
- "published!\n",
753
- "published!\n",
754
- "published!\n",
755
- "published!\n",
756
- "published!\n",
757
- "published!\n",
758
- "published!\n",
759
- "published!\n",
760
- "published!\n",
761
- "published!\n",
762
- "published!\n",
763
- "published!\n",
764
- "published!\n",
765
- "published!\n",
766
- "published!\n",
767
- "published!\n",
768
- "published!\n",
769
- "published!\n",
770
- "published!\n",
771
- "published!\n",
772
- "published!\n",
773
- "published!\n",
774
- "published!\n",
775
- "published!\n",
776
- "published!\n",
777
- "published!\n",
778
- "published!\n",
779
- "published!\n",
780
- "published!\n",
781
- "published!\n",
782
- "published!\n",
783
- "published!\n",
784
- "published!\n",
785
- "published!\n",
786
- "published!\n",
787
- "published!\n",
788
- "published!\n",
789
- "published!\n",
790
- "published!\n",
791
- "published!\n",
792
- "published!\n",
793
- "published!\n",
794
- "published!\n",
795
- "published!\n",
796
- "published!\n",
797
- "published!\n",
798
- "published!\n",
799
- "published!\n",
800
- "published!\n",
801
- "published!\n",
802
- "published!\n",
803
- "published!\n",
804
- "published!\n",
805
- "published!\n",
806
- "published!\n",
807
- "published!\n",
808
- "published!\n",
809
- "published!\n",
810
- "published!\n",
811
- "published!\n",
812
- "published!\n",
813
- "published!\n",
814
- "published!\n",
815
- "published!\n",
816
- "published!\n",
817
- "published!\n",
818
- "published!\n",
819
- "published!\n",
820
- "published!\n",
821
- "published!\n",
822
- "published!\n",
823
- "published!\n",
824
- "published!\n",
825
- "published!\n",
826
- "published!\n",
827
- "published!\n",
828
- "published!\n",
829
- "published!\n",
830
- "published!\n",
831
- "published!\n",
832
- "published!\n",
833
- "published!\n",
834
- "published!\n",
835
- "published!\n",
836
- "published!\n",
837
- "published!\n",
838
- "published!\n",
839
- "published!\n",
840
- "published!\n",
841
- "published!\n",
842
- "published!\n",
843
- "published!\n",
844
- "published!\n",
845
- "published!\n",
846
- "published!\n",
847
- "published!\n",
848
- "published!\n",
849
- "published!\n",
850
- "published!\n",
851
- "published!\n",
852
- "published!\n",
853
- "published!\n",
854
- "published!\n",
855
- "published!\n",
856
- "published!\n",
857
- "published!\n",
858
- "published!\n",
859
- "published!\n",
860
- "published!\n",
861
- "published!\n",
862
- "published!\n",
863
- "published!\n",
864
- "published!\n",
865
- "published!\n",
866
- "published!\n",
867
- "published!\n",
868
- "published!\n",
869
- "published!\n",
870
- "published!\n",
871
- "published!\n",
872
- "published!\n",
873
- "published!\n",
874
- "published!\n",
875
- "published!\n",
876
- "published!\n",
877
- "published!\n",
878
- "published!\n",
879
- "published!\n",
880
- "published!\n",
881
- "published!\n",
882
- "published!\n",
883
- "published!\n",
884
- "published!\n",
885
- "published!\n",
886
- "published!\n",
887
- "published!\n",
888
- "published!\n",
889
- "published!\n",
890
- "published!\n",
891
- "published!\n",
892
- "published!\n",
893
- "published!\n",
894
- "published!\n",
895
- "published!\n",
896
- "published!\n",
897
- "published!\n",
898
- "published!\n",
899
- "published!\n",
900
- "published!\n",
901
- "published!\n",
902
- "published!\n",
903
- "published!\n",
904
- "published!\n",
905
- "published!\n",
906
- "published!\n",
907
- "published!\n",
908
- "published!\n",
909
- "published!\n",
910
- "published!\n",
911
- "published!\n",
912
- "published!\n",
913
- "published!\n",
914
- "published!\n",
915
- "published!\n",
916
- "published!\n",
917
- "published!\n",
918
- "published!\n",
919
- "published!\n",
920
- "published!\n",
921
- "published!\n",
922
- "published!\n",
923
- "published!\n",
924
- "published!\n",
925
- "published!\n",
926
- "published!\n",
927
- "published!\n",
928
- "published!\n",
929
- "published!\n",
930
- "published!\n",
931
- "published!\n",
932
- "published!\n",
933
- "published!\n",
934
- "published!\n",
935
- "published!\n",
936
- "published!\n",
937
- "published!\n",
938
- "published!\n",
939
- "published!\n",
940
- "published!\n",
941
- "published!\n",
942
- "published!\n",
943
- "published!\n",
944
- "published!\n",
945
- "published!\n",
946
- "published!\n",
947
- "published!\n",
948
- "published!\n",
949
- "published!\n",
950
- "published!\n",
951
- "published!\n",
952
- "published!\n",
953
- "published!\n",
954
- "published!\n",
955
- "published!\n",
956
- "published!\n",
957
- "published!\n",
958
- "published!\n",
959
- "published!\n",
960
- "published!\n",
961
- "published!\n",
962
- "published!\n",
963
- "published!\n",
964
- "published!\n",
965
- "published!\n",
966
- "published!\n",
967
- "published!\n",
968
- "published!\n",
969
- "published!\n",
970
- "published!\n",
971
- "published!\n",
972
- "published!\n",
973
- "published!\n",
974
- "published!\n",
975
- "published!\n",
976
- "published!\n",
977
- "published!\n",
978
- "published!\n",
979
- "published!\n",
980
- "published!\n",
981
- "published!\n",
982
- "published!\n",
983
- "published!\n",
984
- "published!\n",
985
- "published!\n",
986
- "published!\n",
987
- "published!\n",
988
- "published!\n",
989
- "published!\n",
990
- "published!\n",
991
- "published!\n",
992
- "published!\n",
993
- "published!\n",
994
- "published!\n",
995
- "published!\n",
996
- "published!\n",
997
- "published!\n",
998
- "published!\n",
999
- "published!\n",
1000
- "published!\n",
1001
- "published!\n",
1002
- "published!\n",
1003
- "published!\n",
1004
- "published!\n",
1005
- "published!\n",
1006
- "published!\n",
1007
- "published!\n",
1008
- "published!\n",
1009
- "published!\n",
1010
- "published!\n",
1011
- "published!\n",
1012
- "published!\n",
1013
- "published!\n",
1014
- "published!\n",
1015
- "published!\n",
1016
- "published!\n",
1017
- "published!\n",
1018
- "published!\n",
1019
- "published!\n",
1020
- "published!\n",
1021
- "published!\n",
1022
- "published!\n",
1023
- "published!\n",
1024
- "published!\n",
1025
- "published!\n",
1026
- "published!\n",
1027
- "published!\n",
1028
- "published!\n",
1029
- "published!\n",
1030
- "published!\n",
1031
- "published!\n",
1032
- "published!\n",
1033
- "published!\n",
1034
- "published!\n",
1035
- "published!\n",
1036
- "published!\n",
1037
- "published!\n",
1038
- "published!\n",
1039
- "published!\n",
1040
- "published!\n",
1041
- "published!\n",
1042
- "published!\n",
1043
- "published!\n",
1044
- "published!\n",
1045
- "published!\n",
1046
- "published!\n",
1047
- "published!\n",
1048
- "published!\n",
1049
- "published!\n",
1050
- "published!\n",
1051
- "published!\n",
1052
- "published!\n",
1053
- "published!\n",
1054
- "published!\n",
1055
- "published!\n",
1056
- "published!\n",
1057
- "published!\n",
1058
- "published!\n",
1059
- "published!\n",
1060
- "published!\n",
1061
- "published!\n",
1062
- "published!\n",
1063
- "published!\n",
1064
- "published!\n",
1065
- "published!\n",
1066
- "published!\n",
1067
- "published!\n",
1068
- "published!\n",
1069
- "published!\n",
1070
- "published!\n",
1071
- "published!\n",
1072
- "published!\n",
1073
- "published!\n",
1074
- "published!\n",
1075
- "published!\n",
1076
- "published!\n",
1077
- "published!\n",
1078
- "published!\n",
1079
- "published!\n",
1080
- "published!\n",
1081
- "published!\n",
1082
- "published!\n",
1083
- "published!\n",
1084
- "published!\n",
1085
- "published!\n",
1086
- "published!\n",
1087
- "published!\n",
1088
- "published!\n",
1089
- "published!\n",
1090
- "published!\n",
1091
- "published!\n",
1092
- "published!\n",
1093
- "published!\n",
1094
- "published!\n",
1095
- "published!\n",
1096
- "published!\n",
1097
- "published!\n",
1098
- "published!\n",
1099
- "published!\n",
1100
- "published!\n",
1101
- "published!\n",
1102
- "published!\n",
1103
- "published!\n",
1104
- "published!\n",
1105
- "published!\n",
1106
- "published!\n",
1107
- "published!\n",
1108
- "published!\n",
1109
- "published!\n",
1110
- "published!\n",
1111
- "published!\n",
1112
- "published!\n",
1113
- "published!\n",
1114
- "published!\n",
1115
- "published!\n",
1116
- "published!\n",
1117
- "published!\n",
1118
- "published!\n",
1119
- "published!\n",
1120
- "published!\n",
1121
- "published!\n",
1122
- "published!\n",
1123
- "published!\n",
1124
- "published!\n",
1125
- "published!\n",
1126
- "published!\n",
1127
- "published!\n",
1128
- "published!\n",
1129
- "published!\n",
1130
- "published!\n",
1131
- "published!\n",
1132
- "published!\n",
1133
- "published!\n",
1134
- "published!\n",
1135
- "published!\n",
1136
- "published!\n",
1137
- "published!\n",
1138
- "published!\n",
1139
- "published!\n",
1140
- "published!\n",
1141
- "published!\n",
1142
- "published!\n",
1143
- "published!\n",
1144
- "published!\n",
1145
- "published!\n",
1146
- "published!\n",
1147
- "published!\n",
1148
- "published!\n",
1149
- "published!\n",
1150
- "published!\n",
1151
- "published!\n",
1152
- "published!\n",
1153
- "published!\n",
1154
- "published!\n",
1155
- "published!\n",
1156
- "published!\n",
1157
- "published!\n",
1158
- "published!\n",
1159
- "published!\n",
1160
- "published!\n",
1161
- "published!\n",
1162
- "published!\n",
1163
- "published!\n",
1164
- "published!\n",
1165
- "published!\n",
1166
- "published!\n",
1167
- "published!\n",
1168
- "published!\n",
1169
- "published!\n",
1170
- "published!\n",
1171
- "published!\n",
1172
- "published!\n",
1173
- "published!\n",
1174
- "published!\n",
1175
- "published!\n",
1176
- "published!\n",
1177
- "published!\n",
1178
- "published!\n",
1179
- "published!\n",
1180
- "published!\n",
1181
- "published!\n",
1182
- "published!\n",
1183
- "published!\n",
1184
- "published!\n",
1185
- "published!\n",
1186
- "published!\n",
1187
- "published!\n",
1188
- "published!\n",
1189
- "published!\n",
1190
- "published!\n",
1191
- "published!\n",
1192
- "published!\n",
1193
- "published!\n",
1194
- "published!\n",
1195
- "published!\n",
1196
- "published!\n",
1197
- "published!\n",
1198
- "published!\n",
1199
- "published!\n",
1200
- "published!\n",
1201
- "published!\n",
1202
- "published!\n",
1203
- "published!\n",
1204
- "published!\n",
1205
- "published!\n",
1206
- "published!\n",
1207
- "published!\n",
1208
- "published!\n",
1209
- "published!\n",
1210
- "published!\n",
1211
- "published!\n",
1212
- "published!\n",
1213
- "published!\n",
1214
- "published!\n",
1215
- "published!\n",
1216
- "published!\n",
1217
- "published!\n",
1218
- "published!\n",
1219
- "published!\n",
1220
- "published!\n",
1221
- "published!\n",
1222
- "published!\n",
1223
- "published!\n",
1224
- "published!\n",
1225
- "published!\n",
1226
- "published!\n",
1227
- "published!\n",
1228
- "published!\n",
1229
- "published!\n",
1230
- "published!\n",
1231
- "published!\n",
1232
- "published!\n",
1233
- "published!\n",
1234
- "published!\n",
1235
- "published!\n",
1236
- "published!\n",
1237
- "published!\n",
1238
- "published!\n",
1239
- "published!\n",
1240
- "published!\n",
1241
- "published!\n",
1242
- "published!\n",
1243
- "published!\n",
1244
- "published!\n",
1245
- "published!\n",
1246
- "published!\n",
1247
- "published!\n",
1248
- "published!\n",
1249
- "published!\n",
1250
- "published!\n",
1251
- "published!\n",
1252
- "published!\n",
1253
- "published!\n",
1254
- "published!\n",
1255
- "published!\n",
1256
- "published!\n",
1257
- "published!\n",
1258
- "published!\n",
1259
- "published!\n",
1260
- "published!\n",
1261
- "published!\n",
1262
- "published!\n",
1263
- "published!\n",
1264
- "published!\n",
1265
- "published!\n",
1266
- "published!\n",
1267
- "published!\n",
1268
- "published!\n",
1269
- "published!\n",
1270
- "published!\n",
1271
- "published!\n",
1272
- "published!\n",
1273
- "published!\n",
1274
- "published!\n",
1275
- "published!\n",
1276
- "published!\n",
1277
- "published!\n",
1278
- "published!\n",
1279
- "published!\n",
1280
- "published!\n",
1281
- "published!\n",
1282
- "published!\n",
1283
- "published!\n",
1284
- "published!\n",
1285
- "published!\n",
1286
- "published!\n",
1287
- "published!\n",
1288
- "published!\n",
1289
- "published!\n",
1290
- "published!\n",
1291
- "published!\n",
1292
- "published!\n",
1293
- "published!\n",
1294
- "published!\n",
1295
- "published!\n",
1296
- "published!\n",
1297
- "published!\n",
1298
- "published!\n",
1299
- "published!\n",
1300
- "published!\n",
1301
- "published!\n",
1302
- "published!\n",
1303
- "published!\n",
1304
- "published!\n",
1305
- "published!\n",
1306
- "published!\n",
1307
- "published!\n",
1308
- "published!\n",
1309
- "published!\n",
1310
- "published!\n",
1311
- "published!\n",
1312
- "published!\n",
1313
- "published!\n",
1314
- "published!\n",
1315
- "published!\n",
1316
- "published!\n",
1317
- "published!\n",
1318
- "published!\n",
1319
- "published!\n",
1320
- "published!\n",
1321
- "published!\n",
1322
- "published!\n",
1323
- "published!\n",
1324
- "published!\n",
1325
- "published!\n",
1326
- "published!\n",
1327
- "published!\n",
1328
- "published!\n",
1329
- "published!\n",
1330
- "published!\n",
1331
- "published!\n",
1332
- "published!\n",
1333
- "published!\n",
1334
- "published!\n",
1335
- "published!\n",
1336
- "published!\n",
1337
- "published!\n",
1338
- "published!\n",
1339
- "published!\n",
1340
- "published!\n",
1341
- "published!\n",
1342
- "published!\n",
1343
- "published!\n",
1344
- "published!\n",
1345
- "published!\n",
1346
- "published!\n",
1347
- "published!\n",
1348
- "published!\n",
1349
- "published!\n",
1350
- "published!\n",
1351
- "published!\n",
1352
- "published!\n",
1353
- "published!\n",
1354
- "published!\n",
1355
- "published!\n",
1356
- "published!\n",
1357
- "published!\n",
1358
- "published!\n",
1359
- "published!\n",
1360
- "published!\n",
1361
- "published!\n",
1362
- "published!\n",
1363
- "published!\n",
1364
- "published!\n",
1365
- "published!\n",
1366
- "published!\n",
1367
- "published!\n",
1368
- "published!\n",
1369
- "published!\n",
1370
- "published!\n",
1371
- "published!\n",
1372
- "published!\n",
1373
- "published!\n",
1374
- "published!\n",
1375
- "published!\n",
1376
- "published!\n",
1377
- "published!\n",
1378
- "published!\n",
1379
- "published!\n",
1380
- "published!\n",
1381
- "published!\n",
1382
- "published!\n",
1383
- "published!\n",
1384
- "published!\n",
1385
- "published!\n",
1386
- "published!\n",
1387
- "published!\n",
1388
- "published!\n",
1389
- "published!\n",
1390
- "published!\n",
1391
- "published!\n",
1392
- "published!\n",
1393
- "published!\n",
1394
- "published!\n",
1395
- "published!\n",
1396
- "published!\n",
1397
- "published!\n",
1398
- "published!\n",
1399
- "published!\n",
1400
- "published!\n",
1401
- "published!\n",
1402
- "published!\n",
1403
- "published!\n",
1404
- "published!\n",
1405
- "published!\n",
1406
- "published!\n",
1407
- "published!\n",
1408
- "published!\n",
1409
- "published!\n",
1410
- "published!\n",
1411
- "published!\n",
1412
- "published!\n",
1413
- "published!\n",
1414
- "published!\n",
1415
- "published!\n",
1416
- "published!\n",
1417
- "published!\n",
1418
- "published!\n",
1419
- "published!\n",
1420
- "published!\n",
1421
- "published!\n",
1422
- "published!\n",
1423
- "published!\n",
1424
- "published!\n",
1425
- "published!\n",
1426
- "published!\n",
1427
- "published!\n",
1428
- "published!\n",
1429
- "published!\n",
1430
- "published!\n",
1431
- "published!\n",
1432
- "published!\n",
1433
- "published!\n",
1434
- "published!\n",
1435
- "published!\n",
1436
- "published!\n",
1437
- "published!\n",
1438
- "published!\n",
1439
- "published!\n",
1440
- "published!\n",
1441
- "published!\n",
1442
- "published!\n",
1443
- "published!\n",
1444
- "published!\n",
1445
- "published!\n",
1446
- "published!\n",
1447
- "published!\n",
1448
- "published!\n",
1449
- "published!\n",
1450
- "published!\n",
1451
- "published!\n",
1452
- "published!\n",
1453
- "published!\n",
1454
- "published!\n",
1455
- "published!\n",
1456
- "published!\n",
1457
- "published!\n",
1458
- "published!\n",
1459
- "published!\n",
1460
- "published!\n",
1461
- "published!\n",
1462
- "published!\n",
1463
- "published!\n",
1464
- "published!\n",
1465
- "published!\n",
1466
- "published!\n",
1467
- "published!\n",
1468
- "published!\n",
1469
- "published!\n",
1470
- "published!\n",
1471
- "published!\n",
1472
- "published!\n",
1473
- "published!\n",
1474
- "published!\n",
1475
- "published!\n",
1476
- "published!\n",
1477
- "published!\n",
1478
- "published!\n",
1479
- "published!\n",
1480
- "published!\n",
1481
- "published!\n",
1482
- "published!\n",
1483
- "published!\n",
1484
- "published!\n",
1485
- "published!\n",
1486
- "published!\n",
1487
- "published!\n",
1488
- "published!\n",
1489
- "published!\n",
1490
- "published!\n",
1491
- "published!\n",
1492
- "published!\n",
1493
- "published!\n",
1494
- "published!\n",
1495
- "published!\n",
1496
- "published!\n",
1497
- "published!\n",
1498
- "published!\n",
1499
- "published!\n",
1500
- "published!\n",
1501
- "published!\n",
1502
- "published!\n",
1503
- "published!\n",
1504
- "published!\n",
1505
- "published!\n",
1506
- "published!\n",
1507
- "published!\n",
1508
- "published!\n",
1509
- "published!\n",
1510
- "published!\n",
1511
- "published!\n",
1512
- "published!\n",
1513
- "published!\n",
1514
- "published!\n",
1515
- "published!\n",
1516
- "published!\n",
1517
- "published!\n",
1518
- "published!\n",
1519
- "published!\n",
1520
- "published!\n",
1521
- "published!\n",
1522
- "published!\n",
1523
- "published!\n",
1524
- "published!\n",
1525
- "published!\n",
1526
- "published!\n",
1527
- "published!\n",
1528
- "published!\n",
1529
- "published!\n",
1530
- "published!\n",
1531
- "published!\n",
1532
- "published!\n",
1533
- "published!\n",
1534
- "published!\n",
1535
- "published!\n",
1536
- "published!\n",
1537
- "published!\n",
1538
- "published!\n",
1539
- "published!\n",
1540
- "published!\n",
1541
- "published!\n",
1542
- "published!\n",
1543
- "published!\n",
1544
- "published!\n",
1545
- "published!\n",
1546
- "published!\n",
1547
- "published!\n",
1548
- "published!\n",
1549
- "published!\n",
1550
- "published!\n",
1551
- "published!\n",
1552
- "published!\n",
1553
- "published!\n",
1554
- "published!\n",
1555
- "published!\n",
1556
- "published!\n",
1557
- "published!\n",
1558
- "published!\n",
1559
- "published!\n",
1560
- "published!\n",
1561
- "published!\n",
1562
- "published!\n",
1563
- "published!\n",
1564
- "published!\n",
1565
- "published!\n",
1566
- "published!\n",
1567
- "published!\n",
1568
- "published!\n",
1569
- "published!\n",
1570
- "published!\n",
1571
- "published!\n",
1572
- "published!\n",
1573
- "published!\n",
1574
- "published!\n",
1575
- "published!\n",
1576
- "published!\n",
1577
- "published!\n",
1578
- "published!\n",
1579
- "published!\n",
1580
- "published!\n",
1581
- "published!\n",
1582
- "published!\n",
1583
- "published!\n",
1584
- "published!\n",
1585
- "published!\n",
1586
- "published!\n",
1587
- "published!\n",
1588
- "published!\n",
1589
- "published!\n",
1590
- "published!\n",
1591
- "published!\n",
1592
- "published!\n",
1593
- "published!\n",
1594
- "published!\n",
1595
- "published!\n",
1596
- "published!\n",
1597
- "published!\n",
1598
- "published!\n",
1599
- "published!\n",
1600
- "published!\n",
1601
- "published!\n",
1602
- "published!\n",
1603
- "published!\n",
1604
- "published!\n",
1605
- "published!\n",
1606
- "published!\n",
1607
- "published!\n",
1608
- "published!\n",
1609
- "published!\n",
1610
- "published!\n",
1611
- "published!\n",
1612
- "published!\n",
1613
- "published!\n",
1614
- "published!\n",
1615
- "published!\n",
1616
- "published!\n",
1617
- "published!\n",
1618
- "published!\n",
1619
- "published!\n",
1620
- "published!\n",
1621
- "published!\n",
1622
- "published!\n",
1623
- "published!\n",
1624
- "published!\n",
1625
- "published!\n",
1626
- "published!\n",
1627
- "published!\n",
1628
- "published!\n",
1629
- "published!\n",
1630
- "published!\n",
1631
- "published!\n",
1632
- "published!\n",
1633
- "published!\n",
1634
- "published!\n",
1635
- "published!\n",
1636
- "published!\n",
1637
- "published!\n",
1638
- "published!\n",
1639
- "published!\n",
1640
- "published!\n",
1641
- "published!\n",
1642
- "published!\n",
1643
- "published!\n",
1644
- "published!\n",
1645
- "published!\n",
1646
- "published!\n",
1647
- "published!\n",
1648
- "published!\n",
1649
- "published!\n",
1650
- "published!\n",
1651
- "published!\n",
1652
- "published!\n",
1653
- "published!\n",
1654
- "published!\n",
1655
- "published!\n",
1656
- "published!\n",
1657
- "published!\n",
1658
- "published!\n",
1659
- "published!\n",
1660
- "published!\n",
1661
- "published!\n",
1662
- "published!\n",
1663
- "published!\n",
1664
- "published!\n",
1665
- "published!\n",
1666
- "published!\n",
1667
- "published!\n",
1668
- "published!\n",
1669
- "published!\n",
1670
- "published!\n",
1671
- "published!\n",
1672
- "published!\n",
1673
- "published!\n",
1674
- "published!\n",
1675
- "published!\n",
1676
- "published!\n",
1677
- "published!\n",
1678
- "published!\n",
1679
- "published!\n",
1680
- "published!\n",
1681
- "published!\n",
1682
- "published!\n",
1683
- "published!\n",
1684
- "published!\n",
1685
- "published!\n",
1686
- "published!\n",
1687
- "published!\n",
1688
- "published!\n",
1689
- "published!\n",
1690
- "published!\n",
1691
- "published!\n",
1692
- "published!\n",
1693
- "published!\n",
1694
- "published!\n",
1695
- "published!\n",
1696
- "published!\n",
1697
- "published!\n",
1698
- "published!\n",
1699
- "published!\n",
1700
- "published!\n",
1701
- "published!\n",
1702
- "published!\n",
1703
- "published!\n",
1704
- "published!\n",
1705
- "published!\n",
1706
- "published!\n",
1707
- "published!\n",
1708
- "published!\n",
1709
- "published!\n",
1710
- "published!\n",
1711
- "published!\n",
1712
- "published!\n",
1713
- "published!\n",
1714
- "published!\n",
1715
- "published!\n",
1716
- "published!\n",
1717
- "published!\n",
1718
- "published!\n",
1719
- "published!\n",
1720
- "published!\n",
1721
- "published!\n",
1722
- "published!\n",
1723
- "published!\n",
1724
- "published!\n",
1725
- "published!\n",
1726
- "published!\n",
1727
- "published!\n",
1728
- "published!\n",
1729
- "published!\n",
1730
- "published!\n",
1731
- "published!\n",
1732
- "published!\n",
1733
- "published!\n",
1734
- "published!\n",
1735
- "published!\n",
1736
- "published!\n",
1737
- "published!\n",
1738
- "published!\n",
1739
- "published!\n",
1740
- "published!\n",
1741
- "published!\n",
1742
- "published!\n",
1743
- "published!\n",
1744
- "published!\n",
1745
- "published!\n",
1746
- "published!\n",
1747
- "published!\n",
1748
- "published!\n",
1749
- "published!\n",
1750
- "published!\n",
1751
- "published!\n",
1752
- "published!\n",
1753
- "published!\n",
1754
- "published!\n",
1755
- "published!\n",
1756
- "published!\n",
1757
- "published!\n",
1758
- "published!\n",
1759
- "published!\n",
1760
- "published!\n",
1761
- "published!\n",
1762
- "published!\n",
1763
- "published!\n",
1764
- "published!\n",
1765
- "published!\n",
1766
- "published!\n",
1767
- "published!\n",
1768
- "published!\n",
1769
- "published!\n",
1770
- "published!\n",
1771
- "published!\n",
1772
- "published!\n",
1773
- "published!\n",
1774
- "published!\n",
1775
- "published!\n",
1776
- "published!\n",
1777
- "published!\n",
1778
- "published!\n",
1779
- "published!\n",
1780
- "published!\n",
1781
- "published!\n",
1782
- "published!\n",
1783
- "published!\n",
1784
- "published!\n",
1785
- "published!\n",
1786
- "published!\n",
1787
- "published!\n",
1788
- "published!\n",
1789
- "published!\n",
1790
- "published!\n",
1791
- "published!\n",
1792
- "published!\n",
1793
- "published!\n",
1794
- "published!\n",
1795
- "published!\n",
1796
- "published!\n",
1797
- "published!\n",
1798
- "published!\n",
1799
- "published!\n",
1800
- "published!\n",
1801
- "published!\n",
1802
- "published!\n",
1803
- "published!\n",
1804
- "published!\n",
1805
- "published!\n",
1806
- "published!\n",
1807
- "published!\n",
1808
- "published!\n",
1809
- "published!\n",
1810
- "published!\n",
1811
- "published!\n",
1812
- "published!\n",
1813
- "published!\n",
1814
- "published!\n",
1815
- "published!\n",
1816
- "published!\n",
1817
- "published!\n",
1818
- "published!\n",
1819
- "published!\n",
1820
- "published!\n",
1821
- "published!\n",
1822
- "published!\n",
1823
- "published!\n",
1824
- "published!\n",
1825
- "published!\n",
1826
- "published!\n",
1827
- "published!\n",
1828
- "published!\n",
1829
- "published!\n",
1830
- "published!\n",
1831
- "published!\n",
1832
- "published!\n",
1833
- "published!\n",
1834
- "published!\n",
1835
- "published!\n",
1836
- "published!\n",
1837
- "published!\n",
1838
- "published!\n",
1839
- "published!\n",
1840
- "published!\n",
1841
- "published!\n",
1842
- "published!\n",
1843
- "published!\n",
1844
- "published!\n",
1845
- "published!\n",
1846
- "published!\n",
1847
- "published!\n",
1848
- "published!\n",
1849
- "published!\n",
1850
- "published!\n",
1851
- "published!\n",
1852
- "published!\n",
1853
- "published!\n",
1854
- "published!\n",
1855
- "published!\n",
1856
- "published!\n",
1857
- "published!\n",
1858
- "published!\n",
1859
- "published!\n",
1860
- "published!\n",
1861
- "published!\n",
1862
- "published!\n",
1863
- "published!\n",
1864
- "published!\n",
1865
- "published!\n",
1866
- "published!\n",
1867
- "published!\n",
1868
- "published!\n",
1869
- "published!\n",
1870
- "published!\n",
1871
- "published!\n",
1872
- "published!\n",
1873
- "published!\n",
1874
- "published!\n",
1875
- "published!\n",
1876
- "published!\n",
1877
- "published!\n",
1878
- "published!\n",
1879
- "published!\n",
1880
- "published!\n",
1881
- "published!\n",
1882
- "published!\n",
1883
- "published!\n",
1884
- "published!\n",
1885
- "published!\n",
1886
- "published!\n",
1887
- "published!\n",
1888
- "published!\n",
1889
- "published!\n",
1890
- "published!\n",
1891
- "published!\n",
1892
- "published!\n",
1893
- "published!\n",
1894
- "published!\n",
1895
- "published!\n",
1896
- "published!\n",
1897
- "published!\n",
1898
- "published!\n",
1899
- "published!\n",
1900
- "published!\n",
1901
- "published!\n",
1902
- "published!\n",
1903
- "published!\n",
1904
- "published!\n",
1905
- "published!\n",
1906
- "published!\n",
1907
- "published!\n",
1908
- "published!\n",
1909
- "published!\n",
1910
- "published!\n",
1911
- "published!\n",
1912
- "published!\n",
1913
- "published!\n",
1914
- "published!\n",
1915
- "published!\n",
1916
- "published!\n",
1917
- "published!\n",
1918
- "published!\n",
1919
- "published!\n",
1920
- "published!\n",
1921
- "published!\n",
1922
- "published!\n",
1923
- "published!\n",
1924
- "published!\n",
1925
- "published!\n",
1926
- "published!\n",
1927
- "published!\n",
1928
- "published!\n",
1929
- "published!\n",
1930
- "published!\n",
1931
- "published!\n",
1932
- "published!\n",
1933
- "published!\n",
1934
- "published!\n",
1935
- "published!\n",
1936
- "published!\n",
1937
- "published!\n",
1938
- "published!\n",
1939
- "published!\n",
1940
- "published!\n",
1941
- "published!\n",
1942
- "published!\n",
1943
- "published!\n",
1944
- "published!\n",
1945
- "published!\n",
1946
- "published!\n",
1947
- "published!\n",
1948
- "published!\n",
1949
- "published!\n",
1950
- "published!\n",
1951
- "published!\n",
1952
- "published!\n",
1953
- "published!\n",
1954
- "published!\n",
1955
- "published!\n",
1956
- "published!\n",
1957
- "published!\n",
1958
- "published!\n",
1959
- "published!\n",
1960
- "published!\n",
1961
- "published!\n",
1962
- "published!\n",
1963
- "published!\n",
1964
- "published!\n",
1965
- "published!\n",
1966
- "published!\n",
1967
- "published!\n",
1968
- "published!\n",
1969
- "published!\n",
1970
- "published!\n",
1971
- "published!\n",
1972
- "published!\n",
1973
- "published!\n",
1974
- "published!\n",
1975
- "published!\n",
1976
- "published!\n",
1977
- "published!\n",
1978
- "published!\n",
1979
- "published!\n",
1980
- "published!\n",
1981
- "published!\n",
1982
- "published!\n",
1983
- "published!\n",
1984
- "published!\n",
1985
- "published!\n",
1986
- "published!\n",
1987
- "published!\n",
1988
- "published!\n",
1989
- "published!\n",
1990
- "published!\n",
1991
- "published!\n",
1992
- "published!\n",
1993
- "published!\n",
1994
- "published!\n",
1995
- "published!\n",
1996
- "published!\n",
1997
- "published!\n",
1998
- "published!\n",
1999
- "published!\n",
2000
- "published!\n",
2001
- "published!\n",
2002
- "published!\n",
2003
- "published!\n",
2004
- "published!\n",
2005
- "published!\n",
2006
- "published!\n",
2007
- "published!\n",
2008
- "published!\n",
2009
- "published!\n",
2010
- "published!\n",
2011
- "published!\n",
2012
- "published!\n",
2013
- "published!\n",
2014
- "published!\n",
2015
- "published!\n",
2016
- "published!\n",
2017
- "published!\n",
2018
- "published!\n",
2019
- "published!\n",
2020
- "published!\n",
2021
- "published!\n",
2022
- "published!\n",
2023
- "published!\n",
2024
- "published!\n",
2025
- "published!\n",
2026
- "published!\n",
2027
- "published!\n",
2028
- "published!\n",
2029
- "published!\n",
2030
- "published!\n",
2031
- "published!\n",
2032
- "published!\n",
2033
- "published!\n",
2034
- "published!\n",
2035
- "published!\n",
2036
- "published!\n",
2037
- "published!\n",
2038
- "published!\n",
2039
- "published!\n",
2040
- "published!\n",
2041
- "published!\n",
2042
- "published!\n",
2043
- "published!\n",
2044
- "published!\n",
2045
- "published!\n",
2046
- "published!\n",
2047
- "published!\n",
2048
- "published!\n",
2049
- "published!\n",
2050
- "published!\n",
2051
- "published!\n",
2052
- "published!\n",
2053
- "published!\n",
2054
- "published!\n",
2055
- "published!\n",
2056
- "published!\n",
2057
- "published!\n",
2058
- "published!\n",
2059
- "published!\n",
2060
- "published!\n",
2061
- "published!\n",
2062
- "published!\n",
2063
- "published!\n",
2064
- "published!\n",
2065
- "published!\n",
2066
- "published!\n",
2067
- "published!\n",
2068
- "published!\n",
2069
- "published!\n",
2070
- "published!\n",
2071
- "published!\n",
2072
- "published!\n",
2073
- "published!\n",
2074
- "published!\n",
2075
- "published!\n",
2076
- "published!\n",
2077
- "published!\n",
2078
- "published!\n",
2079
- "published!\n",
2080
- "published!\n",
2081
- "published!\n",
2082
- "published!\n",
2083
- "published!\n",
2084
- "published!\n",
2085
- "published!\n",
2086
- "published!\n",
2087
- "published!\n",
2088
- "published!\n",
2089
- "published!\n",
2090
- "published!\n",
2091
- "published!\n",
2092
- "published!\n",
2093
- "published!\n",
2094
- "published!\n",
2095
- "published!\n",
2096
- "published!\n",
2097
- "published!\n",
2098
- "published!\n",
2099
- "published!\n",
2100
- "published!\n",
2101
- "published!\n",
2102
- "published!\n",
2103
- "published!\n",
2104
- "published!\n",
2105
- "published!\n",
2106
- "published!\n",
2107
- "published!\n",
2108
- "published!\n",
2109
- "published!\n",
2110
- "published!\n",
2111
- "published!\n",
2112
- "published!\n",
2113
- "published!\n",
2114
- "published!\n",
2115
- "published!\n",
2116
- "published!\n",
2117
- "published!\n",
2118
- "published!\n",
2119
- "published!\n",
2120
- "published!\n",
2121
- "published!\n",
2122
- "published!\n",
2123
- "published!\n",
2124
- "published!\n",
2125
- "published!\n",
2126
- "published!\n",
2127
- "published!\n",
2128
- "published!\n",
2129
- "published!\n",
2130
- "published!\n",
2131
- "published!\n",
2132
- "published!\n",
2133
- "published!\n",
2134
- "published!\n",
2135
- "published!\n",
2136
- "published!\n",
2137
- "published!\n",
2138
- "published!\n",
2139
- "published!\n",
2140
- "published!\n",
2141
- "published!\n",
2142
- "published!\n",
2143
- "published!\n",
2144
- "published!\n",
2145
- "published!\n",
2146
- "published!\n",
2147
- "published!\n",
2148
- "published!\n",
2149
- "published!\n",
2150
- "published!\n",
2151
- "published!\n",
2152
- "published!\n",
2153
- "published!\n",
2154
- "published!\n",
2155
- "published!\n",
2156
- "published!\n",
2157
- "published!\n",
2158
- "published!\n",
2159
- "published!\n",
2160
- "published!\n",
2161
- "published!\n",
2162
- "published!\n",
2163
- "published!\n",
2164
- "published!\n",
2165
- "published!\n",
2166
- "published!\n",
2167
- "published!\n",
2168
- "published!\n",
2169
- "published!\n",
2170
- "published!\n",
2171
- "published!\n",
2172
- "published!\n",
2173
- "published!\n",
2174
- "published!\n",
2175
- "published!\n",
2176
- "published!\n",
2177
- "published!\n",
2178
- "published!\n",
2179
- "published!\n",
2180
- "published!\n",
2181
- "published!\n",
2182
- "published!\n",
2183
- "published!\n",
2184
- "published!\n",
2185
- "published!\n",
2186
- "published!\n",
2187
- "published!\n",
2188
- "published!\n",
2189
- "published!\n",
2190
- "published!\n",
2191
- "published!\n",
2192
- "published!\n",
2193
- "published!\n",
2194
- "published!\n",
2195
- "published!\n",
2196
- "published!\n",
2197
- "published!\n",
2198
- "published!\n",
2199
- "published!\n",
2200
- "published!\n",
2201
- "published!\n",
2202
- "published!\n",
2203
- "published!\n",
2204
- "published!\n",
2205
- "published!\n",
2206
- "published!\n",
2207
- "published!\n",
2208
- "published!\n",
2209
- "published!\n",
2210
- "published!\n",
2211
- "published!\n",
2212
- "published!\n",
2213
- "published!\n",
2214
- "published!\n",
2215
- "published!\n",
2216
- "published!\n",
2217
- "published!\n",
2218
- "published!\n",
2219
- "published!\n",
2220
- "published!\n",
2221
- "published!\n",
2222
- "published!\n",
2223
- "published!\n",
2224
- "published!\n",
2225
- "published!\n",
2226
- "published!\n",
2227
- "published!\n",
2228
- "published!\n",
2229
- "published!\n",
2230
- "published!\n",
2231
- "published!\n",
2232
- "published!\n",
2233
- "published!\n",
2234
- "published!\n",
2235
- "published!\n",
2236
- "published!\n",
2237
- "published!\n",
2238
- "published!\n",
2239
- "published!\n",
2240
- "published!\n",
2241
- "published!\n",
2242
- "published!\n",
2243
- "published!\n",
2244
- "published!\n",
2245
- "published!\n",
2246
- "published!\n",
2247
- "published!\n",
2248
- "published!\n",
2249
- "published!\n",
2250
- "published!\n",
2251
- "published!\n",
2252
- "published!\n",
2253
- "published!\n",
2254
- "published!\n",
2255
- "published!\n",
2256
- "published!\n",
2257
- "published!\n",
2258
- "published!\n",
2259
- "published!\n",
2260
- "published!\n",
2261
- "published!\n",
2262
- "published!\n",
2263
- "published!\n",
2264
- "published!\n",
2265
- "published!\n",
2266
- "published!\n",
2267
- "published!\n",
2268
- "published!\n",
2269
- "published!\n",
2270
- "published!\n",
2271
- "published!\n",
2272
- "published!\n",
2273
- "published!\n",
2274
- "published!\n",
2275
- "published!\n",
2276
- "published!\n",
2277
- "published!\n",
2278
- "published!\n",
2279
- "published!\n",
2280
- "published!\n",
2281
- "published!\n",
2282
- "published!\n",
2283
- "published!\n",
2284
- "published!\n",
2285
- "published!\n",
2286
- "published!\n",
2287
- "published!\n",
2288
- "published!\n",
2289
- "published!\n",
2290
- "published!\n",
2291
- "published!\n",
2292
- "published!\n",
2293
- "published!\n",
2294
- "published!\n",
2295
- "published!\n",
2296
- "published!\n",
2297
- "published!\n",
2298
- "published!\n",
2299
- "published!\n",
2300
- "published!\n",
2301
- "published!\n",
2302
- "published!\n",
2303
- "published!\n",
2304
- "published!\n",
2305
- "published!\n",
2306
- "published!\n",
2307
- "published!\n",
2308
- "published!\n",
2309
- "published!\n",
2310
- "published!\n",
2311
- "published!\n",
2312
- "published!\n",
2313
- "published!\n",
2314
- "published!\n",
2315
- "published!\n",
2316
- "published!\n",
2317
- "published!\n",
2318
- "published!\n",
2319
- "published!\n",
2320
- "published!\n",
2321
- "published!\n",
2322
- "published!\n",
2323
- "published!\n",
2324
- "published!\n",
2325
- "published!\n",
2326
- "published!\n",
2327
- "published!\n",
2328
- "published!\n",
2329
- "published!\n",
2330
- "published!\n",
2331
- "published!\n",
2332
- "published!\n",
2333
- "published!\n",
2334
- "published!\n",
2335
- "published!\n",
2336
- "published!\n",
2337
- "published!\n",
2338
- "published!\n",
2339
- "published!\n",
2340
- "published!\n",
2341
- "published!\n",
2342
- "published!\n",
2343
- "published!\n",
2344
- "published!\n",
2345
- "published!\n",
2346
- "published!\n",
2347
- "published!\n",
2348
- "published!\n",
2349
- "published!\n",
2350
- "published!\n",
2351
- "published!\n",
2352
- "published!\n",
2353
- "published!\n",
2354
- "published!\n",
2355
- "published!\n",
2356
- "published!\n",
2357
- "published!\n",
2358
- "published!\n",
2359
- "published!\n",
2360
- "published!\n",
2361
- "published!\n",
2362
- "published!\n",
2363
- "published!\n",
2364
- "published!\n",
2365
- "published!\n",
2366
- "published!\n",
2367
- "published!\n",
2368
- "published!\n",
2369
- "published!\n",
2370
- "published!\n",
2371
- "published!\n",
2372
- "published!\n",
2373
- "published!\n",
2374
- "published!\n",
2375
- "published!\n",
2376
- "published!\n",
2377
- "published!\n",
2378
- "published!\n",
2379
- "published!\n",
2380
- "published!\n",
2381
- "published!\n",
2382
- "published!\n",
2383
- "published!\n",
2384
- "published!\n",
2385
- "published!\n",
2386
- "published!\n",
2387
- "published!\n",
2388
- "published!\n",
2389
- "published!\n",
2390
- "published!\n",
2391
- "published!\n",
2392
- "published!\n",
2393
- "published!\n",
2394
- "published!\n",
2395
- "published!\n",
2396
- "published!\n",
2397
- "published!\n",
2398
- "published!\n",
2399
- "published!\n",
2400
- "published!\n",
2401
- "published!\n",
2402
- "published!\n",
2403
- "published!\n",
2404
- "published!\n",
2405
- "published!\n",
2406
- "published!\n",
2407
- "published!\n",
2408
- "published!\n",
2409
- "published!\n",
2410
- "published!\n",
2411
- "published!\n",
2412
- "published!\n",
2413
- "published!\n",
2414
- "published!\n",
2415
- "published!\n",
2416
- "published!\n",
2417
- "published!\n",
2418
- "published!\n",
2419
- "published!\n",
2420
- "published!\n",
2421
- "published!\n",
2422
- "published!\n",
2423
- "published!\n",
2424
- "published!\n",
2425
- "published!\n",
2426
- "published!\n",
2427
- "published!\n",
2428
- "published!\n",
2429
- "published!\n",
2430
- "published!\n",
2431
- "published!\n",
2432
- "published!\n",
2433
- "published!\n",
2434
- "published!\n",
2435
- "published!\n",
2436
- "published!\n",
2437
- "published!\n",
2438
- "published!\n",
2439
- "published!\n",
2440
- "published!\n",
2441
- "published!\n",
2442
- "published!\n",
2443
- "published!\n",
2444
- "published!\n",
2445
- "published!\n",
2446
- "published!\n",
2447
- "published!\n",
2448
- "published!\n",
2449
- "published!\n",
2450
- "published!\n",
2451
- "published!\n",
2452
- "published!\n",
2453
- "published!\n",
2454
- "published!\n",
2455
- "published!\n",
2456
- "published!\n",
2457
- "published!\n",
2458
- "published!\n",
2459
- "published!\n",
2460
- "published!\n",
2461
- "published!\n",
2462
- "published!\n",
2463
- "published!\n",
2464
- "published!\n",
2465
- "published!\n",
2466
- "published!\n",
2467
- "published!\n",
2468
- "published!\n",
2469
- "published!\n",
2470
- "published!\n",
2471
- "published!\n",
2472
- "published!\n",
2473
- "published!\n",
2474
- "published!\n",
2475
- "published!\n",
2476
- "published!\n",
2477
- "published!\n",
2478
- "published!\n",
2479
- "published!\n",
2480
- "published!\n",
2481
- "published!\n",
2482
- "published!\n",
2483
- "published!\n",
2484
- "published!\n",
2485
- "published!\n",
2486
- "published!\n",
2487
- "published!\n",
2488
- "published!\n",
2489
- "published!\n",
2490
- "published!\n",
2491
- "published!\n",
2492
- "published!\n",
2493
- "published!\n",
2494
- "published!\n",
2495
- "published!\n",
2496
- "published!\n",
2497
- "published!\n",
2498
- "published!\n",
2499
- "published!\n",
2500
- "published!\n",
2501
- "published!\n",
2502
- "published!\n",
2503
- "published!\n",
2504
- "published!\n",
2505
- "published!\n",
2506
- "published!\n",
2507
- "published!\n",
2508
- "published!\n",
2509
- "published!\n",
2510
- "published!\n",
2511
- "published!\n",
2512
- "published!\n",
2513
- "published!\n",
2514
- "published!\n",
2515
- "published!\n",
2516
- "published!\n",
2517
- "published!\n",
2518
- "published!\n",
2519
- "published!\n",
2520
- "published!\n",
2521
- "published!\n",
2522
- "published!\n",
2523
- "published!\n",
2524
- "published!\n",
2525
- "published!\n",
2526
- "published!\n",
2527
- "published!\n",
2528
- "published!\n",
2529
- "published!\n",
2530
- "published!\n",
2531
- "published!\n",
2532
- "published!\n",
2533
- "published!\n",
2534
- "published!\n",
2535
- "published!\n",
2536
- "published!\n",
2537
- "published!\n",
2538
- "published!\n",
2539
- "published!\n",
2540
- "published!\n",
2541
- "published!\n",
2542
- "published!\n",
2543
- "published!\n",
2544
- "published!\n",
2545
- "published!\n",
2546
- "published!\n",
2547
- "published!\n",
2548
- "published!\n",
2549
- "published!\n",
2550
- "published!\n",
2551
- "published!\n",
2552
- "published!\n",
2553
- "published!\n",
2554
- "published!\n",
2555
- "published!\n",
2556
- "published!\n",
2557
- "published!\n",
2558
- "published!\n",
2559
- "published!\n",
2560
- "published!\n",
2561
- "published!\n",
2562
- "published!\n",
2563
- "published!\n",
2564
- "published!\n",
2565
- "published!\n",
2566
- "published!\n",
2567
- "published!\n",
2568
- "published!\n",
2569
- "published!\n",
2570
- "published!\n",
2571
- "published!\n",
2572
- "published!\n",
2573
- "published!\n",
2574
- "published!\n",
2575
- "published!\n",
2576
- "published!\n",
2577
- "published!\n",
2578
- "published!\n",
2579
- "published!\n",
2580
- "published!\n",
2581
- "published!\n",
2582
- "published!\n",
2583
- "published!\n",
2584
- "published!\n",
2585
- "published!\n",
2586
- "published!\n",
2587
- "published!\n",
2588
- "published!\n",
2589
- "published!\n",
2590
- "published!\n",
2591
- "published!\n",
2592
- "published!\n",
2593
- "published!\n",
2594
- "published!\n",
2595
- "published!\n",
2596
- "published!\n",
2597
- "published!\n",
2598
- "published!\n",
2599
- "published!\n",
2600
- "published!\n",
2601
- "published!\n",
2602
- "published!\n",
2603
- "published!\n",
2604
- "published!\n",
2605
- "published!\n",
2606
- "published!\n",
2607
- "published!\n",
2608
- "published!\n",
2609
- "published!\n",
2610
- "published!\n",
2611
- "published!\n",
2612
- "published!\n",
2613
- "published!\n",
2614
- "published!\n",
2615
- "published!\n",
2616
- "published!\n",
2617
- "published!\n",
2618
- "published!\n",
2619
- "published!\n",
2620
- "published!\n",
2621
- "published!\n",
2622
- "published!\n",
2623
- "published!\n",
2624
- "published!\n",
2625
- "published!\n",
2626
- "published!\n",
2627
- "published!\n",
2628
- "published!\n",
2629
- "published!\n",
2630
- "published!\n",
2631
- "published!\n",
2632
- "published!\n",
2633
- "published!\n",
2634
- "published!\n",
2635
- "published!\n",
2636
- "published!\n",
2637
- "published!\n",
2638
- "published!\n",
2639
- "published!\n",
2640
- "published!\n",
2641
- "published!\n",
2642
- "published!\n",
2643
- "published!\n",
2644
- "published!\n",
2645
- "published!\n",
2646
- "published!\n",
2647
- "published!\n",
2648
- "published!\n",
2649
- "published!\n",
2650
- "published!\n",
2651
- "published!\n",
2652
- "published!\n",
2653
- "published!\n",
2654
- "published!\n",
2655
- "published!\n",
2656
- "published!\n",
2657
- "published!\n",
2658
- "published!\n",
2659
- "published!\n",
2660
- "published!\n",
2661
- "published!\n",
2662
- "published!\n",
2663
- "published!\n",
2664
- "published!\n",
2665
- "published!\n",
2666
- "published!\n",
2667
- "published!\n",
2668
- "published!\n",
2669
- "published!\n",
2670
- "published!\n",
2671
- "published!\n",
2672
- "published!\n",
2673
- "published!\n",
2674
- "published!\n",
2675
- "published!\n",
2676
- "published!\n",
2677
- "published!\n",
2678
- "published!\n",
2679
- "published!\n",
2680
- "published!\n",
2681
- "published!\n",
2682
- "published!\n",
2683
- "published!\n",
2684
- "published!\n",
2685
- "published!\n",
2686
- "published!\n",
2687
- "published!\n",
2688
- "published!\n",
2689
- "published!\n",
2690
- "published!\n",
2691
- "published!\n",
2692
- "published!\n",
2693
- "published!\n"
2694
- ]
2695
- }
2696
- ],
2697
- "source": [
2698
- "\n",
2699
- "client = mqtt.Client(mqtt.CallbackAPIVersion.VERSION1, clientId)\n",
2700
- "client.connect(broker_address, broker_port)\n",
2701
- "topic = \"sensor_data\"\n",
2702
- "\n",
2703
- "def publish_sensor_data(): \n",
2704
- " for i in range(len(df)):\n",
2705
- "\n",
2706
- " data = {}\n",
2707
- " for col in df.columns:\n",
2708
- " data[col] = df[col][i]\n",
2709
- "\n",
2710
- " client.publish(topic, payload=json.dumps(data))\n",
2711
- " print(\"published!\")\n",
2712
- " time.sleep(0.2)\n",
2713
- "\n",
2714
- "\n",
2715
- "while True:\n",
2716
- " publish_sensor_data()\n",
2717
- " # time.sleep(0.1)\n",
2718
- "client.disconnect()"
2719
- ]
2720
- },
2721
- {
2722
- "cell_type": "code",
2723
- "execution_count": null,
2724
- "metadata": {},
2725
- "outputs": [],
2726
- "source": []
2727
- }
2728
- ],
2729
- "metadata": {
2730
- "kernelspec": {
2731
- "display_name": "smartbuilding",
2732
- "language": "python",
2733
- "name": "python3"
2734
- },
2735
- "language_info": {
2736
- "codemirror_mode": {
2737
- "name": "ipython",
2738
- "version": 3
2739
- },
2740
- "file_extension": ".py",
2741
- "mimetype": "text/x-python",
2742
- "name": "python",
2743
- "nbconvert_exporter": "python",
2744
- "pygments_lexer": "ipython3",
2745
- "version": "3.11.8"
2746
- }
2747
- },
2748
- "nbformat": 4,
2749
- "nbformat_minor": 2
2750
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
mqttpublisher.py ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import paho.mqtt.client as mqtt
2
+ import time
3
+ import random
4
+ import pandas as pd
5
+ import json
6
+
7
+ clientId = "smartbuilding"
8
+ broker_address = "localhost"
9
+ broker_port = 1883
10
+
11
+ df = pd.read_csv("data/demo_data2.csv")
12
+
13
+
14
+ client = mqtt.Client(mqtt.CallbackAPIVersion.VERSION1, clientId)
15
+ client.connect(broker_address, broker_port)
16
+ topic = "sensor_data"
17
+
18
+ def publish_sensor_data():
19
+ for i in range(len(df)):
20
+
21
+ data = {}
22
+ for col in df.columns:
23
+ data[col] = df[col][i]
24
+
25
+ client.publish(topic, payload=json.dumps(data))
26
+ print("published!")
27
+ time.sleep(0.2)
28
+
29
+
30
+ while True:
31
+ publish_sensor_data()
32
+ # time.sleep(0.1)
33
+ client.disconnect()
readme.txt ADDED
@@ -0,0 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---------------------------------------------------------------------------------
2
+ HOW TO RUN THE ENTIRE PIPELINE? -
3
+ ------------------------------- -
4
+ Datastreaming --> Datapipeline --> Dashboard -
5
+ _______________________________________________________________________________ -
6
+ 1. Activate the samrtbuilding environment -
7
+ 2. RUN the below files from smart-buildings directory -----> cd smart-buildings -
8
+ 3. RUN the mqttpublisher.py file -----> python mqttpublisher.py -
9
+ 4. RUN the dashboard.py file -----> streamlit run dashboard.py -
10
+ ---------------------------------------------------------------------------------
11
+
12
+
13
+ RTUPipeline:
14
+
15
+ This file handles the data preparation part. It first extracts the relevant parameters from the incoming data stream and creates the 30-minute data buffer for the prediction. Then apply the scaler on that buffer.
16
+
17
+ input:
18
+ scaler_1: Standard scaler RTU 1,2
19
+ scaler_2: Standard scaler RTU 2,3
20
+ Incoming datastream as a dataframe
21
+ output:
22
+ df_new1: prev 30 samples of input parameters - reshaped for RTU-1,2 prediction model
23
+ df_trans1: prev 31 samples of rtu parameters - residual is calculated w.r.t 31st sample and predicted value
24
+ df_new2: prev 30 samples of input parameters - reshaped for RTU-3,4 prediction model
25
+ df_trans2: prev 31 samples of rtu parameters - residual is calculated w.r.t 31st sample and predicted value
26
+
27
+
28
+
29
+
30
+ RTUAnomalizer1/2:
31
+
32
+ There are two files RTUAnomalizer1 and RTUAnomalizer2, both do the same function. One for RTU 1,2 and the other for RTU 3,4. This file handles the prediction and clustering part of the RTU anomalies/faults
33
+
34
+ input:
35
+ model: The prediction model.
36
+ kmeans_models: List of clustering models.
37
+ pca_models: List of PCA models.
38
+ df_new: prev 30 samples of input parameters - reshaped for prediction model - Received from RTUPipeline
39
+ df_trans: prev 31 samples of input parameters - residual is calculated w.r.t 31st sample - Received from RTUPipeline
40
+
41
+ output:
42
+ actual_list: List of actual values.
43
+ pred_list: List of predicted values.
44
+ resid_list: List of residual values.
45
+ resid_pca_list: List of residual values after PCA transformation.
46
+ distance_list: List of distances between residuals and cluster centers.
47
+ resid_list for RTU 1:onverted to 0 and 1 based on the threshold
48
+ resid_list for RTU 2: converted to 0 and 1 based on the threshold
49
+ fault_1: Flag indicating the presence of fault in RTU 1.
50
+ fault_2: Flag indicating the presence of fault in RTU 2.
51
+