diff --git a/.github/workflows/firebase-hosting-pull-request.yml b/.github/workflows/firebase-hosting-pull-request.yml
deleted file mode 100644
index 5fca6e2d..00000000
--- a/.github/workflows/firebase-hosting-pull-request.yml
+++ /dev/null
@@ -1,37 +0,0 @@
-# This file was auto-generated by the Firebase CLI
-# https://github.com/firebase/firebase-tools
-
-name: Deploy to Firebase Hosting on PR
-'on': pull_request
-jobs:
- build_and_preview:
- if: '${{ github.event.pull_request.head.repo.full_name == github.repository }}'
- runs-on: ubuntu-latest
- permissions:
- contents: read
- pull-requests: write
- steps:
- - uses: actions/checkout@v3
- - uses: actions/setup-node@v3
- with:
- node-version: "18"
- - name: Install Dependencies
- working-directory: ./app/WhereIsThePower
- run: npm install --frozen-lock
- - name: Update env
- uses: cschleiden/replace-tokens@v1.2
- with:
- tokenPrefix: '{'
- tokenSuffix: '}'
- files: ./app/WhereIsThePower/src/environments/environment.prod.ts
- env:
- MapboxApiKey: ${{ secrets.TEST_SECRET }}
- - name: Build app
- working-directory: ./app/WhereIsThePower
- run: npm run build
- - uses: FirebaseExtended/action-hosting-deploy@v0
- with:
- working-directory: ./app/WhereIsThePower
- repoToken: '${{ secrets.GITHUB_TOKEN }}'
- firebaseServiceAccount: '${{ secrets.FIREBASE_SERVICE_ACCOUNT_WHEREISTHEPOWER_33A66 }}'
- projectId: whereisthepower-33a66
diff --git a/.github/workflows/firebase_dev.yml b/.github/workflows/firebase_dev.yml
new file mode 100644
index 00000000..76328a0f
--- /dev/null
+++ b/.github/workflows/firebase_dev.yml
@@ -0,0 +1,42 @@
+name: Build and Deploy app to DEV site
+'on':
+ push:
+ branches:
+ - dev
+
+jobs:
+ build_and_deploy:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+
+ - uses: actions/setup-node@v3
+ with:
+ node-version: "18"
+
+ - name: Install Dependencies
+ working-directory: ./app/WhereIsThePower
+ run: npm install --frozen-lock
+
+ - name: Inject Developer tags
+ run: |
+ sed -i 's||DEVELOPER SITE|g' app/WhereIsThePower/src/app/app.component.html
+ sed -i 's|
Where Is The Power|WITP-DEV|g' app/WhereIsThePower/src/index.html
+ sed -i 's|href="assets/icon/favicon.ico"|href="assets/Ramp.svg"|g' app/WhereIsThePower/src/index.html
+
+ - name: update Prod ENV file
+ run: |
+ sed -i 's/HelloAPIKey/${{ secrets.MAPBOX_API_KEY }}/g' app/WhereIsThePower/src/environments/environment.prod.ts
+
+ - name: Build app
+ working-directory: ./app/WhereIsThePower
+ run: npm run build
+
+ - uses: FirebaseExtended/action-hosting-deploy@v0
+ with:
+ repoToken: '${{ secrets.GITHUB_TOKEN }}'
+ firebaseServiceAccount: '${{ secrets.FIREBASE_SERVICE_ACCOUNT_WHEREISTHEPOWER_33A66 }}'
+ channelId: live
+ projectId: whereisthepower-33a66
+ target: dev
+ entrypoint: ./app/WhereIsThePower
\ No newline at end of file
diff --git a/.github/workflows/firebase_prod.yml b/.github/workflows/firebase_prod.yml
new file mode 100644
index 00000000..e5f2af18
--- /dev/null
+++ b/.github/workflows/firebase_prod.yml
@@ -0,0 +1,39 @@
+name: Build and Deploy app to PROD site
+'on':
+ push:
+ branches:
+ - main
+
+jobs:
+ build_and_deploy:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+
+ - uses: actions/setup-node@v3
+ with:
+ node-version: "18"
+
+ - name: Install Dependencies
+ working-directory: ./app/WhereIsThePower
+ run: npm install --frozen-lock
+
+ - name: Remove consolelogs from production site
+ run: echo "if(window) { window.console.log = function() {}; }" >> app/WhereIsThePower/src/main.ts
+
+ - name: update Prod ENV file
+ run: |
+ sed -i 's/HelloAPIKey/${{ secrets.MAPBOX_API_KEY }}/g' app/WhereIsThePower/src/environments/environment.prod.ts
+
+ - name: Build app
+ working-directory: ./app/WhereIsThePower
+ run: npm run build
+
+ - uses: FirebaseExtended/action-hosting-deploy@v0
+ with:
+ repoToken: '${{ secrets.GITHUB_TOKEN }}'
+ firebaseServiceAccount: '${{ secrets.FIREBASE_SERVICE_ACCOUNT_WHEREISTHEPOWER_33A66 }}'
+ channelId: live
+ projectId: whereisthepower-33a66
+ target: prod
+ entrypoint: ./app/WhereIsThePower
\ No newline at end of file
diff --git a/api/scripts/fetchstatstest.py b/api/scripts/fetchstatstest.py
index f3085eff..351f2c6d 100644
--- a/api/scripts/fetchstatstest.py
+++ b/api/scripts/fetchstatstest.py
@@ -2,8 +2,11 @@
import json
import requests
-testing_endpoint = "http://witpa.codelog.co.za/api/fetchSuburbStats"
testing_endpoint = "http://127.0.0.1:8000/api/fetchSuburbStats"
+testing_endpoint = "https://witpa.codelog.co.za/api/fetchSuburbStats"
+schedule_endpoint = "https://witpa.codelog.co.za/api/fetchScheduleData"
+schedule_endpoint = "http://127.0.0.1:8000/api/fetchScheduleData"
+maponoff_endpoint = "http://127.0.0.1:8000/api/fetchTimeForPolygon"
def sendRequest():
body = {
"suburbId" : 17959
@@ -15,5 +18,34 @@ def sendRequest():
response = requests.post(url=testing_endpoint,data=request,headers=headers)
print(response.text)
+def sendScheduleRequest():
+ body = {
+ #"suburbId" :18231
+ "suburbId" : 18210
+ }
+ request = json.dumps(body)
+ headers = {
+ "Content-Type":"application/json"
+ }
+ response = requests.post(url=schedule_endpoint,data=request,headers=headers)
+ print(response.text)
+
+def sendTimeForPolygonRequest():
+ body = {
+ #"suburbId" :18057
+ #"suburbId" : 18231
+ "suburbId" : 18195
+ }
+ request = json.dumps(body)
+ headers = {
+ "Content-Type":"application/json"
+ }
+ response = requests.post(url=maponoff_endpoint,data=request,headers=headers)
+ print(response.text)
if (__name__ == "__main__"):
sendRequest()
+ print("=================================================================================")
+ sendScheduleRequest()
+ print("=================================================================================")
+ sendTimeForPolygonRequest()
+
diff --git a/api/scripts/mapdatatest.py b/api/scripts/mapdatatest.py
index b49e2026..7a161837 100644
--- a/api/scripts/mapdatatest.py
+++ b/api/scripts/mapdatatest.py
@@ -2,8 +2,8 @@
import json
import requests
-testing_endpoint = "https://witpa.codelog.co.za/api/fetchMapData"
testing_endpoint = "http://127.0.0.1:8000/api/fetchMapData"
+testing_endpoint = "https://witpa.codelog.co.za/api/fetchMapData"
def sendRequest():
body = {
"bottomLeft": [-90,-180],
diff --git a/api/scripts/robots.py b/api/scripts/robots.py
new file mode 100644
index 00000000..4c4b8956
--- /dev/null
+++ b/api/scripts/robots.py
@@ -0,0 +1,84 @@
+import requests
+import json
+
+def get_polygons():
+ api_url = 'https://witpa.codelog.co.za/api/fetchMapData'
+
+ # Define the request payload (body)
+ body = {
+ "bottomLeft": [-90, -180],
+ "topRight": [90, 180]
+ }
+
+ # Send a POST request to the API
+ witpaData = requests.post(api_url, json=body).json()
+
+ polygons = []
+ for feature in witpaData['result']['mapPolygons'][0]['features']:
+ poly_cords = [point for point in feature['geometry']['coordinates'][0] if len(point) == 2]
+ sub_polygon = [point for point in feature['geometry']['coordinates'][0] if len(point) > 2]
+ polygon = {
+ "id" : feature['id'],
+ "coordinates" : poly_cords,
+ "robots" : []
+ }
+ polygons.append(polygon)
+ return polygons
+
+def point_in_polygon(point, polygon):
+ x, y = point
+
+ # Check if the point is outside the bounding box of the polygon
+ if(len(polygon) == 0):
+ return False
+ min_x, min_y = min(polygon, key=lambda p: p[0])
+ max_x, max_y = max(polygon, key=lambda p: p[0])
+
+ if x < min_x or x > max_x or y < min_y or y > max_y:
+ return False
+
+ # Check if the point is inside the polygon using ray-casting algorithm
+ inside = False
+ n = len(polygon)
+ j = n - 1
+
+ for i in range(n):
+ xi, yi = polygon[i]
+ xj, yj = polygon[j]
+
+ if ((yi > y) != (yj > y)) and (x < (xj - xi) * (y - yi) / (yj - yi) + xi):
+ inside = not inside
+
+ j = i
+ return inside
+
+def get_robots():
+ robots = []
+ # Open the file in read mode
+ with open("robots.txt", 'r') as file:
+ for line in file:
+ lon,lat = line.strip().split(',')
+ robots.append([float(lon),float(lat)]) # Use strip() to remove leading/trailing whitespace
+ return robots
+
+polygons = get_polygons()
+robots = get_robots()
+
+output = {
+ "robots" : [{}]
+}
+
+for polygon in polygons:
+ data = {
+ "coordinates": [],
+ "polygon_id": polygon["id"]
+ }
+ for robot in robots:
+ if point_in_polygon(robot,polygon["coordinates"]):
+ print("yes!")
+ data["coordinates"].append(robot)
+ output["robots"].append(data)
+
+with open("robots.json", "w") as json_file:
+ json_file.write(json.dumps(output, indent=2))
+
diff --git a/api/scripts/robots.txt b/api/scripts/robots.txt
new file mode 100644
index 00000000..522a3a94
--- /dev/null
+++ b/api/scripts/robots.txt
@@ -0,0 +1,3282 @@
+28.0212656,-26.0511950
+28.0236843,-26.0606285
+28.0101950,-26.0162803
+28.1444608,-25.9280687
+28.1463651,-25.9290577
+28.1400713,-25.9257288
+28.0902675,-26.0497019
+28.0765969,-26.0028475
+28.0584454,-25.9864563
+28.0289057,-26.0280552
+28.0950174,-25.9398721
+28.0859619,-26.0415709
+28.0859878,-26.0414439
+28.0905790,-26.0430182
+28.0663829,-26.0384232
+28.0611629,-26.0372911
+28.0599603,-26.0436818
+28.0598262,-26.0436650
+28.0603231,-26.0407479
+28.0605841,-26.0394537
+28.0610224,-26.0372627
+28.0582836,-26.0373551
+28.0585733,-26.0487294
+28.1045086,-25.8914496
+28.1196440,-25.8723911
+28.0157230,-26.0426712
+28.0235031,-26.0604932
+28.0252173,-26.0672863
+28.0158680,-26.0425827
+28.0255391,-26.0393771
+28.0256795,-26.0394712
+28.0250998,-26.0444455
+28.0248346,-26.0471327
+28.0309688,-26.0475945
+28.0252459,-26.0444550
+28.0238000,-26.0525642
+28.0239362,-26.0525842
+28.0228398,-26.0570875
+28.0227757,-26.0569026
+28.0226708,-26.0576053
+28.0226127,-26.0574207
+28.0226295,-26.0577311
+28.1421389,-25.8939733
+28.1322696,-25.9216770
+28.0121043,-26.0082525
+28.0244916,-25.9176862
+28.1357986,-25.8604786
+28.1539996,-25.8411938
+28.1679285,-25.8405708
+28.1730145,-25.8398273
+28.0100340,-26.0326488
+28.0094713,-26.0266892
+28.1105939,-26.0347970
+28.1211839,-26.0093321
+28.1211270,-26.0094562
+28.1212500,-26.0095187
+28.1212991,-26.0094020
+28.1227585,-26.0063340
+28.1171724,-26.0058233
+28.1170732,-26.0057177
+28.1244224,-26.0024058
+28.1245434,-26.0024434
+28.1262992,-25.9990632
+28.1264073,-25.9991708
+28.1268797,-25.9943759
+28.1288674,-25.9948526
+28.1289839,-25.9949484
+28.1286623,-25.9959492
+28.1285406,-25.9959034
+28.1208510,-25.9910418
+28.1319209,-25.9880769
+28.1319310,-25.9882321
+28.1321602,-25.9880220
+28.1278016,-25.9805055
+28.1329662,-25.9817967
+28.1331868,-25.9818461
+28.1329316,-25.9819051
+28.1331507,-25.9819634
+28.1249950,-25.9799892
+28.1203456,-25.9787645
+28.1204328,-25.9863961
+28.1173275,-25.9825731
+28.1204469,-25.9789244
+28.1204825,-25.9788016
+28.1203137,-25.9788976
+28.1184814,-25.9784548
+28.1185134,-25.9783337
+28.1197496,-25.9736215
+28.1202602,-25.9702794
+28.1444423,-25.9281767
+28.1463648,-25.9291637
+28.1399775,-25.9258415
+28.1320770,-25.9217527
+28.1377405,-25.9283049
+28.1321226,-25.9216056
+28.1411167,-25.8806686
+28.1651600,-25.8725002
+28.2099916,-25.8629102
+28.2204317,-25.8598463
+28.2205832,-25.8597889
+28.2197370,-25.8581691
+28.2198986,-25.8581208
+28.0586785,-26.0487258
+28.0597048,-26.0485990
+28.0589177,-26.0545142
+28.0590347,-26.0545160
+28.0590801,-26.0575442
+28.0591998,-26.0575363
+28.0592518,-26.0604529
+28.0593903,-26.0604133
+28.0592805,-26.0605568
+28.0594089,-26.0605192
+28.0607285,-26.0641238
+28.0608399,-26.0640792
+28.0613303,-26.0655904
+28.0614922,-26.0655930
+28.0642269,-26.0722320
+28.0643530,-26.0721910
+28.0651697,-26.0750570
+28.0202861,-26.0474350
+28.0204207,-26.0473737
+28.0242982,-26.0637838
+28.0244677,-26.0637494
+28.0263162,-26.0756438
+28.0427172,-26.0010314
+28.0509228,-25.9906729
+27.9470320,-26.0323719
+27.9425897,-26.0219705
+28.0908290,-26.0624447
+28.0911135,-26.0622664
+28.0915388,-26.0648126
+28.0918231,-26.0650351
+28.0924031,-26.0661281
+28.0904847,-26.0564870
+28.0905495,-26.0496999
+28.0908319,-26.0430208
+28.0908416,-26.0428787
+28.0905858,-26.0428650
+28.0697344,-26.0423919
+28.0712008,-26.0479568
+28.0448306,-26.0413623
+28.0219027,-26.0600740
+28.0158012,-26.0702210
+28.0159272,-26.0703041
+28.0148646,-26.0716385
+28.0122267,-26.0752734
+28.0110128,-26.0776421
+28.0110918,-26.0777341
+28.0104538,-26.0787207
+28.0105674,-26.0787817
+28.0288639,-26.0281635
+28.0287472,-26.0281552
+28.0287939,-26.0280459
+28.0334357,-26.0298767
+28.0338414,-26.0311163
+28.0481433,-26.0363098
+28.0517090,-26.0362366
+28.2906204,-25.7797177
+28.2887899,-25.7789986
+28.2904743,-25.7836554
+28.2906280,-25.7871793
+28.2983483,-25.7913366
+28.2896682,-25.7995145
+28.2833954,-25.7882200
+28.2787606,-25.7905439
+28.2748852,-25.7882559
+28.2839627,-25.7949992
+28.2819865,-25.8066601
+28.3022431,-25.8036504
+28.3057125,-25.7962610
+28.3106974,-25.7911509
+28.2777857,-25.7815477
+28.2829355,-25.7767952
+28.2679083,-25.7646577
+28.2596292,-25.7629068
+28.2555667,-25.7623327
+28.2513904,-25.7615537
+28.2583460,-25.7674158
+28.3004037,-25.7839165
+28.3059351,-25.7858335
+28.3021878,-25.7944376
+28.3384864,-25.7810847
+28.3002438,-25.8077042
+28.2794736,-25.7665622
+28.2795726,-25.7651356
+28.2830525,-25.7675659
+28.2760084,-25.7626967
+28.2751568,-25.7564800
+28.2887277,-25.7540971
+28.3017506,-25.7619027
+28.3022288,-25.7653772
+28.2882331,-25.7683906
+28.2742091,-25.7659087
+28.2758524,-25.7660865
+28.2974316,-25.7670246
+28.3024464,-25.7668647
+28.2941259,-25.7449566
+28.3099683,-25.8022725
+28.2857235,-25.7835332
+27.9553050,-26.0436437
+27.9413028,-26.0636342
+27.9291768,-26.0511181
+28.2731733,-25.7863045
+28.2772518,-25.7841364
+28.2714180,-25.7778958
+28.2669385,-25.7846139
+28.2640249,-25.7836080
+28.2593245,-25.7830532
+28.3076806,-25.7873037
+28.2443957,-25.7597087
+28.2620729,-25.7700079
+28.0208837,-26.0258153
+28.0161736,-26.0235113
+28.1871191,-25.8410006
+28.1956466,-25.8427275
+28.1922664,-25.8458429
+28.1855817,-25.8424989
+28.2670578,-25.7746322
+28.2543261,-25.7748774
+28.2481819,-25.7608590
+28.2517443,-25.7707215
+28.2659510,-25.7743589
+28.2637992,-25.7738132
+28.2606560,-25.7729953
+28.1637700,-25.8238793
+28.1975845,-25.8327367
+28.2007057,-25.8465070
+28.1987007,-25.8395034
+28.2005517,-25.8387348
+28.2070273,-25.8424030
+28.2149427,-25.8391722
+28.2573265,-25.7721619
+28.2493781,-25.7671371
+28.2469165,-25.7634933
+28.2559361,-25.7777365
+28.0297090,-26.0641106
+28.0535794,-26.0645433
+28.0561066,-26.0670681
+28.0460474,-26.0754899
+28.2695404,-25.8166065
+28.2654166,-25.8175291
+28.1570504,-25.8259717
+28.1640434,-25.8499818
+28.1629338,-25.8622695
+28.1622726,-25.8721545
+28.1601839,-25.8921773
+28.1542178,-25.8921981
+28.2606134,-25.8214620
+28.3233101,-25.7586764
+28.3270582,-25.7683343
+28.3276302,-25.7442854
+28.3044059,-25.7500111
+28.3060657,-25.7559874
+28.3104888,-25.7393057
+28.2992641,-25.7432103
+28.3031937,-25.8133163
+28.2961269,-25.8045016
+28.2553067,-25.8083483
+28.2413730,-25.7752276
+28.2324647,-25.7709512
+28.2431969,-25.7686995
+28.2359968,-25.7670269
+28.2373301,-25.7626615
+28.2432611,-25.7580138
+28.2393835,-25.7557209
+28.2402783,-25.7532018
+28.2351754,-25.7505942
+28.2376210,-25.7504348
+28.2399967,-25.7502639
+28.2398723,-25.7487754
+28.2375093,-25.7489561
+28.2324680,-25.7478247
+28.2294019,-25.7510589
+28.2349131,-25.7476184
+28.2325676,-25.7487621
+28.2323442,-25.7463463
+28.2275864,-25.7496194
+28.2322232,-25.7448997
+28.2346850,-25.7447285
+28.2348155,-25.7461749
+28.2371770,-25.7460354
+28.2371216,-25.7445576
+28.2396738,-25.7458606
+28.2413529,-25.7457392
+28.1802833,-25.8481260
+28.1790062,-25.8513405
+28.2814254,-25.7929233
+28.2327631,-25.7661594
+28.2306066,-25.7715897
+28.2297362,-25.7653762
+28.2273746,-25.7646213
+28.2260110,-25.7771526
+28.2142428,-25.7711870
+28.2102748,-25.7712325
+28.2207164,-25.7645529
+28.2214605,-25.7558952
+28.2197068,-25.7608138
+28.2133801,-25.7597349
+28.2070160,-25.7586628
+28.2069302,-25.7588819
+28.2055860,-25.7580280
+28.2027627,-25.7530521
+28.2035058,-25.7516362
+28.2049392,-25.7522796
+28.2062253,-25.7487549
+28.2092676,-25.7491225
+28.2022281,-25.7513795
+28.1981113,-25.7514090
+28.1955297,-25.7474220
+28.1956362,-25.7488843
+28.1957457,-25.7503781
+28.1980706,-25.7487125
+28.1979262,-25.7472564
+28.1992680,-25.7486105
+28.2002158,-25.7471000
+28.2039548,-25.7468263
+28.2010142,-25.7484255
+28.2060520,-25.7466782
+28.2061742,-25.7481425
+28.2041139,-25.7483019
+28.2041410,-25.7486043
+28.2091682,-25.7479469
+28.2123003,-25.7477347
+28.2124800,-25.7494736
+28.2093477,-25.7541570
+28.2090433,-25.7464698
+28.2066946,-25.7558988
+28.2051947,-25.7552592
+28.2026251,-25.7567858
+28.2011549,-25.7561682
+28.1982392,-25.7549337
+28.1960331,-25.7571393
+28.2041538,-25.7501382
+28.2121734,-25.7462616
+28.2040958,-25.7574119
+28.2081421,-25.7565161
+28.1937698,-25.7564682
+28.1913672,-25.7565655
+28.1907168,-25.7580146
+28.1986937,-25.7622977
+28.2035556,-25.7585304
+28.2001868,-25.7580897
+28.2018607,-25.7583262
+28.2052380,-25.7587403
+28.2137749,-25.7571779
+28.2178028,-25.7500639
+28.2422305,-25.8157658
+28.2352421,-25.8141047
+28.2336536,-25.8143063
+28.2721498,-25.8195770
+28.2778812,-25.8145752
+28.2784250,-25.8112197
+28.2958986,-25.7442338
+28.2927070,-25.7453470
+28.2764851,-25.7399870
+28.2678068,-25.7382103
+28.2751563,-25.7348641
+28.2746740,-25.7476683
+28.2747286,-25.7536953
+28.3044462,-25.7523952
+28.3046773,-25.7537902
+28.2448478,-25.7395850
+28.2418937,-25.7427071
+28.2420230,-25.7442005
+28.2395679,-25.7443826
+28.2394246,-25.7428802
+28.2369985,-25.7430413
+28.2321054,-25.7433742
+28.2270929,-25.7437159
+28.2272194,-25.7452289
+28.2273424,-25.7467004
+28.2221995,-25.7440602
+28.2223095,-25.7455633
+28.2224426,-25.7470397
+28.2174438,-25.7459386
+28.2175669,-25.7473847
+28.2147543,-25.7475820
+28.2146408,-25.7460973
+28.2173121,-25.7444008
+28.2292748,-25.7435709
+28.2120491,-25.7447541
+28.2083644,-25.7435582
+28.2088859,-25.7449859
+28.2059296,-25.7452126
+28.2058064,-25.7437366
+28.2037229,-25.7438824
+28.2038284,-25.7453533
+28.2003018,-25.7456043
+28.2001414,-25.7441356
+28.1978092,-25.7457981
+28.1976883,-25.7443066
+28.1975684,-25.7428198
+28.1993716,-25.7426993
+28.1990772,-25.7417740
+28.1974545,-25.7413883
+28.2035887,-25.7424103
+28.2055623,-25.7408108
+28.2034784,-25.7409243
+28.1951659,-25.7399122
+28.1949262,-25.7400496
+28.1924418,-25.7402275
+28.1950275,-25.7415216
+28.1951403,-25.7429948
+28.1952787,-25.7444760
+28.1954035,-25.7459648
+28.1928418,-25.7446555
+28.1927145,-25.7431681
+28.1902561,-25.7433436
+28.1925630,-25.7417133
+28.1901273,-25.7418497
+28.1900183,-25.7403918
+28.1923706,-25.7393546
+28.1875022,-25.7392092
+28.1877641,-25.7435026
+28.1904248,-25.7448294
+28.1905316,-25.7463037
+28.1930830,-25.7475982
+28.1932113,-25.7490547
+28.1888586,-25.7464610
+28.1881115,-25.7471014
+28.1873015,-25.7464635
+28.1883254,-25.7493885
+28.1858840,-25.7495671
+28.1857622,-25.7480860
+28.1856327,-25.7466395
+28.1855093,-25.7451573
+28.1854023,-25.7436704
+28.1852405,-25.7422015
+28.1851003,-25.7407386
+28.1825666,-25.7395535
+28.1826936,-25.7409169
+28.1828154,-25.7423678
+28.1829424,-25.7438477
+28.1830710,-25.7453170
+28.1832027,-25.7468024
+28.1833201,-25.7482784
+28.1834550,-25.7497406
+28.1809827,-25.7499216
+28.1808536,-25.7484253
+28.1807312,-25.7469569
+28.1806071,-25.7454672
+28.1805224,-25.7440095
+28.1803869,-25.7425477
+28.1802687,-25.7410821
+28.1801539,-25.7397296
+28.1934467,-25.7519861
+28.1859511,-25.7504370
+28.1860099,-25.7510118
+28.1835570,-25.7511817
+28.1835197,-25.7506031
+28.1810485,-25.7507648
+28.1811101,-25.7513504
+28.1812479,-25.7528182
+28.1836898,-25.7526691
+28.1861096,-25.7524811
+28.1862116,-25.7539751
+28.1863233,-25.7554397
+28.1889675,-25.7567215
+28.1864602,-25.7568845
+28.1822471,-25.7550263
+28.1813938,-25.7549080
+28.1897421,-25.7566711
+28.1986092,-25.7742977
+28.1986166,-25.7730157
+28.1995714,-25.7733074
+28.1993937,-25.7739179
+28.1933716,-25.7814708
+28.2244045,-25.8001389
+28.2267811,-25.8037583
+28.2269598,-25.8036614
+28.2240241,-25.8143531
+28.2562589,-25.8206143
+28.2578640,-25.8086903
+28.2596871,-25.8095598
+28.2556149,-25.8278150
+28.2584064,-25.7278284
+28.2586847,-25.7322550
+28.2460033,-25.7312055
+28.2579408,-25.7208263
+28.2362844,-25.7220005
+28.2273676,-25.7220711
+28.2184029,-25.7221626
+28.2152007,-25.7230184
+28.2150076,-25.7312529
+28.2150961,-25.7327292
+28.2044685,-25.7204954
+28.2028762,-25.7207115
+28.2050994,-25.7247356
+28.2035822,-25.7250106
+28.2054432,-25.7268483
+28.2039079,-25.7270441
+28.2043625,-25.7302691
+28.1877661,-25.7247839
+28.1884958,-25.7273288
+28.1887156,-25.7285895
+28.1845836,-25.7126432
+28.1860210,-25.7127700
+28.1849235,-25.7098185
+28.1863605,-25.7099599
+28.1866110,-25.7076913
+28.2006933,-25.7073762
+28.2013784,-25.7072846
+28.2009808,-25.7091128
+28.2018470,-25.7143754
+28.2034195,-25.7141299
+28.2025338,-25.7185948
+28.2041136,-25.7183832
+28.2071480,-25.7179772
+28.2110129,-25.7131391
+28.2101369,-25.7175636
+28.2101553,-25.7197484
+28.2184599,-25.7186413
+28.2181767,-25.7165015
+28.2209616,-25.7161526
+28.2248888,-25.7114497
+28.2272734,-25.7115998
+28.2273263,-25.7185821
+28.2188713,-25.7186304
+28.2362486,-25.7185059
+28.2361937,-25.7115275
+28.2576570,-25.7165561
+28.2532519,-25.7141143
+28.2648501,-25.7113411
+28.2668493,-25.7114296
+28.2692568,-25.7113826
+28.2761574,-25.7113748
+28.2832108,-25.7126290
+28.2883224,-25.7137725
+28.2927414,-25.7150254
+28.3103672,-25.7224530
+28.3140825,-25.7275897
+28.3180264,-25.7310281
+28.3161514,-25.7325220
+28.3010683,-25.7330925
+28.2933922,-25.7328597
+28.2960358,-25.7329322
+28.2992277,-25.7330241
+28.2723919,-25.7067456
+28.2261618,-25.7046307
+28.2310747,-25.7042151
+28.2361273,-25.7045492
+28.1993036,-25.6989198
+28.1874522,-25.7008177
+28.1996492,-25.7010388
+28.2000690,-25.7031257
+28.2004341,-25.7052607
+28.1869141,-25.7053704
+28.1859968,-25.7006696
+28.1851783,-25.7075316
+28.1720842,-25.7061910
+28.1826315,-25.6976097
+28.1866466,-25.6975198
+28.1722342,-25.7083438
+28.1587054,-25.7006225
+28.1376702,-25.7056984
+28.1376993,-25.7055256
+28.1573244,-25.7122757
+28.1551006,-25.7160609
+28.1528961,-25.7196149
+28.2725644,-25.7787431
+28.2733287,-25.8206901
+28.2965690,-25.8298009
+28.3096429,-25.8234921
+28.2862001,-25.8365914
+28.2806258,-25.8405767
+28.2739766,-25.8428254
+28.2393471,-25.8389583
+28.3222215,-25.8024944
+28.3226537,-25.7949297
+28.3374095,-25.7745332
+28.3441948,-25.7785414
+28.3494875,-25.7755181
+28.3535537,-25.7714524
+28.3570968,-25.7665275
+28.3686874,-25.7512202
+28.2465664,-25.7343250
+28.3065898,-25.7332280
+28.3255248,-25.8413810
+28.3183882,-25.8302573
+28.3171021,-25.7981808
+28.2583708,-26.0332884
+28.2820566,-25.6845663
+28.2792478,-25.6840193
+28.2714226,-25.6824092
+28.2101115,-25.8135224
+28.2102789,-25.8135342
+28.3559875,-25.7468206
+28.3490267,-25.7444400
+28.3251095,-25.7256422
+28.2922173,-25.6855723
+28.2993912,-25.8583030
+28.2523674,-25.8356653
+27.9555806,-26.0608995
+28.2755087,-25.6831644
+28.2539566,-25.6791008
+28.2426858,-25.6787124
+28.2232235,-25.6815164
+28.2153904,-25.6852526
+28.2164015,-25.6804228
+28.2021083,-25.6780069
+28.1995718,-25.6836171
+28.1934036,-25.6833191
+28.1921366,-25.6855763
+28.1865891,-25.6881981
+28.1948571,-25.6767267
+28.2440683,-25.6602193
+28.2443573,-25.6548591
+28.1912303,-25.6533721
+28.1655060,-25.6655687
+28.1717515,-25.6660071
+28.1748918,-25.6662334
+28.1795912,-25.6665670
+28.1725893,-25.6745800
+28.1650372,-25.6742049
+28.1651094,-25.6769206
+28.1707328,-25.6773499
+28.1723370,-25.6774593
+28.1738551,-25.6775675
+28.1785864,-25.6778442
+28.1563041,-25.6790518
+28.1491355,-25.6776205
+28.1433746,-25.6774978
+28.1336709,-25.6774256
+28.1564892,-25.6649052
+28.1436618,-25.6551691
+28.1292111,-25.6352030
+28.1848002,-25.8566057
+28.1826226,-25.8571249
+28.1801916,-25.8588509
+28.1799577,-25.8589168
+28.1023441,-25.6511656
+28.1014314,-25.6627889
+28.1008304,-25.6716733
+28.1078962,-25.6669503
+28.1078010,-25.6644976
+28.1081143,-25.6695060
+28.1086778,-25.6748103
+28.1050906,-25.7151518
+28.1041425,-25.7142854
+28.2368676,-25.8251598
+28.2050586,-25.8169263
+28.1993829,-25.8186100
+28.1945973,-25.8209045
+28.1470255,-25.8312717
+28.1354991,-25.8336432
+28.1273421,-25.8362652
+28.1127660,-25.8347478
+28.1083200,-25.8571303
+28.1081254,-25.8770265
+28.1062810,-25.8823009
+28.1065310,-25.8822522
+28.1065052,-25.8823530
+28.1062477,-25.8824113
+28.2268126,-25.7337479
+28.2151464,-25.7342526
+28.2123374,-25.7343762
+28.2047763,-25.7352244
+28.2030569,-25.7361087
+28.2042757,-25.7331712
+28.2054474,-25.7394347
+28.2033557,-25.7398515
+28.1731252,-25.7430568
+28.1720738,-25.7443575
+28.1732680,-25.7445326
+28.1669406,-25.7431591
+28.1763377,-25.7472486
+28.1783133,-25.7471106
+28.1786096,-25.7509295
+28.1786612,-25.7515198
+28.1748284,-25.7529295
+28.1741048,-25.7521779
+28.1728852,-25.7538742
+28.1653720,-25.7543855
+28.1591819,-25.8627097
+28.1410318,-25.8566080
+28.0098227,-26.0326845
+28.0092427,-26.0267339
+28.0099559,-26.0162817
+28.1932964,-25.6688664
+28.1556375,-25.8214936
+28.1568600,-25.8260492
+28.1701429,-25.7790529
+28.1702304,-25.7791202
+28.1703595,-25.7789889
+28.1671024,-25.7765306
+28.1670094,-25.7766871
+28.1669824,-25.7764586
+28.1593413,-25.9104645
+28.1622625,-25.9103026
+28.1514282,-25.9256210
+28.1513077,-25.9255511
+28.1548111,-25.9284407
+28.1438186,-25.9430843
+28.1404656,-25.9563545
+28.1346753,-25.9955939
+28.1369714,-26.0004690
+28.1370071,-26.0006157
+28.1365008,-26.0054738
+28.1325008,-26.0101409
+28.1259196,-26.0131000
+28.2026737,-25.8155608
+28.2025188,-25.8156046
+28.2025450,-25.8156795
+28.2027027,-25.8156378
+28.1829464,-25.8386347
+28.2044387,-25.8203646
+28.2042782,-25.8204157
+28.2072743,-25.8288747
+28.2071634,-25.8289159
+28.2050053,-25.8297949
+28.2136646,-25.8428017
+28.2138609,-25.8427452
+28.2188385,-25.8555601
+28.2187059,-25.8556117
+28.1618488,-25.8422599
+28.2050129,-25.8568358
+28.2157800,-25.8624860
+28.2213319,-25.8619977
+28.2234825,-25.8773833
+28.2037239,-25.8809078
+28.1988634,-25.8759253
+28.1990579,-25.8757983
+28.1955462,-25.8722125
+28.1931206,-25.8684079
+28.1933093,-25.8683304
+28.1950912,-25.8674296
+28.1916235,-25.8658863
+28.1894863,-25.8643395
+28.1895495,-25.8641602
+28.1903446,-25.8626406
+28.1868759,-25.8631911
+28.1867033,-25.8633860
+28.1852130,-25.8629100
+28.1853877,-25.8627021
+28.1873062,-25.8606211
+28.1896551,-25.8602098
+28.1747491,-25.8609861
+28.1775327,-25.8595148
+28.1775688,-25.8595849
+28.1800362,-25.8590235
+28.1666134,-25.8623082
+28.2353205,-25.8689287
+28.2497436,-25.8638818
+28.2554034,-25.8655641
+28.2593881,-25.8673977
+28.2588261,-25.8619087
+28.1843300,-25.8925600
+28.1601686,-25.8923203
+28.1542401,-25.8923684
+28.1313823,-25.9323003
+28.1229812,-25.9527011
+28.1228313,-25.9535371
+28.0952399,-25.9399517
+28.0951722,-25.9401229
+28.0949552,-25.9400502
+28.0785187,-25.9751514
+28.1057280,-25.9754723
+28.1037328,-25.9716442
+28.1071043,-25.9779026
+28.1225951,-25.9593970
+28.1027481,-25.9698415
+28.1117275,-25.9864955
+28.1047652,-25.9953068
+28.1039918,-26.0006737
+28.1031908,-26.0095932
+28.0927375,-26.0050009
+28.0816679,-25.9999184
+28.0967754,-25.8097077
+28.1090289,-25.7991579
+28.1093996,-25.7940845
+28.1119370,-25.7889726
+28.1328647,-25.7616317
+28.1330421,-25.7615931
+28.1330236,-25.7617480
+28.1328418,-25.7618012
+28.1402293,-25.7589887
+28.1430677,-25.7543494
+28.1432607,-25.7543399
+28.1478505,-25.7556023
+28.1461060,-25.7493304
+28.1459717,-25.7493400
+28.1401195,-25.7590300
+28.1400591,-25.7589038
+28.1424938,-25.7629617
+28.1423798,-25.7630001
+28.1503482,-25.7554110
+28.1334883,-25.7541352
+28.1329780,-25.7502038
+28.1347578,-25.7437722
+28.1356647,-25.7410249
+28.1348437,-25.7242227
+28.1928126,-25.8179883
+28.2009994,-25.7485264
+28.1622799,-25.7248951
+28.1628703,-25.7545541
+28.1623231,-25.7482304
+28.1572309,-25.7485760
+28.1544317,-25.7439790
+28.1501740,-25.7490826
+28.1729422,-25.7415926
+28.1718880,-25.7416417
+28.1156979,-25.6752827
+28.1176276,-25.6749454
+28.1350590,-25.7228622
+28.1352948,-25.7214722
+28.1359451,-25.7173031
+28.1509307,-25.7188727
+28.1370239,-25.7099658
+28.1363280,-25.7140937
+28.1418783,-25.7496177
+28.1203263,-25.7510576
+28.1553606,-25.7550686
+28.1548468,-25.7487376
+28.1523240,-25.7489027
+27.9601407,-26.0758653
+27.9647501,-26.0721466
+27.9690553,-26.0631169
+27.9621175,-26.0627200
+27.9594668,-26.0651276
+27.9513898,-26.0785178
+27.9586720,-26.0781565
+27.9631475,-26.0778324
+27.9445218,-26.0646083
+27.9536627,-26.0617770
+27.9451945,-26.0706332
+27.9515280,-26.0621958
+27.9490332,-26.0627304
+27.9536283,-26.0616869
+27.9555121,-26.0607880
+27.9445174,-26.0644720
+27.9490196,-26.0626062
+27.9578634,-26.0587273
+27.9636664,-26.0554137
+27.9704357,-26.0555998
+27.9496419,-26.0387861
+27.9556551,-26.0541681
+28.2288960,-25.7336644
+28.2423687,-25.7329846
+28.2121169,-25.7343877
+28.0022250,-26.0188803
+28.0041495,-26.0174330
+28.0032344,-26.0214665
+27.9958907,-26.0238083
+28.0053051,-26.0333762
+27.9965386,-26.0434873
+27.9948772,-26.0396174
+27.9824386,-26.0606098
+27.9740636,-26.0537971
+27.9471199,-26.0544070
+28.2157653,-25.8623501
+28.2108256,-25.8640008
+28.1595281,-25.8972623
+28.1622653,-25.8851477
+28.1823651,-25.8666090
+28.1794700,-25.8690416
+28.2233161,-25.8756614
+27.9906857,-26.0253149
+27.9701131,-26.0578715
+27.9893515,-26.0412159
+27.9754173,-26.0293552
+27.9843145,-26.0270426
+27.9637229,-26.0343180
+27.9588379,-26.0397650
+27.9554013,-26.0608738
+27.9554707,-26.0609849
+27.9552253,-26.0437495
+27.9495654,-26.0388879
+27.9468818,-26.0323994
+28.1592577,-25.8314734
+28.0038216,-26.0081611
+27.9981293,-26.0142548
+27.9993458,-26.0122106
+27.9697037,-26.0460829
+28.0924688,-26.0659179
+28.0907090,-26.0684581
+28.1632494,-25.8418667
+28.1054071,-25.8864710
+27.9689638,-26.0781281
+27.9370502,-26.0716901
+27.9372383,-26.0718502
+27.9415232,-26.0637215
+28.1248621,-25.6750633
+28.1308566,-25.6504003
+28.1537617,-25.7396175
+28.0143334,-26.0561558
+28.0056994,-26.0525889
+28.0084166,-26.0534834
+27.9952181,-26.0670809
+28.0704926,-26.0262503
+28.3133899,-25.8260429
+28.3135279,-25.8214585
+28.4191109,-25.7091181
+28.4195970,-25.6981481
+28.4136932,-25.7097334
+28.3116261,-26.0972985
+28.3022118,-26.0907606
+28.2937700,-26.0848910
+28.3486574,-25.7819514
+28.1897364,-25.6864163
+28.0074450,-26.0670970
+28.0017981,-26.0691290
+28.0969575,-26.0880792
+28.0107600,-26.0215594
+28.0090573,-26.0223754
+28.0087951,-26.0222454
+28.0140714,-26.0158681
+28.0370213,-26.0511364
+28.0221309,-26.0107099
+28.0312755,-26.0160958
+28.0209424,-26.0255987
+28.0152443,-26.0319024
+28.0127582,-26.0323425
+28.0609715,-26.0332592
+28.0611382,-26.0332124
+28.0621988,-26.0265918
+28.0623436,-26.0266306
+28.0616676,-26.0280449
+28.0618342,-26.0281238
+28.0637554,-26.0326704
+28.0656481,-26.0322935
+28.0805078,-26.0318972
+28.0802198,-26.0339102
+28.0651955,-26.0351934
+28.0807989,-26.0301638
+28.2445276,-25.9736172
+28.1530653,-25.9891843
+28.1546854,-25.9466161
+28.1546264,-25.9467741
+27.9437571,-25.7841484
+28.0091218,-26.0816990
+28.0092233,-26.0817467
+27.9769422,-26.0799850
+27.9684259,-26.0687301
+27.9749485,-26.0749926
+27.9747806,-26.0750463
+28.2765448,-25.7861791
+27.9015090,-26.0604994
+27.9053068,-26.0642981
+28.2946875,-25.7670137
+28.2326668,-25.9525267
+28.2020604,-25.9574776
+28.2075530,-25.9600399
+28.2120290,-25.9630792
+28.2163057,-25.9660179
+28.2248560,-25.9719287
+28.2019992,-25.9576092
+28.2074622,-25.9601657
+28.2247581,-25.9720698
+28.2328172,-25.9758778
+28.2445523,-25.9737603
+28.0780976,-26.0725387
+28.0754846,-26.0669119
+28.0755953,-26.0668616
+28.1896274,-25.8580809
+28.1880517,-25.8504259
+28.2022469,-25.8535134
+28.0106411,-26.0215346
+28.0107654,-26.0213097
+28.0090575,-26.0222693
+28.0094854,-26.0267962
+28.0092557,-26.0268118
+28.1310664,-25.9971626
+28.1309282,-25.9972250
+28.1308137,-25.9971642
+28.1309645,-25.9970931
+28.1346081,-25.9954688
+28.1286921,-25.9958749
+28.0598141,-26.0737350
+28.1072353,-25.9965435
+28.1137281,-26.0020175
+28.0799640,-26.0085337
+27.9004931,-26.1797957
+28.0099872,-26.0161529
+28.0102179,-26.0161426
+28.0140749,-26.0157865
+28.0041244,-26.0173231
+28.0061611,-26.0168217
+28.0021630,-26.0187750
+28.0163300,-26.0235893
+28.0161768,-26.0232312
+28.0162511,-26.0221901
+28.3158760,-25.7658261
+28.1238875,-26.0113236
+28.1970764,-25.7547289
+28.1908157,-25.8589504
+28.2037183,-26.0784815
+28.2084442,-26.0709022
+28.2035618,-26.0785253
+28.2084676,-26.0707426
+28.2083729,-26.0707917
+28.1377083,-26.0326930
+28.1580284,-26.0503720
+28.1772608,-26.0599481
+28.1484552,-26.0431047
+28.1292921,-26.0253886
+28.1374300,-26.0329340
+28.1577752,-26.0506004
+28.1772414,-26.0602008
+28.1837787,-26.0606322
+28.1868922,-26.0742192
+28.1856441,-26.0692302
+28.1871540,-26.0741549
+28.1860042,-26.0691928
+28.1830974,-26.0553209
+28.1853401,-26.0499037
+28.1856167,-26.0499933
+28.1833192,-26.0554136
+28.2209171,-26.0651658
+28.2243722,-26.0622973
+28.2579774,-26.0403228
+28.2580118,-26.0401454
+28.2164516,-25.7717842
+28.1870594,-25.7494811
+28.2204706,-25.7566708
+28.0902573,-26.0566365
+28.0890944,-26.0567117
+28.0845557,-26.0582399
+28.0844677,-26.0581987
+28.0890843,-26.0566048
+28.0902405,-26.0565033
+28.3096346,-25.7894797
+28.0626581,-26.0376046
+28.1651094,-25.9104577
+28.1847703,-25.8390692
+28.1885476,-25.7828182
+28.1887487,-25.7829535
+28.2288541,-26.0509720
+28.2317678,-26.0560895
+28.2318639,-26.0560043
+28.2396289,-26.0494298
+28.2251034,-26.0696458
+28.2241503,-26.0758062
+28.0612765,-26.0333540
+28.0803929,-26.0338974
+28.2567271,-26.0429972
+27.9290489,-26.0212188
+28.0851524,-26.0230312
+28.2383659,-26.0636231
+28.0806744,-26.0318810
+28.0852557,-26.0231541
+28.0804023,-26.0341336
+28.0802192,-26.0341343
+28.0617444,-26.0283492
+28.0615833,-26.0282864
+28.2286010,-26.0691567
+27.9554836,-26.0541455
+28.1047775,-25.8914714
+28.1894143,-25.7448962
+28.0779359,-26.0725833
+28.0982180,-25.9491931
+28.2003399,-25.7470921
+28.2004081,-25.7455979
+28.2002500,-25.7441290
+28.1995375,-25.7485676
+28.1984899,-25.7500774
+28.1961435,-25.7571853
+28.2374742,-25.6794063
+28.2922929,-25.6857595
+28.2539366,-25.6793008
+28.2116043,-25.6797845
+28.2426750,-25.6789272
+28.2020742,-25.6781080
+28.2232081,-25.6816227
+28.2163726,-25.6805310
+28.1948516,-25.6768176
+28.1795854,-25.6666332
+28.1836110,-25.6820498
+28.1836865,-25.6821526
+28.1858693,-25.6961259
+28.1860147,-25.6963735
+28.1851452,-25.7153524
+28.1863358,-25.6960076
+28.1861615,-25.6965194
+28.1826329,-25.6978288
+28.1722509,-25.7061992
+28.1705609,-25.7215288
+28.1707008,-25.7214721
+28.1727591,-25.7402569
+28.1717991,-25.7403253
+28.1703677,-25.7276166
+28.1865149,-25.7099750
+28.1868802,-25.7077118
+28.1870720,-25.7053887
+28.1862047,-25.7127871
+28.1876232,-25.7008383
+28.2611420,-25.7111709
+28.2611702,-25.7112749
+28.2668480,-25.7116001
+28.2692568,-25.7115061
+28.2648413,-25.7115032
+28.2877986,-25.6990455
+28.2693688,-25.7113730
+28.2693744,-25.7114927
+28.2923175,-25.6855522
+28.2923862,-25.6857460
+28.2626043,-25.8167858
+28.2608374,-25.8214644
+28.3170063,-25.7980967
+28.2085334,-26.0708613
+28.2100075,-26.0762261
+28.2467430,-26.0703144
+28.1079336,-25.9025446
+28.1016622,-25.9067580
+28.1762993,-25.8709780
+28.0076059,-26.0168546
+27.9935854,-26.0400234
+28.2200716,-26.0642562
+28.2289486,-26.0509235
+28.1737945,-25.7401830
+28.1766960,-25.7399762
+28.2032097,-25.7382551
+28.0699249,-26.0394133
+28.1884933,-25.8593323
+28.3934245,-25.7030112
+28.3820191,-25.7099685
+28.3788558,-25.7117023
+28.3747485,-25.7142148
+28.3551235,-25.7182286
+28.3449492,-25.7183742
+28.1789288,-26.0040731
+28.2643509,-26.0319905
+28.2641231,-26.0318611
+28.2642485,-26.0318061
+27.9423174,-26.0220441
+27.9906386,-26.0251936
+28.0993851,-25.9542867
+27.9210146,-26.0749098
+28.1930796,-25.8682977
+28.1932618,-25.8682310
+27.9317167,-26.0818730
+27.9210655,-26.0747357
+27.9142226,-26.0716491
+28.0985051,-25.9233503
+28.0996209,-25.9180069
+28.1723900,-25.7083678
+28.1360933,-25.7173215
+28.1364578,-25.7141120
+28.1371397,-25.7099826
+28.1378640,-25.7057371
+28.1378916,-25.7055546
+28.1349654,-25.7242438
+28.1351900,-25.7228600
+28.1354173,-25.7214883
+27.9472634,-26.0544945
+27.9441594,-26.0588584
+27.9553794,-26.0437182
+27.9413521,-26.0635428
+27.9415709,-26.0636259
+28.2107176,-25.8638511
+28.1595180,-25.9103427
+28.1586839,-25.9037733
+28.1620916,-25.9084406
+28.1621604,-25.9103048
+28.1622063,-25.9084370
+28.0961484,-25.5787784
+28.1026970,-25.5796370
+28.1052770,-25.7151581
+28.2320846,-25.9615831
+27.9733317,-26.0715187
+28.2111098,-26.0810943
+28.2508836,-26.0394458
+28.2227881,-26.0011173
+28.2226820,-26.0013288
+28.2066371,-26.0155500
+28.2280733,-26.0012251
+28.2196942,-26.0063066
+28.2196015,-26.0062598
+28.2180846,-26.0093488
+28.2178807,-26.0092425
+28.2177942,-26.0111877
+28.2176167,-26.0112033
+28.2204584,-26.0049590
+28.2203671,-26.0049165
+28.2308328,-26.0169539
+28.2417634,-25.9981910
+28.2177997,-26.0163893
+28.2180200,-26.0165332
+28.2117775,-26.0167414
+28.2119371,-26.0166027
+28.2205593,-26.0047705
+28.2204752,-26.0047303
+28.2046873,-26.0159049
+28.2046169,-26.0156900
+28.2303706,-25.9612793
+28.2107725,-26.0036226
+28.2191151,-25.9972096
+28.2272297,-25.9953042
+28.1998014,-26.0204190
+28.1999981,-26.0205500
+28.1683066,-26.0230520
+28.1752526,-26.0447067
+28.1742896,-26.0334389
+28.2026988,-26.0169679
+28.2028728,-26.0170821
+28.1984078,-26.0221665
+28.1985658,-26.0222665
+28.2162161,-25.9661603
+28.2260000,-26.0003249
+28.2299692,-25.9958384
+28.2283120,-26.0012685
+28.2360822,-25.9970802
+28.2290647,-26.0012049
+28.2318626,-26.0005658
+28.0806395,-26.0380819
+28.0861301,-26.0414690
+28.2076965,-26.0693560
+28.1750701,-26.0388180
+28.1866043,-25.9969258
+28.2418638,-26.0051356
+28.2428629,-25.9977137
+28.2446674,-25.9906697
+27.9650317,-26.0543841
+28.0804901,-26.0379684
+28.0712327,-26.0524840
+28.1595222,-25.9104651
+28.2051277,-25.8170934
+28.1994603,-25.8187615
+28.1946768,-25.8210581
+28.1946643,-25.8208530
+28.1947433,-25.8209988
+28.2288176,-26.0683944
+28.1413183,-25.8825985
+28.1413171,-25.8824700
+28.1987535,-25.7623883
+28.2197745,-25.7340376
+28.1264572,-25.9803274
+28.1622700,-25.9104864
+28.1908719,-25.7504489
+28.1933101,-25.7504440
+28.1957250,-25.7500916
+28.1974042,-25.7502449
+28.1933211,-25.7506479
+28.1908949,-25.7507092
+28.0904999,-26.0566197
+28.2219440,-25.7559110
+28.3319863,-25.7211394
+28.0882055,-26.0760119
+28.1064655,-26.0825651
+28.1173692,-26.0814818
+28.1184338,-26.0813019
+28.2698976,-25.7373254
+28.2678615,-25.7385099
+28.1487765,-26.0428940
+28.1296823,-26.0252538
+28.1322297,-25.9218272
+28.0128602,-26.0385194
+28.0130262,-26.0384526
+28.0132351,-26.0390848
+28.0100593,-26.0327602
+27.9553058,-26.0438576
+28.2699915,-25.7374208
+28.2764944,-25.7398430
+28.2751498,-25.7349936
+28.2933851,-25.7329885
+28.2960123,-25.7330403
+28.2992229,-25.7331237
+28.3010595,-25.7331907
+28.3065875,-25.7333453
+28.3141230,-25.7343394
+28.0098242,-26.0264791
+27.9587862,-26.0781516
+28.2075912,-26.0693886
+28.2088901,-26.0716587
+28.2087791,-26.0716629
+28.2745627,-25.7799634
+28.1785677,-25.8389062
+27.9753540,-26.0763101
+27.9755015,-26.0762524
+27.9795758,-26.0993625
+28.2100911,-25.8628756
+28.2109427,-25.8639432
+28.2108286,-25.8637932
+28.1922498,-25.8751107
+28.2051202,-25.8567577
+28.1031872,-26.0098849
+28.0899436,-26.0206793
+28.2243967,-25.7736835
+28.2247315,-25.7737005
+28.2244806,-25.7735565
+28.2162996,-25.7717442
+28.2163944,-25.7719516
+28.0309345,-26.0282729
+28.2162468,-25.7719125
+28.0023627,-26.0188215
+28.0022900,-26.0187086
+27.9982382,-26.0141563
+28.2142266,-25.7713391
+28.2103031,-25.7714165
+27.9397727,-26.0166630
+28.2386993,-25.7583512
+28.2395086,-25.7557497
+28.2403772,-25.7531964
+28.2401036,-25.7502587
+28.2399993,-25.7487673
+28.0710715,-25.9832494
+28.2588649,-25.7323206
+28.2586012,-25.7278220
+28.2578719,-25.7165576
+28.2581405,-25.7207962
+28.2882473,-25.7139465
+28.1927522,-25.6786292
+28.1275202,-25.9976425
+28.1273893,-25.9975645
+28.1285700,-25.9958187
+28.2250878,-25.7560820
+28.0607654,-26.0394524
+28.0606371,-26.0391987
+28.0157775,-26.0425018
+28.0156349,-26.0425951
+28.0255594,-26.0392709
+28.0627098,-26.0307992
+28.2416316,-25.9823021
+28.2438270,-25.9868538
+28.2581903,-25.8088729
+28.2590580,-25.8093657
+28.2582874,-25.8088007
+28.2035409,-25.8810012
+28.1867425,-25.6880100
+28.1719661,-25.7427998
+28.1923546,-25.8457570
+28.1872745,-25.8409998
+28.1977430,-25.8497966
+28.2023236,-25.8534188
+28.1848473,-25.8390044
+28.1829491,-25.8385357
+28.1819205,-25.7602091
+28.1821352,-25.7601880
+28.3292580,-25.7228138
+28.3318701,-25.7210238
+28.3319923,-25.7209385
+28.2765961,-25.7648603
+28.2355586,-26.0160050
+28.1695881,-25.7269705
+28.1701825,-25.7276929
+28.1713812,-25.7379117
+28.1730158,-25.7476359
+28.1731700,-25.7475369
+28.1728243,-25.7474688
+28.1730474,-25.7474060
+28.1811548,-25.7511924
+28.1974367,-25.7503191
+28.1983935,-25.7499293
+28.1972918,-25.7501383
+28.1994722,-25.7426950
+28.1991959,-25.7417625
+28.1987426,-25.7496718
+28.1973409,-25.7546718
+28.1971440,-25.7548693
+28.1914946,-25.7580055
+28.1914135,-25.7581000
+28.1824054,-25.7623035
+28.1820663,-25.7623874
+28.1668834,-25.7766125
+28.1822275,-25.7624991
+28.1886152,-25.7830049
+28.1328621,-25.7462710
+28.1328529,-25.7463749
+28.1719627,-25.7427423
+28.1669099,-25.7430793
+28.1574157,-25.7485642
+28.1544244,-25.7438878
+28.1785498,-25.8388228
+28.1678940,-25.8405009
+28.1730264,-25.8397527
+28.1618157,-25.8421830
+28.1632161,-25.8417918
+28.1131600,-26.0821550
+28.0121261,-26.0752045
+28.0147495,-26.0715571
+28.1651585,-25.9102842
+28.1838187,-25.9135752
+28.3320884,-25.7210557
+28.3251820,-25.7257436
+28.3293521,-25.7229123
+28.1866376,-26.0742851
+28.3162463,-25.7326129
+28.3179090,-25.7309263
+28.2584443,-25.7673509
+28.2622122,-25.7699479
+28.2683124,-25.7746443
+28.2794599,-25.7667218
+28.2882549,-25.7684874
+28.3158909,-25.7660218
+28.3024938,-25.7670612
+28.2974411,-25.7672079
+28.2946480,-25.7671906
+28.1563524,-25.6788811
+28.1651362,-25.6741584
+28.1086600,-25.6745756
+28.1433615,-25.6772682
+28.1079586,-25.6645668
+28.1490718,-25.6774384
+28.4008728,-25.7235547
+28.1249146,-25.6748589
+28.1156103,-25.6750487
+28.1080723,-25.6669418
+28.1175582,-25.6747066
+28.1080920,-25.6693155
+28.1082693,-25.6694665
+28.1336433,-25.6771963
+28.1517094,-25.8679974
+28.1430440,-25.8551029
+28.1978401,-25.8498671
+28.1429415,-25.8551850
+28.2008170,-25.8466021
+28.1934580,-25.6688368
+28.1866640,-25.6974799
+28.1866841,-25.6974128
+28.1866875,-25.6973270
+28.1918394,-25.6853924
+28.1947576,-25.6767248
+28.1868343,-25.6879360
+28.1872163,-25.6887358
+28.1861469,-25.6872794
+28.1137870,-25.8964329
+28.2755219,-25.6834429
+28.2777085,-25.7816667
+28.2713232,-25.7780234
+28.2745471,-25.7801832
+28.2717478,-25.7783560
+28.2723097,-25.7787685
+28.2744513,-25.7801246
+28.2678833,-25.7647506
+28.2698889,-25.7849212
+28.2588986,-25.8090916
+28.2719948,-25.8194385
+28.2608937,-25.8213195
+28.2606590,-25.8213152
+28.1952596,-25.8674291
+28.1026853,-25.9013686
+28.1018832,-25.9067899
+28.1029245,-25.9014123
+27.9726512,-26.0700684
+27.9727603,-26.0699771
+28.2519717,-25.8646278
+28.2593740,-25.8674888
+28.2553647,-25.8657016
+28.0605358,-26.0392886
+28.1091267,-25.5269587
+27.9877716,-25.5864837
+27.9876467,-25.5863953
+28.1090563,-25.5270549
+28.3685461,-25.7514263
+28.2385728,-25.7584337
+28.0133368,-26.0388254
+28.0128555,-26.0387048
+28.1264715,-25.9801499
+28.1260866,-25.9803087
+28.1673545,-25.7478891
+28.2412575,-25.7589705
+28.3058513,-25.7859169
+28.2275394,-25.7497520
+28.2596889,-25.7628089
+28.3493909,-25.7753756
+28.3440607,-25.7784653
+28.3384549,-25.7809319
+28.3441821,-25.7783422
+28.3443249,-25.7784333
+27.9742440,-26.0732774
+27.9740555,-26.0732446
+28.2927599,-25.7454158
+28.3270024,-25.7685163
+28.1392919,-25.8732654
+28.1391616,-25.8732248
+28.2741028,-25.7660285
+28.2755468,-25.7662381
+28.1918349,-25.8661743
+28.1172583,-26.0056972
+28.1171684,-26.0056073
+28.2212896,-25.8618896
+28.2214693,-25.8619650
+28.2214334,-25.8618570
+28.2501943,-25.7153516
+27.9103500,-26.0689060
+28.4185939,-25.7034719
+28.2342717,-26.0281689
+28.4188548,-25.7034810
+28.3353398,-25.7145485
+27.8892557,-25.7307888
+28.1855717,-25.7155016
+28.1857406,-25.7155514
+28.1855415,-25.7155877
+28.0272476,-26.0316035
+28.0273770,-26.0316482
+28.3033830,-25.7846181
+27.9579515,-26.0586572
+28.1084320,-25.6710566
+28.0266509,-26.0129493
+28.1178279,-25.9802347
+28.1191585,-25.9761088
+28.1927929,-25.6785577
+28.1946017,-25.6789206
+28.0802256,-25.9756721
+28.1566211,-25.6692646
+27.9730871,-26.0541522
+28.1926884,-25.8553483
+28.1928191,-25.8554350
+28.1976635,-25.8498855
+28.1977575,-25.8499622
+28.2070656,-25.8424806
+28.2032433,-25.8440482
+28.2032040,-25.8439496
+28.2119130,-25.9632184
+28.2122999,-25.9811668
+28.1931281,-25.9846671
+27.9935310,-26.0400412
+28.1107488,-25.8992264
+28.1083745,-25.8770218
+28.1084863,-25.8699070
+28.1083493,-25.8771290
+28.1087297,-25.8698539
+28.1085721,-25.8570332
+28.1097739,-25.8419053
+28.1095590,-25.8417847
+28.1406809,-25.9087892
+28.1372490,-25.9112655
+28.1708393,-25.8922984
+28.1673450,-25.8728094
+28.1618224,-25.8776572
+28.1650325,-25.8753635
+28.1615431,-25.8778089
+28.1618153,-25.8777615
+28.1615491,-25.8777196
+28.1635480,-25.8770119
+28.1737009,-25.8725032
+28.1414525,-25.8826018
+28.1412441,-25.8806504
+28.1391842,-25.8732990
+27.9291639,-26.0511668
+28.1005733,-25.9601370
+27.9272783,-26.0574452
+28.1611834,-25.8849867
+28.1827233,-25.8572003
+28.1802624,-25.8589739
+28.1929136,-25.8553192
+28.1927960,-25.8552333
+28.1971230,-25.8591374
+28.1516699,-25.8677482
+28.0031738,-26.0212940
+28.0030571,-26.0213227
+28.0242968,-25.9175513
+28.0242324,-25.9176592
+28.1438847,-25.9429141
+27.9842845,-26.0269529
+28.0127976,-26.0324243
+28.0097284,-26.0328553
+28.0163538,-26.0221966
+28.0161022,-26.0229457
+28.0163253,-26.0233044
+28.1666023,-25.8623969
+28.1144502,-25.8762596
+28.1143782,-25.8763160
+28.0309394,-26.0281749
+28.1833882,-25.9211233
+28.0755412,-26.0670049
+28.0756485,-26.0669561
+28.0160974,-26.0426479
+28.0157849,-26.0423076
+28.0228011,-26.0574791
+28.0992523,-26.0136464
+28.2428367,-25.6787140
+28.2428192,-25.6789302
+28.0844899,-26.0583478
+28.0844038,-26.0583103
+28.1897681,-25.6865551
+28.0635060,-26.0786464
+28.0634363,-26.0786117
+28.1883017,-25.8723081
+28.1380181,-25.9651732
+28.1882028,-25.8502466
+28.2616840,-25.8261956
+28.2614787,-25.8263457
+28.1131650,-26.0112385
+27.9734763,-26.0714844
+28.1385892,-25.8700836
+28.1384587,-25.8701082
+28.1386061,-25.8701542
+28.1384741,-25.8701785
+28.2043794,-25.7303505
+28.2030727,-25.7362427
+28.2045194,-25.7302676
+28.2048564,-25.7353323
+28.2044654,-25.7331830
+28.3533760,-25.7713660
+27.9875668,-25.5864842
+27.9876763,-25.5865793
+28.2648963,-25.6811180
+28.2650167,-25.6811488
+28.2650101,-25.6813690
+28.1930222,-26.0358661
+28.2448989,-25.9960224
+28.2066202,-26.0157278
+28.1535407,-25.9668799
+28.1906115,-26.0689754
+28.1483084,-26.0431884
+28.2520118,-25.8645050
+28.2740658,-25.8427681
+28.2741485,-25.8428558
+28.2701947,-25.8376666
+28.2740517,-25.8429086
+28.2806627,-25.8406755
+28.2795858,-25.8466358
+28.1107762,-26.0345788
+28.1219872,-26.0586330
+28.1129032,-26.0646361
+28.3068748,-25.8254164
+28.3055945,-25.8186760
+28.3069295,-25.8254927
+28.3185056,-25.8301992
+28.3097573,-25.8235854
+28.3135251,-25.8216086
+28.3256080,-25.8413418
+28.3134896,-25.8260077
+28.3097563,-25.8234184
+28.3098710,-25.8235058
+28.3097948,-25.8232622
+28.3093911,-25.8235060
+28.2840403,-25.7949222
+28.1260063,-26.0129938
+28.1916156,-25.6609531
+28.1913870,-25.6609830
+28.1915341,-25.6612068
+28.1865026,-25.6584570
+28.1864221,-25.6587728
+28.1867347,-25.6588118
+28.1891159,-25.8516785
+28.1924858,-25.8458637
+28.1924063,-25.8459472
+28.1883269,-25.8504529
+28.1881743,-25.8506027
+28.1972567,-25.8597497
+28.1090915,-26.0125387
+28.1092055,-26.0123579
+28.1033350,-26.0096566
+28.2676667,-25.7383812
+28.2680053,-25.7384301
+28.2676000,-25.7385537
+28.1090862,-25.6745172
+28.0585722,-26.0486517
+28.0586777,-26.0486483
+28.0899666,-26.0205118
+28.0581544,-26.0375453
+28.0582659,-26.0374839
+28.0583604,-26.0375006
+28.0610033,-26.0373794
+28.0611407,-26.0374017
+28.0582234,-26.0372380
+28.0585427,-26.0372812
+28.0604674,-26.0395386
+28.0627570,-26.0375826
+28.0627245,-26.0376838
+28.0605022,-26.0407349
+28.2259047,-25.7771774
+28.1707014,-25.8920726
+28.1709222,-25.8920876
+28.1706156,-25.8922823
+28.2205361,-25.7567682
+28.2444855,-25.7598637
+28.2447076,-25.7599251
+28.2555575,-25.7624310
+28.2556469,-25.7624539
+28.0227059,-26.0567089
+28.0226367,-26.0570060
+28.1288476,-25.9949214
+28.1196255,-25.9735955
+28.1190231,-25.9760767
+28.1190033,-25.9761551
+28.1186777,-25.9782782
+28.1183830,-25.9783059
+28.1183495,-25.9784259
+28.1185429,-25.9786167
+28.2458921,-25.7312094
+28.2462084,-25.7327091
+28.2758877,-25.7627036
+28.2765242,-25.7648436
+28.2393535,-25.7558023
+28.2394820,-25.7558319
+28.2586927,-25.7323234
+28.2548457,-25.7325004
+28.2423749,-25.7330899
+28.2346695,-25.7334958
+28.2291006,-25.7335858
+28.2291039,-25.7336583
+28.2311825,-25.7042868
+28.2250085,-25.7114957
+28.2210781,-25.7162377
+28.2189980,-25.7186370
+28.2153368,-25.7229945
+28.2364833,-25.7726981
+28.2062185,-25.7488280
+28.2909837,-25.7676372
+28.2682119,-25.7747325
+28.2778108,-25.7817052
+28.2857129,-25.7833192
+28.2858283,-25.7833305
+28.2856061,-25.7835242
+28.2773804,-25.7841452
+28.2669532,-25.7845094
+28.2698976,-25.7847425
+28.2706983,-25.7847864
+28.2696723,-25.7849052
+28.2766850,-25.7862120
+28.2764973,-25.7862522
+28.2766514,-25.7862849
+28.2751132,-25.7882046
+28.2832805,-25.7880614
+28.2834537,-25.7881035
+28.2749918,-25.7881231
+28.2832340,-25.7881721
+28.2749971,-25.7883439
+28.2788264,-25.7904423
+28.2813694,-25.7927050
+28.2814685,-25.7927855
+28.2813228,-25.7928456
+28.3171146,-25.7980293
+28.3172115,-25.7981150
+28.3033932,-25.8132932
+28.2421716,-25.8158885
+28.2699006,-25.7846940
+28.2143725,-25.7712214
+28.2143708,-25.7713781
+28.2624036,-25.8166137
+28.2623556,-25.8167210
+28.2561792,-25.8211384
+28.0247146,-26.0471212
+27.9851117,-26.0008860
+27.9850487,-26.0008113
+28.1860526,-25.7508651
+28.1985549,-25.6924351
+28.1403320,-25.9562273
+28.2251282,-25.7558030
+28.2250184,-25.7559323
+28.2253321,-25.7559680
+27.9958456,-26.0236611
+28.2795278,-25.8467507
+28.2593555,-25.8095465
+28.2580521,-25.8084340
+28.2891199,-25.7488645
+28.2333633,-25.8139417
+28.2334605,-25.8143136
+28.2351430,-25.8142182
+28.2351805,-25.8144578
+28.0617968,-26.0285540
+28.0619842,-26.0280836
+28.0612003,-26.0330587
+27.9015623,-26.0604107
+27.9054644,-26.0641483
+27.9104850,-26.0687640
+28.0364435,-26.0331297
+28.0480279,-26.0362311
+28.0517131,-26.0361352
+28.2626467,-25.8166895
+28.1896087,-25.7492994
+28.1894773,-25.7478481
+28.1916832,-25.7476983
+28.1906474,-25.7477695
+28.1907631,-25.7492206
+28.1907011,-25.7485678
+28.3235095,-25.7586777
+27.9442159,-26.0587614
+28.0091165,-26.0266049
+28.0109922,-26.0122276
+28.0118378,-26.0082262
+28.0147136,-25.9947622
+27.9397186,-26.0165475
+27.9290385,-26.0213204
+28.2187244,-25.7577426
+28.2187880,-25.7578132
+28.2137548,-25.7573069
+28.0697667,-26.0316855
+28.0697408,-26.0319189
+28.0696608,-26.0316445
+28.0696201,-26.0318672
+28.0693105,-26.0343756
+28.0204555,-26.0474592
+28.0203170,-26.0475162
+28.0247263,-26.0470484
+27.9683157,-26.0687253
+27.9688883,-26.0684431
+28.0800691,-26.0342244
+28.0801236,-26.0337917
+28.0876008,-26.0219132
+28.0875264,-26.0218068
+28.0877292,-26.0218459
+28.0876615,-26.0217372
+28.0875362,-26.0220989
+28.0873406,-26.0217432
+28.0877351,-26.0215886
+28.0900605,-26.0205903
+28.0898435,-26.0205867
+28.0991957,-26.0135329
+28.0993174,-26.0134951
+28.1032117,-26.0100559
+28.1035109,-26.0096295
+28.1030750,-26.0094635
+28.1028952,-26.0099112
+28.0583498,-25.9863156
+28.0654746,-25.9844659
+28.0655401,-25.9846601
+28.0510132,-25.9907263
+28.1177298,-26.0229389
+28.1177273,-26.0231925
+28.1178734,-26.0231153
+28.1175778,-26.0230192
+28.1293959,-26.0254800
+28.1156746,-26.0212244
+28.1081037,-25.8771377
+28.3246160,-25.8157037
+28.3246258,-25.8155718
+28.3246931,-25.8156295
+28.3248319,-25.8155746
+28.3277535,-25.8121175
+28.3278094,-25.8119968
+28.3279017,-25.8120374
+28.3278310,-25.8121589
+28.3310147,-25.7163451
+28.3336563,-25.7163461
+28.3337981,-25.7163720
+28.3389675,-25.7178065
+28.3337000,-25.7165141
+28.3389105,-25.7179278
+28.3335578,-25.7164912
+28.3449512,-25.7182703
+28.3551196,-25.7181393
+28.3600827,-25.7192710
+28.3746675,-25.7141051
+28.3763646,-25.7131666
+28.3819690,-25.7099051
+28.3848907,-25.7081947
+28.3934740,-25.7031079
+28.3789098,-25.7117849
+28.3764139,-25.7132429
+28.0183092,-26.0448511
+28.0184226,-26.0447523
+28.0183966,-26.0447282
+28.0182841,-26.0448296
+28.3134296,-25.8259721
+28.3136063,-25.8215869
+28.3056884,-25.8188100
+28.3054920,-25.8189029
+28.3054110,-25.8187709
+28.3139721,-25.7343110
+28.3140069,-25.7344294
+28.2992913,-25.7433021
+28.2959368,-25.7443168
+28.2913037,-25.7463635
+28.3138564,-25.7344002
+28.3104121,-25.7392320
+28.2912518,-25.7463024
+28.2941622,-25.7448357
+28.1549151,-25.6651046
+28.1550325,-25.6650256
+28.1555698,-25.6658587
+28.1566814,-25.6692215
+28.2537845,-25.6792924
+28.2538061,-25.6790975
+28.1144770,-25.8764182
+28.3354268,-25.7146137
+28.2270142,-25.9195056
+27.9944473,-26.0107295
+27.9945330,-26.0106200
+28.1057920,-25.9755876
+28.1308194,-25.9389417
+28.1547659,-25.9283438
+28.1838010,-25.8558475
+28.1838789,-25.8559093
+28.1849897,-25.8545670
+28.1850705,-25.8546312
+28.1872070,-25.8409337
+28.1906095,-25.8379762
+28.1940197,-25.8350359
+28.1871953,-25.8410742
+28.1907034,-25.8380607
+28.1940973,-25.8351065
+28.1976313,-25.8328315
+28.2000696,-25.8317214
+28.2049554,-25.8297074
+28.2071239,-25.8288264
+28.2001099,-25.8318073
+28.1084236,-25.6709734
+28.3323053,-25.7289036
+28.1028277,-25.6427875
+28.1029225,-25.6428734
+28.1029285,-25.6428038
+28.1029366,-25.6426707
+28.2085357,-25.7560156
+27.9515000,-26.0620971
+27.9454266,-26.0283352
+27.9455691,-26.0283031
+27.9456048,-26.0283798
+27.9454636,-26.0284146
+28.1102424,-26.0179051
+28.1210736,-26.0256573
+28.1101452,-26.0180318
+28.2270453,-25.9193554
+28.2271647,-25.9193945
+28.2271388,-25.9195468
+28.0994025,-26.0136033
+28.1034815,-26.0161726
+28.1035355,-26.0160783
+28.1062683,-26.0123117
+28.1036314,-26.0162420
+28.1036850,-26.0161491
+28.1063906,-26.0123638
+28.0959181,-26.0141417
+28.0960496,-26.0141122
+28.0654308,-26.0353998
+28.1094626,-25.9007115
+28.0102603,-26.0328449
+28.2363693,-25.7727337
+28.2824781,-25.6849740
+28.1768582,-25.7417293
+28.3074057,-25.7179651
+28.1553645,-25.6657790
+28.1554934,-25.6657149
+28.1550366,-25.6649607
+28.2472752,-25.8631849
+28.3558701,-25.7467799
+28.2681321,-25.7746558
+28.2682313,-25.7745609
+28.2794890,-25.6842936
+28.2821203,-25.6844235
+28.2821962,-25.6844669
+28.1100293,-26.0179511
+28.2768202,-25.7892926
+28.2768820,-25.7891948
+28.2769704,-25.7892367
+28.2769095,-25.7893382
+28.2385945,-25.7583269
+28.0692344,-26.0343859
+28.0959463,-26.0142841
+28.0960808,-26.0142537
+28.1863411,-25.8599131
+28.3600354,-25.7193557
+28.3265579,-25.7503966
+28.3263856,-25.7503379
+28.3296853,-25.7379517
+28.3294459,-25.7378739
+28.3295338,-25.7376918
+28.3297649,-25.7377605
+28.1276723,-26.0147308
+28.1156905,-26.0213676
+28.1155938,-26.0213092
+28.1064250,-26.0122876
+28.1063083,-26.0122287
+28.1089552,-26.0124799
+28.1090816,-26.0123034
+28.1091488,-26.0126912
+28.1087036,-26.0125225
+28.1030493,-26.0098209
+28.0767256,-26.0027915
+28.1073056,-26.0184776
+28.1073913,-26.0183829
+28.1101867,-26.0144009
+28.1102418,-26.0142999
+28.1103721,-26.0143565
+28.1103309,-26.0144559
+28.1075057,-26.0184600
+28.1101239,-26.0178387
+28.1088115,-26.0170695
+28.1087009,-26.0170081
+28.1087307,-26.0171746
+28.1086165,-26.0171044
+28.1090529,-26.0121506
+28.1094256,-26.0123046
+28.1208493,-26.0256734
+28.1209560,-26.0255723
+28.1209755,-26.0257657
+28.1374038,-25.8813648
+28.1373863,-25.8812725
+28.2072189,-25.7548790
+28.2071742,-25.7549583
+28.2057303,-25.7542405
+28.2042594,-25.7536018
+28.2028328,-25.7529533
+28.2056928,-25.7543160
+28.2042146,-25.7536890
+28.1876438,-25.7420285
+28.1879123,-25.7449973
+28.1880263,-25.7449896
+28.1879032,-25.7434929
+28.1877884,-25.7420181
+28.1872865,-25.7392211
+28.1849735,-25.7393860
+28.1889258,-25.7285858
+28.1887076,-25.7273264
+28.1883650,-25.7260706
+28.1879488,-25.7247842
+28.1876246,-25.7405539
+28.1875237,-25.7405613
+28.1877607,-25.7391555
+28.1878039,-25.7338751
+28.1876725,-25.7337966
+28.1881817,-25.7260573
+28.1862757,-25.7196085
+28.1860369,-25.7197193
+28.2003224,-25.7522071
+28.2004078,-25.7520663
+28.0759683,-25.9973293
+28.0758478,-25.9972046
+28.0758350,-25.9972775
+28.0972626,-25.9301046
+28.1203823,-25.9702734
+28.0767216,-25.9895928
+28.0767176,-25.9896953
+28.0768530,-25.9896892
+28.0768557,-25.9895916
+28.1005020,-25.8863147
+28.1006777,-25.8863207
+28.1054306,-25.8863207
+28.1056854,-25.8863268
+28.1056619,-25.8864931
+28.1005061,-25.8861941
+27.9399562,-26.0164676
+27.9400068,-26.0165754
+28.2444227,-25.6550746
+28.2444250,-25.6546566
+28.2581044,-26.0331055
+28.2583757,-26.0331211
+28.2580991,-26.0332739
+28.2578034,-26.0401100
+28.2577813,-26.0402994
+28.2576097,-26.0404257
+28.1787329,-25.8530185
+28.2160114,-26.0177013
+28.2159905,-26.0174970
+28.2226094,-26.0012487
+27.9868817,-26.0030880
+27.9869454,-26.0028539
+27.9869095,-26.0029822
+27.9869603,-26.0030412
+27.9870976,-26.0030332
+28.0156950,-26.0428243
+28.0211023,-26.0512259
+28.1912762,-25.9242361
+28.1909796,-25.9239747
+27.9015289,-26.0607604
+28.0809455,-26.0301883
+28.0607933,-26.0305070
+28.0609344,-26.0305795
+28.0607745,-26.0305801
+28.0609542,-26.0305130
+28.0610508,-26.0306634
+28.0611567,-26.0303769
+28.0625756,-26.0305339
+28.0626568,-26.0308667
+28.1423878,-25.9484153
+28.1422593,-25.9484441
+28.1422911,-25.9483452
+28.1142056,-26.0097976
+28.1142648,-26.0097145
+28.1295940,-26.0251783
+28.1226158,-26.0062937
+28.1226658,-26.0061842
+28.1179795,-25.9802165
+28.1178429,-25.9801818
+28.0898671,-25.5527611
+28.0898812,-25.5526277
+28.0899662,-25.5526525
+28.0606146,-26.0306643
+28.0607202,-26.0304166
+28.0083075,-26.0534452
+28.2286271,-26.0693036
+28.2284313,-26.0692675
+28.0907515,-26.0275641
+28.0905953,-26.0276064
+28.0710299,-25.9830788
+28.0583720,-25.9861567
+28.0587693,-25.9864831
+28.0581253,-25.9862161
+28.0116586,-26.0081323
+28.0122371,-26.0083843
+28.0123566,-26.0081678
+28.0112050,-26.0123008
+28.0112264,-26.0122101
+28.0139490,-26.0159774
+28.0061342,-26.0169394
+28.0060431,-26.0168295
+27.9851530,-26.0007327
+27.9868196,-26.0032108
+28.0340409,-26.0172084
+28.0341799,-26.0172670
+28.0481399,-26.0362237
+28.4198465,-25.6981766
+28.1120355,-25.8977968
+28.1121255,-25.8977087
+28.2732135,-25.7860681
+28.2733100,-25.7862064
+28.0807667,-26.0644299
+28.0807840,-26.0642915
+28.1855006,-25.8424229
+27.9439709,-26.0587693
+27.9440158,-26.0586825
+28.0806309,-26.0379638
+28.0807449,-26.0378711
+27.9683930,-26.0685858
+27.9685010,-26.0685971
+27.9595375,-26.0650399
+28.2328168,-25.9757132
+28.1896766,-25.8642195
+28.1896120,-25.8643950
+28.0335835,-26.0297328
+28.0367167,-26.0331007
+28.0364423,-26.0329170
+28.0308423,-26.0282679
+28.2981715,-25.8084919
+28.2483485,-25.6788685
+28.2479854,-25.6790896
+28.2480063,-25.6788540
+28.2481286,-25.6788602
+28.2481032,-25.6790946
+28.2379761,-25.6792922
+28.2374538,-25.6791834
+28.2116256,-25.6796787
+28.1934243,-25.6832307
+28.1932039,-25.6833191
+28.1913365,-25.6834418
+28.1913425,-25.6833215
+28.2713848,-25.6826374
+28.2713151,-25.6823850
+28.1082807,-25.6710638
+28.1082714,-25.6709798
+28.1081748,-25.6711293
+28.1081401,-25.6709015
+28.1854390,-25.7052327
+28.1239548,-26.0112314
+28.1277899,-26.0146250
+28.1275022,-26.0145788
+28.1276189,-26.0144747
+28.2281323,-26.0012438
+28.1044300,-26.0145684
+28.1045263,-26.0146149
+28.1044801,-26.0144729
+28.1045774,-26.0145240
+28.2216410,-25.7667706
+28.2215480,-25.7668269
+28.2217707,-25.7667104
+28.2217265,-25.7666133
+27.9395702,-26.0732035
+28.1840032,-25.6851143
+28.1842529,-25.6851087
+28.1866503,-25.6880987
+28.1866837,-25.6880622
+28.1898308,-25.7390936
+28.1080846,-26.0442873
+28.1081678,-26.0443536
+28.1080732,-26.0444391
+28.1079914,-26.0443831
+28.2242498,-25.8002951
+27.9701769,-26.0579820
+28.3134420,-25.8260791
+28.1785774,-25.6779290
+28.1738619,-25.6774915
+28.1723441,-25.6773779
+28.1707432,-25.6772689
+28.1566256,-25.6693795
+28.1564995,-25.6692411
+28.1401686,-25.7588599
+28.0308527,-26.0281696
+28.1013288,-25.6627792
+28.1060170,-25.9756962
+28.1226852,-25.9594139
+28.0784908,-25.9752229
+28.2576992,-26.0399648
+28.2582847,-26.0283794
+28.1047026,-26.0121477
+28.1047507,-26.0122406
+28.1046345,-26.0122853
+28.1045592,-26.0122074
+28.1403111,-25.9563145
+28.2585352,-26.0283455
+28.1822088,-25.6572427
+28.2068030,-25.7586629
+28.1851110,-25.7154605
+28.1873618,-25.7008068
+28.1876121,-25.7009343
+28.1874405,-25.7009149
+28.1876336,-25.7007397
+28.1874633,-25.7007167
+28.1877047,-25.7008460
+28.1991899,-25.6989343
+28.1993229,-25.6990184
+28.1992825,-25.6988135
+28.1994552,-25.6988995
+28.1995433,-25.7010539
+28.1996297,-25.7009379
+28.1997743,-25.7010198
+28.1996633,-25.7011361
+28.2004480,-25.7053410
+28.2004989,-25.7052555
+28.2004103,-25.7051377
+28.2002749,-25.7052833
+28.1871528,-25.7053957
+28.1868370,-25.7053649
+28.1870583,-25.7055032
+28.1868973,-25.7054899
+28.1870851,-25.7052906
+28.1869242,-25.7052809
+28.2141395,-25.7711578
+28.2141074,-25.7713117
+28.2104083,-25.7712141
+28.2104330,-25.7713961
+28.2068608,-25.7585929
+28.1962130,-25.7572092
+28.1961119,-25.7572743
+28.1959951,-25.7572241
+28.1959239,-25.7571000
+28.1999800,-25.7580541
+28.2002651,-25.7581848
+28.2002748,-25.7581035
+28.2068094,-25.7589688
+28.1861247,-25.7127792
+28.1860660,-25.7127742
+28.1863980,-25.7099647
+28.1864586,-25.7099702
+28.1868012,-25.7077055
+28.1866512,-25.7076943
+28.1869610,-25.7053764
+28.1870150,-25.7053821
+28.1875001,-25.7008235
+28.1875592,-25.7008306
+28.1862563,-25.6963046
+28.1841419,-25.6851140
+28.1840932,-25.6851163
+28.1861206,-25.6965909
+28.1841481,-25.6852106
+28.1842055,-25.6852082
+28.1840636,-25.6852182
+28.1843010,-25.6852043
+28.1653053,-25.6768970
+28.1651768,-25.6767934
+28.1650521,-25.6767880
+28.1649696,-25.6769331
+28.1649716,-25.6768406
+28.1706646,-25.6773422
+28.1706740,-25.6772624
+28.1708296,-25.6772769
+28.1708242,-25.6773591
+28.1249598,-25.6747502
+28.1249906,-25.6750916
+28.1250483,-25.6748910
+28.1248337,-25.6748390
+28.1247693,-25.6750396
+28.1338151,-25.6772225
+28.1338071,-25.6774452
+28.1350831,-25.7227311
+28.1352101,-25.7227346
+28.1864423,-25.7566895
+28.1865619,-25.7568779
+28.1881110,-25.7449839
+28.1878294,-25.7450029
+28.1879729,-25.7450731
+28.1867025,-25.7450786
+28.1821927,-25.6573080
+28.1819359,-25.6570378
+28.1820989,-25.6569466
+28.1882328,-25.7478236
+28.1881306,-25.7478312
+28.1872460,-25.7392240
+28.1873101,-25.7393209
+28.1875112,-25.7393152
+28.1874536,-25.7393179
+28.1873651,-25.7393214
+28.1876326,-25.7406330
+28.1875898,-25.7406370
+28.1875304,-25.7406427
+28.1876978,-25.7405489
+28.1874337,-25.7405679
+28.1876184,-25.7404917
+28.1875747,-25.7404953
+28.1875167,-25.7405001
+28.1875792,-25.7420331
+28.1878374,-25.7420145
+28.1876395,-25.7419763
+28.1877823,-25.7419648
+28.1877925,-25.7420708
+28.1876479,-25.7420811
+28.1877035,-25.7420771
+28.1877375,-25.7419684
+28.1877476,-25.7420740
+28.1876951,-25.7419718
+28.1879448,-25.7434900
+28.1877201,-25.7435057
+28.1878974,-25.7434187
+28.1878590,-25.7434217
+28.1877930,-25.7434268
+28.1877578,-25.7434295
+28.1734072,-25.7429717
+28.1721751,-25.7443537
+28.1654993,-25.6656532
+28.1655751,-25.6655728
+28.1655134,-25.6654725
+28.1654175,-25.6655619
+28.1717375,-25.6661349
+28.1717643,-25.6658786
+28.1716664,-25.6660019
+28.1718381,-25.6660140
+28.1554380,-25.6659153
+28.1548403,-25.6648445
+28.1549549,-25.6648856
+28.1563550,-25.6648768
+28.1563544,-25.6649202
+28.1564797,-25.6650059
+28.1565872,-25.6649114
+28.1564938,-25.6648481
+28.1567164,-25.6692481
+28.1566662,-25.6693000
+28.1565487,-25.6692753
+28.1565824,-25.6693148
+28.1433793,-25.6775507
+28.1433601,-25.6772050
+28.1434429,-25.6774939
+28.1432982,-25.6775010
+28.1432843,-25.6772690
+28.1434328,-25.6772664
+28.1436739,-25.6550663
+28.1434771,-25.6551283
+28.1438453,-25.6552052
+28.1436465,-25.6552584
+28.1882476,-25.7480168
+28.1882154,-25.7480186
+28.1881471,-25.7480234
+28.1881266,-25.7480229
+28.1880480,-25.7479438
+28.1882900,-25.7479276
+28.1884990,-25.7508495
+28.1884943,-25.7506296
+28.1882412,-25.7479309
+28.1884336,-25.7509624
+28.1883464,-25.7506409
+28.1881145,-25.7479397
+28.1870623,-25.7480005
+28.1848889,-25.7393920
+28.1849790,-25.7394441
+28.1081329,-25.6669393
+28.1080625,-25.6668105
+28.1078900,-25.6668239
+28.1078206,-25.6669543
+28.1079047,-25.6670680
+28.1080816,-25.6670547
+28.1081256,-25.6696124
+28.1082794,-25.6695702
+28.1083896,-25.6694302
+28.1082470,-25.6692791
+28.1080243,-25.6695255
+28.1084393,-25.6711168
+28.1082873,-25.6711240
+28.1084185,-25.6709144
+28.1082648,-25.6709277
+28.1082100,-25.6710640
+28.1082041,-25.6709822
+28.1084917,-25.6709674
+28.1084991,-25.6710538
+28.1079664,-25.6646897
+28.1078044,-25.6646197
+28.1079559,-25.6643991
+28.1078007,-25.6643325
+28.1076778,-25.6644325
+28.1080779,-25.6646299
+28.1014240,-25.6628868
+28.1014401,-25.6626572
+28.1016292,-25.6628068
+28.1334241,-25.7501053
+28.1023394,-25.6512696
+28.1021756,-25.6511558
+28.1023541,-25.6510374
+28.1024420,-25.6511753
+28.1030403,-25.6428295
+28.1030335,-25.6428964
+28.1029173,-25.6429385
+28.1028194,-25.6429379
+28.1027796,-25.6427940
+28.1028407,-25.6426635
+28.1884358,-25.7509858
+28.1885509,-25.7508453
+28.1882802,-25.7508622
+28.1747474,-25.7531128
+28.1748951,-25.7529749
+28.1749342,-25.7528318
+28.1957509,-25.7504502
+28.1957183,-25.7500044
+28.1956414,-25.7503828
+28.1956270,-25.7501020
+28.1959216,-25.7500809
+28.1959471,-25.7503649
+28.1931737,-25.7503270
+28.1931845,-25.7504328
+28.1931943,-25.7506427
+28.1933984,-25.7504478
+28.1934044,-25.7506435
+28.1933035,-25.7503590
+28.1933321,-25.7507327
+28.1995467,-25.7488171
+28.1952283,-25.7400634
+28.2003573,-25.7472552
+28.1935785,-25.7430977
+28.1899484,-25.7390901
+28.1945602,-25.6791266
+28.1946085,-25.6788595
+28.1927306,-25.6786672
+28.1431002,-25.7542768
+28.1432273,-25.7544144
+28.1746941,-25.7531034
+28.0899881,-25.5527892
+28.0897477,-25.5527287
+28.1478402,-25.7554811
+28.1478607,-25.7556822
+28.1479840,-25.7555883
+28.1479942,-25.7557222
+28.1917347,-25.7491530
+28.1966848,-25.7488121
+28.1574641,-25.7485602
+28.1571770,-25.7485797
+28.1761651,-25.7472614
+28.1943952,-25.6789608
+28.1944098,-25.6788934
+28.2045315,-25.7303369
+28.2418992,-25.7427750
+28.2039431,-25.7466896
+28.2041137,-25.7468172
+28.2039662,-25.7469317
+28.2038250,-25.7468366
+28.2002165,-25.7580112
+28.1985995,-25.7622129
+28.1987816,-25.7622187
+28.1988682,-25.7622994
+28.2041096,-25.7502462
+28.2395275,-25.7557036
+28.2394070,-25.7556664
+28.2394597,-25.7558967
+28.2393360,-25.7558580
+28.2396820,-25.7459519
+28.2397878,-25.7458552
+28.2396665,-25.7457729
+28.2395592,-25.7458691
+28.2009904,-25.7485950
+28.2012283,-25.7485094
+28.2012355,-25.7484090
+28.2009001,-25.7485326
+28.2009030,-25.7484312
+28.1997860,-25.7484619
+28.2060620,-25.7467981
+28.2061468,-25.7466710
+28.2060441,-25.7465834
+28.2059141,-25.7466874
+28.2121748,-25.7571054
+28.2137607,-25.7572739
+28.2121822,-25.7570658
+28.2085693,-25.7559898
+28.2214819,-25.7559145
+28.2137715,-25.7572000
+28.2121872,-25.7570226
+28.2071984,-25.7549168
+28.2057140,-25.7542756
+28.2042403,-25.7536394
+28.2028051,-25.7529919
+28.2003952,-25.7520871
+28.2327658,-25.7506640
+28.2233796,-25.7558173
+28.2233958,-25.7556958
+28.2249430,-25.7560779
+28.2003360,-25.7521847
+28.2219231,-25.7558765
+28.2418082,-25.7456773
+28.2087074,-25.7559005
+28.2086598,-25.7559292
+28.2121909,-25.7569867
+28.2137734,-25.7572483
+28.2137590,-25.7572181
+28.2297268,-25.7435425
+28.3325474,-25.7286161
+28.3324823,-25.7221741
+28.2350402,-25.7506030
+28.2351714,-25.7505006
+28.2352744,-25.7505867
+28.2351821,-25.7506909
+28.2274956,-25.7496284
+28.2275813,-25.7495589
+28.2277441,-25.7496071
+28.2276807,-25.7497163
+28.2275115,-25.7497310
+28.2067714,-25.7559316
+28.2066299,-25.7560222
+28.2066163,-25.7558655
+28.2351010,-25.7506897
+28.3223556,-25.7647090
+28.3225876,-25.7647173
+28.3224830,-25.7643998
+28.3226842,-25.7644105
+28.3232890,-25.7588414
+28.3234902,-25.7588473
+28.3233346,-25.7584912
+28.3235318,-25.7584910
+28.3244212,-25.7542043
+28.3245882,-25.7542709
+28.3245449,-25.7539336
+28.3247059,-25.7539981
+28.3262267,-25.7506223
+28.3264102,-25.7506908
+28.3278586,-25.7444416
+28.3280468,-25.7444203
+28.3278049,-25.7441437
+28.3279919,-25.7441227
+28.3283680,-25.7409724
+28.3285580,-25.7410135
+28.3284675,-25.7406700
+28.3286609,-25.7407144
+28.3294131,-25.7379490
+28.3296520,-25.7380318
+28.3295919,-25.7375673
+28.3298171,-25.7376349
+28.3320826,-25.7288893
+28.3321094,-25.7284181
+28.3323428,-25.7284348
+28.3324646,-25.7225218
+28.3326765,-25.7225313
+28.3326844,-25.7221839
+28.2322152,-25.7447976
+28.2322290,-25.7449691
+28.2371114,-25.7444334
+28.2371280,-25.7446460
+28.2371682,-25.7459273
+28.2372881,-25.7459216
+28.2322494,-25.7463531
+28.2062137,-25.7488769
+28.2062192,-25.7486816
+28.1297342,-26.0253021
+28.1294306,-26.0255133
+28.1297771,-26.0251767
+28.1296992,-26.0251045
+28.1295295,-26.0251175
+28.1292247,-26.0253262
+28.1293173,-26.0255303
+28.1292222,-26.0254376
+28.1208744,-26.0255144
+28.1207769,-26.0256211
+28.1211358,-26.0255955
+28.1210101,-26.0255082
+28.1211886,-26.0256336
+28.1210911,-26.0256693
+28.1210031,-26.0257807
+28.1209033,-26.0258433
+28.1207878,-26.0257434
+28.1207054,-26.0256990
+28.1179217,-26.0231800
+28.1177816,-26.0232555
+28.1179455,-26.0230704
+28.1178071,-26.0228918
+28.1176563,-26.0228630
+28.1175115,-26.0229442
+28.1176408,-26.0232346
+28.1174991,-26.0230591
+28.1486262,-26.0427595
+28.1483444,-26.0430068
+28.1488979,-26.0429948
+28.1486133,-26.0432431
+28.1576881,-26.0506955
+28.1581822,-26.0502150
+28.1578927,-26.0502661
+28.1576528,-26.0505024
+28.1581173,-26.0504434
+28.1578682,-26.0506789
+28.3247374,-25.7542353
+28.3247951,-25.7541203
+28.3236860,-25.7586761
+28.3243377,-25.7540666
+28.3243888,-25.7539520
+28.3299830,-25.7378387
+28.3299015,-25.7380152
+28.3309041,-25.7337795
+28.3310886,-25.7338257
+28.3310039,-25.7334610
+28.3311926,-25.7335087
+28.3325353,-25.7287559
+28.3324917,-25.7254797
+28.3322717,-25.7254762
+28.3325051,-25.7251813
+28.3322905,-25.7251766
+28.1321749,-25.9881589
+28.1840046,-26.0604659
+28.1225975,-26.0061587
+28.1225393,-26.0062690
+28.1904580,-26.0689687
+28.1907738,-26.0689787
+28.1906122,-26.0688761
+28.1929352,-26.0359182
+28.1928793,-26.0358791
+28.1930921,-26.0359925
+28.1929876,-26.0358104
+28.1930818,-26.0358661
+28.2442245,-25.7598119
+28.2442188,-25.7596606
+28.2447290,-25.7597934
+28.1852899,-26.0500214
+28.2075517,-26.0694663
+28.1872399,-26.0742894
+28.1870155,-26.0743827
+28.1868038,-26.0740802
+28.1870471,-26.0740023
+28.1873795,-26.0740995
+28.3849514,-25.7082779
+28.3897067,-25.7054694
+28.3896544,-25.7054042
+28.2075289,-26.0694057
+28.2076623,-26.0692567
+28.2075671,-26.0692949
+28.2074876,-26.0693243
+28.2077210,-26.0694033
+28.2076140,-26.0694419
+28.2441404,-25.7658698
+28.2439955,-25.7659608
+28.2440482,-25.7657796
+28.2639566,-26.0317609
+28.2643512,-26.0316855
+28.2467133,-26.0702252
+28.2467750,-26.0704252
+28.2468447,-26.0702734
+28.2466315,-26.0703565
+28.2577103,-26.0400965
+28.3269076,-25.7684912
+28.3269599,-25.7683135
+28.3162239,-25.7326318
+28.3161246,-25.7325448
+28.2984155,-25.8084995
+28.2728470,-25.7791646
+28.0711520,-26.0524895
+28.0609299,-26.0763756
+28.2959562,-25.7442108
+28.2959929,-25.7442972
+28.2957838,-25.7443733
+28.2957475,-25.7442882
+28.2959593,-25.7443630
+28.2958242,-25.7441628
+28.1818975,-25.9941478
+28.1820202,-25.9941746
+28.1818112,-25.9940813
+28.3109850,-25.7656383
+28.3110203,-25.7658163
+28.3113042,-25.7655912
+28.3113351,-25.7657687
+28.2191761,-25.9971641
+28.2929284,-25.7452028
+28.2363117,-25.9972239
+28.3293081,-25.7376369
+28.3292327,-25.7378147
+28.3558080,-25.7467578
+28.3560408,-25.7468381
+28.2375254,-25.9722271
+28.3366464,-25.7172578
+28.3104771,-25.7223986
+28.3103200,-25.7223864
+28.3104465,-25.7225560
+28.2889177,-25.7788542
+28.2890131,-25.7789210
+28.2886910,-25.7791103
+28.2887865,-25.7791770
+28.2794535,-25.7668461
+28.2794905,-25.7664224
+28.2795555,-25.7652867
+28.2796676,-25.7652947
+28.2796999,-25.7649762
+28.2795948,-25.7649692
+28.2904846,-25.7835678
+28.2796428,-25.7667414
+28.2796682,-25.7665906
+28.3003923,-25.7840101
+28.3004227,-25.7836825
+28.3002408,-25.7838911
+28.2902658,-25.7836398
+28.2906807,-25.7836679
+28.2904434,-25.7839414
+28.0731027,-26.0680233
+28.0731563,-26.0681231
+28.1928918,-26.0308754
+28.1931569,-26.0309505
+28.2021723,-26.0179223
+28.2026522,-26.0170251
+28.2028181,-26.0171444
+28.1983190,-26.0222776
+28.1984749,-26.0223873
+28.2261045,-26.0003476
+28.2258846,-26.0003078
+28.2195677,-26.0063217
+28.2196621,-26.0063630
+28.2271539,-25.9952868
+28.2273699,-25.9953326
+28.2204100,-26.0047028
+28.2286855,-26.0684465
+28.2108159,-26.0036678
+28.2272589,-25.9951798
+28.2271992,-25.9954317
+28.2191943,-25.9972863
+28.2192451,-25.9972451
+28.2298628,-25.9958184
+28.2299933,-25.9957533
+28.2301041,-25.9958628
+28.2320396,-26.0004973
+28.2317168,-26.0006248
+28.2291889,-26.0011940
+28.2289372,-26.0012162
+28.2205135,-26.0046628
+28.2205984,-26.0047021
+28.2191239,-25.9971031
+28.2190592,-25.9971500
+28.2108397,-26.0035665
+28.2192364,-25.9971253
+28.2299320,-25.9959552
+28.2228986,-26.0010407
+28.2196699,-26.0061417
+28.2197600,-26.0061943
+28.1421708,-25.8990388
+28.2058756,-25.8429639
+28.2058370,-25.8428869
+28.0694085,-26.0318398
+27.9905234,-26.0254824
+27.9907937,-26.0254239
+27.9844149,-26.0270153
+27.9843862,-26.0269254
+27.9852200,-26.0008121
+27.9868307,-26.0030274
+28.0364985,-26.0330491
+28.0339336,-26.0310818
+28.0335455,-26.0298638
+28.0337124,-26.0299189
+28.0101599,-26.0324990
+28.0096355,-26.0269713
+28.0090991,-26.0268869
+28.0087931,-26.0223569
+28.0164067,-26.0232113
+28.0160491,-26.0235493
+28.0265802,-26.0129143
+28.1836494,-25.8578853
+28.0116150,-26.0083329
+28.0042416,-26.0171553
+28.0038460,-26.0080057
+28.0062908,-26.0170047
+28.0655703,-25.9843452
+28.0656950,-25.9847334
+28.0654818,-25.9847949
+27.9904363,-26.0251088
+27.9967073,-26.0435481
+27.9963706,-26.0434631
+27.9964773,-26.0435119
+27.9947581,-26.0396862
+28.0653195,-25.9844055
+28.0040377,-26.0176483
+27.9778204,-26.0592981
+27.9143225,-26.0715237
+27.9017007,-26.0603840
+28.0130473,-26.0390313
+28.0131559,-26.0385035
+28.0536181,-26.0645785
+27.9741172,-26.0537851
+27.9740621,-26.0536929
+28.0138699,-26.0265375
+28.0139160,-26.0263924
+28.0137485,-26.0264788
+28.0137980,-26.0263414
+28.2428060,-25.6790919
+28.2426670,-25.6790879
+28.2429537,-25.6789329
+28.2429633,-25.6787153
+28.2428474,-25.6785831
+28.2426925,-25.6785773
+28.2425425,-25.6787109
+28.2425265,-25.6789242
+27.9635552,-26.0341017
+27.9636412,-26.0343891
+28.2480855,-25.6792557
+28.2479686,-25.6792523
+28.2481416,-25.6787400
+28.2480281,-25.6787330
+28.2478048,-25.6790859
+28.2478183,-25.6788521
+28.2483312,-25.6791049
+28.2440586,-25.6603773
+28.2441927,-25.6602313
+28.2440737,-25.6601432
+28.2439426,-25.6602141
+28.2379198,-25.6790686
+28.2443748,-25.6546525
+28.2443385,-25.6550677
+28.2445182,-25.6548697
+28.2441662,-25.6548482
+28.2790770,-25.6841472
+28.2715280,-25.6828101
+28.2713271,-25.6827914
+28.2921384,-25.6857880
+28.2920897,-25.6855960
+28.2650455,-25.6810503
+28.2649175,-25.6810208
+28.2651206,-25.6811694
+28.2650576,-25.6813791
+28.2711848,-25.6822210
+28.2711607,-25.6823560
+28.2711199,-25.6825839
+28.2021342,-25.6779154
+28.2020402,-25.6781899
+28.2019777,-25.6779804
+28.2019482,-25.6780839
+28.2022324,-25.6780322
+28.2021993,-25.6781347
+28.2116362,-25.6796166
+28.2115837,-25.6798759
+28.2114965,-25.6796575
+28.2114765,-25.6797659
+28.2117500,-25.6797001
+28.2117370,-25.6798048
+28.2164159,-25.6803512
+28.2163525,-25.6806492
+28.2162809,-25.6804037
+28.2162667,-25.6805169
+28.2165009,-25.6804363
+28.2164842,-25.6805496
+28.2536773,-25.6790911
+28.2536606,-25.6792864
+28.2536850,-25.6788983
+28.2538199,-25.6789788
+28.2539707,-25.6789884
+28.2045564,-25.7304595
+28.2043962,-25.7304670
+28.2045097,-25.7302038
+28.2043530,-25.7302049
+28.2042692,-25.7303548
+28.2042566,-25.7302687
+28.2055350,-25.7268376
+28.2054573,-25.7269309
+28.2054287,-25.7267567
+28.2053135,-25.7268672
+28.2049891,-25.7247506
+28.2050848,-25.7246572
+28.2049471,-25.7247955
+28.2044813,-25.7205594
+28.2044561,-25.7204181
+28.2043732,-25.7205102
+28.2046063,-25.7204785
+28.2040011,-25.7183965
+28.2042081,-25.7183684
+28.2041263,-25.7184748
+28.2040985,-25.7182703
+28.2034353,-25.7142434
+28.2035887,-25.7141084
+28.2032870,-25.7141465
+28.2034096,-25.7140631
+28.2014472,-25.7073937
+28.2012223,-25.7073055
+28.2012883,-25.7071567
+28.1938444,-25.6833307
+28.1938418,-25.6832738
+28.1932099,-25.6832248
+28.1933814,-25.6834243
+28.1934684,-25.6830813
+28.2121198,-25.7344321
+28.2124856,-25.7343692
+28.2120484,-25.7343916
+28.2047042,-25.7351368
+28.2048826,-25.7353670
+28.2050039,-25.7352611
+28.2049322,-25.7351454
+28.2047284,-25.7354009
+28.2046495,-25.7352976
+28.2041258,-25.7331641
+28.2046378,-25.7331876
+28.2044218,-25.7332779
+28.2042327,-25.7332589
+28.2045343,-25.7330455
+28.2043539,-25.7330231
+28.1177285,-25.9802969
+28.1191382,-25.9761867
+28.2345640,-25.7334600
+28.2344172,-25.7334674
+28.2342833,-25.7333958
+28.2342752,-25.7333151
+28.2346370,-25.7333771
+28.2346333,-25.7332970
+28.2288833,-25.7334329
+28.2289162,-25.7339476
+28.2287794,-25.7336685
+28.2196706,-25.7340418
+28.2154414,-25.7342363
+28.2149653,-25.7342599
+27.9748996,-26.0748797
+27.9747286,-26.0749325
+28.2585971,-25.7277628
+28.2584072,-25.7277679
+28.2588754,-25.7324364
+28.2586921,-25.7324438
+28.2584774,-25.7323372
+28.2584709,-25.7322741
+28.2588676,-25.7321577
+28.2586808,-25.7321645
+28.2531843,-25.7325832
+28.2531780,-25.7325080
+28.2460490,-25.7329338
+28.2463487,-25.7330004
+28.2462089,-25.7330090
+28.2460436,-25.7328501
+28.2464233,-25.7329204
+28.2464177,-25.7328299
+28.2462377,-25.7327697
+28.2461176,-25.7327729
+28.0605049,-26.0394434
+28.0584567,-26.0373766
+28.0584363,-26.0375088
+28.0583343,-26.0372672
+28.0583585,-26.0375329
+28.0582613,-26.0375221
+28.0612023,-26.0331937
+28.0611742,-26.0333401
+28.0610065,-26.0333823
+28.0879379,-26.0218694
+28.2923419,-25.6858894
+28.0807879,-26.0382107
+28.2715509,-25.6826711
+28.2715893,-25.6824374
+28.2548476,-25.7324265
+28.0227053,-26.0577309
+28.0225517,-26.0576046
+28.0228966,-26.0569046
+28.0228117,-26.0567789
+28.0225680,-26.0572590
+28.0229379,-26.0574467
+28.2576515,-25.7164742
+28.2578642,-25.7164754
+28.2925184,-25.6857229
+28.2924763,-25.6855222
+28.2647803,-25.6813239
+28.2648370,-25.6811053
+28.2821743,-25.6846407
+28.2754716,-25.6837712
+28.2753874,-25.6837651
+28.2374529,-25.6790908
+28.2374863,-25.6795030
+28.2539290,-25.6793885
+28.2537753,-25.6793780
+28.2540402,-25.6793082
+28.2540572,-25.6791032
+27.9702030,-26.0577702
+27.9679553,-26.0689230
+27.9685139,-26.0688194
+27.9683181,-26.0684616
+27.9727605,-26.0698084
+27.9726815,-26.0698885
+27.9725642,-26.0699754
+28.2790004,-25.6840474
+28.2791114,-25.6839389
+28.2822857,-25.6845216
+28.2423674,-25.7184359
+28.1136453,-26.0019306
+28.1138275,-26.0019497
+28.1137977,-26.0020946
+28.1159583,-26.0212530
+28.1156666,-26.0210680
+28.2581433,-25.7207086
+28.2579359,-25.7207520
+28.2464567,-25.7329205
+28.2462229,-25.7330403
+28.2459713,-25.7328522
+28.0350787,-26.0740129
+28.0349761,-26.0740374
+28.0218808,-26.0601406
+28.0235273,-26.0606001
+28.0217681,-26.0600366
+28.0217449,-26.0601042
+28.0236581,-26.0605243
+28.0252332,-26.0673474
+28.0254378,-26.0673243
+28.0254181,-26.0672531
+28.0031192,-26.0214962
+28.0248470,-26.0470606
+28.1930262,-25.9846514
+28.0264426,-26.0757180
+28.0264546,-26.0756685
+28.0460968,-26.0754157
+28.0535939,-26.0646164
+28.0535491,-26.0645830
+28.2589455,-25.8618966
+28.2595018,-25.8675343
+28.2595213,-25.8674498
+28.1120363,-25.8976480
+28.1137461,-25.8963575
+28.1093879,-25.9006587
+28.1106676,-25.8991721
+28.1119503,-25.8977362
+27.9635337,-26.0342795
+28.0256970,-26.0393965
+28.0993196,-25.9543020
+28.1637081,-25.8238139
+28.1145454,-25.8763649
+28.0251031,-26.0443670
+28.0252496,-26.0443716
+28.1037075,-25.9717463
+28.1036657,-25.9716665
+28.1037666,-25.9717081
+28.1551685,-25.7160920
+28.1722591,-25.7062817
+28.1720971,-25.7062798
+28.2342974,-26.0281123
+28.1292104,-25.6351467
+28.1581292,-26.0501757
+28.1579652,-26.0503242
+28.1577216,-26.0505574
+28.1576325,-26.0506540
+28.3254858,-25.8413166
+28.3255708,-25.8412685
+28.2965219,-25.8297424
+28.1027696,-25.6428329
+28.1028234,-25.6428546
+28.1933755,-25.7813178
+28.3023272,-25.7670822
+28.1702754,-25.7789249
+28.3045357,-25.7524544
+28.3047686,-25.7538436
+28.3534059,-25.7713216
+28.2441306,-25.6602240
+28.2443026,-25.6546509
+28.2442711,-25.6550686
+28.2442851,-25.6548543
+28.1008137,-25.6717411
+28.1997345,-25.7011304
+28.1997143,-25.7010276
+28.1997018,-25.7009291
+28.1993720,-25.6988040
+28.1994096,-25.6990025
+28.1993920,-25.6989080
+28.1334129,-25.7541189
+28.1052681,-25.7152145
+28.1083354,-25.8572039
+28.1085721,-25.8571104
+28.4136479,-25.7096552
+28.2393645,-25.8389163
+28.1022522,-25.6512798
+28.1014878,-25.6629255
+28.1538963,-25.8411755
+28.3073675,-25.7178999
+28.2311246,-25.7043585
+28.2310132,-25.7042836
+28.2555364,-25.8278096
+28.2523001,-25.8356381
+28.4186026,-25.7033843
+28.4188648,-25.7033976
+28.3141287,-25.7276396
+28.3572338,-25.7665556
+28.3572000,-25.7665971
+28.2747613,-25.7476959
+28.2748155,-25.7536834
+28.2752698,-25.7564565
+28.2701365,-25.8376951
+28.2477969,-25.8607188
+28.2477721,-25.8607182
+28.2481429,-25.8608168
+28.2544146,-25.7748454
+28.3159740,-25.7660358
+28.3159969,-25.7658451
+28.2861580,-25.8365430
+28.1501670,-25.7490098
+28.2908657,-25.7676723
+28.3385756,-25.7810654
+28.3385411,-25.7809164
+28.3001720,-25.8076432
+28.1987395,-25.8395507
+28.3001839,-25.8077483
+28.2003238,-25.7051292
+28.2694479,-25.8166554
+28.2719303,-25.8194868
+28.2720791,-25.8196324
+28.2732871,-25.8207688
+28.3493995,-25.7755664
+28.3492877,-25.7754353
+28.2268076,-25.7336797
+28.2287773,-25.7336015
+28.2288920,-25.7335960
+28.2414279,-25.7752224
+28.3069901,-25.8254613
+28.3069405,-25.8253842
+28.1665405,-25.8623064
+28.1665288,-25.8623962
+28.1628715,-25.8622713
+28.2611973,-25.7111671
+28.2612182,-25.7112719
+28.1747955,-25.8609607
+28.1748492,-25.8610379
+28.3525107,-25.7863653
+28.3525761,-25.7863170
+28.3524198,-25.7862797
+28.3524938,-25.7862244
+28.3485956,-25.7820019
+28.1591465,-25.8626584
+28.2831070,-25.7675873
+28.2758256,-25.7661060
+28.2758015,-25.7660801
+28.2887120,-25.7540552
+28.2458302,-25.7284071
+28.2327308,-25.7507781
+28.2423004,-25.7184450
+28.2423027,-25.7219706
+28.2423669,-25.7219726
+28.2022697,-25.8533592
+28.2021941,-25.8534563
+28.3004922,-25.7836883
+28.3004708,-25.7839244
+28.3004614,-25.7840179
+28.2153846,-25.7229344
+28.2152462,-25.7229616
+28.3059170,-25.7859561
+28.2224834,-25.7499637
+28.3077486,-25.7872412
+28.3096976,-25.7894405
+28.3002602,-25.7838078
+28.3004104,-25.7838259
+28.3033521,-25.7846761
+28.3004842,-25.7838338
+28.3060016,-25.7858811
+28.1889948,-25.8518238
+28.2394285,-25.7429376
+28.2370075,-25.7431002
+28.2321102,-25.7434364
+28.2297418,-25.7436094
+28.2596177,-25.7628118
+28.2942155,-25.7449266
+28.2940662,-25.7448666
+28.1786879,-25.8530030
+28.1789400,-25.8513218
+28.0244330,-25.9177733
+28.2960323,-25.8044307
+28.3022485,-25.8035924
+28.2246739,-25.7736025
+28.2245245,-25.7736527
+28.2245702,-25.7737598
+28.2386668,-25.7584553
+28.2374231,-25.7626958
+28.2361363,-25.7670596
+28.2360191,-25.7669489
+28.2361591,-25.7669810
+28.2469866,-25.7635128
+28.2492958,-25.7671188
+28.1850616,-25.8546251
+28.2360616,-25.7577404
+28.1027000,-25.9012970
+28.1029390,-25.9013404
+28.1078832,-25.9024575
+28.1079604,-25.9025105
+28.1078567,-25.9024921
+28.0995005,-25.9180110
+28.1196971,-25.8725268
+28.0995114,-25.9179426
+28.0996285,-25.9179456
+28.1381214,-25.9651961
+28.1404862,-25.9562806
+28.1594318,-25.8972527
+28.1649947,-25.9102849
+28.1649519,-25.9104591
+28.2445674,-25.9906870
+28.1325612,-26.0102077
+28.1378352,-25.9282911
+28.1377902,-25.9282458
+28.1377817,-25.9283445
+28.1399822,-25.9256829
+28.2585372,-26.0284390
+28.2582912,-26.0284735
+28.1239095,-26.0112001
+28.1238422,-26.0112919
+28.0985963,-25.9233404
+28.0973411,-25.9301178
+28.2300869,-25.9959163
+28.2299451,-25.9958893
+28.2229301,-26.0011061
+28.0480382,-26.0363164
+28.0759819,-25.9972574
+28.2362258,-25.9971961
+28.0982681,-25.9491569
+28.1514661,-25.9255643
+28.1513459,-25.9254940
+28.0804971,-26.0380858
+28.0860868,-26.0415943
+28.2037885,-25.8809853
+28.2036088,-25.8810728
+28.1843412,-25.8926356
+28.1414519,-25.8824739
+28.1420981,-25.8939667
+28.1421208,-25.8990577
+28.0905485,-26.0497835
+28.0902634,-26.0497742
+28.1421550,-25.8990038
+28.1421057,-25.8990209
+28.2573731,-25.7722597
+28.2518056,-25.7708314
+27.9014953,-26.0603451
+27.9014436,-26.0604381
+27.9947256,-26.0396104
+27.9935074,-26.0399746
+27.9935593,-26.0399605
+28.1371922,-25.9113263
+28.2009585,-25.8778674
+28.0597075,-26.0486464
+28.0590391,-26.0545872
+28.0589215,-26.0545855
+28.0309571,-26.0476635
+28.1600672,-25.8923148
+28.1600840,-25.8921710
+28.0128588,-26.0324098
+28.0128367,-26.0323265
+28.0152965,-26.0320103
+27.9905985,-26.0253397
+27.9905547,-26.0252169
+28.1407278,-25.9088411
+28.0098482,-26.0327737
+27.9579974,-26.0587027
+27.9579145,-26.0587719
+28.2200287,-26.0642935
+27.9489623,-26.0626205
+27.9489680,-26.0627495
+28.1074197,-26.0185604
+28.1347942,-25.9955442
+28.1347288,-25.9954205
+28.1623684,-25.8851642
+28.2558424,-25.7777237
+28.1228024,-26.0062335
+28.1290002,-25.9948778
+28.2592474,-25.7830566
+28.1208842,-25.9909832
+28.0655656,-26.0322893
+28.1392751,-25.8731969
+28.0583677,-26.0373662
+28.2324972,-25.7710272
+28.2306386,-25.7716662
+28.0699695,-26.0394214
+28.0699810,-26.0393748
+28.0699343,-26.0393654
+28.0637303,-26.0327478
+28.0637903,-26.0327308
+28.0636938,-26.0326869
+28.2163912,-25.7717703
+28.2163144,-25.7719299
+28.2215264,-25.7667476
+28.2216030,-25.7666867
+28.2297155,-25.7654348
+28.2273481,-25.7646780
+28.2328079,-25.7662385
+28.0801964,-25.9757132
+28.0614708,-26.0655373
+28.0613056,-26.0655294
+28.0650919,-26.0750504
+28.2252342,-25.7558090
+28.2252144,-25.7559558
+28.2251976,-25.7560895
+28.2251100,-25.7559414
+28.2207599,-25.7645470
+28.2216494,-25.7666592
+28.2216872,-25.7667494
+28.1058759,-25.9755813
+28.1058167,-25.9754671
+28.2310755,-25.7566619
+28.2309980,-25.7566509
+28.2310790,-25.7566034
+28.2310073,-25.7565948
+28.1541580,-25.8922045
+28.1541809,-25.8923755
+28.1517228,-25.8680672
+28.1517961,-25.8680543
+28.1517829,-25.8679870
+28.0795361,-26.0819977
+28.2477796,-25.8608098
+28.2479102,-25.8606544
+28.2480390,-25.8606597
+28.2481395,-25.8607334
+28.2481187,-25.8608190
+28.2480006,-25.8608954
+28.2478886,-25.8608810
+28.2478854,-25.8609040
+28.2480424,-25.8606362
+28.2904540,-25.7838307
+28.2906600,-25.7838412
+28.2902485,-25.7838216
+28.2373304,-25.7474324
+28.2374364,-25.7489604
+28.3077951,-25.7872815
+28.3077290,-25.7873444
+28.2021175,-25.9574951
+28.2020728,-25.9576315
+28.1260516,-25.9801097
+28.2439005,-25.7658124
\ No newline at end of file
diff --git a/api/scripts/test.py b/api/scripts/test.py
new file mode 100644
index 00000000..05b00651
--- /dev/null
+++ b/api/scripts/test.py
@@ -0,0 +1,26 @@
+import json
+# data = {}
+
+# # Open the JSON file in read mode
+# with open("robots.json", 'r') as file:
+# # Use the json.load() function to load the JSON data from the file
+# data = json.load(file)
+
+# for d in data:
+# if len(d["robots"]) >0:
+# print(d["robots"])
+
+
+def get_robots():
+ robots = []
+ # Open the file in read mode
+ with open("robots.txt", 'r') as file:
+ for line in file:
+ lon,lat = line.strip().split(',')
+ robots.append([float(lon),float(lat)]) # Use strip() to remove leading/trailing whitespace
+ return robots
+
+
+
+with open("robots.json", "w") as json_file:
+ json_file.write(json.dumps(get_robots(), indent=2))
\ No newline at end of file
diff --git a/api/scripts/tshwane_cords.json b/api/scripts/tshwane_cords.json
new file mode 100644
index 00000000..2e65d3c8
--- /dev/null
+++ b/api/scripts/tshwane_cords.json
@@ -0,0 +1,1130 @@
+[
+ [
+ 28.2712,
+ -25.925
+ ],
+ [
+ 28.2384,
+ -25.925
+ ],
+ [
+ 28.185,
+ -25.9227
+ ],
+ [
+ 28.181,
+ -25.9034
+ ],
+ [
+ 28.1102,
+ -25.9195
+ ],
+ [
+ 28.1055,
+ -25.9449
+ ],
+ [
+ 28.0908,
+ -25.9249
+ ],
+ [
+ 28.0902,
+ -25.9274
+ ],
+ [
+ 28.0805,
+ -25.9243
+ ],
+ [
+ 28.0772,
+ -25.9252
+ ],
+ [
+ 28.0751,
+ -25.9209
+ ],
+ [
+ 28.0457,
+ -25.9292
+ ],
+ [
+ 28.0392,
+ -25.9315
+ ],
+ [
+ 28.0299,
+ -25.9264
+ ],
+ [
+ 27.9879,
+ -25.9111
+ ],
+ [
+ 27.984,
+ -25.934
+ ],
+ [
+ 27.9669,
+ -25.9028
+ ],
+ [
+ 27.9629,
+ -25.9109
+ ],
+ [
+ 27.9623,
+ -25.9105
+ ],
+ [
+ 27.9502,
+ -25.9072
+ ],
+ [
+ 27.9493,
+ -25.9062
+ ],
+ [
+ 27.9467,
+ -25.9079
+ ],
+ [
+ 27.9467,
+ -25.908
+ ],
+ [
+ 27.9225,
+ -25.9149
+ ],
+ [
+ 27.9011,
+ -25.9176
+ ],
+ [
+ 27.901,
+ -25.9079
+ ],
+ [
+ 27.8938,
+ -25.9053
+ ],
+ [
+ 27.8904,
+ -25.9057
+ ],
+ [
+ 27.8995,
+ -25.8839
+ ],
+ [
+ 27.8982,
+ -25.8828
+ ],
+ [
+ 27.9005,
+ -25.8597
+ ],
+ [
+ 27.9395,
+ -25.8408
+ ],
+ [
+ 27.9258,
+ -25.8368
+ ],
+ [
+ 27.9401,
+ -25.8241
+ ],
+ [
+ 27.9602,
+ -25.8197
+ ],
+ [
+ 27.9572,
+ -25.816
+ ],
+ [
+ 27.9636,
+ -25.8005
+ ],
+ [
+ 27.9622,
+ -25.7991
+ ],
+ [
+ 27.9632,
+ -25.7919
+ ],
+ [
+ 27.9546,
+ -25.7871
+ ],
+ [
+ 27.9493,
+ -25.7869
+ ],
+ [
+ 27.9527,
+ -25.7598
+ ],
+ [
+ 27.9558,
+ -25.7596
+ ],
+ [
+ 27.9732,
+ -25.7566
+ ],
+ [
+ 27.9795,
+ -25.7568
+ ],
+ [
+ 27.9482,
+ -25.7514
+ ],
+ [
+ 27.9575,
+ -25.6952
+ ],
+ [
+ 27.9538,
+ -25.6937
+ ],
+ [
+ 27.9519,
+ -25.6729
+ ],
+ [
+ 27.9523,
+ -25.6713
+ ],
+ [
+ 27.9573,
+ -25.6535
+ ],
+ [
+ 27.9571,
+ -25.6477
+ ],
+ [
+ 27.9652,
+ -25.6437
+ ],
+ [
+ 27.9649,
+ -25.6454
+ ],
+ [
+ 27.9806,
+ -25.6348
+ ],
+ [
+ 27.9722,
+ -25.6328
+ ],
+ [
+ 27.9576,
+ -25.5979
+ ],
+ [
+ 27.9815,
+ -25.5926
+ ],
+ [
+ 28.0306,
+ -25.5427
+ ],
+ [
+ 28.0495,
+ -25.5584
+ ],
+ [
+ 28.0524,
+ -25.5596
+ ],
+ [
+ 28.0244,
+ -25.5358
+ ],
+ [
+ 27.9924,
+ -25.5307
+ ],
+ [
+ 28.0075,
+ -25.518
+ ],
+ [
+ 28.0119,
+ -25.4841
+ ],
+ [
+ 28.0359,
+ -25.4805
+ ],
+ [
+ 27.9917,
+ -25.4706
+ ],
+ [
+ 27.9697,
+ -25.4245
+ ],
+ [
+ 27.9604,
+ -25.4391
+ ],
+ [
+ 27.9582,
+ -25.4273
+ ],
+ [
+ 27.9456,
+ -25.4263
+ ],
+ [
+ 27.9708,
+ -25.4067
+ ],
+ [
+ 28.0004,
+ -25.3629
+ ],
+ [
+ 28.0447,
+ -25.3594
+ ],
+ [
+ 28.0555,
+ -25.4017
+ ],
+ [
+ 28.0834,
+ -25.4
+ ],
+ [
+ 28.108,
+ -25.3848
+ ],
+ [
+ 28.1107,
+ -25.367
+ ],
+ [
+ 28.1767,
+ -25.3789
+ ],
+ [
+ 28.1768,
+ -25.3659
+ ],
+ [
+ 28.2015,
+ -25.3286
+ ],
+ [
+ 28.2283,
+ -25.3237
+ ],
+ [
+ 28.2826,
+ -25.3542
+ ],
+ [
+ 28.2834,
+ -25.3426
+ ],
+ [
+ 28.2895,
+ -25.3381
+ ],
+ [
+ 28.2896,
+ -25.3383
+ ],
+ [
+ 28.2981,
+ -25.3412
+ ],
+ [
+ 28.2982,
+ -25.3393
+ ],
+ [
+ 28.3792,
+ -25.3104
+ ],
+ [
+ 28.3826,
+ -25.2921
+ ],
+ [
+ 28.4337,
+ -25.3211
+ ],
+ [
+ 28.4393,
+ -25.3224
+ ],
+ [
+ 28.5036,
+ -25.3102
+ ],
+ [
+ 28.5012,
+ -25.3088
+ ],
+ [
+ 28.5133,
+ -25.2654
+ ],
+ [
+ 28.5643,
+ -25.2561
+ ],
+ [
+ 28.5637,
+ -25.2521
+ ],
+ [
+ 28.5948,
+ -25.2494
+ ],
+ [
+ 28.6029,
+ -25.2494
+ ],
+ [
+ 28.6047,
+ -25.2542
+ ],
+ [
+ 28.6044,
+ -25.2535
+ ],
+ [
+ 28.6313,
+ -25.2521
+ ],
+ [
+ 28.6326,
+ -25.2802
+ ],
+ [
+ 28.6593,
+ -25.28
+ ],
+ [
+ 28.6643,
+ -25.2348
+ ],
+ [
+ 28.6712,
+ -25.2518
+ ],
+ [
+ 28.6691,
+ -25.2477
+ ],
+ [
+ 28.6757,
+ -25.2414
+ ],
+ [
+ 28.6756,
+ -25.2347
+ ],
+ [
+ 28.6799,
+ -25.227
+ ],
+ [
+ 28.6768,
+ -25.2202
+ ],
+ [
+ 28.6791,
+ -25.2171
+ ],
+ [
+ 28.6786,
+ -25.212
+ ],
+ [
+ 28.6553,
+ -25.2108
+ ],
+ [
+ 28.6381,
+ -25.2135
+ ],
+ [
+ 28.6381,
+ -25.1866
+ ],
+ [
+ 28.6159,
+ -25.1839
+ ],
+ [
+ 28.6683,
+ -25.1516
+ ],
+ [
+ 28.7101,
+ -25.1385
+ ],
+ [
+ 28.7446,
+ -25.1161
+ ],
+ [
+ 28.7592,
+ -25.1096
+ ],
+ [
+ 28.7574,
+ -25.1497
+ ],
+ [
+ 28.7765,
+ -25.1499
+ ],
+ [
+ 28.7754,
+ -25.1837
+ ],
+ [
+ 28.7846,
+ -25.1838
+ ],
+ [
+ 28.7791,
+ -25.2287
+ ],
+ [
+ 28.7638,
+ -25.2308
+ ],
+ [
+ 28.7324,
+ -25.2211
+ ],
+ [
+ 28.7396,
+ -25.2692
+ ],
+ [
+ 28.7329,
+ -25.2885
+ ],
+ [
+ 28.6956,
+ -25.2827
+ ],
+ [
+ 28.6792,
+ -25.2945
+ ],
+ [
+ 28.6413,
+ -25.303
+ ],
+ [
+ 28.6332,
+ -25.3276
+ ],
+ [
+ 28.6226,
+ -25.3315
+ ],
+ [
+ 28.6389,
+ -25.3337
+ ],
+ [
+ 28.6198,
+ -25.394
+ ],
+ [
+ 28.6253,
+ -25.4114
+ ],
+ [
+ 28.6295,
+ -25.4476
+ ],
+ [
+ 28.6208,
+ -25.4594
+ ],
+ [
+ 28.6154,
+ -25.4632
+ ],
+ [
+ 28.621,
+ -25.4679
+ ],
+ [
+ 28.6321,
+ -25.4707
+ ],
+ [
+ 28.634,
+ -25.4884
+ ],
+ [
+ 28.6257,
+ -25.5199
+ ],
+ [
+ 28.6267,
+ -25.5231
+ ],
+ [
+ 28.635,
+ -25.5312
+ ],
+ [
+ 28.6455,
+ -25.5592
+ ],
+ [
+ 28.6473,
+ -25.5858
+ ],
+ [
+ 28.6425,
+ -25.5856
+ ],
+ [
+ 28.6747,
+ -25.5899
+ ],
+ [
+ 28.6727,
+ -25.6588
+ ],
+ [
+ 28.6838,
+ -25.665
+ ],
+ [
+ 28.7088,
+ -25.6754
+ ],
+ [
+ 28.7221,
+ -25.6828
+ ],
+ [
+ 28.7239,
+ -25.6442
+ ],
+ [
+ 28.7382,
+ -25.6318
+ ],
+ [
+ 28.7663,
+ -25.6339
+ ],
+ [
+ 28.759,
+ -25.647
+ ],
+ [
+ 28.7528,
+ -25.678
+ ],
+ [
+ 28.7574,
+ -25.6939
+ ],
+ [
+ 28.7572,
+ -25.6953
+ ],
+ [
+ 28.7649,
+ -25.7059
+ ],
+ [
+ 28.7653,
+ -25.7036
+ ],
+ [
+ 28.7681,
+ -25.7006
+ ],
+ [
+ 28.7693,
+ -25.7009
+ ],
+ [
+ 28.7793,
+ -25.6988
+ ],
+ [
+ 28.7927,
+ -25.7019
+ ],
+ [
+ 28.8082,
+ -25.7024
+ ],
+ [
+ 28.8193,
+ -25.689
+ ],
+ [
+ 28.847,
+ -25.6951
+ ],
+ [
+ 28.8229,
+ -25.6824
+ ],
+ [
+ 28.81,
+ -25.6589
+ ],
+ [
+ 28.8115,
+ -25.6591
+ ],
+ [
+ 28.836,
+ -25.643
+ ],
+ [
+ 28.8355,
+ -25.6374
+ ],
+ [
+ 28.8416,
+ -25.6456
+ ],
+ [
+ 28.8457,
+ -25.6545
+ ],
+ [
+ 28.8693,
+ -25.6523
+ ],
+ [
+ 28.872,
+ -25.6581
+ ],
+ [
+ 28.8629,
+ -25.6416
+ ],
+ [
+ 28.8584,
+ -25.6355
+ ],
+ [
+ 28.8431,
+ -25.6348
+ ],
+ [
+ 28.8085,
+ -25.5664
+ ],
+ [
+ 28.7971,
+ -25.5732
+ ],
+ [
+ 28.8219,
+ -25.542
+ ],
+ [
+ 28.8518,
+ -25.5224
+ ],
+ [
+ 28.8699,
+ -25.5018
+ ],
+ [
+ 28.8741,
+ -25.5247
+ ],
+ [
+ 28.8582,
+ -25.5271
+ ],
+ [
+ 28.9101,
+ -25.5691
+ ],
+ [
+ 28.9152,
+ -25.5245
+ ],
+ [
+ 28.9465,
+ -25.558
+ ],
+ [
+ 29.0078,
+ -25.5998
+ ],
+ [
+ 28.9869,
+ -25.5742
+ ],
+ [
+ 28.9881,
+ -25.5402
+ ],
+ [
+ 28.9932,
+ -25.5395
+ ],
+ [
+ 29.0067,
+ -25.5425
+ ],
+ [
+ 29.0106,
+ -25.5376
+ ],
+ [
+ 29.019,
+ -25.5332
+ ],
+ [
+ 29.0137,
+ -25.5278
+ ],
+ [
+ 29.036,
+ -25.5132
+ ],
+ [
+ 29.0422,
+ -25.5213
+ ],
+ [
+ 29.0474,
+ -25.521
+ ],
+ [
+ 29.0482,
+ -25.517
+ ],
+ [
+ 29.0587,
+ -25.5202
+ ],
+ [
+ 29.0787,
+ -25.5272
+ ],
+ [
+ 29.0774,
+ -25.4996
+ ],
+ [
+ 29.08,
+ -25.4962
+ ],
+ [
+ 29.0914,
+ -25.4946
+ ],
+ [
+ 29.0984,
+ -25.5306
+ ],
+ [
+ 29.0869,
+ -25.5377
+ ],
+ [
+ 29.0684,
+ -25.5486
+ ],
+ [
+ 29.0343,
+ -25.5523
+ ],
+ [
+ 29.042,
+ -25.5634
+ ],
+ [
+ 29.0456,
+ -25.5733
+ ],
+ [
+ 29.04,
+ -25.5808
+ ],
+ [
+ 29.0642,
+ -25.6175
+ ],
+ [
+ 29.0661,
+ -25.6207
+ ],
+ [
+ 29.0565,
+ -25.6305
+ ],
+ [
+ 29.0646,
+ -25.6326
+ ],
+ [
+ 28.9688,
+ -25.6424
+ ],
+ [
+ 28.9507,
+ -25.6733
+ ],
+ [
+ 28.9813,
+ -25.7283
+ ],
+ [
+ 28.9576,
+ -25.7425
+ ],
+ [
+ 28.9382,
+ -25.7746
+ ],
+ [
+ 28.9433,
+ -25.8233
+ ],
+ [
+ 28.9504,
+ -25.8244
+ ],
+ [
+ 28.9382,
+ -25.8374
+ ],
+ [
+ 28.8868,
+ -25.8886
+ ],
+ [
+ 28.8839,
+ -25.8714
+ ],
+ [
+ 28.889,
+ -25.8783
+ ],
+ [
+ 28.8795,
+ -25.8803
+ ],
+ [
+ 28.8825,
+ -25.9252
+ ],
+ [
+ 28.8833,
+ -25.9698
+ ],
+ [
+ 28.8852,
+ -25.9714
+ ],
+ [
+ 28.885,
+ -25.9714
+ ],
+ [
+ 28.8673,
+ -25.9744
+ ],
+ [
+ 28.8648,
+ -26.007
+ ],
+ [
+ 28.8329,
+ -26.0013
+ ],
+ [
+ 28.7939,
+ -26.0048
+ ],
+ [
+ 28.7739,
+ -26.0046
+ ],
+ [
+ 28.7624,
+ -26.0137
+ ],
+ [
+ 28.7579,
+ -25.9831
+ ],
+ [
+ 28.7575,
+ -25.9837
+ ],
+ [
+ 28.7108,
+ -25.9906
+ ],
+ [
+ 28.6527,
+ -25.9906
+ ],
+ [
+ 28.6323,
+ -25.9743
+ ],
+ [
+ 28.591,
+ -25.9708
+ ],
+ [
+ 28.5867,
+ -26.0025
+ ],
+ [
+ 28.5789,
+ -26.016
+ ],
+ [
+ 28.5386,
+ -26.0596
+ ],
+ [
+ 28.5308,
+ -26.0478
+ ],
+ [
+ 28.5158,
+ -26.0616
+ ],
+ [
+ 28.4687,
+ -26.0585
+ ],
+ [
+ 28.4405,
+ -26.0781
+ ],
+ [
+ 28.4422,
+ -26.0477
+ ],
+ [
+ 28.4491,
+ -26.0422
+ ],
+ [
+ 28.4547,
+ -26.0427
+ ],
+ [
+ 28.4601,
+ -26.0308
+ ],
+ [
+ 28.4643,
+ -26.0237
+ ],
+ [
+ 28.4644,
+ -26.0256
+ ],
+ [
+ 28.4457,
+ -26.0114
+ ],
+ [
+ 28.4482,
+ -26.0181
+ ],
+ [
+ 28.4511,
+ -25.9999
+ ],
+ [
+ 28.4444,
+ -25.9955
+ ],
+ [
+ 28.4517,
+ -25.9911
+ ],
+ [
+ 28.4627,
+ -25.9864
+ ],
+ [
+ 28.468,
+ -25.9744
+ ],
+ [
+ 28.457,
+ -25.9633
+ ],
+ [
+ 28.446,
+ -25.9567
+ ],
+ [
+ 28.4177,
+ -25.9649
+ ],
+ [
+ 28.4167,
+ -25.9505
+ ],
+ [
+ 28.4195,
+ -25.9484
+ ],
+ [
+ 28.4176,
+ -25.9487
+ ],
+ [
+ 28.4072,
+ -25.9394
+ ],
+ [
+ 28.3524,
+ -25.9241
+ ],
+ [
+ 28.3381,
+ -25.9546
+ ],
+ [
+ 28.3195,
+ -25.95
+ ],
+ [
+ 28.2694,
+ -25.9137
+ ],
+ [
+ 28.2712,
+ -25.9158
+ ],
+ [
+ 28.2712,
+ -25.925
+ ]
+]
\ No newline at end of file
diff --git a/api/src/ai.rs b/api/src/ai.rs
index bfcf37e5..eaba8701 100644
--- a/api/src/ai.rs
+++ b/api/src/ai.rs
@@ -9,7 +9,7 @@ use utoipa::ToSchema;
#[utoipa::path(post, tag = "AI", path = "/api/ai/info", request_body = AiInfoRequest)]
#[post("/ai/info", format = "application/json", data = "")]
pub async fn get_ai_info<'a>(request: Json) -> ApiResponse<'a, AiInfoResponse> {
- let mapbox_api_key = if let Ok(key) = env::var("MAPBOX_API_KEY") {
+ let mapbox_api_key = if let Ok(key) = dbg!(env::var("MAPBOX_API_KEY")) {
key
} else {
log::error!("We couldn't get the mapbox api key. The environment variable was not set!");
@@ -21,11 +21,12 @@ pub async fn get_ai_info<'a>(request: Json) -> ApiResponse<'a, Ai
match Command::new("python3")
.args([
- "src/avoid_cords.py",
+ "route.py",
serde_json::to_string(&request.into_inner())
.unwrap()
.as_ref(),
])
+ .current_dir("src")
.stdout(Stdio::piped())
.env("MAPBOX_API_KEY", mapbox_api_key)
.output()
@@ -56,19 +57,21 @@ pub async fn get_ai_info<'a>(request: Json) -> ApiResponse<'a, Ai
#[derive(Clone, Deserialize, Serialize, ToSchema)]
#[schema(example = json! {
AiInfoRequest {
- polygon: vec![
- [0.0, 0.0],
- [90.0, -90.0],
- [-90.0, 90.0],
- ]
+ origin: Box::new([28.3, -27.73]),
+ destination: Box::new([28.2651, -25.7597])
}
})]
pub struct AiInfoRequest {
- pub polygon: Vec<[f64; 2]>,
+ pub origin: Box<[f64; 2]>,
+ pub destination: Box<[f64; 2]>,
}
#[derive(Clone, Serialize, Deserialize, ToSchema)]
#[serde(rename_all = "camelCase")]
pub struct AiInfoResponse {
- pub coords_to_avoid: Vec<[f64; 2]>,
+ pub duration: f32,
+ pub distance: f32,
+ pub traffic_lights_avoided: Vec<[f32; 2]>,
+ pub instructions: Vec,
+ pub coordinates: Vec<[f32; 2]>,
}
diff --git a/api/src/auth.rs b/api/src/auth.rs
index c8be0392..4c001243 100644
--- a/api/src/auth.rs
+++ b/api/src/auth.rs
@@ -51,6 +51,7 @@ pub async fn authenticate(
let mut doc = Document::new();
doc.insert("email", email);
+ #[allow(deprecated)]
match User::query(doc, &db.database(DB_NAME)).await {
Ok(mut result) => match result.try_next().await {
Ok(user) => {
@@ -111,6 +112,7 @@ pub async fn authenticate(
let db = state.inner().as_ref().unwrap();
if let Some(cookie) = cookies.get("cookie").map(Cookie::value) {
log::info!("User trying to authenticate with cookie ({cookie})");
+ #[allow(deprecated)]
match AuthCookie::query(
bson::doc! {
"cookie": cookie
@@ -281,12 +283,23 @@ impl<'r> FromRequest<'r> for JWTAuthToken {
if let Some(client) = request.rocket().state::