From 8a05459af35f5931be45d52f64cb360312df4dc9 Mon Sep 17 00:00:00 2001 From: Yasuyuki Tanaka Date: Thu, 25 Apr 2019 13:51:04 +0200 Subject: [PATCH 01/50] Remove metas, files under which are not necessary any more --- metas/README.md | 14 - metas/euratech.csv | 222 - metas/gen_sites.py | 24 - metas/grenoble.csv | 251 - metas/lille.json | 2087 ------- metas/lille_eui64.csv | 231 - metas/locations.json | 11259 ----------------------------------- metas/process_resources.py | 24 - metas/rennes.csv | 223 - metas/resources.json | 1 - metas/sites.csv | 2 - metas/states.json | 2123 ------- metas/strasbourg.csv | 241 - metas/strasbourg.json | 2552 -------- metas/strasbourg_eui64.csv | 65 - metas/update_locations.py | 58 - metas/update_states.py | 39 - 17 files changed, 19416 deletions(-) delete mode 100644 metas/README.md delete mode 100644 metas/euratech.csv delete mode 100644 metas/gen_sites.py delete mode 100644 metas/grenoble.csv delete mode 100644 metas/lille.json delete mode 100644 metas/lille_eui64.csv delete mode 100644 metas/locations.json delete mode 100644 metas/process_resources.py delete mode 100644 metas/rennes.csv delete mode 100644 metas/resources.json delete mode 100644 metas/sites.csv delete mode 100644 metas/states.json delete mode 100644 metas/strasbourg.csv delete mode 100644 metas/strasbourg.json delete mode 100644 metas/strasbourg_eui64.csv delete mode 100644 metas/update_locations.py delete mode 100644 metas/update_states.py diff --git a/metas/README.md b/metas/README.md deleted file mode 100644 index 86fc18f737..0000000000 --- a/metas/README.md +++ /dev/null @@ -1,14 +0,0 @@ -This folder contains: - -* a CSV file per location, listing the location of each mote. -* `sites.csv` which lists the location files. This file is needed by the web interface. -* `gen_sites.py` which generates `sites.csv` based on the current location files. -* `update_states` that generates a states.json file with all the nodes in "Active" state -* `update_locations` that generates a locations.json file with all the nodes location - -Each location file corresponds is a CSV file which contains the following columns: - -* `mac`: TODO -* `x`: TODO -* `y`: TODO -* `z`: TODO diff --git a/metas/euratech.csv b/metas/euratech.csv deleted file mode 100644 index f12b592627..0000000000 --- a/metas/euratech.csv +++ /dev/null @@ -1,222 +0,0 @@ -mac,x,y,z -14-15-92-00-12-91-c3-21,3.6,2.5,0.0 -14-15-92-00-12-91-c2-3a,3.0,2.5,0.0 -14-15-92-00-12-91-cf-17,2.4,2.5,0.0 -14-15-92-00-12-91-bd-11,1.8,2.5,0.0 -14-15-92-00-12-91-b6-bc,1.2,2.5,0.0 -14-15-92-00-12-91-cc-aa,3.6,2.5,0.6 -14-15-92-00-12-91-b1-54,3.0,2.5,0.6 -14-15-92-00-12-91-b2-7b,2.4,2.5,0.6 -14-15-92-00-12-91-bc-2d,1.8,2.5,0.6 -14-15-92-00-12-91-bc-b6,1.2,2.5,0.6 -14-15-92-00-12-91-c3-c4,3.6,2.5,1.2 -14-15-92-00-12-91-c8-a8,3.0,2.5,1.2 -14-15-92-00-12-91-c1-5b,2.4,2.5,1.2 -14-15-92-00-12-91-b0-34,1.8,2.5,1.2 -14-15-92-00-12-91-b4-71,1.2,2.5,1.2 -14-15-92-00-12-91-bb-f0,3.6,2.5,1.8 -14-15-92-00-12-91-b9-86,3.0,2.5,1.8 -14-15-92-00-12-91-be-29,2.4,2.5,1.8 -14-15-92-00-12-91-c1-02,1.8,2.5,1.8 -14-15-92-00-12-91-b0-b4,1.2,2.5,1.8 -14-15-92-00-12-91-af-c7,3.6,2.5,2.4 -14-15-92-00-12-91-bc-13,3.0,2.5,2.4 -14-15-92-00-12-91-b2-bb,2.4,2.5,2.4 -14-15-92-00-12-91-c6-df,1.8,2.5,2.4 -14-15-92-00-12-91-c4-c8,1.2,2.5,2.4 -14-15-92-00-12-91-c2-6d,3.6,2.5,3.0 -14-15-92-00-12-91-b9-66,3.0,2.5,3.0 -14-15-92-00-12-91-cb-f3,2.4,2.5,3.0 -14-15-92-00-12-91-b5-38,1.8,2.5,3.0 -14-15-92-00-12-91-c9-46,1.2,2.5,3.0 -14-15-92-00-12-91-c4-69,3.6,2.5,3.6 -14-15-92-00-12-91-ca-fe,3.0,2.5,3.6 -14-15-92-00-12-91-c6-dc,2.4,2.5,3.6 -14-15-92-00-12-91-af-ad,1.8,2.5,3.6 -14-15-92-00-12-91-b5-4f,1.2,2.5,3.6 -14-15-92-00-12-91-c9-2c,3.6,2.5,4.2 -14-15-92-00-12-91-b4-68,3.0,2.5,4.2 -14-15-92-00-12-91-c2-b6,2.4,2.5,4.2 -14-15-92-00-12-91-c6-9d,1.8,2.5,4.2 -14-15-92-00-12-91-c0-e8,1.2,2.5,4.2 -14-15-92-00-12-91-cd-ec,3.6,2.5,4.8 -14-15-92-00-12-91-c7-21,3.0,2.5,4.8 -14-15-92-00-12-91-c7-f0,2.4,2.5,4.8 -14-15-92-00-12-91-c8-f3,1.8,2.5,4.8 -14-15-92-00-12-91-ce-61,1.2,2.5,4.8 -14-15-92-00-12-91-b2-bf,3.6,2.5,5.4 -14-15-92-00-12-91-bd-2d,3.0,2.5,5.4 -14-15-92-00-12-91-be-4d,2.4,2.5,5.4 -14-15-92-00-12-91-b8-43,1.8,2.5,5.4 -14-15-92-00-12-91-ba-95,1.2,2.5,5.4 -14-15-92-00-12-91-ba-46,3.6,2.5,6.0 -14-15-92-00-12-91-be-4b,3.0,2.5,6.0 -14-15-92-00-12-91-b9-5f,2.4,2.5,6.0 -14-15-92-00-12-91-1c-e4,1.8,2.5,6.0 -14-15-92-00-12-91-c8-7e,1.2,2.5,6.0 -14-15-92-00-12-91-c4-c2,3.0,2.5,6.6 -14-15-92-00-12-91-cb-e9,2.4,2.5,6.6 -14-15-92-00-12-91-c5-c8,1.8,2.5,6.6 -14-15-92-00-12-91-c3-d6,1.2,2.5,6.6 -14-15-92-00-12-91-c0-88,3.6,2.5,7.2 -14-15-92-00-12-91-c1-1c,3.0,2.5,7.2 -14-15-92-00-12-91-c1-1e,2.4,2.5,7.2 -14-15-92-00-12-91-bc-63,1.2,2.5,7.2 -14-15-92-00-12-91-c8-ad,3.6,2.5,7.8 -14-15-92-00-12-91-c2-86,3.0,2.5,7.8 -14-15-92-00-12-91-bc-48,2.4,2.5,7.8 -14-15-92-00-12-91-ce-d3,1.8,2.5,7.8 -14-15-92-00-12-91-c6-89,3.6,2.5,8.4 -14-15-92-00-12-91-c0-dc,3.0,2.5,8.4 -14-15-92-00-12-91-b0-1f,2.4,2.5,8.4 -14-15-92-00-12-91-bb-ea,1.8,2.5,8.4 -14-15-92-00-12-91-cb-78,1.2,2.5,8.4 -14-15-92-00-12-91-cc-ed,3.6,2.5,9.0 -14-15-92-00-12-91-cb-08,3.0,2.5,9.0 -14-15-92-00-12-91-c9-73,2.4,2.5,9.0 -14-15-92-00-12-91-c2-41,1.8,2.5,9.0 -14-15-92-00-12-91-ba-bc,1.2,2.5,9.0 -14-15-92-00-12-91-b5-f1,3.6,2.5,9.6 -14-15-92-00-12-91-c8-c8,3.0,2.5,9.6 -14-15-92-00-12-91-c6-40,2.4,2.5,9.6 -14-15-92-00-12-91-ca-25,1.8,2.5,9.6 -14-15-92-00-12-91-b6-59,1.2,2.5,9.6 -14-15-92-00-12-91-b5-cc,3.6,2.5,10.2 -14-15-92-00-12-91-b2-c1,3.0,2.5,10.2 -14-15-92-00-12-91-cd-82,2.4,2.5,10.2 -14-15-92-00-12-91-b3-25,1.8,2.5,10.2 -14-15-92-00-12-91-cc-1b,1.2,2.5,10.2 -14-15-92-00-12-91-b4-2b,3.6,2.5,10.8 -14-15-92-00-12-91-c4-ea,3.0,2.5,10.8 -14-15-92-00-12-91-b6-a3,2.4,2.5,10.8 -14-15-92-00-12-91-b3-1a,1.8,2.5,10.8 -14-15-92-00-12-91-b3-81,1.2,2.5,10.8 -14-15-92-00-12-91-c3-42,3.6,3.4,0.0 -14-15-92-00-12-91-c0-ab,3.0,3.4,0.0 -14-15-92-00-12-91-c8-3b,2.4,3.4,0.0 -14-15-92-00-12-91-b3-6b,1.8,3.4,0.0 -14-15-92-00-12-91-b4-db,1.2,3.4,0.0 -14-15-92-00-12-91-b8-71,3.6,3.4,0.6 -14-15-92-00-12-91-bd-e6,3.0,3.4,0.6 -14-15-92-00-12-91-bc-c4,2.4,3.4,0.6 -14-15-92-00-12-91-be-f4,1.8,3.4,0.6 -14-15-92-00-12-91-1c-9e,1.2,3.4,0.6 -14-15-92-00-12-91-af-78,3.6,3.4,1.2 -14-15-92-00-12-91-ca-e0,3.0,3.4,1.2 -14-15-92-00-12-91-c3-e5,2.4,3.4,1.2 -14-15-92-00-12-91-b8-3b,1.8,3.4,1.2 -14-15-92-00-12-91-bf-14,1.2,3.4,1.2 -14-15-92-00-12-91-cf-2e,3.6,3.4,1.8 -14-15-92-00-12-91-bd-f3,3.0,3.4,1.8 -14-15-92-00-12-91-b6-1a,2.4,3.4,1.8 -14-15-92-00-12-91-ce-b6,1.8,3.4,1.8 -14-15-92-00-12-91-c7-35,1.2,3.4,1.8 -14-15-92-00-12-91-bb-0a,3.6,3.4,2.4 -14-15-92-00-12-91-c4-d2,3.0,3.4,2.4 -14-15-92-00-12-91-bc-e9,2.4,3.4,2.4 -14-15-92-00-12-91-ba-9d,1.8,3.4,2.4 -14-15-92-00-12-91-ce-3a,1.2,3.4,2.4 -14-15-92-00-12-91-1b-fa,3.6,3.4,3.0 -14-15-92-00-12-91-c8-34,3.0,3.4,3.0 -14-15-92-00-12-91-1f-91,2.4,3.4,3.0 -14-15-92-00-12-91-bb-b4,1.8,3.4,3.0 -14-15-92-00-12-91-1f-9e,1.2,3.4,3.0 -14-15-92-00-12-91-c7-4d,3.6,3.4,3.6 -14-15-92-00-12-91-c6-f5,3.0,3.4,3.6 -14-15-92-00-12-91-b8-db,2.4,3.4,3.6 -14-15-92-00-12-91-1c-af,1.8,3.4,3.6 -14-15-92-00-12-91-c9-2a,1.2,3.4,3.6 -14-15-92-00-12-91-bb-a2,3.6,3.4,4.2 -14-15-92-00-12-91-c2-0a,3.0,3.4,4.2 -14-15-92-00-12-91-ca-c8,2.4,3.4,4.2 -14-15-92-00-12-91-bd-ef,1.8,3.4,4.2 -14-15-92-00-12-91-b7-98,1.2,3.4,4.2 -14-15-92-00-12-91-c1-98,3.6,3.4,4.8 -14-15-92-00-12-91-c2-d0,3.0,3.4,4.8 -14-15-92-00-12-91-bf-4d,2.4,3.4,4.8 -14-15-92-00-12-91-c3-b1,1.8,3.4,4.8 -14-15-92-00-12-91-b7-23,1.2,3.4,4.8 -14-15-92-00-12-91-b7-48,3.6,3.4,5.4 -14-15-92-00-12-91-1b-fc,3.0,3.4,5.4 -14-15-92-00-12-91-b5-84,2.4,3.4,5.4 -14-15-92-00-12-91-b1-8d,1.8,3.4,5.4 -14-15-92-00-12-91-b5-c9,1.2,3.4,5.4 -14-15-92-00-12-91-c5-06,3.6,3.4,6.0 -14-15-92-00-12-91-bc-d3,3.0,3.4,6.0 -14-15-92-00-12-91-cd-df,2.4,3.4,6.0 -14-15-92-00-12-91-bc-46,1.8,3.4,6.0 -14-15-92-00-12-91-b9-84,1.2,3.4,6.0 -14-15-92-00-12-91-ce-38,3.6,3.4,6.6 -14-15-92-00-12-91-b2-b8,3.0,3.4,6.6 -14-15-92-00-12-91-bc-12,2.4,3.4,6.6 -14-15-92-00-12-91-cb-0c,1.8,3.4,6.6 -14-15-92-00-12-91-c5-f9,1.2,3.4,6.6 -14-15-92-00-12-91-b2-46,3.6,3.4,7.2 -14-15-92-00-12-91-c2-2f,3.0,3.4,7.2 -14-15-92-00-12-91-b0-e0,2.4,3.4,7.2 -14-15-92-00-12-91-cf-07,1.8,3.4,7.2 -14-15-92-00-12-91-b8-c6,1.2,3.4,7.2 -14-15-92-00-12-91-b2-82,3.6,3.4,7.8 -14-15-92-00-12-91-c1-67,3.0,3.4,7.8 -14-15-92-00-12-91-c5-34,2.4,3.4,7.8 -14-15-92-00-12-91-b3-1c,1.8,3.4,7.8 -14-15-92-00-12-91-bc-60,1.2,3.4,7.8 -14-15-92-00-12-91-cd-ba,3.6,3.4,8.4 -14-15-92-00-12-91-c7-03,3.0,3.4,8.4 -14-15-92-00-12-91-cd-29,2.4,3.4,8.4 -14-15-92-00-12-91-c3-a3,1.8,3.4,8.4 -14-15-92-00-12-91-cc-1d,1.2,3.4,8.4 -14-15-92-00-12-91-c6-ba,3.6,3.4,9.0 -14-15-92-00-12-91-b3-20,3.0,3.4,9.0 -14-15-92-00-12-91-cc-61,2.4,3.4,9.0 -14-15-92-00-12-91-b1-f4,1.8,3.4,9.0 -14-15-92-00-12-91-b4-6b,1.2,3.4,9.0 -14-15-92-00-12-91-c7-aa,3.6,3.4,9.6 -14-15-92-00-12-91-c5-40,3.0,3.4,9.6 -14-15-92-00-12-91-ba-5e,2.4,3.4,9.6 -14-15-92-00-12-91-b3-bd,1.8,3.4,9.6 -14-15-92-00-12-91-bc-23,1.2,3.4,9.6 -14-15-92-00-12-91-c6-25,3.6,3.4,10.2 -14-15-92-00-12-91-be-d4,3.0,3.4,10.2 -14-15-92-00-12-91-1f-7a,2.4,3.4,10.2 -14-15-92-00-12-91-c1-c8,1.8,3.4,10.2 -14-15-92-00-12-91-bf-29,1.2,3.4,10.2 -14-15-92-00-12-91-c3-04,3.6,3.4,10.8 -14-15-92-00-12-91-c3-70,3.0,3.4,10.8 -14-15-92-00-12-91-c9-1c,2.4,3.4,10.8 -14-15-92-00-12-91-c0-35,1.8,3.4,10.8 -14-15-92-00-12-91-c5-fe,1.2,3.4,10.8 -14-15-92-00-12-91-c9-13,0.0,3.28,11.32 -14-15-92-00-12-91-ce-49,0.6,3.28,11.32 -14-15-92-00-12-91-bb-da,1.2,3.28,11.32 -14-15-92-00-12-91-af-f2,1.8,3.28,11.32 -14-15-92-00-12-91-ca-e8,2.4,3.28,11.32 -14-15-92-00-12-91-bd-d1,3.0,3.28,11.32 -14-15-92-00-12-91-b6-8e,3.6,3.28,11.32 -14-15-92-00-12-91-cb-6a,4.2,3.28,11.32 -14-15-92-00-12-91-cc-68,4.8,3.28,11.32 -14-15-92-00-12-91-c3-6b,0.0,2.67,11.32 -14-15-92-00-12-91-c4-16,0.6,2.67,11.32 -14-15-92-00-12-91-b8-63,1.2,2.67,11.32 -14-15-92-00-12-91-bd-65,1.8,2.67,11.32 -14-15-92-00-12-91-c2-3c,2.4,2.67,11.32 -14-15-92-00-12-91-bd-5c,3.0,2.67,11.32 -14-15-92-00-12-91-ce-56,3.6,2.67,11.32 -14-15-92-00-12-91-c4-47,4.2,2.67,11.32 -14-15-92-00-12-91-c3-3a,4.8,2.67,11.32 -14-15-92-00-12-91-ce-00,1.1,0.25,11.32 -14-15-92-00-12-91-c1-17,1.1,0.9,11.32 -14-15-92-00-12-91-1f-43,1.1,1.55,11.32 -14-15-92-00-12-91-c2-c8,1.1,2.2,11.32 -14-15-92-00-12-91-af-75,1.55,0.25,11.32 -14-15-92-00-12-91-b9-8e,1.55,0.9,11.32 -14-15-92-00-12-91-bd-00,1.55,1.55,11.32 -14-15-92-00-12-91-bb-e4,1.55,2.2,11.32 -14-15-92-00-12-91-c0-13,3.25,0.25,11.32 -14-15-92-00-12-91-1f-71,3.25,0.9,11.32 -14-15-92-00-12-91-c2-b8,3.25,1.55,11.32 -14-15-92-00-12-91-c8-39,3.25,2.2,11.32 -14-15-92-00-12-91-b2-ee,3.7,0.25,11.32 -14-15-92-00-12-91-bd-79,3.7,0.9,11.32 -14-15-92-00-12-91-b7-3b,3.7,1.55,11.32 -14-15-92-00-12-91-cd-89,3.7,2.2,11.32 diff --git a/metas/gen_sites.py b/metas/gen_sites.py deleted file mode 100644 index 2d78c5672a..0000000000 --- a/metas/gen_sites.py +++ /dev/null @@ -1,24 +0,0 @@ -import os -import re - -output = [] -output += ['site'] - -for filename in os.listdir('.'): - - m = re.search('([a-z]+)\.csv',filename) - if not m: - continue - - _site = m.group(1) - - output += [_site] - -output = '\n'.join(output) - -print output - -with open('sites.csv','w') as f: - f.write(output) - -raw_input("Script ended successfully. Press Enter to close.") diff --git a/metas/grenoble.csv b/metas/grenoble.csv deleted file mode 100644 index 1e94583037..0000000000 --- a/metas/grenoble.csv +++ /dev/null @@ -1,251 +0,0 @@ -mac,x,y,z -14-15-92-00-12-91-b2-ce,4.25,27.67,1.98 -14-15-92-00-12-91-bd-c0,4.57,27.37,2.7 -14-15-92-00-12-91-cd-f2,5.67,27.37,2.22 -14-15-92-00-12-91-c6-c0,6.36,27.37,2.8 -14-15-92-00-12-91-b2-7c,7.4,27.37,2.42 -14-15-92-00-12-91-bf-c6,8.15,27.37,2.85 -14-15-92-00-12-91-b3-9e,9.13,27.37,2.28 -14-15-92-00-12-91-b0-7f,10.4,27.37,2.37 -14-15-92-00-12-91-c7-e6,11.36,27.37,2.8 -14-15-92-00-12-91-be-ed,12.53,27.37,2.3 -14-15-92-00-12-91-bb-40,13.75,27.37,2.65 -14-15-92-00-12-91-c1-fe,3.03,28.07,2.54 -14-15-92-00-12-91-b8-07,3.83,28.07,2.54 -14-15-92-00-12-91-b2-ca,4.8,28.07,2.54 -14-15-92-00-12-91-b0-20,5.74,28.07,2.54 -14-15-92-00-12-91-b6-d8,6.76,28.07,2.54 -14-15-92-00-12-91-c6-31,7.86,28.07,2.54 -14-15-92-00-12-91-cc-8b,8.93,28.07,2.54 -14-15-92-00-12-91-b0-3d,10.13,28.07,2.54 -14-15-92-00-12-91-c2-4c,11.28,28.07,2.54 -14-15-92-00-12-91-cc-0d,12.18,28.07,2.54 -14-15-92-00-12-91-b0-47,13.18,28.07,2.54 -14-15-92-00-12-91-bc-97,14.18,28.07,2.54 -14-15-92-00-12-91-c1-3d,14.93,28.07,2.54 -14-15-92-00-12-91-be-d2,15.73,28.07,2.54 -14-15-92-00-12-91-b1-cb,1.98,29.35,3.6 -14-15-92-00-12-91-b9-4f,3.13,29.35,3.6 -14-15-92-00-12-91-c3-3e,4.08,29.35,3.6 -14-15-92-00-12-91-1c-be,5.18,29.35,3.6 -14-15-92-00-12-91-cc-c8,6.38,29.35,3.6 -14-15-92-00-12-91-b1-a5,7.45,29.35,3.6 -14-15-92-00-12-91-b6-3b,8.3,29.35,3.6 -14-15-92-00-12-91-c7-8e,8.8,29.35,3.6 -14-15-92-00-12-91-b9-02,10.17,29.35,3.6 -14-15-92-00-12-91-c4-43,11.08,29.35,3.6 -14-15-92-00-12-91-b6-15,12.12,29.35,3.6 -14-15-92-00-12-91-cf-33,12.89,29.35,3.6 -14-15-92-00-12-91-b8-bd,14.11,29.35,3.6 -14-15-92-00-12-91-b3-2d,15.13,29.35,3.6 -14-15-92-00-12-91-c2-1d,3.95,29.1,2.53 -14-15-92-00-12-91-c2-16,5.51,29.05,2.53 -14-15-92-00-12-91-ca-2d,7.53,29.22,2.53 -14-15-92-00-12-91-c7-ee,9.53,29.02,2.53 -14-15-92-00-12-91-bb-04,11.73,29.27,2.53 -14-15-92-00-12-91-c8-78,13.78,29.01,2.53 -14-15-92-00-12-91-b8-5a,15.58,28.93,2.53 -14-15-92-00-12-91-b2-f9,2.98,30.13,2.52 -14-15-92-00-12-91-bd-6f,4.33,30.21,2.52 -14-15-92-00-12-91-c2-f6,5.3,30.21,2.52 -14-15-92-00-12-91-c1-8d,6.28,30.17,2.52 -14-15-92-00-12-91-c4-74,7.51,30.17,2.52 -14-15-92-00-12-91-c4-bb,8.58,30.17,2.52 -14-15-92-00-12-91-b3-84,9.58,30.17,2.52 -14-15-92-00-12-91-b0-a8,10.45,30.17,2.52 -14-15-92-00-12-91-bf-c4,11.32,30.17,2.52 -14-15-92-00-12-91-c5-97,12.26,30.17,2.52 -14-15-92-00-12-91-c9-0d,13.28,30.17,2.52 -14-15-92-00-12-91-ca-91,14.28,30.17,2.52 -14-15-92-00-12-91-b3-5b,15.53,30.17,2.52 -14-15-92-00-12-91-bb-a0,16.53,29.72,2.5 -14-15-92-00-12-91-b3-28,3.98,30.37,3.6 -14-15-92-00-12-91-b7-a5,5.08,30.47,3.6 -14-15-92-00-12-91-c7-b0,6.18,30.47,3.6 -14-15-92-00-12-91-c8-73,7.2,30.47,3.6 -14-15-92-00-12-91-c0-4d,8.68,30.47,3.6 -14-15-92-00-12-91-c5-b5,9.58,30.47,3.6 -14-15-92-00-12-91-c1-15,10.53,30.42,3.6 -14-15-92-00-12-91-be-03,11.35,30.27,3.6 -14-15-92-00-12-91-bf-a6,12.35,30.42,3.6 -14-15-92-00-12-91-be-64,13.28,30.42,3.6 -14-15-92-00-12-91-c5-96,14.31,30.42,3.6 -14-15-92-00-12-91-c0-1c,15.21,30.42,3.6 -14-15-92-00-12-91-c8-dd,7.83,30.92,3.53 -14-15-92-00-12-91-b1-8b,4.0,31.97,3.66 -14-15-92-00-12-91-bf-c5,4.97,31.97,3.66 -14-15-92-00-12-91-b0-e9,6.0,31.97,3.66 -14-15-92-00-12-91-1f-a0,7.01,31.97,3.66 -14-15-92-00-12-91-b2-ba,8.16,31.97,3.66 -14-15-92-00-12-91-b1-ae,9.08,31.97,3.66 -14-15-92-00-12-91-b8-9a,10.1,31.99,3.66 -14-15-92-00-12-91-b4-1e,11.05,31.92,3.66 -14-15-92-00-12-91-b6-66,13.07,32.03,3.66 -14-15-92-00-12-91-bd-e3,14.26,32.05,3.66 -14-15-92-00-12-91-b0-29,15.41,32.05,3.66 -14-15-92-00-12-91-b6-5d,5.44,32.03,2.58 -14-15-92-00-12-91-c8-e0,6.4,32.03,2.58 -14-15-92-00-12-91-c1-d7,7.45,32.03,2.58 -14-15-92-00-12-91-c4-94,8.42,32.03,2.58 -14-15-92-00-12-91-b1-93,9.37,32.04,2.58 -14-15-92-00-12-91-c8-28,10.3,32.04,2.58 -14-15-92-00-12-91-cd-06,11.3,32.02,2.58 -14-15-92-00-12-91-af-ed,12.4,32.02,2.58 -14-15-92-00-12-91-ba-ea,13.36,31.97,2.58 -14-15-92-00-12-91-c1-9c,14.43,31.97,2.58 -14-15-92-00-12-91-be-7f,15.41,31.95,2.58 -14-15-92-00-12-91-be-cb,2.3,27.37,2.65 -14-15-92-00-12-91-ba-2d,17.06,33.57,2.62 -14-15-92-00-12-91-ba-a9,3.8,30.85,2.6 -14-15-92-00-12-91-ba-d5,15.58,30.97,2.6 -14-15-92-00-12-91-be-b6,4.08,32.0,0.37 -14-15-92-00-12-91-b4-de,4.82,32.0,0.37 -14-15-92-00-12-91-c7-9d,5.72,32.0,0.37 -14-15-92-00-12-91-c1-6a,6.46,32.0,0.37 -14-15-92-00-12-91-b3-23,3.98,31.72,1.07 -14-15-92-00-12-91-b3-96,4.79,31.72,1.07 -14-15-92-00-12-91-b4-c1,5.66,31.72,1.07 -14-15-92-00-12-91-be-a9,6.48,31.72,1.07 -14-15-92-00-12-91-ba-73,4.12,32.14,2.0 -14-15-92-00-12-91-b0-92,4.9,32.14,2.0 -14-15-92-00-12-91-b2-bc,5.78,32.14,2.0 -14-15-92-00-12-91-ba-62,6.5,32.19,2.0 -14-15-92-00-12-91-b3-4b,3.88,32.85,0.2 -14-15-92-00-12-91-b9-74,4.98,32.89,0.2 -14-15-92-00-12-91-b2-30,5.78,32.89,0.2 -14-15-92-00-12-91-c3-19,6.53,32.77,0.43 -14-15-92-00-12-91-cb-e5,4.1,32.66,1.04 -14-15-92-00-12-91-c6-39,4.86,32.66,1.04 -14-15-92-00-12-91-bf-ca,6.47,32.69,1.04 -14-15-92-00-12-91-c5-fb,4.07,33.08,1.82 -14-15-92-00-12-91-c5-52,5.06,33.08,1.8 -14-15-92-00-12-91-b4-13,5.95,33.08,1.83 -14-15-92-00-12-91-c3-b4,2.34,35.6,2.63 -14-15-92-00-12-91-c3-8d,8.81,27.77,3.0 -14-15-92-00-12-91-b5-d0,10.91,27.72,3.02 -14-15-92-00-12-91-c9-cd,1.98,33.64,2.6 -14-15-92-00-12-91-b4-91,2.71,33.57,2.57 -14-15-92-00-12-91-be-ab,3.73,33.57,2.57 -14-15-92-00-12-91-b0-53,4.81,33.57,2.57 -14-15-92-00-12-91-c3-49,5.72,33.57,2.58 -14-15-92-00-12-91-be-0f,6.7,33.57,2.59 -14-15-92-00-12-91-b8-a3,7.68,33.57,2.59 -14-15-92-00-12-91-c4-d1,8.7,33.57,2.6 -14-15-92-00-12-91-c6-86,9.7,33.57,2.6 -14-15-92-00-12-91-bf-ba,10.69,33.57,2.61 -14-15-92-00-12-91-ba-a2,11.71,33.57,2.61 -14-15-92-00-12-91-c5-29,12.71,33.57,2.62 -14-15-92-00-12-91-b7-c6,13.74,33.57,2.62 -14-15-92-00-12-91-cc-dc,14.75,33.57,2.62 -14-15-92-00-12-91-b7-4f,15.73,33.57,2.62 -14-15-92-00-12-91-bb-93,7.95,34.01,3.6 -14-15-92-00-12-91-20-4e,11.23,33.99,3.58 -14-15-92-00-12-91-b7-97,2.56,35.07,3.67 -14-15-92-00-12-91-b7-1f,3.36,35.07,3.67 -14-15-92-00-12-91-c9-8d,4.4,35.07,3.67 -14-15-92-00-12-91-bf-ea,5.35,35.07,3.67 -14-15-92-00-12-91-bf-cd,6.4,35.07,3.67 -14-15-92-00-12-91-af-b3,7.45,35.07,3.67 -14-15-92-00-12-91-c0-67,8.43,35.07,3.67 -14-15-92-00-12-91-bd-0c,9.75,35.07,3.67 -14-15-92-00-12-91-cc-6e,10.76,35.07,3.67 -14-15-92-00-12-91-1f-58,11.66,35.07,3.67 -14-15-92-00-12-91-c4-de,12.66,35.07,3.67 -14-15-92-00-12-91-c8-4d,13.76,35.07,3.67 -14-15-92-00-12-91-be-e7,14.76,35.07,3.67 -14-15-92-00-12-91-b5-aa,15.78,35.07,3.67 -14-15-92-00-12-91-ce-a4,1.91,35.09,2.6 -14-15-92-00-12-91-c1-d2,2.75,35.07,2.58 -14-15-92-00-12-91-b9-61,3.65,35.07,2.58 -14-15-92-00-12-91-b0-13,4.57,35.07,2.58 -14-15-92-00-12-91-c4-cf,6.55,35.07,2.58 -14-15-92-00-12-91-bf-a1,7.53,35.07,2.58 -14-15-92-00-12-91-bb-56,8.54,35.07,2.58 -14-15-92-00-12-91-ba-8c,9.56,35.07,2.58 -14-15-92-00-12-91-b8-e1,10.66,35.07,2.58 -14-15-92-00-12-91-b9-78,11.76,35.07,2.58 -14-15-92-00-12-91-ca-c7,12.8,35.07,2.58 -14-15-92-00-12-91-b6-c1,2.52,36.37,3.67 -14-15-92-00-12-91-b9-c2,3.37,36.37,3.67 -14-15-92-00-12-91-af-8d,4.44,36.37,3.67 -14-15-92-00-12-91-b1-05,5.39,36.37,3.67 -14-15-92-00-12-91-ba-a8,6.55,36.37,3.67 -14-15-92-00-12-91-b6-50,7.46,36.37,3.67 -14-15-92-00-12-91-b0-97,8.53,36.37,3.67 -14-15-92-00-12-91-c1-fd,9.56,36.37,3.67 -14-15-92-00-12-91-c0-ce,10.51,36.37,3.67 -14-15-92-00-12-91-bf-9c,11.66,36.37,3.67 -14-15-92-00-12-91-c9-38,12.55,36.37,3.67 -14-15-92-00-12-91-b2-d8,13.55,36.37,3.67 -14-15-92-00-12-91-b0-1d,14.61,36.37,3.67 -14-15-92-00-12-91-c4-32,15.65,36.37,3.67 -14-15-92-00-12-91-20-30,1.93,36.37,2.56 -14-15-92-00-12-91-b3-1e,2.91,36.37,2.55 -14-15-92-00-12-91-cb-9b,3.91,36.37,2.55 -14-15-92-00-12-91-ba-2e,4.91,36.37,2.55 -14-15-92-00-12-91-b1-b2,5.91,36.37,2.55 -14-15-92-00-12-91-b9-16,6.91,36.37,2.55 -14-15-92-00-12-91-c1-5f,7.92,36.34,2.55 -14-15-92-00-12-91-1f-69,8.92,36.37,2.55 -14-15-92-00-12-91-b8-df,10.02,36.34,2.55 -14-15-92-00-12-91-cd-e9,11.07,36.37,2.55 -14-15-92-00-12-91-b3-55,12.06,36.37,2.55 -14-15-92-00-12-91-ce-d8,13.18,36.37,2.55 -14-15-92-00-12-91-cb-46,7.16,37.6,3.37 -14-15-92-00-12-91-c8-63,12.23,37.55,3.37 -14-15-92-00-12-91-bf-1e,13.25,37.55,3.37 -14-15-92-00-12-91-c3-11,14.26,37.55,3.37 -14-15-92-00-12-91-b4-f0,15.26,37.55,3.37 -14-15-92-00-12-91-ce-be,16.26,37.55,3.37 -14-15-92-00-12-91-b6-b3,3.23,37.82,2.8 -14-15-92-00-12-91-b5-d5,4.23,37.82,2.95 -14-15-92-00-12-91-c8-fd,5.03,37.82,3.1 -14-15-92-00-12-91-b8-f3,4.78,37.82,2.3 -14-15-92-00-12-91-ca-86,6.13,37.82,2.55 -14-15-92-00-12-91-b9-a2,6.91,38.07,3.2 -14-15-92-00-12-91-cf-50,6.91,38.07,2.18 -14-15-92-00-12-91-bf-b3,6.91,38.87,2.13 -14-15-92-00-12-91-b7-2f,12.23,37.77,2.43 -14-15-92-00-12-91-c0-8f,12.98,37.77,2.37 -14-15-92-00-12-91-b7-e4,13.93,37.77,2.48 -14-15-92-00-12-91-c0-0a,14.96,37.77,2.6 -14-15-92-00-12-91-cd-fc,16.06,37.77,2.7 -14-15-92-00-12-91-b4-51,17.08,37.77,2.2 -14-15-92-00-12-91-b4-8c,7.84,38.59,3.35 -14-15-92-00-12-91-c3-ee,7.84,39.55,3.35 -14-15-92-00-12-91-b8-c3,7.86,40.55,3.35 -14-15-92-00-12-91-b7-b6,7.86,41.45,3.35 -14-15-92-00-12-91-b1-5e,9.96,38.54,3.6 -14-15-92-00-12-91-b4-34,9.98,39.49,3.6 -14-15-92-00-12-91-cc-b0,9.98,40.51,3.6 -14-15-92-00-12-91-cc-9f,9.98,41.41,3.6 -14-15-92-00-12-91-c8-36,9.96,42.41,3.6 -14-15-92-00-12-91-ca-8a,11.34,38.57,3.35 -14-15-92-00-12-91-cd-71,11.36,39.57,3.35 -14-15-92-00-12-91-b2-c4,11.36,40.57,3.35 -14-15-92-00-12-91-b3-3f,11.36,41.47,3.35 -14-15-92-00-12-91-c3-1a,8.53,37.32,2.57 -14-15-92-00-12-91-b5-65,8.53,38.43,2.57 -14-15-92-00-12-91-b7-00,8.53,39.45,2.57 -14-15-92-00-12-91-c6-3c,10.24,37.34,2.57 -14-15-92-00-12-91-c5-cc,10.24,38.24,2.57 -14-15-92-00-12-91-ce-e7,10.24,39.47,2.57 -14-15-92-00-12-91-c5-43,6.91,39.77,3.5 -14-15-92-00-12-91-ce-47,8.83,40.28,2.66 -14-15-92-00-12-91-c1-08,6.91,41.77,3.25 -14-15-92-00-12-91-bc-0f,9.51,42.8,3.34 -14-15-92-00-12-91-ca-22,8.56,40.05,3.7 -14-15-92-00-12-91-c6-c4,6.91,40.87,3.53 -14-15-92-00-12-91-b1-4d,9.51,41.87,3.34 -14-15-92-00-12-91-b8-c8,10.36,40.09,3.7 -14-15-92-00-12-91-ce-6c,10.51,38.42,3.37 -14-15-92-00-12-91-bd-f0,11.41,42.95,3.63 -14-15-92-00-12-91-c8-19,12.23,41.31,3.65 -14-15-92-00-12-91-b4-e4,10.24,40.28,2.6 -14-15-92-00-12-91-c9-4e,12.23,41.91,3.27 -14-15-92-00-12-91-c8-fb,12.23,40.57,3.53 -14-15-92-00-12-91-be-2e,7.31,42.95,3.62 -14-15-92-00-12-91-c4-ed,8.12,42.95,3.63 -14-15-92-00-12-91-b6-69,8.88,42.95,3.63 -14-15-92-00-12-91-cd-4c,7.69,41.9,3.35 -14-15-92-00-12-91-b8-06,5.7,32.68,1.04 diff --git a/metas/lille.json b/metas/lille.json deleted file mode 100644 index 4553a05f8a..0000000000 --- a/metas/lille.json +++ /dev/null @@ -1,2087 +0,0 @@ -[ - { - "archi": "m3:at86rf231", - "network_address": "m3-6.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d5-12-55", - "state": "Alive", - "y": "0.1", - "x": "3.22", - "z": "0.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-9.lille.iot-lab.info", - "mac": "05-43-32-ff-02-da-10-55", - "state": "Alive", - "y": "0.1", - "x": "5.62", - "z": "1.5" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-10.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d9-21-56", - "state": "Alive", - "y": "0.1", - "x": "5.62", - "z": "0.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-11.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d8-14-57", - "state": "Alive", - "y": "0.1", - "x": "6.82", - "z": "1.5" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-14.lille.iot-lab.info", - "mac": "05-43-32-ff-03-d7-b5-88", - "state": "Alive", - "y": "0.1", - "x": "8.02", - "z": "0.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-15.lille.iot-lab.info", - "mac": "05-43-32-ff-02-da-21-50", - "state": "Alive", - "y": "0.1", - "x": "9.22", - "z": "1.5" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-18.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d9-18-54", - "state": "Alive", - "y": "0.1", - "x": "10.42", - "z": "0.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-19.lille.iot-lab.info", - "mac": "05-43-32-ff-02-da-24-55", - "state": "Alive", - "y": "0.1", - "x": "11.62", - "z": "1.5" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-23.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d7-34-54", - "state": "Alive", - "y": "0.1", - "x": "14.02", - "z": "1.5" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-24.lille.iot-lab.info", - "mac": "05-43-32-ff-02-da-10-58", - "state": "Alive", - "y": "0.1", - "x": "14.02", - "z": "0.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-26.lille.iot-lab.info", - "mac": "05-43-32-ff-03-da-91-70", - "state": "Alive", - "y": "0.1", - "x": "15.22", - "z": "0.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-27.lille.iot-lab.info", - "mac": "05-43-32-ff-03-da-99-73", - "state": "Alive", - "y": "0.3", - "x": "0.1", - "z": "1.5" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-28.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d9-11-55", - "state": "Alive", - "y": "0.3", - "x": "0.1", - "z": "0.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-32.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d9-17-59", - "state": "Alive", - "y": "0.3", - "x": "4.42", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-33.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d8-17-58", - "state": "Alive", - "y": "0.3", - "x": "5.62", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-34.lille.iot-lab.info", - "mac": "05-43-32-ff-03-db-b3-73", - "state": "Alive", - "y": "0.3", - "x": "6.82", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-38.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d9-21-51", - "state": "Alive", - "y": "0.3", - "x": "11.62", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-39.lille.iot-lab.info", - "mac": "05-43-32-ff-03-db-b2-71", - "state": "Alive", - "y": "0.3", - "x": "12.82", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-40.lille.iot-lab.info", - "mac": "05-43-32-ff-03-d9-b3-70", - "state": "Alive", - "y": "0.3", - "x": "14.02", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-42.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d6-17-57", - "state": "Alive", - "y": "0.3", - "x": "16.1", - "z": "2.4" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-47.lille.iot-lab.info", - "mac": "05-43-32-ff-03-db-a1-73", - "state": "Alive", - "y": "1.5", - "x": "0.82", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-49.lille.iot-lab.info", - "mac": "05-43-32-ff-03-da-b5-72", - "state": "Alive", - "y": "1.5", - "x": "3.22", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-51.lille.iot-lab.info", - "mac": "05-43-32-ff-03-d7-b0-71", - "state": "Alive", - "y": "1.5", - "x": "5.62", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-52.lille.iot-lab.info", - "mac": "05-43-32-ff-03-df-b4-73", - "state": "Alive", - "y": "1.5", - "x": "6.82", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-54.lille.iot-lab.info", - "mac": "05-43-32-ff-03-d7-97-73", - "state": "Alive", - "y": "1.5", - "x": "9.22", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-56.lille.iot-lab.info", - "mac": "05-43-32-ff-03-d8-a6-89", - "state": "Alive", - "y": "1.5", - "x": "11.62", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-57.lille.iot-lab.info", - "mac": "05-43-32-ff-02-da-27-55", - "state": "Alive", - "y": "1.5", - "x": "12.82", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-63.lille.iot-lab.info", - "mac": "05-43-32-ff-03-d9-a6-73", - "state": "Alive", - "y": "2.7", - "x": "0.1", - "z": "1.5" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-64.lille.iot-lab.info", - "mac": "05-43-32-ff-03-dd-a2-73", - "state": "Alive", - "y": "2.7", - "x": "0.1", - "z": "0.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-65.lille.iot-lab.info", - "mac": "05-43-32-ff-03-d9-97-77", - "state": "Alive", - "y": "2.7", - "x": "0.82", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-66.lille.iot-lab.info", - "mac": "05-43-32-ff-03-d9-a3-90", - "state": "Alive", - "y": "2.7", - "x": "2.02", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-67.lille.iot-lab.info", - "mac": "05-43-32-ff-03-d8-85-74", - "state": "Alive", - "y": "2.7", - "x": "3.22", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-70.lille.iot-lab.info", - "mac": "05-43-32-ff-03-d9-87-74", - "state": "Alive", - "y": "2.7", - "x": "6.82", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-71.lille.iot-lab.info", - "mac": "05-43-32-ff-03-d6-86-74", - "state": "Alive", - "y": "2.7", - "x": "8.02", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-72.lille.iot-lab.info", - "mac": "05-43-32-ff-03-d9-a0-77", - "state": "Alive", - "y": "2.7", - "x": "9.22", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-73.lille.iot-lab.info", - "mac": "05-43-32-ff-02-da-17-56", - "state": "Alive", - "y": "2.7", - "x": "10.42", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-74.lille.iot-lab.info", - "mac": "05-43-32-ff-02-dc-28-52", - "state": "Alive", - "y": "2.7", - "x": "11.62", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-76.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d7-25-50", - "state": "Alive", - "y": "2.7", - "x": "14.02", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-82.lille.iot-lab.info", - "mac": "05-43-32-ff-03-d9-b0-89", - "state": "Alive", - "y": "3.9", - "x": "0.1", - "z": "0.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-83.lille.iot-lab.info", - "mac": "05-43-32-ff-02-dc-14-59", - "state": "Alive", - "y": "3.9", - "x": "0.82", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-85.lille.iot-lab.info", - "mac": "05-43-32-ff-03-d8-b6-71", - "state": "Alive", - "y": "3.9", - "x": "3.22", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-87.lille.iot-lab.info", - "mac": "05-43-32-ff-02-db-22-58", - "state": "Alive", - "y": "3.9", - "x": "5.62", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-88.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d7-27-50", - "state": "Alive", - "y": "3.9", - "x": "6.82", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-89.lille.iot-lab.info", - "mac": "05-43-32-ff-02-da-35-54", - "state": "Alive", - "y": "3.9", - "x": "8.02", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-90.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d8-09-56", - "state": "Alive", - "y": "3.9", - "x": "9.22", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-91.lille.iot-lab.info", - "mac": "05-43-32-ff-03-d8-c1-70", - "state": "Alive", - "y": "3.9", - "x": "10.42", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-92.lille.iot-lab.info", - "mac": "05-43-32-ff-03-d7-99-89", - "state": "Alive", - "y": "3.9", - "x": "11.62", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-94.lille.iot-lab.info", - "mac": "05-43-32-ff-03-d9-b2-72", - "state": "Alive", - "y": "3.9", - "x": "14.02", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-95.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d7-24-59", - "state": "Alive", - "y": "3.9", - "x": "15.22", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-97.lille.iot-lab.info", - "mac": "05-43-32-ff-02-dc-25-55", - "state": "Alive", - "y": "3.9", - "x": "16.1", - "z": "1.5" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-100.lille.iot-lab.info", - "mac": "05-43-32-ff-03-d8-89-73", - "state": "Alive", - "y": "5.1", - "x": "0.1", - "z": "0.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-102.lille.iot-lab.info", - "mac": "05-43-32-ff-03-dd-a4-73", - "state": "Alive", - "y": "5.1", - "x": "2.02", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-104.lille.iot-lab.info", - "mac": "05-43-32-ff-02-da-06-60", - "state": "Alive", - "y": "5.1", - "x": "4.42", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-106.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d9-35-59", - "state": "Alive", - "y": "5.1", - "x": "6.82", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-108.lille.iot-lab.info", - "mac": "05-43-32-ff-03-da-b1-72", - "state": "Alive", - "y": "5.1", - "x": "9.22", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-110.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d5-28-53", - "state": "Alive", - "y": "5.1", - "x": "11.62", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-111.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d7-38-58", - "state": "Alive", - "y": "5.1", - "x": "12.82", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-113.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d5-19-57", - "state": "Alive", - "y": "5.1", - "x": "15.22", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-114.lille.iot-lab.info", - "mac": "05-43-32-ff-03-db-b8-72", - "state": "Alive", - "y": "5.1", - "x": "16.1", - "z": "2.4" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-115.lille.iot-lab.info", - "mac": "05-43-32-ff-03-d7-a8-90", - "state": "Alive", - "y": "5.1", - "x": "16.1", - "z": "1.5" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-116.lille.iot-lab.info", - "mac": "05-43-32-ff-03-db-b4-88", - "state": "Alive", - "y": "5.1", - "x": "16.1", - "z": "0.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-118.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d7-25-56", - "state": "Alive", - "y": "5.45", - "x": "5.42", - "z": "0.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-121.lille.iot-lab.info", - "mac": "05-43-32-ff-02-dc-10-61", - "state": "Alive", - "y": "5.1", - "x": "14.18", - "z": "1.5" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-122.lille.iot-lab.info", - "mac": "05-43-32-ff-02-da-31-54", - "state": "Alive", - "y": "5.1", - "x": "14.18", - "z": "0.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-125.lille.iot-lab.info", - "mac": "05-43-32-ff-03-de-95-70", - "state": "Alive", - "y": "6.3", - "x": "3.22", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-127.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d5-35-58", - "state": "Alive", - "y": "6.3", - "x": "5.62", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-130.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d8-19-54", - "state": "Alive", - "y": "6.3", - "x": "9.22", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-131.lille.iot-lab.info", - "mac": "05-43-32-ff-03-db-b3-88", - "state": "Alive", - "y": "6.3", - "x": "10.42", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-132.lille.iot-lab.info", - "mac": "05-43-32-ff-03-d9-b9-73", - "state": "Alive", - "y": "6.3", - "x": "11.62", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-133.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d9-24-51", - "state": "Alive", - "y": "6.3", - "x": "12.82", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-134.lille.iot-lab.info", - "mac": "05-43-32-ff-03-dd-b6-70", - "state": "Alive", - "y": "6.3", - "x": "14.02", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-135.lille.iot-lab.info", - "mac": "05-43-32-ff-02-da-09-57", - "state": "Alive", - "y": "6.3", - "x": "14.18", - "z": "1.5" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-136.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d9-05-61", - "state": "Alive", - "y": "6.3", - "x": "14.18", - "z": "0.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-138.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d4-18-56", - "state": "Alive", - "y": "7.5", - "x": "2.02", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-140.lille.iot-lab.info", - "mac": "05-43-32-ff-03-de-90-73", - "state": "Alive", - "y": "7.5", - "x": "4.42", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-142.lille.iot-lab.info", - "mac": "05-43-32-ff-03-d8-92-70", - "state": "Alive", - "y": "7.5", - "x": "6.82", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-143.lille.iot-lab.info", - "mac": "05-43-32-ff-03-d7-87-73", - "state": "Alive", - "y": "7.5", - "x": "8.02", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-144.lille.iot-lab.info", - "mac": "05-43-32-ff-03-d8-a1-89", - "state": "Alive", - "y": "7.5", - "x": "9.22", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-145.lille.iot-lab.info", - "mac": "05-43-32-ff-03-dc-a1-70", - "state": "Alive", - "y": "7.5", - "x": "10.42", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-148.lille.iot-lab.info", - "mac": "05-43-32-ff-03-dc-c2-73", - "state": "Alive", - "y": "7.5", - "x": "14.02", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-149.lille.iot-lab.info", - "mac": "05-43-32-ff-03-d6-90-74", - "state": "Alive", - "y": "7.5", - "x": "14.18", - "z": "1.5" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-156.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d9-29-55", - "state": "Alive", - "y": "8.7", - "x": "6.82", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-157.lille.iot-lab.info", - "mac": "05-43-32-ff-02-da-23-50", - "state": "Alive", - "y": "8.7", - "x": "8.02", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-159.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d8-20-50", - "state": "Alive", - "y": "8.7", - "x": "10.42", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-161.lille.iot-lab.info", - "mac": "05-43-32-ff-02-da-18-55", - "state": "Alive", - "y": "8.7", - "x": "12.82", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-163.lille.iot-lab.info", - "mac": "05-43-32-ff-02-da-17-54", - "state": "Alive", - "y": "8.7", - "x": "14.18", - "z": "1.5" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-169.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d7-29-51", - "state": "Alive", - "y": "9.16", - "x": "3.22", - "z": "1.5" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-170.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d9-17-51", - "state": "Alive", - "y": "9.16", - "x": "3.22", - "z": "0.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-173.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d7-11-56", - "state": "Alive", - "y": "9.16", - "x": "6.82", - "z": "1.5" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-174.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d7-20-55", - "state": "Alive", - "y": "9.16", - "x": "6.82", - "z": "0.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-177.lille.iot-lab.info", - "mac": "05-43-32-ff-03-dc-b3-89", - "state": "Alive", - "y": "9.16", - "x": "9.22", - "z": "1.5" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-179.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d9-33-55", - "state": "Alive", - "y": "9.9", - "x": "0.82", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-181.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d9-27-54", - "state": "Alive", - "y": "9.9", - "x": "3.22", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-182.lille.iot-lab.info", - "mac": "05-43-32-ff-03-d8-84-74", - "state": "Alive", - "y": "9.9", - "x": "4.42", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-184.lille.iot-lab.info", - "mac": "05-43-32-ff-02-da-31-58", - "state": "Alive", - "y": "9.9", - "x": "8.02", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-187.lille.iot-lab.info", - "mac": "05-43-32-ff-03-d9-91-73", - "state": "Alive", - "y": "9.9", - "x": "11.62", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-188.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d7-13-58", - "state": "Alive", - "y": "9.9", - "x": "12.82", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-190.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d7-34-53", - "state": "Alive", - "y": "9.9", - "x": "14.18", - "z": "1.5" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-193.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d8-38-59", - "state": "Alive", - "y": "11.1", - "x": "2.02", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-194.lille.iot-lab.info", - "mac": "05-43-32-ff-03-db-95-73", - "state": "Alive", - "y": "11.1", - "x": "3.22", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-195.lille.iot-lab.info", - "mac": "05-43-32-ff-02-dc-21-52", - "state": "Alive", - "y": "11.1", - "x": "4.42", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-196.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d6-25-59", - "state": "Alive", - "y": "11.1", - "x": "5.62", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-197.lille.iot-lab.info", - "mac": "05-43-32-ff-03-d8-b2-73", - "state": "Alive", - "y": "11.1", - "x": "6.82", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-200.lille.iot-lab.info", - "mac": "05-43-32-ff-03-d9-97-70", - "state": "Alive", - "y": "11.1", - "x": "10.42", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-202.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d8-27-51", - "state": "Alive", - "y": "11.1", - "x": "12.82", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-203.lille.iot-lab.info", - "mac": "05-43-32-ff-03-d8-85-73", - "state": "Alive", - "y": "11.1", - "x": "14.02", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-204.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d6-20-52", - "state": "Alive", - "y": "11.1", - "x": "15.22", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-209.lille.iot-lab.info", - "mac": "05-43-32-ff-03-d6-b5-71", - "state": "Alive", - "y": "12.3", - "x": "5.62", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-210.lille.iot-lab.info", - "mac": "05-43-32-ff-02-db-12-54", - "state": "Alive", - "y": "12.3", - "x": "6.82", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-211.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d9-27-59", - "state": "Alive", - "y": "12.3", - "x": "8.02", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-212.lille.iot-lab.info", - "mac": "05-43-32-ff-03-de-b2-70", - "state": "Alive", - "y": "12.3", - "x": "9.22", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-213.lille.iot-lab.info", - "mac": "05-43-32-ff-02-da-18-59", - "state": "Alive", - "y": "12.3", - "x": "10.42", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-214.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d7-23-52", - "state": "Alive", - "y": "12.3", - "x": "11.62", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-215.lille.iot-lab.info", - "mac": "05-43-32-ff-02-db-34-58", - "state": "Alive", - "y": "12.3", - "x": "12.82", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-217.lille.iot-lab.info", - "mac": "05-43-32-ff-02-db-31-52", - "state": "Alive", - "y": "12.3", - "x": "15.22", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-218.lille.iot-lab.info", - "mac": "05-43-32-ff-03-dc-93-73", - "state": "Alive", - "y": "13.5", - "x": "0.82", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-219.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d8-23-59", - "state": "Alive", - "y": "13.5", - "x": "2.02", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-220.lille.iot-lab.info", - "mac": "05-43-32-ff-03-d9-c2-70", - "state": "Alive", - "y": "13.5", - "x": "3.22", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-221.lille.iot-lab.info", - "mac": "05-43-32-ff-03-dc-b8-73", - "state": "Alive", - "y": "13.5", - "x": "4.42", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-223.lille.iot-lab.info", - "mac": "05-43-32-ff-02-db-25-52", - "state": "Alive", - "y": "13.5", - "x": "6.82", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-226.lille.iot-lab.info", - "mac": "05-43-32-ff-02-db-24-50", - "state": "Alive", - "y": "13.5", - "x": "10.42", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-228.lille.iot-lab.info", - "mac": "05-43-32-ff-03-dd-b0-73", - "state": "Alive", - "y": "13.5", - "x": "12.82", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-229.lille.iot-lab.info", - "mac": "05-43-32-ff-03-db-a7-90", - "state": "Alive", - "y": "13.5", - "x": "14.02", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-230.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d5-12-58", - "state": "Alive", - "y": "13.5", - "x": "15.22", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-232.lille.iot-lab.info", - "mac": "05-43-32-ff-02-da-28-51", - "state": "Alive", - "y": "14.7", - "x": "2.02", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-233.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d7-12-56", - "state": "Alive", - "y": "14.7", - "x": "3.22", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-238.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d9-31-53", - "state": "Alive", - "y": "14.7", - "x": "9.22", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-239.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d9-33-58", - "state": "Alive", - "y": "14.7", - "x": "10.42", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-241.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d7-20-51", - "state": "Alive", - "y": "14.7", - "x": "12.82", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-243.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d8-15-52", - "state": "Alive", - "y": "14.7", - "x": "15.22", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-244.lille.iot-lab.info", - "mac": "05-43-32-ff-02-db-26-59", - "state": "Alive", - "y": "15.9", - "x": "0.82", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-245.lille.iot-lab.info", - "mac": "05-43-32-ff-02-da-31-51", - "state": "Alive", - "y": "15.9", - "x": "2.02", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-246.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d7-24-54", - "state": "Alive", - "y": "15.9", - "x": "3.22", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-248.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d7-24-58", - "state": "Alive", - "y": "15.9", - "x": "5.62", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-250.lille.iot-lab.info", - "mac": "05-43-32-ff-03-dc-b8-71", - "state": "Alive", - "y": "15.9", - "x": "8.02", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-253.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d9-12-57", - "state": "Alive", - "y": "15.9", - "x": "11.62", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-254.lille.iot-lab.info", - "mac": "05-43-32-ff-03-d8-b3-71", - "state": "Alive", - "y": "15.9", - "x": "12.82", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-255.lille.iot-lab.info", - "mac": "05-43-32-ff-02-da-28-58", - "state": "Alive", - "y": "15.9", - "x": "14.02", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-256.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d6-25-54", - "state": "Alive", - "y": "15.9", - "x": "15.22", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-2.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d9-30-51", - "state": "Alive", - "y": "0.1", - "x": "0.82", - "z": "0.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-4.lille.iot-lab.info", - "mac": "05-43-32-ff-02-db-32-59", - "state": "Alive", - "y": "0.1", - "x": "2.02", - "z": "0.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-5.lille.iot-lab.info", - "mac": "05-43-32-ff-02-db-14-53", - "state": "Alive", - "y": "0.1", - "x": "3.22", - "z": "1.5" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-7.lille.iot-lab.info", - "mac": "05-43-32-ff-03-d4-a5-90", - "state": "Alive", - "y": "0.1", - "x": "4.42", - "z": "1.5" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-12.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d6-11-58", - "state": "Alive", - "y": "0.1", - "x": "6.82", - "z": "0.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-13.lille.iot-lab.info", - "mac": "05-43-32-ff-02-db-34-55", - "state": "Alive", - "y": "0.1", - "x": "8.02", - "z": "1.5" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-16.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d7-26-55", - "state": "Alive", - "y": "0.1", - "x": "9.22", - "z": "0.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-17.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d6-23-55", - "state": "Alive", - "y": "0.1", - "x": "10.42", - "z": "1.5" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-20.lille.iot-lab.info", - "mac": "05-43-32-ff-02-dc-33-53", - "state": "Alive", - "y": "0.1", - "x": "11.62", - "z": "0.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-21.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d6-26-52", - "state": "Alive", - "y": "0.1", - "x": "12.82", - "z": "1.5" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-22.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d9-27-58", - "state": "Alive", - "y": "0.1", - "x": "12.82", - "z": "0.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-25.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d4-16-56", - "state": "Alive", - "y": "0.1", - "x": "15.22", - "z": "1.5" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-30.lille.iot-lab.info", - "mac": "05-43-32-ff-02-db-38-62", - "state": "Alive", - "y": "0.3", - "x": "2.02", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-31.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d9-07-61", - "state": "Alive", - "y": "0.3", - "x": "3.22", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-35.lille.iot-lab.info", - "state": "Alive", - "y": "0.3", - "x": "8.02", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-36.lille.iot-lab.info", - "mac": "05-43-32-ff-03-d7-b1-89", - "state": "Alive", - "y": "0.3", - "x": "9.22", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-37.lille.iot-lab.info", - "mac": "05-43-32-ff-03-d7-a4-89", - "state": "Alive", - "y": "0.3", - "x": "10.42", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-43.lille.iot-lab.info", - "mac": "05-43-32-ff-03-dd-c4-73", - "state": "Alive", - "y": "0.3", - "x": "16.1", - "z": "1.5" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-45.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d6-11-61", - "state": "Alive", - "y": "1.5", - "x": "0.1", - "z": "1.5" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-46.lille.iot-lab.info", - "mac": "05-43-32-ff-03-dc-a0-90", - "state": "Alive", - "y": "1.5", - "x": "0.1", - "z": "0.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-48.lille.iot-lab.info", - "mac": "05-43-32-ff-02-db-16-51", - "state": "Alive", - "y": "1.5", - "x": "2.02", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-50.lille.iot-lab.info", - "mac": "05-43-32-ff-03-d8-c0-70", - "state": "Alive", - "y": "1.5", - "x": "4.42", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-53.lille.iot-lab.info", - "mac": "05-43-32-ff-03-d7-b3-72", - "state": "Alive", - "y": "1.5", - "x": "8.02", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-58.lille.iot-lab.info", - "mac": "05-43-32-ff-02-db-18-52", - "state": "Alive", - "y": "1.5", - "x": "14.02", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-59.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d8-21-54", - "state": "Alive", - "y": "1.5", - "x": "15.22", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-60.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d6-09-61", - "state": "Alive", - "y": "1.5", - "x": "16.1", - "z": "2.4" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-61.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d4-16-57", - "state": "Alive", - "y": "1.5", - "x": "16.1", - "z": "1.5" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-62.lille.iot-lab.info", - "mac": "05-43-32-ff-02-da-37-58", - "state": "Alive", - "y": "1.5", - "x": "16.1", - "z": "0.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-69.lille.iot-lab.info", - "mac": "05-43-32-ff-03-da-93-70", - "state": "Alive", - "y": "2.7", - "x": "5.62", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-77.lille.iot-lab.info", - "mac": "05-43-32-ff-03-db-99-77", - "state": "Alive", - "y": "2.7", - "x": "15.22", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-78.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d8-30-52", - "state": "Alive", - "y": "2.7", - "x": "16.1", - "z": "2.4" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-81.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d8-14-54", - "state": "Alive", - "y": "3.9", - "x": "0.1", - "z": "1.5" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-84.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d5-15-56", - "state": "Alive", - "y": "3.9", - "x": "2.02", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-86.lille.iot-lab.info", - "mac": "05-43-32-ff-03-db-b7-71", - "state": "Alive", - "y": "3.9", - "x": "4.42", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-93.lille.iot-lab.info", - "mac": "05-43-32-ff-03-db-92-73", - "state": "Alive", - "y": "3.9", - "x": "12.82", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-96.lille.iot-lab.info", - "mac": "05-43-32-ff-02-da-08-57", - "state": "Alive", - "y": "3.9", - "x": "16.1", - "z": "2.4" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-98.lille.iot-lab.info", - "mac": "05-43-32-ff-03-dd-98-73", - "state": "Alive", - "y": "3.9", - "x": "16.1", - "z": "0.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-99.lille.iot-lab.info", - "mac": "05-43-32-ff-03-dc-90-70", - "state": "Alive", - "y": "5.1", - "x": "0.1", - "z": "1.5" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-103.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d6-16-54", - "state": "Alive", - "y": "5.1", - "x": "3.22", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-105.lille.iot-lab.info", - "mac": "05-43-32-ff-02-db-28-55", - "state": "Alive", - "y": "5.1", - "x": "5.62", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-107.lille.iot-lab.info", - "mac": "05-43-32-ff-03-db-b2-89", - "state": "Alive", - "y": "5.1", - "x": "8.02", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-109.lille.iot-lab.info", - "mac": "05-43-32-ff-02-da-09-58", - "state": "Alive", - "y": "5.1", - "x": "10.42", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-112.lille.iot-lab.info", - "mac": "05-43-32-ff-03-da-a2-70", - "state": "Alive", - "y": "5.1", - "x": "14.02", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-117.lille.iot-lab.info", - "mac": "05-43-32-ff-02-db-11-54", - "state": "Alive", - "y": "5.45", - "x": "5.42", - "z": "1.5" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-119.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d5-13-56", - "state": "Alive", - "y": "5.45", - "x": "10.82", - "z": "1.5" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-120.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d7-07-58", - "state": "Alive", - "y": "5.45", - "x": "10.82", - "z": "0.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-123.lille.iot-lab.info", - "mac": "05-43-32-ff-03-da-84-73", - "state": "Alive", - "y": "6.3", - "x": "0.82", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-124.lille.iot-lab.info", - "mac": "05-43-32-ff-03-d4-b4-71", - "state": "Alive", - "y": "6.3", - "x": "2.02", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-126.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d9-19-56", - "state": "Alive", - "y": "6.3", - "x": "4.42", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-137.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d8-26-50", - "state": "Alive", - "y": "7.5", - "x": "0.82", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-139.lille.iot-lab.info", - "state": "Alive", - "y": "7.5", - "x": "3.22", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-141.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d8-31-55", - "state": "Alive", - "y": "7.5", - "x": "5.62", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-146.lille.iot-lab.info", - "mac": "05-43-32-ff-03-da-98-77", - "state": "Alive", - "y": "7.5", - "x": "11.62", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-147.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d4-13-59", - "state": "Alive", - "y": "7.5", - "x": "12.82", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-151.lille.iot-lab.info", - "mac": "05-43-32-ff-03-db-b1-73", - "state": "Alive", - "y": "8.7", - "x": "0.82", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-152.lille.iot-lab.info", - "mac": "05-43-32-ff-03-e0-c0-73", - "state": "Alive", - "y": "8.7", - "x": "2.02", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-153.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d7-28-50", - "state": "Alive", - "y": "8.7", - "x": "3.22", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-154.lille.iot-lab.info", - "mac": "05-43-32-ff-02-da-32-54", - "state": "Alive", - "y": "8.7", - "x": "4.42", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-155.lille.iot-lab.info", - "state": "Alive", - "y": "8.7", - "x": "5.62", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-158.lille.iot-lab.info", - "mac": "05-43-32-ff-03-d8-b4-72", - "state": "Alive", - "y": "8.7", - "x": "9.22", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-162.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d6-22-57", - "state": "Alive", - "y": "8.7", - "x": "14.02", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-164.lille.iot-lab.info", - "mac": "05-43-32-ff-03-d9-86-73", - "state": "Alive", - "y": "8.7", - "x": "14.18", - "z": "0.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-165.lille.iot-lab.info", - "mac": "05-43-32-ff-03-dd-a0-70", - "state": "Alive", - "y": "9.16", - "x": "0.82", - "z": "1.5" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-166.lille.iot-lab.info", - "mac": "05-43-32-ff-03-df-c3-73", - "state": "Alive", - "y": "9.16", - "x": "0.82", - "z": "0.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-167.lille.iot-lab.info", - "mac": "05-43-32-ff-02-da-13-55", - "state": "Alive", - "y": "9.16", - "x": "2.02", - "z": "1.5" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-168.lille.iot-lab.info", - "mac": "05-43-32-ff-02-da-31-59", - "state": "Alive", - "y": "9.16", - "x": "2.02", - "z": "0.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-171.lille.iot-lab.info", - "mac": "05-43-32-ff-02-db-29-59", - "state": "Alive", - "y": "9.16", - "x": "4.42", - "z": "1.5" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-172.lille.iot-lab.info", - "mac": "05-43-32-ff-03-da-a7-71", - "state": "Alive", - "y": "9.16", - "x": "4.42", - "z": "0.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-175.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d8-39-62", - "state": "Alive", - "y": "9.16", - "x": "8.02", - "z": "1.5" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-176.lille.iot-lab.info", - "mac": "05-43-32-ff-03-da-b9-70", - "state": "Alive", - "y": "9.16", - "x": "8.02", - "z": "0.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-180.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d5-24-56", - "state": "Alive", - "y": "9.9", - "x": "2.02", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-183.lille.iot-lab.info", - "mac": "05-43-32-ff-03-db-a8-73", - "state": "Alive", - "y": "9.9", - "x": "6.82", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-185.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d8-30-59", - "state": "Alive", - "y": "9.9", - "x": "9.22", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-186.lille.iot-lab.info", - "mac": "05-43-32-ff-03-da-a3-73", - "state": "Alive", - "y": "9.9", - "x": "10.42", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-189.lille.iot-lab.info", - "mac": "05-43-32-ff-03-d8-a2-89", - "state": "Alive", - "y": "9.9", - "x": "14.02", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-191.lille.iot-lab.info", - "mac": "05-43-32-ff-03-da-a4-90", - "state": "Alive", - "y": "9.9", - "x": "14.18", - "z": "0.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-192.lille.iot-lab.info", - "mac": "05-43-32-ff-03-db-a5-73", - "state": "Alive", - "y": "11.1", - "x": "0.82", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-198.lille.iot-lab.info", - "mac": "05-43-32-ff-02-da-14-55", - "state": "Alive", - "y": "11.1", - "x": "8.02", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-199.lille.iot-lab.info", - "mac": "05-43-32-ff-02-dc-16-52", - "state": "Alive", - "y": "11.1", - "x": "9.22", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-201.lille.iot-lab.info", - "mac": "05-43-32-ff-03-da-a8-71", - "state": "Alive", - "y": "11.1", - "x": "11.62", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-205.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d8-18-57", - "state": "Alive", - "y": "12.3", - "x": "0.82", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-207.lille.iot-lab.info", - "mac": "05-43-32-ff-02-db-26-51", - "state": "Alive", - "y": "12.3", - "x": "3.22", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-208.lille.iot-lab.info", - "mac": "05-43-32-ff-03-d9-88-73", - "state": "Alive", - "y": "12.3", - "x": "4.42", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-222.lille.iot-lab.info", - "mac": "05-43-32-ff-03-d8-b2-88", - "state": "Alive", - "y": "13.5", - "x": "5.62", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-224.lille.iot-lab.info", - "mac": "05-43-32-ff-03-d8-b0-70", - "state": "Alive", - "y": "13.5", - "x": "8.02", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-227.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d0-09-59", - "state": "Alive", - "y": "13.5", - "x": "11.62", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-231.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d2-21-59", - "state": "Alive", - "y": "14.7", - "x": "0.82", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-234.lille.iot-lab.info", - "mac": "05-43-32-ff-02-da-22-51", - "state": "Alive", - "y": "14.7", - "x": "4.42", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-235.lille.iot-lab.info", - "mac": "05-43-32-ff-03-d6-a8-89", - "state": "Alive", - "y": "14.7", - "x": "5.62", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-242.lille.iot-lab.info", - "mac": "05-43-32-ff-02-dc-20-54", - "state": "Alive", - "y": "14.7", - "x": "14.02", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-247.lille.iot-lab.info", - "mac": "05-43-32-ff-02-d9-15-54", - "state": "Alive", - "y": "15.9", - "x": "4.42", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-249.lille.iot-lab.info", - "mac": "05-43-32-ff-03-dc-b7-70", - "state": "Alive", - "y": "15.9", - "x": "6.82", - "z": "2.6" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-252.lille.iot-lab.info", - "mac": "05-43-32-ff-02-da-23-58", - "state": "Alive", - "y": "15.9", - "x": "10.42", - "z": "2.6" - } -] \ No newline at end of file diff --git a/metas/lille_eui64.csv b/metas/lille_eui64.csv deleted file mode 100644 index d994ae598b..0000000000 --- a/metas/lille_eui64.csv +++ /dev/null @@ -1,231 +0,0 @@ -05-43-32-ff-02-d9-21-56,m3-10 -05-43-32-ff-03-d8-89-73,m3-100 -05-43-32-ff-03-dd-a4-73,m3-102 -05-43-32-ff-02-d6-16-54,m3-103 -05-43-32-ff-02-da-06-60,m3-104 -05-43-32-ff-02-db-28-55,m3-105 -05-43-32-ff-02-d9-35-59,m3-106 -05-43-32-ff-03-db-b2-89,m3-107 -05-43-32-ff-03-da-b1-72,m3-108 -05-43-32-ff-02-da-09-58,m3-109 -05-43-32-ff-02-d8-14-57,m3-11 -05-43-32-ff-02-d5-28-53,m3-110 -05-43-32-ff-02-d7-38-58,m3-111 -05-43-32-ff-03-da-a2-70,m3-112 -05-43-32-ff-02-d5-19-57,m3-113 -05-43-32-ff-03-db-b8-72,m3-114 -05-43-32-ff-03-d7-a8-90,m3-115 -05-43-32-ff-03-db-b4-88,m3-116 -05-43-32-ff-02-db-11-54,m3-117 -05-43-32-ff-02-d7-25-56,m3-118 -05-43-32-ff-02-d5-13-56,m3-119 -05-43-32-ff-02-d6-11-58,m3-12 -05-43-32-ff-02-d7-07-58,m3-120 -05-43-32-ff-02-dc-10-61,m3-121 -05-43-32-ff-02-da-31-54,m3-122 -05-43-32-ff-03-da-84-73,m3-123 -05-43-32-ff-03-d4-b4-71,m3-124 -05-43-32-ff-03-de-95-70,m3-125 -05-43-32-ff-02-d9-19-56,m3-126 -05-43-32-ff-02-d5-35-58,m3-127 -05-43-32-ff-02-db-34-55,m3-13 -05-43-32-ff-02-d8-19-54,m3-130 -05-43-32-ff-03-db-b3-88,m3-131 -05-43-32-ff-03-d9-b9-73,m3-132 -05-43-32-ff-02-d9-24-51,m3-133 -05-43-32-ff-03-dd-b6-70,m3-134 -05-43-32-ff-02-da-09-57,m3-135 -05-43-32-ff-02-d9-05-61,m3-136 -05-43-32-ff-02-d8-26-50,m3-137 -05-43-32-ff-02-d4-18-56,m3-138 -05-43-32-ff-03-d7-b5-88,m3-14 -05-43-32-ff-03-de-90-73,m3-140 -05-43-32-ff-02-d8-31-55,m3-141 -05-43-32-ff-03-d8-92-70,m3-142 -05-43-32-ff-03-d7-87-73,m3-143 -05-43-32-ff-03-d8-a1-89,m3-144 -05-43-32-ff-03-dc-a1-70,m3-145 -05-43-32-ff-03-da-98-77,m3-146 -05-43-32-ff-02-d4-13-59,m3-147 -05-43-32-ff-03-dc-c2-73,m3-148 -05-43-32-ff-03-d6-90-74,m3-149 -05-43-32-ff-02-da-21-50,m3-15 -05-43-32-ff-03-db-b1-73,m3-151 -05-43-32-ff-03-e0-c0-73,m3-152 -05-43-32-ff-02-d7-28-50,m3-153 -05-43-32-ff-02-da-32-54,m3-154 -05-43-32-ff-02-d9-29-55,m3-156 -05-43-32-ff-02-da-23-50,m3-157 -05-43-32-ff-03-d8-b4-72,m3-158 -05-43-32-ff-02-d8-20-50,m3-159 -05-43-32-ff-02-d7-26-55,m3-16 -05-43-32-ff-02-da-18-55,m3-161 -05-43-32-ff-02-d6-22-57,m3-162 -05-43-32-ff-02-da-17-54,m3-163 -05-43-32-ff-03-d9-86-73,m3-164 -05-43-32-ff-03-dd-a0-70,m3-165 -05-43-32-ff-03-df-c3-73,m3-166 -05-43-32-ff-02-da-13-55,m3-167 -05-43-32-ff-02-da-31-59,m3-168 -05-43-32-ff-02-d7-29-51,m3-169 -05-43-32-ff-02-d6-23-55,m3-17 -05-43-32-ff-02-d9-17-51,m3-170 -05-43-32-ff-02-db-29-59,m3-171 -05-43-32-ff-03-da-a7-71,m3-172 -05-43-32-ff-02-d7-11-56,m3-173 -05-43-32-ff-02-d7-20-55,m3-174 -05-43-32-ff-02-d8-39-62,m3-175 -05-43-32-ff-03-da-b9-70,m3-176 -05-43-32-ff-03-dc-b3-89,m3-177 -05-43-32-ff-02-d9-33-55,m3-179 -05-43-32-ff-02-d9-18-54,m3-18 -05-43-32-ff-02-d5-24-56,m3-180 -05-43-32-ff-02-d9-27-54,m3-181 -05-43-32-ff-03-d8-84-74,m3-182 -05-43-32-ff-03-db-a8-73,m3-183 -05-43-32-ff-02-da-31-58,m3-184 -05-43-32-ff-02-d8-30-59,m3-185 -05-43-32-ff-03-da-a3-73,m3-186 -05-43-32-ff-03-d9-91-73,m3-187 -05-43-32-ff-02-d7-13-58,m3-188 -05-43-32-ff-03-d8-a2-89,m3-189 -05-43-32-ff-02-da-24-55,m3-19 -05-43-32-ff-02-d7-34-53,m3-190 -05-43-32-ff-03-da-a4-90,m3-191 -05-43-32-ff-03-db-a5-73,m3-192 -05-43-32-ff-02-d8-38-59,m3-193 -05-43-32-ff-03-db-95-73,m3-194 -05-43-32-ff-02-dc-21-52,m3-195 -05-43-32-ff-02-d6-25-59,m3-196 -05-43-32-ff-03-d8-b2-73,m3-197 -05-43-32-ff-02-da-14-55,m3-198 -05-43-32-ff-02-dc-16-52,m3-199 -05-43-32-ff-02-d9-30-51,m3-2 -05-43-32-ff-02-dc-33-53,m3-20 -05-43-32-ff-03-d9-97-70,m3-200 -05-43-32-ff-03-da-a8-71,m3-201 -05-43-32-ff-02-d8-27-51,m3-202 -05-43-32-ff-03-d8-85-73,m3-203 -05-43-32-ff-02-d6-20-52,m3-204 -05-43-32-ff-02-d8-18-57,m3-205 -05-43-32-ff-02-db-26-51,m3-207 -05-43-32-ff-03-d9-88-73,m3-208 -05-43-32-ff-03-d6-b5-71,m3-209 -05-43-32-ff-02-d6-26-52,m3-21 -05-43-32-ff-02-db-12-54,m3-210 -05-43-32-ff-02-d9-27-59,m3-211 -05-43-32-ff-03-de-b2-70,m3-212 -05-43-32-ff-02-da-18-59,m3-213 -05-43-32-ff-02-d7-23-52,m3-214 -05-43-32-ff-02-db-34-58,m3-215 -05-43-32-ff-02-db-31-52,m3-217 -05-43-32-ff-03-dc-93-73,m3-218 -05-43-32-ff-02-d8-23-59,m3-219 -05-43-32-ff-02-d9-27-58,m3-22 -05-43-32-ff-03-d9-c2-70,m3-220 -05-43-32-ff-03-dc-b8-73,m3-221 -05-43-32-ff-03-d8-b2-88,m3-222 -05-43-32-ff-02-db-25-52,m3-223 -05-43-32-ff-03-d8-b0-70,m3-224 -05-43-32-ff-02-db-24-50,m3-226 -05-43-32-ff-02-d0-09-59,m3-227 -05-43-32-ff-03-dd-b0-73,m3-228 -05-43-32-ff-03-db-a7-90,m3-229 -05-43-32-ff-02-d7-34-54,m3-23 -05-43-32-ff-02-d5-12-58,m3-230 -05-43-32-ff-02-d2-21-59,m3-231 -05-43-32-ff-02-da-28-51,m3-232 -05-43-32-ff-02-d7-12-56,m3-233 -05-43-32-ff-02-da-22-51,m3-234 -05-43-32-ff-03-d6-a8-89,m3-235 -05-43-32-ff-02-d9-31-53,m3-238 -05-43-32-ff-02-d9-33-58,m3-239 -05-43-32-ff-02-da-10-58,m3-24 -05-43-32-ff-02-d7-20-51,m3-241 -05-43-32-ff-02-dc-20-54,m3-242 -05-43-32-ff-02-d8-15-52,m3-243 -05-43-32-ff-02-db-26-59,m3-244 -05-43-32-ff-02-da-31-51,m3-245 -05-43-32-ff-02-d7-24-54,m3-246 -05-43-32-ff-02-d9-15-54,m3-247 -05-43-32-ff-02-d7-24-58,m3-248 -05-43-32-ff-03-dc-b7-70,m3-249 -05-43-32-ff-02-d4-16-56,m3-25 -05-43-32-ff-03-dc-b8-71,m3-250 -05-43-32-ff-02-da-23-58,m3-252 -05-43-32-ff-02-d9-12-57,m3-253 -05-43-32-ff-03-d8-b3-71,m3-254 -05-43-32-ff-02-da-28-58,m3-255 -05-43-32-ff-02-d6-25-54,m3-256 -05-43-32-ff-02-d9-08-5,m3-257 -05-43-32-ff-03-da-a9-71,m3-258 -05-43-32-ff-03-da-91-70,m3-26 -05-43-32-ff-03-da-99-73,m3-27 -05-43-32-ff-02-d9-11-55,m3-28 -05-43-32-ff-02-db-38-62,m3-30 -05-43-32-ff-02-d9-07-61,m3-31 -05-43-32-ff-02-d9-17-59,m3-32 -05-43-32-ff-02-d8-17-58,m3-33 -05-43-32-ff-03-db-b3-73,m3-34 -05-43-32-ff-03-d7-b1-89,m3-36 -05-43-32-ff-03-d7-a4-89,m3-37 -05-43-32-ff-02-d9-21-51,m3-38 -05-43-32-ff-03-db-b2-71,m3-39 -05-43-32-ff-02-db-32-59,m3-4 -05-43-32-ff-03-d9-b3-70,m3-40 -05-43-32-ff-02-d6-17-57,m3-42 -05-43-32-ff-03-dd-c4-73,m3-43 -05-43-32-ff-02-d6-11-61,m3-45 -05-43-32-ff-03-dc-a0-90,m3-46 -05-43-32-ff-03-db-a1-73,m3-47 -05-43-32-ff-02-db-16-51,m3-48 -05-43-32-ff-03-da-b5-72,m3-49 -05-43-32-ff-02-db-14-53,m3-5 -05-43-32-ff-03-d8-c0-70,m3-50 -05-43-32-ff-03-d7-b0-71,m3-51 -05-43-32-ff-03-df-b4-73,m3-52 -05-43-32-ff-03-d7-b3-72,m3-53 -05-43-32-ff-03-d7-97-73,m3-54 -05-43-32-ff-03-d8-a6-89,m3-56 -05-43-32-ff-02-da-27-55,m3-57 -05-43-32-ff-02-db-18-52,m3-58 -05-43-32-ff-02-d8-21-54,m3-59 -05-43-32-ff-02-d5-12-55,m3-6 -05-43-32-ff-02-d6-09-61,m3-60 -05-43-32-ff-02-d4-16-57,m3-61 -05-43-32-ff-02-da-37-58,m3-62 -05-43-32-ff-03-d9-a6-73,m3-63 -05-43-32-ff-03-dd-a2-73,m3-64 -05-43-32-ff-03-d9-97-77,m3-65 -05-43-32-ff-03-d9-a3-90,m3-66 -05-43-32-ff-03-d8-85-74,m3-67 -05-43-32-ff-03-da-93-70,m3-69 -05-43-32-ff-03-d4-a5-90,m3-7 -05-43-32-ff-03-d9-87-74,m3-70 -05-43-32-ff-03-d6-86-74,m3-71 -05-43-32-ff-03-d9-a0-77,m3-72 -05-43-32-ff-02-da-17-56,m3-73 -05-43-32-ff-02-dc-28-52,m3-74 -05-43-32-ff-02-d7-25-50,m3-76 -05-43-32-ff-03-db-99-77,m3-77 -05-43-32-ff-02-d8-30-52,m3-78 -05-43-32-ff-02-d8-14-54,m3-81 -05-43-32-ff-03-d9-b0-89,m3-82 -05-43-32-ff-02-dc-14-59,m3-83 -05-43-32-ff-02-d5-15-56,m3-84 -05-43-32-ff-03-d8-b6-71,m3-85 -05-43-32-ff-03-db-b7-71,m3-86 -05-43-32-ff-02-db-22-58,m3-87 -05-43-32-ff-02-d7-27-50,m3-88 -05-43-32-ff-02-da-35-54,m3-89 -05-43-32-ff-02-da-10-55,m3-9 -05-43-32-ff-02-d8-09-56,m3-90 -05-43-32-ff-03-d8-c1-70,m3-91 -05-43-32-ff-03-d7-99-89,m3-92 -05-43-32-ff-03-db-92-73,m3-93 -05-43-32-ff-03-d9-b2-72,m3-94 -05-43-32-ff-02-d7-24-59,m3-95 -05-43-32-ff-02-da-08-57,m3-96 -05-43-32-ff-02-dc-25-55,m3-97 -05-43-32-ff-03-dd-98-73,m3-98 -05-43-32-ff-03-dc-90-70,m3-99 diff --git a/metas/locations.json b/metas/locations.json deleted file mode 100644 index ffa971b29d..0000000000 --- a/metas/locations.json +++ /dev/null @@ -1,11259 +0,0 @@ -[ - { - "nodes": [ - { - "y": "2.1", - "x": "1.31", - "z": "2.78", - "network_address": "a8-1.lyon.iot-lab.info" - }, - { - "y": "2.51", - "x": "1.31", - "z": "2.78", - "network_address": "a8-2.lyon.iot-lab.info" - }, - { - "y": "1.6", - "x": "3.1", - "z": "2.78", - "network_address": "a8-3.lyon.iot-lab.info" - }, - { - "y": "1.6", - "x": "3.82", - "z": "2.78", - "network_address": "a8-4.lyon.iot-lab.info" - }, - { - "y": "2.70", - "x": "4.5", - "z": "2.78", - "network_address": "a8-5.lyon.iot-lab.info" - }, - { - "y": "3.92", - "x": "4.5", - "z": "2.78", - "network_address": "a8-6.lyon.iot-lab.info" - }, - { - "y": "4.56", - "x": "4.5", - "z": "2.78", - "network_address": "a8-7.lyon.iot-lab.info" - }, - { - "y": "6.2", - "x": "6.94", - "z": "2.78", - "network_address": "a8-8.lyon.iot-lab.info" - }, - { - "y": "4.22", - "x": "8.35", - "z": "2.78", - "network_address": "a8-10.lyon.iot-lab.info" - }, - { - "y": "4", - "x": "1.31", - "z": "2.78", - "network_address": "m3-1.lyon.iot-lab.info" - }, - { - "y": "6.2", - "x": "3.2", - "z": "2.78", - "network_address": "m3-2.lyon.iot-lab.info" - }, - { - "y": "2.02", - "x": "4.5", - "z": "2.78", - "network_address": "m3-4.lyon.iot-lab.info" - }, - { - "y": "2.65", - "x": "4.5", - "z": "2.78", - "network_address": "m3-5.lyon.iot-lab.info" - }, - { - "y": "1.6", - "x": "5.11", - "z": "2.78", - "network_address": "m3-6.lyon.iot-lab.info" - }, - { - "y": "6.2", - "x": "5.19", - "z": "2.78", - "network_address": "m3-7.lyon.iot-lab.info" - }, - { - "y": "1.6", - "x": "5.8", - "z": "2.78", - "network_address": "m3-8.lyon.iot-lab.info" - }, - { - "y": "6.2", - "x": "5.88", - "z": "2.78", - "network_address": "m3-9.lyon.iot-lab.info" - }, - { - "y": "6.2", - "x": "7.33", - "z": "2.78", - "network_address": "m3-10.lyon.iot-lab.info" - }, - { - "y": "3.81", - "x": "8.35", - "z": "2.78", - "network_address": "m3-11.lyon.iot-lab.info" - }, - { - "y": "5.19", - "x": "8.35", - "z": "2.78", - "network_address": "m3-12.lyon.iot-lab.info" - }, - { - "y": "5.61", - "x": "8.35", - "z": "2.78", - "network_address": "m3-13.lyon.iot-lab.info" - }, - { - "y": "6.2", - "x": "8.33", - "z": "2.78", - "network_address": "m3-14.lyon.iot-lab.info" - }, - { - "y": "6.2", - "x": "8.96", - "z": "2.78", - "network_address": "m3-15.lyon.iot-lab.info" - }, - { - "y": "6.2", - "x": "9.60", - "z": "2.78", - "network_address": "m3-16.lyon.iot-lab.info" - }, - { - "y": "6.2", - "x": "10.4", - "z": "2.78", - "network_address": "m3-17.lyon.iot-lab.info" - }, - { - "y": "6.2", - "x": "11.42", - "z": "2.78", - "network_address": "m3-18.lyon.iot-lab.info" - } - ], - "location": "lyon" - }, - { - "nodes": [ - { - "y": "9.00", - "x": "0.00", - "z": "0.50", - "network_address": "wsn430-1.strasbourg.iot-lab.info" - }, - { - "y": "9.00", - "x": "0.00", - "z": "1.50", - "network_address": "wsn430-2.strasbourg.iot-lab.info" - }, - { - "y": "9.00", - "x": "0.00", - "z": "2.50", - "network_address": "wsn430-3.strasbourg.iot-lab.info" - }, - { - "y": "9.00", - "x": "1.00", - "z": "0.50", - "network_address": "wsn430-4.strasbourg.iot-lab.info" - }, - { - "y": "9.00", - "x": "1.00", - "z": "1.50", - "network_address": "wsn430-5.strasbourg.iot-lab.info" - }, - { - "y": "9.00", - "x": "1.00", - "z": "2.50", - "network_address": "wsn430-6.strasbourg.iot-lab.info" - }, - { - "y": "9.00", - "x": "2.00", - "z": "0.50", - "network_address": "wsn430-7.strasbourg.iot-lab.info" - }, - { - "y": "9.00", - "x": "2.00", - "z": "1.50", - "network_address": "wsn430-8.strasbourg.iot-lab.info" - }, - { - "y": "9.00", - "x": "2.00", - "z": "2.50", - "network_address": "wsn430-9.strasbourg.iot-lab.info" - }, - { - "y": "9.00", - "x": "3.00", - "z": "0.50", - "network_address": "wsn430-10.strasbourg.iot-lab.info" - }, - { - "y": "9.00", - "x": "3.00", - "z": "1.50", - "network_address": "wsn430-11.strasbourg.iot-lab.info" - }, - { - "y": "9.00", - "x": "3.00", - "z": "2.50", - "network_address": "wsn430-12.strasbourg.iot-lab.info" - }, - { - "y": "9.00", - "x": "4.00", - "z": "0.50", - "network_address": "wsn430-13.strasbourg.iot-lab.info" - }, - { - "y": "9.00", - "x": "4.00", - "z": "1.50", - "network_address": "wsn430-14.strasbourg.iot-lab.info" - }, - { - "y": "9.00", - "x": "4.00", - "z": "2.50", - "network_address": "wsn430-15.strasbourg.iot-lab.info" - }, - { - "y": "9.00", - "x": "5.00", - "z": "0.50", - "network_address": "wsn430-16.strasbourg.iot-lab.info" - }, - { - "y": "9.00", - "x": "5.00", - "z": "1.50", - "network_address": "wsn430-17.strasbourg.iot-lab.info" - }, - { - "y": "9.00", - "x": "5.00", - "z": "2.50", - "network_address": "wsn430-18.strasbourg.iot-lab.info" - }, - { - "y": "9.00", - "x": "6.00", - "z": "0.50", - "network_address": "wsn430-19.strasbourg.iot-lab.info" - }, - { - "y": "9.00", - "x": "6.00", - "z": "1.50", - "network_address": "wsn430-20.strasbourg.iot-lab.info" - }, - { - "y": "9.00", - "x": "6.00", - "z": "2.50", - "network_address": "wsn430-21.strasbourg.iot-lab.info" - }, - { - "y": "9.00", - "x": "7.00", - "z": "0.50", - "network_address": "wsn430-22.strasbourg.iot-lab.info" - }, - { - "y": "9.00", - "x": "7.00", - "z": "1.50", - "network_address": "wsn430-23.strasbourg.iot-lab.info" - }, - { - "y": "8.00", - "x": "0.00", - "z": "0.50", - "network_address": "wsn430-25.strasbourg.iot-lab.info" - }, - { - "y": "8.00", - "x": "0.00", - "z": "1.50", - "network_address": "wsn430-26.strasbourg.iot-lab.info" - }, - { - "y": "8.00", - "x": "0.00", - "z": "2.50", - "network_address": "wsn430-27.strasbourg.iot-lab.info" - }, - { - "y": "8.00", - "x": "1.00", - "z": "0.50", - "network_address": "wsn430-28.strasbourg.iot-lab.info" - }, - { - "y": "8.00", - "x": "1.00", - "z": "1.50", - "network_address": "wsn430-29.strasbourg.iot-lab.info" - }, - { - "y": "8.00", - "x": "1.00", - "z": "2.50", - "network_address": "wsn430-30.strasbourg.iot-lab.info" - }, - { - "y": "8.00", - "x": "2.00", - "z": "0.50", - "network_address": "wsn430-31.strasbourg.iot-lab.info" - }, - { - "y": "8.00", - "x": "2.00", - "z": "1.50", - "network_address": "wsn430-32.strasbourg.iot-lab.info" - }, - { - "y": "8.00", - "x": "2.00", - "z": "2.50", - "network_address": "wsn430-33.strasbourg.iot-lab.info" - }, - { - "y": "8.00", - "x": "3.00", - "z": "0.50", - "network_address": "wsn430-34.strasbourg.iot-lab.info" - }, - { - "y": "8.00", - "x": "3.00", - "z": "1.50", - "network_address": "wsn430-35.strasbourg.iot-lab.info" - }, - { - "y": "8.00", - "x": "3.00", - "z": "2.50", - "network_address": "wsn430-36.strasbourg.iot-lab.info" - }, - { - "y": "8.00", - "x": "4.00", - "z": "0.50", - "network_address": "wsn430-37.strasbourg.iot-lab.info" - }, - { - "y": "8.00", - "x": "4.00", - "z": "1.50", - "network_address": "wsn430-38.strasbourg.iot-lab.info" - }, - { - "y": "8.00", - "x": "4.00", - "z": "2.50", - "network_address": "wsn430-39.strasbourg.iot-lab.info" - }, - { - "y": "8.00", - "x": "5.00", - "z": "0.50", - "network_address": "wsn430-40.strasbourg.iot-lab.info" - }, - { - "y": "8.00", - "x": "5.00", - "z": "1.50", - "network_address": "wsn430-41.strasbourg.iot-lab.info" - }, - { - "y": "8.00", - "x": "5.00", - "z": "2.50", - "network_address": "wsn430-42.strasbourg.iot-lab.info" - }, - { - "y": "8.00", - "x": "6.00", - "z": "0.50", - "network_address": "wsn430-43.strasbourg.iot-lab.info" - }, - { - "y": "8.00", - "x": "6.00", - "z": "1.50", - "network_address": "wsn430-44.strasbourg.iot-lab.info" - }, - { - "y": "8.00", - "x": "6.00", - "z": "2.50", - "network_address": "wsn430-45.strasbourg.iot-lab.info" - }, - { - "y": "8.00", - "x": "7.00", - "z": "0.50", - "network_address": "wsn430-46.strasbourg.iot-lab.info" - }, - { - "y": "8.00", - "x": "7.00", - "z": "1.50", - "network_address": "wsn430-47.strasbourg.iot-lab.info" - }, - { - "y": "8.00", - "x": "7.00", - "z": "2.50", - "network_address": "wsn430-48.strasbourg.iot-lab.info" - }, - { - "y": "7.00", - "x": "0.00", - "z": "0.50", - "network_address": "wsn430-49.strasbourg.iot-lab.info" - }, - { - "y": "7.00", - "x": "0.00", - "z": "1.50", - "network_address": "wsn430-50.strasbourg.iot-lab.info" - }, - { - "y": "7.00", - "x": "0.00", - "z": "2.50", - "network_address": "wsn430-51.strasbourg.iot-lab.info" - }, - { - "y": "7.00", - "x": "1.00", - "z": "0.50", - "network_address": "wsn430-52.strasbourg.iot-lab.info" - }, - { - "y": "7.00", - "x": "1.00", - "z": "1.50", - "network_address": "wsn430-53.strasbourg.iot-lab.info" - }, - { - "y": "7.00", - "x": "1.00", - "z": "2.50", - "network_address": "wsn430-54.strasbourg.iot-lab.info" - }, - { - "y": "7.00", - "x": "2.00", - "z": "0.50", - "network_address": "wsn430-55.strasbourg.iot-lab.info" - }, - { - "y": "7.00", - "x": "2.00", - "z": "1.50", - "network_address": "wsn430-56.strasbourg.iot-lab.info" - }, - { - "y": "7.00", - "x": "2.00", - "z": "2.50", - "network_address": "wsn430-57.strasbourg.iot-lab.info" - }, - { - "y": "7.00", - "x": "3.00", - "z": "0.50", - "network_address": "wsn430-58.strasbourg.iot-lab.info" - }, - { - "y": "7.00", - "x": "3.00", - "z": "2.50", - "network_address": "wsn430-60.strasbourg.iot-lab.info" - }, - { - "y": "7.00", - "x": "4.00", - "z": "0.50", - "network_address": "wsn430-61.strasbourg.iot-lab.info" - }, - { - "y": "7.00", - "x": "4.00", - "z": "1.50", - "network_address": "wsn430-62.strasbourg.iot-lab.info" - }, - { - "y": "7.00", - "x": "4.00", - "z": "2.50", - "network_address": "wsn430-63.strasbourg.iot-lab.info" - }, - { - "y": "7.00", - "x": "5.00", - "z": "0.50", - "network_address": "wsn430-64.strasbourg.iot-lab.info" - }, - { - "y": "7.00", - "x": "5.00", - "z": "1.50", - "network_address": "wsn430-65.strasbourg.iot-lab.info" - }, - { - "y": "7.00", - "x": "5.00", - "z": "2.50", - "network_address": "wsn430-66.strasbourg.iot-lab.info" - }, - { - "y": "7.00", - "x": "6.00", - "z": "0.50", - "network_address": "wsn430-67.strasbourg.iot-lab.info" - }, - { - "y": "7.00", - "x": "6.00", - "z": "1.50", - "network_address": "wsn430-68.strasbourg.iot-lab.info" - }, - { - "y": "7.00", - "x": "6.00", - "z": "2.50", - "network_address": "wsn430-69.strasbourg.iot-lab.info" - }, - { - "y": "7.00", - "x": "7.00", - "z": "0.50", - "network_address": "wsn430-70.strasbourg.iot-lab.info" - }, - { - "y": "7.00", - "x": "7.00", - "z": "1.50", - "network_address": "wsn430-71.strasbourg.iot-lab.info" - }, - { - "y": "7.00", - "x": "7.00", - "z": "2.50", - "network_address": "wsn430-72.strasbourg.iot-lab.info" - }, - { - "y": "6.00", - "x": "0.00", - "z": "0.50", - "network_address": "wsn430-73.strasbourg.iot-lab.info" - }, - { - "y": "6.00", - "x": "0.00", - "z": "1.50", - "network_address": "wsn430-74.strasbourg.iot-lab.info" - }, - { - "y": "6.00", - "x": "0.00", - "z": "2.50", - "network_address": "wsn430-75.strasbourg.iot-lab.info" - }, - { - "y": "6.00", - "x": "1.00", - "z": "0.50", - "network_address": "wsn430-76.strasbourg.iot-lab.info" - }, - { - "y": "6.00", - "x": "1.00", - "z": "1.50", - "network_address": "wsn430-77.strasbourg.iot-lab.info" - }, - { - "y": "6.00", - "x": "1.00", - "z": "2.50", - "network_address": "wsn430-78.strasbourg.iot-lab.info" - }, - { - "y": "6.00", - "x": "2.00", - "z": "0.50", - "network_address": "wsn430-79.strasbourg.iot-lab.info" - }, - { - "y": "6.00", - "x": "2.00", - "z": "1.50", - "network_address": "wsn430-80.strasbourg.iot-lab.info" - }, - { - "y": "6.00", - "x": "2.00", - "z": "2.50", - "network_address": "wsn430-81.strasbourg.iot-lab.info" - }, - { - "y": "6.00", - "x": "3.00", - "z": "0.50", - "network_address": "wsn430-82.strasbourg.iot-lab.info" - }, - { - "y": "6.00", - "x": "3.00", - "z": "1.50", - "network_address": "wsn430-83.strasbourg.iot-lab.info" - }, - { - "y": "6.00", - "x": "3.00", - "z": "2.50", - "network_address": "wsn430-84.strasbourg.iot-lab.info" - }, - { - "y": "6.00", - "x": "4.00", - "z": "0.50", - "network_address": "wsn430-85.strasbourg.iot-lab.info" - }, - { - "y": "6.00", - "x": "4.00", - "z": "1.50", - "network_address": "wsn430-86.strasbourg.iot-lab.info" - }, - { - "y": "6.00", - "x": "4.00", - "z": "2.50", - "network_address": "wsn430-87.strasbourg.iot-lab.info" - }, - { - "y": "6.00", - "x": "5.00", - "z": "0.50", - "network_address": "wsn430-88.strasbourg.iot-lab.info" - }, - { - "y": "6.00", - "x": "5.00", - "z": "1.50", - "network_address": "wsn430-89.strasbourg.iot-lab.info" - }, - { - "y": "6.00", - "x": "5.00", - "z": "2.50", - "network_address": "wsn430-90.strasbourg.iot-lab.info" - }, - { - "y": "6.00", - "x": "6.00", - "z": "0.50", - "network_address": "wsn430-91.strasbourg.iot-lab.info" - }, - { - "y": "6.00", - "x": "6.00", - "z": "1.50", - "network_address": "wsn430-92.strasbourg.iot-lab.info" - }, - { - "y": "6.00", - "x": "6.00", - "z": "2.50", - "network_address": "wsn430-93.strasbourg.iot-lab.info" - }, - { - "y": "6.00", - "x": "7.00", - "z": "0.50", - "network_address": "wsn430-94.strasbourg.iot-lab.info" - }, - { - "y": "6.00", - "x": "7.00", - "z": "1.50", - "network_address": "wsn430-95.strasbourg.iot-lab.info" - }, - { - "y": "6.00", - "x": "7.00", - "z": "2.50", - "network_address": "wsn430-96.strasbourg.iot-lab.info" - }, - { - "y": "5.00", - "x": "0.00", - "z": "0.50", - "network_address": "wsn430-97.strasbourg.iot-lab.info" - }, - { - "y": "5.00", - "x": "0.00", - "z": "1.50", - "network_address": "wsn430-98.strasbourg.iot-lab.info" - }, - { - "y": "5.00", - "x": "0.00", - "z": "2.50", - "network_address": "wsn430-99.strasbourg.iot-lab.info" - }, - { - "y": "5.00", - "x": "1.00", - "z": "0.50", - "network_address": "wsn430-100.strasbourg.iot-lab.info" - }, - { - "y": "5.00", - "x": "1.00", - "z": "1.50", - "network_address": "wsn430-101.strasbourg.iot-lab.info" - }, - { - "y": "5.00", - "x": "1.00", - "z": "2.50", - "network_address": "wsn430-102.strasbourg.iot-lab.info" - }, - { - "y": "5.00", - "x": "2.00", - "z": "0.50", - "network_address": "wsn430-103.strasbourg.iot-lab.info" - }, - { - "y": "5.00", - "x": "2.00", - "z": "1.50", - "network_address": "wsn430-104.strasbourg.iot-lab.info" - }, - { - "y": "5.00", - "x": "2.00", - "z": "2.50", - "network_address": "wsn430-105.strasbourg.iot-lab.info" - }, - { - "y": "5.00", - "x": "3.00", - "z": "0.50", - "network_address": "wsn430-106.strasbourg.iot-lab.info" - }, - { - "y": "5.00", - "x": "3.00", - "z": "1.50", - "network_address": "wsn430-107.strasbourg.iot-lab.info" - }, - { - "y": "5.00", - "x": "3.00", - "z": "2.50", - "network_address": "wsn430-108.strasbourg.iot-lab.info" - }, - { - "y": "5.00", - "x": "4.00", - "z": "0.50", - "network_address": "wsn430-109.strasbourg.iot-lab.info" - }, - { - "y": "5.00", - "x": "4.00", - "z": "1.50", - "network_address": "wsn430-110.strasbourg.iot-lab.info" - }, - { - "y": "5.00", - "x": "4.00", - "z": "2.50", - "network_address": "wsn430-111.strasbourg.iot-lab.info" - }, - { - "y": "5.00", - "x": "5.00", - "z": "0.50", - "network_address": "wsn430-112.strasbourg.iot-lab.info" - }, - { - "y": "5.00", - "x": "5.00", - "z": "1.50", - "network_address": "wsn430-113.strasbourg.iot-lab.info" - }, - { - "y": "5.00", - "x": "5.00", - "z": "2.50", - "network_address": "wsn430-114.strasbourg.iot-lab.info" - }, - { - "y": "5.00", - "x": "6.00", - "z": "0.50", - "network_address": "wsn430-115.strasbourg.iot-lab.info" - }, - { - "y": "5.00", - "x": "6.00", - "z": "1.50", - "network_address": "wsn430-116.strasbourg.iot-lab.info" - }, - { - "y": "5.00", - "x": "6.00", - "z": "2.50", - "network_address": "wsn430-117.strasbourg.iot-lab.info" - }, - { - "y": "5.00", - "x": "7.00", - "z": "0.50", - "network_address": "wsn430-118.strasbourg.iot-lab.info" - }, - { - "y": "5.00", - "x": "7.00", - "z": "1.50", - "network_address": "wsn430-119.strasbourg.iot-lab.info" - }, - { - "y": "5.00", - "x": "7.00", - "z": "2.50", - "network_address": "wsn430-120.strasbourg.iot-lab.info" - }, - { - "y": "4.00", - "x": "0.00", - "z": "0.50", - "network_address": "wsn430-121.strasbourg.iot-lab.info" - }, - { - "y": "4.00", - "x": "0.00", - "z": "1.50", - "network_address": "wsn430-122.strasbourg.iot-lab.info" - }, - { - "y": "4.00", - "x": "0.00", - "z": "2.50", - "network_address": "wsn430-123.strasbourg.iot-lab.info" - }, - { - "y": "4.00", - "x": "1.00", - "z": "0.50", - "network_address": "wsn430-124.strasbourg.iot-lab.info" - }, - { - "y": "4.00", - "x": "1.00", - "z": "1.50", - "network_address": "wsn430-125.strasbourg.iot-lab.info" - }, - { - "y": "4.00", - "x": "1.00", - "z": "2.50", - "network_address": "wsn430-126.strasbourg.iot-lab.info" - }, - { - "y": "4.00", - "x": "2.00", - "z": "0.50", - "network_address": "wsn430-127.strasbourg.iot-lab.info" - }, - { - "y": "4.00", - "x": "2.00", - "z": "1.50", - "network_address": "wsn430-128.strasbourg.iot-lab.info" - }, - { - "y": "4.00", - "x": "2.00", - "z": "2.50", - "network_address": "wsn430-129.strasbourg.iot-lab.info" - }, - { - "y": "4.00", - "x": "3.00", - "z": "0.50", - "network_address": "wsn430-130.strasbourg.iot-lab.info" - }, - { - "y": "4.00", - "x": "3.00", - "z": "1.50", - "network_address": "wsn430-131.strasbourg.iot-lab.info" - }, - { - "y": "4.00", - "x": "3.00", - "z": "2.50", - "network_address": "wsn430-132.strasbourg.iot-lab.info" - }, - { - "y": "4.00", - "x": "4.00", - "z": "0.50", - "network_address": "wsn430-133.strasbourg.iot-lab.info" - }, - { - "y": "4.00", - "x": "4.00", - "z": "1.50", - "network_address": "wsn430-134.strasbourg.iot-lab.info" - }, - { - "y": "4.00", - "x": "4.00", - "z": "2.50", - "network_address": "wsn430-135.strasbourg.iot-lab.info" - }, - { - "y": "4.00", - "x": "5.00", - "z": "0.50", - "network_address": "wsn430-136.strasbourg.iot-lab.info" - }, - { - "y": "4.00", - "x": "5.00", - "z": "2.50", - "network_address": "wsn430-138.strasbourg.iot-lab.info" - }, - { - "y": "4.00", - "x": "6.00", - "z": "0.50", - "network_address": "wsn430-139.strasbourg.iot-lab.info" - }, - { - "y": "4.00", - "x": "6.00", - "z": "1.50", - "network_address": "wsn430-140.strasbourg.iot-lab.info" - }, - { - "y": "4.00", - "x": "6.00", - "z": "2.50", - "network_address": "wsn430-141.strasbourg.iot-lab.info" - }, - { - "y": "4.00", - "x": "7.00", - "z": "0.50", - "network_address": "wsn430-142.strasbourg.iot-lab.info" - }, - { - "y": "4.00", - "x": "7.00", - "z": "1.50", - "network_address": "wsn430-143.strasbourg.iot-lab.info" - }, - { - "y": "4.00", - "x": "7.00", - "z": "2.50", - "network_address": "wsn430-144.strasbourg.iot-lab.info" - }, - { - "y": "3.00", - "x": "0.00", - "z": "0.50", - "network_address": "wsn430-145.strasbourg.iot-lab.info" - }, - { - "y": "3.00", - "x": "0.00", - "z": "1.50", - "network_address": "wsn430-146.strasbourg.iot-lab.info" - }, - { - "y": "3.00", - "x": "0.00", - "z": "2.50", - "network_address": "wsn430-147.strasbourg.iot-lab.info" - }, - { - "y": "3.00", - "x": "1.00", - "z": "0.50", - "network_address": "wsn430-148.strasbourg.iot-lab.info" - }, - { - "y": "3.00", - "x": "1.00", - "z": "1.50", - "network_address": "wsn430-149.strasbourg.iot-lab.info" - }, - { - "y": "3.00", - "x": "1.00", - "z": "2.50", - "network_address": "wsn430-150.strasbourg.iot-lab.info" - }, - { - "y": "3.00", - "x": "2.00", - "z": "0.50", - "network_address": "wsn430-151.strasbourg.iot-lab.info" - }, - { - "y": "3.00", - "x": "2.00", - "z": "1.50", - "network_address": "wsn430-152.strasbourg.iot-lab.info" - }, - { - "y": "3.00", - "x": "2.00", - "z": "2.50", - "network_address": "wsn430-153.strasbourg.iot-lab.info" - }, - { - "y": "3.00", - "x": "3.00", - "z": "0.50", - "network_address": "wsn430-154.strasbourg.iot-lab.info" - }, - { - "y": "3.00", - "x": "3.00", - "z": "1.50", - "network_address": "wsn430-155.strasbourg.iot-lab.info" - }, - { - "y": "3.00", - "x": "3.00", - "z": "2.50", - "network_address": "wsn430-156.strasbourg.iot-lab.info" - }, - { - "y": "3.00", - "x": "4.00", - "z": "0.50", - "network_address": "wsn430-157.strasbourg.iot-lab.info" - }, - { - "y": "3.00", - "x": "4.00", - "z": "1.50", - "network_address": "wsn430-158.strasbourg.iot-lab.info" - }, - { - "y": "3.00", - "x": "4.00", - "z": "2.50", - "network_address": "wsn430-159.strasbourg.iot-lab.info" - }, - { - "y": "3.00", - "x": "5.00", - "z": "0.50", - "network_address": "wsn430-160.strasbourg.iot-lab.info" - }, - { - "y": "3.00", - "x": "5.00", - "z": "1.50", - "network_address": "wsn430-161.strasbourg.iot-lab.info" - }, - { - "y": "3.00", - "x": "5.00", - "z": "2.50", - "network_address": "wsn430-162.strasbourg.iot-lab.info" - }, - { - "y": "3.00", - "x": "6.00", - "z": "0.50", - "network_address": "wsn430-163.strasbourg.iot-lab.info" - }, - { - "y": "3.00", - "x": "6.00", - "z": "1.50", - "network_address": "wsn430-164.strasbourg.iot-lab.info" - }, - { - "y": "3.00", - "x": "6.00", - "z": "2.50", - "network_address": "wsn430-165.strasbourg.iot-lab.info" - }, - { - "y": "3.00", - "x": "7.00", - "z": "0.50", - "network_address": "wsn430-166.strasbourg.iot-lab.info" - }, - { - "y": "3.00", - "x": "7.00", - "z": "1.50", - "network_address": "wsn430-167.strasbourg.iot-lab.info" - }, - { - "y": "3.00", - "x": "7.00", - "z": "2.50", - "network_address": "wsn430-168.strasbourg.iot-lab.info" - }, - { - "y": "2.00", - "x": "0.00", - "z": "0.50", - "network_address": "wsn430-169.strasbourg.iot-lab.info" - }, - { - "y": "2.00", - "x": "0.00", - "z": "1.50", - "network_address": "wsn430-170.strasbourg.iot-lab.info" - }, - { - "y": "2.00", - "x": "0.00", - "z": "2.50", - "network_address": "wsn430-171.strasbourg.iot-lab.info" - }, - { - "y": "2.00", - "x": "1.00", - "z": "0.50", - "network_address": "wsn430-172.strasbourg.iot-lab.info" - }, - { - "y": "2.00", - "x": "1.00", - "z": "1.50", - "network_address": "wsn430-173.strasbourg.iot-lab.info" - }, - { - "y": "2.00", - "x": "1.00", - "z": "2.50", - "network_address": "wsn430-174.strasbourg.iot-lab.info" - }, - { - "y": "2.00", - "x": "2.00", - "z": "0.50", - "network_address": "wsn430-175.strasbourg.iot-lab.info" - }, - { - "y": "2.00", - "x": "2.00", - "z": "1.50", - "network_address": "wsn430-176.strasbourg.iot-lab.info" - }, - { - "y": "2.00", - "x": "2.00", - "z": "2.50", - "network_address": "wsn430-177.strasbourg.iot-lab.info" - }, - { - "y": "2.00", - "x": "3.00", - "z": "0.50", - "network_address": "wsn430-178.strasbourg.iot-lab.info" - }, - { - "y": "2.00", - "x": "3.00", - "z": "1.50", - "network_address": "wsn430-179.strasbourg.iot-lab.info" - }, - { - "y": "2.00", - "x": "3.00", - "z": "2.50", - "network_address": "wsn430-180.strasbourg.iot-lab.info" - }, - { - "y": "2.00", - "x": "4.00", - "z": "0.50", - "network_address": "wsn430-181.strasbourg.iot-lab.info" - }, - { - "y": "2.00", - "x": "4.00", - "z": "1.50", - "network_address": "wsn430-182.strasbourg.iot-lab.info" - }, - { - "y": "2.00", - "x": "4.00", - "z": "2.50", - "network_address": "wsn430-183.strasbourg.iot-lab.info" - }, - { - "y": "2.00", - "x": "5.00", - "z": "0.50", - "network_address": "wsn430-184.strasbourg.iot-lab.info" - }, - { - "y": "2.00", - "x": "5.00", - "z": "1.50", - "network_address": "wsn430-185.strasbourg.iot-lab.info" - }, - { - "y": "2.00", - "x": "5.00", - "z": "2.50", - "network_address": "wsn430-186.strasbourg.iot-lab.info" - }, - { - "y": "2.00", - "x": "6.00", - "z": "0.50", - "network_address": "wsn430-187.strasbourg.iot-lab.info" - }, - { - "y": "2.00", - "x": "6.00", - "z": "1.50", - "network_address": "wsn430-188.strasbourg.iot-lab.info" - }, - { - "y": "2.00", - "x": "6.00", - "z": "2.50", - "network_address": "wsn430-189.strasbourg.iot-lab.info" - }, - { - "y": "2.00", - "x": "7.00", - "z": "0.50", - "network_address": "wsn430-190.strasbourg.iot-lab.info" - }, - { - "y": "2.00", - "x": "7.00", - "z": "1.50", - "network_address": "wsn430-191.strasbourg.iot-lab.info" - }, - { - "y": "2.00", - "x": "7.00", - "z": "2.50", - "network_address": "wsn430-192.strasbourg.iot-lab.info" - }, - { - "y": "1.00", - "x": "0.00", - "z": "0.50", - "network_address": "wsn430-193.strasbourg.iot-lab.info" - }, - { - "y": "1.00", - "x": "0.00", - "z": "1.50", - "network_address": "wsn430-194.strasbourg.iot-lab.info" - }, - { - "y": "1.00", - "x": "0.00", - "z": "2.50", - "network_address": "wsn430-195.strasbourg.iot-lab.info" - }, - { - "y": "1.00", - "x": "1.00", - "z": "0.50", - "network_address": "wsn430-196.strasbourg.iot-lab.info" - }, - { - "y": "1.00", - "x": "1.00", - "z": "1.50", - "network_address": "wsn430-197.strasbourg.iot-lab.info" - }, - { - "y": "1.00", - "x": "1.00", - "z": "2.50", - "network_address": "wsn430-198.strasbourg.iot-lab.info" - }, - { - "y": "1.00", - "x": "2.00", - "z": "0.50", - "network_address": "wsn430-199.strasbourg.iot-lab.info" - }, - { - "y": "1.00", - "x": "2.00", - "z": "1.50", - "network_address": "wsn430-200.strasbourg.iot-lab.info" - }, - { - "y": "1.00", - "x": "2.00", - "z": "2.50", - "network_address": "wsn430-201.strasbourg.iot-lab.info" - }, - { - "y": "1.00", - "x": "3.00", - "z": "0.50", - "network_address": "wsn430-202.strasbourg.iot-lab.info" - }, - { - "y": "1.00", - "x": "3.00", - "z": "1.50", - "network_address": "wsn430-203.strasbourg.iot-lab.info" - }, - { - "y": "1.00", - "x": "3.00", - "z": "2.50", - "network_address": "wsn430-204.strasbourg.iot-lab.info" - }, - { - "y": "1.00", - "x": "4.00", - "z": "0.50", - "network_address": "wsn430-205.strasbourg.iot-lab.info" - }, - { - "y": "1.00", - "x": "4.00", - "z": "1.50", - "network_address": "wsn430-206.strasbourg.iot-lab.info" - }, - { - "y": "1.00", - "x": "4.00", - "z": "2.50", - "network_address": "wsn430-207.strasbourg.iot-lab.info" - }, - { - "y": "1.00", - "x": "5.00", - "z": "0.50", - "network_address": "wsn430-208.strasbourg.iot-lab.info" - }, - { - "y": "1.00", - "x": "5.00", - "z": "1.50", - "network_address": "wsn430-209.strasbourg.iot-lab.info" - }, - { - "y": "1.00", - "x": "5.00", - "z": "2.50", - "network_address": "wsn430-210.strasbourg.iot-lab.info" - }, - { - "y": "1.00", - "x": "6.00", - "z": "0.50", - "network_address": "wsn430-211.strasbourg.iot-lab.info" - }, - { - "y": "1.00", - "x": "6.00", - "z": "1.50", - "network_address": "wsn430-212.strasbourg.iot-lab.info" - }, - { - "y": "1.00", - "x": "6.00", - "z": "2.50", - "network_address": "wsn430-213.strasbourg.iot-lab.info" - }, - { - "y": "1.00", - "x": "7.00", - "z": "0.50", - "network_address": "wsn430-214.strasbourg.iot-lab.info" - }, - { - "y": "1.00", - "x": "7.00", - "z": "1.50", - "network_address": "wsn430-215.strasbourg.iot-lab.info" - }, - { - "y": "1.00", - "x": "7.00", - "z": "2.50", - "network_address": "wsn430-216.strasbourg.iot-lab.info" - }, - { - "y": "0.00", - "x": "0.00", - "z": "0.50", - "network_address": "wsn430-217.strasbourg.iot-lab.info" - }, - { - "y": "0.00", - "x": "0.00", - "z": "1.50", - "network_address": "wsn430-218.strasbourg.iot-lab.info" - }, - { - "y": "0.00", - "x": "0.00", - "z": "2.50", - "network_address": "wsn430-219.strasbourg.iot-lab.info" - }, - { - "y": "0.00", - "x": "1.00", - "z": "0.50", - "network_address": "wsn430-220.strasbourg.iot-lab.info" - }, - { - "y": "0.00", - "x": "1.00", - "z": "1.50", - "network_address": "wsn430-221.strasbourg.iot-lab.info" - }, - { - "y": "0.00", - "x": "1.00", - "z": "2.50", - "network_address": "wsn430-222.strasbourg.iot-lab.info" - }, - { - "y": "0.00", - "x": "2.00", - "z": "0.50", - "network_address": "wsn430-223.strasbourg.iot-lab.info" - }, - { - "y": "0.00", - "x": "2.00", - "z": "1.50", - "network_address": "wsn430-224.strasbourg.iot-lab.info" - }, - { - "y": "0.00", - "x": "2.00", - "z": "2.50", - "network_address": "wsn430-225.strasbourg.iot-lab.info" - }, - { - "y": "0.00", - "x": "3.00", - "z": "0.50", - "network_address": "wsn430-226.strasbourg.iot-lab.info" - }, - { - "y": "0.00", - "x": "3.00", - "z": "1.50", - "network_address": "wsn430-227.strasbourg.iot-lab.info" - }, - { - "y": "0.00", - "x": "3.00", - "z": "2.50", - "network_address": "wsn430-228.strasbourg.iot-lab.info" - }, - { - "y": "0.00", - "x": "4.00", - "z": "0.50", - "network_address": "wsn430-229.strasbourg.iot-lab.info" - }, - { - "y": "0.00", - "x": "4.00", - "z": "1.50", - "network_address": "wsn430-230.strasbourg.iot-lab.info" - }, - { - "y": "0.00", - "x": "4.00", - "z": "2.50", - "network_address": "wsn430-231.strasbourg.iot-lab.info" - }, - { - "y": "0.00", - "x": "5.00", - "z": "0.50", - "network_address": "wsn430-232.strasbourg.iot-lab.info" - }, - { - "y": "0.00", - "x": "5.00", - "z": "1.50", - "network_address": "wsn430-233.strasbourg.iot-lab.info" - }, - { - "y": "0.00", - "x": "5.00", - "z": "2.50", - "network_address": "wsn430-234.strasbourg.iot-lab.info" - }, - { - "y": "0.00", - "x": "6.00", - "z": "0.50", - "network_address": "wsn430-235.strasbourg.iot-lab.info" - }, - { - "y": "0.00", - "x": "6.00", - "z": "1.50", - "network_address": "wsn430-236.strasbourg.iot-lab.info" - }, - { - "y": "0.00", - "x": "6.00", - "z": "2.50", - "network_address": "wsn430-237.strasbourg.iot-lab.info" - }, - { - "y": "0.00", - "x": "7.00", - "z": "0.50", - "network_address": "wsn430-238.strasbourg.iot-lab.info" - }, - { - "y": "0.00", - "x": "7.00", - "z": "1.50", - "network_address": "wsn430-239.strasbourg.iot-lab.info" - }, - { - "y": "0.00", - "x": "7.00", - "z": "2.50", - "network_address": "wsn430-240.strasbourg.iot-lab.info" - }, - { - "y": "6.00", - "x": "2.00", - "z": "1.20", - "network_address": "a8-1.strasbourg.iot-lab.info" - }, - { - "y": "6.00", - "x": "2.00", - "z": "2.10", - "network_address": "a8-2.strasbourg.iot-lab.info" - }, - { - "y": "6.00", - "x": "6.00", - "z": "1.20", - "network_address": "a8-3.strasbourg.iot-lab.info" - }, - { - "y": "6.00", - "x": "6.00", - "z": "2.10", - "network_address": "a8-4.strasbourg.iot-lab.info" - }, - { - "y": "6.00", - "x": "10.00", - "z": "1.20", - "network_address": "a8-5.strasbourg.iot-lab.info" - }, - { - "y": "6.00", - "x": "14.00", - "z": "1.20", - "network_address": "a8-7.strasbourg.iot-lab.info" - }, - { - "y": "6.00", - "x": "14.00", - "z": "2.10", - "network_address": "a8-8.strasbourg.iot-lab.info" - }, - { - "y": "2.00", - "x": "2.00", - "z": "2.10", - "network_address": "a8-10.strasbourg.iot-lab.info" - }, - { - "y": "2.00", - "x": "6.00", - "z": "1.20", - "network_address": "a8-11.strasbourg.iot-lab.info" - }, - { - "y": "2.00", - "x": "6.00", - "z": "2.10", - "network_address": "a8-12.strasbourg.iot-lab.info" - }, - { - "y": "2.00", - "x": "10.00", - "z": "1.20", - "network_address": "a8-13.strasbourg.iot-lab.info" - }, - { - "y": "2.00", - "x": "10.00", - "z": "2.10", - "network_address": "a8-14.strasbourg.iot-lab.info" - }, - { - "y": "8.00", - "x": "0.00", - "z": "1.20", - "mac": "05-43-32-ff-03-d2-96-87", - "network_address": "m3-1.strasbourg.iot-lab.info" - }, - { - "y": "8.00", - "x": "2.00", - "z": "1.20", - "mac": "05-43-32-ff-03-d4-97-89", - "network_address": "m3-3.strasbourg.iot-lab.info" - }, - { - "y": "8.00", - "x": "4.00", - "z": "1.20", - "mac": "05-43-32-ff-03-d5-90-84", - "network_address": "m3-5.strasbourg.iot-lab.info" - }, - { - "y": "8.00", - "x": "4.00", - "z": "2.10", - "network_address": "m3-6.strasbourg.iot-lab.info" - }, - { - "y": "8.00", - "x": "6.00", - "z": "1.20", - "network_address": "m3-7.strasbourg.iot-lab.info" - }, - { - "y": "8.00", - "x": "6.00", - "z": "2.10", - "network_address": "m3-8.strasbourg.iot-lab.info" - }, - { - "y": "8.00", - "x": "8.00", - "z": "1.20", - "network_address": "m3-9.strasbourg.iot-lab.info" - }, - { - "y": "8.00", - "x": "10.00", - "z": "1.20", - "network_address": "m3-11.strasbourg.iot-lab.info" - }, - { - "y": "8.00", - "x": "12.00", - "z": "1.20", - "network_address": "m3-13.strasbourg.iot-lab.info" - }, - { - "y": "8.00", - "x": "12.00", - "z": "2.10", - "network_address": "m3-14.strasbourg.iot-lab.info" - }, - { - "y": "8.00", - "x": "14.00", - "z": "1.20", - "network_address": "m3-15.strasbourg.iot-lab.info" - }, - { - "y": "8.00", - "x": "14.00", - "z": "2.10", - "network_address": "m3-16.strasbourg.iot-lab.info" - }, - { - "y": "8.00", - "x": "16.00", - "z": "1.20", - "network_address": "m3-17.strasbourg.iot-lab.info" - }, - { - "y": "6.00", - "x": "0.00", - "z": "2.10", - "network_address": "m3-20.strasbourg.iot-lab.info" - }, - { - "y": "6.00", - "x": "4.00", - "z": "1.20", - "network_address": "m3-21.strasbourg.iot-lab.info" - }, - { - "y": "6.00", - "x": "4.00", - "z": "2.10", - "network_address": "m3-22.strasbourg.iot-lab.info" - }, - { - "y": "6.00", - "x": "8.00", - "z": "1.20", - "network_address": "m3-23.strasbourg.iot-lab.info" - }, - { - "y": "6.00", - "x": "8.00", - "z": "2.10", - "network_address": "m3-24.strasbourg.iot-lab.info" - }, - { - "y": "6.00", - "x": "12.00", - "z": "1.20", - "network_address": "m3-25.strasbourg.iot-lab.info" - }, - { - "y": "6.00", - "x": "16.00", - "z": "1.20", - "network_address": "m3-27.strasbourg.iot-lab.info" - }, - { - "y": "6.00", - "x": "16.00", - "z": "2.10", - "network_address": "m3-28.strasbourg.iot-lab.info" - }, - { - "y": "4.00", - "x": "0.00", - "z": "1.20", - "network_address": "m3-29.strasbourg.iot-lab.info" - }, - { - "y": "4.00", - "x": "2.00", - "z": "1.20", - "network_address": "m3-31.strasbourg.iot-lab.info" - }, - { - "y": "4.00", - "x": "2.00", - "z": "2.10", - "network_address": "m3-32.strasbourg.iot-lab.info" - }, - { - "y": "4.00", - "x": "4.00", - "z": "2.10", - "network_address": "m3-34.strasbourg.iot-lab.info" - }, - { - "y": "4.00", - "x": "6.00", - "z": "1.20", - "network_address": "m3-35.strasbourg.iot-lab.info" - }, - { - "y": "4.00", - "x": "6.00", - "z": "2.10", - "network_address": "m3-36.strasbourg.iot-lab.info" - }, - { - "y": "4.00", - "x": "8.00", - "z": "1.20", - "network_address": "m3-37.strasbourg.iot-lab.info" - }, - { - "y": "4.00", - "x": "8.00", - "z": "2.10", - "network_address": "m3-38.strasbourg.iot-lab.info" - }, - { - "y": "4.00", - "x": "10.00", - "z": "1.20", - "network_address": "m3-39.strasbourg.iot-lab.info" - }, - { - "y": "5.00", - "x": "12.00", - "z": "1.20", - "network_address": "m3-41.strasbourg.iot-lab.info" - }, - { - "y": "5.00", - "x": "12.00", - "z": "2.10", - "network_address": "m3-42.strasbourg.iot-lab.info" - }, - { - "y": "5.00", - "x": "14.00", - "z": "1.20", - "network_address": "m3-43.strasbourg.iot-lab.info" - }, - { - "y": "5.00", - "x": "14.00", - "z": "2.10", - "network_address": "m3-44.strasbourg.iot-lab.info" - }, - { - "y": "5.00", - "x": "16.00", - "z": "2.10", - "network_address": "m3-46.strasbourg.iot-lab.info" - }, - { - "y": "2.00", - "x": "0.00", - "z": "1.20", - "network_address": "m3-47.strasbourg.iot-lab.info" - }, - { - "y": "2.00", - "x": "4.00", - "z": "1.20", - "network_address": "m3-49.strasbourg.iot-lab.info" - }, - { - "y": "2.00", - "x": "4.00", - "z": "2.10", - "network_address": "m3-50.strasbourg.iot-lab.info" - }, - { - "y": "2.00", - "x": "8.00", - "z": "2.10", - "network_address": "m3-52.strasbourg.iot-lab.info" - }, - { - "y": "0.00", - "x": "0.00", - "z": "1.20", - "network_address": "m3-53.strasbourg.iot-lab.info" - }, - { - "y": "0.00", - "x": "0.00", - "z": "2.10", - "network_address": "m3-54.strasbourg.iot-lab.info" - }, - { - "y": "0.00", - "x": "2.00", - "z": "2.10", - "network_address": "m3-56.strasbourg.iot-lab.info" - }, - { - "y": "0.00", - "x": "4.00", - "z": "2.10", - "network_address": "m3-58.strasbourg.iot-lab.info" - }, - { - "y": "0.00", - "x": "6.00", - "z": "1.20", - "network_address": "m3-59.strasbourg.iot-lab.info" - }, - { - "y": "0.00", - "x": "6.00", - "z": "2.10", - "network_address": "m3-60.strasbourg.iot-lab.info" - }, - { - "y": "0.00", - "x": "8.00", - "z": "1.20", - "network_address": "m3-61.strasbourg.iot-lab.info" - }, - { - "y": "0.00", - "x": "8.00", - "z": "2.10", - "network_address": "m3-62.strasbourg.iot-lab.info" - }, - { - "y": "0.00", - "x": "10.00", - "z": "1.20", - "network_address": "m3-63.strasbourg.iot-lab.info" - }, - { - "y": "0.00", - "x": "10.00", - "z": "2.10", - "network_address": "m3-64.strasbourg.iot-lab.info" - }, - { - "y": " ", - "x": " ", - "z": " ", - "network_address": "m3-96.strasbourg.iot-lab.info" - }, - { - "y": " ", - "x": " ", - "z": " ", - "network_address": "m3-97.strasbourg.iot-lab.info" - } - ], - "location": "strasbourg" - }, - { - "nodes": [ - { - "y": "0.1", - "x": "3.22", - "z": "0.6", - "network_address": "m3-6.lille.iot-lab.info" - }, - { - "y": "0.1", - "x": "5.62", - "z": "1.5", - "network_address": "m3-9.lille.iot-lab.info" - }, - { - "y": "0.1", - "x": "8.02", - "z": "0.6", - "network_address": "m3-14.lille.iot-lab.info" - }, - { - "y": "0.1", - "x": "9.22", - "z": "1.5", - "network_address": "m3-15.lille.iot-lab.info" - }, - { - "y": "0.1", - "x": "10.42", - "z": "0.6", - "network_address": "m3-18.lille.iot-lab.info" - }, - { - "y": "0.1", - "x": "11.62", - "z": "1.5", - "network_address": "m3-19.lille.iot-lab.info" - }, - { - "y": "0.1", - "x": "14.02", - "z": "1.5", - "network_address": "m3-23.lille.iot-lab.info" - }, - { - "y": "0.1", - "x": "14.02", - "z": "0.6", - "network_address": "m3-24.lille.iot-lab.info" - }, - { - "y": "0.1", - "x": "15.22", - "z": "0.6", - "network_address": "m3-26.lille.iot-lab.info" - }, - { - "y": "0.3", - "x": "0.1", - "z": "1.5", - "network_address": "m3-27.lille.iot-lab.info" - }, - { - "y": "0.3", - "x": "0.1", - "z": "0.6", - "network_address": "m3-28.lille.iot-lab.info" - }, - { - "y": "0.3", - "x": "4.42", - "z": "2.6", - "network_address": "m3-32.lille.iot-lab.info" - }, - { - "y": "0.3", - "x": "5.62", - "z": "2.6", - "network_address": "m3-33.lille.iot-lab.info" - }, - { - "y": "0.3", - "x": "6.82", - "z": "2.6", - "network_address": "m3-34.lille.iot-lab.info" - }, - { - "y": "0.3", - "x": "11.62", - "z": "2.6", - "network_address": "m3-38.lille.iot-lab.info" - }, - { - "y": "0.3", - "x": "12.82", - "z": "2.6", - "network_address": "m3-39.lille.iot-lab.info" - }, - { - "y": "0.3", - "x": "14.02", - "z": "2.6", - "network_address": "m3-40.lille.iot-lab.info" - }, - { - "y": "0.3", - "x": "16.1", - "z": "2.4", - "network_address": "m3-42.lille.iot-lab.info" - }, - { - "y": "1.5", - "x": "0.82", - "z": "2.6", - "network_address": "m3-47.lille.iot-lab.info" - }, - { - "y": "1.5", - "x": "3.22", - "z": "2.6", - "network_address": "m3-49.lille.iot-lab.info" - }, - { - "y": "1.5", - "x": "5.62", - "z": "2.6", - "network_address": "m3-51.lille.iot-lab.info" - }, - { - "y": "1.5", - "x": "6.82", - "z": "2.6", - "network_address": "m3-52.lille.iot-lab.info" - }, - { - "y": "1.5", - "x": "9.22", - "z": "2.6", - "network_address": "m3-54.lille.iot-lab.info" - }, - { - "y": "1.5", - "x": "11.62", - "z": "2.6", - "network_address": "m3-56.lille.iot-lab.info" - }, - { - "y": "1.5", - "x": "12.82", - "z": "2.6", - "network_address": "m3-57.lille.iot-lab.info" - }, - { - "y": "2.7", - "x": "0.1", - "z": "1.5", - "network_address": "m3-63.lille.iot-lab.info" - }, - { - "y": "2.7", - "x": "0.1", - "z": "0.6", - "network_address": "m3-64.lille.iot-lab.info" - }, - { - "y": "2.7", - "x": "0.82", - "z": "2.6", - "network_address": "m3-65.lille.iot-lab.info" - }, - { - "y": "2.7", - "x": "2.02", - "z": "2.6", - "network_address": "m3-66.lille.iot-lab.info" - }, - { - "y": "2.7", - "x": "3.22", - "z": "2.6", - "network_address": "m3-67.lille.iot-lab.info" - }, - { - "y": "2.7", - "x": "6.82", - "z": "2.6", - "network_address": "m3-70.lille.iot-lab.info" - }, - { - "y": "2.7", - "x": "8.02", - "z": "2.6", - "network_address": "m3-71.lille.iot-lab.info" - }, - { - "y": "2.7", - "x": "9.22", - "z": "2.6", - "network_address": "m3-72.lille.iot-lab.info" - }, - { - "y": "2.7", - "x": "10.42", - "z": "2.6", - "network_address": "m3-73.lille.iot-lab.info" - }, - { - "y": "2.7", - "x": "11.62", - "z": "2.6", - "network_address": "m3-74.lille.iot-lab.info" - }, - { - "y": "2.7", - "x": "14.02", - "z": "2.6", - "network_address": "m3-76.lille.iot-lab.info" - }, - { - "y": "3.9", - "x": "0.1", - "z": "0.6", - "network_address": "m3-82.lille.iot-lab.info" - }, - { - "y": "3.9", - "x": "0.82", - "z": "2.6", - "network_address": "m3-83.lille.iot-lab.info" - }, - { - "y": "3.9", - "x": "3.22", - "z": "2.6", - "network_address": "m3-85.lille.iot-lab.info" - }, - { - "y": "3.9", - "x": "5.62", - "z": "2.6", - "network_address": "m3-87.lille.iot-lab.info" - }, - { - "y": "3.9", - "x": "6.82", - "z": "2.6", - "network_address": "m3-88.lille.iot-lab.info" - }, - { - "y": "3.9", - "x": "8.02", - "z": "2.6", - "network_address": "m3-89.lille.iot-lab.info" - }, - { - "y": "3.9", - "x": "9.22", - "z": "2.6", - "network_address": "m3-90.lille.iot-lab.info" - }, - { - "y": "3.9", - "x": "10.42", - "z": "2.6", - "network_address": "m3-91.lille.iot-lab.info" - }, - { - "y": "3.9", - "x": "11.62", - "z": "2.6", - "network_address": "m3-92.lille.iot-lab.info" - }, - { - "y": "3.9", - "x": "14.02", - "z": "2.6", - "network_address": "m3-94.lille.iot-lab.info" - }, - { - "y": "3.9", - "x": "15.22", - "z": "2.6", - "network_address": "m3-95.lille.iot-lab.info" - }, - { - "y": "3.9", - "x": "16.1", - "z": "1.5", - "network_address": "m3-97.lille.iot-lab.info" - }, - { - "y": "5.1", - "x": "0.1", - "z": "0.6", - "network_address": "m3-100.lille.iot-lab.info" - }, - { - "y": "5.1", - "x": "2.02", - "z": "2.6", - "network_address": "m3-102.lille.iot-lab.info" - }, - { - "y": "5.1", - "x": "4.42", - "z": "2.6", - "network_address": "m3-104.lille.iot-lab.info" - }, - { - "y": "5.1", - "x": "6.82", - "z": "2.6", - "network_address": "m3-106.lille.iot-lab.info" - }, - { - "y": "5.1", - "x": "9.22", - "z": "2.6", - "network_address": "m3-108.lille.iot-lab.info" - }, - { - "y": "5.1", - "x": "11.62", - "z": "2.6", - "network_address": "m3-110.lille.iot-lab.info" - }, - { - "y": "5.1", - "x": "12.82", - "z": "2.6", - "network_address": "m3-111.lille.iot-lab.info" - }, - { - "y": "5.1", - "x": "15.22", - "z": "2.6", - "network_address": "m3-113.lille.iot-lab.info" - }, - { - "y": "5.1", - "x": "16.1", - "z": "2.4", - "network_address": "m3-114.lille.iot-lab.info" - }, - { - "y": "5.1", - "x": "16.1", - "z": "1.5", - "network_address": "m3-115.lille.iot-lab.info" - }, - { - "y": "5.1", - "x": "16.1", - "z": "0.6", - "network_address": "m3-116.lille.iot-lab.info" - }, - { - "y": "5.45", - "x": "5.42", - "z": "0.6", - "network_address": "m3-118.lille.iot-lab.info" - }, - { - "y": "5.1", - "x": "14.18", - "z": "1.5", - "network_address": "m3-121.lille.iot-lab.info" - }, - { - "y": "5.1", - "x": "14.18", - "z": "0.6", - "network_address": "m3-122.lille.iot-lab.info" - }, - { - "y": "6.3", - "x": "3.22", - "z": "2.6", - "network_address": "m3-125.lille.iot-lab.info" - }, - { - "y": "6.3", - "x": "5.62", - "z": "2.6", - "network_address": "m3-127.lille.iot-lab.info" - }, - { - "y": "6.3", - "x": "9.22", - "z": "2.6", - "network_address": "m3-130.lille.iot-lab.info" - }, - { - "y": "6.3", - "x": "10.42", - "z": "2.6", - "network_address": "m3-131.lille.iot-lab.info" - }, - { - "y": "6.3", - "x": "11.62", - "z": "2.6", - "network_address": "m3-132.lille.iot-lab.info" - }, - { - "y": "6.3", - "x": "12.82", - "z": "2.6", - "network_address": "m3-133.lille.iot-lab.info" - }, - { - "y": "6.3", - "x": "14.02", - "z": "2.6", - "network_address": "m3-134.lille.iot-lab.info" - }, - { - "y": "6.3", - "x": "14.18", - "z": "1.5", - "network_address": "m3-135.lille.iot-lab.info" - }, - { - "y": "6.3", - "x": "14.18", - "z": "0.6", - "network_address": "m3-136.lille.iot-lab.info" - }, - { - "y": "7.5", - "x": "2.02", - "z": "2.6", - "network_address": "m3-138.lille.iot-lab.info" - }, - { - "y": "7.5", - "x": "4.42", - "z": "2.6", - "network_address": "m3-140.lille.iot-lab.info" - }, - { - "y": "7.5", - "x": "6.82", - "z": "2.6", - "network_address": "m3-142.lille.iot-lab.info" - }, - { - "y": "7.5", - "x": "8.02", - "z": "2.6", - "network_address": "m3-143.lille.iot-lab.info" - }, - { - "y": "7.5", - "x": "9.22", - "z": "2.6", - "network_address": "m3-144.lille.iot-lab.info" - }, - { - "y": "7.5", - "x": "10.42", - "z": "2.6", - "network_address": "m3-145.lille.iot-lab.info" - }, - { - "y": "7.5", - "x": "14.02", - "z": "2.6", - "network_address": "m3-148.lille.iot-lab.info" - }, - { - "y": "7.5", - "x": "14.18", - "z": "1.5", - "network_address": "m3-149.lille.iot-lab.info" - }, - { - "y": "8.7", - "x": "6.82", - "z": "2.6", - "network_address": "m3-156.lille.iot-lab.info" - }, - { - "y": "8.7", - "x": "8.02", - "z": "2.6", - "network_address": "m3-157.lille.iot-lab.info" - }, - { - "y": "8.7", - "x": "10.42", - "z": "2.6", - "network_address": "m3-159.lille.iot-lab.info" - }, - { - "y": "8.7", - "x": "12.82", - "z": "2.6", - "network_address": "m3-161.lille.iot-lab.info" - }, - { - "y": "8.7", - "x": "14.18", - "z": "1.5", - "network_address": "m3-163.lille.iot-lab.info" - }, - { - "y": "9.16", - "x": "3.22", - "z": "1.5", - "network_address": "m3-169.lille.iot-lab.info" - }, - { - "y": "9.16", - "x": "3.22", - "z": "0.6", - "network_address": "m3-170.lille.iot-lab.info" - }, - { - "y": "9.16", - "x": "6.82", - "z": "1.5", - "network_address": "m3-173.lille.iot-lab.info" - }, - { - "y": "9.16", - "x": "6.82", - "z": "0.6", - "network_address": "m3-174.lille.iot-lab.info" - }, - { - "y": "9.16", - "x": "9.22", - "z": "1.5", - "network_address": "m3-177.lille.iot-lab.info" - }, - { - "y": "9.9", - "x": "0.82", - "z": "2.6", - "network_address": "m3-179.lille.iot-lab.info" - }, - { - "y": "9.9", - "x": "3.22", - "z": "2.6", - "network_address": "m3-181.lille.iot-lab.info" - }, - { - "y": "9.9", - "x": "4.42", - "z": "2.6", - "network_address": "m3-182.lille.iot-lab.info" - }, - { - "y": "9.9", - "x": "8.02", - "z": "2.6", - "network_address": "m3-184.lille.iot-lab.info" - }, - { - "y": "9.9", - "x": "11.62", - "z": "2.6", - "network_address": "m3-187.lille.iot-lab.info" - }, - { - "y": "9.9", - "x": "12.82", - "z": "2.6", - "network_address": "m3-188.lille.iot-lab.info" - }, - { - "y": "9.9", - "x": "14.18", - "z": "1.5", - "network_address": "m3-190.lille.iot-lab.info" - }, - { - "y": "11.1", - "x": "2.02", - "z": "2.6", - "network_address": "m3-193.lille.iot-lab.info" - }, - { - "y": "11.1", - "x": "3.22", - "z": "2.6", - "network_address": "m3-194.lille.iot-lab.info" - }, - { - "y": "11.1", - "x": "4.42", - "z": "2.6", - "network_address": "m3-195.lille.iot-lab.info" - }, - { - "y": "11.1", - "x": "5.62", - "z": "2.6", - "network_address": "m3-196.lille.iot-lab.info" - }, - { - "y": "11.1", - "x": "6.82", - "z": "2.6", - "network_address": "m3-197.lille.iot-lab.info" - }, - { - "y": "11.1", - "x": "10.42", - "z": "2.6", - "network_address": "m3-200.lille.iot-lab.info" - }, - { - "y": "11.1", - "x": "12.82", - "z": "2.6", - "network_address": "m3-202.lille.iot-lab.info" - }, - { - "y": "11.1", - "x": "14.02", - "z": "2.6", - "network_address": "m3-203.lille.iot-lab.info" - }, - { - "y": "11.1", - "x": "15.22", - "z": "2.6", - "network_address": "m3-204.lille.iot-lab.info" - }, - { - "y": "12.3", - "x": "5.62", - "z": "2.6", - "network_address": "m3-209.lille.iot-lab.info" - }, - { - "y": "12.3", - "x": "6.82", - "z": "2.6", - "network_address": "m3-210.lille.iot-lab.info" - }, - { - "y": "12.3", - "x": "8.02", - "z": "2.6", - "network_address": "m3-211.lille.iot-lab.info" - }, - { - "y": "12.3", - "x": "9.22", - "z": "2.6", - "network_address": "m3-212.lille.iot-lab.info" - }, - { - "y": "12.3", - "x": "10.42", - "z": "2.6", - "network_address": "m3-213.lille.iot-lab.info" - }, - { - "y": "12.3", - "x": "11.62", - "z": "2.6", - "network_address": "m3-214.lille.iot-lab.info" - }, - { - "y": "12.3", - "x": "12.82", - "z": "2.6", - "network_address": "m3-215.lille.iot-lab.info" - }, - { - "y": "12.3", - "x": "15.22", - "z": "2.6", - "network_address": "m3-217.lille.iot-lab.info" - }, - { - "y": "13.5", - "x": "0.82", - "z": "2.6", - "network_address": "m3-218.lille.iot-lab.info" - }, - { - "y": "13.5", - "x": "2.02", - "z": "2.6", - "network_address": "m3-219.lille.iot-lab.info" - }, - { - "y": "13.5", - "x": "3.22", - "z": "2.6", - "network_address": "m3-220.lille.iot-lab.info" - }, - { - "y": "13.5", - "x": "4.42", - "z": "2.6", - "network_address": "m3-221.lille.iot-lab.info" - }, - { - "y": "13.5", - "x": "6.82", - "z": "2.6", - "network_address": "m3-223.lille.iot-lab.info" - }, - { - "y": "13.5", - "x": "10.42", - "z": "2.6", - "network_address": "m3-226.lille.iot-lab.info" - }, - { - "y": "13.5", - "x": "12.82", - "z": "2.6", - "network_address": "m3-228.lille.iot-lab.info" - }, - { - "y": "13.5", - "x": "14.02", - "z": "2.6", - "network_address": "m3-229.lille.iot-lab.info" - }, - { - "y": "13.5", - "x": "15.22", - "z": "2.6", - "network_address": "m3-230.lille.iot-lab.info" - }, - { - "y": "14.7", - "x": "2.02", - "z": "2.6", - "network_address": "m3-232.lille.iot-lab.info" - }, - { - "y": "14.7", - "x": "3.22", - "z": "2.6", - "network_address": "m3-233.lille.iot-lab.info" - }, - { - "y": "14.7", - "x": "6.82", - "z": "2.6", - "network_address": "m3-236.lille.iot-lab.info" - }, - { - "y": "14.7", - "x": "9.22", - "z": "2.6", - "network_address": "m3-238.lille.iot-lab.info" - }, - { - "y": "14.7", - "x": "10.42", - "z": "2.6", - "network_address": "m3-239.lille.iot-lab.info" - }, - { - "y": "14.7", - "x": "11.62", - "z": "2.6", - "network_address": "m3-240.lille.iot-lab.info" - }, - { - "y": "14.7", - "x": "12.82", - "z": "2.6", - "network_address": "m3-241.lille.iot-lab.info" - }, - { - "y": "14.7", - "x": "15.22", - "z": "2.6", - "network_address": "m3-243.lille.iot-lab.info" - }, - { - "y": "15.9", - "x": "0.82", - "z": "2.6", - "network_address": "m3-244.lille.iot-lab.info" - }, - { - "y": "15.9", - "x": "2.02", - "z": "2.6", - "network_address": "m3-245.lille.iot-lab.info" - }, - { - "y": "15.9", - "x": "3.22", - "z": "2.6", - "network_address": "m3-246.lille.iot-lab.info" - }, - { - "y": "15.9", - "x": "5.62", - "z": "2.6", - "network_address": "m3-248.lille.iot-lab.info" - }, - { - "y": "15.9", - "x": "8.02", - "z": "2.6", - "network_address": "m3-250.lille.iot-lab.info" - }, - { - "y": "15.9", - "x": "11.62", - "z": "2.6", - "network_address": "m3-253.lille.iot-lab.info" - }, - { - "y": "15.9", - "x": "12.82", - "z": "2.6", - "network_address": "m3-254.lille.iot-lab.info" - }, - { - "y": "15.9", - "x": "14.02", - "z": "2.6", - "network_address": "m3-255.lille.iot-lab.info" - }, - { - "y": "15.9", - "x": "15.22", - "z": "2.6", - "network_address": "m3-256.lille.iot-lab.info" - }, - { - "y": "0.1", - "x": "0.82", - "z": "0.6", - "network_address": "m3-2.lille.iot-lab.info" - }, - { - "y": "0.1", - "x": "2.02", - "z": "0.6", - "network_address": "m3-4.lille.iot-lab.info" - }, - { - "y": "0.1", - "x": "3.22", - "z": "1.5", - "network_address": "m3-5.lille.iot-lab.info" - }, - { - "y": "0.1", - "x": "4.42", - "z": "1.5", - "network_address": "m3-7.lille.iot-lab.info" - }, - { - "y": "0.1", - "x": "8.02", - "z": "1.5", - "network_address": "m3-13.lille.iot-lab.info" - }, - { - "y": "0.1", - "x": "9.22", - "z": "0.6", - "network_address": "m3-16.lille.iot-lab.info" - }, - { - "y": "0.1", - "x": "10.42", - "z": "1.5", - "network_address": "m3-17.lille.iot-lab.info" - }, - { - "y": "0.1", - "x": "11.62", - "z": "0.6", - "network_address": "m3-20.lille.iot-lab.info" - }, - { - "y": "0.1", - "x": "12.82", - "z": "1.5", - "network_address": "m3-21.lille.iot-lab.info" - }, - { - "y": "0.1", - "x": "12.82", - "z": "0.6", - "network_address": "m3-22.lille.iot-lab.info" - }, - { - "y": "0.1", - "x": "15.22", - "z": "1.5", - "network_address": "m3-25.lille.iot-lab.info" - }, - { - "y": "0.3", - "x": "2.02", - "z": "2.6", - "network_address": "m3-30.lille.iot-lab.info" - }, - { - "y": "0.3", - "x": "3.22", - "z": "2.6", - "network_address": "m3-31.lille.iot-lab.info" - }, - { - "y": "0.3", - "x": "8.02", - "z": "2.6", - "network_address": "m3-35.lille.iot-lab.info" - }, - { - "y": "0.3", - "x": "9.22", - "z": "2.6", - "network_address": "m3-36.lille.iot-lab.info" - }, - { - "y": "0.3", - "x": "10.42", - "z": "2.6", - "network_address": "m3-37.lille.iot-lab.info" - }, - { - "y": "0.3", - "x": "16.1", - "z": "1.5", - "network_address": "m3-43.lille.iot-lab.info" - }, - { - "y": "1.5", - "x": "0.1", - "z": "1.5", - "network_address": "m3-45.lille.iot-lab.info" - }, - { - "y": "1.5", - "x": "0.1", - "z": "0.6", - "network_address": "m3-46.lille.iot-lab.info" - }, - { - "y": "1.5", - "x": "2.02", - "z": "2.6", - "network_address": "m3-48.lille.iot-lab.info" - }, - { - "y": "1.5", - "x": "4.42", - "z": "2.6", - "network_address": "m3-50.lille.iot-lab.info" - }, - { - "y": "1.5", - "x": "8.02", - "z": "2.6", - "network_address": "m3-53.lille.iot-lab.info" - }, - { - "y": "1.5", - "x": "14.02", - "z": "2.6", - "network_address": "m3-58.lille.iot-lab.info" - }, - { - "y": "1.5", - "x": "15.22", - "z": "2.6", - "network_address": "m3-59.lille.iot-lab.info" - }, - { - "y": "1.5", - "x": "16.1", - "z": "2.4", - "network_address": "m3-60.lille.iot-lab.info" - }, - { - "y": "1.5", - "x": "16.1", - "z": "1.5", - "network_address": "m3-61.lille.iot-lab.info" - }, - { - "y": "1.5", - "x": "16.1", - "z": "0.6", - "network_address": "m3-62.lille.iot-lab.info" - }, - { - "y": "2.7", - "x": "5.62", - "z": "2.6", - "network_address": "m3-69.lille.iot-lab.info" - }, - { - "y": "2.7", - "x": "12.82", - "z": "2.6", - "network_address": "m3-75.lille.iot-lab.info" - }, - { - "y": "2.7", - "x": "15.22", - "z": "2.6", - "network_address": "m3-77.lille.iot-lab.info" - }, - { - "y": "2.7", - "x": "16.1", - "z": "2.4", - "network_address": "m3-78.lille.iot-lab.info" - }, - { - "y": "3.9", - "x": "0.1", - "z": "1.5", - "network_address": "m3-81.lille.iot-lab.info" - }, - { - "y": "3.9", - "x": "2.02", - "z": "2.6", - "network_address": "m3-84.lille.iot-lab.info" - }, - { - "y": "3.9", - "x": "4.42", - "z": "2.6", - "network_address": "m3-86.lille.iot-lab.info" - }, - { - "y": "3.9", - "x": "12.82", - "z": "2.6", - "network_address": "m3-93.lille.iot-lab.info" - }, - { - "y": "3.9", - "x": "16.1", - "z": "2.4", - "network_address": "m3-96.lille.iot-lab.info" - }, - { - "y": "3.9", - "x": "16.1", - "z": "0.6", - "network_address": "m3-98.lille.iot-lab.info" - }, - { - "y": "5.1", - "x": "0.1", - "z": "1.5", - "network_address": "m3-99.lille.iot-lab.info" - }, - { - "y": "5.1", - "x": "3.22", - "z": "2.6", - "network_address": "m3-103.lille.iot-lab.info" - }, - { - "y": "5.1", - "x": "5.62", - "z": "2.6", - "network_address": "m3-105.lille.iot-lab.info" - }, - { - "y": "5.1", - "x": "8.02", - "z": "2.6", - "network_address": "m3-107.lille.iot-lab.info" - }, - { - "y": "5.1", - "x": "10.42", - "z": "2.6", - "network_address": "m3-109.lille.iot-lab.info" - }, - { - "y": "5.1", - "x": "14.02", - "z": "2.6", - "network_address": "m3-112.lille.iot-lab.info" - }, - { - "y": "5.45", - "x": "5.42", - "z": "1.5", - "network_address": "m3-117.lille.iot-lab.info" - }, - { - "y": "5.45", - "x": "10.82", - "z": "1.5", - "network_address": "m3-119.lille.iot-lab.info" - }, - { - "y": "5.45", - "x": "10.82", - "z": "0.6", - "network_address": "m3-120.lille.iot-lab.info" - }, - { - "y": "6.3", - "x": "0.82", - "z": "2.6", - "network_address": "m3-123.lille.iot-lab.info" - }, - { - "y": "6.3", - "x": "2.02", - "z": "2.6", - "network_address": "m3-124.lille.iot-lab.info" - }, - { - "y": "6.3", - "x": "4.42", - "z": "2.6", - "network_address": "m3-126.lille.iot-lab.info" - }, - { - "y": "7.5", - "x": "0.82", - "z": "2.6", - "network_address": "m3-137.lille.iot-lab.info" - }, - { - "y": "7.5", - "x": "3.22", - "z": "2.6", - "network_address": "m3-139.lille.iot-lab.info" - }, - { - "y": "7.5", - "x": "5.62", - "z": "2.6", - "network_address": "m3-141.lille.iot-lab.info" - }, - { - "y": "7.5", - "x": "11.62", - "z": "2.6", - "network_address": "m3-146.lille.iot-lab.info" - }, - { - "y": "7.5", - "x": "12.82", - "z": "2.6", - "network_address": "m3-147.lille.iot-lab.info" - }, - { - "y": "8.7", - "x": "0.82", - "z": "2.6", - "network_address": "m3-151.lille.iot-lab.info" - }, - { - "y": "8.7", - "x": "2.02", - "z": "2.6", - "network_address": "m3-152.lille.iot-lab.info" - }, - { - "y": "8.7", - "x": "3.22", - "z": "2.6", - "network_address": "m3-153.lille.iot-lab.info" - }, - { - "y": "8.7", - "x": "4.42", - "z": "2.6", - "network_address": "m3-154.lille.iot-lab.info" - }, - { - "y": "8.7", - "x": "5.62", - "z": "2.6", - "network_address": "m3-155.lille.iot-lab.info" - }, - { - "y": "8.7", - "x": "9.22", - "z": "2.6", - "network_address": "m3-158.lille.iot-lab.info" - }, - { - "y": "8.7", - "x": "14.02", - "z": "2.6", - "network_address": "m3-162.lille.iot-lab.info" - }, - { - "y": "8.7", - "x": "14.18", - "z": "0.6", - "network_address": "m3-164.lille.iot-lab.info" - }, - { - "y": "9.16", - "x": "0.82", - "z": "1.5", - "network_address": "m3-165.lille.iot-lab.info" - }, - { - "y": "9.16", - "x": "0.82", - "z": "0.6", - "network_address": "m3-166.lille.iot-lab.info" - }, - { - "y": "9.16", - "x": "2.02", - "z": "1.5", - "network_address": "m3-167.lille.iot-lab.info" - }, - { - "y": "9.16", - "x": "2.02", - "z": "0.6", - "network_address": "m3-168.lille.iot-lab.info" - }, - { - "y": "9.16", - "x": "4.42", - "z": "1.5", - "network_address": "m3-171.lille.iot-lab.info" - }, - { - "y": "9.16", - "x": "4.42", - "z": "0.6", - "network_address": "m3-172.lille.iot-lab.info" - }, - { - "y": "9.16", - "x": "8.02", - "z": "1.5", - "network_address": "m3-175.lille.iot-lab.info" - }, - { - "y": "9.16", - "x": "8.02", - "z": "0.6", - "network_address": "m3-176.lille.iot-lab.info" - }, - { - "y": "9.9", - "x": "2.02", - "z": "2.6", - "network_address": "m3-180.lille.iot-lab.info" - }, - { - "y": "9.9", - "x": "6.82", - "z": "2.6", - "network_address": "m3-183.lille.iot-lab.info" - }, - { - "y": "9.9", - "x": "9.22", - "z": "2.6", - "network_address": "m3-185.lille.iot-lab.info" - }, - { - "y": "9.9", - "x": "10.42", - "z": "2.6", - "network_address": "m3-186.lille.iot-lab.info" - }, - { - "y": "9.9", - "x": "14.02", - "z": "2.6", - "network_address": "m3-189.lille.iot-lab.info" - }, - { - "y": "9.9", - "x": "14.18", - "z": "0.6", - "network_address": "m3-191.lille.iot-lab.info" - }, - { - "y": "11.1", - "x": "0.82", - "z": "2.6", - "network_address": "m3-192.lille.iot-lab.info" - }, - { - "y": "11.1", - "x": "8.02", - "z": "2.6", - "network_address": "m3-198.lille.iot-lab.info" - }, - { - "y": "11.1", - "x": "9.22", - "z": "2.6", - "network_address": "m3-199.lille.iot-lab.info" - }, - { - "y": "11.1", - "x": "11.62", - "z": "2.6", - "network_address": "m3-201.lille.iot-lab.info" - }, - { - "y": "12.3", - "x": "0.82", - "z": "2.6", - "network_address": "m3-205.lille.iot-lab.info" - }, - { - "y": "12.3", - "x": "3.22", - "z": "2.6", - "network_address": "m3-207.lille.iot-lab.info" - }, - { - "y": "12.3", - "x": "4.42", - "z": "2.6", - "network_address": "m3-208.lille.iot-lab.info" - }, - { - "y": "13.5", - "x": "5.62", - "z": "2.6", - "network_address": "m3-222.lille.iot-lab.info" - }, - { - "y": "13.5", - "x": "8.02", - "z": "2.6", - "network_address": "m3-224.lille.iot-lab.info" - }, - { - "y": "13.5", - "x": "9.22", - "z": "2.6", - "network_address": "m3-225.lille.iot-lab.info" - }, - { - "y": "13.5", - "x": "11.62", - "z": "2.6", - "network_address": "m3-227.lille.iot-lab.info" - }, - { - "y": "14.7", - "x": "0.82", - "z": "2.6", - "network_address": "m3-231.lille.iot-lab.info" - }, - { - "y": "14.7", - "x": "4.42", - "z": "2.6", - "network_address": "m3-234.lille.iot-lab.info" - }, - { - "y": "14.7", - "x": "5.62", - "z": "2.6", - "network_address": "m3-235.lille.iot-lab.info" - }, - { - "y": "14.7", - "x": "8.02", - "z": "2.6", - "network_address": "m3-237.lille.iot-lab.info" - }, - { - "y": "14.7", - "x": "14.02", - "z": "2.6", - "network_address": "m3-242.lille.iot-lab.info" - }, - { - "y": "15.9", - "x": "4.42", - "z": "2.6", - "network_address": "m3-247.lille.iot-lab.info" - }, - { - "y": "15.9", - "x": "6.82", - "z": "2.6", - "network_address": "m3-249.lille.iot-lab.info" - }, - { - "y": "15.9", - "x": "10.42", - "z": "2.6", - "network_address": "m3-252.lille.iot-lab.info" - }, - { - "y": " ", - "x": " ", - "z": " ", - "network_address": "m3-258.lille.iot-lab.info" - }, - { - "y": " ", - "x": " ", - "z": " ", - "network_address": "m3-259.lille.iot-lab.info" - } - ], - "location": "lille" - }, - { - "nodes": [ - { - "y": "1.82", - "x": "0", - "z": "1.71", - "network_address": "m3-1.paris.iot-lab.info" - }, - { - "y": "1.82", - "x": "0", - "z": "0.55", - "network_address": "m3-2.paris.iot-lab.info" - }, - { - "y": "1.22", - "x": "0", - "z": "2.33", - "network_address": "m3-3.paris.iot-lab.info" - }, - { - "y": "1.22", - "x": "0", - "z": "1.12", - "network_address": "m3-4.paris.iot-lab.info" - }, - { - "y": "0.6", - "x": "0", - "z": "1.71", - "network_address": "m3-5.paris.iot-lab.info" - }, - { - "y": "0.6", - "x": "0", - "z": "0.55", - "network_address": "m3-6.paris.iot-lab.info" - }, - { - "y": "0", - "x": "0", - "z": "2.33", - "network_address": "m3-7.paris.iot-lab.info" - }, - { - "y": "0", - "x": "0", - "z": "1.12", - "network_address": "m3-8.paris.iot-lab.info" - }, - { - "y": "0", - "x": "1.02", - "z": "1.12", - "network_address": "m3-9.paris.iot-lab.info" - }, - { - "y": "0", - "x": "1.63", - "z": "0.55", - "network_address": "m3-10.paris.iot-lab.info" - }, - { - "y": "0", - "x": "2.28", - "z": "1.12", - "network_address": "m3-11.paris.iot-lab.info" - }, - { - "y": "0", - "x": "2.86", - "z": "0.55", - "network_address": "m3-12.paris.iot-lab.info" - }, - { - "y": "0", - "x": "3.47", - "z": "1.12", - "network_address": "m3-13.paris.iot-lab.info" - }, - { - "y": "0", - "x": "4.08", - "z": "0.55", - "network_address": "m3-14.paris.iot-lab.info" - }, - { - "y": "0", - "x": "4.67", - "z": "2.33", - "network_address": "m3-15.paris.iot-lab.info" - }, - { - "y": "0", - "x": "4.67", - "z": "0.55", - "network_address": "m3-16.paris.iot-lab.info" - }, - { - "y": "0", - "x": "5.3", - "z": "2.33", - "network_address": "m3-17.paris.iot-lab.info" - }, - { - "y": "0", - "x": "5.3", - "z": "0.55", - "network_address": "m3-18.paris.iot-lab.info" - }, - { - "y": "0", - "x": "5.9", - "z": "2.33", - "network_address": "m3-19.paris.iot-lab.info" - }, - { - "y": "0", - "x": "5.9", - "z": "0.55", - "network_address": "m3-20.paris.iot-lab.info" - }, - { - "y": "0", - "x": "6.52", - "z": "2.33", - "network_address": "m3-21.paris.iot-lab.info" - }, - { - "y": "0", - "x": "6.52", - "z": "0.55", - "network_address": "m3-22.paris.iot-lab.info" - }, - { - "y": "0.43", - "x": "6.92", - "z": "2.33", - "network_address": "m3-23.paris.iot-lab.info" - }, - { - "y": "0.43", - "x": "6.92", - "z": "1.12", - "network_address": "m3-24.paris.iot-lab.info" - }, - { - "y": "1.05", - "x": "6.92", - "z": "1.71", - "network_address": "m3-25.paris.iot-lab.info" - }, - { - "y": "1.05", - "x": "6.92", - "z": "0.55", - "network_address": "m3-26.paris.iot-lab.info" - }, - { - "y": "1.65", - "x": "6.92", - "z": "2.33", - "network_address": "m3-27.paris.iot-lab.info" - }, - { - "y": "1.65", - "x": "6.92", - "z": "1.12", - "network_address": "m3-28.paris.iot-lab.info" - }, - { - "y": "2.27", - "x": "6.92", - "z": "1.71", - "network_address": "m3-29.paris.iot-lab.info" - }, - { - "y": "2.27", - "x": "6.92", - "z": "0.55", - "network_address": "m3-30.paris.iot-lab.info" - }, - { - "y": "2.58", - "x": "6.39", - "z": "2.33", - "network_address": "m3-31.paris.iot-lab.info" - }, - { - "y": "2.58", - "x": "6.39", - "z": "1.12", - "network_address": "m3-32.paris.iot-lab.info" - }, - { - "y": "2.58", - "x": "5.82", - "z": "1.71", - "network_address": "m3-33.paris.iot-lab.info" - }, - { - "y": "2.58", - "x": "5.18", - "z": "2.33", - "network_address": "m3-35.paris.iot-lab.info" - }, - { - "y": "2.58", - "x": "5.18", - "z": "1.12", - "network_address": "m3-36.paris.iot-lab.info" - }, - { - "y": "2.58", - "x": "4.59", - "z": "1.71", - "network_address": "m3-37.paris.iot-lab.info" - }, - { - "y": "2.58", - "x": "4.59", - "z": "0.55", - "network_address": "m3-38.paris.iot-lab.info" - }, - { - "y": "2.76", - "x": "4.41", - "z": "1.99", - "network_address": "m3-39.paris.iot-lab.info" - }, - { - "y": "2.76", - "x": "4.41", - "z": "1.4", - "network_address": "m3-40.paris.iot-lab.info" - }, - { - "y": "2.76", - "x": "4.41", - "z": "0.8", - "network_address": "m3-41.paris.iot-lab.info" - }, - { - "y": "3.24", - "x": "4.41", - "z": "2.34", - "network_address": "m3-42.paris.iot-lab.info" - }, - { - "y": "3.92", - "x": "4.41", - "z": "2.07", - "network_address": "m3-43.paris.iot-lab.info" - }, - { - "y": "4.35", - "x": "4.41", - "z": "0.55", - "network_address": "m3-45.paris.iot-lab.info" - }, - { - "y": "4.97", - "x": "4.41", - "z": "1.12", - "network_address": "m3-46.paris.iot-lab.info" - }, - { - "y": "5.44", - "x": "4.05", - "z": "1.71", - "network_address": "m3-47.paris.iot-lab.info" - }, - { - "y": "5.44", - "x": "4.05", - "z": "0.55", - "network_address": "m3-48.paris.iot-lab.info" - }, - { - "y": "5.44", - "x": "3.47", - "z": "2.33", - "network_address": "m3-49.paris.iot-lab.info" - }, - { - "y": "5.44", - "x": "3.47", - "z": "1.12", - "network_address": "m3-50.paris.iot-lab.info" - }, - { - "y": "5.44", - "x": "2.85", - "z": "1.71", - "network_address": "m3-51.paris.iot-lab.info" - }, - { - "y": "5.44", - "x": "2.85", - "z": "0.55", - "network_address": "m3-52.paris.iot-lab.info" - }, - { - "y": "5.44", - "x": "2.25", - "z": "2.33", - "network_address": "m3-53.paris.iot-lab.info" - }, - { - "y": "5.44", - "x": "2.25", - "z": "1.12", - "network_address": "m3-54.paris.iot-lab.info" - }, - { - "y": "5.44", - "x": "1.62", - "z": "1.71", - "network_address": "m3-55.paris.iot-lab.info" - }, - { - "y": "5.44", - "x": "1.62", - "z": "0.55", - "network_address": "m3-56.paris.iot-lab.info" - }, - { - "y": "5.44", - "x": "1.02", - "z": "2.33", - "network_address": "m3-57.paris.iot-lab.info" - }, - { - "y": "5.44", - "x": "1.02", - "z": "1.12", - "network_address": "m3-58.paris.iot-lab.info" - }, - { - "y": "5.44", - "x": "0.37", - "z": "1.71", - "network_address": "m3-59.paris.iot-lab.info" - }, - { - "y": "5.44", - "x": "0.37", - "z": "0.55", - "network_address": "m3-60.paris.iot-lab.info" - }, - { - "y": "4.98", - "x": "0", - "z": "2.33", - "network_address": "m3-61.paris.iot-lab.info" - }, - { - "y": "4.98", - "x": "0", - "z": "1.12", - "network_address": "m3-62.paris.iot-lab.info" - }, - { - "y": "4.37", - "x": "0", - "z": "1.71", - "network_address": "m3-63.paris.iot-lab.info" - }, - { - "y": "4.37", - "x": "0", - "z": "0.55", - "network_address": "m3-64.paris.iot-lab.info" - }, - { - "y": "3.7", - "x": "0", - "z": "2.33", - "network_address": "m3-65.paris.iot-lab.info" - }, - { - "y": "3.7", - "x": "0", - "z": "1.12", - "network_address": "m3-66.paris.iot-lab.info" - }, - { - "y": "3.13", - "x": "0", - "z": "1.71", - "network_address": "m3-67.paris.iot-lab.info" - }, - { - "y": "3.13", - "x": "0", - "z": "0.55", - "network_address": "m3-68.paris.iot-lab.info" - }, - { - "y": "2.47", - "x": "0", - "z": "2.33", - "network_address": "m3-69.paris.iot-lab.info" - }, - { - "y": "1.82", - "x": "0", - "z": "2.33", - "network_address": "a8-1.paris.iot-lab.info" - }, - { - "y": "1.82", - "x": "0", - "z": "1.12", - "network_address": "a8-2.paris.iot-lab.info" - }, - { - "y": "1.22", - "x": "0", - "z": "1.71", - "network_address": "a8-3.paris.iot-lab.info" - }, - { - "y": "1.22", - "x": "0", - "z": "0.55", - "network_address": "a8-4.paris.iot-lab.info" - }, - { - "y": "0.6", - "x": "0", - "z": "2.33", - "network_address": "a8-5.paris.iot-lab.info" - }, - { - "y": "0.6", - "x": "0", - "z": "1.12", - "network_address": "a8-6.paris.iot-lab.info" - }, - { - "y": "0", - "x": "0", - "z": "1.71", - "network_address": "a8-7.paris.iot-lab.info" - }, - { - "y": "0", - "x": "0", - "z": "0.55", - "network_address": "a8-8.paris.iot-lab.info" - }, - { - "y": "0", - "x": "1.02", - "z": "0.55", - "network_address": "a8-9.paris.iot-lab.info" - }, - { - "y": "0", - "x": "1.63", - "z": "1.12", - "network_address": "a8-10.paris.iot-lab.info" - }, - { - "y": "0", - "x": "2.28", - "z": "0.55", - "network_address": "a8-11.paris.iot-lab.info" - }, - { - "y": "0", - "x": "2.86", - "z": "1.12", - "network_address": "a8-12.paris.iot-lab.info" - }, - { - "y": "0", - "x": "3.47", - "z": "0.55", - "network_address": "a8-13.paris.iot-lab.info" - }, - { - "y": "0", - "x": "4.08", - "z": "1.12", - "network_address": "a8-14.paris.iot-lab.info" - }, - { - "y": "0", - "x": "4.67", - "z": "1.71", - "network_address": "a8-15.paris.iot-lab.info" - }, - { - "y": "0", - "x": "4.67", - "z": "1.12", - "network_address": "a8-16.paris.iot-lab.info" - }, - { - "y": "0", - "x": "5.3", - "z": "1.71", - "network_address": "a8-17.paris.iot-lab.info" - }, - { - "y": "0", - "x": "5.3", - "z": "1.12", - "network_address": "a8-18.paris.iot-lab.info" - }, - { - "y": "0", - "x": "5.9", - "z": "1.71", - "network_address": "a8-19.paris.iot-lab.info" - }, - { - "y": "0", - "x": "5.9", - "z": "1.12", - "network_address": "a8-20.paris.iot-lab.info" - }, - { - "y": "0", - "x": "6.52", - "z": "1.71", - "network_address": "a8-21.paris.iot-lab.info" - }, - { - "y": "0", - "x": "6.52", - "z": "1.12", - "network_address": "a8-22.paris.iot-lab.info" - }, - { - "y": "0.43", - "x": "6.92", - "z": "1.71", - "network_address": "a8-23.paris.iot-lab.info" - }, - { - "y": "0.43", - "x": "6.92", - "z": "0.55", - "network_address": "a8-24.paris.iot-lab.info" - }, - { - "y": "1.05", - "x": "6.92", - "z": "2.33", - "network_address": "a8-25.paris.iot-lab.info" - }, - { - "y": "1.05", - "x": "6.92", - "z": "1.12", - "network_address": "a8-26.paris.iot-lab.info" - }, - { - "y": "1.65", - "x": "6.92", - "z": "1.71", - "network_address": "a8-27.paris.iot-lab.info" - }, - { - "y": "1.65", - "x": "6.92", - "z": "0.55", - "network_address": "a8-28.paris.iot-lab.info" - }, - { - "y": "2.27", - "x": "6.92", - "z": "2.33", - "network_address": "a8-29.paris.iot-lab.info" - }, - { - "y": "2.27", - "x": "6.92", - "z": "1.12", - "network_address": "a8-30.paris.iot-lab.info" - }, - { - "y": "2.58", - "x": "6.39", - "z": "1.71", - "network_address": "a8-31.paris.iot-lab.info" - }, - { - "y": "2.58", - "x": "6.39", - "z": "0.55", - "network_address": "a8-32.paris.iot-lab.info" - }, - { - "y": "2.58", - "x": "5.82", - "z": "2.33", - "network_address": "a8-33.paris.iot-lab.info" - }, - { - "y": "2.58", - "x": "5.82", - "z": "1.12", - "network_address": "a8-34.paris.iot-lab.info" - }, - { - "y": "2.58", - "x": "5.18", - "z": "1.71", - "network_address": "a8-35.paris.iot-lab.info" - }, - { - "y": "2.58", - "x": "5.18", - "z": "0.55", - "network_address": "a8-36.paris.iot-lab.info" - }, - { - "y": "2.58", - "x": "4.59", - "z": "2.33", - "network_address": "a8-37.paris.iot-lab.info" - }, - { - "y": "2.58", - "x": "4.59", - "z": "1.12", - "network_address": "a8-38.paris.iot-lab.info" - }, - { - "y": "4.35", - "x": "4.41", - "z": "1.12", - "network_address": "a8-39.paris.iot-lab.info" - }, - { - "y": "4.97", - "x": "4.41", - "z": "0.55", - "network_address": "a8-40.paris.iot-lab.info" - }, - { - "y": "5.44", - "x": "4.05", - "z": "2.33", - "network_address": "a8-41.paris.iot-lab.info" - }, - { - "y": "5.44", - "x": "4.05", - "z": "1.12", - "network_address": "a8-42.paris.iot-lab.info" - }, - { - "y": "5.44", - "x": "3.47", - "z": "1.71", - "network_address": "a8-43.paris.iot-lab.info" - }, - { - "y": "5.44", - "x": "3.47", - "z": "0.55", - "network_address": "a8-44.paris.iot-lab.info" - }, - { - "y": "5.44", - "x": "2.85", - "z": "2.33", - "network_address": "a8-45.paris.iot-lab.info" - }, - { - "y": "5.44", - "x": "2.85", - "z": "1.12", - "network_address": "a8-46.paris.iot-lab.info" - }, - { - "y": "5.44", - "x": "2.25", - "z": "1.71", - "network_address": "a8-47.paris.iot-lab.info" - }, - { - "y": "5.44", - "x": "2.25", - "z": "0.55", - "network_address": "a8-48.paris.iot-lab.info" - }, - { - "y": "5.44", - "x": "1.62", - "z": "2.33", - "network_address": "a8-49.paris.iot-lab.info" - }, - { - "y": "5.44", - "x": "1.62", - "z": "1.12", - "network_address": "a8-50.paris.iot-lab.info" - }, - { - "y": "5.44", - "x": "1.02", - "z": "1.71", - "network_address": "a8-51.paris.iot-lab.info" - }, - { - "y": "5.44", - "x": "1.02", - "z": "0.55", - "network_address": "a8-52.paris.iot-lab.info" - }, - { - "y": "5.44", - "x": "0.37", - "z": "2.33", - "network_address": "a8-53.paris.iot-lab.info" - }, - { - "y": "5.44", - "x": "0.37", - "z": "1.12", - "network_address": "a8-54.paris.iot-lab.info" - }, - { - "y": "4.98", - "x": "0", - "z": "1.71", - "network_address": "a8-55.paris.iot-lab.info" - }, - { - "y": "4.98", - "x": "0", - "z": "0.55", - "network_address": "a8-56.paris.iot-lab.info" - }, - { - "y": "4.37", - "x": "0", - "z": "2.33", - "network_address": "a8-57.paris.iot-lab.info" - }, - { - "y": "4.37", - "x": "0", - "z": "1.12", - "network_address": "a8-58.paris.iot-lab.info" - }, - { - "y": "3.7", - "x": "0", - "z": "1.71", - "network_address": "a8-59.paris.iot-lab.info" - }, - { - "y": "3.7", - "x": "0", - "z": "0.55", - "network_address": "a8-60.paris.iot-lab.info" - }, - { - "y": "3.13", - "x": "0", - "z": "2.33", - "network_address": "a8-61.paris.iot-lab.info" - }, - { - "y": "3.13", - "x": "0", - "z": "1.12", - "network_address": "a8-62.paris.iot-lab.info" - } - ], - "location": "paris" - }, - { - "nodes": [ - { - "y": "2.5", - "x": "3.6", - "z": "0.0", - "network_address": "wsn430-1.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "3.0", - "z": "0.0", - "network_address": "wsn430-2.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "2.4", - "z": "0.0", - "network_address": "wsn430-3.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "1.8", - "z": "0.0", - "network_address": "wsn430-4.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "1.2", - "z": "0.0", - "network_address": "wsn430-5.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "3.6", - "z": "0.6", - "network_address": "wsn430-6.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "3.0", - "z": "0.6", - "network_address": "wsn430-7.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "2.4", - "z": "0.6", - "network_address": "wsn430-8.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "1.8", - "z": "0.6", - "network_address": "wsn430-9.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "1.2", - "z": "0.6", - "network_address": "wsn430-10.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "3.6", - "z": "1.2", - "network_address": "wsn430-11.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "3.0", - "z": "1.2", - "network_address": "wsn430-12.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "2.4", - "z": "1.2", - "network_address": "wsn430-13.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "1.8", - "z": "1.2", - "network_address": "wsn430-14.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "1.2", - "z": "1.2", - "network_address": "wsn430-15.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "2.4", - "z": "1.8", - "network_address": "wsn430-18.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "1.8", - "z": "1.8", - "network_address": "wsn430-19.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "1.2", - "z": "1.8", - "network_address": "wsn430-20.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "3.6", - "z": "2.4", - "network_address": "wsn430-21.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "3.0", - "z": "2.4", - "network_address": "wsn430-22.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "2.4", - "z": "2.4", - "network_address": "wsn430-23.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "1.8", - "z": "2.4", - "network_address": "wsn430-24.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "1.2", - "z": "2.4", - "network_address": "wsn430-25.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "3.6", - "z": "3.0", - "network_address": "wsn430-26.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "3.0", - "z": "3.0", - "network_address": "wsn430-27.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "2.4", - "z": "3.0", - "network_address": "wsn430-28.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "1.8", - "z": "3.0", - "network_address": "wsn430-29.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "1.2", - "z": "3.0", - "network_address": "wsn430-30.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "3.6", - "z": "3.6", - "network_address": "wsn430-31.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "3.0", - "z": "3.6", - "network_address": "wsn430-32.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "2.4", - "z": "3.6", - "network_address": "wsn430-33.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "1.8", - "z": "3.6", - "network_address": "wsn430-34.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "1.2", - "z": "3.6", - "network_address": "wsn430-35.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "3.6", - "z": "4.2", - "network_address": "wsn430-36.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "3.0", - "z": "4.2", - "network_address": "wsn430-37.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "2.4", - "z": "4.2", - "network_address": "wsn430-38.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "1.8", - "z": "4.2", - "network_address": "wsn430-39.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "1.2", - "z": "4.2", - "network_address": "wsn430-40.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "3.6", - "z": "4.8", - "network_address": "wsn430-41.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "3.0", - "z": "4.8", - "network_address": "wsn430-42.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "2.4", - "z": "4.8", - "network_address": "wsn430-43.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "1.8", - "z": "4.8", - "network_address": "wsn430-44.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "3.6", - "z": "5.4", - "network_address": "wsn430-46.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "3.0", - "z": "5.4", - "network_address": "wsn430-47.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "2.4", - "z": "5.4", - "network_address": "wsn430-48.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "1.8", - "z": "5.4", - "network_address": "wsn430-49.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "1.2", - "z": "5.4", - "network_address": "wsn430-50.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "3.6", - "z": "6.0", - "network_address": "wsn430-51.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "3.0", - "z": "6.0", - "network_address": "wsn430-52.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "2.4", - "z": "6.0", - "network_address": "wsn430-53.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "1.8", - "z": "6.0", - "network_address": "wsn430-54.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "1.2", - "z": "6.0", - "network_address": "wsn430-55.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "3.6", - "z": "6.6", - "network_address": "wsn430-56.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "3.0", - "z": "6.6", - "network_address": "wsn430-57.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "2.4", - "z": "6.6", - "network_address": "wsn430-58.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "1.8", - "z": "6.6", - "network_address": "wsn430-59.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "1.2", - "z": "6.6", - "network_address": "wsn430-60.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "3.6", - "z": "7.2", - "network_address": "wsn430-61.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "3.0", - "z": "7.2", - "network_address": "wsn430-62.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "2.4", - "z": "7.2", - "network_address": "wsn430-63.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "1.8", - "z": "7.2", - "network_address": "wsn430-64.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "1.2", - "z": "7.2", - "network_address": "wsn430-65.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "3.6", - "z": "7.8", - "network_address": "wsn430-66.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "3.0", - "z": "7.8", - "network_address": "wsn430-67.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "2.4", - "z": "7.8", - "network_address": "wsn430-68.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "1.8", - "z": "7.8", - "network_address": "wsn430-69.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "1.2", - "z": "7.8", - "network_address": "wsn430-70.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "3.6", - "z": "8.4", - "network_address": "wsn430-71.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "3.0", - "z": "8.4", - "network_address": "wsn430-72.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "2.4", - "z": "8.4", - "network_address": "wsn430-73.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "1.8", - "z": "8.4", - "network_address": "wsn430-74.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "1.2", - "z": "8.4", - "network_address": "wsn430-75.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "3.6", - "z": "9.0", - "network_address": "wsn430-76.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "3.0", - "z": "9.0", - "network_address": "wsn430-77.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "2.4", - "z": "9.0", - "network_address": "wsn430-78.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "1.8", - "z": "9.0", - "network_address": "wsn430-79.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "1.2", - "z": "9.0", - "network_address": "wsn430-80.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "3.6", - "z": "9.6", - "network_address": "wsn430-81.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "3.0", - "z": "9.6", - "network_address": "wsn430-82.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "2.4", - "z": "9.6", - "network_address": "wsn430-83.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "1.8", - "z": "9.6", - "network_address": "wsn430-84.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "1.2", - "z": "9.6", - "network_address": "wsn430-85.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "3.6", - "z": "10.2", - "network_address": "wsn430-86.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "3.0", - "z": "10.2", - "network_address": "wsn430-87.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "2.4", - "z": "10.2", - "network_address": "wsn430-88.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "1.8", - "z": "10.2", - "network_address": "wsn430-89.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "1.2", - "z": "10.2", - "network_address": "wsn430-90.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "3.6", - "z": "10.8", - "network_address": "wsn430-91.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "3.0", - "z": "10.8", - "network_address": "wsn430-92.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "2.4", - "z": "10.8", - "network_address": "wsn430-93.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "1.8", - "z": "10.8", - "network_address": "wsn430-94.euratech.iot-lab.info" - }, - { - "y": "2.5", - "x": "1.2", - "z": "10.8", - "network_address": "wsn430-95.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "3.6", - "z": "0.0", - "network_address": "wsn430-96.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "3.0", - "z": "0.0", - "network_address": "wsn430-97.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "2.4", - "z": "0.0", - "network_address": "wsn430-98.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "1.8", - "z": "0.0", - "network_address": "wsn430-99.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "1.2", - "z": "0.0", - "network_address": "wsn430-100.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "3.6", - "z": "0.6", - "network_address": "wsn430-101.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "3.0", - "z": "0.6", - "network_address": "wsn430-102.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "2.4", - "z": "0.6", - "network_address": "wsn430-103.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "1.8", - "z": "0.6", - "network_address": "wsn430-104.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "1.2", - "z": "0.6", - "network_address": "wsn430-105.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "3.6", - "z": "1.2", - "network_address": "wsn430-106.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "3.0", - "z": "1.2", - "network_address": "wsn430-107.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "2.4", - "z": "1.2", - "network_address": "wsn430-108.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "1.8", - "z": "1.2", - "network_address": "wsn430-109.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "1.2", - "z": "1.2", - "network_address": "wsn430-110.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "3.6", - "z": "1.8", - "network_address": "wsn430-111.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "3.0", - "z": "1.8", - "network_address": "wsn430-112.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "2.4", - "z": "1.8", - "network_address": "wsn430-113.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "1.8", - "z": "1.8", - "network_address": "wsn430-114.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "1.2", - "z": "1.8", - "network_address": "wsn430-115.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "3.6", - "z": "2.4", - "network_address": "wsn430-116.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "3.0", - "z": "2.4", - "network_address": "wsn430-117.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "2.4", - "z": "2.4", - "network_address": "wsn430-118.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "1.8", - "z": "2.4", - "network_address": "wsn430-119.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "1.2", - "z": "2.4", - "network_address": "wsn430-120.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "3.6", - "z": "3.0", - "network_address": "wsn430-121.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "3.0", - "z": "3.0", - "network_address": "wsn430-122.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "2.4", - "z": "3.0", - "network_address": "wsn430-123.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "1.8", - "z": "3.0", - "network_address": "wsn430-124.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "1.2", - "z": "3.0", - "network_address": "wsn430-125.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "3.0", - "z": "3.6", - "network_address": "wsn430-127.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "2.4", - "z": "3.6", - "network_address": "wsn430-128.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "1.8", - "z": "3.6", - "network_address": "wsn430-129.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "1.2", - "z": "3.6", - "network_address": "wsn430-130.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "3.6", - "z": "4.2", - "network_address": "wsn430-131.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "3.0", - "z": "4.2", - "network_address": "wsn430-132.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "2.4", - "z": "4.2", - "network_address": "wsn430-133.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "1.8", - "z": "4.2", - "network_address": "wsn430-134.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "1.2", - "z": "4.2", - "network_address": "wsn430-135.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "3.6", - "z": "4.8", - "network_address": "wsn430-136.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "3.0", - "z": "4.8", - "network_address": "wsn430-137.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "2.4", - "z": "4.8", - "network_address": "wsn430-138.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "1.8", - "z": "4.8", - "network_address": "wsn430-139.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "1.2", - "z": "4.8", - "network_address": "wsn430-140.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "3.6", - "z": "5.4", - "network_address": "wsn430-141.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "3.0", - "z": "5.4", - "network_address": "wsn430-142.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "2.4", - "z": "5.4", - "network_address": "wsn430-143.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "1.8", - "z": "5.4", - "network_address": "wsn430-144.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "1.2", - "z": "5.4", - "network_address": "wsn430-145.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "3.6", - "z": "6.0", - "network_address": "wsn430-146.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "3.0", - "z": "6.0", - "network_address": "wsn430-147.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "2.4", - "z": "6.0", - "network_address": "wsn430-148.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "1.8", - "z": "6.0", - "network_address": "wsn430-149.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "1.2", - "z": "6.0", - "network_address": "wsn430-150.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "3.6", - "z": "6.6", - "network_address": "wsn430-151.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "3.0", - "z": "6.6", - "network_address": "wsn430-152.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "2.4", - "z": "6.6", - "network_address": "wsn430-153.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "1.8", - "z": "6.6", - "network_address": "wsn430-154.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "1.2", - "z": "6.6", - "network_address": "wsn430-155.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "3.6", - "z": "7.2", - "network_address": "wsn430-156.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "3.0", - "z": "7.2", - "network_address": "wsn430-157.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "2.4", - "z": "7.2", - "network_address": "wsn430-158.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "1.8", - "z": "7.2", - "network_address": "wsn430-159.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "1.2", - "z": "7.2", - "network_address": "wsn430-160.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "3.6", - "z": "7.8", - "network_address": "wsn430-161.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "3.0", - "z": "7.8", - "network_address": "wsn430-162.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "2.4", - "z": "7.8", - "network_address": "wsn430-163.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "1.8", - "z": "7.8", - "network_address": "wsn430-164.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "1.2", - "z": "7.8", - "network_address": "wsn430-165.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "3.6", - "z": "8.4", - "network_address": "wsn430-166.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "3.0", - "z": "8.4", - "network_address": "wsn430-167.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "2.4", - "z": "8.4", - "network_address": "wsn430-168.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "1.8", - "z": "8.4", - "network_address": "wsn430-169.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "1.2", - "z": "8.4", - "network_address": "wsn430-170.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "3.6", - "z": "9.0", - "network_address": "wsn430-171.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "3.0", - "z": "9.0", - "network_address": "wsn430-172.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "2.4", - "z": "9.0", - "network_address": "wsn430-173.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "1.8", - "z": "9.0", - "network_address": "wsn430-174.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "1.2", - "z": "9.0", - "network_address": "wsn430-175.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "3.6", - "z": "9.6", - "network_address": "wsn430-176.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "3.0", - "z": "9.6", - "network_address": "wsn430-177.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "2.4", - "z": "9.6", - "network_address": "wsn430-178.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "1.8", - "z": "9.6", - "network_address": "wsn430-179.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "1.2", - "z": "9.6", - "network_address": "wsn430-180.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "3.6", - "z": "10.2", - "network_address": "wsn430-181.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "3.0", - "z": "10.2", - "network_address": "wsn430-182.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "2.4", - "z": "10.2", - "network_address": "wsn430-183.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "1.8", - "z": "10.2", - "network_address": "wsn430-184.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "1.2", - "z": "10.2", - "network_address": "wsn430-185.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "3.6", - "z": "10.8", - "network_address": "wsn430-186.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "3.0", - "z": "10.8", - "network_address": "wsn430-187.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "2.4", - "z": "10.8", - "network_address": "wsn430-188.euratech.iot-lab.info" - }, - { - "y": "3.4", - "x": "1.8", - "z": "10.8", - "network_address": "wsn430-189.euratech.iot-lab.info" - }, - { - "y": "3.28", - "x": "0.0", - "z": "11.32", - "network_address": "wsn430-191.euratech.iot-lab.info" - }, - { - "y": "3.28", - "x": "0.6", - "z": "11.32", - "network_address": "wsn430-192.euratech.iot-lab.info" - }, - { - "y": "3.28", - "x": "1.2", - "z": "11.32", - "network_address": "wsn430-193.euratech.iot-lab.info" - }, - { - "y": "3.28", - "x": "1.8", - "z": "11.32", - "network_address": "wsn430-194.euratech.iot-lab.info" - }, - { - "y": "3.28", - "x": "2.4", - "z": "11.32", - "network_address": "wsn430-195.euratech.iot-lab.info" - }, - { - "y": "3.28", - "x": "3.0", - "z": "11.32", - "network_address": "wsn430-196.euratech.iot-lab.info" - }, - { - "y": "3.28", - "x": "3.6", - "z": "11.32", - "network_address": "wsn430-197.euratech.iot-lab.info" - }, - { - "y": "3.28", - "x": "4.2", - "z": "11.32", - "network_address": "wsn430-198.euratech.iot-lab.info" - }, - { - "y": "3.28", - "x": "4.8", - "z": "11.32", - "network_address": "wsn430-199.euratech.iot-lab.info" - }, - { - "y": "2.67", - "x": "0.0", - "z": "11.32", - "network_address": "wsn430-200.euratech.iot-lab.info" - }, - { - "y": "2.67", - "x": "1.2", - "z": "11.32", - "network_address": "wsn430-202.euratech.iot-lab.info" - }, - { - "y": "2.67", - "x": "1.8", - "z": "11.32", - "network_address": "wsn430-203.euratech.iot-lab.info" - }, - { - "y": "2.67", - "x": "2.4", - "z": "11.32", - "network_address": "wsn430-204.euratech.iot-lab.info" - }, - { - "y": "2.67", - "x": "3.0", - "z": "11.32", - "network_address": "wsn430-205.euratech.iot-lab.info" - }, - { - "y": "2.67", - "x": "3.6", - "z": "11.32", - "network_address": "wsn430-206.euratech.iot-lab.info" - }, - { - "y": "2.67", - "x": "4.2", - "z": "11.32", - "network_address": "wsn430-207.euratech.iot-lab.info" - }, - { - "y": "2.67", - "x": "4.8", - "z": "11.32", - "network_address": "wsn430-208.euratech.iot-lab.info" - }, - { - "y": "0.25", - "x": "1.1", - "z": "11.32", - "network_address": "wsn430-209.euratech.iot-lab.info" - }, - { - "y": "0.9", - "x": "1.1", - "z": "11.32", - "network_address": "wsn430-210.euratech.iot-lab.info" - }, - { - "y": "1.55", - "x": "1.1", - "z": "11.32", - "network_address": "wsn430-211.euratech.iot-lab.info" - }, - { - "y": "2.2", - "x": "1.1", - "z": "11.32", - "network_address": "wsn430-212.euratech.iot-lab.info" - }, - { - "y": "0.25", - "x": "1.55", - "z": "11.32", - "network_address": "wsn430-213.euratech.iot-lab.info" - }, - { - "y": "0.9", - "x": "1.55", - "z": "11.32", - "network_address": "wsn430-214.euratech.iot-lab.info" - }, - { - "y": "1.55", - "x": "1.55", - "z": "11.32", - "network_address": "wsn430-215.euratech.iot-lab.info" - }, - { - "y": "2.2", - "x": "1.55", - "z": "11.32", - "network_address": "wsn430-216.euratech.iot-lab.info" - }, - { - "y": "0.25", - "x": "3.25", - "z": "11.32", - "network_address": "wsn430-217.euratech.iot-lab.info" - }, - { - "y": "0.9", - "x": "3.25", - "z": "11.32", - "network_address": "wsn430-218.euratech.iot-lab.info" - }, - { - "y": "1.55", - "x": "3.25", - "z": "11.32", - "network_address": "wsn430-219.euratech.iot-lab.info" - }, - { - "y": "2.2", - "x": "3.25", - "z": "11.32", - "network_address": "wsn430-220.euratech.iot-lab.info" - }, - { - "y": "0.25", - "x": "3.7", - "z": "11.32", - "network_address": "wsn430-221.euratech.iot-lab.info" - }, - { - "y": "0.9", - "x": "3.7", - "z": "11.32", - "network_address": "wsn430-222.euratech.iot-lab.info" - }, - { - "y": "1.55", - "x": "3.7", - "z": "11.32", - "network_address": "wsn430-223.euratech.iot-lab.info" - }, - { - "y": "2.2", - "x": "3.7", - "z": "11.32", - "network_address": "wsn430-224.euratech.iot-lab.info" - } - ], - "location": "euratech" - }, - { - "nodes": [ - { - "y": "55.8", - "x": "1", - "z": "4", - "network_address": "m3-1.saclay.iot-lab.info" - }, - { - "y": "55.8", - "x": "1.8", - "z": "4", - "network_address": "m3-2.saclay.iot-lab.info" - }, - { - "y": "55.8", - "x": "2.6", - "z": "4", - "network_address": "m3-3.saclay.iot-lab.info" - }, - { - "y": "56.8", - "x": "1", - "z": "4", - "network_address": "m3-4.saclay.iot-lab.info" - }, - { - "y": "56.8", - "x": "1.8", - "z": "4", - "network_address": "m3-5.saclay.iot-lab.info" - }, - { - "y": "56.8", - "x": "2.6", - "z": "4", - "network_address": "m3-6.saclay.iot-lab.info" - }, - { - "y": "57.8", - "x": "1", - "z": "4", - "network_address": "m3-7.saclay.iot-lab.info" - }, - { - "y": "57.8", - "x": "1.8", - "z": "4", - "network_address": "m3-8.saclay.iot-lab.info" - }, - { - "y": "57.8", - "x": "2.6", - "z": "4", - "network_address": "m3-9.saclay.iot-lab.info" - }, - { - "y": "58.8", - "x": "1", - "z": "4", - "network_address": "m3-10.saclay.iot-lab.info" - }, - { - "y": "58.8", - "x": "1.8", - "z": "4", - "network_address": "m3-11.saclay.iot-lab.info" - }, - { - "y": "58.8", - "x": "2.6", - "z": "4", - "network_address": "m3-12.saclay.iot-lab.info" - }, - { - "y": "2.5", - "x": "2.5", - "z": "2.5", - "network_address": "a8-1.saclay.iot-lab.info" - }, - { - "y": "2.5", - "x": "8.5", - "z": "2.5", - "network_address": "a8-2.saclay.iot-lab.info" - }, - { - "y": "2.5", - "x": "11.5", - "z": "2.5", - "network_address": "a8-3.saclay.iot-lab.info" - }, - { - "y": "2.5", - "x": "20.5", - "z": "2.5", - "network_address": "a8-5.saclay.iot-lab.info" - }, - { - "y": "2.5", - "x": "24.5", - "z": "2.5", - "network_address": "a8-6.saclay.iot-lab.info" - }, - { - "y": "5", - "x": "2.5", - "z": "2.5", - "network_address": "a8-7.saclay.iot-lab.info" - }, - { - "y": "5", - "x": "8.5", - "z": "2.5", - "network_address": "a8-8.saclay.iot-lab.info" - }, - { - "y": "5", - "x": "11.5", - "z": "2.5", - "network_address": "a8-9.saclay.iot-lab.info" - }, - { - "y": "5", - "x": "15.5", - "z": "2.5", - "network_address": "a8-10.saclay.iot-lab.info" - }, - { - "y": "5", - "x": "20.5", - "z": "2.5", - "network_address": "a8-11.saclay.iot-lab.info" - }, - { - "y": "5", - "x": "24.5", - "z": "2.5", - "network_address": "a8-12.saclay.iot-lab.info" - }, - { - "y": "7.5", - "x": "2.5", - "z": "2.5", - "network_address": "a8-13.saclay.iot-lab.info" - }, - { - "y": "7.5", - "x": "8.5", - "z": "2.5", - "network_address": "a8-14.saclay.iot-lab.info" - }, - { - "y": "7.5", - "x": "15.5", - "z": "2.5", - "network_address": "a8-16.saclay.iot-lab.info" - }, - { - "y": "7.5", - "x": "20.5", - "z": "2.5", - "network_address": "a8-17.saclay.iot-lab.info" - }, - { - "y": "10", - "x": "2.5", - "z": "2.5", - "network_address": "a8-19.saclay.iot-lab.info" - }, - { - "y": "10", - "x": "11.5", - "z": "2.5", - "network_address": "a8-21.saclay.iot-lab.info" - }, - { - "y": "10", - "x": "15.5", - "z": "2.5", - "network_address": "a8-22.saclay.iot-lab.info" - }, - { - "y": "10", - "x": "20.5", - "z": "2.5", - "network_address": "a8-23.saclay.iot-lab.info" - }, - { - "y": "10", - "x": "24.5", - "z": "2.5", - "network_address": "a8-24.saclay.iot-lab.info" - }, - { - "y": "12.5", - "x": "2.5", - "z": "2.5", - "network_address": "a8-25.saclay.iot-lab.info" - }, - { - "y": "12.5", - "x": "8.5", - "z": "2.5", - "network_address": "a8-26.saclay.iot-lab.info" - }, - { - "y": "12.5", - "x": "11.5", - "z": "2.5", - "network_address": "a8-27.saclay.iot-lab.info" - }, - { - "y": "12.5", - "x": "15.5", - "z": "2.5", - "network_address": "a8-28.saclay.iot-lab.info" - }, - { - "y": "12.5", - "x": "20.5", - "z": "2.5", - "network_address": "a8-29.saclay.iot-lab.info" - }, - { - "y": "15", - "x": "2.5", - "z": "2.5", - "network_address": "a8-30.saclay.iot-lab.info" - }, - { - "y": "15", - "x": "8.5", - "z": "2.5", - "network_address": "a8-31.saclay.iot-lab.info" - }, - { - "y": "15", - "x": "11.5", - "z": "2.5", - "network_address": "a8-32.saclay.iot-lab.info" - }, - { - "y": "15", - "x": "15.5", - "z": "2.5", - "network_address": "a8-33.saclay.iot-lab.info" - }, - { - "y": "17.5", - "x": "2.5", - "z": "2.5", - "network_address": "a8-35.saclay.iot-lab.info" - }, - { - "y": "17.5", - "x": "8.5", - "z": "2.5", - "network_address": "a8-36.saclay.iot-lab.info" - }, - { - "y": "17.5", - "x": "11.5", - "z": "2.5", - "network_address": "a8-37.saclay.iot-lab.info" - }, - { - "y": "17.5", - "x": "15.5", - "z": "2.5", - "network_address": "a8-38.saclay.iot-lab.info" - }, - { - "y": "17.5", - "x": "20.5", - "z": "2.5", - "network_address": "a8-39.saclay.iot-lab.info" - }, - { - "y": "20", - "x": "2.5", - "z": "2.5", - "network_address": "a8-40.saclay.iot-lab.info" - }, - { - "y": "20", - "x": "8.5", - "z": "2.5", - "network_address": "a8-41.saclay.iot-lab.info" - }, - { - "y": "20", - "x": "11.5", - "z": "2.5", - "network_address": "a8-42.saclay.iot-lab.info" - }, - { - "y": "20", - "x": "15.5", - "z": "2.5", - "network_address": "a8-43.saclay.iot-lab.info" - }, - { - "y": "20", - "x": "20.5", - "z": "2.5", - "network_address": "a8-44.saclay.iot-lab.info" - }, - { - "y": "22.5", - "x": "2.5", - "z": "2.5", - "network_address": "a8-45.saclay.iot-lab.info" - }, - { - "y": "22.5", - "x": "8.5", - "z": "2.5", - "network_address": "a8-46.saclay.iot-lab.info" - }, - { - "y": "22.5", - "x": "11.5", - "z": "2.5", - "network_address": "a8-47.saclay.iot-lab.info" - }, - { - "y": "22.5", - "x": "20.5", - "z": "2.5", - "network_address": "a8-49.saclay.iot-lab.info" - }, - { - "y": "22.5", - "x": "24.5", - "z": "2.5", - "network_address": "a8-50.saclay.iot-lab.info" - }, - { - "y": "25", - "x": "2.5", - "z": "2.5", - "network_address": "a8-51.saclay.iot-lab.info" - }, - { - "y": "25", - "x": "8.5", - "z": "2.5", - "network_address": "a8-52.saclay.iot-lab.info" - }, - { - "y": "25", - "x": "11.5", - "z": "2.5", - "network_address": "a8-53.saclay.iot-lab.info" - }, - { - "y": "25", - "x": "15.5", - "z": "2.5", - "network_address": "a8-54.saclay.iot-lab.info" - }, - { - "y": "25", - "x": "20.5", - "z": "2.5", - "network_address": "a8-55.saclay.iot-lab.info" - }, - { - "y": "25", - "x": "24.5", - "z": "2.5", - "network_address": "a8-56.saclay.iot-lab.info" - }, - { - "y": "27.5", - "x": "2.5", - "z": "2.5", - "network_address": "a8-57.saclay.iot-lab.info" - }, - { - "y": "27.5", - "x": "8.5", - "z": "2.5", - "network_address": "a8-58.saclay.iot-lab.info" - }, - { - "y": "27.5", - "x": "11.5", - "z": "2.5", - "network_address": "a8-59.saclay.iot-lab.info" - }, - { - "y": "27.5", - "x": "15.5", - "z": "2.5", - "network_address": "a8-60.saclay.iot-lab.info" - }, - { - "y": "27.5", - "x": "20.5", - "z": "2.5", - "network_address": "a8-61.saclay.iot-lab.info" - }, - { - "y": "27.5", - "x": "24.5", - "z": "2.5", - "network_address": "a8-62.saclay.iot-lab.info" - }, - { - "y": "30", - "x": "2.5", - "z": "2.5", - "network_address": "a8-63.saclay.iot-lab.info" - }, - { - "y": "30", - "x": "8.5", - "z": "2.5", - "network_address": "a8-64.saclay.iot-lab.info" - }, - { - "y": "30", - "x": "11.5", - "z": "2.5", - "network_address": "a8-65.saclay.iot-lab.info" - }, - { - "y": "30", - "x": "15.5", - "z": "2.5", - "network_address": "a8-66.saclay.iot-lab.info" - }, - { - "y": "30", - "x": "20.5", - "z": "2.5", - "network_address": "a8-67.saclay.iot-lab.info" - }, - { - "y": "30", - "x": "24.5", - "z": "2.5", - "network_address": "a8-68.saclay.iot-lab.info" - }, - { - "y": "32.5", - "x": "2.5", - "z": "2.5", - "network_address": "a8-69.saclay.iot-lab.info" - }, - { - "y": "32.5", - "x": "8.5", - "z": "2.5", - "network_address": "a8-70.saclay.iot-lab.info" - }, - { - "y": "32.5", - "x": "11.5", - "z": "2.5", - "network_address": "a8-71.saclay.iot-lab.info" - }, - { - "y": "32.5", - "x": "15.5", - "z": "2.5", - "network_address": "a8-72.saclay.iot-lab.info" - }, - { - "y": "32.5", - "x": "20.5", - "z": "2.5", - "network_address": "a8-73.saclay.iot-lab.info" - }, - { - "y": "32.5", - "x": "24.5", - "z": "2.5", - "network_address": "a8-74.saclay.iot-lab.info" - }, - { - "y": "35", - "x": "2.5", - "z": "2.5", - "network_address": "a8-75.saclay.iot-lab.info" - }, - { - "y": "35", - "x": "8.5", - "z": "2.5", - "network_address": "a8-76.saclay.iot-lab.info" - }, - { - "y": "35", - "x": "11.5", - "z": "2.5", - "network_address": "a8-77.saclay.iot-lab.info" - }, - { - "y": "35", - "x": "15.5", - "z": "2.5", - "network_address": "a8-78.saclay.iot-lab.info" - }, - { - "y": "35", - "x": "20.5", - "z": "2.5", - "network_address": "a8-79.saclay.iot-lab.info" - }, - { - "y": "35", - "x": "24.5", - "z": "2.5", - "network_address": "a8-80.saclay.iot-lab.info" - }, - { - "y": "37.5", - "x": "2.5", - "z": "2.5", - "network_address": "a8-81.saclay.iot-lab.info" - }, - { - "y": "37.5", - "x": "8.5", - "z": "2.5", - "network_address": "a8-82.saclay.iot-lab.info" - }, - { - "y": "37.5", - "x": "11.5", - "z": "2.5", - "network_address": "a8-83.saclay.iot-lab.info" - }, - { - "y": "37.5", - "x": "15.5", - "z": "2.5", - "network_address": "a8-84.saclay.iot-lab.info" - }, - { - "y": "37.5", - "x": "20.5", - "z": "2.5", - "network_address": "a8-85.saclay.iot-lab.info" - }, - { - "y": "37.5", - "x": "24.5", - "z": "2.5", - "network_address": "a8-86.saclay.iot-lab.info" - }, - { - "y": "40.0", - "x": "2.5", - "z": "2.5", - "network_address": "a8-87.saclay.iot-lab.info" - }, - { - "y": "40.0", - "x": "8.5", - "z": "2.5", - "network_address": "a8-88.saclay.iot-lab.info" - }, - { - "y": "40.0", - "x": "11.5", - "z": "2.5", - "network_address": "a8-89.saclay.iot-lab.info" - }, - { - "y": "40.0", - "x": "15.5", - "z": "2.5", - "network_address": "a8-90.saclay.iot-lab.info" - }, - { - "y": "40.0", - "x": "20.5", - "z": "2.5", - "network_address": "a8-91.saclay.iot-lab.info" - }, - { - "y": "40.0", - "x": "24.5", - "z": "2.5", - "network_address": "a8-92.saclay.iot-lab.info" - }, - { - "y": "42.5", - "x": "2.5", - "z": "2.5", - "network_address": "a8-93.saclay.iot-lab.info" - }, - { - "y": "42.5", - "x": "8.5", - "z": "2.5", - "network_address": "a8-94.saclay.iot-lab.info" - }, - { - "y": "42.5", - "x": "11.5", - "z": "2.5", - "network_address": "a8-95.saclay.iot-lab.info" - }, - { - "y": "42.5", - "x": "15.5", - "z": "2.5", - "network_address": "a8-96.saclay.iot-lab.info" - }, - { - "y": "42.5", - "x": "20.5", - "z": "2.5", - "network_address": "a8-97.saclay.iot-lab.info" - }, - { - "y": "42.5", - "x": "24.5", - "z": "2.5", - "network_address": "a8-98.saclay.iot-lab.info" - }, - { - "y": "45", - "x": "2.5", - "z": "2.5", - "network_address": "a8-99.saclay.iot-lab.info" - }, - { - "y": "45", - "x": "8.5", - "z": "2.5", - "network_address": "a8-100.saclay.iot-lab.info" - }, - { - "y": "45", - "x": "11.5", - "z": "2.5", - "network_address": "a8-101.saclay.iot-lab.info" - }, - { - "y": "45", - "x": "15.5", - "z": "2.5", - "network_address": "a8-102.saclay.iot-lab.info" - }, - { - "y": "45", - "x": "20.5", - "z": "2.5", - "network_address": "a8-103.saclay.iot-lab.info" - }, - { - "y": "45", - "x": "24.5", - "z": "2.5", - "network_address": "a8-104.saclay.iot-lab.info" - }, - { - "y": "47", - "x": "15.5", - "z": "2.5", - "network_address": "a8-105.saclay.iot-lab.info" - }, - { - "y": "47", - "x": "20.5", - "z": "2.5", - "network_address": "a8-106.saclay.iot-lab.info" - }, - { - "y": "47", - "x": "24.5", - "z": "2.5", - "network_address": "a8-107.saclay.iot-lab.info" - }, - { - "y": "50", - "x": "15.5", - "z": "2.5", - "network_address": "a8-108.saclay.iot-lab.info" - }, - { - "y": "50", - "x": "20.5", - "z": "2.5", - "network_address": "a8-109.saclay.iot-lab.info" - }, - { - "y": "50", - "x": "24.5", - "z": "2.5", - "network_address": "a8-110.saclay.iot-lab.info" - }, - { - "y": "52", - "x": "15.5", - "z": "2.5", - "network_address": "a8-111.saclay.iot-lab.info" - }, - { - "y": "52", - "x": "20.5", - "z": "2.5", - "network_address": "a8-112.saclay.iot-lab.info" - }, - { - "y": "52", - "x": "24.5", - "z": "2.5", - "network_address": "a8-113.saclay.iot-lab.info" - }, - { - "y": "54", - "x": "20.5", - "z": "2.5", - "network_address": "a8-114.saclay.iot-lab.info" - }, - { - "y": "54", - "x": "24.5", - "z": "2.5", - "network_address": "a8-115.saclay.iot-lab.info" - }, - { - "y": "46.8", - "x": "1", - "z": "5", - "network_address": "a8-116.saclay.iot-lab.info" - }, - { - "y": "46.8", - "x": "1.8", - "z": "5", - "network_address": "a8-117.saclay.iot-lab.info" - }, - { - "y": "48.3", - "x": "1", - "z": "5", - "network_address": "a8-119.saclay.iot-lab.info" - }, - { - "y": "48.3", - "x": "1.8", - "z": "5", - "network_address": "a8-120.saclay.iot-lab.info" - }, - { - "y": "48.3", - "x": "2.6", - "z": "5", - "network_address": "a8-121.saclay.iot-lab.info" - }, - { - "y": "51.8", - "x": "1", - "z": "5", - "network_address": "a8-122.saclay.iot-lab.info" - }, - { - "y": "51.8", - "x": "2.6", - "z": "5", - "network_address": "a8-124.saclay.iot-lab.info" - }, - { - "y": "52.8", - "x": "1", - "z": "5", - "network_address": "a8-125.saclay.iot-lab.info" - }, - { - "y": "52.8", - "x": "1.8", - "z": "5", - "network_address": "a8-126.saclay.iot-lab.info" - }, - { - "y": "52.8", - "x": "2.6", - "z": "5", - "network_address": "a8-127.saclay.iot-lab.info" - }, - { - "y": "53.8", - "x": "1", - "z": "5", - "network_address": "a8-128.saclay.iot-lab.info" - }, - { - "y": "53.8", - "x": "2.6", - "z": "5", - "network_address": "a8-130.saclay.iot-lab.info" - }, - { - "y": "54.8", - "x": "1", - "z": "5", - "network_address": "a8-131.saclay.iot-lab.info" - }, - { - "y": "54.8", - "x": "1.8", - "z": "5", - "network_address": "a8-132.saclay.iot-lab.info" - }, - { - "y": "54.8", - "x": "2.6", - "z": "5", - "network_address": "a8-133.saclay.iot-lab.info" - }, - { - "y": "55.8", - "x": "1.8", - "z": "5", - "network_address": "a8-135.saclay.iot-lab.info" - }, - { - "y": "55.8", - "x": "2.6", - "z": "5", - "network_address": "a8-136.saclay.iot-lab.info" - }, - { - "y": "56.8", - "x": "1", - "z": "5", - "network_address": "a8-137.saclay.iot-lab.info" - }, - { - "y": "56.8", - "x": "1.8", - "z": "5", - "network_address": "a8-138.saclay.iot-lab.info" - }, - { - "y": "56.8", - "x": "2.6", - "z": "5", - "network_address": "a8-139.saclay.iot-lab.info" - }, - { - "y": "57.8", - "x": "1", - "z": "5", - "network_address": "a8-140.saclay.iot-lab.info" - }, - { - "y": "57.8", - "x": "1.8", - "z": "5", - "network_address": "a8-141.saclay.iot-lab.info" - }, - { - "y": "57.8", - "x": "2.6", - "z": "5", - "network_address": "a8-142.saclay.iot-lab.info" - }, - { - "y": "58.8", - "x": "1", - "z": "5", - "network_address": "a8-143.saclay.iot-lab.info" - }, - { - "y": "58.8", - "x": "1.8", - "z": "5", - "network_address": "a8-144.saclay.iot-lab.info" - }, - { - "y": "58.8", - "x": "2.6", - "z": "5", - "network_address": "a8-145.saclay.iot-lab.info" - }, - { - "y": "64.3", - "x": "0.8", - "z": "5", - "network_address": "a8-146.saclay.iot-lab.info" - }, - { - "y": "64.3", - "x": "2", - "z": "5", - "network_address": "a8-147.saclay.iot-lab.info" - }, - { - "y": "64.3", - "x": "3", - "z": "5", - "network_address": "a8-148.saclay.iot-lab.info" - }, - { - "y": "64.3", - "x": "4", - "z": "5", - "network_address": "a8-149.saclay.iot-lab.info" - }, - { - "y": "64.3", - "x": "5", - "z": "5", - "network_address": "a8-150.saclay.iot-lab.info" - }, - { - "y": "65.3", - "x": "0.8", - "z": "5", - "network_address": "a8-151.saclay.iot-lab.info" - }, - { - "y": "65.3", - "x": "2", - "z": "5", - "network_address": "a8-152.saclay.iot-lab.info" - }, - { - "y": "65.3", - "x": "3", - "z": "5", - "network_address": "a8-153.saclay.iot-lab.info" - }, - { - "y": "65.3", - "x": "4", - "z": "5", - "network_address": "a8-154.saclay.iot-lab.info" - }, - { - "y": "65.3", - "x": "5", - "z": "5", - "network_address": "a8-155.saclay.iot-lab.info" - }, - { - "y": "66.3", - "x": "0.8", - "z": "5", - "network_address": "a8-156.saclay.iot-lab.info" - }, - { - "y": "66.3", - "x": "2", - "z": "5", - "network_address": "a8-157.saclay.iot-lab.info" - }, - { - "y": "66.3", - "x": "3", - "z": "5", - "network_address": "a8-158.saclay.iot-lab.info" - }, - { - "y": "66.3", - "x": "4", - "z": "5", - "network_address": "a8-159.saclay.iot-lab.info" - }, - { - "y": "66.3", - "x": "5", - "z": "5", - "network_address": "a8-160.saclay.iot-lab.info" - }, - { - "y": "67.3", - "x": "2", - "z": "5", - "network_address": "a8-162.saclay.iot-lab.info" - }, - { - "y": "67.3", - "x": "3", - "z": "5", - "network_address": "a8-163.saclay.iot-lab.info" - }, - { - "y": "67.3", - "x": "4", - "z": "5", - "network_address": "a8-164.saclay.iot-lab.info" - }, - { - "y": "67.3", - "x": "5", - "z": "5", - "network_address": "a8-165.saclay.iot-lab.info" - }, - { - "y": "68.3", - "x": "1", - "z": "5", - "network_address": "a8-166.saclay.iot-lab.info" - }, - { - "y": "68.3", - "x": "2", - "z": "5", - "network_address": "a8-167.saclay.iot-lab.info" - }, - { - "y": "68.3", - "x": "3", - "z": "5", - "network_address": "a8-168.saclay.iot-lab.info" - }, - { - "y": "68.3", - "x": "4", - "z": "5", - "network_address": "a8-169.saclay.iot-lab.info" - }, - { - "y": "68.3", - "x": "5", - "z": "5", - "network_address": "a8-170.saclay.iot-lab.info" - }, - { - "y": "69.3", - "x": "1", - "z": "5", - "network_address": "a8-171.saclay.iot-lab.info" - }, - { - "y": "69.3", - "x": "2", - "z": "5", - "network_address": "a8-172.saclay.iot-lab.info" - }, - { - "y": "69.3", - "x": "3", - "z": "5", - "network_address": "a8-173.saclay.iot-lab.info" - }, - { - "y": "69.3", - "x": "4", - "z": "5", - "network_address": "a8-174.saclay.iot-lab.info" - }, - { - "y": "69.3", - "x": "5", - "z": "5", - "network_address": "a8-175.saclay.iot-lab.info" - }, - { - "y": "53.8", - "x": "1", - "z": "4", - "network_address": "custom-1.saclay.iot-lab.info" - }, - { - "y": "53.8", - "x": "1.8", - "z": "4", - "network_address": "custom-2.saclay.iot-lab.info" - }, - { - "y": "53.8", - "x": "2.6", - "z": "4", - "network_address": "custom-3.saclay.iot-lab.info" - }, - { - "y": "54.8", - "x": "1", - "z": "4", - "network_address": "custom-4.saclay.iot-lab.info" - }, - { - "y": "54.8", - "x": "1.8", - "z": "4", - "network_address": "custom-5.saclay.iot-lab.info" - }, - { - "y": "54.8", - "x": "2.6", - "z": "4", - "network_address": "custom-6.saclay.iot-lab.info" - }, - { - "y": "63.3", - "x": "0.8", - "z": "4", - "network_address": "custom-7.saclay.iot-lab.info" - }, - { - "y": "63.3", - "x": "0.8", - "z": "5", - "network_address": "custom-8.saclay.iot-lab.info" - } - ], - "location": "saclay" - }, - { - "nodes": [ - { - "y": "0.744", - "x": "-4.62", - "z": "2.912", - "network_address": "wsn430-2.rennes.iot-lab.info" - }, - { - "y": "1.348", - "x": "-4.62", - "z": "2.911", - "network_address": "wsn430-3.rennes.iot-lab.info" - }, - { - "y": "2.556", - "x": "-4.62", - "z": "2.911", - "network_address": "wsn430-5.rennes.iot-lab.info" - }, - { - "y": "3.161", - "x": "-4.62", - "z": "2.91", - "network_address": "wsn430-6.rennes.iot-lab.info" - }, - { - "y": "3.765", - "x": "-4.62", - "z": "2.91", - "network_address": "wsn430-7.rennes.iot-lab.info" - }, - { - "y": "4.369", - "x": "-4.62", - "z": "2.91", - "network_address": "wsn430-8.rennes.iot-lab.info" - }, - { - "y": "4.973", - "x": "-4.62", - "z": "2.91", - "network_address": "wsn430-9.rennes.iot-lab.info" - }, - { - "y": "5.577", - "x": "-4.62", - "z": "2.909", - "network_address": "wsn430-10.rennes.iot-lab.info" - }, - { - "y": "6.181", - "x": "-4.62", - "z": "2.909", - "network_address": "wsn430-11.rennes.iot-lab.info" - }, - { - "y": "6.785", - "x": "-4.62", - "z": "2.909", - "network_address": "wsn430-12.rennes.iot-lab.info" - }, - { - "y": "7.389", - "x": "-4.62", - "z": "2.908", - "network_address": "wsn430-13.rennes.iot-lab.info" - }, - { - "y": "7.994", - "x": "-4.62", - "z": "2.908", - "network_address": "wsn430-14.rennes.iot-lab.info" - }, - { - "y": "8.598", - "x": "-4.62", - "z": "2.908", - "network_address": "wsn430-15.rennes.iot-lab.info" - }, - { - "y": "9.202", - "x": "-4.62", - "z": "2.907", - "network_address": "wsn430-16.rennes.iot-lab.info" - }, - { - "y": "9.806", - "x": "-4.62", - "z": "2.907", - "network_address": "wsn430-17.rennes.iot-lab.info" - }, - { - "y": "10.41", - "x": "-4.62", - "z": "2.907", - "network_address": "wsn430-18.rennes.iot-lab.info" - }, - { - "y": "11.014", - "x": "-4.62", - "z": "2.907", - "network_address": "wsn430-19.rennes.iot-lab.info" - }, - { - "y": "11.618", - "x": "-4.62", - "z": "2.906", - "network_address": "wsn430-20.rennes.iot-lab.info" - }, - { - "y": "12.222", - "x": "-4.62", - "z": "2.906", - "network_address": "wsn430-21.rennes.iot-lab.info" - }, - { - "y": "12.826", - "x": "-4.62", - "z": "2.906", - "network_address": "wsn430-22.rennes.iot-lab.info" - }, - { - "y": "13.431", - "x": "-4.62", - "z": "2.905", - "network_address": "wsn430-23.rennes.iot-lab.info" - }, - { - "y": "14.035", - "x": "-4.62", - "z": "2.905", - "network_address": "wsn430-24.rennes.iot-lab.info" - }, - { - "y": "0.14", - "x": "-3.796", - "z": "2.912", - "network_address": "wsn430-25.rennes.iot-lab.info" - }, - { - "y": "0.744", - "x": "-3.796", - "z": "2.912", - "network_address": "wsn430-26.rennes.iot-lab.info" - }, - { - "y": "1.348", - "x": "-3.796", - "z": "2.911", - "network_address": "wsn430-27.rennes.iot-lab.info" - }, - { - "y": "1.952", - "x": "-3.796", - "z": "2.911", - "network_address": "wsn430-28.rennes.iot-lab.info" - }, - { - "y": "2.556", - "x": "-3.796", - "z": "2.911", - "network_address": "wsn430-29.rennes.iot-lab.info" - }, - { - "y": "3.161", - "x": "-3.796", - "z": "2.91", - "network_address": "wsn430-30.rennes.iot-lab.info" - }, - { - "y": "3.765", - "x": "-3.796", - "z": "2.91", - "network_address": "wsn430-31.rennes.iot-lab.info" - }, - { - "y": "4.369", - "x": "-3.796", - "z": "2.91", - "network_address": "wsn430-32.rennes.iot-lab.info" - }, - { - "y": "5.577", - "x": "-3.796", - "z": "2.909", - "network_address": "wsn430-34.rennes.iot-lab.info" - }, - { - "y": "6.181", - "x": "-3.796", - "z": "2.909", - "network_address": "wsn430-35.rennes.iot-lab.info" - }, - { - "y": "6.785", - "x": "-3.796", - "z": "2.909", - "network_address": "wsn430-36.rennes.iot-lab.info" - }, - { - "y": "7.389", - "x": "-3.796", - "z": "2.908", - "network_address": "wsn430-37.rennes.iot-lab.info" - }, - { - "y": "7.994", - "x": "-3.796", - "z": "2.908", - "network_address": "wsn430-38.rennes.iot-lab.info" - }, - { - "y": "8.598", - "x": "-3.796", - "z": "2.908", - "network_address": "wsn430-39.rennes.iot-lab.info" - }, - { - "y": "9.202", - "x": "-3.796", - "z": "2.907", - "network_address": "wsn430-40.rennes.iot-lab.info" - }, - { - "y": "9.806", - "x": "-3.796", - "z": "2.907", - "network_address": "wsn430-41.rennes.iot-lab.info" - }, - { - "y": "10.41", - "x": "-3.796", - "z": "2.907", - "network_address": "wsn430-42.rennes.iot-lab.info" - }, - { - "y": "11.014", - "x": "-3.796", - "z": "2.907", - "network_address": "wsn430-43.rennes.iot-lab.info" - }, - { - "y": "11.618", - "x": "-3.796", - "z": "2.906", - "network_address": "wsn430-44.rennes.iot-lab.info" - }, - { - "y": "12.222", - "x": "-3.796", - "z": "2.906", - "network_address": "wsn430-45.rennes.iot-lab.info" - }, - { - "y": "12.826", - "x": "-3.796", - "z": "2.906", - "network_address": "wsn430-46.rennes.iot-lab.info" - }, - { - "y": "0.14", - "x": "-2.972", - "z": "2.912", - "network_address": "wsn430-49.rennes.iot-lab.info" - }, - { - "y": "0.744", - "x": "-2.972", - "z": "2.912", - "network_address": "wsn430-50.rennes.iot-lab.info" - }, - { - "y": "1.348", - "x": "-2.972", - "z": "2.911", - "network_address": "wsn430-51.rennes.iot-lab.info" - }, - { - "y": "1.952", - "x": "-2.972", - "z": "2.911", - "network_address": "wsn430-52.rennes.iot-lab.info" - }, - { - "y": "2.556", - "x": "-2.972", - "z": "2.911", - "network_address": "wsn430-53.rennes.iot-lab.info" - }, - { - "y": "3.161", - "x": "-2.972", - "z": "2.91", - "network_address": "wsn430-54.rennes.iot-lab.info" - }, - { - "y": "3.765", - "x": "-2.972", - "z": "2.91", - "network_address": "wsn430-55.rennes.iot-lab.info" - }, - { - "y": "4.369", - "x": "-2.972", - "z": "2.91", - "network_address": "wsn430-56.rennes.iot-lab.info" - }, - { - "y": "4.973", - "x": "-2.972", - "z": "2.91", - "network_address": "wsn430-57.rennes.iot-lab.info" - }, - { - "y": "5.577", - "x": "-2.972", - "z": "2.909", - "network_address": "wsn430-58.rennes.iot-lab.info" - }, - { - "y": "6.181", - "x": "-2.972", - "z": "2.909", - "network_address": "wsn430-59.rennes.iot-lab.info" - }, - { - "y": "6.785", - "x": "-2.972", - "z": "2.909", - "network_address": "wsn430-60.rennes.iot-lab.info" - }, - { - "y": "7.389", - "x": "-2.972", - "z": "2.908", - "network_address": "wsn430-61.rennes.iot-lab.info" - }, - { - "y": "7.994", - "x": "-2.972", - "z": "2.908", - "network_address": "wsn430-62.rennes.iot-lab.info" - }, - { - "y": "8.598", - "x": "-2.972", - "z": "2.908", - "network_address": "wsn430-63.rennes.iot-lab.info" - }, - { - "y": "9.202", - "x": "-2.972", - "z": "2.907", - "network_address": "wsn430-64.rennes.iot-lab.info" - }, - { - "y": "9.806", - "x": "-2.972", - "z": "2.907", - "network_address": "wsn430-65.rennes.iot-lab.info" - }, - { - "y": "10.41", - "x": "-2.972", - "z": "2.907", - "network_address": "wsn430-66.rennes.iot-lab.info" - }, - { - "y": "11.014", - "x": "-2.972", - "z": "2.907", - "network_address": "wsn430-67.rennes.iot-lab.info" - }, - { - "y": "11.618", - "x": "-2.972", - "z": "2.906", - "network_address": "wsn430-68.rennes.iot-lab.info" - }, - { - "y": "12.222", - "x": "-2.972", - "z": "2.906", - "network_address": "wsn430-69.rennes.iot-lab.info" - }, - { - "y": "12.826", - "x": "-2.972", - "z": "2.906", - "network_address": "wsn430-70.rennes.iot-lab.info" - }, - { - "y": "13.431", - "x": "-2.972", - "z": "2.905", - "network_address": "wsn430-71.rennes.iot-lab.info" - }, - { - "y": "0.14", - "x": "-2.148", - "z": "2.912", - "network_address": "wsn430-73.rennes.iot-lab.info" - }, - { - "y": "0.744", - "x": "-2.148", - "z": "2.912", - "network_address": "wsn430-74.rennes.iot-lab.info" - }, - { - "y": "1.348", - "x": "-2.148", - "z": "2.911", - "network_address": "wsn430-75.rennes.iot-lab.info" - }, - { - "y": "1.952", - "x": "-2.148", - "z": "2.911", - "network_address": "wsn430-76.rennes.iot-lab.info" - }, - { - "y": "2.556", - "x": "-2.148", - "z": "2.911", - "network_address": "wsn430-77.rennes.iot-lab.info" - }, - { - "y": "3.161", - "x": "-2.148", - "z": "2.91", - "network_address": "wsn430-78.rennes.iot-lab.info" - }, - { - "y": "4.369", - "x": "-2.148", - "z": "2.91", - "network_address": "wsn430-80.rennes.iot-lab.info" - }, - { - "y": "4.973", - "x": "-2.148", - "z": "2.91", - "network_address": "wsn430-81.rennes.iot-lab.info" - }, - { - "y": "5.577", - "x": "-2.148", - "z": "2.909", - "network_address": "wsn430-82.rennes.iot-lab.info" - }, - { - "y": "6.181", - "x": "-2.148", - "z": "2.909", - "network_address": "wsn430-83.rennes.iot-lab.info" - }, - { - "y": "6.785", - "x": "-2.148", - "z": "2.909", - "network_address": "wsn430-84.rennes.iot-lab.info" - }, - { - "y": "7.389", - "x": "-2.148", - "z": "2.908", - "network_address": "wsn430-85.rennes.iot-lab.info" - }, - { - "y": "7.994", - "x": "-2.148", - "z": "2.908", - "network_address": "wsn430-86.rennes.iot-lab.info" - }, - { - "y": "8.598", - "x": "-2.148", - "z": "2.908", - "network_address": "wsn430-87.rennes.iot-lab.info" - }, - { - "y": "9.202", - "x": "-2.148", - "z": "2.907", - "network_address": "wsn430-88.rennes.iot-lab.info" - }, - { - "y": "9.806", - "x": "-2.148", - "z": "2.907", - "network_address": "wsn430-89.rennes.iot-lab.info" - }, - { - "y": "10.41", - "x": "-2.148", - "z": "2.907", - "network_address": "wsn430-90.rennes.iot-lab.info" - }, - { - "y": "11.014", - "x": "-2.148", - "z": "2.907", - "network_address": "wsn430-91.rennes.iot-lab.info" - }, - { - "y": "11.618", - "x": "-2.148", - "z": "2.906", - "network_address": "wsn430-92.rennes.iot-lab.info" - }, - { - "y": "12.222", - "x": "-2.148", - "z": "2.906", - "network_address": "wsn430-93.rennes.iot-lab.info" - }, - { - "y": "12.826", - "x": "-2.148", - "z": "2.906", - "network_address": "wsn430-94.rennes.iot-lab.info" - }, - { - "y": "13.431", - "x": "-2.148", - "z": "2.905", - "network_address": "wsn430-95.rennes.iot-lab.info" - }, - { - "y": "14.035", - "x": "-2.148", - "z": "2.905", - "network_address": "wsn430-96.rennes.iot-lab.info" - }, - { - "y": "0.14", - "x": "-1.324", - "z": "2.912", - "network_address": "wsn430-97.rennes.iot-lab.info" - }, - { - "y": "1.348", - "x": "-1.324", - "z": "2.911", - "network_address": "wsn430-99.rennes.iot-lab.info" - }, - { - "y": "2.556", - "x": "-1.324", - "z": "2.911", - "network_address": "wsn430-101.rennes.iot-lab.info" - }, - { - "y": "3.161", - "x": "-1.324", - "z": "2.91", - "network_address": "wsn430-102.rennes.iot-lab.info" - }, - { - "y": "4.369", - "x": "-1.324", - "z": "2.91", - "network_address": "wsn430-104.rennes.iot-lab.info" - }, - { - "y": "5.577", - "x": "-1.324", - "z": "2.909", - "network_address": "wsn430-106.rennes.iot-lab.info" - }, - { - "y": "7.389", - "x": "-1.324", - "z": "2.908", - "network_address": "wsn430-109.rennes.iot-lab.info" - }, - { - "y": "7.994", - "x": "-1.324", - "z": "2.908", - "network_address": "wsn430-110.rennes.iot-lab.info" - }, - { - "y": "8.598", - "x": "-1.324", - "z": "2.908", - "network_address": "wsn430-111.rennes.iot-lab.info" - }, - { - "y": "9.202", - "x": "-1.324", - "z": "2.907", - "network_address": "wsn430-112.rennes.iot-lab.info" - }, - { - "y": "9.806", - "x": "-1.324", - "z": "2.907", - "network_address": "wsn430-113.rennes.iot-lab.info" - }, - { - "y": "10.41", - "x": "-1.324", - "z": "2.907", - "network_address": "wsn430-114.rennes.iot-lab.info" - }, - { - "y": "11.618", - "x": "-1.324", - "z": "2.906", - "network_address": "wsn430-116.rennes.iot-lab.info" - }, - { - "y": "12.826", - "x": "-1.324", - "z": "2.906", - "network_address": "wsn430-118.rennes.iot-lab.info" - }, - { - "y": "13.431", - "x": "-1.324", - "z": "2.905", - "network_address": "wsn430-119.rennes.iot-lab.info" - }, - { - "y": "14.035", - "x": "-1.324", - "z": "2.905", - "network_address": "wsn430-120.rennes.iot-lab.info" - }, - { - "y": "0.14", - "x": "-0.5", - "z": "2.912", - "network_address": "wsn430-121.rennes.iot-lab.info" - }, - { - "y": "0.744", - "x": "-0.5", - "z": "2.912", - "network_address": "wsn430-122.rennes.iot-lab.info" - }, - { - "y": "1.348", - "x": "-0.5", - "z": "2.911", - "network_address": "wsn430-123.rennes.iot-lab.info" - }, - { - "y": "2.556", - "x": "-0.5", - "z": "2.911", - "network_address": "wsn430-125.rennes.iot-lab.info" - }, - { - "y": "3.161", - "x": "-0.5", - "z": "2.91", - "network_address": "wsn430-126.rennes.iot-lab.info" - }, - { - "y": "3.765", - "x": "-0.5", - "z": "2.91", - "network_address": "wsn430-127.rennes.iot-lab.info" - }, - { - "y": "4.369", - "x": "-0.5", - "z": "2.91", - "network_address": "wsn430-128.rennes.iot-lab.info" - }, - { - "y": "4.973", - "x": "-0.5", - "z": "2.91", - "network_address": "wsn430-129.rennes.iot-lab.info" - }, - { - "y": "7.389", - "x": "-0.5", - "z": "2.908", - "network_address": "wsn430-133.rennes.iot-lab.info" - }, - { - "y": "7.994", - "x": "-0.5", - "z": "2.908", - "network_address": "wsn430-134.rennes.iot-lab.info" - }, - { - "y": "8.598", - "x": "-0.5", - "z": "2.908", - "network_address": "wsn430-135.rennes.iot-lab.info" - }, - { - "y": "9.202", - "x": "-0.5", - "z": "2.907", - "network_address": "wsn430-136.rennes.iot-lab.info" - }, - { - "y": "10.41", - "x": "-0.5", - "z": "2.907", - "network_address": "wsn430-138.rennes.iot-lab.info" - }, - { - "y": "11.014", - "x": "-0.5", - "z": "2.907", - "network_address": "wsn430-139.rennes.iot-lab.info" - }, - { - "y": "11.618", - "x": "-0.5", - "z": "2.906", - "network_address": "wsn430-140.rennes.iot-lab.info" - }, - { - "y": "12.222", - "x": "-0.5", - "z": "2.906", - "network_address": "wsn430-141.rennes.iot-lab.info" - }, - { - "y": "12.826", - "x": "-0.5", - "z": "2.906", - "network_address": "wsn430-142.rennes.iot-lab.info" - }, - { - "y": "13.431", - "x": "-0.5", - "z": "2.905", - "network_address": "wsn430-143.rennes.iot-lab.info" - }, - { - "y": "14.035", - "x": "-0.5", - "z": "2.905", - "network_address": "wsn430-144.rennes.iot-lab.info" - }, - { - "y": "0.51", - "x": "0.66", - "z": "2.66", - "network_address": "wsn430-145.rennes.iot-lab.info" - }, - { - "y": "1.46", - "x": "0.66", - "z": "2.8", - "network_address": "wsn430-146.rennes.iot-lab.info" - }, - { - "y": "2.51", - "x": "0.66", - "z": "2.69", - "network_address": "wsn430-147.rennes.iot-lab.info" - }, - { - "y": "3.11", - "x": "0.66", - "z": "2.7", - "network_address": "wsn430-148.rennes.iot-lab.info" - }, - { - "y": "0.744", - "x": "2.26", - "z": "2.912", - "network_address": "wsn430-150.rennes.iot-lab.info" - }, - { - "y": "1.952", - "x": "2.26", - "z": "2.911", - "network_address": "wsn430-152.rennes.iot-lab.info" - }, - { - "y": "2.556", - "x": "2.26", - "z": "2.91", - "network_address": "wsn430-153.rennes.iot-lab.info" - }, - { - "y": "3.161", - "x": "2.26", - "z": "2.91", - "network_address": "wsn430-154.rennes.iot-lab.info" - }, - { - "y": "3.765", - "x": "2.26", - "z": "2.91", - "network_address": "wsn430-155.rennes.iot-lab.info" - }, - { - "y": "4.369", - "x": "2.26", - "z": "2.909", - "network_address": "wsn430-156.rennes.iot-lab.info" - }, - { - "y": "4.973", - "x": "2.26", - "z": "2.909", - "network_address": "wsn430-157.rennes.iot-lab.info" - }, - { - "y": "5.577", - "x": "2.26", - "z": "2.908", - "network_address": "wsn430-158.rennes.iot-lab.info" - }, - { - "y": "6.181", - "x": "2.26", - "z": "2.908", - "network_address": "wsn430-159.rennes.iot-lab.info" - }, - { - "y": "6.785", - "x": "2.26", - "z": "2.907", - "network_address": "wsn430-160.rennes.iot-lab.info" - }, - { - "y": "7.389", - "x": "2.26", - "z": "2.907", - "network_address": "wsn430-161.rennes.iot-lab.info" - }, - { - "y": "7.994", - "x": "2.26", - "z": "2.907", - "network_address": "wsn430-162.rennes.iot-lab.info" - }, - { - "y": "8.598", - "x": "2.26", - "z": "2.906", - "network_address": "wsn430-163.rennes.iot-lab.info" - }, - { - "y": "9.202", - "x": "2.26", - "z": "2.906", - "network_address": "wsn430-164.rennes.iot-lab.info" - }, - { - "y": "9.806", - "x": "2.26", - "z": "2.905", - "network_address": "wsn430-165.rennes.iot-lab.info" - }, - { - "y": "10.41", - "x": "2.26", - "z": "2.905", - "network_address": "wsn430-166.rennes.iot-lab.info" - }, - { - "y": "0.14", - "x": "3.084", - "z": "2.912", - "network_address": "wsn430-167.rennes.iot-lab.info" - }, - { - "y": "0.744", - "x": "3.084", - "z": "2.912", - "network_address": "wsn430-168.rennes.iot-lab.info" - }, - { - "y": "1.348", - "x": "3.084", - "z": "2.911", - "network_address": "wsn430-169.rennes.iot-lab.info" - }, - { - "y": "1.952", - "x": "3.084", - "z": "2.911", - "network_address": "wsn430-170.rennes.iot-lab.info" - }, - { - "y": "2.556", - "x": "3.084", - "z": "2.91", - "network_address": "wsn430-171.rennes.iot-lab.info" - }, - { - "y": "3.161", - "x": "3.084", - "z": "2.91", - "network_address": "wsn430-172.rennes.iot-lab.info" - }, - { - "y": "3.765", - "x": "3.084", - "z": "2.91", - "network_address": "wsn430-173.rennes.iot-lab.info" - }, - { - "y": "4.369", - "x": "3.084", - "z": "2.909", - "network_address": "wsn430-174.rennes.iot-lab.info" - }, - { - "y": "4.973", - "x": "3.084", - "z": "2.909", - "network_address": "wsn430-175.rennes.iot-lab.info" - }, - { - "y": "5.577", - "x": "3.084", - "z": "2.908", - "network_address": "wsn430-176.rennes.iot-lab.info" - }, - { - "y": "6.181", - "x": "3.084", - "z": "2.908", - "network_address": "wsn430-177.rennes.iot-lab.info" - }, - { - "y": "6.785", - "x": "3.084", - "z": "2.907", - "network_address": "wsn430-178.rennes.iot-lab.info" - }, - { - "y": "7.389", - "x": "3.084", - "z": "2.907", - "network_address": "wsn430-179.rennes.iot-lab.info" - }, - { - "y": "7.994", - "x": "3.084", - "z": "2.907", - "network_address": "wsn430-180.rennes.iot-lab.info" - }, - { - "y": "8.598", - "x": "3.084", - "z": "2.906", - "network_address": "wsn430-181.rennes.iot-lab.info" - }, - { - "y": "9.202", - "x": "3.084", - "z": "2.906", - "network_address": "wsn430-182.rennes.iot-lab.info" - }, - { - "y": "9.806", - "x": "3.084", - "z": "2.905", - "network_address": "wsn430-183.rennes.iot-lab.info" - }, - { - "y": "10.41", - "x": "3.084", - "z": "2.905", - "network_address": "wsn430-184.rennes.iot-lab.info" - }, - { - "y": "0.14", - "x": "3.908", - "z": "2.912", - "network_address": "wsn430-185.rennes.iot-lab.info" - }, - { - "y": "0.744", - "x": "3.908", - "z": "2.912", - "network_address": "wsn430-186.rennes.iot-lab.info" - }, - { - "y": "1.348", - "x": "3.908", - "z": "2.911", - "network_address": "wsn430-187.rennes.iot-lab.info" - }, - { - "y": "1.952", - "x": "3.908", - "z": "2.911", - "network_address": "wsn430-188.rennes.iot-lab.info" - }, - { - "y": "2.556", - "x": "3.908", - "z": "2.91", - "network_address": "wsn430-189.rennes.iot-lab.info" - }, - { - "y": "3.161", - "x": "3.908", - "z": "2.91", - "network_address": "wsn430-190.rennes.iot-lab.info" - }, - { - "y": "3.765", - "x": "3.908", - "z": "2.91", - "network_address": "wsn430-191.rennes.iot-lab.info" - }, - { - "y": "4.973", - "x": "3.908", - "z": "2.909", - "network_address": "wsn430-193.rennes.iot-lab.info" - }, - { - "y": "5.577", - "x": "3.908", - "z": "2.908", - "network_address": "wsn430-194.rennes.iot-lab.info" - }, - { - "y": "6.181", - "x": "3.908", - "z": "2.908", - "network_address": "wsn430-195.rennes.iot-lab.info" - }, - { - "y": "6.785", - "x": "3.908", - "z": "2.907", - "network_address": "wsn430-196.rennes.iot-lab.info" - }, - { - "y": "7.389", - "x": "3.908", - "z": "2.907", - "network_address": "wsn430-197.rennes.iot-lab.info" - }, - { - "y": "7.994", - "x": "3.908", - "z": "2.907", - "network_address": "wsn430-198.rennes.iot-lab.info" - }, - { - "y": "8.598", - "x": "3.908", - "z": "2.906", - "network_address": "wsn430-199.rennes.iot-lab.info" - }, - { - "y": "9.202", - "x": "3.908", - "z": "2.906", - "network_address": "wsn430-200.rennes.iot-lab.info" - }, - { - "y": "9.806", - "x": "3.908", - "z": "2.905", - "network_address": "wsn430-201.rennes.iot-lab.info" - }, - { - "y": "10.41", - "x": "3.908", - "z": "2.905", - "network_address": "wsn430-202.rennes.iot-lab.info" - }, - { - "y": "0.14", - "x": "4.732", - "z": "2.912", - "network_address": "wsn430-203.rennes.iot-lab.info" - }, - { - "y": "0.744", - "x": "4.732", - "z": "2.912", - "network_address": "wsn430-204.rennes.iot-lab.info" - }, - { - "y": "1.348", - "x": "4.732", - "z": "2.911", - "network_address": "wsn430-205.rennes.iot-lab.info" - }, - { - "y": "1.952", - "x": "4.732", - "z": "2.911", - "network_address": "wsn430-206.rennes.iot-lab.info" - }, - { - "y": "2.556", - "x": "4.732", - "z": "2.91", - "network_address": "wsn430-207.rennes.iot-lab.info" - }, - { - "y": "3.161", - "x": "4.732", - "z": "2.91", - "network_address": "wsn430-208.rennes.iot-lab.info" - }, - { - "y": "3.765", - "x": "4.732", - "z": "2.91", - "network_address": "wsn430-209.rennes.iot-lab.info" - }, - { - "y": "4.369", - "x": "4.732", - "z": "2.909", - "network_address": "wsn430-210.rennes.iot-lab.info" - }, - { - "y": "4.973", - "x": "4.732", - "z": "2.909", - "network_address": "wsn430-211.rennes.iot-lab.info" - }, - { - "y": "5.577", - "x": "4.732", - "z": "2.908", - "network_address": "wsn430-212.rennes.iot-lab.info" - }, - { - "y": "6.181", - "x": "4.732", - "z": "2.908", - "network_address": "wsn430-213.rennes.iot-lab.info" - }, - { - "y": "6.785", - "x": "4.732", - "z": "2.907", - "network_address": "wsn430-214.rennes.iot-lab.info" - }, - { - "y": "7.389", - "x": "4.732", - "z": "2.907", - "network_address": "wsn430-215.rennes.iot-lab.info" - }, - { - "y": "7.994", - "x": "4.732", - "z": "2.907", - "network_address": "wsn430-216.rennes.iot-lab.info" - }, - { - "y": "8.598", - "x": "4.732", - "z": "2.906", - "network_address": "wsn430-217.rennes.iot-lab.info" - }, - { - "y": "9.202", - "x": "4.732", - "z": "2.906", - "network_address": "wsn430-218.rennes.iot-lab.info" - }, - { - "y": "9.806", - "x": "4.732", - "z": "2.905", - "network_address": "wsn430-219.rennes.iot-lab.info" - }, - { - "y": "10.41", - "x": "4.732", - "z": "2.905", - "network_address": "wsn430-220.rennes.iot-lab.info" - }, - { - "y": "0.14", - "x": "5.556", - "z": "2.912", - "network_address": "wsn430-221.rennes.iot-lab.info" - }, - { - "y": "0.744", - "x": "5.556", - "z": "2.912", - "network_address": "wsn430-222.rennes.iot-lab.info" - }, - { - "y": "1.348", - "x": "5.556", - "z": "2.911", - "network_address": "wsn430-223.rennes.iot-lab.info" - }, - { - "y": "2.556", - "x": "5.556", - "z": "2.91", - "network_address": "wsn430-225.rennes.iot-lab.info" - }, - { - "y": "3.161", - "x": "5.556", - "z": "2.91", - "network_address": "wsn430-226.rennes.iot-lab.info" - }, - { - "y": "3.765", - "x": "5.556", - "z": "2.91", - "network_address": "wsn430-227.rennes.iot-lab.info" - }, - { - "y": "4.369", - "x": "5.556", - "z": "2.909", - "network_address": "wsn430-228.rennes.iot-lab.info" - }, - { - "y": "4.973", - "x": "5.556", - "z": "2.909", - "network_address": "wsn430-229.rennes.iot-lab.info" - }, - { - "y": "5.577", - "x": "5.556", - "z": "2.908", - "network_address": "wsn430-230.rennes.iot-lab.info" - }, - { - "y": "6.181", - "x": "5.556", - "z": "2.908", - "network_address": "wsn430-231.rennes.iot-lab.info" - }, - { - "y": "6.785", - "x": "5.556", - "z": "2.907", - "network_address": "wsn430-232.rennes.iot-lab.info" - }, - { - "y": "7.389", - "x": "5.556", - "z": "2.907", - "network_address": "wsn430-233.rennes.iot-lab.info" - }, - { - "y": "7.994", - "x": "5.556", - "z": "2.907", - "network_address": "wsn430-234.rennes.iot-lab.info" - }, - { - "y": "8.598", - "x": "5.556", - "z": "2.906", - "network_address": "wsn430-235.rennes.iot-lab.info" - }, - { - "y": "9.202", - "x": "5.556", - "z": "2.906", - "network_address": "wsn430-236.rennes.iot-lab.info" - }, - { - "y": "9.806", - "x": "5.556", - "z": "2.905", - "network_address": "wsn430-237.rennes.iot-lab.info" - }, - { - "y": "10.41", - "x": "5.556", - "z": "2.905", - "network_address": "wsn430-238.rennes.iot-lab.info" - }, - { - "y": "0.744", - "x": "6.38", - "z": "2.912", - "network_address": "wsn430-240.rennes.iot-lab.info" - }, - { - "y": "1.348", - "x": "6.38", - "z": "2.911", - "network_address": "wsn430-241.rennes.iot-lab.info" - }, - { - "y": "1.952", - "x": "6.38", - "z": "2.911", - "network_address": "wsn430-242.rennes.iot-lab.info" - }, - { - "y": "2.556", - "x": "6.38", - "z": "2.91", - "network_address": "wsn430-243.rennes.iot-lab.info" - }, - { - "y": "3.161", - "x": "6.38", - "z": "2.91", - "network_address": "wsn430-244.rennes.iot-lab.info" - }, - { - "y": "3.765", - "x": "6.38", - "z": "2.91", - "network_address": "wsn430-245.rennes.iot-lab.info" - }, - { - "y": "4.973", - "x": "6.38", - "z": "2.909", - "network_address": "wsn430-247.rennes.iot-lab.info" - }, - { - "y": "5.577", - "x": "6.38", - "z": "2.908", - "network_address": "wsn430-248.rennes.iot-lab.info" - }, - { - "y": "6.181", - "x": "6.38", - "z": "2.908", - "network_address": "wsn430-249.rennes.iot-lab.info" - }, - { - "y": "6.785", - "x": "6.38", - "z": "2.907", - "network_address": "wsn430-250.rennes.iot-lab.info" - }, - { - "y": "7.389", - "x": "6.38", - "z": "2.907", - "network_address": "wsn430-251.rennes.iot-lab.info" - }, - { - "y": "7.994", - "x": "6.38", - "z": "2.907", - "network_address": "wsn430-252.rennes.iot-lab.info" - }, - { - "y": "8.598", - "x": "6.38", - "z": "2.906", - "network_address": "wsn430-253.rennes.iot-lab.info" - }, - { - "y": "9.202", - "x": "6.38", - "z": "2.906", - "network_address": "wsn430-254.rennes.iot-lab.info" - }, - { - "y": "9.806", - "x": "6.38", - "z": "2.905", - "network_address": "wsn430-255.rennes.iot-lab.info" - }, - { - "y": "10.41", - "x": "6.38", - "z": "2.905", - "network_address": "wsn430-256.rennes.iot-lab.info" - } - ], - "location": "rennes" - }, - { - "nodes": [ - { - "y": "26.76", - "x": "20.70", - "z": "-0.04", - "network_address": "m3-2.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "21.90", - "z": "-0.04", - "network_address": "m3-4.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "22.50", - "z": "-0.04", - "network_address": "m3-5.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "26.95", - "z": "-0.04", - "network_address": "m3-11.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "28.15", - "z": "-0.04", - "network_address": "m3-13.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "28.75", - "z": "-0.04", - "network_address": "m3-14.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "29.35", - "z": "-0.04", - "network_address": "m3-15.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "32.95", - "z": "-0.04", - "network_address": "m3-21.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "34.15", - "z": "-0.04", - "network_address": "m3-23.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "35.35", - "z": "-0.04", - "network_address": "m3-25.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "38.35", - "z": "-0.04", - "network_address": "m3-30.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "38.95", - "z": "-0.04", - "network_address": "m3-31.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "39.55", - "z": "-0.04", - "network_address": "m3-32.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "40.15", - "z": "-0.04", - "network_address": "m3-33.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "41.35", - "z": "-0.04", - "network_address": "m3-35.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "42.55", - "z": "-0.04", - "network_address": "m3-37.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "43.15", - "z": "-0.04", - "network_address": "m3-38.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "43.75", - "z": "-0.04", - "network_address": "m3-39.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "44.35", - "z": "-0.04", - "network_address": "m3-40.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "49.15", - "z": "-0.04", - "network_address": "m3-48.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "49.75", - "z": "-0.04", - "network_address": "m3-49.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "50.95", - "z": "-0.04", - "network_address": "m3-51.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "53.35", - "z": "-0.04", - "network_address": "m3-55.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "55.75", - "z": "-0.04", - "network_address": "m3-59.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "56.95", - "z": "-0.04", - "network_address": "m3-61.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "58.15", - "z": "-0.04", - "network_address": "m3-63.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "59.35", - "z": "-0.04", - "network_address": "m3-65.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "61.15", - "z": "-0.04", - "network_address": "m3-68.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "61.75", - "z": "-0.04", - "network_address": "m3-69.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "16.42", - "z": "-0.04", - "network_address": "m3-71.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "15.82", - "z": "-0.04", - "network_address": "m3-72.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "15.22", - "z": "-0.04", - "network_address": "m3-73.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "12.82", - "z": "-0.04", - "network_address": "m3-77.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "11.02", - "z": "-0.04", - "network_address": "m3-80.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "8.02", - "z": "-0.04", - "network_address": "m3-85.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "6.22", - "z": "-0.04", - "network_address": "m3-88.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "4.42", - "z": "-0.04", - "network_address": "m3-91.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "2.62", - "z": "-0.04", - "network_address": "m3-94.grenoble.iot-lab.info" - }, - { - "y": "24.63", - "x": "0.40", - "z": "-0.04", - "network_address": "m3-101.grenoble.iot-lab.info" - }, - { - "y": "24.63", - "x": "1.00", - "z": "-0.04", - "network_address": "m3-102.grenoble.iot-lab.info" - }, - { - "y": "23.43", - "x": "0.40", - "z": "-0.04", - "network_address": "m3-105.grenoble.iot-lab.info" - }, - { - "y": "23.43", - "x": "1.00", - "z": "-0.04", - "network_address": "m3-106.grenoble.iot-lab.info" - }, - { - "y": "22.23", - "x": "0.40", - "z": "-0.04", - "network_address": "m3-109.grenoble.iot-lab.info" - }, - { - "y": "21.03", - "x": "0.40", - "z": "-0.04", - "network_address": "m3-113.grenoble.iot-lab.info" - }, - { - "y": "21.03", - "x": "1.00", - "z": "-0.04", - "network_address": "m3-114.grenoble.iot-lab.info" - }, - { - "y": "20.43", - "x": "0.40", - "z": "-0.04", - "network_address": "m3-115.grenoble.iot-lab.info" - }, - { - "y": "20.43", - "x": "1.00", - "z": "-0.04", - "network_address": "m3-116.grenoble.iot-lab.info" - }, - { - "y": "19.83", - "x": "0.40", - "z": "-0.04", - "network_address": "m3-117.grenoble.iot-lab.info" - }, - { - "y": "19.83", - "x": "1.00", - "z": "-0.04", - "network_address": "m3-118.grenoble.iot-lab.info" - }, - { - "y": "18.63", - "x": "1.00", - "z": "-0.04", - "network_address": "m3-122.grenoble.iot-lab.info" - }, - { - "y": "18.03", - "x": "0.40", - "z": "-0.04", - "network_address": "m3-123.grenoble.iot-lab.info" - }, - { - "y": "17.43", - "x": "0.40", - "z": "-0.04", - "network_address": "m3-125.grenoble.iot-lab.info" - }, - { - "y": "16.23", - "x": "0.40", - "z": "-0.04", - "network_address": "m3-129.grenoble.iot-lab.info" - }, - { - "y": "16.23", - "x": "1.00", - "z": "-0.04", - "network_address": "m3-130.grenoble.iot-lab.info" - }, - { - "y": "15.63", - "x": "0.40", - "z": "-0.04", - "network_address": "m3-131.grenoble.iot-lab.info" - }, - { - "y": "15.63", - "x": "1.00", - "z": "-0.04", - "network_address": "m3-132.grenoble.iot-lab.info" - }, - { - "y": "15.03", - "x": "0.40", - "z": "-0.04", - "network_address": "m3-133.grenoble.iot-lab.info" - }, - { - "y": "14.43", - "x": "0.40", - "z": "-0.04", - "network_address": "m3-135.grenoble.iot-lab.info" - }, - { - "y": "14.43", - "x": "1.00", - "z": "-0.04", - "network_address": "m3-136.grenoble.iot-lab.info" - }, - { - "y": "13.23", - "x": "0.40", - "z": "-0.04", - "network_address": "m3-139.grenoble.iot-lab.info" - }, - { - "y": "13.23", - "x": "1.00", - "z": "-0.04", - "network_address": "m3-140.grenoble.iot-lab.info" - }, - { - "y": "12.63", - "x": "0.40", - "z": "-0.04", - "network_address": "m3-141.grenoble.iot-lab.info" - }, - { - "y": "12.63", - "x": "1.00", - "z": "-0.04", - "network_address": "m3-142.grenoble.iot-lab.info" - }, - { - "y": "11.43", - "x": "1.00", - "z": "-0.04", - "network_address": "m3-146.grenoble.iot-lab.info" - }, - { - "y": "10.83", - "x": "0.40", - "z": "-0.04", - "network_address": "m3-147.grenoble.iot-lab.info" - }, - { - "y": "10.83", - "x": "1.00", - "z": "-0.04", - "network_address": "m3-148.grenoble.iot-lab.info" - }, - { - "y": "10.23", - "x": "1.00", - "z": "-0.04", - "network_address": "m3-150.grenoble.iot-lab.info" - }, - { - "y": "9.63", - "x": "0.40", - "z": "-0.04", - "network_address": "m3-151.grenoble.iot-lab.info" - }, - { - "y": "9.63", - "x": "1.00", - "z": "-0.04", - "network_address": "m3-152.grenoble.iot-lab.info" - }, - { - "y": "8.43", - "x": "0.40", - "z": "-0.04", - "network_address": "m3-155.grenoble.iot-lab.info" - }, - { - "y": "7.83", - "x": "0.40", - "z": "-0.04", - "network_address": "m3-157.grenoble.iot-lab.info" - }, - { - "y": "7.83", - "x": "1.00", - "z": "-0.04", - "network_address": "m3-158.grenoble.iot-lab.info" - }, - { - "y": "7.23", - "x": "0.40", - "z": "-0.04", - "network_address": "m3-159.grenoble.iot-lab.info" - }, - { - "y": "7.23", - "x": "1.00", - "z": "-0.04", - "network_address": "m3-160.grenoble.iot-lab.info" - }, - { - "y": "6.63", - "x": "0.40", - "z": "-0.04", - "network_address": "m3-161.grenoble.iot-lab.info" - }, - { - "y": "6.63", - "x": "1.00", - "z": "-0.04", - "network_address": "m3-162.grenoble.iot-lab.info" - }, - { - "y": "4.83", - "x": "0.40", - "z": "-0.04", - "network_address": "m3-167.grenoble.iot-lab.info" - }, - { - "y": "4.23", - "x": "0.40", - "z": "-0.04", - "network_address": "m3-169.grenoble.iot-lab.info" - }, - { - "y": "3.63", - "x": "0.40", - "z": "-0.04", - "network_address": "m3-171.grenoble.iot-lab.info" - }, - { - "y": "3.03", - "x": "1.00", - "z": "-0.04", - "network_address": "m3-174.grenoble.iot-lab.info" - }, - { - "y": "2.43", - "x": "0.40", - "z": "-0.04", - "network_address": "m3-175.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "2.75", - "z": "-0.04", - "network_address": "m3-179.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "3.35", - "z": "-0.04", - "network_address": "m3-180.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "3.95", - "z": "-0.04", - "network_address": "m3-181.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "4.55", - "z": "-0.04", - "network_address": "m3-182.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "8.15", - "z": "-0.04", - "network_address": "m3-188.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "8.75", - "z": "-0.04", - "network_address": "m3-189.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "9.95", - "z": "-0.04", - "network_address": "m3-191.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "10.55", - "z": "-0.04", - "network_address": "m3-192.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "11.75", - "z": "-0.04", - "network_address": "m3-194.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "12.95", - "z": "-0.04", - "network_address": "m3-196.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "13.55", - "z": "-0.04", - "network_address": "m3-197.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "14.15", - "z": "-0.04", - "network_address": "m3-198.grenoble.iot-lab.info" - }, - { - "y": "0.75", - "x": "18.95", - "z": "-0.04", - "network_address": "m3-204.grenoble.iot-lab.info" - }, - { - "y": "1.83", - "x": "18.95", - "z": "-0.04", - "network_address": "m3-206.grenoble.iot-lab.info" - }, - { - "y": "2.43", - "x": "18.95", - "z": "-0.04", - "network_address": "m3-208.grenoble.iot-lab.info" - }, - { - "y": "3.03", - "x": "18.95", - "z": "-0.04", - "network_address": "m3-210.grenoble.iot-lab.info" - }, - { - "y": "3.63", - "x": "18.95", - "z": "-0.04", - "network_address": "m3-212.grenoble.iot-lab.info" - }, - { - "y": "3.63", - "x": "18.35", - "z": "-0.04", - "network_address": "m3-213.grenoble.iot-lab.info" - }, - { - "y": "4.23", - "x": "18.95", - "z": "-0.04", - "network_address": "m3-214.grenoble.iot-lab.info" - }, - { - "y": "4.83", - "x": "18.95", - "z": "-0.04", - "network_address": "m3-216.grenoble.iot-lab.info" - }, - { - "y": "5.43", - "x": "18.35", - "z": "-0.04", - "network_address": "m3-219.grenoble.iot-lab.info" - }, - { - "y": "6.03", - "x": "18.95", - "z": "-0.04", - "network_address": "m3-220.grenoble.iot-lab.info" - }, - { - "y": "6.63", - "x": "18.95", - "z": "-0.04", - "network_address": "m3-222.grenoble.iot-lab.info" - }, - { - "y": "7.83", - "x": "18.95", - "z": "-0.04", - "network_address": "m3-226.grenoble.iot-lab.info" - }, - { - "y": "7.83", - "x": "18.35", - "z": "-0.04", - "network_address": "m3-227.grenoble.iot-lab.info" - }, - { - "y": "9.03", - "x": "18.35", - "z": "-0.04", - "network_address": "m3-231.grenoble.iot-lab.info" - }, - { - "y": "9.63", - "x": "18.95", - "z": "-0.04", - "network_address": "m3-232.grenoble.iot-lab.info" - }, - { - "y": "10.23", - "x": "18.95", - "z": "-0.04", - "network_address": "m3-234.grenoble.iot-lab.info" - }, - { - "y": "10.23", - "x": "18.35", - "z": "-0.04", - "network_address": "m3-235.grenoble.iot-lab.info" - }, - { - "y": "10.83", - "x": "18.95", - "z": "-0.04", - "network_address": "m3-236.grenoble.iot-lab.info" - }, - { - "y": "10.83", - "x": "18.35", - "z": "-0.04", - "network_address": "m3-237.grenoble.iot-lab.info" - }, - { - "y": "11.43", - "x": "18.35", - "z": "-0.04", - "network_address": "m3-239.grenoble.iot-lab.info" - }, - { - "y": "12.03", - "x": "18.35", - "z": "-0.04", - "network_address": "m3-241.grenoble.iot-lab.info" - }, - { - "y": "12.63", - "x": "18.95", - "z": "-0.04", - "network_address": "m3-242.grenoble.iot-lab.info" - }, - { - "y": "13.23", - "x": "18.95", - "z": "-0.04", - "network_address": "m3-244.grenoble.iot-lab.info" - }, - { - "y": "13.23", - "x": "18.35", - "z": "-0.04", - "network_address": "m3-245.grenoble.iot-lab.info" - }, - { - "y": "13.83", - "x": "18.95", - "z": "-0.04", - "network_address": "m3-246.grenoble.iot-lab.info" - }, - { - "y": "14.43", - "x": "18.95", - "z": "-0.04", - "network_address": "m3-248.grenoble.iot-lab.info" - }, - { - "y": "15.63", - "x": "18.95", - "z": "-0.04", - "network_address": "m3-252.grenoble.iot-lab.info" - }, - { - "y": "15.63", - "x": "18.35", - "z": "-0.04", - "network_address": "m3-253.grenoble.iot-lab.info" - }, - { - "y": "16.23", - "x": "18.95", - "z": "-0.04", - "network_address": "m3-254.grenoble.iot-lab.info" - }, - { - "y": "16.83", - "x": "18.35", - "z": "-0.04", - "network_address": "m3-257.grenoble.iot-lab.info" - }, - { - "y": "17.43", - "x": "18.95", - "z": "-0.04", - "network_address": "m3-258.grenoble.iot-lab.info" - }, - { - "y": "18.03", - "x": "18.95", - "z": "-0.04", - "network_address": "m3-260.grenoble.iot-lab.info" - }, - { - "y": "18.63", - "x": "18.95", - "z": "-0.04", - "network_address": "m3-262.grenoble.iot-lab.info" - }, - { - "y": "18.63", - "x": "18.35", - "z": "-0.04", - "network_address": "m3-263.grenoble.iot-lab.info" - }, - { - "y": "19.23", - "x": "18.95", - "z": "-0.04", - "network_address": "m3-264.grenoble.iot-lab.info" - }, - { - "y": "19.23", - "x": "18.35", - "z": "-0.04", - "network_address": "m3-265.grenoble.iot-lab.info" - }, - { - "y": "19.83", - "x": "18.35", - "z": "-0.04", - "network_address": "m3-267.grenoble.iot-lab.info" - }, - { - "y": "21.03", - "x": "18.35", - "z": "-0.04", - "network_address": "m3-271.grenoble.iot-lab.info" - }, - { - "y": "21.63", - "x": "18.95", - "z": "-0.04", - "network_address": "m3-272.grenoble.iot-lab.info" - }, - { - "y": "21.63", - "x": "18.35", - "z": "-0.04", - "network_address": "m3-273.grenoble.iot-lab.info" - }, - { - "y": "23.43", - "x": "18.95", - "z": "-0.04", - "network_address": "m3-278.grenoble.iot-lab.info" - }, - { - "y": "24.03", - "x": "18.95", - "z": "-0.04", - "network_address": "m3-280.grenoble.iot-lab.info" - }, - { - "y": "24.63", - "x": "18.95", - "z": "-0.04", - "network_address": "m3-282.grenoble.iot-lab.info" - }, - { - "y": "25.23", - "x": "18.35", - "z": "-0.04", - "network_address": "m3-285.grenoble.iot-lab.info" - }, - { - "y": "26.52", - "x": "18.95", - "z": "-0.04", - "network_address": "m3-288.grenoble.iot-lab.info" - }, - { - "y": "26.52", - "x": "18.35", - "z": "-0.04", - "network_address": "m3-289.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "20.05", - "z": "-0.04", - "network_address": "m3-290.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "21.25", - "z": "-0.04", - "network_address": "m3-292.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "21.85", - "z": "-0.04", - "network_address": "m3-293.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "25.22", - "z": "-0.04", - "network_address": "m3-297.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "25.85", - "z": "-0.04", - "network_address": "m3-298.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "26.42", - "z": "-0.04", - "network_address": "m3-299.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "28.22", - "z": "-0.04", - "network_address": "m3-301.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "29.36", - "z": "-0.04", - "network_address": "m3-303.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "31.76", - "z": "-0.04", - "network_address": "m3-307.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "32.96", - "z": "-0.04", - "network_address": "m3-309.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "33.56", - "z": "-0.04", - "network_address": "m3-310.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "34.16", - "z": "-0.04", - "network_address": "m3-311.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "34.76", - "z": "-0.04", - "network_address": "m3-312.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "35.36", - "z": "-0.04", - "network_address": "m3-313.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "35.96", - "z": "-0.04", - "network_address": "m3-314.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "37.76", - "z": "-0.04", - "network_address": "m3-317.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "38.36", - "z": "-0.04", - "network_address": "m3-318.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "40.16", - "z": "-0.04", - "network_address": "m3-321.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "40.76", - "z": "-0.04", - "network_address": "m3-322.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "41.96", - "z": "-0.04", - "network_address": "m3-324.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "42.56", - "z": "-0.04", - "network_address": "m3-325.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "44.36", - "z": "-0.04", - "network_address": "m3-328.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "48.56", - "z": "-0.04", - "network_address": "m3-335.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "49.76", - "z": "-0.04", - "network_address": "m3-337.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "50.36", - "z": "-0.04", - "network_address": "m3-338.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "50.96", - "z": "-0.04", - "network_address": "m3-339.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "53.36", - "z": "-0.04", - "network_address": "m3-343.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "53.96", - "z": "-0.04", - "network_address": "m3-344.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "55.16", - "z": "-0.04", - "network_address": "m3-346.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "56.36", - "z": "-0.04", - "network_address": "m3-348.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "56.96", - "z": "-0.04", - "network_address": "m3-349.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "59.96", - "z": "-0.04", - "network_address": "m3-354.grenoble.iot-lab.info" - }, - { - "y": "25.75", - "x": "34.75", - "z": "3.23", - "network_address": "m3-359.grenoble.iot-lab.info" - }, - { - "y": "25.75", - "x": "35.35", - "z": "2.63", - "network_address": "m3-360.grenoble.iot-lab.info" - }, - { - "y": "24.92", - "x": "37.75", - "z": "2.63", - "network_address": "m3-363.grenoble.iot-lab.info" - }, - { - "y": "25.75", - "x": "39.55", - "z": "3.23", - "network_address": "m3-366.grenoble.iot-lab.info" - }, - { - "y": "25.75", - "x": "40.15", - "z": "3.23", - "network_address": "m3-367.grenoble.iot-lab.info" - }, - { - "y": "25.75", - "x": "40.75", - "z": "2.63", - "network_address": "m3-368.grenoble.iot-lab.info" - }, - { - "y": "25.75", - "x": "46.75", - "z": "2.63", - "network_address": "m3-371.grenoble.iot-lab.info" - }, - { - "y": "25.75", - "x": "48.55", - "z": "2.63", - "network_address": "m3-374.grenoble.iot-lab.info" - }, - { - "y": "25.75", - "x": "49.15", - "z": "3.23", - "network_address": "m3-375.grenoble.iot-lab.info" - }, - { - "y": "25.75", - "x": "52.15", - "z": "2.63", - "network_address": "m3-376.grenoble.iot-lab.info" - }, - { - "y": "25.75", - "x": "52.75", - "z": "2.63", - "network_address": "m3-377.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "20.10", - "z": "-0.04", - "network_address": "m3-1.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "21.30", - "z": "-0.04", - "network_address": "m3-3.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "23.10", - "z": "-0.04", - "network_address": "m3-6.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "24.55", - "z": "-0.04", - "network_address": "m3-7.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "25.15", - "z": "-0.04", - "network_address": "m3-8.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "26.35", - "z": "-0.04", - "network_address": "m3-10.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "27.55", - "z": "-0.04", - "network_address": "m3-12.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "29.95", - "z": "-0.04", - "network_address": "m3-16.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "31.75", - "z": "-0.04", - "network_address": "m3-19.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "32.35", - "z": "-0.04", - "network_address": "m3-20.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "33.55", - "z": "-0.04", - "network_address": "m3-22.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "34.75", - "z": "-0.04", - "network_address": "m3-24.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "35.95", - "z": "-0.04", - "network_address": "m3-26.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "36.55", - "z": "-0.04", - "network_address": "m3-27.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "37.15", - "z": "-0.04", - "network_address": "m3-28.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "40.75", - "z": "-0.04", - "network_address": "m3-34.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "41.95", - "z": "-0.04", - "network_address": "m3-36.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "44.95", - "z": "-0.04", - "network_address": "m3-41.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "45.55", - "z": "-0.04", - "network_address": "m3-42.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "46.15", - "z": "-0.04", - "network_address": "m3-43.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "47.95", - "z": "-0.04", - "network_address": "m3-46.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "48.55", - "z": "-0.04", - "network_address": "m3-47.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "50.35", - "z": "-0.04", - "network_address": "m3-50.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "51.55", - "z": "-0.04", - "network_address": "m3-52.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "52.15", - "z": "-0.04", - "network_address": "m3-53.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "53.95", - "z": "-0.04", - "network_address": "m3-56.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "54.55", - "z": "-0.04", - "network_address": "m3-57.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "55.15", - "z": "-0.04", - "network_address": "m3-58.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "56.35", - "z": "-0.04", - "network_address": "m3-60.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "57.55", - "z": "-0.04", - "network_address": "m3-62.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "58.75", - "z": "-0.04", - "network_address": "m3-64.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "59.95", - "z": "-0.04", - "network_address": "m3-66.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "60.55", - "z": "-0.04", - "network_address": "m3-67.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "17.02", - "z": "-0.04", - "network_address": "m3-70.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "14.62", - "z": "-0.04", - "network_address": "m3-74.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "14.02", - "z": "-0.04", - "network_address": "m3-75.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "13.42", - "z": "-0.04", - "network_address": "m3-76.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "12.22", - "z": "-0.04", - "network_address": "m3-78.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "11.62", - "z": "-0.04", - "network_address": "m3-79.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "9.22", - "z": "-0.04", - "network_address": "m3-83.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "7.42", - "z": "-0.04", - "network_address": "m3-86.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "6.82", - "z": "-0.04", - "network_address": "m3-87.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "5.62", - "z": "-0.04", - "network_address": "m3-89.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "5.02", - "z": "-0.04", - "network_address": "m3-90.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "3.82", - "z": "-0.04", - "network_address": "m3-92.grenoble.iot-lab.info" - }, - { - "y": "26.76", - "x": "3.22", - "z": "-0.04", - "network_address": "m3-93.grenoble.iot-lab.info" - }, - { - "y": "26.52", - "x": "0.40", - "z": "-0.04", - "network_address": "m3-95.grenoble.iot-lab.info" - }, - { - "y": "26.52", - "x": "1.00", - "z": "-0.04", - "network_address": "m3-96.grenoble.iot-lab.info" - }, - { - "y": "25.92", - "x": "0.40", - "z": "-0.04", - "network_address": "m3-97.grenoble.iot-lab.info" - }, - { - "y": "25.92", - "x": "1.00", - "z": "-0.04", - "network_address": "m3-98.grenoble.iot-lab.info" - }, - { - "y": "25.23", - "x": "0.40", - "z": "-0.04", - "network_address": "m3-99.grenoble.iot-lab.info" - }, - { - "y": "25.23", - "x": "1.00", - "z": "-0.04", - "network_address": "m3-100.grenoble.iot-lab.info" - }, - { - "y": "24.03", - "x": "0.40", - "z": "-0.04", - "network_address": "m3-103.grenoble.iot-lab.info" - }, - { - "y": "24.03", - "x": "1.00", - "z": "-0.04", - "network_address": "m3-104.grenoble.iot-lab.info" - }, - { - "y": "22.83", - "x": "0.40", - "z": "-0.04", - "network_address": "m3-107.grenoble.iot-lab.info" - }, - { - "y": "22.83", - "x": "1.00", - "z": "-0.04", - "network_address": "m3-108.grenoble.iot-lab.info" - }, - { - "y": "22.23", - "x": "1.00", - "z": "-0.04", - "network_address": "m3-110.grenoble.iot-lab.info" - }, - { - "y": "21.63", - "x": "1.00", - "z": "-0.04", - "network_address": "m3-112.grenoble.iot-lab.info" - }, - { - "y": "19.23", - "x": "0.40", - "z": "-0.04", - "network_address": "m3-119.grenoble.iot-lab.info" - }, - { - "y": "19.23", - "x": "1.00", - "z": "-0.04", - "network_address": "m3-120.grenoble.iot-lab.info" - }, - { - "y": "18.63", - "x": "0.40", - "z": "-0.04", - "network_address": "m3-121.grenoble.iot-lab.info" - }, - { - "y": "17.43", - "x": "1.00", - "z": "-0.04", - "network_address": "m3-126.grenoble.iot-lab.info" - }, - { - "y": "16.83", - "x": "0.40", - "z": "-0.04", - "network_address": "m3-127.grenoble.iot-lab.info" - }, - { - "y": "16.83", - "x": "1.00", - "z": "-0.04", - "network_address": "m3-128.grenoble.iot-lab.info" - }, - { - "y": "13.83", - "x": "0.40", - "z": "-0.04", - "network_address": "m3-137.grenoble.iot-lab.info" - }, - { - "y": "12.03", - "x": "1.00", - "z": "-0.04", - "network_address": "m3-144.grenoble.iot-lab.info" - }, - { - "y": "11.43", - "x": "0.40", - "z": "-0.04", - "network_address": "m3-145.grenoble.iot-lab.info" - }, - { - "y": "10.23", - "x": "0.40", - "z": "-0.04", - "network_address": "m3-149.grenoble.iot-lab.info" - }, - { - "y": "9.03", - "x": "0.40", - "z": "-0.04", - "network_address": "m3-153.grenoble.iot-lab.info" - }, - { - "y": "9.03", - "x": "1.00", - "z": "-0.04", - "network_address": "m3-154.grenoble.iot-lab.info" - }, - { - "y": "8.43", - "x": "1.00", - "z": "-0.04", - "network_address": "m3-156.grenoble.iot-lab.info" - }, - { - "y": "6.03", - "x": "0.40", - "z": "-0.04", - "network_address": "m3-163.grenoble.iot-lab.info" - }, - { - "y": "6.03", - "x": "1.00", - "z": "-0.04", - "network_address": "m3-164.grenoble.iot-lab.info" - }, - { - "y": "5.43", - "x": "1.00", - "z": "-0.04", - "network_address": "m3-166.grenoble.iot-lab.info" - }, - { - "y": "4.83", - "x": "1.00", - "z": "-0.04", - "network_address": "m3-168.grenoble.iot-lab.info" - }, - { - "y": "4.23", - "x": "1.00", - "z": "-0.04", - "network_address": "m3-170.grenoble.iot-lab.info" - }, - { - "y": "3.63", - "x": "1.00", - "z": "-0.04", - "network_address": "m3-172.grenoble.iot-lab.info" - }, - { - "y": "3.03", - "x": "0.40", - "z": "-0.04", - "network_address": "m3-173.grenoble.iot-lab.info" - }, - { - "y": "2.43", - "x": "1.00", - "z": "-0.04", - "network_address": "m3-176.grenoble.iot-lab.info" - }, - { - "y": "1.85", - "x": "0.40", - "z": "-0.04", - "network_address": "m3-177.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "5.75", - "z": "-0.04", - "network_address": "m3-184.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "6.95", - "z": "-0.04", - "network_address": "m3-186.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "9.35", - "z": "-0.04", - "network_address": "m3-190.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "11.15", - "z": "-0.04", - "network_address": "m3-193.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "12.35", - "z": "-0.04", - "network_address": "m3-195.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "14.75", - "z": "-0.04", - "network_address": "m3-199.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "15.35", - "z": "-0.04", - "network_address": "m3-200.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "15.95", - "z": "-0.04", - "network_address": "m3-201.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "16.55", - "z": "-0.04", - "network_address": "m3-202.grenoble.iot-lab.info" - }, - { - "y": "1.83", - "x": "18.35", - "z": "-0.04", - "network_address": "m3-207.grenoble.iot-lab.info" - }, - { - "y": "2.43", - "x": "18.35", - "z": "-0.04", - "network_address": "m3-209.grenoble.iot-lab.info" - }, - { - "y": "3.03", - "x": "18.35", - "z": "-0.04", - "network_address": "m3-211.grenoble.iot-lab.info" - }, - { - "y": "4.23", - "x": "18.35", - "z": "-0.04", - "network_address": "m3-215.grenoble.iot-lab.info" - }, - { - "y": "4.83", - "x": "18.35", - "z": "-0.04", - "network_address": "m3-217.grenoble.iot-lab.info" - }, - { - "y": "5.43", - "x": "18.95", - "z": "-0.04", - "network_address": "m3-218.grenoble.iot-lab.info" - }, - { - "y": "6.03", - "x": "18.35", - "z": "-0.04", - "network_address": "m3-221.grenoble.iot-lab.info" - }, - { - "y": "6.63", - "x": "18.35", - "z": "-0.04", - "network_address": "m3-223.grenoble.iot-lab.info" - }, - { - "y": "7.23", - "x": "18.95", - "z": "-0.04", - "network_address": "m3-224.grenoble.iot-lab.info" - }, - { - "y": "7.23", - "x": "18.35", - "z": "-0.04", - "network_address": "m3-225.grenoble.iot-lab.info" - }, - { - "y": "8.43", - "x": "18.95", - "z": "-0.04", - "network_address": "m3-228.grenoble.iot-lab.info" - }, - { - "y": "8.43", - "x": "18.35", - "z": "-0.04", - "network_address": "m3-229.grenoble.iot-lab.info" - }, - { - "y": "9.03", - "x": "18.95", - "z": "-0.04", - "network_address": "m3-230.grenoble.iot-lab.info" - }, - { - "y": "9.63", - "x": "18.35", - "z": "-0.04", - "network_address": "m3-233.grenoble.iot-lab.info" - }, - { - "y": "11.43", - "x": "18.95", - "z": "-0.04", - "network_address": "m3-238.grenoble.iot-lab.info" - }, - { - "y": "12.03", - "x": "18.95", - "z": "-0.04", - "network_address": "m3-240.grenoble.iot-lab.info" - }, - { - "y": "13.83", - "x": "18.35", - "z": "-0.04", - "network_address": "m3-247.grenoble.iot-lab.info" - }, - { - "y": "14.43", - "x": "18.35", - "z": "-0.04", - "network_address": "m3-249.grenoble.iot-lab.info" - }, - { - "y": "15.03", - "x": "18.95", - "z": "-0.04", - "network_address": "m3-250.grenoble.iot-lab.info" - }, - { - "y": "15.03", - "x": "18.35", - "z": "-0.04", - "network_address": "m3-251.grenoble.iot-lab.info" - }, - { - "y": "16.83", - "x": "18.95", - "z": "-0.04", - "network_address": "m3-256.grenoble.iot-lab.info" - }, - { - "y": "17.43", - "x": "18.35", - "z": "-0.04", - "network_address": "m3-259.grenoble.iot-lab.info" - }, - { - "y": "18.03", - "x": "18.35", - "z": "-0.04", - "network_address": "m3-261.grenoble.iot-lab.info" - }, - { - "y": "19.83", - "x": "18.95", - "z": "-0.04", - "network_address": "m3-266.grenoble.iot-lab.info" - }, - { - "y": "20.43", - "x": "18.95", - "z": "-0.04", - "network_address": "m3-268.grenoble.iot-lab.info" - }, - { - "y": "20.43", - "x": "18.35", - "z": "-0.04", - "network_address": "m3-269.grenoble.iot-lab.info" - }, - { - "y": "22.23", - "x": "18.95", - "z": "-0.04", - "network_address": "m3-274.grenoble.iot-lab.info" - }, - { - "y": "22.23", - "x": "18.35", - "z": "-0.04", - "network_address": "m3-275.grenoble.iot-lab.info" - }, - { - "y": "22.83", - "x": "18.95", - "z": "-0.04", - "network_address": "m3-276.grenoble.iot-lab.info" - }, - { - "y": "22.83", - "x": "18.35", - "z": "-0.04", - "network_address": "m3-277.grenoble.iot-lab.info" - }, - { - "y": "23.43", - "x": "18.35", - "z": "-0.04", - "network_address": "m3-279.grenoble.iot-lab.info" - }, - { - "y": "24.03", - "x": "18.35", - "z": "-0.04", - "network_address": "m3-281.grenoble.iot-lab.info" - }, - { - "y": "24.63", - "x": "18.35", - "z": "-0.04", - "network_address": "m3-283.grenoble.iot-lab.info" - }, - { - "y": "26.00", - "x": "18.95", - "z": "-0.04", - "network_address": "m3-286.grenoble.iot-lab.info" - }, - { - "y": "26.00", - "x": "18.35", - "z": "-0.04", - "network_address": "m3-287.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "20.65", - "z": "-0.04", - "network_address": "m3-291.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "22.45", - "z": "-0.04", - "network_address": "m3-294.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "23.05", - "z": "-0.04", - "network_address": "m3-295.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "24.62", - "z": "-0.04", - "network_address": "m3-296.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "28.71", - "z": "-0.04", - "network_address": "m3-302.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "29.96", - "z": "-0.04", - "network_address": "m3-304.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "30.56", - "z": "-0.04", - "network_address": "m3-305.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "31.16", - "z": "-0.04", - "network_address": "m3-306.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "32.36", - "z": "-0.04", - "network_address": "m3-308.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "36.56", - "z": "-0.04", - "network_address": "m3-315.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "37.16", - "z": "-0.04", - "network_address": "m3-316.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "39.56", - "z": "-0.04", - "network_address": "m3-320.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "41.36", - "z": "-0.04", - "network_address": "m3-323.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "43.16", - "z": "-0.04", - "network_address": "m3-326.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "43.76", - "z": "-0.04", - "network_address": "m3-327.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "44.96", - "z": "-0.04", - "network_address": "m3-329.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "45.56", - "z": "-0.04", - "network_address": "m3-330.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "46.76", - "z": "-0.04", - "network_address": "m3-332.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "47.36", - "z": "-0.04", - "network_address": "m3-333.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "47.96", - "z": "-0.04", - "network_address": "m3-334.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "49.16", - "z": "-0.04", - "network_address": "m3-336.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "51.56", - "z": "-0.04", - "network_address": "m3-340.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "52.16", - "z": "-0.04", - "network_address": "m3-341.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "52.76", - "z": "-0.04", - "network_address": "m3-342.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "54.56", - "z": "-0.04", - "network_address": "m3-345.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "55.76", - "z": "-0.04", - "network_address": "m3-347.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "57.56", - "z": "-0.04", - "network_address": "m3-350.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "58.76", - "z": "-0.04", - "network_address": "m3-352.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "59.36", - "z": "-0.04", - "network_address": "m3-353.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "60.56", - "z": "-0.04", - "network_address": "m3-355.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "61.16", - "z": "-0.04", - "network_address": "m3-356.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "61.76", - "z": "-0.04", - "network_address": "m3-357.grenoble.iot-lab.info" - }, - { - "y": "0.94", - "x": "62.26", - "z": "-0.04", - "network_address": "m3-358.grenoble.iot-lab.info" - }, - { - "y": "25.75", - "x": "35.95", - "z": "3.23", - "network_address": "m3-361.grenoble.iot-lab.info" - }, - { - "y": "25.75", - "x": "36.55", - "z": "3.23", - "network_address": "m3-362.grenoble.iot-lab.info" - }, - { - "y": "24.92", - "x": "37.75", - "z": "3.23", - "network_address": "m3-364.grenoble.iot-lab.info" - }, - { - "y": "25.75", - "x": "38.95", - "z": "2.63", - "network_address": "m3-365.grenoble.iot-lab.info" - }, - { - "y": "25.75", - "x": "41.35", - "z": "2.63", - "network_address": "m3-369.grenoble.iot-lab.info" - }, - { - "y": "25.75", - "x": "46.15", - "z": "2.63", - "network_address": "m3-370.grenoble.iot-lab.info" - }, - { - "y": "25.75", - "x": "47.35", - "z": "3.23", - "network_address": "m3-372.grenoble.iot-lab.info" - }, - { - "y": "25.75", - "x": "47.95", - "z": "2.63", - "network_address": "m3-373.grenoble.iot-lab.info" - }, - { - "y": "25.28", - "x": "20.33", - "z": "2.63", - "network_address": "a8-1.grenoble.iot-lab.info" - }, - { - "y": "25.28", - "x": "20.33", - "z": "3.23", - "network_address": "a8-2.grenoble.iot-lab.info" - }, - { - "y": "25.28", - "x": "20.93", - "z": "3.23", - "network_address": "a8-3.grenoble.iot-lab.info" - }, - { - "y": "25.33", - "x": "21.53", - "z": "2.63", - "network_address": "a8-4.grenoble.iot-lab.info" - }, - { - "y": "25.33", - "x": "21.53", - "z": "3.23", - "network_address": "a8-5.grenoble.iot-lab.info" - }, - { - "y": "25.33", - "x": "22.13", - "z": "2.63", - "network_address": "a8-6.grenoble.iot-lab.info" - }, - { - "y": "25.33", - "x": "22.13", - "z": "3.23", - "network_address": "a8-7.grenoble.iot-lab.info" - }, - { - "y": "25.33", - "x": "22.73", - "z": "2.63", - "network_address": "a8-8.grenoble.iot-lab.info" - }, - { - "y": "25.33", - "x": "23.33", - "z": "2.63", - "network_address": "a8-9.grenoble.iot-lab.info" - }, - { - "y": "25.33", - "x": "23.33", - "z": "3.23", - "network_address": "a8-10.grenoble.iot-lab.info" - }, - { - "y": "25.80", - "x": "23.93", - "z": "3.23", - "network_address": "a8-12.grenoble.iot-lab.info" - }, - { - "y": "25.75", - "x": "24.53", - "z": "3.23", - "network_address": "a8-13.grenoble.iot-lab.info" - }, - { - "y": "25.75", - "x": "25.13", - "z": "2.63", - "network_address": "a8-14.grenoble.iot-lab.info" - }, - { - "y": "25.75", - "x": "25.73", - "z": "3.23", - "network_address": "a8-15.grenoble.iot-lab.info" - }, - { - "y": "25.75", - "x": "26.33", - "z": "2.63", - "network_address": "a8-16.grenoble.iot-lab.info" - }, - { - "y": "25.75", - "x": "26.93", - "z": "2.63", - "network_address": "a8-17.grenoble.iot-lab.info" - }, - { - "y": "25.75", - "x": "27.55", - "z": "3.23", - "network_address": "a8-18.grenoble.iot-lab.info" - }, - { - "y": "25.75", - "x": "28.15", - "z": "2.63", - "network_address": "a8-19.grenoble.iot-lab.info" - }, - { - "y": "25.75", - "x": "28.75", - "z": "3.23", - "network_address": "a8-20.grenoble.iot-lab.info" - }, - { - "y": "25.75", - "x": "29.35", - "z": "3.23", - "network_address": "a8-21.grenoble.iot-lab.info" - }, - { - "y": "25.75", - "x": "29.95", - "z": "2.63", - "network_address": "a8-22.grenoble.iot-lab.info" - }, - { - "y": "25.75", - "x": "30.55", - "z": "3.23", - "network_address": "a8-23.grenoble.iot-lab.info" - }, - { - "y": "25.75", - "x": "31.15", - "z": "3.23", - "network_address": "a8-24.grenoble.iot-lab.info" - }, - { - "y": "25.75", - "x": "31.75", - "z": "2.63", - "network_address": "a8-25.grenoble.iot-lab.info" - }, - { - "y": "25.75", - "x": "32.35", - "z": "2.63", - "network_address": "a8-26.grenoble.iot-lab.info" - }, - { - "y": "25.75", - "x": "32.95", - "z": "3.23", - "network_address": "a8-28.grenoble.iot-lab.info" - }, - { - "y": "25.75", - "x": "33.55", - "z": "2.63", - "network_address": "a8-29.grenoble.iot-lab.info" - }, - { - "y": "25.75", - "x": "34.15", - "z": "2.63", - "network_address": "a8-30.grenoble.iot-lab.info" - }, - { - "y": "24.92", - "x": "38.35", - "z": "2.63", - "network_address": "a8-31.grenoble.iot-lab.info" - }, - { - "y": "24.92", - "x": "38.35", - "z": "3.23", - "network_address": "a8-32.grenoble.iot-lab.info" - }, - { - "y": "25.75", - "x": "41.95", - "z": "3.23", - "network_address": "a8-33.grenoble.iot-lab.info" - }, - { - "y": "25.75", - "x": "41.95", - "z": "2.63", - "network_address": "a8-34.grenoble.iot-lab.info" - }, - { - "y": "25.75", - "x": "43.15", - "z": "3.23", - "network_address": "a8-35.grenoble.iot-lab.info" - }, - { - "y": "25.75", - "x": "43.15", - "z": "2.63", - "network_address": "a8-36.grenoble.iot-lab.info" - }, - { - "y": "25.75", - "x": "44.35", - "z": "3.23", - "network_address": "a8-37.grenoble.iot-lab.info" - }, - { - "y": "25.75", - "x": "44.95", - "z": "3.23", - "network_address": "a8-38.grenoble.iot-lab.info" - }, - { - "y": "25.75", - "x": "44.95", - "z": "2.63", - "network_address": "a8-39.grenoble.iot-lab.info" - }, - { - "y": "25.75", - "x": "46.15", - "z": "3.23", - "network_address": "a8-40.grenoble.iot-lab.info" - }, - { - "y": "24.90", - "x": "49.75", - "z": "3.23", - "network_address": "a8-41.grenoble.iot-lab.info" - }, - { - "y": "24.90", - "x": "50.35", - "z": "2.63", - "network_address": "a8-42.grenoble.iot-lab.info" - }, - { - "y": "24.90", - "x": "50.95", - "z": "3.23", - "network_address": "a8-43.grenoble.iot-lab.info" - }, - { - "y": "25.75", - "x": "51.55", - "z": "3.23", - "network_address": "a8-44.grenoble.iot-lab.info" - }, - { - "y": "25.75", - "x": "55.15", - "z": "3.23", - "network_address": "a8-45.grenoble.iot-lab.info" - }, - { - "y": "25.75", - "x": "55.75", - "z": "2.63", - "network_address": "a8-46.grenoble.iot-lab.info" - }, - { - "y": "25.75", - "x": "56.35", - "z": "2.63", - "network_address": "a8-47.grenoble.iot-lab.info" - }, - { - "y": "25.75", - "x": "56.95", - "z": "3.23", - "network_address": "a8-48.grenoble.iot-lab.info" - }, - { - "y": "25.75", - "x": "57.55", - "z": "2.63", - "network_address": "a8-49.grenoble.iot-lab.info" - }, - { - "y": "24.90", - "x": "58.15", - "z": "3.23", - "network_address": "a8-50.grenoble.iot-lab.info" - }, - { - "y": "24.90", - "x": "58.75", - "z": "2.63", - "network_address": "a8-51.grenoble.iot-lab.info" - }, - { - "y": "24.90", - "x": "59.35", - "z": "3.23", - "network_address": "a8-52.grenoble.iot-lab.info" - }, - { - "y": "25.75", - "x": "59.95", - "z": "2.63", - "network_address": "a8-53.grenoble.iot-lab.info" - }, - { - "y": "25.75", - "x": "59.95", - "z": "3.23", - "network_address": "a8-54.grenoble.iot-lab.info" - }, - { - "y": "25.75", - "x": "60.55", - "z": "3.23", - "network_address": "a8-55.grenoble.iot-lab.info" - }, - { - "y": "25.75", - "x": "61.75", - "z": "2.63", - "network_address": "a8-57.grenoble.iot-lab.info" - }, - { - "y": "25.75", - "x": "62.35", - "z": "3.23", - "network_address": "a8-58.grenoble.iot-lab.info" - }, - { - "y": "25.73", - "x": "15.47", - "z": "2.63", - "network_address": "a8-59.grenoble.iot-lab.info" - }, - { - "y": "25.73", - "x": "14.87", - "z": "2.63", - "network_address": "a8-60.grenoble.iot-lab.info" - }, - { - "y": "25.73", - "x": "14.27", - "z": "2.63", - "network_address": "a8-61.grenoble.iot-lab.info" - }, - { - "y": "25.73", - "x": "13.07", - "z": "2.63", - "network_address": "a8-63.grenoble.iot-lab.info" - }, - { - "y": "25.73", - "x": "12.47", - "z": "2.63", - "network_address": "a8-64.grenoble.iot-lab.info" - }, - { - "y": "25.73", - "x": "11.87", - "z": "2.63", - "network_address": "a8-65.grenoble.iot-lab.info" - }, - { - "y": "25.73", - "x": "11.27", - "z": "2.63", - "network_address": "a8-66.grenoble.iot-lab.info" - }, - { - "y": "25.73", - "x": "10.67", - "z": "2.63", - "network_address": "a8-67.grenoble.iot-lab.info" - }, - { - "y": "25.73", - "x": "10.07", - "z": "2.63", - "network_address": "a8-68.grenoble.iot-lab.info" - }, - { - "y": "25.73", - "x": "9.47", - "z": "2.63", - "network_address": "a8-69.grenoble.iot-lab.info" - }, - { - "y": "25.73", - "x": "8.87", - "z": "2.63", - "network_address": "a8-70.grenoble.iot-lab.info" - }, - { - "y": "25.73", - "x": "8.27", - "z": "2.63", - "network_address": "a8-71.grenoble.iot-lab.info" - }, - { - "y": "25.73", - "x": "7.67", - "z": "2.63", - "network_address": "a8-72.grenoble.iot-lab.info" - }, - { - "y": "25.73", - "x": "7.07", - "z": "2.63", - "network_address": "a8-73.grenoble.iot-lab.info" - }, - { - "y": "25.73", - "x": "6.47", - "z": "2.63", - "network_address": "a8-74.grenoble.iot-lab.info" - }, - { - "y": "25.73", - "x": "5.87", - "z": "2.63", - "network_address": "a8-75.grenoble.iot-lab.info" - }, - { - "y": "25.73", - "x": "5.27", - "z": "2.63", - "network_address": "a8-76.grenoble.iot-lab.info" - }, - { - "y": "25.73", - "x": "4.57", - "z": "2.63", - "network_address": "a8-77.grenoble.iot-lab.info" - }, - { - "y": "0.04", - "x": "5.50", - "z": "2.63", - "network_address": "a8-78.grenoble.iot-lab.info" - }, - { - "y": "0.04", - "x": "6.10", - "z": "2.63", - "network_address": "a8-79.grenoble.iot-lab.info" - }, - { - "y": "0.04", - "x": "6.70", - "z": "2.63", - "network_address": "a8-80.grenoble.iot-lab.info" - }, - { - "y": "0.04", - "x": "7.30", - "z": "2.63", - "network_address": "a8-81.grenoble.iot-lab.info" - }, - { - "y": "0.04", - "x": "7.90", - "z": "2.63", - "network_address": "a8-82.grenoble.iot-lab.info" - }, - { - "y": "0.04", - "x": "8.50", - "z": "2.63", - "network_address": "a8-83.grenoble.iot-lab.info" - }, - { - "y": "0.04", - "x": "9.10", - "z": "2.63", - "network_address": "a8-84.grenoble.iot-lab.info" - }, - { - "y": "0.04", - "x": "9.70", - "z": "2.63", - "network_address": "a8-85.grenoble.iot-lab.info" - }, - { - "y": "0.04", - "x": "10.30", - "z": "2.63", - "network_address": "a8-86.grenoble.iot-lab.info" - }, - { - "y": "0.04", - "x": "10.90", - "z": "2.63", - "network_address": "a8-87.grenoble.iot-lab.info" - }, - { - "y": "0.04", - "x": "11.50", - "z": "2.63", - "network_address": "a8-88.grenoble.iot-lab.info" - }, - { - "y": "0.04", - "x": "12.10", - "z": "2.63", - "network_address": "a8-89.grenoble.iot-lab.info" - }, - { - "y": "0.04", - "x": "12.70", - "z": "2.63", - "network_address": "a8-90.grenoble.iot-lab.info" - }, - { - "y": "0.04", - "x": "13.30", - "z": "2.63", - "network_address": "a8-91.grenoble.iot-lab.info" - }, - { - "y": "0.04", - "x": "13.90", - "z": "2.63", - "network_address": "a8-92.grenoble.iot-lab.info" - }, - { - "y": "0.04", - "x": "14.50", - "z": "2.63", - "network_address": "a8-93.grenoble.iot-lab.info" - }, - { - "y": "0.04", - "x": "15.10", - "z": "2.63", - "network_address": "a8-94.grenoble.iot-lab.info" - }, - { - "y": "2.10", - "x": "19.75", - "z": "2.63", - "network_address": "a8-95.grenoble.iot-lab.info" - }, - { - "y": "2.10", - "x": "19.75", - "z": "3.23", - "network_address": "a8-96.grenoble.iot-lab.info" - }, - { - "y": "2.70", - "x": "19.75", - "z": "2.63", - "network_address": "a8-97.grenoble.iot-lab.info" - }, - { - "y": "2.70", - "x": "19.75", - "z": "3.23", - "network_address": "a8-98.grenoble.iot-lab.info" - }, - { - "y": "3.30", - "x": "19.75", - "z": "3.23", - "network_address": "a8-99.grenoble.iot-lab.info" - }, - { - "y": "3.90", - "x": "19.75", - "z": "2.63", - "network_address": "a8-100.grenoble.iot-lab.info" - }, - { - "y": "4.50", - "x": "19.75", - "z": "2.63", - "network_address": "a8-101.grenoble.iot-lab.info" - }, - { - "y": "4.50", - "x": "19.75", - "z": "3.23", - "network_address": "a8-102.grenoble.iot-lab.info" - }, - { - "y": "5.10", - "x": "19.75", - "z": "2.63", - "network_address": "a8-103.grenoble.iot-lab.info" - }, - { - "y": "5.70", - "x": "19.75", - "z": "3.23", - "network_address": "a8-105.grenoble.iot-lab.info" - }, - { - "y": "6.30", - "x": "19.75", - "z": "2.63", - "network_address": "a8-106.grenoble.iot-lab.info" - }, - { - "y": "6.30", - "x": "19.75", - "z": "3.23", - "network_address": "a8-107.grenoble.iot-lab.info" - }, - { - "y": "6.90", - "x": "19.75", - "z": "2.63", - "network_address": "a8-108.grenoble.iot-lab.info" - }, - { - "y": "7.50", - "x": "19.75", - "z": "3.23", - "network_address": "a8-109.grenoble.iot-lab.info" - }, - { - "y": "8.70", - "x": "20.45", - "z": "2.63", - "network_address": "a8-111.grenoble.iot-lab.info" - }, - { - "y": "8.70", - "x": "20.45", - "z": "3.23", - "network_address": "a8-112.grenoble.iot-lab.info" - }, - { - "y": "9.30", - "x": "20.45", - "z": "3.23", - "network_address": "a8-113.grenoble.iot-lab.info" - }, - { - "y": "9.90", - "x": "20.45", - "z": "2.63", - "network_address": "a8-114.grenoble.iot-lab.info" - }, - { - "y": "10.50", - "x": "20.45", - "z": "3.23", - "network_address": "a8-115.grenoble.iot-lab.info" - }, - { - "y": "11.10", - "x": "19.75", - "z": "2.63", - "network_address": "a8-116.grenoble.iot-lab.info" - }, - { - "y": "11.70", - "x": "19.75", - "z": "2.63", - "network_address": "a8-117.grenoble.iot-lab.info" - }, - { - "y": "11.70", - "x": "19.75", - "z": "3.23", - "network_address": "a8-118.grenoble.iot-lab.info" - }, - { - "y": "12.30", - "x": "19.75", - "z": "2.63", - "network_address": "a8-119.grenoble.iot-lab.info" - }, - { - "y": "12.90", - "x": "19.75", - "z": "3.23", - "network_address": "a8-120.grenoble.iot-lab.info" - }, - { - "y": "13.50", - "x": "19.75", - "z": "2.63", - "network_address": "a8-121.grenoble.iot-lab.info" - }, - { - "y": "13.50", - "x": "19.75", - "z": "3.23", - "network_address": "a8-122.grenoble.iot-lab.info" - }, - { - "y": "14.10", - "x": "19.75", - "z": "2.63", - "network_address": "a8-123.grenoble.iot-lab.info" - }, - { - "y": "14.70", - "x": "19.75", - "z": "2.63", - "network_address": "a8-124.grenoble.iot-lab.info" - }, - { - "y": "15.90", - "x": "19.75", - "z": "3.23", - "network_address": "a8-127.grenoble.iot-lab.info" - }, - { - "y": "16.50", - "x": "19.75", - "z": "3.23", - "network_address": "a8-128.grenoble.iot-lab.info" - }, - { - "y": "18.90", - "x": "19.75", - "z": "2.63", - "network_address": "a8-133.grenoble.iot-lab.info" - }, - { - "y": "21.80", - "x": "19.91", - "z": "3.23", - "network_address": "a8-140.grenoble.iot-lab.info" - }, - { - "y": "22.40", - "x": "19.91", - "z": "2.63", - "network_address": "a8-141.grenoble.iot-lab.info" - }, - { - "y": "24.20", - "x": "19.91", - "z": "3.23", - "network_address": "a8-145.grenoble.iot-lab.info" - }, - { - "y": "24.20", - "x": "19.91", - "z": "2.63", - "network_address": "a8-146.grenoble.iot-lab.info" - }, - { - "y": "1.54", - "x": "20.09", - "z": "2.63", - "network_address": "a8-149.grenoble.iot-lab.info" - }, - { - "y": "1.54", - "x": "20.09", - "z": "3.23", - "network_address": "a8-150.grenoble.iot-lab.info" - }, - { - "y": "1.54", - "x": "20.69", - "z": "2.63", - "network_address": "a8-151.grenoble.iot-lab.info" - }, - { - "y": "1.54", - "x": "21.29", - "z": "2.63", - "network_address": "a8-152.grenoble.iot-lab.info" - }, - { - "y": "1.54", - "x": "21.29", - "z": "3.23", - "network_address": "a8-153.grenoble.iot-lab.info" - }, - { - "y": "1.54", - "x": "21.89", - "z": "2.63", - "network_address": "a8-154.grenoble.iot-lab.info" - }, - { - "y": "1.54", - "x": "23.09", - "z": "2.63", - "network_address": "a8-156.grenoble.iot-lab.info" - }, - { - "y": "1.54", - "x": "23.09", - "z": "3.23", - "network_address": "a8-157.grenoble.iot-lab.info" - }, - { - "y": "1.54", - "x": "23.82", - "z": "2.63", - "network_address": "a8-158.grenoble.iot-lab.info" - }, - { - "y": "1.66", - "x": "24.17", - "z": "2.63", - "network_address": "a8-160.grenoble.iot-lab.info" - }, - { - "y": "1.54", - "x": "26.49", - "z": "2.63", - "network_address": "a8-161.grenoble.iot-lab.info" - }, - { - "y": "1.54", - "x": "26.49", - "z": "3.23", - "network_address": "a8-162.grenoble.iot-lab.info" - }, - { - "y": "1.54", - "x": "27.29", - "z": "3.23", - "network_address": "a8-164.grenoble.iot-lab.info" - }, - { - "y": "1.54", - "x": "27.89", - "z": "3.23", - "network_address": "a8-165.grenoble.iot-lab.info" - }, - { - "y": "1.54", - "x": "28.49", - "z": "2.63", - "network_address": "a8-166.grenoble.iot-lab.info" - }, - { - "y": "1.54", - "x": "29.09", - "z": "3.23", - "network_address": "a8-167.grenoble.iot-lab.info" - }, - { - "y": "2.34", - "x": "29.69", - "z": "2.63", - "network_address": "a8-168.grenoble.iot-lab.info" - }, - { - "y": "2.34", - "x": "29.69", - "z": "3.23", - "network_address": "a8-169.grenoble.iot-lab.info" - }, - { - "y": "2.34", - "x": "30.29", - "z": "2.63", - "network_address": "a8-170.grenoble.iot-lab.info" - }, - { - "y": "2.34", - "x": "30.89", - "z": "3.23", - "network_address": "a8-172.grenoble.iot-lab.info" - }, - { - "y": "1.54", - "x": "31.49", - "z": "2.63", - "network_address": "a8-173.grenoble.iot-lab.info" - }, - { - "y": "1.54", - "x": "31.49", - "z": "3.23", - "network_address": "a8-174.grenoble.iot-lab.info" - }, - { - "y": "1.54", - "x": "32.09", - "z": "2.63", - "network_address": "a8-175.grenoble.iot-lab.info" - }, - { - "y": "1.54", - "x": "32.09", - "z": "3.23", - "network_address": "a8-176.grenoble.iot-lab.info" - }, - { - "y": "1.54", - "x": "33.29", - "z": "3.23", - "network_address": "a8-178.grenoble.iot-lab.info" - }, - { - "y": "1.54", - "x": "33.89", - "z": "3.23", - "network_address": "a8-179.grenoble.iot-lab.info" - }, - { - "y": "1.54", - "x": "34.49", - "z": "2.63", - "network_address": "a8-180.grenoble.iot-lab.info" - }, - { - "y": "1.54", - "x": "35.09", - "z": "3.23", - "network_address": "a8-181.grenoble.iot-lab.info" - }, - { - "y": "1.54", - "x": "35.69", - "z": "2.63", - "network_address": "a8-182.grenoble.iot-lab.info" - }, - { - "y": "1.54", - "x": "36.29", - "z": "2.63", - "network_address": "a8-183.grenoble.iot-lab.info" - }, - { - "y": "2.34", - "x": "36.89", - "z": "2.63", - "network_address": "a8-184.grenoble.iot-lab.info" - }, - { - "y": "2.34", - "x": "37.49", - "z": "3.23", - "network_address": "a8-185.grenoble.iot-lab.info" - }, - { - "y": "2.34", - "x": "38.09", - "z": "2.63", - "network_address": "a8-186.grenoble.iot-lab.info" - }, - { - "y": "2.34", - "x": "38.69", - "z": "3.23", - "network_address": "a8-187.grenoble.iot-lab.info" - }, - { - "y": "1.54", - "x": "39.29", - "z": "3.23", - "network_address": "a8-189.grenoble.iot-lab.info" - }, - { - "y": "1.54", - "x": "39.89", - "z": "2.63", - "network_address": "a8-190.grenoble.iot-lab.info" - }, - { - "y": "1.54", - "x": "40.49", - "z": "3.23", - "network_address": "a8-191.grenoble.iot-lab.info" - }, - { - "y": "1.54", - "x": "41.09", - "z": "3.23", - "network_address": "a8-192.grenoble.iot-lab.info" - }, - { - "y": "1.54", - "x": "41.69", - "z": "2.63", - "network_address": "a8-193.grenoble.iot-lab.info" - }, - { - "y": "1.54", - "x": "42.29", - "z": "2.63", - "network_address": "a8-194.grenoble.iot-lab.info" - }, - { - "y": "1.54", - "x": "42.36", - "z": "3.23", - "network_address": "a8-195.grenoble.iot-lab.info" - }, - { - "y": "2.34", - "x": "42.89", - "z": "2.63", - "network_address": "a8-196.grenoble.iot-lab.info" - }, - { - "y": "2.34", - "x": "43.49", - "z": "2.63", - "network_address": "a8-197.grenoble.iot-lab.info" - }, - { - "y": "2.34", - "x": "43.49", - "z": "3.23", - "network_address": "a8-198.grenoble.iot-lab.info" - }, - { - "y": "1.54", - "x": "45.96", - "z": "2.63", - "network_address": "a8-199.grenoble.iot-lab.info" - }, - { - "y": "1.54", - "x": "45.90", - "z": "3.23", - "network_address": "a8-200.grenoble.iot-lab.info" - }, - { - "y": "1.54", - "x": "46.49", - "z": "3.23", - "network_address": "a8-201.grenoble.iot-lab.info" - }, - { - "y": "1.54", - "x": "47.09", - "z": "2.63", - "network_address": "a8-202.grenoble.iot-lab.info" - }, - { - "y": "1.54", - "x": "47.69", - "z": "3.23", - "network_address": "a8-203.grenoble.iot-lab.info" - }, - { - "y": "1.54", - "x": "48.29", - "z": "2.63", - "network_address": "a8-204.grenoble.iot-lab.info" - }, - { - "y": "1.54", - "x": "48.29", - "z": "3.23", - "network_address": "a8-205.grenoble.iot-lab.info" - }, - { - "y": "1.54", - "x": "48.89", - "z": "2.63", - "network_address": "a8-206.grenoble.iot-lab.info" - }, - { - "y": "2.34", - "x": "49.49", - "z": "3.23", - "network_address": "a8-207.grenoble.iot-lab.info" - }, - { - "y": "2.34", - "x": "50.09", - "z": "2.63", - "network_address": "a8-208.grenoble.iot-lab.info" - }, - { - "y": "1.54", - "x": "51.29", - "z": "2.63", - "network_address": "a8-209.grenoble.iot-lab.info" - }, - { - "y": "1.54", - "x": "51.29", - "z": "3.23", - "network_address": "a8-210.grenoble.iot-lab.info" - }, - { - "y": "1.54", - "x": "51.89", - "z": "3.23", - "network_address": "a8-211.grenoble.iot-lab.info" - }, - { - "y": "1.54", - "x": "52.49", - "z": "2.63", - "network_address": "a8-212.grenoble.iot-lab.info" - }, - { - "y": "1.54", - "x": "53.09", - "z": "3.23", - "network_address": "a8-213.grenoble.iot-lab.info" - }, - { - "y": "1.54", - "x": "53.69", - "z": "3.23", - "network_address": "a8-214.grenoble.iot-lab.info" - }, - { - "y": "1.54", - "x": "54.29", - "z": "2.63", - "network_address": "a8-215.grenoble.iot-lab.info" - }, - { - "y": "1.54", - "x": "54.89", - "z": "3.23", - "network_address": "a8-216.grenoble.iot-lab.info" - }, - { - "y": "1.54", - "x": "55.49", - "z": "3.23", - "network_address": "a8-217.grenoble.iot-lab.info" - }, - { - "y": "1.54", - "x": "56.09", - "z": "2.63", - "network_address": "a8-218.grenoble.iot-lab.info" - }, - { - "y": "1.54", - "x": "56.69", - "z": "3.23", - "network_address": "a8-219.grenoble.iot-lab.info" - }, - { - "y": "2.34", - "x": "57.29", - "z": "2.63", - "network_address": "a8-220.grenoble.iot-lab.info" - }, - { - "y": "2.34", - "x": "57.89", - "z": "2.63", - "network_address": "a8-221.grenoble.iot-lab.info" - }, - { - "y": "1.54", - "x": "57.89", - "z": "3.23", - "network_address": "a8-222.grenoble.iot-lab.info" - }, - { - "y": "1.54", - "x": "58.49", - "z": "2.63", - "network_address": "a8-223.grenoble.iot-lab.info" - }, - { - "y": "1.54", - "x": "59.09", - "z": "3.23", - "network_address": "a8-224.grenoble.iot-lab.info" - }, - { - "y": "1.54", - "x": "59.69", - "z": "2.63", - "network_address": "a8-225.grenoble.iot-lab.info" - }, - { - "y": "1.54", - "x": "60.29", - "z": "3.23", - "network_address": "a8-226.grenoble.iot-lab.info" - }, - { - "y": "1.54", - "x": "60.89", - "z": "3.23", - "network_address": "a8-227.grenoble.iot-lab.info" - }, - { - "y": "1.54", - "x": "61.49", - "z": "2.63", - "network_address": "a8-228.grenoble.iot-lab.info" - } - ], - "location": "grenoble" - } -] diff --git a/metas/process_resources.py b/metas/process_resources.py deleted file mode 100644 index 088a6619fa..0000000000 --- a/metas/process_resources.py +++ /dev/null @@ -1,24 +0,0 @@ -from __future__ import print_function -import json -import sys - -sites = ['rennes', 'grenoble', 'strasbourg', 'euratech'] - -if __name__ == '__main__': - filename = 'resources.json' - if len(sys.argv) == 2: - filename = sys.argv[1] - with open(filename, 'r') as f: - json_data = f.read() - data = json.loads(json_data) - - for site in sites: - motes = [mote for mote in data['items'] if mote['site'] == site and mote['uid'] != 'unknown' and mote['archi'].startswith('wsn430')] - with open('{0}.csv'.format(site), 'w') as f: - print('mac,x,y,z', file=f) - for mote in motes: - mac = '14-15-92-00-12-91-{0}-{1}'.format(mote['uid'][0:2], mote['uid'][2:4]) - x = mote['x'] - y = mote['y'] - z = mote['z'] - print('{0},{1},{2},{3}'.format(mac, x, y, z), file=f) \ No newline at end of file diff --git a/metas/rennes.csv b/metas/rennes.csv deleted file mode 100644 index 8918ff8578..0000000000 --- a/metas/rennes.csv +++ /dev/null @@ -1,223 +0,0 @@ -mac,x,y,z -14-15-92-00-12-91-ca-f5,-4.62,0.14,2.912 -14-15-92-00-12-91-ca-73,-4.62,0.744,2.912 -14-15-92-00-12-91-c8-8c,-4.62,1.348,2.911 -14-15-92-00-12-91-b1-c3,-4.62,2.556,2.911 -14-15-92-00-12-91-b7-04,-4.62,3.765,2.91 -14-15-92-00-12-91-c3-51,-4.62,4.369,2.91 -14-15-92-00-12-91-bc-98,-4.62,4.973,2.91 -14-15-92-00-12-91-b3-44,-4.62,5.577,2.909 -14-15-92-00-12-91-c5-9b,-4.62,6.181,2.909 -14-15-92-00-12-91-c0-9a,-4.62,7.389,2.908 -14-15-92-00-12-91-bd-6e,-4.62,7.994,2.908 -14-15-92-00-12-91-c0-e9,-4.62,8.598,2.908 -14-15-92-00-12-91-ca-0a,-4.62,9.202,2.907 -14-15-92-00-12-91-b5-83,-4.62,9.806,2.907 -14-15-92-00-12-91-b8-d6,-4.62,10.41,2.907 -14-15-92-00-12-91-c5-79,-4.62,11.014,2.907 -14-15-92-00-12-91-be-eb,-4.62,11.618,2.906 -14-15-92-00-12-91-c5-e7,-4.62,12.222,2.906 -14-15-92-00-12-91-c2-bb,-4.62,12.826,2.906 -14-15-92-00-12-91-1c-15,-4.62,13.431,2.905 -14-15-92-00-12-91-cb-97,-4.62,14.035,2.905 -14-15-92-00-12-91-b4-bc,-3.796,0.14,2.912 -14-15-92-00-12-91-b5-02,-3.796,0.744,2.912 -14-15-92-00-12-91-c8-9a,-3.796,1.348,2.911 -14-15-92-00-12-91-c3-2c,-3.796,1.952,2.911 -14-15-92-00-12-91-b7-92,-3.796,2.556,2.911 -14-15-92-00-12-91-c3-a8,-3.796,3.161,2.91 -14-15-92-00-12-91-c7-a8,-3.796,3.765,2.91 -14-15-92-00-12-91-ba-43,-3.796,4.369,2.91 -14-15-92-00-12-91-c7-cf,-3.796,5.577,2.909 -14-15-92-00-12-91-b9-20,-3.796,6.181,2.909 -14-15-92-00-12-91-bd-97,-3.796,6.785,2.909 -14-15-92-00-12-91-ba-fb,-3.796,7.389,2.908 -14-15-92-00-12-91-b8-1d,-3.796,7.994,2.908 -14-15-92-00-12-91-b5-25,-3.796,8.598,2.908 -14-15-92-00-12-91-c0-32,-3.796,9.202,2.907 -14-15-92-00-12-91-c4-75,-3.796,9.806,2.907 -14-15-92-00-12-91-b1-92,-3.796,10.41,2.907 -14-15-92-00-12-91-bc-d2,-3.796,11.014,2.907 -14-15-92-00-12-91-c6-32,-3.796,11.618,2.906 -14-15-92-00-12-91-b1-a3,-3.796,12.826,2.906 -14-15-92-00-12-91-1f-52,-2.972,0.14,2.912 -14-15-92-00-12-91-cf-06,-2.972,0.744,2.912 -14-15-92-00-12-91-b1-b6,-2.972,1.348,2.911 -14-15-92-00-12-91-c7-13,-2.972,1.952,2.911 -14-15-92-00-12-91-be-69,-2.972,2.556,2.911 -14-15-92-00-12-91-c4-1c,-2.972,3.161,2.91 -14-15-92-00-12-91-b1-ce,-2.972,3.765,2.91 -14-15-92-00-12-91-bf-0e,-2.972,4.369,2.91 -14-15-92-00-12-91-b7-a4,-2.972,4.973,2.91 -14-15-92-00-12-91-b7-12,-2.972,5.577,2.909 -14-15-92-00-12-91-cf-01,-2.972,6.181,2.909 -14-15-92-00-12-91-b4-a4,-2.972,6.785,2.909 -14-15-92-00-12-91-c1-18,-2.972,7.389,2.908 -14-15-92-00-12-91-ca-5a,-2.972,7.994,2.908 -14-15-92-00-12-91-b3-fc,-2.972,9.202,2.907 -14-15-92-00-12-91-c3-bd,-2.972,9.806,2.907 -14-15-92-00-12-91-c7-3e,-2.972,10.41,2.907 -14-15-92-00-12-91-bc-5a,-2.972,11.014,2.907 -14-15-92-00-12-91-c8-72,-2.972,11.618,2.906 -14-15-92-00-12-91-be-7c,-2.972,12.222,2.906 -14-15-92-00-12-91-c0-5f,-2.972,12.826,2.906 -14-15-92-00-12-91-b2-34,-2.972,13.431,2.905 -14-15-92-00-12-91-c3-45,-2.148,0.14,2.912 -14-15-92-00-12-91-c3-3c,-2.148,0.744,2.912 -14-15-92-00-12-91-1c-06,-2.148,1.348,2.911 -14-15-92-00-12-91-c7-60,-2.148,2.556,2.911 -14-15-92-00-12-91-b7-75,-2.148,3.161,2.91 -14-15-92-00-12-91-c5-b4,-2.148,4.369,2.91 -14-15-92-00-12-91-c9-ce,-2.148,4.973,2.91 -14-15-92-00-12-91-b9-64,-2.148,5.577,2.909 -14-15-92-00-12-91-c6-88,-2.148,6.181,2.909 -14-15-92-00-12-91-b2-28,-2.148,7.389,2.908 -14-15-92-00-12-91-c1-71,-2.148,7.994,2.908 -14-15-92-00-12-91-b5-b2,-2.148,8.598,2.908 -14-15-92-00-12-91-b9-e9,-2.148,9.202,2.907 -14-15-92-00-12-91-c7-15,-2.148,9.806,2.907 -14-15-92-00-12-91-c9-c5,-2.148,10.41,2.907 -14-15-92-00-12-91-b6-27,-2.148,11.014,2.907 -14-15-92-00-12-91-b7-8c,-2.148,11.618,2.906 -14-15-92-00-12-91-af-ee,-2.148,12.222,2.906 -14-15-92-00-12-91-c0-a5,-2.148,12.826,2.906 -14-15-92-00-12-91-c7-51,-2.148,13.431,2.905 -14-15-92-00-12-91-cb-5a,-2.148,14.035,2.905 -14-15-92-00-12-91-cd-aa,-1.324,0.14,2.912 -14-15-92-00-12-91-1f-54,-1.324,2.556,2.911 -14-15-92-00-12-91-20-33,-1.324,3.161,2.91 -14-15-92-00-12-91-bc-a8,-1.324,4.369,2.91 -14-15-92-00-12-91-c6-ab,-1.324,5.577,2.909 -14-15-92-00-12-91-c6-cb,-1.324,7.994,2.908 -14-15-92-00-12-91-c4-e2,-1.324,8.598,2.908 -14-15-92-00-12-91-b9-1d,-1.324,9.806,2.907 -14-15-92-00-12-91-cc-99,-1.324,10.41,2.907 -14-15-92-00-12-91-ca-e2,-1.324,11.618,2.906 -14-15-92-00-12-91-bc-a5,-1.324,12.826,2.906 -14-15-92-00-12-91-be-2a,-1.324,13.431,2.905 -14-15-92-00-12-91-c3-da,-1.324,14.035,2.905 -14-15-92-00-12-91-b2-d4,-0.5,0.14,2.912 -14-15-92-00-12-91-c9-29,-0.5,0.744,2.912 -14-15-92-00-12-91-c2-4a,-0.5,1.348,2.911 -14-15-92-00-12-91-b2-25,-0.5,2.556,2.911 -14-15-92-00-12-91-c0-b1,-0.5,3.161,2.91 -14-15-92-00-12-91-b2-03,-0.5,3.765,2.91 -14-15-92-00-12-91-c1-59,-0.5,4.369,2.91 -14-15-92-00-12-91-b1-6d,-0.5,4.973,2.91 -14-15-92-00-12-91-cb-1c,-0.5,7.389,2.908 -14-15-92-00-12-91-b3-70,-0.5,7.994,2.908 -14-15-92-00-12-91-b9-73,-0.5,8.598,2.908 -14-15-92-00-12-91-ca-15,-0.5,9.202,2.907 -14-15-92-00-12-91-b1-f9,-0.5,10.41,2.907 -14-15-92-00-12-91-b8-4e,-0.5,11.014,2.907 -14-15-92-00-12-91-ce-4a,-0.5,11.618,2.906 -14-15-92-00-12-91-20-36,-0.5,12.222,2.906 -14-15-92-00-12-91-be-91,-0.5,12.826,2.906 -14-15-92-00-12-91-b8-f2,-0.5,13.431,2.905 -14-15-92-00-12-91-b3-01,-0.5,14.035,2.905 -14-15-92-00-12-91-ca-c1,0.66,0.51,2.66 -14-15-92-00-12-91-cb-96,0.66,2.51,2.69 -14-15-92-00-12-91-bd-ae,0.66,3.11,2.7 -14-15-92-00-12-91-bb-1f,2.26,0.14,2.912 -14-15-92-00-12-91-c9-89,2.26,0.744,2.912 -14-15-92-00-12-91-b5-db,2.26,1.348,2.911 -14-15-92-00-12-91-b2-37,2.26,1.952,2.911 -14-15-92-00-12-91-ba-b9,2.26,2.556,2.91 -14-15-92-00-12-91-b8-3d,2.26,3.161,2.91 -14-15-92-00-12-91-b1-97,2.26,3.765,2.91 -14-15-92-00-12-91-c0-31,2.26,4.369,2.909 -14-15-92-00-12-91-b9-60,2.26,4.973,2.909 -14-15-92-00-12-91-c1-56,2.26,6.181,2.908 -14-15-92-00-12-91-b0-f8,2.26,7.389,2.907 -14-15-92-00-12-91-cc-73,2.26,7.994,2.907 -14-15-92-00-12-91-bf-21,2.26,8.598,2.906 -14-15-92-00-12-91-b6-7b,2.26,9.202,2.906 -14-15-92-00-12-91-1f-76,2.26,9.806,2.905 -14-15-92-00-12-91-c6-e9,2.26,10.41,2.905 -14-15-92-00-12-91-bc-0d,3.084,0.14,2.912 -14-15-92-00-12-91-c8-d8,3.084,0.744,2.912 -14-15-92-00-12-91-b4-a5,3.084,1.348,2.911 -14-15-92-00-12-91-c2-ba,3.084,1.952,2.911 -14-15-92-00-12-91-ce-cd,3.084,2.556,2.91 -14-15-92-00-12-91-1c-a1,3.084,3.161,2.91 -14-15-92-00-12-91-b0-56,3.084,3.765,2.91 -14-15-92-00-12-91-bb-2b,3.084,4.369,2.909 -14-15-92-00-12-91-ce-e1,3.084,4.973,2.909 -14-15-92-00-12-91-b2-04,3.084,5.577,2.908 -14-15-92-00-12-91-c4-ca,3.084,6.181,2.908 -14-15-92-00-12-91-c6-ac,3.084,6.785,2.907 -14-15-92-00-12-91-b7-fb,3.084,7.389,2.907 -14-15-92-00-12-91-b5-68,3.084,7.994,2.907 -14-15-92-00-12-91-cb-c6,3.084,8.598,2.906 -14-15-92-00-12-91-bf-52,3.084,9.202,2.906 -14-15-92-00-12-91-c0-59,3.084,9.806,2.905 -14-15-92-00-12-91-b5-29,3.084,10.41,2.905 -14-15-92-00-12-91-b9-1c,3.908,0.14,2.912 -14-15-92-00-12-91-bb-46,3.908,0.744,2.912 -14-15-92-00-12-91-b0-77,3.908,1.348,2.911 -14-15-92-00-12-91-b6-c0,3.908,1.952,2.911 -14-15-92-00-12-91-c2-8c,3.908,2.556,2.91 -14-15-92-00-12-91-c2-5a,3.908,3.161,2.91 -14-15-92-00-12-91-b9-c1,3.908,3.765,2.91 -14-15-92-00-12-91-b1-28,3.908,4.369,2.909 -14-15-92-00-12-91-1f-3e,3.908,4.973,2.909 -14-15-92-00-12-91-c1-21,3.908,5.577,2.908 -14-15-92-00-12-91-b5-5a,3.908,6.181,2.908 -14-15-92-00-12-91-cd-54,3.908,6.785,2.907 -14-15-92-00-12-91-b4-78,3.908,7.389,2.907 -14-15-92-00-12-91-c6-68,3.908,7.994,2.907 -14-15-92-00-12-91-b7-51,3.908,9.202,2.906 -14-15-92-00-12-91-1f-6b,3.908,9.806,2.905 -14-15-92-00-12-91-c2-68,3.908,10.41,2.905 -14-15-92-00-12-91-c4-87,4.732,0.14,2.912 -14-15-92-00-12-91-c4-27,4.732,0.744,2.912 -14-15-92-00-12-91-c5-cf,4.732,1.348,2.911 -14-15-92-00-12-91-c0-91,4.732,2.556,2.91 -14-15-92-00-12-91-c9-80,4.732,3.765,2.91 -14-15-92-00-12-91-b0-8e,4.732,4.369,2.909 -14-15-92-00-12-91-bf-0b,4.732,4.973,2.909 -14-15-92-00-12-91-cb-d4,4.732,5.577,2.908 -14-15-92-00-12-91-c3-2a,4.732,6.181,2.908 -14-15-92-00-12-91-ca-eb,4.732,6.785,2.907 -14-15-92-00-12-91-c3-4c,4.732,7.389,2.907 -14-15-92-00-12-91-cb-fd,4.732,7.994,2.907 -14-15-92-00-12-91-ba-c7,4.732,8.598,2.906 -14-15-92-00-12-91-be-83,4.732,9.202,2.906 -14-15-92-00-12-91-bb-bf,4.732,9.806,2.905 -14-15-92-00-12-91-c4-a9,4.732,10.41,2.905 -14-15-92-00-12-91-b5-1f,5.556,0.14,2.912 -14-15-92-00-12-91-c0-3a,5.556,0.744,2.912 -14-15-92-00-12-91-c9-95,5.556,1.348,2.911 -14-15-92-00-12-91-b5-0e,5.556,1.952,2.911 -14-15-92-00-12-91-af-bf,5.556,2.556,2.91 -14-15-92-00-12-91-b5-a6,5.556,3.161,2.91 -14-15-92-00-12-91-bb-26,5.556,3.765,2.91 -14-15-92-00-12-91-c9-30,5.556,4.369,2.909 -14-15-92-00-12-91-b5-ea,5.556,4.973,2.909 -14-15-92-00-12-91-bc-51,5.556,5.577,2.908 -14-15-92-00-12-91-c7-08,5.556,6.181,2.908 -14-15-92-00-12-91-bf-6f,5.556,6.785,2.907 -14-15-92-00-12-91-bd-10,5.556,7.389,2.907 -14-15-92-00-12-91-b1-76,5.556,7.994,2.907 -14-15-92-00-12-91-b6-d3,5.556,8.598,2.906 -14-15-92-00-12-91-c4-06,5.556,9.202,2.906 -14-15-92-00-12-91-b7-c3,5.556,9.806,2.905 -14-15-92-00-12-91-b2-fc,5.556,10.41,2.905 -14-15-92-00-12-91-cd-7d,6.38,0.14,2.912 -14-15-92-00-12-91-b2-99,6.38,0.744,2.912 -14-15-92-00-12-91-bc-e7,6.38,1.348,2.911 -14-15-92-00-12-91-cb-e0,6.38,1.952,2.911 -14-15-92-00-12-91-be-33,6.38,2.556,2.91 -14-15-92-00-12-91-cf-28,6.38,3.161,2.91 -14-15-92-00-12-91-c8-4f,6.38,3.765,2.91 -14-15-92-00-12-91-b9-5e,6.38,4.369,2.909 -14-15-92-00-12-91-b8-83,6.38,4.973,2.909 -14-15-92-00-12-91-b7-e9,6.38,5.577,2.908 -14-15-92-00-12-91-c6-0b,6.38,6.181,2.908 -14-15-92-00-12-91-c9-3b,6.38,6.785,2.907 -14-15-92-00-12-91-bc-ca,6.38,7.389,2.907 -14-15-92-00-12-91-c6-15,6.38,7.994,2.907 -14-15-92-00-12-91-b7-d1,6.38,8.598,2.906 -14-15-92-00-12-91-b4-90,6.38,9.202,2.906 -14-15-92-00-12-91-c4-79,6.38,9.806,2.905 -14-15-92-00-12-91-bc-67,6.38,10.41,2.905 diff --git a/metas/resources.json b/metas/resources.json deleted file mode 100644 index 2ecdae5cc4..0000000000 --- a/metas/resources.json +++ /dev/null @@ -1 +0,0 @@ -{"items":[{"site":"grenoble","uid":"b2ce","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-1.grenoble.iot-lab.info","mobility_type":"null","z":"1.98","y":"27.67","mobile":0,"x":"4.25"},{"site":"grenoble","uid":"bdc0","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-2.grenoble.iot-lab.info","mobility_type":"null","z":"2.7","y":"27.37","mobile":0,"x":"4.57"},{"site":"grenoble","uid":"cdf2","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-3.grenoble.iot-lab.info","mobility_type":"null","z":"2.22","y":"27.37","mobile":0,"x":"5.67"},{"site":"grenoble","uid":"c6c0","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-4.grenoble.iot-lab.info","mobility_type":"null","z":"2.8","y":"27.37","mobile":0,"x":"6.36"},{"site":"grenoble","uid":"b27c","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-5.grenoble.iot-lab.info","mobility_type":"null","z":"2.42","y":"27.37","mobile":0,"x":"7.4"},{"site":"grenoble","uid":"bfc6","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-6.grenoble.iot-lab.info","mobility_type":"null","z":"2.85","y":"27.37","mobile":0,"x":"8.15"},{"site":"grenoble","uid":"b39e","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-7.grenoble.iot-lab.info","mobility_type":"null","z":"2.28","y":"27.37","mobile":0,"x":"9.13"},{"site":"grenoble","uid":"b07f","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-8.grenoble.iot-lab.info","mobility_type":"null","z":"2.37","y":"27.37","mobile":0,"x":"10.4"},{"site":"grenoble","uid":"c7e6","archi":"wsn430:cc1101","state":"Absent","network_address":"wsn430-9.grenoble.iot-lab.info","mobility_type":"null","z":"2.8","y":"27.37","mobile":0,"x":"11.36"},{"site":"grenoble","uid":"beed","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-10.grenoble.iot-lab.info","mobility_type":"null","z":"2.3","y":"27.37","mobile":0,"x":"12.53"},{"site":"grenoble","uid":"bb40","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-11.grenoble.iot-lab.info","mobility_type":"null","z":"2.65","y":"27.37","mobile":0,"x":"13.75"},{"site":"grenoble","uid":"c1fe","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-12.grenoble.iot-lab.info","mobility_type":"null","z":"2.54","y":"28.07","mobile":0,"x":"3.03"},{"site":"grenoble","uid":"b807","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-13.grenoble.iot-lab.info","mobility_type":"null","z":"2.54","y":"28.07","mobile":0,"x":"3.83"},{"site":"grenoble","uid":"b2ca","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-14.grenoble.iot-lab.info","mobility_type":"null","z":"2.54","y":"28.07","mobile":0,"x":"4.8"},{"site":"grenoble","uid":"b020","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-15.grenoble.iot-lab.info","mobility_type":"null","z":"2.54","y":"28.07","mobile":0,"x":"5.74"},{"site":"grenoble","uid":"b6d8","archi":"wsn430:cc1101","state":"Suspected","network_address":"wsn430-16.grenoble.iot-lab.info","mobility_type":"null","z":"2.54","y":"28.07","mobile":0,"x":"6.76"},{"site":"grenoble","uid":"c631","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-17.grenoble.iot-lab.info","mobility_type":"null","z":"2.54","y":"28.07","mobile":0,"x":"7.86"},{"site":"grenoble","uid":"cc8b","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-18.grenoble.iot-lab.info","mobility_type":"null","z":"2.54","y":"28.07","mobile":0,"x":"8.93"},{"site":"grenoble","uid":"b03d","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-19.grenoble.iot-lab.info","mobility_type":"null","z":"2.54","y":"28.07","mobile":0,"x":"10.13"},{"site":"grenoble","uid":"c24c","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-20.grenoble.iot-lab.info","mobility_type":"null","z":"2.54","y":"28.07","mobile":0,"x":"11.28"},{"site":"grenoble","uid":"cc0d","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-21.grenoble.iot-lab.info","mobility_type":"null","z":"2.54","y":"28.07","mobile":0,"x":"12.18"},{"site":"grenoble","uid":"b047","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-22.grenoble.iot-lab.info","mobility_type":"null","z":"2.54","y":"28.07","mobile":0,"x":"13.18"},{"site":"grenoble","uid":"bc97","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-23.grenoble.iot-lab.info","mobility_type":"null","z":"2.54","y":"28.07","mobile":0,"x":"14.18"},{"site":"grenoble","uid":"c13d","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-24.grenoble.iot-lab.info","mobility_type":"null","z":"2.54","y":"28.07","mobile":0,"x":"14.93"},{"site":"grenoble","uid":"bed2","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-25.grenoble.iot-lab.info","mobility_type":"null","z":"2.54","y":"28.07","mobile":0,"x":"15.73"},{"site":"grenoble","uid":"b1cb","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-26.grenoble.iot-lab.info","mobility_type":"null","z":"3.6","y":"29.35","mobile":0,"x":"1.98"},{"site":"grenoble","uid":"b94f","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-27.grenoble.iot-lab.info","mobility_type":"null","z":"3.6","y":"29.35","mobile":0,"x":"3.13"},{"site":"grenoble","uid":"c33e","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-28.grenoble.iot-lab.info","mobility_type":"null","z":"3.6","y":"29.35","mobile":0,"x":"4.08"},{"site":"grenoble","uid":"1cbe","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-29.grenoble.iot-lab.info","mobility_type":"null","z":"3.6","y":"29.35","mobile":0,"x":"5.18"},{"site":"grenoble","uid":"ccc8","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-30.grenoble.iot-lab.info","mobility_type":"null","z":"3.6","y":"29.35","mobile":0,"x":"6.38"},{"site":"grenoble","uid":"b1a5","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-31.grenoble.iot-lab.info","mobility_type":"null","z":"3.6","y":"29.35","mobile":0,"x":"7.45"},{"site":"grenoble","uid":"b63b","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-32.grenoble.iot-lab.info","mobility_type":"null","z":"3.6","y":"29.35","mobile":0,"x":"8.3"},{"site":"grenoble","uid":"c78e","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-33.grenoble.iot-lab.info","mobility_type":"null","z":"3.6","y":"29.35","mobile":0,"x":"8.8"},{"site":"grenoble","uid":"b902","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-34.grenoble.iot-lab.info","mobility_type":"null","z":"3.6","y":"29.35","mobile":0,"x":"10.17"},{"site":"grenoble","uid":"c443","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-35.grenoble.iot-lab.info","mobility_type":"null","z":"3.6","y":"29.35","mobile":0,"x":"11.08"},{"site":"grenoble","uid":"b615","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-36.grenoble.iot-lab.info","mobility_type":"null","z":"3.6","y":"29.35","mobile":0,"x":"12.12"},{"site":"grenoble","uid":"cf33","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-37.grenoble.iot-lab.info","mobility_type":"null","z":"3.6","y":"29.35","mobile":0,"x":"12.89"},{"site":"grenoble","uid":"b8bd","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-38.grenoble.iot-lab.info","mobility_type":"null","z":"3.6","y":"29.35","mobile":0,"x":"14.11"},{"site":"grenoble","uid":"b32d","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-39.grenoble.iot-lab.info","mobility_type":"null","z":"3.6","y":"29.35","mobile":0,"x":"15.13"},{"site":"grenoble","uid":"c21d","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-40.grenoble.iot-lab.info","mobility_type":"null","z":"2.53","y":"29.1","mobile":0,"x":"3.95"},{"site":"grenoble","uid":"c216","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-41.grenoble.iot-lab.info","mobility_type":"null","z":"2.53","y":"29.05","mobile":0,"x":"5.51"},{"site":"grenoble","uid":"ca2d","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-42.grenoble.iot-lab.info","mobility_type":"null","z":"2.53","y":"29.22","mobile":0,"x":"7.53"},{"site":"grenoble","uid":"c7ee","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-43.grenoble.iot-lab.info","mobility_type":"null","z":"2.53","y":"29.02","mobile":0,"x":"9.53"},{"site":"grenoble","uid":"bb04","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-44.grenoble.iot-lab.info","mobility_type":"null","z":"2.53","y":"29.27","mobile":0,"x":"11.73"},{"site":"grenoble","uid":"c878","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-45.grenoble.iot-lab.info","mobility_type":"null","z":"2.53","y":"29.01","mobile":0,"x":"13.78"},{"site":"grenoble","uid":"b85a","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-46.grenoble.iot-lab.info","mobility_type":"null","z":"2.53","y":"28.93","mobile":0,"x":"15.58"},{"site":"grenoble","uid":"b2f9","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-47.grenoble.iot-lab.info","mobility_type":"null","z":"2.52","y":"30.13","mobile":0,"x":"2.98"},{"site":"grenoble","uid":"bd6f","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-48.grenoble.iot-lab.info","mobility_type":"null","z":"2.52","y":"30.21","mobile":0,"x":"4.33"},{"site":"grenoble","uid":"c2f6","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-49.grenoble.iot-lab.info","mobility_type":"null","z":"2.52","y":"30.21","mobile":0,"x":"5.3"},{"site":"grenoble","uid":"c18d","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-50.grenoble.iot-lab.info","mobility_type":"null","z":"2.52","y":"30.17","mobile":0,"x":"6.28"},{"site":"grenoble","uid":"c474","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-51.grenoble.iot-lab.info","mobility_type":"null","z":"2.52","y":"30.17","mobile":0,"x":"7.51"},{"site":"grenoble","uid":"c4bb","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-52.grenoble.iot-lab.info","mobility_type":"null","z":"2.52","y":"30.17","mobile":0,"x":"8.58"},{"site":"grenoble","uid":"b384","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-53.grenoble.iot-lab.info","mobility_type":"null","z":"2.52","y":"30.17","mobile":0,"x":"9.58"},{"site":"grenoble","uid":"b0a8","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-54.grenoble.iot-lab.info","mobility_type":"null","z":"2.52","y":"30.17","mobile":0,"x":"10.45"},{"site":"grenoble","uid":"bfc4","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-55.grenoble.iot-lab.info","mobility_type":"null","z":"2.52","y":"30.17","mobile":0,"x":"11.32"},{"site":"grenoble","uid":"c597","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-56.grenoble.iot-lab.info","mobility_type":"null","z":"2.52","y":"30.17","mobile":0,"x":"12.26"},{"site":"grenoble","uid":"c90d","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-57.grenoble.iot-lab.info","mobility_type":"null","z":"2.52","y":"30.17","mobile":0,"x":"13.28"},{"site":"grenoble","uid":"ca91","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-58.grenoble.iot-lab.info","mobility_type":"null","z":"2.52","y":"30.17","mobile":0,"x":"14.28"},{"site":"grenoble","uid":"b35b","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-59.grenoble.iot-lab.info","mobility_type":"null","z":"2.52","y":"30.17","mobile":0,"x":"15.53"},{"site":"grenoble","uid":"bba0","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-60.grenoble.iot-lab.info","mobility_type":"null","z":"2.5","y":"29.72","mobile":0,"x":"16.53"},{"site":"grenoble","uid":"b328","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-61.grenoble.iot-lab.info","mobility_type":"null","z":"3.6","y":"30.37","mobile":0,"x":"3.98"},{"site":"grenoble","uid":"b7a5","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-62.grenoble.iot-lab.info","mobility_type":"null","z":"3.6","y":"30.47","mobile":0,"x":"5.08"},{"site":"grenoble","uid":"c7b0","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-63.grenoble.iot-lab.info","mobility_type":"null","z":"3.6","y":"30.47","mobile":0,"x":"6.18"},{"site":"grenoble","uid":"c873","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-64.grenoble.iot-lab.info","mobility_type":"null","z":"3.6","y":"30.47","mobile":0,"x":"7.2"},{"site":"grenoble","uid":"c04d","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-65.grenoble.iot-lab.info","mobility_type":"null","z":"3.6","y":"30.47","mobile":0,"x":"8.68"},{"site":"grenoble","uid":"c5b5","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-66.grenoble.iot-lab.info","mobility_type":"null","z":"3.6","y":"30.47","mobile":0,"x":"9.58"},{"site":"grenoble","uid":"c115","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-67.grenoble.iot-lab.info","mobility_type":"null","z":"3.6","y":"30.42","mobile":0,"x":"10.53"},{"site":"grenoble","uid":"be03","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-68.grenoble.iot-lab.info","mobility_type":"null","z":"3.6","y":"30.27","mobile":0,"x":"11.35"},{"site":"grenoble","uid":"bfa6","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-69.grenoble.iot-lab.info","mobility_type":"null","z":"3.6","y":"30.42","mobile":0,"x":"12.35"},{"site":"grenoble","uid":"be64","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-70.grenoble.iot-lab.info","mobility_type":"null","z":"3.6","y":"30.42","mobile":0,"x":"13.28"},{"site":"grenoble","uid":"c596","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-71.grenoble.iot-lab.info","mobility_type":"null","z":"3.6","y":"30.42","mobile":0,"x":"14.31"},{"site":"grenoble","uid":"c01c","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-72.grenoble.iot-lab.info","mobility_type":"null","z":"3.6","y":"30.42","mobile":0,"x":"15.21"},{"site":"grenoble","uid":"c8dd","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-73.grenoble.iot-lab.info","mobility_type":"null","z":"3.53","y":"30.92","mobile":0,"x":"7.83"},{"site":"grenoble","uid":"b18b","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-74.grenoble.iot-lab.info","mobility_type":"null","z":"3.66","y":"31.97","mobile":0,"x":"4.0"},{"site":"grenoble","uid":"bfc5","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-75.grenoble.iot-lab.info","mobility_type":"null","z":"3.66","y":"31.97","mobile":0,"x":"4.97"},{"site":"grenoble","uid":"b0e9","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-76.grenoble.iot-lab.info","mobility_type":"null","z":"3.66","y":"31.97","mobile":0,"x":"6.0"},{"site":"grenoble","uid":"1fa0","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-77.grenoble.iot-lab.info","mobility_type":"null","z":"3.66","y":"31.97","mobile":0,"x":"7.01"},{"site":"grenoble","uid":"b2ba","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-78.grenoble.iot-lab.info","mobility_type":"null","z":"3.66","y":"31.97","mobile":0,"x":"8.16"},{"site":"grenoble","uid":"b1ae","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-79.grenoble.iot-lab.info","mobility_type":"null","z":"3.66","y":"31.97","mobile":0,"x":"9.08"},{"site":"grenoble","uid":"b89a","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-80.grenoble.iot-lab.info","mobility_type":"null","z":"3.66","y":"31.99","mobile":0,"x":"10.1"},{"site":"grenoble","uid":"b41e","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-81.grenoble.iot-lab.info","mobility_type":"null","z":"3.66","y":"31.92","mobile":0,"x":"11.05"},{"site":"grenoble","uid":"unknown","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-82.grenoble.iot-lab.info","mobility_type":"null","z":"3.66","y":"32.03","mobile":0,"x":"12.07"},{"site":"grenoble","uid":"b666","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-83.grenoble.iot-lab.info","mobility_type":"null","z":"3.66","y":"32.03","mobile":0,"x":"13.07"},{"site":"grenoble","uid":"bde3","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-84.grenoble.iot-lab.info","mobility_type":"null","z":"3.66","y":"32.05","mobile":0,"x":"14.26"},{"site":"grenoble","uid":"b029","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-85.grenoble.iot-lab.info","mobility_type":"null","z":"3.66","y":"32.05","mobile":0,"x":"15.41"},{"site":"grenoble","uid":"unknown","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-86.grenoble.iot-lab.info","mobility_type":"null","z":"2.58","y":"32.02","mobile":0,"x":"3.17"},{"site":"grenoble","uid":"unknown","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-87.grenoble.iot-lab.info","mobility_type":"null","z":"2.58","y":"32.02","mobile":0,"x":"4.27"},{"site":"grenoble","uid":"b65d","archi":"wsn430:cc1101","state":"Suspected","network_address":"wsn430-88.grenoble.iot-lab.info","mobility_type":"null","z":"2.58","y":"32.03","mobile":0,"x":"5.44"},{"site":"grenoble","uid":"c8e0","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-89.grenoble.iot-lab.info","mobility_type":"null","z":"2.58","y":"32.03","mobile":0,"x":"6.4"},{"site":"grenoble","uid":"c1d7","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-90.grenoble.iot-lab.info","mobility_type":"null","z":"2.58","y":"32.03","mobile":0,"x":"7.45"},{"site":"grenoble","uid":"c494","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-91.grenoble.iot-lab.info","mobility_type":"null","z":"2.58","y":"32.03","mobile":0,"x":"8.42"},{"site":"grenoble","uid":"b193","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-92.grenoble.iot-lab.info","mobility_type":"null","z":"2.58","y":"32.04","mobile":0,"x":"9.37"},{"site":"grenoble","uid":"c828","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-93.grenoble.iot-lab.info","mobility_type":"null","z":"2.58","y":"32.04","mobile":0,"x":"10.3"},{"site":"grenoble","uid":"cd06","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-94.grenoble.iot-lab.info","mobility_type":"null","z":"2.58","y":"32.02","mobile":0,"x":"11.3"},{"site":"grenoble","uid":"afed","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-95.grenoble.iot-lab.info","mobility_type":"null","z":"2.58","y":"32.02","mobile":0,"x":"12.4"},{"site":"grenoble","uid":"baea","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-96.grenoble.iot-lab.info","mobility_type":"null","z":"2.58","y":"31.97","mobile":0,"x":"13.36"},{"site":"grenoble","uid":"c19c","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-97.grenoble.iot-lab.info","mobility_type":"null","z":"2.58","y":"31.97","mobile":0,"x":"14.43"},{"site":"grenoble","uid":"be7f","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-98.grenoble.iot-lab.info","mobility_type":"null","z":"2.58","y":"31.95","mobile":0,"x":"15.41"},{"site":"grenoble","uid":"becb","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-99.grenoble.iot-lab.info","mobility_type":"null","z":"2.65","y":"27.37","mobile":0,"x":"2.3"},{"site":"grenoble","uid":"ba2d","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-100.grenoble.iot-lab.info","mobility_type":"null","z":"2.62","y":"33.57","mobile":0,"x":"17.06"},{"site":"grenoble","uid":"baa9","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-101.grenoble.iot-lab.info","mobility_type":"null","z":"2.6","y":"30.85","mobile":0,"x":"3.8"},{"site":"grenoble","uid":"bad5","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-102.grenoble.iot-lab.info","mobility_type":"null","z":"2.6","y":"30.97","mobile":0,"x":"15.58"},{"site":"grenoble","uid":"beb6","archi":"wsn430:cc1101","state":"Absent","network_address":"wsn430-103.grenoble.iot-lab.info","mobility_type":"null","z":"0.37","y":"32.0","mobile":0,"x":"4.08"},{"site":"grenoble","uid":"b4de","archi":"wsn430:cc1101","state":"Absent","network_address":"wsn430-104.grenoble.iot-lab.info","mobility_type":"null","z":"0.37","y":"32.0","mobile":0,"x":"4.82"},{"site":"grenoble","uid":"c79d","archi":"wsn430:cc1101","state":"Absent","network_address":"wsn430-105.grenoble.iot-lab.info","mobility_type":"null","z":"0.37","y":"32.0","mobile":0,"x":"5.72"},{"site":"grenoble","uid":"c16a","archi":"wsn430:cc1101","state":"Absent","network_address":"wsn430-106.grenoble.iot-lab.info","mobility_type":"null","z":"0.37","y":"32.0","mobile":0,"x":"6.46"},{"site":"grenoble","uid":"b323","archi":"wsn430:cc1101","state":"Absent","network_address":"wsn430-107.grenoble.iot-lab.info","mobility_type":"null","z":"1.07","y":"31.72","mobile":0,"x":"3.98"},{"site":"grenoble","uid":"b396","archi":"wsn430:cc1101","state":"Absent","network_address":"wsn430-108.grenoble.iot-lab.info","mobility_type":"null","z":"1.07","y":"31.72","mobile":0,"x":"4.79"},{"site":"grenoble","uid":"b4c1","archi":"wsn430:cc1101","state":"Absent","network_address":"wsn430-109.grenoble.iot-lab.info","mobility_type":"null","z":"1.07","y":"31.72","mobile":0,"x":"5.66"},{"site":"grenoble","uid":"bea9","archi":"wsn430:cc1101","state":"Absent","network_address":"wsn430-110.grenoble.iot-lab.info","mobility_type":"null","z":"1.07","y":"31.72","mobile":0,"x":"6.48"},{"site":"grenoble","uid":"ba73","archi":"wsn430:cc1101","state":"Absent","network_address":"wsn430-111.grenoble.iot-lab.info","mobility_type":"null","z":"2.0","y":"32.14","mobile":0,"x":"4.12"},{"site":"grenoble","uid":"b092","archi":"wsn430:cc1101","state":"Absent","network_address":"wsn430-112.grenoble.iot-lab.info","mobility_type":"null","z":"2.0","y":"32.14","mobile":0,"x":"4.9"},{"site":"grenoble","uid":"b2bc","archi":"wsn430:cc1101","state":"Absent","network_address":"wsn430-113.grenoble.iot-lab.info","mobility_type":"null","z":"2.0","y":"32.14","mobile":0,"x":"5.78"},{"site":"grenoble","uid":"ba62","archi":"wsn430:cc1101","state":"Absent","network_address":"wsn430-114.grenoble.iot-lab.info","mobility_type":"null","z":"2.0","y":"32.19","mobile":0,"x":"6.5"},{"site":"grenoble","uid":"b34b","archi":"wsn430:cc1101","state":"Absent","network_address":"wsn430-115.grenoble.iot-lab.info","mobility_type":"null","z":"0.2","y":"32.85","mobile":0,"x":"3.88"},{"site":"grenoble","uid":"b974","archi":"wsn430:cc1101","state":"Absent","network_address":"wsn430-116.grenoble.iot-lab.info","mobility_type":"null","z":"0.2","y":"32.89","mobile":0,"x":"4.98"},{"site":"grenoble","uid":"b230","archi":"wsn430:cc1101","state":"Absent","network_address":"wsn430-117.grenoble.iot-lab.info","mobility_type":"null","z":"0.2","y":"32.89","mobile":0,"x":"5.78"},{"site":"grenoble","uid":"c319","archi":"wsn430:cc1101","state":"Absent","network_address":"wsn430-118.grenoble.iot-lab.info","mobility_type":"null","z":"0.43","y":"32.77","mobile":0,"x":"6.53"},{"site":"grenoble","uid":"cbe5","archi":"wsn430:cc1101","state":"Absent","network_address":"wsn430-119.grenoble.iot-lab.info","mobility_type":"null","z":"1.04","y":"32.66","mobile":0,"x":"4.1"},{"site":"grenoble","uid":"c639","archi":"wsn430:cc1101","state":"Absent","network_address":"wsn430-120.grenoble.iot-lab.info","mobility_type":"null","z":"1.04","y":"32.66","mobile":0,"x":"4.86"},{"site":"grenoble","uid":"bfca","archi":"wsn430:cc1101","state":"Absent","network_address":"wsn430-121.grenoble.iot-lab.info","mobility_type":"null","z":"1.04","y":"32.69","mobile":0,"x":"6.47"},{"site":"grenoble","uid":"c5fb","archi":"wsn430:cc1101","state":"Absent","network_address":"wsn430-122.grenoble.iot-lab.info","mobility_type":"null","z":"1.82","y":"33.08","mobile":0,"x":"4.07"},{"site":"grenoble","uid":"c552","archi":"wsn430:cc1101","state":"Absent","network_address":"wsn430-123.grenoble.iot-lab.info","mobility_type":"null","z":"1.8","y":"33.08","mobile":0,"x":"5.06"},{"site":"grenoble","uid":"b413","archi":"wsn430:cc1101","state":"Absent","network_address":"wsn430-124.grenoble.iot-lab.info","mobility_type":"null","z":"1.83","y":"33.08","mobile":0,"x":"5.95"},{"site":"grenoble","uid":"unknown","archi":"wsn430:cc1101","state":"Absent","network_address":"wsn430-125.grenoble.iot-lab.info","mobility_type":"null","z":"2.6","y":"37.64","mobile":0,"x":"2.12"},{"site":"grenoble","uid":"c3b4","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-126.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"35.6","mobile":0,"x":"2.34"},{"site":"grenoble","uid":"c38d","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-127.grenoble.iot-lab.info","mobility_type":"null","z":"3.0","y":"27.77","mobile":0,"x":"8.81"},{"site":"grenoble","uid":"b5d0","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-128.grenoble.iot-lab.info","mobility_type":"null","z":"3.02","y":"27.72","mobile":0,"x":"10.91"},{"site":"grenoble","uid":"c9cd","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-129.grenoble.iot-lab.info","mobility_type":"null","z":"2.6","y":"33.64","mobile":0,"x":"1.98"},{"site":"grenoble","uid":"b491","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-130.grenoble.iot-lab.info","mobility_type":"null","z":"2.57","y":"33.57","mobile":0,"x":"2.71"},{"site":"grenoble","uid":"beab","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-131.grenoble.iot-lab.info","mobility_type":"null","z":"2.57","y":"33.57","mobile":0,"x":"3.73"},{"site":"grenoble","uid":"b053","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-132.grenoble.iot-lab.info","mobility_type":"null","z":"2.57","y":"33.57","mobile":0,"x":"4.81"},{"site":"grenoble","uid":"c349","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-133.grenoble.iot-lab.info","mobility_type":"null","z":"2.58","y":"33.57","mobile":0,"x":"5.72"},{"site":"grenoble","uid":"be0f","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-134.grenoble.iot-lab.info","mobility_type":"null","z":"2.59","y":"33.57","mobile":0,"x":"6.7"},{"site":"grenoble","uid":"b8a3","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-135.grenoble.iot-lab.info","mobility_type":"null","z":"2.59","y":"33.57","mobile":0,"x":"7.68"},{"site":"grenoble","uid":"c4d1","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-136.grenoble.iot-lab.info","mobility_type":"null","z":"2.6","y":"33.57","mobile":0,"x":"8.7"},{"site":"grenoble","uid":"c686","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-137.grenoble.iot-lab.info","mobility_type":"null","z":"2.6","y":"33.57","mobile":0,"x":"9.7"},{"site":"grenoble","uid":"bfba","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-138.grenoble.iot-lab.info","mobility_type":"null","z":"2.61","y":"33.57","mobile":0,"x":"10.69"},{"site":"grenoble","uid":"baa2","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-139.grenoble.iot-lab.info","mobility_type":"null","z":"2.61","y":"33.57","mobile":0,"x":"11.71"},{"site":"grenoble","uid":"c529","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-140.grenoble.iot-lab.info","mobility_type":"null","z":"2.62","y":"33.57","mobile":0,"x":"12.71"},{"site":"grenoble","uid":"b7c6","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-141.grenoble.iot-lab.info","mobility_type":"null","z":"2.62","y":"33.57","mobile":0,"x":"13.74"},{"site":"grenoble","uid":"ccdc","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-142.grenoble.iot-lab.info","mobility_type":"null","z":"2.62","y":"33.57","mobile":0,"x":"14.75"},{"site":"grenoble","uid":"b74f","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-143.grenoble.iot-lab.info","mobility_type":"null","z":"2.62","y":"33.57","mobile":0,"x":"15.73"},{"site":"grenoble","uid":"bb93","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-144.grenoble.iot-lab.info","mobility_type":"null","z":"3.6","y":"34.01","mobile":0,"x":"7.95"},{"site":"grenoble","uid":"204e","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-145.grenoble.iot-lab.info","mobility_type":"null","z":"3.58","y":"33.99","mobile":0,"x":"11.23"},{"site":"grenoble","uid":"b797","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-146.grenoble.iot-lab.info","mobility_type":"null","z":"3.67","y":"35.07","mobile":0,"x":"2.56"},{"site":"grenoble","uid":"b71f","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-147.grenoble.iot-lab.info","mobility_type":"null","z":"3.67","y":"35.07","mobile":0,"x":"3.36"},{"site":"grenoble","uid":"c98d","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-148.grenoble.iot-lab.info","mobility_type":"null","z":"3.67","y":"35.07","mobile":0,"x":"4.4"},{"site":"grenoble","uid":"bfea","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-149.grenoble.iot-lab.info","mobility_type":"null","z":"3.67","y":"35.07","mobile":0,"x":"5.35"},{"site":"grenoble","uid":"bfcd","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-150.grenoble.iot-lab.info","mobility_type":"null","z":"3.67","y":"35.07","mobile":0,"x":"6.4"},{"site":"grenoble","uid":"afb3","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-151.grenoble.iot-lab.info","mobility_type":"null","z":"3.67","y":"35.07","mobile":0,"x":"7.45"},{"site":"grenoble","uid":"c067","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-152.grenoble.iot-lab.info","mobility_type":"null","z":"3.67","y":"35.07","mobile":0,"x":"8.43"},{"site":"grenoble","uid":"bd0c","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-153.grenoble.iot-lab.info","mobility_type":"null","z":"3.67","y":"35.07","mobile":0,"x":"9.75"},{"site":"grenoble","uid":"cc6e","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-154.grenoble.iot-lab.info","mobility_type":"null","z":"3.67","y":"35.07","mobile":0,"x":"10.76"},{"site":"grenoble","uid":"1f58","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-155.grenoble.iot-lab.info","mobility_type":"null","z":"3.67","y":"35.07","mobile":0,"x":"11.66"},{"site":"grenoble","uid":"c4de","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-156.grenoble.iot-lab.info","mobility_type":"null","z":"3.67","y":"35.07","mobile":0,"x":"12.66"},{"site":"grenoble","uid":"c84d","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-157.grenoble.iot-lab.info","mobility_type":"null","z":"3.67","y":"35.07","mobile":0,"x":"13.76"},{"site":"grenoble","uid":"bee7","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-158.grenoble.iot-lab.info","mobility_type":"null","z":"3.67","y":"35.07","mobile":0,"x":"14.76"},{"site":"grenoble","uid":"b5aa","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-159.grenoble.iot-lab.info","mobility_type":"null","z":"3.67","y":"35.07","mobile":0,"x":"15.78"},{"site":"grenoble","uid":"cea4","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-160.grenoble.iot-lab.info","mobility_type":"null","z":"2.6","y":"35.09","mobile":0,"x":"1.91"},{"site":"grenoble","uid":"c1d2","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-161.grenoble.iot-lab.info","mobility_type":"null","z":"2.58","y":"35.07","mobile":0,"x":"2.75"},{"site":"grenoble","uid":"b961","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-162.grenoble.iot-lab.info","mobility_type":"null","z":"2.58","y":"35.07","mobile":0,"x":"3.65"},{"site":"grenoble","uid":"b013","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-163.grenoble.iot-lab.info","mobility_type":"null","z":"2.58","y":"35.07","mobile":0,"x":"4.57"},{"site":"grenoble","uid":"unknown","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-164.grenoble.iot-lab.info","mobility_type":"null","z":"2.58","y":"35.07","mobile":0,"x":"5.54"},{"site":"grenoble","uid":"c4cf","archi":"wsn430:cc1101","state":"Suspected","network_address":"wsn430-165.grenoble.iot-lab.info","mobility_type":"null","z":"2.58","y":"35.07","mobile":0,"x":"6.55"},{"site":"grenoble","uid":"bfa1","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-166.grenoble.iot-lab.info","mobility_type":"null","z":"2.58","y":"35.07","mobile":0,"x":"7.53"},{"site":"grenoble","uid":"bb56","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-167.grenoble.iot-lab.info","mobility_type":"null","z":"2.58","y":"35.07","mobile":0,"x":"8.54"},{"site":"grenoble","uid":"ba8c","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-168.grenoble.iot-lab.info","mobility_type":"null","z":"2.58","y":"35.07","mobile":0,"x":"9.56"},{"site":"grenoble","uid":"b8e1","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-169.grenoble.iot-lab.info","mobility_type":"null","z":"2.58","y":"35.07","mobile":0,"x":"10.66"},{"site":"grenoble","uid":"b978","archi":"wsn430:cc1101","state":"Suspected","network_address":"wsn430-170.grenoble.iot-lab.info","mobility_type":"null","z":"2.58","y":"35.07","mobile":0,"x":"11.76"},{"site":"grenoble","uid":"cac7","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-171.grenoble.iot-lab.info","mobility_type":"null","z":"2.58","y":"35.07","mobile":0,"x":"12.8"},{"site":"grenoble","uid":"b6c1","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-172.grenoble.iot-lab.info","mobility_type":"null","z":"3.67","y":"36.37","mobile":0,"x":"2.52"},{"site":"grenoble","uid":"b9c2","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-173.grenoble.iot-lab.info","mobility_type":"null","z":"3.67","y":"36.37","mobile":0,"x":"3.37"},{"site":"grenoble","uid":"af8d","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-174.grenoble.iot-lab.info","mobility_type":"null","z":"3.67","y":"36.37","mobile":0,"x":"4.44"},{"site":"grenoble","uid":"b105","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-175.grenoble.iot-lab.info","mobility_type":"null","z":"3.67","y":"36.37","mobile":0,"x":"5.39"},{"site":"grenoble","uid":"baa8","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-176.grenoble.iot-lab.info","mobility_type":"null","z":"3.67","y":"36.37","mobile":0,"x":"6.55"},{"site":"grenoble","uid":"b650","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-177.grenoble.iot-lab.info","mobility_type":"null","z":"3.67","y":"36.37","mobile":0,"x":"7.46"},{"site":"grenoble","uid":"b097","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-178.grenoble.iot-lab.info","mobility_type":"null","z":"3.67","y":"36.37","mobile":0,"x":"8.53"},{"site":"grenoble","uid":"c1fd","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-179.grenoble.iot-lab.info","mobility_type":"null","z":"3.67","y":"36.37","mobile":0,"x":"9.56"},{"site":"grenoble","uid":"c0ce","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-180.grenoble.iot-lab.info","mobility_type":"null","z":"3.67","y":"36.37","mobile":0,"x":"10.51"},{"site":"grenoble","uid":"bf9c","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-181.grenoble.iot-lab.info","mobility_type":"null","z":"3.67","y":"36.37","mobile":0,"x":"11.66"},{"site":"grenoble","uid":"c938","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-182.grenoble.iot-lab.info","mobility_type":"null","z":"3.67","y":"36.37","mobile":0,"x":"12.55"},{"site":"grenoble","uid":"b2d8","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-183.grenoble.iot-lab.info","mobility_type":"null","z":"3.67","y":"36.37","mobile":0,"x":"13.55"},{"site":"grenoble","uid":"b01d","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-184.grenoble.iot-lab.info","mobility_type":"null","z":"3.67","y":"36.37","mobile":0,"x":"14.61"},{"site":"grenoble","uid":"c432","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-185.grenoble.iot-lab.info","mobility_type":"null","z":"3.67","y":"36.37","mobile":0,"x":"15.65"},{"site":"grenoble","uid":"2030","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-186.grenoble.iot-lab.info","mobility_type":"null","z":"2.56","y":"36.37","mobile":0,"x":"1.93"},{"site":"grenoble","uid":"b31e","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-187.grenoble.iot-lab.info","mobility_type":"null","z":"2.55","y":"36.37","mobile":0,"x":"2.91"},{"site":"grenoble","uid":"cb9b","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-188.grenoble.iot-lab.info","mobility_type":"null","z":"2.55","y":"36.37","mobile":0,"x":"3.91"},{"site":"grenoble","uid":"ba2e","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-189.grenoble.iot-lab.info","mobility_type":"null","z":"2.55","y":"36.37","mobile":0,"x":"4.91"},{"site":"grenoble","uid":"b1b2","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-190.grenoble.iot-lab.info","mobility_type":"null","z":"2.55","y":"36.37","mobile":0,"x":"5.91"},{"site":"grenoble","uid":"b916","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-191.grenoble.iot-lab.info","mobility_type":"null","z":"2.55","y":"36.37","mobile":0,"x":"6.91"},{"site":"grenoble","uid":"c15f","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-192.grenoble.iot-lab.info","mobility_type":"null","z":"2.55","y":"36.34","mobile":0,"x":"7.92"},{"site":"grenoble","uid":"1f69","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-193.grenoble.iot-lab.info","mobility_type":"null","z":"2.55","y":"36.37","mobile":0,"x":"8.92"},{"site":"grenoble","uid":"b8df","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-194.grenoble.iot-lab.info","mobility_type":"null","z":"2.55","y":"36.34","mobile":0,"x":"10.02"},{"site":"grenoble","uid":"cde9","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-195.grenoble.iot-lab.info","mobility_type":"null","z":"2.55","y":"36.37","mobile":0,"x":"11.07"},{"site":"grenoble","uid":"b355","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-196.grenoble.iot-lab.info","mobility_type":"null","z":"2.55","y":"36.37","mobile":0,"x":"12.06"},{"site":"grenoble","uid":"ced8","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-197.grenoble.iot-lab.info","mobility_type":"null","z":"2.55","y":"36.37","mobile":0,"x":"13.18"},{"site":"grenoble","uid":"cb46","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-198.grenoble.iot-lab.info","mobility_type":"null","z":"3.37","y":"37.6","mobile":0,"x":"7.16"},{"site":"grenoble","uid":"c863","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-199.grenoble.iot-lab.info","mobility_type":"null","z":"3.37","y":"37.55","mobile":0,"x":"12.23"},{"site":"grenoble","uid":"bf1e","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-200.grenoble.iot-lab.info","mobility_type":"null","z":"3.37","y":"37.55","mobile":0,"x":"13.25"},{"site":"grenoble","uid":"c311","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-201.grenoble.iot-lab.info","mobility_type":"null","z":"3.37","y":"37.55","mobile":0,"x":"14.26"},{"site":"grenoble","uid":"b4f0","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-202.grenoble.iot-lab.info","mobility_type":"null","z":"3.37","y":"37.55","mobile":0,"x":"15.26"},{"site":"grenoble","uid":"cebe","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-203.grenoble.iot-lab.info","mobility_type":"null","z":"3.37","y":"37.55","mobile":0,"x":"16.26"},{"site":"grenoble","uid":"b6b3","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-204.grenoble.iot-lab.info","mobility_type":"null","z":"2.8","y":"37.82","mobile":0,"x":"3.23"},{"site":"grenoble","uid":"b5d5","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-205.grenoble.iot-lab.info","mobility_type":"null","z":"2.95","y":"37.82","mobile":0,"x":"4.23"},{"site":"grenoble","uid":"c8fd","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-206.grenoble.iot-lab.info","mobility_type":"null","z":"3.1","y":"37.82","mobile":0,"x":"5.03"},{"site":"grenoble","uid":"b8f3","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-207.grenoble.iot-lab.info","mobility_type":"null","z":"2.3","y":"37.82","mobile":0,"x":"4.78"},{"site":"grenoble","uid":"ca86","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-208.grenoble.iot-lab.info","mobility_type":"null","z":"2.55","y":"37.82","mobile":0,"x":"6.13"},{"site":"grenoble","uid":"b9a2","archi":"wsn430:cc1101","state":"Suspected","network_address":"wsn430-209.grenoble.iot-lab.info","mobility_type":"null","z":"3.2","y":"38.07","mobile":0,"x":"6.91"},{"site":"grenoble","uid":"cf50","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-210.grenoble.iot-lab.info","mobility_type":"null","z":"2.18","y":"38.07","mobile":0,"x":"6.91"},{"site":"grenoble","uid":"bfb3","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-211.grenoble.iot-lab.info","mobility_type":"null","z":"2.13","y":"38.87","mobile":0,"x":"6.91"},{"site":"grenoble","uid":"b72f","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-212.grenoble.iot-lab.info","mobility_type":"null","z":"2.43","y":"37.77","mobile":0,"x":"12.23"},{"site":"grenoble","uid":"c08f","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-213.grenoble.iot-lab.info","mobility_type":"null","z":"2.37","y":"37.77","mobile":0,"x":"12.98"},{"site":"grenoble","uid":"b7e4","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-214.grenoble.iot-lab.info","mobility_type":"null","z":"2.48","y":"37.77","mobile":0,"x":"13.93"},{"site":"grenoble","uid":"c00a","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-215.grenoble.iot-lab.info","mobility_type":"null","z":"2.6","y":"37.77","mobile":0,"x":"14.96"},{"site":"grenoble","uid":"cdfc","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-216.grenoble.iot-lab.info","mobility_type":"null","z":"2.7","y":"37.77","mobile":0,"x":"16.06"},{"site":"grenoble","uid":"b451","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-217.grenoble.iot-lab.info","mobility_type":"null","z":"2.2","y":"37.77","mobile":0,"x":"17.08"},{"site":"grenoble","uid":"b48c","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-218.grenoble.iot-lab.info","mobility_type":"null","z":"3.35","y":"38.59","mobile":0,"x":"7.84"},{"site":"grenoble","uid":"c3ee","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-219.grenoble.iot-lab.info","mobility_type":"null","z":"3.35","y":"39.55","mobile":0,"x":"7.84"},{"site":"grenoble","uid":"b8c3","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-220.grenoble.iot-lab.info","mobility_type":"null","z":"3.35","y":"40.55","mobile":0,"x":"7.86"},{"site":"grenoble","uid":"b7b6","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-221.grenoble.iot-lab.info","mobility_type":"null","z":"3.35","y":"41.45","mobile":0,"x":"7.86"},{"site":"grenoble","uid":"b15e","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-222.grenoble.iot-lab.info","mobility_type":"null","z":"3.6","y":"38.54","mobile":0,"x":"9.96"},{"site":"grenoble","uid":"b434","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-223.grenoble.iot-lab.info","mobility_type":"null","z":"3.6","y":"39.49","mobile":0,"x":"9.98"},{"site":"grenoble","uid":"ccb0","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-224.grenoble.iot-lab.info","mobility_type":"null","z":"3.6","y":"40.51","mobile":0,"x":"9.98"},{"site":"grenoble","uid":"cc9f","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-225.grenoble.iot-lab.info","mobility_type":"null","z":"3.6","y":"41.41","mobile":0,"x":"9.98"},{"site":"grenoble","uid":"c836","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-226.grenoble.iot-lab.info","mobility_type":"null","z":"3.6","y":"42.41","mobile":0,"x":"9.96"},{"site":"grenoble","uid":"ca8a","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-227.grenoble.iot-lab.info","mobility_type":"null","z":"3.35","y":"38.57","mobile":0,"x":"11.34"},{"site":"grenoble","uid":"cd71","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-228.grenoble.iot-lab.info","mobility_type":"null","z":"3.35","y":"39.57","mobile":0,"x":"11.36"},{"site":"grenoble","uid":"b2c4","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-229.grenoble.iot-lab.info","mobility_type":"null","z":"3.35","y":"40.57","mobile":0,"x":"11.36"},{"site":"grenoble","uid":"b33f","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-230.grenoble.iot-lab.info","mobility_type":"null","z":"3.35","y":"41.47","mobile":0,"x":"11.36"},{"site":"grenoble","uid":"c31a","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-231.grenoble.iot-lab.info","mobility_type":"null","z":"2.57","y":"37.32","mobile":0,"x":"8.53"},{"site":"grenoble","uid":"b565","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-232.grenoble.iot-lab.info","mobility_type":"null","z":"2.57","y":"38.43","mobile":0,"x":"8.53"},{"site":"grenoble","uid":"b700","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-233.grenoble.iot-lab.info","mobility_type":"null","z":"2.57","y":"39.45","mobile":0,"x":"8.53"},{"site":"grenoble","uid":"c63c","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-234.grenoble.iot-lab.info","mobility_type":"null","z":"2.57","y":"37.34","mobile":0,"x":"10.24"},{"site":"grenoble","uid":"c5cc","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-235.grenoble.iot-lab.info","mobility_type":"null","z":"2.57","y":"38.24","mobile":0,"x":"10.24"},{"site":"grenoble","uid":"cee7","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-236.grenoble.iot-lab.info","mobility_type":"null","z":"2.57","y":"39.47","mobile":0,"x":"10.24"},{"site":"grenoble","uid":"c543","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-237.grenoble.iot-lab.info","mobility_type":"null","z":"3.5","y":"39.77","mobile":0,"x":"6.91"},{"site":"grenoble","uid":"ce47","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-238.grenoble.iot-lab.info","mobility_type":"null","z":"2.66","y":"40.28","mobile":0,"x":"8.83"},{"site":"grenoble","uid":"c108","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-239.grenoble.iot-lab.info","mobility_type":"null","z":"3.25","y":"41.77","mobile":0,"x":"6.91"},{"site":"grenoble","uid":"bc0f","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-240.grenoble.iot-lab.info","mobility_type":"null","z":"3.34","y":"42.8","mobile":0,"x":"9.51"},{"site":"grenoble","uid":"ca22","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-241.grenoble.iot-lab.info","mobility_type":"null","z":"3.7","y":"40.05","mobile":0,"x":"8.56"},{"site":"grenoble","uid":"c6c4","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-242.grenoble.iot-lab.info","mobility_type":"null","z":"3.53","y":"40.87","mobile":0,"x":"6.91"},{"site":"grenoble","uid":"b14d","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-243.grenoble.iot-lab.info","mobility_type":"null","z":"3.34","y":"41.87","mobile":0,"x":"9.51"},{"site":"grenoble","uid":"b8c8","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-244.grenoble.iot-lab.info","mobility_type":"null","z":"3.7","y":"40.09","mobile":0,"x":"10.36"},{"site":"grenoble","uid":"ce6c","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-245.grenoble.iot-lab.info","mobility_type":"null","z":"3.37","y":"38.42","mobile":0,"x":"10.51"},{"site":"grenoble","uid":"bdf0","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-246.grenoble.iot-lab.info","mobility_type":"null","z":"3.63","y":"42.95","mobile":0,"x":"11.41"},{"site":"grenoble","uid":"c819","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-247.grenoble.iot-lab.info","mobility_type":"null","z":"3.65","y":"41.31","mobile":0,"x":"12.23"},{"site":"grenoble","uid":"b4e4","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-248.grenoble.iot-lab.info","mobility_type":"null","z":"2.6","y":"40.28","mobile":0,"x":"10.24"},{"site":"grenoble","uid":"c94e","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-249.grenoble.iot-lab.info","mobility_type":"null","z":"3.27","y":"41.91","mobile":0,"x":"12.23"},{"site":"grenoble","uid":"c8fb","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-250.grenoble.iot-lab.info","mobility_type":"null","z":"3.53","y":"40.57","mobile":0,"x":"12.23"},{"site":"grenoble","uid":"be2e","archi":"wsn430:cc1101","state":"Suspected","network_address":"wsn430-251.grenoble.iot-lab.info","mobility_type":"null","z":"3.62","y":"42.95","mobile":0,"x":"7.31"},{"site":"grenoble","uid":"c4ed","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-252.grenoble.iot-lab.info","mobility_type":"null","z":"3.63","y":"42.95","mobile":0,"x":"8.12"},{"site":"grenoble","uid":"b669","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-253.grenoble.iot-lab.info","mobility_type":"null","z":"3.63","y":"42.95","mobile":0,"x":"8.88"},{"site":"grenoble","uid":"cd4c","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-254.grenoble.iot-lab.info","mobility_type":"null","z":"3.35","y":"41.9","mobile":0,"x":"7.69"},{"site":"grenoble","uid":"unknown","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-255.grenoble.iot-lab.info","mobility_type":"null","z":"3.66","y":"42.95","mobile":0,"x":"10.13"},{"site":"grenoble","uid":"b806","archi":"wsn430:cc1101","state":"Absent","network_address":"wsn430-256.grenoble.iot-lab.info","mobility_type":"null","z":"1.04","y":"32.68","mobile":0,"x":"5.7"},{"site":"rennes","uid":"caf5","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-1.rennes.iot-lab.info","mobility_type":"null","z":"2.912","y":"0.14","mobile":0,"x":"-4.62"},{"site":"rennes","uid":"ca73","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-2.rennes.iot-lab.info","mobility_type":"null","z":"2.912","y":"0.744","mobile":0,"x":"-4.62"},{"site":"rennes","uid":"c88c","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-3.rennes.iot-lab.info","mobility_type":"null","z":"2.911","y":"1.348","mobile":0,"x":"-4.62"},{"site":"rennes","uid":"unknown","archi":"wsn430:cc2420","state":"Suspected","network_address":"wsn430-4.rennes.iot-lab.info","mobility_type":"null","z":"2.911","y":"1.952","mobile":0,"x":"-4.62"},{"site":"rennes","uid":"b1c3","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-5.rennes.iot-lab.info","mobility_type":"null","z":"2.911","y":"2.556","mobile":0,"x":"-4.62"},{"site":"rennes","uid":"unknown","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-6.rennes.iot-lab.info","mobility_type":"null","z":"2.91","y":"3.161","mobile":0,"x":"-4.62"},{"site":"rennes","uid":"b704","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-7.rennes.iot-lab.info","mobility_type":"null","z":"2.91","y":"3.765","mobile":0,"x":"-4.62"},{"site":"rennes","uid":"c351","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-8.rennes.iot-lab.info","mobility_type":"null","z":"2.91","y":"4.369","mobile":0,"x":"-4.62"},{"site":"rennes","uid":"bc98","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-9.rennes.iot-lab.info","mobility_type":"null","z":"2.91","y":"4.973","mobile":0,"x":"-4.62"},{"site":"rennes","uid":"b344","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-10.rennes.iot-lab.info","mobility_type":"null","z":"2.909","y":"5.577","mobile":0,"x":"-4.62"},{"site":"rennes","uid":"c59b","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-11.rennes.iot-lab.info","mobility_type":"null","z":"2.909","y":"6.181","mobile":0,"x":"-4.62"},{"site":"rennes","uid":"unknown","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-12.rennes.iot-lab.info","mobility_type":"null","z":"2.909","y":"6.785","mobile":0,"x":"-4.62"},{"site":"rennes","uid":"c09a","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-13.rennes.iot-lab.info","mobility_type":"null","z":"2.908","y":"7.389","mobile":0,"x":"-4.62"},{"site":"rennes","uid":"bd6e","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-14.rennes.iot-lab.info","mobility_type":"null","z":"2.908","y":"7.994","mobile":0,"x":"-4.62"},{"site":"rennes","uid":"c0e9","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-15.rennes.iot-lab.info","mobility_type":"null","z":"2.908","y":"8.598","mobile":0,"x":"-4.62"},{"site":"rennes","uid":"ca0a","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-16.rennes.iot-lab.info","mobility_type":"null","z":"2.907","y":"9.202","mobile":0,"x":"-4.62"},{"site":"rennes","uid":"b583","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-17.rennes.iot-lab.info","mobility_type":"null","z":"2.907","y":"9.806","mobile":0,"x":"-4.62"},{"site":"rennes","uid":"b8d6","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-18.rennes.iot-lab.info","mobility_type":"null","z":"2.907","y":"10.41","mobile":0,"x":"-4.62"},{"site":"rennes","uid":"c579","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-19.rennes.iot-lab.info","mobility_type":"null","z":"2.907","y":"11.014","mobile":0,"x":"-4.62"},{"site":"rennes","uid":"beeb","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-20.rennes.iot-lab.info","mobility_type":"null","z":"2.906","y":"11.618","mobile":0,"x":"-4.62"},{"site":"rennes","uid":"c5e7","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-21.rennes.iot-lab.info","mobility_type":"null","z":"2.906","y":"12.222","mobile":0,"x":"-4.62"},{"site":"rennes","uid":"c2bb","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-22.rennes.iot-lab.info","mobility_type":"null","z":"2.906","y":"12.826","mobile":0,"x":"-4.62"},{"site":"rennes","uid":"1c15","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-23.rennes.iot-lab.info","mobility_type":"null","z":"2.905","y":"13.431","mobile":0,"x":"-4.62"},{"site":"rennes","uid":"cb97","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-24.rennes.iot-lab.info","mobility_type":"null","z":"2.905","y":"14.035","mobile":0,"x":"-4.62"},{"site":"rennes","uid":"b4bc","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-25.rennes.iot-lab.info","mobility_type":"null","z":"2.912","y":"0.14","mobile":0,"x":"-3.796"},{"site":"rennes","uid":"b502","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-26.rennes.iot-lab.info","mobility_type":"null","z":"2.912","y":"0.744","mobile":0,"x":"-3.796"},{"site":"rennes","uid":"c89a","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-27.rennes.iot-lab.info","mobility_type":"null","z":"2.911","y":"1.348","mobile":0,"x":"-3.796"},{"site":"rennes","uid":"c32c","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-28.rennes.iot-lab.info","mobility_type":"null","z":"2.911","y":"1.952","mobile":0,"x":"-3.796"},{"site":"rennes","uid":"b792","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-29.rennes.iot-lab.info","mobility_type":"null","z":"2.911","y":"2.556","mobile":0,"x":"-3.796"},{"site":"rennes","uid":"c3a8","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-30.rennes.iot-lab.info","mobility_type":"null","z":"2.91","y":"3.161","mobile":0,"x":"-3.796"},{"site":"rennes","uid":"c7a8","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-31.rennes.iot-lab.info","mobility_type":"null","z":"2.91","y":"3.765","mobile":0,"x":"-3.796"},{"site":"rennes","uid":"ba43","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-32.rennes.iot-lab.info","mobility_type":"null","z":"2.91","y":"4.369","mobile":0,"x":"-3.796"},{"site":"rennes","uid":"unknown","archi":"wsn430:cc2420","state":"Absent","network_address":"wsn430-33.rennes.iot-lab.info","mobility_type":"null","z":"2.91","y":"4.973","mobile":0,"x":"-3.796"},{"site":"rennes","uid":"c7cf","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-34.rennes.iot-lab.info","mobility_type":"null","z":"2.909","y":"5.577","mobile":0,"x":"-3.796"},{"site":"rennes","uid":"b920","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-35.rennes.iot-lab.info","mobility_type":"null","z":"2.909","y":"6.181","mobile":0,"x":"-3.796"},{"site":"rennes","uid":"bd97","archi":"wsn430:cc2420","state":"Suspected","network_address":"wsn430-36.rennes.iot-lab.info","mobility_type":"null","z":"2.909","y":"6.785","mobile":0,"x":"-3.796"},{"site":"rennes","uid":"bafb","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-37.rennes.iot-lab.info","mobility_type":"null","z":"2.908","y":"7.389","mobile":0,"x":"-3.796"},{"site":"rennes","uid":"b81d","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-38.rennes.iot-lab.info","mobility_type":"null","z":"2.908","y":"7.994","mobile":0,"x":"-3.796"},{"site":"rennes","uid":"b525","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-39.rennes.iot-lab.info","mobility_type":"null","z":"2.908","y":"8.598","mobile":0,"x":"-3.796"},{"site":"rennes","uid":"c032","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-40.rennes.iot-lab.info","mobility_type":"null","z":"2.907","y":"9.202","mobile":0,"x":"-3.796"},{"site":"rennes","uid":"c475","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-41.rennes.iot-lab.info","mobility_type":"null","z":"2.907","y":"9.806","mobile":0,"x":"-3.796"},{"site":"rennes","uid":"b192","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-42.rennes.iot-lab.info","mobility_type":"null","z":"2.907","y":"10.41","mobile":0,"x":"-3.796"},{"site":"rennes","uid":"bcd2","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-43.rennes.iot-lab.info","mobility_type":"null","z":"2.907","y":"11.014","mobile":0,"x":"-3.796"},{"site":"rennes","uid":"c632","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-44.rennes.iot-lab.info","mobility_type":"null","z":"2.906","y":"11.618","mobile":0,"x":"-3.796"},{"site":"rennes","uid":"unknown","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-45.rennes.iot-lab.info","mobility_type":"null","z":"2.906","y":"12.222","mobile":0,"x":"-3.796"},{"site":"rennes","uid":"b1a3","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-46.rennes.iot-lab.info","mobility_type":"null","z":"2.906","y":"12.826","mobile":0,"x":"-3.796"},{"site":"rennes","uid":"unknown","archi":"wsn430:cc2420","state":"Suspected","network_address":"wsn430-47.rennes.iot-lab.info","mobility_type":"null","z":"2.905","y":"13.431","mobile":0,"x":"-3.796"},{"site":"rennes","uid":"unknown","archi":"wsn430:cc2420","state":"Absent","network_address":"wsn430-48.rennes.iot-lab.info","mobility_type":"null","z":"2.905","y":"14.035","mobile":0,"x":"-3.796"},{"site":"rennes","uid":"1f52","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-49.rennes.iot-lab.info","mobility_type":"null","z":"2.912","y":"0.14","mobile":0,"x":"-2.972"},{"site":"rennes","uid":"cf06","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-50.rennes.iot-lab.info","mobility_type":"null","z":"2.912","y":"0.744","mobile":0,"x":"-2.972"},{"site":"rennes","uid":"b1b6","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-51.rennes.iot-lab.info","mobility_type":"null","z":"2.911","y":"1.348","mobile":0,"x":"-2.972"},{"site":"rennes","uid":"c713","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-52.rennes.iot-lab.info","mobility_type":"null","z":"2.911","y":"1.952","mobile":0,"x":"-2.972"},{"site":"rennes","uid":"be69","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-53.rennes.iot-lab.info","mobility_type":"null","z":"2.911","y":"2.556","mobile":0,"x":"-2.972"},{"site":"rennes","uid":"c41c","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-54.rennes.iot-lab.info","mobility_type":"null","z":"2.91","y":"3.161","mobile":0,"x":"-2.972"},{"site":"rennes","uid":"b1ce","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-55.rennes.iot-lab.info","mobility_type":"null","z":"2.91","y":"3.765","mobile":0,"x":"-2.972"},{"site":"rennes","uid":"bf0e","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-56.rennes.iot-lab.info","mobility_type":"null","z":"2.91","y":"4.369","mobile":0,"x":"-2.972"},{"site":"rennes","uid":"b7a4","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-57.rennes.iot-lab.info","mobility_type":"null","z":"2.91","y":"4.973","mobile":0,"x":"-2.972"},{"site":"rennes","uid":"b712","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-58.rennes.iot-lab.info","mobility_type":"null","z":"2.909","y":"5.577","mobile":0,"x":"-2.972"},{"site":"rennes","uid":"cf01","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-59.rennes.iot-lab.info","mobility_type":"null","z":"2.909","y":"6.181","mobile":0,"x":"-2.972"},{"site":"rennes","uid":"b4a4","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-60.rennes.iot-lab.info","mobility_type":"null","z":"2.909","y":"6.785","mobile":0,"x":"-2.972"},{"site":"rennes","uid":"c118","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-61.rennes.iot-lab.info","mobility_type":"null","z":"2.908","y":"7.389","mobile":0,"x":"-2.972"},{"site":"rennes","uid":"ca5a","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-62.rennes.iot-lab.info","mobility_type":"null","z":"2.908","y":"7.994","mobile":0,"x":"-2.972"},{"site":"rennes","uid":"unknown","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-63.rennes.iot-lab.info","mobility_type":"null","z":"2.908","y":"8.598","mobile":0,"x":"-2.972"},{"site":"rennes","uid":"b3fc","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-64.rennes.iot-lab.info","mobility_type":"null","z":"2.907","y":"9.202","mobile":0,"x":"-2.972"},{"site":"rennes","uid":"c3bd","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-65.rennes.iot-lab.info","mobility_type":"null","z":"2.907","y":"9.806","mobile":0,"x":"-2.972"},{"site":"rennes","uid":"c73e","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-66.rennes.iot-lab.info","mobility_type":"null","z":"2.907","y":"10.41","mobile":0,"x":"-2.972"},{"site":"rennes","uid":"bc5a","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-67.rennes.iot-lab.info","mobility_type":"null","z":"2.907","y":"11.014","mobile":0,"x":"-2.972"},{"site":"rennes","uid":"c872","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-68.rennes.iot-lab.info","mobility_type":"null","z":"2.906","y":"11.618","mobile":0,"x":"-2.972"},{"site":"rennes","uid":"be7c","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-69.rennes.iot-lab.info","mobility_type":"null","z":"2.906","y":"12.222","mobile":0,"x":"-2.972"},{"site":"rennes","uid":"c05f","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-70.rennes.iot-lab.info","mobility_type":"null","z":"2.906","y":"12.826","mobile":0,"x":"-2.972"},{"site":"rennes","uid":"b234","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-71.rennes.iot-lab.info","mobility_type":"null","z":"2.905","y":"13.431","mobile":0,"x":"-2.972"},{"site":"rennes","uid":"unknown","archi":"wsn430:cc2420","state":"Suspected","network_address":"wsn430-72.rennes.iot-lab.info","mobility_type":"null","z":"2.905","y":"14.035","mobile":0,"x":"-2.972"},{"site":"rennes","uid":"c345","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-73.rennes.iot-lab.info","mobility_type":"null","z":"2.912","y":"0.14","mobile":0,"x":"-2.148"},{"site":"rennes","uid":"c33c","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-74.rennes.iot-lab.info","mobility_type":"null","z":"2.912","y":"0.744","mobile":0,"x":"-2.148"},{"site":"rennes","uid":"1c06","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-75.rennes.iot-lab.info","mobility_type":"null","z":"2.911","y":"1.348","mobile":0,"x":"-2.148"},{"site":"rennes","uid":"unknown","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-76.rennes.iot-lab.info","mobility_type":"null","z":"2.911","y":"1.952","mobile":0,"x":"-2.148"},{"site":"rennes","uid":"c760","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-77.rennes.iot-lab.info","mobility_type":"null","z":"2.911","y":"2.556","mobile":0,"x":"-2.148"},{"site":"rennes","uid":"b775","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-78.rennes.iot-lab.info","mobility_type":"null","z":"2.91","y":"3.161","mobile":0,"x":"-2.148"},{"site":"rennes","uid":"unknown","archi":"wsn430:cc2420","state":"Absent","network_address":"wsn430-79.rennes.iot-lab.info","mobility_type":"null","z":"2.91","y":"3.765","mobile":0,"x":"-2.148"},{"site":"rennes","uid":"c5b4","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-80.rennes.iot-lab.info","mobility_type":"null","z":"2.91","y":"4.369","mobile":0,"x":"-2.148"},{"site":"rennes","uid":"c9ce","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-81.rennes.iot-lab.info","mobility_type":"null","z":"2.91","y":"4.973","mobile":0,"x":"-2.148"},{"site":"rennes","uid":"b964","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-82.rennes.iot-lab.info","mobility_type":"null","z":"2.909","y":"5.577","mobile":0,"x":"-2.148"},{"site":"rennes","uid":"c688","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-83.rennes.iot-lab.info","mobility_type":"null","z":"2.909","y":"6.181","mobile":0,"x":"-2.148"},{"site":"rennes","uid":"unknown","archi":"wsn430:cc2420","state":"Absent","network_address":"wsn430-84.rennes.iot-lab.info","mobility_type":"null","z":"2.909","y":"6.785","mobile":0,"x":"-2.148"},{"site":"rennes","uid":"b228","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-85.rennes.iot-lab.info","mobility_type":"null","z":"2.908","y":"7.389","mobile":0,"x":"-2.148"},{"site":"rennes","uid":"c171","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-86.rennes.iot-lab.info","mobility_type":"null","z":"2.908","y":"7.994","mobile":0,"x":"-2.148"},{"site":"rennes","uid":"b5b2","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-87.rennes.iot-lab.info","mobility_type":"null","z":"2.908","y":"8.598","mobile":0,"x":"-2.148"},{"site":"rennes","uid":"b9e9","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-88.rennes.iot-lab.info","mobility_type":"null","z":"2.907","y":"9.202","mobile":0,"x":"-2.148"},{"site":"rennes","uid":"c715","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-89.rennes.iot-lab.info","mobility_type":"null","z":"2.907","y":"9.806","mobile":0,"x":"-2.148"},{"site":"rennes","uid":"c9c5","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-90.rennes.iot-lab.info","mobility_type":"null","z":"2.907","y":"10.41","mobile":0,"x":"-2.148"},{"site":"rennes","uid":"b627","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-91.rennes.iot-lab.info","mobility_type":"null","z":"2.907","y":"11.014","mobile":0,"x":"-2.148"},{"site":"rennes","uid":"b78c","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-92.rennes.iot-lab.info","mobility_type":"null","z":"2.906","y":"11.618","mobile":0,"x":"-2.148"},{"site":"rennes","uid":"afee","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-93.rennes.iot-lab.info","mobility_type":"null","z":"2.906","y":"12.222","mobile":0,"x":"-2.148"},{"site":"rennes","uid":"c0a5","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-94.rennes.iot-lab.info","mobility_type":"null","z":"2.906","y":"12.826","mobile":0,"x":"-2.148"},{"site":"rennes","uid":"c751","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-95.rennes.iot-lab.info","mobility_type":"null","z":"2.905","y":"13.431","mobile":0,"x":"-2.148"},{"site":"rennes","uid":"cb5a","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-96.rennes.iot-lab.info","mobility_type":"null","z":"2.905","y":"14.035","mobile":0,"x":"-2.148"},{"site":"rennes","uid":"cdaa","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-97.rennes.iot-lab.info","mobility_type":"null","z":"2.912","y":"0.14","mobile":0,"x":"-1.324"},{"site":"rennes","uid":"unknown","archi":"wsn430:cc2420","state":"Absent","network_address":"wsn430-98.rennes.iot-lab.info","mobility_type":"null","z":"2.912","y":"0.744","mobile":0,"x":"-1.324"},{"site":"rennes","uid":"unknown","archi":"wsn430:cc2420","state":"Absent","network_address":"wsn430-99.rennes.iot-lab.info","mobility_type":"null","z":"2.911","y":"1.348","mobile":0,"x":"-1.324"},{"site":"rennes","uid":"unknown","archi":"wsn430:cc2420","state":"Absent","network_address":"wsn430-100.rennes.iot-lab.info","mobility_type":"null","z":"2.911","y":"1.952","mobile":0,"x":"-1.324"},{"site":"rennes","uid":"1f54","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-101.rennes.iot-lab.info","mobility_type":"null","z":"2.911","y":"2.556","mobile":0,"x":"-1.324"},{"site":"rennes","uid":"2033","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-102.rennes.iot-lab.info","mobility_type":"null","z":"2.91","y":"3.161","mobile":0,"x":"-1.324"},{"site":"rennes","uid":"unknown","archi":"wsn430:cc2420","state":"Absent","network_address":"wsn430-103.rennes.iot-lab.info","mobility_type":"null","z":"2.91","y":"3.765","mobile":0,"x":"-1.324"},{"site":"rennes","uid":"bca8","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-104.rennes.iot-lab.info","mobility_type":"null","z":"2.91","y":"4.369","mobile":0,"x":"-1.324"},{"site":"rennes","uid":"unknown","archi":"wsn430:cc2420","state":"Absent","network_address":"wsn430-105.rennes.iot-lab.info","mobility_type":"null","z":"2.91","y":"4.973","mobile":0,"x":"-1.324"},{"site":"rennes","uid":"c6ab","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-106.rennes.iot-lab.info","mobility_type":"null","z":"2.909","y":"5.577","mobile":0,"x":"-1.324"},{"site":"rennes","uid":"unknown","archi":"wsn430:cc2420","state":"Suspected","network_address":"wsn430-107.rennes.iot-lab.info","mobility_type":"null","z":"2.909","y":"6.181","mobile":0,"x":"-1.324"},{"site":"rennes","uid":"unknown","archi":"wsn430:cc2420","state":"Absent","network_address":"wsn430-108.rennes.iot-lab.info","mobility_type":"null","z":"2.909","y":"6.785","mobile":0,"x":"-1.324"},{"site":"rennes","uid":"unknown","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-109.rennes.iot-lab.info","mobility_type":"null","z":"2.908","y":"7.389","mobile":0,"x":"-1.324"},{"site":"rennes","uid":"c6cb","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-110.rennes.iot-lab.info","mobility_type":"null","z":"2.908","y":"7.994","mobile":0,"x":"-1.324"},{"site":"rennes","uid":"c4e2","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-111.rennes.iot-lab.info","mobility_type":"null","z":"2.908","y":"8.598","mobile":0,"x":"-1.324"},{"site":"rennes","uid":"unknown","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-112.rennes.iot-lab.info","mobility_type":"null","z":"2.907","y":"9.202","mobile":0,"x":"-1.324"},{"site":"rennes","uid":"b91d","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-113.rennes.iot-lab.info","mobility_type":"null","z":"2.907","y":"9.806","mobile":0,"x":"-1.324"},{"site":"rennes","uid":"cc99","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-114.rennes.iot-lab.info","mobility_type":"null","z":"2.907","y":"10.41","mobile":0,"x":"-1.324"},{"site":"rennes","uid":"unknown","archi":"wsn430:cc2420","state":"Suspected","network_address":"wsn430-115.rennes.iot-lab.info","mobility_type":"null","z":"2.907","y":"11.014","mobile":0,"x":"-1.324"},{"site":"rennes","uid":"cae2","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-116.rennes.iot-lab.info","mobility_type":"null","z":"2.906","y":"11.618","mobile":0,"x":"-1.324"},{"site":"rennes","uid":"unknown","archi":"wsn430:cc2420","state":"Suspected","network_address":"wsn430-117.rennes.iot-lab.info","mobility_type":"null","z":"2.906","y":"12.222","mobile":0,"x":"-1.324"},{"site":"rennes","uid":"bca5","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-118.rennes.iot-lab.info","mobility_type":"null","z":"2.906","y":"12.826","mobile":0,"x":"-1.324"},{"site":"rennes","uid":"be2a","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-119.rennes.iot-lab.info","mobility_type":"null","z":"2.905","y":"13.431","mobile":0,"x":"-1.324"},{"site":"rennes","uid":"c3da","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-120.rennes.iot-lab.info","mobility_type":"null","z":"2.905","y":"14.035","mobile":0,"x":"-1.324"},{"site":"rennes","uid":"b2d4","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-121.rennes.iot-lab.info","mobility_type":"null","z":"2.912","y":"0.14","mobile":0,"x":"-0.5"},{"site":"rennes","uid":"c929","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-122.rennes.iot-lab.info","mobility_type":"null","z":"2.912","y":"0.744","mobile":0,"x":"-0.5"},{"site":"rennes","uid":"c24a","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-123.rennes.iot-lab.info","mobility_type":"null","z":"2.911","y":"1.348","mobile":0,"x":"-0.5"},{"site":"rennes","uid":"unknown","archi":"wsn430:cc2420","state":"Absent","network_address":"wsn430-124.rennes.iot-lab.info","mobility_type":"null","z":"2.911","y":"1.952","mobile":0,"x":"-0.5"},{"site":"rennes","uid":"b225","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-125.rennes.iot-lab.info","mobility_type":"null","z":"2.911","y":"2.556","mobile":0,"x":"-0.5"},{"site":"rennes","uid":"c0b1","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-126.rennes.iot-lab.info","mobility_type":"null","z":"2.91","y":"3.161","mobile":0,"x":"-0.5"},{"site":"rennes","uid":"b203","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-127.rennes.iot-lab.info","mobility_type":"null","z":"2.91","y":"3.765","mobile":0,"x":"-0.5"},{"site":"rennes","uid":"c159","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-128.rennes.iot-lab.info","mobility_type":"null","z":"2.91","y":"4.369","mobile":0,"x":"-0.5"},{"site":"rennes","uid":"b16d","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-129.rennes.iot-lab.info","mobility_type":"null","z":"2.91","y":"4.973","mobile":0,"x":"-0.5"},{"site":"rennes","uid":"unknown","archi":"wsn430:cc2420","state":"Absent","network_address":"wsn430-130.rennes.iot-lab.info","mobility_type":"null","z":"2.909","y":"5.577","mobile":0,"x":"-0.5"},{"site":"rennes","uid":"unknown","archi":"wsn430:cc2420","state":"Suspected","network_address":"wsn430-131.rennes.iot-lab.info","mobility_type":"null","z":"2.909","y":"6.181","mobile":0,"x":"-0.5"},{"site":"rennes","uid":"unknown","archi":"wsn430:cc2420","state":"Suspected","network_address":"wsn430-132.rennes.iot-lab.info","mobility_type":"null","z":"2.909","y":"6.785","mobile":0,"x":"-0.5"},{"site":"rennes","uid":"cb1c","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-133.rennes.iot-lab.info","mobility_type":"null","z":"2.908","y":"7.389","mobile":0,"x":"-0.5"},{"site":"rennes","uid":"b370","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-134.rennes.iot-lab.info","mobility_type":"null","z":"2.908","y":"7.994","mobile":0,"x":"-0.5"},{"site":"rennes","uid":"b973","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-135.rennes.iot-lab.info","mobility_type":"null","z":"2.908","y":"8.598","mobile":0,"x":"-0.5"},{"site":"rennes","uid":"ca15","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-136.rennes.iot-lab.info","mobility_type":"null","z":"2.907","y":"9.202","mobile":0,"x":"-0.5"},{"site":"rennes","uid":"unknown","archi":"wsn430:cc2420","state":"Absent","network_address":"wsn430-137.rennes.iot-lab.info","mobility_type":"null","z":"2.907","y":"9.806","mobile":0,"x":"-0.5"},{"site":"rennes","uid":"b1f9","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-138.rennes.iot-lab.info","mobility_type":"null","z":"2.907","y":"10.41","mobile":0,"x":"-0.5"},{"site":"rennes","uid":"b84e","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-139.rennes.iot-lab.info","mobility_type":"null","z":"2.907","y":"11.014","mobile":0,"x":"-0.5"},{"site":"rennes","uid":"ce4a","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-140.rennes.iot-lab.info","mobility_type":"null","z":"2.906","y":"11.618","mobile":0,"x":"-0.5"},{"site":"rennes","uid":"2036","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-141.rennes.iot-lab.info","mobility_type":"null","z":"2.906","y":"12.222","mobile":0,"x":"-0.5"},{"site":"rennes","uid":"be91","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-142.rennes.iot-lab.info","mobility_type":"null","z":"2.906","y":"12.826","mobile":0,"x":"-0.5"},{"site":"rennes","uid":"b8f2","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-143.rennes.iot-lab.info","mobility_type":"null","z":"2.905","y":"13.431","mobile":0,"x":"-0.5"},{"site":"rennes","uid":"b301","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-144.rennes.iot-lab.info","mobility_type":"null","z":"2.905","y":"14.035","mobile":0,"x":"-0.5"},{"site":"rennes","uid":"cac1","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-145.rennes.iot-lab.info","mobility_type":"null","z":"2.66","y":"0.51","mobile":0,"x":"0.66"},{"site":"rennes","uid":"unknown","archi":"wsn430:cc2420","state":"Suspected","network_address":"wsn430-146.rennes.iot-lab.info","mobility_type":"null","z":"2.8","y":"1.46","mobile":0,"x":"0.66"},{"site":"rennes","uid":"cb96","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-147.rennes.iot-lab.info","mobility_type":"null","z":"2.69","y":"2.51","mobile":0,"x":"0.66"},{"site":"rennes","uid":"bdae","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-148.rennes.iot-lab.info","mobility_type":"null","z":"2.7","y":"3.11","mobile":0,"x":"0.66"},{"site":"rennes","uid":"bb1f","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-149.rennes.iot-lab.info","mobility_type":"null","z":"2.912","y":"0.14","mobile":0,"x":"2.26"},{"site":"rennes","uid":"c989","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-150.rennes.iot-lab.info","mobility_type":"null","z":"2.912","y":"0.744","mobile":0,"x":"2.26"},{"site":"rennes","uid":"b5db","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-151.rennes.iot-lab.info","mobility_type":"null","z":"2.911","y":"1.348","mobile":0,"x":"2.26"},{"site":"rennes","uid":"b237","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-152.rennes.iot-lab.info","mobility_type":"null","z":"2.911","y":"1.952","mobile":0,"x":"2.26"},{"site":"rennes","uid":"bab9","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-153.rennes.iot-lab.info","mobility_type":"null","z":"2.91","y":"2.556","mobile":0,"x":"2.26"},{"site":"rennes","uid":"b83d","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-154.rennes.iot-lab.info","mobility_type":"null","z":"2.91","y":"3.161","mobile":0,"x":"2.26"},{"site":"rennes","uid":"b197","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-155.rennes.iot-lab.info","mobility_type":"null","z":"2.91","y":"3.765","mobile":0,"x":"2.26"},{"site":"rennes","uid":"c031","archi":"wsn430:cc2420","state":"Suspected","network_address":"wsn430-156.rennes.iot-lab.info","mobility_type":"null","z":"2.909","y":"4.369","mobile":0,"x":"2.26"},{"site":"rennes","uid":"b960","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-157.rennes.iot-lab.info","mobility_type":"null","z":"2.909","y":"4.973","mobile":0,"x":"2.26"},{"site":"rennes","uid":"unknown","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-158.rennes.iot-lab.info","mobility_type":"null","z":"2.908","y":"5.577","mobile":0,"x":"2.26"},{"site":"rennes","uid":"c156","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-159.rennes.iot-lab.info","mobility_type":"null","z":"2.908","y":"6.181","mobile":0,"x":"2.26"},{"site":"rennes","uid":"unknown","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-160.rennes.iot-lab.info","mobility_type":"null","z":"2.907","y":"6.785","mobile":0,"x":"2.26"},{"site":"rennes","uid":"b0f8","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-161.rennes.iot-lab.info","mobility_type":"null","z":"2.907","y":"7.389","mobile":0,"x":"2.26"},{"site":"rennes","uid":"cc73","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-162.rennes.iot-lab.info","mobility_type":"null","z":"2.907","y":"7.994","mobile":0,"x":"2.26"},{"site":"rennes","uid":"bf21","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-163.rennes.iot-lab.info","mobility_type":"null","z":"2.906","y":"8.598","mobile":0,"x":"2.26"},{"site":"rennes","uid":"b67b","archi":"wsn430:cc2420","state":"Suspected","network_address":"wsn430-164.rennes.iot-lab.info","mobility_type":"null","z":"2.906","y":"9.202","mobile":0,"x":"2.26"},{"site":"rennes","uid":"1f76","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-165.rennes.iot-lab.info","mobility_type":"null","z":"2.905","y":"9.806","mobile":0,"x":"2.26"},{"site":"rennes","uid":"c6e9","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-166.rennes.iot-lab.info","mobility_type":"null","z":"2.905","y":"10.41","mobile":0,"x":"2.26"},{"site":"rennes","uid":"bc0d","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-167.rennes.iot-lab.info","mobility_type":"null","z":"2.912","y":"0.14","mobile":0,"x":"3.084"},{"site":"rennes","uid":"c8d8","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-168.rennes.iot-lab.info","mobility_type":"null","z":"2.912","y":"0.744","mobile":0,"x":"3.084"},{"site":"rennes","uid":"b4a5","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-169.rennes.iot-lab.info","mobility_type":"null","z":"2.911","y":"1.348","mobile":0,"x":"3.084"},{"site":"rennes","uid":"c2ba","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-170.rennes.iot-lab.info","mobility_type":"null","z":"2.911","y":"1.952","mobile":0,"x":"3.084"},{"site":"rennes","uid":"cecd","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-171.rennes.iot-lab.info","mobility_type":"null","z":"2.91","y":"2.556","mobile":0,"x":"3.084"},{"site":"rennes","uid":"1ca1","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-172.rennes.iot-lab.info","mobility_type":"null","z":"2.91","y":"3.161","mobile":0,"x":"3.084"},{"site":"rennes","uid":"b056","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-173.rennes.iot-lab.info","mobility_type":"null","z":"2.91","y":"3.765","mobile":0,"x":"3.084"},{"site":"rennes","uid":"bb2b","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-174.rennes.iot-lab.info","mobility_type":"null","z":"2.909","y":"4.369","mobile":0,"x":"3.084"},{"site":"rennes","uid":"cee1","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-175.rennes.iot-lab.info","mobility_type":"null","z":"2.909","y":"4.973","mobile":0,"x":"3.084"},{"site":"rennes","uid":"b204","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-176.rennes.iot-lab.info","mobility_type":"null","z":"2.908","y":"5.577","mobile":0,"x":"3.084"},{"site":"rennes","uid":"c4ca","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-177.rennes.iot-lab.info","mobility_type":"null","z":"2.908","y":"6.181","mobile":0,"x":"3.084"},{"site":"rennes","uid":"c6ac","archi":"wsn430:cc2420","state":"Suspected","network_address":"wsn430-178.rennes.iot-lab.info","mobility_type":"null","z":"2.907","y":"6.785","mobile":0,"x":"3.084"},{"site":"rennes","uid":"b7fb","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-179.rennes.iot-lab.info","mobility_type":"null","z":"2.907","y":"7.389","mobile":0,"x":"3.084"},{"site":"rennes","uid":"b568","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-180.rennes.iot-lab.info","mobility_type":"null","z":"2.907","y":"7.994","mobile":0,"x":"3.084"},{"site":"rennes","uid":"cbc6","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-181.rennes.iot-lab.info","mobility_type":"null","z":"2.906","y":"8.598","mobile":0,"x":"3.084"},{"site":"rennes","uid":"bf52","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-182.rennes.iot-lab.info","mobility_type":"null","z":"2.906","y":"9.202","mobile":0,"x":"3.084"},{"site":"rennes","uid":"c059","archi":"wsn430:cc2420","state":"Suspected","network_address":"wsn430-183.rennes.iot-lab.info","mobility_type":"null","z":"2.905","y":"9.806","mobile":0,"x":"3.084"},{"site":"rennes","uid":"b529","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-184.rennes.iot-lab.info","mobility_type":"null","z":"2.905","y":"10.41","mobile":0,"x":"3.084"},{"site":"rennes","uid":"b91c","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-185.rennes.iot-lab.info","mobility_type":"null","z":"2.912","y":"0.14","mobile":0,"x":"3.908"},{"site":"rennes","uid":"bb46","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-186.rennes.iot-lab.info","mobility_type":"null","z":"2.912","y":"0.744","mobile":0,"x":"3.908"},{"site":"rennes","uid":"b077","archi":"wsn430:cc2420","state":"Suspected","network_address":"wsn430-187.rennes.iot-lab.info","mobility_type":"null","z":"2.911","y":"1.348","mobile":0,"x":"3.908"},{"site":"rennes","uid":"b6c0","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-188.rennes.iot-lab.info","mobility_type":"null","z":"2.911","y":"1.952","mobile":0,"x":"3.908"},{"site":"rennes","uid":"c28c","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-189.rennes.iot-lab.info","mobility_type":"null","z":"2.91","y":"2.556","mobile":0,"x":"3.908"},{"site":"rennes","uid":"c25a","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-190.rennes.iot-lab.info","mobility_type":"null","z":"2.91","y":"3.161","mobile":0,"x":"3.908"},{"site":"rennes","uid":"b9c1","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-191.rennes.iot-lab.info","mobility_type":"null","z":"2.91","y":"3.765","mobile":0,"x":"3.908"},{"site":"rennes","uid":"b128","archi":"wsn430:cc2420","state":"Suspected","network_address":"wsn430-192.rennes.iot-lab.info","mobility_type":"null","z":"2.909","y":"4.369","mobile":0,"x":"3.908"},{"site":"rennes","uid":"1f3e","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-193.rennes.iot-lab.info","mobility_type":"null","z":"2.909","y":"4.973","mobile":0,"x":"3.908"},{"site":"rennes","uid":"c121","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-194.rennes.iot-lab.info","mobility_type":"null","z":"2.908","y":"5.577","mobile":0,"x":"3.908"},{"site":"rennes","uid":"b55a","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-195.rennes.iot-lab.info","mobility_type":"null","z":"2.908","y":"6.181","mobile":0,"x":"3.908"},{"site":"rennes","uid":"cd54","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-196.rennes.iot-lab.info","mobility_type":"null","z":"2.907","y":"6.785","mobile":0,"x":"3.908"},{"site":"rennes","uid":"b478","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-197.rennes.iot-lab.info","mobility_type":"null","z":"2.907","y":"7.389","mobile":0,"x":"3.908"},{"site":"rennes","uid":"c668","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-198.rennes.iot-lab.info","mobility_type":"null","z":"2.907","y":"7.994","mobile":0,"x":"3.908"},{"site":"rennes","uid":"unknown","archi":"wsn430:cc2420","state":"Absent","network_address":"wsn430-199.rennes.iot-lab.info","mobility_type":"null","z":"2.906","y":"8.598","mobile":0,"x":"3.908"},{"site":"rennes","uid":"b751","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-200.rennes.iot-lab.info","mobility_type":"null","z":"2.906","y":"9.202","mobile":0,"x":"3.908"},{"site":"rennes","uid":"1f6b","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-201.rennes.iot-lab.info","mobility_type":"null","z":"2.905","y":"9.806","mobile":0,"x":"3.908"},{"site":"rennes","uid":"c268","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-202.rennes.iot-lab.info","mobility_type":"null","z":"2.905","y":"10.41","mobile":0,"x":"3.908"},{"site":"rennes","uid":"c487","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-203.rennes.iot-lab.info","mobility_type":"null","z":"2.912","y":"0.14","mobile":0,"x":"4.732"},{"site":"rennes","uid":"c427","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-204.rennes.iot-lab.info","mobility_type":"null","z":"2.912","y":"0.744","mobile":0,"x":"4.732"},{"site":"rennes","uid":"c5cf","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-205.rennes.iot-lab.info","mobility_type":"null","z":"2.911","y":"1.348","mobile":0,"x":"4.732"},{"site":"rennes","uid":"unknown","archi":"wsn430:cc2420","state":"Absent","network_address":"wsn430-206.rennes.iot-lab.info","mobility_type":"null","z":"2.911","y":"1.952","mobile":0,"x":"4.732"},{"site":"rennes","uid":"c091","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-207.rennes.iot-lab.info","mobility_type":"null","z":"2.91","y":"2.556","mobile":0,"x":"4.732"},{"site":"rennes","uid":"unknown","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-208.rennes.iot-lab.info","mobility_type":"null","z":"2.91","y":"3.161","mobile":0,"x":"4.732"},{"site":"rennes","uid":"c980","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-209.rennes.iot-lab.info","mobility_type":"null","z":"2.91","y":"3.765","mobile":0,"x":"4.732"},{"site":"rennes","uid":"b08e","archi":"wsn430:cc2420","state":"Suspected","network_address":"wsn430-210.rennes.iot-lab.info","mobility_type":"null","z":"2.909","y":"4.369","mobile":0,"x":"4.732"},{"site":"rennes","uid":"bf0b","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-211.rennes.iot-lab.info","mobility_type":"null","z":"2.909","y":"4.973","mobile":0,"x":"4.732"},{"site":"rennes","uid":"cbd4","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-212.rennes.iot-lab.info","mobility_type":"null","z":"2.908","y":"5.577","mobile":0,"x":"4.732"},{"site":"rennes","uid":"c32a","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-213.rennes.iot-lab.info","mobility_type":"null","z":"2.908","y":"6.181","mobile":0,"x":"4.732"},{"site":"rennes","uid":"caeb","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-214.rennes.iot-lab.info","mobility_type":"null","z":"2.907","y":"6.785","mobile":0,"x":"4.732"},{"site":"rennes","uid":"c34c","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-215.rennes.iot-lab.info","mobility_type":"null","z":"2.907","y":"7.389","mobile":0,"x":"4.732"},{"site":"rennes","uid":"cbfd","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-216.rennes.iot-lab.info","mobility_type":"null","z":"2.907","y":"7.994","mobile":0,"x":"4.732"},{"site":"rennes","uid":"bac7","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-217.rennes.iot-lab.info","mobility_type":"null","z":"2.906","y":"8.598","mobile":0,"x":"4.732"},{"site":"rennes","uid":"be83","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-218.rennes.iot-lab.info","mobility_type":"null","z":"2.906","y":"9.202","mobile":0,"x":"4.732"},{"site":"rennes","uid":"bbbf","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-219.rennes.iot-lab.info","mobility_type":"null","z":"2.905","y":"9.806","mobile":0,"x":"4.732"},{"site":"rennes","uid":"c4a9","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-220.rennes.iot-lab.info","mobility_type":"null","z":"2.905","y":"10.41","mobile":0,"x":"4.732"},{"site":"rennes","uid":"b51f","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-221.rennes.iot-lab.info","mobility_type":"null","z":"2.912","y":"0.14","mobile":0,"x":"5.556"},{"site":"rennes","uid":"c03a","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-222.rennes.iot-lab.info","mobility_type":"null","z":"2.912","y":"0.744","mobile":0,"x":"5.556"},{"site":"rennes","uid":"c995","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-223.rennes.iot-lab.info","mobility_type":"null","z":"2.911","y":"1.348","mobile":0,"x":"5.556"},{"site":"rennes","uid":"b50e","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-224.rennes.iot-lab.info","mobility_type":"null","z":"2.911","y":"1.952","mobile":0,"x":"5.556"},{"site":"rennes","uid":"afbf","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-225.rennes.iot-lab.info","mobility_type":"null","z":"2.91","y":"2.556","mobile":0,"x":"5.556"},{"site":"rennes","uid":"b5a6","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-226.rennes.iot-lab.info","mobility_type":"null","z":"2.91","y":"3.161","mobile":0,"x":"5.556"},{"site":"rennes","uid":"bb26","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-227.rennes.iot-lab.info","mobility_type":"null","z":"2.91","y":"3.765","mobile":0,"x":"5.556"},{"site":"rennes","uid":"c930","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-228.rennes.iot-lab.info","mobility_type":"null","z":"2.909","y":"4.369","mobile":0,"x":"5.556"},{"site":"rennes","uid":"b5ea","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-229.rennes.iot-lab.info","mobility_type":"null","z":"2.909","y":"4.973","mobile":0,"x":"5.556"},{"site":"rennes","uid":"bc51","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-230.rennes.iot-lab.info","mobility_type":"null","z":"2.908","y":"5.577","mobile":0,"x":"5.556"},{"site":"rennes","uid":"c708","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-231.rennes.iot-lab.info","mobility_type":"null","z":"2.908","y":"6.181","mobile":0,"x":"5.556"},{"site":"rennes","uid":"bf6f","archi":"wsn430:cc2420","state":"Suspected","network_address":"wsn430-232.rennes.iot-lab.info","mobility_type":"null","z":"2.907","y":"6.785","mobile":0,"x":"5.556"},{"site":"rennes","uid":"bd10","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-233.rennes.iot-lab.info","mobility_type":"null","z":"2.907","y":"7.389","mobile":0,"x":"5.556"},{"site":"rennes","uid":"b176","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-234.rennes.iot-lab.info","mobility_type":"null","z":"2.907","y":"7.994","mobile":0,"x":"5.556"},{"site":"rennes","uid":"b6d3","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-235.rennes.iot-lab.info","mobility_type":"null","z":"2.906","y":"8.598","mobile":0,"x":"5.556"},{"site":"rennes","uid":"c406","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-236.rennes.iot-lab.info","mobility_type":"null","z":"2.906","y":"9.202","mobile":0,"x":"5.556"},{"site":"rennes","uid":"b7c3","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-237.rennes.iot-lab.info","mobility_type":"null","z":"2.905","y":"9.806","mobile":0,"x":"5.556"},{"site":"rennes","uid":"b2fc","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-238.rennes.iot-lab.info","mobility_type":"null","z":"2.905","y":"10.41","mobile":0,"x":"5.556"},{"site":"rennes","uid":"cd7d","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-239.rennes.iot-lab.info","mobility_type":"null","z":"2.912","y":"0.14","mobile":0,"x":"6.38"},{"site":"rennes","uid":"b299","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-240.rennes.iot-lab.info","mobility_type":"null","z":"2.912","y":"0.744","mobile":0,"x":"6.38"},{"site":"rennes","uid":"bce7","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-241.rennes.iot-lab.info","mobility_type":"null","z":"2.911","y":"1.348","mobile":0,"x":"6.38"},{"site":"rennes","uid":"cbe0","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-242.rennes.iot-lab.info","mobility_type":"null","z":"2.911","y":"1.952","mobile":0,"x":"6.38"},{"site":"rennes","uid":"be33","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-243.rennes.iot-lab.info","mobility_type":"null","z":"2.91","y":"2.556","mobile":0,"x":"6.38"},{"site":"rennes","uid":"cf28","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-244.rennes.iot-lab.info","mobility_type":"null","z":"2.91","y":"3.161","mobile":0,"x":"6.38"},{"site":"rennes","uid":"c84f","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-245.rennes.iot-lab.info","mobility_type":"null","z":"2.91","y":"3.765","mobile":0,"x":"6.38"},{"site":"rennes","uid":"b95e","archi":"wsn430:cc2420","state":"Suspected","network_address":"wsn430-246.rennes.iot-lab.info","mobility_type":"null","z":"2.909","y":"4.369","mobile":0,"x":"6.38"},{"site":"rennes","uid":"b883","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-247.rennes.iot-lab.info","mobility_type":"null","z":"2.909","y":"4.973","mobile":0,"x":"6.38"},{"site":"rennes","uid":"b7e9","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-248.rennes.iot-lab.info","mobility_type":"null","z":"2.908","y":"5.577","mobile":0,"x":"6.38"},{"site":"rennes","uid":"c60b","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-249.rennes.iot-lab.info","mobility_type":"null","z":"2.908","y":"6.181","mobile":0,"x":"6.38"},{"site":"rennes","uid":"c93b","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-250.rennes.iot-lab.info","mobility_type":"null","z":"2.907","y":"6.785","mobile":0,"x":"6.38"},{"site":"rennes","uid":"bcca","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-251.rennes.iot-lab.info","mobility_type":"null","z":"2.907","y":"7.389","mobile":0,"x":"6.38"},{"site":"rennes","uid":"c615","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-252.rennes.iot-lab.info","mobility_type":"null","z":"2.907","y":"7.994","mobile":0,"x":"6.38"},{"site":"rennes","uid":"b7d1","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-253.rennes.iot-lab.info","mobility_type":"null","z":"2.906","y":"8.598","mobile":0,"x":"6.38"},{"site":"rennes","uid":"b490","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-254.rennes.iot-lab.info","mobility_type":"null","z":"2.906","y":"9.202","mobile":0,"x":"6.38"},{"site":"rennes","uid":"c479","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-255.rennes.iot-lab.info","mobility_type":"null","z":"2.905","y":"9.806","mobile":0,"x":"6.38"},{"site":"rennes","uid":"bc67","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-256.rennes.iot-lab.info","mobility_type":"null","z":"2.905","y":"10.41","mobile":0,"x":"6.38"},{"site":"euratech","uid":"c321","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-1.euratech.iot-lab.info","mobility_type":"null","z":"0.0","y":"2.5","mobile":0,"x":"3.6"},{"site":"euratech","uid":"c23a","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-2.euratech.iot-lab.info","mobility_type":"null","z":"0.0","y":"2.5","mobile":0,"x":"3.0"},{"site":"euratech","uid":"cf17","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-3.euratech.iot-lab.info","mobility_type":"null","z":"0.0","y":"2.5","mobile":0,"x":"2.4"},{"site":"euratech","uid":"bd11","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-4.euratech.iot-lab.info","mobility_type":"null","z":"0.0","y":"2.5","mobile":0,"x":"1.8"},{"site":"euratech","uid":"b6bc","archi":"wsn430:cc2420","state":"Suspected","network_address":"wsn430-5.euratech.iot-lab.info","mobility_type":"null","z":"0.0","y":"2.5","mobile":0,"x":"1.2"},{"site":"euratech","uid":"ccaa","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-6.euratech.iot-lab.info","mobility_type":"null","z":"0.6","y":"2.5","mobile":0,"x":"3.6"},{"site":"euratech","uid":"b154","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-7.euratech.iot-lab.info","mobility_type":"null","z":"0.6","y":"2.5","mobile":0,"x":"3.0"},{"site":"euratech","uid":"b27b","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-8.euratech.iot-lab.info","mobility_type":"null","z":"0.6","y":"2.5","mobile":0,"x":"2.4"},{"site":"euratech","uid":"bc2d","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-9.euratech.iot-lab.info","mobility_type":"null","z":"0.6","y":"2.5","mobile":0,"x":"1.8"},{"site":"euratech","uid":"bcb6","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-10.euratech.iot-lab.info","mobility_type":"null","z":"0.6","y":"2.5","mobile":0,"x":"1.2"},{"site":"euratech","uid":"c3c4","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-11.euratech.iot-lab.info","mobility_type":"null","z":"1.2","y":"2.5","mobile":0,"x":"3.6"},{"site":"euratech","uid":"c8a8","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-12.euratech.iot-lab.info","mobility_type":"null","z":"1.2","y":"2.5","mobile":0,"x":"3.0"},{"site":"euratech","uid":"c15b","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-13.euratech.iot-lab.info","mobility_type":"null","z":"1.2","y":"2.5","mobile":0,"x":"2.4"},{"site":"euratech","uid":"b034","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-14.euratech.iot-lab.info","mobility_type":"null","z":"1.2","y":"2.5","mobile":0,"x":"1.8"},{"site":"euratech","uid":"b471","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-15.euratech.iot-lab.info","mobility_type":"null","z":"1.2","y":"2.5","mobile":0,"x":"1.2"},{"site":"euratech","uid":"bbf0","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-16.euratech.iot-lab.info","mobility_type":"null","z":"1.8","y":"2.5","mobile":0,"x":"3.6"},{"site":"euratech","uid":"b986","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-17.euratech.iot-lab.info","mobility_type":"null","z":"1.8","y":"2.5","mobile":0,"x":"3.0"},{"site":"euratech","uid":"be29","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-18.euratech.iot-lab.info","mobility_type":"null","z":"1.8","y":"2.5","mobile":0,"x":"2.4"},{"site":"euratech","uid":"c102","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-19.euratech.iot-lab.info","mobility_type":"null","z":"1.8","y":"2.5","mobile":0,"x":"1.8"},{"site":"euratech","uid":"b0b4","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-20.euratech.iot-lab.info","mobility_type":"null","z":"1.8","y":"2.5","mobile":0,"x":"1.2"},{"site":"euratech","uid":"afc7","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-21.euratech.iot-lab.info","mobility_type":"null","z":"2.4","y":"2.5","mobile":0,"x":"3.6"},{"site":"euratech","uid":"bc13","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-22.euratech.iot-lab.info","mobility_type":"null","z":"2.4","y":"2.5","mobile":0,"x":"3.0"},{"site":"euratech","uid":"b2bb","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-23.euratech.iot-lab.info","mobility_type":"null","z":"2.4","y":"2.5","mobile":0,"x":"2.4"},{"site":"euratech","uid":"c6df","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-24.euratech.iot-lab.info","mobility_type":"null","z":"2.4","y":"2.5","mobile":0,"x":"1.8"},{"site":"euratech","uid":"c4c8","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-25.euratech.iot-lab.info","mobility_type":"null","z":"2.4","y":"2.5","mobile":0,"x":"1.2"},{"site":"euratech","uid":"c26d","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-26.euratech.iot-lab.info","mobility_type":"null","z":"3.0","y":"2.5","mobile":0,"x":"3.6"},{"site":"euratech","uid":"b966","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-27.euratech.iot-lab.info","mobility_type":"null","z":"3.0","y":"2.5","mobile":0,"x":"3.0"},{"site":"euratech","uid":"cbf3","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-28.euratech.iot-lab.info","mobility_type":"null","z":"3.0","y":"2.5","mobile":0,"x":"2.4"},{"site":"euratech","uid":"b538","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-29.euratech.iot-lab.info","mobility_type":"null","z":"3.0","y":"2.5","mobile":0,"x":"1.8"},{"site":"euratech","uid":"c946","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-30.euratech.iot-lab.info","mobility_type":"null","z":"3.0","y":"2.5","mobile":0,"x":"1.2"},{"site":"euratech","uid":"c469","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-31.euratech.iot-lab.info","mobility_type":"null","z":"3.6","y":"2.5","mobile":0,"x":"3.6"},{"site":"euratech","uid":"cafe","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-32.euratech.iot-lab.info","mobility_type":"null","z":"3.6","y":"2.5","mobile":0,"x":"3.0"},{"site":"euratech","uid":"c6dc","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-33.euratech.iot-lab.info","mobility_type":"null","z":"3.6","y":"2.5","mobile":0,"x":"2.4"},{"site":"euratech","uid":"afad","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-34.euratech.iot-lab.info","mobility_type":"null","z":"3.6","y":"2.5","mobile":0,"x":"1.8"},{"site":"euratech","uid":"b54f","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-35.euratech.iot-lab.info","mobility_type":"null","z":"3.6","y":"2.5","mobile":0,"x":"1.2"},{"site":"euratech","uid":"c92c","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-36.euratech.iot-lab.info","mobility_type":"null","z":"4.2","y":"2.5","mobile":0,"x":"3.6"},{"site":"euratech","uid":"b468","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-37.euratech.iot-lab.info","mobility_type":"null","z":"4.2","y":"2.5","mobile":0,"x":"3.0"},{"site":"euratech","uid":"c2b6","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-38.euratech.iot-lab.info","mobility_type":"null","z":"4.2","y":"2.5","mobile":0,"x":"2.4"},{"site":"euratech","uid":"c69d","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-39.euratech.iot-lab.info","mobility_type":"null","z":"4.2","y":"2.5","mobile":0,"x":"1.8"},{"site":"euratech","uid":"c0e8","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-40.euratech.iot-lab.info","mobility_type":"null","z":"4.2","y":"2.5","mobile":0,"x":"1.2"},{"site":"euratech","uid":"cdec","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-41.euratech.iot-lab.info","mobility_type":"null","z":"4.8","y":"2.5","mobile":0,"x":"3.6"},{"site":"euratech","uid":"c721","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-42.euratech.iot-lab.info","mobility_type":"null","z":"4.8","y":"2.5","mobile":0,"x":"3.0"},{"site":"euratech","uid":"c7f0","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-43.euratech.iot-lab.info","mobility_type":"null","z":"4.8","y":"2.5","mobile":0,"x":"2.4"},{"site":"euratech","uid":"c8f3","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-44.euratech.iot-lab.info","mobility_type":"null","z":"4.8","y":"2.5","mobile":0,"x":"1.8"},{"site":"euratech","uid":"ce61","archi":"wsn430:cc2420","state":"Suspected","network_address":"wsn430-45.euratech.iot-lab.info","mobility_type":"null","z":"4.8","y":"2.5","mobile":0,"x":"1.2"},{"site":"euratech","uid":"b2bf","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-46.euratech.iot-lab.info","mobility_type":"null","z":"5.4","y":"2.5","mobile":0,"x":"3.6"},{"site":"euratech","uid":"bd2d","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-47.euratech.iot-lab.info","mobility_type":"null","z":"5.4","y":"2.5","mobile":0,"x":"3.0"},{"site":"euratech","uid":"be4d","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-48.euratech.iot-lab.info","mobility_type":"null","z":"5.4","y":"2.5","mobile":0,"x":"2.4"},{"site":"euratech","uid":"b843","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-49.euratech.iot-lab.info","mobility_type":"null","z":"5.4","y":"2.5","mobile":0,"x":"1.8"},{"site":"euratech","uid":"ba95","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-50.euratech.iot-lab.info","mobility_type":"null","z":"5.4","y":"2.5","mobile":0,"x":"1.2"},{"site":"euratech","uid":"ba46","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-51.euratech.iot-lab.info","mobility_type":"null","z":"6.0","y":"2.5","mobile":0,"x":"3.6"},{"site":"euratech","uid":"be4b","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-52.euratech.iot-lab.info","mobility_type":"null","z":"6.0","y":"2.5","mobile":0,"x":"3.0"},{"site":"euratech","uid":"b95f","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-53.euratech.iot-lab.info","mobility_type":"null","z":"6.0","y":"2.5","mobile":0,"x":"2.4"},{"site":"euratech","uid":"1ce4","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-54.euratech.iot-lab.info","mobility_type":"null","z":"6.0","y":"2.5","mobile":0,"x":"1.8"},{"site":"euratech","uid":"c87e","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-55.euratech.iot-lab.info","mobility_type":"null","z":"6.0","y":"2.5","mobile":0,"x":"1.2"},{"site":"euratech","uid":"unknown","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-56.euratech.iot-lab.info","mobility_type":"null","z":"6.6","y":"2.5","mobile":0,"x":"3.6"},{"site":"euratech","uid":"c4c2","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-57.euratech.iot-lab.info","mobility_type":"null","z":"6.6","y":"2.5","mobile":0,"x":"3.0"},{"site":"euratech","uid":"cbe9","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-58.euratech.iot-lab.info","mobility_type":"null","z":"6.6","y":"2.5","mobile":0,"x":"2.4"},{"site":"euratech","uid":"c5c8","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-59.euratech.iot-lab.info","mobility_type":"null","z":"6.6","y":"2.5","mobile":0,"x":"1.8"},{"site":"euratech","uid":"c3d6","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-60.euratech.iot-lab.info","mobility_type":"null","z":"6.6","y":"2.5","mobile":0,"x":"1.2"},{"site":"euratech","uid":"c088","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-61.euratech.iot-lab.info","mobility_type":"null","z":"7.2","y":"2.5","mobile":0,"x":"3.6"},{"site":"euratech","uid":"c11c","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-62.euratech.iot-lab.info","mobility_type":"null","z":"7.2","y":"2.5","mobile":0,"x":"3.0"},{"site":"euratech","uid":"c11e","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-63.euratech.iot-lab.info","mobility_type":"null","z":"7.2","y":"2.5","mobile":0,"x":"2.4"},{"site":"euratech","uid":"unknown","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-64.euratech.iot-lab.info","mobility_type":"null","z":"7.2","y":"2.5","mobile":0,"x":"1.8"},{"site":"euratech","uid":"bc63","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-65.euratech.iot-lab.info","mobility_type":"null","z":"7.2","y":"2.5","mobile":0,"x":"1.2"},{"site":"euratech","uid":"c8ad","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-66.euratech.iot-lab.info","mobility_type":"null","z":"7.8","y":"2.5","mobile":0,"x":"3.6"},{"site":"euratech","uid":"c286","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-67.euratech.iot-lab.info","mobility_type":"null","z":"7.8","y":"2.5","mobile":0,"x":"3.0"},{"site":"euratech","uid":"bc48","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-68.euratech.iot-lab.info","mobility_type":"null","z":"7.8","y":"2.5","mobile":0,"x":"2.4"},{"site":"euratech","uid":"ced3","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-69.euratech.iot-lab.info","mobility_type":"null","z":"7.8","y":"2.5","mobile":0,"x":"1.8"},{"site":"euratech","uid":"unknown","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-70.euratech.iot-lab.info","mobility_type":"null","z":"7.8","y":"2.5","mobile":0,"x":"1.2"},{"site":"euratech","uid":"c689","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-71.euratech.iot-lab.info","mobility_type":"null","z":"8.4","y":"2.5","mobile":0,"x":"3.6"},{"site":"euratech","uid":"c0dc","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-72.euratech.iot-lab.info","mobility_type":"null","z":"8.4","y":"2.5","mobile":0,"x":"3.0"},{"site":"euratech","uid":"b01f","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-73.euratech.iot-lab.info","mobility_type":"null","z":"8.4","y":"2.5","mobile":0,"x":"2.4"},{"site":"euratech","uid":"bbea","archi":"wsn430:cc2420","state":"Suspected","network_address":"wsn430-74.euratech.iot-lab.info","mobility_type":"null","z":"8.4","y":"2.5","mobile":0,"x":"1.8"},{"site":"euratech","uid":"cb78","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-75.euratech.iot-lab.info","mobility_type":"null","z":"8.4","y":"2.5","mobile":0,"x":"1.2"},{"site":"euratech","uid":"cced","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-76.euratech.iot-lab.info","mobility_type":"null","z":"9.0","y":"2.5","mobile":0,"x":"3.6"},{"site":"euratech","uid":"cb08","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-77.euratech.iot-lab.info","mobility_type":"null","z":"9.0","y":"2.5","mobile":0,"x":"3.0"},{"site":"euratech","uid":"c973","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-78.euratech.iot-lab.info","mobility_type":"null","z":"9.0","y":"2.5","mobile":0,"x":"2.4"},{"site":"euratech","uid":"c241","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-79.euratech.iot-lab.info","mobility_type":"null","z":"9.0","y":"2.5","mobile":0,"x":"1.8"},{"site":"euratech","uid":"babc","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-80.euratech.iot-lab.info","mobility_type":"null","z":"9.0","y":"2.5","mobile":0,"x":"1.2"},{"site":"euratech","uid":"b5f1","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-81.euratech.iot-lab.info","mobility_type":"null","z":"9.6","y":"2.5","mobile":0,"x":"3.6"},{"site":"euratech","uid":"c8c8","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-82.euratech.iot-lab.info","mobility_type":"null","z":"9.6","y":"2.5","mobile":0,"x":"3.0"},{"site":"euratech","uid":"c640","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-83.euratech.iot-lab.info","mobility_type":"null","z":"9.6","y":"2.5","mobile":0,"x":"2.4"},{"site":"euratech","uid":"ca25","archi":"wsn430:cc2420","state":"Suspected","network_address":"wsn430-84.euratech.iot-lab.info","mobility_type":"null","z":"9.6","y":"2.5","mobile":0,"x":"1.8"},{"site":"euratech","uid":"b659","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-85.euratech.iot-lab.info","mobility_type":"null","z":"9.6","y":"2.5","mobile":0,"x":"1.2"},{"site":"euratech","uid":"b5cc","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-86.euratech.iot-lab.info","mobility_type":"null","z":"10.2","y":"2.5","mobile":0,"x":"3.6"},{"site":"euratech","uid":"b2c1","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-87.euratech.iot-lab.info","mobility_type":"null","z":"10.2","y":"2.5","mobile":0,"x":"3.0"},{"site":"euratech","uid":"cd82","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-88.euratech.iot-lab.info","mobility_type":"null","z":"10.2","y":"2.5","mobile":0,"x":"2.4"},{"site":"euratech","uid":"b325","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-89.euratech.iot-lab.info","mobility_type":"null","z":"10.2","y":"2.5","mobile":0,"x":"1.8"},{"site":"euratech","uid":"cc1b","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-90.euratech.iot-lab.info","mobility_type":"null","z":"10.2","y":"2.5","mobile":0,"x":"1.2"},{"site":"euratech","uid":"b42b","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-91.euratech.iot-lab.info","mobility_type":"null","z":"10.8","y":"2.5","mobile":0,"x":"3.6"},{"site":"euratech","uid":"c4ea","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-92.euratech.iot-lab.info","mobility_type":"null","z":"10.8","y":"2.5","mobile":0,"x":"3.0"},{"site":"euratech","uid":"b6a3","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-93.euratech.iot-lab.info","mobility_type":"null","z":"10.8","y":"2.5","mobile":0,"x":"2.4"},{"site":"euratech","uid":"b31a","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-94.euratech.iot-lab.info","mobility_type":"null","z":"10.8","y":"2.5","mobile":0,"x":"1.8"},{"site":"euratech","uid":"b381","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-95.euratech.iot-lab.info","mobility_type":"null","z":"10.8","y":"2.5","mobile":0,"x":"1.2"},{"site":"euratech","uid":"c342","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-96.euratech.iot-lab.info","mobility_type":"null","z":"0.0","y":"3.4","mobile":0,"x":"3.6"},{"site":"euratech","uid":"c0ab","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-97.euratech.iot-lab.info","mobility_type":"null","z":"0.0","y":"3.4","mobile":0,"x":"3.0"},{"site":"euratech","uid":"c83b","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-98.euratech.iot-lab.info","mobility_type":"null","z":"0.0","y":"3.4","mobile":0,"x":"2.4"},{"site":"euratech","uid":"b36b","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-99.euratech.iot-lab.info","mobility_type":"null","z":"0.0","y":"3.4","mobile":0,"x":"1.8"},{"site":"euratech","uid":"b4db","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-100.euratech.iot-lab.info","mobility_type":"null","z":"0.0","y":"3.4","mobile":0,"x":"1.2"},{"site":"euratech","uid":"b871","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-101.euratech.iot-lab.info","mobility_type":"null","z":"0.6","y":"3.4","mobile":0,"x":"3.6"},{"site":"euratech","uid":"bde6","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-102.euratech.iot-lab.info","mobility_type":"null","z":"0.6","y":"3.4","mobile":0,"x":"3.0"},{"site":"euratech","uid":"bcc4","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-103.euratech.iot-lab.info","mobility_type":"null","z":"0.6","y":"3.4","mobile":0,"x":"2.4"},{"site":"euratech","uid":"bef4","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-104.euratech.iot-lab.info","mobility_type":"null","z":"0.6","y":"3.4","mobile":0,"x":"1.8"},{"site":"euratech","uid":"1c9e","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-105.euratech.iot-lab.info","mobility_type":"null","z":"0.6","y":"3.4","mobile":0,"x":"1.2"},{"site":"euratech","uid":"af78","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-106.euratech.iot-lab.info","mobility_type":"null","z":"1.2","y":"3.4","mobile":0,"x":"3.6"},{"site":"euratech","uid":"cae0","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-107.euratech.iot-lab.info","mobility_type":"null","z":"1.2","y":"3.4","mobile":0,"x":"3.0"},{"site":"euratech","uid":"c3e5","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-108.euratech.iot-lab.info","mobility_type":"null","z":"1.2","y":"3.4","mobile":0,"x":"2.4"},{"site":"euratech","uid":"b83b","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-109.euratech.iot-lab.info","mobility_type":"null","z":"1.2","y":"3.4","mobile":0,"x":"1.8"},{"site":"euratech","uid":"bf14","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-110.euratech.iot-lab.info","mobility_type":"null","z":"1.2","y":"3.4","mobile":0,"x":"1.2"},{"site":"euratech","uid":"cf2e","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-111.euratech.iot-lab.info","mobility_type":"null","z":"1.8","y":"3.4","mobile":0,"x":"3.6"},{"site":"euratech","uid":"bdf3","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-112.euratech.iot-lab.info","mobility_type":"null","z":"1.8","y":"3.4","mobile":0,"x":"3.0"},{"site":"euratech","uid":"b61a","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-113.euratech.iot-lab.info","mobility_type":"null","z":"1.8","y":"3.4","mobile":0,"x":"2.4"},{"site":"euratech","uid":"ceb6","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-114.euratech.iot-lab.info","mobility_type":"null","z":"1.8","y":"3.4","mobile":0,"x":"1.8"},{"site":"euratech","uid":"c735","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-115.euratech.iot-lab.info","mobility_type":"null","z":"1.8","y":"3.4","mobile":0,"x":"1.2"},{"site":"euratech","uid":"bb0a","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-116.euratech.iot-lab.info","mobility_type":"null","z":"2.4","y":"3.4","mobile":0,"x":"3.6"},{"site":"euratech","uid":"c4d2","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-117.euratech.iot-lab.info","mobility_type":"null","z":"2.4","y":"3.4","mobile":0,"x":"3.0"},{"site":"euratech","uid":"bce9","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-118.euratech.iot-lab.info","mobility_type":"null","z":"2.4","y":"3.4","mobile":0,"x":"2.4"},{"site":"euratech","uid":"ba9d","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-119.euratech.iot-lab.info","mobility_type":"null","z":"2.4","y":"3.4","mobile":0,"x":"1.8"},{"site":"euratech","uid":"ce3a","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-120.euratech.iot-lab.info","mobility_type":"null","z":"2.4","y":"3.4","mobile":0,"x":"1.2"},{"site":"euratech","uid":"1bfa","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-121.euratech.iot-lab.info","mobility_type":"null","z":"3.0","y":"3.4","mobile":0,"x":"3.6"},{"site":"euratech","uid":"c834","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-122.euratech.iot-lab.info","mobility_type":"null","z":"3.0","y":"3.4","mobile":0,"x":"3.0"},{"site":"euratech","uid":"1f91","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-123.euratech.iot-lab.info","mobility_type":"null","z":"3.0","y":"3.4","mobile":0,"x":"2.4"},{"site":"euratech","uid":"bbb4","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-124.euratech.iot-lab.info","mobility_type":"null","z":"3.0","y":"3.4","mobile":0,"x":"1.8"},{"site":"euratech","uid":"1f9e","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-125.euratech.iot-lab.info","mobility_type":"null","z":"3.0","y":"3.4","mobile":0,"x":"1.2"},{"site":"euratech","uid":"c74d","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-126.euratech.iot-lab.info","mobility_type":"null","z":"3.6","y":"3.4","mobile":0,"x":"3.6"},{"site":"euratech","uid":"c6f5","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-127.euratech.iot-lab.info","mobility_type":"null","z":"3.6","y":"3.4","mobile":0,"x":"3.0"},{"site":"euratech","uid":"b8db","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-128.euratech.iot-lab.info","mobility_type":"null","z":"3.6","y":"3.4","mobile":0,"x":"2.4"},{"site":"euratech","uid":"1caf","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-129.euratech.iot-lab.info","mobility_type":"null","z":"3.6","y":"3.4","mobile":0,"x":"1.8"},{"site":"euratech","uid":"c92a","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-130.euratech.iot-lab.info","mobility_type":"null","z":"3.6","y":"3.4","mobile":0,"x":"1.2"},{"site":"euratech","uid":"bba2","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-131.euratech.iot-lab.info","mobility_type":"null","z":"4.2","y":"3.4","mobile":0,"x":"3.6"},{"site":"euratech","uid":"c20a","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-132.euratech.iot-lab.info","mobility_type":"null","z":"4.2","y":"3.4","mobile":0,"x":"3.0"},{"site":"euratech","uid":"cac8","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-133.euratech.iot-lab.info","mobility_type":"null","z":"4.2","y":"3.4","mobile":0,"x":"2.4"},{"site":"euratech","uid":"bdef","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-134.euratech.iot-lab.info","mobility_type":"null","z":"4.2","y":"3.4","mobile":0,"x":"1.8"},{"site":"euratech","uid":"b798","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-135.euratech.iot-lab.info","mobility_type":"null","z":"4.2","y":"3.4","mobile":0,"x":"1.2"},{"site":"euratech","uid":"c198","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-136.euratech.iot-lab.info","mobility_type":"null","z":"4.8","y":"3.4","mobile":0,"x":"3.6"},{"site":"euratech","uid":"c2d0","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-137.euratech.iot-lab.info","mobility_type":"null","z":"4.8","y":"3.4","mobile":0,"x":"3.0"},{"site":"euratech","uid":"bf4d","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-138.euratech.iot-lab.info","mobility_type":"null","z":"4.8","y":"3.4","mobile":0,"x":"2.4"},{"site":"euratech","uid":"c3b1","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-139.euratech.iot-lab.info","mobility_type":"null","z":"4.8","y":"3.4","mobile":0,"x":"1.8"},{"site":"euratech","uid":"b723","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-140.euratech.iot-lab.info","mobility_type":"null","z":"4.8","y":"3.4","mobile":0,"x":"1.2"},{"site":"euratech","uid":"b748","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-141.euratech.iot-lab.info","mobility_type":"null","z":"5.4","y":"3.4","mobile":0,"x":"3.6"},{"site":"euratech","uid":"1bfc","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-142.euratech.iot-lab.info","mobility_type":"null","z":"5.4","y":"3.4","mobile":0,"x":"3.0"},{"site":"euratech","uid":"b584","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-143.euratech.iot-lab.info","mobility_type":"null","z":"5.4","y":"3.4","mobile":0,"x":"2.4"},{"site":"euratech","uid":"b18d","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-144.euratech.iot-lab.info","mobility_type":"null","z":"5.4","y":"3.4","mobile":0,"x":"1.8"},{"site":"euratech","uid":"b5c9","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-145.euratech.iot-lab.info","mobility_type":"null","z":"5.4","y":"3.4","mobile":0,"x":"1.2"},{"site":"euratech","uid":"c506","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-146.euratech.iot-lab.info","mobility_type":"null","z":"6.0","y":"3.4","mobile":0,"x":"3.6"},{"site":"euratech","uid":"bcd3","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-147.euratech.iot-lab.info","mobility_type":"null","z":"6.0","y":"3.4","mobile":0,"x":"3.0"},{"site":"euratech","uid":"cddf","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-148.euratech.iot-lab.info","mobility_type":"null","z":"6.0","y":"3.4","mobile":0,"x":"2.4"},{"site":"euratech","uid":"bc46","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-149.euratech.iot-lab.info","mobility_type":"null","z":"6.0","y":"3.4","mobile":0,"x":"1.8"},{"site":"euratech","uid":"b984","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-150.euratech.iot-lab.info","mobility_type":"null","z":"6.0","y":"3.4","mobile":0,"x":"1.2"},{"site":"euratech","uid":"ce38","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-151.euratech.iot-lab.info","mobility_type":"null","z":"6.6","y":"3.4","mobile":0,"x":"3.6"},{"site":"euratech","uid":"b2b8","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-152.euratech.iot-lab.info","mobility_type":"null","z":"6.6","y":"3.4","mobile":0,"x":"3.0"},{"site":"euratech","uid":"bc12","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-153.euratech.iot-lab.info","mobility_type":"null","z":"6.6","y":"3.4","mobile":0,"x":"2.4"},{"site":"euratech","uid":"cb0c","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-154.euratech.iot-lab.info","mobility_type":"null","z":"6.6","y":"3.4","mobile":0,"x":"1.8"},{"site":"euratech","uid":"c5f9","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-155.euratech.iot-lab.info","mobility_type":"null","z":"6.6","y":"3.4","mobile":0,"x":"1.2"},{"site":"euratech","uid":"b246","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-156.euratech.iot-lab.info","mobility_type":"null","z":"7.2","y":"3.4","mobile":0,"x":"3.6"},{"site":"euratech","uid":"c22f","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-157.euratech.iot-lab.info","mobility_type":"null","z":"7.2","y":"3.4","mobile":0,"x":"3.0"},{"site":"euratech","uid":"b0e0","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-158.euratech.iot-lab.info","mobility_type":"null","z":"7.2","y":"3.4","mobile":0,"x":"2.4"},{"site":"euratech","uid":"cf07","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-159.euratech.iot-lab.info","mobility_type":"null","z":"7.2","y":"3.4","mobile":0,"x":"1.8"},{"site":"euratech","uid":"b8c6","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-160.euratech.iot-lab.info","mobility_type":"null","z":"7.2","y":"3.4","mobile":0,"x":"1.2"},{"site":"euratech","uid":"b282","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-161.euratech.iot-lab.info","mobility_type":"null","z":"7.8","y":"3.4","mobile":0,"x":"3.6"},{"site":"euratech","uid":"c167","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-162.euratech.iot-lab.info","mobility_type":"null","z":"7.8","y":"3.4","mobile":0,"x":"3.0"},{"site":"euratech","uid":"c534","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-163.euratech.iot-lab.info","mobility_type":"null","z":"7.8","y":"3.4","mobile":0,"x":"2.4"},{"site":"euratech","uid":"b31c","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-164.euratech.iot-lab.info","mobility_type":"null","z":"7.8","y":"3.4","mobile":0,"x":"1.8"},{"site":"euratech","uid":"bc60","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-165.euratech.iot-lab.info","mobility_type":"null","z":"7.8","y":"3.4","mobile":0,"x":"1.2"},{"site":"euratech","uid":"cdba","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-166.euratech.iot-lab.info","mobility_type":"null","z":"8.4","y":"3.4","mobile":0,"x":"3.6"},{"site":"euratech","uid":"c703","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-167.euratech.iot-lab.info","mobility_type":"null","z":"8.4","y":"3.4","mobile":0,"x":"3.0"},{"site":"euratech","uid":"cd29","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-168.euratech.iot-lab.info","mobility_type":"null","z":"8.4","y":"3.4","mobile":0,"x":"2.4"},{"site":"euratech","uid":"c3a3","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-169.euratech.iot-lab.info","mobility_type":"null","z":"8.4","y":"3.4","mobile":0,"x":"1.8"},{"site":"euratech","uid":"cc1d","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-170.euratech.iot-lab.info","mobility_type":"null","z":"8.4","y":"3.4","mobile":0,"x":"1.2"},{"site":"euratech","uid":"c6ba","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-171.euratech.iot-lab.info","mobility_type":"null","z":"9.0","y":"3.4","mobile":0,"x":"3.6"},{"site":"euratech","uid":"b320","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-172.euratech.iot-lab.info","mobility_type":"null","z":"9.0","y":"3.4","mobile":0,"x":"3.0"},{"site":"euratech","uid":"cc61","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-173.euratech.iot-lab.info","mobility_type":"null","z":"9.0","y":"3.4","mobile":0,"x":"2.4"},{"site":"euratech","uid":"b1f4","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-174.euratech.iot-lab.info","mobility_type":"null","z":"9.0","y":"3.4","mobile":0,"x":"1.8"},{"site":"euratech","uid":"b46b","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-175.euratech.iot-lab.info","mobility_type":"null","z":"9.0","y":"3.4","mobile":0,"x":"1.2"},{"site":"euratech","uid":"c7aa","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-176.euratech.iot-lab.info","mobility_type":"null","z":"9.6","y":"3.4","mobile":0,"x":"3.6"},{"site":"euratech","uid":"c540","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-177.euratech.iot-lab.info","mobility_type":"null","z":"9.6","y":"3.4","mobile":0,"x":"3.0"},{"site":"euratech","uid":"ba5e","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-178.euratech.iot-lab.info","mobility_type":"null","z":"9.6","y":"3.4","mobile":0,"x":"2.4"},{"site":"euratech","uid":"b3bd","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-179.euratech.iot-lab.info","mobility_type":"null","z":"9.6","y":"3.4","mobile":0,"x":"1.8"},{"site":"euratech","uid":"bc23","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-180.euratech.iot-lab.info","mobility_type":"null","z":"9.6","y":"3.4","mobile":0,"x":"1.2"},{"site":"euratech","uid":"c625","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-181.euratech.iot-lab.info","mobility_type":"null","z":"10.2","y":"3.4","mobile":0,"x":"3.6"},{"site":"euratech","uid":"bed4","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-182.euratech.iot-lab.info","mobility_type":"null","z":"10.2","y":"3.4","mobile":0,"x":"3.0"},{"site":"euratech","uid":"1f7a","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-183.euratech.iot-lab.info","mobility_type":"null","z":"10.2","y":"3.4","mobile":0,"x":"2.4"},{"site":"euratech","uid":"c1c8","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-184.euratech.iot-lab.info","mobility_type":"null","z":"10.2","y":"3.4","mobile":0,"x":"1.8"},{"site":"euratech","uid":"bf29","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-185.euratech.iot-lab.info","mobility_type":"null","z":"10.2","y":"3.4","mobile":0,"x":"1.2"},{"site":"euratech","uid":"c304","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-186.euratech.iot-lab.info","mobility_type":"null","z":"10.8","y":"3.4","mobile":0,"x":"3.6"},{"site":"euratech","uid":"c370","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-187.euratech.iot-lab.info","mobility_type":"null","z":"10.8","y":"3.4","mobile":0,"x":"3.0"},{"site":"euratech","uid":"c91c","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-188.euratech.iot-lab.info","mobility_type":"null","z":"10.8","y":"3.4","mobile":0,"x":"2.4"},{"site":"euratech","uid":"c035","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-189.euratech.iot-lab.info","mobility_type":"null","z":"10.8","y":"3.4","mobile":0,"x":"1.8"},{"site":"euratech","uid":"c5fe","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-190.euratech.iot-lab.info","mobility_type":"null","z":"10.8","y":"3.4","mobile":0,"x":"1.2"},{"site":"euratech","uid":"c913","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-191.euratech.iot-lab.info","mobility_type":"null","z":"11.32","y":"3.28","mobile":0,"x":"0.0"},{"site":"euratech","uid":"ce49","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-192.euratech.iot-lab.info","mobility_type":"null","z":"11.32","y":"3.28","mobile":0,"x":"0.6"},{"site":"euratech","uid":"bbda","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-193.euratech.iot-lab.info","mobility_type":"null","z":"11.32","y":"3.28","mobile":0,"x":"1.2"},{"site":"euratech","uid":"aff2","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-194.euratech.iot-lab.info","mobility_type":"null","z":"11.32","y":"3.28","mobile":0,"x":"1.8"},{"site":"euratech","uid":"cae8","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-195.euratech.iot-lab.info","mobility_type":"null","z":"11.32","y":"3.28","mobile":0,"x":"2.4"},{"site":"euratech","uid":"bdd1","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-196.euratech.iot-lab.info","mobility_type":"null","z":"11.32","y":"3.28","mobile":0,"x":"3.0"},{"site":"euratech","uid":"b68e","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-197.euratech.iot-lab.info","mobility_type":"null","z":"11.32","y":"3.28","mobile":0,"x":"3.6"},{"site":"euratech","uid":"cb6a","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-198.euratech.iot-lab.info","mobility_type":"null","z":"11.32","y":"3.28","mobile":0,"x":"4.2"},{"site":"euratech","uid":"cc68","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-199.euratech.iot-lab.info","mobility_type":"null","z":"11.32","y":"3.28","mobile":0,"x":"4.8"},{"site":"euratech","uid":"c36b","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-200.euratech.iot-lab.info","mobility_type":"null","z":"11.32","y":"2.67","mobile":0,"x":"0.0"},{"site":"euratech","uid":"c416","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-201.euratech.iot-lab.info","mobility_type":"null","z":"11.32","y":"2.67","mobile":0,"x":"0.6"},{"site":"euratech","uid":"b863","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-202.euratech.iot-lab.info","mobility_type":"null","z":"11.32","y":"2.67","mobile":0,"x":"1.2"},{"site":"euratech","uid":"bd65","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-203.euratech.iot-lab.info","mobility_type":"null","z":"11.32","y":"2.67","mobile":0,"x":"1.8"},{"site":"euratech","uid":"c23c","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-204.euratech.iot-lab.info","mobility_type":"null","z":"11.32","y":"2.67","mobile":0,"x":"2.4"},{"site":"euratech","uid":"bd5c","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-205.euratech.iot-lab.info","mobility_type":"null","z":"11.32","y":"2.67","mobile":0,"x":"3.0"},{"site":"euratech","uid":"ce56","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-206.euratech.iot-lab.info","mobility_type":"null","z":"11.32","y":"2.67","mobile":0,"x":"3.6"},{"site":"euratech","uid":"c447","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-207.euratech.iot-lab.info","mobility_type":"null","z":"11.32","y":"2.67","mobile":0,"x":"4.2"},{"site":"euratech","uid":"c33a","archi":"wsn430:cc2420","state":"Suspected","network_address":"wsn430-208.euratech.iot-lab.info","mobility_type":"null","z":"11.32","y":"2.67","mobile":0,"x":"4.8"},{"site":"euratech","uid":"ce00","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-209.euratech.iot-lab.info","mobility_type":"null","z":"11.32","y":"0.25","mobile":0,"x":"1.1"},{"site":"euratech","uid":"c117","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-210.euratech.iot-lab.info","mobility_type":"null","z":"11.32","y":"0.9","mobile":0,"x":"1.1"},{"site":"euratech","uid":"1f43","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-211.euratech.iot-lab.info","mobility_type":"null","z":"11.32","y":"1.55","mobile":0,"x":"1.1"},{"site":"euratech","uid":"c2c8","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-212.euratech.iot-lab.info","mobility_type":"null","z":"11.32","y":"2.2","mobile":0,"x":"1.1"},{"site":"euratech","uid":"af75","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-213.euratech.iot-lab.info","mobility_type":"null","z":"11.32","y":"0.25","mobile":0,"x":"1.55"},{"site":"euratech","uid":"b98e","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-214.euratech.iot-lab.info","mobility_type":"null","z":"11.32","y":"0.9","mobile":0,"x":"1.55"},{"site":"euratech","uid":"bd00","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-215.euratech.iot-lab.info","mobility_type":"null","z":"11.32","y":"1.55","mobile":0,"x":"1.55"},{"site":"euratech","uid":"bbe4","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-216.euratech.iot-lab.info","mobility_type":"null","z":"11.32","y":"2.2","mobile":0,"x":"1.55"},{"site":"euratech","uid":"c013","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-217.euratech.iot-lab.info","mobility_type":"null","z":"11.32","y":"0.25","mobile":0,"x":"3.25"},{"site":"euratech","uid":"1f71","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-218.euratech.iot-lab.info","mobility_type":"null","z":"11.32","y":"0.9","mobile":0,"x":"3.25"},{"site":"euratech","uid":"c2b8","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-219.euratech.iot-lab.info","mobility_type":"null","z":"11.32","y":"1.55","mobile":0,"x":"3.25"},{"site":"euratech","uid":"c839","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-220.euratech.iot-lab.info","mobility_type":"null","z":"11.32","y":"2.2","mobile":0,"x":"3.25"},{"site":"euratech","uid":"b2ee","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-221.euratech.iot-lab.info","mobility_type":"null","z":"11.32","y":"0.25","mobile":0,"x":"3.7"},{"site":"euratech","uid":"bd79","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-222.euratech.iot-lab.info","mobility_type":"null","z":"11.32","y":"0.9","mobile":0,"x":"3.7"},{"site":"euratech","uid":"b73b","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-223.euratech.iot-lab.info","mobility_type":"null","z":"11.32","y":"1.55","mobile":0,"x":"3.7"},{"site":"euratech","uid":"cd89","archi":"wsn430:cc2420","state":"Alive","network_address":"wsn430-224.euratech.iot-lab.info","mobility_type":"null","z":"11.32","y":"2.2","mobile":0,"x":"3.7"},{"site":"euratech","uid":"unknown","archi":"wsn430:cc2420","state":"Absent","network_address":"wsn430-225.euratech.iot-lab.info","mobility_type":"null","z":"null","y":"null","mobile":1,"x":"null"},{"site":"euratech","uid":"unknown","archi":"wsn430:cc2420","state":"Suspected","network_address":"wsn430-226.euratech.iot-lab.info","mobility_type":"null","z":"null","y":"null","mobile":1,"x":"null"},{"site":"euratech","uid":"unknown","archi":"wsn430:cc2420","state":"Suspected","network_address":"wsn430-227.euratech.iot-lab.info","mobility_type":"null","z":"null","y":"null","mobile":1,"x":"null"},{"site":"euratech","uid":"unknown","archi":"wsn430:cc2420","state":"Suspected","network_address":"wsn430-228.euratech.iot-lab.info","mobility_type":"null","z":"null","y":"null","mobile":1,"x":"null"},{"site":"euratech","uid":"unknown","archi":"wsn430:cc2420","state":"Suspected","network_address":"wsn430-229.euratech.iot-lab.info","mobility_type":"null","z":"null","y":"null","mobile":1,"x":"null"},{"site":"euratech","uid":"unknown","archi":"wsn430:cc2420","state":"Suspected","network_address":"wsn430-230.euratech.iot-lab.info","mobility_type":"null","z":"null","y":"null","mobile":1,"x":"null"},{"site":"euratech","uid":"unknown","archi":"wsn430:cc2420","state":"Suspected","network_address":"wsn430-231.euratech.iot-lab.info","mobility_type":"null","z":"null","y":"null","mobile":1,"x":"null"},{"site":"euratech","uid":"unknown","archi":"wsn430:cc2420","state":"Suspected","network_address":"wsn430-232.euratech.iot-lab.info","mobility_type":"null","z":"null","y":"null","mobile":1,"x":"null"},{"site":"euratech","uid":"unknown","archi":"wsn430:cc2420","state":"Suspected","network_address":"wsn430-233.euratech.iot-lab.info","mobility_type":"null","z":"null","y":"null","mobile":1,"x":"null"},{"site":"euratech","uid":"unknown","archi":"wsn430:cc2420","state":"Suspected","network_address":"wsn430-234.euratech.iot-lab.info","mobility_type":"null","z":"null","y":"null","mobile":1,"x":"null"},{"site":"euratech","uid":"unknown","archi":"wsn430:cc2420","state":"Suspected","network_address":"wsn430-235.euratech.iot-lab.info","mobility_type":"null","z":"null","y":"null","mobile":1,"x":"null"},{"site":"euratech","uid":"unknown","archi":"wsn430:cc2420","state":"Suspected","network_address":"wsn430-236.euratech.iot-lab.info","mobility_type":"null","z":"null","y":"null","mobile":1,"x":"null"},{"site":"euratech","uid":"unknown","archi":"wsn430:cc2420","state":"Suspected","network_address":"wsn430-237.euratech.iot-lab.info","mobility_type":"null","z":"null","y":"null","mobile":1,"x":"null"},{"site":"euratech","uid":"unknown","archi":"wsn430:cc2420","state":"Suspected","network_address":"wsn430-238.euratech.iot-lab.info","mobility_type":"null","z":"null","y":"null","mobile":1,"x":"null"},{"site":"euratech","uid":"unknown","archi":"wsn430:cc2420","state":"Suspected","network_address":"wsn430-239.euratech.iot-lab.info","mobility_type":"null","z":"null","y":"null","mobile":1,"x":"null"},{"site":"euratech","uid":"unknown","archi":"wsn430:cc2420","state":"Suspected","network_address":"wsn430-240.euratech.iot-lab.info","mobility_type":"null","z":"null","y":"null","mobile":1,"x":"null"},{"site":"euratech","uid":"unknown","archi":"wsn430:cc2420","state":"Absent","network_address":"wsn430-241.euratech.iot-lab.info","mobility_type":"null","z":"null","y":"null","mobile":1,"x":"null"},{"site":"euratech","uid":"unknown","archi":"wsn430:cc2420","state":"Absent","network_address":"wsn430-242.euratech.iot-lab.info","mobility_type":"null","z":"null","y":"null","mobile":1,"x":"null"},{"site":"euratech","uid":"unknown","archi":"wsn430:cc2420","state":"Absent","network_address":"wsn430-243.euratech.iot-lab.info","mobility_type":"null","z":"null","y":"null","mobile":1,"x":"null"},{"site":"euratech","uid":"unknown","archi":"wsn430:cc2420","state":"Absent","network_address":"wsn430-244.euratech.iot-lab.info","mobility_type":"null","z":"null","y":"null","mobile":1,"x":"null"},{"site":"euratech","uid":"unknown","archi":"wsn430:cc2420","state":"Absent","network_address":"wsn430-245.euratech.iot-lab.info","mobility_type":"null","z":"null","y":"null","mobile":1,"x":"null"},{"site":"euratech","uid":"unknown","archi":"wsn430:cc2420","state":"Absent","network_address":"wsn430-246.euratech.iot-lab.info","mobility_type":"null","z":"null","y":"null","mobile":1,"x":"null"},{"site":"euratech","uid":"unknown","archi":"wsn430:cc2420","state":"Absent","network_address":"wsn430-247.euratech.iot-lab.info","mobility_type":"null","z":"null","y":"null","mobile":1,"x":"null"},{"site":"euratech","uid":"unknown","archi":"wsn430:cc2420","state":"Absent","network_address":"wsn430-248.euratech.iot-lab.info","mobility_type":"null","z":"null","y":"null","mobile":1,"x":"null"},{"site":"euratech","uid":"unknown","archi":"wsn430:cc2420","state":"Absent","network_address":"wsn430-249.euratech.iot-lab.info","mobility_type":"null","z":"null","y":"null","mobile":1,"x":"null"},{"site":"euratech","uid":"unknown","archi":"wsn430:cc2420","state":"Absent","network_address":"wsn430-250.euratech.iot-lab.info","mobility_type":"null","z":"null","y":"null","mobile":1,"x":"null"},{"site":"euratech","uid":"unknown","archi":"wsn430:cc2420","state":"Absent","network_address":"wsn430-251.euratech.iot-lab.info","mobility_type":"null","z":"null","y":"null","mobile":1,"x":"null"},{"site":"euratech","uid":"unknown","archi":"wsn430:cc2420","state":"Absent","network_address":"wsn430-252.euratech.iot-lab.info","mobility_type":"null","z":"null","y":"null","mobile":1,"x":"null"},{"site":"euratech","uid":"unknown","archi":"wsn430:cc2420","state":"Absent","network_address":"wsn430-253.euratech.iot-lab.info","mobility_type":"null","z":"null","y":"null","mobile":1,"x":"null"},{"site":"euratech","uid":"unknown","archi":"wsn430:cc2420","state":"Absent","network_address":"wsn430-254.euratech.iot-lab.info","mobility_type":"null","z":"null","y":"null","mobile":1,"x":"null"},{"site":"euratech","uid":"unknown","archi":"wsn430:cc2420","state":"Absent","network_address":"wsn430-255.euratech.iot-lab.info","mobility_type":"null","z":"null","y":"null","mobile":1,"x":"null"},{"site":"euratech","uid":"unknown","archi":"wsn430:cc2420","state":"Absent","network_address":"wsn430-256.euratech.iot-lab.info","mobility_type":"null","z":"null","y":"null","mobile":1,"x":"null"},{"site":"strasbourg","uid":"c0d8","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-1.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"0.98","mobile":0,"x":"0.93"},{"site":"strasbourg","uid":"b2a7","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-2.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"0.98","mobile":0,"x":"0.93"},{"site":"strasbourg","uid":"c6f0","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-3.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"0.98","mobile":0,"x":"0.93"},{"site":"strasbourg","uid":"bcab","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-4.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"0.98","mobile":0,"x":"1.93"},{"site":"strasbourg","uid":"c66a","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-5.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"0.98","mobile":0,"x":"1.93"},{"site":"strasbourg","uid":"b222","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-6.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"0.98","mobile":0,"x":"1.93"},{"site":"strasbourg","uid":"b012","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-7.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"0.98","mobile":0,"x":"2.93"},{"site":"strasbourg","uid":"c5ac","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-8.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"0.98","mobile":0,"x":"2.93"},{"site":"strasbourg","uid":"bef2","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-9.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"0.98","mobile":0,"x":"2.93"},{"site":"strasbourg","uid":"b7b2","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-10.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"0.98","mobile":0,"x":"3.93"},{"site":"strasbourg","uid":"b9f1","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-11.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"0.98","mobile":0,"x":"3.93"},{"site":"strasbourg","uid":"c223","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-12.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"0.98","mobile":0,"x":"3.93"},{"site":"strasbourg","uid":"c3a0","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-13.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"0.98","mobile":0,"x":"4.93"},{"site":"strasbourg","uid":"cb40","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-14.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"0.98","mobile":0,"x":"4.93"},{"site":"strasbourg","uid":"bd81","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-15.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"0.98","mobile":0,"x":"4.93"},{"site":"strasbourg","uid":"afa3","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-16.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"0.98","mobile":0,"x":"5.93"},{"site":"strasbourg","uid":"be5a","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-17.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"0.98","mobile":0,"x":"5.93"},{"site":"strasbourg","uid":"1bf9","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-18.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"0.98","mobile":0,"x":"5.93"},{"site":"strasbourg","uid":"bca1","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-19.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"0.98","mobile":0,"x":"6.93"},{"site":"strasbourg","uid":"c1c3","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-20.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"0.98","mobile":0,"x":"6.93"},{"site":"strasbourg","uid":"c6ce","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-21.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"0.98","mobile":0,"x":"6.93"},{"site":"strasbourg","uid":"c5d4","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-22.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"0.98","mobile":0,"x":"7.93"},{"site":"strasbourg","uid":"ba38","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-23.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"0.98","mobile":0,"x":"7.93"},{"site":"strasbourg","uid":"1f59","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-24.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"0.98","mobile":0,"x":"7.93"},{"site":"strasbourg","uid":"b862","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-25.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"1.98","mobile":0,"x":"0.93"},{"site":"strasbourg","uid":"b5e1","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-26.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"1.98","mobile":0,"x":"0.93"},{"site":"strasbourg","uid":"bb10","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-27.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"1.98","mobile":0,"x":"0.93"},{"site":"strasbourg","uid":"c68a","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-28.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"1.98","mobile":0,"x":"1.93"},{"site":"strasbourg","uid":"b576","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-29.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"1.98","mobile":0,"x":"1.93"},{"site":"strasbourg","uid":"b343","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-30.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"1.98","mobile":0,"x":"1.93"},{"site":"strasbourg","uid":"c19f","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-31.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"1.98","mobile":0,"x":"2.93"},{"site":"strasbourg","uid":"1cef","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-32.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"1.98","mobile":0,"x":"2.93"},{"site":"strasbourg","uid":"c225","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-33.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"1.98","mobile":0,"x":"2.93"},{"site":"strasbourg","uid":"bc7a","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-34.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"1.98","mobile":0,"x":"3.93"},{"site":"strasbourg","uid":"ba03","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-35.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"1.98","mobile":0,"x":"3.93"},{"site":"strasbourg","uid":"c262","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-36.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"1.98","mobile":0,"x":"3.93"},{"site":"strasbourg","uid":"ba7f","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-37.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"1.98","mobile":0,"x":"4.93"},{"site":"strasbourg","uid":"b614","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-38.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"1.98","mobile":0,"x":"4.93"},{"site":"strasbourg","uid":"be35","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-39.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"1.98","mobile":0,"x":"4.93"},{"site":"strasbourg","uid":"b9a0","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-40.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"1.98","mobile":0,"x":"5.93"},{"site":"strasbourg","uid":"c9fa","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-41.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"1.98","mobile":0,"x":"5.93"},{"site":"strasbourg","uid":"b42e","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-42.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"1.98","mobile":0,"x":"5.93"},{"site":"strasbourg","uid":"c935","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-43.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"1.98","mobile":0,"x":"6.93"},{"site":"strasbourg","uid":"bdd3","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-44.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"1.98","mobile":0,"x":"6.93"},{"site":"strasbourg","uid":"b957","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-45.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"1.98","mobile":0,"x":"6.93"},{"site":"strasbourg","uid":"c87f","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-46.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"1.98","mobile":0,"x":"7.93"},{"site":"strasbourg","uid":"cdac","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-47.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"1.98","mobile":0,"x":"7.93"},{"site":"strasbourg","uid":"bf84","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-48.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"1.98","mobile":0,"x":"7.93"},{"site":"strasbourg","uid":"cf14","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-49.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"2.98","mobile":0,"x":"0.93"},{"site":"strasbourg","uid":"c605","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-50.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"2.98","mobile":0,"x":"0.93"},{"site":"strasbourg","uid":"af8a","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-51.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"2.98","mobile":0,"x":"0.93"},{"site":"strasbourg","uid":"c35d","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-52.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"2.98","mobile":0,"x":"1.93"},{"site":"strasbourg","uid":"ca60","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-53.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"2.98","mobile":0,"x":"1.93"},{"site":"strasbourg","uid":"c09b","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-54.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"2.98","mobile":0,"x":"1.93"},{"site":"strasbourg","uid":"c4aa","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-55.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"2.98","mobile":0,"x":"2.93"},{"site":"strasbourg","uid":"ca01","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-56.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"2.98","mobile":0,"x":"2.93"},{"site":"strasbourg","uid":"bb25","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-57.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"2.98","mobile":0,"x":"2.93"},{"site":"strasbourg","uid":"b7af","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-58.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"2.98","mobile":0,"x":"3.93"},{"site":"strasbourg","uid":"b057","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-59.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"2.98","mobile":0,"x":"3.93"},{"site":"strasbourg","uid":"cf0a","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-60.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"2.98","mobile":0,"x":"3.93"},{"site":"strasbourg","uid":"ca27","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-61.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"2.98","mobile":0,"x":"4.93"},{"site":"strasbourg","uid":"cb57","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-62.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"2.98","mobile":0,"x":"4.93"},{"site":"strasbourg","uid":"cbaf","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-63.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"2.98","mobile":0,"x":"4.93"},{"site":"strasbourg","uid":"c7de","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-64.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"2.98","mobile":0,"x":"5.93"},{"site":"strasbourg","uid":"bcf4","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-65.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"2.98","mobile":0,"x":"5.93"},{"site":"strasbourg","uid":"bf80","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-66.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"2.98","mobile":0,"x":"5.93"},{"site":"strasbourg","uid":"bdb0","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-67.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"2.98","mobile":0,"x":"6.93"},{"site":"strasbourg","uid":"be6b","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-68.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"2.98","mobile":0,"x":"6.93"},{"site":"strasbourg","uid":"cd74","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-69.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"2.98","mobile":0,"x":"6.93"},{"site":"strasbourg","uid":"b7e2","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-70.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"2.98","mobile":0,"x":"7.93"},{"site":"strasbourg","uid":"cc5e","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-71.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"2.98","mobile":0,"x":"7.93"},{"site":"strasbourg","uid":"b467","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-72.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"2.98","mobile":0,"x":"7.93"},{"site":"strasbourg","uid":"cecf","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-73.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"3.98","mobile":0,"x":"0.93"},{"site":"strasbourg","uid":"cd64","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-74.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"3.98","mobile":0,"x":"0.93"},{"site":"strasbourg","uid":"c9cf","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-75.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"3.98","mobile":0,"x":"0.93"},{"site":"strasbourg","uid":"b23c","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-76.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"3.98","mobile":0,"x":"1.93"},{"site":"strasbourg","uid":"cd18","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-77.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"3.98","mobile":0,"x":"1.93"},{"site":"strasbourg","uid":"bb3a","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-78.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"3.98","mobile":0,"x":"1.93"},{"site":"strasbourg","uid":"c987","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-79.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"3.98","mobile":0,"x":"2.93"},{"site":"strasbourg","uid":"c8ea","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-80.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"3.98","mobile":0,"x":"2.93"},{"site":"strasbourg","uid":"b5c5","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-81.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"3.98","mobile":0,"x":"2.93"},{"site":"strasbourg","uid":"1f3c","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-82.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"3.98","mobile":0,"x":"3.93"},{"site":"strasbourg","uid":"bb11","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-83.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"3.98","mobile":0,"x":"3.93"},{"site":"strasbourg","uid":"c7df","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-84.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"3.98","mobile":0,"x":"3.93"},{"site":"strasbourg","uid":"c986","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-85.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"3.98","mobile":0,"x":"4.93"},{"site":"strasbourg","uid":"c5e2","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-86.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"3.98","mobile":0,"x":"4.93"},{"site":"strasbourg","uid":"c755","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-87.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"3.98","mobile":0,"x":"4.93"},{"site":"strasbourg","uid":"ca2f","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-88.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"3.98","mobile":0,"x":"5.93"},{"site":"strasbourg","uid":"b138","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-89.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"3.98","mobile":0,"x":"5.93"},{"site":"strasbourg","uid":"c92f","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-90.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"3.98","mobile":0,"x":"5.93"},{"site":"strasbourg","uid":"c681","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-91.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"3.98","mobile":0,"x":"6.93"},{"site":"strasbourg","uid":"cd2e","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-92.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"3.98","mobile":0,"x":"6.93"},{"site":"strasbourg","uid":"c1d5","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-93.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"3.98","mobile":0,"x":"6.93"},{"site":"strasbourg","uid":"cc22","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-94.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"3.98","mobile":0,"x":"7.93"},{"site":"strasbourg","uid":"c4e5","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-95.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"3.98","mobile":0,"x":"7.93"},{"site":"strasbourg","uid":"c5b3","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-96.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"3.98","mobile":0,"x":"7.93"},{"site":"strasbourg","uid":"bfb9","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-97.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"4.98","mobile":0,"x":"0.93"},{"site":"strasbourg","uid":"b8fb","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-98.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"4.98","mobile":0,"x":"0.93"},{"site":"strasbourg","uid":"bc1c","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-99.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"4.98","mobile":0,"x":"0.93"},{"site":"strasbourg","uid":"bae2","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-100.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"4.98","mobile":0,"x":"1.93"},{"site":"strasbourg","uid":"bbff","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-101.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"4.98","mobile":0,"x":"1.93"},{"site":"strasbourg","uid":"c881","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-102.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"4.98","mobile":0,"x":"1.93"},{"site":"strasbourg","uid":"ca54","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-103.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"4.98","mobile":0,"x":"2.93"},{"site":"strasbourg","uid":"c71e","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-104.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"4.98","mobile":0,"x":"2.93"},{"site":"strasbourg","uid":"bb7d","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-105.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"4.98","mobile":0,"x":"2.93"},{"site":"strasbourg","uid":"1f94","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-106.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"4.98","mobile":0,"x":"3.93"},{"site":"strasbourg","uid":"b4d8","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-107.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"4.98","mobile":0,"x":"3.93"},{"site":"strasbourg","uid":"cccb","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-108.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"4.98","mobile":0,"x":"3.93"},{"site":"strasbourg","uid":"be59","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-109.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"4.98","mobile":0,"x":"4.93"},{"site":"strasbourg","uid":"ceb0","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-110.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"4.98","mobile":0,"x":"4.93"},{"site":"strasbourg","uid":"b5e2","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-111.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"4.98","mobile":0,"x":"4.93"},{"site":"strasbourg","uid":"c302","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-112.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"4.98","mobile":0,"x":"5.93"},{"site":"strasbourg","uid":"af64","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-113.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"4.98","mobile":0,"x":"5.93"},{"site":"strasbourg","uid":"ced2","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-114.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"4.98","mobile":0,"x":"5.93"},{"site":"strasbourg","uid":"ced4","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-115.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"4.98","mobile":0,"x":"6.93"},{"site":"strasbourg","uid":"203f","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-116.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"4.98","mobile":0,"x":"6.93"},{"site":"strasbourg","uid":"c14d","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-117.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"4.98","mobile":0,"x":"6.93"},{"site":"strasbourg","uid":"b0d7","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-118.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"4.98","mobile":0,"x":"7.93"},{"site":"strasbourg","uid":"1cc4","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-119.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"4.98","mobile":0,"x":"7.93"},{"site":"strasbourg","uid":"bc76","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-120.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"4.98","mobile":0,"x":"7.93"},{"site":"strasbourg","uid":"b634","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-121.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"5.98","mobile":0,"x":"0.93"},{"site":"strasbourg","uid":"af9d","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-122.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"5.98","mobile":0,"x":"0.93"},{"site":"strasbourg","uid":"bc2c","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-123.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"5.98","mobile":0,"x":"0.93"},{"site":"strasbourg","uid":"cb20","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-124.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"5.98","mobile":0,"x":"1.93"},{"site":"strasbourg","uid":"bbfc","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-125.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"5.98","mobile":0,"x":"1.93"},{"site":"strasbourg","uid":"c2e8","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-126.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"5.98","mobile":0,"x":"1.93"},{"site":"strasbourg","uid":"cd45","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-127.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"5.98","mobile":0,"x":"2.93"},{"site":"strasbourg","uid":"b268","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-128.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"5.98","mobile":0,"x":"2.93"},{"site":"strasbourg","uid":"c396","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-129.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"5.98","mobile":0,"x":"2.93"},{"site":"strasbourg","uid":"c1d4","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-130.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"5.98","mobile":0,"x":"3.93"},{"site":"strasbourg","uid":"ca19","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-131.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"5.98","mobile":0,"x":"3.93"},{"site":"strasbourg","uid":"b54e","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-132.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"5.98","mobile":0,"x":"3.93"},{"site":"strasbourg","uid":"b6be","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-133.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"5.98","mobile":0,"x":"4.93"},{"site":"strasbourg","uid":"b0db","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-134.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"5.98","mobile":0,"x":"4.93"},{"site":"strasbourg","uid":"bbe8","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-135.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"5.98","mobile":0,"x":"4.93"},{"site":"strasbourg","uid":"cedc","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-136.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"5.98","mobile":0,"x":"5.93"},{"site":"strasbourg","uid":"c677","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-137.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"5.98","mobile":0,"x":"5.93"},{"site":"strasbourg","uid":"c211","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-138.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"5.98","mobile":0,"x":"5.93"},{"site":"strasbourg","uid":"c47f","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-139.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"5.98","mobile":0,"x":"6.93"},{"site":"strasbourg","uid":"c381","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-140.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"5.98","mobile":0,"x":"6.93"},{"site":"strasbourg","uid":"b2fa","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-141.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"5.98","mobile":0,"x":"6.93"},{"site":"strasbourg","uid":"caa0","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-142.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"5.98","mobile":0,"x":"7.93"},{"site":"strasbourg","uid":"afd3","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-143.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"5.98","mobile":0,"x":"7.93"},{"site":"strasbourg","uid":"b256","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-144.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"5.98","mobile":0,"x":"7.93"},{"site":"strasbourg","uid":"c9d8","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-145.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"6.98","mobile":0,"x":"0.93"},{"site":"strasbourg","uid":"cefd","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-146.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"6.98","mobile":0,"x":"0.93"},{"site":"strasbourg","uid":"ba79","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-147.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"6.98","mobile":0,"x":"0.93"},{"site":"strasbourg","uid":"b71d","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-148.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"6.98","mobile":0,"x":"1.93"},{"site":"strasbourg","uid":"c7e8","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-149.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"6.98","mobile":0,"x":"1.93"},{"site":"strasbourg","uid":"c941","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-150.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"6.98","mobile":0,"x":"1.93"},{"site":"strasbourg","uid":"ba7d","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-151.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"6.98","mobile":0,"x":"2.93"},{"site":"strasbourg","uid":"ba0b","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-152.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"6.98","mobile":0,"x":"2.93"},{"site":"strasbourg","uid":"b7fe","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-153.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"6.98","mobile":0,"x":"2.93"},{"site":"strasbourg","uid":"b90e","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-154.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"6.98","mobile":0,"x":"3.93"},{"site":"strasbourg","uid":"c84e","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-155.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"6.98","mobile":0,"x":"3.93"},{"site":"strasbourg","uid":"c7ad","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-156.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"6.98","mobile":0,"x":"3.93"},{"site":"strasbourg","uid":"bd0f","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-157.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"6.98","mobile":0,"x":"4.93"},{"site":"strasbourg","uid":"ce62","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-158.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"6.98","mobile":0,"x":"4.93"},{"site":"strasbourg","uid":"b4f8","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-159.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"6.98","mobile":0,"x":"4.93"},{"site":"strasbourg","uid":"b78d","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-160.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"6.98","mobile":0,"x":"5.93"},{"site":"strasbourg","uid":"bf13","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-161.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"6.98","mobile":0,"x":"5.93"},{"site":"strasbourg","uid":"babf","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-162.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"6.98","mobile":0,"x":"5.93"},{"site":"strasbourg","uid":"bc2e","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-163.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"6.98","mobile":0,"x":"6.93"},{"site":"strasbourg","uid":"be2b","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-164.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"6.98","mobile":0,"x":"6.93"},{"site":"strasbourg","uid":"b44f","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-165.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"6.98","mobile":0,"x":"6.93"},{"site":"strasbourg","uid":"c128","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-166.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"6.98","mobile":0,"x":"7.93"},{"site":"strasbourg","uid":"c86d","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-167.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"6.98","mobile":0,"x":"7.93"},{"site":"strasbourg","uid":"b1a2","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-168.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"6.98","mobile":0,"x":"7.93"},{"site":"strasbourg","uid":"bdcc","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-169.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"7.98","mobile":0,"x":"0.93"},{"site":"strasbourg","uid":"b8fa","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-170.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"7.98","mobile":0,"x":"0.93"},{"site":"strasbourg","uid":"1c26","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-171.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"7.98","mobile":0,"x":"0.93"},{"site":"strasbourg","uid":"bff3","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-172.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"7.98","mobile":0,"x":"1.93"},{"site":"strasbourg","uid":"b7e7","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-173.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"7.98","mobile":0,"x":"1.93"},{"site":"strasbourg","uid":"cabc","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-174.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"7.98","mobile":0,"x":"1.93"},{"site":"strasbourg","uid":"c5d6","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-175.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"7.98","mobile":0,"x":"2.93"},{"site":"strasbourg","uid":"cb6c","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-176.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"7.98","mobile":0,"x":"2.93"},{"site":"strasbourg","uid":"cc0a","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-177.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"7.98","mobile":0,"x":"2.93"},{"site":"strasbourg","uid":"b847","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-178.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"7.98","mobile":0,"x":"3.93"},{"site":"strasbourg","uid":"c02a","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-179.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"7.98","mobile":0,"x":"3.93"},{"site":"strasbourg","uid":"ba20","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-180.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"7.98","mobile":0,"x":"3.93"},{"site":"strasbourg","uid":"c9d5","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-181.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"7.98","mobile":0,"x":"4.93"},{"site":"strasbourg","uid":"b661","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-182.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"7.98","mobile":0,"x":"4.93"},{"site":"strasbourg","uid":"be23","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-183.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"7.98","mobile":0,"x":"4.93"},{"site":"strasbourg","uid":"b7b0","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-184.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"7.98","mobile":0,"x":"5.93"},{"site":"strasbourg","uid":"b4b9","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-185.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"7.98","mobile":0,"x":"5.93"},{"site":"strasbourg","uid":"bc68","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-186.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"7.98","mobile":0,"x":"5.93"},{"site":"strasbourg","uid":"b7c1","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-187.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"7.98","mobile":0,"x":"6.93"},{"site":"strasbourg","uid":"b7f7","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-188.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"7.98","mobile":0,"x":"6.93"},{"site":"strasbourg","uid":"1cad","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-189.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"7.98","mobile":0,"x":"6.93"},{"site":"strasbourg","uid":"1f7b","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-190.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"7.98","mobile":0,"x":"7.93"},{"site":"strasbourg","uid":"b5c4","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-191.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"7.98","mobile":0,"x":"7.93"},{"site":"strasbourg","uid":"bfb7","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-192.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"7.98","mobile":0,"x":"7.93"},{"site":"strasbourg","uid":"b9dd","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-193.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"8.98","mobile":0,"x":"0.93"},{"site":"strasbourg","uid":"cd65","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-194.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"8.98","mobile":0,"x":"0.93"},{"site":"strasbourg","uid":"c790","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-195.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"8.98","mobile":0,"x":"0.93"},{"site":"strasbourg","uid":"b9cf","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-196.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"8.98","mobile":0,"x":"1.93"},{"site":"strasbourg","uid":"b37d","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-197.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"8.98","mobile":0,"x":"1.93"},{"site":"strasbourg","uid":"c0c2","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-198.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"8.98","mobile":0,"x":"1.93"},{"site":"strasbourg","uid":"bcff","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-199.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"8.98","mobile":0,"x":"2.93"},{"site":"strasbourg","uid":"b162","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-200.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"8.98","mobile":0,"x":"2.93"},{"site":"strasbourg","uid":"b36d","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-201.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"8.98","mobile":0,"x":"2.93"},{"site":"strasbourg","uid":"afa5","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-202.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"8.98","mobile":0,"x":"3.93"},{"site":"strasbourg","uid":"bce0","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-203.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"8.98","mobile":0,"x":"3.93"},{"site":"strasbourg","uid":"c610","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-204.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"8.98","mobile":0,"x":"3.93"},{"site":"strasbourg","uid":"b4f2","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-205.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"8.98","mobile":0,"x":"4.93"},{"site":"strasbourg","uid":"bc93","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-206.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"8.98","mobile":0,"x":"4.93"},{"site":"strasbourg","uid":"cadf","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-207.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"8.98","mobile":0,"x":"4.93"},{"site":"strasbourg","uid":"c324","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-208.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"8.98","mobile":0,"x":"5.93"},{"site":"strasbourg","uid":"bf07","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-209.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"8.98","mobile":0,"x":"5.93"},{"site":"strasbourg","uid":"cd83","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-210.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"8.98","mobile":0,"x":"5.93"},{"site":"strasbourg","uid":"ce46","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-211.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"8.98","mobile":0,"x":"6.93"},{"site":"strasbourg","uid":"ba40","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-212.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"8.98","mobile":0,"x":"6.93"},{"site":"strasbourg","uid":"b37a","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-213.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"8.98","mobile":0,"x":"6.93"},{"site":"strasbourg","uid":"c8bf","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-214.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"8.98","mobile":0,"x":"7.93"},{"site":"strasbourg","uid":"bec0","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-215.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"8.98","mobile":0,"x":"7.93"},{"site":"strasbourg","uid":"2037","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-216.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"8.98","mobile":0,"x":"7.93"},{"site":"strasbourg","uid":"ce48","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-217.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"9.98","mobile":0,"x":"0.93"},{"site":"strasbourg","uid":"b814","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-218.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"9.98","mobile":0,"x":"0.93"},{"site":"strasbourg","uid":"b8a6","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-219.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"9.98","mobile":0,"x":"0.93"},{"site":"strasbourg","uid":"bdb9","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-220.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"9.98","mobile":0,"x":"1.93"},{"site":"strasbourg","uid":"b675","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-221.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"9.98","mobile":0,"x":"1.93"},{"site":"strasbourg","uid":"b75f","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-222.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"9.98","mobile":0,"x":"1.93"},{"site":"strasbourg","uid":"afeb","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-223.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"9.98","mobile":0,"x":"2.93"},{"site":"strasbourg","uid":"b42a","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-224.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"9.98","mobile":0,"x":"2.93"},{"site":"strasbourg","uid":"b63a","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-225.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"9.98","mobile":0,"x":"2.93"},{"site":"strasbourg","uid":"bf23","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-226.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"9.98","mobile":0,"x":"3.93"},{"site":"strasbourg","uid":"bff9","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-227.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"9.98","mobile":0,"x":"3.93"},{"site":"strasbourg","uid":"c1cd","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-228.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"9.98","mobile":0,"x":"3.93"},{"site":"strasbourg","uid":"b38d","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-229.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"9.98","mobile":0,"x":"4.93"},{"site":"strasbourg","uid":"ce99","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-230.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"9.98","mobile":0,"x":"4.93"},{"site":"strasbourg","uid":"b169","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-231.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"9.98","mobile":0,"x":"4.93"},{"site":"strasbourg","uid":"c6c5","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-232.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"9.98","mobile":0,"x":"5.93"},{"site":"strasbourg","uid":"b8e7","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-233.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"9.98","mobile":0,"x":"5.93"},{"site":"strasbourg","uid":"c394","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-234.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"9.98","mobile":0,"x":"5.93"},{"site":"strasbourg","uid":"b109","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-235.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"9.98","mobile":0,"x":"6.93"},{"site":"strasbourg","uid":"bbe0","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-236.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"9.98","mobile":0,"x":"6.93"},{"site":"strasbourg","uid":"cdef","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-237.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"9.98","mobile":0,"x":"6.93"},{"site":"strasbourg","uid":"cb29","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-238.strasbourg.iot-lab.info","mobility_type":"null","z":"0.5","y":"9.98","mobile":0,"x":"7.93"},{"site":"strasbourg","uid":"b38f","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-239.strasbourg.iot-lab.info","mobility_type":"null","z":"1.5","y":"9.98","mobile":0,"x":"7.93"},{"site":"strasbourg","uid":"b89b","archi":"wsn430:cc1101","state":"Alive","network_address":"wsn430-240.strasbourg.iot-lab.info","mobility_type":"null","z":"2.5","y":"9.98","mobile":0,"x":"7.93"},{"site":"strasbourg","uid":"unknown","archi":"wsn430:cc1101","state":"Suspected","network_address":"wsn430-241.strasbourg.iot-lab.info","mobility_type":"null","z":"null","y":"null","mobile":1,"x":"null"},{"site":"strasbourg","uid":"unknown","archi":"wsn430:cc1101","state":"Suspected","network_address":"wsn430-242.strasbourg.iot-lab.info","mobility_type":"null","z":"null","y":"null","mobile":1,"x":"null"},{"site":"strasbourg","uid":"unknown","archi":"wsn430:cc1101","state":"Suspected","network_address":"wsn430-243.strasbourg.iot-lab.info","mobility_type":"null","z":"null","y":"null","mobile":1,"x":"null"},{"site":"strasbourg","uid":"unknown","archi":"wsn430:cc1101","state":"Absent","network_address":"wsn430-244.strasbourg.iot-lab.info","mobility_type":"null","z":"null","y":"null","mobile":0,"x":"null"},{"site":"strasbourg","uid":"unknown","archi":"wsn430:cc1101","state":"Absent","network_address":"wsn430-245.strasbourg.iot-lab.info","mobility_type":"null","z":"null","y":"null","mobile":0,"x":"null"},{"site":"strasbourg","uid":"unknown","archi":"wsn430:cc1101","state":"Absent","network_address":"wsn430-246.strasbourg.iot-lab.info","mobility_type":"null","z":"null","y":"null","mobile":0,"x":"null"},{"site":"strasbourg","uid":"unknown","archi":"wsn430:cc1101","state":"Absent","network_address":"wsn430-247.strasbourg.iot-lab.info","mobility_type":"null","z":"null","y":"null","mobile":0,"x":"null"},{"site":"strasbourg","uid":"unknown","archi":"wsn430:cc1101","state":"Absent","network_address":"wsn430-248.strasbourg.iot-lab.info","mobility_type":"null","z":"null","y":"null","mobile":0,"x":"null"},{"site":"strasbourg","uid":"unknown","archi":"wsn430:cc1101","state":"Absent","network_address":"wsn430-249.strasbourg.iot-lab.info","mobility_type":"null","z":"null","y":"null","mobile":0,"x":"null"},{"site":"strasbourg","uid":"unknown","archi":"wsn430:cc1101","state":"Absent","network_address":"wsn430-250.strasbourg.iot-lab.info","mobility_type":"null","z":"null","y":"null","mobile":0,"x":"null"},{"site":"strasbourg","uid":"unknown","archi":"wsn430:cc1101","state":"Absent","network_address":"wsn430-251.strasbourg.iot-lab.info","mobility_type":"null","z":"null","y":"null","mobile":0,"x":"null"},{"site":"strasbourg","uid":"unknown","archi":"wsn430:cc1101","state":"Absent","network_address":"wsn430-252.strasbourg.iot-lab.info","mobility_type":"null","z":"null","y":"null","mobile":0,"x":"null"},{"site":"strasbourg","uid":"unknown","archi":"wsn430:cc1101","state":"Absent","network_address":"wsn430-253.strasbourg.iot-lab.info","mobility_type":"null","z":"null","y":"null","mobile":1,"x":"null"},{"site":"strasbourg","uid":"unknown","archi":"wsn430:cc1101","state":"Absent","network_address":"wsn430-254.strasbourg.iot-lab.info","mobility_type":"null","z":"null","y":"null","mobile":1,"x":"null"},{"site":"strasbourg","uid":"unknown","archi":"wsn430:cc1101","state":"Absent","network_address":"wsn430-255.strasbourg.iot-lab.info","mobility_type":"null","z":"null","y":"null","mobile":1,"x":"null"},{"site":"strasbourg","uid":"unknown","archi":"wsn430:cc1101","state":"Absent","network_address":"wsn430-256.strasbourg.iot-lab.info","mobility_type":"null","z":"null","y":"null","mobile":1,"x":"null"},{"site":"grenoble","uid":"9982","archi":"m3:at86rf231","state":"Alive","network_address":"m3-2.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"20.70"},{"site":"grenoble","uid":"9176","archi":"m3:at86rf231","state":"Alive","network_address":"m3-4.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"21.90"},{"site":"grenoble","uid":"a176","archi":"m3:at86rf231","state":"Alive","network_address":"m3-5.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"22.50"},{"site":"grenoble","uid":"2162","archi":"m3:at86rf231","state":"Alive","network_address":"m3-9.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"25.75"},{"site":"grenoble","uid":"9971","archi":"m3:at86rf231","state":"Alive","network_address":"m3-11.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"26.95"},{"site":"grenoble","uid":"a569","archi":"m3:at86rf231","state":"Alive","network_address":"m3-13.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"28.15"},{"site":"grenoble","uid":"9869","archi":"m3:at86rf231","state":"Alive","network_address":"m3-14.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"28.75"},{"site":"grenoble","uid":"c280","archi":"m3:at86rf231","state":"Alive","network_address":"m3-15.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"29.35"},{"site":"grenoble","uid":"a172","archi":"m3:at86rf231","state":"Alive","network_address":"m3-17.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"30.55"},{"site":"grenoble","uid":"b679","archi":"m3:at86rf231","state":"Alive","network_address":"m3-18.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"31.15"},{"site":"grenoble","uid":"b382","archi":"m3:at86rf231","state":"Alive","network_address":"m3-21.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"32.95"},{"site":"grenoble","uid":"a669","archi":"m3:at86rf231","state":"Alive","network_address":"m3-23.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"34.15"},{"site":"grenoble","uid":"9071","archi":"m3:at86rf231","state":"Alive","network_address":"m3-25.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"35.35"},{"site":"grenoble","uid":"0662","archi":"m3:at86rf231","state":"Alive","network_address":"m3-29.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"37.75"},{"site":"grenoble","uid":"c168","archi":"m3:at86rf231","state":"Alive","network_address":"m3-30.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"38.35"},{"site":"grenoble","uid":"b377","archi":"m3:at86rf231","state":"Alive","network_address":"m3-31.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"38.95"},{"site":"grenoble","uid":"a482","archi":"m3:at86rf231","state":"Alive","network_address":"m3-32.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"39.55"},{"site":"grenoble","uid":"b482","archi":"m3:at86rf231","state":"Alive","network_address":"m3-33.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"40.15"},{"site":"grenoble","uid":"a581","archi":"m3:at86rf231","state":"Alive","network_address":"m3-35.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"41.35"},{"site":"grenoble","uid":"0562","archi":"m3:at86rf231","state":"Alive","network_address":"m3-37.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"42.55"},{"site":"grenoble","uid":"a181","archi":"m3:at86rf231","state":"Alive","network_address":"m3-38.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"43.15"},{"site":"grenoble","uid":"c078","archi":"m3:at86rf231","state":"Alive","network_address":"m3-39.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"43.75"},{"site":"grenoble","uid":"a978","archi":"m3:at86rf231","state":"Alive","network_address":"m3-40.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"44.35"},{"site":"grenoble","uid":"c181","archi":"m3:at86rf231","state":"Alive","network_address":"m3-44.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"46.75"},{"site":"grenoble","uid":"a872","archi":"m3:at86rf231","state":"Alive","network_address":"m3-45.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"47.35"},{"site":"grenoble","uid":"a780","archi":"m3:at86rf231","state":"Alive","network_address":"m3-48.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"49.15"},{"site":"grenoble","uid":"b683","archi":"m3:at86rf231","state":"Alive","network_address":"m3-49.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"49.75"},{"site":"grenoble","uid":"9472","archi":"m3:at86rf231","state":"Alive","network_address":"m3-51.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"50.95"},{"site":"grenoble","uid":"9878","archi":"m3:at86rf231","state":"Alive","network_address":"m3-55.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"53.35"},{"site":"grenoble","uid":"b780","archi":"m3:at86rf231","state":"Alive","network_address":"m3-59.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"55.75"},{"site":"grenoble","uid":"b678","archi":"m3:at86rf231","state":"Alive","network_address":"m3-61.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"56.95"},{"site":"grenoble","uid":"a169","archi":"m3:at86rf231","state":"Alive","network_address":"m3-63.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"58.15"},{"site":"grenoble","uid":"8778","archi":"m3:at86rf231","state":"Suspected","network_address":"m3-65.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"59.35"},{"site":"grenoble","uid":"a983","archi":"m3:at86rf231","state":"Alive","network_address":"m3-68.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"61.15"},{"site":"grenoble","uid":"9682","archi":"m3:at86rf231","state":"Alive","network_address":"m3-69.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"61.75"},{"site":"grenoble","uid":"a779","archi":"m3:at86rf231","state":"Alive","network_address":"m3-71.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"16.42"},{"site":"grenoble","uid":"8972","archi":"m3:at86rf231","state":"Alive","network_address":"m3-72.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"15.82"},{"site":"grenoble","uid":"8771","archi":"m3:at86rf231","state":"Suspected","network_address":"m3-73.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"15.22"},{"site":"grenoble","uid":"1462","archi":"m3:at86rf231","state":"Alive","network_address":"m3-77.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"12.82"},{"site":"grenoble","uid":"9476","archi":"m3:at86rf231","state":"Alive","network_address":"m3-80.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"11.02"},{"site":"grenoble","uid":"a271","archi":"m3:at86rf231","state":"Alive","network_address":"m3-85.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"8.02"},{"site":"grenoble","uid":"a475","archi":"m3:at86rf231","state":"Alive","network_address":"m3-88.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"6.22"},{"site":"grenoble","uid":"1662","archi":"m3:at86rf231","state":"Alive","network_address":"m3-91.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"4.42"},{"site":"grenoble","uid":"2960","archi":"m3:at86rf231","state":"Alive","network_address":"m3-94.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"2.62"},{"site":"grenoble","uid":"9181","archi":"m3:at86rf231","state":"Alive","network_address":"m3-101.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"24.63","mobile":0,"x":"0.40"},{"site":"grenoble","uid":"a881","archi":"m3:at86rf231","state":"Alive","network_address":"m3-102.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"24.63","mobile":0,"x":"1.00"},{"site":"grenoble","uid":"b576","archi":"m3:at86rf231","state":"Alive","network_address":"m3-105.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"23.43","mobile":0,"x":"0.40"},{"site":"grenoble","uid":"9382","archi":"m3:at86rf231","state":"Alive","network_address":"m3-106.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"23.43","mobile":0,"x":"1.00"},{"site":"grenoble","uid":"1062","archi":"m3:at86rf231","state":"Alive","network_address":"m3-109.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"22.23","mobile":0,"x":"0.40"},{"site":"grenoble","uid":"a671","archi":"m3:at86rf231","state":"Alive","network_address":"m3-113.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"21.03","mobile":0,"x":"0.40"},{"site":"grenoble","uid":"a879","archi":"m3:at86rf231","state":"Alive","network_address":"m3-114.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"21.03","mobile":0,"x":"1.00"},{"site":"grenoble","uid":"8471","archi":"m3:at86rf231","state":"Alive","network_address":"m3-115.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"20.43","mobile":0,"x":"0.40"},{"site":"grenoble","uid":"8969","archi":"m3:at86rf231","state":"Alive","network_address":"m3-116.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"20.43","mobile":0,"x":"1.00"},{"site":"grenoble","uid":"2262","archi":"m3:at86rf231","state":"Alive","network_address":"m3-117.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"19.83","mobile":0,"x":"0.40"},{"site":"grenoble","uid":"9376","archi":"m3:at86rf231","state":"Alive","network_address":"m3-118.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"19.83","mobile":0,"x":"1.00"},{"site":"grenoble","uid":"a180","archi":"m3:at86rf231","state":"Alive","network_address":"m3-122.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"18.63","mobile":0,"x":"1.00"},{"site":"grenoble","uid":"c276","archi":"m3:at86rf231","state":"Alive","network_address":"m3-123.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"18.03","mobile":0,"x":"0.40"},{"site":"grenoble","uid":"9772","archi":"m3:at86rf231","state":"Alive","network_address":"m3-124.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"18.03","mobile":0,"x":"1.00"},{"site":"grenoble","uid":"9672","archi":"m3:at86rf231","state":"Alive","network_address":"m3-125.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"17.43","mobile":0,"x":"0.40"},{"site":"grenoble","uid":"9783","archi":"m3:at86rf231","state":"Alive","network_address":"m3-129.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"16.23","mobile":0,"x":"0.40"},{"site":"grenoble","uid":"a272","archi":"m3:at86rf231","state":"Alive","network_address":"m3-130.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"16.23","mobile":0,"x":"1.00"},{"site":"grenoble","uid":"9369","archi":"m3:at86rf231","state":"Alive","network_address":"m3-131.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"15.63","mobile":0,"x":"0.40"},{"site":"grenoble","uid":"a369","archi":"m3:at86rf231","state":"Alive","network_address":"m3-132.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"15.63","mobile":0,"x":"1.00"},{"site":"grenoble","uid":"2360","archi":"m3:at86rf231","state":"Alive","network_address":"m3-133.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"15.03","mobile":0,"x":"0.40"},{"site":"grenoble","uid":"a069","archi":"m3:at86rf231","state":"Alive","network_address":"m3-134.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"15.03","mobile":0,"x":"1.00"},{"site":"grenoble","uid":"1761","archi":"m3:at86rf231","state":"Alive","network_address":"m3-135.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"14.43","mobile":0,"x":"0.40"},{"site":"grenoble","uid":"9669","archi":"m3:at86rf231","state":"Alive","network_address":"m3-136.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"14.43","mobile":0,"x":"1.00"},{"site":"grenoble","uid":"b169","archi":"m3:at86rf231","state":"Suspected","network_address":"m3-138.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"13.83","mobile":0,"x":"1.00"},{"site":"grenoble","uid":"a778","archi":"m3:at86rf231","state":"Alive","network_address":"m3-139.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"13.23","mobile":0,"x":"0.40"},{"site":"grenoble","uid":"b483","archi":"m3:at86rf231","state":"Alive","network_address":"m3-140.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"13.23","mobile":0,"x":"1.00"},{"site":"grenoble","uid":"8579","archi":"m3:at86rf231","state":"Alive","network_address":"m3-141.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"12.63","mobile":0,"x":"0.40"},{"site":"grenoble","uid":"a783","archi":"m3:at86rf231","state":"Alive","network_address":"m3-142.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"12.63","mobile":0,"x":"1.00"},{"site":"grenoble","uid":"a668","archi":"m3:at86rf231","state":"Alive","network_address":"m3-146.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"11.43","mobile":0,"x":"1.00"},{"site":"grenoble","uid":"9380","archi":"m3:at86rf231","state":"Alive","network_address":"m3-147.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"10.83","mobile":0,"x":"0.40"},{"site":"grenoble","uid":"9976","archi":"m3:at86rf231","state":"Suspected","network_address":"m3-148.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"10.83","mobile":0,"x":"1.00"},{"site":"grenoble","uid":"b676","archi":"m3:at86rf231","state":"Suspected","network_address":"m3-150.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"10.23","mobile":0,"x":"1.00"},{"site":"grenoble","uid":"9576","archi":"m3:at86rf231","state":"Alive","network_address":"m3-151.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"9.63","mobile":0,"x":"0.40"},{"site":"grenoble","uid":"b769","archi":"m3:at86rf231","state":"Alive","network_address":"m3-152.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"9.63","mobile":0,"x":"1.00"},{"site":"grenoble","uid":"3160","archi":"m3:at86rf231","state":"Alive","network_address":"m3-155.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"8.43","mobile":0,"x":"0.40"},{"site":"grenoble","uid":"a380","archi":"m3:at86rf231","state":"Alive","network_address":"m3-157.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"7.83","mobile":0,"x":"0.40"},{"site":"grenoble","uid":"a781","archi":"m3:at86rf231","state":"Alive","network_address":"m3-158.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"7.83","mobile":0,"x":"1.00"},{"site":"grenoble","uid":"a081","archi":"m3:at86rf231","state":"Alive","network_address":"m3-159.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"7.23","mobile":0,"x":"0.40"},{"site":"grenoble","uid":"9880","archi":"m3:at86rf231","state":"Alive","network_address":"m3-160.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"7.23","mobile":0,"x":"1.00"},{"site":"grenoble","uid":"9582","archi":"m3:at86rf231","state":"Alive","network_address":"m3-161.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"6.63","mobile":0,"x":"0.40"},{"site":"grenoble","uid":"8775","archi":"m3:at86rf231","state":"Alive","network_address":"m3-162.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"6.63","mobile":0,"x":"1.00"},{"site":"grenoble","uid":"1862","archi":"m3:at86rf231","state":"Alive","network_address":"m3-167.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"4.83","mobile":0,"x":"0.40"},{"site":"grenoble","uid":"a276","archi":"m3:at86rf231","state":"Alive","network_address":"m3-169.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"4.23","mobile":0,"x":"0.40"},{"site":"grenoble","uid":"9379","archi":"m3:at86rf231","state":"Alive","network_address":"m3-171.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"3.63","mobile":0,"x":"0.40"},{"site":"grenoble","uid":"a179","archi":"m3:at86rf231","state":"Alive","network_address":"m3-174.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"3.03","mobile":0,"x":"1.00"},{"site":"grenoble","uid":"a870","archi":"m3:at86rf231","state":"Alive","network_address":"m3-175.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"2.43","mobile":0,"x":"0.40"},{"site":"grenoble","uid":"a281","archi":"m3:at86rf231","state":"Alive","network_address":"m3-178.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"1.85","mobile":0,"x":"1.00"},{"site":"grenoble","uid":"a776","archi":"m3:at86rf231","state":"Alive","network_address":"m3-179.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"2.75"},{"site":"grenoble","uid":"0762","archi":"m3:at86rf231","state":"Alive","network_address":"m3-180.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"3.35"},{"site":"grenoble","uid":"b583","archi":"m3:at86rf231","state":"Alive","network_address":"m3-181.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"3.95"},{"site":"grenoble","uid":"9968","archi":"m3:at86rf231","state":"Alive","network_address":"m3-182.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"4.55"},{"site":"grenoble","uid":"9978","archi":"m3:at86rf231","state":"Alive","network_address":"m3-185.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"6.35"},{"site":"grenoble","uid":"9571","archi":"m3:at86rf231","state":"Alive","network_address":"m3-187.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"7.55"},{"site":"grenoble","uid":"9072","archi":"m3:at86rf231","state":"Alive","network_address":"m3-188.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"8.15"},{"site":"grenoble","uid":"9480","archi":"m3:at86rf231","state":"Alive","network_address":"m3-189.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"8.75"},{"site":"grenoble","uid":"8872","archi":"m3:at86rf231","state":"Alive","network_address":"m3-191.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"9.95"},{"site":"grenoble","uid":"b579","archi":"m3:at86rf231","state":"Alive","network_address":"m3-192.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"10.55"},{"site":"grenoble","uid":"a375","archi":"m3:at86rf231","state":"Alive","network_address":"m3-194.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"11.75"},{"site":"grenoble","uid":"a768","archi":"m3:at86rf231","state":"Alive","network_address":"m3-196.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"12.95"},{"site":"grenoble","uid":"a972","archi":"m3:at86rf231","state":"Alive","network_address":"m3-197.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"13.55"},{"site":"grenoble","uid":"a383","archi":"m3:at86rf231","state":"Alive","network_address":"m3-198.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"14.15"},{"site":"grenoble","uid":"9584","archi":"m3:at86rf231","state":"Alive","network_address":"m3-203.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"17.15"},{"site":"grenoble","uid":"b877","archi":"m3:at86rf231","state":"Alive","network_address":"m3-204.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.75","mobile":0,"x":"18.95"},{"site":"grenoble","uid":"9979","archi":"m3:at86rf231","state":"Alive","network_address":"m3-206.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"1.83","mobile":0,"x":"18.95"},{"site":"grenoble","uid":"9076","archi":"m3:at86rf231","state":"Alive","network_address":"m3-208.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"2.43","mobile":0,"x":"18.95"},{"site":"grenoble","uid":"c081","archi":"m3:at86rf231","state":"Alive","network_address":"m3-210.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"3.03","mobile":0,"x":"18.95"},{"site":"grenoble","uid":"b280","archi":"m3:at86rf231","state":"Alive","network_address":"m3-212.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"3.63","mobile":0,"x":"18.95"},{"site":"grenoble","uid":"8472","archi":"m3:at86rf231","state":"Alive","network_address":"m3-213.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"3.63","mobile":0,"x":"18.35"},{"site":"grenoble","uid":"9567","archi":"m3:at86rf231","state":"Alive","network_address":"m3-214.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"4.23","mobile":0,"x":"18.95"},{"site":"grenoble","uid":"b369","archi":"m3:at86rf231","state":"Alive","network_address":"m3-216.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"4.83","mobile":0,"x":"18.95"},{"site":"grenoble","uid":"b481","archi":"m3:at86rf231","state":"Alive","network_address":"m3-219.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"5.43","mobile":0,"x":"18.35"},{"site":"grenoble","uid":"2160","archi":"m3:at86rf231","state":"Alive","network_address":"m3-220.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"6.03","mobile":0,"x":"18.95"},{"site":"grenoble","uid":"3860","archi":"m3:at86rf231","state":"Alive","network_address":"m3-222.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"6.63","mobile":0,"x":"18.95"},{"site":"grenoble","uid":"b268","archi":"m3:at86rf231","state":"Alive","network_address":"m3-226.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"7.83","mobile":0,"x":"18.95"},{"site":"grenoble","uid":"9377","archi":"m3:at86rf231","state":"Alive","network_address":"m3-227.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"7.83","mobile":0,"x":"18.35"},{"site":"grenoble","uid":"8779","archi":"m3:at86rf231","state":"Alive","network_address":"m3-231.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"9.03","mobile":0,"x":"18.35"},{"site":"grenoble","uid":"a372","archi":"m3:at86rf231","state":"Alive","network_address":"m3-232.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"9.63","mobile":0,"x":"18.95"},{"site":"grenoble","uid":"9481","archi":"m3:at86rf231","state":"Alive","network_address":"m3-234.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"10.23","mobile":0,"x":"18.95"},{"site":"grenoble","uid":"2362","archi":"m3:at86rf231","state":"Alive","network_address":"m3-235.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"10.23","mobile":0,"x":"18.35"},{"site":"grenoble","uid":"a677","archi":"m3:at86rf231","state":"Alive","network_address":"m3-236.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"10.83","mobile":0,"x":"18.95"},{"site":"grenoble","uid":"1562","archi":"m3:at86rf231","state":"Alive","network_address":"m3-237.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"10.83","mobile":0,"x":"18.35"},{"site":"grenoble","uid":"b876","archi":"m3:at86rf231","state":"Alive","network_address":"m3-239.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"11.43","mobile":0,"x":"18.35"},{"site":"grenoble","uid":"8371","archi":"m3:at86rf231","state":"Alive","network_address":"m3-241.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"12.03","mobile":0,"x":"18.35"},{"site":"grenoble","uid":"9077","archi":"m3:at86rf231","state":"Alive","network_address":"m3-242.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"12.63","mobile":0,"x":"18.95"},{"site":"grenoble","uid":"9579","archi":"m3:at86rf231","state":"Alive","network_address":"m3-244.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"13.23","mobile":0,"x":"18.95"},{"site":"grenoble","uid":"9269","archi":"m3:at86rf231","state":"Alive","network_address":"m3-245.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"13.23","mobile":0,"x":"18.35"},{"site":"grenoble","uid":"b881","archi":"m3:at86rf231","state":"Alive","network_address":"m3-246.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"13.83","mobile":0,"x":"18.95"},{"site":"grenoble","uid":"b383","archi":"m3:at86rf231","state":"Alive","network_address":"m3-248.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"14.43","mobile":0,"x":"18.95"},{"site":"grenoble","uid":"b580","archi":"m3:at86rf231","state":"Alive","network_address":"m3-252.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"15.63","mobile":0,"x":"18.95"},{"site":"grenoble","uid":"c277","archi":"m3:at86rf231","state":"Alive","network_address":"m3-253.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"15.63","mobile":0,"x":"18.35"},{"site":"grenoble","uid":"8982","archi":"m3:at86rf231","state":"Alive","network_address":"m3-254.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"16.23","mobile":0,"x":"18.95"},{"site":"grenoble","uid":"b668","archi":"m3:at86rf231","state":"Alive","network_address":"m3-257.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"16.83","mobile":0,"x":"18.35"},{"site":"grenoble","uid":"1860","archi":"m3:at86rf231","state":"Alive","network_address":"m3-258.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"17.43","mobile":0,"x":"18.95"},{"site":"grenoble","uid":"a478","archi":"m3:at86rf231","state":"Alive","network_address":"m3-260.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"18.03","mobile":0,"x":"18.95"},{"site":"grenoble","uid":"a481","archi":"m3:at86rf231","state":"Alive","network_address":"m3-262.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"18.63","mobile":0,"x":"18.95"},{"site":"grenoble","uid":"8470","archi":"m3:at86rf231","state":"Alive","network_address":"m3-263.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"18.63","mobile":0,"x":"18.35"},{"site":"grenoble","uid":"9575","archi":"m3:at86rf231","state":"Alive","network_address":"m3-264.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"19.23","mobile":0,"x":"18.95"},{"site":"grenoble","uid":"a470","archi":"m3:at86rf231","state":"Alive","network_address":"m3-265.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"19.23","mobile":0,"x":"18.35"},{"site":"grenoble","uid":"b182","archi":"m3:at86rf231","state":"Alive","network_address":"m3-267.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"19.83","mobile":0,"x":"18.35"},{"site":"grenoble","uid":"a980","archi":"m3:at86rf231","state":"Alive","network_address":"m3-271.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"21.03","mobile":0,"x":"18.35"},{"site":"grenoble","uid":"2861","archi":"m3:at86rf231","state":"Alive","network_address":"m3-272.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"21.63","mobile":0,"x":"18.95"},{"site":"grenoble","uid":"9279","archi":"m3:at86rf231","state":"Alive","network_address":"m3-273.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"21.63","mobile":0,"x":"18.35"},{"site":"grenoble","uid":"a968","archi":"m3:at86rf231","state":"Alive","network_address":"m3-278.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"23.43","mobile":0,"x":"18.95"},{"site":"grenoble","uid":"b381","archi":"m3:at86rf231","state":"Alive","network_address":"m3-280.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"24.03","mobile":0,"x":"18.95"},{"site":"grenoble","uid":"a283","archi":"m3:at86rf231","state":"Alive","network_address":"m3-282.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"24.63","mobile":0,"x":"18.95"},{"site":"grenoble","uid":"a583","archi":"m3:at86rf231","state":"Alive","network_address":"m3-285.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"25.23","mobile":0,"x":"18.35"},{"site":"grenoble","uid":"1162","archi":"m3:at86rf231","state":"Alive","network_address":"m3-288.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.52","mobile":0,"x":"18.95"},{"site":"grenoble","uid":"c370","archi":"m3:at86rf231","state":"Alive","network_address":"m3-289.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.52","mobile":0,"x":"18.35"},{"site":"grenoble","uid":"a078","archi":"m3:at86rf231","state":"Alive","network_address":"m3-290.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"20.05"},{"site":"grenoble","uid":"9183","archi":"m3:at86rf231","state":"Alive","network_address":"m3-292.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"21.25"},{"site":"grenoble","uid":"9475","archi":"m3:at86rf231","state":"Alive","network_address":"m3-293.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"21.85"},{"site":"grenoble","uid":"a079","archi":"m3:at86rf231","state":"Alive","network_address":"m3-297.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"25.22"},{"site":"grenoble","uid":"b569","archi":"m3:at86rf231","state":"Alive","network_address":"m3-298.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"25.85"},{"site":"grenoble","uid":"1362","archi":"m3:at86rf231","state":"Alive","network_address":"m3-299.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"26.42"},{"site":"grenoble","uid":"8876","archi":"m3:at86rf231","state":"Alive","network_address":"m3-300.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"27.02"},{"site":"grenoble","uid":"a675","archi":"m3:at86rf231","state":"Alive","network_address":"m3-301.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"28.22"},{"site":"grenoble","uid":"a370","archi":"m3:at86rf231","state":"Alive","network_address":"m3-303.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"29.36"},{"site":"grenoble","uid":"a082","archi":"m3:at86rf231","state":"Alive","network_address":"m3-307.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"31.76"},{"site":"grenoble","uid":"c368","archi":"m3:at86rf231","state":"Alive","network_address":"m3-309.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"32.96"},{"site":"grenoble","uid":"c169","archi":"m3:at86rf231","state":"Alive","network_address":"m3-310.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"33.56"},{"site":"grenoble","uid":"a570","archi":"m3:at86rf231","state":"Alive","network_address":"m3-311.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"34.16"},{"site":"grenoble","uid":"9782","archi":"m3:at86rf231","state":"Alive","network_address":"m3-312.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"34.76"},{"site":"grenoble","uid":"9082","archi":"m3:at86rf231","state":"Alive","network_address":"m3-313.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"35.36"},{"site":"grenoble","uid":"9580","archi":"m3:at86rf231","state":"Alive","network_address":"m3-314.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"35.96"},{"site":"grenoble","uid":"b276","archi":"m3:at86rf231","state":"Alive","network_address":"m3-317.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"37.76"},{"site":"grenoble","uid":"8370","archi":"m3:at86rf231","state":"Alive","network_address":"m3-318.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"38.36"},{"site":"grenoble","uid":"9879","archi":"m3:at86rf231","state":"Alive","network_address":"m3-321.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"40.16"},{"site":"grenoble","uid":"b282","archi":"m3:at86rf231","state":"Alive","network_address":"m3-322.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"40.76"},{"site":"grenoble","uid":"a782","archi":"m3:at86rf231","state":"Alive","network_address":"m3-324.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"41.96"},{"site":"grenoble","uid":"9776","archi":"m3:at86rf231","state":"Alive","network_address":"m3-325.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"42.56"},{"site":"grenoble","uid":"9282","archi":"m3:at86rf231","state":"Alive","network_address":"m3-328.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"44.36"},{"site":"grenoble","uid":"a472","archi":"m3:at86rf231","state":"Alive","network_address":"m3-335.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"48.56"},{"site":"grenoble","uid":"b279","archi":"m3:at86rf231","state":"Alive","network_address":"m3-337.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"49.76"},{"site":"grenoble","uid":"9668","archi":"m3:at86rf231","state":"Alive","network_address":"m3-338.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"50.36"},{"site":"grenoble","uid":"9477","archi":"m3:at86rf231","state":"Alive","network_address":"m3-339.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"50.96"},{"site":"grenoble","uid":"a568","archi":"m3:at86rf231","state":"Alive","network_address":"m3-343.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"53.36"},{"site":"grenoble","uid":"c082","archi":"m3:at86rf231","state":"Alive","network_address":"m3-344.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"53.96"},{"site":"grenoble","uid":"b669","archi":"m3:at86rf231","state":"Alive","network_address":"m3-346.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"55.16"},{"site":"grenoble","uid":"9868","archi":"m3:at86rf231","state":"Alive","network_address":"m3-348.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"56.36"},{"site":"grenoble","uid":"2553","archi":"m3:at86rf231","state":"Alive","network_address":"m3-349.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"56.96"},{"site":"grenoble","uid":"9367","archi":"m3:at86rf231","state":"Alive","network_address":"m3-354.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"59.96"},{"site":"grenoble","uid":"c171","archi":"m3:at86rf231","state":"Alive","network_address":"m3-359.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"25.75","mobile":0,"x":"34.75"},{"site":"grenoble","uid":"3360","archi":"m3:at86rf231","state":"Alive","network_address":"m3-360.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"25.75","mobile":0,"x":"35.35"},{"site":"grenoble","uid":"b883","archi":"m3:at86rf231","state":"Alive","network_address":"m3-363.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"24.92","mobile":0,"x":"37.75"},{"site":"grenoble","uid":"3060","archi":"m3:at86rf231","state":"Alive","network_address":"m3-366.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"25.75","mobile":0,"x":"39.55"},{"site":"grenoble","uid":"b469","archi":"m3:at86rf231","state":"Alive","network_address":"m3-367.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"25.75","mobile":0,"x":"40.15"},{"site":"grenoble","uid":"2953","archi":"m3:at86rf231","state":"Alive","network_address":"m3-368.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"25.75","mobile":0,"x":"40.75"},{"site":"grenoble","uid":"c077","archi":"m3:at86rf231","state":"Alive","network_address":"m3-371.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"25.75","mobile":0,"x":"46.75"},{"site":"grenoble","uid":"8575","archi":"m3:at86rf231","state":"Alive","network_address":"m3-374.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"25.75","mobile":0,"x":"48.55"},{"site":"grenoble","uid":"2254","archi":"m3:at86rf231","state":"Alive","network_address":"m3-375.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"25.75","mobile":0,"x":"49.15"},{"site":"grenoble","uid":"a175","archi":"m3:at86rf231","state":"Alive","network_address":"m3-376.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"25.75","mobile":0,"x":"52.15"},{"site":"grenoble","uid":"9484","archi":"m3:at86rf231","state":"Alive","network_address":"m3-377.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"25.75","mobile":0,"x":"52.75"},{"site":"grenoble","uid":"3460","archi":"m3:at86rf231","state":"Alive","network_address":"m3-379.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"25.75","mobile":0,"x":"53.95"},{"site":"grenoble","uid":"a979","archi":"m3:at86rf231","state":"Alive","network_address":"m3-380.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"25.75","mobile":0,"x":"54.55"},{"site":"lille","uid":"3055","archi":"m3:at86rf231","state":"Alive","network_address":"m3-1.lille.iot-lab.info","mobility_type":"null","z":"1.5","y":"0.1","mobile":0,"x":"0.82"},{"site":"lille","uid":"2250","archi":"m3:at86rf231","state":"Alive","network_address":"m3-3.lille.iot-lab.info","mobility_type":"null","z":"1.5","y":"0.1","mobile":0,"x":"2.02"},{"site":"lille","uid":"1255","archi":"m3:at86rf231","state":"Alive","network_address":"m3-6.lille.iot-lab.info","mobility_type":"null","z":"0.6","y":"0.1","mobile":0,"x":"3.22"},{"site":"lille","uid":"1055","archi":"m3:at86rf231","state":"Alive","network_address":"m3-9.lille.iot-lab.info","mobility_type":"null","z":"1.5","y":"0.1","mobile":0,"x":"5.62"},{"site":"lille","uid":"2156","archi":"m3:at86rf231","state":"Alive","network_address":"m3-10.lille.iot-lab.info","mobility_type":"null","z":"0.6","y":"0.1","mobile":0,"x":"5.62"},{"site":"lille","uid":"1457","archi":"m3:at86rf231","state":"Alive","network_address":"m3-11.lille.iot-lab.info","mobility_type":"null","z":"1.5","y":"0.1","mobile":0,"x":"6.82"},{"site":"lille","uid":"b588","archi":"m3:at86rf231","state":"Alive","network_address":"m3-14.lille.iot-lab.info","mobility_type":"null","z":"0.6","y":"0.1","mobile":0,"x":"8.02"},{"site":"lille","uid":"2150","archi":"m3:at86rf231","state":"Alive","network_address":"m3-15.lille.iot-lab.info","mobility_type":"null","z":"1.5","y":"0.1","mobile":0,"x":"9.22"},{"site":"lille","uid":"1854","archi":"m3:at86rf231","state":"Alive","network_address":"m3-18.lille.iot-lab.info","mobility_type":"null","z":"0.6","y":"0.1","mobile":0,"x":"10.42"},{"site":"lille","uid":"2455","archi":"m3:at86rf231","state":"Alive","network_address":"m3-19.lille.iot-lab.info","mobility_type":"null","z":"1.5","y":"0.1","mobile":0,"x":"11.62"},{"site":"lille","uid":"3454","archi":"m3:at86rf231","state":"Alive","network_address":"m3-23.lille.iot-lab.info","mobility_type":"null","z":"1.5","y":"0.1","mobile":0,"x":"14.02"},{"site":"lille","uid":"1058","archi":"m3:at86rf231","state":"Alive","network_address":"m3-24.lille.iot-lab.info","mobility_type":"null","z":"0.6","y":"0.1","mobile":0,"x":"14.02"},{"site":"lille","uid":"9170","archi":"m3:at86rf231","state":"Alive","network_address":"m3-26.lille.iot-lab.info","mobility_type":"null","z":"0.6","y":"0.1","mobile":0,"x":"15.22"},{"site":"lille","uid":"9973","archi":"m3:at86rf231","state":"Alive","network_address":"m3-27.lille.iot-lab.info","mobility_type":"null","z":"1.5","y":"0.3","mobile":0,"x":"0.1"},{"site":"lille","uid":"1155","archi":"m3:at86rf231","state":"Alive","network_address":"m3-28.lille.iot-lab.info","mobility_type":"null","z":"0.6","y":"0.3","mobile":0,"x":"0.1"},{"site":"lille","uid":"3658","archi":"m3:at86rf231","state":"Alive","network_address":"m3-29.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"0.3","mobile":0,"x":"0.82"},{"site":"lille","uid":"1759","archi":"m3:at86rf231","state":"Alive","network_address":"m3-32.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"0.3","mobile":0,"x":"4.42"},{"site":"lille","uid":"1758","archi":"m3:at86rf231","state":"Alive","network_address":"m3-33.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"0.3","mobile":0,"x":"5.62"},{"site":"lille","uid":"b373","archi":"m3:at86rf231","state":"Alive","network_address":"m3-34.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"0.3","mobile":0,"x":"6.82"},{"site":"lille","uid":"2151","archi":"m3:at86rf231","state":"Alive","network_address":"m3-38.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"0.3","mobile":0,"x":"11.62"},{"site":"lille","uid":"b271","archi":"m3:at86rf231","state":"Alive","network_address":"m3-39.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"0.3","mobile":0,"x":"12.82"},{"site":"lille","uid":"b370","archi":"m3:at86rf231","state":"Alive","network_address":"m3-40.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"0.3","mobile":0,"x":"14.02"},{"site":"lille","uid":"1757","archi":"m3:at86rf231","state":"Alive","network_address":"m3-42.lille.iot-lab.info","mobility_type":"null","z":"2.4","y":"0.3","mobile":0,"x":"16.1"},{"site":"lille","uid":"1057","archi":"m3:at86rf231","state":"Alive","network_address":"m3-44.lille.iot-lab.info","mobility_type":"null","z":"0.6","y":"0.3","mobile":0,"x":"16.1"},{"site":"lille","uid":"a173","archi":"m3:at86rf231","state":"Alive","network_address":"m3-47.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"1.5","mobile":0,"x":"0.82"},{"site":"lille","uid":"b572","archi":"m3:at86rf231","state":"Alive","network_address":"m3-49.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"1.5","mobile":0,"x":"3.22"},{"site":"lille","uid":"b071","archi":"m3:at86rf231","state":"Alive","network_address":"m3-51.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"1.5","mobile":0,"x":"5.62"},{"site":"lille","uid":"b473","archi":"m3:at86rf231","state":"Alive","network_address":"m3-52.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"1.5","mobile":0,"x":"6.82"},{"site":"lille","uid":"9773","archi":"m3:at86rf231","state":"Alive","network_address":"m3-54.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"1.5","mobile":0,"x":"9.22"},{"site":"lille","uid":"a689","archi":"m3:at86rf231","state":"Alive","network_address":"m3-56.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"1.5","mobile":0,"x":"11.62"},{"site":"lille","uid":"2755","archi":"m3:at86rf231","state":"Alive","network_address":"m3-57.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"1.5","mobile":0,"x":"12.82"},{"site":"lille","uid":"a673","archi":"m3:at86rf231","state":"Alive","network_address":"m3-63.lille.iot-lab.info","mobility_type":"null","z":"1.5","y":"2.7","mobile":0,"x":"0.1"},{"site":"lille","uid":"a273","archi":"m3:at86rf231","state":"Alive","network_address":"m3-64.lille.iot-lab.info","mobility_type":"null","z":"0.6","y":"2.7","mobile":0,"x":"0.1"},{"site":"lille","uid":"9777","archi":"m3:at86rf231","state":"Alive","network_address":"m3-65.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"2.7","mobile":0,"x":"0.82"},{"site":"lille","uid":"a390","archi":"m3:at86rf231","state":"Alive","network_address":"m3-66.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"2.7","mobile":0,"x":"2.02"},{"site":"lille","uid":"8574","archi":"m3:at86rf231","state":"Alive","network_address":"m3-67.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"2.7","mobile":0,"x":"3.22"},{"site":"lille","uid":"8774","archi":"m3:at86rf231","state":"Alive","network_address":"m3-70.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"2.7","mobile":0,"x":"6.82"},{"site":"lille","uid":"8674","archi":"m3:at86rf231","state":"Alive","network_address":"m3-71.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"2.7","mobile":0,"x":"8.02"},{"site":"lille","uid":"a077","archi":"m3:at86rf231","state":"Alive","network_address":"m3-72.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"2.7","mobile":0,"x":"9.22"},{"site":"lille","uid":"1756","archi":"m3:at86rf231","state":"Alive","network_address":"m3-73.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"2.7","mobile":0,"x":"10.42"},{"site":"lille","uid":"2852","archi":"m3:at86rf231","state":"Alive","network_address":"m3-74.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"2.7","mobile":0,"x":"11.62"},{"site":"lille","uid":"2550","archi":"m3:at86rf231","state":"Alive","network_address":"m3-76.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"2.7","mobile":0,"x":"14.02"},{"site":"lille","uid":"9577","archi":"m3:at86rf231","state":"Alive","network_address":"m3-79.lille.iot-lab.info","mobility_type":"null","z":"1.5","y":"2.7","mobile":0,"x":"16.1"},{"site":"lille","uid":"2256","archi":"m3:at86rf231","state":"Alive","network_address":"m3-80.lille.iot-lab.info","mobility_type":"null","z":"0.6","y":"2.7","mobile":0,"x":"16.1"},{"site":"lille","uid":"b089","archi":"m3:at86rf231","state":"Alive","network_address":"m3-82.lille.iot-lab.info","mobility_type":"null","z":"0.6","y":"3.9","mobile":0,"x":"0.1"},{"site":"lille","uid":"1459","archi":"m3:at86rf231","state":"Alive","network_address":"m3-83.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"3.9","mobile":0,"x":"0.82"},{"site":"lille","uid":"b671","archi":"m3:at86rf231","state":"Alive","network_address":"m3-85.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"3.9","mobile":0,"x":"3.22"},{"site":"lille","uid":"2258","archi":"m3:at86rf231","state":"Alive","network_address":"m3-87.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"3.9","mobile":0,"x":"5.62"},{"site":"lille","uid":"2750","archi":"m3:at86rf231","state":"Alive","network_address":"m3-88.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"3.9","mobile":0,"x":"6.82"},{"site":"lille","uid":"3554","archi":"m3:at86rf231","state":"Alive","network_address":"m3-89.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"3.9","mobile":0,"x":"8.02"},{"site":"lille","uid":"0956","archi":"m3:at86rf231","state":"Alive","network_address":"m3-90.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"3.9","mobile":0,"x":"9.22"},{"site":"lille","uid":"c170","archi":"m3:at86rf231","state":"Alive","network_address":"m3-91.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"3.9","mobile":0,"x":"10.42"},{"site":"lille","uid":"9989","archi":"m3:at86rf231","state":"Alive","network_address":"m3-92.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"3.9","mobile":0,"x":"11.62"},{"site":"lille","uid":"b272","archi":"m3:at86rf231","state":"Alive","network_address":"m3-94.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"3.9","mobile":0,"x":"14.02"},{"site":"lille","uid":"2459","archi":"m3:at86rf231","state":"Alive","network_address":"m3-95.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"3.9","mobile":0,"x":"15.22"},{"site":"lille","uid":"2555","archi":"m3:at86rf231","state":"Alive","network_address":"m3-97.lille.iot-lab.info","mobility_type":"null","z":"1.5","y":"3.9","mobile":0,"x":"16.1"},{"site":"lille","uid":"8973","archi":"m3:at86rf231","state":"Alive","network_address":"m3-100.lille.iot-lab.info","mobility_type":"null","z":"0.6","y":"5.1","mobile":0,"x":"0.1"},{"site":"lille","uid":"a473","archi":"m3:at86rf231","state":"Alive","network_address":"m3-102.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"5.1","mobile":0,"x":"2.02"},{"site":"lille","uid":"0660","archi":"m3:at86rf231","state":"Alive","network_address":"m3-104.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"5.1","mobile":0,"x":"4.42"},{"site":"lille","uid":"3559","archi":"m3:at86rf231","state":"Alive","network_address":"m3-106.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"5.1","mobile":0,"x":"6.82"},{"site":"lille","uid":"b172","archi":"m3:at86rf231","state":"Alive","network_address":"m3-108.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"5.1","mobile":0,"x":"9.22"},{"site":"lille","uid":"2853","archi":"m3:at86rf231","state":"Alive","network_address":"m3-110.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"5.1","mobile":0,"x":"11.62"},{"site":"lille","uid":"3858","archi":"m3:at86rf231","state":"Alive","network_address":"m3-111.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"5.1","mobile":0,"x":"12.82"},{"site":"lille","uid":"1957","archi":"m3:at86rf231","state":"Alive","network_address":"m3-113.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"5.1","mobile":0,"x":"15.22"},{"site":"lille","uid":"b872","archi":"m3:at86rf231","state":"Alive","network_address":"m3-114.lille.iot-lab.info","mobility_type":"null","z":"2.4","y":"5.1","mobile":0,"x":"16.1"},{"site":"lille","uid":"a890","archi":"m3:at86rf231","state":"Alive","network_address":"m3-115.lille.iot-lab.info","mobility_type":"null","z":"1.5","y":"5.1","mobile":0,"x":"16.1"},{"site":"lille","uid":"b488","archi":"m3:at86rf231","state":"Alive","network_address":"m3-116.lille.iot-lab.info","mobility_type":"null","z":"0.6","y":"5.1","mobile":0,"x":"16.1"},{"site":"lille","uid":"2556","archi":"m3:at86rf231","state":"Alive","network_address":"m3-118.lille.iot-lab.info","mobility_type":"null","z":"0.6","y":"5.45","mobile":0,"x":"5.42"},{"site":"lille","uid":"1061","archi":"m3:at86rf231","state":"Alive","network_address":"m3-121.lille.iot-lab.info","mobility_type":"null","z":"1.5","y":"5.1","mobile":0,"x":"14.18"},{"site":"lille","uid":"3154","archi":"m3:at86rf231","state":"Alive","network_address":"m3-122.lille.iot-lab.info","mobility_type":"null","z":"0.6","y":"5.1","mobile":0,"x":"14.18"},{"site":"lille","uid":"9570","archi":"m3:at86rf231","state":"Alive","network_address":"m3-125.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"6.3","mobile":0,"x":"3.22"},{"site":"lille","uid":"3558","archi":"m3:at86rf231","state":"Alive","network_address":"m3-127.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"6.3","mobile":0,"x":"5.62"},{"site":"lille","uid":"2452","archi":"m3:at86rf231","state":"Alive","network_address":"m3-128.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"6.3","mobile":0,"x":"6.82"},{"site":"lille","uid":"1954","archi":"m3:at86rf231","state":"Alive","network_address":"m3-130.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"6.3","mobile":0,"x":"9.22"},{"site":"lille","uid":"b388","archi":"m3:at86rf231","state":"Alive","network_address":"m3-131.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"6.3","mobile":0,"x":"10.42"},{"site":"lille","uid":"b973","archi":"m3:at86rf231","state":"Alive","network_address":"m3-132.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"6.3","mobile":0,"x":"11.62"},{"site":"lille","uid":"2451","archi":"m3:at86rf231","state":"Alive","network_address":"m3-133.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"6.3","mobile":0,"x":"12.82"},{"site":"lille","uid":"b670","archi":"m3:at86rf231","state":"Alive","network_address":"m3-134.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"6.3","mobile":0,"x":"14.02"},{"site":"lille","uid":"0957","archi":"m3:at86rf231","state":"Alive","network_address":"m3-135.lille.iot-lab.info","mobility_type":"null","z":"1.5","y":"6.3","mobile":0,"x":"14.18"},{"site":"lille","uid":"0561","archi":"m3:at86rf231","state":"Alive","network_address":"m3-136.lille.iot-lab.info","mobility_type":"null","z":"0.6","y":"6.3","mobile":0,"x":"14.18"},{"site":"lille","uid":"1856","archi":"m3:at86rf231","state":"Alive","network_address":"m3-138.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"7.5","mobile":0,"x":"2.02"},{"site":"lille","uid":"9073","archi":"m3:at86rf231","state":"Alive","network_address":"m3-140.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"7.5","mobile":0,"x":"4.42"},{"site":"lille","uid":"9270","archi":"m3:at86rf231","state":"Alive","network_address":"m3-142.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"7.5","mobile":0,"x":"6.82"},{"site":"lille","uid":"8773","archi":"m3:at86rf231","state":"Alive","network_address":"m3-143.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"7.5","mobile":0,"x":"8.02"},{"site":"lille","uid":"a189","archi":"m3:at86rf231","state":"Alive","network_address":"m3-144.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"7.5","mobile":0,"x":"9.22"},{"site":"lille","uid":"a170","archi":"m3:at86rf231","state":"Alive","network_address":"m3-145.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"7.5","mobile":0,"x":"10.42"},{"site":"lille","uid":"c273","archi":"m3:at86rf231","state":"Alive","network_address":"m3-148.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"7.5","mobile":0,"x":"14.02"},{"site":"lille","uid":"9074","archi":"m3:at86rf231","state":"Alive","network_address":"m3-149.lille.iot-lab.info","mobility_type":"null","z":"1.5","y":"7.5","mobile":0,"x":"14.18"},{"site":"lille","uid":"2955","archi":"m3:at86rf231","state":"Alive","network_address":"m3-156.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"8.7","mobile":0,"x":"6.82"},{"site":"lille","uid":"2350","archi":"m3:at86rf231","state":"Alive","network_address":"m3-157.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"8.7","mobile":0,"x":"8.02"},{"site":"lille","uid":"2050","archi":"m3:at86rf231","state":"Alive","network_address":"m3-159.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"8.7","mobile":0,"x":"10.42"},{"site":"lille","uid":"c472","archi":"m3:at86rf231","state":"Alive","network_address":"m3-160.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"8.7","mobile":0,"x":"11.62"},{"site":"lille","uid":"1855","archi":"m3:at86rf231","state":"Alive","network_address":"m3-161.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"8.7","mobile":0,"x":"12.82"},{"site":"lille","uid":"1754","archi":"m3:at86rf231","state":"Alive","network_address":"m3-163.lille.iot-lab.info","mobility_type":"null","z":"1.5","y":"8.7","mobile":0,"x":"14.18"},{"site":"lille","uid":"2951","archi":"m3:at86rf231","state":"Alive","network_address":"m3-169.lille.iot-lab.info","mobility_type":"null","z":"1.5","y":"9.16","mobile":0,"x":"3.22"},{"site":"lille","uid":"1751","archi":"m3:at86rf231","state":"Alive","network_address":"m3-170.lille.iot-lab.info","mobility_type":"null","z":"0.6","y":"9.16","mobile":0,"x":"3.22"},{"site":"lille","uid":"1156","archi":"m3:at86rf231","state":"Alive","network_address":"m3-173.lille.iot-lab.info","mobility_type":"null","z":"1.5","y":"9.16","mobile":0,"x":"6.82"},{"site":"lille","uid":"2055","archi":"m3:at86rf231","state":"Alive","network_address":"m3-174.lille.iot-lab.info","mobility_type":"null","z":"0.6","y":"9.16","mobile":0,"x":"6.82"},{"site":"lille","uid":"b389","archi":"m3:at86rf231","state":"Alive","network_address":"m3-177.lille.iot-lab.info","mobility_type":"null","z":"1.5","y":"9.16","mobile":0,"x":"9.22"},{"site":"lille","uid":"8374","archi":"m3:at86rf231","state":"Alive","network_address":"m3-178.lille.iot-lab.info","mobility_type":"null","z":"0.6","y":"9.16","mobile":0,"x":"9.22"},{"site":"lille","uid":"3355","archi":"m3:at86rf231","state":"Alive","network_address":"m3-179.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"9.9","mobile":0,"x":"0.82"},{"site":"lille","uid":"2754","archi":"m3:at86rf231","state":"Alive","network_address":"m3-181.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"9.9","mobile":0,"x":"3.22"},{"site":"lille","uid":"8474","archi":"m3:at86rf231","state":"Alive","network_address":"m3-182.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"9.9","mobile":0,"x":"4.42"},{"site":"lille","uid":"3158","archi":"m3:at86rf231","state":"Alive","network_address":"m3-184.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"9.9","mobile":0,"x":"8.02"},{"site":"lille","uid":"9173","archi":"m3:at86rf231","state":"Alive","network_address":"m3-187.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"9.9","mobile":0,"x":"11.62"},{"site":"lille","uid":"1358","archi":"m3:at86rf231","state":"Alive","network_address":"m3-188.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"9.9","mobile":0,"x":"12.82"},{"site":"lille","uid":"3453","archi":"m3:at86rf231","state":"Alive","network_address":"m3-190.lille.iot-lab.info","mobility_type":"null","z":"1.5","y":"9.9","mobile":0,"x":"14.18"},{"site":"lille","uid":"3859","archi":"m3:at86rf231","state":"Alive","network_address":"m3-193.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"11.1","mobile":0,"x":"2.02"},{"site":"lille","uid":"9573","archi":"m3:at86rf231","state":"Alive","network_address":"m3-194.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"11.1","mobile":0,"x":"3.22"},{"site":"lille","uid":"2152","archi":"m3:at86rf231","state":"Alive","network_address":"m3-195.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"11.1","mobile":0,"x":"4.42"},{"site":"lille","uid":"2559","archi":"m3:at86rf231","state":"Alive","network_address":"m3-196.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"11.1","mobile":0,"x":"5.62"},{"site":"lille","uid":"b273","archi":"m3:at86rf231","state":"Alive","network_address":"m3-197.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"11.1","mobile":0,"x":"6.82"},{"site":"lille","uid":"9770","archi":"m3:at86rf231","state":"Alive","network_address":"m3-200.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"11.1","mobile":0,"x":"10.42"},{"site":"lille","uid":"2751","archi":"m3:at86rf231","state":"Alive","network_address":"m3-202.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"11.1","mobile":0,"x":"12.82"},{"site":"lille","uid":"8573","archi":"m3:at86rf231","state":"Alive","network_address":"m3-203.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"11.1","mobile":0,"x":"14.02"},{"site":"lille","uid":"2052","archi":"m3:at86rf231","state":"Alive","network_address":"m3-204.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"11.1","mobile":0,"x":"15.22"},{"site":"lille","uid":"b571","archi":"m3:at86rf231","state":"Alive","network_address":"m3-209.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"12.3","mobile":0,"x":"5.62"},{"site":"lille","uid":"1254","archi":"m3:at86rf231","state":"Alive","network_address":"m3-210.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"12.3","mobile":0,"x":"6.82"},{"site":"lille","uid":"2759","archi":"m3:at86rf231","state":"Alive","network_address":"m3-211.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"12.3","mobile":0,"x":"8.02"},{"site":"lille","uid":"b270","archi":"m3:at86rf231","state":"Alive","network_address":"m3-212.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"12.3","mobile":0,"x":"9.22"},{"site":"lille","uid":"1859","archi":"m3:at86rf231","state":"Alive","network_address":"m3-213.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"12.3","mobile":0,"x":"10.42"},{"site":"lille","uid":"2352","archi":"m3:at86rf231","state":"Alive","network_address":"m3-214.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"12.3","mobile":0,"x":"11.62"},{"site":"lille","uid":"3458","archi":"m3:at86rf231","state":"Alive","network_address":"m3-215.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"12.3","mobile":0,"x":"12.82"},{"site":"lille","uid":"0858","archi":"m3:at86rf231","state":"Alive","network_address":"m3-216.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"12.3","mobile":0,"x":"14.02"},{"site":"lille","uid":"3152","archi":"m3:at86rf231","state":"Alive","network_address":"m3-217.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"12.3","mobile":0,"x":"15.22"},{"site":"lille","uid":"9373","archi":"m3:at86rf231","state":"Alive","network_address":"m3-218.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"13.5","mobile":0,"x":"0.82"},{"site":"lille","uid":"2359","archi":"m3:at86rf231","state":"Alive","network_address":"m3-219.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"13.5","mobile":0,"x":"2.02"},{"site":"lille","uid":"c270","archi":"m3:at86rf231","state":"Alive","network_address":"m3-220.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"13.5","mobile":0,"x":"3.22"},{"site":"lille","uid":"b873","archi":"m3:at86rf231","state":"Alive","network_address":"m3-221.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"13.5","mobile":0,"x":"4.42"},{"site":"lille","uid":"2552","archi":"m3:at86rf231","state":"Alive","network_address":"m3-223.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"13.5","mobile":0,"x":"6.82"},{"site":"lille","uid":"2450","archi":"m3:at86rf231","state":"Alive","network_address":"m3-226.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"13.5","mobile":0,"x":"10.42"},{"site":"lille","uid":"b073","archi":"m3:at86rf231","state":"Alive","network_address":"m3-228.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"13.5","mobile":0,"x":"12.82"},{"site":"lille","uid":"a790","archi":"m3:at86rf231","state":"Alive","network_address":"m3-229.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"13.5","mobile":0,"x":"14.02"},{"site":"lille","uid":"1258","archi":"m3:at86rf231","state":"Alive","network_address":"m3-230.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"13.5","mobile":0,"x":"15.22"},{"site":"lille","uid":"2851","archi":"m3:at86rf231","state":"Alive","network_address":"m3-232.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"14.7","mobile":0,"x":"2.02"},{"site":"lille","uid":"1256","archi":"m3:at86rf231","state":"Alive","network_address":"m3-233.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"14.7","mobile":0,"x":"3.22"},{"site":"lille","uid":"2551","archi":"m3:at86rf231","state":"Alive","network_address":"m3-236.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"14.7","mobile":0,"x":"6.82"},{"site":"lille","uid":"3153","archi":"m3:at86rf231","state":"Alive","network_address":"m3-238.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"14.7","mobile":0,"x":"9.22"},{"site":"lille","uid":"3358","archi":"m3:at86rf231","state":"Alive","network_address":"m3-239.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"14.7","mobile":0,"x":"10.42"},{"site":"lille","uid":"1559","archi":"m3:at86rf231","state":"Alive","network_address":"m3-240.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"14.7","mobile":0,"x":"11.62"},{"site":"lille","uid":"2051","archi":"m3:at86rf231","state":"Alive","network_address":"m3-241.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"14.7","mobile":0,"x":"12.82"},{"site":"lille","uid":"1552","archi":"m3:at86rf231","state":"Alive","network_address":"m3-243.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"14.7","mobile":0,"x":"15.22"},{"site":"lille","uid":"2659","archi":"m3:at86rf231","state":"Alive","network_address":"m3-244.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"15.9","mobile":0,"x":"0.82"},{"site":"lille","uid":"3151","archi":"m3:at86rf231","state":"Alive","network_address":"m3-245.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"15.9","mobile":0,"x":"2.02"},{"site":"lille","uid":"2454","archi":"m3:at86rf231","state":"Alive","network_address":"m3-246.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"15.9","mobile":0,"x":"3.22"},{"site":"lille","uid":"2458","archi":"m3:at86rf231","state":"Alive","network_address":"m3-248.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"15.9","mobile":0,"x":"5.62"},{"site":"lille","uid":"b871","archi":"m3:at86rf231","state":"Alive","network_address":"m3-250.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"15.9","mobile":0,"x":"8.02"},{"site":"lille","uid":"1257","archi":"m3:at86rf231","state":"Alive","network_address":"m3-253.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"15.9","mobile":0,"x":"11.62"},{"site":"lille","uid":"b371","archi":"m3:at86rf231","state":"Alive","network_address":"m3-254.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"15.9","mobile":0,"x":"12.82"},{"site":"lille","uid":"2858","archi":"m3:at86rf231","state":"Alive","network_address":"m3-255.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"15.9","mobile":0,"x":"14.02"},{"site":"lille","uid":"2554","archi":"m3:at86rf231","state":"Alive","network_address":"m3-256.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"15.9","mobile":0,"x":"15.22"},{"site":"grenoble","uid":"2354","archi":"m3:at86rf231","state":"Alive","network_address":"m3-1.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"20.10"},{"site":"grenoble","uid":"b868","archi":"m3:at86rf231","state":"Alive","network_address":"m3-3.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"21.30"},{"site":"grenoble","uid":"a682","archi":"m3:at86rf231","state":"Alive","network_address":"m3-6.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"23.10"},{"site":"grenoble","uid":"9883","archi":"m3:at86rf231","state":"Alive","network_address":"m3-7.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"24.55"},{"site":"grenoble","uid":"9983","archi":"m3:at86rf231","state":"Alive","network_address":"m3-8.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"25.15"},{"site":"grenoble","uid":"8772","archi":"m3:at86rf231","state":"Alive","network_address":"m3-10.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"26.35"},{"site":"grenoble","uid":"a869","archi":"m3:at86rf231","state":"Alive","network_address":"m3-12.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"27.55"},{"site":"grenoble","uid":"a269","archi":"m3:at86rf231","state":"Alive","network_address":"m3-16.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"29.95"},{"site":"grenoble","uid":"9969","archi":"m3:at86rf231","state":"Alive","network_address":"m3-19.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"31.75"},{"site":"grenoble","uid":"b077","archi":"m3:at86rf231","state":"Alive","network_address":"m3-20.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"32.35"},{"site":"grenoble","uid":"9171","archi":"m3:at86rf231","state":"Alive","network_address":"m3-22.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"33.55"},{"site":"grenoble","uid":"8971","archi":"m3:at86rf231","state":"Alive","network_address":"m3-24.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"34.75"},{"site":"grenoble","uid":"9469","archi":"m3:at86rf231","state":"Alive","network_address":"m3-26.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"35.95"},{"site":"grenoble","uid":"b778","archi":"m3:at86rf231","state":"Alive","network_address":"m3-27.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"36.55"},{"site":"grenoble","uid":"a882","archi":"m3:at86rf231","state":"Alive","network_address":"m3-28.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"37.15"},{"site":"grenoble","uid":"b968","archi":"m3:at86rf231","state":"Alive","network_address":"m3-34.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"40.75"},{"site":"grenoble","uid":"b568","archi":"m3:at86rf231","state":"Alive","network_address":"m3-36.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"41.95"},{"site":"grenoble","uid":"b980","archi":"m3:at86rf231","state":"Alive","network_address":"m3-41.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"44.95"},{"site":"grenoble","uid":"a476","archi":"m3:at86rf231","state":"Alive","network_address":"m3-42.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"45.55"},{"site":"grenoble","uid":"b480","archi":"m3:at86rf231","state":"Alive","network_address":"m3-43.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"46.15"},{"site":"grenoble","uid":"9278","archi":"m3:at86rf231","state":"Alive","network_address":"m3-46.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"47.95"},{"site":"grenoble","uid":"c275","archi":"m3:at86rf231","state":"Alive","network_address":"m3-47.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"48.55"},{"site":"grenoble","uid":"8576","archi":"m3:at86rf231","state":"Alive","network_address":"m3-50.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"50.35"},{"site":"grenoble","uid":"8770","archi":"m3:at86rf231","state":"Alive","network_address":"m3-52.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"51.55"},{"site":"grenoble","uid":"a068","archi":"m3:at86rf231","state":"Alive","network_address":"m3-53.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"52.15"},{"site":"grenoble","uid":"c180","archi":"m3:at86rf231","state":"Alive","network_address":"m3-54.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"52.75"},{"site":"grenoble","uid":"8677","archi":"m3:at86rf231","state":"Alive","network_address":"m3-56.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"53.95"},{"site":"grenoble","uid":"8577","archi":"m3:at86rf231","state":"Alive","network_address":"m3-57.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"54.55"},{"site":"grenoble","uid":"b378","archi":"m3:at86rf231","state":"Alive","network_address":"m3-58.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"55.15"},{"site":"grenoble","uid":"a579","archi":"m3:at86rf231","state":"Alive","network_address":"m3-60.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"56.35"},{"site":"grenoble","uid":"8372","archi":"m3:at86rf231","state":"Alive","network_address":"m3-62.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"57.55"},{"site":"grenoble","uid":"8777","archi":"m3:at86rf231","state":"Alive","network_address":"m3-64.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"58.75"},{"site":"grenoble","uid":"b680","archi":"m3:at86rf231","state":"Alive","network_address":"m3-66.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"59.95"},{"site":"grenoble","uid":"c268","archi":"m3:at86rf231","state":"Alive","network_address":"m3-67.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"60.55"},{"site":"grenoble","uid":"9067","archi":"m3:at86rf231","state":"Alive","network_address":"m3-70.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"17.02"},{"site":"grenoble","uid":"a171","archi":"m3:at86rf231","state":"Alive","network_address":"m3-74.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"14.62"},{"site":"grenoble","uid":"8981","archi":"m3:at86rf231","state":"Alive","network_address":"m3-75.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"14.02"},{"site":"grenoble","uid":"9177","archi":"m3:at86rf231","state":"Alive","network_address":"m3-76.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"13.42"},{"site":"grenoble","uid":"a382","archi":"m3:at86rf231","state":"Alive","network_address":"m3-78.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"12.22"},{"site":"grenoble","uid":"b976","archi":"m3:at86rf231","state":"Alive","network_address":"m3-79.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"11.62"},{"site":"grenoble","uid":"a676","archi":"m3:at86rf231","state":"Alive","network_address":"m3-81.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"10.42"},{"site":"grenoble","uid":"8767","archi":"m3:at86rf231","state":"Alive","network_address":"m3-82.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"9.82"},{"site":"grenoble","uid":"a575","archi":"m3:at86rf231","state":"Alive","network_address":"m3-83.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"9.22"},{"site":"grenoble","uid":"9769","archi":"m3:at86rf231","state":"Alive","network_address":"m3-84.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"8.62"},{"site":"grenoble","uid":"a471","archi":"m3:at86rf231","state":"Alive","network_address":"m3-86.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"7.42"},{"site":"grenoble","uid":"9277","archi":"m3:at86rf231","state":"Alive","network_address":"m3-87.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"6.82"},{"site":"grenoble","uid":"9882","archi":"m3:at86rf231","state":"Alive","network_address":"m3-89.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"5.62"},{"site":"grenoble","uid":"a878","archi":"m3:at86rf231","state":"Alive","network_address":"m3-90.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"5.02"},{"site":"grenoble","uid":"b078","archi":"m3:at86rf231","state":"Alive","network_address":"m3-92.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"3.82"},{"site":"grenoble","uid":"3960","archi":"m3:at86rf231","state":"Alive","network_address":"m3-93.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.76","mobile":0,"x":"3.22"},{"site":"grenoble","uid":"a770","archi":"m3:at86rf231","state":"Alive","network_address":"m3-95.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.52","mobile":0,"x":"0.40"},{"site":"grenoble","uid":"b468","archi":"m3:at86rf231","state":"Alive","network_address":"m3-96.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.52","mobile":0,"x":"1.00"},{"site":"grenoble","uid":"b179","archi":"m3:at86rf231","state":"Alive","network_address":"m3-97.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"25.92","mobile":0,"x":"0.40"},{"site":"grenoble","uid":"b069","archi":"m3:at86rf231","state":"Alive","network_address":"m3-98.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"25.92","mobile":0,"x":"1.00"},{"site":"grenoble","uid":"b277","archi":"m3:at86rf231","state":"Alive","network_address":"m3-99.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"25.23","mobile":0,"x":"0.40"},{"site":"grenoble","uid":"b080","archi":"m3:at86rf231","state":"Alive","network_address":"m3-100.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"25.23","mobile":0,"x":"1.00"},{"site":"grenoble","uid":"9881","archi":"m3:at86rf231","state":"Alive","network_address":"m3-103.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"24.03","mobile":0,"x":"0.40"},{"site":"grenoble","uid":"a775","archi":"m3:at86rf231","state":"Alive","network_address":"m3-104.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"24.03","mobile":0,"x":"1.00"},{"site":"grenoble","uid":"a072","archi":"m3:at86rf231","state":"Alive","network_address":"m3-107.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"22.83","mobile":0,"x":"0.40"},{"site":"grenoble","uid":"8477","archi":"m3:at86rf231","state":"Alive","network_address":"m3-108.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"22.83","mobile":0,"x":"1.00"},{"site":"grenoble","uid":"a071","archi":"m3:at86rf231","state":"Alive","network_address":"m3-110.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"22.23","mobile":0,"x":"1.00"},{"site":"grenoble","uid":"9172","archi":"m3:at86rf231","state":"Alive","network_address":"m3-111.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"21.63","mobile":0,"x":"0.40"},{"site":"grenoble","uid":"a578","archi":"m3:at86rf231","state":"Alive","network_address":"m3-112.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"21.63","mobile":0,"x":"1.00"},{"site":"grenoble","uid":"a468","archi":"m3:at86rf231","state":"Alive","network_address":"m3-119.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"19.23","mobile":0,"x":"0.40"},{"site":"grenoble","uid":"a469","archi":"m3:at86rf231","state":"Alive","network_address":"m3-120.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"19.23","mobile":0,"x":"1.00"},{"site":"grenoble","uid":"8572","archi":"m3:at86rf231","state":"Alive","network_address":"m3-121.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"18.63","mobile":0,"x":"0.40"},{"site":"grenoble","uid":"b269","archi":"m3:at86rf231","state":"Alive","network_address":"m3-126.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"17.43","mobile":0,"x":"1.00"},{"site":"grenoble","uid":"8671","archi":"m3:at86rf231","state":"Alive","network_address":"m3-127.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"16.83","mobile":0,"x":"0.40"},{"site":"grenoble","uid":"9980","archi":"m3:at86rf231","state":"Alive","network_address":"m3-128.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"16.83","mobile":0,"x":"1.00"},{"site":"grenoble","uid":"9371","archi":"m3:at86rf231","state":"Alive","network_address":"m3-137.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"13.83","mobile":0,"x":"0.40"},{"site":"grenoble","uid":"9779","archi":"m3:at86rf231","state":"Alive","network_address":"m3-143.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"12.03","mobile":0,"x":"0.40"},{"site":"grenoble","uid":"c069","archi":"m3:at86rf231","state":"Alive","network_address":"m3-144.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"12.03","mobile":0,"x":"1.00"},{"site":"grenoble","uid":"9680","archi":"m3:at86rf231","state":"Alive","network_address":"m3-145.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"11.43","mobile":0,"x":"0.40"},{"site":"grenoble","uid":"9683","archi":"m3:at86rf231","state":"Alive","network_address":"m3-149.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"10.23","mobile":0,"x":"0.40"},{"site":"grenoble","uid":"b081","archi":"m3:at86rf231","state":"Alive","network_address":"m3-153.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"9.03","mobile":0,"x":"0.40"},{"site":"grenoble","uid":"a279","archi":"m3:at86rf231","state":"Alive","network_address":"m3-154.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"9.03","mobile":0,"x":"1.00"},{"site":"grenoble","uid":"1861","archi":"m3:at86rf231","state":"Alive","network_address":"m3-156.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"8.43","mobile":0,"x":"1.00"},{"site":"grenoble","uid":"9276","archi":"m3:at86rf231","state":"Alive","network_address":"m3-163.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"6.03","mobile":0,"x":"0.40"},{"site":"grenoble","uid":"b281","archi":"m3:at86rf231","state":"Alive","network_address":"m3-164.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"6.03","mobile":0,"x":"1.00"},{"site":"grenoble","uid":"9478","archi":"m3:at86rf231","state":"Alive","network_address":"m3-165.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"5.43","mobile":0,"x":"0.40"},{"site":"grenoble","uid":"9671","archi":"m3:at86rf231","state":"Alive","network_address":"m3-166.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"5.43","mobile":0,"x":"1.00"},{"site":"grenoble","uid":"8475","archi":"m3:at86rf231","state":"Alive","network_address":"m3-168.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"4.83","mobile":0,"x":"1.00"},{"site":"grenoble","uid":"c076","archi":"m3:at86rf231","state":"Alive","network_address":"m3-170.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"4.23","mobile":0,"x":"1.00"},{"site":"grenoble","uid":"9678","archi":"m3:at86rf231","state":"Alive","network_address":"m3-172.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"3.63","mobile":0,"x":"1.00"},{"site":"grenoble","uid":"9381","archi":"m3:at86rf231","state":"Alive","network_address":"m3-173.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"3.03","mobile":0,"x":"0.40"},{"site":"grenoble","uid":"9572","archi":"m3:at86rf231","state":"Alive","network_address":"m3-176.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"2.43","mobile":0,"x":"1.00"},{"site":"grenoble","uid":"3061","archi":"m3:at86rf231","state":"Alive","network_address":"m3-177.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"1.85","mobile":0,"x":"0.40"},{"site":"grenoble","uid":"9169","archi":"m3:at86rf231","state":"Alive","network_address":"m3-183.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"5.15"},{"site":"grenoble","uid":"9168","archi":"m3:at86rf231","state":"Alive","network_address":"m3-184.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"5.75"},{"site":"grenoble","uid":"8979","archi":"m3:at86rf231","state":"Alive","network_address":"m3-186.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"6.95"},{"site":"grenoble","uid":"b882","archi":"m3:at86rf231","state":"Alive","network_address":"m3-190.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"9.35"},{"site":"grenoble","uid":"a376","archi":"m3:at86rf231","state":"Alive","network_address":"m3-193.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"11.15"},{"site":"grenoble","uid":"a670","archi":"m3:at86rf231","state":"Alive","network_address":"m3-195.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"12.35"},{"site":"grenoble","uid":"8569","archi":"m3:at86rf231","state":"Alive","network_address":"m3-199.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"14.75"},{"site":"grenoble","uid":"c376","archi":"m3:at86rf231","state":"Alive","network_address":"m3-200.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"15.35"},{"site":"grenoble","uid":"8476","archi":"m3:at86rf231","state":"Alive","network_address":"m3-201.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"15.95"},{"site":"grenoble","uid":"a183","archi":"m3:at86rf231","state":"Alive","network_address":"m3-202.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"16.55"},{"site":"grenoble","uid":"8967","archi":"m3:at86rf231","state":"Alive","network_address":"m3-205.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.75","mobile":0,"x":"18.35"},{"site":"grenoble","uid":"a379","archi":"m3:at86rf231","state":"Alive","network_address":"m3-207.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"1.83","mobile":0,"x":"18.35"},{"site":"grenoble","uid":"b379","archi":"m3:at86rf231","state":"Alive","network_address":"m3-209.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"2.43","mobile":0,"x":"18.35"},{"site":"grenoble","uid":"8875","archi":"m3:at86rf231","state":"Alive","network_address":"m3-211.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"3.03","mobile":0,"x":"18.35"},{"site":"grenoble","uid":"9175","archi":"m3:at86rf231","state":"Alive","network_address":"m3-215.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"4.23","mobile":0,"x":"18.35"},{"site":"grenoble","uid":"9871","archi":"m3:at86rf231","state":"Alive","network_address":"m3-217.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"4.83","mobile":0,"x":"18.35"},{"site":"grenoble","uid":"b582","archi":"m3:at86rf231","state":"Alive","network_address":"m3-218.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"5.43","mobile":0,"x":"18.95"},{"site":"grenoble","uid":"9981","archi":"m3:at86rf231","state":"Alive","network_address":"m3-221.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"6.03","mobile":0,"x":"18.35"},{"site":"grenoble","uid":"b768","archi":"m3:at86rf231","state":"Alive","network_address":"m3-223.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"6.63","mobile":0,"x":"18.35"},{"site":"grenoble","uid":"b180","archi":"m3:at86rf231","state":"Alive","network_address":"m3-224.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"7.23","mobile":0,"x":"18.95"},{"site":"grenoble","uid":"c068","archi":"m3:at86rf231","state":"Alive","network_address":"m3-225.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"7.23","mobile":0,"x":"18.35"},{"site":"grenoble","uid":"9283","archi":"m3:at86rf231","state":"Alive","network_address":"m3-228.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"8.43","mobile":0,"x":"18.95"},{"site":"grenoble","uid":"b068","archi":"m3:at86rf231","state":"Alive","network_address":"m3-229.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"8.43","mobile":0,"x":"18.35"},{"site":"grenoble","uid":"3861","archi":"m3:at86rf231","state":"Alive","network_address":"m3-230.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"9.03","mobile":0,"x":"18.95"},{"site":"grenoble","uid":"8881","archi":"m3:at86rf231","state":"Alive","network_address":"m3-233.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"9.63","mobile":0,"x":"18.35"},{"site":"grenoble","uid":"a083","archi":"m3:at86rf231","state":"Alive","network_address":"m3-238.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"11.43","mobile":0,"x":"18.95"},{"site":"grenoble","uid":"3761","archi":"m3:at86rf231","state":"Alive","network_address":"m3-240.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"12.03","mobile":0,"x":"18.95"},{"site":"grenoble","uid":"a678","archi":"m3:at86rf231","state":"Alive","network_address":"m3-243.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"12.63","mobile":0,"x":"18.35"},{"site":"grenoble","uid":"a982","archi":"m3:at86rf231","state":"Alive","network_address":"m3-247.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"13.83","mobile":0,"x":"18.35"},{"site":"grenoble","uid":"9583","archi":"m3:at86rf231","state":"Alive","network_address":"m3-249.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"14.43","mobile":0,"x":"18.35"},{"site":"grenoble","uid":"a483","archi":"m3:at86rf231","state":"Alive","network_address":"m3-250.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"15.03","mobile":0,"x":"18.95"},{"site":"grenoble","uid":"9876","archi":"m3:at86rf231","state":"Alive","network_address":"m3-251.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"15.03","mobile":0,"x":"18.35"},{"site":"grenoble","uid":"b168","archi":"m3:at86rf231","state":"Alive","network_address":"m3-255.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"16.23","mobile":0,"x":"18.35"},{"site":"grenoble","uid":"1660","archi":"m3:at86rf231","state":"Alive","network_address":"m3-256.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"16.83","mobile":0,"x":"18.95"},{"site":"grenoble","uid":"a580","archi":"m3:at86rf231","state":"Alive","network_address":"m3-259.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"17.43","mobile":0,"x":"18.35"},{"site":"grenoble","uid":"9483","archi":"m3:at86rf231","state":"Alive","network_address":"m3-261.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"18.03","mobile":0,"x":"18.35"},{"site":"grenoble","uid":"c369","archi":"m3:at86rf231","state":"Alive","network_address":"m3-266.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"19.83","mobile":0,"x":"18.95"},{"site":"grenoble","uid":"9681","archi":"m3:at86rf231","state":"Alive","network_address":"m3-268.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"20.43","mobile":0,"x":"18.95"},{"site":"grenoble","uid":"b477","archi":"m3:at86rf231","state":"Alive","network_address":"m3-269.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"20.43","mobile":0,"x":"18.35"},{"site":"grenoble","uid":"b380","archi":"m3:at86rf231","state":"Alive","network_address":"m3-270.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"21.03","mobile":0,"x":"18.95"},{"site":"grenoble","uid":"a880","archi":"m3:at86rf231","state":"Alive","network_address":"m3-274.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"22.23","mobile":0,"x":"18.95"},{"site":"grenoble","uid":"9771","archi":"m3:at86rf231","state":"Alive","network_address":"m3-275.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"22.23","mobile":0,"x":"18.35"},{"site":"grenoble","uid":"9482","archi":"m3:at86rf231","state":"Alive","network_address":"m3-276.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"22.83","mobile":0,"x":"18.95"},{"site":"grenoble","uid":"c176","archi":"m3:at86rf231","state":"Alive","network_address":"m3-277.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"22.83","mobile":0,"x":"18.35"},{"site":"grenoble","uid":"9780","archi":"m3:at86rf231","state":"Alive","network_address":"m3-279.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"23.43","mobile":0,"x":"18.35"},{"site":"grenoble","uid":"a582","archi":"m3:at86rf231","state":"Alive","network_address":"m3-281.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"24.03","mobile":0,"x":"18.35"},{"site":"grenoble","uid":"b781","archi":"m3:at86rf231","state":"Alive","network_address":"m3-283.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"24.63","mobile":0,"x":"18.35"},{"site":"grenoble","uid":"9875","archi":"m3:at86rf231","state":"Alive","network_address":"m3-284.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"25.23","mobile":0,"x":"18.95"},{"site":"grenoble","uid":"a969","archi":"m3:at86rf231","state":"Alive","network_address":"m3-286.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.00","mobile":0,"x":"18.95"},{"site":"grenoble","uid":"b982","archi":"m3:at86rf231","state":"Alive","network_address":"m3-287.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"26.00","mobile":0,"x":"18.35"},{"site":"grenoble","uid":"9975","archi":"m3:at86rf231","state":"Alive","network_address":"m3-291.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"20.65"},{"site":"grenoble","uid":"8669","archi":"m3:at86rf231","state":"Alive","network_address":"m3-294.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"22.45"},{"site":"grenoble","uid":"9467","archi":"m3:at86rf231","state":"Alive","network_address":"m3-295.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"23.05"},{"site":"grenoble","uid":"9069","archi":"m3:at86rf231","state":"Alive","network_address":"m3-296.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"24.62"},{"site":"grenoble","uid":"9271","archi":"m3:at86rf231","state":"Alive","network_address":"m3-302.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"28.71"},{"site":"grenoble","uid":"8877","archi":"m3:at86rf231","state":"Alive","network_address":"m3-304.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"29.96"},{"site":"grenoble","uid":"8871","archi":"m3:at86rf231","state":"Alive","network_address":"m3-305.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"30.56"},{"site":"grenoble","uid":"9479","archi":"m3:at86rf231","state":"Alive","network_address":"m3-306.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"31.16"},{"site":"grenoble","uid":"b083","archi":"m3:at86rf231","state":"Alive","network_address":"m3-308.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"32.36"},{"site":"grenoble","uid":"8882","archi":"m3:at86rf231","state":"Alive","network_address":"m3-315.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"36.56"},{"site":"grenoble","uid":"0862","archi":"m3:at86rf231","state":"Alive","network_address":"m3-316.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"37.16"},{"site":"grenoble","uid":"a577","archi":"m3:at86rf231","state":"Alive","network_address":"m3-319.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"38.96"},{"site":"grenoble","uid":"a477","archi":"m3:at86rf231","state":"Alive","network_address":"m3-320.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"39.56"},{"site":"grenoble","uid":"a777","archi":"m3:at86rf231","state":"Alive","network_address":"m3-323.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"41.36"},{"site":"grenoble","uid":"a480","archi":"m3:at86rf231","state":"Alive","network_address":"m3-326.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"43.16"},{"site":"grenoble","uid":"0962","archi":"m3:at86rf231","state":"Alive","network_address":"m3-327.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"43.76"},{"site":"grenoble","uid":"b177","archi":"m3:at86rf231","state":"Alive","network_address":"m3-329.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"44.96"},{"site":"grenoble","uid":"b082","archi":"m3:at86rf231","state":"Alive","network_address":"m3-330.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"45.56"},{"site":"grenoble","uid":"a282","archi":"m3:at86rf231","state":"Alive","network_address":"m3-331.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"46.16"},{"site":"grenoble","uid":"8578","archi":"m3:at86rf231","state":"Alive","network_address":"m3-332.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"46.76"},{"site":"grenoble","uid":"a178","archi":"m3:at86rf231","state":"Alive","network_address":"m3-333.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"47.36"},{"site":"grenoble","uid":"b782","archi":"m3:at86rf231","state":"Alive","network_address":"m3-334.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"47.96"},{"site":"grenoble","uid":"9468","archi":"m3:at86rf231","state":"Alive","network_address":"m3-336.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"49.16"},{"site":"grenoble","uid":"a479","archi":"m3:at86rf231","state":"Alive","network_address":"m3-340.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"51.56"},{"site":"grenoble","uid":"b983","archi":"m3:at86rf231","state":"Alive","network_address":"m3-341.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"52.16"},{"site":"grenoble","uid":"b079","archi":"m3:at86rf231","state":"Alive","network_address":"m3-342.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"52.76"},{"site":"grenoble","uid":"9167","archi":"m3:at86rf231","state":"Alive","network_address":"m3-345.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"54.56"},{"site":"grenoble","uid":"b368","archi":"m3:at86rf231","state":"Alive","network_address":"m3-347.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"55.76"},{"site":"grenoble","uid":"8570","archi":"m3:at86rf231","state":"Alive","network_address":"m3-350.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"57.56"},{"site":"grenoble","uid":"9781","archi":"m3:at86rf231","state":"Suspected","network_address":"m3-351.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"58.16"},{"site":"grenoble","uid":"8870","archi":"m3:at86rf231","state":"Alive","network_address":"m3-352.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"58.76"},{"site":"grenoble","uid":"9267","archi":"m3:at86rf231","state":"Alive","network_address":"m3-353.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"59.36"},{"site":"grenoble","uid":"b479","archi":"m3:at86rf231","state":"Alive","network_address":"m3-355.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"60.56"},{"site":"grenoble","uid":"a681","archi":"m3:at86rf231","state":"Alive","network_address":"m3-356.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"61.16"},{"site":"grenoble","uid":"8672","archi":"m3:at86rf231","state":"Alive","network_address":"m3-357.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"61.76"},{"site":"grenoble","uid":"9378","archi":"m3:at86rf231","state":"Alive","network_address":"m3-358.grenoble.iot-lab.info","mobility_type":"null","z":"-0.04","y":"0.94","mobile":0,"x":"62.26"},{"site":"grenoble","uid":"8667","archi":"m3:at86rf231","state":"Alive","network_address":"m3-361.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"25.75","mobile":0,"x":"35.95"},{"site":"grenoble","uid":"a976","archi":"m3:at86rf231","state":"Alive","network_address":"m3-362.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"25.75","mobile":0,"x":"36.55"},{"site":"grenoble","uid":"1661","archi":"m3:at86rf231","state":"Alive","network_address":"m3-364.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"24.92","mobile":0,"x":"37.75"},{"site":"grenoble","uid":"3561","archi":"m3:at86rf231","state":"Alive","network_address":"m3-365.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"25.75","mobile":0,"x":"38.95"},{"site":"grenoble","uid":"8567","archi":"m3:at86rf231","state":"Alive","network_address":"m3-369.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"25.75","mobile":0,"x":"41.35"},{"site":"grenoble","uid":"a075","archi":"m3:at86rf231","state":"Alive","network_address":"m3-370.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"25.75","mobile":0,"x":"46.15"},{"site":"grenoble","uid":"9775","archi":"m3:at86rf231","state":"Alive","network_address":"m3-372.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"25.75","mobile":0,"x":"47.35"},{"site":"grenoble","uid":"1762","archi":"m3:at86rf231","state":"Alive","network_address":"m3-373.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"25.75","mobile":0,"x":"47.95"},{"site":"grenoble","uid":"c071","archi":"m3:at86rf231","state":"Alive","network_address":"m3-378.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"25.75","mobile":0,"x":"53.35"},{"site":"grenoble","uid":"b564","archi":"a8:at86rf231","state":"Alive","network_address":"a8-1.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"25.28","mobile":0,"x":"20.33"},{"site":"grenoble","uid":"a461","archi":"a8:at86rf231","state":"Alive","network_address":"a8-2.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"25.28","mobile":0,"x":"20.33"},{"site":"grenoble","uid":"b363","archi":"a8:at86rf231","state":"Alive","network_address":"a8-3.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"25.28","mobile":0,"x":"20.93"},{"site":"grenoble","uid":"9064","archi":"a8:at86rf231","state":"Alive","network_address":"a8-4.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"25.33","mobile":0,"x":"21.53"},{"site":"grenoble","uid":"a558","archi":"a8:at86rf231","state":"Alive","network_address":"a8-5.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"25.33","mobile":0,"x":"21.53"},{"site":"grenoble","uid":"3289","archi":"a8:at86rf231","state":"Alive","network_address":"a8-6.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"25.33","mobile":0,"x":"22.13"},{"site":"grenoble","uid":"b959","archi":"a8:at86rf231","state":"Alive","network_address":"a8-7.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"25.33","mobile":0,"x":"22.13"},{"site":"grenoble","uid":"9651","archi":"a8:at86rf231","state":"Alive","network_address":"a8-8.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"25.33","mobile":0,"x":"22.73"},{"site":"grenoble","uid":"b164","archi":"a8:at86rf231","state":"Alive","network_address":"a8-9.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"25.33","mobile":0,"x":"23.33"},{"site":"grenoble","uid":"a963","archi":"a8:at86rf231","state":"Alive","network_address":"a8-10.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"25.33","mobile":0,"x":"23.33"},{"site":"grenoble","uid":"b163","archi":"a8:at86rf231","state":"Alive","network_address":"a8-11.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"25.80","mobile":0,"x":"23.93"},{"site":"grenoble","uid":"9461","archi":"a8:at86rf231","state":"Alive","network_address":"a8-12.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"25.80","mobile":0,"x":"23.93"},{"site":"grenoble","uid":"a467","archi":"a8:at86rf231","state":"Alive","network_address":"a8-13.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"25.75","mobile":0,"x":"24.53"},{"site":"grenoble","uid":"2990","archi":"a8:at86rf231","state":"Alive","network_address":"a8-14.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"25.75","mobile":0,"x":"25.13"},{"site":"grenoble","uid":"b364","archi":"a8:at86rf231","state":"Alive","network_address":"a8-15.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"25.75","mobile":0,"x":"25.73"},{"site":"grenoble","uid":"b463","archi":"a8:at86rf231","state":"Alive","network_address":"a8-16.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"25.75","mobile":0,"x":"26.33"},{"site":"grenoble","uid":"8764","archi":"a8:at86rf231","state":"Alive","network_address":"a8-17.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"25.75","mobile":0,"x":"26.93"},{"site":"grenoble","uid":"c366","archi":"a8:at86rf231","state":"Alive","network_address":"a8-18.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"25.75","mobile":0,"x":"27.55"},{"site":"grenoble","uid":"a064","archi":"a8:at86rf231","state":"Alive","network_address":"a8-19.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"25.75","mobile":0,"x":"28.15"},{"site":"grenoble","uid":"9366","archi":"a8:at86rf231","state":"Alive","network_address":"a8-20.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"25.75","mobile":0,"x":"28.75"},{"site":"grenoble","uid":"8862","archi":"a8:at86rf231","state":"Alive","network_address":"a8-21.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"25.75","mobile":0,"x":"29.35"},{"site":"grenoble","uid":"3189","archi":"a8:at86rf231","state":"Alive","network_address":"a8-22.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"25.75","mobile":0,"x":"29.95"},{"site":"grenoble","uid":"9658","archi":"a8:at86rf231","state":"Alive","network_address":"a8-23.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"25.75","mobile":0,"x":"30.55"},{"site":"grenoble","uid":"b560","archi":"a8:at86rf231","state":"Alive","network_address":"a8-24.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"25.75","mobile":0,"x":"31.15"},{"site":"grenoble","uid":"9761","archi":"a8:at86rf231","state":"Alive","network_address":"a8-25.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"25.75","mobile":0,"x":"31.75"},{"site":"grenoble","uid":"b961","archi":"a8:at86rf231","state":"Alive","network_address":"a8-26.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"25.75","mobile":0,"x":"32.35"},{"site":"grenoble","uid":"05DF","archi":"a8:at86rf231","state":"Suspected","network_address":"a8-27.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"25.75","mobile":0,"x":"32.35"},{"site":"grenoble","uid":"2784","archi":"a8:at86rf231","state":"Alive","network_address":"a8-28.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"25.75","mobile":0,"x":"32.95"},{"site":"grenoble","uid":"c261","archi":"a8:at86rf231","state":"Alive","network_address":"a8-29.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"25.75","mobile":0,"x":"33.55"},{"site":"grenoble","uid":"8664","archi":"a8:at86rf231","state":"Alive","network_address":"a8-30.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"25.75","mobile":0,"x":"34.15"},{"site":"grenoble","uid":"8759","archi":"a8:at86rf231","state":"Alive","network_address":"a8-31.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"24.92","mobile":0,"x":"38.35"},{"site":"grenoble","uid":"9259","archi":"a8:at86rf231","state":"Alive","network_address":"a8-32.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"24.92","mobile":0,"x":"38.35"},{"site":"grenoble","uid":"9661","archi":"a8:at86rf231","state":"Alive","network_address":"a8-33.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"25.75","mobile":0,"x":"41.95"},{"site":"grenoble","uid":"c162","archi":"a8:at86rf231","state":"Alive","network_address":"a8-34.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"25.75","mobile":0,"x":"41.95"},{"site":"grenoble","uid":"3084","archi":"a8:at86rf231","state":"Alive","network_address":"a8-35.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"25.75","mobile":0,"x":"43.15"},{"site":"grenoble","uid":"3085","archi":"a8:at86rf231","state":"Alive","network_address":"a8-36.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"25.75","mobile":0,"x":"43.15"},{"site":"grenoble","uid":"b460","archi":"a8:at86rf231","state":"Alive","network_address":"a8-37.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"25.75","mobile":0,"x":"44.35"},{"site":"grenoble","uid":"a859","archi":"a8:at86rf231","state":"Alive","network_address":"a8-38.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"25.75","mobile":0,"x":"44.95"},{"site":"grenoble","uid":"a661","archi":"a8:at86rf231","state":"Alive","network_address":"a8-39.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"25.75","mobile":0,"x":"44.95"},{"site":"grenoble","uid":"9559","archi":"a8:at86rf231","state":"Alive","network_address":"a8-40.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"25.75","mobile":0,"x":"46.15"},{"site":"grenoble","uid":"a361","archi":"a8:at86rf231","state":"Alive","network_address":"a8-41.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"24.90","mobile":0,"x":"49.75"},{"site":"grenoble","uid":"9359","archi":"a8:at86rf231","state":"Alive","network_address":"a8-42.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"24.90","mobile":0,"x":"50.35"},{"site":"grenoble","uid":"9859","archi":"a8:at86rf231","state":"Alive","network_address":"a8-43.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"24.90","mobile":0,"x":"50.95"},{"site":"grenoble","uid":"b661","archi":"a8:at86rf231","state":"Alive","network_address":"a8-44.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"25.75","mobile":0,"x":"51.55"},{"site":"grenoble","uid":"8960","archi":"a8:at86rf231","state":"Alive","network_address":"a8-45.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"25.75","mobile":0,"x":"55.15"},{"site":"grenoble","uid":"3184","archi":"a8:at86rf231","state":"Alive","network_address":"a8-46.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"25.75","mobile":0,"x":"55.75"},{"site":"grenoble","uid":"a358","archi":"a8:at86rf231","state":"Alive","network_address":"a8-47.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"25.75","mobile":0,"x":"56.35"},{"site":"grenoble","uid":"b461","archi":"a8:at86rf231","state":"Alive","network_address":"a8-48.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"25.75","mobile":0,"x":"56.95"},{"site":"grenoble","uid":"a350","archi":"a8:at86rf231","state":"Alive","network_address":"a8-49.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"25.75","mobile":0,"x":"57.55"},{"site":"grenoble","uid":"b361","archi":"a8:at86rf231","state":"Alive","network_address":"a8-50.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"24.90","mobile":0,"x":"58.15"},{"site":"grenoble","uid":"b051","archi":"a8:at86rf231","state":"Alive","network_address":"a8-51.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"24.90","mobile":0,"x":"58.75"},{"site":"grenoble","uid":"b861","archi":"a8:at86rf231","state":"Alive","network_address":"a8-52.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"24.90","mobile":0,"x":"59.35"},{"site":"grenoble","uid":"2890","archi":"a8:at86rf231","state":"Alive","network_address":"a8-53.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"25.75","mobile":0,"x":"59.95"},{"site":"grenoble","uid":"a850","archi":"a8:at86rf231","state":"Alive","network_address":"a8-54.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"25.75","mobile":0,"x":"59.95"},{"site":"grenoble","uid":"c467","archi":"a8:at86rf231","state":"Alive","network_address":"a8-55.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"25.75","mobile":0,"x":"60.55"},{"site":"grenoble","uid":"1884","archi":"a8:at86rf231","state":"Alive","network_address":"a8-56.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"25.75","mobile":0,"x":"61.15"},{"site":"grenoble","uid":"2790","archi":"a8:at86rf231","state":"Alive","network_address":"a8-57.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"25.75","mobile":0,"x":"61.75"},{"site":"grenoble","uid":"c266","archi":"a8:at86rf231","state":"Alive","network_address":"a8-58.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"25.75","mobile":0,"x":"62.35"},{"site":"grenoble","uid":"b663","archi":"a8:at86rf231","state":"Alive","network_address":"a8-59.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"25.73","mobile":0,"x":"15.47"},{"site":"grenoble","uid":"1285","archi":"a8:at86rf231","state":"Alive","network_address":"a8-60.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"25.73","mobile":0,"x":"14.87"},{"site":"grenoble","uid":"a164","archi":"a8:at86rf231","state":"Alive","network_address":"a8-61.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"25.73","mobile":0,"x":"14.27"},{"site":"grenoble","uid":"3090","archi":"a8:at86rf231","state":"Alive","network_address":"a8-62.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"25.73","mobile":0,"x":"13.67"},{"site":"grenoble","uid":"a863","archi":"a8:at86rf231","state":"Alive","network_address":"a8-63.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"25.73","mobile":0,"x":"13.07"},{"site":"grenoble","uid":"2484","archi":"a8:at86rf231","state":"Alive","network_address":"a8-64.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"25.73","mobile":0,"x":"12.47"},{"site":"grenoble","uid":"b563","archi":"a8:at86rf231","state":"Alive","network_address":"a8-65.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"25.73","mobile":0,"x":"11.87"},{"site":"grenoble","uid":"a060","archi":"a8:at86rf231","state":"Alive","network_address":"a8-66.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"25.73","mobile":0,"x":"11.27"},{"site":"grenoble","uid":"a959","archi":"a8:at86rf231","state":"Alive","network_address":"a8-67.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"25.73","mobile":0,"x":"10.67"},{"site":"grenoble","uid":"c064","archi":"a8:at86rf231","state":"Alive","network_address":"a8-68.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"25.73","mobile":0,"x":"10.07"},{"site":"grenoble","uid":"9659","archi":"a8:at86rf231","state":"Alive","network_address":"a8-69.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"25.73","mobile":0,"x":"9.47"},{"site":"grenoble","uid":"8963","archi":"a8:at86rf231","state":"Alive","network_address":"a8-70.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"25.73","mobile":0,"x":"8.87"},{"site":"grenoble","uid":"b458","archi":"a8:at86rf231","state":"Alive","network_address":"a8-71.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"25.73","mobile":0,"x":"8.27"},{"site":"grenoble","uid":"2684","archi":"a8:at86rf231","state":"Alive","network_address":"a8-72.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"25.73","mobile":0,"x":"7.67"},{"site":"grenoble","uid":"9760","archi":"a8:at86rf231","state":"Alive","network_address":"a8-73.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"25.73","mobile":0,"x":"7.07"},{"site":"grenoble","uid":"a359","archi":"a8:at86rf231","state":"Alive","network_address":"a8-74.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"25.73","mobile":0,"x":"6.47"},{"site":"grenoble","uid":"2886","archi":"a8:at86rf231","state":"Alive","network_address":"a8-75.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"25.73","mobile":0,"x":"5.87"},{"site":"grenoble","uid":"b859","archi":"a8:at86rf231","state":"Alive","network_address":"a8-76.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"25.73","mobile":0,"x":"5.27"},{"site":"grenoble","uid":"a459","archi":"a8:at86rf231","state":"Alive","network_address":"a8-77.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"25.73","mobile":0,"x":"4.57"},{"site":"grenoble","uid":"b762","archi":"a8:at86rf231","state":"Alive","network_address":"a8-78.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"0.04","mobile":0,"x":"5.50"},{"site":"grenoble","uid":"8863","archi":"a8:at86rf231","state":"Alive","network_address":"a8-79.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"0.04","mobile":0,"x":"6.10"},{"site":"grenoble","uid":"3685","archi":"a8:at86rf231","state":"Alive","network_address":"a8-80.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"0.04","mobile":0,"x":"6.70"},{"site":"grenoble","uid":"3586","archi":"a8:at86rf231","state":"Alive","network_address":"a8-81.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"0.04","mobile":0,"x":"7.30"},{"site":"grenoble","uid":"1786","archi":"a8:at86rf231","state":"Alive","network_address":"a8-82.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"0.04","mobile":0,"x":"7.90"},{"site":"grenoble","uid":"2687","archi":"a8:at86rf231","state":"Alive","network_address":"a8-83.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"0.04","mobile":0,"x":"8.50"},{"site":"grenoble","uid":"1485","archi":"a8:at86rf231","state":"Alive","network_address":"a8-84.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"0.04","mobile":0,"x":"9.10"},{"site":"grenoble","uid":"b262","archi":"a8:at86rf231","state":"Alive","network_address":"a8-85.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"0.04","mobile":0,"x":"9.70"},{"site":"grenoble","uid":"3686","archi":"a8:at86rf231","state":"Alive","network_address":"a8-86.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"0.04","mobile":0,"x":"10.30"},{"site":"grenoble","uid":"9962","archi":"a8:at86rf231","state":"Alive","network_address":"a8-87.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"0.04","mobile":0,"x":"10.90"},{"site":"grenoble","uid":"a762","archi":"a8:at86rf231","state":"Alive","network_address":"a8-88.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"0.04","mobile":0,"x":"11.50"},{"site":"grenoble","uid":"2086","archi":"a8:at86rf231","state":"Alive","network_address":"a8-89.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"0.04","mobile":0,"x":"12.10"},{"site":"grenoble","uid":"b062","archi":"a8:at86rf231","state":"Alive","network_address":"a8-90.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"0.04","mobile":0,"x":"12.70"},{"site":"grenoble","uid":"2487","archi":"a8:at86rf231","state":"Alive","network_address":"a8-91.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"0.04","mobile":0,"x":"13.30"},{"site":"grenoble","uid":"b162","archi":"a8:at86rf231","state":"Alive","network_address":"a8-92.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"0.04","mobile":0,"x":"13.90"},{"site":"grenoble","uid":"a962","archi":"a8:at86rf231","state":"Alive","network_address":"a8-93.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"0.04","mobile":0,"x":"14.50"},{"site":"grenoble","uid":"3386","archi":"a8:at86rf231","state":"Alive","network_address":"a8-94.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"0.04","mobile":0,"x":"15.10"},{"site":"grenoble","uid":"3687","archi":"a8:at86rf231","state":"Alive","network_address":"a8-95.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"2.10","mobile":0,"x":"19.75"},{"site":"grenoble","uid":"a562","archi":"a8:at86rf231","state":"Alive","network_address":"a8-96.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"2.10","mobile":0,"x":"19.75"},{"site":"grenoble","uid":"1586","archi":"a8:at86rf231","state":"Alive","network_address":"a8-97.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"2.70","mobile":0,"x":"19.75"},{"site":"grenoble","uid":"b058","archi":"a8:at86rf231","state":"Alive","network_address":"a8-98.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"2.70","mobile":0,"x":"19.75"},{"site":"grenoble","uid":"c363","archi":"a8:at86rf231","state":"Alive","network_address":"a8-99.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"3.30","mobile":0,"x":"19.75"},{"site":"grenoble","uid":"3185","archi":"a8:at86rf231","state":"Alive","network_address":"a8-100.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"3.90","mobile":0,"x":"19.75"},{"site":"grenoble","uid":"2587","archi":"a8:at86rf231","state":"Alive","network_address":"a8-101.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"4.50","mobile":0,"x":"19.75"},{"site":"grenoble","uid":"9762","archi":"a8:at86rf231","state":"Alive","network_address":"a8-102.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"4.50","mobile":0,"x":"19.75"},{"site":"grenoble","uid":"2885","archi":"a8:at86rf231","state":"Alive","network_address":"a8-103.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"5.10","mobile":0,"x":"19.75"},{"site":"grenoble","uid":"b265","archi":"a8:at86rf231","state":"Alive","network_address":"a8-104.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"5.70","mobile":0,"x":"19.75"},{"site":"grenoble","uid":"b161","archi":"a8:at86rf231","state":"Alive","network_address":"a8-105.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"5.70","mobile":0,"x":"19.75"},{"site":"grenoble","uid":"b260","archi":"a8:at86rf231","state":"Alive","network_address":"a8-106.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"6.30","mobile":0,"x":"19.75"},{"site":"grenoble","uid":"c165","archi":"a8:at86rf231","state":"Alive","network_address":"a8-107.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"6.30","mobile":0,"x":"19.75"},{"site":"grenoble","uid":"b865","archi":"a8:at86rf231","state":"Alive","network_address":"a8-108.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"6.90","mobile":0,"x":"19.75"},{"site":"grenoble","uid":"3684","archi":"a8:at86rf231","state":"Alive","network_address":"a8-109.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"7.50","mobile":0,"x":"19.75"},{"site":"grenoble","uid":"05DF","archi":"a8:at86rf231","state":"Suspected","network_address":"a8-110.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"8.10","mobile":0,"x":"19.75"},{"site":"grenoble","uid":"a858","archi":"a8:at86rf231","state":"Alive","network_address":"a8-111.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"8.70","mobile":0,"x":"20.45"},{"site":"grenoble","uid":"a059","archi":"a8:at86rf231","state":"Alive","network_address":"a8-112.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"8.70","mobile":0,"x":"20.45"},{"site":"grenoble","uid":"9759","archi":"a8:at86rf231","state":"Alive","network_address":"a8-113.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"9.30","mobile":0,"x":"20.45"},{"site":"grenoble","uid":"9362","archi":"a8:at86rf231","state":"Alive","network_address":"a8-114.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"9.90","mobile":0,"x":"20.45"},{"site":"grenoble","uid":"a751","archi":"a8:at86rf231","state":"Alive","network_address":"a8-115.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"10.50","mobile":0,"x":"20.45"},{"site":"grenoble","uid":"b359","archi":"a8:at86rf231","state":"Alive","network_address":"a8-116.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"11.10","mobile":0,"x":"19.75"},{"site":"grenoble","uid":"9060","archi":"a8:at86rf231","state":"Alive","network_address":"a8-117.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"11.70","mobile":0,"x":"19.75"},{"site":"grenoble","uid":"9059","archi":"a8:at86rf231","state":"Alive","network_address":"a8-118.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"11.70","mobile":0,"x":"19.75"},{"site":"grenoble","uid":"a764","archi":"a8:at86rf231","state":"Alive","network_address":"a8-119.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"12.30","mobile":0,"x":"19.75"},{"site":"grenoble","uid":"9959","archi":"a8:at86rf231","state":"Alive","network_address":"a8-120.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"12.90","mobile":0,"x":"19.75"},{"site":"grenoble","uid":"b360","archi":"a8:at86rf231","state":"Alive","network_address":"a8-121.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"13.50","mobile":0,"x":"19.75"},{"site":"grenoble","uid":"9062","archi":"a8:at86rf231","state":"Alive","network_address":"a8-122.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"13.50","mobile":0,"x":"19.75"},{"site":"grenoble","uid":"b960","archi":"a8:at86rf231","state":"Alive","network_address":"a8-123.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"14.10","mobile":0,"x":"19.75"},{"site":"grenoble","uid":"c066","archi":"a8:at86rf231","state":"Alive","network_address":"a8-124.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"14.70","mobile":0,"x":"19.75"},{"site":"grenoble","uid":"9562","archi":"a8:at86rf231","state":"Alive","network_address":"a8-125.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"14.70","mobile":0,"x":"19.75"},{"site":"grenoble","uid":"b760","archi":"a8:at86rf231","state":"Alive","network_address":"a8-126.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"15.30","mobile":0,"x":"19.75"},{"site":"grenoble","uid":"b559","archi":"a8:at86rf231","state":"Alive","network_address":"a8-127.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"15.90","mobile":0,"x":"19.75"},{"site":"grenoble","uid":"a659","archi":"a8:at86rf231","state":"Alive","network_address":"a8-128.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"16.50","mobile":0,"x":"19.75"},{"site":"grenoble","uid":"9063","archi":"a8:at86rf231","state":"Alive","network_address":"a8-129.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"17.10","mobile":0,"x":"19.75"},{"site":"grenoble","uid":"b864","archi":"a8:at86rf231","state":"Alive","network_address":"a8-130.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"17.10","mobile":0,"x":"19.75"},{"site":"grenoble","uid":"a563","archi":"a8:at86rf231","state":"Alive","network_address":"a8-131.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"17.70","mobile":0,"x":"19.75"},{"site":"grenoble","uid":"b266","archi":"a8:at86rf231","state":"Alive","network_address":"a8-132.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"18.30","mobile":0,"x":"19.75"},{"site":"grenoble","uid":"8563","archi":"a8:at86rf231","state":"Alive","network_address":"a8-133.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"18.90","mobile":0,"x":"19.75"},{"site":"grenoble","uid":"9565","archi":"a8:at86rf231","state":"Alive","network_address":"a8-134.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"18.90","mobile":0,"x":"19.75"},{"site":"grenoble","uid":"9353","archi":"a8:at86rf231","state":"Alive","network_address":"a8-135.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"20.10","mobile":0,"x":"20.65"},{"site":"grenoble","uid":"9263","archi":"a8:at86rf231","state":"Alive","network_address":"a8-136.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"20.10","mobile":0,"x":"20.65"},{"site":"grenoble","uid":"b664","archi":"a8:at86rf231","state":"Alive","network_address":"a8-137.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"20.60","mobile":0,"x":"19.91"},{"site":"grenoble","uid":"9963","archi":"a8:at86rf231","state":"Alive","network_address":"a8-138.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"21.20","mobile":0,"x":"19.91"},{"site":"grenoble","uid":"a264","archi":"a8:at86rf231","state":"Alive","network_address":"a8-139.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"21.20","mobile":0,"x":"19.91"},{"site":"grenoble","uid":"05DF","archi":"a8:at86rf231","state":"Alive","network_address":"a8-140.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"21.80","mobile":0,"x":"19.91"},{"site":"grenoble","uid":"b962","archi":"a8:at86rf231","state":"Alive","network_address":"a8-141.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"22.40","mobile":0,"x":"19.91"},{"site":"grenoble","uid":"b467","archi":"a8:at86rf231","state":"Alive","network_address":"a8-142.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"22.40","mobile":0,"x":"19.91"},{"site":"grenoble","uid":"a052","archi":"a8:at86rf231","state":"Alive","network_address":"a8-143.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"23.00","mobile":0,"x":"19.91"},{"site":"grenoble","uid":"b867","archi":"a8:at86rf231","state":"Alive","network_address":"a8-144.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"23.60","mobile":0,"x":"19.91"},{"site":"grenoble","uid":"a250","archi":"a8:at86rf231","state":"Alive","network_address":"a8-145.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"24.20","mobile":0,"x":"19.91"},{"site":"grenoble","uid":"9162","archi":"a8:at86rf231","state":"Alive","network_address":"a8-146.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"24.20","mobile":0,"x":"19.91"},{"site":"grenoble","uid":"8864","archi":"a8:at86rf231","state":"Alive","network_address":"a8-147.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"24.80","mobile":0,"x":"19.91"},{"site":"grenoble","uid":"9363","archi":"a8:at86rf231","state":"Alive","network_address":"a8-148.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"25.30","mobile":0,"x":"19.91"},{"site":"grenoble","uid":"8860","archi":"a8:at86rf231","state":"Alive","network_address":"a8-149.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"1.54","mobile":0,"x":"20.09"},{"site":"grenoble","uid":"2385","archi":"a8:at86rf231","state":"Alive","network_address":"a8-150.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"1.54","mobile":0,"x":"20.09"},{"site":"grenoble","uid":"c264","archi":"a8:at86rf231","state":"Alive","network_address":"a8-151.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"1.54","mobile":0,"x":"20.69"},{"site":"grenoble","uid":"3087","archi":"a8:at86rf231","state":"Alive","network_address":"a8-152.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"1.54","mobile":0,"x":"21.29"},{"site":"grenoble","uid":"2585","archi":"a8:at86rf231","state":"Alive","network_address":"a8-153.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"1.54","mobile":0,"x":"21.29"},{"site":"grenoble","uid":"2586","archi":"a8:at86rf231","state":"Alive","network_address":"a8-154.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"1.54","mobile":0,"x":"21.89"},{"site":"grenoble","uid":"3285","archi":"a8:at86rf231","state":"Alive","network_address":"a8-155.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"1.54","mobile":0,"x":"21.89"},{"site":"grenoble","uid":"2285","archi":"a8:at86rf231","state":"Alive","network_address":"a8-156.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"1.54","mobile":0,"x":"23.09"},{"site":"grenoble","uid":"9763","archi":"a8:at86rf231","state":"Alive","network_address":"a8-157.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"1.54","mobile":0,"x":"23.09"},{"site":"grenoble","uid":"1286","archi":"a8:at86rf231","state":"Alive","network_address":"a8-158.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"1.54","mobile":0,"x":"23.82"},{"site":"grenoble","uid":"a462","archi":"a8:at86rf231","state":"Alive","network_address":"a8-159.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"1.54","mobile":0,"x":"23.82"},{"site":"grenoble","uid":"3187","archi":"a8:at86rf231","state":"Alive","network_address":"a8-160.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"1.66","mobile":0,"x":"24.17"},{"site":"grenoble","uid":"2187","archi":"a8:at86rf231","state":"Alive","network_address":"a8-161.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"1.54","mobile":0,"x":"26.49"},{"site":"grenoble","uid":"3486","archi":"a8:at86rf231","state":"Alive","network_address":"a8-162.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"1.54","mobile":0,"x":"26.49"},{"site":"grenoble","uid":"2085","archi":"a8:at86rf231","state":"Alive","network_address":"a8-163.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"1.54","mobile":0,"x":"27.29"},{"site":"grenoble","uid":"8760","archi":"a8:at86rf231","state":"Alive","network_address":"a8-164.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"1.54","mobile":0,"x":"27.29"},{"site":"grenoble","uid":"3885","archi":"a8:at86rf231","state":"Alive","network_address":"a8-165.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"1.54","mobile":0,"x":"27.89"},{"site":"grenoble","uid":"1385","archi":"a8:at86rf231","state":"Alive","network_address":"a8-166.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"1.54","mobile":0,"x":"28.49"},{"site":"grenoble","uid":"2985","archi":"a8:at86rf231","state":"Alive","network_address":"a8-167.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"1.54","mobile":0,"x":"29.09"},{"site":"grenoble","uid":"1886","archi":"a8:at86rf231","state":"Alive","network_address":"a8-168.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"2.34","mobile":0,"x":"29.69"},{"site":"grenoble","uid":"2584","archi":"a8:at86rf231","state":"Alive","network_address":"a8-169.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"2.34","mobile":0,"x":"29.69"},{"site":"grenoble","uid":"b562","archi":"a8:at86rf231","state":"Alive","network_address":"a8-170.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"2.34","mobile":0,"x":"30.29"},{"site":"grenoble","uid":"3089","archi":"a8:at86rf231","state":"Alive","network_address":"a8-171.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"2.34","mobile":0,"x":"30.29"},{"site":"grenoble","uid":"c065","archi":"a8:at86rf231","state":"Alive","network_address":"a8-172.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"2.34","mobile":0,"x":"30.89"},{"site":"grenoble","uid":"0985","archi":"a8:at86rf231","state":"Alive","network_address":"a8-173.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"1.54","mobile":0,"x":"31.49"},{"site":"grenoble","uid":"b065","archi":"a8:at86rf231","state":"Alive","network_address":"a8-174.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"1.54","mobile":0,"x":"31.49"},{"site":"grenoble","uid":"b462","archi":"a8:at86rf231","state":"Alive","network_address":"a8-175.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"1.54","mobile":0,"x":"32.09"},{"site":"grenoble","uid":"c364","archi":"a8:at86rf231","state":"Alive","network_address":"a8-176.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"1.54","mobile":0,"x":"32.09"},{"site":"grenoble","uid":"9462","archi":"a8:at86rf231","state":"Alive","network_address":"a8-177.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"1.54","mobile":0,"x":"32.69"},{"site":"grenoble","uid":"1585","archi":"a8:at86rf231","state":"Alive","network_address":"a8-178.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"1.54","mobile":0,"x":"33.29"},{"site":"grenoble","uid":"a050","archi":"a8:at86rf231","state":"Alive","network_address":"a8-179.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"1.54","mobile":0,"x":"33.89"},{"site":"grenoble","uid":"c062","archi":"a8:at86rf231","state":"Alive","network_address":"a8-180.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"1.54","mobile":0,"x":"34.49"},{"site":"grenoble","uid":"b362","archi":"a8:at86rf231","state":"Alive","network_address":"a8-181.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"1.54","mobile":0,"x":"35.09"},{"site":"grenoble","uid":"a360","archi":"a8:at86rf231","state":"Alive","network_address":"a8-182.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"1.54","mobile":0,"x":"35.69"},{"site":"grenoble","uid":"8859","archi":"a8:at86rf231","state":"Alive","network_address":"a8-183.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"1.54","mobile":0,"x":"36.29"},{"site":"grenoble","uid":"a964","archi":"a8:at86rf231","state":"Alive","network_address":"a8-184.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"2.34","mobile":0,"x":"36.89"},{"site":"grenoble","uid":"8661","archi":"a8:at86rf231","state":"Alive","network_address":"a8-185.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"2.34","mobile":0,"x":"37.49"},{"site":"grenoble","uid":"b860","archi":"a8:at86rf231","state":"Alive","network_address":"a8-186.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"2.34","mobile":0,"x":"38.09"},{"site":"grenoble","uid":"b159","archi":"a8:at86rf231","state":"Alive","network_address":"a8-187.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"2.34","mobile":0,"x":"38.69"},{"site":"grenoble","uid":"3485","archi":"a8:at86rf231","state":"Alive","network_address":"a8-188.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"1.54","mobile":0,"x":"39.29"},{"site":"grenoble","uid":"b966","archi":"a8:at86rf231","state":"Alive","network_address":"a8-189.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"1.54","mobile":0,"x":"39.29"},{"site":"grenoble","uid":"8761","archi":"a8:at86rf231","state":"Alive","network_address":"a8-190.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"1.54","mobile":0,"x":"39.89"},{"site":"grenoble","uid":"a660","archi":"a8:at86rf231","state":"Alive","network_address":"a8-191.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"1.54","mobile":0,"x":"40.49"},{"site":"grenoble","uid":"9758","archi":"a8:at86rf231","state":"Alive","network_address":"a8-192.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"1.54","mobile":0,"x":"41.09"},{"site":"grenoble","uid":"1885","archi":"a8:at86rf231","state":"Alive","network_address":"a8-193.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"1.54","mobile":0,"x":"41.69"},{"site":"grenoble","uid":"9664","archi":"a8:at86rf231","state":"Alive","network_address":"a8-194.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"1.54","mobile":0,"x":"42.29"},{"site":"grenoble","uid":"9460","archi":"a8:at86rf231","state":"Alive","network_address":"a8-195.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"1.54","mobile":0,"x":"42.36"},{"site":"grenoble","uid":"a960","archi":"a8:at86rf231","state":"Alive","network_address":"a8-196.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"2.34","mobile":0,"x":"42.89"},{"site":"grenoble","uid":"a262","archi":"a8:at86rf231","state":"Alive","network_address":"a8-197.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"2.34","mobile":0,"x":"43.49"},{"site":"grenoble","uid":"b259","archi":"a8:at86rf231","state":"Alive","network_address":"a8-198.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"2.34","mobile":0,"x":"43.49"},{"site":"grenoble","uid":"8961","archi":"a8:at86rf231","state":"Alive","network_address":"a8-199.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"1.54","mobile":0,"x":"45.96"},{"site":"grenoble","uid":"3587","archi":"a8:at86rf231","state":"Alive","network_address":"a8-200.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"1.54","mobile":0,"x":"45.90"},{"site":"grenoble","uid":"2887","archi":"a8:at86rf231","state":"Alive","network_address":"a8-201.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"1.54","mobile":0,"x":"46.49"},{"site":"grenoble","uid":"9958","archi":"a8:at86rf231","state":"Alive","network_address":"a8-202.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"1.54","mobile":0,"x":"47.09"},{"site":"grenoble","uid":"a150","archi":"a8:at86rf231","state":"Alive","network_address":"a8-203.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"1.54","mobile":0,"x":"47.69"},{"site":"grenoble","uid":"2087","archi":"a8:at86rf231","state":"Alive","network_address":"a8-204.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"1.54","mobile":0,"x":"48.29"},{"site":"grenoble","uid":"8662","archi":"a8:at86rf231","state":"Alive","network_address":"a8-205.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"1.54","mobile":0,"x":"48.29"},{"site":"grenoble","uid":"8959","archi":"a8:at86rf231","state":"Alive","network_address":"a8-206.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"1.54","mobile":0,"x":"48.89"},{"site":"grenoble","uid":"a951","archi":"a8:at86rf231","state":"Alive","network_address":"a8-207.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"2.34","mobile":0,"x":"49.49"},{"site":"grenoble","uid":"1685","archi":"a8:at86rf231","state":"Alive","network_address":"a8-208.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"2.34","mobile":0,"x":"50.09"},{"site":"grenoble","uid":"9161","archi":"a8:at86rf231","state":"Alive","network_address":"a8-209.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"1.54","mobile":0,"x":"51.29"},{"site":"grenoble","uid":"b759","archi":"a8:at86rf231","state":"Alive","network_address":"a8-210.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"1.54","mobile":0,"x":"51.29"},{"site":"grenoble","uid":"2386","archi":"a8:at86rf231","state":"Alive","network_address":"a8-211.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"1.54","mobile":0,"x":"51.89"},{"site":"grenoble","uid":"9563","archi":"a8:at86rf231","state":"Alive","network_address":"a8-212.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"1.54","mobile":0,"x":"52.49"},{"site":"grenoble","uid":"9861","archi":"a8:at86rf231","state":"Alive","network_address":"a8-213.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"1.54","mobile":0,"x":"53.09"},{"site":"grenoble","uid":"3884","archi":"a8:at86rf231","state":"Alive","network_address":"a8-214.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"1.54","mobile":0,"x":"53.69"},{"site":"grenoble","uid":"a460","archi":"a8:at86rf231","state":"Alive","network_address":"a8-215.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"1.54","mobile":0,"x":"54.29"},{"site":"grenoble","uid":"b459","archi":"a8:at86rf231","state":"Alive","network_address":"a8-216.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"1.54","mobile":0,"x":"54.89"},{"site":"grenoble","uid":"1785","archi":"a8:at86rf231","state":"Alive","network_address":"a8-217.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"1.54","mobile":0,"x":"55.49"},{"site":"grenoble","uid":"a851","archi":"a8:at86rf231","state":"Alive","network_address":"a8-218.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"1.54","mobile":0,"x":"56.09"},{"site":"grenoble","uid":"9464","archi":"a8:at86rf231","state":"Alive","network_address":"a8-219.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"1.54","mobile":0,"x":"56.69"},{"site":"grenoble","uid":"a861","archi":"a8:at86rf231","state":"Alive","network_address":"a8-220.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"2.34","mobile":0,"x":"57.29"},{"site":"grenoble","uid":"a664","archi":"a8:at86rf231","state":"Alive","network_address":"a8-221.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"2.34","mobile":0,"x":"57.89"},{"site":"grenoble","uid":"2084","archi":"a8:at86rf231","state":"Alive","network_address":"a8-222.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"1.54","mobile":0,"x":"57.89"},{"site":"grenoble","uid":"05DF","archi":"a8:at86rf231","state":"Suspected","network_address":"a8-223.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"1.54","mobile":0,"x":"58.49"},{"site":"grenoble","uid":"8561","archi":"a8:at86rf231","state":"Alive","network_address":"a8-224.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"1.54","mobile":0,"x":"59.09"},{"site":"grenoble","uid":"b558","archi":"a8:at86rf231","state":"Alive","network_address":"a8-225.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"1.54","mobile":0,"x":"59.69"},{"site":"grenoble","uid":"b561","archi":"a8:at86rf231","state":"Alive","network_address":"a8-226.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"1.54","mobile":0,"x":"60.29"},{"site":"grenoble","uid":"9663","archi":"a8:at86rf231","state":"Alive","network_address":"a8-227.grenoble.iot-lab.info","mobility_type":"null","z":"3.23","y":"1.54","mobile":0,"x":"60.89"},{"site":"grenoble","uid":"9950","archi":"a8:at86rf231","state":"Alive","network_address":"a8-228.grenoble.iot-lab.info","mobility_type":"null","z":"2.63","y":"1.54","mobile":0,"x":"61.49"},{"site":"strasbourg","uid":"9355","archi":"a8:at86rf231","state":"Alive","network_address":"a8-1.strasbourg.iot-lab.info","mobility_type":"null","z":"1.20","y":"4.00","mobile":0,"x":"3.00"},{"site":"strasbourg","uid":"9455","archi":"a8:at86rf231","state":"Alive","network_address":"a8-2.strasbourg.iot-lab.info","mobility_type":"null","z":"2.10","y":"4.00","mobile":0,"x":"3.00"},{"site":"strasbourg","uid":"a456","archi":"a8:at86rf231","state":"Alive","network_address":"a8-3.strasbourg.iot-lab.info","mobility_type":"null","z":"1.20","y":"4.00","mobile":0,"x":"7.00"},{"site":"strasbourg","uid":"b857","archi":"a8:at86rf231","state":"Alive","network_address":"a8-4.strasbourg.iot-lab.info","mobility_type":"null","z":"2.10","y":"4.00","mobile":0,"x":"7.00"},{"site":"strasbourg","uid":"9255","archi":"a8:at86rf231","state":"Alive","network_address":"a8-5.strasbourg.iot-lab.info","mobility_type":"null","z":"1.20","y":"4.00","mobile":0,"x":"11.00"},{"site":"strasbourg","uid":"a155","archi":"a8:at86rf231","state":"Alive","network_address":"a8-6.strasbourg.iot-lab.info","mobility_type":"null","z":"2.10","y":"4.00","mobile":0,"x":"11.00"},{"site":"strasbourg","uid":"a956","archi":"a8:at86rf231","state":"Alive","network_address":"a8-7.strasbourg.iot-lab.info","mobility_type":"null","z":"1.20","y":"4.00","mobile":0,"x":"15.00"},{"site":"strasbourg","uid":"a856","archi":"a8:at86rf231","state":"Alive","network_address":"a8-8.strasbourg.iot-lab.info","mobility_type":"null","z":"2.10","y":"4.00","mobile":0,"x":"15.00"},{"site":"strasbourg","uid":"b556","archi":"a8:at86rf231","state":"Alive","network_address":"a8-9.strasbourg.iot-lab.info","mobility_type":"null","z":"1.20","y":"8.00","mobile":0,"x":"3.00"},{"site":"strasbourg","uid":"a656","archi":"a8:at86rf231","state":"Alive","network_address":"a8-10.strasbourg.iot-lab.info","mobility_type":"null","z":"2.10","y":"8.00","mobile":0,"x":"3.00"},{"site":"strasbourg","uid":"a256","archi":"a8:at86rf231","state":"Alive","network_address":"a8-11.strasbourg.iot-lab.info","mobility_type":"null","z":"1.20","y":"8.00","mobile":0,"x":"7.00"},{"site":"strasbourg","uid":"9155","archi":"a8:at86rf231","state":"Alive","network_address":"a8-12.strasbourg.iot-lab.info","mobility_type":"null","z":"2.10","y":"8.00","mobile":0,"x":"7.00"},{"site":"strasbourg","uid":"9555","archi":"a8:at86rf231","state":"Alive","network_address":"a8-13.strasbourg.iot-lab.info","mobility_type":"null","z":"1.20","y":"8.00","mobile":0,"x":"11.00"},{"site":"strasbourg","uid":"9656","archi":"a8:at86rf231","state":"Alive","network_address":"a8-14.strasbourg.iot-lab.info","mobility_type":"null","z":"2.10","y":"8.00","mobile":0,"x":"11.00"},{"site":"lille","uid":"3051","archi":"m3:at86rf231","state":"Alive","network_address":"m3-2.lille.iot-lab.info","mobility_type":"null","z":"0.6","y":"0.1","mobile":0,"x":"0.82"},{"site":"lille","uid":"3259","archi":"m3:at86rf231","state":"Alive","network_address":"m3-4.lille.iot-lab.info","mobility_type":"null","z":"0.6","y":"0.1","mobile":0,"x":"2.02"},{"site":"lille","uid":"1453","archi":"m3:at86rf231","state":"Alive","network_address":"m3-5.lille.iot-lab.info","mobility_type":"null","z":"1.5","y":"0.1","mobile":0,"x":"3.22"},{"site":"lille","uid":"a590","archi":"m3:at86rf231","state":"Alive","network_address":"m3-7.lille.iot-lab.info","mobility_type":"null","z":"1.5","y":"0.1","mobile":0,"x":"4.42"},{"site":"lille","uid":"8974","archi":"m3:at86rf231","state":"Alive","network_address":"m3-8.lille.iot-lab.info","mobility_type":"null","z":"0.6","y":"0.1","mobile":0,"x":"4.42"},{"site":"lille","uid":"1158","archi":"m3:at86rf231","state":"Alive","network_address":"m3-12.lille.iot-lab.info","mobility_type":"null","z":"0.6","y":"0.1","mobile":0,"x":"6.82"},{"site":"lille","uid":"3455","archi":"m3:at86rf231","state":"Alive","network_address":"m3-13.lille.iot-lab.info","mobility_type":"null","z":"1.5","y":"0.1","mobile":0,"x":"8.02"},{"site":"lille","uid":"2655","archi":"m3:at86rf231","state":"Alive","network_address":"m3-16.lille.iot-lab.info","mobility_type":"null","z":"0.6","y":"0.1","mobile":0,"x":"9.22"},{"site":"lille","uid":"2355","archi":"m3:at86rf231","state":"Alive","network_address":"m3-17.lille.iot-lab.info","mobility_type":"null","z":"1.5","y":"0.1","mobile":0,"x":"10.42"},{"site":"lille","uid":"3353","archi":"m3:at86rf231","state":"Alive","network_address":"m3-20.lille.iot-lab.info","mobility_type":"null","z":"0.6","y":"0.1","mobile":0,"x":"11.62"},{"site":"lille","uid":"2652","archi":"m3:at86rf231","state":"Alive","network_address":"m3-21.lille.iot-lab.info","mobility_type":"null","z":"1.5","y":"0.1","mobile":0,"x":"12.82"},{"site":"lille","uid":"2758","archi":"m3:at86rf231","state":"Alive","network_address":"m3-22.lille.iot-lab.info","mobility_type":"null","z":"0.6","y":"0.1","mobile":0,"x":"12.82"},{"site":"lille","uid":"1656","archi":"m3:at86rf231","state":"Alive","network_address":"m3-25.lille.iot-lab.info","mobility_type":"null","z":"1.5","y":"0.1","mobile":0,"x":"15.22"},{"site":"lille","uid":"3862","archi":"m3:at86rf231","state":"Alive","network_address":"m3-30.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"0.3","mobile":0,"x":"2.02"},{"site":"lille","uid":"0761","archi":"m3:at86rf231","state":"Alive","network_address":"m3-31.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"0.3","mobile":0,"x":"3.22"},{"site":"lille","uid":"b772","archi":"m3:at86rf231","state":"Alive","network_address":"m3-35.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"0.3","mobile":0,"x":"8.02"},{"site":"lille","uid":"b189","archi":"m3:at86rf231","state":"Alive","network_address":"m3-36.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"0.3","mobile":0,"x":"9.22"},{"site":"lille","uid":"a489","archi":"m3:at86rf231","state":"Alive","network_address":"m3-37.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"0.3","mobile":0,"x":"10.42"},{"site":"lille","uid":"b870","archi":"m3:at86rf231","state":"Alive","network_address":"m3-41.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"0.3","mobile":0,"x":"15.22"},{"site":"lille","uid":"c473","archi":"m3:at86rf231","state":"Alive","network_address":"m3-43.lille.iot-lab.info","mobility_type":"null","z":"1.5","y":"0.3","mobile":0,"x":"16.1"},{"site":"lille","uid":"1161","archi":"m3:at86rf231","state":"Alive","network_address":"m3-45.lille.iot-lab.info","mobility_type":"null","z":"1.5","y":"1.5","mobile":0,"x":"0.1"},{"site":"lille","uid":"a090","archi":"m3:at86rf231","state":"Alive","network_address":"m3-46.lille.iot-lab.info","mobility_type":"null","z":"0.6","y":"1.5","mobile":0,"x":"0.1"},{"site":"lille","uid":"1651","archi":"m3:at86rf231","state":"Alive","network_address":"m3-48.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"1.5","mobile":0,"x":"2.02"},{"site":"lille","uid":"c070","archi":"m3:at86rf231","state":"Alive","network_address":"m3-50.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"1.5","mobile":0,"x":"4.42"},{"site":"lille","uid":"b372","archi":"m3:at86rf231","state":"Alive","network_address":"m3-53.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"1.5","mobile":0,"x":"8.02"},{"site":"lille","uid":"3759","archi":"m3:at86rf231","state":"Alive","network_address":"m3-55.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"1.5","mobile":0,"x":"10.42"},{"site":"lille","uid":"1852","archi":"m3:at86rf231","state":"Alive","network_address":"m3-58.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"1.5","mobile":0,"x":"14.02"},{"site":"lille","uid":"2154","archi":"m3:at86rf231","state":"Alive","network_address":"m3-59.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"1.5","mobile":0,"x":"15.22"},{"site":"lille","uid":"0961","archi":"m3:at86rf231","state":"Alive","network_address":"m3-60.lille.iot-lab.info","mobility_type":"null","z":"2.4","y":"1.5","mobile":0,"x":"16.1"},{"site":"lille","uid":"1657","archi":"m3:at86rf231","state":"Alive","network_address":"m3-61.lille.iot-lab.info","mobility_type":"null","z":"1.5","y":"1.5","mobile":0,"x":"16.1"},{"site":"lille","uid":"3758","archi":"m3:at86rf231","state":"Alive","network_address":"m3-62.lille.iot-lab.info","mobility_type":"null","z":"0.6","y":"1.5","mobile":0,"x":"16.1"},{"site":"lille","uid":"2854","archi":"m3:at86rf231","state":"Alive","network_address":"m3-68.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"2.7","mobile":0,"x":"4.42"},{"site":"lille","uid":"9370","archi":"m3:at86rf231","state":"Alive","network_address":"m3-69.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"2.7","mobile":0,"x":"5.62"},{"site":"lille","uid":"3258","archi":"m3:at86rf231","state":"Alive","network_address":"m3-75.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"2.7","mobile":0,"x":"12.82"},{"site":"lille","uid":"9977","archi":"m3:at86rf231","state":"Alive","network_address":"m3-77.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"2.7","mobile":0,"x":"15.22"},{"site":"lille","uid":"3052","archi":"m3:at86rf231","state":"Alive","network_address":"m3-78.lille.iot-lab.info","mobility_type":"null","z":"2.4","y":"2.7","mobile":0,"x":"16.1"},{"site":"lille","uid":"1454","archi":"m3:at86rf231","state":"Alive","network_address":"m3-81.lille.iot-lab.info","mobility_type":"null","z":"1.5","y":"3.9","mobile":0,"x":"0.1"},{"site":"lille","uid":"1556","archi":"m3:at86rf231","state":"Alive","network_address":"m3-84.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"3.9","mobile":0,"x":"2.02"},{"site":"lille","uid":"b771","archi":"m3:at86rf231","state":"Alive","network_address":"m3-86.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"3.9","mobile":0,"x":"4.42"},{"site":"lille","uid":"9273","archi":"m3:at86rf231","state":"Alive","network_address":"m3-93.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"3.9","mobile":0,"x":"12.82"},{"site":"lille","uid":"0857","archi":"m3:at86rf231","state":"Alive","network_address":"m3-96.lille.iot-lab.info","mobility_type":"null","z":"2.4","y":"3.9","mobile":0,"x":"16.1"},{"site":"lille","uid":"9873","archi":"m3:at86rf231","state":"Alive","network_address":"m3-98.lille.iot-lab.info","mobility_type":"null","z":"0.6","y":"3.9","mobile":0,"x":"16.1"},{"site":"lille","uid":"9070","archi":"m3:at86rf231","state":"Alive","network_address":"m3-99.lille.iot-lab.info","mobility_type":"null","z":"1.5","y":"5.1","mobile":0,"x":"0.1"},{"site":"lille","uid":"1951","archi":"m3:at86rf231","state":"Alive","network_address":"m3-101.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"5.1","mobile":0,"x":"0.82"},{"site":"lille","uid":"1654","archi":"m3:at86rf231","state":"Alive","network_address":"m3-103.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"5.1","mobile":0,"x":"3.22"},{"site":"lille","uid":"2855","archi":"m3:at86rf231","state":"Alive","network_address":"m3-105.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"5.1","mobile":0,"x":"5.62"},{"site":"lille","uid":"b289","archi":"m3:at86rf231","state":"Alive","network_address":"m3-107.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"5.1","mobile":0,"x":"8.02"},{"site":"lille","uid":"0958","archi":"m3:at86rf231","state":"Alive","network_address":"m3-109.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"5.1","mobile":0,"x":"10.42"},{"site":"lille","uid":"a270","archi":"m3:at86rf231","state":"Alive","network_address":"m3-112.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"5.1","mobile":0,"x":"14.02"},{"site":"lille","uid":"1154","archi":"m3:at86rf231","state":"Alive","network_address":"m3-117.lille.iot-lab.info","mobility_type":"null","z":"1.5","y":"5.45","mobile":0,"x":"5.42"},{"site":"lille","uid":"1356","archi":"m3:at86rf231","state":"Alive","network_address":"m3-119.lille.iot-lab.info","mobility_type":"null","z":"1.5","y":"5.45","mobile":0,"x":"10.82"},{"site":"lille","uid":"0758","archi":"m3:at86rf231","state":"Alive","network_address":"m3-120.lille.iot-lab.info","mobility_type":"null","z":"0.6","y":"5.45","mobile":0,"x":"10.82"},{"site":"lille","uid":"8473","archi":"m3:at86rf231","state":"Alive","network_address":"m3-123.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"6.3","mobile":0,"x":"0.82"},{"site":"lille","uid":"b471","archi":"m3:at86rf231","state":"Alive","network_address":"m3-124.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"6.3","mobile":0,"x":"2.02"},{"site":"lille","uid":"1956","archi":"m3:at86rf231","state":"Alive","network_address":"m3-126.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"6.3","mobile":0,"x":"4.42"},{"site":"lille","uid":"1159","archi":"m3:at86rf231","state":"Alive","network_address":"m3-129.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"6.3","mobile":0,"x":"8.02"},{"site":"lille","uid":"2650","archi":"m3:at86rf231","state":"Alive","network_address":"m3-137.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"7.5","mobile":0,"x":"0.82"},{"site":"lille","uid":"a990","archi":"m3:at86rf231","state":"Alive","network_address":"m3-139.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"7.5","mobile":0,"x":"3.22"},{"site":"lille","uid":"3155","archi":"m3:at86rf231","state":"Alive","network_address":"m3-141.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"7.5","mobile":0,"x":"5.62"},{"site":"lille","uid":"9877","archi":"m3:at86rf231","state":"Alive","network_address":"m3-146.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"7.5","mobile":0,"x":"11.62"},{"site":"lille","uid":"1359","archi":"m3:at86rf231","state":"Alive","network_address":"m3-147.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"7.5","mobile":0,"x":"12.82"},{"site":"lille","uid":"b972","archi":"m3:at86rf231","state":"Alive","network_address":"m3-150.lille.iot-lab.info","mobility_type":"null","z":"0.6","y":"7.5","mobile":0,"x":"14.18"},{"site":"lille","uid":"b173","archi":"m3:at86rf231","state":"Alive","network_address":"m3-151.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"8.7","mobile":0,"x":"0.82"},{"site":"lille","uid":"c073","archi":"m3:at86rf231","state":"Alive","network_address":"m3-152.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"8.7","mobile":0,"x":"2.02"},{"site":"lille","uid":"2850","archi":"m3:at86rf231","state":"Alive","network_address":"m3-153.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"8.7","mobile":0,"x":"3.22"},{"site":"lille","uid":"3254","archi":"m3:at86rf231","state":"Alive","network_address":"m3-154.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"8.7","mobile":0,"x":"4.42"},{"site":"lille","uid":"3359","archi":"m3:at86rf231","state":"Alive","network_address":"m3-155.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"8.7","mobile":0,"x":"5.62"},{"site":"lille","uid":"b472","archi":"m3:at86rf231","state":"Alive","network_address":"m3-158.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"8.7","mobile":0,"x":"9.22"},{"site":"lille","uid":"2257","archi":"m3:at86rf231","state":"Alive","network_address":"m3-162.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"8.7","mobile":0,"x":"14.02"},{"site":"lille","uid":"8673","archi":"m3:at86rf231","state":"Alive","network_address":"m3-164.lille.iot-lab.info","mobility_type":"null","z":"0.6","y":"8.7","mobile":0,"x":"14.18"},{"site":"lille","uid":"a070","archi":"m3:at86rf231","state":"Alive","network_address":"m3-165.lille.iot-lab.info","mobility_type":"null","z":"1.5","y":"9.16","mobile":0,"x":"0.82"},{"site":"lille","uid":"c373","archi":"m3:at86rf231","state":"Alive","network_address":"m3-166.lille.iot-lab.info","mobility_type":"null","z":"0.6","y":"9.16","mobile":0,"x":"0.82"},{"site":"lille","uid":"1355","archi":"m3:at86rf231","state":"Alive","network_address":"m3-167.lille.iot-lab.info","mobility_type":"null","z":"1.5","y":"9.16","mobile":0,"x":"2.02"},{"site":"lille","uid":"3159","archi":"m3:at86rf231","state":"Alive","network_address":"m3-168.lille.iot-lab.info","mobility_type":"null","z":"0.6","y":"9.16","mobile":0,"x":"2.02"},{"site":"lille","uid":"2959","archi":"m3:at86rf231","state":"Alive","network_address":"m3-171.lille.iot-lab.info","mobility_type":"null","z":"1.5","y":"9.16","mobile":0,"x":"4.42"},{"site":"lille","uid":"a771","archi":"m3:at86rf231","state":"Alive","network_address":"m3-172.lille.iot-lab.info","mobility_type":"null","z":"0.6","y":"9.16","mobile":0,"x":"4.42"},{"site":"lille","uid":"3962","archi":"m3:at86rf231","state":"Alive","network_address":"m3-175.lille.iot-lab.info","mobility_type":"null","z":"1.5","y":"9.16","mobile":0,"x":"8.02"},{"site":"lille","uid":"b970","archi":"m3:at86rf231","state":"Alive","network_address":"m3-176.lille.iot-lab.info","mobility_type":"null","z":"0.6","y":"9.16","mobile":0,"x":"8.02"},{"site":"lille","uid":"2456","archi":"m3:at86rf231","state":"Alive","network_address":"m3-180.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"9.9","mobile":0,"x":"2.02"},{"site":"lille","uid":"a873","archi":"m3:at86rf231","state":"Alive","network_address":"m3-183.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"9.9","mobile":0,"x":"6.82"},{"site":"lille","uid":"3059","archi":"m3:at86rf231","state":"Alive","network_address":"m3-185.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"9.9","mobile":0,"x":"9.22"},{"site":"lille","uid":"a373","archi":"m3:at86rf231","state":"Alive","network_address":"m3-186.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"9.9","mobile":0,"x":"10.42"},{"site":"lille","uid":"a289","archi":"m3:at86rf231","state":"Alive","network_address":"m3-189.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"9.9","mobile":0,"x":"14.02"},{"site":"lille","uid":"a490","archi":"m3:at86rf231","state":"Alive","network_address":"m3-191.lille.iot-lab.info","mobility_type":"null","z":"0.6","y":"9.9","mobile":0,"x":"14.18"},{"site":"lille","uid":"a573","archi":"m3:at86rf231","state":"Alive","network_address":"m3-192.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"11.1","mobile":0,"x":"0.82"},{"site":"lille","uid":"1455","archi":"m3:at86rf231","state":"Alive","network_address":"m3-198.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"11.1","mobile":0,"x":"8.02"},{"site":"lille","uid":"1652","archi":"m3:at86rf231","state":"Alive","network_address":"m3-199.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"11.1","mobile":0,"x":"9.22"},{"site":"lille","uid":"a871","archi":"m3:at86rf231","state":"Alive","network_address":"m3-201.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"11.1","mobile":0,"x":"11.62"},{"site":"lille","uid":"1857","archi":"m3:at86rf231","state":"Alive","network_address":"m3-205.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"12.3","mobile":0,"x":"0.82"},{"site":"lille","uid":"3659","archi":"m3:at86rf231","state":"Alive","network_address":"m3-206.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"12.3","mobile":0,"x":"2.02"},{"site":"lille","uid":"2651","archi":"m3:at86rf231","state":"Alive","network_address":"m3-207.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"12.3","mobile":0,"x":"3.22"},{"site":"lille","uid":"8873","archi":"m3:at86rf231","state":"Alive","network_address":"m3-208.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"12.3","mobile":0,"x":"4.42"},{"site":"lille","uid":"b288","archi":"m3:at86rf231","state":"Alive","network_address":"m3-222.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"13.5","mobile":0,"x":"5.62"},{"site":"lille","uid":"b070","archi":"m3:at86rf231","state":"Alive","network_address":"m3-224.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"13.5","mobile":0,"x":"8.02"},{"site":"lille","uid":"1357","archi":"m3:at86rf231","state":"Alive","network_address":"m3-225.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"13.5","mobile":0,"x":"9.22"},{"site":"lille","uid":"0959","archi":"m3:at86rf231","state":"Alive","network_address":"m3-227.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"13.5","mobile":0,"x":"11.62"},{"site":"lille","uid":"2159","archi":"m3:at86rf231","state":"Alive","network_address":"m3-231.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"14.7","mobile":0,"x":"0.82"},{"site":"lille","uid":"2251","archi":"m3:at86rf231","state":"Alive","network_address":"m3-234.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"14.7","mobile":0,"x":"4.42"},{"site":"lille","uid":"a889","archi":"m3:at86rf231","state":"Alive","network_address":"m3-235.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"14.7","mobile":0,"x":"5.62"},{"site":"lille","uid":"1658","archi":"m3:at86rf231","state":"Alive","network_address":"m3-237.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"14.7","mobile":0,"x":"8.02"},{"site":"lille","uid":"2054","archi":"m3:at86rf231","state":"Alive","network_address":"m3-242.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"14.7","mobile":0,"x":"14.02"},{"site":"lille","uid":"1554","archi":"m3:at86rf231","state":"Alive","network_address":"m3-247.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"15.9","mobile":0,"x":"4.42"},{"site":"lille","uid":"b770","archi":"m3:at86rf231","state":"Alive","network_address":"m3-249.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"15.9","mobile":0,"x":"6.82"},{"site":"lille","uid":"0759","archi":"m3:at86rf231","state":"Alive","network_address":"m3-251.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"15.9","mobile":0,"x":"9.22"},{"site":"lille","uid":"2358","archi":"m3:at86rf231","state":"Alive","network_address":"m3-252.lille.iot-lab.info","mobility_type":"null","z":"2.6","y":"15.9","mobile":0,"x":"10.42"},{"site":"rocquencourt","uid":"1160","archi":"m3:at86rf231","state":"Alive","network_address":"m3-1.rocquencourt.iot-lab.info","mobility_type":"null","z":"0.2","y":"4.0","mobile":0,"x":"43.4"},{"site":"rocquencourt","uid":"4061","archi":"m3:at86rf231","state":"Alive","network_address":"m3-2.rocquencourt.iot-lab.info","mobility_type":"null","z":"0.2","y":"2.8","mobile":0,"x":"44.6"},{"site":"rocquencourt","uid":"2453","archi":"m3:at86rf231","state":"Alive","network_address":"m3-3.rocquencourt.iot-lab.info","mobility_type":"null","z":"0.2","y":"4.0","mobile":0,"x":"44.6"},{"site":"rocquencourt","uid":"2061","archi":"m3:at86rf231","state":"Alive","network_address":"m3-4.rocquencourt.iot-lab.info","mobility_type":"null","z":"0.2","y":"1.6","mobile":0,"x":"45.8"},{"site":"rocquencourt","uid":"c374","archi":"m3:at86rf231","state":"Alive","network_address":"m3-5.rocquencourt.iot-lab.info","mobility_type":"null","z":"0.2","y":"4.0","mobile":0,"x":"45.8"},{"site":"rocquencourt","uid":"2460","archi":"m3:at86rf231","state":"Alive","network_address":"m3-6.rocquencourt.iot-lab.info","mobility_type":"null","z":"0.2","y":"0.4","mobile":0,"x":"47.0"},{"site":"rocquencourt","uid":"1360","archi":"m3:at86rf231","state":"Alive","network_address":"m3-7.rocquencourt.iot-lab.info","mobility_type":"null","z":"0.2","y":"2.8","mobile":0,"x":"47.0"},{"site":"rocquencourt","uid":"3560","archi":"m3:at86rf231","state":"Alive","network_address":"m3-8.rocquencourt.iot-lab.info","mobility_type":"null","z":"0.2","y":"4.0","mobile":0,"x":"47.0"},{"site":"rocquencourt","uid":"2760","archi":"m3:at86rf231","state":"Alive","network_address":"m3-9.rocquencourt.iot-lab.info","mobility_type":"null","z":"0.2","y":"0.4","mobile":0,"x":"48.2"},{"site":"rocquencourt","uid":"c471","archi":"m3:at86rf231","state":"Alive","network_address":"m3-10.rocquencourt.iot-lab.info","mobility_type":"null","z":"0.2","y":"1.6","mobile":0,"x":"48.2"},{"site":"rocquencourt","uid":"2353","archi":"m3:at86rf231","state":"Alive","network_address":"m3-11.rocquencourt.iot-lab.info","mobility_type":"null","z":"0.2","y":"2.8","mobile":0,"x":"48.2"},{"site":"rocquencourt","uid":"unknown","archi":"m3:at86rf231","state":"Suspected","network_address":"m3-12.rocquencourt.iot-lab.info","mobility_type":"null","z":"0.2","y":"0.4","mobile":0,"x":"49.4"},{"site":"rocquencourt","uid":"2661","archi":"m3:at86rf231","state":"Alive","network_address":"m3-13.rocquencourt.iot-lab.info","mobility_type":"null","z":"0.2","y":"1.6","mobile":0,"x":"49.4"},{"site":"rocquencourt","uid":"2053","archi":"m3:at86rf231","state":"Alive","network_address":"m3-14.rocquencourt.iot-lab.info","mobility_type":"null","z":"0.2","y":"2.8","mobile":0,"x":"49.4"},{"site":"rocquencourt","uid":"unknown","archi":"m3:at86rf231","state":"Suspected","network_address":"m3-15.rocquencourt.iot-lab.info","mobility_type":"null","z":"0.2","y":"0.4","mobile":0,"x":"50.6"},{"site":"rocquencourt","uid":"unknown","archi":"a8:at86rf231","state":"Alive","network_address":"a8-1.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"0.4","mobile":0,"x":"0.4"},{"site":"rocquencourt","uid":"9065","archi":"a8:at86rf231","state":"Alive","network_address":"a8-2.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"0.4","mobile":0,"x":"1.6"},{"site":"rocquencourt","uid":"a051","archi":"a8:at86rf231","state":"Alive","network_address":"a8-3.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"0.4","mobile":0,"x":"2.8"},{"site":"rocquencourt","uid":"9764","archi":"a8:at86rf231","state":"Alive","network_address":"a8-4.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"0.4","mobile":0,"x":"4.0"},{"site":"rocquencourt","uid":"a151","archi":"a8:at86rf231","state":"Alive","network_address":"a8-5.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"0.4","mobile":0,"x":"5.2"},{"site":"rocquencourt","uid":"unknown","archi":"a8:at86rf231","state":"Alive","network_address":"a8-6.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"0.4","mobile":0,"x":"6.4"},{"site":"rocquencourt","uid":"a065","archi":"a8:at86rf231","state":"Alive","network_address":"a8-7.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"0.4","mobile":0,"x":"7.6"},{"site":"rocquencourt","uid":"a053","archi":"a8:at86rf231","state":"Alive","network_address":"a8-8.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"0.4","mobile":0,"x":"8.8"},{"site":"rocquencourt","uid":"a167","archi":"a8:at86rf231","state":"Alive","network_address":"a8-9.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"0.4","mobile":0,"x":"10.0"},{"site":"rocquencourt","uid":"unknown","archi":"a8:at86rf231","state":"Alive","network_address":"a8-10.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"0.4","mobile":0,"x":"11.2"},{"site":"rocquencourt","uid":"a166","archi":"a8:at86rf231","state":"Alive","network_address":"a8-11.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"0.4","mobile":0,"x":"12.4"},{"site":"rocquencourt","uid":"9463","archi":"a8:at86rf231","state":"Alive","network_address":"a8-12.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"1.6","mobile":0,"x":"0.4"},{"site":"rocquencourt","uid":"b967","archi":"a8:at86rf231","state":"Alive","network_address":"a8-13.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"1.6","mobile":0,"x":"1.6"},{"site":"rocquencourt","uid":"8857","archi":"a8:at86rf231","state":"Alive","network_address":"a8-14.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"1.6","mobile":0,"x":"2.8"},{"site":"rocquencourt","uid":"a753","archi":"a8:at86rf231","state":"Alive","network_address":"a8-15.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"1.6","mobile":0,"x":"4.0"},{"site":"rocquencourt","uid":"b766","archi":"a8:at86rf231","state":"Alive","network_address":"a8-16.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"1.6","mobile":0,"x":"5.2"},{"site":"rocquencourt","uid":"b056","archi":"a8:at86rf231","state":"Alive","network_address":"a8-17.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"1.6","mobile":0,"x":"6.4"},{"site":"rocquencourt","uid":"a451","archi":"a8:at86rf231","state":"Alive","network_address":"a8-18.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"1.6","mobile":0,"x":"7.6"},{"site":"rocquencourt","uid":"a663","archi":"a8:at86rf231","state":"Alive","network_address":"a8-19.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"1.6","mobile":0,"x":"8.8"},{"site":"rocquencourt","uid":"a665","archi":"a8:at86rf231","state":"Alive","network_address":"a8-20.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"1.6","mobile":0,"x":"10.0"},{"site":"rocquencourt","uid":"b052","archi":"a8:at86rf231","state":"Alive","network_address":"a8-21.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"1.6","mobile":0,"x":"11.2"},{"site":"rocquencourt","uid":"b063","archi":"a8:at86rf231","state":"Alive","network_address":"a8-22.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"1.6","mobile":0,"x":"12.4"},{"site":"rocquencourt","uid":"b154","archi":"a8:at86rf231","state":"Alive","network_address":"a8-23.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"2.8","mobile":0,"x":"0.4"},{"site":"rocquencourt","uid":"a666","archi":"a8:at86rf231","state":"Alive","network_address":"a8-24.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"2.8","mobile":0,"x":"1.6"},{"site":"rocquencourt","uid":"b153","archi":"a8:at86rf231","state":"Alive","network_address":"a8-25.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"2.8","mobile":0,"x":"2.8"},{"site":"rocquencourt","uid":"9753","archi":"a8:at86rf231","state":"Alive","network_address":"a8-26.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"2.8","mobile":0,"x":"4.0"},{"site":"rocquencourt","uid":"9954","archi":"a8:at86rf231","state":"Alive","network_address":"a8-27.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"2.8","mobile":0,"x":"5.2"},{"site":"rocquencourt","uid":"9163","archi":"a8:at86rf231","state":"Alive","network_address":"a8-28.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"2.8","mobile":0,"x":"6.4"},{"site":"rocquencourt","uid":"b658","archi":"a8:at86rf231","state":"Alive","network_address":"a8-29.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"2.8","mobile":0,"x":"7.6"},{"site":"rocquencourt","uid":"a367","archi":"a8:at86rf231","state":"Alive","network_address":"a8-30.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"2.8","mobile":0,"x":"8.8"},{"site":"rocquencourt","uid":"9165","archi":"a8:at86rf231","state":"Alive","network_address":"a8-31.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"2.8","mobile":0,"x":"10.0"},{"site":"rocquencourt","uid":"9166","archi":"a8:at86rf231","state":"Alive","network_address":"a8-32.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"2.8","mobile":0,"x":"11.2"},{"site":"rocquencourt","uid":"8966","archi":"a8:at86rf231","state":"Alive","network_address":"a8-33.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"2.8","mobile":0,"x":"12.4"},{"site":"rocquencourt","uid":"a267","archi":"a8:at86rf231","state":"Alive","network_address":"a8-34.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"4.0","mobile":0,"x":"0.4"},{"site":"rocquencourt","uid":"b567","archi":"a8:at86rf231","state":"Alive","network_address":"a8-35.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"4.0","mobile":0,"x":"1.6"},{"site":"rocquencourt","uid":"b066","archi":"a8:at86rf231","state":"Alive","network_address":"a8-36.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"4.0","mobile":0,"x":"2.8"},{"site":"rocquencourt","uid":"9964","archi":"a8:at86rf231","state":"Alive","network_address":"a8-37.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"4.0","mobile":0,"x":"4.0"},{"site":"rocquencourt","uid":"a366","archi":"a8:at86rf231","state":"Alive","network_address":"a8-38.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"4.0","mobile":0,"x":"5.2"},{"site":"rocquencourt","uid":"unknown","archi":"a8:at86rf231","state":"Alive","network_address":"a8-39.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"4.0","mobile":0,"x":"6.4"},{"site":"rocquencourt","uid":"9266","archi":"a8:at86rf231","state":"Alive","network_address":"a8-40.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"4.0","mobile":0,"x":"7.6"},{"site":"rocquencourt","uid":"9458","archi":"a8:at86rf231","state":"Alive","network_address":"a8-41.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"4.0","mobile":0,"x":"8.8"},{"site":"rocquencourt","uid":"b863","archi":"a8:at86rf231","state":"Alive","network_address":"a8-42.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"4.0","mobile":0,"x":"10.0"},{"site":"rocquencourt","uid":"9253","archi":"a8:at86rf231","state":"Alive","network_address":"a8-43.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"4.0","mobile":0,"x":"11.2"},{"site":"rocquencourt","uid":"unknown","archi":"a8:at86rf231","state":"Alive","network_address":"a8-44.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"4.0","mobile":0,"x":"12.4"},{"site":"rocquencourt","uid":"9653","archi":"a8:at86rf231","state":"Alive","network_address":"a8-45.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"5.2","mobile":0,"x":"0.4"},{"site":"rocquencourt","uid":"a566","archi":"a8:at86rf231","state":"Alive","network_address":"a8-46.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"5.2","mobile":0,"x":"1.6"},{"site":"rocquencourt","uid":"a254","archi":"a8:at86rf231","state":"Alive","network_address":"a8-47.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"5.2","mobile":0,"x":"2.8"},{"site":"rocquencourt","uid":"unknown","archi":"a8:at86rf231","state":"Suspected","network_address":"a8-48.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"5.2","mobile":0,"x":"4.0"},{"site":"rocquencourt","uid":"unknown","archi":"a8:at86rf231","state":"Alive","network_address":"a8-49.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"5.2","mobile":0,"x":"5.2"},{"site":"rocquencourt","uid":"9966","archi":"a8:at86rf231","state":"Alive","network_address":"a8-50.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"5.2","mobile":0,"x":"6.4"},{"site":"rocquencourt","uid":"a452","archi":"a8:at86rf231","state":"Alive","network_address":"a8-51.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"5.2","mobile":0,"x":"7.6"},{"site":"rocquencourt","uid":"8866","archi":"a8:at86rf231","state":"Alive","network_address":"a8-52.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"5.2","mobile":0,"x":"8.8"},{"site":"rocquencourt","uid":"9452","archi":"a8:at86rf231","state":"Alive","network_address":"a8-53.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"5.2","mobile":0,"x":"10.0"},{"site":"rocquencourt","uid":"b367","archi":"a8:at86rf231","state":"Alive","network_address":"a8-54.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"5.2","mobile":0,"x":"11.2"},{"site":"rocquencourt","uid":"9466","archi":"a8:at86rf231","state":"Alive","network_address":"a8-55.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"5.2","mobile":0,"x":"12.4"},{"site":"rocquencourt","uid":"b465","archi":"a8:at86rf231","state":"Alive","network_address":"a8-56.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"6.4","mobile":0,"x":"7.6"},{"site":"rocquencourt","uid":"a765","archi":"a8:at86rf231","state":"Alive","network_address":"a8-57.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"6.4","mobile":0,"x":"8.8"},{"site":"rocquencourt","uid":"8957","archi":"a8:at86rf231","state":"Alive","network_address":"a8-58.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"6.4","mobile":0,"x":"10.0"},{"site":"rocquencourt","uid":"9754","archi":"a8:at86rf231","state":"Alive","network_address":"a8-59.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"6.4","mobile":0,"x":"11.2"},{"site":"rocquencourt","uid":"a067","archi":"a8:at86rf231","state":"Alive","network_address":"a8-60.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"6.4","mobile":0,"x":"12.4"},{"site":"rocquencourt","uid":"a351","archi":"a8:at86rf231","state":"Alive","network_address":"a8-61.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"7.9","mobile":0,"x":"1.4"},{"site":"rocquencourt","uid":"9755","archi":"a8:at86rf231","state":"Alive","network_address":"a8-62.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"7.9","mobile":0,"x":"2.6"},{"site":"rocquencourt","uid":"a252","archi":"a8:at86rf231","state":"Alive","network_address":"a8-63.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"7.9","mobile":0,"x":"3.8"},{"site":"rocquencourt","uid":"a054","archi":"a8:at86rf231","state":"Alive","network_address":"a8-64.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"7.9","mobile":0,"x":"5.0"},{"site":"rocquencourt","uid":"9867","archi":"a8:at86rf231","state":"Alive","network_address":"a8-65.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"7.9","mobile":0,"x":"6.2"},{"site":"rocquencourt","uid":"c163","archi":"a8:at86rf231","state":"Alive","network_address":"a8-66.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"7.9","mobile":0,"x":"7.4"},{"site":"rocquencourt","uid":"unknown","archi":"a8:at86rf231","state":"Alive","network_address":"a8-67.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"7.9","mobile":0,"x":"8.6"},{"site":"rocquencourt","uid":"b166","archi":"a8:at86rf231","state":"Alive","network_address":"a8-68.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"7.9","mobile":0,"x":"9.8"},{"site":"rocquencourt","uid":"9855","archi":"a8:at86rf231","state":"Alive","network_address":"a8-69.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"7.9","mobile":0,"x":"11.0"},{"site":"rocquencourt","uid":"9354","archi":"a8:at86rf231","state":"Alive","network_address":"a8-70.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"7.9","mobile":0,"x":"12.2"},{"site":"rocquencourt","uid":"a754","archi":"a8:at86rf231","state":"Alive","network_address":"a8-71.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"7.9","mobile":0,"x":"13.4"},{"site":"rocquencourt","uid":"b454","archi":"a8:at86rf231","state":"Alive","network_address":"a8-72.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"7.9","mobile":0,"x":"14.6"},{"site":"rocquencourt","uid":"b964","archi":"a8:at86rf231","state":"Alive","network_address":"a8-73.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"7.9","mobile":0,"x":"15.8"},{"site":"rocquencourt","uid":"b053","archi":"a8:at86rf231","state":"Alive","network_address":"a8-74.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"7.9","mobile":0,"x":"17.0"},{"site":"rocquencourt","uid":"9866","archi":"a8:at86rf231","state":"Alive","network_address":"a8-75.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"7.9","mobile":0,"x":"18.2"},{"site":"rocquencourt","uid":"b356","archi":"a8:at86rf231","state":"Alive","network_address":"a8-76.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"7.9","mobile":0,"x":"19.4"},{"site":"rocquencourt","uid":"b254","archi":"a8:at86rf231","state":"Alive","network_address":"a8-77.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"7.9","mobile":0,"x":"20.6"},{"site":"rocquencourt","uid":"8666","archi":"a8:at86rf231","state":"Alive","network_address":"a8-78.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"7.9","mobile":0,"x":"21.8"},{"site":"rocquencourt","uid":"a967","archi":"a8:at86rf231","state":"Alive","network_address":"a8-79.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"7.9","mobile":0,"x":"23.0"},{"site":"rocquencourt","uid":"9258","archi":"a8:at86rf231","state":"Alive","network_address":"a8-80.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"7.9","mobile":0,"x":"24.2"},{"site":"rocquencourt","uid":"a454","archi":"a8:at86rf231","state":"Alive","network_address":"a8-81.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"7.9","mobile":0,"x":"25.4"},{"site":"rocquencourt","uid":"b763","archi":"a8:at86rf231","state":"Alive","network_address":"a8-82.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"7.9","mobile":0,"x":"26.6"},{"site":"rocquencourt","uid":"a353","archi":"a8:at86rf231","state":"Alive","network_address":"a8-83.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"7.9","mobile":0,"x":"27.8"},{"site":"rocquencourt","uid":"9953","archi":"a8:at86rf231","state":"Alive","network_address":"a8-84.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"7.9","mobile":0,"x":"29.0"},{"site":"rocquencourt","uid":"b256","archi":"a8:at86rf231","state":"Alive","network_address":"a8-85.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"7.9","mobile":0,"x":"30.2"},{"site":"rocquencourt","uid":"a954","archi":"a8:at86rf231","state":"Alive","network_address":"a8-86.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"7.9","mobile":0,"x":"31.4"},{"site":"rocquencourt","uid":"a653","archi":"a8:at86rf231","state":"Alive","network_address":"a8-87.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"7.9","mobile":0,"x":"32.6"},{"site":"rocquencourt","uid":"b466","archi":"a8:at86rf231","state":"Alive","network_address":"a8-88.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"7.9","mobile":0,"x":"33.8"},{"site":"rocquencourt","uid":"a567","archi":"a8:at86rf231","state":"Alive","network_address":"a8-89.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"7.9","mobile":0,"x":"35.0"},{"site":"rocquencourt","uid":"a352","archi":"a8:at86rf231","state":"Alive","network_address":"a8-90.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"7.9","mobile":0,"x":"36.2"},{"site":"rocquencourt","uid":"unknown","archi":"a8:at86rf231","state":"Alive","network_address":"a8-91.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"7.9","mobile":0,"x":"37.4"},{"site":"rocquencourt","uid":"a063","archi":"a8:at86rf231","state":"Alive","network_address":"a8-92.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"7.9","mobile":0,"x":"38.6"},{"site":"rocquencourt","uid":"a854","archi":"a8:at86rf231","state":"Alive","network_address":"a8-93.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"7.9","mobile":0,"x":"39.8"},{"site":"rocquencourt","uid":"8466","archi":"a8:at86rf231","state":"Alive","network_address":"a8-94.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"7.9","mobile":0,"x":"41.0"},{"site":"rocquencourt","uid":"b758","archi":"a8:at86rf231","state":"Alive","network_address":"a8-95.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"7.9","mobile":0,"x":"42.2"},{"site":"rocquencourt","uid":"b263","archi":"a8:at86rf231","state":"Alive","network_address":"a8-96.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"7.9","mobile":0,"x":"43.4"},{"site":"rocquencourt","uid":"a466","archi":"a8:at86rf231","state":"Alive","network_address":"a8-97.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"7.9","mobile":0,"x":"45.8"},{"site":"rocquencourt","uid":"b654","archi":"a8:at86rf231","state":"Alive","network_address":"a8-98.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"7.9","mobile":0,"x":"47.0"},{"site":"rocquencourt","uid":"9864","archi":"a8:at86rf231","state":"Alive","network_address":"a8-99.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"7.9","mobile":0,"x":"48.2"},{"site":"rocquencourt","uid":"a866","archi":"a8:at86rf231","state":"Alive","network_address":"a8-100.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"7.9","mobile":0,"x":"49.4"},{"site":"rocquencourt","uid":"9566","archi":"a8:at86rf231","state":"Alive","network_address":"a8-101.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"0.4","mobile":0,"x":"45.8"},{"site":"rocquencourt","uid":"a752","archi":"a8:at86rf231","state":"Alive","network_address":"a8-102.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"0.4","mobile":0,"x":"47.0"},{"site":"rocquencourt","uid":"9853","archi":"a8:at86rf231","state":"Alive","network_address":"a8-103.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"0.4","mobile":0,"x":"48.2"},{"site":"rocquencourt","uid":"b767","archi":"a8:at86rf231","state":"Alive","network_address":"a8-104.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"0.4","mobile":0,"x":"49.4"},{"site":"rocquencourt","uid":"9766","archi":"a8:at86rf231","state":"Alive","network_address":"a8-105.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"1.6","mobile":0,"x":"43.4"},{"site":"rocquencourt","uid":"a464","archi":"a8:at86rf231","state":"Alive","network_address":"a8-106.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"1.6","mobile":0,"x":"44.6"},{"site":"rocquencourt","uid":"9655","archi":"a8:at86rf231","state":"Alive","network_address":"a8-107.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"1.6","mobile":0,"x":"45.8"},{"site":"rocquencourt","uid":"9967","archi":"a8:at86rf231","state":"Alive","network_address":"a8-108.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"1.6","mobile":0,"x":"47.0"},{"site":"rocquencourt","uid":"b667","archi":"a8:at86rf231","state":"Alive","network_address":"a8-109.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"1.6","mobile":0,"x":"48.2"},{"site":"rocquencourt","uid":"a552","archi":"a8:at86rf231","state":"Alive","network_address":"a8-110.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"1.6","mobile":0,"x":"49.4"},{"site":"rocquencourt","uid":"9852","archi":"a8:at86rf231","state":"Alive","network_address":"a8-111.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"1.6","mobile":0,"x":"50.6"},{"site":"rocquencourt","uid":"a551","archi":"a8:at86rf231","state":"Alive","network_address":"a8-112.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"1.6","mobile":0,"x":"51.8"},{"site":"rocquencourt","uid":"b566","archi":"a8:at86rf231","state":"Alive","network_address":"a8-113.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"1.6","mobile":0,"x":"53.0"},{"site":"rocquencourt","uid":"a163","archi":"a8:at86rf231","state":"Alive","network_address":"a8-114.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"1.6","mobile":0,"x":"54.2"},{"site":"rocquencourt","uid":"8465","archi":"a8:at86rf231","state":"Alive","network_address":"a8-115.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"1.6","mobile":0,"x":"55.4"},{"site":"rocquencourt","uid":"unknown","archi":"a8:at86rf231","state":"Alive","network_address":"a8-116.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"1.6","mobile":0,"x":"56.6"},{"site":"rocquencourt","uid":"a952","archi":"a8:at86rf231","state":"Alive","network_address":"a8-117.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"2.8","mobile":0,"x":"43.4"},{"site":"rocquencourt","uid":"9154","archi":"a8:at86rf231","state":"Alive","network_address":"a8-118.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"2.8","mobile":0,"x":"44.6"},{"site":"rocquencourt","uid":"b054","archi":"a8:at86rf231","state":"Alive","network_address":"a8-119.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"2.8","mobile":0,"x":"45.8"},{"site":"rocquencourt","uid":"8566","archi":"a8:at86rf231","state":"Alive","network_address":"a8-120.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"2.8","mobile":0,"x":"47.0"},{"site":"rocquencourt","uid":"unknown","archi":"a8:at86rf231","state":"Alive","network_address":"a8-121.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"2.8","mobile":0,"x":"48.2"},{"site":"rocquencourt","uid":"9665","archi":"a8:at86rf231","state":"Alive","network_address":"a8-122.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"2.8","mobile":0,"x":"49.4"},{"site":"rocquencourt","uid":"a465","archi":"a8:at86rf231","state":"Alive","network_address":"a8-123.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"4.0","mobile":0,"x":"43.4"},{"site":"rocquencourt","uid":"9365","archi":"a8:at86rf231","state":"Alive","network_address":"a8-124.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"4.0","mobile":0,"x":"44.6"},{"site":"rocquencourt","uid":"b366","archi":"a8:at86rf231","state":"Alive","network_address":"a8-125.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"4.0","mobile":0,"x":"45.8"},{"site":"rocquencourt","uid":"b365","archi":"a8:at86rf231","state":"Alive","network_address":"a8-126.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"4.0","mobile":0,"x":"47.0"},{"site":"rocquencourt","uid":"a354","archi":"a8:at86rf231","state":"Alive","network_address":"a8-127.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"4.0","mobile":0,"x":"48.2"},{"site":"rocquencourt","uid":"9952","archi":"a8:at86rf231","state":"Alive","network_address":"a8-128.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"4.0","mobile":0,"x":"49.4"},{"site":"rocquencourt","uid":"a654","archi":"a8:at86rf231","state":"Alive","network_address":"a8-129.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"0.4","mobile":0,"x":"0.4"},{"site":"rocquencourt","uid":"unknown","archi":"a8:at86rf231","state":"Alive","network_address":"a8-130.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"0.4","mobile":0,"x":"2.8"},{"site":"rocquencourt","uid":"a766","archi":"a8:at86rf231","state":"Alive","network_address":"a8-131.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"0.4","mobile":0,"x":"5.2"},{"site":"rocquencourt","uid":"a867","archi":"a8:at86rf231","state":"Alive","network_address":"a8-132.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"0.4","mobile":0,"x":"7.6"},{"site":"rocquencourt","uid":"9158","archi":"a8:at86rf231","state":"Alive","network_address":"a8-133.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"0.4","mobile":0,"x":"10.0"},{"site":"rocquencourt","uid":"9364","archi":"a8:at86rf231","state":"Alive","network_address":"a8-134.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"0.4","mobile":0,"x":"12.4"},{"site":"rocquencourt","uid":"8565","archi":"a8:at86rf231","state":"Alive","network_address":"a8-135.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"1.6","mobile":0,"x":"1.6"},{"site":"rocquencourt","uid":"c267","archi":"a8:at86rf231","state":"Alive","network_address":"a8-136.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"1.6","mobile":0,"x":"4.0"},{"site":"rocquencourt","uid":"9552","archi":"a8:at86rf231","state":"Alive","network_address":"a8-137.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"1.6","mobile":0,"x":"6.4"},{"site":"rocquencourt","uid":"a763","archi":"a8:at86rf231","state":"Alive","network_address":"a8-138.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"1.6","mobile":0,"x":"8.8"},{"site":"rocquencourt","uid":"a767","archi":"a8:at86rf231","state":"Alive","network_address":"a8-139.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"1.6","mobile":0,"x":"11.2"},{"site":"rocquencourt","uid":"a553","archi":"a8:at86rf231","state":"Alive","network_address":"a8-140.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"2.8","mobile":0,"x":"0.4"},{"site":"rocquencourt","uid":"9057","archi":"a8:at86rf231","state":"Alive","network_address":"a8-141.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"2.8","mobile":0,"x":"2.8"},{"site":"rocquencourt","uid":"9465","archi":"a8:at86rf231","state":"Alive","network_address":"a8-142.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"2.8","mobile":0,"x":"5.2"},{"site":"rocquencourt","uid":"9666","archi":"a8:at86rf231","state":"Alive","network_address":"a8-143.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"2.8","mobile":0,"x":"7.6"},{"site":"rocquencourt","uid":"a253","archi":"a8:at86rf231","state":"Alive","network_address":"a8-144.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"2.8","mobile":0,"x":"10.0"},{"site":"rocquencourt","uid":"a265","archi":"a8:at86rf231","state":"Alive","network_address":"a8-145.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"2.8","mobile":0,"x":"12.4"},{"site":"rocquencourt","uid":"b067","archi":"a8:at86rf231","state":"Alive","network_address":"a8-146.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"4.0","mobile":0,"x":"1.6"},{"site":"rocquencourt","uid":"9254","archi":"a8:at86rf231","state":"Alive","network_address":"a8-147.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"4.0","mobile":0,"x":"4.0"},{"site":"rocquencourt","uid":"unknown","archi":"a8:at86rf231","state":"Suspected","network_address":"a8-148.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"4.0","mobile":0,"x":"6.4"},{"site":"rocquencourt","uid":"b264","archi":"a8:at86rf231","state":"Alive","network_address":"a8-149.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"4.0","mobile":0,"x":"8.8"},{"site":"rocquencourt","uid":"b167","archi":"a8:at86rf231","state":"Alive","network_address":"a8-150.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"4.0","mobile":0,"x":"11.2"},{"site":"rocquencourt","uid":"a165","archi":"a8:at86rf231","state":"Alive","network_address":"a8-151.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"5.2","mobile":0,"x":"0.4"},{"site":"rocquencourt","uid":"a853","archi":"a8:at86rf231","state":"Alive","network_address":"a8-152.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"5.2","mobile":0,"x":"2.8"},{"site":"rocquencourt","uid":"b666","archi":"a8:at86rf231","state":"Alive","network_address":"a8-153.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"5.2","mobile":0,"x":"5.2"},{"site":"rocquencourt","uid":"a263","archi":"a8:at86rf231","state":"Alive","network_address":"a8-154.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"5.2","mobile":0,"x":"7.6"},{"site":"rocquencourt","uid":"a363","archi":"a8:at86rf231","state":"Alive","network_address":"a8-155.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"5.2","mobile":0,"x":"10.0"},{"site":"rocquencourt","uid":"a667","archi":"a8:at86rf231","state":"Alive","network_address":"a8-156.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"5.2","mobile":0,"x":"12.4"},{"site":"rocquencourt","uid":"9863","archi":"a8:at86rf231","state":"Alive","network_address":"a8-157.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"6.4","mobile":0,"x":"8.8"},{"site":"rocquencourt","uid":"b253","archi":"a8:at86rf231","state":"Alive","network_address":"a8-158.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"6.4","mobile":0,"x":"11.2"},{"site":"rocquencourt","uid":"a066","archi":"a8:at86rf231","state":"Alive","network_address":"a8-159.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"0.4","mobile":0,"x":"45.8"},{"site":"rocquencourt","uid":"b353","archi":"a8:at86rf231","state":"Alive","network_address":"a8-160.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"0.4","mobile":0,"x":"50.6"},{"site":"rocquencourt","uid":"a852","archi":"a8:at86rf231","state":"Alive","network_address":"a8-161.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"1.6","mobile":0,"x":"44.6"},{"site":"rocquencourt","uid":"b152","archi":"a8:at86rf231","state":"Alive","network_address":"a8-162.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"1.6","mobile":0,"x":"47.0"},{"site":"rocquencourt","uid":"a554","archi":"a8:at86rf231","state":"Alive","network_address":"a8-163.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"2.8","mobile":0,"x":"44.6"},{"site":"rocquencourt","uid":"9765","archi":"a8:at86rf231","state":"Alive","network_address":"a8-164.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"4.0","mobile":0,"x":"44.6"},{"site":"rocquencourt","uid":"9854","archi":"a8:at86rf231","state":"Alive","network_address":"a8-165.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"4.0","mobile":0,"x":"47.0"},{"site":"rocquencourt","uid":"9358","archi":"a8:at86rf231","state":"Alive","network_address":"a8-166.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"23.2","mobile":0,"x":"-0.8"},{"site":"rocquencourt","uid":"b352","archi":"a8:at86rf231","state":"Alive","network_address":"a8-167.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"23.2","mobile":0,"x":"6.2"},{"site":"rocquencourt","uid":"8665","archi":"a8:at86rf231","state":"Alive","network_address":"a8-168.rocquencourt.iot-lab.info","mobility_type":"null","z":"2.0","y":"23.2","mobile":0,"x":"13.2"},{"site":"rocquencourt","uid":"a152","archi":"a8:at86rf231","state":"Alive","network_address":"a8-169.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"23.2","mobile":0,"x":"20.2"},{"site":"rocquencourt","uid":"b866","archi":"a8:at86rf231","state":"Alive","network_address":"a8-170.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"23.2","mobile":0,"x":"27.2"},{"site":"rocquencourt","uid":"b858","archi":"a8:at86rf231","state":"Alive","network_address":"a8-171.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"23.2","mobile":0,"x":"34.2"},{"site":"rocquencourt","uid":"b554","archi":"a8:at86rf231","state":"Alive","network_address":"a8-172.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"23.2","mobile":0,"x":"41.2"},{"site":"rocquencourt","uid":"8865","archi":"a8:at86rf231","state":"Alive","network_address":"a8-173.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"23.2","mobile":0,"x":"48.2"},{"site":"rocquencourt","uid":"9553","archi":"a8:at86rf231","state":"Alive","network_address":"a8-174.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"23.2","mobile":0,"x":"55.2"},{"site":"rocquencourt","uid":"9058","archi":"a8:at86rf231","state":"Alive","network_address":"a8-175.rocquencourt.iot-lab.info","mobility_type":"null","z":"1.1","y":"23.2","mobile":0,"x":"62.2"},{"site":"strasbourg","uid":"a484","archi":"m3:at86rf231","state":"Alive","network_address":"m3-1.strasbourg.iot-lab.info","mobility_type":"null","z":"1.20","y":"2.00","mobile":0,"x":"1.00"},{"site":"strasbourg","uid":"a685","archi":"m3:at86rf231","state":"Alive","network_address":"m3-2.strasbourg.iot-lab.info","mobility_type":"null","z":"2.10","y":"2.00","mobile":0,"x":"1.00"},{"site":"strasbourg","uid":"9787","archi":"m3:at86rf231","state":"Alive","network_address":"m3-3.strasbourg.iot-lab.info","mobility_type":"null","z":"1.20","y":"2.00","mobile":0,"x":"3.00"},{"site":"strasbourg","uid":"9388","archi":"m3:at86rf231","state":"Alive","network_address":"m3-4.strasbourg.iot-lab.info","mobility_type":"null","z":"2.10","y":"2.00","mobile":0,"x":"3.00"},{"site":"strasbourg","uid":"9889","archi":"m3:at86rf231","state":"Alive","network_address":"m3-5.strasbourg.iot-lab.info","mobility_type":"null","z":"1.20","y":"2.00","mobile":0,"x":"5.00"},{"site":"strasbourg","uid":"9287","archi":"m3:at86rf231","state":"Alive","network_address":"m3-6.strasbourg.iot-lab.info","mobility_type":"null","z":"2.10","y":"2.00","mobile":0,"x":"5.00"},{"site":"strasbourg","uid":"b184","archi":"m3:at86rf231","state":"Alive","network_address":"m3-7.strasbourg.iot-lab.info","mobility_type":"null","z":"1.20","y":"2.00","mobile":0,"x":"7.00"},{"site":"strasbourg","uid":"a887","archi":"m3:at86rf231","state":"Alive","network_address":"m3-8.strasbourg.iot-lab.info","mobility_type":"null","z":"2.10","y":"2.00","mobile":0,"x":"7.00"},{"site":"strasbourg","uid":"b885","archi":"m3:at86rf231","state":"Alive","network_address":"m3-9.strasbourg.iot-lab.info","mobility_type":"null","z":"1.20","y":"2.00","mobile":0,"x":"9.00"},{"site":"strasbourg","uid":"9387","archi":"m3:at86rf231","state":"Alive","network_address":"m3-10.strasbourg.iot-lab.info","mobility_type":"null","z":"2.10","y":"2.00","mobile":0,"x":"9.00"},{"site":"strasbourg","uid":"8984","archi":"m3:at86rf231","state":"Alive","network_address":"m3-11.strasbourg.iot-lab.info","mobility_type":"null","z":"1.20","y":"2.00","mobile":0,"x":"11.00"},{"site":"strasbourg","uid":"9588","archi":"m3:at86rf231","state":"Alive","network_address":"m3-12.strasbourg.iot-lab.info","mobility_type":"null","z":"2.10","y":"2.00","mobile":0,"x":"11.00"},{"site":"strasbourg","uid":"b384","archi":"m3:at86rf231","state":"Alive","network_address":"m3-13.strasbourg.iot-lab.info","mobility_type":"null","z":"1.20","y":"2.00","mobile":0,"x":"13.00"},{"site":"strasbourg","uid":"b187","archi":"m3:at86rf231","state":"Alive","network_address":"m3-14.strasbourg.iot-lab.info","mobility_type":"null","z":"2.10","y":"2.00","mobile":0,"x":"13.00"},{"site":"strasbourg","uid":"9488","archi":"m3:at86rf231","state":"Alive","network_address":"m3-15.strasbourg.iot-lab.info","mobility_type":"null","z":"1.20","y":"2.00","mobile":0,"x":"15.00"},{"site":"strasbourg","uid":"9385","archi":"m3:at86rf231","state":"Alive","network_address":"m3-16.strasbourg.iot-lab.info","mobility_type":"null","z":"2.10","y":"2.00","mobile":0,"x":"15.00"},{"site":"strasbourg","uid":"b585","archi":"m3:at86rf231","state":"Alive","network_address":"m3-17.strasbourg.iot-lab.info","mobility_type":"null","z":"1.20","y":"2.00","mobile":0,"x":"17.00"},{"site":"strasbourg","uid":"a587","archi":"m3:at86rf231","state":"Alive","network_address":"m3-18.strasbourg.iot-lab.info","mobility_type":"null","z":"2.10","y":"2.00","mobile":0,"x":"17.00"},{"site":"strasbourg","uid":"9083","archi":"m3:at86rf231","state":"Alive","network_address":"m3-19.strasbourg.iot-lab.info","mobility_type":"null","z":"1.20","y":"4.00","mobile":0,"x":"1.00"},{"site":"strasbourg","uid":"b786","archi":"m3:at86rf231","state":"Alive","network_address":"m3-20.strasbourg.iot-lab.info","mobility_type":"null","z":"2.10","y":"4.00","mobile":0,"x":"1.00"},{"site":"strasbourg","uid":"a385","archi":"m3:at86rf231","state":"Alive","network_address":"m3-21.strasbourg.iot-lab.info","mobility_type":"null","z":"1.20","y":"4.00","mobile":0,"x":"5.00"},{"site":"strasbourg","uid":"a488","archi":"m3:at86rf231","state":"Alive","network_address":"m3-22.strasbourg.iot-lab.info","mobility_type":"null","z":"2.10","y":"4.00","mobile":0,"x":"5.00"},{"site":"strasbourg","uid":"a984","archi":"m3:at86rf231","state":"Alive","network_address":"m3-23.strasbourg.iot-lab.info","mobility_type":"null","z":"1.20","y":"4.00","mobile":0,"x":"9.00"},{"site":"strasbourg","uid":"9084","archi":"m3:at86rf231","state":"Alive","network_address":"m3-24.strasbourg.iot-lab.info","mobility_type":"null","z":"2.10","y":"4.00","mobile":0,"x":"9.00"},{"site":"strasbourg","uid":"a187","archi":"m3:at86rf231","state":"Alive","network_address":"m3-25.strasbourg.iot-lab.info","mobility_type":"null","z":"1.20","y":"4.00","mobile":0,"x":"13.00"},{"site":"strasbourg","uid":"b685","archi":"m3:at86rf231","state":"Alive","network_address":"m3-26.strasbourg.iot-lab.info","mobility_type":"null","z":"2.10","y":"4.00","mobile":0,"x":"13.00"},{"site":"strasbourg","uid":"a185","archi":"m3:at86rf231","state":"Alive","network_address":"m3-27.strasbourg.iot-lab.info","mobility_type":"null","z":"1.20","y":"4.00","mobile":0,"x":"17.00"},{"site":"strasbourg","uid":"a586","archi":"m3:at86rf231","state":"Alive","network_address":"m3-28.strasbourg.iot-lab.info","mobility_type":"null","z":"2.10","y":"4.00","mobile":0,"x":"17.00"},{"site":"strasbourg","uid":"a284","archi":"m3:at86rf231","state":"Alive","network_address":"m3-29.strasbourg.iot-lab.info","mobility_type":"null","z":"1.20","y":"6.00","mobile":0,"x":"1.00"},{"site":"strasbourg","uid":"b086","archi":"m3:at86rf231","state":"Alive","network_address":"m3-30.strasbourg.iot-lab.info","mobility_type":"null","z":"2.10","y":"6.00","mobile":0,"x":"1.00"},{"site":"strasbourg","uid":"a885","archi":"m3:at86rf231","state":"Alive","network_address":"m3-31.strasbourg.iot-lab.info","mobility_type":"null","z":"1.20","y":"6.00","mobile":0,"x":"3.00"},{"site":"strasbourg","uid":"b287","archi":"m3:at86rf231","state":"Alive","network_address":"m3-32.strasbourg.iot-lab.info","mobility_type":"null","z":"2.10","y":"6.00","mobile":0,"x":"3.00"},{"site":"strasbourg","uid":"b286","archi":"m3:at86rf231","state":"Alive","network_address":"m3-33.strasbourg.iot-lab.info","mobility_type":"null","z":"1.20","y":"6.00","mobile":0,"x":"5.00"},{"site":"strasbourg","uid":"a786","archi":"m3:at86rf231","state":"Alive","network_address":"m3-34.strasbourg.iot-lab.info","mobility_type":"null","z":"2.10","y":"6.00","mobile":0,"x":"5.00"},{"site":"strasbourg","uid":"a784","archi":"m3:at86rf231","state":"Alive","network_address":"m3-35.strasbourg.iot-lab.info","mobility_type":"null","z":"1.20","y":"6.00","mobile":0,"x":"7.00"},{"site":"strasbourg","uid":"9184","archi":"m3:at86rf231","state":"Alive","network_address":"m3-36.strasbourg.iot-lab.info","mobility_type":"null","z":"2.10","y":"6.00","mobile":0,"x":"7.00"},{"site":"strasbourg","uid":"a386","archi":"m3:at86rf231","state":"Alive","network_address":"m3-37.strasbourg.iot-lab.info","mobility_type":"null","z":"1.20","y":"6.00","mobile":0,"x":"9.00"},{"site":"strasbourg","uid":"9589","archi":"m3:at86rf231","state":"Alive","network_address":"m3-38.strasbourg.iot-lab.info","mobility_type":"null","z":"2.10","y":"6.00","mobile":0,"x":"9.00"},{"site":"strasbourg","uid":"a184","archi":"m3:at86rf231","state":"Alive","network_address":"m3-39.strasbourg.iot-lab.info","mobility_type":"null","z":"1.20","y":"6.00","mobile":0,"x":"11.00"},{"site":"strasbourg","uid":"9885","archi":"m3:at86rf231","state":"Alive","network_address":"m3-41.strasbourg.iot-lab.info","mobility_type":"null","z":"1.20","y":"5.00","mobile":0,"x":"13.00"},{"site":"strasbourg","uid":"b186","archi":"m3:at86rf231","state":"Alive","network_address":"m3-42.strasbourg.iot-lab.info","mobility_type":"null","z":"2.10","y":"5.00","mobile":0,"x":"13.00"},{"site":"strasbourg","uid":"9285","archi":"m3:at86rf231","state":"Alive","network_address":"m3-43.strasbourg.iot-lab.info","mobility_type":"null","z":"1.20","y":"5.00","mobile":0,"x":"15.00"},{"site":"strasbourg","uid":"9990","archi":"m3:at86rf231","state":"Alive","network_address":"m3-44.strasbourg.iot-lab.info","mobility_type":"null","z":"2.10","y":"5.00","mobile":0,"x":"15.00"},{"site":"strasbourg","uid":"b385","archi":"m3:at86rf231","state":"Alive","network_address":"m3-45.strasbourg.iot-lab.info","mobility_type":"null","z":"1.20","y":"5.00","mobile":0,"x":"17.00"},{"site":"strasbourg","uid":"9985","archi":"m3:at86rf231","state":"Alive","network_address":"m3-46.strasbourg.iot-lab.info","mobility_type":"null","z":"2.10","y":"5.00","mobile":0,"x":"17.00"},{"site":"strasbourg","uid":"a487","archi":"m3:at86rf231","state":"Alive","network_address":"m3-47.strasbourg.iot-lab.info","mobility_type":"null","z":"1.20","y":"8.00","mobile":0,"x":"1.00"},{"site":"strasbourg","uid":"9789","archi":"m3:at86rf231","state":"Alive","network_address":"m3-48.strasbourg.iot-lab.info","mobility_type":"null","z":"2.10","y":"8.00","mobile":0,"x":"1.00"},{"site":"strasbourg","uid":"a186","archi":"m3:at86rf231","state":"Alive","network_address":"m3-49.strasbourg.iot-lab.info","mobility_type":"null","z":"1.20","y":"8.00","mobile":0,"x":"5.00"},{"site":"strasbourg","uid":"b586","archi":"m3:at86rf231","state":"Alive","network_address":"m3-50.strasbourg.iot-lab.info","mobility_type":"null","z":"2.10","y":"8.00","mobile":0,"x":"5.00"},{"site":"strasbourg","uid":"a585","archi":"m3:at86rf231","state":"Alive","network_address":"m3-51.strasbourg.iot-lab.info","mobility_type":"null","z":"1.20","y":"8.00","mobile":0,"x":"9.00"},{"site":"strasbourg","uid":"9689","archi":"m3:at86rf231","state":"Alive","network_address":"m3-52.strasbourg.iot-lab.info","mobility_type":"null","z":"2.10","y":"8.00","mobile":0,"x":"9.00"},{"site":"strasbourg","uid":"9890","archi":"m3:at86rf231","state":"Alive","network_address":"m3-53.strasbourg.iot-lab.info","mobility_type":"null","z":"1.20","y":"10.00","mobile":0,"x":"1.00"},{"site":"strasbourg","uid":"9788","archi":"m3:at86rf231","state":"Alive","network_address":"m3-54.strasbourg.iot-lab.info","mobility_type":"null","z":"2.10","y":"10.00","mobile":0,"x":"1.00"},{"site":"strasbourg","uid":"b486","archi":"m3:at86rf231","state":"Alive","network_address":"m3-55.strasbourg.iot-lab.info","mobility_type":"null","z":"1.20","y":"10.00","mobile":0,"x":"3.00"},{"site":"strasbourg","uid":"a288","archi":"m3:at86rf231","state":"Alive","network_address":"m3-56.strasbourg.iot-lab.info","mobility_type":"null","z":"2.10","y":"10.00","mobile":0,"x":"3.00"},{"site":"strasbourg","uid":"9986","archi":"m3:at86rf231","state":"Alive","network_address":"m3-57.strasbourg.iot-lab.info","mobility_type":"null","z":"1.20","y":"10.00","mobile":0,"x":"5.00"},{"site":"strasbourg","uid":"a788","archi":"m3:at86rf231","state":"Alive","network_address":"m3-58.strasbourg.iot-lab.info","mobility_type":"null","z":"2.10","y":"10.00","mobile":0,"x":"5.00"},{"site":"strasbourg","uid":"9586","archi":"m3:at86rf231","state":"Alive","network_address":"m3-59.strasbourg.iot-lab.info","mobility_type":"null","z":"1.20","y":"10.00","mobile":0,"x":"7.00"},{"site":"strasbourg","uid":"a686","archi":"m3:at86rf231","state":"Alive","network_address":"m3-60.strasbourg.iot-lab.info","mobility_type":"null","z":"2.10","y":"10.00","mobile":0,"x":"7.00"},{"site":"strasbourg","uid":"a988","archi":"m3:at86rf231","state":"Alive","network_address":"m3-61.strasbourg.iot-lab.info","mobility_type":"null","z":"1.20","y":"10.00","mobile":0,"x":"9.00"},{"site":"strasbourg","uid":"b386","archi":"m3:at86rf231","state":"Alive","network_address":"m3-62.strasbourg.iot-lab.info","mobility_type":"null","z":"2.10","y":"10.00","mobile":0,"x":"9.00"},{"site":"strasbourg","uid":"9887","archi":"m3:at86rf231","state":"Alive","network_address":"m3-63.strasbourg.iot-lab.info","mobility_type":"null","z":"1.20","y":"10.00","mobile":0,"x":"11.00"},{"site":"strasbourg","uid":"9687","archi":"m3:at86rf231","state":"Alive","network_address":"m3-64.strasbourg.iot-lab.info","mobility_type":"null","z":"2.10","y":"10.00","mobile":0,"x":"11.00"},{"site":"strasbourg","uid":"b587","archi":"m3:at86rf231","state":"Alive","network_address":"m3-40.strasbourg.iot-lab.info","mobility_type":"null","z":"2.10","y":"6.00","mobile":0,"x":"11.00"},{"site":"grenoble","uid":"05DF","archi":"m3:at86rf231","state":"Alive","network_address":"m3-381.grenoble.iot-lab.info","mobility_type":"turtlebot2","z":"null","y":"null","mobile":1,"x":"null"},{"site":"strasbourg","uid":"9286","archi":"m3:at86rf231","state":"Alive","network_address":"m3-96.strasbourg.iot-lab.info","mobility_type":"turtlebot2","z":"null","y":"null","mobile":1,"x":"null"}]} \ No newline at end of file diff --git a/metas/sites.csv b/metas/sites.csv deleted file mode 100644 index 5e5c59aeb5..0000000000 --- a/metas/sites.csv +++ /dev/null @@ -1,2 +0,0 @@ -site -grenoble \ No newline at end of file diff --git a/metas/states.json b/metas/states.json deleted file mode 100644 index f5786389de..0000000000 --- a/metas/states.json +++ /dev/null @@ -1,2123 +0,0 @@ -{ - "lyon": [ - "a8-1.lyon.iot-lab.info", - "a8-2.lyon.iot-lab.info", - "a8-3.lyon.iot-lab.info", - "a8-4.lyon.iot-lab.info", - "a8-5.lyon.iot-lab.info", - "a8-6.lyon.iot-lab.info", - "a8-7.lyon.iot-lab.info", - "a8-8.lyon.iot-lab.info", - "a8-9.lyon.iot-lab.info", - "a8-10.lyon.iot-lab.info", - "a8-11.lyon.iot-lab.info", - "m3-1.lyon.iot-lab.info", - "m3-2.lyon.iot-lab.info", - "m3-3.lyon.iot-lab.info", - "m3-4.lyon.iot-lab.info", - "m3-5.lyon.iot-lab.info", - "m3-6.lyon.iot-lab.info", - "m3-7.lyon.iot-lab.info", - "m3-8.lyon.iot-lab.info", - "m3-9.lyon.iot-lab.info", - "m3-10.lyon.iot-lab.info", - "m3-11.lyon.iot-lab.info", - "m3-12.lyon.iot-lab.info", - "m3-13.lyon.iot-lab.info", - "m3-14.lyon.iot-lab.info", - "m3-15.lyon.iot-lab.info", - "m3-16.lyon.iot-lab.info", - "m3-17.lyon.iot-lab.info", - "m3-18.lyon.iot-lab.info" - ], - "strasbourg": [ - "wsn430-1.strasbourg.iot-lab.info", - "wsn430-2.strasbourg.iot-lab.info", - "wsn430-3.strasbourg.iot-lab.info", - "wsn430-4.strasbourg.iot-lab.info", - "wsn430-5.strasbourg.iot-lab.info", - "wsn430-6.strasbourg.iot-lab.info", - "wsn430-7.strasbourg.iot-lab.info", - "wsn430-8.strasbourg.iot-lab.info", - "wsn430-9.strasbourg.iot-lab.info", - "wsn430-10.strasbourg.iot-lab.info", - "wsn430-11.strasbourg.iot-lab.info", - "wsn430-12.strasbourg.iot-lab.info", - "wsn430-13.strasbourg.iot-lab.info", - "wsn430-14.strasbourg.iot-lab.info", - "wsn430-15.strasbourg.iot-lab.info", - "wsn430-16.strasbourg.iot-lab.info", - "wsn430-17.strasbourg.iot-lab.info", - "wsn430-18.strasbourg.iot-lab.info", - "wsn430-19.strasbourg.iot-lab.info", - "wsn430-20.strasbourg.iot-lab.info", - "wsn430-21.strasbourg.iot-lab.info", - "wsn430-22.strasbourg.iot-lab.info", - "wsn430-23.strasbourg.iot-lab.info", - "wsn430-25.strasbourg.iot-lab.info", - "wsn430-26.strasbourg.iot-lab.info", - "wsn430-27.strasbourg.iot-lab.info", - "wsn430-28.strasbourg.iot-lab.info", - "wsn430-29.strasbourg.iot-lab.info", - "wsn430-30.strasbourg.iot-lab.info", - "wsn430-31.strasbourg.iot-lab.info", - "wsn430-32.strasbourg.iot-lab.info", - "wsn430-33.strasbourg.iot-lab.info", - "wsn430-34.strasbourg.iot-lab.info", - "wsn430-35.strasbourg.iot-lab.info", - "wsn430-36.strasbourg.iot-lab.info", - "wsn430-37.strasbourg.iot-lab.info", - "wsn430-38.strasbourg.iot-lab.info", - "wsn430-39.strasbourg.iot-lab.info", - "wsn430-40.strasbourg.iot-lab.info", - "wsn430-41.strasbourg.iot-lab.info", - "wsn430-42.strasbourg.iot-lab.info", - "wsn430-43.strasbourg.iot-lab.info", - "wsn430-44.strasbourg.iot-lab.info", - "wsn430-45.strasbourg.iot-lab.info", - "wsn430-46.strasbourg.iot-lab.info", - "wsn430-47.strasbourg.iot-lab.info", - "wsn430-48.strasbourg.iot-lab.info", - "wsn430-49.strasbourg.iot-lab.info", - "wsn430-50.strasbourg.iot-lab.info", - "wsn430-51.strasbourg.iot-lab.info", - "wsn430-52.strasbourg.iot-lab.info", - "wsn430-53.strasbourg.iot-lab.info", - "wsn430-54.strasbourg.iot-lab.info", - "wsn430-55.strasbourg.iot-lab.info", - "wsn430-56.strasbourg.iot-lab.info", - "wsn430-57.strasbourg.iot-lab.info", - "wsn430-58.strasbourg.iot-lab.info", - "wsn430-60.strasbourg.iot-lab.info", - "wsn430-61.strasbourg.iot-lab.info", - "wsn430-62.strasbourg.iot-lab.info", - "wsn430-63.strasbourg.iot-lab.info", - "wsn430-64.strasbourg.iot-lab.info", - "wsn430-65.strasbourg.iot-lab.info", - "wsn430-66.strasbourg.iot-lab.info", - "wsn430-67.strasbourg.iot-lab.info", - "wsn430-68.strasbourg.iot-lab.info", - "wsn430-69.strasbourg.iot-lab.info", - "wsn430-70.strasbourg.iot-lab.info", - "wsn430-71.strasbourg.iot-lab.info", - "wsn430-72.strasbourg.iot-lab.info", - "wsn430-73.strasbourg.iot-lab.info", - "wsn430-74.strasbourg.iot-lab.info", - "wsn430-75.strasbourg.iot-lab.info", - "wsn430-76.strasbourg.iot-lab.info", - "wsn430-77.strasbourg.iot-lab.info", - "wsn430-78.strasbourg.iot-lab.info", - "wsn430-79.strasbourg.iot-lab.info", - "wsn430-80.strasbourg.iot-lab.info", - "wsn430-81.strasbourg.iot-lab.info", - "wsn430-82.strasbourg.iot-lab.info", - "wsn430-83.strasbourg.iot-lab.info", - "wsn430-84.strasbourg.iot-lab.info", - "wsn430-85.strasbourg.iot-lab.info", - "wsn430-86.strasbourg.iot-lab.info", - "wsn430-87.strasbourg.iot-lab.info", - "wsn430-88.strasbourg.iot-lab.info", - "wsn430-89.strasbourg.iot-lab.info", - "wsn430-90.strasbourg.iot-lab.info", - "wsn430-91.strasbourg.iot-lab.info", - "wsn430-92.strasbourg.iot-lab.info", - "wsn430-93.strasbourg.iot-lab.info", - "wsn430-94.strasbourg.iot-lab.info", - "wsn430-95.strasbourg.iot-lab.info", - "wsn430-96.strasbourg.iot-lab.info", - "wsn430-97.strasbourg.iot-lab.info", - "wsn430-98.strasbourg.iot-lab.info", - "wsn430-99.strasbourg.iot-lab.info", - "wsn430-100.strasbourg.iot-lab.info", - "wsn430-101.strasbourg.iot-lab.info", - "wsn430-102.strasbourg.iot-lab.info", - "wsn430-103.strasbourg.iot-lab.info", - "wsn430-104.strasbourg.iot-lab.info", - "wsn430-105.strasbourg.iot-lab.info", - "wsn430-106.strasbourg.iot-lab.info", - "wsn430-107.strasbourg.iot-lab.info", - "wsn430-108.strasbourg.iot-lab.info", - "wsn430-109.strasbourg.iot-lab.info", - "wsn430-110.strasbourg.iot-lab.info", - "wsn430-111.strasbourg.iot-lab.info", - "wsn430-112.strasbourg.iot-lab.info", - "wsn430-113.strasbourg.iot-lab.info", - "wsn430-114.strasbourg.iot-lab.info", - "wsn430-115.strasbourg.iot-lab.info", - "wsn430-116.strasbourg.iot-lab.info", - "wsn430-117.strasbourg.iot-lab.info", - "wsn430-118.strasbourg.iot-lab.info", - "wsn430-119.strasbourg.iot-lab.info", - "wsn430-120.strasbourg.iot-lab.info", - "wsn430-121.strasbourg.iot-lab.info", - "wsn430-122.strasbourg.iot-lab.info", - "wsn430-123.strasbourg.iot-lab.info", - "wsn430-124.strasbourg.iot-lab.info", - "wsn430-125.strasbourg.iot-lab.info", - "wsn430-126.strasbourg.iot-lab.info", - "wsn430-127.strasbourg.iot-lab.info", - "wsn430-128.strasbourg.iot-lab.info", - "wsn430-129.strasbourg.iot-lab.info", - "wsn430-130.strasbourg.iot-lab.info", - "wsn430-131.strasbourg.iot-lab.info", - "wsn430-132.strasbourg.iot-lab.info", - "wsn430-133.strasbourg.iot-lab.info", - "wsn430-134.strasbourg.iot-lab.info", - "wsn430-135.strasbourg.iot-lab.info", - "wsn430-136.strasbourg.iot-lab.info", - "wsn430-138.strasbourg.iot-lab.info", - "wsn430-139.strasbourg.iot-lab.info", - "wsn430-140.strasbourg.iot-lab.info", - "wsn430-141.strasbourg.iot-lab.info", - "wsn430-142.strasbourg.iot-lab.info", - "wsn430-143.strasbourg.iot-lab.info", - "wsn430-145.strasbourg.iot-lab.info", - "wsn430-146.strasbourg.iot-lab.info", - "wsn430-147.strasbourg.iot-lab.info", - "wsn430-148.strasbourg.iot-lab.info", - "wsn430-149.strasbourg.iot-lab.info", - "wsn430-150.strasbourg.iot-lab.info", - "wsn430-151.strasbourg.iot-lab.info", - "wsn430-152.strasbourg.iot-lab.info", - "wsn430-153.strasbourg.iot-lab.info", - "wsn430-154.strasbourg.iot-lab.info", - "wsn430-155.strasbourg.iot-lab.info", - "wsn430-156.strasbourg.iot-lab.info", - "wsn430-157.strasbourg.iot-lab.info", - "wsn430-158.strasbourg.iot-lab.info", - "wsn430-159.strasbourg.iot-lab.info", - "wsn430-160.strasbourg.iot-lab.info", - "wsn430-161.strasbourg.iot-lab.info", - "wsn430-162.strasbourg.iot-lab.info", - "wsn430-163.strasbourg.iot-lab.info", - "wsn430-164.strasbourg.iot-lab.info", - "wsn430-165.strasbourg.iot-lab.info", - "wsn430-166.strasbourg.iot-lab.info", - "wsn430-167.strasbourg.iot-lab.info", - "wsn430-168.strasbourg.iot-lab.info", - "wsn430-169.strasbourg.iot-lab.info", - "wsn430-170.strasbourg.iot-lab.info", - "wsn430-171.strasbourg.iot-lab.info", - "wsn430-172.strasbourg.iot-lab.info", - "wsn430-173.strasbourg.iot-lab.info", - "wsn430-174.strasbourg.iot-lab.info", - "wsn430-175.strasbourg.iot-lab.info", - "wsn430-176.strasbourg.iot-lab.info", - "wsn430-177.strasbourg.iot-lab.info", - "wsn430-178.strasbourg.iot-lab.info", - "wsn430-179.strasbourg.iot-lab.info", - "wsn430-180.strasbourg.iot-lab.info", - "wsn430-181.strasbourg.iot-lab.info", - "wsn430-182.strasbourg.iot-lab.info", - "wsn430-183.strasbourg.iot-lab.info", - "wsn430-184.strasbourg.iot-lab.info", - "wsn430-185.strasbourg.iot-lab.info", - "wsn430-186.strasbourg.iot-lab.info", - "wsn430-187.strasbourg.iot-lab.info", - "wsn430-188.strasbourg.iot-lab.info", - "wsn430-189.strasbourg.iot-lab.info", - "wsn430-190.strasbourg.iot-lab.info", - "wsn430-191.strasbourg.iot-lab.info", - "wsn430-192.strasbourg.iot-lab.info", - "wsn430-193.strasbourg.iot-lab.info", - "wsn430-194.strasbourg.iot-lab.info", - "wsn430-195.strasbourg.iot-lab.info", - "wsn430-196.strasbourg.iot-lab.info", - "wsn430-197.strasbourg.iot-lab.info", - "wsn430-198.strasbourg.iot-lab.info", - "wsn430-199.strasbourg.iot-lab.info", - "wsn430-200.strasbourg.iot-lab.info", - "wsn430-201.strasbourg.iot-lab.info", - "wsn430-202.strasbourg.iot-lab.info", - "wsn430-203.strasbourg.iot-lab.info", - "wsn430-204.strasbourg.iot-lab.info", - "wsn430-205.strasbourg.iot-lab.info", - "wsn430-206.strasbourg.iot-lab.info", - "wsn430-207.strasbourg.iot-lab.info", - "wsn430-208.strasbourg.iot-lab.info", - "wsn430-209.strasbourg.iot-lab.info", - "wsn430-210.strasbourg.iot-lab.info", - "wsn430-211.strasbourg.iot-lab.info", - "wsn430-212.strasbourg.iot-lab.info", - "wsn430-213.strasbourg.iot-lab.info", - "wsn430-214.strasbourg.iot-lab.info", - "wsn430-215.strasbourg.iot-lab.info", - "wsn430-216.strasbourg.iot-lab.info", - "wsn430-217.strasbourg.iot-lab.info", - "wsn430-218.strasbourg.iot-lab.info", - "wsn430-219.strasbourg.iot-lab.info", - "wsn430-220.strasbourg.iot-lab.info", - "wsn430-221.strasbourg.iot-lab.info", - "wsn430-222.strasbourg.iot-lab.info", - "wsn430-223.strasbourg.iot-lab.info", - "wsn430-224.strasbourg.iot-lab.info", - "wsn430-225.strasbourg.iot-lab.info", - "wsn430-226.strasbourg.iot-lab.info", - "wsn430-227.strasbourg.iot-lab.info", - "wsn430-228.strasbourg.iot-lab.info", - "wsn430-229.strasbourg.iot-lab.info", - "wsn430-230.strasbourg.iot-lab.info", - "wsn430-231.strasbourg.iot-lab.info", - "wsn430-232.strasbourg.iot-lab.info", - "wsn430-233.strasbourg.iot-lab.info", - "wsn430-234.strasbourg.iot-lab.info", - "wsn430-235.strasbourg.iot-lab.info", - "wsn430-236.strasbourg.iot-lab.info", - "wsn430-237.strasbourg.iot-lab.info", - "wsn430-238.strasbourg.iot-lab.info", - "wsn430-239.strasbourg.iot-lab.info", - "wsn430-240.strasbourg.iot-lab.info", - "a8-1.strasbourg.iot-lab.info", - "a8-2.strasbourg.iot-lab.info", - "a8-3.strasbourg.iot-lab.info", - "a8-4.strasbourg.iot-lab.info", - "a8-5.strasbourg.iot-lab.info", - "a8-6.strasbourg.iot-lab.info", - "a8-7.strasbourg.iot-lab.info", - "a8-8.strasbourg.iot-lab.info", - "a8-10.strasbourg.iot-lab.info", - "a8-11.strasbourg.iot-lab.info", - "a8-12.strasbourg.iot-lab.info", - "a8-13.strasbourg.iot-lab.info", - "a8-14.strasbourg.iot-lab.info", - "m3-1.strasbourg.iot-lab.info", - "m3-2.strasbourg.iot-lab.info", - "m3-3.strasbourg.iot-lab.info", - "m3-5.strasbourg.iot-lab.info", - "m3-6.strasbourg.iot-lab.info", - "m3-7.strasbourg.iot-lab.info", - "m3-8.strasbourg.iot-lab.info", - "m3-9.strasbourg.iot-lab.info", - "m3-10.strasbourg.iot-lab.info", - "m3-11.strasbourg.iot-lab.info", - "m3-12.strasbourg.iot-lab.info", - "m3-13.strasbourg.iot-lab.info", - "m3-14.strasbourg.iot-lab.info", - "m3-15.strasbourg.iot-lab.info", - "m3-16.strasbourg.iot-lab.info", - "m3-17.strasbourg.iot-lab.info", - "m3-18.strasbourg.iot-lab.info", - "m3-19.strasbourg.iot-lab.info", - "m3-20.strasbourg.iot-lab.info", - "m3-21.strasbourg.iot-lab.info", - "m3-22.strasbourg.iot-lab.info", - "m3-23.strasbourg.iot-lab.info", - "m3-24.strasbourg.iot-lab.info", - "m3-25.strasbourg.iot-lab.info", - "m3-27.strasbourg.iot-lab.info", - "m3-28.strasbourg.iot-lab.info", - "m3-29.strasbourg.iot-lab.info", - "m3-30.strasbourg.iot-lab.info", - "m3-31.strasbourg.iot-lab.info", - "m3-32.strasbourg.iot-lab.info", - "m3-33.strasbourg.iot-lab.info", - "m3-34.strasbourg.iot-lab.info", - "m3-35.strasbourg.iot-lab.info", - "m3-36.strasbourg.iot-lab.info", - "m3-37.strasbourg.iot-lab.info", - "m3-38.strasbourg.iot-lab.info", - "m3-39.strasbourg.iot-lab.info", - "m3-41.strasbourg.iot-lab.info", - "m3-42.strasbourg.iot-lab.info", - "m3-43.strasbourg.iot-lab.info", - "m3-44.strasbourg.iot-lab.info", - "m3-45.strasbourg.iot-lab.info", - "m3-46.strasbourg.iot-lab.info", - "m3-47.strasbourg.iot-lab.info", - "m3-48.strasbourg.iot-lab.info", - "m3-49.strasbourg.iot-lab.info", - "m3-50.strasbourg.iot-lab.info", - "m3-51.strasbourg.iot-lab.info", - "m3-52.strasbourg.iot-lab.info", - "m3-53.strasbourg.iot-lab.info", - "m3-54.strasbourg.iot-lab.info", - "m3-55.strasbourg.iot-lab.info", - "m3-56.strasbourg.iot-lab.info", - "m3-57.strasbourg.iot-lab.info", - "m3-58.strasbourg.iot-lab.info", - "m3-59.strasbourg.iot-lab.info", - "m3-60.strasbourg.iot-lab.info", - "m3-61.strasbourg.iot-lab.info", - "m3-62.strasbourg.iot-lab.info", - "m3-63.strasbourg.iot-lab.info", - "m3-64.strasbourg.iot-lab.info", - "m3-40.strasbourg.iot-lab.info", - "m3-96.strasbourg.iot-lab.info", - "m3-97.strasbourg.iot-lab.info", - "m3-100.strasbourg.iot-lab.info" - ], - "lille": [ - "m3-6.lille.iot-lab.info", - "m3-9.lille.iot-lab.info", - "m3-10.lille.iot-lab.info", - "m3-11.lille.iot-lab.info", - "m3-14.lille.iot-lab.info", - "m3-15.lille.iot-lab.info", - "m3-18.lille.iot-lab.info", - "m3-19.lille.iot-lab.info", - "m3-23.lille.iot-lab.info", - "m3-24.lille.iot-lab.info", - "m3-26.lille.iot-lab.info", - "m3-27.lille.iot-lab.info", - "m3-28.lille.iot-lab.info", - "m3-32.lille.iot-lab.info", - "m3-33.lille.iot-lab.info", - "m3-38.lille.iot-lab.info", - "m3-39.lille.iot-lab.info", - "m3-40.lille.iot-lab.info", - "m3-42.lille.iot-lab.info", - "m3-47.lille.iot-lab.info", - "m3-49.lille.iot-lab.info", - "m3-51.lille.iot-lab.info", - "m3-52.lille.iot-lab.info", - "m3-54.lille.iot-lab.info", - "m3-56.lille.iot-lab.info", - "m3-57.lille.iot-lab.info", - "m3-63.lille.iot-lab.info", - "m3-64.lille.iot-lab.info", - "m3-65.lille.iot-lab.info", - "m3-66.lille.iot-lab.info", - "m3-67.lille.iot-lab.info", - "m3-70.lille.iot-lab.info", - "m3-71.lille.iot-lab.info", - "m3-72.lille.iot-lab.info", - "m3-73.lille.iot-lab.info", - "m3-74.lille.iot-lab.info", - "m3-76.lille.iot-lab.info", - "m3-82.lille.iot-lab.info", - "m3-83.lille.iot-lab.info", - "m3-85.lille.iot-lab.info", - "m3-87.lille.iot-lab.info", - "m3-88.lille.iot-lab.info", - "m3-89.lille.iot-lab.info", - "m3-90.lille.iot-lab.info", - "m3-91.lille.iot-lab.info", - "m3-92.lille.iot-lab.info", - "m3-94.lille.iot-lab.info", - "m3-95.lille.iot-lab.info", - "m3-97.lille.iot-lab.info", - "m3-100.lille.iot-lab.info", - "m3-102.lille.iot-lab.info", - "m3-104.lille.iot-lab.info", - "m3-106.lille.iot-lab.info", - "m3-108.lille.iot-lab.info", - "m3-110.lille.iot-lab.info", - "m3-111.lille.iot-lab.info", - "m3-113.lille.iot-lab.info", - "m3-114.lille.iot-lab.info", - "m3-115.lille.iot-lab.info", - "m3-116.lille.iot-lab.info", - "m3-118.lille.iot-lab.info", - "m3-121.lille.iot-lab.info", - "m3-122.lille.iot-lab.info", - "m3-125.lille.iot-lab.info", - "m3-127.lille.iot-lab.info", - "m3-130.lille.iot-lab.info", - "m3-131.lille.iot-lab.info", - "m3-132.lille.iot-lab.info", - "m3-133.lille.iot-lab.info", - "m3-134.lille.iot-lab.info", - "m3-135.lille.iot-lab.info", - "m3-136.lille.iot-lab.info", - "m3-138.lille.iot-lab.info", - "m3-140.lille.iot-lab.info", - "m3-142.lille.iot-lab.info", - "m3-143.lille.iot-lab.info", - "m3-144.lille.iot-lab.info", - "m3-145.lille.iot-lab.info", - "m3-148.lille.iot-lab.info", - "m3-156.lille.iot-lab.info", - "m3-157.lille.iot-lab.info", - "m3-159.lille.iot-lab.info", - "m3-161.lille.iot-lab.info", - "m3-163.lille.iot-lab.info", - "m3-169.lille.iot-lab.info", - "m3-170.lille.iot-lab.info", - "m3-173.lille.iot-lab.info", - "m3-174.lille.iot-lab.info", - "m3-177.lille.iot-lab.info", - "m3-179.lille.iot-lab.info", - "m3-181.lille.iot-lab.info", - "m3-182.lille.iot-lab.info", - "m3-184.lille.iot-lab.info", - "m3-187.lille.iot-lab.info", - "m3-188.lille.iot-lab.info", - "m3-190.lille.iot-lab.info", - "m3-193.lille.iot-lab.info", - "m3-194.lille.iot-lab.info", - "m3-195.lille.iot-lab.info", - "m3-196.lille.iot-lab.info", - "m3-197.lille.iot-lab.info", - "m3-200.lille.iot-lab.info", - "m3-202.lille.iot-lab.info", - "m3-203.lille.iot-lab.info", - "m3-204.lille.iot-lab.info", - "m3-209.lille.iot-lab.info", - "m3-211.lille.iot-lab.info", - "m3-212.lille.iot-lab.info", - "m3-213.lille.iot-lab.info", - "m3-214.lille.iot-lab.info", - "m3-215.lille.iot-lab.info", - "m3-217.lille.iot-lab.info", - "m3-218.lille.iot-lab.info", - "m3-219.lille.iot-lab.info", - "m3-220.lille.iot-lab.info", - "m3-221.lille.iot-lab.info", - "m3-223.lille.iot-lab.info", - "m3-226.lille.iot-lab.info", - "m3-228.lille.iot-lab.info", - "m3-229.lille.iot-lab.info", - "m3-230.lille.iot-lab.info", - "m3-232.lille.iot-lab.info", - "m3-233.lille.iot-lab.info", - "m3-238.lille.iot-lab.info", - "m3-239.lille.iot-lab.info", - "m3-240.lille.iot-lab.info", - "m3-241.lille.iot-lab.info", - "m3-243.lille.iot-lab.info", - "m3-244.lille.iot-lab.info", - "m3-245.lille.iot-lab.info", - "m3-246.lille.iot-lab.info", - "m3-248.lille.iot-lab.info", - "m3-250.lille.iot-lab.info", - "m3-253.lille.iot-lab.info", - "m3-254.lille.iot-lab.info", - "m3-255.lille.iot-lab.info", - "m3-256.lille.iot-lab.info", - "m3-2.lille.iot-lab.info", - "m3-4.lille.iot-lab.info", - "m3-5.lille.iot-lab.info", - "m3-7.lille.iot-lab.info", - "m3-12.lille.iot-lab.info", - "m3-13.lille.iot-lab.info", - "m3-16.lille.iot-lab.info", - "m3-17.lille.iot-lab.info", - "m3-20.lille.iot-lab.info", - "m3-21.lille.iot-lab.info", - "m3-22.lille.iot-lab.info", - "m3-30.lille.iot-lab.info", - "m3-31.lille.iot-lab.info", - "m3-35.lille.iot-lab.info", - "m3-36.lille.iot-lab.info", - "m3-37.lille.iot-lab.info", - "m3-43.lille.iot-lab.info", - "m3-45.lille.iot-lab.info", - "m3-46.lille.iot-lab.info", - "m3-48.lille.iot-lab.info", - "m3-50.lille.iot-lab.info", - "m3-53.lille.iot-lab.info", - "m3-58.lille.iot-lab.info", - "m3-59.lille.iot-lab.info", - "m3-60.lille.iot-lab.info", - "m3-61.lille.iot-lab.info", - "m3-62.lille.iot-lab.info", - "m3-69.lille.iot-lab.info", - "m3-75.lille.iot-lab.info", - "m3-77.lille.iot-lab.info", - "m3-78.lille.iot-lab.info", - "m3-81.lille.iot-lab.info", - "m3-84.lille.iot-lab.info", - "m3-86.lille.iot-lab.info", - "m3-93.lille.iot-lab.info", - "m3-96.lille.iot-lab.info", - "m3-98.lille.iot-lab.info", - "m3-99.lille.iot-lab.info", - "m3-103.lille.iot-lab.info", - "m3-105.lille.iot-lab.info", - "m3-107.lille.iot-lab.info", - "m3-109.lille.iot-lab.info", - "m3-112.lille.iot-lab.info", - "m3-117.lille.iot-lab.info", - "m3-120.lille.iot-lab.info", - "m3-123.lille.iot-lab.info", - "m3-124.lille.iot-lab.info", - "m3-126.lille.iot-lab.info", - "m3-137.lille.iot-lab.info", - "m3-139.lille.iot-lab.info", - "m3-141.lille.iot-lab.info", - "m3-146.lille.iot-lab.info", - "m3-147.lille.iot-lab.info", - "m3-151.lille.iot-lab.info", - "m3-152.lille.iot-lab.info", - "m3-153.lille.iot-lab.info", - "m3-154.lille.iot-lab.info", - "m3-155.lille.iot-lab.info", - "m3-158.lille.iot-lab.info", - "m3-162.lille.iot-lab.info", - "m3-164.lille.iot-lab.info", - "m3-165.lille.iot-lab.info", - "m3-166.lille.iot-lab.info", - "m3-167.lille.iot-lab.info", - "m3-168.lille.iot-lab.info", - "m3-171.lille.iot-lab.info", - "m3-172.lille.iot-lab.info", - "m3-175.lille.iot-lab.info", - "m3-176.lille.iot-lab.info", - "m3-180.lille.iot-lab.info", - "m3-183.lille.iot-lab.info", - "m3-185.lille.iot-lab.info", - "m3-191.lille.iot-lab.info", - "m3-192.lille.iot-lab.info", - "m3-198.lille.iot-lab.info", - "m3-199.lille.iot-lab.info", - "m3-201.lille.iot-lab.info", - "m3-205.lille.iot-lab.info", - "m3-207.lille.iot-lab.info", - "m3-208.lille.iot-lab.info", - "m3-222.lille.iot-lab.info", - "m3-224.lille.iot-lab.info", - "m3-227.lille.iot-lab.info", - "m3-231.lille.iot-lab.info", - "m3-234.lille.iot-lab.info", - "m3-242.lille.iot-lab.info", - "m3-247.lille.iot-lab.info", - "m3-249.lille.iot-lab.info", - "m3-252.lille.iot-lab.info" - ], - "paris": [ - "m3-1.paris.iot-lab.info", - "m3-2.paris.iot-lab.info", - "m3-3.paris.iot-lab.info", - "m3-4.paris.iot-lab.info", - "m3-5.paris.iot-lab.info", - "m3-7.paris.iot-lab.info", - "m3-8.paris.iot-lab.info", - "m3-9.paris.iot-lab.info", - "m3-10.paris.iot-lab.info", - "m3-11.paris.iot-lab.info", - "m3-12.paris.iot-lab.info", - "m3-13.paris.iot-lab.info", - "m3-14.paris.iot-lab.info", - "m3-15.paris.iot-lab.info", - "m3-16.paris.iot-lab.info", - "m3-17.paris.iot-lab.info", - "m3-18.paris.iot-lab.info", - "m3-19.paris.iot-lab.info", - "m3-20.paris.iot-lab.info", - "m3-21.paris.iot-lab.info", - "m3-22.paris.iot-lab.info", - "m3-23.paris.iot-lab.info", - "m3-24.paris.iot-lab.info", - "m3-25.paris.iot-lab.info", - "m3-26.paris.iot-lab.info", - "m3-27.paris.iot-lab.info", - "m3-28.paris.iot-lab.info", - "m3-29.paris.iot-lab.info", - "m3-30.paris.iot-lab.info", - "m3-31.paris.iot-lab.info", - "m3-32.paris.iot-lab.info", - "m3-33.paris.iot-lab.info", - "m3-35.paris.iot-lab.info", - "m3-36.paris.iot-lab.info", - "m3-37.paris.iot-lab.info", - "m3-38.paris.iot-lab.info", - "m3-39.paris.iot-lab.info", - "m3-40.paris.iot-lab.info", - "m3-41.paris.iot-lab.info", - "m3-42.paris.iot-lab.info", - "m3-43.paris.iot-lab.info", - "m3-45.paris.iot-lab.info", - "m3-46.paris.iot-lab.info", - "m3-47.paris.iot-lab.info", - "m3-49.paris.iot-lab.info", - "m3-50.paris.iot-lab.info", - "m3-51.paris.iot-lab.info", - "m3-52.paris.iot-lab.info", - "m3-53.paris.iot-lab.info", - "m3-54.paris.iot-lab.info", - "m3-55.paris.iot-lab.info", - "m3-56.paris.iot-lab.info", - "m3-57.paris.iot-lab.info", - "m3-58.paris.iot-lab.info", - "m3-59.paris.iot-lab.info", - "m3-60.paris.iot-lab.info", - "m3-61.paris.iot-lab.info", - "m3-62.paris.iot-lab.info", - "m3-63.paris.iot-lab.info", - "m3-64.paris.iot-lab.info", - "m3-65.paris.iot-lab.info", - "m3-66.paris.iot-lab.info", - "m3-67.paris.iot-lab.info", - "m3-68.paris.iot-lab.info", - "m3-69.paris.iot-lab.info", - "a8-1.paris.iot-lab.info", - "a8-2.paris.iot-lab.info", - "a8-3.paris.iot-lab.info", - "a8-4.paris.iot-lab.info", - "a8-5.paris.iot-lab.info", - "a8-6.paris.iot-lab.info", - "a8-7.paris.iot-lab.info", - "a8-8.paris.iot-lab.info", - "a8-9.paris.iot-lab.info", - "a8-10.paris.iot-lab.info", - "a8-11.paris.iot-lab.info", - "a8-12.paris.iot-lab.info", - "a8-13.paris.iot-lab.info", - "a8-14.paris.iot-lab.info", - "a8-15.paris.iot-lab.info", - "a8-16.paris.iot-lab.info", - "a8-17.paris.iot-lab.info", - "a8-18.paris.iot-lab.info", - "a8-19.paris.iot-lab.info", - "a8-20.paris.iot-lab.info", - "a8-21.paris.iot-lab.info", - "a8-22.paris.iot-lab.info", - "a8-23.paris.iot-lab.info", - "a8-24.paris.iot-lab.info", - "a8-25.paris.iot-lab.info", - "a8-26.paris.iot-lab.info", - "a8-27.paris.iot-lab.info", - "a8-28.paris.iot-lab.info", - "a8-29.paris.iot-lab.info", - "a8-30.paris.iot-lab.info", - "a8-31.paris.iot-lab.info", - "a8-32.paris.iot-lab.info", - "a8-33.paris.iot-lab.info", - "a8-34.paris.iot-lab.info", - "a8-35.paris.iot-lab.info", - "a8-36.paris.iot-lab.info", - "a8-37.paris.iot-lab.info", - "a8-38.paris.iot-lab.info", - "a8-39.paris.iot-lab.info", - "a8-40.paris.iot-lab.info", - "a8-41.paris.iot-lab.info", - "a8-42.paris.iot-lab.info", - "a8-43.paris.iot-lab.info", - "a8-44.paris.iot-lab.info", - "a8-45.paris.iot-lab.info", - "a8-46.paris.iot-lab.info", - "a8-47.paris.iot-lab.info", - "a8-48.paris.iot-lab.info", - "a8-49.paris.iot-lab.info", - "a8-50.paris.iot-lab.info", - "a8-51.paris.iot-lab.info", - "a8-52.paris.iot-lab.info", - "a8-53.paris.iot-lab.info", - "a8-54.paris.iot-lab.info", - "a8-55.paris.iot-lab.info", - "a8-56.paris.iot-lab.info", - "a8-57.paris.iot-lab.info", - "a8-58.paris.iot-lab.info", - "a8-59.paris.iot-lab.info", - "a8-60.paris.iot-lab.info", - "a8-61.paris.iot-lab.info", - "a8-62.paris.iot-lab.info" - ], - "euratech": [ - "wsn430-1.euratech.iot-lab.info", - "wsn430-2.euratech.iot-lab.info", - "wsn430-3.euratech.iot-lab.info", - "wsn430-4.euratech.iot-lab.info", - "wsn430-6.euratech.iot-lab.info", - "wsn430-7.euratech.iot-lab.info", - "wsn430-8.euratech.iot-lab.info", - "wsn430-9.euratech.iot-lab.info", - "wsn430-10.euratech.iot-lab.info", - "wsn430-11.euratech.iot-lab.info", - "wsn430-12.euratech.iot-lab.info", - "wsn430-14.euratech.iot-lab.info", - "wsn430-15.euratech.iot-lab.info", - "wsn430-17.euratech.iot-lab.info", - "wsn430-18.euratech.iot-lab.info", - "wsn430-19.euratech.iot-lab.info", - "wsn430-20.euratech.iot-lab.info", - "wsn430-21.euratech.iot-lab.info", - "wsn430-22.euratech.iot-lab.info", - "wsn430-23.euratech.iot-lab.info", - "wsn430-24.euratech.iot-lab.info", - "wsn430-25.euratech.iot-lab.info", - "wsn430-26.euratech.iot-lab.info", - "wsn430-27.euratech.iot-lab.info", - "wsn430-28.euratech.iot-lab.info", - "wsn430-29.euratech.iot-lab.info", - "wsn430-30.euratech.iot-lab.info", - "wsn430-31.euratech.iot-lab.info", - "wsn430-32.euratech.iot-lab.info", - "wsn430-33.euratech.iot-lab.info", - "wsn430-34.euratech.iot-lab.info", - "wsn430-35.euratech.iot-lab.info", - "wsn430-36.euratech.iot-lab.info", - "wsn430-37.euratech.iot-lab.info", - "wsn430-38.euratech.iot-lab.info", - "wsn430-39.euratech.iot-lab.info", - "wsn430-40.euratech.iot-lab.info", - "wsn430-41.euratech.iot-lab.info", - "wsn430-42.euratech.iot-lab.info", - "wsn430-43.euratech.iot-lab.info", - "wsn430-44.euratech.iot-lab.info", - "wsn430-46.euratech.iot-lab.info", - "wsn430-47.euratech.iot-lab.info", - "wsn430-48.euratech.iot-lab.info", - "wsn430-49.euratech.iot-lab.info", - "wsn430-50.euratech.iot-lab.info", - "wsn430-51.euratech.iot-lab.info", - "wsn430-52.euratech.iot-lab.info", - "wsn430-53.euratech.iot-lab.info", - "wsn430-54.euratech.iot-lab.info", - "wsn430-55.euratech.iot-lab.info", - "wsn430-56.euratech.iot-lab.info", - "wsn430-57.euratech.iot-lab.info", - "wsn430-58.euratech.iot-lab.info", - "wsn430-59.euratech.iot-lab.info", - "wsn430-60.euratech.iot-lab.info", - "wsn430-61.euratech.iot-lab.info", - "wsn430-62.euratech.iot-lab.info", - "wsn430-63.euratech.iot-lab.info", - "wsn430-64.euratech.iot-lab.info", - "wsn430-65.euratech.iot-lab.info", - "wsn430-66.euratech.iot-lab.info", - "wsn430-67.euratech.iot-lab.info", - "wsn430-68.euratech.iot-lab.info", - "wsn430-69.euratech.iot-lab.info", - "wsn430-70.euratech.iot-lab.info", - "wsn430-71.euratech.iot-lab.info", - "wsn430-72.euratech.iot-lab.info", - "wsn430-73.euratech.iot-lab.info", - "wsn430-74.euratech.iot-lab.info", - "wsn430-75.euratech.iot-lab.info", - "wsn430-76.euratech.iot-lab.info", - "wsn430-77.euratech.iot-lab.info", - "wsn430-78.euratech.iot-lab.info", - "wsn430-79.euratech.iot-lab.info", - "wsn430-80.euratech.iot-lab.info", - "wsn430-81.euratech.iot-lab.info", - "wsn430-82.euratech.iot-lab.info", - "wsn430-83.euratech.iot-lab.info", - "wsn430-84.euratech.iot-lab.info", - "wsn430-85.euratech.iot-lab.info", - "wsn430-86.euratech.iot-lab.info", - "wsn430-87.euratech.iot-lab.info", - "wsn430-88.euratech.iot-lab.info", - "wsn430-89.euratech.iot-lab.info", - "wsn430-90.euratech.iot-lab.info", - "wsn430-91.euratech.iot-lab.info", - "wsn430-92.euratech.iot-lab.info", - "wsn430-93.euratech.iot-lab.info", - "wsn430-94.euratech.iot-lab.info", - "wsn430-95.euratech.iot-lab.info", - "wsn430-96.euratech.iot-lab.info", - "wsn430-97.euratech.iot-lab.info", - "wsn430-98.euratech.iot-lab.info", - "wsn430-99.euratech.iot-lab.info", - "wsn430-100.euratech.iot-lab.info", - "wsn430-101.euratech.iot-lab.info", - "wsn430-102.euratech.iot-lab.info", - "wsn430-103.euratech.iot-lab.info", - "wsn430-104.euratech.iot-lab.info", - "wsn430-105.euratech.iot-lab.info", - "wsn430-106.euratech.iot-lab.info", - "wsn430-107.euratech.iot-lab.info", - "wsn430-108.euratech.iot-lab.info", - "wsn430-109.euratech.iot-lab.info", - "wsn430-110.euratech.iot-lab.info", - "wsn430-111.euratech.iot-lab.info", - "wsn430-112.euratech.iot-lab.info", - "wsn430-113.euratech.iot-lab.info", - "wsn430-114.euratech.iot-lab.info", - "wsn430-115.euratech.iot-lab.info", - "wsn430-116.euratech.iot-lab.info", - "wsn430-117.euratech.iot-lab.info", - "wsn430-118.euratech.iot-lab.info", - "wsn430-120.euratech.iot-lab.info", - "wsn430-121.euratech.iot-lab.info", - "wsn430-122.euratech.iot-lab.info", - "wsn430-123.euratech.iot-lab.info", - "wsn430-124.euratech.iot-lab.info", - "wsn430-125.euratech.iot-lab.info", - "wsn430-127.euratech.iot-lab.info", - "wsn430-128.euratech.iot-lab.info", - "wsn430-129.euratech.iot-lab.info", - "wsn430-130.euratech.iot-lab.info", - "wsn430-131.euratech.iot-lab.info", - "wsn430-132.euratech.iot-lab.info", - "wsn430-133.euratech.iot-lab.info", - "wsn430-134.euratech.iot-lab.info", - "wsn430-135.euratech.iot-lab.info", - "wsn430-136.euratech.iot-lab.info", - "wsn430-137.euratech.iot-lab.info", - "wsn430-138.euratech.iot-lab.info", - "wsn430-139.euratech.iot-lab.info", - "wsn430-140.euratech.iot-lab.info", - "wsn430-141.euratech.iot-lab.info", - "wsn430-142.euratech.iot-lab.info", - "wsn430-143.euratech.iot-lab.info", - "wsn430-144.euratech.iot-lab.info", - "wsn430-145.euratech.iot-lab.info", - "wsn430-146.euratech.iot-lab.info", - "wsn430-147.euratech.iot-lab.info", - "wsn430-148.euratech.iot-lab.info", - "wsn430-149.euratech.iot-lab.info", - "wsn430-150.euratech.iot-lab.info", - "wsn430-151.euratech.iot-lab.info", - "wsn430-152.euratech.iot-lab.info", - "wsn430-153.euratech.iot-lab.info", - "wsn430-154.euratech.iot-lab.info", - "wsn430-155.euratech.iot-lab.info", - "wsn430-156.euratech.iot-lab.info", - "wsn430-157.euratech.iot-lab.info", - "wsn430-158.euratech.iot-lab.info", - "wsn430-159.euratech.iot-lab.info", - "wsn430-160.euratech.iot-lab.info", - "wsn430-161.euratech.iot-lab.info", - "wsn430-162.euratech.iot-lab.info", - "wsn430-163.euratech.iot-lab.info", - "wsn430-164.euratech.iot-lab.info", - "wsn430-165.euratech.iot-lab.info", - "wsn430-166.euratech.iot-lab.info", - "wsn430-167.euratech.iot-lab.info", - "wsn430-169.euratech.iot-lab.info", - "wsn430-170.euratech.iot-lab.info", - "wsn430-171.euratech.iot-lab.info", - "wsn430-172.euratech.iot-lab.info", - "wsn430-173.euratech.iot-lab.info", - "wsn430-174.euratech.iot-lab.info", - "wsn430-175.euratech.iot-lab.info", - "wsn430-176.euratech.iot-lab.info", - "wsn430-177.euratech.iot-lab.info", - "wsn430-178.euratech.iot-lab.info", - "wsn430-179.euratech.iot-lab.info", - "wsn430-180.euratech.iot-lab.info", - "wsn430-181.euratech.iot-lab.info", - "wsn430-182.euratech.iot-lab.info", - "wsn430-183.euratech.iot-lab.info", - "wsn430-184.euratech.iot-lab.info", - "wsn430-185.euratech.iot-lab.info", - "wsn430-186.euratech.iot-lab.info", - "wsn430-187.euratech.iot-lab.info", - "wsn430-188.euratech.iot-lab.info", - "wsn430-189.euratech.iot-lab.info", - "wsn430-191.euratech.iot-lab.info", - "wsn430-192.euratech.iot-lab.info", - "wsn430-193.euratech.iot-lab.info", - "wsn430-194.euratech.iot-lab.info", - "wsn430-195.euratech.iot-lab.info", - "wsn430-196.euratech.iot-lab.info", - "wsn430-197.euratech.iot-lab.info", - "wsn430-198.euratech.iot-lab.info", - "wsn430-199.euratech.iot-lab.info", - "wsn430-200.euratech.iot-lab.info", - "wsn430-202.euratech.iot-lab.info", - "wsn430-203.euratech.iot-lab.info", - "wsn430-204.euratech.iot-lab.info", - "wsn430-205.euratech.iot-lab.info", - "wsn430-206.euratech.iot-lab.info", - "wsn430-207.euratech.iot-lab.info", - "wsn430-208.euratech.iot-lab.info", - "wsn430-209.euratech.iot-lab.info", - "wsn430-210.euratech.iot-lab.info", - "wsn430-211.euratech.iot-lab.info", - "wsn430-212.euratech.iot-lab.info", - "wsn430-213.euratech.iot-lab.info", - "wsn430-214.euratech.iot-lab.info", - "wsn430-215.euratech.iot-lab.info", - "wsn430-216.euratech.iot-lab.info", - "wsn430-217.euratech.iot-lab.info", - "wsn430-218.euratech.iot-lab.info", - "wsn430-219.euratech.iot-lab.info", - "wsn430-220.euratech.iot-lab.info", - "wsn430-221.euratech.iot-lab.info", - "wsn430-222.euratech.iot-lab.info", - "wsn430-223.euratech.iot-lab.info", - "wsn430-224.euratech.iot-lab.info" - ], - "saclay": [ - "m3-1.saclay.iot-lab.info", - "m3-2.saclay.iot-lab.info", - "m3-3.saclay.iot-lab.info", - "m3-4.saclay.iot-lab.info", - "m3-5.saclay.iot-lab.info", - "m3-6.saclay.iot-lab.info", - "m3-7.saclay.iot-lab.info", - "m3-8.saclay.iot-lab.info", - "m3-9.saclay.iot-lab.info", - "m3-10.saclay.iot-lab.info", - "m3-11.saclay.iot-lab.info", - "m3-12.saclay.iot-lab.info", - "a8-1.saclay.iot-lab.info", - "a8-2.saclay.iot-lab.info", - "a8-3.saclay.iot-lab.info", - "a8-4.saclay.iot-lab.info", - "a8-5.saclay.iot-lab.info", - "a8-6.saclay.iot-lab.info", - "a8-7.saclay.iot-lab.info", - "a8-8.saclay.iot-lab.info", - "a8-9.saclay.iot-lab.info", - "a8-10.saclay.iot-lab.info", - "a8-11.saclay.iot-lab.info", - "a8-12.saclay.iot-lab.info", - "a8-13.saclay.iot-lab.info", - "a8-14.saclay.iot-lab.info", - "a8-16.saclay.iot-lab.info", - "a8-17.saclay.iot-lab.info", - "a8-18.saclay.iot-lab.info", - "a8-19.saclay.iot-lab.info", - "a8-20.saclay.iot-lab.info", - "a8-21.saclay.iot-lab.info", - "a8-22.saclay.iot-lab.info", - "a8-23.saclay.iot-lab.info", - "a8-24.saclay.iot-lab.info", - "a8-25.saclay.iot-lab.info", - "a8-26.saclay.iot-lab.info", - "a8-27.saclay.iot-lab.info", - "a8-28.saclay.iot-lab.info", - "a8-29.saclay.iot-lab.info", - "a8-30.saclay.iot-lab.info", - "a8-31.saclay.iot-lab.info", - "a8-32.saclay.iot-lab.info", - "a8-33.saclay.iot-lab.info", - "a8-34.saclay.iot-lab.info", - "a8-35.saclay.iot-lab.info", - "a8-36.saclay.iot-lab.info", - "a8-37.saclay.iot-lab.info", - "a8-38.saclay.iot-lab.info", - "a8-39.saclay.iot-lab.info", - "a8-40.saclay.iot-lab.info", - "a8-41.saclay.iot-lab.info", - "a8-42.saclay.iot-lab.info", - "a8-43.saclay.iot-lab.info", - "a8-44.saclay.iot-lab.info", - "a8-45.saclay.iot-lab.info", - "a8-46.saclay.iot-lab.info", - "a8-47.saclay.iot-lab.info", - "a8-49.saclay.iot-lab.info", - "a8-50.saclay.iot-lab.info", - "a8-51.saclay.iot-lab.info", - "a8-52.saclay.iot-lab.info", - "a8-53.saclay.iot-lab.info", - "a8-54.saclay.iot-lab.info", - "a8-55.saclay.iot-lab.info", - "a8-56.saclay.iot-lab.info", - "a8-57.saclay.iot-lab.info", - "a8-58.saclay.iot-lab.info", - "a8-59.saclay.iot-lab.info", - "a8-60.saclay.iot-lab.info", - "a8-61.saclay.iot-lab.info", - "a8-62.saclay.iot-lab.info", - "a8-63.saclay.iot-lab.info", - "a8-64.saclay.iot-lab.info", - "a8-65.saclay.iot-lab.info", - "a8-66.saclay.iot-lab.info", - "a8-67.saclay.iot-lab.info", - "a8-68.saclay.iot-lab.info", - "a8-69.saclay.iot-lab.info", - "a8-70.saclay.iot-lab.info", - "a8-71.saclay.iot-lab.info", - "a8-72.saclay.iot-lab.info", - "a8-73.saclay.iot-lab.info", - "a8-74.saclay.iot-lab.info", - "a8-75.saclay.iot-lab.info", - "a8-76.saclay.iot-lab.info", - "a8-77.saclay.iot-lab.info", - "a8-78.saclay.iot-lab.info", - "a8-79.saclay.iot-lab.info", - "a8-80.saclay.iot-lab.info", - "a8-81.saclay.iot-lab.info", - "a8-82.saclay.iot-lab.info", - "a8-83.saclay.iot-lab.info", - "a8-84.saclay.iot-lab.info", - "a8-85.saclay.iot-lab.info", - "a8-86.saclay.iot-lab.info", - "a8-87.saclay.iot-lab.info", - "a8-88.saclay.iot-lab.info", - "a8-89.saclay.iot-lab.info", - "a8-90.saclay.iot-lab.info", - "a8-91.saclay.iot-lab.info", - "a8-92.saclay.iot-lab.info", - "a8-93.saclay.iot-lab.info", - "a8-94.saclay.iot-lab.info", - "a8-95.saclay.iot-lab.info", - "a8-96.saclay.iot-lab.info", - "a8-97.saclay.iot-lab.info", - "a8-98.saclay.iot-lab.info", - "a8-99.saclay.iot-lab.info", - "a8-100.saclay.iot-lab.info", - "a8-101.saclay.iot-lab.info", - "a8-102.saclay.iot-lab.info", - "a8-103.saclay.iot-lab.info", - "a8-104.saclay.iot-lab.info", - "a8-105.saclay.iot-lab.info", - "a8-106.saclay.iot-lab.info", - "a8-107.saclay.iot-lab.info", - "a8-108.saclay.iot-lab.info", - "a8-109.saclay.iot-lab.info", - "a8-110.saclay.iot-lab.info", - "a8-111.saclay.iot-lab.info", - "a8-112.saclay.iot-lab.info", - "a8-113.saclay.iot-lab.info", - "a8-114.saclay.iot-lab.info", - "a8-115.saclay.iot-lab.info", - "a8-116.saclay.iot-lab.info", - "a8-117.saclay.iot-lab.info", - "a8-118.saclay.iot-lab.info", - "a8-119.saclay.iot-lab.info", - "a8-120.saclay.iot-lab.info", - "a8-121.saclay.iot-lab.info", - "a8-122.saclay.iot-lab.info", - "a8-124.saclay.iot-lab.info", - "a8-125.saclay.iot-lab.info", - "a8-126.saclay.iot-lab.info", - "a8-127.saclay.iot-lab.info", - "a8-128.saclay.iot-lab.info", - "a8-130.saclay.iot-lab.info", - "a8-131.saclay.iot-lab.info", - "a8-132.saclay.iot-lab.info", - "a8-133.saclay.iot-lab.info", - "a8-134.saclay.iot-lab.info", - "a8-135.saclay.iot-lab.info", - "a8-136.saclay.iot-lab.info", - "a8-137.saclay.iot-lab.info", - "a8-138.saclay.iot-lab.info", - "a8-139.saclay.iot-lab.info", - "a8-140.saclay.iot-lab.info", - "a8-141.saclay.iot-lab.info", - "a8-142.saclay.iot-lab.info", - "a8-143.saclay.iot-lab.info", - "a8-144.saclay.iot-lab.info", - "a8-145.saclay.iot-lab.info", - "a8-146.saclay.iot-lab.info", - "a8-147.saclay.iot-lab.info", - "a8-148.saclay.iot-lab.info", - "a8-149.saclay.iot-lab.info", - "a8-150.saclay.iot-lab.info", - "a8-151.saclay.iot-lab.info", - "a8-152.saclay.iot-lab.info", - "a8-153.saclay.iot-lab.info", - "a8-154.saclay.iot-lab.info", - "a8-155.saclay.iot-lab.info", - "a8-156.saclay.iot-lab.info", - "a8-157.saclay.iot-lab.info", - "a8-158.saclay.iot-lab.info", - "a8-159.saclay.iot-lab.info", - "a8-160.saclay.iot-lab.info", - "a8-162.saclay.iot-lab.info", - "a8-163.saclay.iot-lab.info", - "a8-164.saclay.iot-lab.info", - "a8-165.saclay.iot-lab.info", - "a8-166.saclay.iot-lab.info", - "a8-167.saclay.iot-lab.info", - "a8-168.saclay.iot-lab.info", - "a8-169.saclay.iot-lab.info", - "a8-170.saclay.iot-lab.info", - "a8-171.saclay.iot-lab.info", - "a8-172.saclay.iot-lab.info", - "a8-173.saclay.iot-lab.info", - "a8-174.saclay.iot-lab.info", - "a8-175.saclay.iot-lab.info", - "custom-1.saclay.iot-lab.info", - "custom-2.saclay.iot-lab.info", - "custom-3.saclay.iot-lab.info", - "custom-4.saclay.iot-lab.info", - "custom-5.saclay.iot-lab.info", - "custom-6.saclay.iot-lab.info", - "custom-7.saclay.iot-lab.info", - "custom-8.saclay.iot-lab.info" - ], - "rennes": [ - "wsn430-2.rennes.iot-lab.info", - "wsn430-3.rennes.iot-lab.info", - "wsn430-5.rennes.iot-lab.info", - "wsn430-6.rennes.iot-lab.info", - "wsn430-7.rennes.iot-lab.info", - "wsn430-8.rennes.iot-lab.info", - "wsn430-9.rennes.iot-lab.info", - "wsn430-10.rennes.iot-lab.info", - "wsn430-11.rennes.iot-lab.info", - "wsn430-12.rennes.iot-lab.info", - "wsn430-13.rennes.iot-lab.info", - "wsn430-14.rennes.iot-lab.info", - "wsn430-15.rennes.iot-lab.info", - "wsn430-16.rennes.iot-lab.info", - "wsn430-17.rennes.iot-lab.info", - "wsn430-18.rennes.iot-lab.info", - "wsn430-19.rennes.iot-lab.info", - "wsn430-20.rennes.iot-lab.info", - "wsn430-21.rennes.iot-lab.info", - "wsn430-22.rennes.iot-lab.info", - "wsn430-23.rennes.iot-lab.info", - "wsn430-24.rennes.iot-lab.info", - "wsn430-25.rennes.iot-lab.info", - "wsn430-26.rennes.iot-lab.info", - "wsn430-27.rennes.iot-lab.info", - "wsn430-28.rennes.iot-lab.info", - "wsn430-29.rennes.iot-lab.info", - "wsn430-30.rennes.iot-lab.info", - "wsn430-31.rennes.iot-lab.info", - "wsn430-32.rennes.iot-lab.info", - "wsn430-34.rennes.iot-lab.info", - "wsn430-35.rennes.iot-lab.info", - "wsn430-36.rennes.iot-lab.info", - "wsn430-37.rennes.iot-lab.info", - "wsn430-38.rennes.iot-lab.info", - "wsn430-39.rennes.iot-lab.info", - "wsn430-40.rennes.iot-lab.info", - "wsn430-41.rennes.iot-lab.info", - "wsn430-42.rennes.iot-lab.info", - "wsn430-43.rennes.iot-lab.info", - "wsn430-44.rennes.iot-lab.info", - "wsn430-45.rennes.iot-lab.info", - "wsn430-46.rennes.iot-lab.info", - "wsn430-49.rennes.iot-lab.info", - "wsn430-50.rennes.iot-lab.info", - "wsn430-51.rennes.iot-lab.info", - "wsn430-52.rennes.iot-lab.info", - "wsn430-53.rennes.iot-lab.info", - "wsn430-54.rennes.iot-lab.info", - "wsn430-55.rennes.iot-lab.info", - "wsn430-56.rennes.iot-lab.info", - "wsn430-57.rennes.iot-lab.info", - "wsn430-58.rennes.iot-lab.info", - "wsn430-59.rennes.iot-lab.info", - "wsn430-60.rennes.iot-lab.info", - "wsn430-61.rennes.iot-lab.info", - "wsn430-62.rennes.iot-lab.info", - "wsn430-63.rennes.iot-lab.info", - "wsn430-64.rennes.iot-lab.info", - "wsn430-65.rennes.iot-lab.info", - "wsn430-66.rennes.iot-lab.info", - "wsn430-67.rennes.iot-lab.info", - "wsn430-68.rennes.iot-lab.info", - "wsn430-69.rennes.iot-lab.info", - "wsn430-70.rennes.iot-lab.info", - "wsn430-71.rennes.iot-lab.info", - "wsn430-73.rennes.iot-lab.info", - "wsn430-74.rennes.iot-lab.info", - "wsn430-75.rennes.iot-lab.info", - "wsn430-76.rennes.iot-lab.info", - "wsn430-77.rennes.iot-lab.info", - "wsn430-78.rennes.iot-lab.info", - "wsn430-80.rennes.iot-lab.info", - "wsn430-81.rennes.iot-lab.info", - "wsn430-82.rennes.iot-lab.info", - "wsn430-83.rennes.iot-lab.info", - "wsn430-84.rennes.iot-lab.info", - "wsn430-85.rennes.iot-lab.info", - "wsn430-86.rennes.iot-lab.info", - "wsn430-87.rennes.iot-lab.info", - "wsn430-88.rennes.iot-lab.info", - "wsn430-89.rennes.iot-lab.info", - "wsn430-90.rennes.iot-lab.info", - "wsn430-91.rennes.iot-lab.info", - "wsn430-92.rennes.iot-lab.info", - "wsn430-93.rennes.iot-lab.info", - "wsn430-94.rennes.iot-lab.info", - "wsn430-95.rennes.iot-lab.info", - "wsn430-96.rennes.iot-lab.info", - "wsn430-97.rennes.iot-lab.info", - "wsn430-101.rennes.iot-lab.info", - "wsn430-102.rennes.iot-lab.info", - "wsn430-104.rennes.iot-lab.info", - "wsn430-106.rennes.iot-lab.info", - "wsn430-109.rennes.iot-lab.info", - "wsn430-110.rennes.iot-lab.info", - "wsn430-111.rennes.iot-lab.info", - "wsn430-112.rennes.iot-lab.info", - "wsn430-113.rennes.iot-lab.info", - "wsn430-114.rennes.iot-lab.info", - "wsn430-116.rennes.iot-lab.info", - "wsn430-118.rennes.iot-lab.info", - "wsn430-119.rennes.iot-lab.info", - "wsn430-120.rennes.iot-lab.info", - "wsn430-121.rennes.iot-lab.info", - "wsn430-122.rennes.iot-lab.info", - "wsn430-123.rennes.iot-lab.info", - "wsn430-125.rennes.iot-lab.info", - "wsn430-126.rennes.iot-lab.info", - "wsn430-127.rennes.iot-lab.info", - "wsn430-128.rennes.iot-lab.info", - "wsn430-129.rennes.iot-lab.info", - "wsn430-133.rennes.iot-lab.info", - "wsn430-134.rennes.iot-lab.info", - "wsn430-135.rennes.iot-lab.info", - "wsn430-136.rennes.iot-lab.info", - "wsn430-138.rennes.iot-lab.info", - "wsn430-139.rennes.iot-lab.info", - "wsn430-140.rennes.iot-lab.info", - "wsn430-141.rennes.iot-lab.info", - "wsn430-142.rennes.iot-lab.info", - "wsn430-143.rennes.iot-lab.info", - "wsn430-144.rennes.iot-lab.info", - "wsn430-145.rennes.iot-lab.info", - "wsn430-146.rennes.iot-lab.info", - "wsn430-147.rennes.iot-lab.info", - "wsn430-148.rennes.iot-lab.info", - "wsn430-150.rennes.iot-lab.info", - "wsn430-152.rennes.iot-lab.info", - "wsn430-153.rennes.iot-lab.info", - "wsn430-154.rennes.iot-lab.info", - "wsn430-155.rennes.iot-lab.info", - "wsn430-156.rennes.iot-lab.info", - "wsn430-157.rennes.iot-lab.info", - "wsn430-158.rennes.iot-lab.info", - "wsn430-159.rennes.iot-lab.info", - "wsn430-160.rennes.iot-lab.info", - "wsn430-161.rennes.iot-lab.info", - "wsn430-162.rennes.iot-lab.info", - "wsn430-163.rennes.iot-lab.info", - "wsn430-164.rennes.iot-lab.info", - "wsn430-165.rennes.iot-lab.info", - "wsn430-166.rennes.iot-lab.info", - "wsn430-167.rennes.iot-lab.info", - "wsn430-168.rennes.iot-lab.info", - "wsn430-169.rennes.iot-lab.info", - "wsn430-170.rennes.iot-lab.info", - "wsn430-171.rennes.iot-lab.info", - "wsn430-172.rennes.iot-lab.info", - "wsn430-173.rennes.iot-lab.info", - "wsn430-174.rennes.iot-lab.info", - "wsn430-175.rennes.iot-lab.info", - "wsn430-176.rennes.iot-lab.info", - "wsn430-177.rennes.iot-lab.info", - "wsn430-178.rennes.iot-lab.info", - "wsn430-179.rennes.iot-lab.info", - "wsn430-180.rennes.iot-lab.info", - "wsn430-181.rennes.iot-lab.info", - "wsn430-182.rennes.iot-lab.info", - "wsn430-183.rennes.iot-lab.info", - "wsn430-184.rennes.iot-lab.info", - "wsn430-185.rennes.iot-lab.info", - "wsn430-186.rennes.iot-lab.info", - "wsn430-187.rennes.iot-lab.info", - "wsn430-188.rennes.iot-lab.info", - "wsn430-189.rennes.iot-lab.info", - "wsn430-190.rennes.iot-lab.info", - "wsn430-191.rennes.iot-lab.info", - "wsn430-193.rennes.iot-lab.info", - "wsn430-194.rennes.iot-lab.info", - "wsn430-195.rennes.iot-lab.info", - "wsn430-196.rennes.iot-lab.info", - "wsn430-197.rennes.iot-lab.info", - "wsn430-198.rennes.iot-lab.info", - "wsn430-199.rennes.iot-lab.info", - "wsn430-200.rennes.iot-lab.info", - "wsn430-201.rennes.iot-lab.info", - "wsn430-202.rennes.iot-lab.info", - "wsn430-203.rennes.iot-lab.info", - "wsn430-204.rennes.iot-lab.info", - "wsn430-205.rennes.iot-lab.info", - "wsn430-206.rennes.iot-lab.info", - "wsn430-207.rennes.iot-lab.info", - "wsn430-208.rennes.iot-lab.info", - "wsn430-209.rennes.iot-lab.info", - "wsn430-210.rennes.iot-lab.info", - "wsn430-211.rennes.iot-lab.info", - "wsn430-212.rennes.iot-lab.info", - "wsn430-213.rennes.iot-lab.info", - "wsn430-214.rennes.iot-lab.info", - "wsn430-215.rennes.iot-lab.info", - "wsn430-216.rennes.iot-lab.info", - "wsn430-217.rennes.iot-lab.info", - "wsn430-218.rennes.iot-lab.info", - "wsn430-219.rennes.iot-lab.info", - "wsn430-220.rennes.iot-lab.info", - "wsn430-221.rennes.iot-lab.info", - "wsn430-222.rennes.iot-lab.info", - "wsn430-223.rennes.iot-lab.info", - "wsn430-225.rennes.iot-lab.info", - "wsn430-226.rennes.iot-lab.info", - "wsn430-227.rennes.iot-lab.info", - "wsn430-228.rennes.iot-lab.info", - "wsn430-229.rennes.iot-lab.info", - "wsn430-230.rennes.iot-lab.info", - "wsn430-231.rennes.iot-lab.info", - "wsn430-232.rennes.iot-lab.info", - "wsn430-233.rennes.iot-lab.info", - "wsn430-234.rennes.iot-lab.info", - "wsn430-235.rennes.iot-lab.info", - "wsn430-236.rennes.iot-lab.info", - "wsn430-237.rennes.iot-lab.info", - "wsn430-238.rennes.iot-lab.info", - "wsn430-240.rennes.iot-lab.info", - "wsn430-241.rennes.iot-lab.info", - "wsn430-242.rennes.iot-lab.info", - "wsn430-243.rennes.iot-lab.info", - "wsn430-244.rennes.iot-lab.info", - "wsn430-245.rennes.iot-lab.info", - "wsn430-247.rennes.iot-lab.info", - "wsn430-248.rennes.iot-lab.info", - "wsn430-249.rennes.iot-lab.info", - "wsn430-250.rennes.iot-lab.info", - "wsn430-251.rennes.iot-lab.info", - "wsn430-252.rennes.iot-lab.info", - "wsn430-253.rennes.iot-lab.info", - "wsn430-254.rennes.iot-lab.info", - "wsn430-255.rennes.iot-lab.info", - "wsn430-256.rennes.iot-lab.info" - ], - "grenoble": [ - "wsn430-1.grenoble.iot-lab.info", - "wsn430-2.grenoble.iot-lab.info", - "wsn430-3.grenoble.iot-lab.info", - "wsn430-4.grenoble.iot-lab.info", - "wsn430-5.grenoble.iot-lab.info", - "wsn430-6.grenoble.iot-lab.info", - "wsn430-7.grenoble.iot-lab.info", - "wsn430-8.grenoble.iot-lab.info", - "wsn430-10.grenoble.iot-lab.info", - "wsn430-11.grenoble.iot-lab.info", - "wsn430-12.grenoble.iot-lab.info", - "wsn430-13.grenoble.iot-lab.info", - "wsn430-14.grenoble.iot-lab.info", - "wsn430-15.grenoble.iot-lab.info", - "wsn430-16.grenoble.iot-lab.info", - "wsn430-17.grenoble.iot-lab.info", - "wsn430-18.grenoble.iot-lab.info", - "wsn430-19.grenoble.iot-lab.info", - "wsn430-20.grenoble.iot-lab.info", - "wsn430-21.grenoble.iot-lab.info", - "wsn430-22.grenoble.iot-lab.info", - "wsn430-23.grenoble.iot-lab.info", - "wsn430-24.grenoble.iot-lab.info", - "wsn430-25.grenoble.iot-lab.info", - "wsn430-26.grenoble.iot-lab.info", - "wsn430-27.grenoble.iot-lab.info", - "wsn430-28.grenoble.iot-lab.info", - "wsn430-29.grenoble.iot-lab.info", - "wsn430-30.grenoble.iot-lab.info", - "wsn430-31.grenoble.iot-lab.info", - "wsn430-32.grenoble.iot-lab.info", - "wsn430-33.grenoble.iot-lab.info", - "wsn430-34.grenoble.iot-lab.info", - "wsn430-35.grenoble.iot-lab.info", - "wsn430-36.grenoble.iot-lab.info", - "wsn430-37.grenoble.iot-lab.info", - "wsn430-38.grenoble.iot-lab.info", - "wsn430-39.grenoble.iot-lab.info", - "wsn430-40.grenoble.iot-lab.info", - "wsn430-41.grenoble.iot-lab.info", - "wsn430-42.grenoble.iot-lab.info", - "wsn430-43.grenoble.iot-lab.info", - "wsn430-44.grenoble.iot-lab.info", - "wsn430-45.grenoble.iot-lab.info", - "wsn430-46.grenoble.iot-lab.info", - "wsn430-47.grenoble.iot-lab.info", - "wsn430-48.grenoble.iot-lab.info", - "wsn430-49.grenoble.iot-lab.info", - "wsn430-50.grenoble.iot-lab.info", - "wsn430-51.grenoble.iot-lab.info", - "wsn430-52.grenoble.iot-lab.info", - "wsn430-53.grenoble.iot-lab.info", - "wsn430-54.grenoble.iot-lab.info", - "wsn430-55.grenoble.iot-lab.info", - "wsn430-56.grenoble.iot-lab.info", - "wsn430-57.grenoble.iot-lab.info", - "wsn430-58.grenoble.iot-lab.info", - "wsn430-59.grenoble.iot-lab.info", - "wsn430-60.grenoble.iot-lab.info", - "wsn430-61.grenoble.iot-lab.info", - "wsn430-62.grenoble.iot-lab.info", - "wsn430-63.grenoble.iot-lab.info", - "wsn430-64.grenoble.iot-lab.info", - "wsn430-65.grenoble.iot-lab.info", - "wsn430-66.grenoble.iot-lab.info", - "wsn430-69.grenoble.iot-lab.info", - "wsn430-70.grenoble.iot-lab.info", - "wsn430-71.grenoble.iot-lab.info", - "wsn430-72.grenoble.iot-lab.info", - "wsn430-73.grenoble.iot-lab.info", - "wsn430-74.grenoble.iot-lab.info", - "wsn430-75.grenoble.iot-lab.info", - "wsn430-76.grenoble.iot-lab.info", - "wsn430-77.grenoble.iot-lab.info", - "wsn430-78.grenoble.iot-lab.info", - "wsn430-79.grenoble.iot-lab.info", - "wsn430-80.grenoble.iot-lab.info", - "wsn430-81.grenoble.iot-lab.info", - "wsn430-82.grenoble.iot-lab.info", - "wsn430-83.grenoble.iot-lab.info", - "wsn430-84.grenoble.iot-lab.info", - "wsn430-85.grenoble.iot-lab.info", - "wsn430-86.grenoble.iot-lab.info", - "wsn430-87.grenoble.iot-lab.info", - "wsn430-88.grenoble.iot-lab.info", - "wsn430-89.grenoble.iot-lab.info", - "wsn430-90.grenoble.iot-lab.info", - "wsn430-91.grenoble.iot-lab.info", - "wsn430-92.grenoble.iot-lab.info", - "wsn430-93.grenoble.iot-lab.info", - "wsn430-94.grenoble.iot-lab.info", - "wsn430-95.grenoble.iot-lab.info", - "wsn430-96.grenoble.iot-lab.info", - "wsn430-97.grenoble.iot-lab.info", - "wsn430-98.grenoble.iot-lab.info", - "wsn430-99.grenoble.iot-lab.info", - "wsn430-100.grenoble.iot-lab.info", - "wsn430-101.grenoble.iot-lab.info", - "wsn430-102.grenoble.iot-lab.info", - "wsn430-126.grenoble.iot-lab.info", - "wsn430-127.grenoble.iot-lab.info", - "wsn430-128.grenoble.iot-lab.info", - "wsn430-129.grenoble.iot-lab.info", - "wsn430-130.grenoble.iot-lab.info", - "wsn430-131.grenoble.iot-lab.info", - "wsn430-132.grenoble.iot-lab.info", - "wsn430-133.grenoble.iot-lab.info", - "wsn430-134.grenoble.iot-lab.info", - "wsn430-135.grenoble.iot-lab.info", - "wsn430-136.grenoble.iot-lab.info", - "wsn430-137.grenoble.iot-lab.info", - "wsn430-138.grenoble.iot-lab.info", - "wsn430-139.grenoble.iot-lab.info", - "wsn430-140.grenoble.iot-lab.info", - "wsn430-141.grenoble.iot-lab.info", - "wsn430-142.grenoble.iot-lab.info", - "wsn430-143.grenoble.iot-lab.info", - "wsn430-144.grenoble.iot-lab.info", - "wsn430-145.grenoble.iot-lab.info", - "wsn430-146.grenoble.iot-lab.info", - "wsn430-147.grenoble.iot-lab.info", - "wsn430-148.grenoble.iot-lab.info", - "wsn430-149.grenoble.iot-lab.info", - "wsn430-150.grenoble.iot-lab.info", - "wsn430-151.grenoble.iot-lab.info", - "wsn430-152.grenoble.iot-lab.info", - "wsn430-153.grenoble.iot-lab.info", - "wsn430-154.grenoble.iot-lab.info", - "wsn430-155.grenoble.iot-lab.info", - "wsn430-156.grenoble.iot-lab.info", - "wsn430-157.grenoble.iot-lab.info", - "wsn430-158.grenoble.iot-lab.info", - "wsn430-159.grenoble.iot-lab.info", - "wsn430-160.grenoble.iot-lab.info", - "wsn430-161.grenoble.iot-lab.info", - "wsn430-162.grenoble.iot-lab.info", - "wsn430-163.grenoble.iot-lab.info", - "wsn430-164.grenoble.iot-lab.info", - "wsn430-165.grenoble.iot-lab.info", - "wsn430-166.grenoble.iot-lab.info", - "wsn430-167.grenoble.iot-lab.info", - "wsn430-168.grenoble.iot-lab.info", - "wsn430-169.grenoble.iot-lab.info", - "wsn430-171.grenoble.iot-lab.info", - "wsn430-172.grenoble.iot-lab.info", - "wsn430-173.grenoble.iot-lab.info", - "wsn430-174.grenoble.iot-lab.info", - "wsn430-175.grenoble.iot-lab.info", - "wsn430-176.grenoble.iot-lab.info", - "wsn430-177.grenoble.iot-lab.info", - "wsn430-178.grenoble.iot-lab.info", - "wsn430-179.grenoble.iot-lab.info", - "wsn430-180.grenoble.iot-lab.info", - "wsn430-181.grenoble.iot-lab.info", - "wsn430-182.grenoble.iot-lab.info", - "wsn430-183.grenoble.iot-lab.info", - "wsn430-184.grenoble.iot-lab.info", - "wsn430-185.grenoble.iot-lab.info", - "wsn430-186.grenoble.iot-lab.info", - "wsn430-187.grenoble.iot-lab.info", - "wsn430-188.grenoble.iot-lab.info", - "wsn430-189.grenoble.iot-lab.info", - "wsn430-190.grenoble.iot-lab.info", - "wsn430-191.grenoble.iot-lab.info", - "wsn430-192.grenoble.iot-lab.info", - "wsn430-193.grenoble.iot-lab.info", - "wsn430-194.grenoble.iot-lab.info", - "wsn430-195.grenoble.iot-lab.info", - "wsn430-196.grenoble.iot-lab.info", - "wsn430-197.grenoble.iot-lab.info", - "wsn430-198.grenoble.iot-lab.info", - "wsn430-199.grenoble.iot-lab.info", - "wsn430-200.grenoble.iot-lab.info", - "wsn430-201.grenoble.iot-lab.info", - "wsn430-202.grenoble.iot-lab.info", - "wsn430-203.grenoble.iot-lab.info", - "wsn430-204.grenoble.iot-lab.info", - "wsn430-205.grenoble.iot-lab.info", - "wsn430-206.grenoble.iot-lab.info", - "wsn430-207.grenoble.iot-lab.info", - "wsn430-208.grenoble.iot-lab.info", - "wsn430-209.grenoble.iot-lab.info", - "wsn430-210.grenoble.iot-lab.info", - "wsn430-211.grenoble.iot-lab.info", - "wsn430-212.grenoble.iot-lab.info", - "wsn430-213.grenoble.iot-lab.info", - "wsn430-214.grenoble.iot-lab.info", - "wsn430-215.grenoble.iot-lab.info", - "wsn430-216.grenoble.iot-lab.info", - "wsn430-217.grenoble.iot-lab.info", - "wsn430-218.grenoble.iot-lab.info", - "wsn430-219.grenoble.iot-lab.info", - "wsn430-220.grenoble.iot-lab.info", - "wsn430-221.grenoble.iot-lab.info", - "wsn430-222.grenoble.iot-lab.info", - "wsn430-223.grenoble.iot-lab.info", - "wsn430-224.grenoble.iot-lab.info", - "wsn430-225.grenoble.iot-lab.info", - "wsn430-226.grenoble.iot-lab.info", - "wsn430-227.grenoble.iot-lab.info", - "wsn430-228.grenoble.iot-lab.info", - "wsn430-229.grenoble.iot-lab.info", - "wsn430-230.grenoble.iot-lab.info", - "wsn430-231.grenoble.iot-lab.info", - "wsn430-232.grenoble.iot-lab.info", - "wsn430-233.grenoble.iot-lab.info", - "wsn430-234.grenoble.iot-lab.info", - "wsn430-235.grenoble.iot-lab.info", - "wsn430-236.grenoble.iot-lab.info", - "wsn430-237.grenoble.iot-lab.info", - "wsn430-238.grenoble.iot-lab.info", - "wsn430-239.grenoble.iot-lab.info", - "wsn430-241.grenoble.iot-lab.info", - "wsn430-242.grenoble.iot-lab.info", - "wsn430-243.grenoble.iot-lab.info", - "wsn430-244.grenoble.iot-lab.info", - "wsn430-245.grenoble.iot-lab.info", - "wsn430-246.grenoble.iot-lab.info", - "wsn430-247.grenoble.iot-lab.info", - "wsn430-248.grenoble.iot-lab.info", - "wsn430-249.grenoble.iot-lab.info", - "wsn430-250.grenoble.iot-lab.info", - "wsn430-251.grenoble.iot-lab.info", - "wsn430-252.grenoble.iot-lab.info", - "wsn430-253.grenoble.iot-lab.info", - "wsn430-254.grenoble.iot-lab.info", - "wsn430-255.grenoble.iot-lab.info", - "m3-2.grenoble.iot-lab.info", - "m3-4.grenoble.iot-lab.info", - "m3-5.grenoble.iot-lab.info", - "m3-11.grenoble.iot-lab.info", - "m3-13.grenoble.iot-lab.info", - "m3-14.grenoble.iot-lab.info", - "m3-15.grenoble.iot-lab.info", - "m3-21.grenoble.iot-lab.info", - "m3-23.grenoble.iot-lab.info", - "m3-25.grenoble.iot-lab.info", - "m3-29.grenoble.iot-lab.info", - "m3-30.grenoble.iot-lab.info", - "m3-31.grenoble.iot-lab.info", - "m3-32.grenoble.iot-lab.info", - "m3-33.grenoble.iot-lab.info", - "m3-35.grenoble.iot-lab.info", - "m3-37.grenoble.iot-lab.info", - "m3-38.grenoble.iot-lab.info", - "m3-39.grenoble.iot-lab.info", - "m3-40.grenoble.iot-lab.info", - "m3-45.grenoble.iot-lab.info", - "m3-48.grenoble.iot-lab.info", - "m3-49.grenoble.iot-lab.info", - "m3-51.grenoble.iot-lab.info", - "m3-55.grenoble.iot-lab.info", - "m3-59.grenoble.iot-lab.info", - "m3-61.grenoble.iot-lab.info", - "m3-63.grenoble.iot-lab.info", - "m3-65.grenoble.iot-lab.info", - "m3-68.grenoble.iot-lab.info", - "m3-69.grenoble.iot-lab.info", - "m3-71.grenoble.iot-lab.info", - "m3-72.grenoble.iot-lab.info", - "m3-73.grenoble.iot-lab.info", - "m3-77.grenoble.iot-lab.info", - "m3-80.grenoble.iot-lab.info", - "m3-85.grenoble.iot-lab.info", - "m3-88.grenoble.iot-lab.info", - "m3-91.grenoble.iot-lab.info", - "m3-94.grenoble.iot-lab.info", - "m3-101.grenoble.iot-lab.info", - "m3-102.grenoble.iot-lab.info", - "m3-105.grenoble.iot-lab.info", - "m3-106.grenoble.iot-lab.info", - "m3-109.grenoble.iot-lab.info", - "m3-113.grenoble.iot-lab.info", - "m3-114.grenoble.iot-lab.info", - "m3-115.grenoble.iot-lab.info", - "m3-116.grenoble.iot-lab.info", - "m3-117.grenoble.iot-lab.info", - "m3-118.grenoble.iot-lab.info", - "m3-122.grenoble.iot-lab.info", - "m3-123.grenoble.iot-lab.info", - "m3-125.grenoble.iot-lab.info", - "m3-129.grenoble.iot-lab.info", - "m3-130.grenoble.iot-lab.info", - "m3-131.grenoble.iot-lab.info", - "m3-132.grenoble.iot-lab.info", - "m3-133.grenoble.iot-lab.info", - "m3-135.grenoble.iot-lab.info", - "m3-136.grenoble.iot-lab.info", - "m3-139.grenoble.iot-lab.info", - "m3-140.grenoble.iot-lab.info", - "m3-141.grenoble.iot-lab.info", - "m3-142.grenoble.iot-lab.info", - "m3-146.grenoble.iot-lab.info", - "m3-147.grenoble.iot-lab.info", - "m3-148.grenoble.iot-lab.info", - "m3-150.grenoble.iot-lab.info", - "m3-151.grenoble.iot-lab.info", - "m3-152.grenoble.iot-lab.info", - "m3-155.grenoble.iot-lab.info", - "m3-157.grenoble.iot-lab.info", - "m3-158.grenoble.iot-lab.info", - "m3-159.grenoble.iot-lab.info", - "m3-160.grenoble.iot-lab.info", - "m3-161.grenoble.iot-lab.info", - "m3-162.grenoble.iot-lab.info", - "m3-167.grenoble.iot-lab.info", - "m3-169.grenoble.iot-lab.info", - "m3-171.grenoble.iot-lab.info", - "m3-174.grenoble.iot-lab.info", - "m3-175.grenoble.iot-lab.info", - "m3-179.grenoble.iot-lab.info", - "m3-180.grenoble.iot-lab.info", - "m3-181.grenoble.iot-lab.info", - "m3-182.grenoble.iot-lab.info", - "m3-188.grenoble.iot-lab.info", - "m3-189.grenoble.iot-lab.info", - "m3-191.grenoble.iot-lab.info", - "m3-192.grenoble.iot-lab.info", - "m3-194.grenoble.iot-lab.info", - "m3-196.grenoble.iot-lab.info", - "m3-197.grenoble.iot-lab.info", - "m3-198.grenoble.iot-lab.info", - "m3-204.grenoble.iot-lab.info", - "m3-206.grenoble.iot-lab.info", - "m3-208.grenoble.iot-lab.info", - "m3-210.grenoble.iot-lab.info", - "m3-212.grenoble.iot-lab.info", - "m3-213.grenoble.iot-lab.info", - "m3-214.grenoble.iot-lab.info", - "m3-216.grenoble.iot-lab.info", - "m3-219.grenoble.iot-lab.info", - "m3-220.grenoble.iot-lab.info", - "m3-222.grenoble.iot-lab.info", - "m3-226.grenoble.iot-lab.info", - "m3-227.grenoble.iot-lab.info", - "m3-231.grenoble.iot-lab.info", - "m3-232.grenoble.iot-lab.info", - "m3-234.grenoble.iot-lab.info", - "m3-235.grenoble.iot-lab.info", - "m3-236.grenoble.iot-lab.info", - "m3-237.grenoble.iot-lab.info", - "m3-239.grenoble.iot-lab.info", - "m3-241.grenoble.iot-lab.info", - "m3-242.grenoble.iot-lab.info", - "m3-244.grenoble.iot-lab.info", - "m3-245.grenoble.iot-lab.info", - "m3-246.grenoble.iot-lab.info", - "m3-248.grenoble.iot-lab.info", - "m3-252.grenoble.iot-lab.info", - "m3-253.grenoble.iot-lab.info", - "m3-254.grenoble.iot-lab.info", - "m3-257.grenoble.iot-lab.info", - "m3-258.grenoble.iot-lab.info", - "m3-260.grenoble.iot-lab.info", - "m3-262.grenoble.iot-lab.info", - "m3-263.grenoble.iot-lab.info", - "m3-264.grenoble.iot-lab.info", - "m3-265.grenoble.iot-lab.info", - "m3-267.grenoble.iot-lab.info", - "m3-271.grenoble.iot-lab.info", - "m3-272.grenoble.iot-lab.info", - "m3-273.grenoble.iot-lab.info", - "m3-278.grenoble.iot-lab.info", - "m3-280.grenoble.iot-lab.info", - "m3-282.grenoble.iot-lab.info", - "m3-285.grenoble.iot-lab.info", - "m3-288.grenoble.iot-lab.info", - "m3-289.grenoble.iot-lab.info", - "m3-290.grenoble.iot-lab.info", - "m3-292.grenoble.iot-lab.info", - "m3-293.grenoble.iot-lab.info", - "m3-297.grenoble.iot-lab.info", - "m3-298.grenoble.iot-lab.info", - "m3-299.grenoble.iot-lab.info", - "m3-301.grenoble.iot-lab.info", - "m3-303.grenoble.iot-lab.info", - "m3-307.grenoble.iot-lab.info", - "m3-309.grenoble.iot-lab.info", - "m3-310.grenoble.iot-lab.info", - "m3-311.grenoble.iot-lab.info", - "m3-312.grenoble.iot-lab.info", - "m3-313.grenoble.iot-lab.info", - "m3-314.grenoble.iot-lab.info", - "m3-317.grenoble.iot-lab.info", - "m3-318.grenoble.iot-lab.info", - "m3-321.grenoble.iot-lab.info", - "m3-322.grenoble.iot-lab.info", - "m3-324.grenoble.iot-lab.info", - "m3-325.grenoble.iot-lab.info", - "m3-328.grenoble.iot-lab.info", - "m3-335.grenoble.iot-lab.info", - "m3-337.grenoble.iot-lab.info", - "m3-338.grenoble.iot-lab.info", - "m3-339.grenoble.iot-lab.info", - "m3-343.grenoble.iot-lab.info", - "m3-344.grenoble.iot-lab.info", - "m3-346.grenoble.iot-lab.info", - "m3-348.grenoble.iot-lab.info", - "m3-349.grenoble.iot-lab.info", - "m3-354.grenoble.iot-lab.info", - "m3-359.grenoble.iot-lab.info", - "m3-360.grenoble.iot-lab.info", - "m3-363.grenoble.iot-lab.info", - "m3-366.grenoble.iot-lab.info", - "m3-367.grenoble.iot-lab.info", - "m3-368.grenoble.iot-lab.info", - "m3-371.grenoble.iot-lab.info", - "m3-374.grenoble.iot-lab.info", - "m3-375.grenoble.iot-lab.info", - "m3-376.grenoble.iot-lab.info", - "m3-377.grenoble.iot-lab.info", - "m3-1.grenoble.iot-lab.info", - "m3-3.grenoble.iot-lab.info", - "m3-6.grenoble.iot-lab.info", - "m3-7.grenoble.iot-lab.info", - "m3-8.grenoble.iot-lab.info", - "m3-10.grenoble.iot-lab.info", - "m3-12.grenoble.iot-lab.info", - "m3-16.grenoble.iot-lab.info", - "m3-19.grenoble.iot-lab.info", - "m3-20.grenoble.iot-lab.info", - "m3-22.grenoble.iot-lab.info", - "m3-24.grenoble.iot-lab.info", - "m3-26.grenoble.iot-lab.info", - "m3-27.grenoble.iot-lab.info", - "m3-28.grenoble.iot-lab.info", - "m3-34.grenoble.iot-lab.info", - "m3-36.grenoble.iot-lab.info", - "m3-41.grenoble.iot-lab.info", - "m3-42.grenoble.iot-lab.info", - "m3-43.grenoble.iot-lab.info", - "m3-46.grenoble.iot-lab.info", - "m3-47.grenoble.iot-lab.info", - "m3-50.grenoble.iot-lab.info", - "m3-52.grenoble.iot-lab.info", - "m3-53.grenoble.iot-lab.info", - "m3-56.grenoble.iot-lab.info", - "m3-57.grenoble.iot-lab.info", - "m3-58.grenoble.iot-lab.info", - "m3-60.grenoble.iot-lab.info", - "m3-62.grenoble.iot-lab.info", - "m3-64.grenoble.iot-lab.info", - "m3-66.grenoble.iot-lab.info", - "m3-67.grenoble.iot-lab.info", - "m3-70.grenoble.iot-lab.info", - "m3-74.grenoble.iot-lab.info", - "m3-75.grenoble.iot-lab.info", - "m3-76.grenoble.iot-lab.info", - "m3-78.grenoble.iot-lab.info", - "m3-79.grenoble.iot-lab.info", - "m3-83.grenoble.iot-lab.info", - "m3-86.grenoble.iot-lab.info", - "m3-87.grenoble.iot-lab.info", - "m3-89.grenoble.iot-lab.info", - "m3-90.grenoble.iot-lab.info", - "m3-92.grenoble.iot-lab.info", - "m3-93.grenoble.iot-lab.info", - "m3-95.grenoble.iot-lab.info", - "m3-96.grenoble.iot-lab.info", - "m3-97.grenoble.iot-lab.info", - "m3-98.grenoble.iot-lab.info", - "m3-99.grenoble.iot-lab.info", - "m3-100.grenoble.iot-lab.info", - "m3-103.grenoble.iot-lab.info", - "m3-104.grenoble.iot-lab.info", - "m3-107.grenoble.iot-lab.info", - "m3-108.grenoble.iot-lab.info", - "m3-110.grenoble.iot-lab.info", - "m3-112.grenoble.iot-lab.info", - "m3-119.grenoble.iot-lab.info", - "m3-120.grenoble.iot-lab.info", - "m3-121.grenoble.iot-lab.info", - "m3-126.grenoble.iot-lab.info", - "m3-127.grenoble.iot-lab.info", - "m3-128.grenoble.iot-lab.info", - "m3-137.grenoble.iot-lab.info", - "m3-144.grenoble.iot-lab.info", - "m3-145.grenoble.iot-lab.info", - "m3-149.grenoble.iot-lab.info", - "m3-153.grenoble.iot-lab.info", - "m3-154.grenoble.iot-lab.info", - "m3-156.grenoble.iot-lab.info", - "m3-163.grenoble.iot-lab.info", - "m3-164.grenoble.iot-lab.info", - "m3-166.grenoble.iot-lab.info", - "m3-168.grenoble.iot-lab.info", - "m3-170.grenoble.iot-lab.info", - "m3-172.grenoble.iot-lab.info", - "m3-173.grenoble.iot-lab.info", - "m3-176.grenoble.iot-lab.info", - "m3-177.grenoble.iot-lab.info", - "m3-184.grenoble.iot-lab.info", - "m3-186.grenoble.iot-lab.info", - "m3-190.grenoble.iot-lab.info", - "m3-193.grenoble.iot-lab.info", - "m3-195.grenoble.iot-lab.info", - "m3-199.grenoble.iot-lab.info", - "m3-200.grenoble.iot-lab.info", - "m3-201.grenoble.iot-lab.info", - "m3-202.grenoble.iot-lab.info", - "m3-207.grenoble.iot-lab.info", - "m3-209.grenoble.iot-lab.info", - "m3-211.grenoble.iot-lab.info", - "m3-215.grenoble.iot-lab.info", - "m3-217.grenoble.iot-lab.info", - "m3-218.grenoble.iot-lab.info", - "m3-221.grenoble.iot-lab.info", - "m3-223.grenoble.iot-lab.info", - "m3-224.grenoble.iot-lab.info", - "m3-225.grenoble.iot-lab.info", - "m3-228.grenoble.iot-lab.info", - "m3-229.grenoble.iot-lab.info", - "m3-230.grenoble.iot-lab.info", - "m3-233.grenoble.iot-lab.info", - "m3-238.grenoble.iot-lab.info", - "m3-240.grenoble.iot-lab.info", - "m3-247.grenoble.iot-lab.info", - "m3-249.grenoble.iot-lab.info", - "m3-250.grenoble.iot-lab.info", - "m3-251.grenoble.iot-lab.info", - "m3-256.grenoble.iot-lab.info", - "m3-259.grenoble.iot-lab.info", - "m3-261.grenoble.iot-lab.info", - "m3-266.grenoble.iot-lab.info", - "m3-268.grenoble.iot-lab.info", - "m3-269.grenoble.iot-lab.info", - "m3-274.grenoble.iot-lab.info", - "m3-275.grenoble.iot-lab.info", - "m3-276.grenoble.iot-lab.info", - "m3-277.grenoble.iot-lab.info", - "m3-279.grenoble.iot-lab.info", - "m3-281.grenoble.iot-lab.info", - "m3-283.grenoble.iot-lab.info", - "m3-286.grenoble.iot-lab.info", - "m3-287.grenoble.iot-lab.info", - "m3-291.grenoble.iot-lab.info", - "m3-294.grenoble.iot-lab.info", - "m3-295.grenoble.iot-lab.info", - "m3-296.grenoble.iot-lab.info", - "m3-302.grenoble.iot-lab.info", - "m3-304.grenoble.iot-lab.info", - "m3-305.grenoble.iot-lab.info", - "m3-306.grenoble.iot-lab.info", - "m3-308.grenoble.iot-lab.info", - "m3-315.grenoble.iot-lab.info", - "m3-316.grenoble.iot-lab.info", - "m3-320.grenoble.iot-lab.info", - "m3-323.grenoble.iot-lab.info", - "m3-326.grenoble.iot-lab.info", - "m3-327.grenoble.iot-lab.info", - "m3-329.grenoble.iot-lab.info", - "m3-330.grenoble.iot-lab.info", - "m3-332.grenoble.iot-lab.info", - "m3-333.grenoble.iot-lab.info", - "m3-334.grenoble.iot-lab.info", - "m3-336.grenoble.iot-lab.info", - "m3-340.grenoble.iot-lab.info", - "m3-341.grenoble.iot-lab.info", - "m3-342.grenoble.iot-lab.info", - "m3-345.grenoble.iot-lab.info", - "m3-347.grenoble.iot-lab.info", - "m3-350.grenoble.iot-lab.info", - "m3-352.grenoble.iot-lab.info", - "m3-353.grenoble.iot-lab.info", - "m3-355.grenoble.iot-lab.info", - "m3-356.grenoble.iot-lab.info", - "m3-357.grenoble.iot-lab.info", - "m3-358.grenoble.iot-lab.info", - "m3-361.grenoble.iot-lab.info", - "m3-362.grenoble.iot-lab.info", - "m3-364.grenoble.iot-lab.info", - "m3-365.grenoble.iot-lab.info", - "m3-369.grenoble.iot-lab.info", - "m3-370.grenoble.iot-lab.info", - "m3-372.grenoble.iot-lab.info", - "m3-373.grenoble.iot-lab.info", - "a8-1.grenoble.iot-lab.info", - "a8-2.grenoble.iot-lab.info", - "a8-3.grenoble.iot-lab.info", - "a8-4.grenoble.iot-lab.info", - "a8-5.grenoble.iot-lab.info", - "a8-6.grenoble.iot-lab.info", - "a8-7.grenoble.iot-lab.info", - "a8-8.grenoble.iot-lab.info", - "a8-9.grenoble.iot-lab.info", - "a8-10.grenoble.iot-lab.info", - "a8-12.grenoble.iot-lab.info", - "a8-13.grenoble.iot-lab.info", - "a8-14.grenoble.iot-lab.info", - "a8-15.grenoble.iot-lab.info", - "a8-16.grenoble.iot-lab.info", - "a8-17.grenoble.iot-lab.info", - "a8-18.grenoble.iot-lab.info", - "a8-19.grenoble.iot-lab.info", - "a8-20.grenoble.iot-lab.info", - "a8-21.grenoble.iot-lab.info", - "a8-22.grenoble.iot-lab.info", - "a8-23.grenoble.iot-lab.info", - "a8-24.grenoble.iot-lab.info", - "a8-25.grenoble.iot-lab.info", - "a8-26.grenoble.iot-lab.info", - "a8-28.grenoble.iot-lab.info", - "a8-29.grenoble.iot-lab.info", - "a8-30.grenoble.iot-lab.info", - "a8-31.grenoble.iot-lab.info", - "a8-32.grenoble.iot-lab.info", - "a8-33.grenoble.iot-lab.info", - "a8-34.grenoble.iot-lab.info", - "a8-35.grenoble.iot-lab.info", - "a8-36.grenoble.iot-lab.info", - "a8-37.grenoble.iot-lab.info", - "a8-38.grenoble.iot-lab.info", - "a8-39.grenoble.iot-lab.info", - "a8-40.grenoble.iot-lab.info", - "a8-41.grenoble.iot-lab.info", - "a8-42.grenoble.iot-lab.info", - "a8-43.grenoble.iot-lab.info", - "a8-44.grenoble.iot-lab.info", - "a8-45.grenoble.iot-lab.info", - "a8-46.grenoble.iot-lab.info", - "a8-47.grenoble.iot-lab.info", - "a8-48.grenoble.iot-lab.info", - "a8-49.grenoble.iot-lab.info", - "a8-50.grenoble.iot-lab.info", - "a8-51.grenoble.iot-lab.info", - "a8-52.grenoble.iot-lab.info", - "a8-53.grenoble.iot-lab.info", - "a8-54.grenoble.iot-lab.info", - "a8-55.grenoble.iot-lab.info", - "a8-57.grenoble.iot-lab.info", - "a8-58.grenoble.iot-lab.info", - "a8-59.grenoble.iot-lab.info", - "a8-60.grenoble.iot-lab.info", - "a8-61.grenoble.iot-lab.info", - "a8-63.grenoble.iot-lab.info", - "a8-64.grenoble.iot-lab.info", - "a8-65.grenoble.iot-lab.info", - "a8-66.grenoble.iot-lab.info", - "a8-67.grenoble.iot-lab.info", - "a8-68.grenoble.iot-lab.info", - "a8-69.grenoble.iot-lab.info", - "a8-70.grenoble.iot-lab.info", - "a8-71.grenoble.iot-lab.info", - "a8-72.grenoble.iot-lab.info", - "a8-73.grenoble.iot-lab.info", - "a8-74.grenoble.iot-lab.info", - "a8-75.grenoble.iot-lab.info", - "a8-76.grenoble.iot-lab.info", - "a8-77.grenoble.iot-lab.info", - "a8-78.grenoble.iot-lab.info", - "a8-79.grenoble.iot-lab.info", - "a8-80.grenoble.iot-lab.info", - "a8-81.grenoble.iot-lab.info", - "a8-82.grenoble.iot-lab.info", - "a8-83.grenoble.iot-lab.info", - "a8-84.grenoble.iot-lab.info", - "a8-85.grenoble.iot-lab.info", - "a8-86.grenoble.iot-lab.info", - "a8-87.grenoble.iot-lab.info", - "a8-88.grenoble.iot-lab.info", - "a8-89.grenoble.iot-lab.info", - "a8-90.grenoble.iot-lab.info", - "a8-91.grenoble.iot-lab.info", - "a8-92.grenoble.iot-lab.info", - "a8-93.grenoble.iot-lab.info", - "a8-94.grenoble.iot-lab.info", - "a8-95.grenoble.iot-lab.info", - "a8-96.grenoble.iot-lab.info", - "a8-97.grenoble.iot-lab.info", - "a8-98.grenoble.iot-lab.info", - "a8-99.grenoble.iot-lab.info", - "a8-100.grenoble.iot-lab.info", - "a8-101.grenoble.iot-lab.info", - "a8-102.grenoble.iot-lab.info", - "a8-103.grenoble.iot-lab.info", - "a8-105.grenoble.iot-lab.info", - "a8-106.grenoble.iot-lab.info", - "a8-107.grenoble.iot-lab.info", - "a8-108.grenoble.iot-lab.info", - "a8-109.grenoble.iot-lab.info", - "a8-111.grenoble.iot-lab.info", - "a8-112.grenoble.iot-lab.info", - "a8-113.grenoble.iot-lab.info", - "a8-114.grenoble.iot-lab.info", - "a8-115.grenoble.iot-lab.info", - "a8-116.grenoble.iot-lab.info", - "a8-117.grenoble.iot-lab.info", - "a8-118.grenoble.iot-lab.info", - "a8-119.grenoble.iot-lab.info", - "a8-120.grenoble.iot-lab.info", - "a8-121.grenoble.iot-lab.info", - "a8-122.grenoble.iot-lab.info", - "a8-123.grenoble.iot-lab.info", - "a8-124.grenoble.iot-lab.info", - "a8-127.grenoble.iot-lab.info", - "a8-128.grenoble.iot-lab.info", - "a8-133.grenoble.iot-lab.info", - "a8-140.grenoble.iot-lab.info", - "a8-141.grenoble.iot-lab.info", - "a8-145.grenoble.iot-lab.info", - "a8-146.grenoble.iot-lab.info", - "a8-149.grenoble.iot-lab.info", - "a8-150.grenoble.iot-lab.info", - "a8-151.grenoble.iot-lab.info", - "a8-152.grenoble.iot-lab.info", - "a8-153.grenoble.iot-lab.info", - "a8-154.grenoble.iot-lab.info", - "a8-156.grenoble.iot-lab.info", - "a8-157.grenoble.iot-lab.info", - "a8-158.grenoble.iot-lab.info", - "a8-160.grenoble.iot-lab.info", - "a8-161.grenoble.iot-lab.info", - "a8-162.grenoble.iot-lab.info", - "a8-164.grenoble.iot-lab.info", - "a8-165.grenoble.iot-lab.info", - "a8-166.grenoble.iot-lab.info", - "a8-167.grenoble.iot-lab.info", - "a8-168.grenoble.iot-lab.info", - "a8-169.grenoble.iot-lab.info", - "a8-170.grenoble.iot-lab.info", - "a8-172.grenoble.iot-lab.info", - "a8-173.grenoble.iot-lab.info", - "a8-174.grenoble.iot-lab.info", - "a8-175.grenoble.iot-lab.info", - "a8-176.grenoble.iot-lab.info", - "a8-178.grenoble.iot-lab.info", - "a8-179.grenoble.iot-lab.info", - "a8-180.grenoble.iot-lab.info", - "a8-181.grenoble.iot-lab.info", - "a8-182.grenoble.iot-lab.info", - "a8-183.grenoble.iot-lab.info", - "a8-184.grenoble.iot-lab.info", - "a8-185.grenoble.iot-lab.info", - "a8-186.grenoble.iot-lab.info", - "a8-187.grenoble.iot-lab.info", - "a8-189.grenoble.iot-lab.info", - "a8-190.grenoble.iot-lab.info", - "a8-191.grenoble.iot-lab.info", - "a8-192.grenoble.iot-lab.info", - "a8-193.grenoble.iot-lab.info", - "a8-194.grenoble.iot-lab.info", - "a8-195.grenoble.iot-lab.info", - "a8-196.grenoble.iot-lab.info", - "a8-197.grenoble.iot-lab.info", - "a8-198.grenoble.iot-lab.info", - "a8-199.grenoble.iot-lab.info", - "a8-200.grenoble.iot-lab.info", - "a8-201.grenoble.iot-lab.info", - "a8-202.grenoble.iot-lab.info", - "a8-203.grenoble.iot-lab.info", - "a8-204.grenoble.iot-lab.info", - "a8-205.grenoble.iot-lab.info", - "a8-206.grenoble.iot-lab.info", - "a8-207.grenoble.iot-lab.info", - "a8-208.grenoble.iot-lab.info", - "a8-209.grenoble.iot-lab.info", - "a8-210.grenoble.iot-lab.info", - "a8-211.grenoble.iot-lab.info", - "a8-212.grenoble.iot-lab.info", - "a8-213.grenoble.iot-lab.info", - "a8-214.grenoble.iot-lab.info", - "a8-215.grenoble.iot-lab.info", - "a8-216.grenoble.iot-lab.info", - "a8-217.grenoble.iot-lab.info", - "a8-218.grenoble.iot-lab.info", - "a8-219.grenoble.iot-lab.info", - "a8-220.grenoble.iot-lab.info", - "a8-221.grenoble.iot-lab.info", - "a8-222.grenoble.iot-lab.info", - "a8-223.grenoble.iot-lab.info", - "a8-224.grenoble.iot-lab.info", - "a8-225.grenoble.iot-lab.info", - "a8-226.grenoble.iot-lab.info", - "a8-227.grenoble.iot-lab.info", - "a8-228.grenoble.iot-lab.info" - ] -} \ No newline at end of file diff --git a/metas/strasbourg.csv b/metas/strasbourg.csv deleted file mode 100644 index a96ddb9eed..0000000000 --- a/metas/strasbourg.csv +++ /dev/null @@ -1,241 +0,0 @@ -mac,x,y,z -14-15-92-00-12-91-c0-d8,0.93,0.98,0.5 -14-15-92-00-12-91-b2-a7,0.93,0.98,1.5 -14-15-92-00-12-91-c6-f0,0.93,0.98,2.5 -14-15-92-00-12-91-bc-ab,1.93,0.98,0.5 -14-15-92-00-12-91-c6-6a,1.93,0.98,1.5 -14-15-92-00-12-91-b2-22,1.93,0.98,2.5 -14-15-92-00-12-91-b0-12,2.93,0.98,0.5 -14-15-92-00-12-91-c5-ac,2.93,0.98,1.5 -14-15-92-00-12-91-be-f2,2.93,0.98,2.5 -14-15-92-00-12-91-b7-b2,3.93,0.98,0.5 -14-15-92-00-12-91-b9-f1,3.93,0.98,1.5 -14-15-92-00-12-91-c2-23,3.93,0.98,2.5 -14-15-92-00-12-91-c3-a0,4.93,0.98,0.5 -14-15-92-00-12-91-cb-40,4.93,0.98,1.5 -14-15-92-00-12-91-bd-81,4.93,0.98,2.5 -14-15-92-00-12-91-af-a3,5.93,0.98,0.5 -14-15-92-00-12-91-be-5a,5.93,0.98,1.5 -14-15-92-00-12-91-1b-f9,5.93,0.98,2.5 -14-15-92-00-12-91-bc-a1,6.93,0.98,0.5 -14-15-92-00-12-91-c1-c3,6.93,0.98,1.5 -14-15-92-00-12-91-c6-ce,6.93,0.98,2.5 -14-15-92-00-12-91-c5-d4,7.93,0.98,0.5 -14-15-92-00-12-91-ba-38,7.93,0.98,1.5 -14-15-92-00-12-91-1f-59,7.93,0.98,2.5 -14-15-92-00-12-91-b8-62,0.93,1.98,0.5 -14-15-92-00-12-91-b5-e1,0.93,1.98,1.5 -14-15-92-00-12-91-bb-10,0.93,1.98,2.5 -14-15-92-00-12-91-c6-8a,1.93,1.98,0.5 -14-15-92-00-12-91-b5-76,1.93,1.98,1.5 -14-15-92-00-12-91-b3-43,1.93,1.98,2.5 -14-15-92-00-12-91-c1-9f,2.93,1.98,0.5 -14-15-92-00-12-91-1c-ef,2.93,1.98,1.5 -14-15-92-00-12-91-c2-25,2.93,1.98,2.5 -14-15-92-00-12-91-bc-7a,3.93,1.98,0.5 -14-15-92-00-12-91-ba-03,3.93,1.98,1.5 -14-15-92-00-12-91-c2-62,3.93,1.98,2.5 -14-15-92-00-12-91-ba-7f,4.93,1.98,0.5 -14-15-92-00-12-91-b6-14,4.93,1.98,1.5 -14-15-92-00-12-91-be-35,4.93,1.98,2.5 -14-15-92-00-12-91-b9-a0,5.93,1.98,0.5 -14-15-92-00-12-91-c9-fa,5.93,1.98,1.5 -14-15-92-00-12-91-b4-2e,5.93,1.98,2.5 -14-15-92-00-12-91-c9-35,6.93,1.98,0.5 -14-15-92-00-12-91-bd-d3,6.93,1.98,1.5 -14-15-92-00-12-91-b9-57,6.93,1.98,2.5 -14-15-92-00-12-91-c8-7f,7.93,1.98,0.5 -14-15-92-00-12-91-cd-ac,7.93,1.98,1.5 -14-15-92-00-12-91-bf-84,7.93,1.98,2.5 -14-15-92-00-12-91-cf-14,0.93,2.98,0.5 -14-15-92-00-12-91-c6-05,0.93,2.98,1.5 -14-15-92-00-12-91-af-8a,0.93,2.98,2.5 -14-15-92-00-12-91-c3-5d,1.93,2.98,0.5 -14-15-92-00-12-91-ca-60,1.93,2.98,1.5 -14-15-92-00-12-91-c0-9b,1.93,2.98,2.5 -14-15-92-00-12-91-c4-aa,2.93,2.98,0.5 -14-15-92-00-12-91-ca-01,2.93,2.98,1.5 -14-15-92-00-12-91-bb-25,2.93,2.98,2.5 -14-15-92-00-12-91-b7-af,3.93,2.98,0.5 -14-15-92-00-12-91-b0-57,3.93,2.98,1.5 -14-15-92-00-12-91-cf-0a,3.93,2.98,2.5 -14-15-92-00-12-91-ca-27,4.93,2.98,0.5 -14-15-92-00-12-91-cb-57,4.93,2.98,1.5 -14-15-92-00-12-91-cb-af,4.93,2.98,2.5 -14-15-92-00-12-91-c7-de,5.93,2.98,0.5 -14-15-92-00-12-91-bc-f4,5.93,2.98,1.5 -14-15-92-00-12-91-bf-80,5.93,2.98,2.5 -14-15-92-00-12-91-bd-b0,6.93,2.98,0.5 -14-15-92-00-12-91-be-6b,6.93,2.98,1.5 -14-15-92-00-12-91-cd-74,6.93,2.98,2.5 -14-15-92-00-12-91-b7-e2,7.93,2.98,0.5 -14-15-92-00-12-91-cc-5e,7.93,2.98,1.5 -14-15-92-00-12-91-b4-67,7.93,2.98,2.5 -14-15-92-00-12-91-ce-cf,0.93,3.98,0.5 -14-15-92-00-12-91-cd-64,0.93,3.98,1.5 -14-15-92-00-12-91-c9-cf,0.93,3.98,2.5 -14-15-92-00-12-91-b2-3c,1.93,3.98,0.5 -14-15-92-00-12-91-cd-18,1.93,3.98,1.5 -14-15-92-00-12-91-bb-3a,1.93,3.98,2.5 -14-15-92-00-12-91-c9-87,2.93,3.98,0.5 -14-15-92-00-12-91-c8-ea,2.93,3.98,1.5 -14-15-92-00-12-91-b5-c5,2.93,3.98,2.5 -14-15-92-00-12-91-1f-3c,3.93,3.98,0.5 -14-15-92-00-12-91-bb-11,3.93,3.98,1.5 -14-15-92-00-12-91-c7-df,3.93,3.98,2.5 -14-15-92-00-12-91-c9-86,4.93,3.98,0.5 -14-15-92-00-12-91-c5-e2,4.93,3.98,1.5 -14-15-92-00-12-91-c7-55,4.93,3.98,2.5 -14-15-92-00-12-91-ca-2f,5.93,3.98,0.5 -14-15-92-00-12-91-b1-38,5.93,3.98,1.5 -14-15-92-00-12-91-c9-2f,5.93,3.98,2.5 -14-15-92-00-12-91-c6-81,6.93,3.98,0.5 -14-15-92-00-12-91-cd-2e,6.93,3.98,1.5 -14-15-92-00-12-91-c1-d5,6.93,3.98,2.5 -14-15-92-00-12-91-cc-22,7.93,3.98,0.5 -14-15-92-00-12-91-c4-e5,7.93,3.98,1.5 -14-15-92-00-12-91-c5-b3,7.93,3.98,2.5 -14-15-92-00-12-91-bf-b9,0.93,4.98,0.5 -14-15-92-00-12-91-b8-fb,0.93,4.98,1.5 -14-15-92-00-12-91-bc-1c,0.93,4.98,2.5 -14-15-92-00-12-91-ba-e2,1.93,4.98,0.5 -14-15-92-00-12-91-bb-ff,1.93,4.98,1.5 -14-15-92-00-12-91-c8-81,1.93,4.98,2.5 -14-15-92-00-12-91-ca-54,2.93,4.98,0.5 -14-15-92-00-12-91-c7-1e,2.93,4.98,1.5 -14-15-92-00-12-91-bb-7d,2.93,4.98,2.5 -14-15-92-00-12-91-1f-94,3.93,4.98,0.5 -14-15-92-00-12-91-b4-d8,3.93,4.98,1.5 -14-15-92-00-12-91-cc-cb,3.93,4.98,2.5 -14-15-92-00-12-91-be-59,4.93,4.98,0.5 -14-15-92-00-12-91-ce-b0,4.93,4.98,1.5 -14-15-92-00-12-91-b5-e2,4.93,4.98,2.5 -14-15-92-00-12-91-c3-02,5.93,4.98,0.5 -14-15-92-00-12-91-af-64,5.93,4.98,1.5 -14-15-92-00-12-91-ce-d2,5.93,4.98,2.5 -14-15-92-00-12-91-ce-d4,6.93,4.98,0.5 -14-15-92-00-12-91-20-3f,6.93,4.98,1.5 -14-15-92-00-12-91-c1-4d,6.93,4.98,2.5 -14-15-92-00-12-91-b0-d7,7.93,4.98,0.5 -14-15-92-00-12-91-1c-c4,7.93,4.98,1.5 -14-15-92-00-12-91-bc-76,7.93,4.98,2.5 -14-15-92-00-12-91-b6-34,0.93,5.98,0.5 -14-15-92-00-12-91-af-9d,0.93,5.98,1.5 -14-15-92-00-12-91-bc-2c,0.93,5.98,2.5 -14-15-92-00-12-91-cb-20,1.93,5.98,0.5 -14-15-92-00-12-91-bb-fc,1.93,5.98,1.5 -14-15-92-00-12-91-c2-e8,1.93,5.98,2.5 -14-15-92-00-12-91-cd-45,2.93,5.98,0.5 -14-15-92-00-12-91-b2-68,2.93,5.98,1.5 -14-15-92-00-12-91-c3-96,2.93,5.98,2.5 -14-15-92-00-12-91-c1-d4,3.93,5.98,0.5 -14-15-92-00-12-91-ca-19,3.93,5.98,1.5 -14-15-92-00-12-91-b5-4e,3.93,5.98,2.5 -14-15-92-00-12-91-b6-be,4.93,5.98,0.5 -14-15-92-00-12-91-b0-db,4.93,5.98,1.5 -14-15-92-00-12-91-bb-e8,4.93,5.98,2.5 -14-15-92-00-12-91-ce-dc,5.93,5.98,0.5 -14-15-92-00-12-91-c6-77,5.93,5.98,1.5 -14-15-92-00-12-91-c2-11,5.93,5.98,2.5 -14-15-92-00-12-91-c4-7f,6.93,5.98,0.5 -14-15-92-00-12-91-c3-81,6.93,5.98,1.5 -14-15-92-00-12-91-b2-fa,6.93,5.98,2.5 -14-15-92-00-12-91-ca-a0,7.93,5.98,0.5 -14-15-92-00-12-91-af-d3,7.93,5.98,1.5 -14-15-92-00-12-91-b2-56,7.93,5.98,2.5 -14-15-92-00-12-91-c9-d8,0.93,6.98,0.5 -14-15-92-00-12-91-ce-fd,0.93,6.98,1.5 -14-15-92-00-12-91-ba-79,0.93,6.98,2.5 -14-15-92-00-12-91-b7-1d,1.93,6.98,0.5 -14-15-92-00-12-91-c7-e8,1.93,6.98,1.5 -14-15-92-00-12-91-c9-41,1.93,6.98,2.5 -14-15-92-00-12-91-ba-7d,2.93,6.98,0.5 -14-15-92-00-12-91-ba-0b,2.93,6.98,1.5 -14-15-92-00-12-91-b7-fe,2.93,6.98,2.5 -14-15-92-00-12-91-b9-0e,3.93,6.98,0.5 -14-15-92-00-12-91-c8-4e,3.93,6.98,1.5 -14-15-92-00-12-91-c7-ad,3.93,6.98,2.5 -14-15-92-00-12-91-bd-0f,4.93,6.98,0.5 -14-15-92-00-12-91-ce-62,4.93,6.98,1.5 -14-15-92-00-12-91-b4-f8,4.93,6.98,2.5 -14-15-92-00-12-91-b7-8d,5.93,6.98,0.5 -14-15-92-00-12-91-bf-13,5.93,6.98,1.5 -14-15-92-00-12-91-ba-bf,5.93,6.98,2.5 -14-15-92-00-12-91-bc-2e,6.93,6.98,0.5 -14-15-92-00-12-91-be-2b,6.93,6.98,1.5 -14-15-92-00-12-91-b4-4f,6.93,6.98,2.5 -14-15-92-00-12-91-c1-28,7.93,6.98,0.5 -14-15-92-00-12-91-c8-6d,7.93,6.98,1.5 -14-15-92-00-12-91-b1-a2,7.93,6.98,2.5 -14-15-92-00-12-91-bd-cc,0.93,7.98,0.5 -14-15-92-00-12-91-b8-fa,0.93,7.98,1.5 -14-15-92-00-12-91-1c-26,0.93,7.98,2.5 -14-15-92-00-12-91-bf-f3,1.93,7.98,0.5 -14-15-92-00-12-91-b7-e7,1.93,7.98,1.5 -14-15-92-00-12-91-ca-bc,1.93,7.98,2.5 -14-15-92-00-12-91-c5-d6,2.93,7.98,0.5 -14-15-92-00-12-91-cb-6c,2.93,7.98,1.5 -14-15-92-00-12-91-cc-0a,2.93,7.98,2.5 -14-15-92-00-12-91-b8-47,3.93,7.98,0.5 -14-15-92-00-12-91-c0-2a,3.93,7.98,1.5 -14-15-92-00-12-91-ba-20,3.93,7.98,2.5 -14-15-92-00-12-91-c9-d5,4.93,7.98,0.5 -14-15-92-00-12-91-b6-61,4.93,7.98,1.5 -14-15-92-00-12-91-be-23,4.93,7.98,2.5 -14-15-92-00-12-91-b7-b0,5.93,7.98,0.5 -14-15-92-00-12-91-b4-b9,5.93,7.98,1.5 -14-15-92-00-12-91-bc-68,5.93,7.98,2.5 -14-15-92-00-12-91-b7-c1,6.93,7.98,0.5 -14-15-92-00-12-91-b7-f7,6.93,7.98,1.5 -14-15-92-00-12-91-1c-ad,6.93,7.98,2.5 -14-15-92-00-12-91-1f-7b,7.93,7.98,0.5 -14-15-92-00-12-91-b5-c4,7.93,7.98,1.5 -14-15-92-00-12-91-bf-b7,7.93,7.98,2.5 -14-15-92-00-12-91-b9-dd,0.93,8.98,0.5 -14-15-92-00-12-91-cd-65,0.93,8.98,1.5 -14-15-92-00-12-91-c7-90,0.93,8.98,2.5 -14-15-92-00-12-91-b9-cf,1.93,8.98,0.5 -14-15-92-00-12-91-b3-7d,1.93,8.98,1.5 -14-15-92-00-12-91-c0-c2,1.93,8.98,2.5 -14-15-92-00-12-91-bc-ff,2.93,8.98,0.5 -14-15-92-00-12-91-b1-62,2.93,8.98,1.5 -14-15-92-00-12-91-b3-6d,2.93,8.98,2.5 -14-15-92-00-12-91-af-a5,3.93,8.98,0.5 -14-15-92-00-12-91-bc-e0,3.93,8.98,1.5 -14-15-92-00-12-91-c6-10,3.93,8.98,2.5 -14-15-92-00-12-91-b4-f2,4.93,8.98,0.5 -14-15-92-00-12-91-bc-93,4.93,8.98,1.5 -14-15-92-00-12-91-ca-df,4.93,8.98,2.5 -14-15-92-00-12-91-c3-24,5.93,8.98,0.5 -14-15-92-00-12-91-bf-07,5.93,8.98,1.5 -14-15-92-00-12-91-cd-83,5.93,8.98,2.5 -14-15-92-00-12-91-ce-46,6.93,8.98,0.5 -14-15-92-00-12-91-ba-40,6.93,8.98,1.5 -14-15-92-00-12-91-b3-7a,6.93,8.98,2.5 -14-15-92-00-12-91-c8-bf,7.93,8.98,0.5 -14-15-92-00-12-91-be-c0,7.93,8.98,1.5 -14-15-92-00-12-91-20-37,7.93,8.98,2.5 -14-15-92-00-12-91-ce-48,0.93,9.98,0.5 -14-15-92-00-12-91-b8-14,0.93,9.98,1.5 -14-15-92-00-12-91-b8-a6,0.93,9.98,2.5 -14-15-92-00-12-91-bd-b9,1.93,9.98,0.5 -14-15-92-00-12-91-b6-75,1.93,9.98,1.5 -14-15-92-00-12-91-b7-5f,1.93,9.98,2.5 -14-15-92-00-12-91-af-eb,2.93,9.98,0.5 -14-15-92-00-12-91-b4-2a,2.93,9.98,1.5 -14-15-92-00-12-91-b6-3a,2.93,9.98,2.5 -14-15-92-00-12-91-bf-23,3.93,9.98,0.5 -14-15-92-00-12-91-bf-f9,3.93,9.98,1.5 -14-15-92-00-12-91-c1-cd,3.93,9.98,2.5 -14-15-92-00-12-91-b3-8d,4.93,9.98,0.5 -14-15-92-00-12-91-ce-99,4.93,9.98,1.5 -14-15-92-00-12-91-b1-69,4.93,9.98,2.5 -14-15-92-00-12-91-c6-c5,5.93,9.98,0.5 -14-15-92-00-12-91-b8-e7,5.93,9.98,1.5 -14-15-92-00-12-91-c3-94,5.93,9.98,2.5 -14-15-92-00-12-91-b1-09,6.93,9.98,0.5 -14-15-92-00-12-91-bb-e0,6.93,9.98,1.5 -14-15-92-00-12-91-cd-ef,6.93,9.98,2.5 -14-15-92-00-12-91-cb-29,7.93,9.98,0.5 -14-15-92-00-12-91-b3-8f,7.93,9.98,1.5 -14-15-92-00-12-91-b8-9b,7.93,9.98,2.5 diff --git a/metas/strasbourg.json b/metas/strasbourg.json deleted file mode 100644 index af50fac69c..0000000000 --- a/metas/strasbourg.json +++ /dev/null @@ -1,2552 +0,0 @@ -[ - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-1.strasbourg.iot-lab.info", - "state": "Alive", - "y": "9.00", - "x": "0.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-2.strasbourg.iot-lab.info", - "state": "Alive", - "y": "9.00", - "x": "0.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-3.strasbourg.iot-lab.info", - "state": "Alive", - "y": "9.00", - "x": "0.00", - "z": "2.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-4.strasbourg.iot-lab.info", - "state": "Alive", - "y": "9.00", - "x": "1.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-5.strasbourg.iot-lab.info", - "state": "Alive", - "y": "9.00", - "x": "1.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-6.strasbourg.iot-lab.info", - "state": "Alive", - "y": "9.00", - "x": "1.00", - "z": "2.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-7.strasbourg.iot-lab.info", - "state": "Alive", - "y": "9.00", - "x": "2.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-8.strasbourg.iot-lab.info", - "state": "Alive", - "y": "9.00", - "x": "2.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-9.strasbourg.iot-lab.info", - "state": "Alive", - "y": "9.00", - "x": "2.00", - "z": "2.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-10.strasbourg.iot-lab.info", - "state": "Alive", - "y": "9.00", - "x": "3.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-11.strasbourg.iot-lab.info", - "state": "Alive", - "y": "9.00", - "x": "3.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-12.strasbourg.iot-lab.info", - "state": "Alive", - "y": "9.00", - "x": "3.00", - "z": "2.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-13.strasbourg.iot-lab.info", - "state": "Alive", - "y": "9.00", - "x": "4.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-14.strasbourg.iot-lab.info", - "state": "Alive", - "y": "9.00", - "x": "4.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-15.strasbourg.iot-lab.info", - "state": "Alive", - "y": "9.00", - "x": "4.00", - "z": "2.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-16.strasbourg.iot-lab.info", - "state": "Alive", - "y": "9.00", - "x": "5.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-17.strasbourg.iot-lab.info", - "state": "Alive", - "y": "9.00", - "x": "5.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-18.strasbourg.iot-lab.info", - "state": "Alive", - "y": "9.00", - "x": "5.00", - "z": "2.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-19.strasbourg.iot-lab.info", - "state": "Alive", - "y": "9.00", - "x": "6.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-20.strasbourg.iot-lab.info", - "state": "Alive", - "y": "9.00", - "x": "6.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-21.strasbourg.iot-lab.info", - "state": "Alive", - "y": "9.00", - "x": "6.00", - "z": "2.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-22.strasbourg.iot-lab.info", - "state": "Alive", - "y": "9.00", - "x": "7.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-23.strasbourg.iot-lab.info", - "state": "Alive", - "y": "9.00", - "x": "7.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-25.strasbourg.iot-lab.info", - "state": "Alive", - "y": "8.00", - "x": "0.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-26.strasbourg.iot-lab.info", - "state": "Alive", - "y": "8.00", - "x": "0.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-27.strasbourg.iot-lab.info", - "state": "Alive", - "y": "8.00", - "x": "0.00", - "z": "2.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-28.strasbourg.iot-lab.info", - "state": "Alive", - "y": "8.00", - "x": "1.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-29.strasbourg.iot-lab.info", - "state": "Alive", - "y": "8.00", - "x": "1.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-30.strasbourg.iot-lab.info", - "state": "Alive", - "y": "8.00", - "x": "1.00", - "z": "2.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-31.strasbourg.iot-lab.info", - "state": "Alive", - "y": "8.00", - "x": "2.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-32.strasbourg.iot-lab.info", - "state": "Alive", - "y": "8.00", - "x": "2.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-33.strasbourg.iot-lab.info", - "state": "Alive", - "y": "8.00", - "x": "2.00", - "z": "2.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-34.strasbourg.iot-lab.info", - "state": "Alive", - "y": "8.00", - "x": "3.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-35.strasbourg.iot-lab.info", - "state": "Alive", - "y": "8.00", - "x": "3.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-36.strasbourg.iot-lab.info", - "state": "Alive", - "y": "8.00", - "x": "3.00", - "z": "2.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-37.strasbourg.iot-lab.info", - "state": "Alive", - "y": "8.00", - "x": "4.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-38.strasbourg.iot-lab.info", - "state": "Alive", - "y": "8.00", - "x": "4.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-39.strasbourg.iot-lab.info", - "state": "Alive", - "y": "8.00", - "x": "4.00", - "z": "2.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-40.strasbourg.iot-lab.info", - "state": "Alive", - "y": "8.00", - "x": "5.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-41.strasbourg.iot-lab.info", - "state": "Alive", - "y": "8.00", - "x": "5.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-42.strasbourg.iot-lab.info", - "state": "Alive", - "y": "8.00", - "x": "5.00", - "z": "2.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-43.strasbourg.iot-lab.info", - "state": "Alive", - "y": "8.00", - "x": "6.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-44.strasbourg.iot-lab.info", - "state": "Alive", - "y": "8.00", - "x": "6.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-45.strasbourg.iot-lab.info", - "state": "Alive", - "y": "8.00", - "x": "6.00", - "z": "2.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-46.strasbourg.iot-lab.info", - "state": "Alive", - "y": "8.00", - "x": "7.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-47.strasbourg.iot-lab.info", - "state": "Alive", - "y": "8.00", - "x": "7.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-48.strasbourg.iot-lab.info", - "state": "Alive", - "y": "8.00", - "x": "7.00", - "z": "2.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-49.strasbourg.iot-lab.info", - "state": "Alive", - "y": "7.00", - "x": "0.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-50.strasbourg.iot-lab.info", - "state": "Alive", - "y": "7.00", - "x": "0.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-51.strasbourg.iot-lab.info", - "state": "Alive", - "y": "7.00", - "x": "0.00", - "z": "2.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-52.strasbourg.iot-lab.info", - "state": "Alive", - "y": "7.00", - "x": "1.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-53.strasbourg.iot-lab.info", - "state": "Alive", - "y": "7.00", - "x": "1.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-54.strasbourg.iot-lab.info", - "state": "Alive", - "y": "7.00", - "x": "1.00", - "z": "2.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-55.strasbourg.iot-lab.info", - "state": "Alive", - "y": "7.00", - "x": "2.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-56.strasbourg.iot-lab.info", - "state": "Alive", - "y": "7.00", - "x": "2.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-57.strasbourg.iot-lab.info", - "state": "Alive", - "y": "7.00", - "x": "2.00", - "z": "2.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-58.strasbourg.iot-lab.info", - "state": "Alive", - "y": "7.00", - "x": "3.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-60.strasbourg.iot-lab.info", - "state": "Alive", - "y": "7.00", - "x": "3.00", - "z": "2.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-61.strasbourg.iot-lab.info", - "state": "Alive", - "y": "7.00", - "x": "4.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-62.strasbourg.iot-lab.info", - "state": "Alive", - "y": "7.00", - "x": "4.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-63.strasbourg.iot-lab.info", - "state": "Alive", - "y": "7.00", - "x": "4.00", - "z": "2.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-64.strasbourg.iot-lab.info", - "state": "Alive", - "y": "7.00", - "x": "5.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-65.strasbourg.iot-lab.info", - "state": "Alive", - "y": "7.00", - "x": "5.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-66.strasbourg.iot-lab.info", - "state": "Alive", - "y": "7.00", - "x": "5.00", - "z": "2.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-67.strasbourg.iot-lab.info", - "state": "Alive", - "y": "7.00", - "x": "6.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-68.strasbourg.iot-lab.info", - "state": "Alive", - "y": "7.00", - "x": "6.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-69.strasbourg.iot-lab.info", - "state": "Alive", - "y": "7.00", - "x": "6.00", - "z": "2.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-70.strasbourg.iot-lab.info", - "state": "Alive", - "y": "7.00", - "x": "7.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-71.strasbourg.iot-lab.info", - "state": "Alive", - "y": "7.00", - "x": "7.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-72.strasbourg.iot-lab.info", - "state": "Alive", - "y": "7.00", - "x": "7.00", - "z": "2.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-73.strasbourg.iot-lab.info", - "state": "Alive", - "y": "6.00", - "x": "0.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-74.strasbourg.iot-lab.info", - "state": "Alive", - "y": "6.00", - "x": "0.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-75.strasbourg.iot-lab.info", - "state": "Alive", - "y": "6.00", - "x": "0.00", - "z": "2.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-76.strasbourg.iot-lab.info", - "state": "Alive", - "y": "6.00", - "x": "1.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-77.strasbourg.iot-lab.info", - "state": "Alive", - "y": "6.00", - "x": "1.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-78.strasbourg.iot-lab.info", - "state": "Alive", - "y": "6.00", - "x": "1.00", - "z": "2.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-79.strasbourg.iot-lab.info", - "state": "Alive", - "y": "6.00", - "x": "2.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-80.strasbourg.iot-lab.info", - "state": "Alive", - "y": "6.00", - "x": "2.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-81.strasbourg.iot-lab.info", - "state": "Alive", - "y": "6.00", - "x": "2.00", - "z": "2.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-82.strasbourg.iot-lab.info", - "state": "Alive", - "y": "6.00", - "x": "3.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-83.strasbourg.iot-lab.info", - "state": "Alive", - "y": "6.00", - "x": "3.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-84.strasbourg.iot-lab.info", - "state": "Alive", - "y": "6.00", - "x": "3.00", - "z": "2.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-85.strasbourg.iot-lab.info", - "state": "Alive", - "y": "6.00", - "x": "4.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-86.strasbourg.iot-lab.info", - "state": "Alive", - "y": "6.00", - "x": "4.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-87.strasbourg.iot-lab.info", - "state": "Alive", - "y": "6.00", - "x": "4.00", - "z": "2.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-88.strasbourg.iot-lab.info", - "state": "Alive", - "y": "6.00", - "x": "5.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-89.strasbourg.iot-lab.info", - "state": "Alive", - "y": "6.00", - "x": "5.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-90.strasbourg.iot-lab.info", - "state": "Alive", - "y": "6.00", - "x": "5.00", - "z": "2.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-91.strasbourg.iot-lab.info", - "state": "Alive", - "y": "6.00", - "x": "6.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-92.strasbourg.iot-lab.info", - "state": "Alive", - "y": "6.00", - "x": "6.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-93.strasbourg.iot-lab.info", - "state": "Alive", - "y": "6.00", - "x": "6.00", - "z": "2.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-94.strasbourg.iot-lab.info", - "state": "Alive", - "y": "6.00", - "x": "7.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-95.strasbourg.iot-lab.info", - "state": "Alive", - "y": "6.00", - "x": "7.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-96.strasbourg.iot-lab.info", - "state": "Alive", - "y": "6.00", - "x": "7.00", - "z": "2.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-97.strasbourg.iot-lab.info", - "state": "Alive", - "y": "5.00", - "x": "0.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-98.strasbourg.iot-lab.info", - "state": "Alive", - "y": "5.00", - "x": "0.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-99.strasbourg.iot-lab.info", - "state": "Alive", - "y": "5.00", - "x": "0.00", - "z": "2.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-100.strasbourg.iot-lab.info", - "state": "Alive", - "y": "5.00", - "x": "1.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-101.strasbourg.iot-lab.info", - "state": "Alive", - "y": "5.00", - "x": "1.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-102.strasbourg.iot-lab.info", - "state": "Alive", - "y": "5.00", - "x": "1.00", - "z": "2.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-103.strasbourg.iot-lab.info", - "state": "Alive", - "y": "5.00", - "x": "2.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-104.strasbourg.iot-lab.info", - "state": "Alive", - "y": "5.00", - "x": "2.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-105.strasbourg.iot-lab.info", - "state": "Alive", - "y": "5.00", - "x": "2.00", - "z": "2.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-106.strasbourg.iot-lab.info", - "state": "Alive", - "y": "5.00", - "x": "3.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-107.strasbourg.iot-lab.info", - "state": "Alive", - "y": "5.00", - "x": "3.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-108.strasbourg.iot-lab.info", - "state": "Alive", - "y": "5.00", - "x": "3.00", - "z": "2.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-109.strasbourg.iot-lab.info", - "state": "Alive", - "y": "5.00", - "x": "4.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-110.strasbourg.iot-lab.info", - "state": "Alive", - "y": "5.00", - "x": "4.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-111.strasbourg.iot-lab.info", - "state": "Alive", - "y": "5.00", - "x": "4.00", - "z": "2.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-112.strasbourg.iot-lab.info", - "state": "Alive", - "y": "5.00", - "x": "5.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-113.strasbourg.iot-lab.info", - "state": "Alive", - "y": "5.00", - "x": "5.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-114.strasbourg.iot-lab.info", - "state": "Alive", - "y": "5.00", - "x": "5.00", - "z": "2.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-115.strasbourg.iot-lab.info", - "state": "Alive", - "y": "5.00", - "x": "6.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-116.strasbourg.iot-lab.info", - "state": "Alive", - "y": "5.00", - "x": "6.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-117.strasbourg.iot-lab.info", - "state": "Alive", - "y": "5.00", - "x": "6.00", - "z": "2.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-118.strasbourg.iot-lab.info", - "state": "Alive", - "y": "5.00", - "x": "7.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-119.strasbourg.iot-lab.info", - "state": "Alive", - "y": "5.00", - "x": "7.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-120.strasbourg.iot-lab.info", - "state": "Alive", - "y": "5.00", - "x": "7.00", - "z": "2.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-121.strasbourg.iot-lab.info", - "state": "Alive", - "y": "4.00", - "x": "0.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-122.strasbourg.iot-lab.info", - "state": "Alive", - "y": "4.00", - "x": "0.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-123.strasbourg.iot-lab.info", - "state": "Alive", - "y": "4.00", - "x": "0.00", - "z": "2.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-124.strasbourg.iot-lab.info", - "state": "Alive", - "y": "4.00", - "x": "1.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-125.strasbourg.iot-lab.info", - "state": "Alive", - "y": "4.00", - "x": "1.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-126.strasbourg.iot-lab.info", - "state": "Alive", - "y": "4.00", - "x": "1.00", - "z": "2.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-127.strasbourg.iot-lab.info", - "state": "Alive", - "y": "4.00", - "x": "2.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-128.strasbourg.iot-lab.info", - "state": "Alive", - "y": "4.00", - "x": "2.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-129.strasbourg.iot-lab.info", - "state": "Alive", - "y": "4.00", - "x": "2.00", - "z": "2.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-130.strasbourg.iot-lab.info", - "state": "Alive", - "y": "4.00", - "x": "3.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-131.strasbourg.iot-lab.info", - "state": "Alive", - "y": "4.00", - "x": "3.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-132.strasbourg.iot-lab.info", - "state": "Alive", - "y": "4.00", - "x": "3.00", - "z": "2.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-133.strasbourg.iot-lab.info", - "state": "Alive", - "y": "4.00", - "x": "4.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-134.strasbourg.iot-lab.info", - "state": "Alive", - "y": "4.00", - "x": "4.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-135.strasbourg.iot-lab.info", - "state": "Alive", - "y": "4.00", - "x": "4.00", - "z": "2.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-136.strasbourg.iot-lab.info", - "state": "Alive", - "y": "4.00", - "x": "5.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-138.strasbourg.iot-lab.info", - "state": "Alive", - "y": "4.00", - "x": "5.00", - "z": "2.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-139.strasbourg.iot-lab.info", - "state": "Alive", - "y": "4.00", - "x": "6.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-140.strasbourg.iot-lab.info", - "state": "Alive", - "y": "4.00", - "x": "6.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-141.strasbourg.iot-lab.info", - "state": "Alive", - "y": "4.00", - "x": "6.00", - "z": "2.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-142.strasbourg.iot-lab.info", - "state": "Alive", - "y": "4.00", - "x": "7.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-143.strasbourg.iot-lab.info", - "state": "Alive", - "y": "4.00", - "x": "7.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-145.strasbourg.iot-lab.info", - "state": "Alive", - "y": "3.00", - "x": "0.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-146.strasbourg.iot-lab.info", - "state": "Alive", - "y": "3.00", - "x": "0.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-147.strasbourg.iot-lab.info", - "state": "Alive", - "y": "3.00", - "x": "0.00", - "z": "2.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-148.strasbourg.iot-lab.info", - "state": "Alive", - "y": "3.00", - "x": "1.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-149.strasbourg.iot-lab.info", - "state": "Alive", - "y": "3.00", - "x": "1.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-150.strasbourg.iot-lab.info", - "state": "Alive", - "y": "3.00", - "x": "1.00", - "z": "2.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-151.strasbourg.iot-lab.info", - "state": "Alive", - "y": "3.00", - "x": "2.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-152.strasbourg.iot-lab.info", - "state": "Alive", - "y": "3.00", - "x": "2.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-153.strasbourg.iot-lab.info", - "state": "Alive", - "y": "3.00", - "x": "2.00", - "z": "2.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-154.strasbourg.iot-lab.info", - "state": "Alive", - "y": "3.00", - "x": "3.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-155.strasbourg.iot-lab.info", - "state": "Alive", - "y": "3.00", - "x": "3.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-156.strasbourg.iot-lab.info", - "state": "Alive", - "y": "3.00", - "x": "3.00", - "z": "2.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-157.strasbourg.iot-lab.info", - "state": "Alive", - "y": "3.00", - "x": "4.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-158.strasbourg.iot-lab.info", - "state": "Alive", - "y": "3.00", - "x": "4.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-159.strasbourg.iot-lab.info", - "state": "Alive", - "y": "3.00", - "x": "4.00", - "z": "2.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-160.strasbourg.iot-lab.info", - "state": "Alive", - "y": "3.00", - "x": "5.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-161.strasbourg.iot-lab.info", - "state": "Alive", - "y": "3.00", - "x": "5.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-162.strasbourg.iot-lab.info", - "state": "Alive", - "y": "3.00", - "x": "5.00", - "z": "2.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-163.strasbourg.iot-lab.info", - "state": "Alive", - "y": "3.00", - "x": "6.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-164.strasbourg.iot-lab.info", - "state": "Alive", - "y": "3.00", - "x": "6.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-165.strasbourg.iot-lab.info", - "state": "Alive", - "y": "3.00", - "x": "6.00", - "z": "2.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-166.strasbourg.iot-lab.info", - "state": "Alive", - "y": "3.00", - "x": "7.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-167.strasbourg.iot-lab.info", - "state": "Alive", - "y": "3.00", - "x": "7.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-168.strasbourg.iot-lab.info", - "state": "Alive", - "y": "3.00", - "x": "7.00", - "z": "2.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-169.strasbourg.iot-lab.info", - "state": "Alive", - "y": "2.00", - "x": "0.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-170.strasbourg.iot-lab.info", - "state": "Alive", - "y": "2.00", - "x": "0.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-171.strasbourg.iot-lab.info", - "state": "Alive", - "y": "2.00", - "x": "0.00", - "z": "2.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-172.strasbourg.iot-lab.info", - "state": "Alive", - "y": "2.00", - "x": "1.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-173.strasbourg.iot-lab.info", - "state": "Alive", - "y": "2.00", - "x": "1.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-174.strasbourg.iot-lab.info", - "state": "Alive", - "y": "2.00", - "x": "1.00", - "z": "2.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-175.strasbourg.iot-lab.info", - "state": "Alive", - "y": "2.00", - "x": "2.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-176.strasbourg.iot-lab.info", - "state": "Alive", - "y": "2.00", - "x": "2.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-177.strasbourg.iot-lab.info", - "state": "Alive", - "y": "2.00", - "x": "2.00", - "z": "2.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-178.strasbourg.iot-lab.info", - "state": "Alive", - "y": "2.00", - "x": "3.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-179.strasbourg.iot-lab.info", - "state": "Alive", - "y": "2.00", - "x": "3.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-180.strasbourg.iot-lab.info", - "state": "Alive", - "y": "2.00", - "x": "3.00", - "z": "2.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-181.strasbourg.iot-lab.info", - "state": "Alive", - "y": "2.00", - "x": "4.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-182.strasbourg.iot-lab.info", - "state": "Alive", - "y": "2.00", - "x": "4.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-183.strasbourg.iot-lab.info", - "state": "Alive", - "y": "2.00", - "x": "4.00", - "z": "2.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-184.strasbourg.iot-lab.info", - "state": "Alive", - "y": "2.00", - "x": "5.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-185.strasbourg.iot-lab.info", - "state": "Alive", - "y": "2.00", - "x": "5.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-186.strasbourg.iot-lab.info", - "state": "Alive", - "y": "2.00", - "x": "5.00", - "z": "2.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-187.strasbourg.iot-lab.info", - "state": "Alive", - "y": "2.00", - "x": "6.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-188.strasbourg.iot-lab.info", - "state": "Alive", - "y": "2.00", - "x": "6.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-189.strasbourg.iot-lab.info", - "state": "Alive", - "y": "2.00", - "x": "6.00", - "z": "2.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-190.strasbourg.iot-lab.info", - "state": "Alive", - "y": "2.00", - "x": "7.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-191.strasbourg.iot-lab.info", - "state": "Alive", - "y": "2.00", - "x": "7.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-192.strasbourg.iot-lab.info", - "state": "Alive", - "y": "2.00", - "x": "7.00", - "z": "2.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-193.strasbourg.iot-lab.info", - "state": "Alive", - "y": "1.00", - "x": "0.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-194.strasbourg.iot-lab.info", - "state": "Alive", - "y": "1.00", - "x": "0.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-195.strasbourg.iot-lab.info", - "state": "Alive", - "y": "1.00", - "x": "0.00", - "z": "2.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-196.strasbourg.iot-lab.info", - "state": "Alive", - "y": "1.00", - "x": "1.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-197.strasbourg.iot-lab.info", - "state": "Alive", - "y": "1.00", - "x": "1.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-198.strasbourg.iot-lab.info", - "state": "Alive", - "y": "1.00", - "x": "1.00", - "z": "2.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-199.strasbourg.iot-lab.info", - "state": "Alive", - "y": "1.00", - "x": "2.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-200.strasbourg.iot-lab.info", - "state": "Alive", - "y": "1.00", - "x": "2.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-201.strasbourg.iot-lab.info", - "state": "Alive", - "y": "1.00", - "x": "2.00", - "z": "2.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-202.strasbourg.iot-lab.info", - "state": "Alive", - "y": "1.00", - "x": "3.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-203.strasbourg.iot-lab.info", - "state": "Alive", - "y": "1.00", - "x": "3.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-204.strasbourg.iot-lab.info", - "state": "Alive", - "y": "1.00", - "x": "3.00", - "z": "2.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-205.strasbourg.iot-lab.info", - "state": "Alive", - "y": "1.00", - "x": "4.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-206.strasbourg.iot-lab.info", - "state": "Alive", - "y": "1.00", - "x": "4.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-207.strasbourg.iot-lab.info", - "state": "Alive", - "y": "1.00", - "x": "4.00", - "z": "2.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-208.strasbourg.iot-lab.info", - "state": "Alive", - "y": "1.00", - "x": "5.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-209.strasbourg.iot-lab.info", - "state": "Alive", - "y": "1.00", - "x": "5.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-210.strasbourg.iot-lab.info", - "state": "Alive", - "y": "1.00", - "x": "5.00", - "z": "2.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-211.strasbourg.iot-lab.info", - "state": "Alive", - "y": "1.00", - "x": "6.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-212.strasbourg.iot-lab.info", - "state": "Alive", - "y": "1.00", - "x": "6.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-213.strasbourg.iot-lab.info", - "state": "Alive", - "y": "1.00", - "x": "6.00", - "z": "2.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-214.strasbourg.iot-lab.info", - "state": "Alive", - "y": "1.00", - "x": "7.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-215.strasbourg.iot-lab.info", - "state": "Alive", - "y": "1.00", - "x": "7.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-216.strasbourg.iot-lab.info", - "state": "Alive", - "y": "1.00", - "x": "7.00", - "z": "2.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-217.strasbourg.iot-lab.info", - "state": "Alive", - "y": "0.00", - "x": "0.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-218.strasbourg.iot-lab.info", - "state": "Alive", - "y": "0.00", - "x": "0.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-219.strasbourg.iot-lab.info", - "state": "Alive", - "y": "0.00", - "x": "0.00", - "z": "2.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-220.strasbourg.iot-lab.info", - "state": "Alive", - "y": "0.00", - "x": "1.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-221.strasbourg.iot-lab.info", - "state": "Alive", - "y": "0.00", - "x": "1.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-222.strasbourg.iot-lab.info", - "state": "Alive", - "y": "0.00", - "x": "1.00", - "z": "2.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-223.strasbourg.iot-lab.info", - "state": "Alive", - "y": "0.00", - "x": "2.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-224.strasbourg.iot-lab.info", - "state": "Alive", - "y": "0.00", - "x": "2.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-225.strasbourg.iot-lab.info", - "state": "Alive", - "y": "0.00", - "x": "2.00", - "z": "2.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-226.strasbourg.iot-lab.info", - "state": "Alive", - "y": "0.00", - "x": "3.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-227.strasbourg.iot-lab.info", - "state": "Alive", - "y": "0.00", - "x": "3.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-228.strasbourg.iot-lab.info", - "state": "Alive", - "y": "0.00", - "x": "3.00", - "z": "2.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-229.strasbourg.iot-lab.info", - "state": "Alive", - "y": "0.00", - "x": "4.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-230.strasbourg.iot-lab.info", - "state": "Alive", - "y": "0.00", - "x": "4.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-231.strasbourg.iot-lab.info", - "state": "Alive", - "y": "0.00", - "x": "4.00", - "z": "2.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-232.strasbourg.iot-lab.info", - "state": "Alive", - "y": "0.00", - "x": "5.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-233.strasbourg.iot-lab.info", - "state": "Alive", - "y": "0.00", - "x": "5.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-234.strasbourg.iot-lab.info", - "state": "Alive", - "y": "0.00", - "x": "5.00", - "z": "2.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-235.strasbourg.iot-lab.info", - "state": "Alive", - "y": "0.00", - "x": "6.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-236.strasbourg.iot-lab.info", - "state": "Alive", - "y": "0.00", - "x": "6.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-237.strasbourg.iot-lab.info", - "state": "Alive", - "y": "0.00", - "x": "6.00", - "z": "2.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-238.strasbourg.iot-lab.info", - "state": "Alive", - "y": "0.00", - "x": "7.00", - "z": "0.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-239.strasbourg.iot-lab.info", - "state": "Alive", - "y": "0.00", - "x": "7.00", - "z": "1.50" - }, - { - "archi": "wsn430:cc1101", - "network_address": "wsn430-240.strasbourg.iot-lab.info", - "state": "Alive", - "y": "0.00", - "x": "7.00", - "z": "2.50" - }, - { - "archi": "a8:at86rf231", - "network_address": "a8-1.strasbourg.iot-lab.info", - "state": "Alive", - "y": "6.00", - "x": "2.00", - "z": "1.20" - }, - { - "archi": "a8:at86rf231", - "network_address": "a8-2.strasbourg.iot-lab.info", - "state": "Alive", - "y": "6.00", - "x": "2.00", - "z": "2.10" - }, - { - "archi": "a8:at86rf231", - "network_address": "a8-3.strasbourg.iot-lab.info", - "state": "Alive", - "y": "6.00", - "x": "6.00", - "z": "1.20" - }, - { - "archi": "a8:at86rf231", - "network_address": "a8-4.strasbourg.iot-lab.info", - "state": "Alive", - "y": "6.00", - "x": "6.00", - "z": "2.10" - }, - { - "archi": "a8:at86rf231", - "network_address": "a8-5.strasbourg.iot-lab.info", - "state": "Alive", - "y": "6.00", - "x": "10.00", - "z": "1.20" - }, - { - "archi": "a8:at86rf231", - "network_address": "a8-6.strasbourg.iot-lab.info", - "state": "Alive", - "y": "6.00", - "x": "10.00", - "z": "2.10" - }, - { - "archi": "a8:at86rf231", - "network_address": "a8-7.strasbourg.iot-lab.info", - "state": "Alive", - "y": "6.00", - "x": "14.00", - "z": "1.20" - }, - { - "archi": "a8:at86rf231", - "network_address": "a8-8.strasbourg.iot-lab.info", - "state": "Alive", - "y": "6.00", - "x": "14.00", - "z": "2.10" - }, - { - "archi": "a8:at86rf231", - "network_address": "a8-10.strasbourg.iot-lab.info", - "state": "Alive", - "y": "2.00", - "x": "2.00", - "z": "2.10" - }, - { - "archi": "a8:at86rf231", - "network_address": "a8-11.strasbourg.iot-lab.info", - "state": "Alive", - "y": "2.00", - "x": "6.00", - "z": "1.20" - }, - { - "archi": "a8:at86rf231", - "network_address": "a8-12.strasbourg.iot-lab.info", - "state": "Alive", - "y": "2.00", - "x": "6.00", - "z": "2.10" - }, - { - "archi": "a8:at86rf231", - "network_address": "a8-13.strasbourg.iot-lab.info", - "state": "Alive", - "y": "2.00", - "x": "10.00", - "z": "1.20" - }, - { - "archi": "a8:at86rf231", - "network_address": "a8-14.strasbourg.iot-lab.info", - "state": "Alive", - "y": "2.00", - "x": "10.00", - "z": "2.10" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-1.strasbourg.iot-lab.info", - "mac": "05-43-32-ff-03-dd-a4-84", - "state": "Alive", - "y": "8.00", - "x": "0.00", - "z": "1.20" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-2.strasbourg.iot-lab.info", - "mac": "05-43-32-ff-03-dd-a6-85", - "state": "Alive", - "y": "8.00", - "x": "0.00", - "z": "2.10" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-3.strasbourg.iot-lab.info", - "mac": "05-43-32-ff-03-d8-97-87", - "state": "Alive", - "y": "8.00", - "x": "2.00", - "z": "1.20" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-5.strasbourg.iot-lab.info", - "mac": "05-43-32-ff-03-da-98-89", - "state": "Alive", - "y": "8.00", - "x": "4.00", - "z": "1.20" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-6.strasbourg.iot-lab.info", - "mac": "05-43-32-ff-03-d9-92-87", - "state": "Alive", - "y": "8.00", - "x": "4.00", - "z": "2.10" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-7.strasbourg.iot-lab.info", - "mac": "05-43-32-ff-03-d7-b1-84", - "state": "Alive", - "y": "8.00", - "x": "6.00", - "z": "1.20" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-8.strasbourg.iot-lab.info", - "mac": "05-43-32-ff-03-d8-a8-87", - "state": "Alive", - "y": "8.00", - "x": "6.00", - "z": "2.10" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-9.strasbourg.iot-lab.info", - "mac": "05-43-32-ff-03-d8-b8-85", - "state": "Alive", - "y": "8.00", - "x": "8.00", - "z": "1.20" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-10.strasbourg.iot-lab.info", - "mac": "05-43-32-ff-03-d9-93-87", - "state": "Alive", - "y": "8.00", - "x": "8.00", - "z": "2.10" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-11.strasbourg.iot-lab.info", - "mac": "05-43-32-ff-03-d9-89-84", - "state": "Alive", - "y": "8.00", - "x": "10.00", - "z": "1.20" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-12.strasbourg.iot-lab.info", - "mac": "05-43-32-ff-03-d8-95-88", - "state": "Alive", - "y": "8.00", - "x": "10.00", - "z": "2.10" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-13.strasbourg.iot-lab.info", - "mac": "05-43-32-ff-03-da-b3-84", - "state": "Alive", - "y": "8.00", - "x": "12.00", - "z": "1.20" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-14.strasbourg.iot-lab.info", - "mac": "05-43-32-ff-03-da-b1-87", - "state": "Alive", - "y": "8.00", - "x": "12.00", - "z": "2.10" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-15.strasbourg.iot-lab.info", - "mac": "05-43-32-ff-03-db-94-88", - "state": "Alive", - "y": "8.00", - "x": "14.00", - "z": "1.20" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-16.strasbourg.iot-lab.info", - "mac": "05-43-32-ff-03-dd-93-85", - "state": "Alive", - "y": "8.00", - "x": "14.00", - "z": "2.10" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-17.strasbourg.iot-lab.info", - "mac": "05-43-32-ff-03-da-b5-85", - "state": "Alive", - "y": "8.00", - "x": "16.00", - "z": "1.20" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-18.strasbourg.iot-lab.info", - "mac": "05-43-32-ff-03-da-a5-87", - "state": "Alive", - "y": "8.00", - "x": "16.00", - "z": "2.10" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-19.strasbourg.iot-lab.info", - "mac": "05-43-32-ff-03-d6-90-83", - "state": "Alive", - "y": "6.00", - "x": "0.00", - "z": "1.20" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-20.strasbourg.iot-lab.info", - "mac": "05-43-32-ff-03-da-b7-86", - "state": "Alive", - "y": "6.00", - "x": "0.00", - "z": "2.10" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-21.strasbourg.iot-lab.info", - "mac": "05-43-32-ff-03-dc-a3-85", - "state": "Alive", - "y": "6.00", - "x": "4.00", - "z": "1.20" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-22.strasbourg.iot-lab.info", - "mac": "05-43-32-ff-03-dd-a4-88", - "state": "Alive", - "y": "6.00", - "x": "4.00", - "z": "2.10" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-23.strasbourg.iot-lab.info", - "mac": "05-43-32-ff-03-da-a9-84", - "state": "Alive", - "y": "6.00", - "x": "8.00", - "z": "1.20" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-24.strasbourg.iot-lab.info", - "mac": "05-43-32-ff-03-d5-90-84", - "state": "Alive", - "y": "6.00", - "x": "8.00", - "z": "2.10" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-25.strasbourg.iot-lab.info", - "mac": "05-43-32-ff-03-d5-a1-87", - "state": "Alive", - "y": "6.00", - "x": "12.00", - "z": "1.20" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-27.strasbourg.iot-lab.info", - "mac": "05-43-32-ff-03-dc-a1-85", - "state": "Alive", - "y": "6.00", - "x": "16.00", - "z": "1.20" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-28.strasbourg.iot-lab.info", - "mac": "05-43-32-ff-03-d9-a5-86", - "state": "Alive", - "y": "6.00", - "x": "16.00", - "z": "2.10" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-29.strasbourg.iot-lab.info", - "mac": "05-43-32-ff-03-dc-a2-84", - "state": "Alive", - "y": "4.00", - "x": "0.00", - "z": "1.20" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-30.strasbourg.iot-lab.info", - "mac": "05-43-32-ff-03-d8-b0-86", - "state": "Alive", - "y": "4.00", - "x": "0.00", - "z": "2.10" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-31.strasbourg.iot-lab.info", - "mac": "05-43-32-ff-03-dd-a8-85", - "state": "Alive", - "y": "4.00", - "x": "2.00", - "z": "1.20" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-32.strasbourg.iot-lab.info", - "mac": "05-43-32-ff-03-d7-b2-87", - "state": "Alive", - "y": "4.00", - "x": "2.00", - "z": "2.10" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-33.strasbourg.iot-lab.info", - "mac": "05-43-32-ff-03-d8-b2-86", - "state": "Alive", - "y": "4.00", - "x": "4.00", - "z": "1.20" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-34.strasbourg.iot-lab.info", - "mac": "05-43-32-ff-03-d8-a7-86", - "state": "Alive", - "y": "4.00", - "x": "4.00", - "z": "2.10" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-35.strasbourg.iot-lab.info", - "mac": "05-43-32-ff-03-d9-a7-84", - "state": "Alive", - "y": "4.00", - "x": "6.00", - "z": "1.20" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-36.strasbourg.iot-lab.info", - "mac": "05-43-32-ff-03-d7-91-84", - "state": "Alive", - "y": "4.00", - "x": "6.00", - "z": "2.10" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-37.strasbourg.iot-lab.info", - "mac": "05-43-32-ff-03-da-a3-86", - "state": "Alive", - "y": "4.00", - "x": "8.00", - "z": "1.20" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-38.strasbourg.iot-lab.info", - "mac": "05-43-32-ff-03-d8-95-89", - "state": "Alive", - "y": "4.00", - "x": "8.00", - "z": "2.10" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-39.strasbourg.iot-lab.info", - "mac": "05-43-32-ff-03-d9-a1-84", - "state": "Alive", - "y": "4.00", - "x": "10.00", - "z": "1.20" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-41.strasbourg.iot-lab.info", - "mac": "05-43-32-ff-03-dc-98-85", - "state": "Alive", - "y": "5.00", - "x": "12.00", - "z": "1.20" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-42.strasbourg.iot-lab.info", - "mac": "05-43-32-ff-03-d6-b1-86", - "state": "Alive", - "y": "5.00", - "x": "12.00", - "z": "2.10" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-43.strasbourg.iot-lab.info", - "mac": "05-43-32-ff-03-dd-92-85", - "state": "Alive", - "y": "5.00", - "x": "14.00", - "z": "1.20" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-44.strasbourg.iot-lab.info", - "mac": "05-43-32-ff-03-da-a6-84", - "state": "Alive", - "y": "5.00", - "x": "14.00", - "z": "2.10" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-45.strasbourg.iot-lab.info", - "mac": "05-43-32-ff-03-da-b3-85", - "state": "Alive", - "y": "5.00", - "x": "16.00", - "z": "1.20" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-46.strasbourg.iot-lab.info", - "mac": "05-43-32-ff-03-da-99-85", - "state": "Alive", - "y": "5.00", - "x": "16.00", - "z": "2.10" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-47.strasbourg.iot-lab.info", - "mac": "05-43-32-ff-03-d6-a4-87", - "state": "Alive", - "y": "2.00", - "x": "0.00", - "z": "1.20" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-48.strasbourg.iot-lab.info", - "mac": "05-43-32-ff-03-d4-97-89", - "state": "Alive", - "y": "2.00", - "x": "0.00", - "z": "2.10" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-49.strasbourg.iot-lab.info", - "mac": "05-43-32-ff-03-d7-a1-86", - "state": "Alive", - "y": "2.00", - "x": "4.00", - "z": "1.20" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-50.strasbourg.iot-lab.info", - "mac": "05-43-32-ff-03-d9-b5-86", - "state": "Alive", - "y": "2.00", - "x": "4.00", - "z": "2.10" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-51.strasbourg.iot-lab.info", - "mac": "05-43-32-ff-03-de-a5-85", - "state": "Alive", - "y": "2.00", - "x": "8.00", - "z": "1.20" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-52.strasbourg.iot-lab.info", - "mac": "05-43-32-ff-03-d7-96-89", - "state": "Alive", - "y": "2.00", - "x": "8.00", - "z": "2.10" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-53.strasbourg.iot-lab.info", - "mac": "05-43-32-ff-03-d6-98-90", - "state": "Alive", - "y": "0.00", - "x": "0.00", - "z": "1.20" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-54.strasbourg.iot-lab.info", - "mac": "05-43-32-ff-03-d6-97-88", - "state": "Alive", - "y": "0.00", - "x": "0.00", - "z": "2.10" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-55.strasbourg.iot-lab.info", - "mac": "05-43-32-ff-03-db-b4-86", - "state": "Alive", - "y": "0.00", - "x": "2.00", - "z": "1.20" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-56.strasbourg.iot-lab.info", - "mac": "05-43-32-ff-03-da-a2-88", - "state": "Alive", - "y": "0.00", - "x": "2.00", - "z": "2.10" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-57.strasbourg.iot-lab.info", - "mac": "05-43-32-ff-03-d7-99-86", - "state": "Alive", - "y": "0.00", - "x": "4.00", - "z": "1.20" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-58.strasbourg.iot-lab.info", - "mac": "05-43-32-ff-03-da-a7-88", - "state": "Alive", - "y": "0.00", - "x": "4.00", - "z": "2.10" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-59.strasbourg.iot-lab.info", - "mac": "05-43-32-ff-03-d9-95-86", - "state": "Alive", - "y": "0.00", - "x": "6.00", - "z": "1.20" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-60.strasbourg.iot-lab.info", - "mac": "05-43-32-ff-03-db-a6-86", - "state": "Alive", - "y": "0.00", - "x": "6.00", - "z": "2.10" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-61.strasbourg.iot-lab.info", - "mac": "05-43-32-ff-03-da-a9-88", - "state": "Alive", - "y": "0.00", - "x": "8.00", - "z": "1.20" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-62.strasbourg.iot-lab.info", - "mac": "05-43-32-ff-03-d9-b3-86", - "state": "Alive", - "y": "0.00", - "x": "8.00", - "z": "2.10" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-63.strasbourg.iot-lab.info", - "mac": "05-43-32-ff-03-da-98-87", - "state": "Alive", - "y": "0.00", - "x": "10.00", - "z": "1.20" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-64.strasbourg.iot-lab.info", - "mac": "05-43-32-ff-03-d2-96-87", - "state": "Alive", - "y": "0.00", - "x": "10.00", - "z": "2.10" - }, - { - "archi": "m3:at86rf231", - "network_address": "m3-40.strasbourg.iot-lab.info", - "mac": "05-43-32-ff-03-db-b5-87", - "state": "Alive", - "y": "4.00", - "x": "10.00", - "z": "2.10" - } -] \ No newline at end of file diff --git a/metas/strasbourg_eui64.csv b/metas/strasbourg_eui64.csv deleted file mode 100644 index 9f86e9abf3..0000000000 --- a/metas/strasbourg_eui64.csv +++ /dev/null @@ -1,65 +0,0 @@ -05-43-32-ff-03-dd-a4-84,m3-1 -05-43-32-ff-03-d9-93-87,m3-10 -05-43-32-ff-03-d8-a0-86,m3-100 -05-43-32-ff-03-d9-89-84,m3-11 -05-43-32-ff-03-d8-95-88,m3-12 -05-43-32-ff-03-da-b3-84,m3-13 -05-43-32-ff-03-da-b1-87,m3-14 -05-43-32-ff-03-db-94-88,m3-15 -05-43-32-ff-03-dd-93-85,m3-16 -05-43-32-ff-03-da-b5-85,m3-17 -05-43-32-ff-03-da-a5-87,m3-18 -05-43-32-ff-03-d6-90-83,m3-19 -05-43-32-ff-03-dd-a6-85,m3-2 -05-43-32-ff-03-da-b7-86,m3-20 -05-43-32-ff-03-dc-a3-85,m3-21 -05-43-32-ff-03-dd-a4-88,m3-22 -05-43-32-ff-03-da-a9-84,m3-23 -05-43-32-ff-03-d5-90-84,m3-24 -05-43-32-ff-03-d5-a1-87,m3-25 -05-43-32-ff-03-dc-a1-85,m3-27 -05-43-32-ff-03-d9-a5-86,m3-28 -05-43-32-ff-03-dc-a2-84,m3-29 -05-43-32-ff-03-d8-97-87,m3-3 -05-43-32-ff-03-d8-b0-86,m3-30 -05-43-32-ff-03-dd-a8-85,m3-31 -05-43-32-ff-03-d7-b2-87,m3-32 -05-43-32-ff-03-d8-b2-86,m3-33 -05-43-32-ff-03-d8-a7-86,m3-34 -05-43-32-ff-03-d9-a7-84,m3-35 -05-43-32-ff-03-d7-91-84,m3-36 -05-43-32-ff-03-da-a3-86,m3-37 -05-43-32-ff-03-d8-95-89,m3-38 -05-43-32-ff-03-d9-a1-84,m3-39 -05-43-32-ff-03-db-b5-87,m3-40 -05-43-32-ff-03-dc-98-85,m3-41 -05-43-32-ff-03-d6-b1-86,m3-42 -05-43-32-ff-03-dd-92-85,m3-43 -05-43-32-ff-03-da-a6-84,m3-44 -05-43-32-ff-03-da-b3-85,m3-45 -05-43-32-ff-03-da-99-85,m3-46 -05-43-32-ff-03-d6-a4-87,m3-47 -05-43-32-ff-03-d4-97-89,m3-48 -05-43-32-ff-03-d7-a1-86,m3-49 -05-43-32-ff-03-da-98-89,m3-5 -05-43-32-ff-03-d9-b5-86,m3-50 -05-43-32-ff-03-de-a5-85,m3-51 -05-43-32-ff-03-d7-96-89,m3-52 -05-43-32-ff-03-d6-98-90,m3-53 -05-43-32-ff-03-d6-97-88,m3-54 -05-43-32-ff-03-db-b4-86,m3-55 -05-43-32-ff-03-da-a2-88,m3-56 -05-43-32-ff-03-d7-99-86,m3-57 -05-43-32-ff-03-da-a7-88,m3-58 -05-43-32-ff-03-d9-95-86,m3-59 -05-43-32-ff-03-d9-92-87,m3-6 -05-43-32-ff-03-db-a6-86,m3-60 -05-43-32-ff-03-da-a9-88,m3-61 -05-43-32-ff-03-d9-b3-86,m3-62 -05-43-32-ff-03-da-98-87,m3-63 -05-43-32-ff-03-d2-96-87,m3-64 -05-43-32-ff-03-d7-b1-84,m3-7 -05-43-32-ff-03-d8-a8-87,m3-8 -05-43-32-ff-03-d8-b8-85,m3-9 -05-43-32-ff-03-db-92-86,m3-96 -05-43-32-ff-03-dc-b7-85,m3-97 diff --git a/metas/update_locations.py b/metas/update_locations.py deleted file mode 100644 index 7512cfbf6b..0000000000 --- a/metas/update_locations.py +++ /dev/null @@ -1,58 +0,0 @@ -# This file uses the experiment-cli tool to genrate the IoTLab motes locations. -# Refere to the Mercator wiki to use it. -# https://github.com/openwsn-berkeley/mercator/wiki - -#-----------------------------------------------------------------------------# - -import os -import json -import csv - -#-----------------------------------------------------------------------------# - -site_list = ["strasbourg", "lille"] - -for site in site_list: - os.system("experiment-cli info -l --site {0} > tmp.json".format(site)) - jout = "" - with open('tmp.json') as data_file: - jout = json.load(data_file) - os.remove("tmp.json") - - # get motes eui64 - - mac_list = [] - path = "{0}_eui64.csv".format(site) - if os.path.isfile(path): - with open(path, 'r') as f: - reader = csv.reader(f) - mac_list = list(reader) - - # parse results - - results = [] - for mote in jout["items"]: - if mote["state"] == "Alive" and mote["mobile"] == 0: - # remove useless fields - del mote["mobile"] - del mote["mobility_type"] - del mote["site"] - del mote["uid"] - - # get mote eui64 - hostname = mote["network_address"].split(".")[0] - for mac in mac_list: - if hostname == mac[1]: - mote["mac"] = mac[0] - break - - # add mote to site - res_mote = mote - results.append(res_mote) - - # write out - - with open('{0}.json'.format(site), 'w') as fp: - json.dump(results, fp, indent=4) - -#-----------------------------------------------------------------------------# diff --git a/metas/update_states.py b/metas/update_states.py deleted file mode 100644 index 4e92547636..0000000000 --- a/metas/update_states.py +++ /dev/null @@ -1,39 +0,0 @@ -# This file uses the experiment-cli tool to genrate the IoTLab motes locations. -# Refere to the Mercator wiki to use it. -# https://github.com/openwsn-berkeley/mercator/wiki - -#-----------------------------------------------------------------------------# - -import os -import json - -#-----------------------------------------------------------------------------# - -STATES = ["Busy","Alive"] - -# get IoTlab infos - -os.system("experiment-cli info -l > tmp.json") -jout = "" -with open('tmp.json') as data_file: - jout = json.load(data_file) -os.remove("tmp.json") - -# parse results - -results = {} -for mote in jout["items"]: - if mote["state"] in STATES: - # create site if it does not exists - if mote["site"] not in results.keys(): - results[mote["site"]] = [] - - # add mote to site - results[mote["site"]].append(mote["network_address"]) - -# write out - -with open('states.json', 'w') as fp: - json.dump(results, fp, indent=4) - -#-----------------------------------------------------------------------------# From 64630daf044509906a46e8c6488bad312ee3c3c7 Mon Sep 17 00:00:00 2001 From: Yasuyuki Tanaka Date: Thu, 25 Apr 2019 13:59:39 +0200 Subject: [PATCH 02/50] Add License --- LICENSE | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000000..65ef06f89e --- /dev/null +++ b/LICENSE @@ -0,0 +1,30 @@ +Copyright (c) Inria +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the + distribution. + +3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. From 8bc25fd71b8e38df64ad729fdf10e0a1536b71e7 Mon Sep 17 00:00:00 2001 From: Yasuyuki Tanaka Date: Thu, 25 Apr 2019 13:59:52 +0200 Subject: [PATCH 03/50] Update README.md --- README.md | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 9aa308a75d..5a21350333 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,8 @@ -[![Code Health](https://landscape.io/github/openwsn-berkeley/mercator/master/landscape.svg?style=flat)](https://landscape.io/github/openwsn-berkeley/mercator/master) - -_You are watching the raw data. To visualize it: https://openwsn-berkeley.github.io/mercator/._ - -## Mercator: Dense Wireless Connectivity Datasets for the IoT +# Mercator: Dense Wireless Connectivity Datasets for the IoT -**Mercator** is a collection of connectivity datasets gathered on the IoT-LAB sites. These datasets are: +**Mercator** is a collection of tools to gather connectivity traces, which are: * **dense in time**, meaning the connectivity is continuously assessed over a long period of time; it allows one to see variation of connectivity over time. * **dense in space**, meaning the connectivity is assessed over hundreds of measurements points; it allows one to see how connectivity is affected by the location of transmitter and receivers. * **dense in frequency**, meaning the connectivity is assessed for each of the 16 IEEE802.15.4 frequencies; it allows one to see how connectivity is affected by the communication frequency. - -Want to learn more? [See the wiki.](https://github.com/openwsn-berkeley/mercator/wiki) From 15a009ad9f6c8a9afbb8686779f295dc6dc4c92e Mon Sep 17 00:00:00 2001 From: Yasuyuki Tanaka Date: Thu, 25 Apr 2019 14:14:29 +0200 Subject: [PATCH 04/50] Remove get_eui64.py, that seems obsolete --- code/software/app/get_eui64.py | 197 --------------------------------- 1 file changed, 197 deletions(-) delete mode 100644 code/software/app/get_eui64.py diff --git a/code/software/app/get_eui64.py b/code/software/app/get_eui64.py deleted file mode 100644 index 5dbb5269ba..0000000000 --- a/code/software/app/get_eui64.py +++ /dev/null @@ -1,197 +0,0 @@ -#!/usr/bin/python - -#============================ adjust path ===================================== - -import os -import sys -if __name__ == '__main__': - here = sys.path[0] - sys.path.insert(0, os.path.join(here, '..', 'lib')) - -#============================ imports ========================================= - -import argparse -import threading -import json -import datetime -import logging.config -import serial -import socket - -# Mercator -import MoteHandler -import MercatorDefines as d - -# IoT-lab -import iotlabcli as iotlab -from iotlabcli import experiment - -#============================ logging ========================================= - -logging.config.fileConfig('logging.conf') - -logconsole = logging.getLogger("console") -logfile = logging.getLogger() #root logger - -#============================ body ============================================ - -FIRMWARE_PATH = "../../firmware/" -DATASET_PATH = "../../../datasets/" -METAS_PATH = "../../../metas/" - -#============================ body ============================================ - - -class MercatorRunExperiment(object): - - FREQUENCIES = [n+11 for n in range(16)] # frequencies to measure on, in IEEE notation - TXPOWER = 0 # dBm - NUMTRANS = 5 # number of transactions - TXNUMPK = 10 # number of packets per transaction - TXIFDUR = 100 # inter-frame duration, in ms - TXLENGTH = 100 # number of bytes (PHY payload) in a frame - TXFILLBYTE = 0x0a # padding byte - _BAUDRATE = 500000 - - def __init__(self, serialports, site="local"): - - # local variables - self.dataLock = threading.Lock() - self.transctr = 0 - self.motes = {} - self.isTransmitting = False - self.site = site - self.transmitterPort = "" - address_list = [] - - # connect to motes - for ser_port in serialports: - ser = None - - logfile.debug("connecting to %s", ser_port) - - try: - if site != "local": - ser = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - ser.connect((ser_port, 20000)) - else: - ser = serial.Serial(ser_port, self._BAUDRATE) - except Exception as err: - msg = 'could not connect to {0}, reason: {1}'.format(ser_port, err) - continue - - logfile.debug("reading %s address", ser_port) - addr = "" - if site != "local": - goOn = True - while len(addr)<23: - c = ser.recv(1) - if len(c) > 0: - if (c != '\n') and (c != '\r') and (ord(c) != 0) and (ord(c) < 103): - addr += c - elif c == '\n': - goOn = False - else: - addr = ser.readline() # remove unfinished line - addr = ser.readline().rstrip('\r\n') - - address_list.append((addr,ser_port)) - logconsole.info("{0},{1}".format(addr, ser_port)) - - address_list.sort(key=lambda tup: tup[1]) - with open("mac_list.csv",'w') as f: - for address in address_list: - f.write("{0},{1}\n".format(address[0],address[1])) - - # print all OK - raw_input('\nExperiment ended normally. Press Enter to close.') - - def _quit_callback(self): - print "quitting!" - -#=========================== helpers ========================================== - - -def get_motes(expid): - # use the file created by auth-cli command - usr, pwd = iotlab.get_user_credentials() - - # authenticate through the REST interface - api = iotlab.rest.Api(usr, pwd) - - # get experiment resources - data = experiment.get_experiment(api, expid, 'resources') - - return (map(lambda x: x["network_address"].split('.')[0], data["items"]), - data["items"][0]["network_address"].split('.')[1]) - - -def submit_experiment(testbed_name, board, firmware, duration): - """ - Reserve nodes in the given site. - The function uses the json experiment file corresponding to the site. - :param str firmware: the name of the firmware as it is in the code/firmware/ folder - :param str board: the type of board (ex: m3) - :param str testbed_name: The name of the testbed (ex: grenoble) - :param int duration: The duration of the experiment in minutes - :return: The id of the experiment - """ - - # use the file created by auth-cli command - usr, pwd = iotlab.get_user_credentials() - - # authenticate through the REST interface - api = iotlab.rest.Api(usr, pwd) - - # load the experiment - tb_file = open("{0}states.json".format(METAS_PATH)) - tb_json = json.load(tb_file) - nodes = [x for x in tb_json[testbed_name] if board in x] - firmware = FIRMWARE_PATH + firmware - profile = "mercator" - resources = [experiment.exp_resources(nodes, firmware, profile)] - - # submit experiment - logconsole.info("Submitting experiment.") - expid = experiment.submit_experiment( - api, "mercatorExp", duration, - resources)["id"] - - logconsole.info("Experiment submited with id: %u", expid) - logconsole.info("Waiting for experiment to be running.") - experiment.wait_experiment(api, expid) - - return expid - -#============================ main ============================================ - - -def main(): - - # parsing user arguments - parser = argparse.ArgumentParser() - parser.add_argument("testbed", help="The name of the current testbed") - parser.add_argument("firmware", help="The firmware to flash", type=str) - parser.add_argument("-d", "--duration", help="Duration of the experiment in munutes", type=int, default=30) - parser.add_argument("-e", "--expid", help="The experiment id", type=int, default=None) - parser.add_argument("-b", "--board", help="The type of board to use", type=str, default="m3") - args = parser.parse_args() - - if args.testbed == "local": - MercatorRunExperiment( - serialports = ['/dev/ttyUSB1'] - ) - else: - if args.expid is None: - expid = submit_experiment(args.testbed, args.board, args.firmware, args.duration) - else: - expid = args.expid - (serialports, site) = get_motes(expid) - MercatorRunExperiment( - serialports = serialports, - site = site - ) - -if __name__ == '__main__': - main() - From dc5ccd0ba84b4de4772dde2e7209b5598c2386dd Mon Sep 17 00:00:00 2001 From: Yasuyuki Tanaka Date: Thu, 25 Apr 2019 14:15:00 +0200 Subject: [PATCH 05/50] Remove mercatorCli.py that is a test program for the firmware --- code/software/app/mercatorCli.py | 200 ------------------------------- 1 file changed, 200 deletions(-) delete mode 100644 code/software/app/mercatorCli.py diff --git a/code/software/app/mercatorCli.py b/code/software/app/mercatorCli.py deleted file mode 100644 index 22663d0d1f..0000000000 --- a/code/software/app/mercatorCli.py +++ /dev/null @@ -1,200 +0,0 @@ -#!/usr/bin/python - -#============================ adjust path ===================================== - -import os -import sys -if __name__ == '__main__': - here = sys.path[0] - sys.path.insert(0, os.path.join(here, '..', 'lib')) - -#============================ imports ========================================= - -import threading - -import OpenCli -import MoteHandler -import MercatorDefines as d - -#============================ body ============================================ - - -class MercatorCli(object): - - ALL = 'all' - - def __init__(self): - - self.dataLock = threading.Lock() - self.motes = {} - - cli = OpenCli.OpenCli("Mercator CLI", self._quit_callback) - cli.register_command( - 'connect', - 'c', - 'connect to a mote', - ['serialport'], - self._cli_connect - ) - cli.register_command( - 'list', - 'l', - 'list motes', - [], - self._cli_list - ) - cli.register_command( - 'state', - 'st', - 'request state', - ['serialport'], - self._cli_state - ) - cli.register_command( - 'idle', - 'id', - 'switch radio off', - ['serialport'], - self._cli_idle - ) - cli.register_command( - 'tx', - 'tx', - 'transmit a number of packets', - ['serialport'], - self._cli_tx - ) - cli.register_command( - 'rx', - 'rx', - 'start receiving', - ['serialport'], - self._cli_rx - ) - cli.start() - - #======================== public ========================================== - - #======================== cli handlers ==================================== - - def _cli_connect(self, params): - serialport = params[0] - - if serialport in self.motes: - print 'already connected to {0}'.format(serialport) - return - - with self.dataLock: - self.motes[serialport] = MoteHandler.MoteHandler(serialport, self._cb) - if not self.motes[serialport].isActive: - del self.motes[serialport] - - def _cli_list(self): - output = [] - with self.dataLock: - output += ['connected to {0} motes:'.format(len(self.motes))] - output += ['- {0}'.format(m) for m in self.motes.keys()] - output = '\n'.join(output) - print output - - def _cli_state(self, params): - serialport = params[0] - - if serialport == self.ALL: - serialports = self.motes.keys() - else: - if serialport not in self.motes.keys()+[self.ALL]: - print 'not serialport to {0}'.format(serialport) - return - serialports = [serialport] - - with self.dataLock: - for s in serialports: - print self.motes[s].send_REQ_ST() - - def _cli_idle(self, params): - serialport = params[0] - - if serialport == self.ALL: - serialports = self.motes.keys() - else: - if serialport not in self.motes.keys()+[self.ALL]: - print 'not serialport to {0}'.format(serialport) - return - serialports = [serialport] - - with self.dataLock: - for s in serialports: - self.motes[s].send_REQ_IDLE() - - def _cli_tx(self, params): - serialport = params[0] - - if serialport not in self.motes: - print 'not serialport to {0}'.format(serialport) - return - - with self.dataLock: - self.motes[serialport].send_REQ_TX( - frequency = 0x14, - txpower = 0, - transctr = 0x0a0a, - nbpackets = 5, - txifdur = 1000, - txpksize = 100, - txfillbyte = 0x0b, - ) - - def _cli_rx(self, params): - serialport = params[0] - - if serialport == self.ALL: - serialports = self.motes.keys() - else: - if serialport not in self.motes.keys()+[self.ALL]: - print 'not serialport to {0}'.format(serialport) - return - serialports = [serialport] - - with self.dataLock: - for s in serialports: - self.motes[s].send_REQ_RX( - frequency = 0x14, - srcmac = [0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88], - transctr = 0x0a0a, - txpksize = 100, - txfillbyte = 0x0b, - ) - - #======================== private ========================================= - - def _cb(self, serialport, notif): - output = [] - output += [' - {0}'.format(serialport)] - if isinstance(notif, dict): - if 'type' in notif: - output += [' . type : {0}'.format(d.type_num2text(notif['type']))] - if 'status' in notif: - output += [' . status : {0}'.format(d.status_num2text(notif['status']))] - if 'mac' in notif: - output += [' . mac : {0}'.format(d.format_mac(notif['mac']))] - for (k, v) in notif.items(): - if k not in ['type', 'status', 'mac']: - output += [' . {0:<17}: {1}'.format(k, v)] - else: - output += [' {0}'.format(notif)] - output += [''] - output = '\n'.join(output) - print output - - def _quit_callback(self): - print "quitting!" - -#============================ main ============================================ - - -def main(): - MercatorCli() - -if __name__ == '__main__': - main() From 438636c2d438ddaeaa316e9617145019f8ff8753 Mon Sep 17 00:00:00 2001 From: Yasuyuki Tanaka Date: Thu, 25 Apr 2019 17:24:43 +0200 Subject: [PATCH 06/50] Remove OpenCli.py that was used by mercatorCli.py --- code/software/lib/OpenCli.py | 258 ----------------------------------- 1 file changed, 258 deletions(-) delete mode 100644 code/software/lib/OpenCli.py diff --git a/code/software/lib/OpenCli.py b/code/software/lib/OpenCli.py deleted file mode 100644 index 2ffa6f64ef..0000000000 --- a/code/software/lib/OpenCli.py +++ /dev/null @@ -1,258 +0,0 @@ -#!/usr/bin/python - -import threading -import logging -import time -from datetime import timedelta - - -class NullLogHandler(logging.Handler): - def emit(self, record): - pass - - -class OpenCli(threading.Thread): - """ - \brief Thread which handles CLI commands entered by the user. - """ - - CMD_LEVEL_USER = "user" - CMD_LEVEL_SYSTEM = "system" - - def __init__(self, app_name, quit_cb): - - # slot params - self.appName = app_name - self.quit_cb = quit_cb - - # local variables - self.commandLock = threading.Lock() - self.commands = [] - self.goOn = True - self.startTime = 0 - - # logging - self.log = logging.getLogger('OpenCli') - self.log.setLevel(logging.DEBUG) - self.log.addHandler(NullLogHandler()) - - # initialize parent class - threading.Thread.__init__(self) - - # give this thread a name - self.name = 'OpenCli' - - # register system commands (user commands registers by child object) - self._register_command_internal( - self.CMD_LEVEL_SYSTEM, - 'help', - 'h', - 'print this menu', - [], - self._handle_help) - self._register_command_internal( - self.CMD_LEVEL_SYSTEM, - 'info', - 'i', - 'information about this application', - [], - self._handle_info) - self._register_command_internal( - self.CMD_LEVEL_SYSTEM, - 'quit', - 'q', - 'quit this application', - [], - self._handle_quit) - self._register_command_internal( - self.CMD_LEVEL_SYSTEM, - 'uptime', - 'ut', - 'how long this application has been running', - [], - self._handle_uptime) - - def run(self): - banner = [] - banner += [""] - banner += [" ___ _ _ _ ___ _ _ "] - banner += ["| . | ___ ___ ._ _ | | | |/ __>| \ |"] - banner += ["| | || . \/ ._>| ' || | | |\__ \| |"] - banner += ["`___'| _/\___.|_|_||__/_/ <___/|_\_|"] - banner += [" |_| openwsn.org"] - banner += [""] - banner = '\n'.join(banner) - print banner - - print '{0}\n'.format(self.appName) - - self.startTime = time.time() - - while self.goOn: - - # CLI stops here each time a user needs to call a command - params = raw_input('> ') - - # log - self.log.debug('Following command entered:'+params) - - params = params.split() - if len(params) < 1: - continue - - if len(params) == 2 and params[1] == '?': - if not self._print_usage_from_name(params[0]): - if not self._print_usage_from_alias(params[0]): - print ' unknown command or alias \''+params[0]+'\'' - continue - - # find this command - found = False - self.commandLock.acquire() - for command in self.commands: - if command['name'] == params[0] or command['alias'] == params[0]: - found = True - cmd_params = command['params'] - cmd_callback = command['callback'] - break - self.commandLock.release() - - # call its callback or print error message - if found: - if len(params[1:]) == len(cmd_params): - cmd_callback(params[1:]) - else: - if not self._print_usage_from_name(params[0]): - self._print_usage_from_alias(params[0]) - else: - print ' unknown command or alias \''+params[0]+'\'' - - #======================== public ========================================== - - def register_command(self, name, alias, description, params, callback): - - self._register_command_internal(self.CMD_LEVEL_USER, - name, - alias, - description, - params, - callback) - - #======================== private ========================================= - - def _register_command_internal(self, cmd_level, name, alias, description, params, callback): - - if self._does_command_exist(name): - raise SystemError("command {0} already exists".format(name)) - - self.commandLock.acquire() - self.commands.append({ - 'cmd_level': cmd_level, - 'name': name, - 'alias': alias, - 'description': description, - 'params': params, - 'callback': callback, - }) - self.commandLock.release() - - def _print_usage_from_name(self, commandname): - return self._print_usage(commandname, 'name') - - def _print_usage_from_alias(self, commandalias): - return self._print_usage(commandalias, 'alias') - - def _print_usage(self, name, param_type): - - usage_string = None - - self.commandLock.acquire() - for command in self.commands: - if command[param_type] == name: - usage_string = [] - usage_string += ['usage: {0}'.format(name)] - usage_string += [" <{0}>".format(p) for p in command['params']] - usage_string = ''.join(usage_string) - self.commandLock.release() - - if usage_string: - print usage_string - return True - else: - return False - - def _does_command_exist(self, cmd_name): - - return_val = False - - self.commandLock.acquire() - for cmd in self.commands: - if cmd['name'] == cmd_name: - return_val = True - self.commandLock.release() - - return return_val - - #=== command handlers (system commands only, a child object creates more) - - def _handle_help(self): - output = [] - output += ['Available commands:'] - - self.commandLock.acquire() - for command in self.commands: - output += [' - {0} ({1}): {2}'.format(command['name'], - command['alias'], - command['description'])] - self.commandLock.release() - - print '\n'.join(output) - - def _handle_info(self): - output = [] - output += ['General status of the application'] - output += [''] - output += ['current time: {0}'.format(time.ctime())] - output += [''] - output += ['{0} threads running:'.format(threading.activeCount())] - for t in threading.enumerate(): - output += ['- {0}'.format(t.getName())] - output += [''] - output += ['This is thread {0}.'.format(threading.currentThread().getName())] - - print '\n'.join(output) - - def _handle_quit(self): - - # call the quit callback - self.quit_cb() - - # kill this thread - self.goOn = False - - def _handle_uptime(self): - - up_time = timedelta(seconds=time.time()-self.startTime) - - print 'Running since {0} ({1} ago)'.format( - time.strftime("%m/%d/%Y %H:%M:%S", time.localtime(self.startTime)), - up_time) - - -############################################################################### - -if __name__ == '__main__': - - def quit_callback(): - print "quitting!" - - def echo_callback(params): - print "echo {0}!".format(params) - - cli = OpenCli("Standalone Sample App", quit_callback) - cli.register_command('echo', - 'e', - 'echoes the first param', - ['string to echo'], - echo_callback) - cli.start() From 853f70dd21a05c06a7705e499090d2178daf9f0f Mon Sep 17 00:00:00 2001 From: Yasuyuki Tanaka Date: Thu, 25 Apr 2019 18:07:51 +0200 Subject: [PATCH 07/50] Remove MoteHandler.py --- code/software/lib/MoteHandler.py | 337 ------------------------------- 1 file changed, 337 deletions(-) delete mode 100644 code/software/lib/MoteHandler.py diff --git a/code/software/lib/MoteHandler.py b/code/software/lib/MoteHandler.py deleted file mode 100644 index 78889efc88..0000000000 --- a/code/software/lib/MoteHandler.py +++ /dev/null @@ -1,337 +0,0 @@ -import copy -import threading -import struct -import time - -import serial -import socket - -import Hdlc -import MercatorDefines as d - -BAUDRATE = 500000 -TIMEOUT_RESPONSE = 3 -MAX_TIMEOUTS = 3 - -STAT_UARTNUMRXCRCOK = 'uartNumRxCrcOk' -STAT_UARTNUMRXCRCWRONG = 'uartNumRxCrcWrong' -STAT_UARTNUMTX = 'uartNumTx' - -class MoteHandler(threading.Thread): - - def __init__(self, serialport, cb=None, reset_cb=None): - - self.serialport = serialport - self.cb = cb - self.reset_cb = reset_cb - self.serialLock = threading.Lock() - self.dataLock = threading.RLock() - self.mac = None - self.hdlc = Hdlc.Hdlc() - self.busyReceiving = False - self.inputBuf = '' - self.lastRxByte = self.hdlc.HDLC_FLAG - self.goOn = True - self.waitResponse = None - self.waitResponseEvent = None - self.isActive = True - self.response = None - self._iotlab = False - self.timeouts = 0 - self._reset_stats() - - try: - if self.iotlab: - self.serial = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - self.serial.connect((serialport, 20000)) - else: - self.serial = serial.Serial(self.serialport, BAUDRATE) - except Exception as err: - msg = 'could not connect to {0}, reason: {1}'.format(serialport, err) - print msg - raise SystemError(msg) - - threading.Thread.__init__(self) - self.name = 'MoteHandler@{0}'.format(serialport) - self.daemon = True - - # start reception thread - self.start() - - # retrieve the state of the mote (to get MAC address) - self.send_REQ_ST() - # assert self.mac - - #======================== thread ========================================== - - def run(self): - - while self.goOn: - - if self.iotlab: - rx_byte = self.serial.recv(1) - else: - rx_byte = self.serial.read(1) - - with self.dataLock: - if ( - (not self.busyReceiving) and - self.lastRxByte == self.hdlc.HDLC_FLAG and - rx_byte != self.hdlc.HDLC_FLAG - ): - # start of frame - - self.busyReceiving = True - self.inputBuf = self.hdlc.HDLC_FLAG - self.inputBuf += rx_byte - elif ( - self.busyReceiving and - rx_byte != self.hdlc.HDLC_FLAG - ): - # middle of frame - - self.inputBuf += rx_byte - elif ( - self.busyReceiving and - rx_byte == self.hdlc.HDLC_FLAG - ): - # end of frame - - self.busyReceiving = False - self.inputBuf += rx_byte - - try: - self.inputBuf = self.hdlc.dehdlcify(self.inputBuf) - except Hdlc.HdlcException: - self.stats[STAT_UARTNUMRXCRCWRONG] += 1 - else: - self.stats[STAT_UARTNUMRXCRCOK] += 1 - self._handle_inputbuf([ord(b) for b in self.inputBuf]) - - self.lastRxByte = rx_byte - - self.serial.close() - - #======================== public ========================================== - - #=== stats - - def get_stats(self): - with self.dataLock: - return copy.deepcopy(self.stats) - - #=== requests - - def send_REQ_ST(self): - - with self.dataLock: - # assert not self.waitResponse - self.waitResponseEvent = threading.Event() - self.waitResponse = True - - self._send( - struct.pack( - '>B', - d.TYPE_REQ_ST, - ) - ) - - self.waitResponseEvent.wait(TIMEOUT_RESPONSE) - - if not self.waitResponseEvent.isSet(): - print "-----------timeout--------------" + self.serialport - self.isActive = False - self.timeouts += 1 - if self.timeouts > MAX_TIMEOUTS: - self.reset_cb(self) - self.timeouts = 0 - return - else: - self.timeouts = 0 - - with self.dataLock: - self.waitResponse = False - self.waitResponseEvent = False - return_val = copy.deepcopy(self.response) - self.response = None - - return return_val - - def send_REQ_IDLE(self): - self._send( - struct.pack( - '>B', - d.TYPE_REQ_IDLE, - ) - ) - - def send_REQ_TX(self, frequency, txpower, transctr, nbpackets, txifdur, txpksize, txfillbyte): - self._send( - struct.pack( - '>BBbHHHBB', - d.TYPE_REQ_TX, - frequency, - txpower, - transctr, - nbpackets, - txifdur, - txpksize, - txfillbyte, - ) - ) - - def send_REQ_RX(self, frequency, srcmac, transctr, txpksize, txfillbyte): - [m0, m1, m2, m3, m4, m5, m6, m7] = srcmac - self._send( - struct.pack( - '>BBBBBBBBBBHBB', - d.TYPE_REQ_RX, - frequency, - m0, m1, m2, m3, m4, m5, m6, m7, - transctr, - txpksize, - txfillbyte, - ) - ) - - def get_mac(self): - with self.dataLock: - return self.mac - - #======================== private ========================================= - - #=== stats - - def _reset_stats(self): - with self.dataLock: - self.stats = { - STAT_UARTNUMRXCRCOK : 0, - STAT_UARTNUMRXCRCWRONG : 0, - STAT_UARTNUMTX : 0, - } - - #=== serial rx - - def _handle_inputbuf(self, input_buf): - - try: - - inputtype = input_buf[0] - - if inputtype == d.TYPE_IND_TXDONE: - - # parse input - [msg_type] = \ - struct.unpack(">B", ''.join([chr(b) for b in input_buf])) - - # notify higher layer - self.cb( - serialport = self.serialport, - notif = { - 'type': msg_type, - } - ) - - elif inputtype == d.TYPE_IND_RX: - - # parse input - [msg_type, length, rssi, flags, pkctr] = \ - struct.unpack(">BBbBH", ''.join([chr(b) for b in input_buf])) - if flags & (1 << 7) != 0: - crc = 1 - else: - crc = 0 - - if flags & (1 << 6) != 0: - expected = 1 - else: - expected = 0 - - if crc == 0 or expected == 0: - pkctr = 0 - - # notify higher layer - self.cb( - serialport = self.serialport, - notif = { - 'type': msg_type, - 'length': length, - 'rssi': rssi, - 'crc': crc, - 'expected': expected, - 'pkctr': pkctr, - } - ) - - elif inputtype == d.TYPE_RESP_ST: - - # parse input - [msg_type, status, numnotifications, m1, m2, m3, m4, m5, m6, m7, m8] = \ - struct.unpack(">BBHBBBBBBBB", ''.join([chr(b) for b in input_buf])) - - # remember this mote's MAC address - with self.dataLock: - self.mac = (m1, m2, m3, m4, m5, m6, m7, m8) - - # send response as return code - with self.dataLock: - # assert self.waitResponse - self.response = { - 'type': msg_type, - 'status': status, - 'numnotifications': numnotifications, - 'mac': (m1, m2, m3, m4, m5, m6, m7, m8), - } - self.waitResponseEvent.set() - - elif inputtype == d.TYPE_IND_UP: - - # parse input - [msg_type] = \ - struct.unpack(">B", ''.join([chr(b) for b in input_buf])) - - # notify higher layer - self.cb( - serialport = self.serialport, - notif = { - 'type': msg_type, - } - ) - - else: - - raise SystemError('unknown notification type {0}'.format(input_buf[0])) - - except Exception as err: - - print err - - self.cb( - serialport = self.serialport, - notif = err, - ) - - #=== serial tx - - def _send(self, data_to_send): - with self.dataLock: - self.stats[STAT_UARTNUMTX] += 1 - with self.serialLock: - hdlc_data = self.hdlc.hdlcify(data_to_send) - - if self.iotlab: - self.serial.send(hdlc_data) - else: - self.serial.write(hdlc_data) - time.sleep(0.01) - - #=== helpers - - @property - def iotlab(self): - if self.serialport.lower().startswith('com') or self.serialport.count('tty'): - self._iotlab = False - else: - self._iotlab = True - - return self._iotlab From f05d836b6f7fbf4445e0569e9bdeeb4e00163fce Mon Sep 17 00:00:00 2001 From: Yasuyuki Tanaka Date: Thu, 25 Apr 2019 18:08:17 +0200 Subject: [PATCH 08/50] Remove MercatorDefines.py, values in which will be placed somewhere --- code/software/lib/MercatorDefines.py | 75 ---------------------------- 1 file changed, 75 deletions(-) delete mode 100644 code/software/lib/MercatorDefines.py diff --git a/code/software/lib/MercatorDefines.py b/code/software/lib/MercatorDefines.py deleted file mode 100644 index 2f9da114a8..0000000000 --- a/code/software/lib/MercatorDefines.py +++ /dev/null @@ -1,75 +0,0 @@ -#=== type - -TYPE_REQ_ST = 1 -TYPE_RESP_ST = 2 -TYPE_REQ_IDLE = 3 -TYPE_REQ_TX = 4 -TYPE_IND_TXDONE = 5 -TYPE_REQ_RX = 6 -TYPE_IND_RX = 7 -TYPE_IND_UP = 8 -TYPE_ALL = [ - TYPE_REQ_ST, - TYPE_RESP_ST, - TYPE_REQ_IDLE, - TYPE_REQ_TX, - TYPE_IND_TXDONE, - TYPE_REQ_RX, - TYPE_IND_RX, - TYPE_IND_UP -] - - -def type_num2text(num): - if num == TYPE_REQ_ST: - returnval = 'REQ_ST' - elif num == TYPE_RESP_ST: - returnval = 'RESP_ST' - elif num == TYPE_REQ_IDLE: - returnval = 'REQ_IDLE' - elif num == TYPE_REQ_TX: - returnval = 'REQ_TX' - elif num == TYPE_IND_TXDONE: - returnval = 'IND_TXDONE' - elif num == TYPE_REQ_RX: - returnval = 'REQ_RX' - elif num == TYPE_IND_RX: - returnval = 'IND_RX' - elif num == TYPE_IND_UP: - returnval = 'IND_UP' - else: - returnval = '' - return returnval - -#=== status - -ST_IDLE = 1 -ST_TX = 2 -ST_TXDONE = 3 -ST_RX = 4 -ST_ALL = [ - ST_IDLE, - ST_TX, - ST_TXDONE, - ST_RX, -] - - -def status_num2text(num): - if num == ST_IDLE: - returnval = 'IDLE' - elif num == ST_TX: - returnval = 'TX' - elif num == ST_TXDONE: - returnval = 'TXDONE' - elif num == ST_RX: - returnval = 'RX' - else: - returnval = '' - return returnval - -#=== helper - - -def format_mac(mac): - return '-'.join(['%02x' % b for b in mac]) From cfb96008be9e3a1c20a441ec4994d813f954f71e Mon Sep 17 00:00:00 2001 From: Yasuyuki Tanaka Date: Thu, 25 Apr 2019 18:08:58 +0200 Subject: [PATCH 09/50] Remove unnecessary files --- code/software/lib/README.md | 1 - code/software/lib/__init__.py | 0 2 files changed, 1 deletion(-) delete mode 100644 code/software/lib/README.md delete mode 100644 code/software/lib/__init__.py diff --git a/code/software/lib/README.md b/code/software/lib/README.md deleted file mode 100644 index f348b05ecf..0000000000 --- a/code/software/lib/README.md +++ /dev/null @@ -1 +0,0 @@ -This folder contains the libraries. diff --git a/code/software/lib/__init__.py b/code/software/lib/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 From 015b1a811941f44dd6f04999a514157cf8d98fd7 Mon Sep 17 00:00:00 2001 From: Yasuyuki Tanaka Date: Thu, 25 Apr 2019 18:09:20 +0200 Subject: [PATCH 10/50] Move and rename Hdlc.py --- code/software/lib/Hdlc.py => mercator/hdlc.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename code/software/lib/Hdlc.py => mercator/hdlc.py (100%) diff --git a/code/software/lib/Hdlc.py b/mercator/hdlc.py similarity index 100% rename from code/software/lib/Hdlc.py rename to mercator/hdlc.py From 265f0c12ea330a962f893f5dca32b4a34a76c550 Mon Sep 17 00:00:00 2001 From: Yasuyuki Tanaka Date: Fri, 17 May 2019 21:43:45 +0200 Subject: [PATCH 11/50] Remove mercatorRunExperiment.py and other stuff --- code/software/README.md | 2 - code/software/__init__.py | 0 code/software/app/README.md | 1 - code/software/app/__init__.py | 0 code/software/app/logging.conf | 43 --- code/software/app/mercatorRunExperiment.py | 358 --------------------- 6 files changed, 404 deletions(-) delete mode 100644 code/software/README.md delete mode 100644 code/software/__init__.py delete mode 100644 code/software/app/README.md delete mode 100644 code/software/app/__init__.py delete mode 100644 code/software/app/logging.conf delete mode 100644 code/software/app/mercatorRunExperiment.py diff --git a/code/software/README.md b/code/software/README.md deleted file mode 100644 index 1c2bd01cf5..0000000000 --- a/code/software/README.md +++ /dev/null @@ -1,2 +0,0 @@ -This folder contains the software which runs on a computer to drive an -experiment. \ No newline at end of file diff --git a/code/software/__init__.py b/code/software/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/code/software/app/README.md b/code/software/app/README.md deleted file mode 100644 index 977be51d73..0000000000 --- a/code/software/app/README.md +++ /dev/null @@ -1 +0,0 @@ -This folder contains the applications that use the Mercator libraries. diff --git a/code/software/app/__init__.py b/code/software/app/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/code/software/app/logging.conf b/code/software/app/logging.conf deleted file mode 100644 index 24d2a9b251..0000000000 --- a/code/software/app/logging.conf +++ /dev/null @@ -1,43 +0,0 @@ -#============================ formatters ====================================== - -[formatters] -keys=file,console - -[formatter_file] -format=%(asctime)s [%(name)s:%(levelname)s] %(message)s -datefmt= - -[formatter_console] -format=%(asctime)s %(levelname)s %(message)s -datefmt=%H:%M:%S - -#============================ handlers ======================================== - -[handlers] -keys=file,console - -[handler_file] -class=handlers.RotatingFileHandler -# args: filename, open mode, max file size, backup file count -args=('mercator.log', 'a', 20000000, 5) -formatter=file - -[handler_console] -class=StreamHandler -args=() -formatter=console - -#============================ loggers ========================================= - -[loggers] -keys=root,console - -# default logger -[logger_root] -level=INFO -handlers=file - -[logger_console] -level=INFO -handlers=console -qualname=console diff --git a/code/software/app/mercatorRunExperiment.py b/code/software/app/mercatorRunExperiment.py deleted file mode 100644 index 181541372a..0000000000 --- a/code/software/app/mercatorRunExperiment.py +++ /dev/null @@ -1,358 +0,0 @@ -#!/usr/bin/python - -# =========================== adjust path ===================================== - -import os -import sys -if __name__ == '__main__': - here = sys.path[0] - sys.path.insert(0, os.path.join(here, '..', 'lib')) - -# =========================== imports ========================================= - -import argparse -import threading -import json -import datetime -import logging.config -import gzip -import socket - -# Mercator -import MoteHandler -import MercatorDefines as d - -# IoT-lab -import iotlabcli as iotlab -from iotlabcli import experiment, node - -# =========================== logging ========================================= - -logging.config.fileConfig('logging.conf') - -logconsole = logging.getLogger("console") -logfile = logging.getLogger() #root logger - -# =========================== constants ======================================= - -FIRMWARE_PATH = "../../firmware/" -DATASET_PATH = "./" -METAS_PATH = "../../../metas/" - -# =========================== body ============================================ - -class MercatorRunExperiment(object): - - FREQUENCIES = [n+11 for n in range(16)] # frequencies to measure on, in IEEE notation - TXIFDUR = 10 # inter-frame duration, in ms - TXFILLBYTE = 0x0a # padding byte - - def __init__(self, args, serialports, site="local"): - - # local variables - self.dataLock = threading.Lock() - self.transctr = 0 - self.motes = {} - self.isTransmitting = False - self.site = site - self.freq = self.FREQUENCIES[0] - self.transmitterPort = "" - self.nbtrans = args.nbtrans - self.nbpackets = args.nbpackets - self.txpksize = args.txpksize - self.txpower = args.txpower - self.experiment_id = args.expid - - # use the file created by auth-cli command - usr, pwd = iotlab.get_user_credentials() - - # authenticate through the REST interface - self.api = iotlab.rest.Api(usr, pwd) - - # connect to motes - for s in serialports: - logfile.debug("connected to %s", s) - self.motes[s] = MoteHandler.MoteHandler(s, self._cb, reset_cb=self._reset_cb) - if not self.motes[s].isActive: - raise Exception("Mote {0} is not responding.".format(s)) - - # get current datetime - now = datetime.datetime.now().strftime("%Y.%m.%d-%H.%M.%S") - - # open file - self.file = gzip.open( - '{0}{1}-{2}_raw.csv.gz'.format( - DATASET_PATH, - self.site, - now - ), - 'wb' - ) - - # write settings - settings = { - "interframe_duration": self.TXIFDUR, - "fill_byte": self.TXFILLBYTE, - "tx_length": self.txpksize, - "tx_count": self.nbpackets, - "transaction_count": self.nbtrans, - "node_count": len(self.motes), - "location": self.site, - "channel_count": len(self.FREQUENCIES), - "start_date": now, - "txpower": self.txpower - } - json.dump(settings, self.file) - self.file.write('\n') - - # write csv header - self.file.write('datetime,src,dst,channel,rssi,crc,expected,' + - 'transaction_id,pkctr\n') - - try: - # start transactions - for self.transctr in range(0, self.nbtrans): - logconsole.info("Current transaction: %s", self.transctr) - self._do_transaction() - except (KeyboardInterrupt, socket.error): - # print error - print('\nExperiment ended before all transactions were done.') - else: - # print all OK - print('\nExperiment ended normally.') - finally: - self.file.close() - - # ======================= public ========================================== - - # ======================= cli handlers ==================================== - - def _do_transaction(self): - - for freq in self.FREQUENCIES: - logconsole.info("Current frequency: %s", freq) - self._do_experiment_per_frequency(freq) - - def _do_experiment_per_frequency(self, freq): - - for counter, transmitterPort in enumerate(self.motes): - self._do_experiment_per_transmitter(freq, transmitterPort) - if counter % (1+len(self.motes)/4) == 0: - logconsole.info("%d/%d", counter, len(self.motes)) - - def _do_experiment_per_transmitter(self, freq, transmitter_port): - - self.transmitterPort = transmitter_port - self.freq = freq - logfile.debug('freq=%s transmitter_port=%s', freq, transmitter_port) - - # switch all motes to idle - for (sp, mh) in self.motes.items(): - logfile.debug(' switch %s to idle', sp) - mh.send_REQ_IDLE() - - # check state, assert that all are idle - for (sp, mh) in self.motes.items(): - status = mh.send_REQ_ST() - if status is None or status['status'] != d.ST_IDLE: - logfile.warn('Node %s is not in IDLE state.', mh.mac) - - # switch all motes to rx - for (sp, mh) in self.motes.items(): - logfile.debug(' switch %s to RX', sp) - mh.send_REQ_RX( - frequency = freq, - srcmac = self.motes[transmitter_port].get_mac(), - transctr = self.transctr, - txpksize = self.txpksize, - txfillbyte = self.TXFILLBYTE, - ) - - # check state, assert that all are in rx mode - for (sp, mh) in self.motes.items(): - status = mh.send_REQ_ST() - if status is None or status['status'] != d.ST_RX: - logfile.warn('Node %s is not in RX state.', mh.mac) - - # switch tx mote to tx - logfile.debug(' switch %s to TX', transmitter_port) - - with self.dataLock: - self.waitTxDone = threading.Event() - self.isTransmitting = True - - self.motes[transmitter_port].send_REQ_TX( - frequency = freq, - txpower = self.txpower, - transctr = self.transctr, - nbpackets = self.nbpackets, - txifdur = self.TXIFDUR, - txpksize = self.txpksize, - txfillbyte = self.TXFILLBYTE, - ) - - # wait to be done - maxwaittime = 3*self.nbpackets*(self.TXIFDUR/1000.0) - self.waitTxDone.wait(maxwaittime) - if self.waitTxDone.isSet(): - logfile.debug('done.') - else: - #raise SystemError('timeout when waiting for transmission - # to be done (no IND_TXDONE after {0}s)'.format(maxwaittime)) - return - - # check state, assert numnotifications is expected - for (sp, mh) in self.motes.items(): - status = mh.send_REQ_ST() - if sp == transmitter_port: - if status is None or status['status'] != d.ST_TXDONE: - logfile.warn('Node %s is not in TXDONE state.', mh.mac) - else: - if status is None or status['status'] != d.ST_RX: - logfile.warn('Node %s is not in RX state.', mh.mac) - - # ======================= private ========================================= - - def _cb(self, serialport, notif): - - if isinstance(notif, dict): - if notif['type'] == d.TYPE_RESP_ST: - print 'state {0}'.format(serialport) - elif notif['type'] == d.TYPE_IND_TXDONE: - with self.dataLock: - # assert self.isTransmitting - self.isTransmitting = False - self.waitTxDone.set() - elif notif['type'] == d.TYPE_IND_RX: - timestamp = datetime.datetime.now().strftime("%Y-%m-%d_%H:%M:%S.%f") - src = d.format_mac(self.motes[self.transmitterPort].get_mac()) - dst = d.format_mac(self.motes[serialport].get_mac()) - frequency = self.freq - rssi = notif['rssi'] - crc = notif['crc'] - expected = notif['expected'] - transctr = self.transctr - pkctr = notif['pkctr'] - self.file.write("{0},{1},{2},{3},{4},{5},{6},{7},{8}\n".format( - timestamp, - src, - dst, - frequency, - rssi, - crc, - expected, - transctr, - pkctr, - )) - elif notif['type'] == d.TYPE_IND_UP: - logfile.debug("Node %s restarted", - d.format_mac(self.motes[serialport].get_mac())) - - def _reset_cb(self, mote): - logfile.debug('restarting mote {0}'.format(mote.serialport)) - mote_url = ".".join([mote.serialport, self.site, "iot-lab.info"]) - node.node_command(self.api, 'reset', self.experiment_id, [mote_url]) - logfile.debug('mote {0} restarted'.format(mote.serialport)) - - @staticmethod - def _quit_callback(): - print "quitting!" - -# ========================== helpers ========================================== - - -def get_motes(expid): - # use the file created by auth-cli command - usr, pwd = iotlab.get_user_credentials() - - # authenticate through the REST interface - api = iotlab.rest.Api(usr, pwd) - - # get experiment resources - data = experiment.get_experiment(api, expid, 'resources') - - return (map(lambda x: x["network_address"].split('.')[0], data["items"]), - data["items"][0]["network_address"].split('.')[1]) - - -def submit_experiment(args): - """ - Reserve nodes in the given site. - The function uses the json experiment file corresponding to the site. - :param str firmware: the name of the firmware as it is in the code/firmware/ folder - :param str board: the type of board (ex: m3) - :param str testbed: The name of the testbed (ex: grenoble) - :param int duration: The duration of the experiment in minutes - :param int nbnodes: The number of nodes to use - :return: The id of the experiment - """ - - # use the file created by auth-cli command - usr, pwd = iotlab.get_user_credentials() - - # authenticate through the REST interface - api = iotlab.rest.Api(usr, pwd) - - # load the experiment - firmware = FIRMWARE_PATH + args.firmware - profile = "mercator" - if args.nbnodes != 0: - if args.board == "m3": - args.board = "m3:at86rf231" - nodes = experiment.AliasNodes(args.nbnodes, args.testbed, args.board) - else: - tb_file = open("{0}states.json".format(METAS_PATH)) - tb_json = json.load(tb_file) - nodes = [x for x in tb_json[args.testbed] if args.board in x] - resources = [experiment.exp_resources(nodes, firmware, profile)] - - # submit experiment - logconsole.info("Submitting experiment.") - expid = experiment.submit_experiment( - api, "mercatorExp", args.duration, - resources)["id"] - - logconsole.info("Experiment submited with id: %u", expid) - logconsole.info("Waiting for experiment to be running.") - experiment.wait_experiment(api, expid) - - return expid - -# =========================== main ============================================ - - -def main(): - - # parsing user arguments - parser = argparse.ArgumentParser() - parser.add_argument("testbed", help="The name of the current testbed") - parser.add_argument("firmware", help="The firmware to flash", type=str) - parser.add_argument("-d", "--duration", help="Duration of the experiment in minutes", type=int, default=30) - parser.add_argument("-e", "--expid", help="The experiment id", type=int, default=None) - parser.add_argument("-b", "--board", help="The type of board to use", type=str, default="m3") - parser.add_argument("-n", "--nbnodes", help="The number of nodes to use (0=all)", type=int, default=0) - parser.add_argument("-p", "--nbpackets", help="The number of packet per transaction", type=int, default=100) - parser.add_argument("-t", "--nbtrans", help="The number of transaction", type=int, default=1) - parser.add_argument("-s", "--txpksize", help="The size of each packet in bytes", type=int, default=100) - parser.add_argument("--txpower", help="The transmission power (dBm)", type=int, default=0) - args = parser.parse_args() - - if args.testbed == "local": - MercatorRunExperiment( - args = args, - serialports = ['/dev/ttyUSB1', '/dev/ttyUSB3'], - ) - else: - if args.expid is None: - expid = submit_experiment(args) - else: - expid = args.expid - (serialports, site) = get_motes(expid) - MercatorRunExperiment( - args = args, - serialports = serialports, - site = site, - ) - -if __name__ == '__main__': - main() From e26dc70b71b746bdd6374c7440990f5fc86d583b Mon Sep 17 00:00:00 2001 From: Yasuyuki Tanaka Date: Fri, 17 May 2019 21:44:46 +0200 Subject: [PATCH 12/50] Remove iotlab-m3.elf that is based on an old OpenWSN firmware --- code/firmware/README.md | 4 ---- code/firmware/iotlab-m3.elf | Bin 423212 -> 0 bytes 2 files changed, 4 deletions(-) delete mode 100644 code/firmware/README.md delete mode 100644 code/firmware/iotlab-m3.elf diff --git a/code/firmware/README.md b/code/firmware/README.md deleted file mode 100644 index ed1830cbe4..0000000000 --- a/code/firmware/README.md +++ /dev/null @@ -1,4 +0,0 @@ -This folder contains the pre-compiled firmware to run on the IoT-LAB motes. - -More details in [the Mercator Firmware wiki page](https://github.com/openwsn-berkeley/mercator/wiki/Mercator-Firmware). -And how to build the firmware [here](https://github.com/openwsn-berkeley/mercator/wiki/How-to-build-the-firmware). diff --git a/code/firmware/iotlab-m3.elf b/code/firmware/iotlab-m3.elf deleted file mode 100644 index 0033c21b76206427296bddf7ac45dcd51a9449a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 423212 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

KiP;Cm9nh#3ShE;%)I7!RX7>-EHN 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 Date: Thu, 25 Apr 2019 18:11:54 +0200 Subject: [PATCH 13/50] hdlc: code-style fixes --- mercator/hdlc.py | 46 +++++++++++++++++++++++++--------------------- 1 file changed, 25 insertions(+), 21 deletions(-) diff --git a/mercator/hdlc.py b/mercator/hdlc.py index ce70deeee6..de0ce5037a 100644 --- a/mercator/hdlc.py +++ b/mercator/hdlc.py @@ -4,12 +4,12 @@ class HdlcException(Exception): class Hdlc(object): - HDLC_FLAG = '\x7e' - HDLC_FLAG_ESCAPED = '\x5e' - HDLC_ESCAPE = '\x7d' - HDLC_ESCAPE_ESCAPED = '\x5d' - HDLC_CRCINIT = 0xffff - HDLC_CRCGOOD = 0xf0b8 + HDLC_FLAG = '\x7e' + HDLC_FLAG_ESCAPED = '\x5e' + HDLC_ESCAPE = '\x7d' + HDLC_ESCAPE_ESCAPED = '\x5d' + HDLC_CRCINIT = 0xffff + HDLC_CRCGOOD = 0xf0b8 FCS16TAB = ( 0x0000, 0x1189, 0x2312, 0x329b, 0x4624, 0x57ad, 0x6536, 0x74bf, @@ -56,23 +56,25 @@ def hdlcify(self, in_buf): """ # make copy of input - out_buf = in_buf[:] + out_buf = in_buf[:] # calculate CRC - crc = self.HDLC_CRCINIT + crc = self.HDLC_CRCINIT for b in out_buf: - crc = self._crc_iteration(crc, b) - crc = 0xffff-crc + crc = self._crc_iteration(crc, b) + crc = 0xffff-crc # append CRC - out_buf = out_buf + chr(crc & 0xff) + chr((crc & 0xff00) >> 8) + out_buf = out_buf + chr(crc & 0xff) + chr((crc & 0xff00) >> 8) # stuff bytes - out_buf = out_buf.replace(self.HDLC_ESCAPE, self.HDLC_ESCAPE+self.HDLC_ESCAPE_ESCAPED) - out_buf = out_buf.replace(self.HDLC_FLAG, self.HDLC_ESCAPE+self.HDLC_FLAG_ESCAPED) + out_buf = out_buf.replace(self.HDLC_ESCAPE, + self.HDLC_ESCAPE+self.HDLC_ESCAPE_ESCAPED) + out_buf = out_buf.replace(self.HDLC_FLAG, + self.HDLC_ESCAPE+self.HDLC_FLAG_ESCAPED) # add flags - out_buf = self.HDLC_FLAG + out_buf + self.HDLC_FLAG + out_buf = self.HDLC_FLAG + out_buf + self.HDLC_FLAG return out_buf @@ -86,27 +88,29 @@ def dehdlcify(self, in_buf): assert in_buf[-1] == self.HDLC_FLAG # make copy of input - out_buf = in_buf[:] + out_buf = in_buf[:] # remove flags - out_buf = out_buf[1:-1] + out_buf = out_buf[1:-1] # unstuff - out_buf = out_buf.replace(self.HDLC_ESCAPE+self.HDLC_FLAG_ESCAPED, self.HDLC_FLAG) - out_buf = out_buf.replace(self.HDLC_ESCAPE+self.HDLC_ESCAPE_ESCAPED, self.HDLC_ESCAPE) + out_buf = out_buf.replace(self.HDLC_ESCAPE+self.HDLC_FLAG_ESCAPED, + self.HDLC_FLAG) + out_buf = out_buf.replace(self.HDLC_ESCAPE+self.HDLC_ESCAPE_ESCAPED, + self.HDLC_ESCAPE) if len(out_buf) < 2: raise HdlcException('packet too short') # check CRC - crc = self.HDLC_CRCINIT + crc = self.HDLC_CRCINIT for b in out_buf: - crc = self._crc_iteration(crc, b) + crc = self._crc_iteration(crc, b) if crc != self.HDLC_CRCGOOD: raise HdlcException('wrong CRC') # remove CRC - out_buf = out_buf[:-2] # remove CRC + out_buf = out_buf[:-2] # remove CRC return out_buf From a72d40da8815b06180449c15e4036d0a0f4dae5c Mon Sep 17 00:00:00 2001 From: Yasuyuki Tanaka Date: Fri, 17 May 2019 21:47:33 +0200 Subject: [PATCH 14/50] hdlc: refactor the entire code - implement as functions not as a class - make it work with Python 3 --- mercator/hdlc.py | 223 ++++++++++++++++++++++------------------------- 1 file changed, 106 insertions(+), 117 deletions(-) diff --git a/mercator/hdlc.py b/mercator/hdlc.py index de0ce5037a..6bcc1f5b2e 100644 --- a/mercator/hdlc.py +++ b/mercator/hdlc.py @@ -1,120 +1,109 @@ class HdlcException(Exception): pass - -class Hdlc(object): - - HDLC_FLAG = '\x7e' - HDLC_FLAG_ESCAPED = '\x5e' - HDLC_ESCAPE = '\x7d' - HDLC_ESCAPE_ESCAPED = '\x5d' - HDLC_CRCINIT = 0xffff - HDLC_CRCGOOD = 0xf0b8 - - FCS16TAB = ( - 0x0000, 0x1189, 0x2312, 0x329b, 0x4624, 0x57ad, 0x6536, 0x74bf, - 0x8c48, 0x9dc1, 0xaf5a, 0xbed3, 0xca6c, 0xdbe5, 0xe97e, 0xf8f7, - 0x1081, 0x0108, 0x3393, 0x221a, 0x56a5, 0x472c, 0x75b7, 0x643e, - 0x9cc9, 0x8d40, 0xbfdb, 0xae52, 0xdaed, 0xcb64, 0xf9ff, 0xe876, - 0x2102, 0x308b, 0x0210, 0x1399, 0x6726, 0x76af, 0x4434, 0x55bd, - 0xad4a, 0xbcc3, 0x8e58, 0x9fd1, 0xeb6e, 0xfae7, 0xc87c, 0xd9f5, - 0x3183, 0x200a, 0x1291, 0x0318, 0x77a7, 0x662e, 0x54b5, 0x453c, - 0xbdcb, 0xac42, 0x9ed9, 0x8f50, 0xfbef, 0xea66, 0xd8fd, 0xc974, - 0x4204, 0x538d, 0x6116, 0x709f, 0x0420, 0x15a9, 0x2732, 0x36bb, - 0xce4c, 0xdfc5, 0xed5e, 0xfcd7, 0x8868, 0x99e1, 0xab7a, 0xbaf3, - 0x5285, 0x430c, 0x7197, 0x601e, 0x14a1, 0x0528, 0x37b3, 0x263a, - 0xdecd, 0xcf44, 0xfddf, 0xec56, 0x98e9, 0x8960, 0xbbfb, 0xaa72, - 0x6306, 0x728f, 0x4014, 0x519d, 0x2522, 0x34ab, 0x0630, 0x17b9, - 0xef4e, 0xfec7, 0xcc5c, 0xddd5, 0xa96a, 0xb8e3, 0x8a78, 0x9bf1, - 0x7387, 0x620e, 0x5095, 0x411c, 0x35a3, 0x242a, 0x16b1, 0x0738, - 0xffcf, 0xee46, 0xdcdd, 0xcd54, 0xb9eb, 0xa862, 0x9af9, 0x8b70, - 0x8408, 0x9581, 0xa71a, 0xb693, 0xc22c, 0xd3a5, 0xe13e, 0xf0b7, - 0x0840, 0x19c9, 0x2b52, 0x3adb, 0x4e64, 0x5fed, 0x6d76, 0x7cff, - 0x9489, 0x8500, 0xb79b, 0xa612, 0xd2ad, 0xc324, 0xf1bf, 0xe036, - 0x18c1, 0x0948, 0x3bd3, 0x2a5a, 0x5ee5, 0x4f6c, 0x7df7, 0x6c7e, - 0xa50a, 0xb483, 0x8618, 0x9791, 0xe32e, 0xf2a7, 0xc03c, 0xd1b5, - 0x2942, 0x38cb, 0x0a50, 0x1bd9, 0x6f66, 0x7eef, 0x4c74, 0x5dfd, - 0xb58b, 0xa402, 0x9699, 0x8710, 0xf3af, 0xe226, 0xd0bd, 0xc134, - 0x39c3, 0x284a, 0x1ad1, 0x0b58, 0x7fe7, 0x6e6e, 0x5cf5, 0x4d7c, - 0xc60c, 0xd785, 0xe51e, 0xf497, 0x8028, 0x91a1, 0xa33a, 0xb2b3, - 0x4a44, 0x5bcd, 0x6956, 0x78df, 0x0c60, 0x1de9, 0x2f72, 0x3efb, - 0xd68d, 0xc704, 0xf59f, 0xe416, 0x90a9, 0x8120, 0xb3bb, 0xa232, - 0x5ac5, 0x4b4c, 0x79d7, 0x685e, 0x1ce1, 0x0d68, 0x3ff3, 0x2e7a, - 0xe70e, 0xf687, 0xc41c, 0xd595, 0xa12a, 0xb0a3, 0x8238, 0x93b1, - 0x6b46, 0x7acf, 0x4854, 0x59dd, 0x2d62, 0x3ceb, 0x0e70, 0x1ff9, - 0xf78f, 0xe606, 0xd49d, 0xc514, 0xb1ab, 0xa022, 0x92b9, 0x8330, - 0x7bc7, 0x6a4e, 0x58d5, 0x495c, 0x3de3, 0x2c6a, 0x1ef1, 0x0f78, - ) - - #============================ public ====================================== - - def hdlcify(self, in_buf): - """ - Build an hdlc frame. - - Use 0x00 for both addr byte, and control byte. - """ - - # make copy of input - out_buf = in_buf[:] - - # calculate CRC - crc = self.HDLC_CRCINIT - for b in out_buf: - crc = self._crc_iteration(crc, b) - crc = 0xffff-crc - - # append CRC - out_buf = out_buf + chr(crc & 0xff) + chr((crc & 0xff00) >> 8) - - # stuff bytes - out_buf = out_buf.replace(self.HDLC_ESCAPE, - self.HDLC_ESCAPE+self.HDLC_ESCAPE_ESCAPED) - out_buf = out_buf.replace(self.HDLC_FLAG, - self.HDLC_ESCAPE+self.HDLC_FLAG_ESCAPED) - - # add flags - out_buf = self.HDLC_FLAG + out_buf + self.HDLC_FLAG - - return out_buf - - def dehdlcify(self, in_buf): - """ - Parse an hdlc frame. - - :returns: the extracted frame, or -1 if wrong checksum - """ - assert in_buf[ 0] == self.HDLC_FLAG - assert in_buf[-1] == self.HDLC_FLAG - - # make copy of input - out_buf = in_buf[:] - - # remove flags - out_buf = out_buf[1:-1] - - # unstuff - out_buf = out_buf.replace(self.HDLC_ESCAPE+self.HDLC_FLAG_ESCAPED, - self.HDLC_FLAG) - out_buf = out_buf.replace(self.HDLC_ESCAPE+self.HDLC_ESCAPE_ESCAPED, - self.HDLC_ESCAPE) - - if len(out_buf) < 2: - raise HdlcException('packet too short') - - # check CRC - crc = self.HDLC_CRCINIT - for b in out_buf: - crc = self._crc_iteration(crc, b) - if crc != self.HDLC_CRCGOOD: - raise HdlcException('wrong CRC') - - # remove CRC - out_buf = out_buf[:-2] # remove CRC - - return out_buf - - #============================ private ===================================== - - def _crc_iteration(self, crc, b): - return (crc >> 8) ^ self.FCS16TAB[((crc ^ (ord(b))) & 0xff)] +HDLC_MIN_FRAME_LEN = 5 # |HDLC_FLAG(1)|DATA|CRC(2)|HDLC_FLAG(1)| + +HDLC_FLAG = b'\x7e' +HDLC_FLAG_ESCAPED = b'\x5e' +HDLC_ESCAPE = b'\x7d' +HDLC_ESCAPE_ESCAPED = b'\x5d' +HDLC_CRCINIT = 0xffff +HDLC_CRCGOOD = 0xf0b8 + +FCS16TAB = ( + 0x0000, 0x1189, 0x2312, 0x329b, 0x4624, 0x57ad, 0x6536, 0x74bf, + 0x8c48, 0x9dc1, 0xaf5a, 0xbed3, 0xca6c, 0xdbe5, 0xe97e, 0xf8f7, + 0x1081, 0x0108, 0x3393, 0x221a, 0x56a5, 0x472c, 0x75b7, 0x643e, + 0x9cc9, 0x8d40, 0xbfdb, 0xae52, 0xdaed, 0xcb64, 0xf9ff, 0xe876, + 0x2102, 0x308b, 0x0210, 0x1399, 0x6726, 0x76af, 0x4434, 0x55bd, + 0xad4a, 0xbcc3, 0x8e58, 0x9fd1, 0xeb6e, 0xfae7, 0xc87c, 0xd9f5, + 0x3183, 0x200a, 0x1291, 0x0318, 0x77a7, 0x662e, 0x54b5, 0x453c, + 0xbdcb, 0xac42, 0x9ed9, 0x8f50, 0xfbef, 0xea66, 0xd8fd, 0xc974, + 0x4204, 0x538d, 0x6116, 0x709f, 0x0420, 0x15a9, 0x2732, 0x36bb, + 0xce4c, 0xdfc5, 0xed5e, 0xfcd7, 0x8868, 0x99e1, 0xab7a, 0xbaf3, + 0x5285, 0x430c, 0x7197, 0x601e, 0x14a1, 0x0528, 0x37b3, 0x263a, + 0xdecd, 0xcf44, 0xfddf, 0xec56, 0x98e9, 0x8960, 0xbbfb, 0xaa72, + 0x6306, 0x728f, 0x4014, 0x519d, 0x2522, 0x34ab, 0x0630, 0x17b9, + 0xef4e, 0xfec7, 0xcc5c, 0xddd5, 0xa96a, 0xb8e3, 0x8a78, 0x9bf1, + 0x7387, 0x620e, 0x5095, 0x411c, 0x35a3, 0x242a, 0x16b1, 0x0738, + 0xffcf, 0xee46, 0xdcdd, 0xcd54, 0xb9eb, 0xa862, 0x9af9, 0x8b70, + 0x8408, 0x9581, 0xa71a, 0xb693, 0xc22c, 0xd3a5, 0xe13e, 0xf0b7, + 0x0840, 0x19c9, 0x2b52, 0x3adb, 0x4e64, 0x5fed, 0x6d76, 0x7cff, + 0x9489, 0x8500, 0xb79b, 0xa612, 0xd2ad, 0xc324, 0xf1bf, 0xe036, + 0x18c1, 0x0948, 0x3bd3, 0x2a5a, 0x5ee5, 0x4f6c, 0x7df7, 0x6c7e, + 0xa50a, 0xb483, 0x8618, 0x9791, 0xe32e, 0xf2a7, 0xc03c, 0xd1b5, + 0x2942, 0x38cb, 0x0a50, 0x1bd9, 0x6f66, 0x7eef, 0x4c74, 0x5dfd, + 0xb58b, 0xa402, 0x9699, 0x8710, 0xf3af, 0xe226, 0xd0bd, 0xc134, + 0x39c3, 0x284a, 0x1ad1, 0x0b58, 0x7fe7, 0x6e6e, 0x5cf5, 0x4d7c, + 0xc60c, 0xd785, 0xe51e, 0xf497, 0x8028, 0x91a1, 0xa33a, 0xb2b3, + 0x4a44, 0x5bcd, 0x6956, 0x78df, 0x0c60, 0x1de9, 0x2f72, 0x3efb, + 0xd68d, 0xc704, 0xf59f, 0xe416, 0x90a9, 0x8120, 0xb3bb, 0xa232, + 0x5ac5, 0x4b4c, 0x79d7, 0x685e, 0x1ce1, 0x0d68, 0x3ff3, 0x2e7a, + 0xe70e, 0xf687, 0xc41c, 0xd595, 0xa12a, 0xb0a3, 0x8238, 0x93b1, + 0x6b46, 0x7acf, 0x4854, 0x59dd, 0x2d62, 0x3ceb, 0x0e70, 0x1ff9, + 0xf78f, 0xe606, 0xd49d, 0xc514, 0xb1ab, 0xa022, 0x92b9, 0x8330, + 0x7bc7, 0x6a4e, 0x58d5, 0x495c, 0x3de3, 0x2c6a, 0x1ef1, 0x0f78, +) + +def hdlcify(in_buf): + # append CRC to in_buf, and wrap it with HDLC_FLAG(0xfe) + + if not in_buf: + raise HdlcException('in_buf is empty') + + # calculate CRC + crc = HDLC_CRCINIT + for b in in_buf: + crc = _crc_iteration(crc, b) + crc = 0xffff - crc + + # append CRC + out_buf = bytearray(in_buf + + crc.to_bytes(2, byteorder='little', signed=False)) + + # stuff bytes + out_buf = out_buf.replace(HDLC_ESCAPE, + HDLC_ESCAPE+HDLC_ESCAPE_ESCAPED) + out_buf = out_buf.replace(HDLC_FLAG, + HDLC_ESCAPE+HDLC_FLAG_ESCAPED) + + # add flags + out_buf = HDLC_FLAG + out_buf + HDLC_FLAG + return out_buf + +def dehdlcify(in_buf): + # remove HDLC_FLAG(0xfe) and verify CRC + + if len(in_buf) < HDLC_MIN_FRAME_LEN: + raise HdlcException('packet too short') + + hdlc_flag_value = int.from_bytes(HDLC_FLAG, byteorder='big') + assert in_buf[0] == hdlc_flag_value + assert in_buf[-1] == hdlc_flag_value + + # make copy of input + out_buf = in_buf[:] + + # remove flags + out_buf = out_buf[1:-1] + + # unstuff + out_buf = out_buf.replace(HDLC_ESCAPE+HDLC_FLAG_ESCAPED, + HDLC_FLAG) + out_buf = out_buf.replace(HDLC_ESCAPE+HDLC_ESCAPE_ESCAPED, + HDLC_ESCAPE) + + # check CRC + crc = HDLC_CRCINIT + for b in out_buf: + crc = _crc_iteration(crc, b) + if crc != HDLC_CRCGOOD: + raise HdlcException('wrong CRC') + + # remove CRC + out_buf = out_buf[:-2] # remove CRC + + return out_buf + +def _crc_iteration(crc, b): + return (crc >> 8) ^ FCS16TAB[((crc ^ b) & 0xff)] From 686409e1940a09a6de63d030aa8fb13c0017ccd8 Mon Sep 17 00:00:00 2001 From: Yasuyuki Tanaka Date: Fri, 17 May 2019 21:50:34 +0200 Subject: [PATCH 15/50] Re-implement mercator - work with Python 3 - configured through a YAML file - can be run against FIT IoT/LAB remotely --- README.md | 10 + firmwares/openwsn-iot-lab_M3.elf | Bin 0 -> 737052 bytes logging.yml | 14 + mercator.yml | 25 ++ mercator/__init__.py | 0 mercator/__main__.py | 197 +++++++++++ mercator/node.py | 579 +++++++++++++++++++++++++++++++ mercator/platform/__init__.py | 6 + mercator/platform/iotlab.py | 405 +++++++++++++++++++++ mercator/platform/skeleton.py | 30 ++ mercator/utils.py | 94 +++++ requirements.txt | 14 +- setup.py | 12 + 13 files changed, 1383 insertions(+), 3 deletions(-) create mode 100755 firmwares/openwsn-iot-lab_M3.elf create mode 100644 logging.yml create mode 100644 mercator.yml create mode 100644 mercator/__init__.py create mode 100644 mercator/__main__.py create mode 100644 mercator/node.py create mode 100644 mercator/platform/__init__.py create mode 100644 mercator/platform/iotlab.py create mode 100644 mercator/platform/skeleton.py create mode 100644 mercator/utils.py create mode 100644 setup.py diff --git a/README.md b/README.md index 5a21350333..380debf969 100644 --- a/README.md +++ b/README.md @@ -6,3 +6,13 @@ * **dense in time**, meaning the connectivity is continuously assessed over a long period of time; it allows one to see variation of connectivity over time. * **dense in space**, meaning the connectivity is assessed over hundreds of measurements points; it allows one to see how connectivity is affected by the location of transmitter and receivers. * **dense in frequency**, meaning the connectivity is assessed for each of the 16 IEEE802.15.4 frequencies; it allows one to see how connectivity is affected by the communication frequency. + +## Get Mercator +1. Make sure you have Python 3 installed (Python 2 is not supported) +1. Clone or download Mercator repository +1. Move into your local Mercator repository +1. Install required Python packages: `$ pip install -r requirements.txt` + +## How to Run Mercator +1. Edit mercator.yml as you like +1. Run `mercator.py` diff --git a/firmwares/openwsn-iot-lab_M3.elf b/firmwares/openwsn-iot-lab_M3.elf new file mode 100755 index 0000000000000000000000000000000000000000..0433592f2c31dfd6bfa9f6e5199d5fe4318a7e38 GIT binary patch literal 737052 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 EKgX@>iU0rr literal 0 HcmV?d00001 diff --git a/logging.yml b/logging.yml new file mode 100644 index 0000000000..2e43c5bc86 --- /dev/null +++ b/logging.yml @@ -0,0 +1,14 @@ +version: 1 +formatters: + default: + format: '%(asctime)s: [%(levelname)s] %(message)s' +handlers: + file: + class: logging.handlers.RotatingFileHandler + formatter: default + filename: mercator.log + maxBytes: 1048576 # 1MB + backupCount: 2 +root: + level: DEBUG + handlers: [file] diff --git a/mercator.yml b/mercator.yml new file mode 100644 index 0000000000..2781f06dcc --- /dev/null +++ b/mercator.yml @@ -0,0 +1,25 @@ +measurement: + num_transactions: 10 + channels: [11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26] + # tx_power_dbm will be ignored by OpenWSN since it doesn't support this + tx_power_dbm: 0 + tx_len: 100 + tx_interval_ms: 10 + tx_num_per_transaction: 100 + tx_fill_byte: 0x5a + +platform: + name: iotlab + experiment_duration_min: 60 + nodes: + - m3-2.grenoble.iot-lab.info + - m3-4.grenoble.iot-lab.info + - m3-5.grenoble.iot-lab.info + - m3-9.grenoble.iot-lab.info + - m3-11.grenoble.iot-lab.info + - m3-13.grenoble.iot-lab.info + - m3-14.grenoble.iot-lab.info + firmware: + os: OpenWSN + archi: M3 + path: firmwares/openwsn-iot-lab_M3.elf diff --git a/mercator/__init__.py b/mercator/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/mercator/__main__.py b/mercator/__main__.py new file mode 100644 index 0000000000..8d1803d402 --- /dev/null +++ b/mercator/__main__.py @@ -0,0 +1,197 @@ +import argparse +import datetime +from importlib import import_module +import logging +import logging.config +import os +import sys +import threading +import time + +import tqdm +import yaml + +from mercator.node import NodeStatus + +from mercator.utils import Outfile, print_bold + +def _init_logger(): + config_file_path = os.path.join(os.path.dirname(__file__), '..', + 'logging.yml') + config_file_path = os.path.abspath(config_file_path) + + with open(config_file_path, 'r') as f: + try: + config = yaml.safe_load(f) + logging.config.dictConfig(config) + except yaml.YAMLError as err: + print_bold('{0} is not a valid YAML file'.format(config_file_path)) + exit(1) + except ValueError as err: + print_bold('{0} is not loaded succesfully'.format(config_file_path)) + print(str(err)) + exit(1) + +def _parse_args(): + parser = argparse.ArgumentParser() + parser.add_argument('-c', dest='config', help='path to config YAML file', + type=str, required=True) + parser.add_argument('-i', dest='exp_id', + help='attach to exp_id (only for iotlab)', + type=int) + parser.add_argument('-p', dest='program_firmware', + help='program firmware to nodes (only for opentestbed)', + default=False, action='store_true') + parser.add_argument('-o', dest='out_file_path', + help='path to an output file', + type=str, default='output.jsonl.gz') + parser.add_argument('-f', dest='overwrite_out_file', + help='overwrite an existing file', + default=False, action='store_true') + return parser.parse_args() + +def _read_config(config_file_path): + with open(config_file_path, 'r') as f: + try: + config = yaml.safe_load(f) + except yaml.YAMLError as err: + config_file_name = os.path.basename(config_file_path) + print('cannot parse {0} as a YAML file'.format(config_file_name), + file=sys.stderr) + print(err, file=sys.stderr) + exit(1) + return config + +def _setup_platform(platform_config, args): + module_name = 'mercator.platform.{0}'.format(platform_config['name']) + platform_module = import_module(module_name) + + if platform_config['name'] == 'iotlab': + platform_args = {'exp_id': args.exp_id} + elif platform_config['name'] == 'opentestbed': + platform_args = {'program_firmware': args.program_firmware} + else: + raise NotImplementedError( + 'Platform {0} is not supported'.format(platform_config['name'])) + + return platform_module.Platform(platform_config, **platform_args) + +def _run_transactions(num_transactions, channels, nodes, outfile): + num_nodes = len(nodes) + total_exec_num = num_transactions * len(channels) * num_nodes + + outfile.open() + with tqdm.tqdm(total=total_exec_num, unit='meas') as pbar: + for trans_ctr in range(num_transactions): + for channel in channels: + for node_idx, tx_node in enumerate(nodes): + rx_nodes = [node for node in nodes if node != tx_node] + + _beginning_of_measurement(pbar, + trans_ctr, channel, + node_idx, num_nodes) + + start_time = datetime.datetime.now() + + _make_sure_every_node_is_idle(nodes) + + _make_rx_nodes_start_listening(rx_nodes, + tx_node, channel, trans_ctr) + + # start TX and wait to finish + tx_node.start_tx(channel, trans_ctr) + tx_node.wait_tx_done() + + _make_rx_nodes_stop_listening(rx_nodes) + _save_data(outfile, tx_node, rx_nodes, + start_time, trans_ctr, channel) + + _end_of_measurement(pbar, + trans_ctr, channel, node_idx, num_nodes) + + outfile.flush() + outfile.close() + +def _beginning_of_measurement(pbar, trans_ctr, channel, node_idx, num_nodes): + logging.info('Beginning of measurement - ' + + 'trans_ctr: {0}, '.format(trans_ctr) + + 'channel: {0}, '.format(channel) + + 'tx_node: {0}/{1}'.format(node_idx+1, + num_nodes)) + + pbar.set_description('trans_ctr {0}'.format(trans_ctr)) + pbar.set_postfix(ch=channel, + tx_node='{0}/{1}'.format(node_idx+1, + num_nodes)) + +def _make_sure_every_node_is_idle(nodes): + threads = {} + for _idx, _node in enumerate(nodes): + thread = threading.Thread(target=_node.update_status) + thread.start() + threads[_idx] = thread + for _idx, _node in enumerate(nodes): + threads[_idx].join() + assert _node.status == NodeStatus.IDLE + +def _make_rx_nodes_start_listening(rx_nodes, tx_node, channel, trans_ctr): + threads = {} + for _idx, _node in enumerate(rx_nodes): + thread = threading.Thread(target=_node.start_rx, + args=(channel, + tx_node.mac_addr, + trans_ctr)) + thread.start() + threads[_idx] = thread + for _idx, _node in enumerate(rx_nodes): + threads[_idx].join() + assert _node.status == NodeStatus.RX + +def _make_rx_nodes_stop_listening(rx_nodes): + threads = {} + for _idx, _node in enumerate(rx_nodes): + thread = threading.Thread(target=_node.stop_rx) + thread.start() + threads[_idx] = thread + for _idx, _node in enumerate(rx_nodes): + threads[_idx].join() + assert _node.status == NodeStatus.IDLE + +def _save_data(outfile, tx_node, rx_nodes, start_time, trans_ctr, channel): + outfile.write_data('tx', + {'datetime': start_time.isoformat(), + 'trans_ctr': trans_ctr, + 'channel': channel, + 'mac_addr': str(tx_node.mac_addr)}) + for rx_node in rx_nodes: + rx_data = {'mac_addr': str(rx_node.mac_addr), + 'rssi_records': rx_node.rssi_records} + outfile.write_data('rx', rx_data) + +def _end_of_measurement(pbar, trans_ctr, channel, node_idx, num_nodes): + logging.info('End of measurement - ' + + 'trans_ctr: {0}, '.format(trans_ctr) + + 'channel: {0}, '.format(channel) + + 'tx_node: {0}/{1}'.format(node_idx+1, + num_nodes)) + pbar.update() + +def main(): + _init_logger() + + args = _parse_args() + config = _read_config(args.config) + outfile = Outfile(args.out_file_path, config, args.overwrite_out_file) + + logging.info('Start Mercator at ' + + '"{0}" platform'.format(config['platform']['name'])) + + platform = _setup_platform(config['platform'], args) + nodes = platform.setup_measurement(config['measurement']) + + channels = config['measurement']['channels'] + num_transactions = config['measurement']['num_transactions_num'] + _run_transactions(num_transactions, channels, nodes, outfile) + +if __name__ == '__main__': + main() diff --git a/mercator/node.py b/mercator/node.py new file mode 100644 index 0000000000..93d62487d4 --- /dev/null +++ b/mercator/node.py @@ -0,0 +1,579 @@ +import enum +import logging +import socket +import struct +import threading +import time + +import netaddr + +from mercator.hdlc import hdlcify, dehdlcify, HdlcException +from mercator.hdlc import HDLC_FLAG, HDLC_MIN_FRAME_LEN +from mercator.utils import restore_xon_xoff, OSName + +class MsgType(enum.IntEnum): + REQ_ST = 1 + RESP_ST = 2 + REQ_IDLE = 3 + REQ_TX = 4 + IND_TXDONE = 5 + REQ_RX = 6 + IND_RX = 7 + IND_UP = 8 + RESP_IDLE = 10 + RESP_TX = 11 + RESP_RX = 12 + + +class RxFlag(enum.IntFlag): + GOOD_CRC = 128 + RIGHT_FRAME = 64 + EXPECTED_FLAGS = 192 # GOOD_CRC | RIGHT_FRAME + +class NodeStatus(enum.IntEnum): + STOPPING_RX = 0 # internal use + IDLE = 1 + TXDONE = 2 + TX = 3 + RX = 4 + UNKNOWN = -1 + +class Node(object): + MAX_REQUEST_RETRIES = 3 + STATUS_POLLING_INTERVAL = 0.5 + + def __init__(self, platform): + self.platform = platform + + # initialize variables for thread + self.keep_receiving_thread = None + self.lock = threading.Lock() + + # for serial communication + self.serial_leftover = b'' + + # for measurements + self._status = NodeStatus.UNKNOWN + self.tx_power_dbm = None + self.tx_len = None + self.tx_num_pk = None + self.tx_ifdur_ms = None + self.tx_fill_byte = None + self.rssi_records = None + self.current_channel = None + self.current_trans_ctr = None + self.current_tx_mac_addr = None + + def setup(self, config): + # mercator related + # Note: OpenWSN doesn't support tx_power_dbm; see + # 03oos_mercator.c in openwsn-fw repository + self.tx_power_dbm = config['tx_power_dbm'] + self.tx_len = config['tx_len'] + self.tx_num_pk = config['tx_num_per_transaction'] + self.tx_ifdur_ms = config['tx_interval_ms'] + self.tx_fill_byte = config['tx_fill_byte'] + self.rssi_records = [None] * self.tx_num_pk + + self._setup() # platform-specific setup method + + # make sure to get the node IDLE + status, self.mac_addr = self.request_status() + if status != NodeStatus.IDLE: + self.request_idle() + self._status = NodeStatus.IDLE + + @property + def status(self): + with self.lock: + return self._status + + @status.setter + def status(self, status): + with self.lock: + self._status = status + + def request_status(self): + result = self._issue_command(self._send_req_st, + self._recv_resp_st) + if result: + node_status = result[0] + mac_addr = result[1] + else: + node_status = None + mac_addr = None + return node_status, mac_addr + + def request_idle(self): + result = self._issue_command(self._send_req_idle, + self._recv_resp_idle) + # change the status to IDLE as we received RESP_IDLE + if result: + assert result[0] is True + self.status = NodeStatus.IDLE + else: + # do nothing + pass + + def update_status(self): + self.status, _ = self.request_status() + + def wait_ind_up(self): + logging.info('Wait for IND_UP from {0}'.format(self.id)) + msg = self._recv_msg() + if msg and (msg[0] == MsgType.IND_UP): + # done + pass + else: + # IND_UP is gone somewhere; this is normal especially + # running on FIT/IoT-LAB where IND_UP may be sent before + # establishing a WebSocket connection + logging.info('No IND_UP from {0}'.format(self.id)) + + def wait_until_status(self, target_node_status): + # we assume we have a thread working to change the node status + while self.status != target_node_status: + time.sleep(self.STATUS_POLLING_INTERVAL) + + def start_tx(self, channel, trans_ctr): + assert not self.current_channel + assert not self.current_trans_ctr + self.current_channel = channel + self.current_trans_ctr = trans_ctr + self.current_tx_mac_addr = self.mac_addr.value + + done = False + retry_count = 0 + while (not done) and (retry_count <= self.MAX_REQUEST_RETRIES): + if retry_count > 0: + logging.info('Retry REQ_TX to {0}'.format(self.id)) + result = self._issue_command(self._send_req_tx, + self._recv_resp_tx, + retry=False) + if result and (result[0] == MsgType.RESP_TX): + # we may receive RESP_ST for a retried REQ_ST sent + # before REQ_TX + self.status = NodeStatus.TX + done = True + else: + # no RESP_TX is received in time; check status + result = self._issue_command(self._send_req_st, + self._recv_resp_tx) + if result: + if result[0] == MsgType.RESP_TX: + # receive a delayed RESP_TX + self.status = NodeStatus.TX + done = True + elif result[0] == MsgType.IND_TXDONE: + # RESP_TX was dropped for some reason; but we + # receive an IND_TXDONE, which means the + # node's status is TX + self.status = NodeStatus.TX + done = True + else: + # RESP_TX was dropped for some reason; but we + # receive a RESP_ST + assert result[0] == MsgType.RESP_ST + if result[1] == NodeStatus.TX: + # it's in TX + self.status = NodeStatus.TX + done = True + else: + # retry REQ_TX + retry_count += 1 + else: + err_str = ('Node {0} doesn\'t respond '.format(self.id) + + 'to REQ_ST') + logging.critical(err_Str) + raise RuntimeError(err_str) + if done: + # REQ_TX succeeds + pass + else: + err_str = ('Node {0} doesn\'t respond '.format(self.id) + + 'to REQ_TX') + logging.critical(err_str) + raise RuntimeError(err_str) + + def wait_tx_done (self): + # a set of transmissions takes (tx_num_pk * tx_ifdur_ms) at + # least + logging.info('Wait for IND_TXDONE from {0}'.format(self.id)) + wait_time_seconds = self.tx_num_pk * self.tx_ifdur_ms / 1000 + time.sleep(wait_time_seconds) + + # we may receive RESP_ST, which was sent in start_tx() + done = False + while not done: + msg = self._recv_msg() + if msg: + if msg[0] == MsgType.IND_TXDONE: + done = True + elif msg[0] == MsgType.RESP_ST: + # we expect IND_TXDONE is come after; continue + # receiving + logging.info('Ignore RESP_ST from {0}'.format(self.id)) + pass + else: + err_str = ('Unexpected MsgType ' + + '{0} '.format(MsgType(msg[0]).name) + + 'from {0}'.format(self.id)) + # shouldn't happen + logging.critical(err_str) + raise RuntimeError(err_str) + else: + # IND_TXDONE seems to have been dropped for some + # reason... let's forget that response + logging.error('IND_TXDONE from {0} '.format(self.id) + + 'may be dropped') + done = True + + self.request_idle() + self.current_channel = None + self.current_trans_ctr = None + self.current_tx_mac_addr = None + + def start_rx(self, channel, src_mac, trans_ctr): + assert not self.current_channel + assert not self.current_trans_ctr + assert not self.current_tx_mac_addr + self.current_channel = channel + self.current_trans_ctr = trans_ctr + self.current_tx_mac_addr = src_mac.value + + result = self._issue_command(self._send_req_rx, self._recv_resp_rx) + if result: + assert result[0] is True + # change the node state to RX + self.status = NodeStatus.RX + else: + err_str = ('Node {0} doesn\'t respond '.format(self.id) + + 'to REQ_RX') + logging.critical(err_str) + raise RuntimeError(err_str) + + # start receiving IND_RX + thread = threading.Thread(target=self._keep_receiving, + args=(channel, src_mac, trans_ctr)) + thread.start() + self.keep_receiving_thread = thread + + def stop_rx(self): + self.status = NodeStatus.STOPPING_RX + self.keep_receiving_thread.join() + self.keep_receiving_thread = None + self.request_idle() + + assert self.status == NodeStatus.IDLE + + self.current_channel = None + self.current_trans_ctr = None + self.current_tx_mac_addr = None + + def _setup(self): + pass + + def _issue_command(self, send_req, recv_resp, retry=True): + err = [] + result = [] + + def _proces_req_and_resp(): + retry_count = 0 + done = False + while not done: + if ((retry_count > 0) and + (retry_count <= self.MAX_REQUEST_RETRIES)): + logging.info('Retry {0} to {1}'.format(req_type.name, + self.id)) + elif retry_count > self.MAX_REQUEST_RETRIES: + err_str = ('Node {0} doesn\'t '.format(self.id) + + 'respond to {0}'.format(req_type.name)) + logging.critical(err_str) + err.append(RuntimeError(err_str)) + done = True + continue + else: + assert retry_count == 0 + + try: + req_type = send_req() + msg = self._recv_msg() + + while msg: + return_values = recv_resp(msg) + if return_values: + break + else: + # check if we have another msg in the buffer + resp_type = MsgType(msg[0]) + logging.info('Ignore {0} '.format(resp_type.name) + + 'from {0}'.format(self.id)) + msg = self._recv_msg() + + if msg: + assert return_values + # the request is successfully processed by the node + result.extend(return_values) + done = True + elif retry: + # no response from the node in time; try it again + assert not msg + retry_count += 1 + else: + # we didn't receive a response in time; but don't + # retry + assert not msg + done = True + except Exception as e: + err.append(e) + done = True + + thread = threading.Thread(target=_proces_req_and_resp) + thread.start() + thread.join() + if err: + raise err.pop() + return tuple(result) + + + def _send_req_st(self): + req = struct.pack('>B', MsgType.REQ_ST) + self._send_msg(req) + return MsgType.REQ_ST + + def _recv_resp_st(self, msg): + assert msg + if msg[0] == MsgType.RESP_ST: + _, status, _, mac_addr = struct.unpack('>BBHQ', msg) + return NodeStatus(status), netaddr.EUI(mac_addr) + else: + return None + + def _send_req_idle(self): + req = struct.pack('>B', MsgType.REQ_IDLE) + self._send_msg(req) + return MsgType.REQ_IDLE + + def _recv_resp_idle(self, msg): + if msg[0] == MsgType.RESP_IDLE: + return [True] + else: + return None + + def _send_req_tx(self): + req = struct.pack('>BBbHHHBB', + MsgType.REQ_TX, + self.current_channel, + self.tx_power_dbm, + self.current_trans_ctr, + self.tx_num_pk, + self.tx_ifdur_ms, + self.tx_len, + self.tx_fill_byte) + self._send_msg(req) + return MsgType.REQ_TX + + def _recv_resp_tx(self, msg): + assert msg + msg_type = MsgType(msg[0]) + # RESP_ST and IND_TX could be received during a REQ_TX process + if msg_type in [MsgType.RESP_TX, MsgType.IND_TXDONE]: + return [msg_type] + elif msg_type == MsgType.RESP_ST: + node_status, _ = self._recv_resp_st(msg) + return [MsgType.RESP_ST, node_status] + else: + return None + + def _send_req_rx(self): + req = struct.pack('>BBQHBB', + MsgType.REQ_RX, + self.current_channel, + self.current_tx_mac_addr, + self.current_trans_ctr, + self.tx_len, + self.tx_fill_byte) + self._send_msg(req) + return MsgType.REQ_RX + + def _recv_resp_rx(self, msg): + assert msg + if msg[0] == MsgType.RESP_RX: + self.status = NodeStatus.RX + return [True] + else: + return None + + def _recv_ind_rx(self, msg): + assert msg + msg_type = MsgType(msg[0]) + if msg_type in [MsgType.RESP_RX, MsgType.RESP_IDLE]: + # we can ignore RESP_RX, which can be seen if we retried + # REQ_RX. RESP_IDLE should be received at the end of a + # measurement + return [msg_type] + elif msg_type == MsgType.IND_RX: + _, length, rssi, flags, pkctr = (struct.unpack('>BBbBH', msg)) + return [msg_type, length, rssi, flags, pkctr] + else: + err_str = ('Unexpected MsgType {0} '.format(msg_type.name) + + 'from {0}'.format(self.id)) + logging.critical(err_str) + raise RuntimeError(err_str) + + def _send_msg(self, msg): + hdlc_frame = hdlcify(msg) + logging.info('Send {0} to {1}'.format(MsgType(msg[0]).name, + self.id)) + logging.debug('Request HDLC frame to {0}: '.format(self.id) + + '{0}'.format(hdlc_frame.hex())) + self._platform_send(hdlc_frame) + + def _recv_msg(self): + if self.serial_leftover: + assert self.serial_leftover.startswith(HDLC_FLAG) + serial_bytes = self.serial_leftover + hdlc_frame_end_index = serial_bytes.find(HDLC_FLAG, 1) + self.serial_leftover = b'' + else: + serial_bytes = b'' + hdlc_frame_end_index = -1 + + # recv() until we have a complete message which should be + # longer than one byte long, and should end with HDLC_FLAG + while ((len(serial_bytes) < HDLC_MIN_FRAME_LEN) or + (hdlc_frame_end_index == -1)): + chunk = self._platform_recv() + + if chunk: + logging.debug('Recv serial bytes from {0}: '.format(self.id) + + '{0}'.format(chunk.hex())) + if serial_bytes or chunk.startswith(HDLC_FLAG): + serial_bytes += chunk + else: + # garbage; recv() again + logging.error('Discard chunk from ' + + '{0} '.format(self.id) + + 'since it seems garbage: ' + + '{0}'.format(chunk.hex())) + else: + # no data is received + self.serial_leftover = serial_bytes + serial_bytes = b'' + break + + assert serial_bytes.startswith(HDLC_FLAG) + hdlc_frame_end_index = serial_bytes.find(HDLC_FLAG, 1) + + # returning only a complete message; the rest is set to + # serial_leftover + if serial_bytes: + assert hdlc_frame_end_index > 0 + next_hdlc_frame_start_index = hdlc_frame_end_index + 1 + assert next_hdlc_frame_start_index <= len(serial_bytes) + self.serial_leftover = ( + serial_bytes[next_hdlc_frame_start_index:] + ) + hdlc_frame = serial_bytes[:next_hdlc_frame_start_index] + if self.serial_leftover.startswith(HDLC_FLAG): + _start_index = 0 + garbage = b'' # nothing + else: + # we have garbage in serial_leftover + _start_index = self.serial_leftover.find(HDLC_FLAG) + assert _start_index != 0 + + if _start_index == -1: + garbage = self.serial_leftover + else: + garbage = self.serial_leftover[:_start_index] + self.serial_leftover = self.serial_leftover[_start_index:] + logging.debug('Keep incomplete HDLC frames from ' + + '{0}, '.format(self.id) + + '{0} '.format(len(self.serial_leftover)) + + 'bytes') + if garbage: + logging.error('Discard serial bytes from ' + + '{0} '.format(self.id) + + 'since it seems garbage: ' + + '{0}'.format(garbage.hex())) + else: + hdlc_frame = b'' # an empty HDLC frame + + # retrieve a Mercator message in the HDLC frame + if hdlc_frame: + if self.platform.firmware_os_name == OSName.OpenWSN: + hdlc_frame = restore_xon_xoff(hdlc_frame) + logging.debug('Recv HDLC frame(s) from {0}: '.format(self.id) + + '{0}'.format(hdlc_frame.hex())) + try: + msg = dehdlcify(hdlc_frame) + except HdlcException as err: + logging.info(str(err) + ': {0}'.format(hdlc_frame.hex())) + msg = b'' # an empty msg + else: + msg_type = MsgType(msg[0]) + if msg_type == MsgType.IND_RX: + # we don't want to log a reception of IND_RX, + # which will be overwhelming + pass + else: + assert msg + logging.info('Recv {0} from {1}'.format(msg_type.name, + self.id)) + else: + msg = b'' # an empty msg + + return msg + + def _platform_send(self, msg): + raise NotImplementedError() + + def _platform_recv(self): + raise NotImplementedError() + + def _keep_receiving(self, channel, src_mac, trans_ctr): + msg = bytearray() + prev_pkctr = -1 + self.rssi_records = [None] * self.tx_num_pk + while self.status == NodeStatus.RX: + msg = self._recv_msg() + while msg: + result = self._recv_ind_rx(msg) + if result[0] == MsgType.IND_RX: + length, rssi, flags, pkctr = result[1:] + logging.debug('Recv IND_RX from {0}: '.format(self.id) + + 'pkctr {0}, rssi {1}'.format(pkctr, rssi)) + assert length == self.tx_len + assert flags == RxFlag.EXPECTED_FLAGS + prev_pkctr = self._store_rx_record(rssi, pkctr, prev_pkctr) + elif result[0] == MsgType.RESP_RX: + logging.info('Ignore RESP_RX from {0}'.format(self.id)) + elif result[0] == MsgType.RESP_IDLE: + # end of this measurement + logging.info('Recv RESP_IDLE from {0}'.format(self.id)) + self.status = NodeStatus.IDLE + else: + logging.critical('Recv {0} '.format(MsgType(msg_type).name) + + 'from {0}, '.format(self.id) + + 'which is not expected') + assert False + msg = self._recv_msg() + + + def _store_rx_record(self, rssi, pkctr, prev_pkctr): + if pkctr == prev_pkctr: + logging.error('Node {0} '.format(self.id) + + 'received a duplicate packet ' + + '(pkctr:{0})'.format(pkctr)) + elif pkctr > prev_pkctr: + assert prev_pkctr < pkctr + + self.rssi_records[pkctr] = rssi + else: + logging.critical('Recv IND_RX from {0} '.format(self.id) + + 'having pkctr {0} '.format(pkctr) + + '< prev_pkctr {0}'.format(prev_pkctr)) + assert False + + return pkctr diff --git a/mercator/platform/__init__.py b/mercator/platform/__init__.py new file mode 100644 index 0000000000..4b3e31534c --- /dev/null +++ b/mercator/platform/__init__.py @@ -0,0 +1,6 @@ +class Platform(object): + def __init__(self, config, *args): + raise NotImplementedError() + + def setup_measurement(self, config): + raise NotImplementedError() diff --git a/mercator/platform/iotlab.py b/mercator/platform/iotlab.py new file mode 100644 index 0000000000..364c76853c --- /dev/null +++ b/mercator/platform/iotlab.py @@ -0,0 +1,405 @@ +"""https://www.iot-lab.info +https://www.iot-lab.info/tutorials/submit-experiment-m3-clitools/ +""" + +import datetime +import hashlib +import json +import logging +import os +import re +import socket +import sys +import threading +import time + +import dateutil.parser +import dateutil.tz +import iotlabcli.auth +import iotlabcli.parser.auth +import iotlabclient.client +import websocket + +from mercator.hdlc import HDLC_FLAG +import mercator.node +import mercator.platform +from mercator.utils import print_bold, MercatorHalo, OSName + +LOCAL_IP_ADDRESS = '127.0.0.1' +IOT_LAB_DOMAIN_NAME = 'iot-lab.info' + +class Platform(mercator.platform.Platform): + POOLING_INTERVAL_SECONDS = 5 + + def __init__(self, config, exp_id): + # make sure we have the user credentials saved locally + self.username, password = self._get_credentials() + + # collect nodes and identify the test site + self.nodes = [Node(self, hostname) for hostname in config['nodes']] + sites = set([node.site for node in self.nodes]) + if len(sites) == 0: + raise ValueError('Invalid format for nodes in yml file') + elif len(sites) > 1: + raise ValueError('Cannot use nodes over multiple sites') + self.site = sites.pop() + + # setup iot-lab-client instance + client_configuration = iotlabclient.client.Configuration() + client_configuration.username = self.username + client_configuration.password = password + self.api_client = iotlabclient.client.ApiClient(client_configuration) + + # collect experiment settings + self.exp_id = exp_id + self.experiment_duration_min = config['experiment_duration_min'] + self.firmware_name = self._prepare_firmware(config['firmware']) + self.firmware_os_name = OSName(config['firmware']['os'].lower()) + self.token = None + + def setup_measurement(self, config): + # make sure we don't have an active experiment of the same + # configuration + experiment_name = self._get_experiment_name() + + # submit an experiment + if self.exp_id: + if self.exp_id != self._get_exp_id(experiment_name): + print_bold('exp_id {0} is not found on the system'.format( + self.exp_id) + ) + print_bold('Retry without -i {0} option'.format(self.exp_id)) + exit(1) + else: + self.exp_id = self._submit_experiment(experiment_name, config) + + # wait until the experiment is scheduled + scheduled_date = self._get_scheduled_date() + + # wait until the experiment get started + self._wait_until_experiment_starts(scheduled_date) + + # reset the nodes + self._reset_nodes() + + # get a token for WebSocket + self.token = self._get_token() + + # setting up nodes + self._setup_nodes(config) + + return self.nodes + + @staticmethod + def _get_credentials(): + if not os.path.exists(iotlabcli.auth.RC_FILE): + username = input('User Name of FIT/IoT-LAB: ') + sys.stdout.flush() + parser = iotlabcli.parser.auth.parse_options() + opts = parser.parse_args(['-u', username]) + try: + assert (iotlabcli.parser.auth.auth_parse_and_run(opts) + == 'Written') + except RuntimeError as err: + assert str(err) == 'Wrong login:password' + print_bold('Login failed') + print('Wrong login username and/or password') + exit(1) + + spinner = MercatorHalo(text='Identifying credentials for FIT/IoT-LAB') + username, password = iotlabcli.auth.get_user_credentials() + if not password: + spinner.stop_failure() + print_bold('Password is empty, something worng') + print('Removing {0}, and exit'.format(iotlabcli.auth.RC_FILE)) + os.remove(iotlabcli.auth.RC_FILE) + exit(1) + else: + spinner.stop_success() + + return username, password + + def _setup_nodes(self, config): + spinner = MercatorHalo(text='Setting up nodes') + + threads = [] + for node in self.nodes: + thread = threading.Thread(target=node.setup, args=(config,)) + thread.start() + threads.append(thread) + for thread in threads: + thread.join() + + # all the nodes should be IDLE + for node in self.nodes: + if node.status != mercator.node.NodeStatus.IDLE: + spinner.stop_failure() + print_bold('Node {0} has an invalid status '.format(node.id) + + '{0}'.format(node.status)) + exit(1) + spinner.stop_success() + + def _prepare_firmware(self, firmware): + archi_label = firmware['archi'].upper() + firmware_archi = getattr(iotlabclient.client.ArchiString, archi_label) + firmware_name = os.path.basename(firmware['path']) + firmware_metadata = iotlabclient.client.Firmware( + name=firmware_name, + description='Mercator Firmware for {0}'.format(archi_label), + archi=firmware_archi, + filename=firmware_name + ) + + if self.exp_id: + # if we have a concrete exp_id now, we don't need to + # upload the firmware + pass + else: + spinner = MercatorHalo( + text='Saving the firmware, "{0}", to FIT/IoT-LAB'.format( + firmware_name)) + api = iotlabclient.client.FirmwaresApi(self.api_client) + # first, check the archi + if firmware_archi == iotlabclient.client.ArchiString.A8: + # FIT/IoT-LAB doesn't support WebSocket For A8, which + # Mercator needs to run + spinner.stop_failure() + print_bold('A8 is not supported by Mercator') + exit(1) + + # second, delete a firmware having the same name if exists + try: + api.delete_firmware(firmware_name) + except iotlabclient.client.rest.ApiException as err: + assert(err.status == 500) + + # third, save the firmware to the system + try: + api.save_firmware(firmware=firmware['path'], + metadata=firmware_metadata) + spinner.stop_success() + except iotlabclient.client.rest.ApiException as err: + err_body = json.loads(err.body) + spinner.stop_failure() + print_bold('Failed to save the firmware ' + + '{0}'.format(firmware_name)) + print('{0}, {1}'.format(err.reason, err_body['message'])) + exit(1) + return firmware_name + + def _submit_experiment(self, experiment_name, config): + spinner = MercatorHalo(text='Submitting an experiment') + # make sure there is no experiment registered for the same + # config + exp_id = self._get_exp_id(experiment_name) + if exp_id: + spinner.stop_failure() + print_bold('Found a registered experiment having the same name.') + print('The name of the experiment is "{0}", its ID is {1}'.format( + experiment_name, exp_id)) + print('Check the active experiments on ' + + 'https://www.iot-lab.info/testbed/dashboard\n' + + 'To see status of the registered experiment, run:\n' + + ' $ iotlab-experiment get -i {0} -p'.format(exp_id)) + print('To stop the registered experiment:\n' + + ' $ iotlab-experiment stop -i {0}'.format(exp_id)) + exit(1) + + # experiment submission + node_list = [node.hostname for node in self.nodes] + experiment = iotlabclient.client.ExperimentPhysical( + duration=self.experiment_duration_min, + name=experiment_name, + nodes=node_list, + firmwareassociations=[ + iotlabclient.client.FirmwareAssociation( + firmwarename=self.firmware_name, + nodes=node_list)]) + api = iotlabclient.client.ExperimentsApi(self.api_client) + try: + # res is an InlineResponse200 instance + res = api.submit_experiment(experiment=experiment) + exp_id = res.id + spinner.stop_success() + print_bold('Experiment ID is {0}'.format(exp_id)) + except iotlabclient.client.rest.ApiException as err: + err_body = json.loads(err.body) + spinner_stop_failure() + print('{0}, {1}'.format(err.reason, err_body['message'])) + exit(1) + return exp_id + + def _get_scheduled_date(self): + spinner = MercatorHalo(text='Waiting to be scheduled') + api = iotlabclient.client.ExperimentApi(self.api_client) + while True: + try: + res = api.get_experiment(self.exp_id) + except iotlabclient.client.rest.ApiException as err: + spinner.stop_failure() + print_bold( + 'Cannot get info of experiment {0}'.format(self.exp_id)) + exit(1) + submission_date = dateutil.parser.parse(res.submission_date) + scheduled_date = dateutil.parser.parse(res.scheduled_date) + if ((res.state in ['Running', 'Launching', 'toLaunch']) + or (res.state == 'Waiting' + and submission_date < scheduled_date)): + spinner.stop_success() + print_bold('Scheduled at {0}'.format( + scheduled_date.astimezone(dateutil.tz.tzlocal()))) + break + elif (res.state not in + ['Running', 'Launching', 'toLaunch', 'Waiting']): + spinner.stop_failure() + message = 'Experiment {0} has an invalid state {1}'.format( + self.exp_id, res.state) + print_bold('Invalid state: {0}'.format(res.state)) + exit(1) + time.sleep(self.POOLING_INTERVAL_SECONDS) + return scheduled_date + + def _get_token(self): + spinner = MercatorHalo(text='Getting a token') + + # get a token + assert self.exp_id + api = iotlabclient.client.ExperimentApi(self.api_client) + try: + res = api.get_experiment_token(self.exp_id) + token = res.token + except iotlabclient.client.rest.ApiException as err: + err_body = json.loads(err.body) + spinner.stop_failure() + print_bold('Failed to get a token') + print('{0}, {1}'.format(err.reason, err_body['message'])) + exit(1) + + spinner.stop_success() + return token + + def _wait_until_experiment_starts(self, scheduled_date): + spinner = MercatorHalo(text='Waiting to start') + now = datetime.datetime.now(dateutil.tz.tzutc()) + if scheduled_date < now: + # the experiment should have started already + pass + else: + delta_seconds = (now - scheduled_date).seconds + time.sleep(delta_seconds) + + api = iotlabclient.client.ExperimentApi(self.api_client) + while True: + try: + res = api.get_experiment(self.exp_id) + except iotlabclient.client.rest.ApiException as err: + spinner.stop_failure() + print_bold( + 'Cannot get info of experiment {0}'.format(self.exp_id)) + exit(1) + + if res.state == 'Running': + spinner.stop_success() + break + elif res.state not in ['Launching', 'toLaunch', 'Waiting']: + # the experiment shouldn't be waiting after the + # scheduled date + spinner.stop_failure() + message = 'Experiment {0} has an invalid state {1}'.format( + self.exp_id, res.state) + print_bold('Invalid state: {0}'.format(res.state)) + exit(1) + time.sleep(self.POOLING_INTERVAL_SECONDS) + + def _reset_nodes(self): + spinner = MercatorHalo(text='Resetting nodes') + api = iotlabclient.client.ExperimentApi(self.api_client) + try: + res = api.send_cmd_nodes(self.exp_id, 'reset') + except iotlabclient.client.rest.ApiException as err: + spinner.stop_failure() + print_bold('Cannot reset the nodes for experiment ' + + '{0}'.format(self.exp_id)) + exit(1) + # not sure how to check 'res' of reset command... :( + spinner.stop_success() + + + def _get_exp_id(self, experiment_name): + api = iotlabclient.client.ExperimentsApi(self.api_client) + res = api.get_experiments(state='Running,Launching,toLaunch,Waiting') + exp_id = None + for experiment in res.items: + if experiment.name == experiment_name: + exp_id = experiment.id + + return exp_id + + def _get_experiment_name(self): + m = hashlib.sha1() + m.update(self.firmware_name.encode('utf-8')) + node_list = sorted([node.hostname for node in self.nodes]) + m.update(','.join(node_list).encode('utf-8')) + return 'Mercator_{0}'.format(m.hexdigest()[:7]) + +class Node(mercator.node.Node): + TCP_PORT_TO_SERIAL = 20000 + WS_TIMEOUT_SECONDS = 3 + + def __init__(self, platform, hostname): + super(Node, self).__init__(platform) + + # 'hostname' is a string like "m3-1.grenoble.iot-lab.info" + self.hostname = hostname + self.id, self.site = re.sub(r'\.{0}$'.format(IOT_LAB_DOMAIN_NAME), + '', self.hostname).split('.') + self.ws = None + + def _setup(self): + # open a WebSocket + self.ws = self._open_ws() + self.ws.settimeout(self.WS_TIMEOUT_SECONDS) + + def _open_ws(self): + # short-hands + username = self.platform.username + exp_id = self.platform.exp_id + site = self.platform.site + token = self.platform.token + + assert username + assert exp_id + assert site + assert token + ws = websocket.WebSocket() + url = 'wss://www.iot-lab.info:443/ws/{0}/{1}/{2}/serial/raw'.format( + site, exp_id, self.id) + try: + ws.connect(url, subprotocols=[username, 'token', token]) + except websocket.WebSocketBadStatusException as err: + raise RuntimeError('{0}, {1}'.format(url, str(err))) + return ws + + def _platform_send(self, msg): + try: + self.ws.send_binary(msg) + except (websocket.WebSocketConnectionClosedException, BrokenPipeError): + self._handle_connection_lost() + + def _platform_recv(self): + try: + data = self.ws.recv() + except websocket.WebSocketTimeoutException as err: + logging.debug('Recv on WebSocket from {0} timeout'.format(self.id)) + data = b'' + except websocket.WebSocketConnectionClosedException: + self._handle_connection_lost() + data = b'' + + return data + + def _handle_connection_lost(self): + # we lost the connection; change the node's status to UNKNOWN. + logging.critical('Connection to {0} is closed'.format(self.id)) + self.status = mercator.node.NodeStatus.UNKNOWN + # Mercator will stop diff --git a/mercator/platform/skeleton.py b/mercator/platform/skeleton.py new file mode 100644 index 0000000000..6706196d7d --- /dev/null +++ b/mercator/platform/skeleton.py @@ -0,0 +1,30 @@ +import mercator.node +import mercator.platform + +class Platform(mercator.platform.Platform): + def __init__(self, config, *args): + # 'args' is platform-specific arguments; see iotlab.py or + # opentestbed.py for your reference + raise NotImplementedError() + + def setup_measurement(self, config): + raise NotImplementedError() + +class Node(mercator.node.Node): + def __init__(self, platform, *args): + # 'args' is platform-specific arguments; see iotlab.py or + # opentestbed.py for your reference + + # MUST BE CALLED + super(Node, self).__init__(platform) + + raise NotImplementedError() + + def _setup(self): + raise NotImplementedError() + + def _platform_send(self): + raise NotImplementedError() + + def _platform_recv(self): + raise NotImplementedError() diff --git a/mercator/utils.py b/mercator/utils.py new file mode 100644 index 0000000000..d598525cff --- /dev/null +++ b/mercator/utils.py @@ -0,0 +1,94 @@ +import enum +import gzip +import json +import logging +import os +import sys + +from colored import attr, fg, stylize +from halo import Halo + +# from openwsn-fw/bsp/boards/uart.h +UART_XON = b'\x11' +UART_XON_ESCAPED = b'\x01' +UART_XOFF = b'\x13' +UART_XOFF_ESCAPED = b'\x03' +UART_ESCAPE = b'\x12' +UART_ESCAPE_ESCAPED = b'\x02' + +class OSName(enum.Enum): + # concrete values (string) should be in lowercase + OpenWSN = 'openwsn' + +def escape_xon_xoff(message): + # This function is not used now since OpenWSN doesn't expect a + # received serial message is escaped (see uart_readByte() in + # openwsn-fw/bsp/boards/uart.c) + ret = bytearray(message) + ret = ret.replace(UART_XON, + UART_ESCAPE+UART_XON_ESCAPED) + ret = ret.replace(UART_XOFF, + UART_ESCAPE+UART_XOFF_ESCAPED) + ret = ret.replace(UART_ESCAPE, + UART_ESCAPE+UART_ESCAPE_ESCAPED) + return ret + +def restore_xon_xoff(message): + ret = bytearray(message) + ret = ret.replace(UART_ESCAPE+UART_XON_ESCAPED, + UART_XON) + ret = ret.replace(UART_ESCAPE+UART_XOFF_ESCAPED, + UART_XOFF) + ret = ret.replace(UART_ESCAPE+UART_ESCAPE_ESCAPED, + UART_ESCAPE) + return ret + +class MercatorHalo(Halo): + def __init__(self, text='', color='cyan', text_color=None, spinner=None, + animation=None, placement='left', interval=-1, enabled=True, + stream=sys.stdout): + super(MercatorHalo, self).__init__(text, color, text_color, spinner, + animation, placement, interval, + enabled, stream) + self.start() + + def stop_success(self, text=None): + self.succeed(text) + self.stop() + + def stop_failure(self, text=None): + self.fail(text) + self.stop() + +def print_bold(message): + bold_message = stylize(message, attr('bold')) + print(bold_message) + +class Outfile(object): + def __init__(self, out_file_path, config, overwrite_out_file): + if not out_file_path.endswith('jsonl.gz'): + raise ValueError('Filename must end with "jsonl.gz"') + elif os.path.exists(out_file_path): + if overwrite_out_file: + print_bold('{0} will be overwritten'.format(out_file_path)) + else: + raise ValueError('{0} already exists'.format(out_file_path)) + + self.fp = None + self.out_file_path = out_file_path + self.config = config + + def open(self): + self.fp = gzip.open(self.out_file_path, 'wt') + logging.info('Outfile {0} is opened'.format(self.out_file_path)) + self.write_data('config', self.config) + + def write_data(self, data_type, data): + json_line = json.dumps({'data_type': data_type, 'data': data}) + self.fp.write(json_line + '\n') + + def close(self): + self.fp.close() + + def flush(self): + self.fp.flush() diff --git a/requirements.txt b/requirements.txt index b02347dfcb..57b99c6fd9 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,11 @@ -pyserial -importlib -iotlabcli==2.5.2 +colored +cryptography==2.4.2 +halo +iotlabcli +iotlabclient +netaddr +paho-mqtt +python-dateutil +PyYAML +tqdm +websocket-client diff --git a/setup.py b/setup.py new file mode 100644 index 0000000000..f0f7969314 --- /dev/null +++ b/setup.py @@ -0,0 +1,12 @@ +from setuptools import setup, find_packages + +setup( + name='mercator', + version='3.0', + packages=find_packages(), + entry_points={ + 'console_scripts': [ + 'mercator = mercator.__main__:main' + ] + } +) From e8039da2bd6a03b403b327b2e3b71df6b073d75b Mon Sep 17 00:00:00 2001 From: Yasuyuki Tanaka Date: Fri, 17 May 2019 22:04:55 +0200 Subject: [PATCH 16/50] Add OpenTestbed support --- firmwares/openwsn-openmote-b-24ghz.ihex | 1851 +++++++++++++++++++++++ mercator-opentestbed.yml | 23 + mercator/platform/opentestbed.py | 406 +++++ 3 files changed, 2280 insertions(+) create mode 100644 firmwares/openwsn-openmote-b-24ghz.ihex create mode 100644 mercator-opentestbed.yml create mode 100644 mercator/platform/opentestbed.py diff --git a/firmwares/openwsn-openmote-b-24ghz.ihex b/firmwares/openwsn-openmote-b-24ghz.ihex new file mode 100644 index 0000000000..216b375d24 --- /dev/null +++ b/firmwares/openwsn-openmote-b-24ghz.ihex @@ -0,0 +1,1851 @@ +:020000040020DA +:100000009C4A0020D32E2000BD2E2000C72E2000A9 +:10001000CD2E2000CD2E2000CD2E2000000000008F +:10002000000000000000000000000000CD2E2000B5 +:10003000CD2E200000000000CD2E2000CD2E20006F +:10004000CD2E2000CD2E2000CD2E2000CD2E200044 +:1000500000000000CD2E2000CD2E2000CD2E20004F +:10006000CD2E200000000000000000000000000075 +:100070000000000000000000CD2E20000000000065 +:100080000000000000000000CD2E2000CD2E20003A +:10009000CD2E2000CD2E2000CD2E2000CD2E2000F4 +:1000A000CD2E2000CD2E2000CD2E2000CD2E2000E4 +:1000B000CD2E2000CD2E2000CD2E2000CD2E2000D4 +:1000C000CD2E2000CD2E2000CD2E2000CD2E2000C4 +:1000D000CD2E200000000000000000000000000005 +:1000E0000000000000000000000000000000000010 +:1000F000CD2E200000000000CD2E2000CD2E2000AF +:1001000000000000000000000000000000000000EF +:1001100000000000000000000000000000000000DF +:1001200000000000000000000000000000000000CF +:1001300000000000000000000000000000000000BF +:1001400000000000000000000000000000000000AF +:10015000000000000000000000000000000000009F +:10016000000000000000000000000000000000008F +:10017000000000000000000000000000000000007F +:10018000000000000000000000000000000000006F +:10019000000000000000000000000000000000005F +:1001A000000000000000000000000000000000004F +:1001B000000000000000000000000000000000003F +:1001C000000000000000000000000000000000002F +:1001D000000000000000000000000000000000001F +:1001E000000000000000000000000000000000000F +:1001F00000000000000000000000000000000000FF +:1002000000000000000000000000000000000000EE +:1002100000000000000000000000000000000000DE +:1002200000000000000000000000000000000000CE +:1002300000000000000000000000000000000000BE +:1002400000000000000000000000000000000000AE +:10025000000000000000000000000000000000009E +:10026000000000000000000000000000000000008E +:10027000CD2E2000CD2E2000CD2E2000CD2E200012 +:10028000CD2E2000CD2E2000CD2E200080B500AF39 +:100290004FF4BD720021174806F05EFA154B01229B +:1002A0005A7001F01EFB00F0C9FC00F081FD002136 +:1002B000FF2000F08FFD03461A460E4B1A7002F025 +:1002C00042F90D4801F010FF0C4802F00FFB0C48FA +:1002D00002F01AFB0B490C4802F07EFE00F018F801 +:1002E0000F210A4800F0ECFC00F0BAFC002318468D +:1002F00080BD00BFB04A00200C4B0020290A20001E +:100300003B0A2000250920007D0720002907200046 +:1003100080B500AF02F07CFE02F070FE024B0022BE +:1003200083F8492000BF80BDB04A002080B500AFEF +:10033000114B93F82330002B1BD00F4BB3F85430E4 +:1003400001339AB20C4BA3F854200B4B4FF6FF72BB +:10035000DA84094B002283F82220074B002283F81D +:100360002820054B002283F829207E2002F06EFE13 +:1003700000E000BF80BD00BFB04A002080B500AFE4 +:100380001E4B93F84830002B08D11C4BB3F8583063 +:1003900001339AB2194BA3F858202AE0174B93F86F +:1003A0002A30013B052B1BD801A252F823F000BFD5 +:1003B000C9032000E1032000CF032000D503200063 +:1003C000E1032000DB03200000F01AF811E000F048 +:1003D0005DF80EE000F09EF80BE000F03DF908E05B +:1003E000064BB3F85A3001339AB2044BA3F85A20A3 +:1003F00000BFFFF78DFF00BF80BD00BFB04A0020E7 +:1004000080B500AF094B93F84830012B08D0074B5B +:10041000B3F8583001339AB2044BA3F8582003E0E4 +:100420000F21034800F04CFC80BD00BFB04A002003 +:100430003504200080B582B000AF124B7B607B6832 +:1004400002221A70104B5A787B685A700E4B5B88E8 +:10045000184600F07FF903461A467B685A807B688D +:100460001A1D094B5C3319685B6811605360064BB9 +:100470000C2283F82320FFF759FF00BF0837BD4641 +:1004800080BD00BFB44A0020B04A002080B500AF54 +:10049000134B93F84830012B08D0114BB3F8583068 +:1004A00001339AB20E4BA3F8582018E00F210D48E3 +:1004B00000F006FC0A4B5B78022B05D1084B1B7839 +:1004C000184600F06BFF05E0054B5B78042B01D16B +:1004D00001F0EBFF02F078FA014B01225A7080BD67 +:1004E000B04A0020E904200080B582B000AF074B7D +:1004F0007B607B680A221A70054B012283F8232057 +:10050000FFF714FF00BF0837BD4680BDB44A002086 +:10051000B04A002090B585B002AF3F4B93F8483009 +:100520000B2B08D03C4BB3F8583001339AB23A4BFE +:10053000A3F858206CE00F21384800F0C1FB364B7F +:100540005B78022B63D0344B02225A70324B00226C +:100550005A80334B7B60304B0022A3F8E4207B6849 +:100560005A7A2D4B83F8E6207B68B3F805309BB2AE +:10057000184600F0EFF803461A46274BA3F8E82088 +:10058000254B254A64335C321168526819605A6001 +:100590007B68B3F803309BB2184600F0DBF80346E3 +:1005A0007B807A881C4BA3F86C201B4BB3F8E4309B +:1005B000184600F0CFF803463B803A88164BA3F864 +:1005C0006E207B689B7A1946134B93F8E6300E3BFE +:1005D0001A46144806F0C0F802F0F0F97B685B7820 +:1005E000184602F0C5F90C4B1C787B68B3F807304D +:1005F0009BB2184600F0AEF8034619460A4B00932A +:1006000000230022204600F049FC00BF00E000BFAC +:100610000C37BD4690BD00BFB04A00202D0620001B +:10062000DA4A0020204B00207D0B200080B582B0EC +:1006300000AF074B7B607B680B221A70054B0122D1 +:1006400083F82320FFF772FE00BF0837BD4680BD48 +:10065000B44A0020B04A002080B582B000AF244BDD +:1006600093F848300E2B08D0214BB3F858300133A3 +:100670009AB21F4BA3F8582036E00F211D4800F016 +:100680001FFB1D4B7B607B681A7B194B83F8E620B0 +:100690007B685B899BB2184600F05CF803461A46FB +:1006A000134BA3F8F4207B685A7B114B83F8EA20A4 +:1006B0007B689A1C0E4BEB331168526819605A60C4 +:1006C0000B4B00225A8001F0E9FE02F077F97B68BB +:1006D0005B78184602F04CF902F0FEF902F00CFAD1 +:1006E000034B04225A7000BF0837BD4680BD00BFCF +:1006F000B04A0020FD062000DA4A002080B582B012 +:1007000000AF074B7B607B680C221A70054B0122FF +:1007100083F82320FFF70AFE00BF0837BD4680BDDF +:10072000B44A0020B04A002080B582B000AF074B29 +:100730007B607B6808221A70054B012283F8232016 +:10074000FFF7F4FD00BF0837BD4680BDB44A002066 +:10075000B04A002080B483B000AF0346FB80FB8822 +:100760001B021AB2FB881B0A9BB21BB213431BB2BB +:100770009BB218460C37BD4680BC704780B582B02E +:1007800000AF01F061FE474B93F82330002B76D089 +:10079000444B93F822301A46424B13441B79FB71A9 +:1007A000404B93F82430002B0DD1FB797E2B02D0E7 +:1007B000FB797D2B07D17D2002F048FC394B0122CB +:1007C00083F824202BE0374BDB8CFA79114618464E +:1007D00000F0D2FA03461A46324BDA84314B93F8D2 +:1007E0002430012B07D1FB7983F02003FB712D4BC3 +:1007F000002283F824202B4B93F822300133DAB205 +:10080000284B83F82220274B93F82330013BDAB2A0 +:10081000244B83F82320FB79184602F017FC214B68 +:1008200093F82330002B36D11E4B93F82830002B41 +:1008300031D11C4BDB8CDB43BB801A4B93F822304D +:100840001946BB88DAB2174B0B441A71BB881B0AD6 +:100850009AB2144B93F822300133D1B2114A1344A7 +:100860000A461A710F4B93F823300233DAB20D4B5C +:1008700083F823200B4B012283F828200BE0094B3F +:1008800093F82930002B06D1064B012283F829204A +:100890007E2002F0DBFB01F0DEFD00BF0837BD4625 +:1008A00080BD00BFB04A002080B582B000AF0346D3 +:1008B000FB71FB797D2B04D1194B012283F84A206F +:1008C0002AE0174B93F84A30012B07D1FB7983F0CC +:1008D0002003FB71124B002283F84A20104B93F83F +:1008E00048301A460E4B1344FA7983F82A200C4BF1 +:1008F00093F848300133DAB2094B83F84820084BAB +:10090000B3F84C30FA791146184600F035FA034630 +:100910001A46034BA3F84C2000BF0837BD4680BDE4 +:10092000B04A002080B582B000AF01F08DFD02F02A +:10093000B3FB0346FB713A4B93F84E30002B19D1B1 +:10094000374B93F849307E2B14D1FB797E2B11D095 +:10095000334B012283F84E20314B002283F848208C +:100960002F4B4FF6FF72A3F84C20FB791846FFF788 +:100970009BFF4AE02A4B93F84E30012B15D1FB79AF +:100980007E2B12D0FB791846FFF78EFF244B93F88D +:10099000483001331E2B38DD214B002283F84820DC +:1009A0001F4B002283F84E202FE01D4B93F84E3052 +:1009B000012B2AD1FB797E2B27D1194BB3F84C3070 +:1009C0004FF2B802934214D1154BB3F850300133B3 +:1009D0009AB2134BA3F85020114B93F84830023BC6 +:1009E000DAB20F4B83F848200F210E4800F068F967 +:1009F00007E00B4BB3F8523001339AB2084BA3F81F +:100A00005220074B002283F84E20054AFB7982F8DA +:100A1000493001F020FD002318460837BD4680BD4F +:100A2000B04A00207D03200080B483B000AF78601E +:100A300000BF0C37BD4680BC704780B588B002AFA0 +:100A400078600123FB7501F0BFFF444B5B78042BFA +:100A50007FD1434B0193434B0093434B7F22434948 +:100A6000434802F063F8424BFB60FB6808224149AF +:100A7000184605F03FFE0346002B01D00023FB750E +:100A8000364B93F87521354B93F8E6309A4201D0F6 +:100A90000023FB75FB681B899AB2304BB3F8F43026 +:100AA0009A4201D00023FB750C233B610FE02B4AD7 +:100AB0003B691344F6331A78284B93F8EA309A428C +:100AC00002D00023FB7509E03B6901333B61234BF6 +:100AD00093F87531023B3A699A42E8DBFB7D002BC3 +:100AE00031D01E4B93F87931002B2CD0224BBB60B8 +:100AF000BB6807221A70194B93F87521BB685A70AE +:100B0000164B93F97721BB689A70144B93F879319F +:100B1000DB015AB2FB7D9B015BB213435BB2DAB2DD +:100B2000BB68DA70FB685B899AB2BB689A800B4B32 +:100B3000062283F82320FFF7F9FB084B5B8801337B +:100B40009AB2064B5A8001F039FF01F0C5FF01F05F +:100B5000D3FF00BF1837BD4680BD00BFB04A00209C +:100B6000294C0020284C0020274C0020254C002038 +:100B7000A64B00209B4B0020B44A002080B586B0D5 +:100B800000AF0346FB710A23FB75294BB3F8E42041 +:100B9000274BB3F8E8309A4220D1254B1B781846F2 +:100BA00000F0FCFB01F010FF214B03225A70214B97 +:100BB0003B613B6905221A701D4B012283F82320FB +:100BC000FFF7B4FB1A4B5B8801339AB2184B5A807B +:100BD00001F0FAFE164B01225A7025E001F00AFCE2 +:100BE000134B93F8E6309BB21946134801F000FF0F +:100BF00001F03AFF01F048FF01F003FC0C4BB3F8A1 +:100C0000E43001339AB20A4BA3F8E420084BB3F85E +:100C1000E4301846FFF79EFD0346FB81FB7D064A44 +:100C20001344FA891A8000BF1837BD4680BD00BF43 +:100C3000B04A0020B44A0020144B002080B500AF19 +:100C400080220021044805F087FD0222002103488C +:100C500005F082FD00BF80BD2C4C0020AC4C002074 +:100C600080B582B000AF1CE004F0D3F8124B9B6F4C +:100C70007B607B689B68104A936704F0BEF87B68D2 +:100C80001B6898477B6800221A607B6800221A71F3 +:100C90007B6800229A60094B1B78013BDAB2074B54 +:100CA0001A70054B9B6F002BDED101F081F900F02B +:100CB0006DFE01F089F9F4E72C4C0020AC4C0020CB +:100CC00080B584B000AF78600B46FB7004F0A1F8EB +:100CD000254BFB6002E0FB680C33FB60FB681B6884 +:100CE000002B03D0FB68214A9342F4D9FB681F4ACA +:100CF000934203D901F035FC00F08EFEFB687A6860 +:100D00001A60FB68FA781A71194BBB6003E0BB6884 +:100D10001B680833BB60BB681B68002B06D0BB6830 +:100D20001B681A79FB681B799A42F0D9BB681A686C +:100D3000FB689A60BB68FA681A600E4B1B78013337 +:100D4000DAB20C4B1A700B4B1A780A4B5B789A424A +:100D500003D9084B1A78074B5A7004F04EF800BFBD +:100D60001037BD4680BD00BF2C4C0020984C0020A1 +:100D7000A44C0020AC4C002080B483B000AF0346EC +:100D80000A46FB8013467B71FB881B0A9AB2F988DE +:100D90007B794B40DBB2054931F8133053409BB2AD +:100DA00018460C37BD4680BC704700BFA06A2000C3 +:100DB00080B500AF4FF4DA720021044805F0CCFC96 +:100DC000034802F019F800BF80BD00BFB04C0020FE +:100DD0007114200080B584B000AF03460A46FB7151 +:100DE0001346BB7104F015F8FB79012B02D0FB7997 +:100DF000002B19D1FA7928491346DB009B1A9B0076 +:100E00000B4411331B7883F00103DBB2002B0BD0B2 +:100E1000FA7921491346DB009B1A9B000B441133DE +:100E200001221A70FB7932E0FB79FF2B2CD10223CF +:100E3000FB7326E0FA7B18491346DB009B1A9B00E4 +:100E40000B4411331B7883F00103DBB2002B15D068 +:100E5000FA7B11491346DB009B1A9B000B441133AC +:100E600001221A70FA7B0C491346DB009B1A9B0087 +:100E70000B441833BA791A70FB7B08E0FB7B013313 +:100E8000FB73FB7B0E2BD5D903F0B7FFFF2318466E +:100E90001037BD4680BD00BFB04C002090B587B074 +:100EA00000AF396011461A460346FB710B46BB7111 +:100EB00013467B710023FB7511E0FA7D91491346BF +:100EC000DB009B1A9B000B4411331B78002B03D0D3 +:100ED000FA7DFB799A4206D0FB7D0133FB75FB7DE1 +:100EE0000E2BEAD900E000BFFB7D0F2B00F006813E +:100EF00003F08FFFFA7983491346DB009B1A9B00AE +:100F00000B4412337A791A70BB79002B02D0012B73 +:100F100023D03FE0FA7939680B465B0119447948E0 +:100F20001346DB009B1A9B00034419603A68134682 +:100F30005B011A440323A3FB0213D21A5208134481 +:100F40009B0FFA7998B26F491346DB009B1A9B00FE +:100F50000B44083302461A801CE0FA7969491346AB +:100F6000DB009B1A9B000B443A681A603A68032323 +:100F7000A3FB0213D21A520813449B0FFA7998B2BA +:100F800060491346DB009B1A9B000B440833024662 +:100F90001A8000BFFA795B491346DB009B1A9B005D +:100FA0000B4408331B88002B15D1FA795549134699 +:100FB000DB009B1A9B000B441C6801F053FF0346A7 +:100FC000FA79E1184F481346DB009B1A9B00034453 +:100FD000043319600EE001F045FF0346F97903F18F +:100FE0000042013A47480B46DB005B1A9B00034472 +:100FF00004331A60FA7943491346DB009B1A9B00BD +:101000000B44103301221A70FA793E491346DB0073 +:101010009B1A9B000B441433BA6A1A60394B93F83D +:10102000B03183F00103DBB2002B60D00023FB75ED +:1010300002E0FB7D0133FB75FA7D32491346DB008C +:101040009B1A9B000B4410331B7883F00103DBB227 +:10105000002BEED1FA7D2B491346DB009B1A9B0037 +:101060000B4404331A68274BD3F8AC31D31A3B61D5 +:10107000FB7DBB75BB7D0133FB7523E0FA7D214908 +:101080001346DB009B1A9B000B4410331B78002B8C +:1010900015D0FA7D1B491346DB009B1A9B000B44BD +:1010A00004331A68174BD3F8AC31D31AFB60FA68D3 +:1010B0003B699A4203D2FB683B61FB7DBB75FB7DBC +:1010C0000133FB75FB7D0E2BD8D9BA7D0D49134634 +:1010D000DB009B1A9B000B4404331B68094AC2F8CF +:1010E000A831084BD3F8A831184601F093FE054B00 +:1010F000012283F8A42103F080FE00E000BF1C372A +:10110000BD4690BDB04C002080B588B000AFB9603E +:101110007A601A460346FB731346BB730023FB77C2 +:1011200011E0FA7F8F491346DB009B1A9B000B44AA +:1011300011331B78002B03D0FA7FFB7B9A4206D039 +:10114000FB7F0133FB77FB7F0E2BEAD900E000BF6A +:10115000FB7F0F2B00F0028103F05BFEFA7B8149DD +:101160001346DB009B1A9B000B44123301221A70BA +:10117000BB7B002B02D0012B23D03FE0FA7BB96868 +:101180000B465B01194477481346DB009B1A9B0012 +:1011900003441960BA6813465B011A440323A3FB96 +:1011A0000213D21A520813449B0FFA7B98B26D496E +:1011B0001346DB009B1A9B000B44083302461A803F +:1011C0001CE0FA7B67491346DB009B1A9B000B442B +:1011D000BA681A60BA680323A3FB0213D21A520832 +:1011E00013449B0FFA7B98B25E491346DB009B1AAF +:1011F0009B000B44083302461A8000BFFA7B594912 +:101200001346DB009B1A9B000B4408331B88002B02 +:1012100013D1FA7B53491346DB009B1A9B000B4406 +:101220001968FA7B7B6819444E481346DB009B1A09 +:101230009B000344043319600CE0F97B7B6803F1E5 +:101240000042013A47480B46DB005B1A9B0003440F +:1012500004331A60FA7B43491346DB009B1A9B0058 +:101260000B44103301221A70FA7B3E491346DB000F +:101270009B1A9B000B441433BA6A1A60394B93F8DB +:10128000B03183F00103DBB2002B60D00023FB7789 +:1012900002E0FB7F0133FB77FA7F32491346DB0024 +:1012A0009B1A9B000B4410331B7883F00103DBB2C5 +:1012B000002BEED1FA7F2B491346DB009B1A9B00D3 +:1012C0000B4404331A68274BD3F8AC31D31ABB61F3 +:1012D000FB7FBB77BB7F0133FB7723E0FA7F21499C +:1012E0001346DB009B1A9B000B4410331B78002B2A +:1012F00015D0FA7F1B491346DB009B1A9B000B4459 +:1013000004331A68174BD3F8AC31D31A7B617A696E +:10131000BB699A4203D27B69BB61FB7FBB77FB7FD2 +:101320000133FB77FB7F0E2BD8D9BA7F0D491346CB +:10133000DB009B1A9B000B4404331B68094AC2F86C +:10134000A831084BD3F8A831184601F063FD054BCE +:10135000012283F8A42103F050FD00E000BF2037F4 +:10136000BD4680BDB04C002080B582B000AF0346C2 +:101370003960FB7103F04DFDFA7907491346DB0034 +:101380009B1A9B000B443A681A6003F036FD00BFBD +:101390000837BD4680BD00BFB04C002080B582B08C +:1013A00000AF0346FB7103F034FDFA790C49134694 +:1013B000DB009B1A9B000B44103300221A70FA7951 +:1013C00007491346DB009B1A9B000B441433002291 +:1013D0001A6003F012FD00BF0837BD4680BD00BF94 +:1013E000B04C002080B582B000AF0346FB71FB79A2 +:1013F0000E2B0DD8FA791346DB009B1A9B00074A87 +:1014000013441C220021184605F0A6F9012300E030 +:10141000002318460837BD4680BD00BFB04C0020F1 +:1014200080B500AF01F01EFD0346184680BD80B4B4 +:1014300000AF034BD3F8A8311846BD4680BC7047B7 +:10144000B04C002080B483B000AF0346FB71FA7942 +:1014500006491346DB009B1A9B000B4410331B7894 +:1014600018460C37BD4680BC704700BFB04C00200A +:1014700090B587B002AF804B1B7C002B15D07E4B04 +:10148000D3F8A8217C4B5B689A420ED17A4B00229C +:101490001A74794B5B690020984701F0E3FC03461E +:1014A0000F33184601F0B6FC0EE2734B5A68724BCC +:1014B000D3F8A8319A4236D10023FB7330E0FA7B8F +:1014C0006D491346DB009B1A9B000B4410331B78BD +:1014D000002B22D0FB7B012B1FD0FB7B002B1CD0D1 +:1014E000FA7B65491346DB009B1A9B000B440433CF +:1014F0001A68614BD3F8A831D31A40F28E22934276 +:101500000BD8FA7B5C4BD3F8A8115B481346DB0081 +:101510009B1A9B00034404331960FB7B0133FB736C +:10152000FB7B0E2BCBD90023FB7357E1FA7B52498F +:101530001346DB009B1A9B000B4410331B78002BD7 +:1015400000F049814C4BD3F8A811FA7B4A48134666 +:10155000DB009B1A9B00034404331B68994240F054 +:101560003A81F97BFA7B44480B46DB005B1A9B000F +:1015700003440433196840481346DB009B1A9B0060 +:1015800003440C331960FB7B012B1ED13A4B012223 +:1015900083F8B021FA7B38491346DB009B1A9B0085 +:1015A0000B44103300221A70FA7B33491346DB00D8 +:1015B0009B1A9B000B4414331B68FA7B1046984718 +:1015C0002D4B002283F8B02105E1FA7B2A4913460E +:1015D000DB009B1A9B000B4408331B88002B4DD16A +:1015E000FA7B25491346DB009B1A9B000B44103302 +:1015F00000221A70FA7B20491346DB009B1A9B00DD +:101600000B4414331868FA7B1B491346DB009B1A02 +:101610009B000B4418331B781946FFF751FBFA7BEC +:1016200015491346DB009B1A9B000B4412331B78B1 +:10163000002B40F0D080104B012283F8B021FA7BC0 +:101640000D491346DB009B1A9B000B441C68FA7B78 +:1016500009491346DB009B1A9B000B4414331B689B +:10166000F87B0093002301222146FFF717FC024B71 +:10167000002283F8B021AEE0B04C0020FA7B944900 +:101680001346DB009B1A9B000B4408331B88013B6D +:1016900098B28F491346DB009B1A9B000B4408331A +:1016A00002461A80FA7B8A491346DB009B1A9B008C +:1016B0000B4408331B88002B78D1FA7B84491346EE +:1016C000DB009B1A9B000B441968FA7B8048134689 +:1016D000DB009B1A9B0003440C331B680B44FA7B12 +:1016E00023F000417A481346DB009B1A9B00034419 +:1016F00004331960FA7B76491346DB009B1A9B0082 +:101700000B4404331A68724BD3F8A831D31A40F251 +:101710008E2293425FD8FA7B6D491346DB009B1AF9 +:101720009B000B44103300221A70FA7B6849134661 +:10173000DB009B1A9B000B4414331868FA7B644946 +:101740001346DB009B1A9B000B4418331B78194689 +:10175000FFF7B6FAFA7B5E491346DB009B1A9B0043 +:101760000B4412331B78002B35D1594B012283F8DF +:10177000B021FA7B56491346DB009B1A9B000B44B1 +:101780001C68FA7B52491346DB009B1A9B000B44F2 +:1017900014331B68F87B0093002301222146FFF7D6 +:1017A0007DFB4B4B002283F8B02114E0FA7B4849C3 +:1017B0001346DB009B1A9B000B440C331B68F97B20 +:1017C00003F10042013A42480B46DB005B1A9B00E2 +:1017D000034404331A60FB7B0133FB73FB7B0E2B4A +:1017E0007FF6A4AE3A4BD3F8A831394AC2F8AC31EF +:1017F0000023FB7302E0FB7B0133FB73FA7B34496C +:101800001346DB009B1A9B000B4410331B7883F0BC +:101810000103DBB2002B02D0FB7B0E2BEBD9FB7B51 +:101820000E2B4DD8FA7B2A491346DB009B1A9B00EE +:101830000B4404331A68264BD3F8AC31D31ABB607F +:10184000FB7BBB73BB7B0133FB7323E0FA7B20493B +:101850001346DB009B1A9B000B4410331B78002BB4 +:1018600015D0FA7B1A491346DB009B1A9B000B44E8 +:1018700004331A68164BD3F8AC31D31A7B607A68FC +:10188000BB689A4203D27B68BB60FB7BBB73FB7B6C +:101890000133FB73FB7B0E2BD8D9BA7B0C49134663 +:1018A000DB009B1A9B000B4404331B68084AC2F8F8 +:1018B000A831074BD3F8A831184601F0ABFA03E082 +:1018C000034B002283F8A4211437BD4690BD00BF0E +:1018D000B04C002080B500AFFEF7D8FC0346184698 +:1018E00080BD80B500AF00F09DF800F0B7F800F0C3 +:1018F00014F800F054F800F06DFD00F0C3FA00F0A9 +:10190000EFF801F065FA01F01BFB00F051FF00F069 +:1019100017FC00F097F900BF80BD80B500AF102123 +:10192000094802F058FB0821074802F054FB002246 +:101930001021054802F024FB08220821024802F089 +:101940001FFB00BF80BD00BF00C00D4080B500AFD1 +:1019500000221021044802F013FB0822082102484B +:1019600002F00EFB00BF80BD00C00D4080B500AF8F +:1019700000220821044802F003FB10221021024833 +:1019800002F0FEFA00BF80BD00C00D4080B500AF80 +:10199000002004F0EBFA04F017F900BF80BD80B519 +:1019A00000AF3221044802F072FD4FF6FF71024889 +:1019B00002F042FD00BF80BD0020034080B582B030 +:1019C00000AFFF21054802F0E2FE03465B097B60A1 +:1019D0007B6818460837BD4680BD00BF0020034025 +:1019E00080B584B000AF7860FF210A4802F0CFFED6 +:1019F00003465B09FB607A68FB68D31ABB60BB686F +:101A0000002B01DD002300E0012318461037BD46FE +:101A100080BD00BF0020034080B500AF04F0CBF8CC +:101A200000BF80BD80B500AFFF21084802F0BDFABD +:101A3000FF21074802F0B9FAFF21064802F0B5FA83 +:101A4000FF21054802F0B1FA00BF80BD00900D40B3 +:101A500000A00D4000B00D4000C00D4080B582B028 +:101A600000AF03F0D6F90346FB71002240211A486B +:101A700002F00AF900228021174802F005F901223C +:101A80004021154803F020FD01228021124803F077 +:101A90001BFD00220021012003F06AFF002004F05A +:101AA00017F800BF0D4B1B6803F40023002BF9D07F +:101AB00000F030F800F05EF800F08CF800F0BAF8B2 +:101AC000FB7983F00103DBB2002B01D003F095F921 +:101AD00000BF0837BD4680BD00C00D4004200D404A +:101AE00080B500AF20210A4802F05FFA00222021D1 +:101AF000074802F02FF9082002F07AFC2021044860 +:101B000002F0F6F92021024802F0AFF900BF80BDD3 +:101B100000C00D4080B500AF002004F073F9012033 +:101B200004F070F9032004F06DF94FF4807004F0B4 +:101B300069F940F2011004F065F940F2012004F067 +:101B400061F94FF4407004F05DF94FF4806004F0E7 +:101B500059F940F2014004F055F9022004F02EF941 +:101B60004FF4007004F02AF94FF4A06004F026F955 +:101B700000BF80BD80B500AF002004F08BF90120CC +:101B800004F088F9032004F085F94FF4807004F024 +:101B900081F940F2011004F07DF940F2012004F0D7 +:101BA00079F94FF4407004F075F94FF4806004F057 +:101BB00071F940F2014004F06DF9022004F046F999 +:101BC0004FF4007004F042F94FF4A06004F03EF9C5 +:101BD00000BF80BD80B500AF002004F0A3F9012054 +:101BE00004F0A0F9022004F09DF9032004F09AF912 +:101BF0004FF4807004F096F940F2011004F092F96D +:101C00004FF4007004F08EF940F2012004F08AF9DC +:101C10004FF4407004F086F94FF4806004F082F9CC +:101C200040F2014004F07EF94FF4A06004F07AF92C +:101C300000BF80BD80B500AF202002F0D9FB00BFFF +:101C400080BD00BF80B500AF40F2014004F070F8E5 +:101C500040F2014004F0B2F80023184680BDF0B510 +:101C60008FB008AFF8607A603B600B46FB723B6850 +:101C70001B78002B14BF01230023FB7507F116030B +:101C80001946B86B00F0D5F80346002B41D13B68EC +:101C90001B789BB2FA7A92B2B97D38680078044614 +:101CA0007868204497F83C60FD7D0024069497F8FE +:101CB00034400594049003910292FA6801920093D3 +:101CC0007B683A6B3146284601F020FC0346002B26 +:101CD0001FD100BF01F02EFD0346002BF9D03B6859 +:101CE0001B7899B23B681B781A467B681A4497F8B0 +:101CF0003C30184601F042FD0346002B09D13B68F9 +:101D00001A7897F83C301344DAB23B681A70002313 +:101D100000E0012318461C37BD46F0BDB0B592B0B7 +:101D200008AFF8607A603B600B46FB723B681B783B +:101D30001A4697F84430D31A002BCCBF0123002356 +:101D400087F8273007F126031946386C00F071F840 +:101D50000346002B3DD13B681B789BB2FA7A92B2C6 +:101D600097F8261097F8445097F8274000200690DF +:101D700097F83C00059007F114000490039102923B +:101D8000FA68019200937B68BA6B2946204601F0FD +:101D90007FFD0346002B1CD100BF01F087FE0346E8 +:101DA000002BF9D03B681B789AB207F1140397F81F +:101DB0004400796801F081FE0346002B09D13B689D +:101DC0001A7897F84430D31ADAB23B681A700023B5 +:101DD00000E0012318462837BD46B0BD80B586B067 +:101DE00002AF7860396007F10F031946386800F0D8 +:101DF00020F80346002B17D1FA7B00230093012320 +:101E00007968786801F090FA0346002B0CD100BF86 +:101E100001F00EFB0346002BF9D001F02DFB034629 +:101E2000002B01D1002300E0012318461037BD46E6 +:101E300080BD90B583B000AF7860396010227968BA +:101E40000F4804F057FC0346002B10D00C4A7B6867 +:101E50001446186859689A68DB680FC4002108485E +:101E600001F0A2F90346002B01D0012303E03B68F7 +:101E700000221A70002318460C37BD4690BD00BFE3 +:101E80008C42002080B500AF80210E4802F0A3F8FC +:101E900008210D4802F09FF80F210C4802F09BF832 +:101EA00000228021074802F06BF800220821064832 +:101EB00002F066F800220F21044802F061F800BF2A +:101EC00080BD00BF00900D4000B00D4000A00D404F +:101ED00080B500AF8021024800F0EAF800BF80BD65 +:101EE00000900D4080B500AF00228021024802F032 +:101EF00047F800BF80BD00BF00900D4080B500AF27 +:101F000080228021024802F03BF800BF80BD00BF64 +:101F100000900D4080B500AF0821024800F0C8F8DD +:101F200000BF80BD00A00D4080B500AF0022082199 +:101F3000024802F025F800BF80BD00BF00A00D40A0 +:101F400080B500AF08220821024802F019F800BF4E +:101F500080BD00BF00A00D4080B500AF0421024845 +:101F600000F0A6F800BF80BD00A00D4080B500AF16 +:101F700000220421024802F003F800BF80BD00BF28 +:101F800000A00D4080B500AF04220421024801F0FA +:101F9000F7FF00BF80BD00BF00A00D4080B500AFBF +:101FA0000221024800F084F800BF80BD00A00D406F +:101FB00080B500AF00220221024801F0E1FF00BF1E +:101FC00080BD00BF00A00D4080B500AF02220221FD +:101FD000024801F0D5FF00BF80BD00BF00A00D404A +:101FE00080B500AF0821024800F062F800BF80BD54 +:101FF00000B00D4080B500AF00220821024801F07A +:10200000BFFF00BF80BD00BF00B00D4080B500AF76 +:1020100008220821024801F0B3FF00BF80BD00BFC5 +:1020200000B00D4080B500AF0121024800F040F83B +:1020300000BF80BD00A00D4080B500AF002201218F +:10204000024801F09DFF00BF80BD00BF00A00D4011 +:1020500080B500AF01220121024801F091FF00BFCD +:1020600080BD00BF00A00D4080B400AF00BFBD46E2 +:1020700080BC704780B400AF00BFBD4680BC7047D5 +:1020800080B400AF00BFBD4680BC704780B400AFD5 +:1020900000BFBD4680BC704780B400AF00BFBD46E6 +:1020A00080BC704780B400AF00BFBD4680BC7047A5 +:1020B00080B584B000AF78600B46FB70FB781946A2 +:1020C000786801F04CFFF860FB68DA43FB78134056 +:1020D000FB60FB68DAB2FB781946786801F050FFC4 +:1020E00000BF1037BD4680BD80B485B000AF7860BA +:1020F000114BFB6007E0FA68531EFB607B68591CBC +:10210000796012781A70FB68B3F1281FF3D20B4B79 +:10211000FB6007E0FA68531EFB607B68591C79601E +:1021200012781A70FB68044A9342F3D800BF143740 +:10213000BD4680BC704700BF2B0028002F00280040 +:1021400080B582B000AF4FF4407003F037FE4FF41B +:10215000407003F07BFE4FF4407003F0E3FE4FF459 +:10216000407003F0E5FD2021154801F04AFF154AB3 +:102170002021134803F0CEF80C222021104803F050 +:1021800065F810210E4801F03CFF0F4A10210C4861 +:1021900003F0C0F80B221021094803F057F801237F +:1021A000FB7103F043FC0246FB791946104602F02E +:1021B00009FC02F047FC00BF0837BD4680BD00BFE8 +:1021C00000A00D4030410D402C410D4080B584B041 +:1021D00000AF03463960FB71144BFB60FB790121B2 +:1021E000184602F063FD072002F09AFDFFF7E6FBB8 +:1021F0000246FB681344FB6007E0F868FFF7F0FB5A +:102200000346002B01D000230BE002F065FD0346DE +:10221000002BF2D102F0C0FD0346DAB23B681A701F +:10222000012318461037BD4680BD00BF801A060046 +:1022300080B586B000AF0346B9607A60FB731D4B72 +:102240007B61FB7B0121184602F030FD0B2002F080 +:1022500067FDFFF7B3FB02467B6913447B6121E016 +:102260007869FFF7BDFB0346002B01D07B681DE0BA +:1022700002F032FD0346002BF2D102F08DFD014643 +:10228000BB685A1CBA60CAB21A707B68013B7B609B +:102290007B68012B03D1052002F042FD02E00920FA +:1022A00002F03EFD7B68002BE2D17B6818461837B0 +:1022B000BD4680BD801A060080B584B000AF0346DD +:1022C0000A46FB711346BB71134BFB60FB7900217F +:1022D000184602F0EBFCBB79184602F04DFD0720D2 +:1022E00002F01EFDFFF76AFB0246FB681344FB6029 +:1022F00007E0F868FFF774FB0346002B01D00023CA +:1023000005E002F0E9FC0346002BF2D10123184658 +:102310001037BD4680BD00BF801A060080B586B06C +:1023200000AF0346B9607A60FB73294B7B61FB7B8E +:102330000021184602F0BAFCBB685A1CBA601B7830 +:10234000184602F019FD7B68013B7B60032002F018 +:10235000E7FCFFF733FB02467B6913447B6107E030 +:102360007869FFF73DFB0346002B01D07B682BE02B +:1023700002F0B2FC0346002BF2D121E0BB685A1CEC +:10238000BA601B78184602F0F7FC7B68012B03D17A +:10239000052002F0C5FC0BE0012002F0C1FC07E0C3 +:1023A0007869FFF71DFB0346002B01D07B680BE02B +:1023B00002F092FC0346002BF2D17B68013B7B606C +:1023C0007B68002BDAD17B6818461837BD4680BD84 +:1023D000801A060080B500AFF021054801F0FBFD32 +:1023E000F022F021024801F0CBFD00BF80BD00BF0C +:1023F00000B00D4080B500AF102000F097F900BF8D +:1024000080BD80B500AF102000F0A2F900BF80BDF4 +:1024100080B500AF102000F0ADF900BF80BD80B5E1 +:1024200082B000AF1021074801F099FD78607B6809 +:10243000DBB21B11DBB203F00103DBB21846083735 +:10244000BD4680BD00B00D4080B500AF802000F0DB +:102450006DF900BF80BD80B500AF802000F078F935 +:1024600000BF80BD80B500AF802000F083F900BFC1 +:1024700080BD80B582B000AF8021074801F06FFDBC +:1024800078607B68DBB25B11DBB203F00403DBB284 +:1024900018460837BD4680BD00B00D4080B500AF7E +:1024A000202000F043F900BF80BD80B500AF2020A0 +:1024B00000F04EF900BF80BD80B500AF202000F0D5 +:1024C00059F900BF80BD80B582B000AF202104481B +:1024D00001F045FD7860002318460837BD4680BDF1 +:1024E00000B00D4080B500AF402000F01FF900BFE4 +:1024F00080BD80B500AF402000F02AF900BF80BD4C +:1025000080B500AF402000F035F900BF80BD80B538 +:1025100082B000AF4021074801F021FD78607B6860 +:10252000DBB29B11DBB203F00103DBB218460837C4 +:10253000BD4680BD00B00D4080B500AFF02000F07A +:10254000F5F800BF80BD80B500AFF02000F000F9C5 +:1025500000BF80BD80B500AFF02000F00BF900BFD8 +:1025600080BD80B582B000AFF02000F0F1F800230C +:10257000FB711FE0102000F0FDF84FF6FF73BB80E9 +:1025800004E0BB889BB2013B9BB2BB80BB889BB283 +:10259000002BF6D14FF6FF73BB8004E0BB889BB2E3 +:1025A000013B9BB2BB80BB889BB2002BF6D1FB7971 +:1025B0000133FB71FB794F2BDCD900BF0837BD46D7 +:1025C00080BD80B582B000AFF02000F0C1F80023DC +:1025D000FB714EE0102000F0A9F84FF6FF73BB80AE +:1025E00007E0102000F0B4F8BB889BB2013B9BB21F +:1025F000BB80BB889BB2002BF3D1202000F096F863 +:102600004FF6FF73BB8004E0BB889BB2013B9BB2DB +:10261000BB80BB889BB2002BF6D1202000F098F83D +:10262000402000F083F84FF6FF73BB8004E0BB88C6 +:102630009BB2013B9BB2BB80BB889BB2002BF6D107 +:10264000402000F085F8802000F070F84FF6FF730E +:10265000BB8004E0BB889BB2013B9BB2BB80BB88C4 +:102660009BB2002BF6D1F02000F072F8FB79013319 +:10267000FB71FB79092BADD900BF0837BD4680BD82 +:1026800080B582B000AFF02000F062F80023FB714B +:1026900045E0102000F04AF84FF6FF73BB8004E0DD +:1026A000BB889BB2013B9BB2BB80BB889BB2002B1B +:1026B000F6D1202000F03AF84FF6FF73BB8004E01B +:1026C000BB889BB2013B9BB2BB80BB889BB2002BFB +:1026D000F6D1402000F02AF84FF6FF73BB8004E0EB +:1026E000BB889BB2013B9BB2BB80BB889BB2002BDB +:1026F000F6D1802000F01AF84FF6FF73BB8004E09B +:10270000BB889BB2013B9BB2BB80BB889BB2002BBA +:10271000F6D1F02000F01CF8FB790133FB71FB7956 +:10272000092BB6D900BF0837BD4680BD80B582B041 +:1027300000AF0346FB71FB7900221946034801F004 +:102740001FFC00BF0837BD4680BD00BF00B00D4074 +:1027500080B582B000AF0346FB71FA79FB79194668 +:10276000034801F00DFC00BF0837BD4680BD00BF27 +:1027700000B00D4080B584B000AF0346FB71FB791B +:1027800019460A4801F0EBFBF860FB68DA43FB7975 +:102790001340FB60FB68DAB2FB791946034801F08D +:1027A000EFFB00BF1037BD4680BD00BF00B00D403D +:1027B00080B500AF0C220021354803F0CDFF344B2B +:1027C00000221A72334BED221A60324BED221A604E +:1027D000304BEE221A602F4BEE221A6000F03EFAC8 +:1027E00000F020FA2C4B14221A602C4B3F221A6066 +:1027F0002B4B55221A602B4B85221A602A4B012243 +:102800001A602A4B15221A60294B10221A60294B94 +:102810000E221A60284B03221A60284BF8221A60F5 +:10282000274B09221A60214B15221A6004230B2220 +:102830001A60244BFF221A60234B40221A60234B5C +:102840001B68224A23F001031360214B00221A6007 +:10285000204B7F221A60204BD5221A601F4B0B227F +:102860001A601F499D2002F0E0FA1E499E2002F0E6 +:10287000DCFA9D2002F0A4FB1B4B7F221A609E20F5 +:1028800002F09EFB024B01221A7200BF80BD00BF06 +:10289000644E002038880840A4860840AC86084072 +:1028A000B0860840A0860840B8860840C886084020 +:1028B000D4860840D8860840DC8608405886084000 +:1028C000E88708409487084024860840008608402E +:1028D0000886084050860840408608403C860840EC +:1028E000AB2C20009D2D20009486084080B483B03E +:1028F00000AF7860034A7B68136000BF0C37BD46A9 +:1029000080BC7047644E002080B483B000AF786014 +:10291000034A7B68536000BF0C37BD4680BC7047DC +:10292000644E002080B500AF00BF0E4B1B6803F063 +:102930000203002BF9D10C4BED221A600A4BED2259 +:102940001A60094BEE221A60074BEE221A60074B01 +:102950001B68002B02D0044BEF221A60FFF728FF00 +:1029600000BF80BD4C860840388808402C8608404F +:1029700080B582B000AF0346FB710E4B02221A7283 +:1029800000F06CF9FB790A2B02D9FB791A2B00D9DC +:10299000FEE7FB79A3F10B0213469B00134403F1FE +:1029A0000B02054B1A60034B03221A7200BF083753 +:1029B000BD4680BD644E00203C86084080B400AF18 +:1029C00000BFBD4680BC704780B500AF074B0D22ED +:1029D0001A7200F043F9FFF72FFBFFF766FD00F0D6 +:1029E00021F9024B01221A7200BF80BD644E002003 +:1029F00080B485B000AF78600B467B800023FB730A +:102A0000154B04221A7200BF144B1B6803F002031B +:102A1000002BF9D1124BEE221A60114BEE221A60F4 +:102A2000104A7B8813600023FB7308E0FB7B7A6805 +:102A300013441A780B4B1A60FB7B0133FB73FB7B4F +:102A40009BB27A889A42F1D8034B05221A7200BFD2 +:102A50001437BD4680BC7047644E00204C86084049 +:102A6000388808402888084080B500AF054B06220A +:102A70001A72FFF7EDFAFFF711FD024B07221A72E7 +:102A800000BF80BD644E002080B582B000AF0F4B08 +:102A900008221A7200F0B0F800BF0D4B1B6803F05B +:102AA0000203002BF9D10B4BE9221A6000237B6053 +:102AB00002E07B6801337B60054B1B6803F0020377 +:102AC000002BF6D000BF0837BD4680BD644E002005 +:102AD0004C8608403888084080B500AF054B092275 +:102AE0001A72FFF7B5FAFFF7D9FC024B0A221A72E5 +:102AF00000BF80BD644E002080B500AF094BED22C1 +:102B00001A60084BED221A6000F076F8054BE322BC +:102B10001A6000BF044B1B6803F00103002BF9D0BF +:102B200000BF80BD388808404C86084080B487B01C +:102B300000AFF860B9603B601346FB710023BB75C2 +:102B40002B4B1B68BB7597F91630002B06DA294B07 +:102B5000ED221A60274BED221A6044E0BB7D042B66 +:102B600006D8244BED221A60224BED221A603AE07F +:102B7000BA7DFB799A4206D91E4BED221A601D4B95 +:102B8000ED221A602FE00023FB7509E0184B19684D +:102B9000FB7DFA681344CAB21A70FB7D0133FB75E2 +:102BA000FA7DBB7D023B9A42F0DB114B1B68DBB226 +:102BB000493BDBB25AB23B681A700D4B1B687B7500 +:102BC0007B7D03F08003002B14BF01230023DAB2C6 +:102BD0007B6A1A70BB68BA7D1A70064BED221A60C8 +:102BE000044BED221A601C37BD4680BC704700BF05 +:102BF000288808403888084080B400AF074B1B681D +:102C0000064A43F007031360054B1B68044A43F070 +:102C10000203136000BFBD4680BC70478C8608402D +:102C20009086084080B400AF044B00221A60044B29 +:102C300000221A6000BFBD4680BC70478C860840E9 +:102C40009086084080B400AF034BE3221A6000BFB7 +:102C5000BD4680BC704700BF3888084080B400AFD4 +:102C600000BF0A4B1B6803F00203002BF9D1084B8D +:102C70001B68002B06D0074BEF221A60064B6FF043 +:102C800044021A6000BFBD4680BC70474C860840B5 +:102C90002C860840388808403488084080B400AF4B +:102CA00000231846BD4680BC704780B582B000AF97 +:102CB000FFF7ACF900F0D6F803463B60344B1B68D5 +:102CC000FB71344B1B68BB719D2002F04BFA304BFB +:102CD00000221A602F4B00221A60FB7903F00203D6 +:102CE000002B0FD02C4B0B221A722B4B1B68002B86 +:102CF00007D0294B1B683A6810469847FFF77AF9C6 +:102D000042E0FEE7FB7903F04003002B0FD0224B9B +:102D10000C221A72204B5B68002B07D01E4B5B689D +:102D20003A6810469847FFF765F92DE0FEE7FB7912 +:102D300003F00403002B0FD0174B0C221A72164B12 +:102D40005B68002B07D0144B5B683A6810469847C5 +:102D5000FFF750F918E0FEE7BB7903F00203002B00 +:102D60000FD00D4B0C221A720B4B5B68002B07D057 +:102D7000094B5B683A6810469847FFF73BF903E058 +:102D8000FEE7FFF737F900BF0837BD4680BD00BF3B +:102D90003488084030880840644E002080B483B0F6 +:102DA00000AF0A4B1B68FB71084B1A68FB79134094 +:102DB00003F00203002B03D0044B6FF002021A60F1 +:102DC00000BF0C37BD4680BC704700BF94860840EA +:102DD00080B500AF04220021054803F0BDFC054981 +:102DE000A12002F022F8A12002F034F900BF80BD3A +:102DF000704E00208F2E200080B483B000AF78602A +:102E0000034A7B68136000BF0C37BD4680BC704727 +:102E1000704E002080B582B000AF7860A12002F033 +:102E2000CFF802F0E8FC02467B68D31A0C4A9342C2 +:102E300003D8A12002F058F90DE002F0DCFC0246B4 +:102E40007B689B1A042B03D8A12002F04DF902E005 +:102E5000786802F013FD00BF0837BD4680BD00BF93 +:102E6000FEFFFF0080B500AF02F0C5FC0346184628 +:102E700080BD80B500AFA12002F0A2F800BF80BDE8 +:102E800080B500AFA12002F0E5F800BF80BD80B59D +:102E900000AFFFF7BBF8084B1B68002B07D0A12041 +:102EA00002F060F9044B1B689847FFF7A3F8FFF79F +:102EB000A1F800BF80BD00BF704E002080B500AFFC +:102EC00000F007F8FEE780B400AFFEE780B400AF83 +:102ED000FEE780B582B000AF114BFF221A60114BA4 +:102EE000114A1A60114B7B60114B3B6007E07A6816 +:102EF000131D7B603B68191D396012681A603B68BE +:102F00000C4A9342F3D30C480C494FF0000288421C +:102F1000B8BF40F8042BFADBFEF7DCFCFEE700BF8D +:102F2000B4200D4008ED00E000002000CC7020002F +:102F3000004000208C4200208C420020804E002067 +:102F400080B500AF0C2200211E4803F005FC1E488E +:102F500003F020F941F6FF711B4803F0A4FA0121A8 +:102F6000194803F019FB00220221184802F06EF9FB +:102F70000221164801F09DF8154A0121134802F07C +:102F8000C9F90121114801F07EF802F0BBFD0146AC +:102F900060234FF4E1320C4803F06AF80A4803F06A +:102FA000DEF8094803F02AF91021074803F067F911 +:102FB0000849054803F031FA152002F001F800BF76 +:102FC00080BD00BF744E002000C0004000900D4046 +:102FD00000410D40E930200080B483B000AF78603C +:102FE0003960054A7B681360034A3B68536000BF41 +:102FF0000C37BD4680BC7047744E002080B500AFD2 +:103000007021024803F03CFA00BF80BD00C00040C0 +:1030100080B500AF7021024803F045FA00BF80BDC3 +:1030200000C0004080B500AF5021024803F063FAB1 +:1030300000BF80BD00C0004080B500AF2021024825 +:1030400003F059FA00BF80BD00C0004080B582B0D7 +:1030500000AF0346FB71FB79112B05D0FB79132BD5 +:1030600002D0FB79122B0AD1094B01221A72084AAD +:10307000FB7953721221074803F08AF904E0FB79C7 +:103080001946044803F084F900BF0837BD4680BDE7 +:10309000744E002000C0004080B582B000AF0548EB +:1030A00003F04BF978607B68DBB218460837BD4601 +:1030B00080BD00BF00C0004080B582B000AF0346B5 +:1030C000FB71FB79002B04D01121064803F060F955 +:1030D00003E01321034803F05BF900BF0837BD4646 +:1030E00080BD00BF00C0004080B582B000AF0121AC +:1030F000124803F0EBF97860152002F033F87B6892 +:1031000003F02003002B05D0FEF7CCFF00F018F8E9 +:10311000FEF7C2FF7B6803F01003002B04D17B682D +:1031200003F04003002B05D0FEF7AAFF00F02CF8B7 +:10313000FEF7A0FF00BF0837BD4680BD00C00040BD +:1031400080B500AFFFF778FF0D4B1B7A002B0CD03A +:103150000B4B00221A720A4B5B7A83F01003DBB22E +:103160001946084803F014F906E0054B1B68002BCC +:1031700002D0034B1B6898470023184680BD00BF50 +:10318000744E002000C0004080B500AFFFF74AFF3A +:10319000044B5B68002B02D0024B5B68984700230E +:1031A000184680BD744E002080B584B000AF7860B2 +:1031B0000B46FB704F4BBB604F4B01221A70002334 +:1031C000FB730AE0FB7B7A681A44FB7BB9680B440B +:1031D00012781A70FB7B0133FB73FB7B0F2BF1D949 +:1031E0009F2001F037FF454B1B68444A43F0010321 +:1031F0001360434B1B68424A43F003031360414B87 +:103200001B68404A23F0010313603E4B1B683D4A94 +:1032100043F0010313603C4B1B683B4A43F003033C +:1032200013603A4B1B68394A03F003031360374BB2 +:103230001B68364A43F001031360FB7801229A4071 +:10324000334B1A60334B1B68324A43F0010313605F +:10325000314ABB681360314B10221A6000BF304BFB +:103260001B6803F00103002BF8D02D4B1B68002BCB +:1032700007DA254B1B68244A43F0004313600323FD +:1032800033E0274B1B6803F08043002B07D01E4B15 +:103290001B681D4A43F080431360022325E01A4B4C +:1032A0001B68194A43F003031360164B00221A608F +:1032B0001C4B1B6803F00703012B04D00E4B0022AC +:1032C0001A70022311E00023FB7307E0FB7BBA684E +:1032D000134400221A70FB7B0133FB73FB7B0F2B23 +:1032E000F4D9054B00221A70002318461037BD464A +:1032F00080BD00BFA04A00209C4A002080B7084043 +:1033000084B7084000B7084088B7084008B40840B0 +:1033100000B4084000B0084004B008400CB00840B9 +:1033200090B7084004B4084080B584B000AFF8609E +:10333000B96011461A460B46FB711346BB712C4B04 +:1033400002221A702B4B01221A602B4B01221A60A9 +:103350003B7E002B05D09F2001F004FF9F2001F051 +:103360002FFE264B02221A60254B1B68244A43F08D +:1033700003031360234AFB79136000BF214B1B68D2 +:10338000002BFADB204B1B6803F00053002B07D007 +:103390001B4B1B681A4A43F000531360012322E0C1 +:1033A000BB79002B03D0194B0C221A6002E0174B9B +:1033B00008221A60164B10221A60164B00221A605F +:1033C000154B01221A60154AFB681360144B10223A +:1033D0001A60144B01221A60134ABB681360134B26 +:1033E00010221A60002318461037BD4680BD00BF6A +:1033F0009C4A002080B7084084B7084000B70840C6 +:1034000088B708400CB4084090B7084050B5084051 +:1034100054B5084058B5084000B0084004B0084012 +:103420000CB0084020B0084024B008402CB0084040 +:1034300080B400AF0F4B1B78DBB203F00103002B0D +:103440000FD10C4B1B780B4B1B78DBB203F0804386 +:10345000002B06D1074B1B78DBB203F00053002B87 +:1034600001D0012300E00023DBB21846BD4680BC3A +:10347000704700BF90B7084080B500AF1E4B1B6877 +:10348000002B07DA1D4B1B681C4A43F000431360F6 +:1034900003232EE0184B1B6803F08043002B07D05A +:1034A000164B1B68154A43F080431360022320E04B +:1034B000114B1B6803F00053002B07D00F4B1B6808 +:1034C0000E4A43F000531360012312E09F2001F0E5 +:1034D000C1FD0A4B1B68094A43F003031360084B04 +:1034E00000221A60074B00221A60074B00221A7054 +:1034F0000023184680BD00BF90B7084088B7084039 +:1035000000B7084050B508409C4A002080B58AB0FA +:1035100000AFBA607B600346FB730B46BB73704B16 +:1035200003221A709F2001F095FD6E4B01221A6054 +:103530006D4B03221A606D4B02221A606C4B1B68A4 +:103540006B4A43F0030313606A4A97F83C301360F8 +:1035500000BF684B1B68002BFADB674B1B6803F04E +:103560000053002B07D0624B1B68614A43F00053A5 +:1035700013600123AFE097F84430013BDBB23B74AA +:10358000002387F8233011E097F82330BA681A44F3 +:1035900097F823300133127807F128010B4403F820 +:1035A000182C97F82330013387F8233097F823300D +:1035B0000C2BE9D997F84430032B01D100237B77FA +:1035C0000023BB770023FB7707F110034B4A1B68EE +:1035D00013604B4A7B6913604A4ABB6913604A4ACD +:1035E000FB69136097F84430013BDB047B62BB7BD3 +:1035F000012B07D9BB7B023B5B109B051A467B6AFC +:1036000013437B627B6A43F480237B627B6A43F0D3 +:1036100008037B627B6A43F004037B627B6A43F0AE +:1036200040037B627B6A43F000537B627B6A43F416 +:10363000C0737B62354A7B6A1360354A3B8E1360E8 +:10364000344B00221A60344A3B8F13603B8F002BAF +:103650001BD0324B01221A60314A7B6B1360314A16 +:103660003B8F136000BF244B1B6803F00203002B49 +:10367000F8D0214B1B68002B07DA1D4B1B681C4A36 +:1036800043F000431360032325E0194B03221A6023 +:1036900097F84830002B05D09F2001F063FD9F2054 +:1036A00001F08EFC104B01221A60FB7B002B11D025 +:1036B0001A4B01221A601A4A7B681360194A3B8E22 +:1036C0001360194B01221A60184A7B681360184A6C +:1036D0003B8E1360002318462837BD4680BD00BFCF +:1036E0009C4A002080B7084084B7084000B70840D3 +:1036F00088B708400CB4084090B7084040B508406F +:1037000044B5084048B508404CB5084050B508409D +:1037100054B5084058B508405CB5084000B00840B2 +:1037200004B008400CB0084020B0084024B0084065 +:103730002CB0084080B400AF0F4B1B78DBB203F015 +:103740000103002B0FD10C4B1B780B4B1B78DBB20A +:1037500003F08043002B06D1074B1B78DBB203F04C +:103760000053002B01D0012300E00023DBB21846F8 +:10377000BD4680BC704700BF90B7084080B588B098 +:1037800000AF03463A60FB710B46BB80374B1B68AA +:10379000002B07DA364B1B68354A43F000431360B1 +:1037A00003235FE0314B1B6803F08043002B07D0FD +:1037B0002F4B1B682E4A43F080431360022351E0D5 +:1037C0002A4B1B6803F00053002B07D0284B1B68C3 +:1037D000274A43F000531360012343E09F2001F088 +:1037E00039FC244B00221A6000BF234B1B6803F0F6 +:1037F0008043B3F1804FF7D1204A07F10C031268E0 +:103800001A601F4A07F10C03043312681A601D4A3C +:1038100007F10C03083312681A601B4A07F10C0306 +:103820000C3312681A60124B1B68114A43F00303F1 +:1038300013600023FB770DE0FA7FFB7F39680B44B0 +:1038400007F120010A4412F8142CD2B21A70FB7F3F +:103850000133FB77FA7FFB799A42EDD30B4B0022C1 +:103860001A70002318462037BD4680BD90B7084027 +:1038700088B7084000B7084050B5084070B5084008 +:1038800074B5084078B508407CB508409C4A0020D3 +:1038900080B58AB000AFBA607B600346FB730B460D +:1038A000BB73BB7B9BB23A8ED31A3B846A4B032219 +:1038B0001A706A4B01221A60694B03221A60694B25 +:1038C00002221A60684B03221A60684A97F83C305B +:1038D000136000BF654B1B68002BFADB644B1B6851 +:1038E00003F00053002B07D05F4B1B685E4A43F088 +:1038F000005313600123ABE097F84430013BDBB287 +:103900003B74002387F8233011E097F82330BA681E +:103910001A4497F823300133127807F128010B4439 +:1039200003F8182C97F82330013387F8233097F8E1 +:1039300023300C2BE9D997F84430032B01D1002315 +:103940007B770023BB770023FB7707F11003494AFD +:103950001B681360484A7B691360484ABB6913605F +:10396000474AFB69136097F84430013BDB047B62F4 +:10397000BB7B012B07D9BB7B023B5B109B051A4627 +:103980007B6A13437B627B6A43F480237B627B6A9E +:1039900043F008037B627B6A43F040037B627B6AEF +:1039A00043F000537B627B6A43F4C0737B62354A09 +:1039B0007B6A1360344A3B8C1360344B00221A60DC +:1039C000334A3B8F13603B8F002B1BD0314B0122BE +:1039D0001A60314A7B6B1360304A3B8F136000BF23 +:1039E000234B1B6803F00203002BF8D0204B1B680D +:1039F000002B07DA1C4B1B681B4A43F00043136083 +:103A0000032325E0184B03221A6097F84830002B57 +:103A100005D09F2001F0A6FB9F2001F0D1FA104BAA +:103A200001221A60FB7B002B11D01A4B01221A6075 +:103A3000194A7B681360194A3B8C1360184B0122AA +:103A40001A60184A7B681360174A3B8C1360002386 +:103A500018462837BD4680BD9C4A002080B70840E4 +:103A600084B7084000B7084088B708400CB4084045 +:103A700090B7084040B5084044B5084048B50840F4 +:103A80004CB5084050B5084054B5084058B50840FA +:103A90005CB5084000B0084004B008400CB00840D5 +:103AA00020B0084024B008402CB0084080B500AFDA +:103AB000FFF740FE0346184680BD80B58AB000AFD0 +:103AC000B9607B600346FB731346BB81FB7B9BB2F3 +:103AD000BA89D31ABB844A4B1B68002B07DA494BBF +:103AE0001B68484A43F000431360032384E0444BBF +:103AF0001B6803F08043002B07D0424B1B68414AF0 +:103B000043F080431360022376E03D4B1B6803F0D3 +:103B10000053002B07D03B4B1B683A4A43F000533D +:103B20001360012368E09F2001F094FA364B0022D5 +:103B30001A6000BF354B1B6803F08043B3F1804F20 +:103B4000F7D1334A07F1140312681A60314A07F1BA +:103B50001403043312681A602F4A07F11403083360 +:103B600012681A602D4A07F114030C3312681A60A8 +:103B7000244B1B68234A43F003031360002387F898 +:103B8000273011E097F8272097F8273079680B4401 +:103B900007F128010A4412F8142CD2B21A7097F8CF +:103BA0002730013387F8273097F82720FB7B9A428C +:103BB000E8D3002387F8263015E097F826307A6896 +:103BC00013441A78B98C97F826300B441946BB6811 +:103BD0000B441B789A4201D004230DE097F826305D +:103BE000013387F8263097F82620FB7B9A42E4D3EE +:103BF0000B4B00221A70002318462837BD4680BDA3 +:103C000090B7084088B7084000B7084050B5084052 +:103C100070B5084074B5084078B508407CB50840D8 +:103C20009C4A002080B485B000AF78607B68124A5F +:103C3000934210D0104A934203D8104A934207D0BF +:103C400012E00F4A934209D00E4A934209D00BE08A +:103C50001023FB600AE01123FB6007E01223FB60E6 +:103C600004E01323FB6001E0002300E0FB6818463A +:103C70001437BD4680BC704700A00D4000900D4039 +:103C800000B00D4000C00D4080B485B000AFF860BA +:103C90000B467A60FB727B6803F00103002B06D0B1 +:103CA000FB6803F580631A68FB7A134306E0FB6840 +:103CB00003F580631B68FA7AD2431340FA6802F571 +:103CC000806213607B6803F00203002B06D0FB6860 +:103CD00003F584631A68FB7A134306E0FB6803F577 +:103CE00084631B68FA7AD2431340FA6802F584624F +:103CF000136000BF1437BD4680BC704780B485B0E8 +:103D000000AF78600B46FB70FB78012202FA03F3E8 +:103D1000FB707B6803F580631B68FB607B6803F5C1 +:103D200084631B68BB60FA78FB681340002B14BFE8 +:103D300001230023DBB21946FA78BB681340002B3D +:103D400001D0022300E000230B4318461437BD4680 +:103D500080BC704780B485B000AFF8600B467A60D5 +:103D6000FB727B6803F00103002B06D0FB6803F5B0 +:103D700081631A68FB7A134306E0FB6803F58163ED +:103D80001B68FA7AD2431340FA6802F58162136025 +:103D90007B6803F00203002B06D0FB6803F20443A8 +:103DA0001A68FB7A134306E0FB6803F204431B68BE +:103DB000FA7AD2431340FA6802F2044213607B6835 +:103DC00003F00403002B06D0FB6803F20C431A68CF +:103DD000FB7A134306E0FB6803F20C431B68FA7A94 +:103DE000D2431340FA6802F20C42136000BF14374A +:103DF000BD4680BC704780B487B000AF78600B468A +:103E0000FB70FB78012202FA03F3FB707B6803F579 +:103E100081631B687B617B6803F204431B683B6121 +:103E20007B6803F20C431B68FB60FA787B691340E4 +:103E3000002B14BF01230023DBB21946FA783B693B +:103E40001340002B01D0022300E000230B43F9783C +:103E5000FA680A40002A01D0042200E0002213433D +:103E600018461C37BD4680BC704780B483B000AF95 +:103E700078600B46FB707B6803F582631A68FB78F9 +:103E8000796801F5826113430B6000BF0C37BD46B2 +:103E900080BC704780B483B000AF78600B46FB7085 +:103EA0007B6803F582631B68FA78D24311467A680F +:103EB00002F582620B40136000BF0C37BD4680BC28 +:103EC000704780B483B000AF78600B46FB70FB781E +:103ED000002B04D07B6803F583631B6803E07B68D9 +:103EE00003F214431B6818460C37BD4680BC70476C +:103EF00080B483B000AF78600B46FB707B6803F240 +:103F00001C431A46FB78136000BF0C37BD4680BCCB +:103F1000704780B582B000AF786039607868FFF78D +:103F200081FE78603968786800F07FFF786801F07A +:103F300047F800BF0837BD4680BD80B582B000AFEE +:103F400078607868FFF76EFE7860786801F082F834 +:103F5000786800F09BFF00BF0837BD4680BD80B485 +:103F600083B000AF78600B46FB70FB789B001A466D +:103F70007B6813441B6818460C37BD4680BC7047ED +:103F800080B483B000AF78600B46FB701346BB7003 +:103F9000FB789B001A467B6813441A46BB78136073 +:103FA00000BF0C37BD4680BC704780B582B000AF03 +:103FB00078600B46FB70FB78002219467868FFF7A3 +:103FC00063FEFB7800221946786801F07DFA00BF95 +:103FD0000837BD4680BD80B582B000AF78600B4623 +:103FE000FB70FB78012219467868FFF74DFEFB78DD +:103FF00000221946786801F067FA00BF0837BD460D +:1040000080BD80B582B000AF78600B46FB70FB7856 +:10401000022219467868FFF737FEFB78002219461E +:10402000786801F051FA00BF0837BD4680BD80B501 +:1040300082B000AF78600B46FB70FB780222194615 +:104040007868FFF721FEFB7800221946786801F0B6 +:104050003BFA00BF0837BD4680BD80B582B000AFD7 +:1040600078600B46FB70FB78022219467868FFF7F0 +:104070000BFEFB7800221946786801F025FA00BF94 +:104080000837BD4680BD80B582B000AF78600B4672 +:10409000FB70FB78022219467868FFF7F5FDFB7884 +:1040A00000221946786801F00FFA00BF0837BD46B4 +:1040B00080BD80B582B000AF78600B46FB70FB78A6 +:1040C000022219467868FFF7DFFDFB7808221946BF +:1040D000786801F0F9F900BF0837BD4680BD80B4AB +:1040E00087B000AFF8600B467A60FB7200237B61FB +:1040F000FB681D4A934201D100237B61FB681B4A88 +:10410000934201D108237B61FB68194A934201D194 +:1041100010237B61FB68174A934201D118237B610E +:10412000FA7A7B6902FA03F33B617B68012B0BD1BE +:10413000FB6803F204731A68FB6803F20473194600 +:104140003B6913430B600AE0FB6803F204731A68CF +:104150003B69DB43F96801F2047113400B6000BF57 +:104160001C37BD4680BC704700900D4000A00D403C +:1041700000B00D4000C00D4080B485B000AF786045 +:104180000B46FB700023FB607B68174A934201D10A +:104190000023FB607B68154A934201D10823FB6032 +:1041A0007B68134A934201D11023FB607B68114A5C +:1041B000934201D11823FB60FA78FB681344012273 +:1041C00002FA03F3BB607B6803F204731A68BB68EE +:1041D0001340002B01D0012300E0002318461437C0 +:1041E000BD4680BC704700BF00900D4000A00D4050 +:1041F00000B00D4000C00D4080B485B000AF7860C5 +:104200000B46FB700023FB607B68164A934201D18A +:104210000023FB607B68144A934201D10823FB60B2 +:104220007B68124A934201D11023FB607B68104ADD +:10423000934201D11823FB60FA78FB6802FA03F37A +:10424000BB607B6803F5E2631A687B6803F5E26391 +:104250001946BB6813430B6000BF1437BD4680BCD2 +:10426000704700BF00900D4000A00D4000B00D4011 +:1042700000C00D4080B485B000AF78600B46FB7085 +:104280000023FB607B68164A934201D10023FB6048 +:104290007B68144A934201D10823FB607B68124A71 +:1042A000934201D11023FB607B68104A934201D1F5 +:1042B0001823FB60FA78FB6802FA03F3BB607B68A3 +:1042C00003F5E2631A68BB68DB43796801F5E261D4 +:1042D00013400B6000BF1437BD4680BC704700BF61 +:1042E00000900D4000A00D4000B00D4000C00D40FA +:1042F00080B485B000AF78600B46FB700023FB6094 +:104300007B68184A934201D10023FB607B68164A00 +:10431000934201D10823FB607B68144A934201D188 +:104320001023FB607B68124A934201D11823FB6083 +:10433000FB78002B08D07B6803F5E3631A68FB6801 +:1043400022FA03F3DBB207E07B6803F5E4631A6843 +:10435000FB6822FA03F3DBB218461437BD4680BC73 +:10436000704700BF00900D4000A00D4000B00D4010 +:1043700000C00D4080B485B000AF78600B46FB7084 +:104380000023FB607B68164A934201D10023FB6047 +:104390007B68144A934201D10823FB607B68124A70 +:1043A000934201D11023FB607B68104A934201D1F4 +:1043B0001823FB60FA78FB6802FA03F3BB607B68A2 +:1043C00003F5E3631A687B6803F5E3631946BB688A +:1043D00013430B6000BF1437BD4680BC704700BF5D +:1043E00000900D4000A00D4000B00D4000C00D40F9 +:1043F00080B483B000AF7860054B1A6804497B68CD +:1044000013430B6000BF0C37BD4680BC704700BF34 +:1044100094200D4080B483B000AF7860054B1A68DB +:104420007B68DB43034913400B6000BF0C37BD467C +:1044300080BC704794200D4080B483B000AF78609A +:1044400039607B680C331A68396840F201130B40FD +:1044500079680C3113430B6000BF0C37BD4680BC3C +:10446000704780B483B000AF786039607B680C33EC +:104470001A68396840F201130B40DB4379680C314C +:1044800013400B6000BF0C37BD4680BC704780B442 +:1044900083B000AF786039607B680C331B687A6842 +:1044A0000C3223F4807323F0010313607B683A68B5 +:1044B000120E1A603B68DBB27A68043243F4007370 +:1044C00013603B681B0ADBB27A68083243F400735E +:1044D000136000BF0C37BD4680BC704780B485B008 +:1044E00000AFF860B9601346FB71BA6844F240034C +:1044F0001340BB60FB79002B05D0FB680C331A68B6 +:10450000BB68134305E0FB680C331A68BB68DB43E8 +:104510001340FA680C32136000BF1437BD4680BCEC +:10452000704780B485B000AFF860B9601346FB7186 +:10453000BA6842F220031340BB60FB79002B05D020 +:10454000FB680C331A68BB68134305E0FB680C3347 +:104550001A68BB68DB431340FA680C32136000BF73 +:104560001437BD4680BC704780B485B000AFF8609A +:10457000B9607A60BA6840F60C431340BB60FB68D0 +:104580000C331A68BB68DB431A407968BB680B4080 +:10459000F9680C3113430B6000BF1437BD4680BC73 +:1045A000704780B485B000AFF860B9601346FB7106 +:1045B000BA6840F202231340BB60FB79002B05D0A0 +:1045C000FB680C331A68BB68134305E0FB680C33C7 +:1045D0001A68BB68DB431340FA680C32136000BFF3 +:1045E0001437BD4680BC704780B485B000AFF8601A +:1045F000B9601346FB71BB68DBB2002B13D0FB79AB +:10460000002B08D0FB6804331B68FA68043243F0BF +:104610004003136007E0FB6804331B68FA68043248 +:1046200023F040031360BB6803F47F43002B13D0D7 +:10463000FB79002B08D0FB6808331B68FA68083246 +:1046400043F04003136007E0FB6808331B68FA6817 +:10465000083223F04003136000BF1437BD4680BC0E +:10466000704780B485B000AFF860B9607A60BB680D +:10467000DBB2002B04D0FB6838331A467B6813602A +:10468000BB6803F47F43002B04D0FB683C331A461D +:104690007B68136000BF1437BD4680BC704780B490 +:1046A00083B000AF786039603B68FF2B03D17B6833 +:1046B00038331B6802E07B683C331B6818460C37B4 +:1046C000BD4680BC704780B485B000AFF860B9606B +:1046D0007A60BB68DBB2002B04D0FB6840331A461B +:1046E0007B681360BB6803F47F43002B04D0FB6836 +:1046F00044331A467B68136000BF1437BD4680BC44 +:10470000704780B483B000AF786039603B68FF2B9E +:1047100003D17B6840331B6802E07B6844331B682D +:1047200018460C37BD4680BC704780B485B000AFDA +:10473000F860B9607A60BB68DBB2002B04D0FB681C +:1047400028331A467B681360BB6803F47F43002B51 +:1047500004D0FB682C331A467B68136000BF143703 +:10476000BD4680BC704780B483B000AF78603960CC +:104770003B68FF2B03D17B6828331B6802E07B6812 +:104780002C331B6818460C37BD4680BC704780B47C +:1047900083B000AF786039603B68FF2B03D17B6842 +:1047A00048331B6802E07B684C331B6818460C37A3 +:1047B000BD4680BC704780B485B000AFF860B9607A +:1047C0007A60BB68DBB2002B04D0FB6830331A463A +:1047D0007B681360BB6803F47F43002B04D0FB6845 +:1047E00034331A467B68136000BF1437BD4680BC63 +:1047F000704780B483B000AF786039603B68FF2BAE +:1048000003D17B6830331B6802E07B6834331B685C +:1048100018460C37BD4680BC704780B584B000AFE9 +:10482000F860B9607A60FB68184A93420DD0FB6863 +:10483000174A934207D0FB68164A934201D12723B7 +:1048400004E0332302E0252300E02323FB60BB6860 +:10485000DBB2002B06D07968F86800F0E6FAF86859 +:1048600000F0AEFBBB6803F47F43002B0AD0FB686B +:1048700001337968184600F0D8FAFB68013318460E +:1048800000F09EFB00BF1037BD4680BD0000034016 +:10489000001003400020034080B582B000AF786074 +:1048A00039607B68174A93420DD07B68164A934261 +:1048B00007D07B68154A934201D1272304E03323B4 +:1048C00002E0252300E023237B603B68DBB2002B62 +:1048D00005D0786800F0BEFB786800F0D7FA3B6836 +:1048E00003F47F43002B09D07B680133184600F0A6 +:1048F000B1FB7B680133184600F0C8FA00BF0837E7 +:10490000BD4680BD0000034000100340002003406E +:1049100080B483B000AF786039607B6818331A6860 +:104920007B68183319463B6813430B6000BF0C3794 +:10493000BD4680BC704780B483B000AF78603960FA +:104940007B6818331A683B68DB4379681831134079 +:104950000B6000BF0C37BD4680BC704780B483B08D +:1049600000AF78600B46FB70FB78002B03D07B68B0 +:1049700020331B6802E07B681C331B6818460C3729 +:10498000BD4680BC704780B483B000AF78603960AA +:104990007B6824331A463B68136000BF0C37BD4662 +:1049A00080BC704780B483B000AF786039607B68AA +:1049B00010331A463B68136000BF0C37BD4680BCFD +:1049C000704700BF80B584B000AF78600B46FB70C5 +:1049D00000F038F8FB78002B02D00F4BFB6001E0B1 +:1049E0000E4BFB60FA6813469B0013449B001A466B +:1049F0007B681344591EFA6813469B0013449B00BE +:104A0000B1FBF3F3013BBB60054ABB68136000BF19 +:104A10001037BD4680BD00BF801A0600A086010089 +:104A20000C00024080B582B000AF0346FB7100F07D +:104A300017F8034AFB79136000BF0837BD4680BDF5 +:104A40000008024080B400AF044B1B68034A43F0E7 +:104A50001003136000BFBD4680BC704720000240B9 +:104A600080B400AF064B1B68054A43F02003136077 +:104A7000044B01221A6000BFBD4680BC704700BFD6 +:104A8000200002400408024080B400AF044B1B68C1 +:104A9000034A23F01003136000BFBD4680BC70477B +:104AA0002000024080B400AF064B00221A60064B83 +:104AB0001B68054A23F02003136000BFBD4680BC7D +:104AC000704700BF040802402000024080B582B059 +:104AD00000AF78607968182000F0A7F9182000F07E +:104AE0006FFA00BF0837BD4680BD80B500AF182003 +:104AF00000F0B0FA182000F0C9F900BF80BD80B402 +:104B000000AF034B01221A6000BFBD4680BC704756 +:104B10001000024080B400AF044B1B68034A43F00E +:104B20000103136000BFBD4680BC70470C08024003 +:104B300080B483B000AF7860054B1A6804497B6885 +:104B400013430B6000BF0C37BD4680BC704700BFED +:104B50000C08024080B400AF034B00221A6000BF73 +:104B6000BD4680BC704700BF1000024080B400AF5B +:104B7000044B1B68034A23F00103136000BFBD46CA +:104B800080BC70470C08024080B483B000AF7860EE +:104B9000054B1A687B68DB43034913400B6000BF79 +:104BA0000C37BD4680BC70470C08024080B483B00F +:104BB00000AF0346FB71FB79002B07D0094B1B6844 +:104BC000002B14BF01230023DBB206E0064B1B6859 +:104BD000002B14BF01230023DBB218460C37BD465F +:104BE00080BC7047180002401400024080B483B0BB +:104BF00000AF0346FB71FB79002B07D0094B1B6804 +:104C0000002B14BF01230023DBB206E0064B1B6818 +:104C1000002B14BF01230023DBB218460C37BD461E +:104C200080BC7047140802401008024080B483B072 +:104C300000AF0346FB71FB79002B02D0044B1B68CD +:104C400001E0044B1B6818460C37BD4680BC70471A +:104C5000140802401008024080B400AF044B012247 +:104C60001A60044B01221A6000BFBD4680BC704729 +:104C70001C0002401800024080B400AF034B012228 +:104C80001A6000BFBD4680BC704700BF18080240D4 +:104C900080B483B000AF7860034A7B68136000BFC4 +:104CA0000C37BD4680BC70471808024080B483B002 +:104CB00000AF03460A46FB711346BB71FB795A00ED +:104CC000BB791A43034B1A6000BF0C37BD4680BC4A +:104CD000704700BF0000024080B400AF064B1B6865 +:104CE00003F00103002B01D0012300E0002318464C +:104CF000BD4680BC704700BF0400024080B400AFD6 +:104D0000064B1B6803F04003002B01D0012300E099 +:104D100000231846BD4680BC704700BF0400024017 +:104D200080B483B000AF7860034A7B68136000BF33 +:104D30000C37BD4680BC70470400024080B483B08D +:104D400000AF0C4B1B687B607B6803F00103002BFA +:104D500001D0002309E07B6803F01203002B03D08D +:104D60007B6803F01C0300E0002318460C37BD46A7 +:104D700080BC70470400024080B483B000AF03469B +:104D8000FB71044AFB79136000BF0C37BD4680BC41 +:104D9000704700BF0800024080B400AF024B1B68A0 +:104DA0001846BD4680BC70470800024080B400AF82 +:104DB000024B1B681846BD4680BC70470408024081 +:104DC00080B483B000AF0346FB71044AFB791360E3 +:104DD00000BF0C37BD4680BC704700BF08080240CA +:104DE00080B400AF024B1B681846BD4680BC7047BC +:104DF0000808024080B400AFFEE780B500AF01F0C4 +:104E00005EFC0346002B14BF01230023DBB21846CF +:104E100080BD80B500AF01F045FC0346002B14BFF8 +:104E200001230023DBB2184680BD80B485B000AFFB +:104E300078603960134B1B68134A934218D0114BAA +:104E40001B68BB600023FB600CE0FB689A00BB683A +:104E500013441B6819460C4AFB6842F82310FB6890 +:104E60000133FB60FB68A22BEFD9064B064A1A60A0 +:104E700005497B683A6841F8232000BF1437BD46D6 +:104E800080BC704708ED00E00040002080B483B093 +:104E900000AF7860044A7B68044942F8231000BFE1 +:104EA0000C37BD4680BC704700400020F54D200007 +:104EB00080B483B000AF7860074A7B6852F8233033 +:104EC000064A43F0BF6343F40033136000BF0C375E +:104ED000BD4680BC704700BF446E20000CED00E072 +:104EE00080B483B000AF0E4B1B6803F4E0633B60FB +:104EF00000237B6009E00B4A7B6852F823303A6854 +:104F00009A4206D07B6801337B607B68072BF2D91D +:104F100000E000BF7B6818460C37BD4680BC704778 +:104F20000CED00E0446E200080B485B000AF7860E6 +:104F30000B46FB707B689B08144A52F823301B68B1 +:104F4000FB607B6803F00303DB00FF2202FA03F33C +:104F5000DB431A46FB681340FB60FA787B6803F07A +:104F60000303DB0002FA03F31A46FB681343FB60FA +:104F70007B689B08054A52F823301A46FB68136089 +:104F800000BF1437BD4680BC704700BF646E200070 +:104F900080B483B000AF78607B689B08074A52F802 +:104FA00023301A687B6803F00303DB0022FA03F363 +:104FB000DBB218460C37BD4680BC7047646E2000DB +:104FC00080B483B000AF78607B68042B06D11E4BA1 +:104FD0001B681D4A43F4803313602FE07B68052B68 +:104FE00006D1194B1B68184A43F40033136025E0BF +:104FF0007B68062B06D1144B1B68134A43F48023AD +:1050000013601BE07B680F2B06D1104B1B680F4A07 +:1050100043F00203136011E07B680F2B0ED97B680D +:10502000103B03F01F03012202FA03F17B68103BDF +:105030005B09074A52F823300A461A6000BF0C3752 +:10504000BD4680BC704700BF24ED00E010E000E0EA +:10505000086F200080B483B000AF78607B68042BB9 +:1050600006D11E4B1B681D4A23F4803313602FE0CA +:105070007B68052B06D1194B1B68184A23F40033B3 +:10508000136025E07B68062B06D1144B1B68134A7E +:1050900023F4802313601BE07B680F2B06D1104B99 +:1050A0001B680F4A23F00203136011E07B680F2B8B +:1050B0000ED97B68103B03F01F03012202FA03F1B3 +:1050C0007B68103B5B09074A52F823300A461A6096 +:1050D00000BF0C37BD4680BC704700BF24ED00E028 +:1050E00010E000E01C6F200080B483B000AF786057 +:1050F0007B68022B06D1194B1B68184A43F000430A +:10510000136025E07B680E2B06D1144B1B68134AF5 +:1051100043F0805313601BE07B680F2B06D10F4BCD +:105120001B680E4A43F08063136011E07B680F2B0D +:105130000ED97B68103B03F01F03012202FA03F132 +:105140007B68103B5B09064A52F823300A461A6016 +:1051500000BF0C37BD4680BC704700BF04ED00E0C7 +:10516000306F200080B483B000AF78607B680E2B76 +:1051700006D1144B1B68134A43F0006313601BE015 +:105180007B680F2B06D10F4B1B680E4A43F0007350 +:10519000136011E07B680F2B0ED97B68103B03F086 +:1051A0001F03012202FA03F17B68103B5B09064AE8 +:1051B00052F823300A461A6000BF0C37BD4680BC47 +:1051C000704700BF04ED00E0446F200080B582B05E +:1051D00000AF7860786801F082FA00BF0837BD46FA +:1051E00080BD80B500AF01F07EFA0346184680BD51 +:1051F00080B400AF044B1B68034A43F00103136003 +:1052000000BFBD4680BC704798200D4080B400AF01 +:10521000044B1B68034A23F00103136000BFBD4623 +:1052200080BC704798200D4080B400AF064B1B68CF +:1052300003F00103002B01D0012300E000231846F6 +:10524000BD4680BC704700BF98200D4080B489B037 +:1052500000AFF8600B467A60FB72254BFB610023C0 +:10526000BB613CE0FA7ABB6942FA03F303F0010345 +:105270007B617B69002B2FD0FB681E4A934213D0C1 +:105280001C4A934203D81C4A934207D01EE01B4A93 +:1052900093420FD01A4A934212D017E0194ABB69C1 +:1052A00052F82330FB6114E0174ABB6952F82330EF +:1052B000FB610EE0154ABB6952F82330FB6108E040 +:1052C000134ABB6952F82330FB6102E0084BFB61D3 +:1052D00000BFFB697A681A60BB690133BB61BB69B7 +:1052E000072BBFD900BF2437BD4680BC704700BF25 +:1052F00000400D4000A00D4000900D4000B00D405A +:1053000000C00D40D86F2000F86F200018702000FA +:105310003870200080B487B000AFF8600B467A6028 +:10532000FB7200237B61FB68634A934237D0624A79 +:10533000934203D8614A934207D0ABE0604A93425C +:1053400056D0604A93427CD0A4E0FB7A012B01D175 +:1053500000237B61FB7A022B01D101237B61FB7A65 +:10536000042B01D102237B61FB7A082B01D103239B +:105370007B61FB7A102B01D104237B61FB7A202B0C +:1053800001D105237B61FB7A402B01D106237B6190 +:10539000FB7A802B40F0818007237B617DE0FB7AE4 +:1053A000012B01D108237B61FB7A022B01D1092358 +:1053B0007B61FB7A042B01D10A237B61FB7A082BEA +:1053C00001D10B237B61FB7A102B01D10C237B6174 +:1053D000FB7A202B01D10D237B61FB7A402B01D17D +:1053E0000E237B61FB7A802B59D10F237B6156E022 +:1053F000FB7A012B01D110237B61FB7A022B01D1B7 +:1054000011237B61FB7A042B01D112237B61FB7A90 +:10541000082B01D113237B61FB7A102B01D11423BC +:105420007B61FB7A202B01D115237B61FB7A402B1A +:1054300001D116237B61FB7A802B32D117237B614C +:105440002FE0FB7A012B01D118237B61FB7A022B21 +:1054500001D119237B61FB7A042B01D11A237B61D3 +:10546000FB7A082B01D11B237B61FB7A102B01D126 +:105470001C237B61FB7A202B01D11D237B61FB7AEE +:10548000402B01D11E237B61FB7A802B0BD11F2384 +:105490007B6108E000237B6106E000BF04E000BF01 +:1054A00002E000BF00E000BF7B687A691A6000BFBD +:1054B0001C37BD4680BC704700A00D4000900D40D9 +:1054C00000B00D4000C00D4080B489B000AFF8605E +:1054D0000B467A60FB72254BFB610023BB613CE00D +:1054E000FA7ABB6942FA03F303F001037B617B693B +:1054F000002B2FD0FB681E4A934213D01C4A9342C4 +:1055000003D81C4A934207D01EE01B4A93420FD097 +:105510001A4A934212D017E0194ABB6952F8233055 +:10552000FB6114E0174ABB6952F82330FB610EE0BF +:10553000154ABB6952F82330FB6108E0134ABB6986 +:1055400052F82330FB6102E0114BFB6100BFFB69A5 +:105550007A681A60BB690133BB61BB69072BBFD98D +:1055600000BF2437BD4680BC704700BF00400D40DF +:1055700000A00D4000900D4000B00D4000C00D4057 +:10558000586F2000786F2000986F2000B86F2000BF +:1055900080400D4080B485B000AF78600B46FB7052 +:1055A000644BFB607B68644A934237D0624A934203 +:1055B00003D8624A934207D0ABE0614A934256D087 +:1055C000604A93427CD0A4E0FB78012B01D1594B77 +:1055D000FB60FB78022B01D15B4BFB60FB78042B5B +:1055E00001D15A4BFB60FB78082B01D1584BFB6073 +:1055F000FB78102B01D1574BFB60FB78202B01D19E +:10560000554BFB60FB78402B01D1544BFB60FB7882 +:10561000802B40F08180524BFB607DE0FB78012BBA +:1056200001D1504BFB60FB78022B01D14E4BFB604C +:10563000FB78042B01D14D4BFB60FB78082B01D18B +:105640004B4BFB60FB78102B01D14A4BFB60FB7886 +:10565000202B01D1484BFB60FB78402B01D1474BFD +:10566000FB60FB78802B59D1454BFB6056E0FB7803 +:10567000012B01D1434BFB60FB78022B01D1424B44 +:10568000FB60FB78042B01D1404BFB60FB78082BBF +:1056900001D13F4BFB60FB78102B01D13D4BFB60F0 +:1056A000FB78202B01D13C4BFB60FB78402B01D1D8 +:1056B0003A4BFB60FB78802B32D1394BFB602FE0FB +:1056C000FB78012B01D1374BFB60FB78022B01D11A +:1056D000354BFB60FB78042B01D1344BFB60FB782E +:1056E000082B01D1324BFB60FB78102B01D1314BE1 +:1056F000FB60FB78202B01D12F4BFB60FB78402B0C +:1057000001D12E4BFB60FB78802B0BD12C4BFB6027 +:1057100008E0084BFB6006E000BF04E000BF02E0C9 +:1057200000BF00E000BFFB681B6818461437BD4689 +:1057300080BC704780400D4000A00D4000900D409F +:1057400000B00D4000C00D4084400D4088400D4029 +:105750008C400D4090400D4094400D4098400D40CD +:105760009C400D40A0400D40A4400D40A8400D407D +:10577000AC400D40B0400D40B4400D40B8400D402D +:10578000BC400D40C0400D40C4400D40C8400D40DD +:10579000CC400D40D0400D40D4400D40D8400D408D +:1057A000DC400D40E0400D40E4400D40E8400D403D +:1057B000EC400D40F0400D40F4400D40F8400D40ED +:1057C000FC400D4080B582B000AF78607968A120C0 +:1057D000FFF72BFBA120FFF7F3FB00BF0837BD4607 +:1057E00080BD80B500AFA120FFF734FCA120FFF7FA +:1057F0004DFB00BF80BD80B483B000AF0D4B1B6874 +:105800007B600D4B1B681B027A6813437B600B4B5C +:105810001B681B047A6813437B60094B1B681B06DB +:105820007A6813437B607B6818460C37BD4680BCA2 +:10583000704700BF40500D4044500D4048500D404F +:105840004C500D4080B485B000AF786039600A4B91 +:105850001B68FB60FB6823F03F03FB607A683B68D2 +:105860001343FA681343FB60034AFB68136000BFED +:105870001437BD4680BC704754500D4080B483B08F +:1058800000AF786000BF0E4B1B6803F00103002BD4 +:10589000F9D00C4A7B681B0E13607B681B0C0A4A0C +:1058A000DBB213607B681B0A084ADBB21360084A4C +:1058B0007B68DBB2136000BF0C37BD4680BC70470D +:1058C00050500D404C500D4048500D4044500D403C +:1058D00040500D4080B483B000AF0D4B1B687B601F +:1058E0000C4B1B681B027A6813437B600A4B1B68D6 +:1058F0001B047A6813437B60084B1B681B067A689D +:1059000013437B607B6818460C37BD4680BC7047EC +:105910005C500D4060500D4064500D4068500D408B +:1059200080B483B000AF074B1B6803F00103002B6A +:1059300014BF01230023FB71FB7918460C37BD46C9 +:1059400080BC704758500D4080B483B000AF074B07 +:105950001B687B607B6823F001037B60034A7B68E4 +:10596000136000BF0C37BD4680BC704758500D40D7 +:1059700080B586B000AF03463A60FB710B46BB7141 +:10598000BB7983F00103DBB2002B07D0244B1B68EB +:1059900043F400133B61224A3B691360204B1B68B0 +:1059A0003B613A691F4B13403B61FB7983F0010374 +:1059B000DBB2002B03D03B6943F080733B61BB79C2 +:1059C000002B02D04FF4803300E00023BB603A6923 +:1059D000BB6813433B613A693B6813433B61104A20 +:1059E0003B691360104B1B687B610023FB6008E080 +:1059F000102000F0DBF80C4B1B687B61FB68013367 +:105A0000FB607B6903F48033BA689A4204D0FB6878 +:105A10004FF6FE729342EBD900BF1837BD4680BDEA +:105A200000200D40F8FFFEFE04200D4080B485B03C +:105A300000AF1E4B1B68BB60BB6803F007037B60B5 +:105A40000023FB607B68072B2AD801A252F823F0C1 +:105A5000715A2000775A20007D5A2000835A200076 +:105A6000895A20008F5A2000955A20009B5A200006 +:105A70000F4BFB6014E00F4BFB6011E00E4BFB6023 +:105A80000EE00E4BFB600BE00D4BFB6008E00D4B96 +:105A9000FB6005E00C4BFB6002E00C4BFB6000BFC1 +:105AA000FB6818461437BD4680BC704704200D4083 +:105AB0000048E8010024F40000127A0000093D00CB +:105AC00080841E0040420F0020A1070090D00300F8 +:105AD00080B485B000AF7860094B1B68FB60FB6841 +:105AE00023F4E063FB607B681B02FA681343FB60EE +:105AF000034AFB68136000BF1437BD4680BC704783 +:105B000000200D4080B485B000AF1F4B1B68BB6008 +:105B1000BB681B0A03F007037B600023FB607B6804 +:105B2000072B2BD801A252F823F000BF4D5B2000B9 +:105B3000535B2000595B20005F5B2000655B200009 +:105B40006B5B2000715B2000775B20000F4BFB60DC +:105B500014E00F4BFB6011E00E4BFB600EE00E4BB0 +:105B6000FB600BE00D4BFB6008E00D4BFB6005E0BC +:105B70000C4BFB6002E00C4BFB6000BFFB6818465F +:105B80001437BD4680BC704704200D400048E80132 +:105B90000024F40000127A0000093D0080841E00F9 +:105BA00040420F0020A1070090D0030001387FF48D +:105BB000FDAF704700BF80B400AF024B08221A60EF +:105BC000FEE700BF74200D4080B500AF00F07EFD01 +:105BD00000BF80BD80B582B000AF334B1B687B60D7 +:105BE0007B6803F00703002B0CBF01230023FB702D +:105BF0007B6803F4E063002B0CBF01230023BB7020 +:105C0000FB78002B02D1BB78002B18D0274B1B68E8 +:105C10007B60FB78002B01D0012300E000237A6831 +:105C200013437B60BB78002B02D04FF4807300E0FD +:105C300000237A6813437B601C4A7B6813601C4B0B +:105C40001B681B4A43F00403136000F03FFD184B30 +:105C50001B68174A23F004031360FB78002B02D162 +:105C6000BB78002B1BD0114B1B687B60FB78002B93 +:105C700002D06FF0070301E04FF0FF337A68134062 +:105C80007B60BB78002B02D06FF4E06301E04FF043 +:105C9000FF337A6813407B60044A7B68136000BF5F +:105CA0000837BD4680BD00BF04200D4000200D40D8 +:105CB00010ED00E080B485B000AF78607B681B0A0F +:105CC00003F00F03042B0BD07B681B0A03F00F03B8 +:105CD000042B05D07B681B0A03F00F03052B03D1AF +:105CE000104B1B68FB6002E00F4B1B68FB607B687E +:105CF0001B0A03F00F030D4A52F823207B6803F0C0 +:105D00000F0302FA03F3BB60FA68BB681340002B71 +:105D100001D0012300E0002318461437BD4680BCA3 +:105D2000704700BF1C300D4018300D40B47020008B +:105D300080B485B000AF78607B681B0A03F00F0366 +:105D40001D4A52F823301B687A6802F00F020121C5 +:105D500001FA02F210467A68120A02F00F0216499E +:105D600051F82220034313600023FB6002E0FB682C +:105D70000133FB60FB680F2BF9D97B681B0A03F02A +:105D80000F030D4A52F823301B687A6802F00F02A5 +:105D9000012101FA02F2D24310467A68120A02F097 +:105DA0000F02054951F822200340136000BF143749 +:105DB000BD4680BC704700BFA070200080B483B097 +:105DC00000AF78607B681B0A03F00F030C4A52F89F +:105DD00023301B687A6802F00F02012101FA02F2F7 +:105DE00010467A68120A02F00F02054951F8222083 +:105DF0000343136000BF0C37BD4680BC704700BF33 +:105E00005870200080B483B000AF78607B681B0AB4 +:105E100003F00F030C4A52F823301B687A6802F033 +:105E20000F02012101FA02F2D24310467A68120AE7 +:105E300002F00F02044951F822200340136000BF12 +:105E40000C37BD4680BC70475870200080B483B0CA +:105E500000AF78607B681B0A03F00F030C4A52F80E +:105E600023301B687A6802F00F02012101FA02F266 +:105E700010467A68120A02F00F02054951F82220F2 +:105E80000343136000BF0C37BD4680BC704700BFA2 +:105E90007070200080B483B000AF78607B681B0A0C +:105EA00003F00F030C4A52F823301B687A6802F0A3 +:105EB0000F02012101FA02F2D24310467A68120A57 +:105EC00002F00F02044951F822200340136000BF82 +:105ED0000C37BD4680BC70477070200080B483B022 +:105EE00000AF78607B681B0A03F00F030C4A52F87E +:105EF00023301B687A6802F00F02012101FA02F2D6 +:105F000010467A68120A02F00F02054951F8222061 +:105F10000343136000BF0C37BD4680BC704700BF11 +:105F20008870200080B483B000AF78607B681B0A63 +:105F300003F00F030C4A52F823301B687A6802F012 +:105F40000F02012101FA02F2D24310467A68120AC6 +:105F500002F00F02044951F822200340136000BFF1 +:105F60000C37BD4680BC70478870200080B483B079 +:105F700000AF7860034A7B68136000BF0C37BD46F2 +:105F800080BC704758200D4080B483B000AF064BF2 +:105F90001B687B607B6803F003037B607B681846AB +:105FA0000C37BD4680BC704758200D4080B483B08C +:105FB00000AF074B1B687B607B6843F001037B608D +:105FC000034A7B68136000BF0C37BD4680BC704736 +:105FD00080200D4080B483B000AF786039607B686A +:105FE0002C331B6823F086027B682C3319463B68F0 +:105FF00013430B6000BF0C37BD4680BC704780B4B4 +:1060000083B000AF78607B682C331B6803F0860395 +:1060100018460C37BD4680BC704780B485B000AFD1 +:10602000F860B9607A60FB6834331946BA687B68F7 +:1060300013430B6000BF1437BD4680BC704780B46B +:1060400087B000AFF860B9607A60FB6834331B68D2 +:106050007B617B6903F00702BB681A607B6903F010 +:1060600038027B681A6000BF1C37BD4680BC704791 +:1060700080B586B000AFF860B9607A603B60F868C0 +:1060800000F088F87B681B01BA689A420BD2FB6863 +:1060900030331B68FA68303243F0200313607B68AA +:1060A0005B087B6007E0FB6830331B68FA683032BE +:1060B00023F020031360BB68DA007B68B2FBF3F3C4 +:1060C00001335B087B61FB6824331A467B699B09BB +:1060D0001360FB6828331A467B6903F03F031360A3 +:1060E000FB682C331A463B681360FB6818331A466A +:1060F0000023136000BF1837BD4680BD80B487B051 +:1061000000AFF860B9607A603B60FB6824331B68BD +:106110007B61FB6828331B683B61BB689A007B6925 +:1061200099013B690B44B2FBF3F27B681A60FB6890 +:1061300030331B6803F02003002B04D07B681B68FE +:106140005A007B681A60FB682C331B6803F0EE0270 +:106150003B681A6000BF1C37BD4680BC704780B4E6 +:1061600083B000AF78607B682C331B687A682C3270 +:1061700043F0100313607B6830331B687A68303259 +:1061800043F4407343F00103136000BF0C37BD4676 +:1061900080BC704780B483B000AF786000BF7B687C +:1061A00018331B6803F00803002BF8D17B682C33ED +:1061B0001B687A682C3223F0100313607B6830333D +:1061C0001B687A68303223F4407323F001031360B4 +:1061D00000BF0C37BD4680BC704780B483B000AFB1 +:1061E00078607B682C331B687A682C3243F010038C +:1061F000136000BF0C37BD4680BC704780B483B0CD +:1062000000AF78607B682C331B687A682C3223F0EF +:106210001003136000BF0C37BD4680BC704780B4CC +:1062200083B000AF78600B46FB70FB78002B08D082 +:106230007B6830331B687A68303243F006031360A2 +:1062400007E07B6830331B687A68303243F0020322 +:10625000136000BF0C37BD4680BC704780B483B06C +:1062600000AF78607B6830331B687A68303223F087 +:106270000603136000BF0C37BD4680BC704780B476 +:1062800083B000AF786039607B6830331B6823F0DF +:1062900010027B68303319463B6813430B6000BF24 +:1062A0000C37BD4680BC704780B483B000AF7860C7 +:1062B0007B6830331B6803F0100318460C37BD466B +:1062C00080BC704780B483B000AF78607B681833BF +:1062D0001B6803F01003002B0CBF01230023DBB26B +:1062E00018460C37BD4680BC704780B483B000AF01 +:1062F00078607B6818331B6803F02003002B0CBF09 +:1063000001230023DBB218460C37BD4680BC704722 +:1063100080B483B000AF78607B6818331B6803F0EB +:106320001003002B02D17B681B6801E04FF0FF33A4 +:1063300018460C37BD4680BC704780B483B000AFB0 +:10634000786000BF7B6818331B6803F01003002BD4 +:10635000F8D17B681B6818460C37BD4680BC704777 +:1063600080B483B000AF78600B46FB707B68183355 +:106370001B6803F02003002B04D17B68FA781A60B5 +:10638000012300E0002318460C37BD4680BC70474F +:1063900080B483B000AF78600B46FB7000BF7B68B1 +:1063A00018331B6803F02003002BF8D17B68FA78C0 +:1063B0001A6000BF0C37BD4680BC704780B483B004 +:1063C00000AF78600B46FB70FB78002B05D07B6834 +:1063D0002C331B6843F0010304E07B682C331B68FB +:1063E00023F001037A682C32136000BF0C37BD46DE +:1063F00080BC704780B483B000AF78607B6818338E +:106400001B6803F00803002B14BF01230023DBB239 +:1064100018460C37BD4680BC704780B584B000AFCD +:10642000786039607B68094A934201D1152300E006 +:106430001623FB603968F868FEF7F7FCF868FEF78A +:10644000BFFD00BF1037BD4680BD00BF00C000408B +:1064500080B584B000AF78607B68084A934201D170 +:10646000152300E01623FB60F868FEF7F3FDF868DB +:10647000FEF70CFD00BF1037BD4680BD00C00040D8 +:1064800080B483B000AF786039607B6838331A68B5 +:106490007B68383319463B6813430B6000BF0C37E9 +:1064A000BD4680BC704780B483B000AF786039606F +:1064B0007B6838331A683B68DB43796838311340AE +:1064C0000B6000BF0C37BD4680BC704780B483B002 +:1064D00000AF78600B46FB70FB78002B03D07B6825 +:1064E00040331B6802E07B683C331B6818460C375E +:1064F000BD4680BC704780B483B000AF786039601F +:106500007B6844331A463B68136000BF0C37BD46B6 +:1065100080BC704780B483B000AF786039607B681E +:1065200048331A687B68483319463B6813430B604D +:1065300000BF0C37BD4680BC704780B483B000AF4D +:10654000786039607B6848331A683B68DB43796858 +:10655000483113400B6000BF0C37BD4680BC70470C +:1065600080B483B000AF78607B6804331B6803F0AD +:106570000F0318460C37BD4680BC704780B483B00B +:1065800000AF78607B6804331A460023136000BFB5 +:106590000C37BD4680BC704780B483B000AF7860D4 +:1065A00039607B6803F6C8731A463B68136000BF06 +:1065B0000C37BD4680BC704780B483B000AF7860B4 +:1065C0007B6803F6C8731B6818460C37BD4680BC51 +:1065D000704780B483B000AF78607B68A4331B68D9 +:1065E0007A68A43243F40043136000BF0C37BD4601 +:1065F00080BC704780B483B000AF78607B68A43300 +:106600001B687A68A43223F40043136000BF0C3780 +:10661000BD4680BC704780B483B000AF78600B4645 +:10662000FB701346BB707B68A4331A46FB7813607B +:106630007B68A8331A46BB78136000BF0C37BD4691 +:1066400080BC704780B485B000AF78600B46FB70AB +:1066500000BF7B6818331B6803F08803802BF8D1D8 +:106660007B682C331B68FB60FB6823F086037A6829 +:106670002C3243F0820313607B68FA781A6000BF03 +:106680007B6818331B6803F08803802BF8D17B6884 +:106690002C331A46FB68136000BF1437BD4680BC1C +:1066A000704700BFEFF3108072B670471C46234658 +:1066B0001846EFF3108070471C4623461846EFF348 +:1066C000108062B670471C462346184630BF70479C +:1066D00000BF20BF704700BF40BF704700BF80F3BE +:1066E0001188704700BFEFF3118070471C462346A6 +:1066F00018460000032A70B414D940EA0105AD071A +:1067000004460B4622D11D6826681946AE42204633 +:1067100003F1040304F1040418D1043A032A2046C7 +:106720001946F0D8541E72B102780B789A4208BF0D +:10673000641806D00CE010F8012F11F8013F9A42BE +:1067400006D1A142F7D1002070BC7047541EEBE780 +:10675000D01A70BC704700BFF0B4860743D0541EF7 +:10676000002A3ED0CAB2034602E014F1FF3438D307 +:1067700003F8012B9D07F8D1032C2BD9CDB245EAA4 +:1067800005250F2C45EA054516D9A4F110073F0948 +:1067900003F1200606EB071603F1100242E9045547 +:1067A00042E902551032B242F8D104F00F04013729 +:1067B000032C03EB07130DD91E462246043A032A85 +:1067C00046F8045BFAD8221F22F003020432134475 +:1067D00004F003042CB1C9B21C4403F8011B9C4211 +:1067E000FBD1F0BC704714460346C5E7683D7563AE +:1067F000620000006F70656E6D6F74652D622D32E2 +:106800003467687A000000004343323533380000B3 +:1068100043433235333820536F4300004F70656E69 +:1068200057534E20000000000000891112239B32B4 +:106830002446AD573665BF74488CC19D5AAFD3BE50 +:106840006CCAE5DB7EE9F7F88110080193331A2260 +:10685000A5562C47B7753E64C99C408DDBBF52AE30 +:10686000EDDA64CBFFF976E802218B301002991340 +:106870002667AF763444BD554AADC3BC588ED19F10 +:106880006EEBE7FA7CC8F5D983310A209112180320 +:10689000A7772E66B5543C45CBBD42ACD99E508FF0 +:1068A000EFFB66EAFDD874C904428D5316619F70F0 +:1068B0002004A9153227BB364CCEC5DF5EEDD7FCD0 +:1068C0006888E1997AABF3BA85520C4397711E60E0 +:1068D000A1142805B3373A26CDDE44CFDFFD56ECB0 +:1068E000E9986089FBBB72AA06638F7214409D51C0 +:1068F0002225AB343006B9174EEFC7FE5CCCD5DD90 +:106900006AA9E3B8788AF19B87730E6295501C419F +:10691000A3352A24B1163807CFFF46EEDDDC54CD6F +:10692000EBB962A8F99A708B088481951AA793B67F +:106930002CC2A5D33EE1B7F04008C919522BDB3A6F +:10694000644EED5F766DFF7C899400859BB712A63F +:10695000ADD224C3BFF136E0C1184809D33B5A2A4F +:10696000E55E6C4FF77D7E6C0AA583B4188691971F +:106970002EE3A7F23CC0B5D14229CB38500AD91B2F +:10698000666FEF7E744CFD5D8BB502A499961087FF +:10699000AFF326E2BDD034C1C3394A28D11A580B0F +:1069A000E77F6E6EF55C7C4D0CC685D71EE597F4CF +:1069B0002880A1913AA3B3B2444ACD5B5669DF78EF +:1069C000600CE91D722FFB3E8DD604C79FF516E4BF +:1069D000A9902081BBB332A2C55A4C4BD7795E68CF +:1069E000E11C680DF33F7A2E0EE787F61CC495D59F +:1069F0002AA1A3B03882B193466BCF7A5448DD59AF +:106A0000622DEB3C700EF91F8FF706E69DD414C57E +:106A1000ABB122A0B9923083C77B4E6AD5585C498E +:106A2000E33D6A2CF11E780F683D7563620000003B +:106A30006F70656E6D6F74652D622D323467687A84 +:106A40000000000043433235333800004343323501 +:106A5000333820536F4300004F70656E57534E20FC +:106A600000000000683D7563620000006F70656E95 +:106A70006D6F74652D622D323467687A00000000F6 +:106A800043433235333800004343323533382053E3 +:106A90006F4300004F70656E57534E20000000009A +:106AA0000000891112239B322446AD573665BF740E +:106AB000488CC19D5AAFD3BE6CCAE5DB7EE9F7F8BE +:106AC0008110080193331A22A5562C47B7753E64EE +:106AD000C99C408DDBBF52AEEDDA64CBFFF976E89E +:106AE00002218B30100299132667AF763444BD55CE +:106AF0004AADC3BC588ED19F6EEBE7FA7CC8F5D97E +:106B000083310A2091121803A7772E66B5543C45AD +:106B1000CBBD42ACD99E508FEFFB66EAFDD874C95D +:106B200004428D5316619F702004A9153227BB368D +:106B30004CCEC5DF5EEDD7FC6888E1997AABF3BA3D +:106B400085520C4397711E60A1142805B3373A266D +:106B5000CDDE44CFDFFD56ECE9986089FBBB72AA1D +:106B600006638F7214409D512225AB343006B9174D +:106B70004EEFC7FE5CCCD5DD6AA9E3B8788AF19BFD +:106B800087730E6295501C41A3352A24B11638072D +:106B9000CFFF46EEDDDC54CDEBB962A8F99A708BDD +:106BA000088481951AA793B62CC2A5D33EE1B7F00D +:106BB0004008C919522BDB3A644EED5F766DFF7CBD +:106BC000899400859BB712A6ADD224C3BFF136E0ED +:106BD000C1184809D33B5A2AE55E6C4FF77D7E6C9D +:106BE0000AA583B4188691972EE3A7F23CC0B5D1CD +:106BF0004229CB38500AD91B666FEF7E744CFD5D7D +:106C00008BB502A499961087AFF326E2BDD034C1AC +:106C1000C3394A28D11A580BE77F6E6EF55C7C4D5C +:106C20000CC685D71EE597F42880A1913AA3B3B28C +:106C3000444ACD5B5669DF78600CE91D722FFB3E3C +:106C40008DD604C79FF516E4A9902081BBB332A26C +:106C5000C55A4C4BD7795E68E11C680DF33F7A2E1C +:106C60000EE787F61CC495D52AA1A3B03882B1934C +:106C7000466BCF7A5448DD59622DEB3C700EF91FFC +:106C80008FF706E69DD414C5ABB122A0B99230832C +:106C9000C77B4E6AD5585C49E33D6A2CF11E780FDC +:106CA000683D7563620000006F70656E6D6F74659E +:106CB0002D622D323467687A00000000434332357C +:106CC0003338000043433235333820536F430000DC +:106CD0004F70656E57534E2000000000683D75638D +:106CE000620000006F70656E6D6F74652D622D32ED +:106CF0003467687A000000004343323533380000BF +:106D000043433235333820536F4300004F70656E74 +:106D100057534E2000000000683D7563620000007C +:106D20006F70656E6D6F74652D622D323467687A91 +:106D3000000000004343323533380000434332350E +:106D4000333820536F4300004F70656E57534E2009 +:106D500000000000683D7563620000006F70656EA2 +:106D60006D6F74652D622D323467687A0000000003 +:106D700043433235333800004343323533382053F0 +:106D80006F430000683D7563620000006F70656EC0 +:106D90006D6F74652D622D323467687A00000000D3 +:106DA00043433235333800004343323533382053C0 +:106DB0006F430000683D7563620000006F70656E90 +:106DC0006D6F74652D622D323467687A00000000A3 +:106DD0004343323533380000434332353338205390 +:106DE0006F430000683D7563620000006F70656E60 +:106DF0006D6F74652D622D323467687A0000000073 +:106E0000434332353338000043433235333820535F +:106E10006F430000683D7563620000006F70656E2F +:106E20006D6F74652D622D323467687A0000000042 +:106E3000434332353338000043433235333820532F +:106E40006F4300000007000000060000000500007E +:106E50000004000000030000000200000001000028 +:106E6000000000000000000018ED00E01CED00E054 +:106E700020ED00E000E400E004E400E008E400E0CD +:106E80000CE400E010E400E014E400E018E400E0AA +:106E90001CE400E020E400E024E400E028E400E05A +:106EA0002CE400E030E400E034E400E038E400E00A +:106EB0003CE400E040E400E044E400E048E400E0BA +:106EC0004CE400E050E400E054E400E058E400E06A +:106ED0005CE400E060E400E064E400E068E400E01A +:106EE0006CE400E070E400E074E400E078E400E0CA +:106EF0007CE400E080E400E084E400E088E400E07A +:106F00008CE400E090E400E000E100E004E100E057 +:106F100008E100E00CE100E010E100E080E100E0C9 +:106F200084E100E088E100E08CE100E090E100E035 +:106F300000E200E004E200E008E200E00CE200E031 +:106F400010E200E080E200E084E200E088E200E09D +:106F50008CE200E090E200E080400D4084400D4073 +:106F600088400D408C400D4090400D4094400D40B5 +:106F700098400D409C400D40A0400D40A4400D4065 +:106F8000A8400D40AC400D40B0400D40B4400D4015 +:106F9000B8400D40BC400D40C0400D40C4400D40C5 +:106FA000C8400D40CC400D40D0400D40D4400D4075 +:106FB000D8400D40DC400D40E0400D40E4400D4025 +:106FC000E8400D40EC400D40F0400D40F4400D40D5 +:106FD000F8400D40FC400D4000400D4004400D4085 +:106FE00008400D400C400D4010400D4014400D4035 +:106FF00018400D401C400D4020400D4024400D40E5 +:1070000028400D402C400D4030400D4034400D4094 +:1070100038400D403C400D4040400D4044400D4044 +:1070200048400D404C400D4050400D4054400D40F4 +:1070300058400D405C400D4060400D4064400D40A4 +:1070400068400D406C400D4070400D4074400D4054 +:1070500078400D407C400D4008200D4018200D4028 +:1070600028200D4038200D4048200D40A8200D401C +:107070000C200D401C200D402C200D403C200D40CC +:107080004C200D40AC200D4010200D4020200D4024 +:1070900030200D4040200D4050200D40B0200D40CC +:1070A00014200D4024200D4034200D4044200D407C +:1070B00054200D400100000000010000000001000C +:0C70C000000000010100000004000000BE +:1070CC0000000000000000000000000000000000B4 +:1070DC0000000000000000000000000000000000A4 +:1070EC000000000000000000000000000000000094 +:1070FC000000000000000000000000000000000084 +:10710C000000000000000000000000000000000073 +:10711C000000000000000000000000000000000063 +:10712C000000000000000000000000000000000053 +:10713C000000000000000000000000000000000043 +:10714C000000000000000000000000000000000033 +:10715C000000000000000000000000000000000023 +:10716C000000000000000000000000000000000013 +:10717C000000000000000000000000000000000003 +:10718C0000000000000000000000000000000000F3 +:10719C0000000000000000000000000000000000E3 +:1071AC0000000000000000000000000000000000D3 +:1071BC0000000000000000000000000000000000C3 +:1071CC0000000000000000000000000000000000B3 +:1071DC0000000000000000000000000000000000A3 +:1071EC000000000000000000000000000000000093 +:1071FC000000000000000000000000000000000083 +:10720C000000000000000000000000000000000072 +:10721C000000000000000000000000000000000062 +:10722C000000000000000000000000000000000052 +:10723C000000000000000000000000000000000042 +:10724C000000000000000000000000000000000032 +:10725C000000000000000000000000000000000022 +:10726C000000000000000000000000000000000012 +:10727C000000000000000000000000000000000002 +:10728C0000000000000000000000000000000000F2 +:10729C0000000000000000000000000000000000E2 +:1072AC0000000000000000000000000000000000D2 +:1072BC0000000000000000000000000000000000C2 +:1072CC0000000000000000000000000000000000B2 +:1072DC0000000000000000000000000000000000A2 +:1072EC000000000000000000000000000000000092 +:1072FC000000000000000000000000000000000082 +:10730C000000000000000000000000000000000071 +:10731C000000000000000000000000000000000061 +:10732C000000000000000000000000000000000051 +:10733C000000000000000000000000000000000041 +:0C734C0000000000000000000000000035 +:020000040027D3 +:0CFFD400FFFFFFF600000000000020000E +:0400000500202ED3D6 +:00000001FF diff --git a/mercator-opentestbed.yml b/mercator-opentestbed.yml new file mode 100644 index 0000000000..3129fa40bb --- /dev/null +++ b/mercator-opentestbed.yml @@ -0,0 +1,23 @@ +measurement: + num_transactions: 10 + channels: [11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26] + tx_power_dbm: 0 + tx_len: 100 + tx_interval_ms: 10 + tx_num_per_transaction: 100 + tx_fill_byte: 0x5a + +platform: + name: opentestbed + mqtt_broker: + # specify your MQTT broker and a token to use + host: mqtt-broker.example.com + port: 1883 + token: 123 + nodes: + # specify nodes in your testbed + - XX-XX-XX-XX-XX-XX + - XX-XX-XX-XX-XX-XX + firmware: + os: OpenWSN + path: firmwares/openwsn-openmote-b-24ghz.ihex diff --git a/mercator/platform/opentestbed.py b/mercator/platform/opentestbed.py new file mode 100644 index 0000000000..e32c272be7 --- /dev/null +++ b/mercator/platform/opentestbed.py @@ -0,0 +1,406 @@ +"""https://github.com/openwsn-berkeley/opentestbed +""" + +import base64 +import binascii +import json +import logging +import os +import queue +import threading +import time +import sys + +import paho.mqtt.client as mqtt + +import mercator.node +import mercator.platform +from mercator.utils import print_bold, MercatorHalo, OSName + +class Platform(mercator.platform.Platform): + GET_ALL_NODES_TIMEOUT_SECONDS = 2 + + def __init__(self, config, program_firmware): + self.config = config + + # initialize MQTT client + self.mqtt = self._init_mqtt_client(config['mqtt_broker'], + config['token']) + + self.nodes = self._init_nodes(config['nodes']) + + self.firmware_os_name = OSName(config['firmware']['os'].lower()) + if program_firmware: + self._program_firmware(config['firmware']) + + # make sure all the nodes have a firmware having the same name + # as specified in config, and they booted successfully. + self._check_firmware_status(config['firmware']) + + def setup_measurement(self, config): + self._setup_nodes(config) + return self.nodes + + def _init_mqtt_client(self, mqtt_broker_config, token): + spinner = MercatorHalo(text='Initializing MQTT client') + mqtt = MQTTClient(mqtt_broker_config, token) + spinner.stop_success() + return mqtt + + def _init_nodes(self, node_id_list): + spinner = MercatorHalo(text='Initializing Mercator nodes') + + # get all the available motes in the opentestbed + available_node_list = self._get_available_node_list() + + # confirm the nodes specified in config are listed in the + # list; and create a Node object + nodes = [] + unavailable_nodes = [] + otbox_set = set() + for node_id in node_id_list: + if node_id not in available_node_list: + unavailable_nodes.append(node_id) + else: + node_info = available_node_list[node_id] + mote = node_info['mote'] + otbox_id = node_info['otbox_id'] + + node = Node(self, node_id, otbox_id) + node.update_firmware_status((mote['firmware_description'], + mote['bootload_success'])) + otbox_set.add(otbox_id) + nodes.append(node) + + if unavailable_nodes: + spinner.stop_failure() + for node_id in unavailable_nodes: + print_bold('Node {0} is not available'.format(node_id)) + print('Check the testbed status') + exit(1) + + # reset the serial connections of each otbox, which can be + # done by "discovermotes" + for otbox_id in otbox_set: + self._reset_serial_connections(otbox_id) + + spinner.stop_success() + return nodes + + def _get_available_node_list(self): + # 'dicovery' cmd doesn't work for some reason. use 'status' + # instead + cmd_topic = 'opentestbed/deviceType/box/deviceId/all/cmd/status' + resp_topic = 'opentestbed/deviceType/box/deviceId/+/resp/status' + + node_list = {} # indexed by node_id (EUI64) + + self.mqtt.subscribe(resp_topic) + self.mqtt.send(cmd_topic) + while True: + payload = self.mqtt.recv(resp_topic, + self.GET_ALL_NODES_TIMEOUT_SECONDS) + if payload: + try: + node_list.update( + { + mote['EUI64']: { + 'mote': mote, + 'otbox_id': payload['returnVal']['host_name']} + for mote in payload['returnVal']['motes']}) + except KeyError as err: + assert 'EUI64' in str(err) + # this otbox doesn't return any mote info; ignore this + continue + else: + break + self.mqtt.unsubscribe(resp_topic) + return node_list + + def _reset_serial_connections(self, otbox_id): + topic_prefix = ('opentestbed/deviceType/box/deviceId/' + + '{0}'.format(otbox_id)) + cmd_topic = topic_prefix + '/cmd/status' + resp_topic = topic_prefix + '/resp/status' + + self.mqtt.subscribe(resp_topic) + self.mqtt.send(cmd_topic) + payload = self.mqtt.recv(resp_topic) + self.mqtt.unsubscribe(resp_topic) + assert payload['success'] + + def _program_firmware(self, firmware_config): + spinner = MercatorHalo(text='Programming the firmware') + + firmware_path = firmware_config['path'] + assert os.path.exists(firmware_path) + if firmware_config['os'].lower() == OSName.OpenWSN: + assert os.path.basename(firmware_path).endswith('.ihex') + + firmware_image = b'' + with open(firmware_path, 'rb') as f: + while True: + chunk = f.read() + if chunk: + # encode chunk into Base64 + firmware_image += base64.encodebytes(chunk) + else: + break + + # json.dumps() doesn't accept bytes object; needs to convert + # to string + firmware_hex_string = firmware_image.decode('utf-8') # string + # remove all new line characters, which are inserted by + # base64.decode(), because opentestbed doesn't accept a + # firmware hex string having them + firmware_hex_string = firmware_hex_string.replace('\n', '') + firmware_name = os.path.basename(firmware_path) + threads = [] + for node in self.nodes: + thread = threading.Thread(target=node.program_firmware, + args=(firmware_name, + firmware_hex_string)) + thread.start() + threads.append(thread) + + # wait until all the thread terminate + for thread in threads: + thread.join() + + if [node for node in self.nodes if not node.boot_success]: + spinner.stop_failure() + print_bold('Programming the firmware failed; check logs') + exit(1) + spinner.stop_success() + + def _check_firmware_status(self, firmware_config): + spinner = MercatorHalo(text='Checking firmwares of the nodes') + firmware_name = os.path.basename(firmware_config['path']) + + exit_on_failure = False + for node in self.nodes: + if node.firmware_status[0] != firmware_name: + spinner.stop_failure() + print_bold( + 'Node {0} doesn\'t have the right firmware'.format(node.id)) + print_bold( + 'Its firmware is "{0}"'.format(node.firmware_status[0] + if node.firmware_status[0] + else 'unknown')) + exit_on_failure = True + elif not node.firmware_status[1]: # bootload_success + spinner.stop_failure() + print_bold( + 'Node {0} failed to boot'.format(node.id)) + exit_on_failure = True + + if exit_on_failure: + print('Try again with "-p" option to program the firmware') + exit(1) + + spinner.stop_success() + + def _setup_nodes(self, config): + spinner = MercatorHalo(text='Setting up nodes') + threads = [] + for node in self.nodes: + thread = threading.Thread(target=node.setup, args=(config,)) + thread.start() + threads.append(thread) + for thread in threads: + thread.join() + spinner.stop_success() + +class Node(mercator.node.Node): + MQTT_TOPIC_BASE='opentestbed/deviceType/mote/deviceId/' + PROGRAM_TIMEOUT_SECONDS = 30 + PROGRAM_MAX_RETRY_COUNT = 2 + PROGRAM_WAIT_SECONDS = 15 + + def __init__(self, platform, mac_addr, otbox_id): + super(Node, self).__init__(platform) + + self.platform = platform + self.id = mac_addr # use mac_addr as id + self.otbox_id = otbox_id + self.mqtt_topic_prefix = self.MQTT_TOPIC_BASE + '{0}/'.format(self.id) + self.firmware_status = (None, None) + self.boot_success = None # this is used in program_firmware() + + _prefix = 'opentestbed/deviceType/mote/deviceId/{0}'.format(self.id) + self.topic_recv_msg = (_prefix + + '/notif/frommoteserialbytes') + self.topic_send_msg = (_prefix + + '/cmd/tomoteserialbytes') + self.topic_send_msg_resp = (_prefix + + '/resp/tomoteserialbytes') + + def program_firmware(self, firmware_name, firmware_hex_image): + retry_count = 0 + self.boot_success = False + while retry_count <= self.PROGRAM_MAX_RETRY_COUNT: + logging.info('Start programming "{0}" to {1}'.format(firmware_name, + self.id)) + payload = self._send_mqtt_cmd('program', + {'description': firmware_name, + 'hex': firmware_hex_image}, + self.PROGRAM_TIMEOUT_SECONDS) + + if payload and ('returnVal' in payload): + self.update_firmware_status((firmware_name, + payload['returnVal'])) + self.boot_success = True + break + else: + logging.error('Failed to program ' + + '"{0}" to {1} '.format(firmware_name, self.id)) + print(payload, file=sys.stderr) + time.sleep(self.PROGRAM_WAIT_SECONDS) + logging.error('Retry to program ' + + '"{0}" to {1} '.format(firmware_name, self.id) + + 'in {0} '.format(self.PROGRAM_WAIT_SECONDS) + + 'seconds') + retry_count += 1 + + if self.boot_success: + logging.info('Succeed to program ' + + '"{0}" to {1}'.format(firmware_name, self.id)) + else: + logging.critical('Failed to program ' + + '"{0}" to {1}'.format(firmware_name, self.id)) + # the main program will terminate later + + def update_firmware_status(self, status): + self.firmware_status = status + + def _setup(self): + # subscribe the topic to receive serial bytes from the node + self.platform.mqtt.subscribe(self.topic_recv_msg) + self.platform.mqtt.subscribe(self.topic_send_msg_resp) + + def _send_mqtt_cmd(self, cmd, payload={}, timeout=None): + cmd_topic = self.mqtt_topic_prefix + 'cmd/{0}'.format(cmd) + resp_topic = self.mqtt_topic_prefix + 'resp/{0}'.format(cmd) + + self.platform.mqtt.subscribe(resp_topic) + self.platform.mqtt.send(cmd_topic, payload) + payload = self.platform.mqtt.recv(resp_topic, timeout) + self.platform.mqtt.unsubscribe(resp_topic) + return payload + + def _platform_send(self, msg): + # clear recv_queue for topic_send_msg_resp, which may have a + # delayed response for the previous command + self.platform.mqtt.clear_msg_queue(self.topic_send_msg_resp) + self.platform.mqtt.send(self.topic_send_msg, + {'serialbytes': [b for b in msg]}) + payload = self.platform.mqtt.recv(self.topic_send_msg_resp) + if payload: + assert payload['success'] is True + else: + err_str = ('No ACK from ' + + '{0}/resp/tomoteserialbytes'.format(self.id)) + logging.error(err_str) + logging.error('{0} may be busy'.format(self.otbox_id)) + + def _platform_recv(self): + payload = self.platform.mqtt.recv(self.topic_recv_msg) + if payload and ('serialbytes' in payload): + data = bytes(payload['serialbytes']) + else: + data = b'' + return data + +class MQTTClient(object): + MQTT_CLIENT_ID = 'mercator' + DEFAULT_RECV_TIMEOUT_SECONDS = 5 + + def __init__(self, mqtt_broker_config, token): + self.token = token + + self._topics_of_interest = [] + # they are indexed by topic + self._msg_queues = {} + + def _on_message(client, userdata, msg): + matched_topics = [topic + for topic in self._topics_of_interest + if mqtt.topic_matches_sub(topic, msg.topic)] + assert len(matched_topics) == 1 + topic = matched_topics[0] + assert topic in self._msg_queues + assert msg.payload + self._msg_queues[topic].put(msg.payload) + + self._client = mqtt.Client(client_id=self.MQTT_CLIENT_ID) + self._client.connect(host=mqtt_broker_config['host'], + port=mqtt_broker_config['port']) + self._client.on_message = _on_message + self._client.enable_logger() + self._client.loop_start() + + def send(self, topic, payload={}): + # subscribe first to receive results + if 'token' not in payload: + # create a new dict having token + payload = dict(token=self.token, **payload) + payload_str = json.dumps(payload) + ret = self._client.publish(topic, payload_str) + logging.debug('Publish MQTT message to {0} '.format(topic) + + '{0}'.format(payload_str)) + assert ret.rc == mqtt.MQTT_ERR_SUCCESS + + def recv(self, topic, timeout=None): + assert topic in self._topics_of_interest + assert topic in self._msg_queues + + if not timeout: + timeout = self.DEFAULT_RECV_TIMEOUT_SECONDS + + logging.debug('Wait on {0}'.format(topic)) + try: + ret_msg = self._msg_queues[topic].get(timeout=timeout) + logging.debug('Recv MQTT Payload on {0}: '.format(topic) + + '{0}'.format(ret_msg)) + ret_msg = json.loads(ret_msg) # convert to dict + except queue.Empty: + # timeout + logging.debug('Recv MQTT timeout on {0}'.format(topic)) + ret_msg = {} # return an empty dict + + return ret_msg + + def clear_msg_queue(self, topic): + while True: + try: + self._msg_queues[topic].get_nowait() + except queue.Empty: + # msg_queue is empty now + break + + def subscribe(self, topic): + assert topic not in self._topics_of_interest + assert topic not in self._msg_queues + # initialize internal variables for the topic + self._topics_of_interest.append(topic) + self._msg_queues[topic] = queue.SimpleQueue() + self._client.subscribe(topic) + logging.debug('Subscribe to {0}'.format(topic)) + + def unsubscribe(self, topic): + # initialize internal variables + self._client.unsubscribe(topic) + + # a waiting thread will end with timeout + assert topic in self._msg_queues + del self._msg_queues[topic] + + self._topics_of_interest.remove(topic) + logging.debug('Unsubscribe from {0}'.format(topic)) + + def extract_device_id(self, topic): + # topic looks like: + # opentestbed/deviceType/box/deviceId/otbox17/cmd/status + components = topic.split('/') + assert len(components) == 7 + return components[4] From 7b4b31dedd8df146a789c0181983784de3e7ba17 Mon Sep 17 00:00:00 2001 From: Yasuyuki Tanaka Date: Mon, 20 May 2019 13:02:09 +0200 Subject: [PATCH 17/50] Add -C option to print a sample YAML file --- mercator/__main__.py | 37 +++++++++++++++++++++----------- mercator/platform/__init__.py | 25 +++++++++++++++++++++ mercator/platform/iotlab.py | 16 ++++++++++++++ mercator/platform/opentestbed.py | 18 ++++++++++++++++ 4 files changed, 83 insertions(+), 13 deletions(-) diff --git a/mercator/__main__.py b/mercator/__main__.py index 8d1803d402..65a533352f 100644 --- a/mercator/__main__.py +++ b/mercator/__main__.py @@ -34,8 +34,12 @@ def _init_logger(): def _parse_args(): parser = argparse.ArgumentParser() + parser.add_argument('-C', dest='dump_sample_yml_file', + help='print sample YAML file for a specified platform', + choices=['iotlab', 'opentestbed'], + type=str) parser.add_argument('-c', dest='config', help='path to config YAML file', - type=str, required=True) + type=str, default='./mercator.yml') parser.add_argument('-i', dest='exp_id', help='attach to exp_id (only for iotlab)', type=int) @@ -180,18 +184,25 @@ def main(): _init_logger() args = _parse_args() - config = _read_config(args.config) - outfile = Outfile(args.out_file_path, config, args.overwrite_out_file) - - logging.info('Start Mercator at ' - + '"{0}" platform'.format(config['platform']['name'])) - - platform = _setup_platform(config['platform'], args) - nodes = platform.setup_measurement(config['measurement']) - - channels = config['measurement']['channels'] - num_transactions = config['measurement']['num_transactions_num'] - _run_transactions(num_transactions, channels, nodes, outfile) + if args.dump_sample_yml_file: + module_name = 'mercator.platform.{0}'.format(args.dump_sample_yml_file) + platform_module = import_module(module_name) + platform_module.Platform.dump_sample_yml_file() + elif args.config: + config = _read_config(args.config) + outfile = Outfile(args.out_file_path, config, args.overwrite_out_file) + + logging.info('Start Mercator at ' + + '"{0}" platform'.format(config['platform']['name'])) + + platform = _setup_platform(config['platform'], args) + nodes = platform.setup_measurement(config['measurement']) + + channels = config['measurement']['channels'] + num_transactions = config['measurement']['num_transactions'] + _run_transactions(num_transactions, channels, nodes, outfile) + else: + raise ValueError('Shouldn\'t come here') if __name__ == '__main__': main() diff --git a/mercator/platform/__init__.py b/mercator/platform/__init__.py index 4b3e31534c..daa1099593 100644 --- a/mercator/platform/__init__.py +++ b/mercator/platform/__init__.py @@ -1,6 +1,31 @@ +import yaml + class Platform(object): def __init__(self, config, *args): raise NotImplementedError() def setup_measurement(self, config): raise NotImplementedError() + + @classmethod + def dump_sample_yml_file(cls): + cls._dump_config_measurement() + cls._dump_config_platform() + + @staticmethod + def _dump_config_measurement(): + config = {} + config['num_transactions'] = 10 + config['channels'] = [11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26] + config['tx_power_dbm'] = 0 + config['tx_len'] = 100 + config['tx_interval_ms'] = 10 + config['tx_num_per_transaction'] = 100 + config['tx_fill_byte'] = 0x5a + + print(yaml.dump({'measurement': config}, default_flow_style=False)) + + @staticmethod + def _dump_config_platform(): + raise NotImplementedError diff --git a/mercator/platform/iotlab.py b/mercator/platform/iotlab.py index 364c76853c..3274376c2b 100644 --- a/mercator/platform/iotlab.py +++ b/mercator/platform/iotlab.py @@ -19,6 +19,7 @@ import iotlabcli.parser.auth import iotlabclient.client import websocket +import yaml from mercator.hdlc import HDLC_FLAG import mercator.node @@ -90,6 +91,21 @@ def setup_measurement(self, config): return self.nodes + @staticmethod + def _dump_config_platform(): + config = {} + config['name'] = 'iotlab' + config['duration_min'] = 60 + config['nodes'] = ['m3-x.site.iot-lab.info', + 'm3-y.site.iot-lab.info', + 'm3-z.site.iot-lab.info'] + config['firmware'] = {} + config['firmware']['os'] = 'OpenWSN' + config['firmware']['archi'] = 'M3' + config['firmware']['path'] = 'firmwares/openwsn-iot-lab_M3.elf' + + print(yaml.dump({'platform': config}, default_flow_style=False)) + @staticmethod def _get_credentials(): if not os.path.exists(iotlabcli.auth.RC_FILE): diff --git a/mercator/platform/opentestbed.py b/mercator/platform/opentestbed.py index e32c272be7..f713266c5a 100644 --- a/mercator/platform/opentestbed.py +++ b/mercator/platform/opentestbed.py @@ -12,6 +12,7 @@ import sys import paho.mqtt.client as mqtt +import yaml import mercator.node import mercator.platform @@ -41,6 +42,23 @@ def setup_measurement(self, config): self._setup_nodes(config) return self.nodes + @staticmethod + def _dump_config_platform(): + config = {} + config['name'] = 'opentestbed' + config['mqtt_broker'] = {} + config['mqtt_broker']['host'] = 'mqtt-broker.example.com' + config['mqtt_broker']['port'] = 1883 + config['token'] = 123 + config['nodes'] = ['xx-xx-xx-xx-xx-xx-xx-xx', + 'yy-yy-yy-yy-yy-yy-yy-yy', + 'zz-zz-zz-zz-zz-zz-zz-zz'] + config['firmware'] = {} + config['firmware']['os'] = 'OpenWSN' + config['firmware']['path'] = 'firmwares/openwsn-openmote-b-24ghz.ihex' + + print(yaml.dump({'platform': config}, default_flow_style=False)) + def _init_mqtt_client(self, mqtt_broker_config, token): spinner = MercatorHalo(text='Initializing MQTT client') mqtt = MQTTClient(mqtt_broker_config, token) From 2283f9dd52ec56bf81af99e49d76065ec97d8057 Mon Sep 17 00:00:00 2001 From: Yasuyuki Tanaka Date: Mon, 20 May 2019 13:56:01 +0200 Subject: [PATCH 18/50] Add -q (quiet) option --- mercator/__main__.py | 27 +++++++++++++++++++++------ mercator/utils.py | 10 ++++++++-- 2 files changed, 29 insertions(+), 8 deletions(-) diff --git a/mercator/__main__.py b/mercator/__main__.py index 65a533352f..c44d85382f 100644 --- a/mercator/__main__.py +++ b/mercator/__main__.py @@ -3,6 +3,7 @@ from importlib import import_module import logging import logging.config +import math import os import sys import threading @@ -13,7 +14,7 @@ from mercator.node import NodeStatus -from mercator.utils import Outfile, print_bold +from mercator.utils import MercatorHalo, Outfile, print_bold def _init_logger(): config_file_path = os.path.join(os.path.dirname(__file__), '..', @@ -52,6 +53,8 @@ def _parse_args(): parser.add_argument('-f', dest='overwrite_out_file', help='overwrite an existing file', default=False, action='store_true') + parser.add_argument('-q', dest='quiet', + help='suppress console outputs', action='store_true') return parser.parse_args() def _read_config(config_file_path): @@ -80,13 +83,14 @@ def _setup_platform(platform_config, args): return platform_module.Platform(platform_config, **platform_args) -def _run_transactions(num_transactions, channels, nodes, outfile): +def _run_transactions(num_transactions, channels, nodes, outfile, quiet): num_nodes = len(nodes) total_exec_num = num_transactions * len(channels) * num_nodes outfile.open() - with tqdm.tqdm(total=total_exec_num, unit='meas') as pbar: - for trans_ctr in range(num_transactions): + with tqdm.tqdm(total=total_exec_num, unit='meas', disable=quiet) as pbar: + trans_ctr = 0 + while trans_ctr < num_transactions: for channel in channels: for node_idx, tx_node in enumerate(nodes): rx_nodes = [node for node in nodes if node != tx_node] @@ -113,7 +117,8 @@ def _run_transactions(num_transactions, channels, nodes, outfile): _end_of_measurement(pbar, trans_ctr, channel, node_idx, num_nodes) - outfile.flush() + outfile.flush() + trans_ctr += 1 outfile.close() def _beginning_of_measurement(pbar, trans_ctr, channel, node_idx, num_nodes): @@ -189,6 +194,11 @@ def main(): platform_module = import_module(module_name) platform_module.Platform.dump_sample_yml_file() elif args.config: + if args.quiet: + print_bold('-q ("quiet") is specified. ' + + 'See mercator.log for mercator\'s activities.') + MercatorHalo.disable() + config = _read_config(args.config) outfile = Outfile(args.out_file_path, config, args.overwrite_out_file) @@ -200,7 +210,12 @@ def main(): channels = config['measurement']['channels'] num_transactions = config['measurement']['num_transactions'] - _run_transactions(num_transactions, channels, nodes, outfile) + if num_transactions < 0: + # if we have a negative value, take it as an infinite + # value + num_transactions = math.inf + _run_transactions(num_transactions, channels, nodes, outfile, + args.quiet) else: raise ValueError('Shouldn\'t come here') diff --git a/mercator/utils.py b/mercator/utils.py index d598525cff..cb39acf3f8 100644 --- a/mercator/utils.py +++ b/mercator/utils.py @@ -44,14 +44,20 @@ def restore_xon_xoff(message): return ret class MercatorHalo(Halo): + enabled = True + def __init__(self, text='', color='cyan', text_color=None, spinner=None, - animation=None, placement='left', interval=-1, enabled=True, + animation=None, placement='left', interval=-1, stream=sys.stdout): super(MercatorHalo, self).__init__(text, color, text_color, spinner, animation, placement, interval, - enabled, stream) + self.enabled, stream) self.start() + @classmethod + def disable(cls): + cls.enabled = False + def stop_success(self, text=None): self.succeed(text) self.stop() From 1fee4d8e46b467f034836b0c9ec09594e6f96464 Mon Sep 17 00:00:00 2001 From: Yasuyuki Tanaka Date: Mon, 20 May 2019 16:49:25 +0200 Subject: [PATCH 19/50] Record 'start_time' and 'end_time' of a set of Mercator measurements --- mercator/__main__.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/mercator/__main__.py b/mercator/__main__.py index c44d85382f..56e26fc436 100644 --- a/mercator/__main__.py +++ b/mercator/__main__.py @@ -88,6 +88,8 @@ def _run_transactions(num_transactions, channels, nodes, outfile, quiet): total_exec_num = num_transactions * len(channels) * num_nodes outfile.open() + outfile.write_data('start_time', + {'timestamp': datetime.datetime.now().isoformat()}) with tqdm.tqdm(total=total_exec_num, unit='meas', disable=quiet) as pbar: trans_ctr = 0 while trans_ctr < num_transactions: @@ -99,7 +101,7 @@ def _run_transactions(num_transactions, channels, nodes, outfile, quiet): trans_ctr, channel, node_idx, num_nodes) - start_time = datetime.datetime.now() + start_time_of_measurement = datetime.datetime.now() _make_sure_every_node_is_idle(nodes) @@ -112,13 +114,15 @@ def _run_transactions(num_transactions, channels, nodes, outfile, quiet): _make_rx_nodes_stop_listening(rx_nodes) _save_data(outfile, tx_node, rx_nodes, - start_time, trans_ctr, channel) + start_time_of_measurement, trans_ctr, channel) _end_of_measurement(pbar, trans_ctr, channel, node_idx, num_nodes) outfile.flush() trans_ctr += 1 + outfile.write_data('end_time', + {'timestamp': datetime.datetime.now().isoformat()}) outfile.close() def _beginning_of_measurement(pbar, trans_ctr, channel, node_idx, num_nodes): From 3fe93107c8969430a190fefd57f6fb99f32d6fe6 Mon Sep 17 00:00:00 2001 From: Yasuyuki Tanaka Date: Tue, 21 May 2019 16:47:20 +0200 Subject: [PATCH 20/50] mercator: print an error message when mercator.yml is not found --- mercator/__main__.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/mercator/__main__.py b/mercator/__main__.py index 56e26fc436..a097fe0265 100644 --- a/mercator/__main__.py +++ b/mercator/__main__.py @@ -58,6 +58,11 @@ def _parse_args(): return parser.parse_args() def _read_config(config_file_path): + if not os.path.exists(config_file_path): + print_bold('{0} is not found'.format(config_file_path)) + print_bold('use -c option to specify the path to your mercator.yml') + raise ValueError('mercator.yml is not found') + with open(config_file_path, 'r') as f: try: config = yaml.safe_load(f) From 404b07d5052ca034e09d8ae31569409cb89e17f1 Mon Sep 17 00:00:00 2001 From: Yasuyuki Tanaka Date: Tue, 21 May 2019 16:47:58 +0200 Subject: [PATCH 21/50] mercator: add -l option to specify path to logging.yml --- mercator/__main__.py | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/mercator/__main__.py b/mercator/__main__.py index a097fe0265..2dd409a12e 100644 --- a/mercator/__main__.py +++ b/mercator/__main__.py @@ -16,12 +16,13 @@ from mercator.utils import MercatorHalo, Outfile, print_bold -def _init_logger(): - config_file_path = os.path.join(os.path.dirname(__file__), '..', - 'logging.yml') - config_file_path = os.path.abspath(config_file_path) +def _init_logger(logging_conf_path): + if not os.path.exists(logging_conf_path): + print_bold('{0} is not found'.format(logging_conf_path)) + print_bold('use -l option to specify the path to your logging.yml') + raise ValueError('logging.yml is not found') - with open(config_file_path, 'r') as f: + with open(logging_conf_path, 'r') as f: try: config = yaml.safe_load(f) logging.config.dictConfig(config) @@ -53,6 +54,9 @@ def _parse_args(): parser.add_argument('-f', dest='overwrite_out_file', help='overwrite an existing file', default=False, action='store_true') + parser.add_argument('-l', dest='logging_conf_path', + help='path to logging.yml', + type=str, default='./logging.yml') parser.add_argument('-q', dest='quiet', help='suppress console outputs', action='store_true') return parser.parse_args() @@ -195,9 +199,10 @@ def _end_of_measurement(pbar, trans_ctr, channel, node_idx, num_nodes): pbar.update() def main(): - _init_logger() - args = _parse_args() + + _init_logger(args.logging_conf_path) + if args.dump_sample_yml_file: module_name = 'mercator.platform.{0}'.format(args.dump_sample_yml_file) platform_module = import_module(module_name) From 05bd270f3147fdb21a45c2d478dcc8273f9770cb Mon Sep 17 00:00:00 2001 From: Yasuyuki Tanaka Date: Thu, 23 May 2019 20:00:18 +0200 Subject: [PATCH 22/50] mercator: gracefully stop by Ctrl-C --- mercator/__main__.py | 117 +++++++++++++++++++++++++++++-------------- 1 file changed, 80 insertions(+), 37 deletions(-) diff --git a/mercator/__main__.py b/mercator/__main__.py index 2dd409a12e..bd841864e7 100644 --- a/mercator/__main__.py +++ b/mercator/__main__.py @@ -5,6 +5,7 @@ import logging.config import math import os +import signal import sys import threading import time @@ -16,6 +17,9 @@ from mercator.utils import MercatorHalo, Outfile, print_bold +class SigIntException(Exception): + pass + def _init_logger(logging_conf_path): if not os.path.exists(logging_conf_path): print_bold('{0} is not found'.format(logging_conf_path)) @@ -93,46 +97,72 @@ def _setup_platform(platform_config, args): return platform_module.Platform(platform_config, **platform_args) def _run_transactions(num_transactions, channels, nodes, outfile, quiet): - num_nodes = len(nodes) - total_exec_num = num_transactions * len(channels) * num_nodes - - outfile.open() - outfile.write_data('start_time', - {'timestamp': datetime.datetime.now().isoformat()}) - with tqdm.tqdm(total=total_exec_num, unit='meas', disable=quiet) as pbar: - trans_ctr = 0 - while trans_ctr < num_transactions: - for channel in channels: - for node_idx, tx_node in enumerate(nodes): - rx_nodes = [node for node in nodes if node != tx_node] - - _beginning_of_measurement(pbar, - trans_ctr, channel, - node_idx, num_nodes) + quit_now = False + + def _sigint_handler(sig, frame): + raise SigIntException() + + def _running_in_thread(): + num_nodes = len(nodes) + total_exec_num = num_transactions * len(channels) * num_nodes + params = _get_measurement_params(num_transactions, channels, num_nodes) + + with tqdm.tqdm(total=total_exec_num, unit='meas', disable=quiet) as pbar: + for trans_ctr, channel, tx_node_idx in params: + tx_node = nodes[tx_node_idx] + _beginning_of_measurement(pbar, + trans_ctr, channel, + tx_node_idx, num_nodes) + try: + _do_measurement(nodes, tx_node, trans_ctr, channel, outfile) + except RuntimeError: + print_bold('RuntimeError occurs; stopping Mercator...') + break + + _end_of_measurement(pbar, + trans_ctr, channel, + tx_node_idx, num_nodes) + if quit_now: + break + + signal.signal(signal.SIGINT, _sigint_handler) + thread = threading.Thread(target=_running_in_thread) + try: + thread.start() + thread.join() + except (KeyboardInterrupt, SigIntException): + quit_now = True + print_bold('KeyboardInterrupt/SIGINT is received; Mercator will stop.') + print_bold('Waiting for the current measurement to finish...') + thread.join() - start_time_of_measurement = datetime.datetime.now() +def _get_measurement_params(num_transactions, channels, num_nodes): + trans_ctr = 0 + while trans_ctr < num_transactions: + for channel in channels: + for node_idx in range(num_nodes): + yield trans_ctr, channel, node_idx + trans_ctr += 1 - _make_sure_every_node_is_idle(nodes) +def _do_measurement(nodes, tx_node, trans_ctr, channel, outfile): + rx_nodes = [node for node in nodes if node != tx_node] + start_time_of_measurement = datetime.datetime.now() - _make_rx_nodes_start_listening(rx_nodes, - tx_node, channel, trans_ctr) + if not _is_every_node_idle(nodes): + raise RuntimeError('NodeStatus Error') - # start TX and wait to finish - tx_node.start_tx(channel, trans_ctr) - tx_node.wait_tx_done() + _make_rx_nodes_start_listening(rx_nodes, + tx_node, channel, trans_ctr) - _make_rx_nodes_stop_listening(rx_nodes) - _save_data(outfile, tx_node, rx_nodes, - start_time_of_measurement, trans_ctr, channel) + # start TX and wait to finish + tx_node.start_tx(channel, trans_ctr) + tx_node.wait_tx_done() - _end_of_measurement(pbar, - trans_ctr, channel, node_idx, num_nodes) + _make_rx_nodes_stop_listening(rx_nodes) + _save_data(outfile, tx_node, rx_nodes, + start_time_of_measurement, trans_ctr, channel) - outfile.flush() - trans_ctr += 1 - outfile.write_data('end_time', - {'timestamp': datetime.datetime.now().isoformat()}) - outfile.close() + outfile.flush() def _beginning_of_measurement(pbar, trans_ctr, channel, node_idx, num_nodes): logging.info('Beginning of measurement - ' @@ -146,7 +176,8 @@ def _beginning_of_measurement(pbar, trans_ctr, channel, node_idx, num_nodes): tx_node='{0}/{1}'.format(node_idx+1, num_nodes)) -def _make_sure_every_node_is_idle(nodes): +def _is_every_node_idle(nodes): + ret = True threads = {} for _idx, _node in enumerate(nodes): thread = threading.Thread(target=_node.update_status) @@ -154,7 +185,12 @@ def _make_sure_every_node_is_idle(nodes): threads[_idx] = thread for _idx, _node in enumerate(nodes): threads[_idx].join() - assert _node.status == NodeStatus.IDLE + if _node.status != NodeStatus.IDLE: + logging.critical('Invalid NodeStatus at ' + + 'Node {0} '.format(_node.id) + + '{0}'.format(_node.status.name)) + ret = False + return ret def _make_rx_nodes_start_listening(rx_nodes, tx_node, channel, trans_ctr): threads = {} @@ -167,7 +203,6 @@ def _make_rx_nodes_start_listening(rx_nodes, tx_node, channel, trans_ctr): threads[_idx] = thread for _idx, _node in enumerate(rx_nodes): threads[_idx].join() - assert _node.status == NodeStatus.RX def _make_rx_nodes_stop_listening(rx_nodes): threads = {} @@ -177,7 +212,6 @@ def _make_rx_nodes_stop_listening(rx_nodes): threads[_idx] = thread for _idx, _node in enumerate(rx_nodes): threads[_idx].join() - assert _node.status == NodeStatus.IDLE def _save_data(outfile, tx_node, rx_nodes, start_time, trans_ctr, channel): outfile.write_data('tx', @@ -224,12 +258,21 @@ def main(): channels = config['measurement']['channels'] num_transactions = config['measurement']['num_transactions'] + if num_transactions < 0: # if we have a negative value, take it as an infinite # value num_transactions = math.inf + + # body of main + outfile.open() + outfile.write_data('start_time', + {'timestamp': datetime.datetime.now().isoformat()}) _run_transactions(num_transactions, channels, nodes, outfile, args.quiet) + outfile.write_data('end_time', + {'timestamp': datetime.datetime.now().isoformat()}) + outfile.close() else: raise ValueError('Shouldn\'t come here') From 6a37753125b479b2114629239bd9b02a6e2870f6 Mon Sep 17 00:00:00 2001 From: Yasuyuki Tanaka Date: Mon, 20 May 2019 13:05:40 +0200 Subject: [PATCH 23/50] Remove 'tx_power_dbm' setting, which is not supported by openwsn-fw Keeping 'tx_power_dbm' in a yaml file could be confusing to users. Better to remove. --- mercator-opentestbed.yml | 1 - mercator.yml | 2 -- mercator/node.py | 9 +++++++-- mercator/platform/__init__.py | 1 - 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/mercator-opentestbed.yml b/mercator-opentestbed.yml index 3129fa40bb..5c8af26624 100644 --- a/mercator-opentestbed.yml +++ b/mercator-opentestbed.yml @@ -1,7 +1,6 @@ measurement: num_transactions: 10 channels: [11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26] - tx_power_dbm: 0 tx_len: 100 tx_interval_ms: 10 tx_num_per_transaction: 100 diff --git a/mercator.yml b/mercator.yml index 2781f06dcc..b8cdc318f3 100644 --- a/mercator.yml +++ b/mercator.yml @@ -1,8 +1,6 @@ measurement: num_transactions: 10 channels: [11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26] - # tx_power_dbm will be ignored by OpenWSN since it doesn't support this - tx_power_dbm: 0 tx_len: 100 tx_interval_ms: 10 tx_num_per_transaction: 100 diff --git a/mercator/node.py b/mercator/node.py index 93d62487d4..be3bec619b 100644 --- a/mercator/node.py +++ b/mercator/node.py @@ -41,6 +41,7 @@ class NodeStatus(enum.IntEnum): class Node(object): MAX_REQUEST_RETRIES = 3 STATUS_POLLING_INTERVAL = 0.5 + DUMMY_TX_POWER_VALUE = 0 def __init__(self, platform): self.platform = platform @@ -67,8 +68,12 @@ def __init__(self, platform): def setup(self, config): # mercator related # Note: OpenWSN doesn't support tx_power_dbm; see - # 03oos_mercator.c in openwsn-fw repository - self.tx_power_dbm = config['tx_power_dbm'] + # 03oos_mercator.c in openwsn-fw repository. set a dummy value + if self.platform.firmware_os_name == OSName.OpenWSN: + self.tx_power_dbm = self.DUMMY_TX_POWER_VALUE + else: + raise NotImplementedError('{0} is not supported'.format( + self.platform.firmware_os_name)) self.tx_len = config['tx_len'] self.tx_num_pk = config['tx_num_per_transaction'] self.tx_ifdur_ms = config['tx_interval_ms'] diff --git a/mercator/platform/__init__.py b/mercator/platform/__init__.py index daa1099593..845e84ce1d 100644 --- a/mercator/platform/__init__.py +++ b/mercator/platform/__init__.py @@ -18,7 +18,6 @@ def _dump_config_measurement(): config['num_transactions'] = 10 config['channels'] = [11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26] - config['tx_power_dbm'] = 0 config['tx_len'] = 100 config['tx_interval_ms'] = 10 config['tx_num_per_transaction'] = 100 From e537c33aaa2723182db3d3a413e94d03a7ba1ca3 Mon Sep 17 00:00:00 2001 From: Yasuyuki Tanaka Date: Mon, 20 May 2019 14:04:03 +0200 Subject: [PATCH 24/50] Change the default logging level to INFO --- logging.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/logging.yml b/logging.yml index 2e43c5bc86..e3b55eafc8 100644 --- a/logging.yml +++ b/logging.yml @@ -10,5 +10,5 @@ handlers: maxBytes: 1048576 # 1MB backupCount: 2 root: - level: DEBUG + level: INFO handlers: [file] From e61c5e641af76cfd0e2ebbd3940f35e731a5beea Mon Sep 17 00:00:00 2001 From: Yasuyuki Tanaka Date: Fri, 24 May 2019 15:06:36 +0200 Subject: [PATCH 25/50] mercator: record nodes' indexes to output file --- mercator/__main__.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mercator/__main__.py b/mercator/__main__.py index bd841864e7..97f7443da4 100644 --- a/mercator/__main__.py +++ b/mercator/__main__.py @@ -270,6 +270,9 @@ def main(): {'timestamp': datetime.datetime.now().isoformat()}) _run_transactions(num_transactions, channels, nodes, outfile, args.quiet) + for node_idx, node in enumerate(nodes): + outfile.write_data('node_info', {'node_index': node_idx, + 'mac_addr': str(node.mac_addr)}) outfile.write_data('end_time', {'timestamp': datetime.datetime.now().isoformat()}) outfile.close() From 14aeba16a95e1088d93ea86ac1eeb8fa1a24c3ae Mon Sep 17 00:00:00 2001 From: Yasuyuki Tanaka Date: Mon, 20 May 2019 16:51:23 +0200 Subject: [PATCH 26/50] Add mercator/k7conv.py (converter to K7 format) --- mercator/k7conv.py | 147 +++++++++++++++++++++++++++++++++++++++++++++ setup.py | 3 +- 2 files changed, 149 insertions(+), 1 deletion(-) create mode 100644 mercator/k7conv.py diff --git a/mercator/k7conv.py b/mercator/k7conv.py new file mode 100644 index 0000000000..c81fe8f8d5 --- /dev/null +++ b/mercator/k7conv.py @@ -0,0 +1,147 @@ +import argparse +import gzip +import json +import os +from statistics import mean + +def _find_node_list_and_end_time(raw_file_path): + node_list = {} + end_time = None + with gzip.open(raw_file_path, 'rt') as raw_file: + for line in raw_file: + line = json.loads(line) + if line['data_type'] == 'node_info': + node_list[line['data']['mac_addr']] = line['data']['node_index'] + elif line['data_type'] == 'end_time': + end_time = line['data']['timestamp'] + break + return node_list, end_time + +def _read_tx_line(line): + line = json.loads(line) + if line['data_type'] != 'tx': + raise ValueError('data_type ({0})is not "tx"'.format(line['data_type'])) + data = line['data'] + return data['mac_addr'], data['datetime'], data['channel'] + +def _read_rx_lines(lines_to_read, node_list, tx_count): + tuples_to_output = [] + for line in lines_to_read: + line = json.loads(line) + assert line['data_type'] == 'rx' + + data = line['data'] + rx_mac_addr = data['mac_addr'] + rssi_records = data['rssi_records'] + rx_node_id = node_list[rx_mac_addr] + + # compute mean RSSI and PDR + valid_rssi_values = [rssi for rssi in rssi_records if rssi] + rx_count = len(valid_rssi_values) + pdr = rx_count / tx_count + if pdr > 0: + mean_rssi = mean(valid_rssi_values) + else: + mean_rssi = None + + # save to the file + tuples_to_output.append((rx_node_id, mean_rssi, pdr)) + + return tuples_to_output + +def _generate_k7_header(location, config, start_time, end_time): + header = {} + header['location'] = location + header['tx_length'] = config['measurement']['tx_len'] + header['start_date'] = start_time + header['stop_date'] = end_time + header['node_count'] = len(config['platform']['nodes']) + header['channels'] = config['measurement']['channels'] + header['interframe_duration'] = config['measurement']['tx_interval_ms'] + return json.dumps(header) + '\n' + +def convert_raw_file(location, raw_file_path, out_file_path): + CSV_HEADER = 'datetime,src,dst,channel,mean_rssi,pdr,tx_count\n' + start_time = None + node_list, end_time = _find_node_list_and_end_time(raw_file_path) + if not end_time: + raise ValueError('Invalid raw file format {0}; '.format(raw_file_path) + + '"end_time" data is not found') + with gzip.open(out_file_path, 'wt') as out_file: + with gzip.open(raw_file_path, 'rb') as raw_file: + # read config line + line = json.loads(raw_file.readline()) + assert line['data_type'] == 'config' + config = line['data'] + + # shorthand + tx_count = config['measurement']['tx_num_per_transaction'] + num_nodes = len(config['platform']['nodes']) + + # read start time, and insert headers + line = json.loads(raw_file.readline()) + assert line['data_type'] == 'start_time' + start_time = line['data']['timestamp'] + header_line = _generate_k7_header(location, config, + start_time, end_time) + out_file.write(header_line) + out_file.write(CSV_HEADER) + + # read start of transaction + for line in raw_file: + try: + tx_mac_addr, timestamp, channel = _read_tx_line(line) + tx_node_id = node_list[tx_mac_addr] + except ValueError: + line = json.loads(line) + if line['data_type'] == 'end_time': + assert end_time == line['data']['timestamp'] + break + elif line['data_type'] == 'node_info': + # skip + continue + else: + raise ValueError('The current line should be ' + + '"tx" or "end_time"') + + # read RX records + lines_to_read = [raw_file.readline() + for _ in range(num_nodes-1)] + tuples_to_output = _read_rx_lines(lines_to_read, + node_list, + tx_count) + for dst, mean_rssi, pdr in tuples_to_output: + mean_rssi = ('{0:.2f}'.format(mean_rssi) + if mean_rssi else None) + out_file.write('{0},{1},{2},{3},'.format(timestamp, + tx_node_id, + dst, + channel) + + '{0},{1},{2}\n'.format(mean_rssi, + pdr, + tx_count)) + +def main(): + parser = argparse.ArgumentParser() + parser.add_argument('-l', dest='location', + help='specify "location" to be shown in K7 header', + type=str, required=True) + parser.add_argument('-o', dest='out_file_path', + help='path to a resulting K7 file (.k7.gz)', + default='output.k7.gz') + parser.add_argument('-f', dest='force', + help='overwrite an existing K7 file (.k7.gz)', + action='store_true') + parser.add_argument('raw_file_path', + help='path to a raw output file (.jsonl.gz) to convert') + args = parser.parse_args() + + if not os.path.exists(args.raw_file_path): + raise ValueError('{0} doesn\'t exist'.format(args.raw_file_path)) + elif (not args.force) and os.path.exists(args.out_file_path): + raise ValueError('{0} exists'.format(args.out_file_path)) + else: + convert_raw_file(args.location, args.raw_file_path, args.out_file_path) + +if __name__ == '__main__': + main() diff --git a/setup.py b/setup.py index f0f7969314..c38bf55faa 100644 --- a/setup.py +++ b/setup.py @@ -6,7 +6,8 @@ packages=find_packages(), entry_points={ 'console_scripts': [ - 'mercator = mercator.__main__:main' + 'mercator = mercator.__main__:main', + 'mercator-k7conv = mercator.k7conv:main' ] } ) From 86605bcf1e86206ff66d17eb00d88edd48df7da6 Mon Sep 17 00:00:00 2001 From: Yasuyuki Tanaka Date: Tue, 21 May 2019 11:15:41 +0200 Subject: [PATCH 27/50] Add test_hdlc.py --- requirements.txt | 1 + tests/test_hdlc.py | 63 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 64 insertions(+) create mode 100644 tests/test_hdlc.py diff --git a/requirements.txt b/requirements.txt index 57b99c6fd9..129680679c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -5,6 +5,7 @@ iotlabcli iotlabclient netaddr paho-mqtt +pytest python-dateutil PyYAML tqdm diff --git a/tests/test_hdlc.py b/tests/test_hdlc.py new file mode 100644 index 0000000000..16b798dd7f --- /dev/null +++ b/tests/test_hdlc.py @@ -0,0 +1,63 @@ +import pytest + +import mercator +from mercator.hdlc import hdlcify, dehdlcify, HdlcException + +# test CRC values are calulated manually with +# https://github.com/meetanthony/crcphp using CRC-16/X-25 + +HDLC_FLAG = b'\x7e' + +def test_hdlcify_single_byte(): + data = b'\x01' + crc = b'\xf1\xe1' + assert hdlcify(data) == HDLC_FLAG + data + crc + HDLC_FLAG + +def test_hdlcify_escaping(): + data = b'\x7e\x7d' # HDLC_FLAG + HDLC_ESCAPE + crc = b'\xf1\xcd' + assert hdlcify(data) == HDLC_FLAG + b'\x7d\x5e\x7d\x5d' + crc + HDLC_FLAG + +def test_hdlcify_multi_bytes(): + data = b'\xde\xad\xbe\xef\xc0\xfe\xc0\x1a\xc0\xff\xee' + crc = b'\x35\x3a' + assert hdlcify(data) == HDLC_FLAG + data + crc + HDLC_FLAG + +def test_hdlcify_no_byte(): + with pytest.raises(HdlcException) as err: + hdlcify(b'') + assert 'in_buf is empty' in str(err.value) + +def test_dehdlcify_multi_bytes(): + data = b'\xde\xad\xbe\xef\xc0\xfe\xc0\x1a\xc0\xff\xee' + in_buf = HDLC_FLAG + in_buf += data + in_buf += b'\x35\x3a' # crc + in_buf += HDLC_FLAG + assert dehdlcify(in_buf) == data + +def test_dehdlcify_escaping(): + in_buf = HDLC_FLAG + in_buf += b'\x7d\x5e\x7d\x5d' # the same data as test_hdlcify_escaping() + in_buf += b'\xf1\xcd' # crc + in_buf += HDLC_FLAG + assert dehdlcify(in_buf) == b'\x7e\x7d' + +def test_dehdlcify_short_frame(): + in_buf = HDLC_FLAG + in_buf += b'\x01\x02' # garbage byte + in_buf += HDLC_FLAG + with pytest.raises(HdlcException) as err: + dehdlcify(in_buf) + assert 'packet too short' in str(err.value) + +def test_dehdlcify_wrong_crc(): + data = b'\x01' + wrong_crc = b'\xf1\xe2' + in_buf = HDLC_FLAG + in_buf += data + in_buf += wrong_crc + in_buf += HDLC_FLAG + with pytest.raises(HdlcException) as err: + assert dehdlcify(in_buf) + assert 'wrong CRC' in str(err.value) From c32463835342bd03c6feb64428c9163841780ebe Mon Sep 17 00:00:00 2001 From: Yasuyuki Tanaka Date: Tue, 21 May 2019 13:24:03 +0200 Subject: [PATCH 28/50] Add test_node.py --- tests/test_node.py | 623 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 623 insertions(+) create mode 100644 tests/test_node.py diff --git a/tests/test_node.py b/tests/test_node.py new file mode 100644 index 0000000000..d3c45e1a94 --- /dev/null +++ b/tests/test_node.py @@ -0,0 +1,623 @@ +import logging +import struct +import time +import types + +import netaddr +import pytest + +from mercator.hdlc import hdlcify, dehdlcify, HDLC_FLAG +import mercator.node +from mercator.node import MsgType, NodeStatus, RxFlag +import mercator.platform +from mercator.utils import OSName + +TEST_MAC_ADDR = netaddr.EUI('02-01-03-04-05-06-07-08') +TEST_NODE_ID = 1 +TEST_CHANNEL = 11 +TEST_TX_LEN = 100 +TEST_TRANS_CTR = 100 +TEST_RSSI = -50 + +class Platform(mercator.platform.Platform): + def __init__(self, config): + self.firmware_os_name = OSName.OpenWSN + + def setup_measurement(self, config): + pass + +class Node(mercator.node.Node): + def __init__(self, platform): + super(Node, self).__init__(platform) + self.id = TEST_NODE_ID + self.sent_bytes = None + self.test_recv_bytes = b'' + self.sent_count = 0 + self.retry_count = -1 + self.mac_addr = TEST_MAC_ADDR + + def get_sent_bytes(self): + ret = self.sent_bytes + self.sent_bytes = None + return ret + + def put_test_recv_bytes(self, byte_str): + self.test_recv_bytes += byte_str + + def set_retry_count(self, count): + # return self.test_recv_bytes after _platform_send() is called + # "retry_count+1" times + self.retry_count = count + + def _platform_send(self, msg): + self.sent_bytes = msg + self.sent_count += 1 + + def _platform_recv(self): + if self.sent_count > self.retry_count: + ret = self.test_recv_bytes + self.test_recv_bytes = b'' + else: + ret = b'' + return ret + +@pytest.fixture +def node(caplog): + caplog.set_level(logging.INFO) + platform = Platform({}) + _node = Node(platform) + + # do some initialization which is done by setup() + _node.tx_power_dbm = _node.DUMMY_TX_POWER_VALUE + _node.tx_len = TEST_TX_LEN + _node.tx_num_pk = 100 + _node.tx_ifdur_ms = 10 + _node.tx_fill_byte = 0x5a + _node.rssi_records = [None] * _node.tx_num_pk + _node._status = NodeStatus.IDLE + + return _node + +@pytest.fixture +def resp_st(): + TEST_NUMNOTIFICATIONS = 0xabcd + def _resp_st(status): + numnotifications = TEST_NUMNOTIFICATIONS + mac_addr = TEST_MAC_ADDR + return struct.pack('>BBHQ', + MsgType.RESP_ST, status, numnotifications, + mac_addr.value) + return _resp_st + +@pytest.fixture +def resp_idle(): + return struct.pack('>B', MsgType.RESP_IDLE) + +@pytest.fixture +def resp_tx(): + return struct.pack('>B', MsgType.RESP_TX) + +@pytest.fixture +def resp_rx(): + return struct.pack('>B', MsgType.RESP_RX) + +@pytest.fixture +def ind_up(): + return struct.pack('>B', MsgType.IND_UP) + +@pytest.fixture +def ind_txdone(): + return struct.pack('>B', MsgType.IND_TXDONE) + +@pytest.fixture +def ind_rx(): + def _ind_rx(pkctr): + return struct.pack('>BBbBH', + MsgType.IND_RX, + TEST_TX_LEN, + TEST_RSSI, + RxFlag.EXPECTED_FLAGS, + pkctr) + return _ind_rx + +def test_request_status(caplog, node, resp_st): + test_status = NodeStatus.IDLE + node.put_test_recv_bytes(hdlcify(resp_st(test_status))) + + status, mac_addr = node.request_status() + sent_bytes = dehdlcify(node.get_sent_bytes()) + assert status == test_status + assert mac_addr == TEST_MAC_ADDR + assert len(sent_bytes) == 1 + assert sent_bytes[0] == MsgType.REQ_ST + + assert len(caplog.record_tuples) == 2 + assert (caplog.record_tuples[0] + == ('root', + logging.INFO, + 'Send REQ_ST to {0}'.format(TEST_NODE_ID))) + assert (caplog.record_tuples[1] + == ('root', + logging.INFO, + 'Recv RESP_ST from {0}'.format(TEST_NODE_ID))) + +def test_request_status_having_ind_up(caplog, node, ind_up, resp_st): + # put IND_UP before RESP_ST so that they are received at once + test_status = NodeStatus.IDLE + node.put_test_recv_bytes(hdlcify(ind_up) + + hdlcify(resp_st(test_status))) + + # even in this case, node should identify RESP_ST and process it + # properly. IND_UP should be ignored + status, mac_addr = node.request_status() + assert status == test_status + assert mac_addr == TEST_MAC_ADDR + + assert len(caplog.record_tuples) == 4 + assert (caplog.record_tuples[1] + == ('root', + logging.INFO, + 'Recv IND_UP from {0}'.format(TEST_NODE_ID))) + assert (caplog.record_tuples[2] + == ('root', + logging.INFO, + 'Ignore IND_UP from {0}'.format(TEST_NODE_ID))) + assert (caplog.record_tuples[3] + == ('root', + logging.INFO, + 'Recv RESP_ST from {0}'.format(TEST_NODE_ID))) + +def test_request_status_duplicate_response(caplog, node, resp_st): + # put two RESP_ST + test_status_1 = NodeStatus.RX + test_status_2 = NodeStatus.IDLE + node.put_test_recv_bytes(hdlcify(resp_st(test_status_1)) + + hdlcify(resp_st(test_status_2))) + + status, mac_addr = node.request_status() + assert status == test_status_1 + assert mac_addr == TEST_MAC_ADDR + + # in this case, the second RESP_ST should not be processed. the + # second RESP_ST should be kept in serial_leftover + assert len(caplog.record_tuples) == 2 + assert (caplog.record_tuples[0] + == ('root', + logging.INFO, + 'Send REQ_ST to {0}'.format(TEST_NODE_ID))) + assert (caplog.record_tuples[1] + == ('root', + logging.INFO, + 'Recv RESP_ST from {0}'.format(TEST_NODE_ID))) + assert node.serial_leftover == hdlcify(resp_st(test_status_2)) + +def test_request_status_with_retries(caplog, node, resp_st): + retry_count = 1 + test_status = NodeStatus.IDLE + node.put_test_recv_bytes(hdlcify(resp_st(test_status))) + node.set_retry_count(retry_count) + + status, mac_addr = node.request_status() + assert status == test_status + assert mac_addr == TEST_MAC_ADDR + + # we should have one retry + assert len(caplog.record_tuples) == 4 + assert (caplog.record_tuples[0] + == ('root', + logging.INFO, + 'Send REQ_ST to {0}'.format(TEST_NODE_ID))) + assert (caplog.record_tuples[1] + == ('root', + logging.INFO, + 'Retry REQ_ST to {0}'.format(TEST_NODE_ID))) + assert (caplog.record_tuples[2] + == ('root', + logging.INFO, + 'Send REQ_ST to {0}'.format(TEST_NODE_ID))) + assert (caplog.record_tuples[3] + == ('root', + logging.INFO, + 'Recv RESP_ST from {0}'.format(TEST_NODE_ID))) + +def test_request_status_timeout(caplog, node): + with pytest.raises(RuntimeError): + status, mac_addr = node.request_status() + + # we should have one more 'Send' log than 'Retry'; and at the end, + # we should have CRITICAL log + assert len(caplog.record_tuples) == node.MAX_REQUEST_RETRIES * 2 + 1 + 1 + assert (caplog.record_tuples[-1] == + ('root', + logging.CRITICAL, + 'Node {0} doesn\'t respond to REQ_ST'.format(TEST_NODE_ID))) + +def test_request_idle(caplog, node, resp_idle): + node.status = NodeStatus.RX + node.put_test_recv_bytes(hdlcify(resp_idle)) + node.request_idle() + + assert node.status == NodeStatus.IDLE + assert len(caplog.record_tuples) == 2 + assert (caplog.record_tuples[0] + == ('root', + logging.INFO, + 'Send REQ_IDLE to {0}'.format(TEST_NODE_ID))) + assert (caplog.record_tuples[1] + == ('root', + logging.INFO, + 'Recv RESP_IDLE from {0}'.format(TEST_NODE_ID))) + +def test_request_idle_timeout(caplog, node, resp_idle): + with pytest.raises(RuntimeError): + node.request_idle() + assert len(caplog.record_tuples) == node.MAX_REQUEST_RETRIES * 2 + 1 + 1 + assert (caplog.record_tuples[-1] == + ('root', + logging.CRITICAL, + 'Node {0} doesn\'t respond to REQ_IDLE'.format(TEST_NODE_ID))) + +def test_wait_ind_up(caplog, node, ind_up): + node.put_test_recv_bytes(hdlcify(ind_up)) + node.wait_ind_up() + + assert len(caplog.record_tuples) == 2 + assert (caplog.record_tuples[0] + == ('root', + logging.INFO, + 'Wait for IND_UP from {0}'.format(TEST_NODE_ID))) + assert (caplog.record_tuples[1] + == ('root', + logging.INFO, + 'Recv IND_UP from {0}'.format(TEST_NODE_ID))) + +def test_wait_ind_up_timeout(caplog, node, ind_up): + node.wait_ind_up() + + assert len(caplog.record_tuples) == 2 + assert (caplog.record_tuples[0] + == ('root', + logging.INFO, + 'Wait for IND_UP from {0}'.format(TEST_NODE_ID))) + assert (caplog.record_tuples[1] + == ('root', + logging.INFO, + 'No IND_UP from {0}'.format(TEST_NODE_ID))) + +def test_start_tx(caplog, node, resp_tx): + node.put_test_recv_bytes(hdlcify(resp_tx)) + node.start_tx(TEST_CHANNEL, TEST_TRANS_CTR) + + assert node.status == NodeStatus.TX + assert len(caplog.record_tuples) == 2 + assert (caplog.record_tuples[0] + == ('root', + logging.INFO, + 'Send REQ_TX to {0}'.format(TEST_NODE_ID))) + assert (caplog.record_tuples[1] + == ('root', + logging.INFO, + 'Recv RESP_TX from {0}'.format(TEST_NODE_ID))) + +def test_start_tx_having_ind_txdone(caplog, node, resp_tx, ind_txdone): + # IND_TXDONE may follow RESP_TX especially when using opentestbed + node.put_test_recv_bytes(hdlcify(resp_tx) + +hdlcify(ind_txdone)) + node.start_tx(TEST_CHANNEL, TEST_TRANS_CTR) + + assert len(caplog.record_tuples) == 2 + assert (caplog.record_tuples[0] + == ('root', + logging.INFO, + 'Send REQ_TX to {0}'.format(TEST_NODE_ID))) + assert (caplog.record_tuples[1] + == ('root', + logging.INFO, + 'Recv RESP_TX from {0}'.format(TEST_NODE_ID))) + + # IND_TXDONE should be ignored and saved in serial_leftover + assert node.serial_leftover == hdlcify(ind_txdone) + +def test_start_tx_timeout(caplog, node, resp_st): + def _platform_recv(self): + if not hasattr(self, 'req_count'): + self.req_count = 1 + else: + self.req_count += 1 + if self.req_count % 2: # odd, RESP_TX is expected + return b'' # return nothing + else: + return hdlcify(resp_st(NodeStatus.IDLE)) + + node._platform_recv = types.MethodType(_platform_recv, node) + with pytest.raises(RuntimeError): + node.start_tx(TEST_CHANNEL, TEST_TRANS_CTR) + assert len(caplog.record_tuples) == ( + (node.MAX_REQUEST_RETRIES + 1) # REQ_TX + + (node.MAX_REQUEST_RETRIES + 1) * 2 # REQ_ST + RESP_ST + + node.MAX_REQUEST_RETRIES # Retry log + + 1 # error log + ) + assert (caplog.record_tuples[-1] == + ('root', + logging.CRITICAL, + 'Node {0} doesn\'t respond to REQ_TX'.format(TEST_NODE_ID))) + +def test_start_tx_delayed_resp_tx(caplog, node, resp_tx, resp_st): + def _platform_recv(self): + if not hasattr(self, 'req_count'): + self.req_count = 1 + else: + self.req_count += 1 + if self.req_count == 1: + # return nothing for the first REQ_TX + return b'' + elif self.req_count == 2: + return hdlcify(resp_tx) + else: + assert False # shouldn't come + + node._platform_recv = types.MethodType(_platform_recv, node) + node.start_tx(TEST_CHANNEL, TEST_TRANS_CTR) + assert len(caplog.record_tuples) == 3 + assert (caplog.record_tuples[0] + == ('root', + logging.INFO, + 'Send REQ_TX to {0}'.format(TEST_NODE_ID))) + assert (caplog.record_tuples[1] + == ('root', + logging.INFO, + 'Send REQ_ST to {0}'.format(TEST_NODE_ID))) + assert (caplog.record_tuples[2] + == ('root', + logging.INFO, + 'Recv RESP_TX from {0}'.format(TEST_NODE_ID))) + +def test_start_tx_recv_ind_txdone(caplog, node, ind_txdone): + def _platform_recv(self): + if not hasattr(self, 'req_count'): + self.req_count = 1 + else: + self.req_count += 1 + if self.req_count == 1: + # return nothing for the first REQ_TX + return b'' + elif self.req_count == 2: + return hdlcify(ind_txdone) + else: + assert False # shouldn't come + + node._platform_recv = types.MethodType(_platform_recv, node) + node.start_tx(TEST_CHANNEL, TEST_TRANS_CTR) + assert len(caplog.record_tuples) == 3 + assert (caplog.record_tuples[0] + == ('root', + logging.INFO, + 'Send REQ_TX to {0}'.format(TEST_NODE_ID))) + assert (caplog.record_tuples[1] + == ('root', + logging.INFO, + 'Send REQ_ST to {0}'.format(TEST_NODE_ID))) + assert (caplog.record_tuples[2] + == ('root', + logging.INFO, + 'Recv IND_TXDONE from {0}'.format(TEST_NODE_ID))) + +def test_wait_tx_done(caplog, node, ind_txdone, resp_idle): + node.status = NodeStatus.TX + node.put_test_recv_bytes(hdlcify(ind_txdone) + hdlcify(resp_idle)) + node.wait_tx_done() + assert node.status == NodeStatus.IDLE + + assert len(caplog.record_tuples) == 4 + assert (caplog.record_tuples[0] + == ('root', + logging.INFO, + 'Wait for IND_TXDONE from {0}'.format(TEST_NODE_ID))) + assert (caplog.record_tuples[1] + == ('root', + logging.INFO, + 'Recv IND_TXDONE from {0}'.format(TEST_NODE_ID))) + assert (caplog.record_tuples[2] + == ('root', + logging.INFO, + 'Send REQ_IDLE to {0}'.format(TEST_NODE_ID))) + assert (caplog.record_tuples[3] + == ('root', + logging.INFO, + 'Recv RESP_IDLE from {0}'.format(TEST_NODE_ID))) + +def test_wait_tx_done_resp_st(caplog, node, resp_st, ind_txdone, resp_idle): + # RESP_TX may be followed by IND_TXDONE when REQ_TX is re-sent + node.put_test_recv_bytes(hdlcify(resp_st(NodeStatus.TX)) + + hdlcify(ind_txdone) + + hdlcify(resp_idle)) + node.wait_tx_done() + + # RESP_TX should be ignored + assert len(caplog.record_tuples) == 6 + assert (caplog.record_tuples[0] + == ('root', + logging.INFO, + 'Wait for IND_TXDONE from {0}'.format(TEST_NODE_ID))) + assert (caplog.record_tuples[1] + == ('root', + logging.INFO, + 'Recv RESP_ST from {0}'.format(TEST_NODE_ID))) + assert (caplog.record_tuples[2] + == ('root', + logging.INFO, + 'Ignore RESP_ST from {0}'.format(TEST_NODE_ID))) + assert (caplog.record_tuples[3] + == ('root', + logging.INFO, + 'Recv IND_TXDONE from {0}'.format(TEST_NODE_ID))) + assert (caplog.record_tuples[4] + == ('root', + logging.INFO, + 'Send REQ_IDLE to {0}'.format(TEST_NODE_ID))) + assert (caplog.record_tuples[5] + == ('root', + logging.INFO, + 'Recv RESP_IDLE from {0}'.format(TEST_NODE_ID))) + +def test_wait_tx_done_timeout(caplog, node, resp_idle): + with pytest.raises(RuntimeError): + node.wait_tx_done() + assert len(caplog.record_tuples) == 10 + assert (caplog.record_tuples[0] == + ('root', + logging.INFO, + 'Wait for IND_TXDONE from {0}'.format(TEST_NODE_ID))) + assert (caplog.record_tuples[1] == + ('root', + logging.ERROR, + 'IND_TXDONE from {0} may be dropped'.format(TEST_NODE_ID))) + assert (caplog.record_tuples[-1] == + ('root', + logging.CRITICAL, + 'Node {0} doesn\'t respond to REQ_IDLE'.format(TEST_NODE_ID))) + assert node.current_channel is None + assert node.current_trans_ctr is None + assert node.current_tx_mac_addr is None + +def test_start_rx(caplog, node, resp_rx): + node.put_test_recv_bytes(hdlcify(resp_rx)) + node.start_rx(TEST_CHANNEL, TEST_MAC_ADDR, TEST_TRANS_CTR) + assert node.status == NodeStatus.RX + + assert len(caplog.record_tuples) == 2 + assert (caplog.record_tuples[0] + == ('root', + logging.INFO, + 'Send REQ_RX to {0}'.format(TEST_NODE_ID))) + assert (caplog.record_tuples[1] + == ('root', + logging.INFO, + 'Recv RESP_RX from {0}'.format(TEST_NODE_ID))) + + # stop the thread directly + node.status = NodeStatus.IDLE + node.keep_receiving_thread.join() + +def test_start_rx_done_duplicate_response(caplog, node, resp_rx): + # two RESP_RX are received at once + node.put_test_recv_bytes(hdlcify(resp_rx) + + hdlcify(resp_rx)) + node.start_rx(TEST_CHANNEL, TEST_MAC_ADDR, TEST_TRANS_CTR) + # stop the thread directly + node.status = NodeStatus.IDLE + node.keep_receiving_thread.join() + + assert len(caplog.record_tuples) == 4 + assert (caplog.record_tuples[0] + == ('root', + logging.INFO, + 'Send REQ_RX to {0}'.format(TEST_NODE_ID))) + assert (caplog.record_tuples[1] + == ('root', + logging.INFO, + 'Recv RESP_RX from {0}'.format(TEST_NODE_ID))) + # the second RESP_RX should be handled in _store_rx_records() and + # ignored + assert not node.serial_leftover + assert (caplog.record_tuples[2] + == ('root', + logging.INFO, + 'Recv RESP_RX from {0}'.format(TEST_NODE_ID))) + assert (caplog.record_tuples[3] + == ('root', + logging.INFO, + 'Ignore RESP_RX from {0}'.format(TEST_NODE_ID))) + +def test_start_rx_timeout(caplog, node): + with pytest.raises(RuntimeError): + node.start_rx(TEST_CHANNEL, TEST_MAC_ADDR, TEST_TRANS_CTR) + assert len(caplog.record_tuples) == node.MAX_REQUEST_RETRIES * 2 + 1 + 1 + assert (caplog.record_tuples[-1] == + ('root', + logging.CRITICAL, + 'Node {0} doesn\'t respond to REQ_RX'.format(TEST_NODE_ID))) + +def test_keep_receiving(caplog, node, resp_rx, ind_rx, resp_idle): + def _platform_recv_ind_rx(self): + if self.get_sent_bytes(): # expect this is REQ_RX + ret = hdlcify(resp_rx) + else: + time.sleep(0.10) + if hasattr(self, 'pkctr'): + self.pkctr += 1 + else: + self.pkctr = 0 + + # this test should be done before pkctr goes beyond the + # boundary + assert self.pkctr < 2**16 + + # incomplete rx_record which doesn't have msg_type + rx_record = hdlcify(ind_rx(self.pkctr)) + + if self.pkctr == 0: + ret = rx_record + HDLC_FLAG + else: + self.serial_leftover == HDLC_FLAG[0] + ret = rx_record[1:] + HDLC_FLAG + + return ret + + def _platform_recv_empty(self): + return b'' + + caplog.set_level(logging.WARNING) + node._platform_recv = types.MethodType(_platform_recv_ind_rx, node) + node.start_rx(TEST_CHANNEL, TEST_MAC_ADDR, TEST_TRANS_CTR) + assert node.status == NodeStatus.RX + + assert len(caplog.record_tuples) == 0 + caplog.set_level(logging.DEBUG) + time.sleep(1) + + # stop the thread by changing the node's status to STOPPING_RX + node.status = NodeStatus.STOPPING_RX + time.sleep(1) + # the thread should be still alive since it keeps receiving something + assert node.keep_receiving_thread.is_alive() + # make _platform_recv() return nothing + node._platform_recv = types.MethodType(_platform_recv_empty, node) + node.keep_receiving_thread.join() + assert not node.keep_receiving_thread.is_alive() + +def test_duplicate_ind_rx(caplog, node, ind_rx): + test_pkctr = 2 + prev_pkctr = 1 + + prev_pkctr = node._store_rx_record(TEST_RSSI, 2, prev_pkctr) + assert prev_pkctr == 2 + assert len(caplog.record_tuples) == 0 + + # duplicate + assert node._store_rx_record(TEST_RSSI, 2, prev_pkctr) == 2 + assert len(caplog.record_tuples) == 1 + assert (caplog.record_tuples[0] == + ('root', + logging.ERROR, + 'Node {0} received a duplicate packet '.format(TEST_NODE_ID) + + '(pkctr:{0})'.format(test_pkctr))) + +def test_stop_rx(caplog, node, resp_rx, resp_idle): + node.put_test_recv_bytes(hdlcify(resp_rx)) + node.start_rx(TEST_CHANNEL, TEST_MAC_ADDR, TEST_TRANS_CTR) + + def _platform_recv(self): + if self.sent_bytes and (self.sent_bytes[1] == MsgType.REQ_IDLE): + self.sent_bytes = b'' + return hdlcify(resp_idle) + else: + self.sent_bytes = b'' + return b'' + node._platform_recv = types.MethodType(_platform_recv, node) + node.stop_rx() + assert node.status == NodeStatus.IDLE + assert node.current_channel is None + assert node.current_trans_ctr is None + assert node.current_tx_mac_addr is None From 35089e0ac6249f34db29c76836a5433291923311 Mon Sep 17 00:00:00 2001 From: Yasuyuki Tanaka Date: Wed, 29 May 2019 12:15:28 +0200 Subject: [PATCH 29/50] hdlc: change APIs, do away with hdlcify and dehdlcify --- mercator/hdlc.py | 64 ++++++++++++++---------------------- mercator/node.py | 19 +++++++---- tests/test_hdlc.py | 81 +++++++++++++++++++++------------------------- tests/test_node.py | 69 ++++++++++++++++++++++----------------- 4 files changed, 113 insertions(+), 120 deletions(-) diff --git a/mercator/hdlc.py b/mercator/hdlc.py index 6bcc1f5b2e..543e86d471 100644 --- a/mercator/hdlc.py +++ b/mercator/hdlc.py @@ -1,7 +1,7 @@ class HdlcException(Exception): pass -HDLC_MIN_FRAME_LEN = 5 # |HDLC_FLAG(1)|DATA|CRC(2)|HDLC_FLAG(1)| +HDLC_MIN_FRAME_LEN = 3 # DATA(>1)|CRC(2) HDLC_FLAG = b'\x7e' HDLC_FLAG_ESCAPED = b'\x5e' @@ -45,9 +45,10 @@ class HdlcException(Exception): 0x7bc7, 0x6a4e, 0x58d5, 0x495c, 0x3de3, 0x2c6a, 0x1ef1, 0x0f78, ) -def hdlcify(in_buf): - # append CRC to in_buf, and wrap it with HDLC_FLAG(0xfe) +def _crc_iteration(crc, b): + return (crc >> 8) ^ FCS16TAB[((crc ^ b) & 0xff)] +def hdlc_calc_crc(in_buf): if not in_buf: raise HdlcException('in_buf is empty') @@ -57,53 +58,36 @@ def hdlcify(in_buf): crc = _crc_iteration(crc, b) crc = 0xffff - crc - # append CRC - out_buf = bytearray(in_buf - + crc.to_bytes(2, byteorder='little', signed=False)) + return crc.to_bytes(2, byteorder='little', signed=False) - # stuff bytes +def hdlc_verify_crc(in_buf): + if not in_buf: + raise HdlcException('in_buf is empty') + + # assuming the last two bytes is CRC + crc = HDLC_CRCINIT + for b in (in_buf): + crc = _crc_iteration(crc, b) + return crc == HDLC_CRCGOOD + +def hdlc_escape(in_buf): + if not in_buf: + raise HdlcException('in_buf is empty') + + out_buf = bytearray(in_buf) out_buf = out_buf.replace(HDLC_ESCAPE, HDLC_ESCAPE+HDLC_ESCAPE_ESCAPED) out_buf = out_buf.replace(HDLC_FLAG, HDLC_ESCAPE+HDLC_FLAG_ESCAPED) - - # add flags - out_buf = HDLC_FLAG + out_buf + HDLC_FLAG return out_buf -def dehdlcify(in_buf): - # remove HDLC_FLAG(0xfe) and verify CRC - - if len(in_buf) < HDLC_MIN_FRAME_LEN: - raise HdlcException('packet too short') - - hdlc_flag_value = int.from_bytes(HDLC_FLAG, byteorder='big') - assert in_buf[0] == hdlc_flag_value - assert in_buf[-1] == hdlc_flag_value - - # make copy of input - out_buf = in_buf[:] - - # remove flags - out_buf = out_buf[1:-1] +def hdlc_unescape(in_buf): + if not in_buf: + raise HdlcException('in_buf is empty') - # unstuff + out_buf = bytearray(in_buf) out_buf = out_buf.replace(HDLC_ESCAPE+HDLC_FLAG_ESCAPED, HDLC_FLAG) out_buf = out_buf.replace(HDLC_ESCAPE+HDLC_ESCAPE_ESCAPED, HDLC_ESCAPE) - - # check CRC - crc = HDLC_CRCINIT - for b in out_buf: - crc = _crc_iteration(crc, b) - if crc != HDLC_CRCGOOD: - raise HdlcException('wrong CRC') - - # remove CRC - out_buf = out_buf[:-2] # remove CRC - return out_buf - -def _crc_iteration(crc, b): - return (crc >> 8) ^ FCS16TAB[((crc ^ b) & 0xff)] diff --git a/mercator/node.py b/mercator/node.py index be3bec619b..0130477f59 100644 --- a/mercator/node.py +++ b/mercator/node.py @@ -7,7 +7,9 @@ import netaddr -from mercator.hdlc import hdlcify, dehdlcify, HdlcException +from mercator.hdlc import (hdlc_calc_crc, hdlc_verify_crc, + hdlc_escape, hdlc_unescape, + HDLC_FLAG) from mercator.hdlc import HDLC_FLAG, HDLC_MIN_FRAME_LEN from mercator.utils import restore_xon_xoff, OSName @@ -427,7 +429,8 @@ def _recv_ind_rx(self, msg): raise RuntimeError(err_str) def _send_msg(self, msg): - hdlc_frame = hdlcify(msg) + crc = hdlc_calc_crc(msg) + hdlc_frame = HDLC_FLAG + hdlc_escape(msg+crc) + HDLC_FLAG logging.info('Send {0} to {1}'.format(MsgType(msg[0]).name, self.id)) logging.debug('Request HDLC frame to {0}: '.format(self.id) @@ -511,12 +514,14 @@ def _recv_msg(self): hdlc_frame = restore_xon_xoff(hdlc_frame) logging.debug('Recv HDLC frame(s) from {0}: '.format(self.id) + '{0}'.format(hdlc_frame.hex())) - try: - msg = dehdlcify(hdlc_frame) - except HdlcException as err: - logging.info(str(err) + ': {0}'.format(hdlc_frame.hex())) - msg = b'' # an empty msg + hdlc_body = hdlc_frame[1:-1] + hdlc_body = hdlc_unescape(hdlc_body) + if hdlc_verify_crc(hdlc_body): + msg = hdlc_body[:-2] # remove CRC else: + msg = b'' + + if msg: msg_type = MsgType(msg[0]) if msg_type == MsgType.IND_RX: # we don't want to log a reception of IND_RX, diff --git a/tests/test_hdlc.py b/tests/test_hdlc.py index 16b798dd7f..cb70ec3c49 100644 --- a/tests/test_hdlc.py +++ b/tests/test_hdlc.py @@ -1,63 +1,56 @@ import pytest import mercator -from mercator.hdlc import hdlcify, dehdlcify, HdlcException +from mercator.hdlc import (hdlc_calc_crc, hdlc_verify_crc, + hdlc_escape, hdlc_unescape, + HDLC_FLAG, HdlcException) # test CRC values are calulated manually with # https://github.com/meetanthony/crcphp using CRC-16/X-25 HDLC_FLAG = b'\x7e' -def test_hdlcify_single_byte(): - data = b'\x01' - crc = b'\xf1\xe1' - assert hdlcify(data) == HDLC_FLAG + data + crc + HDLC_FLAG - -def test_hdlcify_escaping(): - data = b'\x7e\x7d' # HDLC_FLAG + HDLC_ESCAPE - crc = b'\xf1\xcd' - assert hdlcify(data) == HDLC_FLAG + b'\x7d\x5e\x7d\x5d' + crc + HDLC_FLAG - -def test_hdlcify_multi_bytes(): - data = b'\xde\xad\xbe\xef\xc0\xfe\xc0\x1a\xc0\xff\xee' - crc = b'\x35\x3a' - assert hdlcify(data) == HDLC_FLAG + data + crc + HDLC_FLAG - -def test_hdlcify_no_byte(): - with pytest.raises(HdlcException) as err: - hdlcify(b'') - assert 'in_buf is empty' in str(err.value) - -def test_dehdlcify_multi_bytes(): - data = b'\xde\xad\xbe\xef\xc0\xfe\xc0\x1a\xc0\xff\xee' - in_buf = HDLC_FLAG - in_buf += data - in_buf += b'\x35\x3a' # crc - in_buf += HDLC_FLAG - assert dehdlcify(in_buf) == data +@pytest.fixture(params=[ + {'data': b'\x01', + 'escaped_data': b'\x01', + 'crc': b'\xf1\xe1'}, + {'data': b'\xde\xad\xbe\xef\xc0\xfe\xc0\x1a\xc0\xff\xee', + 'escaped_data': b'\xde\xad\xbe\xef\xc0\xfe\xc0\x1a\xc0\xff\xee', + 'crc': b'\x35\x3a'}, + {'data': b'\x7e\x7d', + 'escaped_data': b'\x7d\x5e\x7d\x5d', + 'crc': b'\xf1\xcd'}]) +def vector(request): + return request.param -def test_dehdlcify_escaping(): - in_buf = HDLC_FLAG - in_buf += b'\x7d\x5e\x7d\x5d' # the same data as test_hdlcify_escaping() - in_buf += b'\xf1\xcd' # crc - in_buf += HDLC_FLAG - assert dehdlcify(in_buf) == b'\x7e\x7d' +def test_calc_crc(vector): + assert hdlc_calc_crc(vector['data']) == vector['crc'] + +def test_verify_crc(vector): + assert hdlc_verify_crc(vector['data']+vector['crc']) + +def test_escape(vector): + assert hdlc_escape(vector['data']) == vector['escaped_data'] + +def test_unescape(vector): + assert hdlc_unescape(vector['escaped_data']) == vector['data'] + +@pytest.fixture(params=[hdlc_calc_crc, hdlc_verify_crc, + hdlc_escape, hdlc_unescape]) +def hdlc_api(request): + return request.param + +def test_empty_input(hdlc_api): + with pytest.raises(HdlcException): + hdlc_api(b'') def test_dehdlcify_short_frame(): + pass in_buf = HDLC_FLAG in_buf += b'\x01\x02' # garbage byte in_buf += HDLC_FLAG - with pytest.raises(HdlcException) as err: - dehdlcify(in_buf) - assert 'packet too short' in str(err.value) def test_dehdlcify_wrong_crc(): + pass data = b'\x01' wrong_crc = b'\xf1\xe2' - in_buf = HDLC_FLAG - in_buf += data - in_buf += wrong_crc - in_buf += HDLC_FLAG - with pytest.raises(HdlcException) as err: - assert dehdlcify(in_buf) - assert 'wrong CRC' in str(err.value) diff --git a/tests/test_node.py b/tests/test_node.py index d3c45e1a94..58c7fbe7be 100644 --- a/tests/test_node.py +++ b/tests/test_node.py @@ -6,7 +6,8 @@ import netaddr import pytest -from mercator.hdlc import hdlcify, dehdlcify, HDLC_FLAG +from mercator.hdlc import (hdlc_calc_crc, hdlc_verify_crc, + hdlc_escape, hdlc_unescape, HDLC_FLAG) import mercator.node from mercator.node import MsgType, NodeStatus, RxFlag import mercator.platform @@ -19,6 +20,16 @@ TEST_TRANS_CTR = 100 TEST_RSSI = -50 +def _hdlcify(in_buf): + crc = hdlc_calc_crc(in_buf) + body = hdlc_escape(in_buf + crc) + return HDLC_FLAG + body + HDLC_FLAG + +def _dehdlcify(in_buf): + body = in_buf[1:-1] + assert hdlc_verify_crc(body) + return hdlc_unescape(body[:-2]) + class Platform(mercator.platform.Platform): def __init__(self, config): self.firmware_os_name = OSName.OpenWSN @@ -122,10 +133,10 @@ def _ind_rx(pkctr): def test_request_status(caplog, node, resp_st): test_status = NodeStatus.IDLE - node.put_test_recv_bytes(hdlcify(resp_st(test_status))) + node.put_test_recv_bytes(_hdlcify(resp_st(test_status))) status, mac_addr = node.request_status() - sent_bytes = dehdlcify(node.get_sent_bytes()) + sent_bytes = _dehdlcify(node.get_sent_bytes()) assert status == test_status assert mac_addr == TEST_MAC_ADDR assert len(sent_bytes) == 1 @@ -144,8 +155,8 @@ def test_request_status(caplog, node, resp_st): def test_request_status_having_ind_up(caplog, node, ind_up, resp_st): # put IND_UP before RESP_ST so that they are received at once test_status = NodeStatus.IDLE - node.put_test_recv_bytes(hdlcify(ind_up) - + hdlcify(resp_st(test_status))) + node.put_test_recv_bytes(_hdlcify(ind_up) + + _hdlcify(resp_st(test_status))) # even in this case, node should identify RESP_ST and process it # properly. IND_UP should be ignored @@ -171,8 +182,8 @@ def test_request_status_duplicate_response(caplog, node, resp_st): # put two RESP_ST test_status_1 = NodeStatus.RX test_status_2 = NodeStatus.IDLE - node.put_test_recv_bytes(hdlcify(resp_st(test_status_1)) - + hdlcify(resp_st(test_status_2))) + node.put_test_recv_bytes(_hdlcify(resp_st(test_status_1)) + + _hdlcify(resp_st(test_status_2))) status, mac_addr = node.request_status() assert status == test_status_1 @@ -189,12 +200,12 @@ def test_request_status_duplicate_response(caplog, node, resp_st): == ('root', logging.INFO, 'Recv RESP_ST from {0}'.format(TEST_NODE_ID))) - assert node.serial_leftover == hdlcify(resp_st(test_status_2)) + assert node.serial_leftover == _hdlcify(resp_st(test_status_2)) def test_request_status_with_retries(caplog, node, resp_st): retry_count = 1 test_status = NodeStatus.IDLE - node.put_test_recv_bytes(hdlcify(resp_st(test_status))) + node.put_test_recv_bytes(_hdlcify(resp_st(test_status))) node.set_retry_count(retry_count) status, mac_addr = node.request_status() @@ -234,7 +245,7 @@ def test_request_status_timeout(caplog, node): def test_request_idle(caplog, node, resp_idle): node.status = NodeStatus.RX - node.put_test_recv_bytes(hdlcify(resp_idle)) + node.put_test_recv_bytes(_hdlcify(resp_idle)) node.request_idle() assert node.status == NodeStatus.IDLE @@ -258,7 +269,7 @@ def test_request_idle_timeout(caplog, node, resp_idle): 'Node {0} doesn\'t respond to REQ_IDLE'.format(TEST_NODE_ID))) def test_wait_ind_up(caplog, node, ind_up): - node.put_test_recv_bytes(hdlcify(ind_up)) + node.put_test_recv_bytes(_hdlcify(ind_up)) node.wait_ind_up() assert len(caplog.record_tuples) == 2 @@ -285,7 +296,7 @@ def test_wait_ind_up_timeout(caplog, node, ind_up): 'No IND_UP from {0}'.format(TEST_NODE_ID))) def test_start_tx(caplog, node, resp_tx): - node.put_test_recv_bytes(hdlcify(resp_tx)) + node.put_test_recv_bytes(_hdlcify(resp_tx)) node.start_tx(TEST_CHANNEL, TEST_TRANS_CTR) assert node.status == NodeStatus.TX @@ -301,8 +312,8 @@ def test_start_tx(caplog, node, resp_tx): def test_start_tx_having_ind_txdone(caplog, node, resp_tx, ind_txdone): # IND_TXDONE may follow RESP_TX especially when using opentestbed - node.put_test_recv_bytes(hdlcify(resp_tx) - +hdlcify(ind_txdone)) + node.put_test_recv_bytes(_hdlcify(resp_tx) + +_hdlcify(ind_txdone)) node.start_tx(TEST_CHANNEL, TEST_TRANS_CTR) assert len(caplog.record_tuples) == 2 @@ -316,7 +327,7 @@ def test_start_tx_having_ind_txdone(caplog, node, resp_tx, ind_txdone): 'Recv RESP_TX from {0}'.format(TEST_NODE_ID))) # IND_TXDONE should be ignored and saved in serial_leftover - assert node.serial_leftover == hdlcify(ind_txdone) + assert node.serial_leftover == _hdlcify(ind_txdone) def test_start_tx_timeout(caplog, node, resp_st): def _platform_recv(self): @@ -327,7 +338,7 @@ def _platform_recv(self): if self.req_count % 2: # odd, RESP_TX is expected return b'' # return nothing else: - return hdlcify(resp_st(NodeStatus.IDLE)) + return _hdlcify(resp_st(NodeStatus.IDLE)) node._platform_recv = types.MethodType(_platform_recv, node) with pytest.raises(RuntimeError): @@ -353,7 +364,7 @@ def _platform_recv(self): # return nothing for the first REQ_TX return b'' elif self.req_count == 2: - return hdlcify(resp_tx) + return _hdlcify(resp_tx) else: assert False # shouldn't come @@ -383,7 +394,7 @@ def _platform_recv(self): # return nothing for the first REQ_TX return b'' elif self.req_count == 2: - return hdlcify(ind_txdone) + return _hdlcify(ind_txdone) else: assert False # shouldn't come @@ -405,7 +416,7 @@ def _platform_recv(self): def test_wait_tx_done(caplog, node, ind_txdone, resp_idle): node.status = NodeStatus.TX - node.put_test_recv_bytes(hdlcify(ind_txdone) + hdlcify(resp_idle)) + node.put_test_recv_bytes(_hdlcify(ind_txdone) + _hdlcify(resp_idle)) node.wait_tx_done() assert node.status == NodeStatus.IDLE @@ -429,9 +440,9 @@ def test_wait_tx_done(caplog, node, ind_txdone, resp_idle): def test_wait_tx_done_resp_st(caplog, node, resp_st, ind_txdone, resp_idle): # RESP_TX may be followed by IND_TXDONE when REQ_TX is re-sent - node.put_test_recv_bytes(hdlcify(resp_st(NodeStatus.TX)) - + hdlcify(ind_txdone) - + hdlcify(resp_idle)) + node.put_test_recv_bytes(_hdlcify(resp_st(NodeStatus.TX)) + + _hdlcify(ind_txdone) + + _hdlcify(resp_idle)) node.wait_tx_done() # RESP_TX should be ignored @@ -482,7 +493,7 @@ def test_wait_tx_done_timeout(caplog, node, resp_idle): assert node.current_tx_mac_addr is None def test_start_rx(caplog, node, resp_rx): - node.put_test_recv_bytes(hdlcify(resp_rx)) + node.put_test_recv_bytes(_hdlcify(resp_rx)) node.start_rx(TEST_CHANNEL, TEST_MAC_ADDR, TEST_TRANS_CTR) assert node.status == NodeStatus.RX @@ -502,8 +513,8 @@ def test_start_rx(caplog, node, resp_rx): def test_start_rx_done_duplicate_response(caplog, node, resp_rx): # two RESP_RX are received at once - node.put_test_recv_bytes(hdlcify(resp_rx) - + hdlcify(resp_rx)) + node.put_test_recv_bytes(_hdlcify(resp_rx) + + _hdlcify(resp_rx)) node.start_rx(TEST_CHANNEL, TEST_MAC_ADDR, TEST_TRANS_CTR) # stop the thread directly node.status = NodeStatus.IDLE @@ -542,7 +553,7 @@ def test_start_rx_timeout(caplog, node): def test_keep_receiving(caplog, node, resp_rx, ind_rx, resp_idle): def _platform_recv_ind_rx(self): if self.get_sent_bytes(): # expect this is REQ_RX - ret = hdlcify(resp_rx) + ret = _hdlcify(resp_rx) else: time.sleep(0.10) if hasattr(self, 'pkctr'): @@ -555,7 +566,7 @@ def _platform_recv_ind_rx(self): assert self.pkctr < 2**16 # incomplete rx_record which doesn't have msg_type - rx_record = hdlcify(ind_rx(self.pkctr)) + rx_record = _hdlcify(ind_rx(self.pkctr)) if self.pkctr == 0: ret = rx_record + HDLC_FLAG @@ -605,13 +616,13 @@ def test_duplicate_ind_rx(caplog, node, ind_rx): + '(pkctr:{0})'.format(test_pkctr))) def test_stop_rx(caplog, node, resp_rx, resp_idle): - node.put_test_recv_bytes(hdlcify(resp_rx)) + node.put_test_recv_bytes(_hdlcify(resp_rx)) node.start_rx(TEST_CHANNEL, TEST_MAC_ADDR, TEST_TRANS_CTR) def _platform_recv(self): if self.sent_bytes and (self.sent_bytes[1] == MsgType.REQ_IDLE): self.sent_bytes = b'' - return hdlcify(resp_idle) + return _hdlcify(resp_idle) else: self.sent_bytes = b'' return b'' From 2d6be867c4432e928bbd0a6408bf7b52001b19df Mon Sep 17 00:00:00 2001 From: Yasuyuki Tanaka Date: Wed, 29 May 2019 12:45:01 +0200 Subject: [PATCH 30/50] hdlc: handle byte-drops in an HDLC frame Refer to test_recv_corrupt_resp_rx_{1,2,3}() in test_node.py as examples. --- mercator/hdlc.py | 2 +- mercator/node.py | 39 ++++++++++++++++++++++++++------ tests/test_node.py | 55 +++++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 87 insertions(+), 9 deletions(-) diff --git a/mercator/hdlc.py b/mercator/hdlc.py index 543e86d471..4ff7ec7af7 100644 --- a/mercator/hdlc.py +++ b/mercator/hdlc.py @@ -1,7 +1,7 @@ class HdlcException(Exception): pass -HDLC_MIN_FRAME_LEN = 3 # DATA(>1)|CRC(2) +HDLC_MIN_BODY_LEN = 3 # DATA(>1)|CRC(2) HDLC_FLAG = b'\x7e' HDLC_FLAG_ESCAPED = b'\x5e' diff --git a/mercator/node.py b/mercator/node.py index 0130477f59..a07b88842e 100644 --- a/mercator/node.py +++ b/mercator/node.py @@ -9,8 +9,7 @@ from mercator.hdlc import (hdlc_calc_crc, hdlc_verify_crc, hdlc_escape, hdlc_unescape, - HDLC_FLAG) -from mercator.hdlc import HDLC_FLAG, HDLC_MIN_FRAME_LEN + HDLC_FLAG, HDLC_MIN_BODY_LEN) from mercator.utils import restore_xon_xoff, OSName class MsgType(enum.IntEnum): @@ -448,9 +447,8 @@ def _recv_msg(self): hdlc_frame_end_index = -1 # recv() until we have a complete message which should be - # longer than one byte long, and should end with HDLC_FLAG - while ((len(serial_bytes) < HDLC_MIN_FRAME_LEN) or - (hdlc_frame_end_index == -1)): + # surrounded by HDLC_FLAG, and larger than 2 bytes + while hdlc_frame_end_index == -1: chunk = self._platform_recv() if chunk: @@ -458,12 +456,31 @@ def _recv_msg(self): + '{0}'.format(chunk.hex())) if serial_bytes or chunk.startswith(HDLC_FLAG): serial_bytes += chunk + garbage = b'' + elif chunk.find(HDLC_FLAG) == -1: + # no HDLC_FLAG is found + garbage = serial_bytes else: + # found at least one HDLC_FLAG in chunk + hdlc_flag_index = chunk.find(HDLC_FLAG) + garbage = chunk[:hdlc_flag_index] + serial_bytes += chunk[hdlc_flag_index:] + + if garbage: # garbage; recv() again logging.error('Discard chunk from ' + '{0} '.format(self.id) + 'since it seems garbage: ' + '{0}'.format(chunk.hex())) + + if serial_bytes.find(HDLC_FLAG+HDLC_FLAG) == -1: + # do nothing + pass + else: + # if we have two HDLC_FLAG side by side, remove + # one of them + serial_bytes = serial_bytes.replace(HDLC_FLAG+HDLC_FLAG, + HDLC_FLAG) else: # no data is received self.serial_leftover = serial_bytes @@ -477,7 +494,9 @@ def _recv_msg(self): # serial_leftover if serial_bytes: assert hdlc_frame_end_index > 0 - next_hdlc_frame_start_index = hdlc_frame_end_index + 1 + # we will use the end of HDLC_FLAG as the start of a next + # frame + next_hdlc_frame_start_index = hdlc_frame_end_index assert next_hdlc_frame_start_index <= len(serial_bytes) self.serial_leftover = ( serial_bytes[next_hdlc_frame_start_index:] @@ -510,13 +529,19 @@ def _recv_msg(self): # retrieve a Mercator message in the HDLC frame if hdlc_frame: + assert hdlc_frame.startswith(HDLC_FLAG) + assert not hdlc_frame.endswith(HDLC_FLAG) if self.platform.firmware_os_name == OSName.OpenWSN: hdlc_frame = restore_xon_xoff(hdlc_frame) logging.debug('Recv HDLC frame(s) from {0}: '.format(self.id) + '{0}'.format(hdlc_frame.hex())) - hdlc_body = hdlc_frame[1:-1] + hdlc_body = hdlc_frame[1:] hdlc_body = hdlc_unescape(hdlc_body) + if len(hdlc_body) < HDLC_MIN_BODY_LEN: + # invalid length + msg = b'' if hdlc_verify_crc(hdlc_body): + assert len(hdlc_body) > 2 msg = hdlc_body[:-2] # remove CRC else: msg = b'' diff --git a/tests/test_node.py b/tests/test_node.py index 58c7fbe7be..ed8f28b075 100644 --- a/tests/test_node.py +++ b/tests/test_node.py @@ -531,7 +531,7 @@ def test_start_rx_done_duplicate_response(caplog, node, resp_rx): 'Recv RESP_RX from {0}'.format(TEST_NODE_ID))) # the second RESP_RX should be handled in _store_rx_records() and # ignored - assert not node.serial_leftover + assert node.serial_leftover == HDLC_FLAG assert (caplog.record_tuples[2] == ('root', logging.INFO, @@ -550,6 +550,59 @@ def test_start_rx_timeout(caplog, node): logging.CRITICAL, 'Node {0} doesn\'t respond to REQ_RX'.format(TEST_NODE_ID))) +def test_recv_corrupt_resp_rx_1(caplog, node): + # there are two HDLC frames of RESP_RX, but the first one has two + # missing bytes: 0x3a and 0x7e + test_bytes = b'\x7e\x0c\x14\x7e\x0c\x14\x3a\x7e' + node.current_channel = TEST_CHANNEL + node.current_trans_ctr = TEST_TRANS_CTR + node.current_tx_mac_addr = TEST_MAC_ADDR + + caplog.set_level(logging.DEBUG) + node.put_test_recv_bytes(test_bytes) + result = node._issue_command(node._send_req_rx, node._recv_resp_rx, + retry=False) + # the first one is corrupted + assert not result + result = node._issue_command(node._send_req_rx, node._recv_resp_rx, + retry=False) + # the second one is fine + assert result and result[0] + +def test_recv_corrupt_resp_rx_2(caplog, node): + # there are two HDLC frames of RESP_RX, but the first one doesn't + # have the leading 0x7e (HDLC_FLAG) + test_bytes = b'\x0c\x14\x3a\x7e\x7e\x0c\x14\x3a\x7e' + node.current_channel = TEST_CHANNEL + node.current_trans_ctr = TEST_TRANS_CTR + node.current_tx_mac_addr = TEST_MAC_ADDR + + caplog.set_level(logging.DEBUG) + node.put_test_recv_bytes(test_bytes) + result = node._issue_command(node._send_req_rx, node._recv_resp_rx, + retry=False) + # the first part of the recv bytes is dropped in node._recv_msg() + assert result and result[0] + +def test_recv_corrupt_resp_rx_3(caplog, node): + # there are two HDLC frames of RESP_RX, but the first one lost its + # content, which is msg_type 0xc0 + test_bytes = b'\x7e\x14\x3a\x7e\x0c\x14\x3a\x7e' + node.current_channel = TEST_CHANNEL + node.current_trans_ctr = TEST_TRANS_CTR + node.current_tx_mac_addr = TEST_MAC_ADDR + + caplog.set_level(logging.DEBUG) + node.put_test_recv_bytes(test_bytes) + result = node._issue_command(node._send_req_rx, node._recv_resp_rx, + retry=False) + # the first one is corrupted + assert not result + result = node._issue_command(node._send_req_rx, node._recv_resp_rx, + retry=False) + # the second one is fine + assert result and result[0] + def test_keep_receiving(caplog, node, resp_rx, ind_rx, resp_idle): def _platform_recv_ind_rx(self): if self.get_sent_bytes(): # expect this is REQ_RX From b2bebe75a4fa2c82ac6cd232bd1a584beee75c09 Mon Sep 17 00:00:00 2001 From: Yasuyuki Tanaka Date: Tue, 21 May 2019 17:18:35 +0200 Subject: [PATCH 31/50] Update README.md --- README.md | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 380debf969..2525720f14 100644 --- a/README.md +++ b/README.md @@ -8,11 +8,23 @@ * **dense in frequency**, meaning the connectivity is assessed for each of the 16 IEEE802.15.4 frequencies; it allows one to see how connectivity is affected by the communication frequency. ## Get Mercator -1. Make sure you have Python 3 installed (Python 2 is not supported) +1. Make sure you have Python 3.7 or above installed (Python 2 is not supported) 1. Clone or download Mercator repository 1. Move into your local Mercator repository -1. Install required Python packages: `$ pip install -r requirements.txt` +1. Install Mercator: `$ pip install . -r requirements.txt` -## How to Run Mercator +## How to Run 1. Edit mercator.yml as you like -1. Run `mercator.py` +1. Run `$ mercator` +1. You will have `output.jsonl.gz`, which is a raw output file +1. You can convert the raw file to a K7 file; run `$ mercator-k7conv -l grenoble output.jsonl.gz` + +## How to Develop +1. Install Mercator in "editable mode": `$ pip install -e . -r requirements.txt` +1. Edit the source code +1. Run test: `$ pytest -x` +1. Open a PR if you want :-) + +## Useful Options +* You can get a sample mercator.yml by `-C` option: `$ mercator -C iotlab` +* You can program a firmware to nodes in your OpenTestbed by `-p` option: `$ mercator -p` From f851cc3a5f4919aae005d67116f253b70d1b3150 Mon Sep 17 00:00:00 2001 From: Yasuyuki Tanaka Date: Tue, 21 May 2019 17:20:48 +0200 Subject: [PATCH 32/50] Add LICENSE for OpenWSN firmwares (openwsn-fw) --- firmwares/LICENSE.md | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 firmwares/LICENSE.md diff --git a/firmwares/LICENSE.md b/firmwares/LICENSE.md new file mode 100644 index 0000000000..d2560ff51b --- /dev/null +++ b/firmwares/LICENSE.md @@ -0,0 +1,29 @@ +Copyright (c), Regents of the University of California. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + - Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + - Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + - Neither the name of the Regents of the University of California nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + From 420512749e30121426966033ff8e924e2abc700c Mon Sep 17 00:00:00 2001 From: Yasuyuki Tanaka Date: Tue, 21 May 2019 17:24:27 +0200 Subject: [PATCH 33/50] Update .gitignore --- .gitignore | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index a0f0e5d886..34ae8c8766 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,6 @@ *.pyc *.log -.idea/ +*.log.* +*.jsonl.gz +*.k7.gz +mercator.egg-info From ebd5235b7f15e5b6461ed864a90d0415d208d085 Mon Sep 17 00:00:00 2001 From: Yasuyuki Tanaka Date: Wed, 22 May 2019 00:14:30 +0200 Subject: [PATCH 34/50] Add firmwares/README.md --- firmwares/README.md | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 firmwares/README.md diff --git a/firmwares/README.md b/firmwares/README.md new file mode 100644 index 0000000000..ac9e1d37fe --- /dev/null +++ b/firmwares/README.md @@ -0,0 +1,29 @@ +# Pre-built OpenWSN firmwares for Mercator + +They are distributed under OpenWSN's [LICENSE](./LICENSE.md). + +| file name | board | toolchain | project | +|----------------------------------------------------------------|------------------|-----------|--------------| +| [openwsn-iot-lab_M3.elf](openwsn-iot-lab_M3.elf) | iot-lab_M3 | armgcc | oos_mercator | +| [openwsn-openmote-b-24ghz.ihex](openwsn-openmote-b-24ghz.ihex) | openmote-b-24ghz | armgcc | oos_mercator | + + +## Source Code + +* repository: https://github.com/openwsn-berkeley/openwsn-fw +* commit hash: `fffffff` + +## How to Build + +If you have all the tools installed on your machine, you can build the +firmwares by yourself: + +``` shell +$ mkdir openwsn-fw; cd openwsn-fw +$ git clone -b develop https://github.com/openwsn-berkeley/openwsn-fw . +$ git checkout (commit_hash) +$ scons board=iot-lab_M3 toolchain=armgcc oos_mercator +$ cp -p build/iot-lab_M3_armgcc/projects/common/03oos_mercator_prog openwsn-iot-lab_M3.elf +$ scons board=openmote-b-24ghz toolchain=armgcc oos_mercator +$ cp -p build/openmote-b-24ghz_armgcc/projects/common/03oos_mercator_prog.ihex openwsn-openmote-b-24ghz.ihex +``` From 5ec78f433e7b7ae22827c5e5bbf704b04a6d18c5 Mon Sep 17 00:00:00 2001 From: Yasuyuki Tanaka Date: Thu, 23 May 2019 21:55:51 +0200 Subject: [PATCH 35/50] Add build-firmwares.sh --- build-firmwares.sh | 105 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100755 build-firmwares.sh diff --git a/build-firmwares.sh b/build-firmwares.sh new file mode 100755 index 0000000000..da7e157b9e --- /dev/null +++ b/build-firmwares.sh @@ -0,0 +1,105 @@ +#!/bin/sh + +IOTLAB_M3="iot-lab_M3" +OPENMOTE_B="openmote-b-24ghz" + +BOARDS="${IOTLAB_M3} ${OPENMOTE_B}" +TOOLCHAIN='armgcc' + +# usage +usage() { + echo "Usage: ./build-firmwares.sh OPENWSN_FW_LOCAL_REPO" + echo "" + echo " OPENWSN_FW_LOCAL_REPO: path to opewsn-fw local repository" +} +if [ $0 != "./build-firmwares.sh" ]; then + echo "ERROR: build-firmware.sh must be executed at mercator dir" + echo "" + usage + exit 1 +fi +if [ $# -ne 1 ]; then + usage + exit 1 +fi + +# identify openwsn-fw directory +OPENWSN_FW_LOCAL_REPO=$1 +if [ ! -d ${OPENWSN_FW_LOCAL_REPO} ]; then + echo "${OPENWSN_FW_LOCAL_REPO} is not found" + exit 1 +fi +echo ${OPENWSN_FW_LOCAL_REPO} | grep -E '^/' > /dev/null +if [ $? -ne 0 ]; then + # convert it to the absolute path + WORKING_DIR_PATH=`pwd` + OPENWSN_FW_LOCAL_REPO="${WORKING_DIR_PATH}/${OPENWSN_FW_LOCAL_REPO}" +fi + + +# check docker +which docker > /dev/null 2>&1 +if [ $? -eq 1 ]; then + echo "Need docker installed" + exit 1 +fi + +# check git +which git > /dev/null 2>&1 +if [ $? -eq 1 ]; then + echo "Need git installed" + exit 1 +fi + +# identify the commit hash value +COMMIT_HASH=`cd ${OPENWSN_FW_LOCAL_REPO}; \ + git rev-parse --short HEAD 2> /dev/null` +if [ $? -ne 0 ]; then + echo "Seems $1 is not an openwsn-fw git repository" + echo "Cannot build firmwares" + exit 1 +fi + +# build firmwares and copy them under 'firmware' directory +DOCKER_SCONS_CMD="docker run" +DOCKER_SCONS_CMD+=" --mount type=bind," +DOCKER_SCONS_CMD+="source=${OPENWSN_FW_LOCAL_REPO}," +DOCKER_SCONS_CMD+="destination=/home/user/openwsn-fw" +DOCKER_SCONS_CMD+=" -ti yatch/openwsn-docker scons" +TIMESTAMP=`date +%Y%m%d-%H%M%S` +BUILD_LOG_FILE="build-firmwares-${TIMESTAMP}.log" + +echo "Create ${BUILD_LOG_FILE}" +touch ${BUILD_LOG_FILE} +for board in ${BOARDS}; do + echo "Build a firmware for ${board}..." + scons_args="board=${board} toolchain=${TOOLCHAIN} oos_mercator" + ${DOCKER_SCONS_CMD} --clean ${scons_args} >> ${BUILD_LOG_FILE} + ${DOCKER_SCONS_CMD} ${scons_args} >> ${BUILD_LOG_FILE} + if [ $? -ne 0 ]; then + echo "" + echo "ERROR: Build failed for ${board}..." + echo "Check ${BUILD_LOG_FILE}" + exit 1 + fi + + echo "Copy a firmware..." + src_path=${OPENWSN_FW_LOCAL_REPO} + src_path+="/build/${board}_${TOOLCHAIN}/projects/common/03oos_mercator_prog" + dst_path="./firmwares/openwsn-${board}" + if [ ${board} = ${IOTLAB_M3} ]; then + dst_path+=".elf" + fi + if [ ${board} = ${OPENMOTE_B} ]; then + src_path+=".ihex" + dst_path+=".ihex" + fi + cp -p ${src_path} ${dst_path} +done +echo "Build logs can be found in ${BUILD_LOG_FILE}" + +# update firmwares/README.md +echo "Update the commit hash value in firmwares/README.md" +sed -i \ + -E 's/commit hash: `[0-9a-f]\{7\}`/commit hash: `'${COMMIT_HASH}'`/' \ + firmwares/README.md From 5fa4d7bcad5c2acb23b23bae9f61c475bc2630e3 Mon Sep 17 00:00:00 2001 From: Yasuyuki Tanaka Date: Fri, 24 May 2019 11:34:02 +0200 Subject: [PATCH 36/50] logging: integrate logging.yml into mercator.yml --- logging.yml | 14 -------------- mercator.yml | 16 ++++++++++++++++ mercator/__main__.py | 33 +++++++++++---------------------- 3 files changed, 27 insertions(+), 36 deletions(-) delete mode 100644 logging.yml diff --git a/logging.yml b/logging.yml deleted file mode 100644 index e3b55eafc8..0000000000 --- a/logging.yml +++ /dev/null @@ -1,14 +0,0 @@ -version: 1 -formatters: - default: - format: '%(asctime)s: [%(levelname)s] %(message)s' -handlers: - file: - class: logging.handlers.RotatingFileHandler - formatter: default - filename: mercator.log - maxBytes: 1048576 # 1MB - backupCount: 2 -root: - level: INFO - handlers: [file] diff --git a/mercator.yml b/mercator.yml index b8cdc318f3..c9093543bf 100644 --- a/mercator.yml +++ b/mercator.yml @@ -21,3 +21,19 @@ platform: os: OpenWSN archi: M3 path: firmwares/openwsn-iot-lab_M3.elf + +logging: + version: 1 + formatters: + default: + format: '%(asctime)s: [%(levelname)s] %(message)s' + handlers: + file: + class: logging.handlers.RotatingFileHandler + formatter: default + filename: mercator.log + maxBytes: 1048576 # 1MB + backupCount: 2 + root: + level: INFO + handlers: [file] diff --git a/mercator/__main__.py b/mercator/__main__.py index 97f7443da4..5fbd75c4ca 100644 --- a/mercator/__main__.py +++ b/mercator/__main__.py @@ -20,23 +20,16 @@ class SigIntException(Exception): pass -def _init_logger(logging_conf_path): - if not os.path.exists(logging_conf_path): - print_bold('{0} is not found'.format(logging_conf_path)) - print_bold('use -l option to specify the path to your logging.yml') - raise ValueError('logging.yml is not found') - - with open(logging_conf_path, 'r') as f: - try: - config = yaml.safe_load(f) - logging.config.dictConfig(config) - except yaml.YAMLError as err: - print_bold('{0} is not a valid YAML file'.format(config_file_path)) - exit(1) - except ValueError as err: - print_bold('{0} is not loaded succesfully'.format(config_file_path)) - print(str(err)) - exit(1) +def _init_logger(config): + try: + logging.config.dictConfig(config) + except yaml.YAMLError as err: + print_bold('{0} is not a valid YAML file'.format(config_file_path)) + exit(1) + except ValueError as err: + print_bold('logging config is not loaded succesfully') + print(str(err)) + exit(1) def _parse_args(): parser = argparse.ArgumentParser() @@ -58,9 +51,6 @@ def _parse_args(): parser.add_argument('-f', dest='overwrite_out_file', help='overwrite an existing file', default=False, action='store_true') - parser.add_argument('-l', dest='logging_conf_path', - help='path to logging.yml', - type=str, default='./logging.yml') parser.add_argument('-q', dest='quiet', help='suppress console outputs', action='store_true') return parser.parse_args() @@ -235,8 +225,6 @@ def _end_of_measurement(pbar, trans_ctr, channel, node_idx, num_nodes): def main(): args = _parse_args() - _init_logger(args.logging_conf_path) - if args.dump_sample_yml_file: module_name = 'mercator.platform.{0}'.format(args.dump_sample_yml_file) platform_module = import_module(module_name) @@ -248,6 +236,7 @@ def main(): MercatorHalo.disable() config = _read_config(args.config) + _init_logger(config['logging']) outfile = Outfile(args.out_file_path, config, args.overwrite_out_file) logging.info('Start Mercator at ' From 7d81c4d2701188b5b42876018f67aac2646fb2c5 Mon Sep 17 00:00:00 2001 From: Yasuyuki Tanaka Date: Wed, 22 May 2019 14:01:22 +0200 Subject: [PATCH 37/50] update firmwares --- firmwares/README.md | 2 +- firmwares/openwsn-iot-lab_M3.elf | Bin 737052 -> 737064 bytes firmwares/openwsn-openmote-b-24ghz.ihex | 3460 +++++++++++------------ 3 files changed, 1731 insertions(+), 1731 deletions(-) diff --git a/firmwares/README.md b/firmwares/README.md index ac9e1d37fe..740f70c694 100644 --- a/firmwares/README.md +++ b/firmwares/README.md @@ -11,7 +11,7 @@ They are distributed under OpenWSN's [LICENSE](./LICENSE.md). ## Source Code * repository: https://github.com/openwsn-berkeley/openwsn-fw -* commit hash: `fffffff` +* commit hash: `3f2ebe2a` ## How to Build diff --git a/firmwares/openwsn-iot-lab_M3.elf b/firmwares/openwsn-iot-lab_M3.elf index 0433592f2c31dfd6bfa9f6e5199d5fe4318a7e38..44f238699f0ce6983b92f288aab5348d383932dc 100755 GIT binary patch delta 25434 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 delta 25457 zcmZX630zgx_W#-E+>4hBC?E(Z(`8UlP*5CDRB%?DFiac+!>P1zDjdNyhnJS7w$!w= zG#k{kw5z30EG_L>YOg_i)zi|_ep=U_B`E6uyUxJb_P>2_@9%f5z4qE`4`-i!_wDt& zX&djRt&A5*t2~J@iz%mH&w^+*9)EJ<)fqQ!EKuHb-&Q{q0*X@`Wg* zOF|@z)fAwL=^@H(t(VfmaaxUc_zG`3e5dI-RSXRsbjP5B<5l03JN10mZ_`Ru44^no ztaR^F-c~(oA3xt7`d$+S0Sk0xaa#4AqHKro#LTbe(oDR4E7#-bQ_nZEj#*4kIz;=1 zkJPe?^Yow_N`~rNQmgvP=!ipHD~P`xo-YzclnGyt+lueMwTf@s9mR7mUh%z)Y8v;d zpWhg=zwQL}5x$JtK-hk+n*ZHU9nd$hkLv4Hqxd4L8+hD(6rXxWL4)o&MGI&D8r9c< zTKS0wM1NZ7C%j@Tb*d+xNsg{{=Z`E`TR6|S@|%=L_ELN^?>Wyq!8uxpGs5>mt)K5x z`oDT&ocM+cTw;BLr)vCs-R{kqI1<`^zGSL#i9|7hV*Ev%*g~EC#W2y9*7}Ry5i4%{ z`A*!mG6U-H`1V9sLSA2Xw&pIq79>8*zJA-4KXR#Pv*8`T{1KIYzJ+L{cE`^bcSkuK z+5S+k%0tTGXbh#bLWy64zt#9#g}+eRQeQ+>q~^a{eKEcn{=J;Bp(rJ=2p>bIZ`g37*V*I_EJ8m~NtBusF?NQrE@9X6A!Z)_MVgBmspEF*3 zC#qLNxc(qqnvB1twJZzd8Z+2ocmAu*P`OJdB75Dt`2vQ;?FF~z`Sokq8W$Zzkci61NoPP{!`OZ;GZz3YKmRIg}Q`uvXSX^ixz zyTOnHrN@ajVg;4NiE#h1XdzGa`BV`nBK(H{#sfY^FGDK2d-uhO z7gdo>1qs3ZI4z4r#)*j%jm=7O(0#2nAoV9ejQ z@2L2<{EmVM+`K#JMrE<^wa~SNF92zA2uq&7EAa2myUO8gcu-Ko%R~*9C*gY+oba8z ztMziVxOE1OK)ybux~>|%uu-g?RBWAIY!6LM6m2V-qGd)*7glpUCu{lN&i9nVd9bFL z#o!y(n6dX*HuawB>vW6j`W8z_(_0F1hmiB!Qjr^bOQ2s>Ur`M&WQy-%Ez&lfxNoPT zZ>OSfr*`Vaefz)L_ikoVa*}A{yo2J8)956zv)LEb_ilDZ4PiBEuQ?O{-8iD(>TZ5# z8|62d6yC2pEHx|%J+Jzll$k7IBD$blSlX!woF!NQl1VdX%>dL!k**!|w-#7>owiMPuzoXa}(is}`Q@ex^*3l@X8 zj^&{pR1*dkLtocx1ja#anu^Z;@1k}mR^N*>tErgT;DSOl(rl)43f4nHUbj zlZ9NkzVcU}7M={CRElaQJmCp=3^neRnE&F$FWzZf7I{7qqDUIlOvDI(n$k=Zh+%ZN znP`))AmC1ToqJbrPp?kuU@TEM~PZ}Y3LwwEB7jID~GWz9xUt4 zLpm3aKZmb3Mi!P1UA}O)@;26?smkF%o(#~VoK*3c*z0{ORd@zEJKer@a}S+)Qsg_M zkex%Gax6vFG^bo-I?vp?b+ZlaDHq$t8#H{D=qVP{%d*hWZbHsDblIpVFh2FJu#G{K= zt&Crzz9#yt-L9sJrTfmPQ|oJ)83U+S12wyTt1d|y3tMGmE?hX=qq@Dz8>lCpqS!k; zT)p8G`@I93sQ>2_K5s{l`dU44!+Rk`4RDGg@3nNbjVf}yo(y%LL!9(}lcj#_5QDuh zW#gGDa=o8+Q4c%BMejeltA98}xp!V)^;z2&cVM}i#|2i- zQ}g`94(}HW)nfL$%`)}2Q)GBsJ*WQDUsQR2Tc;+}6C1rDo7L(dv54He)MT-oGLVF> zo2$5*`uA3qfPq7Uu&L6vdME5s|K*6C6{;u>r9bvn4iPX#D1k8zoJt35vNk&vSCx10 zyXrIkVmEzv5VrP{dI+|T!d9YT>nDG6L+U5$<+%#_Y ziH#Kv6eV?1sUjMxZ-G!(O=vz26^SsFCF-iO=GkF@;pzvv^s(lS5Wq&J@{>vf$E5&8 zNx8}Fzr>gz#nlZPLb368`t(D!amDYtk;%>f*%0#2g;B+mMir;TpSpBn+DR14g8lSK ziugmU&}%AFV7nPY(!jAjP*GYIgu=onqCZp-8PwnjR+JWBuydb?f9XYLD6N`>15eTG z=@6*6>V@gfA7wQ6x<-5*uRa))$;Nbo)a$Gn^g2G}&KqZPiu#K-_xT zxT%WxnX`sw9&3KdR=>@KCL65~8>c~@sCUPIIBTdLL%cK3vC&N_F2xn8w{SmeF0Bvp zC8MJrN!0u8Wdlt#D%{L!>Z-|T#x}MR-UtPrudQdb;>WuBR{t1MVO2N`zO~uNfm*N` zs-yH)Wd6*~PVEDtNGD>@D~7MrIBWQtiCWqe@Yon122Ji`v9Zl4_OstgKgG4kAb#c6 zw95rC*dQ8U2nLCaBrwy4KVb2`k8G^Rtb_wX_GXP0_;K5hS8P2!Ej zXGlY9=PRxRo(%4R9relJBJC6gL6|r7lsZ)ig+^B-VX z>~lN@roO>=nc3?ou49y&u;@@K>(zOa5@mR^-#g-rD*Qz}jrtaqrO;DILbEFBd>N|y zl1m3z+@Jo7B)ACT#3ryHg14c@{S@{eH9f4D>oBJN&?bg;pLghg)LIvIkwY$`crleD z37x#4&iY{8dO5w#;zi!CE~+<$SVy1ztQLyNl<B(QzByp5BaT}{MExN3(78w+IMeWizFvJR2J2PN+gROwI zGXv(UW0d8X$PQ&SMv~d2uVRcQ-SEB)bAhPqhd<%-I&%DlCT&HN^i?rv;PWWs)OJ%R z@LdmrZ|04L+htv16jx)t9Vv%mK|InL1avW2QUaJL4g}FuCsO;OHZ`dmz5JKjc4Stx zc{ODWX<4 z)n_X*Vl7Wx|AIuMB-zCGa7{Few22!`BnR5WFfNj$*hDub5^vNs&lSal=dw-s#e<0d z&LpsKxYAf9?zF8E#VRpJZK8rTqW9ZGN7iVv!zTP#BWklv{EvyqH8wGciHM~(F`I1+ z51(r@|7Df1GMgC0Dh*3*q6HHnMRkPY&jVknw8Q%>H2BGvce+(#L5AN_XE;Cks2lvSBN2Vh0ls%%~%xK4x?I z{XrNH&JQ(3X*`6!t*6C{Xu1u16-u3U*yu!Px4Ve0G2MHK?X^B$M>JW&_96y@F#0M| z@2jXr*aYc)H4*k5N)H6t?5hdMM!)BxbNK0cIa^U;e9-RM)TubdzlC>`OWUG`o`&4$ zn&3-GsH5wfG&n#@#9nL$lF;(Hz6~A?ivn$U1AH=@H8vYcpg!jx3a_g=CB>-vB3%#A zzHQepQE|0|2V!GDBS=Jpizqu@CzL4kokO`}mz`;rE%%Bbt)m-T(wqn_S)8V^NE&{( z0E-+yxdI11>*mGp@&eirp)JmOCD~fgnxBLP_2Ba$j8&?6b}9((ToA_M-onMioEcOY zsWrocW^N>!n?ai+wFI$-K8n4O!e-aUo3bkWM`{24WvUfP0x8Vu2rylE-g z1~(qFpR`8cQs^3z&@8xMJ~j4Zudc>1VE&`dW`=h_oqeqyJo5o26yq9p#fOEj@Z&OkJqL z^NdiPMYYQjsw8i4TkVu4(&&5#Em6JNoSfNOhNz-;*;=Mrn@W?iwISjx9n99^5@O@( z>|8MIl(tY@lhLAH*xe0t2x_HjjVL})3#XKh+HQ=Pa~-v|-R45eh)nSN-QZs#_J|4> zHAtnmK0h19*O?#R-Ei|X>tGfS@eb~!eJ8|8O7Dzexrl~#*1C#`w3bm89qNq6hSKky z(S*xs6xKyc5f19yMayi>7P3&A*r@E{ZI|-2r>>R_`9>|5(-l`C9v)jU@3y-rbAqdT;_9@lDm39sfvE-fyzoLq$d)EI`!1D`d(~lt&|aWd&2q* zaolElq0ORDYz1Qsp@{43S65M4$AqsK;&*p| z5x<=Fit8+P*pc1=y|i_zTAf3`^wE+;IR*CBx?^uPxUW_QbfhoLwWMD_s#iNwT0b0S zo~D`o5WH9D&3;f_OusRDgc9@7x*;?wAI*xV#raxq;iAtOeNEN*(A-Tq{k7&eUzpHe zdpb0}gB8%Y{|$oklXK{9e=ROLIJwSQ&k)1eu+EC>C`Nt*Z}tFfgNm;GauCc`(%nH? zn}&V5D6S6raEbbF0T#kz7dumr!CDt=Z5Iy4O1PZ155`!VOy?N&r#narGGNkpG{xLQ zE#jaf0gSOk#+chcuGV0bbuJ!<-(ZVru3z3^hHGb0`Ii`^1>UIzTBVB0{&)bc6;X5{ zf|5f8g<3e4zX^qylCRVIg^1=-I?u^O@*9dIjnal{S*ouGjUB4BLDOCUMBx9$NzMxo z;@`8>_Caj|-uyQ`hyqyAIhjFMILV?0!!WLE^Qhf0t&Mst#7 z-9n;X&83VYt$oAOxmMf5uZ}?5v($Aoy9j!CnJ9wI9QvvV-4#ty!(sY-SIQlZ`LvSC zhl9s7NCmNn&;t0>e>fY33G#+cmsmo|| z<{BEyNhvKJjYXvc?E*@S>}?fnG>;2DUJXACOHo&t7_ozHjK;JW+`P`^^znwv#eEgm z=XiqM@OB=fk zLaR7&(Z}Po7FaX>7>AiNf?~#NtHqbJXFQhDV!A#a^F>LkYsLDAXv}1-LcRP5{dcl9AGXI#(aO}zlj!smwBiMFJ%;+9phq5qi@Egb zW0=4x^nZ_`X~7i!IC}1{iIn>|y6gv<1c(#*)tv02Lyx01<@D3zy5o^$y5j>l`JA5O zWF2`qnN3$Y8AG0_NV?I3oHV6pIB`=I67{$7^w(56BixhQR({C*l;4t73m;iL~; z;-o&M&O&mQrf{->_RP{f{h5WB-#$7{ydz%uYf;qQb;9++-&O1Ne7z5i65=y zWIr9LL_vlAsze<{)OP{UQkuU&AGqf^nM~cDLQ+UupMp1|$hij5A_zb4bR{HldU}uwSIiiw8S<4~3 z`Zj`>hduP(=ItD@8uX!EF6b!}e1)M)d@CluEXESf)iOIK)>{utetUcdw@qyWOs zwir8G^JMosY;c^~WN$ap-WTZhJL_}@Td&tPVosl0ugya6`))wT_Mqh(v;qvfA2#4o zS4F`uYV#8JmRp<9jD8ET?(HrIk)toEXycB1D8@ zbxqGwG*`!fPR_m!RqUx+(x5F`6fN39wO%cRijQdZNPS2IpKk(^;iwwC)my+j{);*>Q9bkQUx1cINp@gA|)%%nd z9xxvdErZxkTbP*D(IR|wgo%&(Si}vwz{CR&T0{|v(;zw&Sws$bnCMwz5hp2+iANu{ zh{06C#2XVVB9|605&oz}T%;{bBx8?nIEGyu6Wz)!;y7IZ(PHspi?H6p?r&?_8cTkb zJZE5`;d+ZGr937kZ?K5dR05)fcaud}8}$24PQsz5;ZzQ7VGBcdSVR~dVPXXy^M=M* zy1+#00gKo{;tLSN4_QPpd6?+)u|;H19upgXw1_GyVWRS?MQmKM;0q0Z4*WUs=ZC*~ z-UVN{Xhjfr{!;VrA4`&p{k_S>?xCtk^3ECSZlH=@-e*eP8LAlKJviPStBS4O|4elM z=@60LGgI8<4$;8dZ<@QCDhj+SX1F)2VzsyBlkOh{zQqce<$m3PZ?)c^=ictZ*HL2^ zyN5W$&)$9ia1RRY#NVRi)pspXpA~uaQ}P1q#jDTMcjX1)994IdSISHiEob;gu zFQd8#Y17N7ZZaKu8Jg?p(#!7l;s(WR2B}hKPC{w)W_J^(ekQBeL@PJD9oPq~-Rw?u z>PNU#ve_Ns)Q@-R$P4hL7D4Dj*EhRc;VIzR0xP9PQf4G`jRf&`5i{7<6J6^CbPKO z7OP<%`fV%5UWSKSZbRDNLj$+Do1)L}Y(r&Bjbx3HY^Kq#f!sy&UPA|cXe3`7$***V zNjF_%l|~e_-QC`)pMjZU04G>OsARi4Q7uoP`D@&bsO(F(gEntRk1b+B6RO${@7~n& z{#eG9B$PQ#*S5P`IQ0`T+OomjkTPD!=+ckO==yfFsq#JGT%25$Q_1V7doeBGWDRY3 z9hGGy(ZD_KSbrY(tkj>bfyUcT$Qu|V`k9w*R=4mx6}*8)yh2mnaJNAC*Fy(yV23!t z>hT5!;(79a6KF1_zX`ONroIW6a^HgEM>*dFH=5g;iCpeV3&)qQna)hGjM?7#L zufAgmCS@=tTaWqEAXmaG>|*Vz1I3V92*7EwA9^=K;nw%wiJPJ&`l6pjv3 zspXsQ*gA|OnwQ>kC-||fsyY4hWiyYHoZl=ytp(M8$=%wSfg`h08n6TNhO={Nij`eM zD|WcsB)<;UIxsQ34XRgQ`pFKk+(DOixD)+2i=&qMJKYKXoDanrN&skppc!g$Z#-?-sMizCHheX zUB{T$p?;R3LqAqL-jauPV?BRS&o|OX0Lv6|zHQn=AgpYaosFicVD+*%YI)&pcdTCd zB06BvIFR|lqVdSxZJH~iWGmZ)`XZ~_IGaTScbLBTvgp~}?#8-32kqRAA;>Oe+1XOM zW3ihlc@N^p3OHuc!bE2|!6Yq)w_^ zeS`+Qi>9&SVmtc^ZL-+YI;&f{ilW_U4|g%^x1{jBW>LIBS=n_o&dQe43S|9Q7iUa7 zw|V%4`Qeye3G1vsjr4p%XZ>O1WIlt^_o2a@?N3wp!9Hgv>seiSd1rmh>GV-L0u7zU z!OySzuz0Yxek!C-XkApm~M5!F%pD&dKPKv$X6zOfAl4(HrlfCeE&;Gw&gA zoIT$aTVpCXhQYxwI+wcag&EH0P){!^=4`n^>-lxL>|3mxS9+G6&gG@Lu`a_249^uk zpOj~`fptbv`hIjPXV>H@uKu*(BeOyr=s=`3sA;`;B)%u4DC~}P$+I-+ zs96yXYo0xd=M-1ehxUNhvy15~tL)iP*6Oa;i=&@`$IN=OXuvVkvqxwqvbu&cM%U2u z?Z#036PV&`zD(j@lXx6Iaa(nr*oW-=C@H@|%AbA6wqL*4w%@1N=I2ZNeu>9XS)D&A zCAR*U5}RKq@t;e)Ypku`Wvs1VF7dmhJdX9aE2ecmF-nu^Mz1peV;S{2jTmvhY^uJ}>XzP{YFW}nI2z;?ThAv=vx|?NX7lR|Ua$FU z8hr*WWvkWG>iUggqv`rGtXt|ZUGE@WZQAtvDtvRgT?x)N^=Zq+o6gYldL^Z_=?k-Y zuNky%6=$V&zBZm|7cH7;bPk(&cIJJZ!_+QX@o&VLvtw!Bzuj&8Pv?*$z+IuZ+5^2hD=6E}QWrz4QX!gjr8NU^HGh8CKCbXz3FD zNYa+1QPfwaL_fsT4+nH}d&~b;RTa&Gs$Oe-+GJ&W&=D)UlrCA>f}v214l-^}pkW7*7U3I7XbzXSF+t2u`hw~@a+=kB6< zD(l<+awGXv3kg1|!i_AX?C;!h6@2?rXF=oSPALKA*KQU6)gXOb!d&d~d|RKxz*zR* z2P}ty?~BU*yDDr9|A#1HAgl&(1?wb-biXCc@@fgQT)}NfPONslPO0CcUGXq$(d;K< z+0PVU*-ySpD*Kr$VUBZuV9QO8GhZ%6i1hAfH}>D}27*Z^*bly}2{ArKe6It`@x3Qu zZe9^?De3CaXTKTCeisAFe)BC=+3#`*!|w`Z5eUn1t{??BOsxvo@eB#G{IY~uepSLO z&kei3Jg$w^*<<qqn+PFo=GpP-5 zLtwlt0~r%A4OlO3;+5zq3vvKo zF*as7p9;(JLOO6Br-emy?!3EINKWki(xVi0!5!z}8=!KbtT-F9(H=A$Y88C>P*yuA zVOHbYin9E?gjvql8)bQ|gjue{-!G4pFys|Vv_x>@`$(7#@NG-BV=W`gCCqZZuc?d8 z-g;faEZ-qvwtrN@`ZPE$5v*`S!fc>g!YmK=*cGyzubU#l#~eNqW;x$a)y1Z~kA(C1 zidTP$;0nqm%m(=Kt85^LQh!4C=TcuzF480<6?~P^QsT$OEc0rk^|)9fVXox(0$ZO4 zHDh^Dp9Yo&wZfM)dlrgSJ+3wEblL2mQTi2P9*pk&wf7UwlK?& z(xi(#xlyl0v)_zmziWYIzxkS`?01-i*^T3WtERH4ZJ*`KB@8!0m6N!vX*s|OXDR9u z{ECNNi)OzV%YLN*%YO0QP1&zp3A0)LHqx@EhbP6xET1c3$SahM62S_5w^BAxC1IBH zWlULqQNk?e+nci7k!oX>^S1-G9AC|rN(3wLwNhIF`&3p#GE_;E2v#VjNx!(` z3iw*6u4Yd2atX6tzDp|0S4x=WYb4BOPtrMCXUcKK@*3v;>t5@z{e3A22zgjvpCwjjaBu)j{ikXI=D^^2@-zLPK;I4@zA_irs304|a+%ZuCGFE5iY%d>EO7zsYAQo$AUkO)>dE@77QePbl} z7=3tE!g>oO%;lA~wm!=p5@vaZjVtsQ%q*MG-@S?@%mzv&%my|}nB|)#%<`)e)*X~E z%U$g(2k~fvyIDw;1yP*EM`_kIcdL@zE_N+U^S50{@G*i=E@75eN|VnB^-a%<{D^79hr3aTZ{@>&VAJfoX!kL6hso~|^+F{DJW!VJpx;k{??-{}1`3v@+NkNeH# zNSLdeAz`*wE@77MmN3irN|@zWCCqZ4gduOOr1ZSsfiwxTfl>*xfr&Kyy8H2h4!EEV zgpV=Eb0o~g3MI_NiX_bPr4nZOa*Fx`U-}jP;STfgC3H~u7+rQl!mL|Olm2iIswnPl zt1(?FVXk7Ogjv2u!Yn^3VU{14Fw1X9Sg%&XkYj7r=Y9t=sPF&KrE~vAS4x=e?v*gx z<*zG|;A1rRyo6bPQNmn4qpz*ca{f*e2|jvx6<^Rr-Eha{@x^$FSB^`V%Y7+fw!1&y z)@M0RWnrd*Z>Gy;qKDX+)kaB}&7?hWzr0YwEH5g&Up`sFET1v-K6!=ybs~6tjQCVO zc%Oo@RKjdv@UZ*kMH23aqc;CX6xVs(nyT~!z5;y1#Djsqe^hbtJ1H;!BUS7?PE5uR z-b{ik_!0$>;A4#a%Mxb!aTw6Wru;hzvwSb?$@1e8X8DdOwtPH=|K)DjjqhArMOdZu zF&lFyluMZ97azZ0j*HHZ{Dp07|EFx8-}@NL?|p^9@_QfOY?j~qCQF#>Z#Guhp(6fRA9V z;qJXYUX}n4pK0sA$mOL5zE!UwCYKbycc3tnvhN_QC*tf*I0t$?O#+=K@CItR>p)+vF7P-+)f!cycoy^w!v!cTMQpz%aLqJ)L2l~jx^V>47Gbsu41_}GSp2ljR44*| za*{o@#si;7#!p2}`QyM-Fv={4D}k>}qWAB)V?7}#XT@nh_(_9oJD&p2qMCaM!++OC z1;k}$cfkLpKp0*&!4s`BR=^yyl2qW~(pc{Rd~EHcfVhx5*z8+fKMCyGwd(`A7HliC z9eNwA2evIo4gvzT&Df@uNX#bsqZHT0Q1Lp$)B9;a+DtfTUso9$6`-`tOkbnPLao z4`E9!u}en+uf;bA8%_OW;3Lv7?gG3_8ukN#M?YkD(rDmun59TX>Csz;q+(uwyExxBUyVT>Y-)c4ycSEP6|Kv_-{4_ojfraDD`*aatapBc28t4n zNniyd0l1AcURwg6z@lUgp6mwb%>ScQ2gdzp={Ela^!8!dxdNDQ8pUz*bYaV>NXbj8pIFw)GCm5f&P#S&sU*OBoYV}(nAAANxRrI9%j zIADV9)D+-{v1C}~p9TI?YTT>9S0wyiFjhqVAJt-LDqO**P$=kQuZZ6R&%_F8MdMfC zWAug-eRG0NAo1*!q&@LNj+%CgtB2Xjalns~zaJXk7NN7cXf5b7lnpxX0-mx~Pn`nY zbCzBD0`RM7Y)jMH@4&~T2;T-CN9+9p9?Gl1*^}ksJp5lv2%~+7S!@OHIn35lGsZ6i z3#^(}$L#^0N7?lPT6qf4?-^#Xd!XOO-e{MJ>*I-eftJ-n%Nx=goZyLuBxIZv&-qY# zi)vs?gj1?3plihesW<&GHiD#@n*j4Q7Y;seVp^~q;VU$&>;&8l6T=G7AmB;T5F7)% z7SFf3nFM?tGs}v^+%Tn^vQO#{g2K7kimS}5U<+^qIB0Ex-(!OaRgx+H1h_4w`UkYi zdwhhw-3i6-TBa0Y3Yrm(1&+b)!>YG6@K0FQpEb?o0Xu2Ee?VNxIc&z7n)DRVTQD=N z+7<$@#mu$Vfi1xEq~PuYzJ#$k*erhxcnQXbRqdC+pHY+>T{D2PImxHtNYo3NG}|2z zTXG4pv}VRLjTGe}Y395LyaIhO)-?VK@Byjvy}-*JR9vS`IW9;j>6rfgO?(pg9Mzz@ ziUYy+qd?#{G0QNfb4|5S;AmhCQfG1p2E>M5f!KP~wZJp-`W)&AzTyJ5Ce~1VAFFO#v;&FW&au!Fh>PXc z6To-y%xZ1QR{}4S!u=X>GKSEDru;qNl9BdW@CEP|N&iwLsu}*UJ(O>=0$mA2e?(x* znPA#!7KNdTa9FdvJ#Z6@Icq213-~ik(Q;FN1aMc>Yn7h{JZr2SzNNswOEYK#aI&<| zc{55$RIa2cuI8q}_n|OP8uTaGz<7EyC?Hn7kVl^)EeJq=1e*HEjS(1gjo<}37x;Ur z;ST_hmMVN0cn$_ctXY0K@F$dAA93g^Jw?}mj*^z5w}5A23R~5_2mBm%R`I5pkAW}6 z*>mkH;8ZNKh_c?lKLek_CZVH={{mjs$X@b;o8XNn2m{}m?D6>N&+uW2>vgk03*gS} z71u=*w+Bv^9Lxv4gt&}1<)eWcU}9P0cn0tSG$7ZMR|3m%+t8#9CTJIX^SliTnVszx z?FOEM-Mlq2jsOc<)&P(FOVW0r2K3YL!&=1ru=)tpYb`?2$jqa24e&IHlZNAX(AV&) zV!1aPcs->C!+JX2cydgy_kd2u0=?J7$AI&(*J^3v)4&ll3&kp49A`fm?t-2=#tuek z3|=4Ml+~NDz|Ub6k21|<1HX+e8kTpx_j&^Vj`uYynD`&kDSNW*Mot9Igg&a#^=HRm zv+x#zm17bsppXsR&BQMOJ1IK^Yw&6s&dE143rWaG>9oOvFXsvL0`iEd+gF zyzR_mzY<0Sr^edn+o~-8j5lW8atBFd(jAMN>RI%qQp#(Cekfh2s~PvlbwLS!5p%l za0S3?CH+$15^1xCOIpfQ%t7l(g#SaG@=%H0fOU!VM5BOEF_M-w3WysrrL!H`e?#?J zu07~}1m1=<%ZkMf;CadR!Gi|Db&PFm_J#uA8%4Jo1;paF`cV-9bNK(Nv^EF*T~7OQ z0=A2JG`e#@qVxD>RjH+?IeT=YhTlW)L{>!7na%ptm32vlu@&Zjo;*5OW ot(>P#T>=t=s=szC@wtkE&AZZwKI;;M1& diff --git a/firmwares/openwsn-openmote-b-24ghz.ihex b/firmwares/openwsn-openmote-b-24ghz.ihex index 216b375d24..c8ea9ed4c2 100644 --- a/firmwares/openwsn-openmote-b-24ghz.ihex +++ b/firmwares/openwsn-openmote-b-24ghz.ihex @@ -1,20 +1,20 @@ :020000040020DA -:100000009C4A0020D32E2000BD2E2000C72E2000A9 -:10001000CD2E2000CD2E2000CD2E2000000000008F -:10002000000000000000000000000000CD2E2000B5 -:10003000CD2E200000000000CD2E2000CD2E20006F -:10004000CD2E2000CD2E2000CD2E2000CD2E200044 -:1000500000000000CD2E2000CD2E2000CD2E20004F -:10006000CD2E200000000000000000000000000075 -:100070000000000000000000CD2E20000000000065 -:100080000000000000000000CD2E2000CD2E20003A -:10009000CD2E2000CD2E2000CD2E2000CD2E2000F4 -:1000A000CD2E2000CD2E2000CD2E2000CD2E2000E4 -:1000B000CD2E2000CD2E2000CD2E2000CD2E2000D4 -:1000C000CD2E2000CD2E2000CD2E2000CD2E2000C4 -:1000D000CD2E200000000000000000000000000005 +:100000009C4A0020D72E2000C12E2000CB2E20009D +:10001000D12E2000D12E2000D12E20000000000083 +:10002000000000000000000000000000D12E2000B1 +:10003000D12E200000000000D12E2000D12E200063 +:10004000D12E2000D12E2000D12E2000D12E200034 +:1000500000000000D12E2000D12E2000D12E200043 +:10006000D12E200000000000000000000000000071 +:100070000000000000000000D12E20000000000061 +:100080000000000000000000D12E2000D12E200032 +:10009000D12E2000D12E2000D12E2000D12E2000E4 +:1000A000D12E2000D12E2000D12E2000D12E2000D4 +:1000B000D12E2000D12E2000D12E2000D12E2000C4 +:1000C000D12E2000D12E2000D12E2000D12E2000B4 +:1000D000D12E200000000000000000000000000001 :1000E0000000000000000000000000000000000010 -:1000F000CD2E200000000000CD2E2000CD2E2000AF +:1000F000D12E200000000000D12E2000D12E2000A3 :1001000000000000000000000000000000000000EF :1001100000000000000000000000000000000000DF :1001200000000000000000000000000000000000CF @@ -38,22 +38,22 @@ :1002400000000000000000000000000000000000AE :10025000000000000000000000000000000000009E :10026000000000000000000000000000000000008E -:10027000CD2E2000CD2E2000CD2E2000CD2E200012 -:10028000CD2E2000CD2E2000CD2E200080B500AF39 -:100290004FF4BD720021174806F05EFA154B01229B -:1002A0005A7001F01EFB00F0C9FC00F081FD002136 -:1002B000FF2000F08FFD03461A460E4B1A7002F025 -:1002C00042F90D4801F010FF0C4802F00FFB0C48FA -:1002D00002F01AFB0B490C4802F07EFE00F018F801 -:1002E0000F210A4800F0ECFC00F0BAFC002318468D +:10027000D12E2000D12E2000D12E2000D12E200002 +:10028000D12E2000D12E2000D12E200080B500AF2D +:100290004FF4BD720021174806F060FA154B012299 +:1002A0005A7001F020FB00F0CBFC00F083FD002130 +:1002B000FF2000F091FD03461A460E4B1A7002F023 +:1002C00044F90D4801F012FF0C4802F011FB0C48F4 +:1002D00002F01CFB0B490C4802F080FE00F018F8FD +:1002E0000F210A4800F0EEFC00F0BCFC0023184689 :1002F00080BD00BFB04A00200C4B0020290A20001E :100300003B0A2000250920007D0720002907200046 -:1003100080B500AF02F07CFE02F070FE024B0022BE +:1003100080B500AF02F07EFE02F072FE024B0022BA :1003200083F8492000BF80BDB04A002080B500AFEF :10033000114B93F82330002B1BD00F4BB3F85430E4 :1003400001339AB20C4BA3F854200B4B4FF6FF72BB :10035000DA84094B002283F82220074B002283F81D -:100360002820054B002283F829207E2002F06EFE13 +:100360002820054B002283F829207E2002F070FE11 :1003700000E000BF80BD00BFB04A002080B500AFE4 :100380001E4B93F84830002B08D11C4BB3F8583063 :1003900001339AB2194BA3F858202AE0174B93F86F @@ -65,7 +65,7 @@ :1003F00000BFFFF78DFF00BF80BD00BFB04A0020E7 :1004000080B500AF094B93F84830012B08D0074B5B :10041000B3F8583001339AB2044BA3F8582003E0E4 -:100420000F21034800F04CFC80BD00BFB04A002003 +:100420000F21034800F04EFC80BD00BFB04A002001 :100430003504200080B582B000AF124B7B607B6832 :1004400002221A70104B5A787B685A700E4B5B88E8 :10045000184600F07FF903461A467B685A807B688D @@ -74,15 +74,15 @@ :1004800080BD00BFB44A0020B04A002080B500AF54 :10049000134B93F84830012B08D0114BB3F8583068 :1004A00001339AB20E4BA3F8582018E00F210D48E3 -:1004B00000F006FC0A4B5B78022B05D1084B1B7839 -:1004C000184600F06BFF05E0054B5B78042B01D16B -:1004D00001F0EBFF02F078FA014B01225A7080BD67 +:1004B00000F008FC0A4B5B78022B05D1084B1B7837 +:1004C000184600F06DFF05E0054B5B78042B01D169 +:1004D00001F0EDFF02F07AFA014B01225A7080BD63 :1004E000B04A0020E904200080B582B000AF074B7D :1004F0007B607B680A221A70054B012283F8232057 :10050000FFF714FF00BF0837BD4680BDB44A002086 :10051000B04A002090B585B002AF3F4B93F8483009 :100520000B2B08D03C4BB3F8583001339AB23A4BFE -:10053000A3F858206CE00F21384800F0C1FB364B7F +:10053000A3F858206CE00F21384800F0C3FB364B7D :100540005B78022B63D0344B02225A70324B00226C :100550005A80334B7B60304B0022A3F8E4207B6849 :100560005A7A2D4B83F8E6207B68B3F805309BB2AE @@ -92,23 +92,23 @@ :1005A0007B807A881C4BA3F86C201B4BB3F8E4309B :1005B000184600F0CFF803463B803A88164BA3F864 :1005C0006E207B689B7A1946134B93F8E6300E3BFE -:1005D0001A46144806F0C0F802F0F0F97B685B7820 -:1005E000184602F0C5F90C4B1C787B68B3F807304D +:1005D0001A46144806F0C2F802F0F2F97B685B781C +:1005E000184602F0C7F90C4B1C787B68B3F807304B :1005F0009BB2184600F0AEF8034619460A4B00932A -:1006000000230022204600F049FC00BF00E000BFAC +:1006000000230022204600F04BFC00BF00E000BFAA :100610000C37BD4690BD00BFB04A00202D0620001B -:10062000DA4A0020204B00207D0B200080B582B0EC +:10062000DA4A0020204B0020890B200080B582B0E0 :1006300000AF074B7B607B680B221A70054B0122D1 :1006400083F82320FFF772FE00BF0837BD4680BD48 :10065000B44A0020B04A002080B582B000AF244BDD :1006600093F848300E2B08D0214BB3F858300133A3 :100670009AB21F4BA3F8582036E00F211D4800F016 -:100680001FFB1D4B7B607B681A7B194B83F8E620B0 +:1006800021FB1D4B7B607B681A7B194B83F8E620AE :100690007B685B899BB2184600F05CF803461A46FB :1006A000134BA3F8F4207B685A7B114B83F8EA20A4 :1006B0007B689A1C0E4BEB331168526819605A60C4 -:1006C0000B4B00225A8001F0E9FE02F077F97B68BB -:1006D0005B78184602F04CF902F0FEF902F00CFAD1 +:1006C0000B4B00225A8001F0EBFE02F079F97B68B7 +:1006D0005B78184602F04EF902F000FA02F00EFACA :1006E000034B04225A7000BF0837BD4680BD00BFCF :1006F000B04A0020FD062000DA4A002080B582B012 :1007000000AF074B7B607B680C221A70054B0122FF @@ -119,16 +119,16 @@ :10075000B04A002080B483B000AF0346FB80FB8822 :100760001B021AB2FB881B0A9BB21BB213431BB2BB :100770009BB218460C37BD4680BC704780B582B02E -:1007800000AF01F061FE474B93F82330002B76D089 +:1007800000AF01F063FE474B93F82330002B76D087 :10079000444B93F822301A46424B13441B79FB71A9 :1007A000404B93F82430002B0DD1FB797E2B02D0E7 -:1007B000FB797D2B07D17D2002F048FC394B0122CB +:1007B000FB797D2B07D17D2002F04AFC394B0122C9 :1007C00083F824202BE0374BDB8CFA79114618464E -:1007D00000F0D2FA03461A46324BDA84314B93F8D2 +:1007D00000F0D4FA03461A46324BDA84314B93F8D0 :1007E0002430012B07D1FB7983F02003FB712D4BC3 :1007F000002283F824202B4B93F822300133DAB205 :10080000284B83F82220274B93F82330013BDAB2A0 -:10081000244B83F82320FB79184602F017FC214B68 +:10081000244B83F82320FB79184602F019FC214B66 :1008200093F82330002B36D11E4B93F82830002B41 :1008300031D11C4BDB8CDB43BB801A4B93F822304D :100840001946BB88DAB2174B0B441A71BB881B0AD6 @@ -136,17 +136,17 @@ :100860000A461A710F4B93F823300233DAB20D4B5C :1008700083F823200B4B012283F828200BE0094B3F :1008800093F82930002B06D1064B012283F829204A -:100890007E2002F0DBFB01F0DEFD00BF0837BD4625 +:100890007E2002F0DDFB01F0E0FD00BF0837BD4621 :1008A00080BD00BFB04A002080B582B000AF0346D3 :1008B000FB71FB797D2B04D1194B012283F84A206F :1008C0002AE0174B93F84A30012B07D1FB7983F0CC :1008D0002003FB71124B002283F84A20104B93F83F :1008E00048301A460E4B1344FA7983F82A200C4BF1 :1008F00093F848300133DAB2094B83F84820084BAB -:10090000B3F84C30FA791146184600F035FA034630 +:10090000B3F84C30FA791146184600F037FA03462E :100910001A46034BA3F84C2000BF0837BD4680BDE4 -:10092000B04A002080B582B000AF01F08DFD02F02A -:10093000B3FB0346FB713A4B93F84E30002B19D1B1 +:10092000B04A002080B582B000AF01F08FFD02F028 +:10093000B5FB0346FB713A4B93F84E30002B19D1AF :10094000374B93F849307E2B14D1FB797E2B11D095 :10095000334B012283F84E20314B002283F848208C :100960002F4B4FF6FF72A3F84C20FB791846FFF788 @@ -157,1695 +157,1695 @@ :1009B000012B2AD1FB797E2B27D1194BB3F84C3070 :1009C0004FF2B802934214D1154BB3F850300133B3 :1009D0009AB2134BA3F85020114B93F84830023BC6 -:1009E000DAB20F4B83F848200F210E4800F068F967 +:1009E000DAB20F4B83F848200F210E4800F06AF965 :1009F00007E00B4BB3F8523001339AB2084BA3F81F :100A00005220074B002283F84E20054AFB7982F8DA -:100A1000493001F020FD002318460837BD4680BD4F +:100A1000493001F022FD002318460837BD4680BD4D :100A2000B04A00207D03200080B483B000AF78601E :100A300000BF0C37BD4680BC704780B588B002AFA0 -:100A400078600123FB7501F0BFFF444B5B78042BFA -:100A50007FD1434B0193434B0093434B7F22434948 -:100A6000434802F063F8424BFB60FB6808224149AF -:100A7000184605F03FFE0346002B01D00023FB750E -:100A8000364B93F87521354B93F8E6309A4201D0F6 -:100A90000023FB75FB681B899AB2304BB3F8F43026 -:100AA0009A4201D00023FB750C233B610FE02B4AD7 -:100AB0003B691344F6331A78284B93F8EA309A428C -:100AC00002D00023FB7509E03B6901333B61234BF6 -:100AD00093F87531023B3A699A42E8DBFB7D002BC3 -:100AE00031D01E4B93F87931002B2CD0224BBB60B8 -:100AF000BB6807221A70194B93F87521BB685A70AE -:100B0000164B93F97721BB689A70144B93F879319F -:100B1000DB015AB2FB7D9B015BB213435BB2DAB2DD -:100B2000BB68DA70FB685B899AB2BB689A800B4B32 -:100B3000062283F82320FFF7F9FB084B5B8801337B -:100B40009AB2064B5A8001F039FF01F0C5FF01F05F -:100B5000D3FF00BF1837BD4680BD00BFB04A00209C -:100B6000294C0020284C0020274C0020254C002038 -:100B7000A64B00209B4B0020B44A002080B586B0D5 -:100B800000AF0346FB710A23FB75294BB3F8E42041 -:100B9000274BB3F8E8309A4220D1254B1B781846F2 -:100BA00000F0FCFB01F010FF214B03225A70214B97 -:100BB0003B613B6905221A701D4B012283F82320FB -:100BC000FFF7B4FB1A4B5B8801339AB2184B5A807B -:100BD00001F0FAFE164B01225A7025E001F00AFCE2 -:100BE000134B93F8E6309BB21946134801F000FF0F -:100BF00001F03AFF01F048FF01F003FC0C4BB3F8A1 -:100C0000E43001339AB20A4BA3F8E420084BB3F85E -:100C1000E4301846FFF79EFD0346FB81FB7D064A44 -:100C20001344FA891A8000BF1837BD4680BD00BF43 -:100C3000B04A0020B44A0020144B002080B500AF19 -:100C400080220021044805F087FD0222002103488C -:100C500005F082FD00BF80BD2C4C0020AC4C002074 -:100C600080B582B000AF1CE004F0D3F8124B9B6F4C -:100C70007B607B689B68104A936704F0BEF87B68D2 -:100C80001B6898477B6800221A607B6800221A71F3 -:100C90007B6800229A60094B1B78013BDAB2074B54 -:100CA0001A70054B9B6F002BDED101F081F900F02B -:100CB0006DFE01F089F9F4E72C4C0020AC4C0020CB -:100CC00080B584B000AF78600B46FB7004F0A1F8EB -:100CD000254BFB6002E0FB680C33FB60FB681B6884 -:100CE000002B03D0FB68214A9342F4D9FB681F4ACA -:100CF000934203D901F035FC00F08EFEFB687A6860 -:100D00001A60FB68FA781A71194BBB6003E0BB6884 -:100D10001B680833BB60BB681B68002B06D0BB6830 -:100D20001B681A79FB681B799A42F0D9BB681A686C -:100D3000FB689A60BB68FA681A600E4B1B78013337 -:100D4000DAB20C4B1A700B4B1A780A4B5B789A424A -:100D500003D9084B1A78074B5A7004F04EF800BFBD -:100D60001037BD4680BD00BF2C4C0020984C0020A1 -:100D7000A44C0020AC4C002080B483B000AF0346EC -:100D80000A46FB8013467B71FB881B0A9AB2F988DE -:100D90007B794B40DBB2054931F8133053409BB2AD -:100DA00018460C37BD4680BC704700BFA06A2000C3 -:100DB00080B500AF4FF4DA720021044805F0CCFC96 -:100DC000034802F019F800BF80BD00BFB04C0020FE -:100DD0007114200080B584B000AF03460A46FB7151 -:100DE0001346BB7104F015F8FB79012B02D0FB7997 -:100DF000002B19D1FA7928491346DB009B1A9B0076 -:100E00000B4411331B7883F00103DBB2002B0BD0B2 -:100E1000FA7921491346DB009B1A9B000B441133DE -:100E200001221A70FB7932E0FB79FF2B2CD10223CF -:100E3000FB7326E0FA7B18491346DB009B1A9B00E4 -:100E40000B4411331B7883F00103DBB2002B15D068 -:100E5000FA7B11491346DB009B1A9B000B441133AC -:100E600001221A70FA7B0C491346DB009B1A9B0087 -:100E70000B441833BA791A70FB7B08E0FB7B013313 -:100E8000FB73FB7B0E2BD5D903F0B7FFFF2318466E -:100E90001037BD4680BD00BFB04C002090B587B074 -:100EA00000AF396011461A460346FB710B46BB7111 -:100EB00013467B710023FB7511E0FA7D91491346BF -:100EC000DB009B1A9B000B4411331B78002B03D0D3 -:100ED000FA7DFB799A4206D0FB7D0133FB75FB7DE1 -:100EE0000E2BEAD900E000BFFB7D0F2B00F006813E -:100EF00003F08FFFFA7983491346DB009B1A9B00AE -:100F00000B4412337A791A70BB79002B02D0012B73 -:100F100023D03FE0FA7939680B465B0119447948E0 -:100F20001346DB009B1A9B00034419603A68134682 -:100F30005B011A440323A3FB0213D21A5208134481 -:100F40009B0FFA7998B26F491346DB009B1A9B00FE -:100F50000B44083302461A801CE0FA7969491346AB -:100F6000DB009B1A9B000B443A681A603A68032323 -:100F7000A3FB0213D21A520813449B0FFA7998B2BA -:100F800060491346DB009B1A9B000B440833024662 -:100F90001A8000BFFA795B491346DB009B1A9B005D -:100FA0000B4408331B88002B15D1FA795549134699 -:100FB000DB009B1A9B000B441C6801F053FF0346A7 -:100FC000FA79E1184F481346DB009B1A9B00034453 -:100FD000043319600EE001F045FF0346F97903F18F -:100FE0000042013A47480B46DB005B1A9B00034472 -:100FF00004331A60FA7943491346DB009B1A9B00BD -:101000000B44103301221A70FA793E491346DB0073 -:101010009B1A9B000B441433BA6A1A60394B93F83D -:10102000B03183F00103DBB2002B60D00023FB75ED -:1010300002E0FB7D0133FB75FA7D32491346DB008C -:101040009B1A9B000B4410331B7883F00103DBB227 -:10105000002BEED1FA7D2B491346DB009B1A9B0037 -:101060000B4404331A68274BD3F8AC31D31A3B61D5 -:10107000FB7DBB75BB7D0133FB7523E0FA7D214908 -:101080001346DB009B1A9B000B4410331B78002B8C -:1010900015D0FA7D1B491346DB009B1A9B000B44BD -:1010A00004331A68174BD3F8AC31D31AFB60FA68D3 -:1010B0003B699A4203D2FB683B61FB7DBB75FB7DBC -:1010C0000133FB75FB7D0E2BD8D9BA7D0D49134634 -:1010D000DB009B1A9B000B4404331B68094AC2F8CF -:1010E000A831084BD3F8A831184601F093FE054B00 -:1010F000012283F8A42103F080FE00E000BF1C372A -:10110000BD4690BDB04C002080B588B000AFB9603E -:101110007A601A460346FB731346BB730023FB77C2 -:1011200011E0FA7F8F491346DB009B1A9B000B44AA -:1011300011331B78002B03D0FA7FFB7B9A4206D039 -:10114000FB7F0133FB77FB7F0E2BEAD900E000BF6A -:10115000FB7F0F2B00F0028103F05BFEFA7B8149DD -:101160001346DB009B1A9B000B44123301221A70BA -:10117000BB7B002B02D0012B23D03FE0FA7BB96868 -:101180000B465B01194477481346DB009B1A9B0012 -:1011900003441960BA6813465B011A440323A3FB96 -:1011A0000213D21A520813449B0FFA7B98B26D496E -:1011B0001346DB009B1A9B000B44083302461A803F -:1011C0001CE0FA7B67491346DB009B1A9B000B442B -:1011D000BA681A60BA680323A3FB0213D21A520832 -:1011E00013449B0FFA7B98B25E491346DB009B1AAF -:1011F0009B000B44083302461A8000BFFA7B594912 -:101200001346DB009B1A9B000B4408331B88002B02 -:1012100013D1FA7B53491346DB009B1A9B000B4406 -:101220001968FA7B7B6819444E481346DB009B1A09 -:101230009B000344043319600CE0F97B7B6803F1E5 -:101240000042013A47480B46DB005B1A9B0003440F -:1012500004331A60FA7B43491346DB009B1A9B0058 -:101260000B44103301221A70FA7B3E491346DB000F -:101270009B1A9B000B441433BA6A1A60394B93F8DB -:10128000B03183F00103DBB2002B60D00023FB7789 -:1012900002E0FB7F0133FB77FA7F32491346DB0024 -:1012A0009B1A9B000B4410331B7883F00103DBB2C5 -:1012B000002BEED1FA7F2B491346DB009B1A9B00D3 -:1012C0000B4404331A68274BD3F8AC31D31ABB61F3 -:1012D000FB7FBB77BB7F0133FB7723E0FA7F21499C -:1012E0001346DB009B1A9B000B4410331B78002B2A -:1012F00015D0FA7F1B491346DB009B1A9B000B4459 -:1013000004331A68174BD3F8AC31D31A7B617A696E -:10131000BB699A4203D27B69BB61FB7FBB77FB7FD2 -:101320000133FB77FB7F0E2BD8D9BA7F0D491346CB -:10133000DB009B1A9B000B4404331B68094AC2F86C -:10134000A831084BD3F8A831184601F063FD054BCE -:10135000012283F8A42103F050FD00E000BF2037F4 -:10136000BD4680BDB04C002080B582B000AF0346C2 -:101370003960FB7103F04DFDFA7907491346DB0034 -:101380009B1A9B000B443A681A6003F036FD00BFBD -:101390000837BD4680BD00BFB04C002080B582B08C -:1013A00000AF0346FB7103F034FDFA790C49134694 -:1013B000DB009B1A9B000B44103300221A70FA7951 -:1013C00007491346DB009B1A9B000B441433002291 -:1013D0001A6003F012FD00BF0837BD4680BD00BF94 -:1013E000B04C002080B582B000AF0346FB71FB79A2 -:1013F0000E2B0DD8FA791346DB009B1A9B00074A87 -:1014000013441C220021184605F0A6F9012300E030 -:10141000002318460837BD4680BD00BFB04C0020F1 -:1014200080B500AF01F01EFD0346184680BD80B4B4 -:1014300000AF034BD3F8A8311846BD4680BC7047B7 -:10144000B04C002080B483B000AF0346FB71FA7942 -:1014500006491346DB009B1A9B000B4410331B7894 -:1014600018460C37BD4680BC704700BFB04C00200A -:1014700090B587B002AF804B1B7C002B15D07E4B04 -:10148000D3F8A8217C4B5B689A420ED17A4B00229C -:101490001A74794B5B690020984701F0E3FC03461E -:1014A0000F33184601F0B6FC0EE2734B5A68724BCC -:1014B000D3F8A8319A4236D10023FB7330E0FA7B8F -:1014C0006D491346DB009B1A9B000B4410331B78BD -:1014D000002B22D0FB7B012B1FD0FB7B002B1CD0D1 -:1014E000FA7B65491346DB009B1A9B000B440433CF -:1014F0001A68614BD3F8A831D31A40F28E22934276 -:101500000BD8FA7B5C4BD3F8A8115B481346DB0081 -:101510009B1A9B00034404331960FB7B0133FB736C -:10152000FB7B0E2BCBD90023FB7357E1FA7B52498F -:101530001346DB009B1A9B000B4410331B78002BD7 -:1015400000F049814C4BD3F8A811FA7B4A48134666 -:10155000DB009B1A9B00034404331B68994240F054 -:101560003A81F97BFA7B44480B46DB005B1A9B000F -:1015700003440433196840481346DB009B1A9B0060 -:1015800003440C331960FB7B012B1ED13A4B012223 -:1015900083F8B021FA7B38491346DB009B1A9B0085 -:1015A0000B44103300221A70FA7B33491346DB00D8 -:1015B0009B1A9B000B4414331B68FA7B1046984718 -:1015C0002D4B002283F8B02105E1FA7B2A4913460E -:1015D000DB009B1A9B000B4408331B88002B4DD16A -:1015E000FA7B25491346DB009B1A9B000B44103302 -:1015F00000221A70FA7B20491346DB009B1A9B00DD -:101600000B4414331868FA7B1B491346DB009B1A02 -:101610009B000B4418331B781946FFF751FBFA7BEC -:1016200015491346DB009B1A9B000B4412331B78B1 -:10163000002B40F0D080104B012283F8B021FA7BC0 -:101640000D491346DB009B1A9B000B441C68FA7B78 -:1016500009491346DB009B1A9B000B4414331B689B -:10166000F87B0093002301222146FFF717FC024B71 -:10167000002283F8B021AEE0B04C0020FA7B944900 -:101680001346DB009B1A9B000B4408331B88013B6D -:1016900098B28F491346DB009B1A9B000B4408331A -:1016A00002461A80FA7B8A491346DB009B1A9B008C -:1016B0000B4408331B88002B78D1FA7B84491346EE -:1016C000DB009B1A9B000B441968FA7B8048134689 -:1016D000DB009B1A9B0003440C331B680B44FA7B12 -:1016E00023F000417A481346DB009B1A9B00034419 -:1016F00004331960FA7B76491346DB009B1A9B0082 -:101700000B4404331A68724BD3F8A831D31A40F251 -:101710008E2293425FD8FA7B6D491346DB009B1AF9 -:101720009B000B44103300221A70FA7B6849134661 -:10173000DB009B1A9B000B4414331868FA7B644946 -:101740001346DB009B1A9B000B4418331B78194689 -:10175000FFF7B6FAFA7B5E491346DB009B1A9B0043 -:101760000B4412331B78002B35D1594B012283F8DF -:10177000B021FA7B56491346DB009B1A9B000B44B1 -:101780001C68FA7B52491346DB009B1A9B000B44F2 -:1017900014331B68F87B0093002301222146FFF7D6 -:1017A0007DFB4B4B002283F8B02114E0FA7B4849C3 -:1017B0001346DB009B1A9B000B440C331B68F97B20 -:1017C00003F10042013A42480B46DB005B1A9B00E2 -:1017D000034404331A60FB7B0133FB73FB7B0E2B4A -:1017E0007FF6A4AE3A4BD3F8A831394AC2F8AC31EF -:1017F0000023FB7302E0FB7B0133FB73FA7B34496C -:101800001346DB009B1A9B000B4410331B7883F0BC -:101810000103DBB2002B02D0FB7B0E2BEBD9FB7B51 -:101820000E2B4DD8FA7B2A491346DB009B1A9B00EE -:101830000B4404331A68264BD3F8AC31D31ABB607F -:10184000FB7BBB73BB7B0133FB7323E0FA7B20493B -:101850001346DB009B1A9B000B4410331B78002BB4 -:1018600015D0FA7B1A491346DB009B1A9B000B44E8 -:1018700004331A68164BD3F8AC31D31A7B607A68FC -:10188000BB689A4203D27B68BB60FB7BBB73FB7B6C -:101890000133FB73FB7B0E2BD8D9BA7B0C49134663 -:1018A000DB009B1A9B000B4404331B68084AC2F8F8 -:1018B000A831074BD3F8A831184601F0ABFA03E082 -:1018C000034B002283F8A4211437BD4690BD00BF0E -:1018D000B04C002080B500AFFEF7D8FC0346184698 -:1018E00080BD80B500AF00F09DF800F0B7F800F0C3 -:1018F00014F800F054F800F06DFD00F0C3FA00F0A9 -:10190000EFF801F065FA01F01BFB00F051FF00F069 -:1019100017FC00F097F900BF80BD80B500AF102123 -:10192000094802F058FB0821074802F054FB002246 -:101930001021054802F024FB08220821024802F089 -:101940001FFB00BF80BD00BF00C00D4080B500AFD1 -:1019500000221021044802F013FB0822082102484B -:1019600002F00EFB00BF80BD00C00D4080B500AF8F -:1019700000220821044802F003FB10221021024833 -:1019800002F0FEFA00BF80BD00C00D4080B500AF80 -:10199000002004F0EBFA04F017F900BF80BD80B519 -:1019A00000AF3221044802F072FD4FF6FF71024889 -:1019B00002F042FD00BF80BD0020034080B582B030 -:1019C00000AFFF21054802F0E2FE03465B097B60A1 -:1019D0007B6818460837BD4680BD00BF0020034025 -:1019E00080B584B000AF7860FF210A4802F0CFFED6 -:1019F00003465B09FB607A68FB68D31ABB60BB686F -:101A0000002B01DD002300E0012318461037BD46FE -:101A100080BD00BF0020034080B500AF04F0CBF8CC -:101A200000BF80BD80B500AFFF21084802F0BDFABD -:101A3000FF21074802F0B9FAFF21064802F0B5FA83 -:101A4000FF21054802F0B1FA00BF80BD00900D40B3 -:101A500000A00D4000B00D4000C00D4080B582B028 -:101A600000AF03F0D6F90346FB71002240211A486B -:101A700002F00AF900228021174802F005F901223C -:101A80004021154803F020FD01228021124803F077 -:101A90001BFD00220021012003F06AFF002004F05A -:101AA00017F800BF0D4B1B6803F40023002BF9D07F -:101AB00000F030F800F05EF800F08CF800F0BAF8B2 -:101AC000FB7983F00103DBB2002B01D003F095F921 -:101AD00000BF0837BD4680BD00C00D4004200D404A -:101AE00080B500AF20210A4802F05FFA00222021D1 -:101AF000074802F02FF9082002F07AFC2021044860 -:101B000002F0F6F92021024802F0AFF900BF80BDD3 -:101B100000C00D4080B500AF002004F073F9012033 -:101B200004F070F9032004F06DF94FF4807004F0B4 -:101B300069F940F2011004F065F940F2012004F067 -:101B400061F94FF4407004F05DF94FF4806004F0E7 -:101B500059F940F2014004F055F9022004F02EF941 -:101B60004FF4007004F02AF94FF4A06004F026F955 -:101B700000BF80BD80B500AF002004F08BF90120CC -:101B800004F088F9032004F085F94FF4807004F024 -:101B900081F940F2011004F07DF940F2012004F0D7 -:101BA00079F94FF4407004F075F94FF4806004F057 -:101BB00071F940F2014004F06DF9022004F046F999 -:101BC0004FF4007004F042F94FF4A06004F03EF9C5 -:101BD00000BF80BD80B500AF002004F0A3F9012054 -:101BE00004F0A0F9022004F09DF9032004F09AF912 -:101BF0004FF4807004F096F940F2011004F092F96D -:101C00004FF4007004F08EF940F2012004F08AF9DC -:101C10004FF4407004F086F94FF4806004F082F9CC -:101C200040F2014004F07EF94FF4A06004F07AF92C -:101C300000BF80BD80B500AF202002F0D9FB00BFFF -:101C400080BD00BF80B500AF40F2014004F070F8E5 -:101C500040F2014004F0B2F80023184680BDF0B510 -:101C60008FB008AFF8607A603B600B46FB723B6850 -:101C70001B78002B14BF01230023FB7507F116030B -:101C80001946B86B00F0D5F80346002B41D13B68EC -:101C90001B789BB2FA7A92B2B97D38680078044614 -:101CA0007868204497F83C60FD7D0024069497F8FE -:101CB00034400594049003910292FA6801920093D3 -:101CC0007B683A6B3146284601F020FC0346002B26 -:101CD0001FD100BF01F02EFD0346002BF9D03B6859 -:101CE0001B7899B23B681B781A467B681A4497F8B0 -:101CF0003C30184601F042FD0346002B09D13B68F9 -:101D00001A7897F83C301344DAB23B681A70002313 -:101D100000E0012318461C37BD46F0BDB0B592B0B7 -:101D200008AFF8607A603B600B46FB723B681B783B -:101D30001A4697F84430D31A002BCCBF0123002356 -:101D400087F8273007F126031946386C00F071F840 -:101D50000346002B3DD13B681B789BB2FA7A92B2C6 -:101D600097F8261097F8445097F8274000200690DF -:101D700097F83C00059007F114000490039102923B -:101D8000FA68019200937B68BA6B2946204601F0FD -:101D90007FFD0346002B1CD100BF01F087FE0346E8 -:101DA000002BF9D03B681B789AB207F1140397F81F -:101DB0004400796801F081FE0346002B09D13B689D -:101DC0001A7897F84430D31ADAB23B681A700023B5 -:101DD00000E0012318462837BD46B0BD80B586B067 -:101DE00002AF7860396007F10F031946386800F0D8 -:101DF00020F80346002B17D1FA7B00230093012320 -:101E00007968786801F090FA0346002B0CD100BF86 -:101E100001F00EFB0346002BF9D001F02DFB034629 -:101E2000002B01D1002300E0012318461037BD46E6 -:101E300080BD90B583B000AF7860396010227968BA -:101E40000F4804F057FC0346002B10D00C4A7B6867 -:101E50001446186859689A68DB680FC4002108485E -:101E600001F0A2F90346002B01D0012303E03B68F7 -:101E700000221A70002318460C37BD4690BD00BFE3 -:101E80008C42002080B500AF80210E4802F0A3F8FC -:101E900008210D4802F09FF80F210C4802F09BF832 -:101EA00000228021074802F06BF800220821064832 -:101EB00002F066F800220F21044802F061F800BF2A -:101EC00080BD00BF00900D4000B00D4000A00D404F -:101ED00080B500AF8021024800F0EAF800BF80BD65 -:101EE00000900D4080B500AF00228021024802F032 -:101EF00047F800BF80BD00BF00900D4080B500AF27 -:101F000080228021024802F03BF800BF80BD00BF64 -:101F100000900D4080B500AF0821024800F0C8F8DD -:101F200000BF80BD00A00D4080B500AF0022082199 -:101F3000024802F025F800BF80BD00BF00A00D40A0 -:101F400080B500AF08220821024802F019F800BF4E -:101F500080BD00BF00A00D4080B500AF0421024845 -:101F600000F0A6F800BF80BD00A00D4080B500AF16 -:101F700000220421024802F003F800BF80BD00BF28 -:101F800000A00D4080B500AF04220421024801F0FA -:101F9000F7FF00BF80BD00BF00A00D4080B500AFBF -:101FA0000221024800F084F800BF80BD00A00D406F -:101FB00080B500AF00220221024801F0E1FF00BF1E -:101FC00080BD00BF00A00D4080B500AF02220221FD -:101FD000024801F0D5FF00BF80BD00BF00A00D404A -:101FE00080B500AF0821024800F062F800BF80BD54 -:101FF00000B00D4080B500AF00220821024801F07A -:10200000BFFF00BF80BD00BF00B00D4080B500AF76 -:1020100008220821024801F0B3FF00BF80BD00BFC5 -:1020200000B00D4080B500AF0121024800F040F83B -:1020300000BF80BD00A00D4080B500AF002201218F -:10204000024801F09DFF00BF80BD00BF00A00D4011 -:1020500080B500AF01220121024801F091FF00BFCD -:1020600080BD00BF00A00D4080B400AF00BFBD46E2 -:1020700080BC704780B400AF00BFBD4680BC7047D5 -:1020800080B400AF00BFBD4680BC704780B400AFD5 -:1020900000BFBD4680BC704780B400AF00BFBD46E6 -:1020A00080BC704780B400AF00BFBD4680BC7047A5 -:1020B00080B584B000AF78600B46FB70FB781946A2 -:1020C000786801F04CFFF860FB68DA43FB78134056 -:1020D000FB60FB68DAB2FB781946786801F050FFC4 -:1020E00000BF1037BD4680BD80B485B000AF7860BA -:1020F000114BFB6007E0FA68531EFB607B68591CBC -:10210000796012781A70FB68B3F1281FF3D20B4B79 -:10211000FB6007E0FA68531EFB607B68591C79601E -:1021200012781A70FB68044A9342F3D800BF143740 -:10213000BD4680BC704700BF2B0028002F00280040 -:1021400080B582B000AF4FF4407003F037FE4FF41B -:10215000407003F07BFE4FF4407003F0E3FE4FF459 -:10216000407003F0E5FD2021154801F04AFF154AB3 -:102170002021134803F0CEF80C222021104803F050 -:1021800065F810210E4801F03CFF0F4A10210C4861 -:1021900003F0C0F80B221021094803F057F801237F -:1021A000FB7103F043FC0246FB791946104602F02E -:1021B00009FC02F047FC00BF0837BD4680BD00BFE8 -:1021C00000A00D4030410D402C410D4080B584B041 -:1021D00000AF03463960FB71144BFB60FB790121B2 -:1021E000184602F063FD072002F09AFDFFF7E6FBB8 -:1021F0000246FB681344FB6007E0F868FFF7F0FB5A -:102200000346002B01D000230BE002F065FD0346DE -:10221000002BF2D102F0C0FD0346DAB23B681A701F -:10222000012318461037BD4680BD00BF801A060046 -:1022300080B586B000AF0346B9607A60FB731D4B72 -:102240007B61FB7B0121184602F030FD0B2002F080 -:1022500067FDFFF7B3FB02467B6913447B6121E016 -:102260007869FFF7BDFB0346002B01D07B681DE0BA -:1022700002F032FD0346002BF2D102F08DFD014643 -:10228000BB685A1CBA60CAB21A707B68013B7B609B -:102290007B68012B03D1052002F042FD02E00920FA -:1022A00002F03EFD7B68002BE2D17B6818461837B0 -:1022B000BD4680BD801A060080B584B000AF0346DD -:1022C0000A46FB711346BB71134BFB60FB7900217F -:1022D000184602F0EBFCBB79184602F04DFD0720D2 -:1022E00002F01EFDFFF76AFB0246FB681344FB6029 -:1022F00007E0F868FFF774FB0346002B01D00023CA -:1023000005E002F0E9FC0346002BF2D10123184658 -:102310001037BD4680BD00BF801A060080B586B06C -:1023200000AF0346B9607A60FB73294B7B61FB7B8E -:102330000021184602F0BAFCBB685A1CBA601B7830 -:10234000184602F019FD7B68013B7B60032002F018 -:10235000E7FCFFF733FB02467B6913447B6107E030 -:102360007869FFF73DFB0346002B01D07B682BE02B -:1023700002F0B2FC0346002BF2D121E0BB685A1CEC -:10238000BA601B78184602F0F7FC7B68012B03D17A -:10239000052002F0C5FC0BE0012002F0C1FC07E0C3 -:1023A0007869FFF71DFB0346002B01D07B680BE02B -:1023B00002F092FC0346002BF2D17B68013B7B606C -:1023C0007B68002BDAD17B6818461837BD4680BD84 -:1023D000801A060080B500AFF021054801F0FBFD32 -:1023E000F022F021024801F0CBFD00BF80BD00BF0C -:1023F00000B00D4080B500AF102000F097F900BF8D -:1024000080BD80B500AF102000F0A2F900BF80BDF4 -:1024100080B500AF102000F0ADF900BF80BD80B5E1 -:1024200082B000AF1021074801F099FD78607B6809 -:10243000DBB21B11DBB203F00103DBB21846083735 -:10244000BD4680BD00B00D4080B500AF802000F0DB -:102450006DF900BF80BD80B500AF802000F078F935 -:1024600000BF80BD80B500AF802000F083F900BFC1 -:1024700080BD80B582B000AF8021074801F06FFDBC -:1024800078607B68DBB25B11DBB203F00403DBB284 -:1024900018460837BD4680BD00B00D4080B500AF7E -:1024A000202000F043F900BF80BD80B500AF2020A0 -:1024B00000F04EF900BF80BD80B500AF202000F0D5 -:1024C00059F900BF80BD80B582B000AF202104481B -:1024D00001F045FD7860002318460837BD4680BDF1 -:1024E00000B00D4080B500AF402000F01FF900BFE4 -:1024F00080BD80B500AF402000F02AF900BF80BD4C -:1025000080B500AF402000F035F900BF80BD80B538 -:1025100082B000AF4021074801F021FD78607B6860 -:10252000DBB29B11DBB203F00103DBB218460837C4 -:10253000BD4680BD00B00D4080B500AFF02000F07A -:10254000F5F800BF80BD80B500AFF02000F000F9C5 -:1025500000BF80BD80B500AFF02000F00BF900BFD8 -:1025600080BD80B582B000AFF02000F0F1F800230C -:10257000FB711FE0102000F0FDF84FF6FF73BB80E9 -:1025800004E0BB889BB2013B9BB2BB80BB889BB283 -:10259000002BF6D14FF6FF73BB8004E0BB889BB2E3 -:1025A000013B9BB2BB80BB889BB2002BF6D1FB7971 -:1025B0000133FB71FB794F2BDCD900BF0837BD46D7 -:1025C00080BD80B582B000AFF02000F0C1F80023DC -:1025D000FB714EE0102000F0A9F84FF6FF73BB80AE -:1025E00007E0102000F0B4F8BB889BB2013B9BB21F -:1025F000BB80BB889BB2002BF3D1202000F096F863 -:102600004FF6FF73BB8004E0BB889BB2013B9BB2DB -:10261000BB80BB889BB2002BF6D1202000F098F83D -:10262000402000F083F84FF6FF73BB8004E0BB88C6 -:102630009BB2013B9BB2BB80BB889BB2002BF6D107 -:10264000402000F085F8802000F070F84FF6FF730E -:10265000BB8004E0BB889BB2013B9BB2BB80BB88C4 -:102660009BB2002BF6D1F02000F072F8FB79013319 -:10267000FB71FB79092BADD900BF0837BD4680BD82 -:1026800080B582B000AFF02000F062F80023FB714B -:1026900045E0102000F04AF84FF6FF73BB8004E0DD -:1026A000BB889BB2013B9BB2BB80BB889BB2002B1B -:1026B000F6D1202000F03AF84FF6FF73BB8004E01B -:1026C000BB889BB2013B9BB2BB80BB889BB2002BFB -:1026D000F6D1402000F02AF84FF6FF73BB8004E0EB -:1026E000BB889BB2013B9BB2BB80BB889BB2002BDB -:1026F000F6D1802000F01AF84FF6FF73BB8004E09B -:10270000BB889BB2013B9BB2BB80BB889BB2002BBA -:10271000F6D1F02000F01CF8FB790133FB71FB7956 -:10272000092BB6D900BF0837BD4680BD80B582B041 -:1027300000AF0346FB71FB7900221946034801F004 -:102740001FFC00BF0837BD4680BD00BF00B00D4074 -:1027500080B582B000AF0346FB71FA79FB79194668 -:10276000034801F00DFC00BF0837BD4680BD00BF27 -:1027700000B00D4080B584B000AF0346FB71FB791B -:1027800019460A4801F0EBFBF860FB68DA43FB7975 -:102790001340FB60FB68DAB2FB791946034801F08D -:1027A000EFFB00BF1037BD4680BD00BF00B00D403D -:1027B00080B500AF0C220021354803F0CDFF344B2B -:1027C00000221A72334BED221A60324BED221A604E -:1027D000304BEE221A602F4BEE221A6000F03EFAC8 -:1027E00000F020FA2C4B14221A602C4B3F221A6066 -:1027F0002B4B55221A602B4B85221A602A4B012243 -:102800001A602A4B15221A60294B10221A60294B94 -:102810000E221A60284B03221A60284BF8221A60F5 -:10282000274B09221A60214B15221A6004230B2220 -:102830001A60244BFF221A60234B40221A60234B5C -:102840001B68224A23F001031360214B00221A6007 -:10285000204B7F221A60204BD5221A601F4B0B227F -:102860001A601F499D2002F0E0FA1E499E2002F0E6 -:10287000DCFA9D2002F0A4FB1B4B7F221A609E20F5 -:1028800002F09EFB024B01221A7200BF80BD00BF06 -:10289000644E002038880840A4860840AC86084072 -:1028A000B0860840A0860840B8860840C886084020 -:1028B000D4860840D8860840DC8608405886084000 -:1028C000E88708409487084024860840008608402E -:1028D0000886084050860840408608403C860840EC -:1028E000AB2C20009D2D20009486084080B483B03E -:1028F00000AF7860034A7B68136000BF0C37BD46A9 -:1029000080BC7047644E002080B483B000AF786014 -:10291000034A7B68536000BF0C37BD4680BC7047DC -:10292000644E002080B500AF00BF0E4B1B6803F063 -:102930000203002BF9D10C4BED221A600A4BED2259 -:102940001A60094BEE221A60074BEE221A60074B01 -:102950001B68002B02D0044BEF221A60FFF728FF00 -:1029600000BF80BD4C860840388808402C8608404F -:1029700080B582B000AF0346FB710E4B02221A7283 -:1029800000F06CF9FB790A2B02D9FB791A2B00D9DC -:10299000FEE7FB79A3F10B0213469B00134403F1FE -:1029A0000B02054B1A60034B03221A7200BF083753 -:1029B000BD4680BD644E00203C86084080B400AF18 -:1029C00000BFBD4680BC704780B500AF074B0D22ED -:1029D0001A7200F043F9FFF72FFBFFF766FD00F0D6 -:1029E00021F9024B01221A7200BF80BD644E002003 -:1029F00080B485B000AF78600B467B800023FB730A -:102A0000154B04221A7200BF144B1B6803F002031B -:102A1000002BF9D1124BEE221A60114BEE221A60F4 -:102A2000104A7B8813600023FB7308E0FB7B7A6805 -:102A300013441A780B4B1A60FB7B0133FB73FB7B4F -:102A40009BB27A889A42F1D8034B05221A7200BFD2 -:102A50001437BD4680BC7047644E00204C86084049 -:102A6000388808402888084080B500AF054B06220A -:102A70001A72FFF7EDFAFFF711FD024B07221A72E7 -:102A800000BF80BD644E002080B582B000AF0F4B08 -:102A900008221A7200F0B0F800BF0D4B1B6803F05B -:102AA0000203002BF9D10B4BE9221A6000237B6053 -:102AB00002E07B6801337B60054B1B6803F0020377 -:102AC000002BF6D000BF0837BD4680BD644E002005 -:102AD0004C8608403888084080B500AF054B092275 -:102AE0001A72FFF7B5FAFFF7D9FC024B0A221A72E5 -:102AF00000BF80BD644E002080B500AF094BED22C1 -:102B00001A60084BED221A6000F076F8054BE322BC -:102B10001A6000BF044B1B6803F00103002BF9D0BF -:102B200000BF80BD388808404C86084080B487B01C -:102B300000AFF860B9603B601346FB710023BB75C2 -:102B40002B4B1B68BB7597F91630002B06DA294B07 -:102B5000ED221A60274BED221A6044E0BB7D042B66 -:102B600006D8244BED221A60224BED221A603AE07F -:102B7000BA7DFB799A4206D91E4BED221A601D4B95 -:102B8000ED221A602FE00023FB7509E0184B19684D -:102B9000FB7DFA681344CAB21A70FB7D0133FB75E2 -:102BA000FA7DBB7D023B9A42F0DB114B1B68DBB226 -:102BB000493BDBB25AB23B681A700D4B1B687B7500 -:102BC0007B7D03F08003002B14BF01230023DAB2C6 -:102BD0007B6A1A70BB68BA7D1A70064BED221A60C8 -:102BE000044BED221A601C37BD4680BC704700BF05 -:102BF000288808403888084080B400AF074B1B681D -:102C0000064A43F007031360054B1B68044A43F070 -:102C10000203136000BFBD4680BC70478C8608402D -:102C20009086084080B400AF044B00221A60044B29 -:102C300000221A6000BFBD4680BC70478C860840E9 -:102C40009086084080B400AF034BE3221A6000BFB7 -:102C5000BD4680BC704700BF3888084080B400AFD4 -:102C600000BF0A4B1B6803F00203002BF9D1084B8D -:102C70001B68002B06D0074BEF221A60064B6FF043 -:102C800044021A6000BFBD4680BC70474C860840B5 -:102C90002C860840388808403488084080B400AF4B -:102CA00000231846BD4680BC704780B582B000AF97 -:102CB000FFF7ACF900F0D6F803463B60344B1B68D5 -:102CC000FB71344B1B68BB719D2002F04BFA304BFB -:102CD00000221A602F4B00221A60FB7903F00203D6 -:102CE000002B0FD02C4B0B221A722B4B1B68002B86 -:102CF00007D0294B1B683A6810469847FFF77AF9C6 -:102D000042E0FEE7FB7903F04003002B0FD0224B9B -:102D10000C221A72204B5B68002B07D01E4B5B689D -:102D20003A6810469847FFF765F92DE0FEE7FB7912 -:102D300003F00403002B0FD0174B0C221A72164B12 -:102D40005B68002B07D0144B5B683A6810469847C5 -:102D5000FFF750F918E0FEE7BB7903F00203002B00 -:102D60000FD00D4B0C221A720B4B5B68002B07D057 -:102D7000094B5B683A6810469847FFF73BF903E058 -:102D8000FEE7FFF737F900BF0837BD4680BD00BF3B -:102D90003488084030880840644E002080B483B0F6 -:102DA00000AF0A4B1B68FB71084B1A68FB79134094 -:102DB00003F00203002B03D0044B6FF002021A60F1 -:102DC00000BF0C37BD4680BC704700BF94860840EA -:102DD00080B500AF04220021054803F0BDFC054981 -:102DE000A12002F022F8A12002F034F900BF80BD3A -:102DF000704E00208F2E200080B483B000AF78602A -:102E0000034A7B68136000BF0C37BD4680BC704727 -:102E1000704E002080B582B000AF7860A12002F033 -:102E2000CFF802F0E8FC02467B68D31A0C4A9342C2 -:102E300003D8A12002F058F90DE002F0DCFC0246B4 -:102E40007B689B1A042B03D8A12002F04DF902E005 -:102E5000786802F013FD00BF0837BD4680BD00BF93 -:102E6000FEFFFF0080B500AF02F0C5FC0346184628 -:102E700080BD80B500AFA12002F0A2F800BF80BDE8 -:102E800080B500AFA12002F0E5F800BF80BD80B59D -:102E900000AFFFF7BBF8084B1B68002B07D0A12041 -:102EA00002F060F9044B1B689847FFF7A3F8FFF79F -:102EB000A1F800BF80BD00BF704E002080B500AFFC -:102EC00000F007F8FEE780B400AFFEE780B400AF83 -:102ED000FEE780B582B000AF114BFF221A60114BA4 -:102EE000114A1A60114B7B60114B3B6007E07A6816 -:102EF000131D7B603B68191D396012681A603B68BE -:102F00000C4A9342F3D30C480C494FF0000288421C -:102F1000B8BF40F8042BFADBFEF7DCFCFEE700BF8D -:102F2000B4200D4008ED00E000002000CC7020002F -:102F3000004000208C4200208C420020804E002067 -:102F400080B500AF0C2200211E4803F005FC1E488E -:102F500003F020F941F6FF711B4803F0A4FA0121A8 -:102F6000194803F019FB00220221184802F06EF9FB -:102F70000221164801F09DF8154A0121134802F07C -:102F8000C9F90121114801F07EF802F0BBFD0146AC -:102F900060234FF4E1320C4803F06AF80A4803F06A -:102FA000DEF8094803F02AF91021074803F067F911 -:102FB0000849054803F031FA152002F001F800BF76 -:102FC00080BD00BF744E002000C0004000900D4046 -:102FD00000410D40E930200080B483B000AF78603C -:102FE0003960054A7B681360034A3B68536000BF41 -:102FF0000C37BD4680BC7047744E002080B500AFD2 -:103000007021024803F03CFA00BF80BD00C00040C0 -:1030100080B500AF7021024803F045FA00BF80BDC3 -:1030200000C0004080B500AF5021024803F063FAB1 -:1030300000BF80BD00C0004080B500AF2021024825 -:1030400003F059FA00BF80BD00C0004080B582B0D7 -:1030500000AF0346FB71FB79112B05D0FB79132BD5 -:1030600002D0FB79122B0AD1094B01221A72084AAD -:10307000FB7953721221074803F08AF904E0FB79C7 -:103080001946044803F084F900BF0837BD4680BDE7 -:10309000744E002000C0004080B582B000AF0548EB -:1030A00003F04BF978607B68DBB218460837BD4601 -:1030B00080BD00BF00C0004080B582B000AF0346B5 -:1030C000FB71FB79002B04D01121064803F060F955 -:1030D00003E01321034803F05BF900BF0837BD4646 -:1030E00080BD00BF00C0004080B582B000AF0121AC -:1030F000124803F0EBF97860152002F033F87B6892 -:1031000003F02003002B05D0FEF7CCFF00F018F8E9 -:10311000FEF7C2FF7B6803F01003002B04D17B682D -:1031200003F04003002B05D0FEF7AAFF00F02CF8B7 -:10313000FEF7A0FF00BF0837BD4680BD00C00040BD -:1031400080B500AFFFF778FF0D4B1B7A002B0CD03A -:103150000B4B00221A720A4B5B7A83F01003DBB22E -:103160001946084803F014F906E0054B1B68002BCC -:1031700002D0034B1B6898470023184680BD00BF50 -:10318000744E002000C0004080B500AFFFF74AFF3A -:10319000044B5B68002B02D0024B5B68984700230E -:1031A000184680BD744E002080B584B000AF7860B2 -:1031B0000B46FB704F4BBB604F4B01221A70002334 -:1031C000FB730AE0FB7B7A681A44FB7BB9680B440B -:1031D00012781A70FB7B0133FB73FB7B0F2BF1D949 -:1031E0009F2001F037FF454B1B68444A43F0010321 -:1031F0001360434B1B68424A43F003031360414B87 -:103200001B68404A23F0010313603E4B1B683D4A94 -:1032100043F0010313603C4B1B683B4A43F003033C -:1032200013603A4B1B68394A03F003031360374BB2 -:103230001B68364A43F001031360FB7801229A4071 -:10324000334B1A60334B1B68324A43F0010313605F -:10325000314ABB681360314B10221A6000BF304BFB -:103260001B6803F00103002BF8D02D4B1B68002BCB -:1032700007DA254B1B68244A43F0004313600323FD -:1032800033E0274B1B6803F08043002B07D01E4B15 -:103290001B681D4A43F080431360022325E01A4B4C -:1032A0001B68194A43F003031360164B00221A608F -:1032B0001C4B1B6803F00703012B04D00E4B0022AC -:1032C0001A70022311E00023FB7307E0FB7BBA684E -:1032D000134400221A70FB7B0133FB73FB7B0F2B23 -:1032E000F4D9054B00221A70002318461037BD464A -:1032F00080BD00BFA04A00209C4A002080B7084043 -:1033000084B7084000B7084088B7084008B40840B0 -:1033100000B4084000B0084004B008400CB00840B9 -:1033200090B7084004B4084080B584B000AFF8609E -:10333000B96011461A460B46FB711346BB712C4B04 -:1033400002221A702B4B01221A602B4B01221A60A9 -:103350003B7E002B05D09F2001F004FF9F2001F051 -:103360002FFE264B02221A60254B1B68244A43F08D -:1033700003031360234AFB79136000BF214B1B68D2 -:10338000002BFADB204B1B6803F00053002B07D007 -:103390001B4B1B681A4A43F000531360012322E0C1 -:1033A000BB79002B03D0194B0C221A6002E0174B9B -:1033B00008221A60164B10221A60164B00221A605F -:1033C000154B01221A60154AFB681360144B10223A -:1033D0001A60144B01221A60134ABB681360134B26 -:1033E00010221A60002318461037BD4680BD00BF6A -:1033F0009C4A002080B7084084B7084000B70840C6 -:1034000088B708400CB4084090B7084050B5084051 -:1034100054B5084058B5084000B0084004B0084012 -:103420000CB0084020B0084024B008402CB0084040 -:1034300080B400AF0F4B1B78DBB203F00103002B0D -:103440000FD10C4B1B780B4B1B78DBB203F0804386 -:10345000002B06D1074B1B78DBB203F00053002B87 -:1034600001D0012300E00023DBB21846BD4680BC3A -:10347000704700BF90B7084080B500AF1E4B1B6877 -:10348000002B07DA1D4B1B681C4A43F000431360F6 -:1034900003232EE0184B1B6803F08043002B07D05A -:1034A000164B1B68154A43F080431360022320E04B -:1034B000114B1B6803F00053002B07D00F4B1B6808 -:1034C0000E4A43F000531360012312E09F2001F0E5 -:1034D000C1FD0A4B1B68094A43F003031360084B04 -:1034E00000221A60074B00221A60074B00221A7054 -:1034F0000023184680BD00BF90B7084088B7084039 -:1035000000B7084050B508409C4A002080B58AB0FA -:1035100000AFBA607B600346FB730B46BB73704B16 -:1035200003221A709F2001F095FD6E4B01221A6054 -:103530006D4B03221A606D4B02221A606C4B1B68A4 -:103540006B4A43F0030313606A4A97F83C301360F8 -:1035500000BF684B1B68002BFADB674B1B6803F04E -:103560000053002B07D0624B1B68614A43F00053A5 -:1035700013600123AFE097F84430013BDBB23B74AA -:10358000002387F8233011E097F82330BA681A44F3 -:1035900097F823300133127807F128010B4403F820 -:1035A000182C97F82330013387F8233097F823300D -:1035B0000C2BE9D997F84430032B01D100237B77FA -:1035C0000023BB770023FB7707F110034B4A1B68EE -:1035D00013604B4A7B6913604A4ABB6913604A4ACD -:1035E000FB69136097F84430013BDB047B62BB7BD3 -:1035F000012B07D9BB7B023B5B109B051A467B6AFC -:1036000013437B627B6A43F480237B627B6A43F0D3 -:1036100008037B627B6A43F004037B627B6A43F0AE -:1036200040037B627B6A43F000537B627B6A43F416 -:10363000C0737B62354A7B6A1360354A3B8E1360E8 -:10364000344B00221A60344A3B8F13603B8F002BAF -:103650001BD0324B01221A60314A7B6B1360314A16 -:103660003B8F136000BF244B1B6803F00203002B49 -:10367000F8D0214B1B68002B07DA1D4B1B681C4A36 -:1036800043F000431360032325E0194B03221A6023 -:1036900097F84830002B05D09F2001F063FD9F2054 -:1036A00001F08EFC104B01221A60FB7B002B11D025 -:1036B0001A4B01221A601A4A7B681360194A3B8E22 -:1036C0001360194B01221A60184A7B681360184A6C -:1036D0003B8E1360002318462837BD4680BD00BFCF -:1036E0009C4A002080B7084084B7084000B70840D3 -:1036F00088B708400CB4084090B7084040B508406F -:1037000044B5084048B508404CB5084050B508409D -:1037100054B5084058B508405CB5084000B00840B2 -:1037200004B008400CB0084020B0084024B0084065 -:103730002CB0084080B400AF0F4B1B78DBB203F015 -:103740000103002B0FD10C4B1B780B4B1B78DBB20A -:1037500003F08043002B06D1074B1B78DBB203F04C -:103760000053002B01D0012300E00023DBB21846F8 -:10377000BD4680BC704700BF90B7084080B588B098 -:1037800000AF03463A60FB710B46BB80374B1B68AA -:10379000002B07DA364B1B68354A43F000431360B1 -:1037A00003235FE0314B1B6803F08043002B07D0FD -:1037B0002F4B1B682E4A43F080431360022351E0D5 -:1037C0002A4B1B6803F00053002B07D0284B1B68C3 -:1037D000274A43F000531360012343E09F2001F088 -:1037E00039FC244B00221A6000BF234B1B6803F0F6 -:1037F0008043B3F1804FF7D1204A07F10C031268E0 -:103800001A601F4A07F10C03043312681A601D4A3C -:1038100007F10C03083312681A601B4A07F10C0306 -:103820000C3312681A60124B1B68114A43F00303F1 -:1038300013600023FB770DE0FA7FFB7F39680B44B0 -:1038400007F120010A4412F8142CD2B21A70FB7F3F -:103850000133FB77FA7FFB799A42EDD30B4B0022C1 -:103860001A70002318462037BD4680BD90B7084027 -:1038700088B7084000B7084050B5084070B5084008 -:1038800074B5084078B508407CB508409C4A0020D3 -:1038900080B58AB000AFBA607B600346FB730B460D -:1038A000BB73BB7B9BB23A8ED31A3B846A4B032219 -:1038B0001A706A4B01221A60694B03221A60694B25 -:1038C00002221A60684B03221A60684A97F83C305B -:1038D000136000BF654B1B68002BFADB644B1B6851 -:1038E00003F00053002B07D05F4B1B685E4A43F088 -:1038F000005313600123ABE097F84430013BDBB287 -:103900003B74002387F8233011E097F82330BA681E -:103910001A4497F823300133127807F128010B4439 -:1039200003F8182C97F82330013387F8233097F8E1 -:1039300023300C2BE9D997F84430032B01D1002315 -:103940007B770023BB770023FB7707F11003494AFD -:103950001B681360484A7B691360484ABB6913605F -:10396000474AFB69136097F84430013BDB047B62F4 -:10397000BB7B012B07D9BB7B023B5B109B051A4627 -:103980007B6A13437B627B6A43F480237B627B6A9E -:1039900043F008037B627B6A43F040037B627B6AEF -:1039A00043F000537B627B6A43F4C0737B62354A09 -:1039B0007B6A1360344A3B8C1360344B00221A60DC -:1039C000334A3B8F13603B8F002B1BD0314B0122BE -:1039D0001A60314A7B6B1360304A3B8F136000BF23 -:1039E000234B1B6803F00203002BF8D0204B1B680D -:1039F000002B07DA1C4B1B681B4A43F00043136083 -:103A0000032325E0184B03221A6097F84830002B57 -:103A100005D09F2001F0A6FB9F2001F0D1FA104BAA -:103A200001221A60FB7B002B11D01A4B01221A6075 -:103A3000194A7B681360194A3B8C1360184B0122AA -:103A40001A60184A7B681360174A3B8C1360002386 -:103A500018462837BD4680BD9C4A002080B70840E4 -:103A600084B7084000B7084088B708400CB4084045 -:103A700090B7084040B5084044B5084048B50840F4 -:103A80004CB5084050B5084054B5084058B50840FA -:103A90005CB5084000B0084004B008400CB00840D5 -:103AA00020B0084024B008402CB0084080B500AFDA -:103AB000FFF740FE0346184680BD80B58AB000AFD0 -:103AC000B9607B600346FB731346BB81FB7B9BB2F3 -:103AD000BA89D31ABB844A4B1B68002B07DA494BBF -:103AE0001B68484A43F000431360032384E0444BBF -:103AF0001B6803F08043002B07D0424B1B68414AF0 -:103B000043F080431360022376E03D4B1B6803F0D3 -:103B10000053002B07D03B4B1B683A4A43F000533D -:103B20001360012368E09F2001F094FA364B0022D5 -:103B30001A6000BF354B1B6803F08043B3F1804F20 -:103B4000F7D1334A07F1140312681A60314A07F1BA -:103B50001403043312681A602F4A07F11403083360 -:103B600012681A602D4A07F114030C3312681A60A8 -:103B7000244B1B68234A43F003031360002387F898 -:103B8000273011E097F8272097F8273079680B4401 -:103B900007F128010A4412F8142CD2B21A7097F8CF -:103BA0002730013387F8273097F82720FB7B9A428C -:103BB000E8D3002387F8263015E097F826307A6896 -:103BC00013441A78B98C97F826300B441946BB6811 -:103BD0000B441B789A4201D004230DE097F826305D -:103BE000013387F8263097F82620FB7B9A42E4D3EE -:103BF0000B4B00221A70002318462837BD4680BDA3 -:103C000090B7084088B7084000B7084050B5084052 -:103C100070B5084074B5084078B508407CB50840D8 -:103C20009C4A002080B485B000AF78607B68124A5F -:103C3000934210D0104A934203D8104A934207D0BF -:103C400012E00F4A934209D00E4A934209D00BE08A -:103C50001023FB600AE01123FB6007E01223FB60E6 -:103C600004E01323FB6001E0002300E0FB6818463A -:103C70001437BD4680BC704700A00D4000900D4039 -:103C800000B00D4000C00D4080B485B000AFF860BA -:103C90000B467A60FB727B6803F00103002B06D0B1 -:103CA000FB6803F580631A68FB7A134306E0FB6840 -:103CB00003F580631B68FA7AD2431340FA6802F571 -:103CC000806213607B6803F00203002B06D0FB6860 -:103CD00003F584631A68FB7A134306E0FB6803F577 -:103CE00084631B68FA7AD2431340FA6802F584624F -:103CF000136000BF1437BD4680BC704780B485B0E8 -:103D000000AF78600B46FB70FB78012202FA03F3E8 -:103D1000FB707B6803F580631B68FB607B6803F5C1 -:103D200084631B68BB60FA78FB681340002B14BFE8 -:103D300001230023DBB21946FA78BB681340002B3D -:103D400001D0022300E000230B4318461437BD4680 -:103D500080BC704780B485B000AFF8600B467A60D5 -:103D6000FB727B6803F00103002B06D0FB6803F5B0 -:103D700081631A68FB7A134306E0FB6803F58163ED -:103D80001B68FA7AD2431340FA6802F58162136025 -:103D90007B6803F00203002B06D0FB6803F20443A8 -:103DA0001A68FB7A134306E0FB6803F204431B68BE -:103DB000FA7AD2431340FA6802F2044213607B6835 -:103DC00003F00403002B06D0FB6803F20C431A68CF -:103DD000FB7A134306E0FB6803F20C431B68FA7A94 -:103DE000D2431340FA6802F20C42136000BF14374A -:103DF000BD4680BC704780B487B000AF78600B468A -:103E0000FB70FB78012202FA03F3FB707B6803F579 -:103E100081631B687B617B6803F204431B683B6121 -:103E20007B6803F20C431B68FB60FA787B691340E4 -:103E3000002B14BF01230023DBB21946FA783B693B -:103E40001340002B01D0022300E000230B43F9783C -:103E5000FA680A40002A01D0042200E0002213433D -:103E600018461C37BD4680BC704780B483B000AF95 -:103E700078600B46FB707B6803F582631A68FB78F9 -:103E8000796801F5826113430B6000BF0C37BD46B2 -:103E900080BC704780B483B000AF78600B46FB7085 -:103EA0007B6803F582631B68FA78D24311467A680F -:103EB00002F582620B40136000BF0C37BD4680BC28 -:103EC000704780B483B000AF78600B46FB70FB781E -:103ED000002B04D07B6803F583631B6803E07B68D9 -:103EE00003F214431B6818460C37BD4680BC70476C -:103EF00080B483B000AF78600B46FB707B6803F240 -:103F00001C431A46FB78136000BF0C37BD4680BCCB -:103F1000704780B582B000AF786039607868FFF78D -:103F200081FE78603968786800F07FFF786801F07A -:103F300047F800BF0837BD4680BD80B582B000AFEE -:103F400078607868FFF76EFE7860786801F082F834 -:103F5000786800F09BFF00BF0837BD4680BD80B485 -:103F600083B000AF78600B46FB70FB789B001A466D -:103F70007B6813441B6818460C37BD4680BC7047ED -:103F800080B483B000AF78600B46FB701346BB7003 -:103F9000FB789B001A467B6813441A46BB78136073 -:103FA00000BF0C37BD4680BC704780B582B000AF03 -:103FB00078600B46FB70FB78002219467868FFF7A3 -:103FC00063FEFB7800221946786801F07DFA00BF95 -:103FD0000837BD4680BD80B582B000AF78600B4623 -:103FE000FB70FB78012219467868FFF74DFEFB78DD -:103FF00000221946786801F067FA00BF0837BD460D -:1040000080BD80B582B000AF78600B46FB70FB7856 -:10401000022219467868FFF737FEFB78002219461E -:10402000786801F051FA00BF0837BD4680BD80B501 -:1040300082B000AF78600B46FB70FB780222194615 -:104040007868FFF721FEFB7800221946786801F0B6 -:104050003BFA00BF0837BD4680BD80B582B000AFD7 -:1040600078600B46FB70FB78022219467868FFF7F0 -:104070000BFEFB7800221946786801F025FA00BF94 -:104080000837BD4680BD80B582B000AF78600B4672 -:10409000FB70FB78022219467868FFF7F5FDFB7884 -:1040A00000221946786801F00FFA00BF0837BD46B4 -:1040B00080BD80B582B000AF78600B46FB70FB78A6 -:1040C000022219467868FFF7DFFDFB7808221946BF -:1040D000786801F0F9F900BF0837BD4680BD80B4AB -:1040E00087B000AFF8600B467A60FB7200237B61FB -:1040F000FB681D4A934201D100237B61FB681B4A88 -:10410000934201D108237B61FB68194A934201D194 -:1041100010237B61FB68174A934201D118237B610E -:10412000FA7A7B6902FA03F33B617B68012B0BD1BE -:10413000FB6803F204731A68FB6803F20473194600 -:104140003B6913430B600AE0FB6803F204731A68CF -:104150003B69DB43F96801F2047113400B6000BF57 -:104160001C37BD4680BC704700900D4000A00D403C -:1041700000B00D4000C00D4080B485B000AF786045 -:104180000B46FB700023FB607B68174A934201D10A -:104190000023FB607B68154A934201D10823FB6032 -:1041A0007B68134A934201D11023FB607B68114A5C -:1041B000934201D11823FB60FA78FB681344012273 -:1041C00002FA03F3BB607B6803F204731A68BB68EE -:1041D0001340002B01D0012300E0002318461437C0 -:1041E000BD4680BC704700BF00900D4000A00D4050 -:1041F00000B00D4000C00D4080B485B000AF7860C5 -:104200000B46FB700023FB607B68164A934201D18A -:104210000023FB607B68144A934201D10823FB60B2 -:104220007B68124A934201D11023FB607B68104ADD -:10423000934201D11823FB60FA78FB6802FA03F37A -:10424000BB607B6803F5E2631A687B6803F5E26391 -:104250001946BB6813430B6000BF1437BD4680BCD2 -:10426000704700BF00900D4000A00D4000B00D4011 -:1042700000C00D4080B485B000AF78600B46FB7085 -:104280000023FB607B68164A934201D10023FB6048 -:104290007B68144A934201D10823FB607B68124A71 -:1042A000934201D11023FB607B68104A934201D1F5 -:1042B0001823FB60FA78FB6802FA03F3BB607B68A3 -:1042C00003F5E2631A68BB68DB43796801F5E261D4 -:1042D00013400B6000BF1437BD4680BC704700BF61 -:1042E00000900D4000A00D4000B00D4000C00D40FA -:1042F00080B485B000AF78600B46FB700023FB6094 -:104300007B68184A934201D10023FB607B68164A00 -:10431000934201D10823FB607B68144A934201D188 -:104320001023FB607B68124A934201D11823FB6083 -:10433000FB78002B08D07B6803F5E3631A68FB6801 -:1043400022FA03F3DBB207E07B6803F5E4631A6843 -:10435000FB6822FA03F3DBB218461437BD4680BC73 -:10436000704700BF00900D4000A00D4000B00D4010 -:1043700000C00D4080B485B000AF78600B46FB7084 -:104380000023FB607B68164A934201D10023FB6047 -:104390007B68144A934201D10823FB607B68124A70 -:1043A000934201D11023FB607B68104A934201D1F4 -:1043B0001823FB60FA78FB6802FA03F3BB607B68A2 -:1043C00003F5E3631A687B6803F5E3631946BB688A -:1043D00013430B6000BF1437BD4680BC704700BF5D -:1043E00000900D4000A00D4000B00D4000C00D40F9 -:1043F00080B483B000AF7860054B1A6804497B68CD -:1044000013430B6000BF0C37BD4680BC704700BF34 -:1044100094200D4080B483B000AF7860054B1A68DB -:104420007B68DB43034913400B6000BF0C37BD467C -:1044300080BC704794200D4080B483B000AF78609A -:1044400039607B680C331A68396840F201130B40FD -:1044500079680C3113430B6000BF0C37BD4680BC3C -:10446000704780B483B000AF786039607B680C33EC -:104470001A68396840F201130B40DB4379680C314C -:1044800013400B6000BF0C37BD4680BC704780B442 -:1044900083B000AF786039607B680C331B687A6842 -:1044A0000C3223F4807323F0010313607B683A68B5 -:1044B000120E1A603B68DBB27A68043243F4007370 -:1044C00013603B681B0ADBB27A68083243F400735E -:1044D000136000BF0C37BD4680BC704780B485B008 -:1044E00000AFF860B9601346FB71BA6844F240034C -:1044F0001340BB60FB79002B05D0FB680C331A68B6 -:10450000BB68134305E0FB680C331A68BB68DB43E8 -:104510001340FA680C32136000BF1437BD4680BCEC -:10452000704780B485B000AFF860B9601346FB7186 -:10453000BA6842F220031340BB60FB79002B05D020 -:10454000FB680C331A68BB68134305E0FB680C3347 -:104550001A68BB68DB431340FA680C32136000BF73 -:104560001437BD4680BC704780B485B000AFF8609A -:10457000B9607A60BA6840F60C431340BB60FB68D0 -:104580000C331A68BB68DB431A407968BB680B4080 -:10459000F9680C3113430B6000BF1437BD4680BC73 -:1045A000704780B485B000AFF860B9601346FB7106 -:1045B000BA6840F202231340BB60FB79002B05D0A0 -:1045C000FB680C331A68BB68134305E0FB680C33C7 -:1045D0001A68BB68DB431340FA680C32136000BFF3 -:1045E0001437BD4680BC704780B485B000AFF8601A -:1045F000B9601346FB71BB68DBB2002B13D0FB79AB -:10460000002B08D0FB6804331B68FA68043243F0BF -:104610004003136007E0FB6804331B68FA68043248 -:1046200023F040031360BB6803F47F43002B13D0D7 -:10463000FB79002B08D0FB6808331B68FA68083246 -:1046400043F04003136007E0FB6808331B68FA6817 -:10465000083223F04003136000BF1437BD4680BC0E -:10466000704780B485B000AFF860B9607A60BB680D -:10467000DBB2002B04D0FB6838331A467B6813602A -:10468000BB6803F47F43002B04D0FB683C331A461D -:104690007B68136000BF1437BD4680BC704780B490 -:1046A00083B000AF786039603B68FF2B03D17B6833 -:1046B00038331B6802E07B683C331B6818460C37B4 -:1046C000BD4680BC704780B485B000AFF860B9606B -:1046D0007A60BB68DBB2002B04D0FB6840331A461B -:1046E0007B681360BB6803F47F43002B04D0FB6836 -:1046F00044331A467B68136000BF1437BD4680BC44 -:10470000704780B483B000AF786039603B68FF2B9E -:1047100003D17B6840331B6802E07B6844331B682D -:1047200018460C37BD4680BC704780B485B000AFDA -:10473000F860B9607A60BB68DBB2002B04D0FB681C -:1047400028331A467B681360BB6803F47F43002B51 -:1047500004D0FB682C331A467B68136000BF143703 -:10476000BD4680BC704780B483B000AF78603960CC -:104770003B68FF2B03D17B6828331B6802E07B6812 -:104780002C331B6818460C37BD4680BC704780B47C -:1047900083B000AF786039603B68FF2B03D17B6842 -:1047A00048331B6802E07B684C331B6818460C37A3 -:1047B000BD4680BC704780B485B000AFF860B9607A -:1047C0007A60BB68DBB2002B04D0FB6830331A463A -:1047D0007B681360BB6803F47F43002B04D0FB6845 -:1047E00034331A467B68136000BF1437BD4680BC63 -:1047F000704780B483B000AF786039603B68FF2BAE -:1048000003D17B6830331B6802E07B6834331B685C -:1048100018460C37BD4680BC704780B584B000AFE9 -:10482000F860B9607A60FB68184A93420DD0FB6863 -:10483000174A934207D0FB68164A934201D12723B7 -:1048400004E0332302E0252300E02323FB60BB6860 -:10485000DBB2002B06D07968F86800F0E6FAF86859 -:1048600000F0AEFBBB6803F47F43002B0AD0FB686B -:1048700001337968184600F0D8FAFB68013318460E -:1048800000F09EFB00BF1037BD4680BD0000034016 -:10489000001003400020034080B582B000AF786074 -:1048A00039607B68174A93420DD07B68164A934261 -:1048B00007D07B68154A934201D1272304E03323B4 -:1048C00002E0252300E023237B603B68DBB2002B62 -:1048D00005D0786800F0BEFB786800F0D7FA3B6836 -:1048E00003F47F43002B09D07B680133184600F0A6 -:1048F000B1FB7B680133184600F0C8FA00BF0837E7 -:10490000BD4680BD0000034000100340002003406E -:1049100080B483B000AF786039607B6818331A6860 -:104920007B68183319463B6813430B6000BF0C3794 -:10493000BD4680BC704780B483B000AF78603960FA -:104940007B6818331A683B68DB4379681831134079 -:104950000B6000BF0C37BD4680BC704780B483B08D -:1049600000AF78600B46FB70FB78002B03D07B68B0 -:1049700020331B6802E07B681C331B6818460C3729 -:10498000BD4680BC704780B483B000AF78603960AA -:104990007B6824331A463B68136000BF0C37BD4662 -:1049A00080BC704780B483B000AF786039607B68AA -:1049B00010331A463B68136000BF0C37BD4680BCFD -:1049C000704700BF80B584B000AF78600B46FB70C5 -:1049D00000F038F8FB78002B02D00F4BFB6001E0B1 -:1049E0000E4BFB60FA6813469B0013449B001A466B -:1049F0007B681344591EFA6813469B0013449B00BE -:104A0000B1FBF3F3013BBB60054ABB68136000BF19 -:104A10001037BD4680BD00BF801A0600A086010089 -:104A20000C00024080B582B000AF0346FB7100F07D -:104A300017F8034AFB79136000BF0837BD4680BDF5 -:104A40000008024080B400AF044B1B68034A43F0E7 -:104A50001003136000BFBD4680BC704720000240B9 -:104A600080B400AF064B1B68054A43F02003136077 -:104A7000044B01221A6000BFBD4680BC704700BFD6 -:104A8000200002400408024080B400AF044B1B68C1 -:104A9000034A23F01003136000BFBD4680BC70477B -:104AA0002000024080B400AF064B00221A60064B83 -:104AB0001B68054A23F02003136000BFBD4680BC7D -:104AC000704700BF040802402000024080B582B059 -:104AD00000AF78607968182000F0A7F9182000F07E -:104AE0006FFA00BF0837BD4680BD80B500AF182003 -:104AF00000F0B0FA182000F0C9F900BF80BD80B402 -:104B000000AF034B01221A6000BFBD4680BC704756 -:104B10001000024080B400AF044B1B68034A43F00E -:104B20000103136000BFBD4680BC70470C08024003 -:104B300080B483B000AF7860054B1A6804497B6885 -:104B400013430B6000BF0C37BD4680BC704700BFED -:104B50000C08024080B400AF034B00221A6000BF73 -:104B6000BD4680BC704700BF1000024080B400AF5B -:104B7000044B1B68034A23F00103136000BFBD46CA -:104B800080BC70470C08024080B483B000AF7860EE -:104B9000054B1A687B68DB43034913400B6000BF79 -:104BA0000C37BD4680BC70470C08024080B483B00F -:104BB00000AF0346FB71FB79002B07D0094B1B6844 -:104BC000002B14BF01230023DBB206E0064B1B6859 -:104BD000002B14BF01230023DBB218460C37BD465F -:104BE00080BC7047180002401400024080B483B0BB -:104BF00000AF0346FB71FB79002B07D0094B1B6804 -:104C0000002B14BF01230023DBB206E0064B1B6818 -:104C1000002B14BF01230023DBB218460C37BD461E -:104C200080BC7047140802401008024080B483B072 -:104C300000AF0346FB71FB79002B02D0044B1B68CD -:104C400001E0044B1B6818460C37BD4680BC70471A -:104C5000140802401008024080B400AF044B012247 -:104C60001A60044B01221A6000BFBD4680BC704729 -:104C70001C0002401800024080B400AF034B012228 -:104C80001A6000BFBD4680BC704700BF18080240D4 -:104C900080B483B000AF7860034A7B68136000BFC4 -:104CA0000C37BD4680BC70471808024080B483B002 -:104CB00000AF03460A46FB711346BB71FB795A00ED -:104CC000BB791A43034B1A6000BF0C37BD4680BC4A -:104CD000704700BF0000024080B400AF064B1B6865 -:104CE00003F00103002B01D0012300E0002318464C -:104CF000BD4680BC704700BF0400024080B400AFD6 -:104D0000064B1B6803F04003002B01D0012300E099 -:104D100000231846BD4680BC704700BF0400024017 -:104D200080B483B000AF7860034A7B68136000BF33 -:104D30000C37BD4680BC70470400024080B483B08D -:104D400000AF0C4B1B687B607B6803F00103002BFA -:104D500001D0002309E07B6803F01203002B03D08D -:104D60007B6803F01C0300E0002318460C37BD46A7 -:104D700080BC70470400024080B483B000AF03469B -:104D8000FB71044AFB79136000BF0C37BD4680BC41 -:104D9000704700BF0800024080B400AF024B1B68A0 -:104DA0001846BD4680BC70470800024080B400AF82 -:104DB000024B1B681846BD4680BC70470408024081 -:104DC00080B483B000AF0346FB71044AFB791360E3 -:104DD00000BF0C37BD4680BC704700BF08080240CA -:104DE00080B400AF024B1B681846BD4680BC7047BC -:104DF0000808024080B400AFFEE780B500AF01F0C4 -:104E00005EFC0346002B14BF01230023DBB21846CF -:104E100080BD80B500AF01F045FC0346002B14BFF8 -:104E200001230023DBB2184680BD80B485B000AFFB -:104E300078603960134B1B68134A934218D0114BAA -:104E40001B68BB600023FB600CE0FB689A00BB683A -:104E500013441B6819460C4AFB6842F82310FB6890 -:104E60000133FB60FB68A22BEFD9064B064A1A60A0 -:104E700005497B683A6841F8232000BF1437BD46D6 -:104E800080BC704708ED00E00040002080B483B093 -:104E900000AF7860044A7B68044942F8231000BFE1 -:104EA0000C37BD4680BC704700400020F54D200007 -:104EB00080B483B000AF7860074A7B6852F8233033 -:104EC000064A43F0BF6343F40033136000BF0C375E -:104ED000BD4680BC704700BF446E20000CED00E072 -:104EE00080B483B000AF0E4B1B6803F4E0633B60FB -:104EF00000237B6009E00B4A7B6852F823303A6854 -:104F00009A4206D07B6801337B607B68072BF2D91D -:104F100000E000BF7B6818460C37BD4680BC704778 -:104F20000CED00E0446E200080B485B000AF7860E6 -:104F30000B46FB707B689B08144A52F823301B68B1 -:104F4000FB607B6803F00303DB00FF2202FA03F33C -:104F5000DB431A46FB681340FB60FA787B6803F07A -:104F60000303DB0002FA03F31A46FB681343FB60FA -:104F70007B689B08054A52F823301A46FB68136089 -:104F800000BF1437BD4680BC704700BF646E200070 -:104F900080B483B000AF78607B689B08074A52F802 -:104FA00023301A687B6803F00303DB0022FA03F363 -:104FB000DBB218460C37BD4680BC7047646E2000DB -:104FC00080B483B000AF78607B68042B06D11E4BA1 -:104FD0001B681D4A43F4803313602FE07B68052B68 -:104FE00006D1194B1B68184A43F40033136025E0BF -:104FF0007B68062B06D1144B1B68134A43F48023AD -:1050000013601BE07B680F2B06D1104B1B680F4A07 -:1050100043F00203136011E07B680F2B0ED97B680D -:10502000103B03F01F03012202FA03F17B68103BDF -:105030005B09074A52F823300A461A6000BF0C3752 -:10504000BD4680BC704700BF24ED00E010E000E0EA -:10505000086F200080B483B000AF78607B68042BB9 -:1050600006D11E4B1B681D4A23F4803313602FE0CA -:105070007B68052B06D1194B1B68184A23F40033B3 -:10508000136025E07B68062B06D1144B1B68134A7E -:1050900023F4802313601BE07B680F2B06D1104B99 -:1050A0001B680F4A23F00203136011E07B680F2B8B -:1050B0000ED97B68103B03F01F03012202FA03F1B3 -:1050C0007B68103B5B09074A52F823300A461A6096 -:1050D00000BF0C37BD4680BC704700BF24ED00E028 -:1050E00010E000E01C6F200080B483B000AF786057 -:1050F0007B68022B06D1194B1B68184A43F000430A -:10510000136025E07B680E2B06D1144B1B68134AF5 -:1051100043F0805313601BE07B680F2B06D10F4BCD -:105120001B680E4A43F08063136011E07B680F2B0D -:105130000ED97B68103B03F01F03012202FA03F132 -:105140007B68103B5B09064A52F823300A461A6016 -:1051500000BF0C37BD4680BC704700BF04ED00E0C7 -:10516000306F200080B483B000AF78607B680E2B76 -:1051700006D1144B1B68134A43F0006313601BE015 -:105180007B680F2B06D10F4B1B680E4A43F0007350 -:10519000136011E07B680F2B0ED97B68103B03F086 -:1051A0001F03012202FA03F17B68103B5B09064AE8 -:1051B00052F823300A461A6000BF0C37BD4680BC47 -:1051C000704700BF04ED00E0446F200080B582B05E -:1051D00000AF7860786801F082FA00BF0837BD46FA -:1051E00080BD80B500AF01F07EFA0346184680BD51 -:1051F00080B400AF044B1B68034A43F00103136003 -:1052000000BFBD4680BC704798200D4080B400AF01 -:10521000044B1B68034A23F00103136000BFBD4623 -:1052200080BC704798200D4080B400AF064B1B68CF -:1052300003F00103002B01D0012300E000231846F6 -:10524000BD4680BC704700BF98200D4080B489B037 -:1052500000AFF8600B467A60FB72254BFB610023C0 -:10526000BB613CE0FA7ABB6942FA03F303F0010345 -:105270007B617B69002B2FD0FB681E4A934213D0C1 -:105280001C4A934203D81C4A934207D01EE01B4A93 -:1052900093420FD01A4A934212D017E0194ABB69C1 -:1052A00052F82330FB6114E0174ABB6952F82330EF -:1052B000FB610EE0154ABB6952F82330FB6108E040 -:1052C000134ABB6952F82330FB6102E0084BFB61D3 -:1052D00000BFFB697A681A60BB690133BB61BB69B7 -:1052E000072BBFD900BF2437BD4680BC704700BF25 -:1052F00000400D4000A00D4000900D4000B00D405A -:1053000000C00D40D86F2000F86F200018702000FA -:105310003870200080B487B000AFF8600B467A6028 -:10532000FB7200237B61FB68634A934237D0624A79 -:10533000934203D8614A934207D0ABE0604A93425C -:1053400056D0604A93427CD0A4E0FB7A012B01D175 -:1053500000237B61FB7A022B01D101237B61FB7A65 -:10536000042B01D102237B61FB7A082B01D103239B -:105370007B61FB7A102B01D104237B61FB7A202B0C -:1053800001D105237B61FB7A402B01D106237B6190 -:10539000FB7A802B40F0818007237B617DE0FB7AE4 -:1053A000012B01D108237B61FB7A022B01D1092358 -:1053B0007B61FB7A042B01D10A237B61FB7A082BEA -:1053C00001D10B237B61FB7A102B01D10C237B6174 -:1053D000FB7A202B01D10D237B61FB7A402B01D17D -:1053E0000E237B61FB7A802B59D10F237B6156E022 -:1053F000FB7A012B01D110237B61FB7A022B01D1B7 -:1054000011237B61FB7A042B01D112237B61FB7A90 -:10541000082B01D113237B61FB7A102B01D11423BC -:105420007B61FB7A202B01D115237B61FB7A402B1A -:1054300001D116237B61FB7A802B32D117237B614C -:105440002FE0FB7A012B01D118237B61FB7A022B21 -:1054500001D119237B61FB7A042B01D11A237B61D3 -:10546000FB7A082B01D11B237B61FB7A102B01D126 -:105470001C237B61FB7A202B01D11D237B61FB7AEE -:10548000402B01D11E237B61FB7A802B0BD11F2384 -:105490007B6108E000237B6106E000BF04E000BF01 -:1054A00002E000BF00E000BF7B687A691A6000BFBD -:1054B0001C37BD4680BC704700A00D4000900D40D9 -:1054C00000B00D4000C00D4080B489B000AFF8605E -:1054D0000B467A60FB72254BFB610023BB613CE00D -:1054E000FA7ABB6942FA03F303F001037B617B693B -:1054F000002B2FD0FB681E4A934213D01C4A9342C4 -:1055000003D81C4A934207D01EE01B4A93420FD097 -:105510001A4A934212D017E0194ABB6952F8233055 -:10552000FB6114E0174ABB6952F82330FB610EE0BF -:10553000154ABB6952F82330FB6108E0134ABB6986 -:1055400052F82330FB6102E0114BFB6100BFFB69A5 -:105550007A681A60BB690133BB61BB69072BBFD98D -:1055600000BF2437BD4680BC704700BF00400D40DF -:1055700000A00D4000900D4000B00D4000C00D4057 -:10558000586F2000786F2000986F2000B86F2000BF -:1055900080400D4080B485B000AF78600B46FB7052 -:1055A000644BFB607B68644A934237D0624A934203 -:1055B00003D8624A934207D0ABE0614A934256D087 -:1055C000604A93427CD0A4E0FB78012B01D1594B77 -:1055D000FB60FB78022B01D15B4BFB60FB78042B5B -:1055E00001D15A4BFB60FB78082B01D1584BFB6073 -:1055F000FB78102B01D1574BFB60FB78202B01D19E -:10560000554BFB60FB78402B01D1544BFB60FB7882 -:10561000802B40F08180524BFB607DE0FB78012BBA -:1056200001D1504BFB60FB78022B01D14E4BFB604C -:10563000FB78042B01D14D4BFB60FB78082B01D18B -:105640004B4BFB60FB78102B01D14A4BFB60FB7886 -:10565000202B01D1484BFB60FB78402B01D1474BFD -:10566000FB60FB78802B59D1454BFB6056E0FB7803 -:10567000012B01D1434BFB60FB78022B01D1424B44 -:10568000FB60FB78042B01D1404BFB60FB78082BBF -:1056900001D13F4BFB60FB78102B01D13D4BFB60F0 -:1056A000FB78202B01D13C4BFB60FB78402B01D1D8 -:1056B0003A4BFB60FB78802B32D1394BFB602FE0FB -:1056C000FB78012B01D1374BFB60FB78022B01D11A -:1056D000354BFB60FB78042B01D1344BFB60FB782E -:1056E000082B01D1324BFB60FB78102B01D1314BE1 -:1056F000FB60FB78202B01D12F4BFB60FB78402B0C -:1057000001D12E4BFB60FB78802B0BD12C4BFB6027 -:1057100008E0084BFB6006E000BF04E000BF02E0C9 -:1057200000BF00E000BFFB681B6818461437BD4689 -:1057300080BC704780400D4000A00D4000900D409F -:1057400000B00D4000C00D4084400D4088400D4029 -:105750008C400D4090400D4094400D4098400D40CD -:105760009C400D40A0400D40A4400D40A8400D407D -:10577000AC400D40B0400D40B4400D40B8400D402D -:10578000BC400D40C0400D40C4400D40C8400D40DD -:10579000CC400D40D0400D40D4400D40D8400D408D -:1057A000DC400D40E0400D40E4400D40E8400D403D -:1057B000EC400D40F0400D40F4400D40F8400D40ED -:1057C000FC400D4080B582B000AF78607968A120C0 -:1057D000FFF72BFBA120FFF7F3FB00BF0837BD4607 -:1057E00080BD80B500AFA120FFF734FCA120FFF7FA -:1057F0004DFB00BF80BD80B483B000AF0D4B1B6874 -:105800007B600D4B1B681B027A6813437B600B4B5C -:105810001B681B047A6813437B60094B1B681B06DB -:105820007A6813437B607B6818460C37BD4680BCA2 -:10583000704700BF40500D4044500D4048500D404F -:105840004C500D4080B485B000AF786039600A4B91 -:105850001B68FB60FB6823F03F03FB607A683B68D2 -:105860001343FA681343FB60034AFB68136000BFED -:105870001437BD4680BC704754500D4080B483B08F -:1058800000AF786000BF0E4B1B6803F00103002BD4 -:10589000F9D00C4A7B681B0E13607B681B0C0A4A0C -:1058A000DBB213607B681B0A084ADBB21360084A4C -:1058B0007B68DBB2136000BF0C37BD4680BC70470D -:1058C00050500D404C500D4048500D4044500D403C -:1058D00040500D4080B483B000AF0D4B1B687B601F -:1058E0000C4B1B681B027A6813437B600A4B1B68D6 -:1058F0001B047A6813437B60084B1B681B067A689D -:1059000013437B607B6818460C37BD4680BC7047EC -:105910005C500D4060500D4064500D4068500D408B -:1059200080B483B000AF074B1B6803F00103002B6A -:1059300014BF01230023FB71FB7918460C37BD46C9 -:1059400080BC704758500D4080B483B000AF074B07 -:105950001B687B607B6823F001037B60034A7B68E4 -:10596000136000BF0C37BD4680BC704758500D40D7 -:1059700080B586B000AF03463A60FB710B46BB7141 -:10598000BB7983F00103DBB2002B07D0244B1B68EB -:1059900043F400133B61224A3B691360204B1B68B0 -:1059A0003B613A691F4B13403B61FB7983F0010374 -:1059B000DBB2002B03D03B6943F080733B61BB79C2 -:1059C000002B02D04FF4803300E00023BB603A6923 -:1059D000BB6813433B613A693B6813433B61104A20 -:1059E0003B691360104B1B687B610023FB6008E080 -:1059F000102000F0DBF80C4B1B687B61FB68013367 -:105A0000FB607B6903F48033BA689A4204D0FB6878 -:105A10004FF6FE729342EBD900BF1837BD4680BDEA -:105A200000200D40F8FFFEFE04200D4080B485B03C -:105A300000AF1E4B1B68BB60BB6803F007037B60B5 -:105A40000023FB607B68072B2AD801A252F823F0C1 -:105A5000715A2000775A20007D5A2000835A200076 -:105A6000895A20008F5A2000955A20009B5A200006 -:105A70000F4BFB6014E00F4BFB6011E00E4BFB6023 -:105A80000EE00E4BFB600BE00D4BFB6008E00D4B96 -:105A9000FB6005E00C4BFB6002E00C4BFB6000BFC1 -:105AA000FB6818461437BD4680BC704704200D4083 -:105AB0000048E8010024F40000127A0000093D00CB -:105AC00080841E0040420F0020A1070090D00300F8 -:105AD00080B485B000AF7860094B1B68FB60FB6841 -:105AE00023F4E063FB607B681B02FA681343FB60EE -:105AF000034AFB68136000BF1437BD4680BC704783 -:105B000000200D4080B485B000AF1F4B1B68BB6008 -:105B1000BB681B0A03F007037B600023FB607B6804 -:105B2000072B2BD801A252F823F000BF4D5B2000B9 -:105B3000535B2000595B20005F5B2000655B200009 -:105B40006B5B2000715B2000775B20000F4BFB60DC -:105B500014E00F4BFB6011E00E4BFB600EE00E4BB0 -:105B6000FB600BE00D4BFB6008E00D4BFB6005E0BC -:105B70000C4BFB6002E00C4BFB6000BFFB6818465F -:105B80001437BD4680BC704704200D400048E80132 -:105B90000024F40000127A0000093D0080841E00F9 -:105BA00040420F0020A1070090D0030001387FF48D -:105BB000FDAF704700BF80B400AF024B08221A60EF -:105BC000FEE700BF74200D4080B500AF00F07EFD01 -:105BD00000BF80BD80B582B000AF334B1B687B60D7 -:105BE0007B6803F00703002B0CBF01230023FB702D -:105BF0007B6803F4E063002B0CBF01230023BB7020 -:105C0000FB78002B02D1BB78002B18D0274B1B68E8 -:105C10007B60FB78002B01D0012300E000237A6831 -:105C200013437B60BB78002B02D04FF4807300E0FD -:105C300000237A6813437B601C4A7B6813601C4B0B -:105C40001B681B4A43F00403136000F03FFD184B30 -:105C50001B68174A23F004031360FB78002B02D162 -:105C6000BB78002B1BD0114B1B687B60FB78002B93 -:105C700002D06FF0070301E04FF0FF337A68134062 -:105C80007B60BB78002B02D06FF4E06301E04FF043 -:105C9000FF337A6813407B60044A7B68136000BF5F -:105CA0000837BD4680BD00BF04200D4000200D40D8 -:105CB00010ED00E080B485B000AF78607B681B0A0F -:105CC00003F00F03042B0BD07B681B0A03F00F03B8 -:105CD000042B05D07B681B0A03F00F03052B03D1AF -:105CE000104B1B68FB6002E00F4B1B68FB607B687E -:105CF0001B0A03F00F030D4A52F823207B6803F0C0 -:105D00000F0302FA03F3BB60FA68BB681340002B71 -:105D100001D0012300E0002318461437BD4680BCA3 -:105D2000704700BF1C300D4018300D40B47020008B -:105D300080B485B000AF78607B681B0A03F00F0366 -:105D40001D4A52F823301B687A6802F00F020121C5 -:105D500001FA02F210467A68120A02F00F0216499E -:105D600051F82220034313600023FB6002E0FB682C -:105D70000133FB60FB680F2BF9D97B681B0A03F02A -:105D80000F030D4A52F823301B687A6802F00F02A5 -:105D9000012101FA02F2D24310467A68120A02F097 -:105DA0000F02054951F822200340136000BF143749 -:105DB000BD4680BC704700BFA070200080B483B097 -:105DC00000AF78607B681B0A03F00F030C4A52F89F -:105DD00023301B687A6802F00F02012101FA02F2F7 -:105DE00010467A68120A02F00F02054951F8222083 -:105DF0000343136000BF0C37BD4680BC704700BF33 -:105E00005870200080B483B000AF78607B681B0AB4 -:105E100003F00F030C4A52F823301B687A6802F033 -:105E20000F02012101FA02F2D24310467A68120AE7 -:105E300002F00F02044951F822200340136000BF12 -:105E40000C37BD4680BC70475870200080B483B0CA -:105E500000AF78607B681B0A03F00F030C4A52F80E -:105E600023301B687A6802F00F02012101FA02F266 -:105E700010467A68120A02F00F02054951F82220F2 -:105E80000343136000BF0C37BD4680BC704700BFA2 -:105E90007070200080B483B000AF78607B681B0A0C -:105EA00003F00F030C4A52F823301B687A6802F0A3 -:105EB0000F02012101FA02F2D24310467A68120A57 -:105EC00002F00F02044951F822200340136000BF82 -:105ED0000C37BD4680BC70477070200080B483B022 -:105EE00000AF78607B681B0A03F00F030C4A52F87E -:105EF00023301B687A6802F00F02012101FA02F2D6 -:105F000010467A68120A02F00F02054951F8222061 -:105F10000343136000BF0C37BD4680BC704700BF11 -:105F20008870200080B483B000AF78607B681B0A63 -:105F300003F00F030C4A52F823301B687A6802F012 -:105F40000F02012101FA02F2D24310467A68120AC6 -:105F500002F00F02044951F822200340136000BFF1 -:105F60000C37BD4680BC70478870200080B483B079 -:105F700000AF7860034A7B68136000BF0C37BD46F2 -:105F800080BC704758200D4080B483B000AF064BF2 -:105F90001B687B607B6803F003037B607B681846AB -:105FA0000C37BD4680BC704758200D4080B483B08C -:105FB00000AF074B1B687B607B6843F001037B608D -:105FC000034A7B68136000BF0C37BD4680BC704736 -:105FD00080200D4080B483B000AF786039607B686A -:105FE0002C331B6823F086027B682C3319463B68F0 -:105FF00013430B6000BF0C37BD4680BC704780B4B4 -:1060000083B000AF78607B682C331B6803F0860395 -:1060100018460C37BD4680BC704780B485B000AFD1 -:10602000F860B9607A60FB6834331946BA687B68F7 -:1060300013430B6000BF1437BD4680BC704780B46B -:1060400087B000AFF860B9607A60FB6834331B68D2 -:106050007B617B6903F00702BB681A607B6903F010 -:1060600038027B681A6000BF1C37BD4680BC704791 -:1060700080B586B000AFF860B9607A603B60F868C0 -:1060800000F088F87B681B01BA689A420BD2FB6863 -:1060900030331B68FA68303243F0200313607B68AA -:1060A0005B087B6007E0FB6830331B68FA683032BE -:1060B00023F020031360BB68DA007B68B2FBF3F3C4 -:1060C00001335B087B61FB6824331A467B699B09BB -:1060D0001360FB6828331A467B6903F03F031360A3 -:1060E000FB682C331A463B681360FB6818331A466A -:1060F0000023136000BF1837BD4680BD80B487B051 -:1061000000AFF860B9607A603B60FB6824331B68BD -:106110007B61FB6828331B683B61BB689A007B6925 -:1061200099013B690B44B2FBF3F27B681A60FB6890 -:1061300030331B6803F02003002B04D07B681B68FE -:106140005A007B681A60FB682C331B6803F0EE0270 -:106150003B681A6000BF1C37BD4680BC704780B4E6 -:1061600083B000AF78607B682C331B687A682C3270 -:1061700043F0100313607B6830331B687A68303259 -:1061800043F4407343F00103136000BF0C37BD4676 -:1061900080BC704780B483B000AF786000BF7B687C -:1061A00018331B6803F00803002BF8D17B682C33ED -:1061B0001B687A682C3223F0100313607B6830333D -:1061C0001B687A68303223F4407323F001031360B4 -:1061D00000BF0C37BD4680BC704780B483B000AFB1 -:1061E00078607B682C331B687A682C3243F010038C -:1061F000136000BF0C37BD4680BC704780B483B0CD -:1062000000AF78607B682C331B687A682C3223F0EF -:106210001003136000BF0C37BD4680BC704780B4CC -:1062200083B000AF78600B46FB70FB78002B08D082 -:106230007B6830331B687A68303243F006031360A2 -:1062400007E07B6830331B687A68303243F0020322 -:10625000136000BF0C37BD4680BC704780B483B06C -:1062600000AF78607B6830331B687A68303223F087 -:106270000603136000BF0C37BD4680BC704780B476 -:1062800083B000AF786039607B6830331B6823F0DF -:1062900010027B68303319463B6813430B6000BF24 -:1062A0000C37BD4680BC704780B483B000AF7860C7 -:1062B0007B6830331B6803F0100318460C37BD466B -:1062C00080BC704780B483B000AF78607B681833BF -:1062D0001B6803F01003002B0CBF01230023DBB26B -:1062E00018460C37BD4680BC704780B483B000AF01 -:1062F00078607B6818331B6803F02003002B0CBF09 -:1063000001230023DBB218460C37BD4680BC704722 -:1063100080B483B000AF78607B6818331B6803F0EB -:106320001003002B02D17B681B6801E04FF0FF33A4 -:1063300018460C37BD4680BC704780B483B000AFB0 -:10634000786000BF7B6818331B6803F01003002BD4 -:10635000F8D17B681B6818460C37BD4680BC704777 -:1063600080B483B000AF78600B46FB707B68183355 -:106370001B6803F02003002B04D17B68FA781A60B5 -:10638000012300E0002318460C37BD4680BC70474F -:1063900080B483B000AF78600B46FB7000BF7B68B1 -:1063A00018331B6803F02003002BF8D17B68FA78C0 -:1063B0001A6000BF0C37BD4680BC704780B483B004 -:1063C00000AF78600B46FB70FB78002B05D07B6834 -:1063D0002C331B6843F0010304E07B682C331B68FB -:1063E00023F001037A682C32136000BF0C37BD46DE -:1063F00080BC704780B483B000AF78607B6818338E -:106400001B6803F00803002B14BF01230023DBB239 -:1064100018460C37BD4680BC704780B584B000AFCD -:10642000786039607B68094A934201D1152300E006 -:106430001623FB603968F868FEF7F7FCF868FEF78A -:10644000BFFD00BF1037BD4680BD00BF00C000408B -:1064500080B584B000AF78607B68084A934201D170 -:10646000152300E01623FB60F868FEF7F3FDF868DB -:10647000FEF70CFD00BF1037BD4680BD00C00040D8 -:1064800080B483B000AF786039607B6838331A68B5 -:106490007B68383319463B6813430B6000BF0C37E9 -:1064A000BD4680BC704780B483B000AF786039606F -:1064B0007B6838331A683B68DB43796838311340AE -:1064C0000B6000BF0C37BD4680BC704780B483B002 -:1064D00000AF78600B46FB70FB78002B03D07B6825 -:1064E00040331B6802E07B683C331B6818460C375E -:1064F000BD4680BC704780B483B000AF786039601F -:106500007B6844331A463B68136000BF0C37BD46B6 -:1065100080BC704780B483B000AF786039607B681E -:1065200048331A687B68483319463B6813430B604D -:1065300000BF0C37BD4680BC704780B483B000AF4D -:10654000786039607B6848331A683B68DB43796858 -:10655000483113400B6000BF0C37BD4680BC70470C -:1065600080B483B000AF78607B6804331B6803F0AD -:106570000F0318460C37BD4680BC704780B483B00B -:1065800000AF78607B6804331A460023136000BFB5 -:106590000C37BD4680BC704780B483B000AF7860D4 -:1065A00039607B6803F6C8731A463B68136000BF06 -:1065B0000C37BD4680BC704780B483B000AF7860B4 -:1065C0007B6803F6C8731B6818460C37BD4680BC51 -:1065D000704780B483B000AF78607B68A4331B68D9 -:1065E0007A68A43243F40043136000BF0C37BD4601 -:1065F00080BC704780B483B000AF78607B68A43300 -:106600001B687A68A43223F40043136000BF0C3780 -:10661000BD4680BC704780B483B000AF78600B4645 -:10662000FB701346BB707B68A4331A46FB7813607B -:106630007B68A8331A46BB78136000BF0C37BD4691 -:1066400080BC704780B485B000AF78600B46FB70AB -:1066500000BF7B6818331B6803F08803802BF8D1D8 -:106660007B682C331B68FB60FB6823F086037A6829 -:106670002C3243F0820313607B68FA781A6000BF03 -:106680007B6818331B6803F08803802BF8D17B6884 -:106690002C331A46FB68136000BF1437BD4680BC1C -:1066A000704700BFEFF3108072B670471C46234658 -:1066B0001846EFF3108070471C4623461846EFF348 -:1066C000108062B670471C462346184630BF70479C -:1066D00000BF20BF704700BF40BF704700BF80F3BE -:1066E0001188704700BFEFF3118070471C462346A6 -:1066F00018460000032A70B414D940EA0105AD071A -:1067000004460B4622D11D6826681946AE42204633 -:1067100003F1040304F1040418D1043A032A2046C7 -:106720001946F0D8541E72B102780B789A4208BF0D -:10673000641806D00CE010F8012F11F8013F9A42BE -:1067400006D1A142F7D1002070BC7047541EEBE780 -:10675000D01A70BC704700BFF0B4860743D0541EF7 -:10676000002A3ED0CAB2034602E014F1FF3438D307 -:1067700003F8012B9D07F8D1032C2BD9CDB245EAA4 -:1067800005250F2C45EA054516D9A4F110073F0948 -:1067900003F1200606EB071603F1100242E9045547 -:1067A00042E902551032B242F8D104F00F04013729 -:1067B000032C03EB07130DD91E462246043A032A85 -:1067C00046F8045BFAD8221F22F003020432134475 -:1067D00004F003042CB1C9B21C4403F8011B9C4211 -:1067E000FBD1F0BC704714460346C5E7683D7563AE -:1067F000620000006F70656E6D6F74652D622D32E2 -:106800003467687A000000004343323533380000B3 -:1068100043433235333820536F4300004F70656E69 -:1068200057534E20000000000000891112239B32B4 -:106830002446AD573665BF74488CC19D5AAFD3BE50 -:106840006CCAE5DB7EE9F7F88110080193331A2260 -:10685000A5562C47B7753E64C99C408DDBBF52AE30 -:10686000EDDA64CBFFF976E802218B301002991340 -:106870002667AF763444BD554AADC3BC588ED19F10 -:106880006EEBE7FA7CC8F5D983310A209112180320 -:10689000A7772E66B5543C45CBBD42ACD99E508FF0 -:1068A000EFFB66EAFDD874C904428D5316619F70F0 -:1068B0002004A9153227BB364CCEC5DF5EEDD7FCD0 -:1068C0006888E1997AABF3BA85520C4397711E60E0 -:1068D000A1142805B3373A26CDDE44CFDFFD56ECB0 -:1068E000E9986089FBBB72AA06638F7214409D51C0 -:1068F0002225AB343006B9174EEFC7FE5CCCD5DD90 -:106900006AA9E3B8788AF19B87730E6295501C419F -:10691000A3352A24B1163807CFFF46EEDDDC54CD6F -:10692000EBB962A8F99A708B088481951AA793B67F -:106930002CC2A5D33EE1B7F04008C919522BDB3A6F -:10694000644EED5F766DFF7C899400859BB712A63F -:10695000ADD224C3BFF136E0C1184809D33B5A2A4F -:10696000E55E6C4FF77D7E6C0AA583B4188691971F -:106970002EE3A7F23CC0B5D14229CB38500AD91B2F -:10698000666FEF7E744CFD5D8BB502A499961087FF -:10699000AFF326E2BDD034C1C3394A28D11A580B0F -:1069A000E77F6E6EF55C7C4D0CC685D71EE597F4CF -:1069B0002880A1913AA3B3B2444ACD5B5669DF78EF -:1069C000600CE91D722FFB3E8DD604C79FF516E4BF -:1069D000A9902081BBB332A2C55A4C4BD7795E68CF -:1069E000E11C680DF33F7A2E0EE787F61CC495D59F -:1069F0002AA1A3B03882B193466BCF7A5448DD59AF -:106A0000622DEB3C700EF91F8FF706E69DD414C57E -:106A1000ABB122A0B9923083C77B4E6AD5585C498E -:106A2000E33D6A2CF11E780F683D7563620000003B -:106A30006F70656E6D6F74652D622D323467687A84 -:106A40000000000043433235333800004343323501 -:106A5000333820536F4300004F70656E57534E20FC -:106A600000000000683D7563620000006F70656E95 -:106A70006D6F74652D622D323467687A00000000F6 -:106A800043433235333800004343323533382053E3 -:106A90006F4300004F70656E57534E20000000009A -:106AA0000000891112239B322446AD573665BF740E -:106AB000488CC19D5AAFD3BE6CCAE5DB7EE9F7F8BE -:106AC0008110080193331A22A5562C47B7753E64EE -:106AD000C99C408DDBBF52AEEDDA64CBFFF976E89E -:106AE00002218B30100299132667AF763444BD55CE -:106AF0004AADC3BC588ED19F6EEBE7FA7CC8F5D97E -:106B000083310A2091121803A7772E66B5543C45AD -:106B1000CBBD42ACD99E508FEFFB66EAFDD874C95D -:106B200004428D5316619F702004A9153227BB368D -:106B30004CCEC5DF5EEDD7FC6888E1997AABF3BA3D -:106B400085520C4397711E60A1142805B3373A266D -:106B5000CDDE44CFDFFD56ECE9986089FBBB72AA1D -:106B600006638F7214409D512225AB343006B9174D -:106B70004EEFC7FE5CCCD5DD6AA9E3B8788AF19BFD -:106B800087730E6295501C41A3352A24B11638072D -:106B9000CFFF46EEDDDC54CDEBB962A8F99A708BDD -:106BA000088481951AA793B62CC2A5D33EE1B7F00D -:106BB0004008C919522BDB3A644EED5F766DFF7CBD -:106BC000899400859BB712A6ADD224C3BFF136E0ED -:106BD000C1184809D33B5A2AE55E6C4FF77D7E6C9D -:106BE0000AA583B4188691972EE3A7F23CC0B5D1CD -:106BF0004229CB38500AD91B666FEF7E744CFD5D7D -:106C00008BB502A499961087AFF326E2BDD034C1AC -:106C1000C3394A28D11A580BE77F6E6EF55C7C4D5C -:106C20000CC685D71EE597F42880A1913AA3B3B28C -:106C3000444ACD5B5669DF78600CE91D722FFB3E3C -:106C40008DD604C79FF516E4A9902081BBB332A26C -:106C5000C55A4C4BD7795E68E11C680DF33F7A2E1C -:106C60000EE787F61CC495D52AA1A3B03882B1934C -:106C7000466BCF7A5448DD59622DEB3C700EF91FFC -:106C80008FF706E69DD414C5ABB122A0B99230832C -:106C9000C77B4E6AD5585C49E33D6A2CF11E780FDC -:106CA000683D7563620000006F70656E6D6F74659E -:106CB0002D622D323467687A00000000434332357C -:106CC0003338000043433235333820536F430000DC -:106CD0004F70656E57534E2000000000683D75638D -:106CE000620000006F70656E6D6F74652D622D32ED -:106CF0003467687A000000004343323533380000BF -:106D000043433235333820536F4300004F70656E74 -:106D100057534E2000000000683D7563620000007C -:106D20006F70656E6D6F74652D622D323467687A91 -:106D3000000000004343323533380000434332350E -:106D4000333820536F4300004F70656E57534E2009 -:106D500000000000683D7563620000006F70656EA2 -:106D60006D6F74652D622D323467687A0000000003 -:106D700043433235333800004343323533382053F0 -:106D80006F430000683D7563620000006F70656EC0 -:106D90006D6F74652D622D323467687A00000000D3 -:106DA00043433235333800004343323533382053C0 -:106DB0006F430000683D7563620000006F70656E90 -:106DC0006D6F74652D622D323467687A00000000A3 -:106DD0004343323533380000434332353338205390 -:106DE0006F430000683D7563620000006F70656E60 -:106DF0006D6F74652D622D323467687A0000000073 -:106E0000434332353338000043433235333820535F -:106E10006F430000683D7563620000006F70656E2F -:106E20006D6F74652D622D323467687A0000000042 -:106E3000434332353338000043433235333820532F -:106E40006F4300000007000000060000000500007E -:106E50000004000000030000000200000001000028 -:106E6000000000000000000018ED00E01CED00E054 -:106E700020ED00E000E400E004E400E008E400E0CD -:106E80000CE400E010E400E014E400E018E400E0AA -:106E90001CE400E020E400E024E400E028E400E05A -:106EA0002CE400E030E400E034E400E038E400E00A -:106EB0003CE400E040E400E044E400E048E400E0BA -:106EC0004CE400E050E400E054E400E058E400E06A -:106ED0005CE400E060E400E064E400E068E400E01A -:106EE0006CE400E070E400E074E400E078E400E0CA -:106EF0007CE400E080E400E084E400E088E400E07A -:106F00008CE400E090E400E000E100E004E100E057 -:106F100008E100E00CE100E010E100E080E100E0C9 -:106F200084E100E088E100E08CE100E090E100E035 -:106F300000E200E004E200E008E200E00CE200E031 -:106F400010E200E080E200E084E200E088E200E09D -:106F50008CE200E090E200E080400D4084400D4073 -:106F600088400D408C400D4090400D4094400D40B5 -:106F700098400D409C400D40A0400D40A4400D4065 -:106F8000A8400D40AC400D40B0400D40B4400D4015 -:106F9000B8400D40BC400D40C0400D40C4400D40C5 -:106FA000C8400D40CC400D40D0400D40D4400D4075 -:106FB000D8400D40DC400D40E0400D40E4400D4025 -:106FC000E8400D40EC400D40F0400D40F4400D40D5 -:106FD000F8400D40FC400D4000400D4004400D4085 -:106FE00008400D400C400D4010400D4014400D4035 -:106FF00018400D401C400D4020400D4024400D40E5 -:1070000028400D402C400D4030400D4034400D4094 -:1070100038400D403C400D4040400D4044400D4044 -:1070200048400D404C400D4050400D4054400D40F4 -:1070300058400D405C400D4060400D4064400D40A4 -:1070400068400D406C400D4070400D4074400D4054 -:1070500078400D407C400D4008200D4018200D4028 -:1070600028200D4038200D4048200D40A8200D401C -:107070000C200D401C200D402C200D403C200D40CC -:107080004C200D40AC200D4010200D4020200D4024 -:1070900030200D4040200D4050200D40B0200D40CC -:1070A00014200D4024200D4034200D4044200D407C -:1070B00054200D400100000000010000000001000C -:0C70C000000000010100000004000000BE -:1070CC0000000000000000000000000000000000B4 -:1070DC0000000000000000000000000000000000A4 -:1070EC000000000000000000000000000000000094 -:1070FC000000000000000000000000000000000084 -:10710C000000000000000000000000000000000073 -:10711C000000000000000000000000000000000063 -:10712C000000000000000000000000000000000053 -:10713C000000000000000000000000000000000043 -:10714C000000000000000000000000000000000033 -:10715C000000000000000000000000000000000023 -:10716C000000000000000000000000000000000013 -:10717C000000000000000000000000000000000003 -:10718C0000000000000000000000000000000000F3 -:10719C0000000000000000000000000000000000E3 -:1071AC0000000000000000000000000000000000D3 -:1071BC0000000000000000000000000000000000C3 -:1071CC0000000000000000000000000000000000B3 -:1071DC0000000000000000000000000000000000A3 -:1071EC000000000000000000000000000000000093 -:1071FC000000000000000000000000000000000083 -:10720C000000000000000000000000000000000072 -:10721C000000000000000000000000000000000062 -:10722C000000000000000000000000000000000052 -:10723C000000000000000000000000000000000042 -:10724C000000000000000000000000000000000032 -:10725C000000000000000000000000000000000022 -:10726C000000000000000000000000000000000012 -:10727C000000000000000000000000000000000002 -:10728C0000000000000000000000000000000000F2 -:10729C0000000000000000000000000000000000E2 -:1072AC0000000000000000000000000000000000D2 -:1072BC0000000000000000000000000000000000C2 -:1072CC0000000000000000000000000000000000B2 -:1072DC0000000000000000000000000000000000A2 -:1072EC000000000000000000000000000000000092 -:1072FC000000000000000000000000000000000082 -:10730C000000000000000000000000000000000071 -:10731C000000000000000000000000000000000061 -:10732C000000000000000000000000000000000051 -:10733C000000000000000000000000000000000041 -:0C734C0000000000000000000000000035 +:100A400078600123FB7501F0C1FF474B5B78042BF5 +:100A500040F085807F220021444805F07FFE444B12 +:100A60000193444B0093444B7F2244493F4802F09A +:100A70005FF83E4BFB60FB6808224149184605F0D1 +:100A80003BFE0346002B01D00023FB75364B93F849 +:100A90007521354B93F8E6309A4201D00023FB755F +:100AA000FB681B899AB2304BB3F8F4309A4201D0FC +:100AB0000023FB750C233B610FE02B4A3B69134479 +:100AC000F6331A78284B93F8EA309A4202D0002382 +:100AD000FB7509E03B6901333B61234B93F87531AA +:100AE000023B3A699A42E8DBFB7D002B31D01E4B7A +:100AF00093F87931002B2CD0224BBB60BB680722C6 +:100B00001A70194B93F87521BB685A70164B93F9FC +:100B10007721BB689A70144B93F87931DB015AB294 +:100B2000FB7D9B015BB213435BB2DAB2BB68DA7048 +:100B3000FB685B899AB2BB689A800B4B062283F8EC +:100B40002320FFF7F3FB084B5B8801339AB2064B77 +:100B50005A8001F035FF01F0C1FF01F0CFFF00BF67 +:100B60001837BD4680BD00BFB04A0020A64B00200C +:100B7000294C0020284C0020274C0020254C002028 +:100B80009B4B0020B44A002080B586B000AF0346DE +:100B9000FB710A23FB75274BB3F8E420254BB3F810 +:100BA000E8309A421DD1234B1B78184600F0F8FB21 +:100BB00001F00CFF1F4B03225A701F4B3B613B6936 +:100BC00005221A701B4B012283F82320FFF7AEFB8E +:100BD000184B5B8801339AB2164B5A8001F0F6FE2F +:100BE00025E001F009FC134B93F8E6309BB219465F +:100BF000124801F0FFFE01F039FF01F047FF01F05C +:100C000002FC0C4BB3F8E43001339AB2094BA3F861 +:100C1000E420084BB3F8E4301846FFF79BFD034689 +:100C2000FB81FB7D054A1344FA891A8000BF1837FF +:100C3000BD4680BDB04A0020B44A0020144B0020BD +:100C400080B500AF80220021044805F087FD022214 +:100C50000021034805F082FD00BF80BD2C4C002020 +:100C6000AC4C002080B582B000AF1CE004F0D3F89B +:100C7000124B9B6F7B607B689B68104A936704F004 +:100C8000BEF87B681B6898477B6800221A607B6807 +:100C900000221A717B6800229A60094B1B78013B85 +:100CA000DAB2074B1A70054B9B6F002BDED101F0B7 +:100CB00081F900F06DFE01F089F9F4E72C4C002079 +:100CC000AC4C002080B584B000AF78600B46FB7060 +:100CD00004F0A1F8254BFB6002E0FB680C33FB60DD +:100CE000FB681B68002B03D0FB68214A9342F4D9B0 +:100CF000FB681F4A934203D901F035FC00F08EFED9 +:100D0000FB687A681A60FB68FA781A71194BBB6045 +:100D100003E0BB681B680833BB60BB681B68002B23 +:100D200006D0BB681B681A79FB681B799A42F0D918 +:100D3000BB681A68FB689A60BB68FA681A600E4B59 +:100D40001B780133DAB20C4B1A700B4B1A780A4B32 +:100D50005B789A4203D9084B1A78074B5A7004F013 +:100D60004EF800BF1037BD4680BD00BF2C4C0020A0 +:100D7000984C0020A44C0020AC4C002080B483B0E0 +:100D800000AF03460A46FB8013467B71FB881B0AB3 +:100D90009AB2F9887B794B40DBB2054931F81330C0 +:100DA00053409BB218460C37BD4680BC704700BF0D +:100DB000A46A200080B500AF4FF4DA720021044825 +:100DC00005F0CCFC034802F019F800BF80BD00BF5D +:100DD000B04C00207514200080B584B000AF0346ED +:100DE0000A46FB711346BB7104F015F8FB79012B21 +:100DF00002D0FB79002B19D1FA7928491346DB0080 +:100E00009B1A9B000B4411331B7883F00103DBB268 +:100E1000002B0BD0FA7921491346DB009B1A9B006B +:100E20000B44113301221A70FB7932E0FB79FF2B5E +:100E30002CD10223FB7326E0FA7B18491346DB0012 +:100E40009B1A9B000B4411331B7883F00103DBB228 +:100E5000002B15D0FA7B11491346DB009B1A9B002F +:100E60000B44113301221A70FA7B0C491346DB0044 +:100E70009B1A9B000B441833BA791A70FB7B08E06D +:100E8000FB7B0133FB73FB7B0E2BD5D903F0B7FF44 +:100E9000FF2318461037BD4680BD00BFB04C002070 +:100EA00090B587B000AF396011461A460346FB7112 +:100EB0000B46BB7113467B710023FB7511E0FA7D75 +:100EC00091491346DB009B1A9B000B4411331B789E +:100ED000002B03D0FA7DFB799A4206D0FB7D0133CB +:100EE000FB75FB7D0E2BEAD900E000BFFB7D0F2BCD +:100EF00000F0068103F08FFFFA7983491346DB0087 +:100F00009B1A9B000B4412337A791A70BB79002B21 +:100F100002D0012B23D03FE0FA7939680B465B0100 +:100F2000194479481346DB009B1A9B00034419605F +:100F30003A6813465B011A440323A3FB0213D21A37 +:100F4000520813449B0FFA7998B26F491346DB009D +:100F50009B1A9B000B44083302461A801CE0FA7966 +:100F600069491346DB009B1A9B000B443A681A60E0 +:100F70003A680323A3FB0213D21A520813449B0FAF +:100F8000FA7998B260491346DB009B1A9B000B4428 +:100F9000083302461A8000BFFA795B491346DB002A +:100FA0009B1A9B000B4408331B88002B15D1FA7940 +:100FB00055491346DB009B1A9B000B441C6801F04B +:100FC00053FF0346FA79E1184F481346DB009B1A9A +:100FD0009B000344043319600EE001F045FF034613 +:100FE000F97903F10042013A47480B46DB005B1AEE +:100FF0009B00034404331A60FA7943491346DB002B +:101000009B1A9B000B44103301221A70FA793E4957 +:101010001346DB009B1A9B000B441433BA6A1A6018 +:10102000394B93F8B03183F00103DBB2002B60D071 +:101030000023FB7502E0FB7D0133FB75FA7D32492D +:101040001346DB009B1A9B000B4410331B7883F084 +:101050000103DBB2002BEED1FA7D2B491346DB00F6 +:101060009B1A9B000B4404331A68274BD3F8AC310E +:10107000D31A3B61FB7DBB75BB7D0133FB7523E060 +:10108000FA7D21491346DB009B1A9B000B44103369 +:101090001B78002B15D0FA7D1B491346DB009B1AE9 +:1010A0009B000B4404331A68174BD3F8AC31D31AA6 +:1010B000FB60FA683B699A4203D2FB683B61FB7DA7 +:1010C000BB75FB7D0133FB75FB7D0E2BD8D9BA7D3B +:1010D0000D491346DB009B1A9B000B4404331B682D +:1010E000094AC2F8A831084BD3F8A831184601F0D4 +:1010F00093FE054B012283F8A42103F080FE00E05B +:1011000000BF1C37BD4690BDB04C002080B588B0F4 +:1011100000AFB9607A601A460346FB731346BB738F +:101120000023FB7711E0FA7F8F491346DB009B1AFF +:101130009B000B4411331B78002B03D0FA7FFB7B01 +:101140009A4206D0FB7F0133FB77FB7F0E2BEAD957 +:1011500000E000BFFB7F0F2B00F0028103F05BFE7D +:10116000FA7B81491346DB009B1A9B000B44123328 +:1011700001221A70BB7B002B02D0012B23D03FE051 +:10118000FA7BB9680B465B01194477481346DB00CC +:101190009B1A9B0003441960BA6813465B011A440A +:1011A0000323A3FB0213D21A520813449B0FFA7BAA +:1011B00098B26D491346DB009B1A9B000B44083321 +:1011C00002461A801CE0FA7B67491346DB009B1A33 +:1011D0009B000B44BA681A60BA680323A3FB02138E +:1011E000D21A520813449B0FFA7B98B25E491346F9 +:1011F000DB009B1A9B000B44083302461A8000BF99 +:10120000FA7B59491346DB009B1A9B000B440833B9 +:101210001B88002B13D1FA7B53491346DB009B1A22 +:101220009B000B441968FA7B7B6819444E481346AF +:10123000DB009B1A9B000344043319600CE0F97B2C +:101240007B6803F10042013A47480B46DB005B1A1A +:101250009B00034404331A60FA7B43491346DB00C6 +:101260009B1A9B000B44103301221A70FA7B3E49F3 +:101270001346DB009B1A9B000B441433BA6A1A60B6 +:10128000394B93F8B03183F00103DBB2002B60D00F +:101290000023FB7702E0FB7F0133FB77FA7F3249C3 +:1012A0001346DB009B1A9B000B4410331B7883F022 +:1012B0000103DBB2002BEED1FA7F2B491346DB0092 +:1012C0009B1A9B000B4404331A68274BD3F8AC31AC +:1012D000D31ABB61FB7FBB77BB7F0133FB7723E076 +:1012E000FA7F21491346DB009B1A9B000B44103305 +:1012F0001B78002B15D0FA7F1B491346DB009B1A85 +:101300009B000B4404331A68174BD3F8AC31D31A43 +:101310007B617A69BB699A4203D27B69BB61FB7FBF +:10132000BB77FB7F0133FB77FB7F0E2BD8D9BA7FCE +:101330000D491346DB009B1A9B000B4404331B68CA +:10134000094AC2F8A831084BD3F8A831184601F071 +:1013500063FD054B012283F8A42103F050FD00E05A +:1013600000BF2037BD4680BDB04C002080B582B0A4 +:1013700000AF03463960FB7103F04DFDFA79074970 +:101380001346DB009B1A9B000B443A681A6003F07B +:1013900036FD00BF0837BD4680BD00BFB04C002001 +:1013A00080B582B000AF0346FB7103F034FDFA79DB +:1013B0000C491346DB009B1A9B000B4410330022A0 +:1013C0001A70FA7907491346DB009B1A9B000B44FD +:1013D000143300221A6003F012FD00BF0837BD4627 +:1013E00080BD00BFB04C002080B582B000AF034686 +:1013F000FB71FB790E2B0DD8FA791346DB009B1A93 +:101400009B00074A13441C220021184605F0A6F948 +:10141000012300E0002318460837BD4680BD00BF09 +:10142000B04C002080B500AF01F01EFD0346184609 +:1014300080BD80B400AF034BD3F8A8311846BD4639 +:1014400080BC7047B04C002080B483B000AF03462E +:10145000FB71FA7906491346DB009B1A9B000B448B +:1014600010331B7818460C37BD4680BC704700BF50 +:10147000B04C002090B587B002AF804B1B7C002B96 +:1014800015D07E4BD3F8A8217C4B5B689A420ED1D5 +:101490007A4B00221A74794B5B690020984701F05F +:1014A000E3FC03460F33184601F0B6FC0EE2734B23 +:1014B0005A68724BD3F8A8319A4236D10023FB7395 +:1014C00030E0FA7B6D491346DB009B1A9B000B440E +:1014D00010331B78002B22D0FB7B012B1FD0FB7B12 +:1014E000002B1CD0FA7B65491346DB009B1A9B003E +:1014F0000B4404331A68614BD3F8A831D31A40F275 +:101500008E2293420BD8FA7B5C4BD3F8A8115B4830 +:101510001346DB009B1A9B00034404331960FB7BDA +:101520000133FB73FB7B0E2BCBD90023FB7357E1FD +:10153000FA7B52491346DB009B1A9B000B44103385 +:101540001B78002B00F049814C4BD3F8A811FA7B93 +:101550004A481346DB009B1A9B00034404331B6874 +:10156000994240F03A81F97BFA7B44480B46DB0014 +:101570005B1A9B0003440433196840481346DB00A0 +:101580009B1A9B0003440C331960FB7B012B1ED17B +:101590003A4B012283F8B021FA7B38491346DB002D +:1015A0009B1A9B000B44103300221A70FA7B3349BC +:1015B0001346DB009B1A9B000B4414331B68FA7B19 +:1015C000104698472D4B002283F8B02105E1FA7BA5 +:1015D0002A491346DB009B1A9B000B4408331B88E7 +:1015E000002B4DD1FA7B25491346DB009B1A9B004B +:1015F0000B44103300221A70FA7B20491346DB009B +:101600009B1A9B000B4414331868FA7B1B49134642 +:10161000DB009B1A9B000B4418331B781946FFF71D +:1016200051FBFA7B15491346DB009B1A9B000B44C8 +:1016300012331B78002B40F0D080104B012283F82E +:10164000B021FA7B0D491346DB009B1A9B000B442B +:101650001C68FA7B09491346DB009B1A9B000B446C +:1016600014331B68F87B0093002301222146FFF707 +:1016700017FC024B002283F8B021AEE0B04C0020F2 +:10168000FA7B94491346DB009B1A9B000B440833FA +:101690001B88013B98B28F491346DB009B1A9B00C5 +:1016A0000B44083302461A80FA7B8A491346DB0052 +:1016B0009B1A9B000B4408331B88002B78D1FA7BC4 +:1016C00084491346DB009B1A9B000B441968FA7B84 +:1016D00080481346DB009B1A9B0003440C331B68B5 +:1016E0000B44FA7B23F000417A481346DB009B1A37 +:1016F0009B00034404331960FA7B76491346DB00F0 +:101700009B1A9B000B4404331A68724BD3F8A83120 +:10171000D31A40F28E2293425FD8FA7B6D4913466A +:10172000DB009B1A9B000B44103300221A70FA7BDB +:1017300068491346DB009B1A9B000B44143318685E +:10174000FA7B64491346DB009B1A9B000B44183359 +:101750001B781946FFF7B6FAFA7B5E491346DB00A1 +:101760009B1A9B000B4412331B78002B35D1594B2D +:10177000012283F8B021FA7B56491346DB009B1AFD +:101780009B000B441C68FA7B52491346DB009B1AF2 +:101790009B000B4414331B68F87B00930023012249 +:1017A0002146FFF77DFB4B4B002283F8B02114E06C +:1017B000FA7B48491346DB009B1A9B000B440C3311 +:1017C0001B68F97B03F10042013A42480B46DB00FB +:1017D0005B1A9B00034404331A60FB7B0133FB73E9 +:1017E000FB7B0E2B7FF6A4AE3A4BD3F8A831394AD7 +:1017F000C2F8AC310023FB7302E0FB7B0133FB73C7 +:10180000FA7B34491346DB009B1A9B000B441033D0 +:101810001B7883F00103DBB2002B02D0FB7B0E2B85 +:10182000EBD9FB7B0E2B4DD8FA7B2A491346DB0004 +:101830009B1A9B000B4404331A68264BD3F8AC3137 +:10184000D31ABB60FB7BBB73BB7B0133FB7323E011 +:10185000FA7B20491346DB009B1A9B000B44103394 +:101860001B78002B15D0FA7B1A491346DB009B1A14 +:101870009B000B4404331A68164BD3F8AC31D31ACF +:101880007B607A68BB689A4203D27B68BB60FB7B53 +:10189000BB73FB7B0133FB73FB7B0E2BD8D9BA7B6D +:1018A0000C491346DB009B1A9B000B4404331B6856 +:1018B000084AC2F8A831074BD3F8A831184601F0FE +:1018C000ABFA03E0034B002283F8A4211437BD4692 +:1018D00090BD00BFB04C002080B500AFFEF7D6FC35 +:1018E0000346184680BD80B500AF00F09DF800F0BB +:1018F000B7F800F014F800F054F800F06DFD00F0B7 +:10190000C3FA00F0EFF801F065FA01F01BFB00F0FC +:1019100051FF00F017FC00F097F900BF80BD80B5C3 +:1019200000AF1021094802F058FB0821074802F0D7 +:1019300054FB00221021054802F024FB0822082154 +:10194000024802F01FFB00BF80BD00BF00C00D4079 +:1019500080B500AF00221021044802F013FB0822DA +:101960000821024802F00EFB00BF80BD00C00D4000 +:1019700080B500AF00220821044802F003FB1022CA +:101980001021024802F0FEFA00BF80BD00C00D40E9 +:1019900080B500AF002004F0EBFA04F017F900BFA7 +:1019A00080BD80B500AF3221044802F072FD4FF6D1 +:1019B000FF71024802F042FD00BF80BD00200340DD +:1019C00080B582B000AFFF21054802F0E2FE034679 +:1019D0005B097B607B6818460837BD4680BD00BF49 +:1019E0000020034080B584B000AF7860FF210A4832 +:1019F00002F0CFFE03465B09FB607A68FB68D31AEE +:101A0000BB60BB68002B01DD002300E0012318460A +:101A10001037BD4680BD00BF0020034080B500AF39 +:101A200004F0CBF800BF80BD80B500AFFF210848AF +:101A300002F0BDFAFF21074802F0B9FAFF2106487B +:101A400002F0B5FAFF21054802F0B1FA00BF80BDEF +:101A500000900D4000A00D4000B00D4000C00D40B2 +:101A600080B582B000AF03F0D6F90346FB710022C7 +:101A700040211A4802F00AF900228021174802F09A +:101A800005F901224021154803F020FD01228021A3 +:101A9000124803F01BFD00220021012003F06AFF21 +:101AA000002004F017F800BF0D4B1B6803F400235F +:101AB000002BF9D000F030F800F05EF800F08CF860 +:101AC00000F0BAF8FB7983F00103DBB2002B01D000 +:101AD00003F095F900BF0837BD4680BD00C00D403A +:101AE00004200D4080B500AF20210A4802F05FFAC3 +:101AF00000222021074802F02FF9082002F07AFC8A +:101B00002021044802F0F6F92021024802F0AFF942 +:101B100000BF80BD00C00D4080B500AF002004F0C4 +:101B200073F9012004F070F9032004F06DF94FF40B +:101B3000807004F069F940F2011004F065F940F298 +:101B4000012004F061F94FF4407004F05DF94FF4A6 +:101B5000806004F059F940F2014004F055F9022088 +:101B600004F02EF94FF4007004F02AF94FF4A0604D +:101B700004F026F900BF80BD80B500AF002004F05E +:101B80008BF9012004F088F9032004F085F94FF463 +:101B9000807004F081F940F2011004F07DF940F208 +:101BA000012004F079F94FF4407004F075F94FF416 +:101BB000806004F071F940F2014004F06DF90220F8 +:101BC00004F046F94FF4007004F042F94FF4A060BD +:101BD00004F03EF900BF80BD80B500AF002004F0E6 +:101BE000A3F9012004F0A0F9022004F09DF90320DC +:101BF00004F09AF94FF4807004F096F940F2011065 +:101C000004F092F94FF4007004F08EF940F20120D4 +:101C100004F08AF94FF4407004F086F94FF48060C4 +:101C200004F082F940F2014004F07EF94FF4A06024 +:101C300004F07AF900BF80BD80B500AF202002F02B +:101C4000D9FB00BF80BD00BF80B500AF40F20140AE +:101C500004F070F840F2014004F0B2F80023184696 +:101C600080BDF0B58FB008AFF8607A603B600B467E +:101C7000FB723B681B78002B14BF01230023FB750C +:101C800007F116031946B86B00F0D5F80346002B90 +:101C900041D13B681B789BB2FA7A92B2B97D386821 +:101CA000007804467868204497F83C60FD7D002465 +:101CB000069497F834400594049003910292FA68D0 +:101CC000019200937B683A6B3146284601F020FC74 +:101CD0000346002B1FD100BF01F02EFD0346002B51 +:101CE000F9D03B681B7899B23B681B781A467B6831 +:101CF0001A4497F83C30184601F042FD0346002B89 +:101D000009D13B681A7897F83C301344DAB23B6843 +:101D10001A70002300E0012318461C37BD46F0BDB1 +:101D2000B0B592B008AFF8607A603B600B46FB72CA +:101D30003B681B781A4697F84430D31A002BCCBF67 +:101D40000123002387F8273007F126031946386C52 +:101D500000F071F80346002B3DD13B681B789BB225 +:101D6000FA7A92B297F8261097F8445097F82740DD +:101D70000020069097F83C00059007F114000490AD +:101D800003910292FA68019200937B68BA6B29462C +:101D9000204601F07FFD0346002B1CD100BF01F05F +:101DA00087FE0346002BF9D03B681B789AB207F1F7 +:101DB000140397F84400796801F081FE0346002B74 +:101DC00009D13B681A7897F84430D31ADAB23B68E5 +:101DD0001A70002300E0012318462837BD46B0BD25 +:101DE00080B586B002AF7860396007F10F031946FD +:101DF000386800F020F80346002B17D1FA7B002347 +:101E0000009301237968786801F090FA0346002B6B +:101E10000CD100BF01F00EFB0346002BF9D001F0FE +:101E20002DFB0346002B01D1002300E001231846BF +:101E30001037BD4680BD90B583B000AF7860396083 +:101E4000102279680F4804F057FC0346002B10D08D +:101E50000C4A7B681446186859689A68DB680FC496 +:101E60000021084801F0A2F90346002B01D001230C +:101E700003E03B6800221A70002318460C37BD4669 +:101E800090BD00BF8C42002080B500AF80210E487D +:101E900002F0A3F808210D4802F09FF80F210C482A +:101EA00002F09BF800228021074802F06BF8002224 +:101EB0000821064802F066F800220F21044802F0CB +:101EC00061F800BF80BD00BF00900D4000B00D4024 +:101ED00000A00D4080B500AF8021024800F0EAF874 +:101EE00000BF80BD00900D4080B500AF0022802172 +:101EF000024802F047F800BF80BD00BF00900D40CF +:101F000080B500AF80228021024802F03BF800BF7C +:101F100080BD00BF00900D4080B500AF0821024891 +:101F200000F0C8F800BF80BD00A00D4080B500AF34 +:101F300000220821024802F025F800BF80BD00BF42 +:101F400000A00D4080B500AF08220821024802F031 +:101F500019F800BF80BD00BF00A00D4080B500AFE4 +:101F60000421024800F0A6F800BF80BD00A00D408B +:101F700080B500AF00220421024802F003F800BF40 +:101F800080BD00BF00A00D4080B500AF0422042139 +:101F9000024801F0F7FF00BF80BD00BF00A00D4068 +:101FA00080B500AF0221024800F084F800BF80BD78 +:101FB00000A00D4080B500AF00220221024801F0D0 +:101FC000E1FF00BF80BD00BF00A00D4080B500AFA5 +:101FD00002220221024801F0D5FF00BF80BD00BFF0 +:101FE00000A00D4080B500AF0821024800F062F863 +:101FF00000BF80BD00B00D4080B500AF00220821B9 +:10200000024801F0BFFF00BF80BD00BF00B00D401F +:1020100080B500AF08220821024801F0B3FF00BFDD +:1020200080BD00BF00B00D4080B500AF0121024867 +:1020300000F040F800BF80BD00A00D4080B500AFAB +:1020400000220121024801F09DFF00BF80BD00BFBA +:1020500000A00D4080B500AF01220121024801F02F +:1020600091FF00BF80BD00BF00A00D4080B400AF55 +:1020700000BFBD4680BC704780B400AF00BFBD4606 +:1020800080BC704780B400AF00BFBD4680BC7047C5 +:1020900080B400AF00BFBD4680BC704780B400AFC5 +:1020A00000BFBD4680BC704780B400AF00BFBD46D6 +:1020B00080BC704780B584B000AF78600B46FB7081 +:1020C000FB781946786801F04CFFF860FB68DA434A +:1020D000FB781340FB60FB68DAB2FB78194678683E +:1020E00001F050FF00BF1037BD4680BD80B485B001 +:1020F00000AF7860114BFB6007E0FA68531EFB608D +:102100007B68591C796012781A70FB68B3F1281F3C +:10211000F3D20B4BFB6007E0FA68531EFB607B6851 +:10212000591C796012781A70FB68044A9342F3D8FC +:1021300000BF1437BD4680BC704700BF2B0028008D +:102140002F00280080B582B000AF4FF4407003F03C +:1021500037FE4FF4407003F07BFE4FF4407003F005 +:10216000E3FE4FF4407003F0E5FD2021154801F037 +:102170004AFF154A2021134803F0CEF80C222021F3 +:10218000104803F065F810210E4801F03CFF0F4A9B +:1021900010210C4803F0C0F80B221021094803F06D +:1021A00057F80123FB7103F043FC0246FB79194603 +:1021B000104602F009FC02F047FC00BF0837BD469C +:1021C00080BD00BF00A00D4030410D402C410D40AE +:1021D00080B584B000AF03463960FB71144BFB60DF +:1021E000FB790121184602F063FD072002F09AFDF9 +:1021F000FFF7E6FB0246FB681344FB6007E0F86864 +:10220000FFF7F0FB0346002B01D000230BE002F0A8 +:1022100065FD0346002BF2D102F0C0FD0346DAB2A1 +:102220003B681A70012318461037BD4680BD00BFB9 +:10223000801A060080B586B000AF0346B9607A60A8 +:10224000FB731D4B7B61FB7B0121184602F030FDC7 +:102250000B2002F067FDFFF7B3FB02467B691344D6 +:102260007B6121E07869FFF7BDFB0346002B01D0BD +:102270007B681DE002F032FD0346002BF2D102F034 +:102280008DFD0146BB685A1CBA60CAB21A707B68E1 +:10229000013B7B607B68012B03D1052002F042FDEE +:1022A00002E0092002F03EFD7B68002BE2D17B6852 +:1022B00018461837BD4680BD801A060080B584B028 +:1022C00000AF03460A46FB711346BB71134BFB601C +:1022D000FB790021184602F0EBFCBB79184602F0AE +:1022E0004DFD072002F01EFDFFF76AFB0246FB686A +:1022F0001344FB6007E0F868FFF774FB0346002B0C +:1023000001D0002305E002F0E9FC0346002BF2D1E6 +:10231000012318461037BD4680BD00BF801A060055 +:1023200080B586B000AF0346B9607A60FB73294B75 +:102330007B61FB7B0021184602F0BAFCBB685A1C8B +:10234000BA601B78184602F019FD7B68013B7B6080 +:10235000032002F0E7FCFFF733FB02467B691344DE +:102360007B6107E07869FFF73DFB0346002B01D056 +:102370007B682BE002F0B2FC0346002BF2D121E097 +:10238000BB685A1CBA601B78184602F0F7FC7B68E1 +:10239000012B03D1052002F0C5FC0BE0012002F067 +:1023A000C1FC07E07869FFF71DFB0346002B01D055 +:1023B0007B680BE002F092FC0346002BF2D17B68B5 +:1023C000013B7B607B68002BDAD17B6818461837AD +:1023D000BD4680BD801A060080B500AFF0210548DB +:1023E00001F0FBFDF022F021024801F0CBFD00BF1F +:1023F00080BD00BF00B00D4080B500AF102000F0E0 +:1024000097F900BF80BD80B500AF102000F0A2F9A1 +:1024100000BF80BD80B500AF102000F0ADF900BF57 +:1024200080BD80B582B000AF1021074801F099FD52 +:1024300078607B68DBB21B11DBB203F00103DBB217 +:1024400018460837BD4680BD00B00D4080B500AFCE +:10245000802000F06DF900BF80BD80B500AF802006 +:1024600000F078F900BF80BD80B500AF802000F09B +:1024700083F900BF80BD80B582B000AF80210748DE +:1024800001F06FFD78607B68DBB25B11DBB203F0BB +:102490000403DBB218460837BD4680BD00B00D40CE +:1024A00080B500AF202000F043F900BF80BD80B5AB +:1024B00000AF202000F04EF900BF80BD80B500AF16 +:1024C000202000F059F900BF80BD80B582B000AF78 +:1024D0002021044801F045FD7860002318460837A4 +:1024E000BD4680BD00B00D4080B500AF402000F07B +:1024F0001FF900BF80BD80B500AF402000F02AF971 +:1025000000BF80BD80B500AF402000F035F900BFAE +:1025100080BD80B582B000AF4021074801F021FDA9 +:1025200078607B68DBB29B11DBB203F00103DBB2A6 +:1025300018460837BD4680BD00B00D4080B500AFDD +:10254000F02000F0F5F800BF80BD80B500AFF020AE +:1025500000F000F900BF80BD80B500AFF02000F0B2 +:102560000BF900BF80BD80B582B000AFF02000F055 +:10257000F1F80023FB711FE0102000F0FDF84FF68A +:10258000FF73BB8004E0BB889BB2013B9BB2BB8066 +:10259000BB889BB2002BF6D14FF6FF73BB8004E0E3 +:1025A000BB889BB2013B9BB2BB80BB889BB2002B1C +:1025B000F6D1FB790133FB71FB794F2BDCD900BFDE +:1025C0000837BD4680BD80B582B000AFF02000F076 +:1025D000C1F80023FB714EE0102000F0A9F84FF67F +:1025E000FF73BB8007E0102000F0B4F8BB889BB2FB +:1025F000013B9BB2BB80BB889BB2002BF3D1202058 +:1026000000F096F84FF6FF73BB8004E0BB889BB2E6 +:10261000013B9BB2BB80BB889BB2002BF6D1202034 +:1026200000F098F8402000F083F84FF6FF73BB806D +:1026300004E0BB889BB2013B9BB2BB80BB889BB2D2 +:10264000002BF6D1402000F085F8802000F070F8D3 +:102650004FF6FF73BB8004E0BB889BB2013B9BB28B +:10266000BB80BB889BB2002BF6D1F02000F072F843 +:10267000FB790133FB71FB79092BADD900BF08371A +:10268000BD4680BD80B582B000AFF02000F062F89A +:102690000023FB7145E0102000F04AF84FF6FF736D +:1026A000BB8004E0BB889BB2013B9BB2BB80BB8874 +:1026B0009BB2002BF6D1202000F03AF84FF6FF73C2 +:1026C000BB8004E0BB889BB2013B9BB2BB80BB8854 +:1026D0009BB2002BF6D1402000F02AF84FF6FF7392 +:1026E000BB8004E0BB889BB2013B9BB2BB80BB8834 +:1026F0009BB2002BF6D1802000F01AF84FF6FF7342 +:10270000BB8004E0BB889BB2013B9BB2BB80BB8813 +:102710009BB2002BF6D1F02000F01CF8FB790133BE +:10272000FB71FB79092BB6D900BF0837BD4680BDC8 +:1027300080B582B000AF0346FB71FB7900221946D9 +:10274000034801F01FFC00BF0837BD4680BD00BF35 +:1027500000B00D4080B582B000AF0346FB71FA793E +:10276000FB791946034801F00DFC00BF0837BD4650 +:1027700080BD00BF00B00D4080B584B000AF0346FF +:10278000FB71FB7919460A4801F0EBFBF860FB6826 +:10279000DA43FB791340FB60FB68DAB2FB79194638 +:1027A000034801F0EFFB00BF1037BD4680BD00BFFE +:1027B00000B00D4080B500AF0C220021354803F079 +:1027C000CDFF344B00221A72334BED221A60324B8C +:1027D000ED221A60304BEE221A602F4BEE221A6067 +:1027E00000F03EFA00F020FA2C4B14221A602C4B19 +:1027F0003F221A602B4B55221A602B4B85221A6000 +:102800002A4B01221A602A4B15221A60294B1022EA +:102810001A60294B0E221A60284B03221A60284B9B +:10282000F8221A60274B09221A60214B15221A60E0 +:1028300004230B221A60244BFF221A60234B4022F0 +:102840001A60234B1B68224A23F001031360214BBB +:1028500000221A60204B7F221A60204BD5221A607A +:102860001F4B0B221A601F499D2002F0E0FA1E49FF +:102870009E2002F0DCFA9D2002F0A4FB1B4B7F227D +:102880001A609E2002F09EFB024B01221A7200BFCA +:1028900080BD00BF644E002038880840A4860840F0 +:1028A000AC860840B0860840A0860840B88608403C +:1028B000C8860840D4860840D8860840DC86084090 +:1028C00058860840E88708409487084024860840D6 +:1028D0000086084008860840508608404086084028 +:1028E0003C860840AF2C2000A12D20009486084093 +:1028F00080B483B000AF7860034A7B68136000BF88 +:102900000C37BD4680BC7047644E002080B483B055 +:1029100000AF7860034A7B68536000BF0C37BD4648 +:1029200080BC7047644E002080B500AF00BF0E4BE6 +:102930001B6803F00203002BF9D10C4BED221A6047 +:102940000A4BED221A60094BEE221A60074BEE2269 +:102950001A60074B1B68002B02D0044BEF221A6051 +:10296000FFF728FF00BF80BD4C860840388808402C +:102970002C86084080B582B000AF0346FB710E4B39 +:1029800002221A7200F06CF9FB790A2B02D9FB794A +:102990001A2B00D9FEE7FB79A3F10B0213469B002B +:1029A000134403F10B02054B1A60034B03221A7206 +:1029B00000BF0837BD4680BD644E00203C860840FD +:1029C00080B400AF00BFBD4680BC704780B500AF8B +:1029D000074B0D221A7200F043F9FFF72FFBFFF7A8 +:1029E00066FD00F021F9024B01221A7200BF80BD82 +:1029F000644E002080B485B000AF78600B467B80C9 +:102A00000023FB73154B04221A7200BF144B1B6882 +:102A100003F00203002BF9D1124BEE221A60114B86 +:102A2000EE221A60104A7B8813600023FB7308E0D3 +:102A3000FB7B7A6813441A780B4B1A60FB7B0133DB +:102A4000FB73FB7B9BB27A889A42F1D8034B052239 +:102A50001A7200BF1437BD4680BC7047644E002018 +:102A60004C860840388808402888084080B500AF68 +:102A7000054B06221A72FFF7EDFAFFF711FD024B24 +:102A800007221A7200BF80BD644E002080B582B05C +:102A900000AF0F4B08221A7200F0B0F800BF0D4BC8 +:102AA0001B6803F00203002BF9D10B4BE9221A60DB +:102AB00000237B6002E07B6801337B60054B1B6871 +:102AC00003F00203002BF6D000BF0837BD4680BDDF +:102AD000644E00204C8608403888084080B500AF1E +:102AE000054B09221A72FFF7B5FAFFF7D9FC024B22 +:102AF0000A221A7200BF80BD644E002080B500AF6C +:102B0000094BED221A60084BED221A6000F076F8AE +:102B1000054BE3221A6000BF044B1B6803F001035E +:102B2000002BF9D000BF80BD388808404C86084093 +:102B300080B487B000AFF860B9603B601346FB71AA +:102B40000023BB752B4B1B68BB7597F91630002B08 +:102B500006DA294BED221A60274BED221A6044E079 +:102B6000BB7D042B06D8244BED221A60224BED22AC +:102B70001A603AE0BA7DFB799A4206D91E4BED22E3 +:102B80001A601D4BED221A602FE00023FB7509E04F +:102B9000184B1968FB7DFA681344CAB21A70FB7DA2 +:102BA0000133FB75FA7DBB7D023B9A42F0DB114B92 +:102BB0001B68DBB2493BDBB25AB23B681A700D4B63 +:102BC0001B687B757B7D03F08003002B14BF012302 +:102BD0000023DAB27B6A1A70BB68BA7D1A70064BA2 +:102BE000ED221A60044BED221A601C37BD4680BCF2 +:102BF000704700BF288808403888084080B400AF7C +:102C0000074B1B68064A43F007031360054B1B681C +:102C1000044A43F00203136000BFBD4680BC704706 +:102C20008C8608409086084080B400AF044B002298 +:102C30001A60044B00221A6000BFBD4680BC70477A +:102C40008C8608409086084080B400AF034BE32296 +:102C50001A6000BFBD4680BC704700BF388808407E +:102C600080B400AF00BF0A4B1B6803F00203002BC7 +:102C7000F9D1084B1B68002B06D0074BEF221A60D6 +:102C8000064B6FF044021A6000BFBD4680BC70471F +:102C90004C8608402C860840388808403488084014 +:102CA00080B400AF00231846BD4680BC704780B595 +:102CB00082B000AFFFF7ACF900F0D6F803463B60F6 +:102CC000344B1B68FB71344B1B68BB719D2002F0B9 +:102CD0004BFA304B00221A602F4B00221A60FB790E +:102CE00003F00203002B0FD02C4B0B221A722B4B3C +:102CF0001B68002B07D0294B1B683A681046984781 +:102D0000FFF77AF942E0FEE7FB7903F04003002B7E +:102D10000FD0224B0C221A72204B5B68002B07D07D +:102D20001E4B5B683A6810469847FFF765F92DE03F +:102D3000FEE7FB7903F00403002B0FD0174B0C22A6 +:102D40001A72164B5B68002B07D0144B5B683A680D +:102D500010469847FFF750F918E0FEE7BB7903F0FB +:102D60000203002B0FD00D4B0C221A720B4B5B6829 +:102D7000002B07D0094B5B683A6810469847FFF76D +:102D80003BF903E0FEE7FFF737F900BF0837BD4620 +:102D900080BD00BF3488084030880840644E002061 +:102DA00080B483B000AF0A4B1B68FB71084B1A68F4 +:102DB000FB79134003F00203002B03D0044B6FF0A8 +:102DC00002021A6000BF0C37BD4680BC704700BFCE +:102DD0009486084080B500AF04220021054803F026 +:102DE000BDFC0549A12002F022F8A12002F034F92F +:102DF00000BF80BD704E0020932E200080B483B0B1 +:102E000000AF7860034A7B68136000BF0C37BD4693 +:102E100080BC7047704E002080B582B000AF7860F3 +:102E2000A12002F0CFF802F0E8FC02467B68D31A3A +:102E30000C4A934203D8A12002F058F90DE002F0A9 +:102E4000DCFC02467B689B1A042B03D8A12002F00D +:102E50004DF902E0786802F013FD00BF0837BD4667 +:102E600080BD00BFFEFFFF0080B500AF02F0C5FCD3 +:102E70000346184680BD80B500AFA12002F0A2F83D +:102E800000BF80BD80B500AFA12002F0E5F800BF13 +:102E900080BD80B500AFFFF7BBF8084B1B68002B67 +:102EA00007D0A12002F060F9044B1B689847FFF798 +:102EB000A3F8FFF7A1F800BF80BD00BF704E00204F +:102EC00080B500AF00F007F8FEE780B400AFFEE782 +:102ED00080B400AFFEE780B582B000AF114BFF2297 +:102EE0001A60114B114A1A60114B7B60114B3B6009 +:102EF00007E07A68131D7B603B68191D3960126812 +:102F00001A603B680C4A9342F3D30C480C494FF0CB +:102F100000028842B8BF40F8042BFADBFEF7DCFC65 +:102F2000FEE700BFB4200D4008ED00E000002000E7 +:102F3000D0702000004000208C4200208C420020F5 +:102F4000804E002080B500AF0C2200211E4803F007 +:102F500005FC1E4803F020F941F6FF711B4803F001 +:102F6000A4FA0121194803F019FB00220221184894 +:102F700002F06EF90221164801F09DF8154A012170 +:102F8000134802F0C9F90121114801F07EF802F05E +:102F9000BBFD014660234FF4E1320C4803F06AF8B0 +:102FA0000A4803F0DEF8094803F02AF9102107481F +:102FB00003F067F90849054803F031FA152002F0DB +:102FC00001F800BF80BD00BF744E002000C000406B +:102FD00000900D4000410D40ED30200080B483B0E2 +:102FE00000AF78603960054A7B681360034A3B682C +:102FF000536000BF0C37BD4680BC7047744E002044 +:1030000080B500AF7021024803F03CFA00BF80BDDC +:1030100000C0004080B500AF7021024803F045FABF +:1030200000BF80BD00C0004080B500AF5021024805 +:1030300003F063FA00BF80BD00C0004080B500AF60 +:103040002021024803F059FA00BF80BD00C00040B3 +:1030500080B582B000AF0346FB71FB79112B05D020 +:10306000FB79132B02D0FB79122B0AD1094B0122D9 +:103070001A72084AFB7953721221074803F08AF941 +:1030800004E0FB791946044803F084F900BF0837CF +:10309000BD4680BD744E002000C0004080B582B0A7 +:1030A00000AF054803F04BF978607B68DBB2184647 +:1030B0000837BD4680BD00BF00C0004080B582B06B +:1030C00000AF0346FB71FB79002B04D011210648A9 +:1030D00003F060F903E01321034803F05BF900BF3C +:1030E0000837BD4680BD00BF00C0004080B582B03B +:1030F00000AF0121124803F0EBF97860152002F0CF +:1031000033F87B6803F02003002B05D0FEF7CCFFDB +:1031100000F018F8FEF7C2FF7B6803F01003002BE5 +:1031200004D17B6803F04003002B05D0FEF7AAFF13 +:1031300000F02CF8FEF7A0FF00BF0837BD4680BDA9 +:1031400000C0004080B500AFFFF778FF0D4B1B7A41 +:10315000002B0CD00B4B00221A720A4B5B7A83F0C7 +:103160001003DBB21946084803F014F906E0054BDA +:103170001B68002B02D0034B1B689847002318469E +:1031800080BD00BF744E002000C0004080B500AF7D +:10319000FFF74AFF044B5B68002B02D0024B5B68D1 +:1031A00098470023184680BD744E002080B584B037 +:1031B00000AF78600B46FB704F4BBB604F4B01225A +:1031C0001A700023FB730AE0FB7B7A681A44FB7BCE +:1031D000B9680B4412781A70FB7B0133FB73FB7BDD +:1031E0000F2BF1D99F2001F037FF454B1B68444A54 +:1031F00043F001031360434B1B68424A43F003034F +:103200001360414B1B68404A23F0010313603E4B9F +:103210001B683D4A43F0010313603C4B1B683B4A6B +:1032200043F0030313603A4B1B68394A03F003036E +:103230001360374B1B68364A43F001031360FB7879 +:1032400001229A40334B1A60334B1B68324A43F0D9 +:1032500001031360314ABB681360314B10221A60BE +:1032600000BF304B1B6803F00103002BF8D02D4B3F +:103270001B68002B07DA254B1B68244A43F00043E8 +:103280001360032333E0274B1B6803F08043002BBC +:1032900007D01E4B1B681D4A43F080431360022376 +:1032A00025E01A4B1B68194A43F003031360164BC1 +:1032B00000221A601C4B1B6803F00703012B04D08B +:1032C0000E4B00221A70022311E00023FB7307E06B +:1032D000FB7BBA68134400221A70FB7B0133FB733B +:1032E000FB7B0F2BF4D9054B00221A7000231846E4 +:1032F0001037BD4680BD00BFA04A00209C4A002078 +:1033000080B7084084B7084000B7084088B7084035 +:1033100008B4084000B4084000B0084004B00840B9 +:103320000CB0084090B7084004B4084080B584B0A1 +:1033300000AFF860B96011461A460B46FB711346A0 +:10334000BB712C4B02221A702B4B01221A602B4BA3 +:1033500001221A603B7E002B05D09F2001F004FF64 +:103360009F2001F02FFE264B02221A60254B1B687E +:10337000244A43F003031360234AFB79136000BF20 +:10338000214B1B68002BFADB204B1B6803F000531A +:10339000002B07D01B4B1B681A4A43F000531360E5 +:1033A000012322E0BB79002B03D0194B0C221A60B9 +:1033B00002E0174B08221A60164B10221A60164BB7 +:1033C00000221A60154B01221A60154AFB6813602F +:1033D000144B10221A60144B01221A60134ABB6866 +:1033E0001360134B10221A60002318461037BD4695 +:1033F00080BD00BF9C4A002080B7084084B70840C9 +:1034000000B7084088B708400CB4084090B708409F +:1034100050B5084054B5084058B5084000B00840C1 +:1034200004B008400CB0084020B0084024B0084068 +:103430002CB0084080B400AF0F4B1B78DBB203F018 +:103440000103002B0FD10C4B1B780B4B1B78DBB20D +:1034500003F08043002B06D1074B1B78DBB203F04F +:103460000053002B01D0012300E00023DBB21846FB +:10347000BD4680BC704700BF90B7084080B500AF24 +:103480001E4B1B68002B07DA1D4B1B681C4A43F0C0 +:103490000043136003232EE0184B1B6803F08043A6 +:1034A000002B07D0164B1B68154A43F0804313606E +:1034B000022320E0114B1B6803F00053002B07D0C0 +:1034C0000F4B1B680E4A43F000531360012312E0B8 +:1034D0009F2001F0C1FD0A4B1B68094A43F003031A +:1034E0001360084B00221A60074B00221A60074B3A +:1034F00000221A700023184680BD00BF90B7084014 +:1035000088B7084000B7084050B508409C4A0020E2 +:1035100080B58AB000AFBA607B600346FB730B4690 +:10352000BB73704B03221A709F2001F095FD6E4B08 +:1035300001221A606D4B03221A606D4B02221A6041 +:103540006C4B1B686B4A43F0030313606A4A97F89D +:103550003C30136000BF684B1B68002BFADB674BE5 +:103560001B6803F00053002B07D0624B1B68614AB5 +:1035700043F0005313600123AFE097F84430013B60 +:10358000DBB23B74002387F8233011E097F8233037 +:10359000BA681A4497F823300133127807F12801EA +:1035A0000B4403F8182C97F82330013387F82330A5 +:1035B00097F823300C2BE9D997F84430032B01D12D +:1035C00000237B770023BB770023FB7707F11003F1 +:1035D0004B4A1B6813604B4A7B6913604A4ABB69BC +:1035E00013604A4AFB69136097F84430013BDB04DF +:1035F0007B62BB7B012B07D9BB7B023B5B109B052E +:103600001A467B6A13437B627B6A43F480237B62A6 +:103610007B6A43F008037B627B6A43F004037B62AE +:103620007B6A43F040037B627B6A43F000537B621A +:103630007B6A43F4C0737B62354A7B6A1360354A08 +:103640003B8E1360344B00221A60344A3B8F136068 +:103650003B8F002B1BD0324B01221A60314A7B6B0F +:103660001360314A3B8F136000BF244B1B6803F08B +:103670000203002BF8D0214B1B68002B07DA1D4BEF +:103680001B681C4A43F000431360032325E0194BD9 +:1036900003221A6097F84830002B05D09F2001F0D4 +:1036A00063FD9F2001F08EFC104B01221A60FB7B12 +:1036B000002B11D01A4B01221A601A4A7B68136042 +:1036C000194A3B8E1360194B01221A60184A7B6815 +:1036D0001360184A3B8E1360002318462837BD46F6 +:1036E00080BD00BF9C4A002080B7084084B70840D6 +:1036F00000B7084088B708400CB4084090B70840AD +:1037000040B5084044B5084048B508404CB50840AD +:1037100050B5084054B5084058B508405CB508405D +:1037200000B0084004B008400CB0084020B0084089 +:1037300024B008402CB0084080B400AF0F4B1B7879 +:10374000DBB203F00103002B0FD10C4B1B780B4BAA +:103750001B78DBB203F08043002B06D1074B1B78AC +:10376000DBB203F00053002B01D0012300E0002363 +:10377000DBB21846BD4680BC704700BF90B708401A +:1037800080B588B000AF03463A60FB710B46BB8042 +:10379000374B1B68002B07DA364B1B68354A43F062 +:1037A0000043136003235FE0314B1B6803F0804349 +:1037B000002B07D02F4B1B682E4A43F08043136029 +:1037C000022351E02A4B1B6803F00053002B07D063 +:1037D000284B1B68274A43F000531360012343E042 +:1037E0009F2001F039FC244B00221A6000BF234BBC +:1037F0001B6803F08043B3F1804FF7D1204A07F1F3 +:103800000C0312681A601F4A07F10C030433126894 +:103810001A601D4A07F10C03083312681A601B4A2C +:1038200007F10C030C3312681A60124B1B68114A23 +:1038300043F0030313600023FB770DE0FA7FFB7F67 +:1038400039680B4407F120010A4412F8142CD2B253 +:103850001A70FB7F0133FB77FA7FFB799A42EDD335 +:103860000B4B00221A70002318462037BD4680BD3E +:1038700090B7084088B7084000B7084050B50840E6 +:1038800070B5084074B5084078B508407CB508406C +:103890009C4A002080B58AB000AFBA607B600346C6 +:1038A000FB730B46BB73BB7B9BB23A8ED31A3B8434 +:1038B0006A4B03221A706A4B01221A60694B032279 +:1038C0001A60694B02221A60684B03221A60684A28 +:1038D00097F83C30136000BF654B1B68002BFADB88 +:1038E000644B1B6803F00053002B07D05F4B1B6831 +:1038F0005E4A43F0005313600123ABE097F8443075 +:10390000013BDBB23B74002387F8233011E097F8CA +:103910002330BA681A4497F823300133127807F13C +:1039200028010B4403F8182C97F82330013387F84B +:10393000233097F823300C2BE9D997F84430032B28 +:1039400001D100237B770023BB770023FB7707F1AE +:103950001003494A1B681360484A7B691360484A50 +:10396000BB691360474AFB69136097F84430013B19 +:10397000DB047B62BB7B012B07D9BB7B023B5B106B +:103980009B051A467B6A13437B627B6A43F4802360 +:103990007B627B6A43F008037B627B6A43F04003EF +:1039A0007B627B6A43F000537B627B6A43F4C073A3 +:1039B0007B62354A7B6A1360344A3B8C1360344B1C +:1039C00000221A60334A3B8F13603B8F002B1BD0C1 +:1039D000314B01221A60314A7B6B1360304A3B8FB6 +:1039E000136000BF234B1B6803F00203002BF8D0C9 +:1039F000204B1B68002B07DA1C4B1B681B4A43F04B +:103A000000431360032325E0184B03221A6097F844 +:103A10004830002B05D09F2001F0A6FB9F2001F02D +:103A2000D1FA104B01221A60FB7B002B11D01A4BEC +:103A300001221A60194A7B681360194A3B8C136093 +:103A4000184B01221A60184A7B681360174A3B8C96 +:103A50001360002318462837BD4680BD9C4A0020CD +:103A600080B7084084B7084000B7084088B70840CE +:103A70000CB4084090B7084040B5084044B5084031 +:103A800048B508404CB5084050B5084054B508400A +:103A900058B508405CB5084000B0084004B0084084 +:103AA0000CB0084020B0084024B008402CB00840BA +:103AB00080B500AFFFF740FE0346184680BD80B5D5 +:103AC0008AB000AFB9607B600346FB731346BB81CD +:103AD000FB7B9BB2BA89D31ABB844A4B1B68002B71 +:103AE00007DA494B1B68484A43F00043136003233D +:103AF00084E0444B1B6803F08043002B07D0424B0B +:103B00001B68414A43F080431360022376E03D4B3B +:103B10001B6803F00053002B07D03B4B1B683A4A4D +:103B200043F000531360012368E09F2001F094FAF2 +:103B3000364B00221A6000BF354B1B6803F08043F0 +:103B4000B3F1804FF7D1334A07F1140312681A60BA +:103B5000314A07F11403043312681A602F4A07F13F +:103B60001403083312681A602D4A07F114030C334A +:103B700012681A60244B1B68234A43F00303136046 +:103B8000002387F8273011E097F8272097F827308F +:103B900079680B4407F128010A4412F8142CD2B2B8 +:103BA0001A7097F82730013387F8273097F82720C5 +:103BB000FB7B9A42E8D3002387F8263015E097F87C +:103BC00026307A6813441A78B98C97F826300B445B +:103BD0001946BB680B441B789A4201D004230DE0C0 +:103BE00097F82630013387F8263097F82620FB7B9C +:103BF0009A42E4D30B4B00221A7000231846283750 +:103C0000BD4680BD90B7084088B7084000B708405F +:103C100050B5084070B5084074B5084078B5084004 +:103C20007CB508409C4A002080B485B000AF786025 +:103C30007B68124A934210D0104A934203D8104A2C +:103C4000934207D012E00F4A934209D00E4A9342A2 +:103C500009D00BE01023FB600AE01123FB6007E0B2 +:103C60001223FB6004E01323FB6001E0002300E06B +:103C7000FB6818461437BD4680BC704700A00D4055 +:103C800000900D4000B00D4000C00D4080B485B0E4 +:103C900000AFF8600B467A60FB727B6803F00103AB +:103CA000002B06D0FB6803F580631A68FB7A134388 +:103CB00006E0FB6803F580631B68FA7AD243134081 +:103CC000FA6802F5806213607B6803F00203002B40 +:103CD00006D0FB6803F584631A68FB7A134306E099 +:103CE000FB6803F584631B68FA7AD2431340FA68D1 +:103CF00002F58462136000BF1437BD4680BC704774 +:103D000080B485B000AF78600B46FB70FB78012271 +:103D100002FA03F3FB707B6803F580631B68FB60AA +:103D20007B6803F584631B68BB60FA78FB6813400B +:103D3000002B14BF01230023DBB21946FA78BB68BD +:103D40001340002B01D0022300E000230B43184650 +:103D50001437BD4680BC704780B485B000AFF860B2 +:103D60000B467A60FB727B6803F00103002B06D0E0 +:103D7000FB6803F581631A68FB7A134306E0FB686E +:103D800003F581631B68FA7AD2431340FA6802F59F +:103D9000816213607B6803F00203002B06D0FB688E +:103DA00003F204431A68FB7A134306E0FB6803F24C +:103DB00004431B68FA7AD2431340FA6802F20442C1 +:103DC00013607B6803F00403002B06D0FB6803F24A +:103DD0000C431A68FB7A134306E0FB6803F20C43BA +:103DE0001B68FA7AD2431340FA6802F20C4213605D +:103DF00000BF1437BD4680BC704780B487B000AFA9 +:103E000078600B46FB70FB78012202FA03F3FB702B +:103E10007B6803F581631B687B617B6803F2044365 +:103E20001B683B617B6803F20C431B68FB60FA78FC +:103E30007B691340002B14BF01230023DBB219461A +:103E4000FA783B691340002B01D0022300E00023E5 +:103E50000B43F978FA680A40002A01D0042200E0F6 +:103E60000022134318461C37BD4680BC704780B4FF +:103E700083B000AF78600B46FB707B6803F582630C +:103E80001A68FB78796801F5826113430B6000BF03 +:103E90000C37BD4680BC704780B483B000AF7860FB +:103EA0000B46FB707B6803F582631B68FA78D2438C +:103EB00011467A6802F582620B40136000BF0C372E +:103EC000BD4680BC704780B483B000AF78600B46BD +:103ED000FB70FB78002B04D07B6803F583631B68C1 +:103EE00003E07B6803F214431B6818460C37BD4699 +:103EF00080BC704780B483B000AF78600B46FB7025 +:103F00007B6803F21C431A46FB78136000BF0C3732 +:103F1000BD4680BC704780B582B000AF7860396024 +:103F20007868FFF781FE78603968786800F07FFF75 +:103F3000786801F047F800BF0837BD4680BD80B5FE +:103F400082B000AF78607868FFF76EFE78607868BE +:103F500001F082F8786800F09BFF00BF0837BD468B +:103F600080BD80B483B000AF78600B46FB70FB78F7 +:103F70009B001A467B6813441B6818460C37BD46E5 +:103F800080BC704780B483B000AF78600B46FB7094 +:103F90001346BB70FB789B001A467B6813441A4695 +:103FA000BB78136000BF0C37BD4680BC704780B53E +:103FB00082B000AF78600B46FB70FB780022194698 +:103FC0007868FFF763FEFB7800221946786801F0F5 +:103FD0007DFA00BF0837BD4680BD80B582B000AF16 +:103FE00078600B46FB70FB78012219467868FFF772 +:103FF0004DFEFB7800221946786801F067FA00BF91 +:104000000837BD4680BD80B582B000AF78600B46F2 +:10401000FB70FB78022219467868FFF737FEFB78C1 +:1040200000221946786801F051FA00BF0837BD46F2 +:1040300080BD80B582B000AF78600B46FB70FB7826 +:10404000022219467868FFF721FEFB780022194604 +:10405000786801F03BFA00BF0837BD4680BD80B5E7 +:1040600082B000AF78600B46FB70FB7802221946E5 +:104070007868FFF70BFEFB7800221946786801F09C +:1040800025FA00BF0837BD4680BD80B582B000AFBD +:1040900078600B46FB70FB78022219467868FFF7C0 +:1040A000F5FDFB7800221946786801F00FFA00BF91 +:1040B0000837BD4680BD80B582B000AF78600B4642 +:1040C000FB70FB78022219467868FFF7DFFDFB786A +:1040D00008221946786801F0F9F900BF0837BD4693 +:1040E00080BD80B487B000AFF8600B467A60FB7289 +:1040F00000237B61FB681D4A934201D100237B6151 +:10410000FB681B4A934201D108237B61FB68194A73 +:10411000934201D110237B61FB68174A934201D17E +:1041200018237B61FA7A7B6902FA03F33B617B68AF +:10413000012B0BD1FB6803F204731A68FB6803F2CE +:10414000047319463B6913430B600AE0FB6803F2F2 +:1041500004731A683B69DB43F96801F20471134088 +:104160000B6000BF1C37BD4680BC704700900D40FF +:1041700000A00D4000B00D4000C00D4080B485B0DF +:1041800000AF78600B46FB700023FB607B68174A2A +:10419000934201D10023FB607B68154A934201D111 +:1041A0000823FB607B68134A934201D11023FB6014 +:1041B0007B68114A934201D11823FB60FA78FB68AF +:1041C0001344012202FA03F3BB607B6803F2047319 +:1041D0001A68BB681340002B01D0012300E00023C4 +:1041E00018461437BD4680BC704700BF00900D4094 +:1041F00000A00D4000B00D4000C00D4080B485B05F +:1042000000AF78600B46FB700023FB607B68164AAA +:10421000934201D10023FB607B68144A934201D191 +:104220000823FB607B68124A934201D11023FB6094 +:104230007B68104A934201D11823FB60FA78FB682F +:1042400002FA03F3BB607B6803F5E2631A687B68DC +:1042500003F5E2631946BB6813430B6000BF1437D4 +:10426000BD4680BC704700BF00900D4000A00D40CF +:1042700000B00D4000C00D4080B485B000AF786044 +:104280000B46FB700023FB607B68164A934201D10A +:104290000023FB607B68144A934201D10823FB6032 +:1042A0007B68124A934201D11023FB607B68104A5D +:1042B000934201D11823FB60FA78FB6802FA03F3FA +:1042C000BB607B6803F5E2631A68BB68DB4379680F +:1042D00001F5E26113400B6000BF1437BD4680BC9E +:1042E000704700BF00900D4000A00D4000B00D4091 +:1042F00000C00D4080B485B000AF78600B46FB7005 +:104300000023FB607B68184A934201D10023FB60C5 +:104310007B68164A934201D10823FB607B68144AEC +:10432000934201D11023FB607B68124A934201D172 +:104330001823FB60FB78002B08D07B6803F5E36350 +:104340001A68FB6822FA03F3DBB207E07B6803F527 +:10435000E4631A68FB6822FA03F3DBB218461437E9 +:10436000BD4680BC704700BF00900D4000A00D40CE +:1043700000B00D4000C00D4080B485B000AF786043 +:104380000B46FB700023FB607B68164A934201D109 +:104390000023FB607B68144A934201D10823FB6031 +:1043A0007B68124A934201D11023FB607B68104A5C +:1043B000934201D11823FB60FA78FB6802FA03F3F9 +:1043C000BB607B6803F5E3631A687B6803F5E3630E +:1043D0001946BB6813430B6000BF1437BD4680BC51 +:1043E000704700BF00900D4000A00D4000B00D4090 +:1043F00000C00D4080B483B000AF7860054B1A68F0 +:1044000004497B6813430B6000BF0C37BD4680BC7A +:10441000704700BF94200D4080B483B000AF786037 +:10442000054B1A687B68DB43034913400B6000BFF0 +:104430000C37BD4680BC704794200D4080B483B0DB +:1044400000AF786039607B680C331A68396840F2D5 +:1044500001130B4079680C3113430B6000BF0C371C +:10446000BD4680BC704780B483B000AF78603960CF +:104470007B680C331A68396840F201130B40DB4348 +:1044800079680C3113400B6000BF0C37BD4680BC0F +:10449000704780B483B000AF786039607B680C33BC +:1044A0001B687A680C3223F4807323F001031360D5 +:1044B0007B683A68120E1A603B68DBB27A68043295 +:1044C00043F4007313603B681B0ADBB27A6808325E +:1044D00043F40073136000BF0C37BD4680BC7047C7 +:1044E00080B485B000AFF860B9601346FB71BA685C +:1044F00044F240031340BB60FB79002B05D0FB68FE +:104500000C331A68BB68134305E0FB680C331A6868 +:10451000BB68DB431340FA680C32136000BF1437EA +:10452000BD4680BC704780B485B000AFF860B9600C +:104530001346FB71BA6842F220031340BB60FB795B +:10454000002B05D0FB680C331A68BB68134305E0E9 +:10455000FB680C331A68BB68DB431340FA680C3203 +:10456000136000BF1437BD4680BC704780B485B06F +:1045700000AFF860B9607A60BA6840F60C43134047 +:10458000BB60FB680C331A68BB68DB431A40796870 +:10459000BB680B40F9680C3113430B6000BF143744 +:1045A000BD4680BC704780B485B000AFF860B9608C +:1045B0001346FB71BA6840F202231340BB60FB79DB +:1045C000002B05D0FB680C331A68BB68134305E069 +:1045D000FB680C331A68BB68DB431340FA680C3283 +:1045E000136000BF1437BD4680BC704780B485B0EF +:1045F00000AFF860B9601346FB71BB68DBB2002BFB +:1046000013D0FB79002B08D0FB6804331B68FA68D1 +:10461000043243F04003136007E0FB6804331B6877 +:10462000FA68043223F040031360BB6803F47F434D +:10463000002B13D0FB79002B08D0FB6808331B68D4 +:10464000FA68083243F04003136007E0FB68083360 +:104650001B68FA68083223F04003136000BF143768 +:10466000BD4680BC704780B485B000AFF860B960CB +:104670007A60BB68DBB2002B04D0FB6838331A4683 +:104680007B681360BB6803F47F43002B04D0FB6896 +:104690003C331A467B68136000BF1437BD4680BCAC +:1046A000704780B483B000AF786039603B68FF2BFF +:1046B00003D17B6838331B6802E07B683C331B689E +:1046C00018460C37BD4680BC704780B485B000AF3B +:1046D000F860B9607A60BB68DBB2002B04D0FB687D +:1046E00040331A467B681360BB6803F47F43002B9A +:1046F00004D0FB6844331A467B68136000BF14374C +:10470000BD4680BC704780B483B000AF786039602C +:104710003B68FF2B03D17B6840331B6802E07B685A +:1047200044331B6818460C37BD4680BC704780B4C4 +:1047300085B000AFF860B9607A60BB68DBB2002B6F +:1047400004D0FB6828331A467B681360BB6803F407 +:104750007F43002B04D0FB682C331A467B68136020 +:1047600000BF1437BD4680BC704780B483B000AF33 +:10477000786039603B68FF2B03D17B6828331B6866 +:1047800002E07B682C331B6818460C37BD4680BCA2 +:10479000704780B483B000AF786039603B68FF2B0E +:1047A00003D17B6848331B6802E07B684C331B688D +:1047B00018460C37BD4680BC704780B485B000AF4A +:1047C000F860B9607A60BB68DBB2002B04D0FB688C +:1047D00030331A467B681360BB6803F47F43002BB9 +:1047E00004D0FB6834331A467B68136000BF14376B +:1047F000BD4680BC704780B483B000AF786039603C +:104800003B68FF2B03D17B6830331B6802E07B6879 +:1048100034331B6818460C37BD4680BC704780B5E2 +:1048200084B000AFF860B9607A60FB68184A9342C0 +:104830000DD0FB68174A934207D0FB68164A934293 +:1048400001D1272304E0332302E0252300E02323C2 +:10485000FB60BB68DBB2002B06D07968F86800F01B +:10486000E6FAF86800F0AEFBBB6803F47F43002B68 +:104870000AD0FB6801337968184600F0D8FAFB6863 +:104880000133184600F09EFB00BF1037BD4680BDC7 +:1048900000000340001003400020034080B582B0B8 +:1048A00000AF786039607B68174A93420DD07B680F +:1048B000164A934207D07B68154A934201D12723B9 +:1048C00004E0332302E0252300E023237B603B68E0 +:1048D000DBB2002B05D0786800F0BEFB786800F0F2 +:1048E000D7FA3B6803F47F43002B09D07B68013380 +:1048F000184600F0B1FB7B680133184600F0C8FA97 +:1049000000BF0837BD4680BD0000034000100340D3 +:104910000020034080B483B000AF786039607B68CA +:1049200018331A687B68183319463B6813430B60C9 +:1049300000BF0C37BD4680BC704780B483B000AF69 +:10494000786039607B6818331A683B68DB437968A4 +:10495000183113400B6000BF0C37BD4680BC704758 +:1049600080B483B000AF78600B46FB70FB78002BFF +:1049700003D07B6820331B6802E07B681C331B6814 +:1049800018460C37BD4680BC704780B483B000AF7A +:10499000786039607B6824331A463B68136000BF37 +:1049A0000C37BD4680BC704780B483B000AF7860E0 +:1049B00039607B6810331A463B68136000BF0C37C0 +:1049C000BD4680BC704700BF80B584B000AF786042 +:1049D0000B46FB7000F038F8FB78002B02D00F4B31 +:1049E000FB6001E00E4BFB60FA6813469B0013442A +:1049F0009B001A467B681344591EFA6813469B00B5 +:104A000013449B00B1FBF3F3013BBB60054ABB6859 +:104A1000136000BF1037BD4680BD00BF801A06007E +:104A2000A08601000C00024080B582B000AF0346B2 +:104A3000FB7100F017F8034AFB79136000BF0837D9 +:104A4000BD4680BD0008024080B400AF044B1B6827 +:104A5000034A43F01003136000BFBD4680BC70479B +:104A60002000024080B400AF064B1B68054A43F0AB +:104A700020031360044B01221A6000BFBD4680BCB6 +:104A8000704700BF200002400408024080B400AF1D +:104A9000044B1B68034A23F01003136000BFBD469C +:104AA00080BC70472000024080B400AF064B00225B +:104AB0001A60064B1B68054A23F02003136000BFF1 +:104AC000BD4680BC704700BF040802402000024081 +:104AD00080B582B000AF78607968182000F0A7F93F +:104AE000182000F06FFA00BF0837BD4680BD80B5C2 +:104AF00000AF182000F0B0FA182000F0C9F900BF8C +:104B000080BD80B400AF034B01221A6000BFBD46D8 +:104B100080BC70471000024080B400AF044B1B689B +:104B2000034A43F00103136000BFBD4680BC7047D9 +:104B30000C08024080B483B000AF7860054B1A685F +:104B400004497B6813430B6000BF0C37BD4680BC33 +:104B5000704700BF0C08024080B400AF034B002236 +:104B60001A6000BFBD4680BC704700BF1000024005 +:104B700080B400AF044B1B68034A23F001031360A9 +:104B800000BFBD4680BC70470C08024080B483B0B3 +:104B900000AF7860054B1A687B68DB43034913401C +:104BA0000B6000BF0C37BD4680BC70470C0802404C +:104BB00080B483B000AF0346FB71FB79002B07D0B4 +:104BC000094B1B68002B14BF01230023DBB206E056 +:104BD000064B1B68002B14BF01230023DBB21846D1 +:104BE0000C37BD4680BC70471800024014000240DC +:104BF00080B483B000AF0346FB71FB79002B07D074 +:104C0000094B1B68002B14BF01230023DBB206E015 +:104C1000064B1B68002B14BF01230023DBB2184690 +:104C20000C37BD4680BC7047140802401008024093 +:104C300080B483B000AF0346FB71FB79002B02D038 +:104C4000044B1B6801E0044B1B6818460C37BD463B +:104C500080BC7047140802401008024080B400AFC6 +:104C6000044B01221A60044B01221A6000BFBD46AA +:104C700080BC70471C0002401800024080B400AFA6 +:104C8000034B01221A6000BFBD4680BC704700BFC5 +:104C90001808024080B483B000AF7860034A7B6894 +:104CA000136000BF0C37BD4680BC70471808024037 +:104CB00080B483B000AF03460A46FB711346BB7154 +:104CC000FB795A00BB791A43034B1A6000BF0C37BB +:104CD000BD4680BC704700BF0000024080B400AFFA +:104CE000064B1B6803F00103002B01D0012300E0F9 +:104CF00000231846BD4680BC704700BF0400024038 +:104D000080B400AF064B1B6803F04003002B01D0BA +:104D1000012300E000231846BD4680BC704700BF59 +:104D20000400024080B483B000AF7860034A7B681F +:104D3000136000BF0C37BD4680BC704704000240C2 +:104D400080B483B000AF0C4B1B687B607B6803F0C2 +:104D50000103002B01D0002309E07B6803F012035C +:104D6000002B03D07B6803F01C0300E000231846EF +:104D70000C37BD4680BC70470400024080B483B04D +:104D800000AF0346FB71044AFB79136000BF0C3788 +:104D9000BD4680BC704700BF0800024080B400AF31 +:104DA000024B1B681846BD4680BC70470800024095 +:104DB00080B400AF024B1B681846BD4680BC7047EC +:104DC0000408024080B483B000AF0346FB71044A7C +:104DD000FB79136000BF0C37BD4680BC704700BF35 +:104DE0000808024080B400AF024B1B681846BD465D +:104DF00080BC70470808024080B400AFFEE780B571 +:104E000000AF01F05EFC0346002B14BF012300231A +:104E1000DBB2184680BD80B500AF01F045FC03460B +:104E2000002B14BF01230023DBB2184680BD80B4E1 +:104E300085B000AF78603960134B1B68134A93420A +:104E400018D0114B1B68BB600023FB600CE0FB68B3 +:104E50009A00BB6813441B6819460C4AFB6842F869 +:104E60002310FB680133FB60FB68A22BEFD9064BD4 +:104E7000064A1A6005497B683A6841F8232000BF5A +:104E80001437BD4680BC704708ED00E000400020AC +:104E900080B483B000AF7860044A7B68044942F86C +:104EA000231000BF0C37BD4680BC70470040002077 +:104EB000F94D200080B483B000AF7860074A7B686A +:104EC00052F82330064A43F0BF6343F400331360C3 +:104ED00000BF0C37BD4680BC704700BF486E200045 +:104EE0000CED00E080B483B000AF0E4B1B6803F400 +:104EF000E0633B6000237B6009E00B4A7B6852F86B +:104F000023303A689A4206D07B6801337B607B6825 +:104F1000072BF2D900E000BF7B6818460C37BD466E +:104F200080BC70470CED00E0486E200080B485B076 +:104F300000AF78600B46FB707B689B08144A52F800 +:104F400023301B68FB607B6803F00303DB00FF2258 +:104F500002FA03F3DB431A46FB681340FB60FA785E +:104F60007B6803F00303DB0002FA03F31A46FB68D5 +:104F70001343FB607B689B08054A52F823301A46AE +:104F8000FB68136000BF1437BD4680BC704700BF8C +:104F9000686E200080B483B000AF78607B689B08A7 +:104FA000074A52F823301A687B6803F00303DB00DA +:104FB00022FA03F3DBB218460C37BD4680BC7047BB +:104FC000686E200080B483B000AF78607B68042BEB +:104FD00006D11E4B1B681D4A43F4803313602FE03B +:104FE0007B68052B06D1194B1B68184A43F4003324 +:104FF000136025E07B68062B06D1144B1B68134A0F +:1050000043F4802313601BE07B680F2B06D1104B09 +:105010001B680F4A43F00203136011E07B680F2BFB +:105020000ED97B68103B03F01F03012202FA03F143 +:105030007B68103B5B09074A52F823300A461A6026 +:1050400000BF0C37BD4680BC704700BF24ED00E0B8 +:1050500010E000E00C6F200080B483B000AF7860F7 +:105060007B68042B06D11E4B1B681D4A23F480333A +:1050700013602FE07B68052B06D1194B1B68184A7B +:1050800023F40033136025E07B68062B06D1144B14 +:105090001B68134A23F4802313601BE07B680F2BEB +:1050A00006D1104B1B680F4A23F00203136011E076 +:1050B0007B680F2B0ED97B68103B03F01F03012286 +:1050C00002FA03F17B68103B5B09074A52F8233070 +:1050D0000A461A6000BF0C37BD4680BC704700BF4F +:1050E00024ED00E010E000E0206F200080B483B0E9 +:1050F00000AF78607B68022B06D1194B1B68184AF9 +:1051000043F00043136025E07B680E2B06D1144B5F +:105110001B68134A43F0805313601BE07B680F2B1E +:1051200006D10F4B1B680E4A43F08063136011E0F9 +:105130007B680F2B0ED97B68103B03F01F03012205 +:1051400002FA03F17B68103B5B09064A52F82330F0 +:105150000A461A6000BF0C37BD4680BC704700BFCE +:1051600004ED00E0346F200080B483B000AF7860BD +:105170007B680E2B06D1144B1B68134A43F0006367 +:1051800013601BE07B680F2B06D10F4B1B680E4A88 +:1051900043F00073136011E07B680F2B0ED97B681E +:1051A000103B03F01F03012202FA03F17B68103B5E +:1051B0005B09064A52F823300A461A6000BF0C37D2 +:1051C000BD4680BC704700BF04ED00E0486F200082 +:1051D00080B582B000AF7860786801F082FA00BFD5 +:1051E0000837BD4680BD80B500AF01F07EFA0346AA +:1051F000184680BD80B400AF044B1B68034A43F0DF +:105200000103136000BFBD4680BC704798200D406D +:1052100080B400AF044B1B68034A23F00103136002 +:1052200000BFBD4680BC704798200D4080B400AFE1 +:10523000064B1B6803F00103002B01D0012300E0A3 +:1052400000231846BD4680BC704700BF98200D4023 +:1052500080B489B000AFF8600B467A60FB72254BD2 +:10526000FB610023BB613CE0FA7ABB6942FA03F3BD +:1052700003F001037B617B69002B2FD0FB681E4A82 +:10528000934213D01C4A934203D81C4A934207D03E +:105290001EE01B4A93420FD01A4A934212D017E0E5 +:1052A000194ABB6952F82330FB6114E0174ABB6905 +:1052B00052F82330FB610EE0154ABB6952F82330E7 +:1052C000FB6108E0134ABB6952F82330FB6102E03E +:1052D000084BFB6100BFFB697A681A60BB69013348 +:1052E000BB61BB69072BBFD900BF2437BD4680BC5B +:1052F000704700BF00400D4000A00D4000900D40E1 +:1053000000B00D4000C00D40DC6F2000FC6F20009D +:105310001C7020003C70200080B487B000AFF860A3 +:105320000B467A60FB7200237B61FB68634A934201 +:1053300037D0624A934203D8614A934207D0ABE028 +:10534000604A934256D0604A93427CD0A4E0FB7AF4 +:10535000012B01D100237B61FB7A022B01D10123B8 +:105360007B61FB7A042B01D102237B61FB7A082B42 +:1053700001D103237B61FB7A102B01D104237B61D4 +:10538000FB7A202B01D105237B61FB7A402B01D1D5 +:1053900006237B61FB7A802B40F0818007237B61B1 +:1053A0007DE0FB7A012B01D108237B61FB7A022B84 +:1053B00001D109237B61FB7A042B01D10A237B6194 +:1053C000FB7A082B01D10B237B61FB7A102B01D1D7 +:1053D0000C237B61FB7A202B01D10D237B61FB7AAF +:1053E000402B01D10E237B61FB7A802B59D10F23F7 +:1053F0007B6156E0FB7A012B01D110237B61FB7AA4 +:10540000022B01D111237B61FB7A042B01D11223E2 +:105410007B61FB7A082B01D113237B61FB7A102B74 +:1054200001D114237B61FB7A202B01D115237B61F1 +:10543000FB7A402B01D116237B61FB7A802B32D182 +:1054400017237B612FE0FB7A012B01D118237B61AD +:10545000FB7A022B01D119237B61FB7A042B01D14A +:105460001A237B61FB7A082B01D11B237B61FB7A1A +:10547000102B01D11C237B61FB7A202B01D11D2332 +:105480007B61FB7A402B01D11E237B61FB7A802B51 +:105490000BD11F237B6108E000237B6106E000BF86 +:1054A00004E000BF02E000BF00E000BF7B687A6953 +:1054B0001A6000BF1C37BD4680BC704700A00D407D +:1054C00000900D4000B00D4000C00D4080B489B088 +:1054D00000AFF8600B467A60FB72254BFB6100233E +:1054E000BB613CE0FA7ABB6942FA03F303F00103C3 +:1054F0007B617B69002B2FD0FB681E4A934213D03F +:105500001C4A934203D81C4A934207D01EE01B4A10 +:1055100093420FD01A4A934212D017E0194ABB693E +:1055200052F82330FB6114E0174ABB6952F823306C +:10553000FB610EE0154ABB6952F82330FB6108E0BD +:10554000134ABB6952F82330FB6102E0114BFB6147 +:1055500000BFFB697A681A60BB690133BB61BB6934 +:10556000072BBFD900BF2437BD4680BC704700BFA2 +:1055700000400D4000A00D4000900D4000B00D40D7 +:1055800000C00D405C6F20007C6F20009C6F2000ED +:10559000BC6F200080400D4080B485B000AF7860C3 +:1055A0000B46FB70644BFB607B68644A934237D0C8 +:1055B000624A934203D8624A934207D0ABE0614A01 +:1055C000934256D0604A93427CD0A4E0FB78012BF2 +:1055D00001D1594BFB60FB78022B01D15B4BFB6087 +:1055E000FB78042B01D15A4BFB60FB78082B01D1CF +:1055F000584BFB60FB78102B01D1574BFB60FB78BD +:10560000202B01D1554BFB60FB78402B01D1544B33 +:10561000FB60FB78802B40F08180524BFB607DE08B +:10562000FB78012B01D1504BFB60FB78022B01D1A1 +:105630004E4BFB60FB78042B01D14D4BFB60FB789C +:10564000082B01D14B4BFB60FB78102B01D14A4B4F +:10565000FB60FB78202B01D1484BFB60FB78402B93 +:1056600001D1474BFB60FB78802B59D1454BFB6048 +:1056700056E0FB78012B01D1434BFB60FB78022BFA +:1056800001D1424BFB60FB78042B01D1404BFB6006 +:10569000FB78082B01D13F4BFB60FB78102B01D12D +:1056A0003D4BFB60FB78202B01D13C4BFB60FB7832 +:1056B000402B01D13A4BFB60FB78802B32D1394B28 +:1056C000FB602FE0FB78012B01D1374BFB60FB78AF +:1056D000022B01D1354BFB60FB78042B01D1344BFD +:1056E000FB60FB78082B01D1324BFB60FB78102B61 +:1056F00001D1314BFB60FB78202B01D12F4BFB609C +:10570000FB78402B01D12E4BFB60FB78802B0BD11B +:105710002C4BFB6008E0084BFB6006E000BF04E098 +:1057200000BF02E000BF00E000BFFB681B68184636 +:105730001437BD4680BC704780400D4000A00D402E +:1057400000900D4000B00D4000C00D4084400D4061 +:1057500088400D408C400D4090400D4094400D40DD +:1057600098400D409C400D40A0400D40A4400D408D +:10577000A8400D40AC400D40B0400D40B4400D403D +:10578000B8400D40BC400D40C0400D40C4400D40ED +:10579000C8400D40CC400D40D0400D40D4400D409D +:1057A000D8400D40DC400D40E0400D40E4400D404D +:1057B000E8400D40EC400D40F0400D40F4400D40FD +:1057C000F8400D40FC400D4080B582B000AF7860DD +:1057D0007968A120FFF72BFBA120FFF7F3FB00BFA7 +:1057E0000837BD4680BD80B500AFA120FFF734FC6F +:1057F000A120FFF74DFB00BF80BD80B483B000AF98 +:105800000D4B1B687B600D4B1B681B027A681343B2 +:105810007B600B4B1B681B047A6813437B60094B4E +:105820001B681B067A6813437B607B6818460C373D +:10583000BD4680BC704700BF40500D4044500D40F5 +:1058400048500D404C500D4080B485B000AF78609A +:1058500039600A4B1B68FB60FB6823F03F03FB6069 +:105860007A683B681343FA681343FB60034AFB689A +:10587000136000BF1437BD4680BC704754500D40C4 +:1058800080B483B000AF786000BF0E4B1B6803F09C +:105890000103002BF9D00C4A7B681B0E13607B6858 +:1058A0001B0C0A4ADBB213607B681B0A084ADBB296 +:1058B0001360084A7B68DBB2136000BF0C37BD463B +:1058C00080BC704750500D404C500D4048500D402A +:1058D00044500D4040500D4080B483B000AF0D4B9C +:1058E0001B687B600C4B1B681B027A6813437B6050 +:1058F0000A4B1B681B047A6813437B60084B1B68C8 +:105900001B067A6813437B607B6818460C37BD46DC +:1059100080BC70475C500D4060500D4064500D409D +:1059200068500D4080B483B000AF074B1B6803F094 +:105930000103002B14BF01230023FB71FB791846E0 +:105940000C37BD4680BC704758500D4080B483B0C2 +:1059500000AF074B1B687B607B6823F001037B6013 +:10596000034A7B68136000BF0C37BD4680BC70479C +:1059700058500D4080B586B000AF03463A60FB71C9 +:105980000B46BB71BB7983F00103DBB2002B07D060 +:10599000244B1B6843F400133B61224A3B691360AC +:1059A000204B1B683B613A691F4B13403B61FB79FD +:1059B00083F00103DBB2002B03D03B6943F080731B +:1059C0003B61BB79002B02D04FF4803300E0002311 +:1059D000BB603A69BB6813433B613A693B68134358 +:1059E0003B61104A3B691360104B1B687B610023CD +:1059F000FB6008E0102000F0DBF80C4B1B687B61BB +:105A0000FB680133FB607B6903F48033BA689A4218 +:105A100004D0FB684FF6FE729342EBD900BF1837F3 +:105A2000BD4680BD00200D40F8FFFEFE04200D4065 +:105A300080B485B000AF1E4B1B68BB60BB6803F031 +:105A400007037B600023FB607B68072B2AD801A239 +:105A500052F823F0755A20007B5A2000815A20000A +:105A6000875A20008D5A2000935A2000995A20000E +:105A70009F5A20000F4BFB6014E00F4BFB6011E0BE +:105A80000E4BFB600EE00E4BFB600BE00D4BFB6022 +:105A900008E00D4BFB6005E00C4BFB6002E00C4B9B +:105AA000FB6000BFFB6818461437BD4680BC7047DA +:105AB00004200D400048E8010024F40000127A00A0 +:105AC00000093D0080841E0040420F0020A1070015 +:105AD00090D0030080B485B000AF7860094B1B689C +:105AE000FB60FB6823F4E063FB607B681B02FA68E1 +:105AF0001343FB60034AFB68136000BF1437BD46C5 +:105B000080BC704700200D4080B485B000AF1F4BB3 +:105B10001B68BB60BB681B0A03F007037B600023A4 +:105B2000FB607B68072B2BD801A252F823F000BF43 +:105B3000515B2000575B20005D5B2000635B200011 +:105B4000695B20006F5B2000755B20007B5B2000A1 +:105B50000F4BFB6014E00F4BFB6011E00E4BFB6042 +:105B60000EE00E4BFB600BE00D4BFB6008E00D4BB5 +:105B7000FB6005E00C4BFB6002E00C4BFB6000BFE0 +:105B8000FB6818461437BD4680BC704704200D40A2 +:105B90000048E8010024F40000127A0000093D00EA +:105BA00080841E0040420F0020A1070090D0030017 +:105BB00001387FF4FDAF704700BF80B400AF024BE7 +:105BC00008221A60FEE700BF74200D4080B500AFC8 +:105BD00000F07EFD00BF80BD80B582B000AF334BCA +:105BE0001B687B607B6803F00703002B0CBF01235D +:105BF0000023FB707B6803F4E063002B0CBF0123E0 +:105C00000023BB70FB78002B02D1BB78002B18D08F +:105C1000274B1B687B60FB78002B01D0012300E041 +:105C200000237A6813437B60BB78002B02D04FF4CB +:105C3000807300E000237A6813437B601C4A7B6812 +:105C400013601C4B1B681B4A43F00403136000F0F5 +:105C50003FFD184B1B68174A23F004031360FB78C1 +:105C6000002B02D1BB78002B1BD0114B1B687B6033 +:105C7000FB78002B02D06FF0070301E04FF0FF33F9 +:105C80007A6813407B60BB78002B02D06FF4E0632E +:105C900001E04FF0FF337A6813407B60044A7B6871 +:105CA000136000BF0837BD4680BD00BF04200D4013 +:105CB00000200D4010ED00E080B485B000AF7860AA +:105CC0007B681B0A03F00F03042B0BD07B681B0AB5 +:105CD00003F00F03042B05D07B681B0A03F00F03AE +:105CE000052B03D1104B1B68FB6002E00F4B1B68B8 +:105CF000FB607B681B0A03F00F030D4A52F8232058 +:105D00007B6803F00F0302FA03F3BB60FA68BB6819 +:105D10001340002B01D0012300E000231846143764 +:105D2000BD4680BC704700BF1C300D4018300D4090 +:105D3000B870200080B485B000AF78607B681B0A23 +:105D400003F00F031D4A52F823301B687A6802F0F3 +:105D50000F02012101FA02F210467A68120A02F0DB +:105D60000F02164951F82220034313600023FB6001 +:105D700002E0FB680133FB60FB680F2BF9D97B68FD +:105D80001B0A03F00F030D4A52F823301B687A6890 +:105D900002F00F02012101FA02F2D24310467A68A2 +:105DA000120A02F00F02054951F822200340136045 +:105DB00000BF1437BD4680BC704700BFA4702000F0 +:105DC00080B483B000AF78607B681B0A03F00F03D8 +:105DD0000C4A52F823301B687A6802F00F02012146 +:105DE00001FA02F210467A68120A02F00F0205491F +:105DF00051F822200343136000BF0C37BD4680BC1E +:105E0000704700BF5C70200080B483B000AF786042 +:105E10007B681B0A03F00F030C4A52F823301B68FF +:105E20007A6802F00F02012101FA02F2D243104611 +:105E30007A68120A02F00F02044951F82220034046 +:105E4000136000BF0C37BD4680BC70475C702000FB +:105E500080B483B000AF78607B681B0A03F00F0347 +:105E60000C4A52F823301B687A6802F00F020121B5 +:105E700001FA02F210467A68120A02F00F0205498E +:105E800051F822200343136000BF0C37BD4680BC8D +:105E9000704700BF7470200080B483B000AF78609A +:105EA0007B681B0A03F00F030C4A52F823301B686F +:105EB0007A6802F00F02012101FA02F2D243104681 +:105EC0007A68120A02F00F02044951F822200340B6 +:105ED000136000BF0C37BD4680BC70477470200053 +:105EE00080B483B000AF78607B681B0A03F00F03B7 +:105EF0000C4A52F823301B687A6802F00F02012125 +:105F000001FA02F210467A68120A02F00F020549FD +:105F100051F822200343136000BF0C37BD4680BCFC +:105F2000704700BF8C70200080B483B000AF7860F1 +:105F30007B681B0A03F00F030C4A52F823301B68DE +:105F40007A6802F00F02012101FA02F2D2431046F0 +:105F50007A68120A02F00F02044951F82220034025 +:105F6000136000BF0C37BD4680BC70478C702000AA +:105F700080B483B000AF7860034A7B68136000BFD1 +:105F80000C37BD4680BC704758200D4080B483B0AC +:105F900000AF064B1B687B607B6803F003037B60EC +:105FA0007B6818460C37BD4680BC704758200D40B2 +:105FB00080B483B000AF074B1B687B607B6843F005 +:105FC00001037B60034A7B68136000BF0C37BD464A +:105FD00080BC704780200D4080B483B000AF7860F3 +:105FE00039607B682C331B6823F086027B682C3376 +:105FF00019463B6813430B6000BF0C37BD4680BC9D +:10600000704780B483B000AF78607B682C331B6826 +:1060100003F0860318460C37BD4680BC704780B439 +:1060200085B000AFF860B9607A60FB683433194618 +:10603000BA687B6813430B6000BF1437BD4680BC51 +:10604000704780B487B000AFF860B9607A60FB68D1 +:1060500034331B687B617B6903F00702BB681A60FD +:106060007B6903F038027B681A6000BF1C37BD46AD +:1060700080BC704780B586B000AFF860B9607A60C8 +:106080003B60F86800F088F87B681B01BA689A42A8 +:106090000BD2FB6830331B68FA68303243F02003C0 +:1060A00013607B685B087B6007E0FB6830331B682C +:1060B000FA68303223F020031360BB68DA007B6893 +:1060C000B2FBF3F301335B087B61FB6824331A46B0 +:1060D0007B699B091360FB6828331A467B6903F0D0 +:1060E0003F031360FB682C331A463B681360FB6860 +:1060F00018331A460023136000BF1837BD4680BD11 +:1061000080B487B000AFF860B9607A603B60FB682C +:1061100024331B687B61FB6828331B683B61BB68C9 +:106120009A007B6999013B690B44B2FBF3F27B68EF +:106130001A60FB6830331B6803F02003002B04D087 +:106140007B681B685A007B681A60FB682C331B68ED +:1061500003F0EE023B681A6000BF1C37BD4680BCEE +:10616000704780B483B000AF78607B682C331B68C5 +:106170007A682C3243F0100313607B6830331B685D +:106180007A68303243F4407343F00103136000BF78 +:106190000C37BD4680BC704780B483B000AF7860D8 +:1061A00000BF7B6818331B6803F00803002BF8D18D +:1061B0007B682C331B687A682C3223F01003136041 +:1061C0007B6830331B687A68303223F4407323F0E5 +:1061D0000103136000BF0C37BD4680BC704780B41C +:1061E00083B000AF78607B682C331B687A682C32F0 +:1061F00043F01003136000BF0C37BD4680BC7047EE +:1062000080B483B000AF78607B682C331B687A68F9 +:106210002C3223F01003136000BF0C37BD4680BC46 +:10622000704780B483B000AF78600B46FB70FB789A +:10623000002B08D07B6830331B687A68303243F01B +:106240000603136007E07B6830331B687A683032DE +:1062500043F00203136000BF0C37BD4680BC70479B +:1062600080B483B000AF78607B6830331B687A6895 +:10627000303223F00603136000BF0C37BD4680BCEC +:10628000704780B483B000AF786039607B6830338A +:106290001B6823F010027B68303319463B681343B8 +:1062A0000B6000BF0C37BD4680BC704780B483B024 +:1062B00000AF78607B6830331B6803F0100318462A +:1062C0000C37BD4680BC704780B483B000AF7860A7 +:1062D0007B6818331B6803F01003002B0CBF0123ED +:1062E0000023DBB218460C37BD4680BC704780B433 +:1062F00083B000AF78607B6818331B6803F020031D +:10630000002B0CBF01230023DBB218460C37BD461F +:1063100080BC704780B483B000AF78607B6818336E +:106320001B6803F01003002B02D17B681B6801E09F +:106330004FF0FF3318460C37BD4680BC704780B421 +:1063400083B000AF786000BF7B6818331B6803F030 +:106350001003002BF8D17B681B6818460C37BD462C +:1063600080BC704780B483B000AF78600B46FB7090 +:106370007B6818331B6803F02003002B04D17B6873 +:10638000FA781A60012300E0002318460C37BD4656 +:1063900080BC704780B483B000AF78600B46FB7060 +:1063A00000BF7B6818331B6803F02003002BF8D173 +:1063B0007B68FA781A6000BF0C37BD4680BC704716 +:1063C00080B483B000AF78600B46FB70FB78002B85 +:1063D00005D07B682C331B6843F0010304E07B6825 +:1063E0002C331B6823F001037A682C32136000BF42 +:1063F0000C37BD4680BC704780B483B000AF786076 +:106400007B6818331B6803F00803002B14BF0123BB +:106410000023DBB218460C37BD4680BC704780B500 +:1064200084B000AF786039607B68094A934201D13B +:10643000152300E01623FB603968F868FEF7F7FCC7 +:10644000F868FEF7BFFD00BF1037BD4680BD00BF36 +:1064500000C0004080B584B000AF78607B68084A17 +:10646000934201D1152300E01623FB60F868FEF784 +:10647000F3FDF868FEF70CFD00BF1037BD4680BD88 +:1064800000C0004080B483B000AF786039607B68A2 +:1064900038331A687B68383319463B6813430B60FE +:1064A00000BF0C37BD4680BC704780B483B000AFDE +:1064B000786039607B6838331A683B68DB437968F9 +:1064C000383113400B6000BF0C37BD4680BC7047AD +:1064D00080B483B000AF78600B46FB70FB78002B74 +:1064E00003D07B6840331B6802E07B683C331B6849 +:1064F00018460C37BD4680BC704780B483B000AFEF +:10650000786039607B6844331A463B68136000BF8B +:106510000C37BD4680BC704780B483B000AF786054 +:1065200039607B6848331A687B68483319463B6892 +:1065300013430B6000BF0C37BD4680BC704780B46E +:1065400083B000AF786039607B6848331A683B6875 +:10655000DB437968483113400B6000BF0C37BD4600 +:1065600080BC704780B483B000AF78607B68043330 +:106570001B6803F00F0318460C37BD4680BC7047FC +:1065800080B483B000AF78607B6804331A46002380 +:10659000136000BF0C37BD4680BC704780B483B029 +:1065A00000AF786039607B6803F6C8731A463B68B1 +:1065B000136000BF0C37BD4680BC704780B483B009 +:1065C00000AF78607B6803F6C8731B6818460C3709 +:1065D000BD4680BC704780B483B000AF78607B68F4 +:1065E000A4331B687A68A43243F40043136000BFED +:1065F0000C37BD4680BC704780B483B000AF786074 +:106600007B68A4331B687A68A43223F400431360C8 +:1066100000BF0C37BD4680BC704780B483B000AF6C +:1066200078600B46FB701346BB707B68A4331A4638 +:10663000FB7813607B68A8331A46BB78136000BFF1 +:106640000C37BD4680BC704780B485B000AF786021 +:106650000B46FB7000BF7B6818331B6803F0880390 +:10666000802BF8D17B682C331B68FB60FB6823F020 +:1066700086037A682C3243F0820313607B68FA78D1 +:106680001A6000BF7B6818331B6803F08803802BF7 +:10669000F8D17B682C331A46FB68136000BF1437AF +:1066A000BD4680BC704700BFEFF3108072B67047E4 +:1066B0001C4623461846EFF3108070471C462346BD +:1066C0001846EFF3108062B670471C462346184602 +:1066D00030BF704700BF20BF704700BF40BF70474A +:1066E00000BF80F31188704700BFEFF3118070473F +:1066F0001C46234618460000032A70B414D940EA09 +:106700000105AD0704460B4622D11D6826681946CF +:10671000AE42204603F1040304F1040418D1043A04 +:10672000032A20461946F0D8541E72B102780B781D +:106730009A4208BF641806D00CE010F8012F11F837 +:10674000013F9A4206D1A142F7D1002070BC7047A8 +:10675000541EEBE7D01A70BC704700BFF0B4860738 +:1067600043D0541E002A3ED0CAB2034602E014F1C0 +:10677000FF3438D303F8012B9D07F8D1032C2BD914 +:10678000CDB245EA05250F2C45EA054516D9A4F1F9 +:1067900010073F0903F1200606EB071603F110026C +:1067A00042E9045542E902551032B242F8D104F0F0 +:1067B0000F040137032C03EB07130DD91E462246A5 +:1067C000043A032A46F8045BFAD8221F22F0030297 +:1067D0000432134404F003042CB1C9B21C4403F87E +:1067E000011B9C42FBD1F0BC704714460346C5E731 +:1067F000683D7563620000006F70656E6D6F746553 +:106800002D622D323467687A000000004343323530 +:106810003338000043433235333820536F43000090 +:106820004F70656E57534E20000000000000891124 +:1068300012239B322446AD573665BF74488CC19DE8 +:106840005AAFD3BE6CCAE5DB7EE9F7F881100801C8 +:1068500093331A22A5562C47B7753E64C99C408DC8 +:10686000DBBF52AEEDDA64CBFFF976E802218B3064 +:10687000100299132667AF763444BD554AADC3BCA8 +:10688000588ED19F6EEBE7FA7CC8F5D983310A2088 +:1068900091121803A7772E66B5543C45CBBD42AC88 +:1068A000D99E508FEFFB66EAFDD874C904428D5320 +:1068B00016619F702004A9153227BB364CCEC5DF68 +:1068C0005EEDD7FC6888E1997AABF3BA85520C4348 +:1068D00097711E60A1142805B3373A26CDDE44CF48 +:1068E000DFFD56ECE9986089FBBB72AA06638F72E4 +:1068F00014409D512225AB343006B9174EEFC7FE28 +:106900005CCCD5DD6AA9E3B8788AF19B87730E6207 +:1069100095501C41A3352A24B1163807CFFF46EE07 +:10692000DDDC54CDEBB962A8F99A708B08848195AF +:106930001AA793B62CC2A5D33EE1B7F04008C919F7 +:10694000522BDB3A644EED5F766DFF7C89940085B7 +:106950009BB712A6ADD224C3BFF136E0C1184809D7 +:10696000D33B5A2AE55E6C4FF77D7E6C0AA583B453 +:10697000188691972EE3A7F23CC0B5D14229CB38B7 +:10698000500AD91B666FEF7E744CFD5D8BB502A477 +:1069900099961087AFF326E2BDD034C1C3394A2897 +:1069A000D11A580BE77F6E6EF55C7C4D0CC685D70F +:1069B0001EE597F42880A1913AA3B3B2444ACD5B77 +:1069C0005669DF78600CE91D722FFB3E8DD604C737 +:1069D0009FF516E4A9902081BBB332A2C55A4C4B57 +:1069E000D7795E68E11C680DF33F7A2E0EE787F6D3 +:1069F0001CC495D52AA1A3B03882B193466BCF7A37 +:106A00005448DD59622DEB3C700EF91F8FF706E6F6 +:106A10009DD414C5ABB122A0B9923083C77B4E6A16 +:106A2000D5585C49E33D6A2CF11E780F683D7563CB +:106A3000620000006F70656E6D6F74652D622D329F +:106A40003467687A00000000434332353338000071 +:106A500043433235333820536F4300004F70656E27 +:106A600057534E2000000000683D7563620000002F +:106A70006F70656E6D6F74652D622D323467687A44 +:106A800000000000434332353338000043433235C1 +:106A9000333820536F4300004F70656E57534E20BC +:106AA000000000000000891112239B322446AD57DC +:106AB0003665BF74488CC19D5AAFD3BE6CCAE5DB46 +:106AC0007EE9F7F88110080193331A22A5562C4766 +:106AD000B7753E64C99C408DDBBF52AEEDDA64CB26 +:106AE000FFF976E802218B30100299132667AF7602 +:106AF0003444BD554AADC3BC588ED19F6EEBE7FA06 +:106B00007CC8F5D983310A2091121803A7772E6625 +:106B1000B5543C45CBBD42ACD99E508FEFFB66EAE5 +:106B2000FDD874C904428D5316619F702004A915C5 +:106B30003227BB364CCEC5DF5EEDD7FC6888E199C5 +:106B40007AABF3BA85520C4397711E60A1142805E5 +:106B5000B3373A26CDDE44CFDFFD56ECE9986089A5 +:106B6000FBBB72AA06638F7214409D512225AB3481 +:106B70003006B9174EEFC7FE5CCCD5DD6AA9E3B885 +:106B8000788AF19B87730E6295501C41A3352A24A5 +:106B9000B1163807CFFF46EEDDDC54CDEBB962A865 +:106BA000F99A708B088481951AA793B62CC2A5D345 +:106BB0003EE1B7F04008C919522BDB3A644EED5F55 +:106BC000766DFF7C899400859BB712A6ADD224C355 +:106BD000BFF136E0C1184809D33B5A2AE55E6C4F35 +:106BE000F77D7E6C0AA583B4188691972EE3A7F2F1 +:106BF0003CC0B5D14229CB38500AD91B666FEF7E15 +:106C0000744CFD5D8BB502A499961087AFF326E214 +:106C1000BDD034C1C3394A28D11A580BE77F6E6EF4 +:106C2000F55C7C4D0CC685D71EE597F42880A191B4 +:106C30003AA3B3B2444ACD5B5669DF78600CE91DD4 +:106C4000722FFB3E8DD604C79FF516E4A9902081D4 +:106C5000BBB332A2C55A4C4BD7795E68E11C680DB4 +:106C6000F33F7A2E0EE787F61CC495D52AA1A3B070 +:106C70003882B193466BCF7A5448DD59622DEB3C94 +:106C8000700EF91F8FF706E69DD414C5ABB122A094 +:106C9000B9923083C77B4E6AD5585C49E33D6A2C74 +:106CA000F11E780F683D7563620000006F70656EBD +:106CB0006D6F74652D622D323467687A00000000B4 +:106CC00043433235333800004343323533382053A1 +:106CD0006F4300004F70656E57534E200000000058 +:106CE000683D7563620000006F70656E6D6F74655E +:106CF0002D622D323467687A00000000434332353C +:106D00003338000043433235333820536F4300009B +:106D10004F70656E57534E2000000000683D75634C +:106D2000620000006F70656E6D6F74652D622D32AC +:106D30003467687A0000000043433235333800007E +:106D400043433235333820536F4300004F70656E34 +:106D500057534E2000000000683D7563620000003C +:106D60006F70656E6D6F74652D622D323467687A51 +:106D700000000000434332353338000043433235CE +:106D8000333820536F430000683D75636200000094 +:106D90006F70656E6D6F74652D622D323467687A21 +:106DA000000000004343323533380000434332359E +:106DB000333820536F430000683D75636200000064 +:106DC0006F70656E6D6F74652D622D323467687AF1 +:106DD000000000004343323533380000434332356E +:106DE000333820536F430000683D75636200000034 +:106DF0006F70656E6D6F74652D622D323467687AC1 +:106E0000000000004343323533380000434332353D +:106E1000333820536F430000683D75636200000003 +:106E20006F70656E6D6F74652D622D323467687A90 +:106E3000000000004343323533380000434332350D +:106E4000333820536F4300000007000000060000A5 +:106E50000005000000040000000300000002000024 +:106E600000010000000000000000000018ED00E03C +:106E70001CED00E020ED00E000E400E004E400E0B0 +:106E800008E400E00CE400E010E400E014E400E0BA +:106E900018E400E01CE400E020E400E024E400E06A +:106EA00028E400E02CE400E030E400E034E400E01A +:106EB00038E400E03CE400E040E400E044E400E0CA +:106EC00048E400E04CE400E050E400E054E400E07A +:106ED00058E400E05CE400E060E400E064E400E02A +:106EE00068E400E06CE400E070E400E074E400E0DA +:106EF00078E400E07CE400E080E400E084E400E08A +:106F000088E400E08CE400E090E400E000E100E0D0 +:106F100004E100E008E100E00CE100E010E100E045 +:106F200080E100E084E100E088E100E08CE100E045 +:106F300090E100E000E200E004E200E008E200E0AE +:106F40000CE200E010E200E080E200E084E200E019 +:106F500088E200E08CE200E090E200E080400D403A +:106F600084400D4088400D408C400D4090400D40C5 +:106F700094400D4098400D409C400D40A0400D4075 +:106F8000A4400D40A8400D40AC400D40B0400D4025 +:106F9000B4400D40B8400D40BC400D40C0400D40D5 +:106FA000C4400D40C8400D40CC400D40D0400D4085 +:106FB000D4400D40D8400D40DC400D40E0400D4035 +:106FC000E4400D40E8400D40EC400D40F0400D40E5 +:106FD000F4400D40F8400D40FC400D4000400D4095 +:106FE00004400D4008400D400C400D4010400D4045 +:106FF00014400D4018400D401C400D4020400D40F5 +:1070000024400D4028400D402C400D4030400D40A4 +:1070100034400D4038400D403C400D4040400D4054 +:1070200044400D4048400D404C400D4050400D4004 +:1070300054400D4058400D405C400D4060400D40B4 +:1070400064400D4068400D406C400D4070400D4064 +:1070500074400D4078400D407C400D4008200D40AC +:1070600018200D4028200D4038200D4048200D40AC +:10707000A8200D400C200D401C200D402C200D4060 +:107080003C200D404C200D40AC200D4010200D4008 +:1070900020200D4030200D4040200D4050200D405C +:1070A000B0200D4014200D4024200D4034200D4010 +:1070B00044200D4054200D4001000000000100005C +:1070C00000000100000000010100000004000000B9 +:1070D00000000000000000000000000000000000B0 +:1070E00000000000000000000000000000000000A0 +:1070F0000000000000000000000000000000000090 +:10710000000000000000000000000000000000007F +:10711000000000000000000000000000000000006F +:10712000000000000000000000000000000000005F +:10713000000000000000000000000000000000004F +:10714000000000000000000000000000000000003F +:10715000000000000000000000000000000000002F +:10716000000000000000000000000000000000001F +:10717000000000000000000000000000000000000F +:1071800000000000000000000000000000000000FF +:1071900000000000000000000000000000000000EF +:1071A00000000000000000000000000000000000DF +:1071B00000000000000000000000000000000000CF +:1071C00000000000000000000000000000000000BF +:1071D00000000000000000000000000000000000AF +:1071E000000000000000000000000000000000009F +:1071F000000000000000000000000000000000008F +:10720000000000000000000000000000000000007E +:10721000000000000000000000000000000000006E +:10722000000000000000000000000000000000005E +:10723000000000000000000000000000000000004E +:10724000000000000000000000000000000000003E +:10725000000000000000000000000000000000002E +:10726000000000000000000000000000000000001E +:10727000000000000000000000000000000000000E +:1072800000000000000000000000000000000000FE +:1072900000000000000000000000000000000000EE +:1072A00000000000000000000000000000000000DE +:1072B00000000000000000000000000000000000CE +:1072C00000000000000000000000000000000000BE +:1072D00000000000000000000000000000000000AE +:1072E000000000000000000000000000000000009E +:1072F000000000000000000000000000000000008E +:10730000000000000000000000000000000000007D +:10731000000000000000000000000000000000006D +:10732000000000000000000000000000000000005D +:10733000000000000000000000000000000000004D +:10734000000000000000000000000000000000003D +:0C73500000000000000000000000000031 :020000040027D3 :0CFFD400FFFFFFF600000000000020000E -:0400000500202ED3D6 +:0400000500202ED7D2 :00000001FF From 777f0ad4a4e5b28a639d63de37ac4774d83a9467 Mon Sep 17 00:00:00 2001 From: Yasuyuki Tanaka Date: Fri, 24 May 2019 01:02:33 +0200 Subject: [PATCH 38/50] mercator.yml --- mercator.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mercator.yml b/mercator.yml index c9093543bf..04fe1223c6 100644 --- a/mercator.yml +++ b/mercator.yml @@ -1,5 +1,5 @@ measurement: - num_transactions: 10 + num_transactions: 5 channels: [11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26] tx_len: 100 tx_interval_ms: 10 From ae9a28fb9beffefda264fde72345da25a7188fa6 Mon Sep 17 00:00:00 2001 From: Yasuyuki Tanaka Date: Fri, 24 May 2019 14:20:30 +0200 Subject: [PATCH 39/50] mercator: introduce 'tx_nodes' setting to config['measurement'] --- mercator.yml | 19 ++++++++++--------- mercator/__main__.py | 18 ++++++++++-------- mercator/node.py | 5 +++++ mercator/platform/iotlab.py | 5 +++++ mercator/platform/opentestbed.py | 3 +++ 5 files changed, 33 insertions(+), 17 deletions(-) diff --git a/mercator.yml b/mercator.yml index 04fe1223c6..58f09146f7 100644 --- a/mercator.yml +++ b/mercator.yml @@ -1,15 +1,7 @@ -measurement: - num_transactions: 5 - channels: [11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26] - tx_len: 100 - tx_interval_ms: 10 - tx_num_per_transaction: 100 - tx_fill_byte: 0x5a - platform: name: iotlab experiment_duration_min: 60 - nodes: + nodes: &nodes - m3-2.grenoble.iot-lab.info - m3-4.grenoble.iot-lab.info - m3-5.grenoble.iot-lab.info @@ -22,6 +14,15 @@ platform: archi: M3 path: firmwares/openwsn-iot-lab_M3.elf +measurement: + num_transactions: 5 + channels: [11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26] + tx_nodes: *nodes + tx_len: 100 + tx_interval_ms: 10 + tx_num_per_transaction: 100 + tx_fill_byte: 0x5a + logging: version: 1 formatters: diff --git a/mercator/__main__.py b/mercator/__main__.py index 5fbd75c4ca..1df727850c 100644 --- a/mercator/__main__.py +++ b/mercator/__main__.py @@ -93,16 +93,18 @@ def _sigint_handler(sig, frame): raise SigIntException() def _running_in_thread(): - num_nodes = len(nodes) - total_exec_num = num_transactions * len(channels) * num_nodes - params = _get_measurement_params(num_transactions, channels, num_nodes) + tx_nodes = [node for node in nodes if node.tx_node] + num_tx_nodes = len(tx_nodes) + total_exec_num = num_transactions * len(channels) * num_tx_nodes + params = _get_measurement_params(num_transactions, channels, + num_tx_nodes) with tqdm.tqdm(total=total_exec_num, unit='meas', disable=quiet) as pbar: for trans_ctr, channel, tx_node_idx in params: - tx_node = nodes[tx_node_idx] + tx_node = tx_nodes[tx_node_idx] _beginning_of_measurement(pbar, trans_ctr, channel, - tx_node_idx, num_nodes) + tx_node_idx, num_tx_nodes) try: _do_measurement(nodes, tx_node, trans_ctr, channel, outfile) except RuntimeError: @@ -111,7 +113,7 @@ def _running_in_thread(): _end_of_measurement(pbar, trans_ctr, channel, - tx_node_idx, num_nodes) + tx_node_idx, num_tx_nodes) if quit_now: break @@ -126,11 +128,11 @@ def _running_in_thread(): print_bold('Waiting for the current measurement to finish...') thread.join() -def _get_measurement_params(num_transactions, channels, num_nodes): +def _get_measurement_params(num_transactions, channels, num_tx_nodes): trans_ctr = 0 while trans_ctr < num_transactions: for channel in channels: - for node_idx in range(num_nodes): + for node_idx in range(num_tx_nodes): yield trans_ctr, channel, node_idx trans_ctr += 1 diff --git a/mercator/node.py b/mercator/node.py index a07b88842e..4a6e087e96 100644 --- a/mercator/node.py +++ b/mercator/node.py @@ -56,6 +56,7 @@ def __init__(self, platform): # for measurements self._status = NodeStatus.UNKNOWN + self.tx_node = False self.tx_power_dbm = None self.tx_len = None self.tx_num_pk = None @@ -75,6 +76,7 @@ def setup(self, config): else: raise NotImplementedError('{0} is not supported'.format( self.platform.firmware_os_name)) + self.tx_node = self._am_i_tx_node(config['tx_nodes']) self.tx_len = config['tx_len'] self.tx_num_pk = config['tx_num_per_transaction'] self.tx_ifdur_ms = config['tx_interval_ms'] @@ -279,6 +281,9 @@ def stop_rx(self): def _setup(self): pass + def _am_i_tx_node(self, tx_nodes): + raise NotImplementedError() + def _issue_command(self, send_req, recv_resp, retry=True): err = [] result = [] diff --git a/mercator/platform/iotlab.py b/mercator/platform/iotlab.py index 3274376c2b..09d03519fa 100644 --- a/mercator/platform/iotlab.py +++ b/mercator/platform/iotlab.py @@ -376,6 +376,11 @@ def _setup(self): self.ws = self._open_ws() self.ws.settimeout(self.WS_TIMEOUT_SECONDS) + def _am_i_tx_node(self, tx_nodes): + full_node_id = '{0}.{1}.{2}'.format(self.id, self.site, + IOT_LAB_DOMAIN_NAME) + return full_node_id in tx_nodes + def _open_ws(self): # short-hands username = self.platform.username diff --git a/mercator/platform/opentestbed.py b/mercator/platform/opentestbed.py index f713266c5a..a7b799c8ff 100644 --- a/mercator/platform/opentestbed.py +++ b/mercator/platform/opentestbed.py @@ -296,6 +296,9 @@ def _setup(self): self.platform.mqtt.subscribe(self.topic_recv_msg) self.platform.mqtt.subscribe(self.topic_send_msg_resp) + def _am_i_tx_node(self, tx_nodes): + return self.id in tx_nodes + def _send_mqtt_cmd(self, cmd, payload={}, timeout=None): cmd_topic = self.mqtt_topic_prefix + 'cmd/{0}'.format(cmd) resp_topic = self.mqtt_topic_prefix + 'resp/{0}'.format(cmd) From 8ee9b863b561e22e870fea184c0292e9d64751e3 Mon Sep 17 00:00:00 2001 From: Yasuyuki Tanaka Date: Fri, 24 May 2019 14:33:22 +0200 Subject: [PATCH 40/50] Rename 'mercator/platform' to 'mercator/platforms' pandas doesn't want a directory having 'platform' in its name to be at the same directory where a script using pandas is. That is, if we have a script using pandas under 'mercator' directory, pandas complains with the following exception: AttributeError: module 'platform' has no attribute 'python_implementation' --- mercator/__main__.py | 4 ++-- mercator/{platform => platforms}/__init__.py | 0 mercator/{platform => platforms}/iotlab.py | 4 ++-- mercator/{platform => platforms}/opentestbed.py | 4 ++-- mercator/{platform => platforms}/skeleton.py | 4 ++-- tests/test_node.py | 4 ++-- 6 files changed, 10 insertions(+), 10 deletions(-) rename mercator/{platform => platforms}/__init__.py (100%) rename mercator/{platform => platforms}/iotlab.py (99%) rename mercator/{platform => platforms}/opentestbed.py (99%) rename mercator/{platform => platforms}/skeleton.py (91%) diff --git a/mercator/__main__.py b/mercator/__main__.py index 1df727850c..f6c8bb42c4 100644 --- a/mercator/__main__.py +++ b/mercator/__main__.py @@ -73,7 +73,7 @@ def _read_config(config_file_path): return config def _setup_platform(platform_config, args): - module_name = 'mercator.platform.{0}'.format(platform_config['name']) + module_name = 'mercator.platforms.{0}'.format(platform_config['name']) platform_module = import_module(module_name) if platform_config['name'] == 'iotlab': @@ -228,7 +228,7 @@ def main(): args = _parse_args() if args.dump_sample_yml_file: - module_name = 'mercator.platform.{0}'.format(args.dump_sample_yml_file) + module_name = 'mercator.platforms.{0}'.format(args.dump_sample_yml_file) platform_module = import_module(module_name) platform_module.Platform.dump_sample_yml_file() elif args.config: diff --git a/mercator/platform/__init__.py b/mercator/platforms/__init__.py similarity index 100% rename from mercator/platform/__init__.py rename to mercator/platforms/__init__.py diff --git a/mercator/platform/iotlab.py b/mercator/platforms/iotlab.py similarity index 99% rename from mercator/platform/iotlab.py rename to mercator/platforms/iotlab.py index 09d03519fa..3c31d9e556 100644 --- a/mercator/platform/iotlab.py +++ b/mercator/platforms/iotlab.py @@ -23,13 +23,13 @@ from mercator.hdlc import HDLC_FLAG import mercator.node -import mercator.platform +import mercator.platforms from mercator.utils import print_bold, MercatorHalo, OSName LOCAL_IP_ADDRESS = '127.0.0.1' IOT_LAB_DOMAIN_NAME = 'iot-lab.info' -class Platform(mercator.platform.Platform): +class Platform(mercator.platforms.Platform): POOLING_INTERVAL_SECONDS = 5 def __init__(self, config, exp_id): diff --git a/mercator/platform/opentestbed.py b/mercator/platforms/opentestbed.py similarity index 99% rename from mercator/platform/opentestbed.py rename to mercator/platforms/opentestbed.py index a7b799c8ff..287f69185d 100644 --- a/mercator/platform/opentestbed.py +++ b/mercator/platforms/opentestbed.py @@ -15,10 +15,10 @@ import yaml import mercator.node -import mercator.platform +import mercator.platforms from mercator.utils import print_bold, MercatorHalo, OSName -class Platform(mercator.platform.Platform): +class Platform(mercator.platforms.Platform): GET_ALL_NODES_TIMEOUT_SECONDS = 2 def __init__(self, config, program_firmware): diff --git a/mercator/platform/skeleton.py b/mercator/platforms/skeleton.py similarity index 91% rename from mercator/platform/skeleton.py rename to mercator/platforms/skeleton.py index 6706196d7d..4983db4e42 100644 --- a/mercator/platform/skeleton.py +++ b/mercator/platforms/skeleton.py @@ -1,7 +1,7 @@ import mercator.node -import mercator.platform +import mercator.platforms -class Platform(mercator.platform.Platform): +class Platform(mercator.platforms.Platform): def __init__(self, config, *args): # 'args' is platform-specific arguments; see iotlab.py or # opentestbed.py for your reference diff --git a/tests/test_node.py b/tests/test_node.py index ed8f28b075..5c79251ed6 100644 --- a/tests/test_node.py +++ b/tests/test_node.py @@ -10,7 +10,7 @@ hdlc_escape, hdlc_unescape, HDLC_FLAG) import mercator.node from mercator.node import MsgType, NodeStatus, RxFlag -import mercator.platform +import mercator.platforms from mercator.utils import OSName TEST_MAC_ADDR = netaddr.EUI('02-01-03-04-05-06-07-08') @@ -30,7 +30,7 @@ def _dehdlcify(in_buf): assert hdlc_verify_crc(body) return hdlc_unescape(body[:-2]) -class Platform(mercator.platform.Platform): +class Platform(mercator.platforms.Platform): def __init__(self, config): self.firmware_os_name = OSName.OpenWSN From 8d67d41f0353dc1b681251ffe2cae8b552597cd2 Mon Sep 17 00:00:00 2001 From: Yasuyuki Tanaka Date: Fri, 24 May 2019 14:38:10 +0200 Subject: [PATCH 41/50] k7analyze.py --- mercator/k7analyze.py | 236 ++++++++++++++++++++++++++++++++++++++++++ requirements.txt | 7 ++ setup.py | 3 +- 3 files changed, 245 insertions(+), 1 deletion(-) create mode 100644 mercator/k7analyze.py diff --git a/mercator/k7analyze.py b/mercator/k7analyze.py new file mode 100644 index 0000000000..fd246c00b5 --- /dev/null +++ b/mercator/k7analyze.py @@ -0,0 +1,236 @@ +import argparse +import itertools +import gzip +import json +import os +from statistics import mean + +import matplotlib.pyplot as plt +import networkx as nx +import numpy as np +import pandas as pd +from pandas.plotting import register_matplotlib_converters +import seaborn as sns + +register_matplotlib_converters() + +CHART_NODE_DEGREE_FILE_NAME = 'chart-node_degree.png' +CHART_PDR_VS_CHANNEL_FILE_NAME = 'chart-pdr_vs_channel.png' +CHART_NUM_GOOD_CHANNELS_PER_NBR_FILE_NAME = 'chart-num_good_channels.png' +CHART_WATERFALL_RSSI_VS_PDR_FILE_NAME = 'chart-rssi_vs_pdr.png' +CHART_PDR_OVER_TIME_FILE_NAME = 'chart-pdr_over_time_from_{0}_to_{1}.png' + + +def _construct_bare_link_graph(df, node_count): + df_per_channel = pd.pivot_table(df, + values='pdr', + index=['src', 'dst', 'channel'], + aggfunc=np.mean) + df_per_channel = df_per_channel.reset_index() + df_overall = pd.pivot_table(df, values='pdr', index=['src', 'dst'], + aggfunc=np.mean) + df_overall = df_overall.reset_index() + df_overall['channel'] = 'overall' + df = pd.concat([df_per_channel, df_overall], sort=False) + + G = nx.MultiDiGraph() + G.add_edges_from([(src, dst, channel, {'avg_pdr': pdr if pdr else 0}) + for src, dst, channel, pdr in df.itertuples(index=False)]) + return G + +def _construct_valid_link_graph(bare_link_graph, min_pdr): + G = nx.Graph() + for u, v in itertools.combinations(bare_link_graph.nodes, 2): + link_u_v = bare_link_graph.get_edge_data(u, v, 'overall', + default={'avg_pdr': 0}) + link_v_u = bare_link_graph.get_edge_data(u, v, 'overall', + default={'avg_pdr': 0}) + + if ((link_u_v['avg_pdr'] >= min_pdr) + and (link_v_u['avg_pdr'] >= min_pdr)): + # if the both directions have enough PDR values, we + # consider the link as valid + overall_avg_pdr = (link_u_v['avg_pdr'] + link_v_u['avg_pdr']) /2 + G.add_edge(u, v, overall_avg_pdr=overall_avg_pdr) + return G + +def _plot_node_degree(valid_link_graph): + # plot node degree + print('Generate a chart of node degree') + plt.figure() + data = [degree for _, degree in valid_link_graph.degree] + ax = sns.distplot(data, bins=max(data), + kde=False, norm_hist=True, hist_kws={'cumulative': True}) + ax.axvline(mean(data), color='red') + ax.set_xlabel('Node Degree') + ax.set_xlim(0, max(data)) + ax.set_ylabel('Probability') + ax.set_ylim(0, 1) + plt.savefig(CHART_NODE_DEGREE_FILE_NAME) + plt.close() + +def _plot_pdr_vs_channel(df): + # plot PDR vs channel + print('Generate a chart of average PDR per channel, ' + + 'taking only PDR values > 0%') + plt.figure() + data = df[df['pdr'] > 0].copy() + data['pdr'] *= 100 + ax = sns.barplot(x='channel', y='pdr', data=data, + color=sns.xkcd_rgb["windows blue"]) + # add vertical lines for WiFi Channels 1, 6, 11 their center + # frequencies are roughly located at channel 12.5, 17.5, and 22.5 + # of IEEE 802.15.4 + ax.vlines(x=[1.5, 6.5, 11.5], ymin=0, ymax=100, + linestyles='dashed', colors='red') + ax.set_xlabel('IEEE 802.15.4 Channel (2.4GHz)') + ax.set_ylabel('Average Link PDR (%)') + ax.set_ylim(0, 100) + plt.savefig(CHART_PDR_VS_CHANNEL_FILE_NAME) + plt.close() + +def _plot_num_channels_having_valid_links(df, min_pdr, channels): + # plot number of channels with PDR >= min_pdr + print('Generate a chart of number of channels with ' + + 'PDR >= {0}% (min_pdr)'.format(min_pdr * 100)) + plt.figure() + data = pd.pivot_table(df, + values='pdr', + index=['src', 'dst', 'channel'], + aggfunc=np.mean) + data = data.reset_index() + data = data.loc[data['pdr'] >= min_pdr] + data = pd.pivot_table(data, + values='channel', + index=['src', 'dst'], + aggfunc=len) + data = data.reset_index() + data = data['channel'] + ax = sns.distplot(data, bins=len(channels), kde=False, + norm_hist=True, hist_kws={'cumulative': True}) + ax.axvline(mean(data), color='red') + ax.set_xlabel('Number of Channels with PDR >= {0}%'.format(min_pdr * 100)) + ax.set_ylabel('Probability') + plt.savefig(CHART_NUM_GOOD_CHANNELS_PER_NBR_FILE_NAME) + plt.close() + +def _plot_waterfall_rssi_vs_pdr(df): + # plot waterfall + print('Generate a waterfall plot') + plt.figure() + data = df[df['pdr'] > 0].copy() + data = data[['mean_rssi', 'pdr']] + data['pdr'] *= 100 + ax = sns.scatterplot(x='mean_rssi', y='pdr', data=data, marker='+') + ax.set_xticks([i for i in range(-100, 0, 10)]) + ax.set_xlabel('Average RSSI (dB)') + ax.set_ylabel('PDR (%)') + ax.set_ylim(0, 110) + plt.savefig(CHART_WATERFALL_RSSI_VS_PDR_FILE_NAME) + plt.close() + +def _plot_pdr_over_time(df, src, dst, channels): + print('Generate a chart for PDR over time from {0} to {1}'.format(src, dst)) + fig = plt.figure() + data = df[(df['src']==src) & (df['dst']==dst)].copy() + # use relative time in minutes ax index, from the first + # measurement + data['timedelta'] = data['datetime'] - min(data['datetime']) + data['min'] = data.apply(lambda x: x['timedelta'].total_seconds() / 60, + axis=1) + data = data.set_index('min') + + data_mean_pdr = pd.pivot_table(data, values='pdr', index='channel', + aggfunc=np.mean) + data_mean_pdr['pdr'] *= 100 + data_mean_pdr = data_mean_pdr.T.to_dict() + + _data = pd.DataFrame(index=data.index, columns=channels, dtype=int) + _data.index.astype(data.index.dtype) + _data.rename_axis('') + del _data.index.name + pdr_values = {channel: None for channel in channels} + start_index = None + for index, row in data.iterrows(): + pdr_values[row['channel']] = row['pdr'] * 100 + if (not start_index) and (None not in pdr_values.values()): + start_index = index + _data.loc[index] = list(pdr_values.values()) + data = _data.loc[start_index:] + + axes = data.plot.line(ylim=(0, 110), use_index=True, subplots=True, + sharex=True, legend=False, + style=['red' if channel % 2 else 'blue' + for channel in channels]) + for channel, ax in zip(channels, axes): + ax.set_xlabel('Elapsed Time (min)') + ax.set_yticks([]) + ax.set_ylabel(channel, + rotation='horizontal', ha='right', va='center') + ax_right = ax.twinx() + ax_right.set_yticks([]) + ax_right.set_ylabel('{0}%'.format(int(data_mean_pdr[channel]['pdr'])), + rotation='horizontal', ha='left', va='center') + + fig = axes[0].figure + fig.text(0.07, 0.55, 'PDR (%) per IEEE802.15.4 Channel', + rotation='vertical', ha='center', va='center') + plt.savefig(CHART_PDR_OVER_TIME_FILE_NAME.format(src, dst)) + plt.close('all') + +def analyze_k7_file(k7_file_path, min_pdr, single_tx): + with gzip.open(k7_file_path, 'rt') as f: + config = json.loads(f.readline()) + df = pd.read_csv(f, header=0, + dtype={'datetime': str, 'src': int, 'dst': int, + 'channel': int, 'mean_rssi': float, + 'pdr': float, 'tx_count': int}, + na_values='None', + parse_dates=[0]) + + df['valid_link'] = df.apply(lambda x: 1 if x['pdr'] >= min_pdr else 0, + axis=1) + + bare_link_graph = _construct_bare_link_graph(df, config['node_count']) + valid_link_graph = _construct_valid_link_graph(bare_link_graph, min_pdr) + + if single_tx: + src_list = set(df['src']) + assert len(src_list) > 0 + if len(src_list) > 1: + print('Multiple TX nodes are found') + print('Cannot use --single-tx with such a K7 file') + exit(1) + else: + src = src_list.pop() + for dst in set(df['dst']): + _plot_pdr_over_time(df, src, dst, config['channels']) + else: + _plot_node_degree(valid_link_graph) + _plot_pdr_vs_channel(df) + _plot_num_channels_having_valid_links(df, min_pdr, config['channels']) + _plot_waterfall_rssi_vs_pdr(df) + +def main(): + parser = argparse.ArgumentParser() + parser.add_argument('--min-pdr', dest='min_pdr', + help='minimum PDR(%) of a valid link', + type=int, default=50) + parser.add_argument('--single-tx', dest='single_tx', + help='generate charts for a single TX case', + action='store_true', default=False) + parser.add_argument('k7_file_path', + help='path to a K7 file (.k7.gz) to analyze') + args = parser.parse_args() + + if (args.min_pdr < 0) or (args.min_pdr > 100): + raise ValueError('Invalid min_pdr value: {0}%'.format(args.min_pdr)) + min_pdr = args.min_pdr / 100.0 + + if not os.path.exists(args.k7_file_path): + raise ValueError('{0} doesn\'t exist'.format(args.raw_file_path)) + else: + analyze_k7_file(args.k7_file_path, min_pdr, args.single_tx) + +if __name__ == '__main__': + main() diff --git a/requirements.txt b/requirements.txt index 129680679c..cb82d7541d 100644 --- a/requirements.txt +++ b/requirements.txt @@ -3,10 +3,17 @@ cryptography==2.4.2 halo iotlabcli iotlabclient +matplotlib netaddr +networkx +numpy +pandas paho-mqtt pytest python-dateutil PyYAML +scipy +seaborn +statsmodels tqdm websocket-client diff --git a/setup.py b/setup.py index c38bf55faa..e52d48a6f4 100644 --- a/setup.py +++ b/setup.py @@ -7,7 +7,8 @@ entry_points={ 'console_scripts': [ 'mercator = mercator.__main__:main', - 'mercator-k7conv = mercator.k7conv:main' + 'mercator-k7conv = mercator.k7conv:main', + 'mercator-k7analyze = mercator.k7analyze:main' ] } ) From 99f1fce17449ea9e0f7af56dc6d98f4f1b6ed852 Mon Sep 17 00:00:00 2001 From: Yasuyuki Tanaka Date: Wed, 29 May 2019 20:42:52 +0200 Subject: [PATCH 42/50] Add -s (--only-platform-setup) option --- mercator/__main__.py | 63 ++++++++++++++++++++++++++++++-------------- 1 file changed, 43 insertions(+), 20 deletions(-) diff --git a/mercator/__main__.py b/mercator/__main__.py index f6c8bb42c4..2e63566647 100644 --- a/mercator/__main__.py +++ b/mercator/__main__.py @@ -51,6 +51,10 @@ def _parse_args(): parser.add_argument('-f', dest='overwrite_out_file', help='overwrite an existing file', default=False, action='store_true') + parser.add_argument('-s', '--only-platform-setup', + dest='only_platform_setup', + help='exit without measurements', + default=False, action='store_true') parser.add_argument('-q', dest='quiet', help='suppress console outputs', action='store_true') return parser.parse_args() @@ -70,6 +74,21 @@ def _read_config(config_file_path): file=sys.stderr) print(err, file=sys.stderr) exit(1) + + # 'nodes' key may have a list of lists; flatten such a list + for node_id_list in [config['platform']['nodes'], + config['measurement']['tx_nodes']]: + assert node_id_list + if isinstance(node_id_list[0], list): + flattened_node_id_list = [node_id for node_id_sub_list in node_id_list + for node_id in node_id_sub_list] + if node_id_list == config['platform']['nodes']: + config['platform']['nodes'] = flattened_node_id_list + elif node_id_list == config['measurement']['tx_nodes']: + config['measurement']['tx_nodes'] = flattened_node_id_list + else: + raise NotImplementedError() + return config def _setup_platform(platform_config, args): @@ -247,26 +266,30 @@ def main(): platform = _setup_platform(config['platform'], args) nodes = platform.setup_measurement(config['measurement']) - channels = config['measurement']['channels'] - num_transactions = config['measurement']['num_transactions'] - - if num_transactions < 0: - # if we have a negative value, take it as an infinite - # value - num_transactions = math.inf - - # body of main - outfile.open() - outfile.write_data('start_time', - {'timestamp': datetime.datetime.now().isoformat()}) - _run_transactions(num_transactions, channels, nodes, outfile, - args.quiet) - for node_idx, node in enumerate(nodes): - outfile.write_data('node_info', {'node_index': node_idx, - 'mac_addr': str(node.mac_addr)}) - outfile.write_data('end_time', - {'timestamp': datetime.datetime.now().isoformat()}) - outfile.close() + if args.only_platform_setup: + # done + pass + else: + channels = config['measurement']['channels'] + num_transactions = config['measurement']['num_transactions'] + + if num_transactions < 0: + # if we have a negative value, take it as an infinite + # value + num_transactions = math.inf + + # body of main + outfile.open() + outfile.write_data('start_time', + {'timestamp': datetime.datetime.now().isoformat()}) + _run_transactions(num_transactions, channels, nodes, outfile, + args.quiet) + for node_idx, node in enumerate(nodes): + outfile.write_data('node_info', {'node_index': node_idx, + 'mac_addr': str(node.mac_addr)}) + outfile.write_data('end_time', + {'timestamp': datetime.datetime.now().isoformat()}) + outfile.close() else: raise ValueError('Shouldn\'t come here') From c8de110d5d9097767d73d9f08bb9c920061fe1c9 Mon Sep 17 00:00:00 2001 From: Yasuyuki Tanaka Date: Fri, 7 Jun 2019 15:41:04 +0200 Subject: [PATCH 43/50] k7analyze: escape '%' symbol in help message --- mercator/k7analyze.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mercator/k7analyze.py b/mercator/k7analyze.py index fd246c00b5..c257d4daed 100644 --- a/mercator/k7analyze.py +++ b/mercator/k7analyze.py @@ -214,7 +214,7 @@ def analyze_k7_file(k7_file_path, min_pdr, single_tx): def main(): parser = argparse.ArgumentParser() parser.add_argument('--min-pdr', dest='min_pdr', - help='minimum PDR(%) of a valid link', + help='minimum PDR(%%) of a valid link', type=int, default=50) parser.add_argument('--single-tx', dest='single_tx', help='generate charts for a single TX case', From 24d5ef0c4b1110ace227693c7aa7ddf162df917a Mon Sep 17 00:00:00 2001 From: Yasuyuki Tanaka Date: Tue, 18 Jun 2019 11:48:12 +0200 Subject: [PATCH 44/50] k7analyze: don't show vertical red line for mean value --- mercator/k7analyze.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/mercator/k7analyze.py b/mercator/k7analyze.py index c257d4daed..b225384f92 100644 --- a/mercator/k7analyze.py +++ b/mercator/k7analyze.py @@ -61,7 +61,6 @@ def _plot_node_degree(valid_link_graph): data = [degree for _, degree in valid_link_graph.degree] ax = sns.distplot(data, bins=max(data), kde=False, norm_hist=True, hist_kws={'cumulative': True}) - ax.axvline(mean(data), color='red') ax.set_xlabel('Node Degree') ax.set_xlim(0, max(data)) ax.set_ylabel('Probability') @@ -108,7 +107,6 @@ def _plot_num_channels_having_valid_links(df, min_pdr, channels): data = data['channel'] ax = sns.distplot(data, bins=len(channels), kde=False, norm_hist=True, hist_kws={'cumulative': True}) - ax.axvline(mean(data), color='red') ax.set_xlabel('Number of Channels with PDR >= {0}%'.format(min_pdr * 100)) ax.set_ylabel('Probability') plt.savefig(CHART_NUM_GOOD_CHANNELS_PER_NBR_FILE_NAME) From f1bcd00946d859219a2cf44598ab81bffc6c1141 Mon Sep 17 00:00:00 2001 From: Yasuyuki Tanaka Date: Tue, 18 Jun 2019 11:48:35 +0200 Subject: [PATCH 45/50] k7analize: change xticks of CDF of node degrees --- mercator/k7analyze.py | 1 + 1 file changed, 1 insertion(+) diff --git a/mercator/k7analyze.py b/mercator/k7analyze.py index b225384f92..14189dafa8 100644 --- a/mercator/k7analyze.py +++ b/mercator/k7analyze.py @@ -61,6 +61,7 @@ def _plot_node_degree(valid_link_graph): data = [degree for _, degree in valid_link_graph.degree] ax = sns.distplot(data, bins=max(data), kde=False, norm_hist=True, hist_kws={'cumulative': True}) + ax.set_xticks(range(0, max(data))) ax.set_xlabel('Node Degree') ax.set_xlim(0, max(data)) ax.set_ylabel('Probability') From 0ae95e3d56e1e2ef5c7e3a09923ba016de9f7d53 Mon Sep 17 00:00:00 2001 From: Yasuyuki Tanaka Date: Wed, 17 Jul 2019 10:45:41 +0200 Subject: [PATCH 46/50] build-firmwares.sh: update the hash even if it's not 7-character long --- build-firmwares.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build-firmwares.sh b/build-firmwares.sh index da7e157b9e..bee794d811 100755 --- a/build-firmwares.sh +++ b/build-firmwares.sh @@ -99,7 +99,7 @@ done echo "Build logs can be found in ${BUILD_LOG_FILE}" # update firmwares/README.md -echo "Update the commit hash value in firmwares/README.md" +echo "Update the commit hash value in firmwares/README.md with ${COMMIT_HASH}" sed -i \ - -E 's/commit hash: `[0-9a-f]\{7\}`/commit hash: `'${COMMIT_HASH}'`/' \ + -E 's/commit hash: `[0-9a-f]\{1,\}`/commit hash: `'${COMMIT_HASH}'`/' \ firmwares/README.md From cfa5b69f2bcb86d232a160d8562b1cecd6c1f430 Mon Sep 17 00:00:00 2001 From: Yasuyuki Tanaka Date: Wed, 17 Jul 2019 10:46:33 +0200 Subject: [PATCH 47/50] firmwares: update the firmwares using the latest openwsn-fw $ ./build-firmwares.sh ../openwsn-fw --- firmwares/README.md | 2 +- firmwares/openwsn-iot-lab_M3.elf | Bin 737064 -> 746084 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/firmwares/README.md b/firmwares/README.md index 740f70c694..eca2587651 100644 --- a/firmwares/README.md +++ b/firmwares/README.md @@ -11,7 +11,7 @@ They are distributed under OpenWSN's [LICENSE](./LICENSE.md). ## Source Code * repository: https://github.com/openwsn-berkeley/openwsn-fw -* commit hash: `3f2ebe2a` +* commit hash: `4e959776` ## How to Build diff --git a/firmwares/openwsn-iot-lab_M3.elf b/firmwares/openwsn-iot-lab_M3.elf index 44f238699f0ce6983b92f288aab5348d383932dc..6d885724ffcdc3191dc1095b138268100a46d07e 100755 GIT binary patch delta 61200 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 WH60Dv>t`TqkHxJs@7 From c7b8b45df93ae3d4e858e5830485831e8c27eefa Mon Sep 17 00:00:00 2001 From: Yasuyuki Tanaka Date: Wed, 17 Jul 2019 10:51:25 +0200 Subject: [PATCH 48/50] README.md: add text about build-firmwares.sh --- firmwares/README.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/firmwares/README.md b/firmwares/README.md index eca2587651..88f1aed17f 100644 --- a/firmwares/README.md +++ b/firmwares/README.md @@ -27,3 +27,13 @@ $ cp -p build/iot-lab_M3_armgcc/projects/common/03oos_mercator_prog openwsn-iot- $ scons board=openmote-b-24ghz toolchain=armgcc oos_mercator $ cp -p build/openmote-b-24ghz_armgcc/projects/common/03oos_mercator_prog.ihex openwsn-openmote-b-24ghz.ihex ``` + +Or, if you have Docker available on your machine, you can use +`build-firmwares.sh`, which is located at the top directory: + +``` shell +$ git clone https://github.com/yatch/mercator.git +$ git clone https://github.com/openwsn-berkeley/openwsn-fw +$ cd mercator +$ ./build-firmwares.sh ../openwsn-fw +``` From 58b2b265e09934c427de71d5b19356c67f5c23eb Mon Sep 17 00:00:00 2001 From: Yasuyuki Tanaka Date: Tue, 13 Aug 2019 16:11:00 +0200 Subject: [PATCH 49/50] mercator: update mercator-opentestbed.yml --- mercator-opentestbed.yml | 39 ++++++++++++++++++++++++++++----------- 1 file changed, 28 insertions(+), 11 deletions(-) diff --git a/mercator-opentestbed.yml b/mercator-opentestbed.yml index 5c8af26624..19662e8d5a 100644 --- a/mercator-opentestbed.yml +++ b/mercator-opentestbed.yml @@ -1,11 +1,3 @@ -measurement: - num_transactions: 10 - channels: [11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26] - tx_len: 100 - tx_interval_ms: 10 - tx_num_per_transaction: 100 - tx_fill_byte: 0x5a - platform: name: opentestbed mqtt_broker: @@ -13,10 +5,35 @@ platform: host: mqtt-broker.example.com port: 1883 token: 123 - nodes: + nodes: &nodes # specify nodes in your testbed - - XX-XX-XX-XX-XX-XX - - XX-XX-XX-XX-XX-XX + - XX-XX-XX-XX-XX-XX-XX-XX + - XX-XX-XX-XX-XX-XX-XX-XX firmware: os: OpenWSN path: firmwares/openwsn-openmote-b-24ghz.ihex + +measurement: + num_transactions: 10 + channels: [11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26] + tx_nodes: *nodes + tx_len: 100 + tx_interval_ms: 10 + tx_num_per_transaction: 100 + tx_fill_byte: 0x5a + +logging: + version: 1 + formatters: + default: + format: '%(asctime)s: [%(levelname)s] %(message)s' + handlers: + file: + class: logging.handlers.RotatingFileHandler + formatter: default + filename: mercator.log + maxBytes: 1048576 # 1MB + backupCount: 2 + root: + level: INFO + handlers: [file] From ef1216a97f8b4ef8e1f43a02f1ceff5ec82c1b3e Mon Sep 17 00:00:00 2001 From: Yasuyuki Tanaka Date: Tue, 13 Aug 2019 16:11:30 +0200 Subject: [PATCH 50/50] Comment out "iotlabclient" in requirements.txt for now See https://github.com/iot-lab/iot-lab-client/issues/2 --- requirements.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index cb82d7541d..a5e1c2ab13 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,7 +2,8 @@ colored cryptography==2.4.2 halo iotlabcli -iotlabclient +## iotlabclient is not available via pip right now; needs to be installed manually +#iotlabclient matplotlib netaddr networkx