-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.js
351 lines (315 loc) · 72.6 KB
/
app.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
/**
* Module dependencies.
*/
var express = require('express');
var compression = require('compression');
var session = require('express-session');
var bodyParser = require('body-parser');
var logger = require('morgan');
var chalk = require('chalk');
var errorHandler = require('errorhandler');
var dotenv = require('dotenv');
var path = require('path');
const mongoose = require('mongoose');
const MongoStore = require('connect-mongo')(session);
var passport = require('passport');
var expressValidator = require('express-validator');
var expressStatusMonitor = require('express-status-monitor');
var sass = require('node-sass-middleware');
var multer = require('multer');
var cfenv = require("cfenv");
var LinearRegression = require('shaman').LinearRegression;
var upload = multer({ dest: path.join(__dirname, 'uploads') });
/**
* Load environment variables from .env file, where API keys and passwords are configured.
*/
dotenv.load({ path: '.env' });
/**
* Controllers (route handlers).
*/
var homeController = require('./controllers/home');
var userController = require('./controllers/user');
var apiController = require('./controllers/api');
var contactController = require('./controllers/contact');
var logController = require('./controllers/log');
/**
* API keys and Passport configuration.
*/
var passportConfig = require('./config/passport');
/**
* Create Express server.
*/
var app = express();
/**
* Connect to MongoDB.
*/
mongoose.Promise = global.Promise;
mongoose.connect("mongodb://admin:[email protected]:16689/admin?ssl=true");
mongoose.connection.on('error', () => {
console.log('%s MongoDB connection error. Please make sure MongoDB is running.', chalk.red('✗'));
process.exit();
});
var db;
// load local VCAP configuration and service credentials
var vcapLocal;
try {
vcapLocal = require('./vcap-local.json');
console.log("Loaded local VCAP", vcapLocal);
} catch (e) {}
var appEnvOpts = vcapLocal ? { vcap: vcapLocal } : {}
var appEnv = cfenv.getAppEnv(appEnvOpts);
if (appEnv.services['cloudantNoSQLDB']) {
// Load the Cloudant library.
var Cloudant = require('cloudant');
// Initialize database with credentials
var cloudant = Cloudant(appEnv.services['cloudantNoSQLDB'][0].credentials);
// Create a new "techsummit-2017" database.
cloudant.db.create('techsummit-2017', function(err, data) {
if (err) {
console.log("Error while creating DB. It might already exist.");
} else {
console.log("Created database.");
}
});
db = cloudant.db.use('techsummit-2017');
}
/**
* Express configuration.
*/
app.set('port', process.env.PORT || 3000);
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'pug');
app.use(expressStatusMonitor());
app.use(compression());
// app.use(sass({
// src: path.join(__dirname, 'public'),
// dest: path.join(__dirname, 'public')
// }));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(expressValidator());
app.use(session({
resave: true,
saveUninitialized: true,
secret: "Lv2csmZtjpccE2c5PGzo",
store: new MongoStore({
url: "mongodb://admin:[email protected]:16689,sl-eu-lon-2-portal.2.dblayer.com:16689/admin?ssl=true",
autoReconnect: true
})
}));
app.use(passport.initialize());
app.use(passport.session());
app.use((req, res, next) => {
next();
});
app.use((req, res, next) => {
res.locals.user = req.user;
next();
});
app.use((req, res, next) => {
next();
});
app.use(express.static(path.join(__dirname, 'public'), { maxAge: 31557600000 }));
/**
* Primary app routes.
*/
app.get('/', homeController.index);
app.get('/login', userController.getLogin);
app.post('/login', userController.postLogin);
app.get('/logout', userController.logout);
app.get('/forgot', userController.getForgot);
app.post('/forgot', userController.postForgot);
app.get('/reset/:token', userController.getReset);
app.post('/reset/:token', userController.postReset);
app.get('/signup', userController.getSignup);
app.post('/signup', userController.postSignup);
app.get('/contact', contactController.getContact);
app.get('/add-log', logController.getAddLog);
app.get('/recent-logs', logController.getShowLogs);
app.post('/contact', contactController.postContact);
app.get('/account', passportConfig.isAuthenticated, userController.getAccount);
app.post('/account/profile', passportConfig.isAuthenticated, userController.postUpdateProfile);
app.post('/account/password', passportConfig.isAuthenticated, userController.postUpdatePassword);
// app.post('/account/devare', passportConfig.isAuthenticated, userController.postDevareAccount);
app.get('/account/unlink/:provider', passportConfig.isAuthenticated, userController.getOauthUnlink);
/**
* API examples routes.
*/
app.get('/api', apiController.getApi);
app.get('/api/lastfm', apiController.getLastfm);
app.get('/api/nyt', apiController.getNewYorkTimes);
app.get('/api/aviary', apiController.getAviary);
app.get('/api/steam', passportConfig.isAuthenticated, passportConfig.isAuthorized, apiController.getSteam);
app.get('/api/stripe', apiController.getStripe);
app.post('/api/stripe', apiController.postStripe);
app.get('/api/scraping', apiController.getScraping);
app.get('/api/twilio', apiController.getTwilio);
app.post('/api/twilio', apiController.postTwilio);
app.get('/api/clockwork', apiController.getClockwork);
app.post('/api/clockwork', apiController.postClockwork);
app.get('/api/foursquare', passportConfig.isAuthenticated, passportConfig.isAuthorized, apiController.getFoursquare);
app.get('/api/tumblr', passportConfig.isAuthenticated, passportConfig.isAuthorized, apiController.getTumblr);
app.get('/api/facebook', passportConfig.isAuthenticated, passportConfig.isAuthorized, apiController.getFacebook);
app.get('/api/github', passportConfig.isAuthenticated, passportConfig.isAuthorized, apiController.getGithub);
app.get('/api/twitter', passportConfig.isAuthenticated, passportConfig.isAuthorized, apiController.getTwitter);
app.post('/api/twitter', passportConfig.isAuthenticated, passportConfig.isAuthorized, apiController.postTwitter);
app.get('/api/linkedin', passportConfig.isAuthenticated, passportConfig.isAuthorized, apiController.getLinkedin);
app.get('/api/instagram', passportConfig.isAuthenticated, passportConfig.isAuthorized, apiController.getInstagram);
app.get('/api/paypal', apiController.getPayPal);
app.get('/api/paypal/success', apiController.getPayPalSuccess);
app.get('/api/paypal/cancel', apiController.getPayPalCancel);
app.get('/api/lob', apiController.getLob);
app.get('/api/upload', apiController.getFileUpload);
app.post('/api/upload', upload.single('myFile'), apiController.postFileUpload);
app.get('/api/pinterest', passportConfig.isAuthenticated, passportConfig.isAuthorized, apiController.getPinterest);
app.post('/api/pinterest', passportConfig.isAuthenticated, passportConfig.isAuthorized, apiController.postPinterest);
app.get('/api/google-maps', apiController.getGoogleMaps);
/**
* OAuth authentication routes. (Sign in)
*/
app.get('/auth/instagram', passport.authenticate('instagram'));
app.get('/auth/instagram/callback', passport.authenticate('instagram', { failureRedirect: '/login' }), (req, res) => {
res.redirect(req.session.returnTo || '/');
});
app.get('/auth/facebook', passport.authenticate('facebook', { scope: ['email', 'public_profile'] }));
app.get('/auth/facebook/callback', passport.authenticate('facebook', { failureRedirect: '/login' }), (req, res) => {
res.redirect(req.session.returnTo || '/');
});
app.get('/auth/github', passport.authenticate('github'));
app.get('/auth/github/callback', passport.authenticate('github', { failureRedirect: '/login' }), (req, res) => {
res.redirect(req.session.returnTo || '/');
});
app.get('/auth/google', passport.authenticate('google', { scope: 'profile email' }));
app.get('/auth/google/callback', passport.authenticate('google', { failureRedirect: '/login' }), (req, res) => {
res.redirect(req.session.returnTo || '/');
});
app.get('/auth/twitter', passport.authenticate('twitter'));
app.get('/auth/twitter/callback', passport.authenticate('twitter', { failureRedirect: '/login' }), (req, res) => {
res.redirect(req.session.returnTo || '/');
});
app.get('/auth/linkedin', passport.authenticate('linkedin', { state: 'SOME STATE' }));
app.get('/auth/linkedin/callback', passport.authenticate('linkedin', { failureRedirect: '/login' }), (req, res) => {
res.redirect(req.session.returnTo || '/');
});
/**
* OAuth authorization routes. (API examples)
*/
app.get('/auth/foursquare', passport.authorize('foursquare'));
app.get('/auth/foursquare/callback', passport.authorize('foursquare', { failureRedirect: '/api' }), (req, res) => {
res.redirect('/api/foursquare');
});
app.get('/auth/tumblr', passport.authorize('tumblr'));
app.get('/auth/tumblr/callback', passport.authorize('tumblr', { failureRedirect: '/api' }), (req, res) => {
res.redirect('/api/tumblr');
});
app.get('/auth/steam', passport.authorize('openid', { state: 'SOME STATE' }));
app.get('/auth/steam/callback', passport.authorize('openid', { failureRedirect: '/login' }), (req, res) => {
res.redirect(req.session.returnTo || '/');
});
app.get('/auth/pinterest', passport.authorize('pinterest', { scope: 'read_public write_public' }));
app.get('/auth/pinterest/callback', passport.authorize('pinterest', { failureRedirect: '/login' }), (req, res) => {
res.redirect('/api/pinterest');
});
/**
* Custom Routes
*/
app.post("/logs", function(request, response) {
if (!db) {
console.log("No database.");
response.send("DB is not configured.");
return;
}
var lat = parseFloat(request.body.latitude)
var lng = parseFloat(request.body.longitude)
if (!(lat > 0) || !(lng > 0)) {
response.send("Latitude or longitude is not valid.");
return;
}
var log = {
time: new Date().getTime(),
location: {
latitude: lat,
longitude: lng
}
};
db.insert(log, function(err, body, header) {
if (err) {
return console.log('[db.insert] ', err.message);
}
response.redirect(request.session.returnTo || '/recent-logs');
});
});
app.get("/logs/:latitude/:longitude", function(request, response) {
if (!db) {
console.log("No database.");
response.send("DB is not configured.");
return;
}
var lat = parseFloat(request.body.latitude)
var lng = parseFloat(request.body.longitude)
if (isNan(lat) || isNaN(lng) || lat <= 0 || lng <= 0) {
response.send("Latitude or longitude is not valid.");
return;
}
var log = {
time: new Date().getTime(),
location: {
latitude: lat,
longitude: lng
}
};
db.insert(log, function(err, body, header) {
if (err) {
return console.log('[db.insert] ', err.message);
}
response.send("Log added to DB successfully.");
});
});
var X = [[41.455332534383935,28.840242806755537,113],[41.47988321581552,28.814780845608155,146],[41.054121492354554,28.91528773763266,92],[41.44546500238096,28.806149615397953,31],[41.477671804252374,28.894547272380393,86],[41.22963855086245,28.86920446236364,47],[41.114805047067335,28.92894217272441,124],[41.12042808157112,28.929787062745564,61],[41.2093178492193,28.89763417751023,32],[41.2155336202419,28.886272498044615,78],[41.02353891765832,28.894250600223145,124],[41.43968842803847,28.868206586154496,31],[41.36303097402979,28.854643873675627,13],[41.199359615834446,28.83123203584529,136],[41.27257427385253,28.868722553409928,136],[41.426656222469106,28.92007283155628,108],[41.4062216604312,28.916707872188837,108],[41.32381064660248,28.828598603750628,144],[41.208843331197635,28.815275634517544,26],[41.336521616666936,28.870207435710945,78],[41.058221361005664,28.809955771438975,33],[41.00173809162127,28.916380175384546,52],[41.01722644845025,28.858418585809883,55],[41.43376869149641,28.80057675576054,33],[41.429704117474145,28.836678053949775,142],[41.49324219915751,28.884611556089727,27],[41.080760249898994,28.91000250553763,27],[41.463642802894825,28.878059802866762,130],[41.156871263789064,28.92901842974083,26],[41.23301465241315,28.909320814771228,160],[41.44762425706138,28.82642024002131,14],[41.47843500772532,28.89738270457279,146],[41.018727288859836,28.81938182240509,109],[41.47421975205512,28.869524834184595,21],[41.29035178415756,28.843917073171976,80],[41.26719937078359,28.82342402888402,139],[41.201335103166436,28.894830406084186,145],[41.364322733688404,28.813363095789814,40],[41.036334363475156,28.81314309303231,145],[41.35407770996052,28.856426915085358,115],[41.05990912707144,28.831424979417175,102],[41.21209080376945,28.8296369458237,158],[41.12833243959347,28.907492416856904,120],[41.08568785504434,28.912802997276884,87],[41.17181083464285,28.829505361384655,115],[41.376618471680295,28.927438154654048,83],[41.44739013368966,28.92978287101018,17],[41.24693025358949,28.84123740226931,26],[41.390324722481,28.869082053897614,59],[41.330830499301996,28.879438818723234,105],[41.03409644979839,28.860134640617673,18],[41.294831871509714,28.80087275253294,96],[41.44932534286785,28.848821210722413,9],[41.17492876745102,28.890112687850262,67],[41.058179042764294,28.813314048518205,54],[41.308083973068605,28.928569924560346,61],[41.034826844963206,28.877983957354168,44],[41.36421840094699,28.878398488596275,133],[41.30565634630596,28.842060914604573,57],[41.26914765682771,28.838550467155066,57],[41.36501434643827,28.92210421575513,138],[41.20140976516169,28.923071928389042,160],[41.46250744703217,28.883485411832286,99],[41.20251963693487,28.803671270461425,54],[41.142899422469746,28.853745838655602,50],[41.45628674955231,28.90493104502073,19],[41.2189690087691,28.921018815205183,108],[41.08716206916178,28.906897208906095,35],[41.48470261131461,28.892119989014343,145],[41.48413331779722,28.863663681036936,19],[41.2544941269127,28.833368334193477,84],[41.44808364548726,28.868473283041165,84],[41.22547312918713,28.90948347937927,134],[41.19508742551384,28.860248689646365,92],[41.08108523154126,28.907333272676112,93],[41.13548673646937,28.860550104077973,18],[41.27606770463785,28.878829937833114,86],[41.36573599365641,28.89035975065728,98],[41.148545542671066,28.919757708361576,122],[41.18775292816554,28.857789687931774,91],[41.433582338168584,28.86228830852933,14],[41.31510904638293,28.821717878724016,129],[41.142395507882796,28.91568837606094,26],[41.26669319040578,28.920905020468165,122],[41.006528040275775,28.830429492871424,61],[41.40159440593518,28.81803686831633,50],[41.47474659452692,28.924036649455832,161],[41.344360432389905,28.855820729444744,121],[41.01110007903533,28.82566234551741,66],[41.12235996480102,28.87810841998314,53],[41.198036744854264,28.870132412891092,141],[41.1395952257555,28.821161858503057,30],[41.33616446875987,28.869283944825714,63],[41.14252379363338,28.92836949333157,102],[41.20682509120917,28.90036853367556,148],[41.290398826481656,28.818163104675772,129],[41.245760934785,28.874329548375105,107],[41.13775866013818,28.91800547564194,142],[41.360891294546725,28.822714250314156,113],[41.34513213846763,28.85124001048872,62],[41.04376494990567,28.823943844179286,94],[41.300891793457936,28.84307770658654,10],[41.20830209693395,28.90480373093991,37],[41.124998109150525,28.920520163757356,61],[41.014495472139274,28.817985669639288,70],[41.09752522925021,28.919942551759053,50],[41.00419210510923,28.901774715556765,154],[41.428523712397194,28.83389619293059,33],[41.208594327059444,28.89287850130443,19],[41.11849558224229,28.8518767943939,56],[41.29727402773578,28.89031156876853,94],[41.49940329751395,28.80447855960212,133],[41.39599731070995,28.911929059770337,146],[41.222558784967035,28.908915227911667,144],[41.009395993735836,28.884454494561425,94],[41.043206315056175,28.801884602797063,14],[41.04843285664494,28.89767444061355,22],[41.07931028272218,28.81266845545972,100],[41.17594503122602,28.92197566690573,110],[41.16812672585672,28.87396736200204,53],[41.20290603372732,28.809214244788716,69],[41.487409713883146,28.915968355994234,45],[41.10016830113469,28.878356025308918,158],[41.247926458584274,28.864277818465297,84],[41.14826419409286,28.872423593306472,130],[41.10377511217386,28.89699039066842,44],[41.25337967683963,28.819005266807213,103],[41.165326772674206,28.86925532872975,124],[41.20124353499403,28.835797384288554,102],[41.05080138643435,28.888573306578465,30],[41.069602157739865,28.880095610286418,95],[41.15075902461277,28.824995367589704,92],[41.13737058469701,28.877921025252952,80],[41.00126290505289,28.807136703219626,38],[41.180239234994694,28.88797314960807,93],[41.14607800299667,28.92534830706608,92],[41.145242144664614,28.83295365230132,0],[41.48582047357801,28.89371225358292,116],[41.22297050627251,28.893199745545697,45],[41.40977624488892,28.864274467958097,16],[41.457581378407646,28.818788571228524,34],[41.37272681947296,28.898273918127202,145],[41.31882495715075,28.91189485980104,65],[41.01417698167441,28.806522136023432,43],[41.25519585343705,28.842477223192617,118],[41.17974242941118,28.8531458344551,115],[41.28257571940359,28.822614676602658,54],[41.23999604520778,28.92421847465518,99],[41.46542786863382,28.84353038814214,93],[41.025019031115534,28.891153467473327,63],[41.03541158762723,28.816763796850857,8],[41.02373246143835,28.826492823000272,14],[41.49267295480659,28.910486610174445,151],[41.20509986320921,28.880353342259053,91],[41.00130519509704,28.92616075209784,135],[41.24289933273157,28.878933633745778,137],[41.237384600051364,28.83751099930297,125],[41.01115402696723,28.83955495481809,45],[41.47687573826809,28.839576851212147,118],[41.2091764724823,28.84106622503756,113],[41.45931890541025,28.818253193628376,109],[41.47096304144503,28.924163632288767,48],[41.43765599426025,28.808751154927737,117],[41.353203742078634,28.882402879068756,120],[41.032502065534594,28.86905737559632,61],[41.25678540946441,28.8986591102823,112],[41.18550921781541,28.926303364354204,57],[41.04999491685752,28.83902147224866,83],[41.0954741871881,28.87619174224039,86],[41.16230400595201,28.842409769569212,133],[41.02712862515525,28.84661759233284,102],[41.107783226657034,28.880738602500294,25],[41.29479726142211,28.92573408862266,107],[41.481421544586475,28.820534464925007,120],[41.07991139815473,28.8947715356661,136],[41.265405422055366,28.809361923665033,43],[41.10392072919665,28.885095916248275,151],[41.2845662337094,28.864963124043022,143],[41.10496339172063,28.918494909236724,44],[41.00706433189457,28.85171667191989,60],[41.49018923317111,28.853464132787774,59],[41.41797249012686,28.86277878028472,108],[41.3093842473105,28.919362055161695,59],[41.11568711252035,28.927482547864955,132],[41.09358778411105,28.85298807228684,34],[41.056242613207054,28.882424486435518,110],[41.495122518749,28.85386899138614,106],[41.370092724414725,28.9231802095671,149],[41.48061035513351,28.883155401932086,41],[41.27979213779863,28.901565230965907,144],[41.02053117567555,28.854100249843153,25],[41.23063621061221,28.903380430126433,31],[41.437727153621026,28.871798608858697,95],[41.168823275120985,28.92716652302823,29],[41.16991728783754,28.845109589930928,134],[41.021733455747224,28.861610615912465,14],[41.02296056098848,28.875469433527655,45],[41.393111695685754,28.840392796711022,19],[41.036497604832995,28.892289824373776,65],[41.477909405251985,28.81900786940497,64],[41.248670405596556,28.87182988114384,104],[41.456774319742806,28.924477204816217,67],[41.2431887869934,28.855585334805397,146],[41.22785643318381,28.864713134645573,99],[41.31398856711606,28.86690685539414,102],[41.1577811749668,28.832053102033065,144],[41.048044395591326,28.883217180404262,106],[41.487980479102575,28.84701397696202,90],[41.04440652485084,28.862541551812875,39],[41.336294604564564,28.825317946015733,76],[41.46713398090391,28.844130849902037,61],[41.12669275789644,28.86579057320056,44],[41.161664191892136,28.922318054125775,8],[41.389113417850616,28.820030722228168,87],[41.452719376953084,28.924628560647513,107],[41.240891026677325,28.810417418891763,59],[41.0855732809198,28.801634630812643,137],[41.3148149872992,28.87165140549623,13],[41.412658893154656,28.810431455704652,23],[41.0046270056676,28.879668428425305,138],[41.12308954144481,28.81765535042803,151],[41.034802820765606,28.83302822234572,110],[41.280155641905615,28.855575158944703,56],[41.009373707551944,28.918585657310377,130],[41.22557896328085,28.815082780900976,55],[41.45373300354846,28.907617789059262,52],[41.223367383469004,28.8918114221721,100],[41.25630786503819,28.800546155735535,42],[41.02336219138199,28.88936869439022,112],[41.349674600134506,28.923976833324033,46],[41.302172859291765,28.81698026238406,117],[41.289682103279574,28.887216157477265,115],[41.47682140522505,28.87782375811078,68],[41.381767084769734,28.836760177269404,61],[41.4529576764571,28.87632032983628,103],[41.1574945715468,28.881750007723095,14],[41.21039808524609,28.905103375378058,101],[41.28430528840287,28.91320935252936,25],[41.42095344692627,28.845258900313077,53],[41.20494658895765,28.870541209970714,45],[41.06062610882856,28.905524712830847,91],[41.34119518023711,28.877049277620443,42],[41.3481584539657,28.92996192868384,25],[41.03532808603106,28.85575907349603,112],[41.37764608318726,28.85519953383383,74],[41.05316886910869,28.80092772683633,95],[41.012252406022455,28.925194993721497,30],[41.082744876582986,28.80792772811682,52],[41.40694130517427,28.89882049064914,123],[41.01770987284941,28.806065603097935,142],[41.05313352338382,28.85191823576147,43],[41.26969116082154,28.871035204188818,87],[41.15795011198793,28.842160898399978,162],[41.31016840376345,28.810772903366328,41],[41.02926507233544,28.921995656206075,62],[41.08807964517527,28.852029105635292,148],[41.07678527317313,28.83318017285329,88],[41.02485753979538,28.90674751164724,142],[41.03981679364852,28.912083320170478,106],[41.00330228892577,28.91145827414127,99],[41.245747602522805,28.838350148089518,47],[41.10200579435655,28.89962491035899,40],[41.32841395957462,28.887845838898354,50],[41.33982247788241,28.856187060204494,138],[41.327644741479986,28.87836361975459,106],[41.16221488962599,28.893511284447474,94],[41.355981800025695,28.849707283915837,131],[41.19595399213091,28.896965138397835,28],[41.37098574621216,28.83353201579515,94],[41.24513423607678,28.838344445737867,102],[41.054452055179546,28.879747171202307,98],[41.429397395185745,28.902112382569364,148],[41.462171935407454,28.922429603230714,36],[41.22390893981591,28.831134510861265,137],[41.310022719860946,28.894013706837224,54],[41.21349737334572,28.80189722931753,137],[41.169220548048735,28.860955883631966,141],[41.12703275008725,28.912594473033923,120],[41.03711471844897,28.815684463916188,69],[41.1893499069689,28.92807716780481,31],[41.357182117884456,28.864432933102094,148],[41.32038670852378,28.910882573679046,124],[41.374238546827605,28.918322556113377,82],[41.21866474425091,28.927886043861115,117],[41.185796506042884,28.908456398691296,87],[41.329796314321634,28.851588192166112,35],[41.23267891923915,28.882848238155688,50],[41.186381595332904,28.89532032336411,45],[41.27167428032676,28.88485041032581,10],[41.21988303963165,28.881206942145926,82],[41.10708168844048,28.814790378588086,45],[41.25719107018227,28.805812456577712,101],[41.13915407986269,28.8875953357453,79],[41.17269596176543,28.891092902598913,90],[41.29196785070873,28.853956050215096,107],[41.15841083881616,28.81908235266933,48],[41.2567063918368,28.885187438537343,69],[41.436193053840796,28.894530434625818,146],[41.35553520631998,28.822194897387128,43],[41.26768111584733,28.89474334505656,109],[41.02539360556011,28.81150388828857,124],[41.46667455456569,28.80998241379091,46],[41.43973035443051,28.926778218893265,36],[41.351346077106605,28.831266856407943,48],[41.053621564440924,28.828449114198133,111],[41.42229420327185,28.92045110594767,29],[41.46494395111738,28.882794595639126,127],[41.47065790083162,28.81041779145082,80],[41.3779127734343,28.92942994574698,64],[41.2579175015371,28.898915581894254,139],[41.24173449824174,28.90974504147176,89],[41.05480674758832,28.804368139346796,135],[41.488309202230774,28.876178867397705,23],[41.31937705528166,28.814076035858893,102],[41.17484655107977,28.916821199601557,67],[41.34101376727812,28.920463640150977,86],[41.23641401763635,28.847996543691526,141],[41.00083741936417,28.839050703146167,110],[41.06371604593267,28.892819498831535,16],[41.36621424939983,28.899121524080446,79],[41.122424721281384,28.85671237408831,113],[41.315096699951766,28.843799583544552,79],[41.23906410912077,28.89548223025495,113],[41.20998998692997,28.811196332005782,53],[41.26947043529694,28.801489498118183,113],[41.287727563080665,28.856517514243627,103],[41.29049499673662,28.83264257701793,92],[41.18902684085568,28.835027065998847,78],[41.235821573382935,28.801928286831657,76],[41.273564176903164,28.856881947348782,118],[41.02653356794317,28.820984551978036,101],[41.13129628293075,28.808338963366047,130],[41.01006596060447,28.919157201304735,46],[41.04245133704111,28.90450845284151,133],[41.21424543975523,28.806200633541117,24],[41.12286045063461,28.878650157145263,154],[41.446036613588056,28.836281728060666,155],[41.47598046582431,28.816146618301815,25],[41.197648633512706,28.90409930134573,119],[41.03682781333201,28.884815558620247,105],[41.111470592891315,28.84346333180972,151],[41.31296942981861,28.812079639571675,15],[41.06206879122405,28.830943267118215,108],[41.02898809985422,28.835402253346718,135],[41.245024780912225,28.91710678111137,95],[41.01454590786596,28.809604108597515,14],[41.258622674874466,28.88924839915862,140],[41.36053960486634,28.833533789493487,97],[41.266868178338676,28.90298268476809,33],[41.38669118998864,28.84384063832779,18],[41.16904748152785,28.801761165154165,26],[41.165906809581536,28.891481255007257,114],[41.091939806721655,28.86503773345907,140],[41.14722296576292,28.912001384088107,143],[41.10738091474799,28.906668591445523,79],[41.2179395201756,28.828330099032417,85],[41.24362506468404,28.895113363967003,134],[41.01795236199221,28.802909799059695,49],[41.1629361515343,28.83033044510408,146],[41.03819887414636,28.86184455286656,30],[41.259701239871816,28.82088150589283,138],[41.02845701312101,28.899109829163567,50],[41.289560621774356,28.82293877815544,18],[41.163121718044344,28.858556337705743,56],[41.00772275836679,28.8387638547382,30],[41.27639092433079,28.82478915139395,30],[41.22960575413405,28.849358729308747,69],[41.1527866921624,28.87616243333069,57],[41.065203459829824,28.92467936231651,34],[41.07941664421523,28.82917779477246,40],[41.482518383471586,28.89233089887777,17],[41.4352212813022,28.8485088119599,32],[41.058294113975556,28.889320610182697,3],[41.24203935362803,28.871894598082402,48],[41.008065755999816,28.852484554237463,29],[41.434261138953914,28.81217191164973,139],[41.055342225040846,28.83861790053541,59],[41.24853077985225,28.80502419547675,122],[41.02323918087889,28.88775929730781,144],[41.286591528108275,28.91841268636147,130],[41.06146341440744,28.805398112513892,48],[41.2631213877718,28.822795526037755,114],[41.430801714604144,28.852845319236653,74],[41.31809072037778,28.8021880530101,95],[41.21830682873984,28.893915310176745,36],[41.36688564283898,28.82089360358476,31],[41.10949395781371,28.839009292255064,3],[41.02467161526531,28.801466581057113,43],[41.37029176311094,28.867731701586553,55],[41.26774070887152,28.807172585493493,123],[41.42884602865022,28.851664261386514,85],[41.26111774908366,28.918382231022,34],[41.27367500173461,28.88045732183448,99],[41.35654197910186,28.87347179468158,108],[41.19094146573199,28.92515141003617,64],[41.152696952461866,28.80107314394521,107],[41.222431537561256,28.810736754150895,158],[41.184006185427464,28.89193917052865,72],[41.49160073836768,28.917297907696128,38],[41.23011361258435,28.912767287613626,29],[41.4491056170065,28.83312479162194,64],[41.29443526717415,28.843982998183748,105],[41.22166228344997,28.92784122669397,53],[41.18939211820944,28.929480294283273,62],[41.48630968490044,28.904391523311002,80],[41.176644007265196,28.82031532692342,101],[41.26316472537001,28.82190749366311,63],[41.06288740027493,28.843097565914892,77],[41.28381465698766,28.89558548365512,64],[41.25849424658892,28.898591396871907,22],[41.215922953971514,28.88496607812891,91],[41.2547282802136,28.861814074457374,129],[41.35571486066824,28.9292204691138,122],[41.026409449436336,28.84027085788985,99],[41.30698829435426,28.860454657601938,62],[41.193555971805466,28.8225009075737,120],[41.18438952750667,28.896471287624543,134],[41.23426009484373,28.801778278708053,31],[41.100869305806306,28.81325509483582,19],[41.42766108029537,28.843805593334288,159],[41.4737957860871,28.84617629608278,38],[41.12034025192385,28.88704369963178,35],[41.180312310062874,28.922871572752587,145],[41.161913959594266,28.82224542847914,148],[41.312618964314716,28.856159953638194,101],[41.322180044228425,28.838766964308455,80],[41.41934603963236,28.86763049768361,152],[41.22233847472511,28.884000445027215,121],[41.30165768629631,28.805192460284303,117],[41.136142471715964,28.91472144955654,112],[41.33921398650882,28.90494387246901,8],[41.259203160210106,28.857160271325313,144],[41.061715710846215,28.90593102579556,57],[41.17479194855158,28.81403002693471,59],[41.43262832348352,28.92510633739302,17],[41.17965562366176,28.827382448146942,135],[41.00294273263678,28.841515010926496,122],[41.46169337922671,28.891723323075375,114],[41.03090125082114,28.811316083028164,14],[41.42379538673943,28.82408866364199,21],[41.34045933424648,28.84902019330649,106],[41.32673389176907,28.92456299976248,63],[41.24584649728031,28.916375497858564,101],[41.02890154066658,28.87537560468932,113],[41.21658706552747,28.832555076754,67],[41.00386509732589,28.8757578149956,20],[41.36371525540563,28.924311874974826,77],[41.24177472742723,28.918540408705073,157],[41.15301488566017,28.908753385151282,140],[41.16038427103476,28.836471350282203,138],[41.28915807112922,28.8350578413097,131],[41.19705521386432,28.92357456733267,57],[41.37377849258304,28.856278376769904,13],[41.223045709520356,28.85649027365444,120],[41.234364072934646,28.854751819020198,18],[41.1643045011731,28.91693097749788,125],[41.17042015028071,28.801003226590637,100],[41.20598003287071,28.899730623798064,34],[41.49484848265578,28.841269442320097,94],[41.076692017818246,28.826068622012627,46],[41.14250558894047,28.807928786245725,50],[41.17366193707695,28.828035572678534,53],[41.34186479356449,28.860872662426168,28],[41.24366536866776,28.90580031663712,147],[41.161570519842115,28.876964991182888,88],[41.10654269899503,28.88885770615398,42],[41.19761124351729,28.923121865830815,99],[41.3610825697191,28.90423129191148,23],[41.216373443367,28.857164015453616,86],[41.01196214002861,28.851153889764774,160],[41.20120039796706,28.804119540243455,56],[41.47916016207626,28.835838250279206,10],[41.4385363961069,28.891566085991787,100],[41.45528497122154,28.88482061676604,33],[41.05989285978148,28.842622456700944,58],[41.38419731677559,28.858965567796123,28],[41.064547880623074,28.892394714006556,52],[41.46532256739895,28.832601107800034,122],[41.471700441317026,28.887832224801,61],[41.1564366434275,28.912184468533276,18],[41.42297052704723,28.867353992149248,146],[41.255949328942734,28.84015330861328,74],[41.32494702619722,28.87410869388665,42],[41.197431970911495,28.90112382471698,37],[41.27054870684508,28.81822110860307,136],[41.02308236990297,28.889899124117143,146],[41.23742128420204,28.82945550736321,165],[41.14105336767169,28.848289306193017,62],[41.47174702731811,28.904290859452033,105],[41.35445359422128,28.82467182637246,115],[41.08123778232603,28.924422086132843,51],[41.4531952027352,28.861381721159127,57],[41.250698744709155,28.850811847443268,64],[41.31429106122132,28.91489474690673,86],[41.3594784619139,28.925758106545864,17],[41.09131227531824,28.822078450883296,45],[41.214508776049435,28.83086348319913,89],[41.43418361936539,28.826162218221025,158],[41.353615163346795,28.89394657807348,49],[41.093190699529906,28.87366638445774,68],[41.23336011152076,28.87042848771688,29],[41.27300415641262,28.884783657683133,71],[41.12498365270877,28.824918582820597,61],[41.06698043614609,28.852787978556243,47],[41.10821035347253,28.89154106643762,94],[41.22767348350036,28.84605350626611,33],[41.17575995495713,28.857345742885165,147],[41.38046301496553,28.877796747407803,26],[41.36038644189853,28.884879147814587,139],[41.0795751386625,28.82217607400777,93],[41.246861031685896,28.881609811524093,108],[41.28491455764251,28.81619744191286,94],[41.10902648684247,28.9279345852862,39],[41.10061985978821,28.881033196954498,120],[41.02011774337656,28.80905199374857,34],[41.16457874474443,28.857441995113618,40],[41.04673352297251,28.87586521875107,78],[41.339370720361806,28.907551868773794,87],[41.05009360444837,28.91977367969552,56],[41.427187663661286,28.81228013337493,141],[41.473757362998285,28.891878909825916,129],[41.49467832465658,28.811170467427736,98],[41.46335983210896,28.904938063208654,87],[41.002082137934096,28.908064385305863,53],[41.12721986411941,28.899527896000826,39],[41.316258656948825,28.85852014316638,39],[41.27645504036572,28.903888173248436,55],[41.027123785866074,28.889164087112533,63],[41.318803062153066,28.80209759473874,131],[41.03576307122935,28.862094877910547,30],[41.2326369011421,28.905663099298227,54],[41.19738350151036,28.827743327330747,40],[41.387708652273325,28.855986663522426,50],[41.32826177159083,28.907061966369415,142],[41.23818379224409,28.86295164580498,54],[41.04300486416229,28.92629201243144,64],[41.089918271556385,28.90825086279818,71],[41.12591530237767,28.83536926020921,140],[41.22742548566428,28.896478624110795,42],[41.13177284255576,28.82096436124848,6],[41.33289930243061,28.84612859099674,68],[41.02378232204706,28.85298162335184,47],[41.45377097884563,28.884681283875338,104],[41.34236456394778,28.834181941252535,79],[41.43032150136944,28.82746747607935,88],[41.200490958436966,28.82536561615092,106],[41.273570077654234,28.86616330957853,94],[41.44253456067736,28.92521299803155,126],[41.05202048524469,28.84556466273315,100],[41.00569158992545,28.915942490838585,145],[41.057460108709684,28.915247536318244,148],[41.0740243864034,28.81280699027126,100],[41.177170394534635,28.85859827043979,121],[41.423118449745566,28.92029482668281,71],[41.3038483552234,28.824128705483403,157],[41.10984408256356,28.912130953527893,32],[41.478101984554606,28.8447020391864,136],[41.04788332793923,28.841912619014128,43],[41.02431322924018,28.875392959323847,85],[41.18636300249983,28.874485748224753,62],[41.49067066756499,28.8487855016586,10],[41.383997025960646,28.840797984622217,55],[41.08028035696821,28.927874325166954,40],[41.20027876403073,28.866958810999627,147],[41.11762201763837,28.872793010366195,69],[41.257773455530774,28.872475524667973,61],[41.34272683656264,28.83684241745036,68],[41.44552161870391,28.857114514202188,59],[41.46576343824315,28.864589803713226,96],[41.07235914159619,28.896138139316545,118],[41.11053763333504,28.888195877667677,132],[41.336973032399015,28.880128072909415,65],[41.30910115374403,28.906662254902,132],[41.12535070094652,28.912584329222096,115],[41.03343090971509,28.887647271672126,122],[41.12821729673991,28.901383463037185,18],[41.34743379205369,28.810699686320422,33],[41.07369861526312,28.84732676312724,48],[41.220546669304944,28.865125672962353,109],[41.31541557312015,28.91696332611717,76],[41.48044064485319,28.849310669876864,48],[41.439000470831644,28.861034722650135,94],[41.332612792632425,28.898309542469658,143],[41.494015312098895,28.8980244837957,33],[41.303806545230984,28.88062432972039,91],[41.32312718487708,28.900822829470044,157],[41.134081993105724,28.86227511075972,117],[41.491862893034,28.889764980538903,72],[41.38038334578377,28.87108801584364,86],[41.459878335819546,28.834230562957124,106],[41.24207215909484,28.89897276807841,48],[41.115584016776445,28.829840407754237,80],[41.28245897085872,28.893215193821842,124],[41.051947548605035,28.854332241632786,145],[41.37384183500737,28.905326539521255,127],[41.20174378003516,28.9263197440078,147],[41.38616393754539,28.837750425796596,63],[41.22739043400359,28.904095016570732,55],[41.163472794414524,28.825110655687297,47],[41.280958495451095,28.830838591126714,125],[41.28105269328886,28.821568242416195,152],[41.36291812477271,28.914734311255796,154],[41.036979523472986,28.82099510781458,37],[41.36587347933778,28.881656810775482,154],[41.0440788548196,28.84854197286917,54],[41.201223836579665,28.84445404593239,145],[41.46578971077054,28.85148948555096,43],[41.25349489941884,28.80025941790187,62],[41.387438533886154,28.871098168741746,17],[41.025914664449424,28.89777167956454,158],[41.1897911637618,28.879487596565486,51],[41.130394613790614,28.91043731447218,104],[41.46651131991181,28.92361715332831,114],[41.08630988074741,28.83088955329245,24],[41.38329523503627,28.849695502702556,13],[41.33838586426049,28.86716803303687,125],[41.18819373708737,28.918795430569226,153],[41.49290644098857,28.803167334653974,145],[41.26766884157466,28.914780520241486,7],[41.27985379775433,28.856849320155128,79],[41.22301060581668,28.804327991954207,19],[41.10587303442173,28.83918446663732,79],[41.144758460105805,28.808440061031675,127],[41.393887982567676,28.91013028033522,85],[41.32245918234551,28.854443694250357,32],[41.121340117236365,28.834558685753038,144],[41.361365386697834,28.86122203686334,134],[41.43538204128976,28.864405707768817,50],[41.41943764226859,28.87948270986255,137],[41.14699548002938,28.892764498350314,44],[41.157676596274655,28.860239637456633,33],[41.31464881007259,28.849277455237296,125],[41.48455430578168,28.879751238622767,26],[41.05929570096578,28.908867655094326,60],[41.313353658216336,28.832768505979,146],[41.499102941885994,28.822864419429056,92],[41.050206404994306,28.872546561022286,17],[41.07381415096039,28.820640158695515,30],[41.42564697317526,28.920517002134886,102],[41.45301399047811,28.832284689864043,151],[41.17457087804086,28.923728609305947,46],[41.0694752286746,28.865543706047,97],[41.46516602485069,28.878354204578827,94],[41.229639197043554,28.906078669086575,111],[41.02775297499618,28.903843797111293,43],[41.22136328978548,28.8645011824793,82],[41.31496328879242,28.928625314246105,71],[41.12014709662653,28.829051105626974,144],[41.075977987238105,28.891159594479067,97],[41.42638054367318,28.826533703981532,103],[41.41182619045554,28.84183751866088,46],[41.30457662786651,28.920668154457147,11],[41.4178883497136,28.82923175371107,122],[41.00153677752575,28.887504464471753,71],[41.47733145657434,28.849370228549816,87],[41.22367358608629,28.8857243030499,53],[41.09775789697053,28.858014169629207,59],[41.03950466597703,28.845625318967663,22],[41.01947764855979,28.85633407521015,74],[41.279204037655276,28.838725340070773,109],[41.387378538507285,28.919014816911417,108],[41.28633318747903,28.821524124451205,60],[41.48944400616762,28.87087233319866,107],[41.1676032487081,28.819472758778865,123],[41.312313063331025,28.816128107252954,30],[41.38551564347933,28.868201825839584,150],[41.169102518968096,28.823604143968996,27],[41.47575267229895,28.817459129240397,86],[41.07690221413625,28.85960635224185,147],[41.08669036868029,28.856662246904616,55],[41.400439109469936,28.838175398528886,22],[41.12762047862219,28.89866804158328,108],[41.07389007437283,28.87142379323231,146],[41.40329112700856,28.87311374515712,127],[41.462453308815384,28.807482580507962,101],[41.259406319770704,28.80369283891196,149],[41.02244575953926,28.891268692510977,64],[41.14597669902776,28.896509550535214,112],[41.087006071085895,28.90552783209034,121],[41.38604258985398,28.88081114204026,98],[41.46330145253353,28.80147333062153,101],[41.302261517282474,28.863952775827723,41],[41.49874608235892,28.826066107051204,31],[41.0731776955055,28.907704322350025,122],[41.26179566666366,28.832813105739337,23],[41.27281045365266,28.929259108190774,55],[41.151872610095246,28.923082299680022,17],[41.00538328634801,28.818026794661805,117],[41.05524187741764,28.854268197919364,141],[41.17472491349907,28.814297048824585,24],[41.32348875007231,28.876942895479804,66],[41.35000178267205,28.822222282065262,18],[41.07942584331788,28.846307018331544,80],[41.17566592527558,28.9117254213629,148],[41.069662099002386,28.853801730668216,27],[41.30011592709181,28.860349263697678,130],[41.34479025537008,28.843519549282792,63],[41.044318790356684,28.83072504238958,100],[41.03047864855282,28.917013998991948,110],[41.09287784470242,28.8584768651675,38],[41.22769037875174,28.89950204643667,61],[41.08929017209401,28.802698949543664,110],[41.01761579693296,28.80984438921357,103],[41.49079749174119,28.873719446626072,155],[41.437155851814346,28.80206919019811,19],[41.14946973398547,28.90706535654341,102],[41.249808095129616,28.88159089786496,105],[41.442929547491424,28.808198085589176,25],[41.47024420306612,28.817973109065214,111],[41.12324981253171,28.873017021953025,39],[41.1899504617212,28.922660518273947,12],[41.28139852132794,28.81584440614051,106],[41.27453789012438,28.829531490930705,34],[41.34522688519185,28.822717364003402,63],[41.24627282544076,28.87900548675272,71],[41.05958933626858,28.879011512084514,54],[41.41509619922418,28.856735893448704,143],[41.49907915114415,28.904077596639173,167],[41.29366144137581,28.895966038033986,41],[41.426571562511164,28.809576469635356,106],[41.36406776071918,28.881541111817302,151],[41.00115930689264,28.804114618300424,95],[41.18218045161435,28.875231031236172,60],[41.00058299512022,28.892794286698773,20],[41.12193104731448,28.86925277456075,20],[41.11460214801984,28.905047660346725,91],[41.069185722623835,28.888628329524117,65],[41.27020534620005,28.90802580070535,32],[41.025279391299605,28.833201003285343,85],[41.267089142142076,28.844869613197925,62],[41.25775735725121,28.880697149629828,135],[41.262867933032084,28.908001679316044,99],[41.49016299985217,28.893383683470006,133],[41.33354662681284,28.923253616408612,124],[41.484996249588924,28.857868557153914,38],[41.12242243839474,28.87955935880122,144],[41.13248994560069,28.9109295736224,3],[41.488336500215475,28.864499369231712,57],[41.45504621515051,28.812868357577155,124],[41.2231853475909,28.82623226411506,42],[41.32205975507539,28.83552275353422,105],[41.40494858137593,28.88304656868023,124],[41.428724319686815,28.847712557315216,102],[41.17886483814454,28.861109369452958,57],[41.35747613857286,28.855697989221017,142],[41.32478675943573,28.92102497134655,70],[41.25231939305124,28.806355039639207,16],[41.050735934960834,28.82858490179705,29],[41.09454914777459,28.892823505594844,66],[41.113553774936044,28.815481846169746,41],[41.432956697802936,28.902709299065872,20],[41.335636037178716,28.831056233065272,112],[41.369391925698736,28.836495693323098,29],[41.41944772430768,28.843816519327294,87],[41.13602791749085,28.82543062769409,67],[41.153061280711974,28.8045207791003,143],[41.36919777828975,28.831108660968294,45],[41.344405398768934,28.822050667745632,9],[41.14188669625611,28.815994437749143,148],[41.10680094274568,28.836926788917893,127],[41.342792038256015,28.92092846760326,93],[41.440065987225374,28.80977320938351,13],[41.480573528700035,28.82084935888583,55],[41.17352750242345,28.918743554755515,95],[41.079306180070326,28.88245809890002,57],[41.22315475658297,28.803730298430377,117],[41.049127098827874,28.867704931506506,61],[41.267447562520225,28.844466706731627,78],[41.38721152009688,28.811573106309535,59],[41.360051060797005,28.867359545068734,110],[41.05933788112112,28.885304949977172,49],[41.08472263781439,28.813760515274744,138],[41.36508977727745,28.925662589723327,18],[41.27635513570741,28.91988534322203,125],[41.097549123221135,28.826850602103516,88],[41.11565828363685,28.927440100513312,66],[41.440504637150426,28.808517652888863,97],[41.318358382653166,28.921109606461588,40],[41.119432167324014,28.86053076085427,134],[41.43723555780142,28.914479887655727,45],[41.24347418368701,28.898557547797235,46],[41.35543057420984,28.817493000549817,27],[41.27349497941129,28.85958907699969,88],[41.107231984246454,28.85654398174405,75],[41.458865042030574,28.907122131370485,132],[41.046455432792634,28.889690084502657,61],[41.46665288168154,28.90887513176219,151],[41.30992790719428,28.802808316952976,152],[41.427675926890906,28.908046412074608,43],[41.11559909412457,28.87511615385584,81],[41.09500229250604,28.891978162878466,32],[41.06133675036588,28.92891410647212,123],[41.31219733165942,28.87370486303192,49],[41.16913976939857,28.875210867752518,111],[41.103331701798744,28.877771341102708,114],[41.42450199689093,28.911977890399093,34],[41.13551874184176,28.862846828114773,63],[41.487194178519346,28.800546248308322,22],[41.01214473522681,28.82439868656564,89],[41.06132577484984,28.917078593276727,66],[41.01051002451394,28.862496853710194,152],[41.34519684815076,28.840477642158998,46],[41.027598071102794,28.86513986344841,76],[41.32518926863226,28.805995481026898,146],[41.433621089349344,28.912542930295302,64],[41.23038709994493,28.923878129228616,18],[41.20127942945327,28.81197911836416,11],[41.42876403876789,28.914450900691815,72],[41.11489334267354,28.90821768323167,109],[41.14530249552387,28.860407480891283,59],[41.06734586357593,28.80184494689068,144],[41.16002648914282,28.819973390564122,53],[41.382036839566894,28.824690999093363,143],[41.248277441595086,28.89332713175589,163],[41.49705672515355,28.842545579038227,78],[41.34475970602214,28.811803438316826,112],[41.19876266383644,28.92264058507542,146],[41.371784094036684,28.85974323233557,21],[41.38170175412011,28.874580655322642,132],[41.03920377952154,28.876498200606598,60],[41.218266051596494,28.87091556305512,105],[41.22664513561164,28.814716241403886,83],[41.33517902707177,28.842464887393255,26],[41.09748741238949,28.86898450606344,85],[41.24882165814762,28.805527794224915,58],[41.35088265927015,28.835419503190913,92],[41.184261320256375,28.893546023418853,125],[41.38976067079908,28.87644472540421,132],[41.221869370880654,28.889235239467574,47],[41.07343771746163,28.837117811084713,71],[41.09713634135553,28.87361976484421,48],[41.08097685349527,28.862789986216747,17],[41.23857485938488,28.926980058099836,90],[41.475030809025434,28.916707222274294,32],[41.334774705842186,28.893245404006485,89],[41.375486815466665,28.80000169672134,60],[41.36155332550373,28.819834476044793,74],[41.32308475394156,28.906653714048733,37],[41.020664876350004,28.90634520740436,108],[41.41346723561704,28.91992039175209,82],[41.240434895506766,28.89555996436447,133],[41.3322604345596,28.90950569808515,20],[41.044577071397065,28.81276251026678,57],[41.1154003328362,28.877978749881148,90],[41.12764847857344,28.891892932752828,61],[41.1205059232172,28.918839768373545,52],[41.261241560333815,28.854407892491903,50],[41.10275780888471,28.800689893049913,37],[41.11753192535144,28.856820563035793,142],[41.29814860058172,28.861126363830056,36],[41.0125532570405,28.898988900525648,49],[41.1650386100598,28.859187759035652,74],[41.06562779034078,28.878628112629116,118],[41.17767135122752,28.87338224950958,54],[41.40002780045191,28.834795722884845,87],[41.17542847527223,28.86347746485197,46],[41.41385802045411,28.80712502317216,79],[41.44772357657422,28.917231797121605,65],[41.43500056073389,28.8608883591259,16],[41.24976499960913,28.889889934209695,77],[41.35902997838141,28.863421247690603,47],[41.32154256642064,28.810675506748634,125],[41.44962647098817,28.867932516790614,86],[41.04419840945655,28.928384351501332,121],[41.08364458803458,28.836460696221895,81],[41.12980133182376,28.83343001557917,26],[41.32991460741397,28.805020731555267,103],[41.341994704112565,28.837177106658146,162],[41.13969952897451,28.826160923846686,107],[41.402690969602126,28.916741498643997,110],[41.27451222119552,28.855544039992814,76],[41.37234433998038,28.810185707640464,22],[41.20459971331535,28.834620060078993,118],[41.22206700228483,28.85041750148543,20],[41.19345002382602,28.917599955267537,71],[41.12498185238932,28.876294471191002,102],[41.184248733613764,28.885356538090413,40],[41.33367276762556,28.826533949288763,107],[41.29004931718161,28.816984532334263,128],[41.23617690876042,28.884252804905977,82],[41.23317755573611,28.85320837878084,32],[41.35921160335348,28.897845394563078,83],[41.20397030824723,28.912064215166566,34],[41.106438438972816,28.881563559390447,25],[41.00019838305886,28.90537792207111,142],[41.03328323355671,28.858022405007468,107],[41.218376463135854,28.85572156311647,54],[41.11115266658241,28.89414918462462,119],[41.333486603031126,28.815684086647423,93],[41.06073923806045,28.912030998207147,26],[41.126355008169014,28.896985428105978,88],[41.46360508835867,28.915600208109833,66],[41.371443751283024,28.872101688899683,73],[41.229253069381684,28.883229660360346,113],[41.3230303451996,28.832088664497416,45],[41.18771218341435,28.84996280622097,52],[41.132601229962106,28.927422940395232,25],[41.21570882395471,28.806655793545197,108],[41.09215810051311,28.817764524308256,63],[41.02987066828567,28.897827522218062,71],[41.09561034252448,28.874231031116576,48],[41.495766653924306,28.91461459022285,29],[41.16250960672925,28.926507951522517,128],[41.47275925739513,28.8183236607103,81],[41.15832988511285,28.898907106964938,144],[41.05929322449957,28.879527783751918,66],[41.00065160616214,28.87791618258499,21],[41.04524667188233,28.816936467172983,144],[41.425445779521574,28.872309644547002,123],[41.32254327956294,28.80016845473129,23],[41.113468084326605,28.90179371250916,146],[41.14743600045365,28.926094606756866,124],[41.33162159295796,28.82864972090915,160],[41.17714291046535,28.913623662906087,31],[41.3117717917203,28.846198218808734,83],[41.197527163707214,28.87257761960303,70],[41.25594251442532,28.90500332203949,40],[41.19049773470129,28.8990408224122,30],[41.20678929831708,28.806550979236956,99],[41.33305198916509,28.83067883031167,122],[41.46211779957057,28.89700775747941,101],[41.48035332645888,28.898778117586843,50],[41.090469519724,28.818334059472935,104],[41.36843579936,28.88243452420104,29],[41.19135508431915,28.855326906643384,118],[41.17019686203928,28.80128626586357,26],[41.30590754938203,28.89736638050327,27],[41.21508728340814,28.85563699288948,56],[41.39711404716908,28.867593789552586,106],[41.09457276392219,28.898273667290255,107],[41.415065502160424,28.83616752550196,58],[41.44249981482845,28.81460691397469,157],[41.01442824549876,28.91281229033936,152],[41.367683701286076,28.83224674350942,19],[41.48006196527842,28.851744146655133,44],[41.077779309965536,28.88109781186884,83],[41.38756327674041,28.85313883951074,103],[41.30226373003326,28.86238071174324,14],[41.46828857574078,28.807755661659527,57],[41.02199251994031,28.802195871600546,111],[41.13815903162881,28.868976007630664,136],[41.33527726778791,28.91897918292143,93],[41.04746590032718,28.895492270976,123],[41.369924957257275,28.814373521002544,55],[41.08351601639895,28.914168064495794,120],[41.1082914479765,28.912056640682863,115],[41.28662685369519,28.84644997259736,34],[41.124404135293126,28.899285805336696,132],[41.154012201381725,28.85181667242774,151],[41.36593687995283,28.83339670910284,39],[41.149474914498455,28.844470515646595,66],[41.36102451664604,28.91798556637371,27],[41.00353459414766,28.86112878663579,27],[41.47533615247238,28.824604247729873,37],[41.35574720976116,28.837326818140546,83],[41.02516114298116,28.927201672634435,62],[41.36696035278423,28.80158557368794,81],[41.130946116179594,28.929537204067984,149],[41.06070633209321,28.833503487654756,141],[41.38344034554157,28.879239889693338,102],[41.34347767945218,28.845387472152282,48],[41.35079026173833,28.870212841178102,142],[41.25983586241854,28.811282875998547,17],[41.07854951651585,28.924580581494165,80],[41.28382444504834,28.835787583380665,138],[41.159515587712335,28.800148453958336,93],[41.256579192943796,28.840604029210983,127],[41.02481708232488,28.872393040146132,112],[41.11715771766968,28.85406106386994,132],[41.12472075803853,28.80468980855737,67],[41.43396351762511,28.87624781406179,59],[41.019001803720485,28.92138390801701,39],[41.04830156132724,28.808354195943146,137],[41.36363436905135,28.89270073002247,95],[41.471872898452006,28.801606286122162,134],[41.02074149197544,28.84869720479581,33],[41.36638724770821,28.87257152668934,81],[41.27746299925965,28.904039077937465,31],[41.04789205234014,28.891601633030636,49],[41.31938024083553,28.8315575736184,108],[41.368650041471646,28.915608652162316,92],[41.45270437807824,28.817836427420797,120],[41.17949254286025,28.92295036068114,147],[41.25072654505893,28.913592964727577,38],[41.49258456412213,28.88261674695176,80],[41.15248533849371,28.81321284844566,47],[41.49664446703034,28.855855234805947,95],[41.27743536582363,28.899355431310966,61],[41.102135555462894,28.847391406094548,39],[41.137456922091644,28.883584049101866,109],[41.0876180799842,28.878176192219037,17],[41.20526640223591,28.871389815907445,61],[41.41920453990405,28.80980620091554,53],[41.45457387582277,28.88392154637844,75],[41.055703372327294,28.866253731474842,55],[41.02717122576969,28.887121542846316,113],[41.18292309352262,28.893235856065214,71],[41.34964668898462,28.86636319909019,88],[41.11785349454191,28.857039904564004,35],[41.188899995015035,28.827679117241328,63]];
var y = [0.17353434429663453,0.23978694597628047,0.19777101322808668,0.09033153513743053,0.07717559982580864,0.19497459621502852,0.20028172877193903,0.047292942041151566,0.15951712128489257,0.3268717285345899,0.1265627986141403,0.03354168766523132,0.0912463538359621,0.08593845741334134,0.12813570399853083,0.17507531620889338,0.28947912535467873,0.09685890085620263,0.11164931726528889,0.19751483365484668,0.32922954241276453,0.15080464321951612,0.045309071714825976,0.27664053998187127,0.2518749255988877,0.08764764294903109,0.07610960020472035,0.2641283201094988,0.09914818727428121,0.3081781718768231,0.016353643193428063,0.05521873802432986,0.2961074613806587,0.3186296345076636,0.14565565716171083,0.21438887507668633,0.26153325186378035,0.03523262191135553,0.10129499444822392,0.23743798348442816,0.23160154728224955,0.19415925392927122,0.27839483059344045,0.3155697014709493,0.25361147360880976,0.12861996599134526,0.037800133727568484,0.2638358746138783,0.10478429401817253,0.04863322188653877,0.33207822133086307,0.31718308061387507,0.29999684986203684,0.13541215399721654,0.14876786624683377,0.2641720464163628,0.23013725185865871,0.052040626197054074,0.18558326760147512,0.15615914595522207,0.24375041644828585,0.20923313079053404,0.29388821277737853,0.10199325022629635,0.06972483133892078,0.3125886535034435,0.040915547557201615,0.21918143840435697,0.215089414948506,0.17022366480175624,0.06409411868407318,0.2916689025223324,0.30535651204854397,0.02681608793773438,0.02163784320712625,0.3054529111727164,0.1272814879611309,0.20468585031560238,0.3240475754783687,0.17096455304409539,0.29902643555135583,0.15327506252794776,0.32606532896765533,0.3179056836060355,0.07451370664703967,0.24735869864092944,0.2556967438211835,0.02746841559319191,0.2615222730397612,0.09516815738035156,0.04318476173556259,0.23635998796625465,0.2768821415126344,0.08124420631181328,0.019837691787543427,0.2123233804349601,0.3076172834484027,0.20011998432277203,0.07329000568156856,0.22984393143878626,0.05900213265816778,0.19121198450911017,0.05294614024106906,0.23088482499296847,0.03192461745313683,0.2652901961207839,0.31668000395874435,0.26037397402633883,0.006537891282669313,0.31632503703978015,0.28948501981899377,0.040451020751662924,0.3234487874784384,0.1796083169740946,0.2934765639626777,0.18683355136325366,0.18764843010521562,0.11570246117334208,0.13081874864956408,0.15571663304769157,0.08384144984644341,0.321931593047337,0.06255784043827976,0.2617770863422794,0.23470925748860924,0.2811397188642291,0.15364620739311788,0.26397537314178304,0.15209528374641149,0.27133086241313564,0.27383631624525195,0.21199252763949117,0.25114981088268484,0.17826835466073274,0.09200896824355927,0.32301502803364013,0.041566398395407544,0.3120641394085541,0.19093766619781757,0.11223536448509745,0.1301899501017371,0.31979119070642065,0.160395030059707,0.04166366145566499,0.1439055694174262,0.1892440917738202,0.2840831582828574,0.05019000653358444,0.23570531272722137,0.058475191698344586,0.11612294601322189,0.11104663835407684,0.03920599282969491,0.20868267488809336,0.04199825440293233,0.09305454404097957,0.2326624173868741,0.07846088401718616,0.07179426463972398,0.13117414309530476,0.2824855269653303,0.2914834975428173,0.2525860977935352,0.2857584174050302,0.2531779474807088,0.1317492924165462,0.20384267798472697,0.20701107680152778,0.1569798596401019,0.2500182849960812,0.15325154164168775,0.14007414843590923,0.19236574083364047,0.10885628735270998,0.08217416212456803,0.2206971941480378,0.05787945886812729,0.1288266735324568,0.1951126017426561,0.2596664270112243,0.015166470022088077,0.2790339163283339,0.1502193045917164,0.3081093059135678,0.13474837851753949,0.2812973506734993,0.0233506076948277,0.1305404624909642,0.17358548308117316,0.2830054043083416,0.047748363961678995,0.22453255917381046,0.047393265475391244,0.023657148459835797,0.150014976145208,0.0041283518780543815,0.018743972611916886,0.1519754119728803,0.2511742793864799,0.2180646906113298,0.1388981206572221,0.3234093563057053,0.29438852147442657,0.145725874804128,0.32227999842054217,0.14804216871436213,0.2966743098281503,0.16317966803408016,0.25439252972879606,0.19206710910305244,0.31237219254679954,0.18899308786191202,0.15927719756786063,0.1144041838557693,0.2615126795230931,0.3192079665540519,0.12753652363428558,0.07149988196421934,0.1349398676565258,0.23965476117366435,0.11994683549806358,0.21850943656313726,0.2788424673773497,0.1172983330282608,0.1484095383657975,0.17912386249185475,0.25146787149361094,0.0587627487043317,0.05484341627341497,0.023007028837669585,0.06417053267307755,0.17205973939557132,0.31768756588637,0.05764264991408082,0.24672041421468158,0.14511556022739844,0.07956821206710989,0.2673636676949536,0.06814242735649878,0.03453867497001465,0.08823791688694789,0.30135559051355826,0.1623171217621114,0.08169521331663739,0.14732483316973988,0.29721643165879624,0.0532303977365142,0.26477887331627725,0.06107403574050899,0.13957488560787415,0.14422554525645337,0.3319904410132355,0.04949464178420911,0.046685018934761846,0.11044978733104971,0.26512040813003873,0.03462943921725666,0.2907642647280351,0.3302696952315625,0.2846293165810884,0.2530606550001901,0.23763524177898407,0.20466229976945524,0.06486648277684126,0.02760157981091667,0.32213246904378184,0.008706922286753812,0.300887354982575,0.31903088925280376,0.2647070060038299,0.3190857588260225,0.12378946254763361,0.24237260037964573,0.260993378859767,0.2226108494275969,0.32152223481289166,0.049805317673716466,0.2481465114002485,0.2148466082966157,0.16735307812550348,0.014404806074263199,0.220374777459201,0.1753771262618112,0.07548923085372006,0.015046212345718235,0.1026583316162953,0.3008523631009971,0.23365099555088134,0.23205355686134785,0.11740496333953376,0.03423069095974044,0.31486234290266985,0.1497362212973047,0.19148368833279514,0.28660836475035173,0.0952654282463415,0.055152568222418395,0.0057816752449431075,0.257596019087472,0.15219087176765544,0.09495172301364592,0.10184341666302428,0.21473602873958453,0.2667484074875724,0.33308200285858475,0.3202910527422424,0.0776154138748167,0.025980623491422827,0.06809213477557652,0.17900456922198113,0.08606653045158426,0.15571533599086326,0.251048267929892,0.29535970659549055,0.05580107182797297,0.09326640724440345,0.2685834880513671,0.3268863732367651,0.3021866190652677,0.23369251881494368,0.1527185558659455,0.25942678861627516,0.3213356596976142,0.3100061916205726,0.2322592844211667,0.20228734232922788,0.0179794496378242,0.08320093593048801,0.2916430755327666,0.3002738243100152,0.03171726786115814,0.2149567551209591,0.08282905226733879,0.21010919305363465,0.0674099495886314,0.18531455988197928,0.29471835878368674,0.3324517235837164,0.3127316312279825,0.28057606907923477,0.25590367521317353,0.01832102152917936,0.24393540743371855,0.09915728934537056,0.20178274229875046,0.21120538739190145,0.2856811747213018,0.27324658183674183,0.06983964534391755,0.29836982565300035,0.24666015050876422,0.13523735384606206,0.1349838485297871,0.04038191397262847,0.03161433799511867,0.000012120823274471467,0.10288380017278016,0.23692365901180298,0.031482346422332684,0.12088216165878429,0.031133883107643607,0.2560151428711766,0.06962158483316132,0.0676903250130693,0.01666489562952811,0.09888563179643069,0.2967798150271254,0.3002200305632175,0.12888154989365175,0.054610433272482016,0.16759336626547974,0.0003235457066688152,0.15497048791540147,0.12830687264259075,0.11631213932552435,0.2708611523372723,0.2246158680209472,0.12874076685936542,0.0014541412756504297,0.053974288599751764,0.025830585046895244,0.3175925379887965,0.15033842544008014,0.027043277698622692,0.16457112209307576,0.05686220458909075,0.23735718380284979,0.2804723062225367,0.008643151272297533,0.11325141419768851,0.2561395349861509,0.11413275825390068,0.035950479050243324,0.08735093045971516,0.1528921452777626,0.1546854915820599,0.3236432115908669,0.0799053626048453,0.1369203869181832,0.1984742660443346,0.12990788850876167,0.1662575513737079,0.1771058868997689,0.22021063580156963,0.32895404566111747,0.06653782369673178,0.2775540398791167,0.2912992734198132,0.08344821334637549,0.2923584181374432,0.3269132136660616,0.21996519740015982,0.30600250704163784,0.2521405410440766,0.08784447273252487,0.2252143740206883,0.003808047396676617,0.18500288203337253,0.04111351152014375,0.005724570137927302,0.24000492936625029,0.1683427162490181,0.10739300381922605,0.17797127152922285,0.11018518079354316,0.2269036407461559,0.0747683392640434,0.2180778743402699,0.03945207409963173,0.2890955823684789,0.18212910158447282,0.04129276475714527,0.3262893510568541,0.06153016489449207,0.3241406591854499,0.03854520402823103,0.2635733736601773,0.21037204936177653,0.09409107001951804,0.09835302326610836,0.06715990348971501,0.3273295194228582,0.29499105587018476,0.06520406320751222,0.01731597547086568,0.3120926465904153,0.22153850860166532,0.04061147140480004,0.030777974794396812,0.15601923130488574,0.13926911576040543,0.13049838220822094,0.23884102738055013,0.24219702397933465,0.24749516661729754,0.23286367403972688,0.04421850572136162,0.14668818234272943,0.009839861974755726,0.05858566675659523,0.26255328907092523,0.17890286665944352,0.27734656951463244,0.12955534822363987,0.2903391296274034,0.2039349113945549,0.022255923647763225,0.23843386788804347,0.08240606874251218,0.1503083328745992,0.09664499543818612,0.0876461452310835,0.012735563323576985,0.032543725814764134,0.14713341444311964,0.28294346749573035,0.19976224786661265,0.14406186615114983,0.17379451614884034,0.008826218335575398,0.02970272169125428,0.2771054212006631,0.019053351948148906,0.24463369458719852,0.1955660993977034,0.27239743061008953,0.012914262849655392,0.3224902657638394,0.15691866682766933,0.3263001629267404,0.32555740865479227,0.3009078566250669,0.3218104058634827,0.1765734930031162,0.17097699810997344,0.329653382038098,0.02004792135433009,0.18923216967327142,0.20272247379631855,0.039711879136268426,0.08895429774663932,0.27237499953815364,0.19156511714555355,0.12975428129313368,0.16675220227507323,0.19259303992219437,0.09317595424664808,0.20513608212021262,0.18128047491135346,0.29844736681338024,0.013668281199030444,0.06582990961325212,0.20713613056587485,0.09461145210742712,0.05489136778134932,0.029401554613680325,0.16607139718915573,0.23884725731943712,0.13804201347888254,0.0027629012898007232,0.1745246681176619,0.17167691402818286,0.12635384546356154,0.20683295605498456,0.29764511616716444,0.30733043630285267,0.14466164363378411,0.10654877797243922,0.22596386315684525,0.0699595576333633,0.1715699478800714,0.21461092090104947,0.09045037152244184,0.2250712708927222,0.06517890723797522,0.12761496576789413,0.12647524774863653,0.12238754365861564,0.09420707623466955,0.31165601344781413,0.21629106985308436,0.14988453138842006,0.09836151208959272,0.03450136366117573,0.15509491788468655,0.005341356561977317,0.3017482641571831,0.1869875024008112,0.31421584816373477,0.2746211664984019,0.14840382570912655,0.225433269163294,0.097426968693565,0.19982070043672176,0.10337714333983117,0.005097202731345766,0.04461966539035663,0.33294335484730136,0.02817256148715745,0.08651308625950938,0.17886752438405962,0.13439789876484473,0.031832659469314274,0.15169999015370314,0.11948970970777517,0.17912088401849383,0.3281049054033178,0.3013567359093044,0.2839688878304667,0.027622564723653653,0.1862543944006078,0.05772088575522005,0.18219995204858294,0.2928809129652354,0.061188056816104806,0.20681507611186598,0.31324698589821803,0.24877952291094316,0.23716924936578687,0.1305782970928083,0.11113729329158113,0.3100912175958332,0.11651441248264649,0.006140644935748322,0.15229365019576405,0.04945753955737745,0.1459339167817002,0.1474292612669533,0.20177417124238936,0.23946444533255487,0.016144551353338477,0.2685843063884883,0.04674372524359405,0.14068393535251844,0.0799041961724732,0.2811629730992545,0.02348679180947359,0.004688954791083703,0.1715467612447399,0.28243012677785256,0.1460232392006299,0.15286151109098264,0.13003926806495425,0.17367213552963046,0.173026387840486,0.15215295810437302,0.11411693078842133,0.10533811300371543,0.20671701937205525,0.020670086564839634,0.22283636546350438,0.0531177753852646,0.17504771840183989,0.21355882451338917,0.27797519031711393,0.09296979805005294,0.1620665395702746,0.3048147048073164,0.3001224783785715,0.2715815626605071,0.15693309132916636,0.0760638929041415,0.132734839809847,0.3163642580627484,0.21280296883491187,0.16955872066271027,0.2833780456320389,0.3202385338230151,0.3066568796258417,0.07195730066454449,0.1939332156080654,0.0624914936933465,0.1974859235043959,0.0198534994966791,0.15778851597564558,0.2578270289743286,0.11992257035126712,0.2688058516530396,0.24621926894936683,0.22698639849152577,0.10122781580945661,0.10579698180335335,0.2212503792604831,0.312082393711368,0.052352979187826776,0.18095057356720404,0.291375418597211,0.31946439088205275,0.08556500625771164,0.26680002528391916,0.32818497954466563,0.2579515160769607,0.2402136356976119,0.27968402190565406,0.1965805972560326,0.17261939414214708,0.21067501454736712,0.18634225134111912,0.2589773353600368,0.09194087741753676,0.08292503195253327,0.21926024905550365,0.27435683052593385,0.31759259741299567,0.1252669792028449,0.022166672897313482,0.1756481789188069,0.1416120622808532,0.21091038958617045,0.18409104487833616,0.2066049044691737,0.1509512604030543,0.16204844523414552,0.3057801374322971,0.11774894363303583,0.0767685550244821,0.29157126093759583,0.2310751251240505,0.3178205132273623,0.25086841903358964,0.24085959014364433,0.272169777440259,0.2118530415526798,0.2131079118312189,0.22495502621393912,0.225640163141831,0.2100414285257152,0.1868251816307643,0.297192710179022,0.3179021930064228,0.13824952837662643,0.324536979417641,0.09467583765518062,0.05958623241926375,0.15390758063134902,0.19464010807346846,0.3142112772945295,0.07236786372736763,0.04707546547048221,0.012015458718914962,0.257010385542711,0.28681132617962896,0.24919281686664005,0.019087550591853814,0.14948873516859273,0.11629089012392717,0.0036128019114840537,0.08085304149251364,0.06776249520996165,0.008968549233711634,0.0015721596505867315,0.0370784945590954,0.2792449713026997,0.1826585505101983,0.15974596282668707,0.1447686158130376,0.1505994201393137,0.1517539998715566,0.21332826834573634,0.16261922038199317,0.009149981347748692,0.20108015584290903,0.09703299261601901,0.15785554168088964,0.26862662394687925,0.1227686711975251,0.31303132955911644,0.26800528205996627,0.29037547108621675,0.1972482787156659,0.24616971648242747,0.1679994113195539,0.3010020701323588,0.1748931357077609,0.14816841132499445,0.2084268406749692,0.21545566419066234,0.29142180575674526,0.22891543556920335,0.08770925573956956,0.18839041409438737,0.08807960908513797,0.18885390378064307,0.07383135760501698,0.11486720234102392,0.294434543649448,0.3208611277166,0.12833844355117305,0.02487094559454232,0.29361272572199454,0.2800491241649363,0.15927960550097922,0.027757722012929698,0.03252091059577437,0.31466841403419465,0.025623511391096903,0.22323280874111795,0.04879341588582653,0.27007974825383374,0.07561458415841327,0.2840817787536685,0.06796370485351104,0.24873153959473124,0.2581882979251729,0.10314371822350703,0.32698725898810316,0.049354854434282704,0.13487441291120952,0.13892035328979388,0.10834269988032193,0.2578448700556953,0.10482436939786617,0.3291578461161473,0.06104006351572496,0.23962972965108734,0.12294903290763563,0.3051165830262386,0.21472275600749166,0.27393618914662493,0.16827670995017688,0.29829107874771615,0.18798522304730106,0.2694895218410352,0.034826150891384224,0.08261775749661115,0.05226874241565893,0.008751207952736909,0.012745904025204332,0.04885519003931423,0.07329130636860863,0.18429547563522833,0.16528256096446903,0.302216848378888,0.02178905551149783,0.04042462162223637,0.06493463502156323,0.20597678614360238,0.08371623071692058,0.32794382706461095,0.10685858754315469,0.08942536776704535,0.28429452255235393,0.2571419405347293,0.20427035499491333,0.24278548875393535,0.2588127622250895,0.060541266928257675,0.21592333895892754,0.0804664804398602,0.22592103050310927,0.024949767691612095,0.2592199391715034,0.07710406263415925,0.25285896435019367,0.07395914437503419,0.13676019184087682,0.30341585816618327,0.13836303947430081,0.012713611408901926,0.3293364285356725,0.22995306133549986,0.0414636206462069,0.1807360100935945,0.2609768522242805,0.2420015533049892,0.09007252664547176,0.2595863876980165,0.2917474620672988,0.01721203019409841,0.16615424835770956,0.06204852496849204,0.17603746219238006,0.25359402296170325,0.16695552029765234,0.0957406156421053,0.2012027380231498,0.02000332875621247,0.03195788940005051,0.1434737803925529,0.12946097359079337,0.11534819578984819,0.13872311422512373,0.13999189795117176,0.15796310069008532,0.13655411590260877,0.20969733891590603,0.1634308187652221,0.1935771810678745,0.11779274694500175,0.20151671399808305,0.25057965506412655,0.1290492714074678,0.05210310060070437,0.29795313417654684,0.17793662470659402,0.03966524574549091,0.10639722239446418,0.15418989543116032,0.18194765321734918,0.24771269773570093,0.10132912165655099,0.13895955977839303,0.08857336292605981,0.2687565460815768,0.31797498316393247,0.09579641564051149,0.14460051537672877,0.283775218085125,0.04052949776295415,0.07128982023385166,0.13939323828893788,0.2443969466113376,0.10038494941338794,0.2696911991104502,0.23487106712749806,0.07167012678516922,0.284242980897136,0.17869574412839992,0.03634661668556061,0.16412321042026204,0.11380366520333067,0.29314716809628294,0.08652294894202295,0.2803023865589473,0.23972193792661275,0.017751184142715076,0.29881821387395674,0.09896069534551377,0.06624002446645538,0.016109003483909385,0.2131894018480102,0.04725339316884147,0.028930172024823102,0.11370413625322184,0.13843923892811158,0.035888931061498854,0.03765298077731538,0.03443690550671663,0.02684883628613958,0.14181956841985857,0.12081545847131718,0.2086828961921102,0.1894079123669047,0.06874702837292339,0.14958972929832362,0.006851925645993943,0.03133664420063812,0.22172652447762423,0.06961198170651002,0.27376046099072776,0.06786392336238005,0.02580148740972099,0.12352420888023152,0.08266779085835581,0.26189927654144435,0.2571666929714991,0.11742684650092101,0.22645464092008613,0.024503578685109922,0.15449635260830089,0.26217942973321656,0.007293996867633323,0.11359742822260066,0.3245669820349395,0.17446725110805686,0.31412862091836935,0.08550474296717543,0.0950803773944379,0.07153015595570171,0.1458592614153488,0.1063317378837223,0.14922140339176884,0.30028955503441473,0.06322293349379571,0.24364401683333514,0.24551686462335018,0.32450254678115203,0.04668097283907713,0.10214106743298797,0.003695967045534395,0.3014605755887588,0.2797627175767698,0.05679779120624769,0.31344171808760096,0.150979774159086,0.10233852317420207,0.24059991531390623,0.034519461442335496,0.024221318214368532,0.14610118293160723,0.30200836889483607,0.21326679902946077,0.20781487333253335,0.07805330547577076,0.008658583055081678,0.24569861246331617,0.2359744699008052,0.006683683647324301,0.0704454950595746,0.06386057560463214,0.15921813266226117,0.05698720334817701,0.16558834899255412,0.317130064182411,0.04568511008592139,0.00612536814567477,0.10597584805998424,0.0595848701069727,0.3250737345451844,0.09158343103633808,0.22225026847683305,0.3073365128986214,0.10273877941374836,0.17885910761110502,0.10695329607127364,0.13953874961126975,0.060402149019102756,0.2803647042587675,0.18857693197604544,0.11440422619256263,0.2777241551636416,0.2764334817274304,0.2881749413547614,0.22270647014514786,0.13275358730551381,0.17295849581484424,0.30129026499770256,0.3018515617537764,0.14957640436372946,0.14327347818373895,0.22389249812579415,0.010329115717529517,0.2938712259276339,0.23833715784438395,0.08125274038302847,0.25994758756312747,0.06776284825580592,0.27288482451984925,0.31285318877486207,0.2982164510133635];
// Initialize and train the linear regression
var predictFn = null;
var lr = new LinearRegression(X, y, {algorithm: 'GradientDescent'});
lr.train(function(err) {
if (err) {
console.log("error", err);
}
app.get("/get_safety/:latitude/:longitude", function(request, response) {
var lat = parseFloat(request.params.latitude);
var lng = parseFloat(request.params.longitude);
var d = new Date();
response.send(String(lr.predict([lat, lng, d.getDay() * 24 + d.getHours()])));
});
app.get("/logs", function(request, response) {
var logs = [];
if (!db) {
response.json(logs);
return;
}
db.list({
include_docs: true
}, function(err, body) {
if (!err) {
var d = new Date();
body.rows.forEach(function(row) {
logs.push(Object.assign(row.doc, { weight: lr.predict([row.doc.location.latitude,
row.doc.location.longitude, d.getDay() * 24 + d.getHours()]) }));
});
response.json(logs);
}
});
});
});
/**
* Error Handler.
*/
app.use(errorHandler());
/**
* Start Express server.
*/
app.listen(app.get('port'), () => {
console.log('%s App is running at http://localhost:%d in %s mode', chalk.green('✓'), app.get('port'), app.get('env'));
console.log(' Press CTRL-C to stop\n');
});
module.exports = app;