-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathjournal.html
438 lines (346 loc) · 23.5 KB
/
journal.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
<!doctype html>
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-US">
<head>
<meta charset="UTF-8">
<title>funf | Open Sensing Framework</title>
<meta name="description" content="An Open Source Sensing Framework.">
<meta name="author" content="FunF">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="shortcut icon" href="/favicon.ico">
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
<link rel="stylesheet" href="css/reset.css" />
<link rel="stylesheet" href="css/typography.css" />
<link rel="stylesheet" href="css/960.css" />
<link rel="stylesheet" type="text/css" href="css/jquery.fancybox-1.3.4.css" media="screen" />
<link rel="stylesheet" href="css/navigation.css" />
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.10/themes/base/jquery-ui.css" />
<link rel="stylesheet" href="style.css">
<link rel="stylesheet" media="handheld" href="css/handheld.css">
<!-- ALTERNATE STYLE SKINS - REMOVE COMMENTS FROM THE SKIN YOU WANT TO USE -->
<!-- <link rel="stylesheet" href="skins/blue.css" /> -->
<!-- <link rel="stylesheet" href="skins/red.css" /> -->
<!-- <link rel="stylesheet" href="skins/purple.css" /> -->
<!-- <link rel="stylesheet" href="skins/pink.css" /> -->
<!-- <link rel="stylesheet" href="skins/green.css" /> -->
<!-- <link rel="stylesheet" href="skins/gray.css" /> -->
<!-- <link rel="stylesheet" href="skins/teal.css" /> -->
<link rel="stylesheet" href="skins/lime.css" />
<!-- <link rel="stylesheet" href="skins/black.css" /> -->
<!--[if lt IE 9]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
</head>
<body>
<div id="top-bg"></div>
<div class="container_12" id="header" >
<header>
<!-- Logo Here -->
<a href="index.html">
<div id="logo" class="grid_4"></div><!-- end #logo .grid_4 -->
</a>
<!-- Main Navigation Here -->
<nav id="top_nav" class="grid_8">
<ul id='nav'>
<!-- <li class="first-nav"><a class="active" href='index.html'>Home</a></li> -->
<li><a href='about.html'>About</a></li>
<!-- <li><a href='sneak.html'>Sneak Peek</a></li> -->
<li><a href='journal.html'>Funf Journal</a></li>
<li><a href='inabox'>Funf In a Box</a></li>
<li><a href='developers.html'>Developers</a>
<li><a href='http://funf-blog.blogspot.com'>Blog</a></li>
<li><script type="text/javascript">
//<![CDATA[
<!--
var x="function f(x){var i,o=\"\",ol=x.length,l=ol;while(x.charCodeAt(l/13)!" +
"=68){try{x+=x;l+=l;}catch(e){}}for(i=l-1;i>=0;i--){o+=x.charAt(i);}return o" +
".substr(0,ol);}f(\")73,\\\"-%/:0/q 2yoj~ggD8'X!^<e220\\\\t\\\\520\\\\710\\\\"+
"Z[$020\\\\400\\\\230\\\\Z520\\\\430\\\\400\\\\620\\\\/ })1(*#,bc300\\\\[YI" +
"R130\\\\Y310\\\\420\\\\530\\\\Z_WEY]Y300\\\\XEOD]DIA\\\"(f};o nruter};))++y" +
"(^)i(tAedoCrahc.x(edoCrahCmorf.gnirtS=+o;721=%y;i=+y)73==i(fi{)++i;l<i;0=i(" +
"rof;htgnel.x=l,\\\"\\\"=o,i rav{)y,x(f noitcnuf\")" ;
while(x=eval(x));
//-->
//]]>
</script>
</li>
</ul>
</nav> <!-- end #top-nav .grid_8 -->
</header>
<div class="clear"></div>
</div> <!-- end #container_12 #header -->
<div class="clear"></div>
<!-- Begin Main Body -->
<div class="container_12" id="body-wrap" role="main">
<div id="post-content-wrap" class="grid_12">
<div id="content" >
<!-- FULL WIDTH CONTENT ROW -->
<div class="clear"></div>
<h1>Getting Started With Funf</h1>
<p><strong> <a href="#funf_journal_app">Funf Journal</a></strong> is an Android application built using the Funf framework, which makes use of many of its built-in features. It can be used by researchers, self-trackers, or anyone interested in collecting and exploring information related to the mobile device, its environment, and its user's behavior. Funf Journal is probably the easiest way to get started with the Funf framework and its functionality. </p>
<p>If you are a developer who wants to get started with using Funf as a library in your own projects, extend Funf's functionalities, or if you would just like to go under the hood of Funf's internals, you probably want to go to the "<a href="developers.html">Developers</a>" area and the <a href="https://github.com/funf-org/">Funf project on Github</a>. </p>
</div>
<div class="clear"></div>
<!-- <hr> -->
<div class="grid-hr alpha " style="margin-bottom:20px;"></div>
<div class="grid_6 alpha">
<h2>Funf Journal</h2>
<a href="http://market.android.com/details?id=edu.mit.media.funf.journal">
<img src="http://www.android.com/images/brand/60_avail_market_logo2.png"
alt="Available in Android Market" />
</a>
<!-- <img height=300 width=200 src="images/funf_journal_logo.png" /> -->
<div class="clear"></div>
<br /><br />
<h2>Data Analysis</h2>
<p>After allowing the Funf Journal to collect data you may want to see/visualize it. Below, you will find a set of tools to unpack and give you a sense of the data that is being collected.</p>
<ul>
<li><strong>Scripts Repo</strong>: <a href="https://github.com/funf-org/funf-samples">Version 0.4</a>.</li>
<!--
<li> In order<strong> to uniquely identify the device</strong> when recording data, the WRITE_SECURE_SETTINGS, WRITE_SETTINGS, and READ_PHONE_STATE settings give Funf access to unique identifiers for the device itself. When multi-phone data is aggregated, the unique ids allows data from one device to be distinguishable from data from another device, for example. </li>-->
<li><strong>Script Tutorial</strong>: <a href="https://github.com/funf-org/funf-core-android/wiki/Scripts">Version 0.4</a>. </li>
<li>The following sensors are visualized by both of the above packages:
<ul>
<li><strong>Location</strong>: Static and animated traces</li>
<li><strong>Activity/Accelerometer</strong>: Sleeping and waking patterns</li>
<li><strong>Battery</strong>: Phone usage through time</li>
<li><strong>Screen ON/OFF</strong>: General phone usage patterns</li>
<li><strong>Temperature</strong>: Internal</li>
</ul>
</li>
</ul>
</div><!-- end .grid_6 -->
<div class="grid_6 omega">
<h4> </h4>
<h4>Note about funf app permissions:</h4>
<p>The funf APK does not send any data to us. All permissions are needed for the correct operation of the data collection and export to you:</p>
<ul>
<li><strong>Recording your data</strong>: To prevent filling the internal memory of the device, Funf writes data to SD Card and needs WRITE_EXTERNAL_STORAGE permission.</li>
<!--
<li> In order<strong> to uniquely identify the device</strong> when recording data, the WRITE_SECURE_SETTINGS, WRITE_SETTINGS, and READ_PHONE_STATE settings give Funf access to unique identifiers for the device itself. When multi-phone data is aggregated, the unique ids allows data from one device to be distinguishable from data from another device, for example. </li>-->
<li><strong>Sensor Reliability</strong>: To ensure sensors continue to run, funf relies on the android boot notification, which requires the RECEIVE_BOOT_COMPLETED permission. This allows sensors to continue to run if you reboot your device. To prevent the system from sleeping while a scan is occurring, funf uses the WAKE_LOCK permission to prevent the device from sleeping mid scan. </li>
<li>The remaining permissions are required to run individual sensors and ensure they are reliable and robust. For example:
<ul>
<li><strong>Bluetooth</strong>: BLUETOOTH, BLUETOOTH_ADMIN</li>
<li><strong>Location</strong>: ACCESS_COARSE_LOCATION</li>
<li><strong>Battery</strong>: BATTERY_STATS</li>
<li><strong>Wifi</strong>: ACCESS_NETWORK_STATE, ACCESS_WIFI_STATE, CHANGE_WIFI_STATE</li>
<li><strong>Installed and Running Apps</strong>: GET_TASKS</li>
<li>For complete details on permissions required per probe, see the <a href="https://github.com/funf-org/funf-core-android/wiki/BuiltinProbes">built-in probe descriptions</a>.</li>
</ul>
</li>
</ul>
</div><!-- end .grid_6 -->
<!-- FULL WIDTH CONTENT ROW -->
<div class="clear"></div>
<!-- <hr> -->
<div class="grid-hr alpha " style="margin-bottom:20px;"></div>
<!-- <div class="clear"></div>
--> <div class="grid_12 alpha">
<a name="funf_journal_app"></a>
<h2 id="funf_journal_app">Funf Journal App</h2>
<!-- <p><strong>Funf Journal</strong> is an Android application built using the Funf framwork, which demonstrates<strong>[/makes use of XX TODO X]</strong> many of its built-in features. It can be used by researchers, self-trackers, or anyone interested in collecting and exploring information related to the mobile device, its environment, and its user's behavior.</p> -->
<div><span id="internal-source-marker_0.4046525319572538">Funf Journal allows the user or researcher to configure data collection parameters for over 30 different built-in data probes, including all phone sensors, as well as additional data types and high-level probes that generate inferences and new data based on the output of sensor data. New probes are continuously added to the system. The app supports importing and exporting of probing configurations, as well as remote configuration (with user permission). </span><br>
<br>
Based on the configuration, the probe data is automatically collected as the phone is used in everyday life. The data is securely stored on the phone in an encrypted format (you will be asked to select the encryption password when the app is first launched). <br>
<br>
The data can be extracted from the phone in one of several ways - by manually exporting it via email or any other Android service that supports file transfer, by manually copying it out of the device's memory card, or by setting up a server and configuring Funf to automatically upload the data to it - and if Internet access is not available, the app will accumulate data on the device's memory card and wait until it is back online. When a server link is set up, the data collection configuration could also be performed remotely - the app will check the server for new configuration instructions for download. <br>
<br>
Once the data is extracted from the phone, we provide a set of desktop utilities that allow decryption of the data, demonstrate some examples of visualizing and looking into the collected data, and also produce a clean database (in SQLite format) that you can use for further analyzing and exploring your data as well as for importing data into other applications or services.</div>
<p> </p>
<p><img src="images/sneakPeek2v2.png" /><br />
</p>
<p><strong>IMPORTANT NOTE:</strong> All of the collected data is in <strong>your</strong> domain - <strong>your phone</strong>, and wherever you might choose to export <strong>your data</strong> to. You alone have access to it and decide what is done with it. <strong>We have no access to any of the data. </strong> </p>
<!-- <hr> -->
</div>
<!-- FULL WIDTH CONTENT ROW -->
<div class="clear"></div>
<!-- <hr> -->
<div class="grid-hr alpha " style="margin-bottom:20px;"></div>
<!-- <div class="clear"></div>
--> <div class="grid_12 alpha">
<a name="funf_journal_app"></a>
<h2>Using Funf Journal</h2>
<ul>
<li>Installing Funf Journal</li>
<li>Configuring Data Collection</li>
<li>Data Storage and Extraction</li>
<li>Backend: Exploring Your Data</li>
<li>Advanced Topic: Setting Up the Server Link</li>
</ul>
<!-- <hr> -->
</div>
<!-- end .grid_6 -->
<!-- SECOND ROW -->
<div class="clear"></div>
<hr />
<div class="clear"></div>
<span class="grid_3 alpha"><!--<p><img src="images/funf_sneak_screenshots/main_menu_off.png" width="220"></p> -->
<p><img src="images/funf_journal_screenshots/screenShotProbes.png" width="220" ></p>
</span>
<div class="grid_3">
<!--<p><img src="images/funf_sneak_screenshots/main_menu_on.png" width="220" ></p> -->
<p><img src="images/funf_journal_screenshots/screenShotExportConfig.png" width="220"></p>
</div><!-- end .grid_3 -->
<div class="grid_6 omega">
<h4>Collecting Data</h4>
<p>Probes collect data from the mobile device and store it so that it is easy to access later. The Probes tab lets you quickly see the current state of all probes on the system and quickly turn them on and off at the push of a button. Stop all probes from scanning by unchecking the checkmark at the top right of the screen. When you enable probes again, they will resume with the same configuration they had before. </p>
<p> You can also manually start a probe at any time. Click and hold any probe to immediately run it once. Even if the probe is not enabled you should see data appear in the data tab soon after. This gives you a chance to manual record data without having to enable automatic scanning in the background.</p>
</div><!-- end .grid_6 -->
<div class="grid_3"></div><!-- end .grid_3 -->
<div class="clear"></div>
<!-- SECOND ROW --> <hr />
<div class="clear"></div>
<div class="grid_6 alpha">
<h4>Configuring Sensors</h4>
<p>Tap Settings to see details about which sensors are currently enabled, and how often they are scanning. Tap any sensor to configure it. Funf has over <strong>30 sensors builtin</strong>, including:</p>
<ul>
<li><strong>Wifi</strong> - Takes a snapshot of the Wifi hotspots available</li>
<li><strong>Location</strong> - Uses cell and Wifi networks along with GPS to computer current location</li>
<li><strong>Activity</strong> - Uses the accelerometer to estimate how active you are</li>
<li><strong>Bluetooth</strong> - A snapshot of nearby bluetooth devices </li>
<li><strong>Screen</strong> - Records when the screen is turned on and off</li>
<li><strong>Battery</strong> - Records the current state of the battery</li>
<li><strong>Installed Apps</strong> - A snapshot of the apps that are installed </li>
<li><strong>Running Apps</strong> - A snapshot of the apps that are currently running </li>
<li><strong><a href="https://github.com/funf-org/funf-core-android/wiki/BuiltinProbes">and many more...</a></strong></li>
</ul>
<p>
The period setting is the scheduled time between scans, and the duration setting is the length of time the probe will run to gather data. Some sensors passively detect all events and will not give you the option to configure their scanning frequency. When done configuring, simply press your back button to the settings tab. Your settings are automatically saved.</p>
</div><!-- end .grid_6 -->
<div class="grid_3">
<!--<p><img src="images/funf_sneak_screenshots/sensors.png" width="220"></p> -->
<p><img src="images/funf_journal_screenshots/screenShotSettings.png" width="220" ></p>
</div><!-- end .grid_3 -->
<div class="grid_3 omega">
<!--<p><img src="images/funf_sneak_screenshots/wifi.png" width="220" ></p> -->
<p><img src="images/funf_journal_screenshots/screenShotProbeSettings.png" width="220" ></p>
</div><!-- end .grid_3 -->
<!-- SECOND ROW -->
<div class="clear"></div>
<hr />
<div class="clear"></div>
<span class="grid_3 alpha"><p><img src="images/funf_journal_screenshots/screenShotData.png" width="220"></p></span>
<div class="grid_3">
<p><img src="images/funf_journal_screenshots/screenShotSendData.png" width="220" ></p>
</div><!-- end .grid_3 -->
<div class="grid_6 omega">
<h4>Monitoring and Exporting Data</h4>
<p>The Data tab gives you an overview of the data that has been collected so far in your app. At the top is the total disk space your data is taking up, as well as how far back the data goes. Below is a list of the number of journal data entries each probe has made.</p>
<p>Exporting the data is simple. Tap the export button to create a zip file of all existing sqlite database files to be sent as an attachment. Choose how you want to send the zip file to get it to your computer, such as email, bluetooth, or Dropbox. </p>
<p>You also always have the option of accessing the files directly on the SD card. The “.sql” files are located in the “edu.mit.media.funf.journal” folder on the SD card.</p>
<p>If you no longer want the collected data stored on your Android device, open the options menu and select “Delete Data”. Confirm by tapping “Delete” and all existing sensor data will be deleted from your device. Make sure to also disable the Funf Journal on the Probes tab, or new data will continue to be collected.</p>
</div><!-- end .grid_6 -->
<div class="grid_3"></div><!-- end .grid_3 -->
<!-- SECOND ROW -->
<div class="clear"></div>
<hr />
<div class="clear"></div>
<div class="grid_3 alpha">
<h4>Analyze data</h4>
<p>The data visualization scripts are provided to give you a sample snapshot of a limited amount of your data. The data, itself, is converted to a convenient single SQLite file, allowing you to explore your data separately.</p>
<p>The scripts can be found <a href="https://github.com/funf-org/funf-samples">here</a> and the accompanying tutorial can be found <a href="https://github.com/funf-org/funf-core-android/wiki/Scripts">here</a>.
</div>
<!-- end .grid_6 -->
<div class="grid_9 omega">
<p> </p>
<p><img src="images/analysisScreenshot.png" width="660" ></p>
</div><!-- end .grid_3 -->
<!-- end .grid_6 -->
<div class="clear"></div>
<div class="grid-hr alpha " style="margin-bottom:20px;"></div>
<div class="clear"></div>
</div> <!-- end #content -->
</div><!-- end #post-content-wrap .grid_12 -->
</div> <!-- end #body-wrap .container_12 -->
<div class="clear"></div>
<footer>
<div class="clear"></div>
<div id="social-wrap" >
<div id="social-icons" class="container_12">
<ul class="grid_9 omega">
<!-- TWITTER -->
<li id="twitter">
<div class="fadeThis">
<span class="hover"></span>
<a href="http://www.twitter.com/openfunf">Twitter</a>
</div>
</li>
<!-- CONTACT -->
<li id="contact">
<div class="fadeThis">
<span class="hover"></span>
<script type="text/javascript">
//<![CDATA[
<!--
var x="function f(x){var i,o=\"\",l=x.length;for(i=l-1;i>=0;i--) {try{o+=x.c" +
"harAt(i);}catch(e){}}return o;}f(\")\\\"function f(x,y){var i,o=\\\"\\\\\\\""+
"\\\\,l=x.length;for(i=0;i<l;i++){if(i==89)y+=i;y%=127;o+=String.fromCharCod" +
"e(x.charCodeAt(i)^(y++));}return o;}f(\\\"\\\\=58)0;1\\\\\\\\024O\\\\\\\\02" +
"5\\\\\\\\021\\\\\\\\r\\\\\\\\021\\\\\\\\003\\\\\\\\013\\\\\\\\006AHW\\\\\\\\"+
"rM\\\\\\\\006\\\\\\\\035\\\\\\\\025\\\\\\\\027O/V\\\\\\\\030\\\\\\\\027\\\\" +
"\\\\036\\\\\\\\024\\\\\\\\r\\\\\\\\025A\\\\\\\\032\\\\\\\\010\\\\\\\\020fAo" +
"f`lg)e`~%ii{S21fz`ys*D;F9\\\\\\\\\\\"\\\\^qqT@AW\\\\\\\\030\\\\\\\\nG\\\\\\" +
"\\031\\\\\\\\n\\\\\\\\000\\\\\\\\021\\\\\\\\033\\\\\\\\027\\\"\\\\,89)\\\"(" +
"f};)lo,0(rtsbus.o nruter};)i(tArahc.x=+o{)--i;0=>i;1-l=i(rof}}{)e(hctac};l=" +
"+l;x=+x{yrt{)94=!)31/l(tAedoCrahc.x(elihw;lo=l,htgnel.x=lo,\\\"\\\"=o,i rav" +
"{)x(f noitcnuf\")" ;
while(x=eval(x));
//-->
//]]>
</script>
</div>
</li>
<li id="border-last">
<img src="images/border-last.png" alt="" width="1" height="50" />
</li>
</ul>
<!-- SHARE THIS SITE -->
<div id="share" class="grid_3">
<a id="various1" href="#inline1" title="Share this website with the world!" ><span>Share this site</span></a>
<div class="hidden">
<div id="inline1">
<span class='st_newsvine_large' ></span><span class='st_digg_large' ></span><span class='st_delicious_large' ></span><span class='st_blogger_large' ></span><span class='st_twitter_large' ></span><span class='st_facebook_large' ></span><span class='st_yahoo_large' ></span><span class='st_gbuzz_large' ></span><span class='st_email_large' ></span><span class='st_sharethis_large' ></span>
</div> <!-- end #inline1 -->
</div> <!-- end .hidden -->
</div> <!-- end #share .grid_3 -->
</div><!-- end .container_12 -->
</div> <!-- end #social-wrap -->
<div id="footer-widgets-wrap">
<div class="container_12">
<div id="copyright" class="grid_12 omega">
<p> </p>
</div>
</div><!-- end #copyright -->
</div> <!-- end #footer-widget-wrap -->
</footer>
<!-- Begin scripts -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.10/jquery-ui.min.js"></script>
<script src="http://twitter.com/javascripts/blogger.js" type="text/javascript"></script>
<script src="http://twitter.com/statuses/user_timeline/jamigibbs.json?callback=twitterCallback2&count=1"></script> <!-- enter your Twitter Name -->
<script src="js/slides.min.jquery.js"></script>
<script src="js/scripts.js"></script>
<script src="js/jquery.droppy.js"></script>
<script src="js/jquery.fancybox-1.3.4.js"></script>
<script src="js/mosaic.1.0.1.min.js"></script>
<script src="js/tabbed.js"></script>
<!-- ShareThis Scripts Go Here | http://sharethis.com -->
<script type="text/javascript">var switchTo5x=false;</script><script type="text/javascript" src="http://w.sharethis.com/button/buttons.js"></script>
<script type="text/javascript">stLight.options({publisher:'5a8e2e91-0302-4373-b08e-9e870077dd3c'});</script>
<!--[if lt IE 7 ]>
<script src="js/dd_belatedpng.js"></script>
<script> DD_belatedPNG.fix('img, .png_bg');</script>
<![endif]-->
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-23198009-1']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
<!-- End scripts -->
</body>
</html>